From c5194361a78900bec167a7d8512df03f02509916 Mon Sep 17 00:00:00 2001 From: fainashalts Date: Tue, 15 Sep 2020 15:15:53 -0700 Subject: [PATCH 01/63] Add initial architecture for pulling out names; getCurrent does not work --- packages/db/src/db.ts | 45 ++++++++++++++++++- packages/db/src/loaders/commands/compile.ts | 32 +++++-------- .../db/src/loaders/schema/artifactsLoader.ts | 14 ++++-- 3 files changed, 65 insertions(+), 26 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 3c6e830f9ff..2fef90960ab 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -4,9 +4,16 @@ import { schema } from "@truffle/db/data"; import { generateCompileLoad } from "@truffle/db/loaders/commands"; import { WorkflowCompileResult, - WorkspaceRequest + WorkspaceRequest, + WorkspaceResponse, + toIdObject } from "@truffle/db/loaders/types"; import { Workspace } from "@truffle/db/workspace"; +import { + generateProjectNamesAssign, + generateProjectNameResolve +} from "@truffle/db/loaders/resources/projects"; +import { generateNameRecordsLoad } from "@truffle/db/loaders/resources/nameRecords"; interface IConfig { contracts_build_directory: string; @@ -48,7 +55,30 @@ export class TruffleDB { return await execute(this.schema, document, null, this.context, variables); } - async loadCompilations(result: WorkflowCompileResult) { + *loadNames( + project: DataModel.IProject, + contractsByCompilation: Array + ): Generator> { + for (const contracts of contractsByCompilation) { + let getCurrent = function* (name, type) { + return yield* generateProjectNameResolve( + toIdObject(project), + name, + type + ); + }; + + const nameRecords = yield* generateNameRecordsLoad( + contracts, + "Contract", + getCurrent + ); + + yield* generateProjectNamesAssign(toIdObject(project), nameRecords); + } + } + + async loadCompilations(result: WorkflowCompileResult, names: boolean) { const saga = generateCompileLoad(result, { directory: this.context.workingDirectory }); @@ -67,6 +97,17 @@ export class TruffleDB { cur = saga.next(response); } + if (names === true) { + const namesLoader = this.loadNames( + cur.value.project, + cur.value.contractsByCompilation + ); + let curNames = namesLoader.next(); + while (!curNames.done) { + curNames = namesLoader.next(); + } + } + return cur.value; } diff --git a/packages/db/src/loaders/commands/compile.ts b/packages/db/src/loaders/commands/compile.ts index 4c0399ca9ac..44941aa72f8 100644 --- a/packages/db/src/loaders/commands/compile.ts +++ b/packages/db/src/loaders/commands/compile.ts @@ -34,10 +34,6 @@ export function* generateCompileLoad( // start by adding loading the project resource const project = yield* generateProjectLoad(directory); - const getCurrent = function*(name, type) { - return yield* generateProjectNameResolve(toIdObject(project), name, type); - }; - const resultCompilations = processResultCompilations(result); // for each compilation returned by workflow-compile: @@ -70,6 +66,7 @@ export function* generateCompileLoad( // // again going one compilation at a time (for impl. convenience; HACK) // (@cds-amal reminds that "premature optimization is the root of all evil") + let contractsByCompilation = []; for (const [compilationIndex, compilation] of compilations.entries()) { const resultCompilation = resultCompilations[compilationIndex]; const bytecodes = compilationBytecodes[compilationIndex]; @@ -90,17 +87,10 @@ export function* generateCompileLoad( } const contracts = yield* generateContractsLoad(loadableContracts); - - const nameRecords = yield* generateNameRecordsLoad( - contracts, - "Contract", - getCurrent - ); - - yield* generateProjectNamesAssign(toIdObject(project), nameRecords); + contractsByCompilation.push(contracts); } - return { project, compilations }; + return { project, compilations, contractsByCompilation }; } function processResultCompilations( @@ -117,13 +107,15 @@ function processResultCompilation({ }: WorkflowCompileResult["compilations"][string]): CompilationData { const contractsBySourcePath: { [sourcePath: string]: CompiledContract[]; - } = contracts.map(contract => [contract.sourcePath, contract]).reduce( - (obj, [sourcePath, contract]: [string, CompiledContract]) => ({ - ...obj, - [sourcePath]: [...(obj[sourcePath] || []), contract] - }), - {} - ); + } = contracts + .map(contract => [contract.sourcePath, contract]) + .reduce( + (obj, [sourcePath, contract]: [string, CompiledContract]) => ({ + ...obj, + [sourcePath]: [...(obj[sourcePath] || []), contract] + }), + {} + ); return { // PRECONDITION: all contracts in the same compilation **must** have the diff --git a/packages/db/src/loaders/schema/artifactsLoader.ts b/packages/db/src/loaders/schema/artifactsLoader.ts index 992b2013465..581961ca8a0 100644 --- a/packages/db/src/loaders/schema/artifactsLoader.ts +++ b/packages/db/src/loaders/schema/artifactsLoader.ts @@ -87,7 +87,12 @@ export class ArtifactsLoader { async load(): Promise { const result = await Contracts.compile(this.config); - const { project, compilations } = await this.db.loadCompilations(result); + // second parameter in loadCompilation is for whether or not we need + // to update nameRecords (i.e. is this happening in test) + const { project, compilations } = await this.db.loadCompilations( + result, + true + ); //map contracts and contract instances to compiler await Promise.all( @@ -111,9 +116,10 @@ export class ArtifactsLoader { .map(processedSource => processedSource.contracts) .flat(); - const contracts = result.compilations[compiler.name].contracts.map( - ({ contractName }) => - processedSourceContracts.find(({ name }) => name === contractName) + const contracts = result.compilations[ + compiler.name + ].contracts.map(({ contractName }) => + processedSourceContracts.find(({ name }) => name === contractName) ); if (networks[0].length) { From 7361dfc8265940a7a46a3944a65783e762baacc0 Mon Sep 17 00:00:00 2001 From: fainashalts Date: Tue, 15 Sep 2020 15:26:24 -0700 Subject: [PATCH 02/63] rename loadNames to generateLoadNames --- packages/db/src/db.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 2fef90960ab..328c7aecc18 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -55,7 +55,7 @@ export class TruffleDB { return await execute(this.schema, document, null, this.context, variables); } - *loadNames( + *generateLoadNames( project: DataModel.IProject, contractsByCompilation: Array ): Generator> { @@ -98,7 +98,7 @@ export class TruffleDB { } if (names === true) { - const namesLoader = this.loadNames( + const namesLoader = this.generateLoadNames( cur.value.project, cur.value.contractsByCompilation ); From dcd9574048ec4a6c1edb8beb8fb3515dbe3728d9 Mon Sep 17 00:00:00 2001 From: fainashalts Date: Wed, 16 Sep 2020 15:24:17 -0700 Subject: [PATCH 03/63] Add names command file and rework generateNamesLoad; getCurrent still does not work --- packages/db/src/db.ts | 38 ++++++------------- packages/db/src/loaders/commands/index.ts | 1 + packages/db/src/loaders/commands/names.ts | 33 ++++++++++++++++ .../loaders/resources/nameRecords/index.ts | 1 - 4 files changed, 45 insertions(+), 28 deletions(-) create mode 100644 packages/db/src/loaders/commands/names.ts diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 328c7aecc18..ec609fda18b 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -1,7 +1,10 @@ import { GraphQLSchema, DocumentNode, parse, execute } from "graphql"; import { schema } from "@truffle/db/data"; -import { generateCompileLoad } from "@truffle/db/loaders/commands"; +import { + generateCompileLoad, + generateNamesLoad +} from "@truffle/db/loaders/commands"; import { WorkflowCompileResult, WorkspaceRequest, @@ -55,26 +58,14 @@ export class TruffleDB { return await execute(this.schema, document, null, this.context, variables); } - *generateLoadNames( + async loadNames( project: DataModel.IProject, contractsByCompilation: Array - ): Generator> { - for (const contracts of contractsByCompilation) { - let getCurrent = function* (name, type) { - return yield* generateProjectNameResolve( - toIdObject(project), - name, - type - ); - }; - - const nameRecords = yield* generateNameRecordsLoad( - contracts, - "Contract", - getCurrent - ); - - yield* generateProjectNamesAssign(toIdObject(project), nameRecords); + ) { + const namesLoader = generateNamesLoad(project, contractsByCompilation); + let curNames = namesLoader.next(); + while (!curNames.done) { + curNames = namesLoader.next(); } } @@ -98,14 +89,7 @@ export class TruffleDB { } if (names === true) { - const namesLoader = this.generateLoadNames( - cur.value.project, - cur.value.contractsByCompilation - ); - let curNames = namesLoader.next(); - while (!curNames.done) { - curNames = namesLoader.next(); - } + this.loadNames(cur.value.project, cur.value.contractsByCompilation); } return cur.value; diff --git a/packages/db/src/loaders/commands/index.ts b/packages/db/src/loaders/commands/index.ts index 1fd4a90b5b9..1c7358346f2 100644 --- a/packages/db/src/loaders/commands/index.ts +++ b/packages/db/src/loaders/commands/index.ts @@ -1 +1,2 @@ export { generateCompileLoad } from "./compile"; +export { generateNamesLoad } from "./names"; diff --git a/packages/db/src/loaders/commands/names.ts b/packages/db/src/loaders/commands/names.ts new file mode 100644 index 00000000000..ab8e91c385e --- /dev/null +++ b/packages/db/src/loaders/commands/names.ts @@ -0,0 +1,33 @@ +import { + generateProjectNameResolve, + generateProjectNamesAssign +} from "@truffle/db/loaders/resources/projects"; + +import { generateNameRecordsLoad } from "@truffle/db/loaders/resources/nameRecords"; +import { + toIdObject, + WorkspaceRequest, + WorkspaceResponse +} from "@truffle/db/loaders/types"; + +/** + * generator function to load nameRecords and project names into Truffle DB + */ +export function* generateNamesLoad( + project: DataModel.IProject, + contractsByCompilation: Array +): Generator> { + let getCurrent = function* (name, type) { + return yield* generateProjectNameResolve(toIdObject(project), name, type); + }; + + for (const contracts of contractsByCompilation) { + const nameRecords = yield* generateNameRecordsLoad( + contracts, + "Contract", + getCurrent + ); + + yield* generateProjectNamesAssign(toIdObject(project), nameRecords); + } +} diff --git a/packages/db/src/loaders/resources/nameRecords/index.ts b/packages/db/src/loaders/resources/nameRecords/index.ts index 1d0fe45d6a8..5bf6966d60c 100644 --- a/packages/db/src/loaders/resources/nameRecords/index.ts +++ b/packages/db/src/loaders/resources/nameRecords/index.ts @@ -34,7 +34,6 @@ export function* generateNameRecordsLoad( const nameRecords = []; for (const resource of resources) { const { name } = resource; - const current: DataModel.INameRecord = yield* getCurrent(name, type); if (current) { From d7de2a98d097b72926a07202bafc26260aa4cc1f Mon Sep 17 00:00:00 2001 From: fainashalts Date: Mon, 21 Sep 2020 11:50:42 -0700 Subject: [PATCH 04/63] Pull project loading out of compilation and name loading, rework generators to reflect this --- packages/db/src/db.ts | 49 ++++++++++++++----- packages/db/src/loaders/commands/compile.ts | 8 +-- packages/db/src/loaders/commands/index.ts | 1 + packages/db/src/loaders/commands/names.ts | 1 + packages/db/src/loaders/commands/projects.ts | 15 ++++++ .../db/src/loaders/schema/artifactsLoader.ts | 7 ++- 6 files changed, 62 insertions(+), 19 deletions(-) create mode 100644 packages/db/src/loaders/commands/projects.ts diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index ec609fda18b..4b28878ce40 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -12,11 +12,7 @@ import { toIdObject } from "@truffle/db/loaders/types"; import { Workspace } from "@truffle/db/workspace"; -import { - generateProjectNamesAssign, - generateProjectNameResolve -} from "@truffle/db/loaders/resources/projects"; -import { generateNameRecordsLoad } from "@truffle/db/loaders/resources/nameRecords"; +import { projectLoadGenerate } from "@truffle/db/loaders/commands"; interface IConfig { contracts_build_directory: string; @@ -62,17 +58,48 @@ export class TruffleDB { project: DataModel.IProject, contractsByCompilation: Array ) { - const namesLoader = generateNamesLoad(project, contractsByCompilation); + const namesLoader = generateNamesLoad( + toIdObject(project), + contractsByCompilation + ); let curNames = namesLoader.next(); + while (!curNames.done) { - curNames = namesLoader.next(); + const { + request, + variables + }: WorkspaceRequest = curNames.value as WorkspaceRequest; + const namesResponse: WorkspaceResponse = await this.query( + request, + variables + ); + + curNames = namesLoader.next(namesResponse); } } - async loadCompilations(result: WorkflowCompileResult, names: boolean) { - const saga = generateCompileLoad(result, { + async loadProject(): Promise { + const projectRequest = projectLoadGenerate({ directory: this.context.workingDirectory - }); + }).next(); + + // this gets the response using that request, the project + const { + request, + variables + }: WorkspaceRequest = projectRequest.value as WorkspaceRequest; + const response = await this.query(request, variables); + const projectResponse = response.data.workspace.projectsAdd.projects[0]; + + return projectResponse; + } + + async loadCompilations( + project: DataModel.IProject, + result: WorkflowCompileResult, + names: boolean + ) { + const saga = generateCompileLoad(result); let cur = saga.next(); while (!cur.done) { @@ -89,7 +116,7 @@ export class TruffleDB { } if (names === true) { - this.loadNames(cur.value.project, cur.value.contractsByCompilation); + await this.loadNames(project, cur.value.contractsByCompilation); } return cur.value; diff --git a/packages/db/src/loaders/commands/compile.ts b/packages/db/src/loaders/commands/compile.ts index 44941aa72f8..1e88de5037e 100644 --- a/packages/db/src/loaders/commands/compile.ts +++ b/packages/db/src/loaders/commands/compile.ts @@ -28,12 +28,8 @@ import { generateNameRecordsLoad } from "@truffle/db/loaders/resources/nameRecor * and ultimately returns nothing when complete. */ export function* generateCompileLoad( - result: WorkflowCompileResult, - { directory }: { directory: string } + result: WorkflowCompileResult ): Generator> { - // start by adding loading the project resource - const project = yield* generateProjectLoad(directory); - const resultCompilations = processResultCompilations(result); // for each compilation returned by workflow-compile: @@ -90,7 +86,7 @@ export function* generateCompileLoad( contractsByCompilation.push(contracts); } - return { project, compilations, contractsByCompilation }; + return { compilations, contractsByCompilation }; } function processResultCompilations( diff --git a/packages/db/src/loaders/commands/index.ts b/packages/db/src/loaders/commands/index.ts index 1c7358346f2..bf1a19c63b4 100644 --- a/packages/db/src/loaders/commands/index.ts +++ b/packages/db/src/loaders/commands/index.ts @@ -1,2 +1,3 @@ export { generateCompileLoad } from "./compile"; export { generateNamesLoad } from "./names"; +export { projectLoadGenerate } from "./projects"; diff --git a/packages/db/src/loaders/commands/names.ts b/packages/db/src/loaders/commands/names.ts index ab8e91c385e..add1c77ef30 100644 --- a/packages/db/src/loaders/commands/names.ts +++ b/packages/db/src/loaders/commands/names.ts @@ -9,6 +9,7 @@ import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; +import { projectLoadGenerate } from "./projects"; /** * generator function to load nameRecords and project names into Truffle DB diff --git a/packages/db/src/loaders/commands/projects.ts b/packages/db/src/loaders/commands/projects.ts new file mode 100644 index 00000000000..4a8e212969b --- /dev/null +++ b/packages/db/src/loaders/commands/projects.ts @@ -0,0 +1,15 @@ +import { generateProjectLoad } from "@truffle/db/loaders/resources/projects"; +import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; + +export function* projectLoadGenerate({ + directory +}: { + directory: string; +}): Generator< + WorkspaceRequest, + DataModel.IProject, + WorkspaceResponse<"projectsAdd", DataModel.IProjectsAddPayload> +> { + const project = yield* generateProjectLoad(directory); + return project; +} diff --git a/packages/db/src/loaders/schema/artifactsLoader.ts b/packages/db/src/loaders/schema/artifactsLoader.ts index 581961ca8a0..ee2cccb699f 100644 --- a/packages/db/src/loaders/schema/artifactsLoader.ts +++ b/packages/db/src/loaders/schema/artifactsLoader.ts @@ -87,9 +87,12 @@ export class ArtifactsLoader { async load(): Promise { const result = await Contracts.compile(this.config); - // second parameter in loadCompilation is for whether or not we need + const project = await this.db.loadProject(); + + // third parameter in loadCompilation is for whether or not we need // to update nameRecords (i.e. is this happening in test) - const { project, compilations } = await this.db.loadCompilations( + const { compilations } = await this.db.loadCompilations( + project, result, true ); From 1b96f77d96c01dde8cd237feab4e326cbcdf3e13 Mon Sep 17 00:00:00 2001 From: fainashalts Date: Mon, 21 Sep 2020 13:35:56 -0700 Subject: [PATCH 05/63] Remove unneeded imports --- packages/db/src/loaders/commands/compile.ts | 8 -------- packages/db/src/loaders/commands/names.ts | 1 - 2 files changed, 9 deletions(-) diff --git a/packages/db/src/loaders/commands/compile.ts b/packages/db/src/loaders/commands/compile.ts index 1e88de5037e..043ccc61095 100644 --- a/packages/db/src/loaders/commands/compile.ts +++ b/packages/db/src/loaders/commands/compile.ts @@ -1,9 +1,7 @@ -import { TruffleDB } from "@truffle/db/db"; import { WorkflowCompileResult, CompilationData, CompiledContract, - toIdObject, WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; @@ -12,12 +10,6 @@ import { generateBytecodesLoad } from "@truffle/db/loaders/resources/bytecodes"; import { generateCompilationsLoad } from "@truffle/db/loaders/resources/compilations"; import { generateContractsLoad } from "@truffle/db/loaders/resources/contracts"; import { generateSourcesLoad } from "@truffle/db/loaders/resources/sources"; -import { - generateProjectLoad, - generateProjectNameResolve, - generateProjectNamesAssign -} from "@truffle/db/loaders/resources/projects"; -import { generateNameRecordsLoad } from "@truffle/db/loaders/resources/nameRecords"; /** * For a compilation result from @truffle/workflow-compile/new, generate a diff --git a/packages/db/src/loaders/commands/names.ts b/packages/db/src/loaders/commands/names.ts index add1c77ef30..ab8e91c385e 100644 --- a/packages/db/src/loaders/commands/names.ts +++ b/packages/db/src/loaders/commands/names.ts @@ -9,7 +9,6 @@ import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; -import { projectLoadGenerate } from "./projects"; /** * generator function to load nameRecords and project names into Truffle DB From 8122b19feff44105aa0c614fbb4856c03960a44c Mon Sep 17 00:00:00 2001 From: fainashalts Date: Wed, 23 Sep 2020 11:51:43 -0700 Subject: [PATCH 06/63] Pull out submitting request and getting back response into own function --- packages/db/src/db.ts | 31 +++++++------------- packages/db/src/loaders/commands/projects.ts | 2 +- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 556de2e2bdb..436f604d3ee 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -53,6 +53,13 @@ export class TruffleDB { return await execute(this.schema, document, null, this.context, variables); } + async getWorkspaceResponse(generatorRequest: WorkspaceRequest) { + const { request, variables }: WorkspaceRequest = generatorRequest; + + const response: WorkspaceResponse = await this.query(request, variables); + + return response; + } async loadNames( project: DataModel.IProject, contractsByCompilation: Array @@ -64,15 +71,7 @@ export class TruffleDB { let curNames = namesLoader.next(); while (!curNames.done) { - const { - request, - variables - }: WorkspaceRequest = curNames.value as WorkspaceRequest; - const namesResponse: WorkspaceResponse = await this.query( - request, - variables - ); - + const namesResponse = await this.getWorkspaceResponse(curNames.value); curNames = namesLoader.next(namesResponse); } } @@ -82,12 +81,7 @@ export class TruffleDB { directory: this.context.workingDirectory }).next(); - // this gets the response using that request, the project - const { - request, - variables - }: WorkspaceRequest = projectRequest.value as WorkspaceRequest; - const response = await this.query(request, variables); + const response = await this.getWorkspaceResponse(projectRequest.value); const projectResponse = response.data.workspace.projectsAdd.projects[0]; return projectResponse; @@ -106,12 +100,7 @@ export class TruffleDB { // HACK not sure why this is necessary; TS knows we're not done, so // cur.value should only be WorkspaceRequest (first Generator param), // not the return value (second Generator param) - const { - request, - variables - }: WorkspaceRequest = cur.value as WorkspaceRequest; - const response = await this.query(request, variables); - + const response = await this.getWorkspaceResponse(cur.value); cur = saga.next(response); } diff --git a/packages/db/src/loaders/commands/projects.ts b/packages/db/src/loaders/commands/projects.ts index 4a8e212969b..2f5f035a400 100644 --- a/packages/db/src/loaders/commands/projects.ts +++ b/packages/db/src/loaders/commands/projects.ts @@ -7,7 +7,7 @@ export function* projectLoadGenerate({ directory: string; }): Generator< WorkspaceRequest, - DataModel.IProject, + any, WorkspaceResponse<"projectsAdd", DataModel.IProjectsAddPayload> > { const project = yield* generateProjectLoad(directory); From a0adf08859a359b3a199efb3ced8d7d53d54d5db Mon Sep 17 00:00:00 2001 From: Faina Shalts Date: Wed, 23 Sep 2020 11:56:13 -0700 Subject: [PATCH 07/63] Update packages/db/src/db.ts --- packages/db/src/db.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 436f604d3ee..239404831f0 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -60,6 +60,7 @@ export class TruffleDB { return response; } + async loadNames( project: DataModel.IProject, contractsByCompilation: Array From 08da4da85c2753bb36157d7a9f49eeac44b95456 Mon Sep 17 00:00:00 2001 From: fainashalts Date: Tue, 15 Sep 2020 15:15:53 -0700 Subject: [PATCH 08/63] Add initial architecture for pulling out names; getCurrent does not work --- packages/db/src/db.ts | 41 ++++++++++++++++++- packages/db/src/loaders/commands/compile.ts | 12 ++---- .../db/src/loaders/schema/artifactsLoader.ts | 7 +++- 3 files changed, 49 insertions(+), 11 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index d95b0a47097..8a298e53c21 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -4,6 +4,11 @@ import { generateCompileLoad } from "@truffle/db/loaders/commands"; import { WorkspaceRequest } from "@truffle/db/loaders/types"; import { WorkflowCompileResult } from "@truffle/compile-common"; import { Workspace } from "@truffle/db/workspace"; +import { + generateProjectNamesAssign, + generateProjectNameResolve +} from "@truffle/db/loaders/resources/projects"; +import { generateNameRecordsLoad } from "@truffle/db/loaders/resources/nameRecords"; interface IConfig { contracts_build_directory: string; @@ -45,7 +50,30 @@ export class TruffleDB { return await execute(this.schema, document, null, this.context, variables); } - async loadCompilations(result: WorkflowCompileResult) { + *loadNames( + project: DataModel.IProject, + contractsByCompilation: Array + ): Generator> { + for (const contracts of contractsByCompilation) { + let getCurrent = function* (name, type) { + return yield* generateProjectNameResolve( + toIdObject(project), + name, + type + ); + }; + + const nameRecords = yield* generateNameRecordsLoad( + contracts, + "Contract", + getCurrent + ); + + yield* generateProjectNamesAssign(toIdObject(project), nameRecords); + } + } + + async loadCompilations(result: WorkflowCompileResult, names: boolean) { const saga = generateCompileLoad(result, { directory: this.context.workingDirectory }); @@ -65,6 +93,17 @@ export class TruffleDB { cur = saga.next(response); } + if (names === true) { + const namesLoader = this.loadNames( + cur.value.project, + cur.value.contractsByCompilation + ); + let curNames = namesLoader.next(); + while (!curNames.done) { + curNames = namesLoader.next(); + } + } + return cur.value; } diff --git a/packages/db/src/loaders/commands/compile.ts b/packages/db/src/loaders/commands/compile.ts index 9f6528f15f8..e07b082d12d 100644 --- a/packages/db/src/loaders/commands/compile.ts +++ b/packages/db/src/loaders/commands/compile.ts @@ -72,6 +72,7 @@ export function* generateCompileLoad( // // again going one compilation at a time (for impl. convenience; HACK) // (@cds-amal reminds that "premature optimization is the root of all evil") + let contractsByCompilation = []; for (const [compilationIndex, compilation] of compilations.entries()) { const resultCompilation = resultCompilations[compilationIndex]; const bytecodes = compilationBytecodes[compilationIndex]; @@ -92,17 +93,10 @@ export function* generateCompileLoad( } const contracts = yield* generateContractsLoad(loadableContracts); - - const nameRecords = yield* generateNameRecordsLoad( - contracts, - "Contract", - getCurrent - ); - - yield* generateProjectNamesAssign(toIdObject(project), nameRecords); + contractsByCompilation.push(contracts); } - return { project, compilations }; + return { project, compilations, contractsByCompilation }; } function processResultCompilations( diff --git a/packages/db/src/loaders/schema/artifactsLoader.ts b/packages/db/src/loaders/schema/artifactsLoader.ts index bff7b268eef..6477dfd7a17 100644 --- a/packages/db/src/loaders/schema/artifactsLoader.ts +++ b/packages/db/src/loaders/schema/artifactsLoader.ts @@ -91,7 +91,12 @@ export class ArtifactsLoader { this.config ); - const { project, compilations } = await this.db.loadCompilations(result); + // second parameter in loadCompilation is for whether or not we need + // to update nameRecords (i.e. is this happening in test) + const { project, compilations } = await this.db.loadCompilations( + result, + true + ); //map contracts and contract instances to compiler await Promise.all( From 2d1f24923bd80e83d8d70b13c634787963e033d2 Mon Sep 17 00:00:00 2001 From: fainashalts Date: Tue, 15 Sep 2020 15:26:24 -0700 Subject: [PATCH 09/63] rename loadNames to generateLoadNames --- packages/db/src/db.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 8a298e53c21..eebe9f2a376 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -50,7 +50,7 @@ export class TruffleDB { return await execute(this.schema, document, null, this.context, variables); } - *loadNames( + *generateLoadNames( project: DataModel.IProject, contractsByCompilation: Array ): Generator> { @@ -94,7 +94,7 @@ export class TruffleDB { } if (names === true) { - const namesLoader = this.loadNames( + const namesLoader = this.generateLoadNames( cur.value.project, cur.value.contractsByCompilation ); From 902bb1a568519a05a1e81ce872cb6b2aadeedfce Mon Sep 17 00:00:00 2001 From: fainashalts Date: Wed, 16 Sep 2020 15:24:17 -0700 Subject: [PATCH 10/63] Add names command file and rework generateNamesLoad; getCurrent still does not work --- packages/db/src/db.ts | 38 ++++--------------- packages/db/src/loaders/commands/index.ts | 1 + packages/db/src/loaders/commands/names.ts | 33 ++++++++++++++++ .../loaders/resources/nameRecords/index.ts | 1 - 4 files changed, 41 insertions(+), 32 deletions(-) create mode 100644 packages/db/src/loaders/commands/names.ts diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index eebe9f2a376..35af7dc0202 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -4,11 +4,6 @@ import { generateCompileLoad } from "@truffle/db/loaders/commands"; import { WorkspaceRequest } from "@truffle/db/loaders/types"; import { WorkflowCompileResult } from "@truffle/compile-common"; import { Workspace } from "@truffle/db/workspace"; -import { - generateProjectNamesAssign, - generateProjectNameResolve -} from "@truffle/db/loaders/resources/projects"; -import { generateNameRecordsLoad } from "@truffle/db/loaders/resources/nameRecords"; interface IConfig { contracts_build_directory: string; @@ -50,26 +45,14 @@ export class TruffleDB { return await execute(this.schema, document, null, this.context, variables); } - *generateLoadNames( + async loadNames( project: DataModel.IProject, contractsByCompilation: Array - ): Generator> { - for (const contracts of contractsByCompilation) { - let getCurrent = function* (name, type) { - return yield* generateProjectNameResolve( - toIdObject(project), - name, - type - ); - }; - - const nameRecords = yield* generateNameRecordsLoad( - contracts, - "Contract", - getCurrent - ); - - yield* generateProjectNamesAssign(toIdObject(project), nameRecords); + ) { + const namesLoader = generateNamesLoad(project, contractsByCompilation); + let curNames = namesLoader.next(); + while (!curNames.done) { + curNames = namesLoader.next(); } } @@ -94,14 +77,7 @@ export class TruffleDB { } if (names === true) { - const namesLoader = this.generateLoadNames( - cur.value.project, - cur.value.contractsByCompilation - ); - let curNames = namesLoader.next(); - while (!curNames.done) { - curNames = namesLoader.next(); - } + this.loadNames(cur.value.project, cur.value.contractsByCompilation); } return cur.value; diff --git a/packages/db/src/loaders/commands/index.ts b/packages/db/src/loaders/commands/index.ts index 1fd4a90b5b9..1c7358346f2 100644 --- a/packages/db/src/loaders/commands/index.ts +++ b/packages/db/src/loaders/commands/index.ts @@ -1 +1,2 @@ export { generateCompileLoad } from "./compile"; +export { generateNamesLoad } from "./names"; diff --git a/packages/db/src/loaders/commands/names.ts b/packages/db/src/loaders/commands/names.ts new file mode 100644 index 00000000000..ab8e91c385e --- /dev/null +++ b/packages/db/src/loaders/commands/names.ts @@ -0,0 +1,33 @@ +import { + generateProjectNameResolve, + generateProjectNamesAssign +} from "@truffle/db/loaders/resources/projects"; + +import { generateNameRecordsLoad } from "@truffle/db/loaders/resources/nameRecords"; +import { + toIdObject, + WorkspaceRequest, + WorkspaceResponse +} from "@truffle/db/loaders/types"; + +/** + * generator function to load nameRecords and project names into Truffle DB + */ +export function* generateNamesLoad( + project: DataModel.IProject, + contractsByCompilation: Array +): Generator> { + let getCurrent = function* (name, type) { + return yield* generateProjectNameResolve(toIdObject(project), name, type); + }; + + for (const contracts of contractsByCompilation) { + const nameRecords = yield* generateNameRecordsLoad( + contracts, + "Contract", + getCurrent + ); + + yield* generateProjectNamesAssign(toIdObject(project), nameRecords); + } +} diff --git a/packages/db/src/loaders/resources/nameRecords/index.ts b/packages/db/src/loaders/resources/nameRecords/index.ts index 1d0fe45d6a8..5bf6966d60c 100644 --- a/packages/db/src/loaders/resources/nameRecords/index.ts +++ b/packages/db/src/loaders/resources/nameRecords/index.ts @@ -34,7 +34,6 @@ export function* generateNameRecordsLoad( const nameRecords = []; for (const resource of resources) { const { name } = resource; - const current: DataModel.INameRecord = yield* getCurrent(name, type); if (current) { From 9905c29e5e23ab3da07d7c7982d6d3a3a3df3fbf Mon Sep 17 00:00:00 2001 From: fainashalts Date: Mon, 21 Sep 2020 11:50:42 -0700 Subject: [PATCH 11/63] Pull project loading out of compilation and name loading, rework generators to reflect this --- packages/db/src/db.ts | 44 ++++++++++++++++--- packages/db/src/loaders/commands/compile.ts | 19 +------- packages/db/src/loaders/commands/index.ts | 1 + packages/db/src/loaders/commands/names.ts | 1 + packages/db/src/loaders/commands/projects.ts | 15 +++++++ .../db/src/loaders/schema/artifactsLoader.ts | 7 ++- 6 files changed, 62 insertions(+), 25 deletions(-) create mode 100644 packages/db/src/loaders/commands/projects.ts diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 35af7dc0202..c41ae17bad4 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -4,6 +4,7 @@ import { generateCompileLoad } from "@truffle/db/loaders/commands"; import { WorkspaceRequest } from "@truffle/db/loaders/types"; import { WorkflowCompileResult } from "@truffle/compile-common"; import { Workspace } from "@truffle/db/workspace"; +import { projectLoadGenerate } from "@truffle/db/loaders/commands"; interface IConfig { contracts_build_directory: string; @@ -49,17 +50,48 @@ export class TruffleDB { project: DataModel.IProject, contractsByCompilation: Array ) { - const namesLoader = generateNamesLoad(project, contractsByCompilation); + const namesLoader = generateNamesLoad( + toIdObject(project), + contractsByCompilation + ); let curNames = namesLoader.next(); + while (!curNames.done) { - curNames = namesLoader.next(); + const { + request, + variables + }: WorkspaceRequest = curNames.value as WorkspaceRequest; + const namesResponse: WorkspaceResponse = await this.query( + request, + variables + ); + + curNames = namesLoader.next(namesResponse); } } - async loadCompilations(result: WorkflowCompileResult, names: boolean) { - const saga = generateCompileLoad(result, { + async loadProject(): Promise { + const projectRequest = projectLoadGenerate({ directory: this.context.workingDirectory - }); + }).next(); + + // this gets the response using that request, the project + const { + request, + variables + }: WorkspaceRequest = projectRequest.value as WorkspaceRequest; + const response = await this.query(request, variables); + const projectResponse = response.data.workspace.projectsAdd.projects[0]; + + return projectResponse; + } + + async loadCompilations( + project: DataModel.IProject, + result: WorkflowCompileResult, + names: boolean + ) { + const saga = generateCompileLoad(result); let cur = saga.next(); @@ -77,7 +109,7 @@ export class TruffleDB { } if (names === true) { - this.loadNames(cur.value.project, cur.value.contractsByCompilation); + await this.loadNames(project, cur.value.contractsByCompilation); } return cur.value; diff --git a/packages/db/src/loaders/commands/compile.ts b/packages/db/src/loaders/commands/compile.ts index e07b082d12d..6107eb16aa5 100644 --- a/packages/db/src/loaders/commands/compile.ts +++ b/packages/db/src/loaders/commands/compile.ts @@ -1,6 +1,5 @@ import { CompilationData, - toIdObject, WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; @@ -14,12 +13,6 @@ import { generateBytecodesLoad } from "@truffle/db/loaders/resources/bytecodes"; import { generateCompilationsLoad } from "@truffle/db/loaders/resources/compilations"; import { generateContractsLoad } from "@truffle/db/loaders/resources/contracts"; import { generateSourcesLoad } from "@truffle/db/loaders/resources/sources"; -import { - generateProjectLoad, - generateProjectNameResolve, - generateProjectNamesAssign -} from "@truffle/db/loaders/resources/projects"; -import { generateNameRecordsLoad } from "@truffle/db/loaders/resources/nameRecords"; /** * For a compilation result from @truffle/workflow-compile/new, generate a @@ -30,16 +23,8 @@ import { generateNameRecordsLoad } from "@truffle/db/loaders/resources/nameRecor * and ultimately returns nothing when complete. */ export function* generateCompileLoad( - result: WorkflowCompileResult, - { directory }: { directory: string } + result: WorkflowCompileResult ): Generator> { - // start by adding loading the project resource - const project = yield* generateProjectLoad(directory); - - const getCurrent = function* (name, type) { - return yield* generateProjectNameResolve(toIdObject(project), name, type); - }; - const resultCompilations = processResultCompilations(result); // for each compilation returned by workflow-compile: @@ -96,7 +81,7 @@ export function* generateCompileLoad( contractsByCompilation.push(contracts); } - return { project, compilations, contractsByCompilation }; + return { compilations, contractsByCompilation }; } function processResultCompilations( diff --git a/packages/db/src/loaders/commands/index.ts b/packages/db/src/loaders/commands/index.ts index 1c7358346f2..bf1a19c63b4 100644 --- a/packages/db/src/loaders/commands/index.ts +++ b/packages/db/src/loaders/commands/index.ts @@ -1,2 +1,3 @@ export { generateCompileLoad } from "./compile"; export { generateNamesLoad } from "./names"; +export { projectLoadGenerate } from "./projects"; diff --git a/packages/db/src/loaders/commands/names.ts b/packages/db/src/loaders/commands/names.ts index ab8e91c385e..add1c77ef30 100644 --- a/packages/db/src/loaders/commands/names.ts +++ b/packages/db/src/loaders/commands/names.ts @@ -9,6 +9,7 @@ import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; +import { projectLoadGenerate } from "./projects"; /** * generator function to load nameRecords and project names into Truffle DB diff --git a/packages/db/src/loaders/commands/projects.ts b/packages/db/src/loaders/commands/projects.ts new file mode 100644 index 00000000000..4a8e212969b --- /dev/null +++ b/packages/db/src/loaders/commands/projects.ts @@ -0,0 +1,15 @@ +import { generateProjectLoad } from "@truffle/db/loaders/resources/projects"; +import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; + +export function* projectLoadGenerate({ + directory +}: { + directory: string; +}): Generator< + WorkspaceRequest, + DataModel.IProject, + WorkspaceResponse<"projectsAdd", DataModel.IProjectsAddPayload> +> { + const project = yield* generateProjectLoad(directory); + return project; +} diff --git a/packages/db/src/loaders/schema/artifactsLoader.ts b/packages/db/src/loaders/schema/artifactsLoader.ts index 6477dfd7a17..66a5531d5ef 100644 --- a/packages/db/src/loaders/schema/artifactsLoader.ts +++ b/packages/db/src/loaders/schema/artifactsLoader.ts @@ -91,9 +91,12 @@ export class ArtifactsLoader { this.config ); - // second parameter in loadCompilation is for whether or not we need + const project = await this.db.loadProject(); + + // third parameter in loadCompilation is for whether or not we need // to update nameRecords (i.e. is this happening in test) - const { project, compilations } = await this.db.loadCompilations( + const { compilations } = await this.db.loadCompilations( + project, result, true ); From f770fb52e0aa648e952cd829cd29b1eb4bb6c3e2 Mon Sep 17 00:00:00 2001 From: fainashalts Date: Mon, 21 Sep 2020 13:35:56 -0700 Subject: [PATCH 12/63] Remove unneeded imports --- packages/db/src/loaders/commands/names.ts | 1 - 1 file changed, 1 deletion(-) diff --git a/packages/db/src/loaders/commands/names.ts b/packages/db/src/loaders/commands/names.ts index add1c77ef30..ab8e91c385e 100644 --- a/packages/db/src/loaders/commands/names.ts +++ b/packages/db/src/loaders/commands/names.ts @@ -9,7 +9,6 @@ import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; -import { projectLoadGenerate } from "./projects"; /** * generator function to load nameRecords and project names into Truffle DB From ad349aa21ac2faf71fbf699625f35434c5047c6d Mon Sep 17 00:00:00 2001 From: fainashalts Date: Wed, 23 Sep 2020 11:51:43 -0700 Subject: [PATCH 13/63] Pull out submitting request and getting back response into own function --- packages/db/src/db.ts | 31 +++++++------------- packages/db/src/loaders/commands/projects.ts | 2 +- 2 files changed, 11 insertions(+), 22 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index c41ae17bad4..dcb8c3a2463 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -46,6 +46,13 @@ export class TruffleDB { return await execute(this.schema, document, null, this.context, variables); } + async getWorkspaceResponse(generatorRequest: WorkspaceRequest) { + const { request, variables }: WorkspaceRequest = generatorRequest; + + const response: WorkspaceResponse = await this.query(request, variables); + + return response; + } async loadNames( project: DataModel.IProject, contractsByCompilation: Array @@ -57,15 +64,7 @@ export class TruffleDB { let curNames = namesLoader.next(); while (!curNames.done) { - const { - request, - variables - }: WorkspaceRequest = curNames.value as WorkspaceRequest; - const namesResponse: WorkspaceResponse = await this.query( - request, - variables - ); - + const namesResponse = await this.getWorkspaceResponse(curNames.value); curNames = namesLoader.next(namesResponse); } } @@ -75,12 +74,7 @@ export class TruffleDB { directory: this.context.workingDirectory }).next(); - // this gets the response using that request, the project - const { - request, - variables - }: WorkspaceRequest = projectRequest.value as WorkspaceRequest; - const response = await this.query(request, variables); + const response = await this.getWorkspaceResponse(projectRequest.value); const projectResponse = response.data.workspace.projectsAdd.projects[0]; return projectResponse; @@ -99,12 +93,7 @@ export class TruffleDB { // HACK not sure why this is necessary; TS knows we're not done, so // cur.value should only be WorkspaceRequest (first Generator param), // not the return value (second Generator param) - const { - request, - variables - }: WorkspaceRequest = cur.value as WorkspaceRequest; - const response = await this.query(request, variables); - + const response = await this.getWorkspaceResponse(cur.value); cur = saga.next(response); } diff --git a/packages/db/src/loaders/commands/projects.ts b/packages/db/src/loaders/commands/projects.ts index 4a8e212969b..2f5f035a400 100644 --- a/packages/db/src/loaders/commands/projects.ts +++ b/packages/db/src/loaders/commands/projects.ts @@ -7,7 +7,7 @@ export function* projectLoadGenerate({ directory: string; }): Generator< WorkspaceRequest, - DataModel.IProject, + any, WorkspaceResponse<"projectsAdd", DataModel.IProjectsAddPayload> > { const project = yield* generateProjectLoad(directory); From 89cb17a12aad0a9d96597f3fc8a9ae08b62c61a3 Mon Sep 17 00:00:00 2001 From: fainashalts Date: Mon, 12 Oct 2020 10:15:54 -0700 Subject: [PATCH 14/63] Put back some imports accidentally lost in rebase --- packages/db/src/db.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index dcb8c3a2463..cbcb33bda7d 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -1,10 +1,17 @@ import { GraphQLSchema, DocumentNode, parse, execute } from "graphql"; import { schema } from "@truffle/db/data"; import { generateCompileLoad } from "@truffle/db/loaders/commands"; -import { WorkspaceRequest } from "@truffle/db/loaders/types"; +import { + WorkspaceRequest, + WorkspaceResponse, + toIdObject +} from "@truffle/db/loaders/types"; import { WorkflowCompileResult } from "@truffle/compile-common"; import { Workspace } from "@truffle/db/workspace"; -import { projectLoadGenerate } from "@truffle/db/loaders/commands"; +import { + projectLoadGenerate, + generateNamesLoad +} from "@truffle/db/loaders/commands"; interface IConfig { contracts_build_directory: string; From 998d91da7218262ad4af25d6b36d45827cc4333c Mon Sep 17 00:00:00 2001 From: fainashalts Date: Mon, 12 Oct 2020 11:35:16 -0700 Subject: [PATCH 15/63] Rename projects to initialize and projectLoadGenerate to generateInitializeLoad --- packages/db/src/db.ts | 4 ++-- packages/db/src/loaders/commands/index.ts | 2 +- .../db/src/loaders/commands/{projects.ts => initialize.ts} | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) rename packages/db/src/loaders/commands/{projects.ts => initialize.ts} (90%) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index cbcb33bda7d..3fa21805fdc 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -9,7 +9,7 @@ import { import { WorkflowCompileResult } from "@truffle/compile-common"; import { Workspace } from "@truffle/db/workspace"; import { - projectLoadGenerate, + generateInitializeLoad, generateNamesLoad } from "@truffle/db/loaders/commands"; @@ -77,7 +77,7 @@ export class TruffleDB { } async loadProject(): Promise { - const projectRequest = projectLoadGenerate({ + const projectRequest = generateInitializeLoad({ directory: this.context.workingDirectory }).next(); diff --git a/packages/db/src/loaders/commands/index.ts b/packages/db/src/loaders/commands/index.ts index bf1a19c63b4..985de690c58 100644 --- a/packages/db/src/loaders/commands/index.ts +++ b/packages/db/src/loaders/commands/index.ts @@ -1,3 +1,3 @@ export { generateCompileLoad } from "./compile"; export { generateNamesLoad } from "./names"; -export { projectLoadGenerate } from "./projects"; +export { generateInitializeLoad } from "./initialize"; diff --git a/packages/db/src/loaders/commands/projects.ts b/packages/db/src/loaders/commands/initialize.ts similarity index 90% rename from packages/db/src/loaders/commands/projects.ts rename to packages/db/src/loaders/commands/initialize.ts index 2f5f035a400..ba501b35002 100644 --- a/packages/db/src/loaders/commands/projects.ts +++ b/packages/db/src/loaders/commands/initialize.ts @@ -1,7 +1,7 @@ import { generateProjectLoad } from "@truffle/db/loaders/resources/projects"; import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; -export function* projectLoadGenerate({ +export function* generateInitializeLoad({ directory }: { directory: string; From 89c42acdf8ac0af854e81769fcfa7265d85e4ab5 Mon Sep 17 00:00:00 2001 From: fainashalts Date: Mon, 12 Oct 2020 11:52:53 -0700 Subject: [PATCH 16/63] Rework project param to generateNamesLoad --- packages/db/src/loaders/commands/names.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/db/src/loaders/commands/names.ts b/packages/db/src/loaders/commands/names.ts index ab8e91c385e..2428f864e62 100644 --- a/packages/db/src/loaders/commands/names.ts +++ b/packages/db/src/loaders/commands/names.ts @@ -5,20 +5,20 @@ import { import { generateNameRecordsLoad } from "@truffle/db/loaders/resources/nameRecords"; import { - toIdObject, WorkspaceRequest, - WorkspaceResponse + WorkspaceResponse, + IdObject } from "@truffle/db/loaders/types"; /** * generator function to load nameRecords and project names into Truffle DB */ export function* generateNamesLoad( - project: DataModel.IProject, + project: IdObject, contractsByCompilation: Array ): Generator> { let getCurrent = function* (name, type) { - return yield* generateProjectNameResolve(toIdObject(project), name, type); + return yield* generateProjectNameResolve(project, name, type); }; for (const contracts of contractsByCompilation) { @@ -28,6 +28,6 @@ export function* generateNamesLoad( getCurrent ); - yield* generateProjectNamesAssign(toIdObject(project), nameRecords); + yield* generateProjectNamesAssign(project, nameRecords); } } From f882f354d5f3978ae9c0832fe51fddcd7d79f5b7 Mon Sep 17 00:00:00 2001 From: fainashalts Date: Mon, 12 Oct 2020 13:29:38 -0700 Subject: [PATCH 17/63] Move names boolean into an options object --- packages/db/src/db.ts | 8 ++++++-- packages/db/src/loaders/schema/artifactsLoader.ts | 15 ++++----------- 2 files changed, 10 insertions(+), 13 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 3fa21805fdc..3ef8f12d1b1 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -37,6 +37,10 @@ interface ITruffleDB { query: (query: DocumentNode | string, variables: any) => Promise; } +type LoaderOptions = { + names: boolean; +}; + export class TruffleDB { schema: GraphQLSchema; context: IContext; @@ -90,7 +94,7 @@ export class TruffleDB { async loadCompilations( project: DataModel.IProject, result: WorkflowCompileResult, - names: boolean + options: LoaderOptions ) { const saga = generateCompileLoad(result); @@ -104,7 +108,7 @@ export class TruffleDB { cur = saga.next(response); } - if (names === true) { + if (options && options.names === true) { await this.loadNames(project, cur.value.contractsByCompilation); } diff --git a/packages/db/src/loaders/schema/artifactsLoader.ts b/packages/db/src/loaders/schema/artifactsLoader.ts index 66a5531d5ef..1498c97106e 100644 --- a/packages/db/src/loaders/schema/artifactsLoader.ts +++ b/packages/db/src/loaders/schema/artifactsLoader.ts @@ -53,11 +53,6 @@ type BytecodeInfo = { bytes?: string; }; -type BytecodesObject = { - bytecodes: Array; - callBytecodes: Array; -}; - type IdObject = { id: string; }; @@ -95,11 +90,9 @@ export class ArtifactsLoader { // third parameter in loadCompilation is for whether or not we need // to update nameRecords (i.e. is this happening in test) - const { compilations } = await this.db.loadCompilations( - project, - result, - true - ); + const { compilations } = await this.db.loadCompilations(project, result, { + names: true + }); //map contracts and contract instances to compiler await Promise.all( @@ -157,7 +150,7 @@ export class ArtifactsLoader { ); //set new projectNameHeads based on name records added - const projectNamesResult = await this.db.query(AssignProjectNames, { + await this.db.query(AssignProjectNames, { projectNames }); } From f3060ec0fee2b7c896d876f63a01ec5f60e22ed9 Mon Sep 17 00:00:00 2001 From: fainashalts Date: Mon, 12 Oct 2020 15:50:56 -0700 Subject: [PATCH 18/63] load project inside of db.loadCompilations --- packages/db/src/db.ts | 3 ++- packages/db/src/loaders/schema/artifactsLoader.ts | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 3007f2a5418..3dc3a0c26be 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -93,10 +93,11 @@ export class TruffleDB { } async loadCompilations( - project: DataModel.IProject, result: WorkflowCompileResult, options: LoaderOptions ) { + const project = await this.loadProject(); + const saga = generateCompileLoad(result); let cur = saga.next(); diff --git a/packages/db/src/loaders/schema/artifactsLoader.ts b/packages/db/src/loaders/schema/artifactsLoader.ts index 1498c97106e..10351e44bca 100644 --- a/packages/db/src/loaders/schema/artifactsLoader.ts +++ b/packages/db/src/loaders/schema/artifactsLoader.ts @@ -90,7 +90,7 @@ export class ArtifactsLoader { // third parameter in loadCompilation is for whether or not we need // to update nameRecords (i.e. is this happening in test) - const { compilations } = await this.db.loadCompilations(project, result, { + const { compilations } = await this.db.loadCompilations(result, { names: true }); From 9c1f3c05361d30fe39cf155f4579dbb7fcf0e862 Mon Sep 17 00:00:00 2001 From: Faina Shalts Date: Mon, 12 Oct 2020 16:33:11 -0700 Subject: [PATCH 19/63] Update packages/db/src/db.ts Co-authored-by: g. nicholas d'andrea --- packages/db/src/db.ts | 25 ++++++++++++++++++++----- 1 file changed, 20 insertions(+), 5 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 3dc3a0c26be..7308b4164e5 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -57,12 +57,27 @@ export class TruffleDB { return await execute(this.schema, document, null, this.context, variables); } - async getWorkspaceResponse(generatorRequest: WorkspaceRequest) { - const { request, variables }: WorkspaceRequest = generatorRequest; - - const response: WorkspaceResponse = await this.query(request, variables); + private async runLoader< + Request extends WorkspaceRequest, + Response extends WorkspaceResponse, + Args extends unknown[], + Return + >( + loader: (...args: Args) => Generator, + ...args: Args + ): Promise { + const saga = loader(...args); + let current = saga.next(); + + while (!current.done) { + const { request, variables } = current.value as Request; + + const response: Response = await this.query(request, variables); + + current = saga.next(response); + } - return response; + return current.value; } async loadNames( From 4923bc9a3bda11bf791409a23c2310542727ddfc Mon Sep 17 00:00:00 2001 From: Faina Shalts Date: Mon, 12 Oct 2020 16:33:46 -0700 Subject: [PATCH 20/63] Update packages/db/src/db.ts Co-authored-by: g. nicholas d'andrea --- packages/db/src/db.ts | 9 ++------- 1 file changed, 2 insertions(+), 7 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 7308b4164e5..3ac782b2c41 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -84,16 +84,11 @@ export class TruffleDB { project: DataModel.IProject, contractsByCompilation: Array ) { - const namesLoader = generateNamesLoad( + return await this.runLoader( + generateNamesLoad, toIdObject(project), contractsByCompilation ); - let curNames = namesLoader.next(); - - while (!curNames.done) { - const namesResponse = await this.getWorkspaceResponse(curNames.value); - curNames = namesLoader.next(namesResponse); - } } async loadProject(): Promise { From c9c282eaceb0b8fc6aac58900f973cd2ab11d2db Mon Sep 17 00:00:00 2001 From: fainashalts Date: Mon, 12 Oct 2020 17:08:30 -0700 Subject: [PATCH 21/63] Optimize loadProject and loadCompilations to use runLoader func --- packages/db/src/db.ts | 38 +++++++++++++++++--------------------- 1 file changed, 17 insertions(+), 21 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 3ac782b2c41..989c69c0429 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -57,6 +57,14 @@ export class TruffleDB { return await execute(this.schema, document, null, this.context, variables); } + async getWorkspaceResponse(generatorRequest: WorkspaceRequest) { + const { request, variables }: WorkspaceRequest = generatorRequest; + + const response: WorkspaceResponse = await this.query(request, variables); + + return response; + } + private async runLoader< Request extends WorkspaceRequest, Response extends WorkspaceResponse, @@ -92,14 +100,9 @@ export class TruffleDB { } async loadProject(): Promise { - const projectRequest = generateInitializeLoad({ + return await this.runLoader(generateInitializeLoad, { directory: this.context.workingDirectory - }).next(); - - const response = await this.getWorkspaceResponse(projectRequest.value); - const projectResponse = response.data.workspace.projectsAdd.projects[0]; - - return projectResponse; + }); } async loadCompilations( @@ -108,23 +111,16 @@ export class TruffleDB { ) { const project = await this.loadProject(); - const saga = generateCompileLoad(result); - - let cur = saga.next(); - - while (!cur.done) { - // HACK not sure why this is necessary; TS knows we're not done, so - // cur.value should only be WorkspaceRequest (first Generator param), - // not the return value (second Generator param) - const response = await this.getWorkspaceResponse(cur.value); - cur = saga.next(response); - } + const { compilations, contractsByCompilation } = await this.runLoader( + generateCompileLoad, + result + ); - if (options && options.names === true) { - await this.loadNames(project, cur.value.contractsByCompilation); + if (options.names === true) { + await this.loadNames(project, contractsByCompilation); } - return cur.value; + return { compilations, contractsByCompilation }; } createContext(config: IConfig): IContext { From 7c4784080f3680a8ed1b8966f6cab5590156c572 Mon Sep 17 00:00:00 2001 From: fainashalts Date: Tue, 13 Oct 2020 14:58:40 -0700 Subject: [PATCH 22/63] Flatten contracts array and pass it as Resource[] to loadNames --- packages/db/src/db.ts | 16 +++++++--------- packages/db/src/loaders/commands/compile.ts | 8 +++++--- packages/db/src/loaders/commands/names.ts | 19 +++++++++---------- packages/db/src/loaders/types.ts | 5 +++++ 4 files changed, 26 insertions(+), 22 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 989c69c0429..8a4185dfb41 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -4,7 +4,8 @@ import { generateCompileLoad } from "@truffle/db/loaders/commands"; import { WorkspaceRequest, WorkspaceResponse, - toIdObject + toIdObject, + NamedResource } from "@truffle/db/loaders/types"; import { WorkflowCompileResult } from "@truffle/compile-common"; import { Workspace } from "@truffle/db/workspace"; @@ -88,14 +89,11 @@ export class TruffleDB { return current.value; } - async loadNames( - project: DataModel.IProject, - contractsByCompilation: Array - ) { + async loadNames(project: DataModel.IProject, resources: NamedResource[]) { return await this.runLoader( generateNamesLoad, toIdObject(project), - contractsByCompilation + resources ); } @@ -111,16 +109,16 @@ export class TruffleDB { ) { const project = await this.loadProject(); - const { compilations, contractsByCompilation } = await this.runLoader( + const { compilations, contracts } = await this.runLoader( generateCompileLoad, result ); if (options.names === true) { - await this.loadNames(project, contractsByCompilation); + await this.loadNames(project, contracts); } - return { compilations, contractsByCompilation }; + return { compilations, contracts }; } createContext(config: IConfig): IContext { diff --git a/packages/db/src/loaders/commands/compile.ts b/packages/db/src/loaders/commands/compile.ts index 6107eb16aa5..cfeee5f07ae 100644 --- a/packages/db/src/loaders/commands/compile.ts +++ b/packages/db/src/loaders/commands/compile.ts @@ -77,11 +77,13 @@ export function* generateCompileLoad( } } - const contracts = yield* generateContractsLoad(loadableContracts); - contractsByCompilation.push(contracts); + const loadedContracts = yield* generateContractsLoad(loadableContracts); + contractsByCompilation.push(loadedContracts); } - return { compilations, contractsByCompilation }; + const contracts = contractsByCompilation.flat(); + + return { compilations, contracts }; } function processResultCompilations( diff --git a/packages/db/src/loaders/commands/names.ts b/packages/db/src/loaders/commands/names.ts index 2428f864e62..aa28c81d91e 100644 --- a/packages/db/src/loaders/commands/names.ts +++ b/packages/db/src/loaders/commands/names.ts @@ -7,7 +7,8 @@ import { generateNameRecordsLoad } from "@truffle/db/loaders/resources/nameRecor import { WorkspaceRequest, WorkspaceResponse, - IdObject + IdObject, + NamedResource } from "@truffle/db/loaders/types"; /** @@ -15,19 +16,17 @@ import { */ export function* generateNamesLoad( project: IdObject, - contractsByCompilation: Array + contracts: NamedResource[] ): Generator> { let getCurrent = function* (name, type) { return yield* generateProjectNameResolve(project, name, type); }; - for (const contracts of contractsByCompilation) { - const nameRecords = yield* generateNameRecordsLoad( - contracts, - "Contract", - getCurrent - ); + const nameRecords = yield* generateNameRecordsLoad( + contracts, + "Contract", + getCurrent + ); - yield* generateProjectNamesAssign(project, nameRecords); - } + yield* generateProjectNamesAssign(project, nameRecords); } diff --git a/packages/db/src/loaders/types.ts b/packages/db/src/loaders/types.ts index 68c53e1ef5f..008a0dfc8d3 100644 --- a/packages/db/src/loaders/types.ts +++ b/packages/db/src/loaders/types.ts @@ -56,3 +56,8 @@ export type WorkspaceResponse = { workspace: { [RequestName in N]: R }; }; }; + +export interface NamedResource { + id: string; + name: string; +} From be826e440650ae0e8246f405d32e2b69577d1e6d Mon Sep 17 00:00:00 2001 From: Harry Altman Date: Thu, 15 Oct 2020 20:25:24 -0400 Subject: [PATCH 23/63] Restrict data.current.identifiers.sections to variables with definitions --- packages/debugger/lib/data/selectors/index.js | 36 ++++++++++--------- 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/packages/debugger/lib/data/selectors/index.js b/packages/debugger/lib/data/selectors/index.js index ecd273e6660..0f66dae5f79 100644 --- a/packages/debugger/lib/data/selectors/index.js +++ b/packages/debugger/lib/data/selectors/index.js @@ -1202,30 +1202,32 @@ const data = createSelectorTree({ /** * data.current.identifiers.sections - * intended for use by Teams Debugger + * used for printing out the variables in sections */ - sections: createLeaf(["./refs"], refs => { + sections: createLeaf(["./definitions", "./refs"], (definitions, refs) => { let sections = { builtin: [], contract: [], local: [] }; for (const [identifier, ref] of Object.entries(refs)) { - switch (ref.location) { - case "special": - sections.builtin.push(identifier); - break; - case "stack": - sections.local.push(identifier); - break; - case "storage": - case "code": - case "nowhere": - case "memory": - case "definition": - sections.contract.push(identifier); - break; - //other cases shouldn't happen + if (identifier in definitions) { + switch (ref.location) { + case "special": + sections.builtin.push(identifier); + break; + case "stack": + sections.local.push(identifier); + break; + case "storage": + case "code": + case "nowhere": + case "memory": + case "definition": + sections.contract.push(identifier); + break; + //other cases shouldn't happen + } } } return sections; From b46c35439247a5b5ceea92e478018d3de3936364 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Wed, 14 Oct 2020 19:32:33 -0400 Subject: [PATCH 24/63] Add missing id field --- packages/db/src/workspace/schema.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/db/src/workspace/schema.ts b/packages/db/src/workspace/schema.ts index 1397421ca53..f2b4837306e 100644 --- a/packages/db/src/workspace/schema.ts +++ b/packages/db/src/workspace/schema.ts @@ -42,6 +42,7 @@ export const schema = mergeSchemas({ name: String! type: String! nameRecord: NameRecord! + id: ID! } ` ] @@ -385,7 +386,7 @@ export const schema = mergeSchemas({ resolve: (_, { id }, { workspace }) => workspace.project({ id }) }, projects: { - resolve: (_, { id }, { workspace }) => workspace.projects() + resolve: (_, {}, { workspace }) => workspace.projects() } }, Mutation: { @@ -511,7 +512,7 @@ export const schema = mergeSchemas({ Promise.all(sources.map(source => workspace.source(source))) }, processedSources: { - resolve: ({ id, processedSources }, _, { workspace }) => + resolve: ({ id, processedSources }, _, {}) => processedSources.map((processedSource, index) => ({ ...processedSource, compilation: { id }, From e64ccae1af7695b730b7df8dd3904fed42f3c058 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Wed, 14 Oct 2020 17:49:46 -0400 Subject: [PATCH 25/63] Add filter capabilities to Resource - Redefine MutableCollectionName to use new filtering - Add various helper types, including CollectionProperty - Redefine existing property getters to use CollectionProperty type --- packages/db/src/workspace/pouch/databases.ts | 16 ++--- packages/db/src/workspace/pouch/types.ts | 61 +++++++++++++++++--- 2 files changed, 58 insertions(+), 19 deletions(-) diff --git a/packages/db/src/workspace/pouch/databases.ts b/packages/db/src/workspace/pouch/databases.ts index 174973faac2..7a4da4905c8 100644 --- a/packages/db/src/workspace/pouch/databases.ts +++ b/packages/db/src/workspace/pouch/databases.ts @@ -145,7 +145,7 @@ export abstract class Databases { return resource; } - const resourceAdded = await this.collections[collectionName].put({ + await this.collections[collectionName].put({ ...resourceInput, _id: id }); @@ -174,13 +174,9 @@ export abstract class Databases { // check for existing const resource = await this.get(collectionName, id); - const { - _rev - }: { - _rev: PouchDB.Core.RevisionId; - } = resource ? resource : {}; + const { _rev }: any = resource ? resource : {}; - const resourceAdded = await this.collections[collectionName].put({ + await this.collections[collectionName].put({ ...resourceInput, _rev, _id: id @@ -209,11 +205,7 @@ export abstract class Databases { const id = this.generateId(collectionName, resourceInput); const resource = await this.get(collectionName, id); - const { - _rev - }: { - _rev: PouchDB.Core.RevisionId; - } = resource ? resource : {}; + const { _rev }: any = resource ? resource : {}; if (_rev) { await this.collections[collectionName].put({ diff --git a/packages/db/src/workspace/pouch/types.ts b/packages/db/src/workspace/pouch/types.ts index 104919b5c08..7f4691c5b78 100644 --- a/packages/db/src/workspace/pouch/types.ts +++ b/packages/db/src/workspace/pouch/types.ts @@ -21,20 +21,71 @@ export type CollectionDatabases = { export type CollectionName = string & keyof C; +export type Collection< + C extends Collections = Collections, + N extends CollectionName = CollectionName +> = { + [K in N]: C[K]; +}[N]; + +export type CollectionPropertyFilter = { + extends: any; +}; + +export type CollectionPropertyName< + F extends CollectionPropertyFilter = CollectionPropertyFilter +> = { + [P in string & + keyof Collection]: F["extends"] extends CollectionProperty< + P, + Collections + > + ? P + : never; +}[string & keyof Collection]; + +export type CollectionProperty< + P extends CollectionPropertyName, + C extends Collections = Collections, + N extends CollectionName = CollectionName +> = Collection[P]; + export type CollectionResult< C extends Collections, N extends CollectionName > = Resource[]; +export type ResourceFilter = { + is: CollectionPropertyName<{ extends: boolean }>; +}; + export type Resource< + C extends Collections = Collections, + N extends CollectionName = CollectionName, + F = undefined +> = F extends ResourceFilter + ? Extract, { [K in F["is"]]: true }> extends never + ? never + : Extract, { [K in F["is"]]: true }>["resource"] + : CollectionProperty<"resource", C, N>; + +export type FilteredCollectionName = { + [K in CollectionName]: Resource extends never ? never : K; +}[CollectionName]; + +export type MutableResource< C extends Collections, - N extends CollectionName -> = C[N]["resource"]; + N extends CollectionName = CollectionName +> = Resource; + +export type MutableCollectionName< + C extends Collections +> = FilteredCollectionName; export type Input< C extends Collections, N extends CollectionName -> = C[N]["input"]; +> = CollectionProperty<"input", C, N>; export type Payload> = { [K in N]: Resource[]; @@ -44,7 +95,3 @@ export type Definition< C extends Collections, N extends CollectionName > = Definitions[N]; - -export type MutableCollectionName = { - [K in CollectionName]: C[K]["mutable"] extends true ? K : never; -}[CollectionName]; From e1b2a0bf42534a0788db6e60c886fc87ba33d487 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Wed, 14 Oct 2020 17:55:06 -0400 Subject: [PATCH 26/63] Add workspace-specific helper types - Rename WorkspaceCollections to Collections; access base types via namespace instead - Define workspace definition-based types as closures around base types: - Definitions - CollectionName - MutableCollectionName - Resource - MutableResource --- packages/db/src/workspace/definitions.ts | 22 +++++++++++++++++++--- packages/db/src/workspace/index.ts | 4 ++-- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/packages/db/src/workspace/definitions.ts b/packages/db/src/workspace/definitions.ts index 57d0e7a53f8..73a9a8f0fc8 100644 --- a/packages/db/src/workspace/definitions.ts +++ b/packages/db/src/workspace/definitions.ts @@ -1,6 +1,6 @@ -import { Definitions } from "./pouch"; +import * as Pouch from "./pouch"; -export type WorkspaceCollections = { +export type Collections = { bytecodes: { resource: DataModel.IBytecode; input: DataModel.IBytecodesAddInput; @@ -40,7 +40,23 @@ export type WorkspaceCollections = { }; }; -export const definitions: Definitions = { +export type Definitions = Pouch.Definitions; + +export type CollectionName< + F extends Pouch.CollectionFilter | undefined = undefined +> = Pouch.CollectionName; + +export type MutableCollectionName = Pouch.MutableCollectionName; + +export type Resource< + N extends CollectionName = CollectionName +> = Pouch.Resource; + +export type MutableResource< + N extends MutableCollectionName = MutableCollectionName +> = Pouch.MutableResource; + +export const definitions: Definitions = { contracts: { createIndexes: [ { diff --git a/packages/db/src/workspace/index.ts b/packages/db/src/workspace/index.ts index f63e0152d62..a7081cbea67 100644 --- a/packages/db/src/workspace/index.ts +++ b/packages/db/src/workspace/index.ts @@ -7,7 +7,7 @@ import { MemoryDatabases, SqliteDatabases } from "./pouch"; -import { WorkspaceCollections, definitions } from "./definitions"; +import { Collections, definitions } from "./definitions"; export interface WorkspaceConfig { workingDirectory?: string; @@ -18,7 +18,7 @@ export interface WorkspaceConfig { } export class Workspace { - public databases: Databases; + public databases: Databases; constructor({ workingDirectory, From 7946145d027662d04c993adf4455506a50f442f6 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Wed, 14 Oct 2020 17:53:02 -0400 Subject: [PATCH 27/63] Add concept of "named" resources - Add `named?: boolean` to base collection type - Add NamedCollectionName helper, similar to MutableCollectionName - Add NamedResource, similar to MutableResource --- packages/db/src/workspace/pouch/types.ts | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/packages/db/src/workspace/pouch/types.ts b/packages/db/src/workspace/pouch/types.ts index 7f4691c5b78..c93a4fa730f 100644 --- a/packages/db/src/workspace/pouch/types.ts +++ b/packages/db/src/workspace/pouch/types.ts @@ -5,6 +5,7 @@ export type Collections = { resource: any; input: any; mutable?: boolean; + named?: boolean; }; }; @@ -21,6 +22,11 @@ export type CollectionDatabases = { export type CollectionName = string & keyof C; +export type NamedCollectionName = CollectionName< + C, + { is: "named" } +>; + export type Collection< C extends Collections = Collections, N extends CollectionName = CollectionName @@ -82,6 +88,11 @@ export type MutableCollectionName< C extends Collections > = FilteredCollectionName; +export type NamedResource< + C extends Collections, + N extends NamedCollectionName = NamedCollectionName +> = Resource; + export type Input< C extends Collections, N extends CollectionName From c14884c7031c0f9e1aa9d478555627edcc18b02b Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Wed, 14 Oct 2020 17:59:20 -0400 Subject: [PATCH 28/63] Define contracts and networks as named resources and provide corresponding helper types --- packages/db/src/workspace/definitions.ts | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/packages/db/src/workspace/definitions.ts b/packages/db/src/workspace/definitions.ts index 73a9a8f0fc8..853bfa986f2 100644 --- a/packages/db/src/workspace/definitions.ts +++ b/packages/db/src/workspace/definitions.ts @@ -16,6 +16,7 @@ export type Collections = { contracts: { resource: DataModel.IContract; input: DataModel.IContractsAddInput; + named: true; }; nameRecords: { resource: DataModel.INameRecord; @@ -24,6 +25,7 @@ export type Collections = { networks: { resource: DataModel.INetwork; input: DataModel.INetworksAddInput; + named: true; }; sources: { resource: DataModel.ISource; @@ -48,6 +50,8 @@ export type CollectionName< export type MutableCollectionName = Pouch.MutableCollectionName; +export type NamedCollectionName = Pouch.NamedCollectionName; + export type Resource< N extends CollectionName = CollectionName > = Pouch.Resource; @@ -56,6 +60,10 @@ export type MutableResource< N extends MutableCollectionName = MutableCollectionName > = Pouch.MutableResource; +export type NamedResource< + N extends NamedCollectionName = NamedCollectionName +> = Pouch.NamedResource; + export const definitions: Definitions = { contracts: { createIndexes: [ From cb8d4c556327af4dc4f86fd88bc863f323b587ef Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Wed, 14 Oct 2020 19:34:29 -0400 Subject: [PATCH 29/63] Remove anyness from base resource - Define as either { id } or { id, name } - Separate base collection based on namedness - Compensate for new type failure in Databases by defining Historical type helper, to identify return values that include additional Pouch fluff --- packages/db/src/workspace/definitions.ts | 4 +- packages/db/src/workspace/pouch/databases.ts | 18 +++++++-- packages/db/src/workspace/pouch/types.ts | 39 +++++++++++++------- 3 files changed, 41 insertions(+), 20 deletions(-) diff --git a/packages/db/src/workspace/definitions.ts b/packages/db/src/workspace/definitions.ts index 853bfa986f2..b40ef91634b 100644 --- a/packages/db/src/workspace/definitions.ts +++ b/packages/db/src/workspace/definitions.ts @@ -44,9 +44,7 @@ export type Collections = { export type Definitions = Pouch.Definitions; -export type CollectionName< - F extends Pouch.CollectionFilter | undefined = undefined -> = Pouch.CollectionName; +export type CollectionName = Pouch.CollectionName; export type MutableCollectionName = Pouch.MutableCollectionName; diff --git a/packages/db/src/workspace/pouch/databases.ts b/packages/db/src/workspace/pouch/databases.ts index 7a4da4905c8..25d1a41a8d9 100644 --- a/packages/db/src/workspace/pouch/databases.ts +++ b/packages/db/src/workspace/pouch/databases.ts @@ -115,7 +115,7 @@ export abstract class Databases { public async get>( collectionName: N, id: string - ): Promise | null> { + ): Promise> | null> { await this.ready; try { @@ -123,7 +123,7 @@ export abstract class Databases { return { ...result, id - } as Resource; + } as Historical>; } catch (_) { return null; } @@ -174,7 +174,7 @@ export abstract class Databases { // check for existing const resource = await this.get(collectionName, id); - const { _rev }: any = resource ? resource : {}; + const { _rev = undefined } = resource ? resource : {}; await this.collections[collectionName].put({ ...resourceInput, @@ -205,7 +205,7 @@ export abstract class Databases { const id = this.generateId(collectionName, resourceInput); const resource = await this.get(collectionName, id); - const { _rev }: any = resource ? resource : {}; + const { _rev = undefined } = resource ? resource : {}; if (_rev) { await this.collections[collectionName].put({ @@ -235,3 +235,13 @@ export abstract class Databases { ); } } + +type History = PouchDB.Core.IdMeta & PouchDB.Core.GetMeta; + +type Historical = { + [K in keyof T | keyof History]: K extends keyof History + ? History[K] + : K extends keyof T + ? T[K] + : never; +}; diff --git a/packages/db/src/workspace/pouch/types.ts b/packages/db/src/workspace/pouch/types.ts index c93a4fa730f..9985fff443b 100644 --- a/packages/db/src/workspace/pouch/types.ts +++ b/packages/db/src/workspace/pouch/types.ts @@ -1,12 +1,25 @@ import PouchDB from "pouchdb"; export type Collections = { - [collectionName: string]: { - resource: any; - input: any; - mutable?: boolean; - named?: boolean; - }; + [collectionName: string]: + | { + resource: { + id: string; + }; + input: any; + mutable?: boolean; + named?: false; + } + // definitely named, must define name property + | { + resource: { + id: string; + name: string; + }; + input: any; + mutable?: boolean; + named: true; + }; }; export type Definitions = { @@ -22,11 +35,6 @@ export type CollectionDatabases = { export type CollectionName = string & keyof C; -export type NamedCollectionName = CollectionName< - C, - { is: "named" } ->; - export type Collection< C extends Collections = Collections, N extends CollectionName = CollectionName @@ -90,8 +98,13 @@ export type MutableCollectionName< export type NamedResource< C extends Collections, - N extends NamedCollectionName = NamedCollectionName -> = Resource; + N extends CollectionName = CollectionName +> = Resource; + +export type NamedCollectionName< + C extends Collections +> = FilteredCollectionName; + export type Input< C extends Collections, From 6063f9013f7b202bc7a02269ca7ca947928241c9 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Thu, 15 Oct 2020 17:58:22 -0400 Subject: [PATCH 30/63] Move workspace abstract types to db/meta --- packages/db/src/db.ts | 8 +- packages/db/src/loaders/commands/names.ts | 8 +- .../src/loaders/resources/bytecodes/index.ts | 2 +- .../loaders/resources/compilations/index.ts | 4 +- .../src/loaders/resources/contracts/index.ts | 2 +- .../loaders/resources/nameRecords/index.ts | 8 +- .../src/loaders/resources/projects/index.ts | 7 +- .../db/src/loaders/resources/sources/index.ts | 3 +- packages/db/src/loaders/types.ts | 19 +-- packages/db/src/meta/index.ts | 112 ++++++++++++++++++ packages/db/src/workspace/definitions.ts | 22 ++-- packages/db/src/workspace/pouch/databases.ts | 7 +- packages/db/src/workspace/pouch/fs.ts | 2 +- packages/db/src/workspace/pouch/memory.ts | 2 +- packages/db/src/workspace/pouch/sqlite.ts | 2 +- packages/db/src/workspace/pouch/types.ts | 104 +--------------- 16 files changed, 143 insertions(+), 169 deletions(-) create mode 100644 packages/db/src/meta/index.ts diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 8a4185dfb41..58902eba1ea 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -1,18 +1,14 @@ import { GraphQLSchema, DocumentNode, parse, execute } from "graphql"; import { schema } from "@truffle/db/data"; import { generateCompileLoad } from "@truffle/db/loaders/commands"; -import { - WorkspaceRequest, - WorkspaceResponse, - toIdObject, - NamedResource -} from "@truffle/db/loaders/types"; +import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; import { WorkflowCompileResult } from "@truffle/compile-common"; import { Workspace } from "@truffle/db/workspace"; import { generateInitializeLoad, generateNamesLoad } from "@truffle/db/loaders/commands"; +import { toIdObject, NamedResource } from "@truffle/db/meta"; interface IConfig { contracts_build_directory: string; diff --git a/packages/db/src/loaders/commands/names.ts b/packages/db/src/loaders/commands/names.ts index aa28c81d91e..82deb7fc980 100644 --- a/packages/db/src/loaders/commands/names.ts +++ b/packages/db/src/loaders/commands/names.ts @@ -4,12 +4,8 @@ import { } from "@truffle/db/loaders/resources/projects"; import { generateNameRecordsLoad } from "@truffle/db/loaders/resources/nameRecords"; -import { - WorkspaceRequest, - WorkspaceResponse, - IdObject, - NamedResource -} from "@truffle/db/loaders/types"; +import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; +import { IdObject, NamedResource } from "@truffle/db/meta"; /** * generator function to load nameRecords and project names into Truffle DB diff --git a/packages/db/src/loaders/resources/bytecodes/index.ts b/packages/db/src/loaders/resources/bytecodes/index.ts index bf3771bebc0..438dd383c17 100644 --- a/packages/db/src/loaders/resources/bytecodes/index.ts +++ b/packages/db/src/loaders/resources/bytecodes/index.ts @@ -1,10 +1,10 @@ import { CompilationData, - toIdObject, LoadedBytecodes, WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; +import { toIdObject } from "@truffle/db/meta"; import { CompiledContract } from "@truffle/compile-common"; import { AddBytecodes } from "./add.graphql"; export { AddBytecodes }; diff --git a/packages/db/src/loaders/resources/compilations/index.ts b/packages/db/src/loaders/resources/compilations/index.ts index e3933bab089..87548f8a06e 100644 --- a/packages/db/src/loaders/resources/compilations/index.ts +++ b/packages/db/src/loaders/resources/compilations/index.ts @@ -1,7 +1,6 @@ import { CompilationData, LoadedSources, - IdObject, WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; @@ -31,8 +30,7 @@ const compilationProcessedSourceInputs = ({ })); const compilationSourceMapInputs = ({ - compilation, - sources + compilation }: LoadableCompilation): DataModel.ICompilationSourceMapInput[] => { const contracts = compilation.sources .map(({ contracts }) => contracts) diff --git a/packages/db/src/loaders/resources/contracts/index.ts b/packages/db/src/loaders/resources/contracts/index.ts index d0f50309b8f..caec0c55ded 100644 --- a/packages/db/src/loaders/resources/contracts/index.ts +++ b/packages/db/src/loaders/resources/contracts/index.ts @@ -1,9 +1,9 @@ import { LoadedBytecodes, - IdObject, WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; +import { IdObject } from "@truffle/db/meta"; import { CompiledContract } from "@truffle/compile-common"; import { AddContracts } from "./add.graphql"; diff --git a/packages/db/src/loaders/resources/nameRecords/index.ts b/packages/db/src/loaders/resources/nameRecords/index.ts index 5bf6966d60c..8901a18618a 100644 --- a/packages/db/src/loaders/resources/nameRecords/index.ts +++ b/packages/db/src/loaders/resources/nameRecords/index.ts @@ -1,9 +1,5 @@ -import { - WorkspaceRequest, - IdObject, - toIdObject, - WorkspaceResponse -} from "@truffle/db/loaders/types"; +import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; +import { toIdObject } from "@truffle/db/meta"; import { AddNameRecords } from "./add.graphql"; export { AddNameRecords }; diff --git a/packages/db/src/loaders/resources/projects/index.ts b/packages/db/src/loaders/resources/projects/index.ts index e41a9e69e0f..d1cc6c017c7 100644 --- a/packages/db/src/loaders/resources/projects/index.ts +++ b/packages/db/src/loaders/resources/projects/index.ts @@ -1,8 +1,5 @@ -import { - IdObject, - WorkspaceRequest, - WorkspaceResponse -} from "@truffle/db/loaders/types"; +import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; +import { IdObject } from "@truffle/db/meta"; import { AddProjects } from "./add.graphql"; import { AssignProjectNames } from "./assign.graphql"; diff --git a/packages/db/src/loaders/resources/sources/index.ts b/packages/db/src/loaders/resources/sources/index.ts index aafc36408e6..64d177fd0f5 100644 --- a/packages/db/src/loaders/resources/sources/index.ts +++ b/packages/db/src/loaders/resources/sources/index.ts @@ -1,7 +1,8 @@ +import { toIdObject } from "@truffle/db/meta"; + import { CompilationData, LoadedSources, - toIdObject, WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; diff --git a/packages/db/src/loaders/types.ts b/packages/db/src/loaders/types.ts index 008a0dfc8d3..16508ec1cba 100644 --- a/packages/db/src/loaders/types.ts +++ b/packages/db/src/loaders/types.ts @@ -1,4 +1,5 @@ import { CompiledContract } from "@truffle/compile-common"; +import { IdObject } from "@truffle/db/meta"; export interface CompilationData { compiler: { @@ -31,19 +32,6 @@ export interface LoadedBytecodes { }[]; } -type Resource = { - id: string; -}; - -export type IdObject = { - [N in keyof R]: N extends "id" ? string : never; -}; - -export const toIdObject = ({ id }: R): IdObject => - ({ - id - } as IdObject); - export interface WorkspaceRequest { request: string; // GraphQL request variables: { @@ -56,8 +44,3 @@ export type WorkspaceResponse = { workspace: { [RequestName in N]: R }; }; }; - -export interface NamedResource { - id: string; - name: string; -} diff --git a/packages/db/src/meta/index.ts b/packages/db/src/meta/index.ts new file mode 100644 index 00000000000..65541b938bc --- /dev/null +++ b/packages/db/src/meta/index.ts @@ -0,0 +1,112 @@ +export type Collections = { + [collectionName: string]: + | { + resource: { + id: string; + }; + input: any; + mutable?: boolean; + named?: false; + } + // definitely named, must define name property + | { + resource: { + id: string; + name: string; + }; + input: any; + mutable?: boolean; + named: true; + }; +}; + +export type CollectionName = string & keyof C; + +export type Collection< + C extends Collections = Collections, + N extends CollectionName = CollectionName +> = { + [K in N]: C[K]; +}[N]; + +export type CollectionPropertyFilter = { + extends: any; +}; + +export type CollectionPropertyName< + F extends CollectionPropertyFilter = CollectionPropertyFilter +> = { + [P in string & + keyof Collection]: F["extends"] extends CollectionProperty< + P, + Collections + > + ? P + : never; +}[string & keyof Collection]; + +export type CollectionProperty< + P extends CollectionPropertyName, + C extends Collections = Collections, + N extends CollectionName = CollectionName +> = Collection[P]; + +export type CollectionResult< + C extends Collections, + N extends CollectionName +> = Resource[]; + +export type ResourceFilter = { + is: CollectionPropertyName<{ extends: boolean }>; +}; + +export type Resource< + C extends Collections = Collections, + N extends CollectionName = CollectionName, + F = undefined +> = F extends ResourceFilter + ? Extract, { [K in F["is"]]: true }> extends never + ? never + : Extract, { [K in F["is"]]: true }>["resource"] + : CollectionProperty<"resource", C, N>; + +export type FilteredCollectionName = { + [K in CollectionName]: Resource extends never ? never : K; +}[CollectionName]; + +export type MutableResource< + C extends Collections, + N extends CollectionName = CollectionName +> = Resource; + +export type MutableCollectionName< + C extends Collections +> = FilteredCollectionName; + +export type NamedResource< + C extends Collections = Collections, + N extends CollectionName = CollectionName +> = Resource; + +export type NamedCollectionName = FilteredCollectionName< + C, + { is: "named" } +>; + +export type Input< + C extends Collections, + N extends CollectionName +> = CollectionProperty<"input", C, N>; + +export type Payload> = { + [K in N]: Resource[]; +}; + +export type IdObject = { + [N in keyof R]: N extends "id" ? string : never; +}; + +export const toIdObject = ({ id }: R): IdObject => + ({ + id + } as IdObject); diff --git a/packages/db/src/workspace/definitions.ts b/packages/db/src/workspace/definitions.ts index b40ef91634b..19a46d45ce2 100644 --- a/packages/db/src/workspace/definitions.ts +++ b/packages/db/src/workspace/definitions.ts @@ -1,3 +1,4 @@ +import * as Meta from "@truffle/db/meta"; import * as Pouch from "./pouch"; export type Collections = { @@ -44,23 +45,20 @@ export type Collections = { export type Definitions = Pouch.Definitions; -export type CollectionName = Pouch.CollectionName; +export type CollectionName = Meta.CollectionName; -export type MutableCollectionName = Pouch.MutableCollectionName; - -export type NamedCollectionName = Pouch.NamedCollectionName; - -export type Resource< - N extends CollectionName = CollectionName -> = Pouch.Resource; +export type Resource = Meta.Resource< + Collections, + N +>; export type MutableResource< - N extends MutableCollectionName = MutableCollectionName -> = Pouch.MutableResource; + N extends CollectionName = CollectionName +> = Meta.MutableResource; export type NamedResource< - N extends NamedCollectionName = NamedCollectionName -> = Pouch.NamedResource; + N extends CollectionName = CollectionName +> = Meta.NamedResource; export const definitions: Definitions = { contracts: { diff --git a/packages/db/src/workspace/pouch/databases.ts b/packages/db/src/workspace/pouch/databases.ts index 25d1a41a8d9..de7da0532e4 100644 --- a/packages/db/src/workspace/pouch/databases.ts +++ b/packages/db/src/workspace/pouch/databases.ts @@ -4,17 +4,16 @@ import PouchDBFind from "pouchdb-find"; import { generateId } from "@truffle/db/helpers"; import { - CollectionDatabases, CollectionName, CollectionResult, Collections, - Definition, - Definitions, Input, Payload, MutableCollectionName, Resource -} from "./types"; +} from "@truffle/db/meta"; + +import { CollectionDatabases, Definition, Definitions } from "./types"; export interface DatabasesOptions { settings: any; diff --git a/packages/db/src/workspace/pouch/fs.ts b/packages/db/src/workspace/pouch/fs.ts index 1a46c1a67e2..03bbc85e2c3 100644 --- a/packages/db/src/workspace/pouch/fs.ts +++ b/packages/db/src/workspace/pouch/fs.ts @@ -4,7 +4,7 @@ import * as jsondown from "jsondown"; import * as PouchDBUtils from "pouchdb-utils"; import CoreLevelPouch from "pouchdb-adapter-leveldb-core"; -import { Collections } from "./types"; +import { Collections } from "@truffle/db/meta"; import { Databases } from "./databases"; export class FSDatabases extends Databases { diff --git a/packages/db/src/workspace/pouch/memory.ts b/packages/db/src/workspace/pouch/memory.ts index 9bc28d00b50..bcfd3baa7ec 100644 --- a/packages/db/src/workspace/pouch/memory.ts +++ b/packages/db/src/workspace/pouch/memory.ts @@ -1,8 +1,8 @@ import PouchDB from "pouchdb"; import PouchDBMemoryAdapter from "pouchdb-adapter-memory"; +import { Collections } from "@truffle/db/meta"; import { Databases } from "./databases"; -import { Collections } from "./types"; export class MemoryDatabases extends Databases { static counter: number = 0; diff --git a/packages/db/src/workspace/pouch/sqlite.ts b/packages/db/src/workspace/pouch/sqlite.ts index 7981cc04f32..cd40a546846 100644 --- a/packages/db/src/workspace/pouch/sqlite.ts +++ b/packages/db/src/workspace/pouch/sqlite.ts @@ -3,8 +3,8 @@ import fse from "fs-extra"; import PouchDB from "pouchdb"; import PouchDBNodeWebSQLAdapter from "pouchdb-adapter-node-websql"; +import { Collections } from "@truffle/db/meta"; import { Databases } from "./databases"; -import { Collections } from "./types"; export class SqliteDatabases extends Databases { private directory: string; diff --git a/packages/db/src/workspace/pouch/types.ts b/packages/db/src/workspace/pouch/types.ts index 9985fff443b..3c680698eb4 100644 --- a/packages/db/src/workspace/pouch/types.ts +++ b/packages/db/src/workspace/pouch/types.ts @@ -1,26 +1,6 @@ import PouchDB from "pouchdb"; -export type Collections = { - [collectionName: string]: - | { - resource: { - id: string; - }; - input: any; - mutable?: boolean; - named?: false; - } - // definitely named, must define name property - | { - resource: { - id: string; - name: string; - }; - input: any; - mutable?: boolean; - named: true; - }; -}; +import { Collections, CollectionName } from "@truffle/db/meta"; export type Definitions = { [N in CollectionName]: { @@ -33,88 +13,6 @@ export type CollectionDatabases = { [N in CollectionName]: PouchDB.Database; }; -export type CollectionName = string & keyof C; - -export type Collection< - C extends Collections = Collections, - N extends CollectionName = CollectionName -> = { - [K in N]: C[K]; -}[N]; - -export type CollectionPropertyFilter = { - extends: any; -}; - -export type CollectionPropertyName< - F extends CollectionPropertyFilter = CollectionPropertyFilter -> = { - [P in string & - keyof Collection]: F["extends"] extends CollectionProperty< - P, - Collections - > - ? P - : never; -}[string & keyof Collection]; - -export type CollectionProperty< - P extends CollectionPropertyName, - C extends Collections = Collections, - N extends CollectionName = CollectionName -> = Collection[P]; - -export type CollectionResult< - C extends Collections, - N extends CollectionName -> = Resource[]; - -export type ResourceFilter = { - is: CollectionPropertyName<{ extends: boolean }>; -}; - -export type Resource< - C extends Collections = Collections, - N extends CollectionName = CollectionName, - F = undefined -> = F extends ResourceFilter - ? Extract, { [K in F["is"]]: true }> extends never - ? never - : Extract, { [K in F["is"]]: true }>["resource"] - : CollectionProperty<"resource", C, N>; - -export type FilteredCollectionName = { - [K in CollectionName]: Resource extends never ? never : K; -}[CollectionName]; - -export type MutableResource< - C extends Collections, - N extends CollectionName = CollectionName -> = Resource; - -export type MutableCollectionName< - C extends Collections -> = FilteredCollectionName; - -export type NamedResource< - C extends Collections, - N extends CollectionName = CollectionName -> = Resource; - -export type NamedCollectionName< - C extends Collections -> = FilteredCollectionName; - - -export type Input< - C extends Collections, - N extends CollectionName -> = CollectionProperty<"input", C, N>; - -export type Payload> = { - [K in N]: Resource[]; -}; - export type Definition< C extends Collections, N extends CollectionName From 8c424dc56c87a75a2ea38278a9f3369a4acd5afe Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Thu, 15 Oct 2020 19:20:40 -0400 Subject: [PATCH 31/63] Remove anyness from collection input property - Update meta type Input to construct mutation wrapping - Define workspace definitions to use direct resource input types instead of mutation input types - Add missing stubs --- packages/db/src/meta/index.ts | 11 +++++------ packages/db/src/workspace/definitions.ts | 16 ++++++++-------- packages/db/types/stub.d.ts | 2 ++ 3 files changed, 15 insertions(+), 14 deletions(-) diff --git a/packages/db/src/meta/index.ts b/packages/db/src/meta/index.ts index 65541b938bc..6d1eb71d887 100644 --- a/packages/db/src/meta/index.ts +++ b/packages/db/src/meta/index.ts @@ -4,7 +4,7 @@ export type Collections = { resource: { id: string; }; - input: any; + input: object; mutable?: boolean; named?: false; } @@ -14,7 +14,7 @@ export type Collections = { id: string; name: string; }; - input: any; + input: object; mutable?: boolean; named: true; }; @@ -93,10 +93,9 @@ export type NamedCollectionName = FilteredCollectionName< { is: "named" } >; -export type Input< - C extends Collections, - N extends CollectionName -> = CollectionProperty<"input", C, N>; +export type Input> = { + [K in N]: CollectionProperty<"input", C, N>[]; +}; export type Payload> = { [K in N]: Resource[]; diff --git a/packages/db/src/workspace/definitions.ts b/packages/db/src/workspace/definitions.ts index 19a46d45ce2..b0d19ee8497 100644 --- a/packages/db/src/workspace/definitions.ts +++ b/packages/db/src/workspace/definitions.ts @@ -4,37 +4,37 @@ import * as Pouch from "./pouch"; export type Collections = { bytecodes: { resource: DataModel.IBytecode; - input: DataModel.IBytecodesAddInput; + input: DataModel.IBytecodeInput; }; compilations: { resource: DataModel.ICompilation; - input: DataModel.ICompilationsAddInput; + input: DataModel.ICompilationInput; }; contractInstances: { resource: DataModel.IContractInstance; - input: DataModel.IContractInstancesAddInput; + input: DataModel.IContractInstanceInput; }; contracts: { resource: DataModel.IContract; - input: DataModel.IContractsAddInput; + input: DataModel.IContractInput; named: true; }; nameRecords: { resource: DataModel.INameRecord; - input: DataModel.INameRecordsAddInput; + input: DataModel.INameRecordInput; }; networks: { resource: DataModel.INetwork; - input: DataModel.INetworksAddInput; + input: DataModel.INetworkInput; named: true; }; sources: { resource: DataModel.ISource; - input: DataModel.ISourcesAddInput; + input: DataModel.ISourceInput; }; projects: { resource: DataModel.IProject; - input: DataModel.IProjectsAddInput; + input: DataModel.IProjectInput; }; projectNames: { resource: DataModel.IProjectName; diff --git a/packages/db/types/stub.d.ts b/packages/db/types/stub.d.ts index 61e0dd922e6..9ae484ae39c 100644 --- a/packages/db/types/stub.d.ts +++ b/packages/db/types/stub.d.ts @@ -25,12 +25,14 @@ declare namespace DataModel { type IContractsAddPayload = any; type IInstruction = any; type INameRecord = any; + type INameRecordInput = any; type INameRecordsAddInput = any; type INameRecordsAddPayload = any; type INetwork = any; type INetworkInput = any; type INetworksAddInput = any; type IProject = any; + type IProjectInput = any; type IProjectsAddInput = any; type IProjectsAddPayload = any; type IProjectName = any; From 590d73d7f9fe65df661addba7c10857bd0373b19 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Thu, 15 Oct 2020 19:34:08 -0400 Subject: [PATCH 32/63] Prefix Input and Payload with Mutation - To indicate that these values include the standard named plurality wrapping - Define separate Input type (analogous to Resource) to represent only the input type for a single resource --- packages/db/src/meta/index.ts | 17 ++++++++++++++--- packages/db/src/workspace/pouch/databases.ts | 20 ++++++++++---------- 2 files changed, 24 insertions(+), 13 deletions(-) diff --git a/packages/db/src/meta/index.ts b/packages/db/src/meta/index.ts index 6d1eb71d887..3e9fe050b53 100644 --- a/packages/db/src/meta/index.ts +++ b/packages/db/src/meta/index.ts @@ -70,6 +70,11 @@ export type Resource< : Extract, { [K in F["is"]]: true }>["resource"] : CollectionProperty<"resource", C, N>; +export type Input< + C extends Collections = Collections, + N extends CollectionName = CollectionName +> = CollectionProperty<"input", C, N>; + export type FilteredCollectionName = { [K in CollectionName]: Resource extends never ? never : K; }[CollectionName]; @@ -93,11 +98,17 @@ export type NamedCollectionName = FilteredCollectionName< { is: "named" } >; -export type Input> = { - [K in N]: CollectionProperty<"input", C, N>[]; +export type MutationInput< + C extends Collections, + N extends CollectionName +> = { + [K in N]: Input[]; }; -export type Payload> = { +export type MutationPayload< + C extends Collections, + N extends CollectionName +> = { [K in N]: Resource[]; }; diff --git a/packages/db/src/workspace/pouch/databases.ts b/packages/db/src/workspace/pouch/databases.ts index de7da0532e4..73d6b35a7c1 100644 --- a/packages/db/src/workspace/pouch/databases.ts +++ b/packages/db/src/workspace/pouch/databases.ts @@ -7,8 +7,8 @@ import { CollectionName, CollectionResult, Collections, - Input, - Payload, + MutationInput, + MutationPayload, MutableCollectionName, Resource } from "@truffle/db/meta"; @@ -130,8 +130,8 @@ export abstract class Databases { public async add>( collectionName: N, - input: Input - ): Promise> { + input: MutationInput + ): Promise> { await this.ready; const resources = await Promise.all( @@ -158,13 +158,13 @@ export abstract class Databases { return ({ [collectionName]: resources - } as unknown) as Payload; + } as unknown) as MutationPayload; } public async update>( collectionName: M, - input: Input - ): Promise> { + input: MutationInput + ): Promise> { await this.ready; const resources = await Promise.all( @@ -190,12 +190,12 @@ export abstract class Databases { return ({ [collectionName]: resources - } as unknown) as Payload; + } as unknown) as MutationPayload; } public async remove>( collectionName: M, - input: Input + input: MutationInput ): Promise { await this.ready; @@ -219,7 +219,7 @@ export abstract class Databases { private generateId>( collectionName: N, - input: Input[N][number] + input: MutationInput[N][number] ): string { const { idFields } = this.definitions[collectionName]; From 8aa6393f84af5117146804a5635456c19770095d Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Thu, 15 Oct 2020 21:02:29 -0400 Subject: [PATCH 33/63] Remove `workspace { }` query wrapper - Update all hardcoded queries not to have said wrapper - Remove src/data/, including unused Bytecode resolver stuff - Temporarily use workspace/schema as main schema for TruffleDB - Replace `mergeSchemas` with simpler `makeExecutableSchema`, since we're now only dealing with one schema - Merge all workspace-defined GraphQL literals into schema.graphql - Remove some extra GraphQL type definitions --- .gitignore | 1 - packages/db/bin/codegen.js | 2 +- packages/db/src/data/bytecode.ts | 70 --- packages/db/src/data/index.ts | 1 - packages/db/src/data/schema.ts | 11 - packages/db/src/data/util-helpers.ts | 91 ---- packages/db/src/data/utils.ts | 75 --- packages/db/src/db.ts | 2 +- .../resources/bytecodes/add.graphql.ts | 16 +- .../src/loaders/resources/bytecodes/index.ts | 4 +- .../resources/compilations/add.graphql.ts | 8 +- .../resources/compilations/get.graphql.ts | 50 +- .../loaders/resources/compilations/index.ts | 8 +- .../contractInstances/add.graphql.ts | 62 ++- .../resources/contracts/add.graphql.ts | 82 ++- .../src/loaders/resources/contracts/index.ts | 2 +- .../resources/nameRecords/add.graphql.ts | 20 +- .../loaders/resources/nameRecords/index.ts | 2 +- .../loaders/resources/networks/add.graphql.ts | 16 +- .../loaders/resources/projects/add.graphql.ts | 10 +- .../resources/projects/assign.graphql.ts | 16 +- .../src/loaders/resources/projects/index.ts | 4 +- .../resources/projects/resolve.graphql.ts | 12 +- .../loaders/resources/sources/add.graphql.ts | 12 +- .../db/src/loaders/resources/sources/index.ts | 2 +- .../db/src/loaders/schema/artifactsLoader.ts | 15 +- packages/db/src/loaders/test/index.ts | 262 +++++---- packages/db/src/loaders/types.ts | 2 +- packages/db/src/schema.graphql | 499 +++++++++++++++--- packages/db/src/workspace/schema.ts | 335 +----------- .../src/workspace/test/nameRecord.graphql.ts | 19 +- packages/db/types/stub.d.ts | 6 +- 32 files changed, 706 insertions(+), 1011 deletions(-) delete mode 100644 packages/db/src/data/bytecode.ts delete mode 100644 packages/db/src/data/index.ts delete mode 100644 packages/db/src/data/schema.ts delete mode 100644 packages/db/src/data/util-helpers.ts delete mode 100644 packages/db/src/data/utils.ts diff --git a/.gitignore b/.gitignore index d08991e82b6..28ffb6f1ec4 100644 --- a/.gitignore +++ b/.gitignore @@ -3,7 +3,6 @@ packages/**/node_modules node_modules yarn-error.log .vscode -bin .DS_Store # truffle diff --git a/packages/db/bin/codegen.js b/packages/db/bin/codegen.js index ad2d2d5e68b..91b4fcefca1 100644 --- a/packages/db/bin/codegen.js +++ b/packages/db/bin/codegen.js @@ -5,7 +5,7 @@ const { generateNamespace } = require("@gql2ts/from-schema"); // for path setup require("@truffle/db"); -const { schema } = require("@truffle/db/data/schema"); +const { schema } = require("@truffle/db/workspace/schema"); const dataModel = generateNamespace("DataModel", schema, { ignoreTypeNameDeclaration: true diff --git a/packages/db/src/data/bytecode.ts b/packages/db/src/data/bytecode.ts deleted file mode 100644 index 376ffbe11fd..00000000000 --- a/packages/db/src/data/bytecode.ts +++ /dev/null @@ -1,70 +0,0 @@ -const { parseCode } = require("@truffle/code-utils"); -const { getHumanReadableSourceMap } = require("@truffle/solidity-utils"); - -export interface Instruction { - pc: number; - pushData?: string; - name: string; - fee: number; - in: number; - out: number; - dynamic: boolean; - async: any /* is this unused? */; -} - -export type JumpValue = "i" | "o" | "-"; - -export interface SourceRange { - start: number; - length: number; - file: number; - jump: JumpValue; -} - -export function readInstructions( - bytecode: string, - sourceMap: string | undefined -): DataModel.IInstruction[] { - const instructions = parseCode(bytecode); - - const sourceRanges = sourceMap ? readSourceMapRanges(sourceMap) : null; - - return instructions.map((op: Instruction, index: number) => - Object.assign( - { - programCounter: op.pc, - opcode: op.name, - meta: { - cost: op.fee, - pops: op.in, - pushes: op.out, - dynamic: op.dynamic - } - }, - - op.pushData ? { pushData: op.pushData } : {}, - sourceRanges ? { sourceRange: sourceRanges[index] } : {} - ) - ); -} - -function readSourceMapRanges(sourceMap: string): DataModel.ISourceRange[] { - const humanReadableSourceMap = getHumanReadableSourceMap(sourceMap); - - const convertMeta = (jump: JumpValue): { jump?: string } => { - switch (jump) { - case "i": - return { jump: "IN" }; - case "o": - return { jump: "OUT" }; - case "-": - return {}; - } - }; - - return humanReadableSourceMap.map(({ start, length, jump }: SourceRange) => ({ - start, - length, - meta: convertMeta(jump) - })); -} diff --git a/packages/db/src/data/index.ts b/packages/db/src/data/index.ts deleted file mode 100644 index 409b14e848f..00000000000 --- a/packages/db/src/data/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { schema } from "./schema"; diff --git a/packages/db/src/data/schema.ts b/packages/db/src/data/schema.ts deleted file mode 100644 index 0874e084021..00000000000 --- a/packages/db/src/data/schema.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { scopeSchemas } from "./utils"; - -import { schema as workspaceSchema } from "@truffle/db/workspace"; - -// current subschemas come from workspace and loaders; eventually there will be one root schema -// which will be the schema found in workspace -export const schema = scopeSchemas({ - subschemas: { - workspace: workspaceSchema - } -}); diff --git a/packages/db/src/data/util-helpers.ts b/packages/db/src/data/util-helpers.ts deleted file mode 100644 index fad93290dc8..00000000000 --- a/packages/db/src/data/util-helpers.ts +++ /dev/null @@ -1,91 +0,0 @@ -import { GraphQLSchema, GraphQLNonNull, GraphQLObjectType } from "graphql"; -import pascalCase from "pascal-case"; - -export function prefixType({ typeDef, name }): GraphQLObjectType { - return Object.assign( - // assign prototype - Object.create(typeDef), - - // assign all fields - typeDef, - - // override name - { - name: `${pascalCase(name)}${typeDef.name}` - } - ); -} - -const operationGetters = { - query: (schema: GraphQLSchema) => schema.getQueryType(), - mutation: (schema: GraphQLSchema) => schema.getMutationType() -}; - -// helper function for rawSchemaOperations -export const buildObjForSchema = schema => - Object.entries(operationGetters) - .map(([op, getter]) => ({ [op]: getter(schema) })) // key by operation - .reduce((a, b) => ({ ...a, ...b }), {}); // combine objects - -// helper function for schemaOperations -export const buildOpsObjectForName = (name, opsArray) => - opsArray - .filter(([_, typeDef]) => typeDef) // must have typeDef - .map(([op, typeDef]) => ({ [op]: prefixType({ typeDef, name }) })) // key by operation - .reduce((a, b) => ({ ...a, ...b }), {}); // combine objects - -// helper function for schemas -export const buildSchemaForName = (name, operationsArray) => - operationsArray - .map(([operation, typeDef]) => ({ - [operation]: new GraphQLObjectType({ - name: pascalCase(operation), - fields: { - [name]: { - type: new GraphQLNonNull(typeDef), - resolve: () => true - } - } - }) - })) - .reduce((a, b) => ({ ...a, ...b }), {}); // combine objects - -export const buildRootResolvers = schemaOperations => - Object.entries(schemaOperations).reduce((accumulator, [name, operations]) => { - return { - ...accumulator, - - ...Object.keys(operations) - .map(operation => ({ - ...(accumulator[operation] || {}), - - [pascalCase(operation)]: { - [name]: () => true - } - })) - .reduce((a, b) => ({ ...a, ...b })) - }; - }, {}); - -export const buildResolverForSubschema = (schema, operationsArray) => - operationsArray - .map(([operation, typeDef]) => ({ - [typeDef.name]: Object.keys( - operationGetters[operation](schema).getFields() - ) - .map(fieldName => ({ - [fieldName]: { - resolve: (_, args, context, info) => - info.mergeInfo.delegateToSchema({ - schema, - operation, - fieldName, - args, - context, - info - }) - } - })) - .reduce((a, b) => ({ ...a, ...b }), {}) - })) - .reduce((a, b) => ({ ...a, ...b }), {}); diff --git a/packages/db/src/data/utils.ts b/packages/db/src/data/utils.ts deleted file mode 100644 index 3c70a0deed2..00000000000 --- a/packages/db/src/data/utils.ts +++ /dev/null @@ -1,75 +0,0 @@ -import { GraphQLSchema, GraphQLNamedType, GraphQLObjectType } from "graphql"; -import { mergeSchemas, IResolvers } from "@gnd/graphql-tools"; -import { - buildObjForSchema, - buildOpsObjectForName, - buildSchemaForName, - buildResolverForSubschema, - buildRootResolvers -} from "./util-helpers"; - -export type SchemaMap = { - [name: string]: GraphQLSchema; -}; - -export type SchemaOperations = { - [name: string]: { - [operation: string]: GraphQLObjectType; - }; -}; - -export type Schemafiable = string | GraphQLSchema | Array; - -export type ScopesConfig = { - subschemas: SchemaMap; - typeDefs?: Schemafiable[]; - resolvers?: IResolvers; -}; - -export function scopeSchemas(config: ScopesConfig): GraphQLSchema { - const { subschemas, typeDefs, resolvers } = config; - - const rawSchemaOperations: SchemaOperations = Object.entries(subschemas) - .map(([name, schema]) => { - return { - [name]: buildObjForSchema(schema) // key by name - }; - }) - .reduce((a, b) => ({ ...a, ...b }), {}); // combine objects - - const schemaOperations: SchemaOperations = Object.entries(rawSchemaOperations) - .map(([name, operations]) => { - const opsArray = Object.entries(operations); // array of [op, typeDef] - return { - [name]: buildOpsObjectForName(name, opsArray) // key by name - }; - }) - .reduce((a, b) => ({ ...a, ...b }), {}); // combine objects - - const schemas: Schemafiable[] = [ - ...Object.entries(schemaOperations).map(([name, operations]) => { - const operationsArray = Object.entries(operations); // array of [op, typeDef] - return new GraphQLSchema(buildSchemaForName(name, operationsArray)); - }), - - ...(typeDefs || []) - ]; - - const subschemaResolvers = Object.entries(subschemas) - .map(([name, schema]) => { - const operationsArray = Object.entries(schemaOperations[name]); - return buildResolverForSubschema(schema, operationsArray); - }) - .reduce((a, b) => ({ ...a, ...b }), {}); - - const rootResolvers = buildRootResolvers(schemaOperations); - - return mergeSchemas({ - schemas, - resolvers: { - ...rootResolvers, - ...subschemaResolvers, - ...resolvers - } - }); -} diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 58902eba1ea..ef637084dd8 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -1,5 +1,5 @@ import { GraphQLSchema, DocumentNode, parse, execute } from "graphql"; -import { schema } from "@truffle/db/data"; +import { schema } from "@truffle/db/workspace/schema"; import { generateCompileLoad } from "@truffle/db/loaders/commands"; import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; import { WorkflowCompileResult } from "@truffle/compile-common"; diff --git a/packages/db/src/loaders/resources/bytecodes/add.graphql.ts b/packages/db/src/loaders/resources/bytecodes/add.graphql.ts index b6b260782f8..b08b3e1deae 100644 --- a/packages/db/src/loaders/resources/bytecodes/add.graphql.ts +++ b/packages/db/src/loaders/resources/bytecodes/add.graphql.ts @@ -13,15 +13,13 @@ export const AddBytecodes = gql` } mutation AddBytecodes($bytecodes: [BytecodeInput!]!) { - workspace { - bytecodesAdd(input: { bytecodes: $bytecodes }) { - bytecodes { - id - linkReferences { - offsets - name - length - } + bytecodesAdd(input: { bytecodes: $bytecodes }) { + bytecodes { + id + linkReferences { + offsets + name + length } } } diff --git a/packages/db/src/loaders/resources/bytecodes/index.ts b/packages/db/src/loaders/resources/bytecodes/index.ts index 438dd383c17..9f2526ad7ae 100644 --- a/packages/db/src/loaders/resources/bytecodes/index.ts +++ b/packages/db/src/loaders/resources/bytecodes/index.ts @@ -43,9 +43,7 @@ export function* generateBytecodesLoad( request: AddBytecodes, variables: { bytecodes } }; - const addedBytecodes = result.data.workspace.bytecodesAdd.bytecodes.map( - toIdObject - ); + const addedBytecodes = result.data.bytecodesAdd.bytecodes.map(toIdObject); // okay, now the hard part, putting things back together the way they were! // we'll start by zipping the creates/calls back diff --git a/packages/db/src/loaders/resources/compilations/add.graphql.ts b/packages/db/src/loaders/resources/compilations/add.graphql.ts index 89e656f21b7..b3cd0c680ec 100644 --- a/packages/db/src/loaders/resources/compilations/add.graphql.ts +++ b/packages/db/src/loaders/resources/compilations/add.graphql.ts @@ -40,11 +40,9 @@ export const AddCompilations = gql` } mutation AddCompilations($compilations: [CompilationInput!]!) { - workspace { - compilationsAdd(input: { compilations: $compilations }) { - compilations { - id - } + compilationsAdd(input: { compilations: $compilations }) { + compilations { + id } } } diff --git a/packages/db/src/loaders/resources/compilations/get.graphql.ts b/packages/db/src/loaders/resources/compilations/get.graphql.ts index 53bf53a3633..b70a98dc6c4 100644 --- a/packages/db/src/loaders/resources/compilations/get.graphql.ts +++ b/packages/db/src/loaders/resources/compilations/get.graphql.ts @@ -2,36 +2,34 @@ import gql from "graphql-tag"; export const GetCompilation = gql` query GetCompilation($id: ID!) { - workspace { - compilation(id: $id) { - id - compiler { - name - } - sourceMaps { - json + compilation(id: $id) { + id + compiler { + name + } + sourceMaps { + json + } + processedSources { + source { + sourcePath } - processedSources { - source { - sourcePath - } - contracts { + contracts { + id + name + createBytecode { id - name - createBytecode { - id - bytes - linkReferences { - name - } + bytes + linkReferences { + name } - callBytecode { - id - bytes - linkReferences { - name - } + } + callBytecode { + id + bytes + linkReferences { + name } } } diff --git a/packages/db/src/loaders/resources/compilations/index.ts b/packages/db/src/loaders/resources/compilations/index.ts index 87548f8a06e..9024b15abb0 100644 --- a/packages/db/src/loaders/resources/compilations/index.ts +++ b/packages/db/src/loaders/resources/compilations/index.ts @@ -13,13 +13,13 @@ export { GetCompilation } from "./get.graphql"; const compilationSourceInputs = ({ compilation, sources -}: LoadableCompilation): DataModel.ICompilationSourceInput[] => +}: LoadableCompilation): DataModel.IResourceReferenceInput[] => compilation.sources.map(({ input: { sourcePath } }) => sources[sourcePath]); const compilationProcessedSourceInputs = ({ compilation, sources -}: LoadableCompilation): DataModel.ICompilationProcessedSourceInput[] => +}: LoadableCompilation): DataModel.IProcessedSourceInput[] => compilation.sources.map(({ input: { sourcePath }, contracts }) => ({ source: sources[sourcePath], // PRECONDITION: all contracts in the same compilation with the same @@ -31,7 +31,7 @@ const compilationProcessedSourceInputs = ({ const compilationSourceMapInputs = ({ compilation -}: LoadableCompilation): DataModel.ICompilationSourceMapInput[] => { +}: LoadableCompilation): DataModel.ISourceMapInput[] => { const contracts = compilation.sources .map(({ contracts }) => contracts) .flat(); @@ -74,5 +74,5 @@ export function* generateCompilationsLoad( variables: { compilations } }; - return result.data.workspace.compilationsAdd.compilations; + return result.data.compilationsAdd.compilations; } diff --git a/packages/db/src/loaders/resources/contractInstances/add.graphql.ts b/packages/db/src/loaders/resources/contractInstances/add.graphql.ts index 76b45a0c55a..512db2d649e 100644 --- a/packages/db/src/loaders/resources/contractInstances/add.graphql.ts +++ b/packages/db/src/loaders/resources/contractInstances/add.graphql.ts @@ -61,40 +61,38 @@ export const AddContractInstances = gql` } mutation AddContractInstances($contractInstances: [ContractInstanceInput!]!) { - workspace { - contractInstancesAdd(input: { contractInstances: $contractInstances }) { - contractInstances { - address - network { - name - networkID - historicBlock { - height - hash - } - } - contract { - name + contractInstancesAdd(input: { contractInstances: $contractInstances }) { + contractInstances { + address + network { + name + networkID + historicBlock { + height + hash } - creation { - transactionHash - constructor { - createBytecode { - bytecode { - bytes - linkReferences { - offsets - name - length - } + } + contract { + name + } + creation { + transactionHash + constructor { + createBytecode { + bytecode { + bytes + linkReferences { + offsets + name + length } - linkValues { - value - linkReference { - offsets - name - length - } + } + linkValues { + value + linkReference { + offsets + name + length } } } diff --git a/packages/db/src/loaders/resources/contracts/add.graphql.ts b/packages/db/src/loaders/resources/contracts/add.graphql.ts index 207dfbb6fc7..9139f0454f2 100644 --- a/packages/db/src/loaders/resources/contracts/add.graphql.ts +++ b/packages/db/src/loaders/resources/contracts/add.graphql.ts @@ -33,15 +33,29 @@ export const AddContracts = gql` } mutation AddContracts($contracts: [ContractInput!]!) { - workspace { - contractsAdd(input: { contracts: $contracts }) { - contracts { - id - name - abi { + contractsAdd(input: { contracts: $contracts }) { + contracts { + id + name + abi { + json + } + processedSource { + source { + contents + sourcePath + } + ast { json } - processedSource { + } + compilation { + compiler { + name + version + } + contracts { + name source { contents sourcePath @@ -50,43 +64,27 @@ export const AddContracts = gql` json } } - compilation { - compiler { - name - version - } - contracts { - name - source { - contents - sourcePath - } - ast { - json - } - } - sources { - contents - sourcePath - } + sources { + contents + sourcePath } - createBytecode { - id - bytes - linkReferences { - offsets - name - length - } + } + createBytecode { + id + bytes + linkReferences { + offsets + name + length } - callBytecode { - id - bytes - linkReferences { - offsets - name - length - } + } + callBytecode { + id + bytes + linkReferences { + offsets + name + length } } } diff --git a/packages/db/src/loaders/resources/contracts/index.ts b/packages/db/src/loaders/resources/contracts/index.ts index caec0c55ded..a5e801ee902 100644 --- a/packages/db/src/loaders/resources/contracts/index.ts +++ b/packages/db/src/loaders/resources/contracts/index.ts @@ -52,5 +52,5 @@ export function* generateContractsLoad( variables: { contracts } }; - return result.data.workspace.contractsAdd.contracts; + return result.data.contractsAdd.contracts; } diff --git a/packages/db/src/loaders/resources/nameRecords/add.graphql.ts b/packages/db/src/loaders/resources/nameRecords/add.graphql.ts index 82c257bf9ad..9b79979c985 100644 --- a/packages/db/src/loaders/resources/nameRecords/add.graphql.ts +++ b/packages/db/src/loaders/resources/nameRecords/add.graphql.ts @@ -17,19 +17,17 @@ export const AddNameRecords = gql` } mutation AddNameRecords($nameRecords: [NameRecordInput!]!) { - workspace { - nameRecordsAdd(input: { nameRecords: $nameRecords }) { - nameRecords { + nameRecordsAdd(input: { nameRecords: $nameRecords }) { + nameRecords { + id + name + type + resource { + name + } + previous { id name - type - resource { - name - } - previous { - id - name - } } } } diff --git a/packages/db/src/loaders/resources/nameRecords/index.ts b/packages/db/src/loaders/resources/nameRecords/index.ts index 8901a18618a..1cf56857db4 100644 --- a/packages/db/src/loaders/resources/nameRecords/index.ts +++ b/packages/db/src/loaders/resources/nameRecords/index.ts @@ -53,5 +53,5 @@ export function* generateNameRecordsLoad( variables: { nameRecords } }; - return result.data.workspace.nameRecordsAdd.nameRecords; + return result.data.nameRecordsAdd.nameRecords; } diff --git a/packages/db/src/loaders/resources/networks/add.graphql.ts b/packages/db/src/loaders/resources/networks/add.graphql.ts index 0892cea8c0c..98d2e3defc1 100644 --- a/packages/db/src/loaders/resources/networks/add.graphql.ts +++ b/packages/db/src/loaders/resources/networks/add.graphql.ts @@ -13,15 +13,13 @@ export const AddNetworks = gql` } mutation AddNetworks($networks: [NetworkInput!]!) { - workspace { - networksAdd(input: { networks: $networks }) { - networks { - id - networkId - historicBlock { - height - hash - } + networksAdd(input: { networks: $networks }) { + networks { + id + networkId + historicBlock { + height + hash } } } diff --git a/packages/db/src/loaders/resources/projects/add.graphql.ts b/packages/db/src/loaders/resources/projects/add.graphql.ts index 1058c2eec7a..f20e6c2fca9 100644 --- a/packages/db/src/loaders/resources/projects/add.graphql.ts +++ b/packages/db/src/loaders/resources/projects/add.graphql.ts @@ -5,12 +5,10 @@ export const AddProjects = gql` directory: String! } mutation AddProjects($projects: [ProjectInput!]!) { - workspace { - projectsAdd(input: { projects: $projects }) { - projects { - id - directory - } + projectsAdd(input: { projects: $projects }) { + projects { + id + directory } } } diff --git a/packages/db/src/loaders/resources/projects/assign.graphql.ts b/packages/db/src/loaders/resources/projects/assign.graphql.ts index 518daee07a5..90102f75718 100644 --- a/packages/db/src/loaders/resources/projects/assign.graphql.ts +++ b/packages/db/src/loaders/resources/projects/assign.graphql.ts @@ -14,15 +14,13 @@ export const AssignProjectNames = gql` nameRecord: NameRecordInput! } mutation AssignProjectNames($projectNames: [ProjectNameInput!]!) { - workspace { - projectNamesAssign(input: { projectNames: $projectNames }) { - projectNames { - name - type - nameRecord { - resource { - id - } + projectNamesAssign(input: { projectNames: $projectNames }) { + projectNames { + name + type + nameRecord { + resource { + id } } } diff --git a/packages/db/src/loaders/resources/projects/index.ts b/packages/db/src/loaders/resources/projects/index.ts index d1cc6c017c7..864336a389e 100644 --- a/packages/db/src/loaders/resources/projects/index.ts +++ b/packages/db/src/loaders/resources/projects/index.ts @@ -20,7 +20,7 @@ export function* generateProjectLoad( } }; - return result.data.workspace.projectsAdd.projects[0]; + return result.data.projectsAdd.projects[0]; } export function* generateProjectNameResolve( @@ -41,7 +41,7 @@ export function* generateProjectNameResolve( } }; - return result.data.workspace.project.resolve[0]; + return result.data.project.resolve[0]; } export function* generateProjectNamesAssign( diff --git a/packages/db/src/loaders/resources/projects/resolve.graphql.ts b/packages/db/src/loaders/resources/projects/resolve.graphql.ts index 965d13876b0..4b5ea9be41f 100644 --- a/packages/db/src/loaders/resources/projects/resolve.graphql.ts +++ b/packages/db/src/loaders/resources/projects/resolve.graphql.ts @@ -2,14 +2,12 @@ import gql from "graphql-tag"; export const ResolveProjectName = gql` query ResolveProjectName($projectId: ID!, $type: String!, $name: String!) { - workspace { - project(id: $projectId) { - resolve(type: $type, name: $name) { + project(id: $projectId) { + resolve(type: $type, name: $name) { + id + resource { id - resource { - id - name - } + name } } } diff --git a/packages/db/src/loaders/resources/sources/add.graphql.ts b/packages/db/src/loaders/resources/sources/add.graphql.ts index b8cabf76298..5a78c877001 100644 --- a/packages/db/src/loaders/resources/sources/add.graphql.ts +++ b/packages/db/src/loaders/resources/sources/add.graphql.ts @@ -7,13 +7,11 @@ export const AddSources = gql` } mutation AddSource($sources: [SourceInput!]!) { - workspace { - sourcesAdd(input: { sources: $sources }) { - sources { - id - contents - sourcePath - } + sourcesAdd(input: { sources: $sources }) { + sources { + id + contents + sourcePath } } } diff --git a/packages/db/src/loaders/resources/sources/index.ts b/packages/db/src/loaders/resources/sources/index.ts index 64d177fd0f5..2fcda0aa74d 100644 --- a/packages/db/src/loaders/resources/sources/index.ts +++ b/packages/db/src/loaders/resources/sources/index.ts @@ -26,7 +26,7 @@ export function* generateSourcesLoad( variables: { sources: inputs } }; - const { sources } = result.data.workspace.sourcesAdd; + const { sources } = result.data.sourcesAdd; // return source IDs mapped by sourcePath return sources.reduce( diff --git a/packages/db/src/loaders/schema/artifactsLoader.ts b/packages/db/src/loaders/schema/artifactsLoader.ts index 10351e44bca..2d24b113a4d 100644 --- a/packages/db/src/loaders/schema/artifactsLoader.ts +++ b/packages/db/src/loaders/schema/artifactsLoader.ts @@ -99,9 +99,7 @@ export class ArtifactsLoader { compilations.map(async ({ id }, index) => { const { data: { - workspace: { - compilation: { processedSources } - } + compilation: { processedSources } } } = await this.db.query(GetCompilation, { id }); @@ -135,9 +133,7 @@ export class ArtifactsLoader { nameRecords: nameRecords }); let { - data: { - workspace: { nameRecordsAdd } - } + data: { nameRecordsAdd } } = nameRecordsResult; const projectNames = nameRecordsAdd.nameRecords.map( @@ -162,9 +158,9 @@ export class ArtifactsLoader { name }); - if (data.workspace.project.resolve.length > 0) { + if (data.project.resolve.length > 0) { return { - id: data.workspace.project.resolve[0].id + id: data.project.resolve[0].id }; } } @@ -220,8 +216,7 @@ export class ArtifactsLoader { ] }); - const id = - networksAdd.data.workspace.networksAdd.networks[0].id; + const id = networksAdd.data.networksAdd.networks[0].id; configNetworks.push({ contract: contractName, id: id, diff --git a/packages/db/src/loaders/test/index.ts b/packages/db/src/loaders/test/index.ts index 499ad6e86b5..4b949e573a3 100644 --- a/packages/db/src/loaders/test/index.ts +++ b/packages/db/src/loaders/test/index.ts @@ -160,15 +160,13 @@ const artifacts = [ const GetWorkspaceBytecode: boolean = gql` query GetWorkspaceBytecode($id: ID!) { - workspace { - bytecode(id: $id) { - id - bytes - linkReferences { - offsets - name - length - } + bytecode(id: $id) { + id + bytes + linkReferences { + offsets + name + length } } } @@ -176,55 +174,51 @@ const GetWorkspaceBytecode: boolean = gql` const GetWorkspaceSource: boolean = gql` query GetWorkspaceSource($id: ID!) { - workspace { - source(id: $id) { - id - contents - sourcePath - } + source(id: $id) { + id + contents + sourcePath } } `; const GetWorkspaceContract = gql` query GetWorkspaceContract($id: ID!) { - workspace { - contract(id: $id) { - id - name - abi { + contract(id: $id) { + id + name + abi { + json + } + createBytecode { + bytes + } + callBytecode { + bytes + } + processedSource { + source { + contents + sourcePath + } + ast { json } - createBytecode { - bytes + } + compilation { + compiler { + name + version } - callBytecode { - bytes + sources { + contents + sourcePath } - processedSource { + processedSources { source { contents sourcePath } - ast { - json - } - } - compilation { - compiler { - name - version - } - sources { - contents - sourcePath - } - processedSources { - source { - contents - sourcePath - } - } } } } @@ -233,45 +227,41 @@ const GetWorkspaceContract = gql` const GetWorkspaceCompilation: boolean = gql` query getWorkspaceCompilation($id: ID!) { - workspace { - compilation(id: $id) { - compiler { - name - version - } - processedSources { - source { - contents - sourcePath - } - ast { - json - } - } - sources { - id + compilation(id: $id) { + compiler { + name + version + } + processedSources { + source { contents sourcePath } - sourceMaps { + ast { json } } + sources { + id + contents + sourcePath + } + sourceMaps { + json + } } } `; const GetWorkspaceNetwork: boolean = gql` query GetWorkspaceNetwork($id: ID!) { - workspace { - network(id: $id) { - networkId - id - name - historicBlock { - height - hash - } + network(id: $id) { + networkId + id + name + historicBlock { + height + hash } } } @@ -279,38 +269,36 @@ const GetWorkspaceNetwork: boolean = gql` const GetWorkspaceContractInstance: boolean = gql` query GetContractInstance($id: ID!) { - workspace { - contractInstance(id: $id) { - address - network { - networkId - } - contract { - name - } - creation { - transactionHash - constructor { - createBytecode { - bytecode { - bytes - linkReferences { - offsets - name - length - } + contractInstance(id: $id) { + address + network { + networkId + } + contract { + name + } + creation { + transactionHash + constructor { + createBytecode { + bytecode { + bytes + linkReferences { + offsets + name + length } } } } - callBytecode { - bytecode { - bytes - linkReferences { - offsets - name - length - } + } + callBytecode { + bytecode { + bytes + linkReferences { + offsets + name + length } } } @@ -447,9 +435,7 @@ describe("Compilation", () => { // setting up a fake previous contract to test previous name record const { data: { - workspace: { - projectsAdd: { projects } - } + projectsAdd: { projects } } } = await db.query(AddProjects, { projects: [ @@ -495,7 +481,7 @@ describe("Compilation", () => { }); contractNameRecordId = - contractNameRecord.data.workspace.nameRecordsAdd.nameRecords[0].id; + contractNameRecord.data.nameRecordsAdd.nameRecords[0].id; await db.query(AssignProjectNames, { projectNames: [ @@ -563,7 +549,7 @@ describe("Compilation", () => { }) ); - const solcCompilation = compilationsQuery[0].data.workspace.compilation; + const solcCompilation = compilationsQuery[0].data.compilation; expect(solcCompilation.compiler.version).toEqual( artifacts[0].compiler.version @@ -583,7 +569,7 @@ describe("Compilation", () => { ).toBeDefined(); }); - const vyperCompilation = compilationsQuery[1].data.workspace.compilation; + const vyperCompilation = compilationsQuery[1].data.compilation; expect(vyperCompilation.compiler.version).toEqual( artifacts[3].compiler.version ); @@ -599,9 +585,7 @@ describe("Compilation", () => { for (let index in sourceIds) { let { data: { - workspace: { - source: { contents, sourcePath } - } + source: { contents, sourcePath } } } = await db.query(GetWorkspaceSource, sourceIds[index]); @@ -614,9 +598,7 @@ describe("Compilation", () => { for (let index in bytecodeIds) { let { data: { - workspace: { - bytecode: { bytes } - } + bytecode: { bytes } } } = await db.query(GetWorkspaceBytecode, bytecodeIds[index]); @@ -669,19 +651,17 @@ describe("Compilation", () => { let { data: { - workspace: { - contract: { - id, - name, - processedSource: { - source: { contents } - }, - compilation: { - compiler: { version } - }, - createBytecode, - callBytecode - } + contract: { + id, + name, + processedSource: { + source: { contents } + }, + compilation: { + compiler: { version } + }, + createBytecode, + callBytecode } } } = await db.query(GetWorkspaceContract, contractIds[index]); @@ -703,9 +683,7 @@ describe("Compilation", () => { const { data: { - workspace: { - project: { resolve } - } + project: { resolve } } } = await db.query(ResolveProjectName, { projectId, @@ -723,9 +701,7 @@ describe("Compilation", () => { for (let index in migratedArtifacts) { let { data: { - workspace: { - network: { name, networkId, historicBlock } - } + network: { name, networkId, historicBlock } } } = await db.query(GetWorkspaceNetwork, netIds[index]); @@ -739,21 +715,19 @@ describe("Compilation", () => { for (const contractInstanceId of contractInstanceIds) { let { data: { - workspace: { - contractInstance: { - address, - network: { networkId }, - contract: { name }, - creation: { - transactionHash, - constructor: { - createBytecode: { - bytecode: { bytes, linkReferences } - } + contractInstance: { + address, + network: { networkId }, + contract: { name }, + creation: { + transactionHash, + constructor: { + createBytecode: { + bytecode: { bytes, linkReferences } } - }, - callBytecode: { bytecode } - } + } + }, + callBytecode: { bytecode } } } } = await db.query(GetWorkspaceContractInstance, contractInstanceId); diff --git a/packages/db/src/loaders/types.ts b/packages/db/src/loaders/types.ts index 16508ec1cba..f2cb8e3971d 100644 --- a/packages/db/src/loaders/types.ts +++ b/packages/db/src/loaders/types.ts @@ -41,6 +41,6 @@ export interface WorkspaceRequest { export type WorkspaceResponse = { data: { - workspace: { [RequestName in N]: R }; + [RequestName in N]: R; }; }; diff --git a/packages/db/src/schema.graphql b/packages/db/src/schema.graphql index e48bfbb32ce..de6f39cf1b9 100644 --- a/packages/db/src/schema.graphql +++ b/packages/db/src/schema.graphql @@ -5,94 +5,113 @@ scalar Value scalar Bytes scalar Object scalar ByteOffset -scalar FileIndex +scalar Index -type Project { - directory: String! - contract(name: String!): Contract - network(name: String!): Network - resolve(type: String, name: String): [NameRecord] # null means unknown type -} +# +# Abstract +# -type NameRecord { - name: String! - type: String! - resource: Named! - previous: NameRecord +interface Resource { + id: ID! } interface Named { + id: ID! name: String! } -type ContractInstance { - address: Address! - network: Network! - creation: ContractInstanceCreation - callBytecode: LinkedBytecode! - contract: Contract +input ResourceReferenceInput { + id: ID! } -type ContractInstanceCreation { - transactionHash: TransactionHash - constructorArgs: [Value] - constructor: Constructor +input IndexReferenceInput { + index: Index! } -type Constructor { - createBytecode: LinkedBytecode -} -type Contract implements Named { - name: String! - source: Source - abi: ABI - compilation: Compilation - processedSource: ProcessedSource - createBytecode: Bytecode - callBytecode: Bytecode -} +# +# Query +# -type ABI { - json: String! - items: [AbiItem] -} +type Query { + contractNames: [String]! -# stub -type AbiItem { - type: String + # query individual resources + source(id: ID!): Source + bytecode(id: ID!): Bytecode + contract(id: ID!): Contract + compilation(id: ID!): Compilation + contractInstance(id: ID!): ContractInstance + network(id: ID!): Network + nameRecord(id:ID!): NameRecord + project(id: ID!): Project + + # query collections + contractInstances: [ContractInstance] + sources: [Source] + bytecodes: [Bytecode] + contracts: [Contract] + compilations: [Compilation] + networks: [Network] + nameRecords: [NameRecord] + projects: [Project] } -type ProcessedSource { - source: Source! - contracts: [Contract]! - ast: AST +# +# Mutation +# + +type Mutation { + projectsAdd(input:ProjectsAddInput!):ProjectsAddPayload + projectNamesAssign(input: ProjectNamesAssignInput): ProjectNamesAssignPayload + sourcesAdd(input: SourcesAddInput!): SourcesAddPayload + bytecodesAdd(input: BytecodesAddInput!): BytecodesAddPayload + contractsAdd(input: ContractsAddInput!): ContractsAddPayload + compilationsAdd(input: CompilationsAddInput!): CompilationsAddPayload + contractInstancesAdd(input: ContractInstancesAddInput!): ContractInstancesAddPayload + networksAdd(input: NetworksAddInput!): NetworksAddPayload + nameRecordsAdd(input: NameRecordsAddInput!): NameRecordsAddPayload } -type AST { - json: String! + +# +# Sources +# + +# Resource +type Source implements Resource { + id: ID! + sourcePath: String + contents: String! } -type Network implements Named { - name: String! - networkId: NetworkId! - historicBlock: Block! - fork: Network +# Resource input +input SourceInput { + contents: String! + sourcePath: String } -type Block { - height: Int! - hash: String! +# Mutation input +input SourcesAddInput { + sources: [SourceInput!]! } -type LinkValue { - linkReference: LinkReference! - value: Bytes +# Mutation payload +type SourcesAddPayload { + sources: [Source!] } -type LinkedBytecode { - bytecode: Bytecode! - linkValues: [LinkValue]! + +# +# Bytecodes +# + +# Resource +type Bytecode implements Resource { + id: ID! + bytes: Bytes! + linkReferences: [LinkReference] + instructions: [Instruction!], } type LinkReference { @@ -101,12 +120,6 @@ type LinkReference { length: Int! } -type Bytecode { - bytes: Bytes! - instructions: [Instruction!], - linkReferences: [LinkReference] -} - type Instruction { opcode: String!, programCounter: Int!, @@ -131,16 +144,45 @@ type SourceRange { meta: SourceRangeMeta! } -type Source { - sourcePath: String - contents: String! +type SourceRangeMeta { + jump: JumpDirection } -type SourceMap { - json: String! +enum JumpDirection { + IN + OUT +} + +# Resource input +input BytecodeInput { + bytes: Bytes! + linkReferences: [BytecodeLinkReferenceInput] +} + +input BytecodeLinkReferenceInput { + offsets: [Int!]! + name: String + length: Int! } -type Compilation { +# Mutation input +input BytecodesAddInput { + bytecodes: [BytecodeInput!]! +} + +# Mutation payload +type BytecodesAddPayload { + bytecodes: [Bytecode!] +} + + +# +# Compilations +# + +# Resource +type Compilation implements Resource { + id: ID! compiler: Compiler! sources: [Source]! processedSources: [ProcessedSource]! @@ -153,11 +195,312 @@ type Compiler { settings: Object } -type SourceRangeMeta { - jump: JumpDirection +type ProcessedSource { + source: Source! + contracts: [Contract]! + ast: AST } -enum JumpDirection { - IN - OUT +type AST { + json: String! +} + +type SourceMap { + json: String! +} + +# Resource input +input CompilationInput { + compiler: CompilerInput! + processedSources: [ProcessedSourceInput!] + sources: [ResourceReferenceInput!]! + sourceMaps: [SourceMapInput] +} + +input CompilerInput { + name: String! + version: String! + settings: Object +} + +input ProcessedSourceInput { + name: String + source: ResourceReferenceInput + ast: ASTInput +} + +input ASTInput { + json: String! +} + +input SourceMapInput { + json: String! +} + +# Mutation input +input CompilationsAddInput { + compilations: [CompilationInput!]! +} + +# Mutation payload +type CompilationsAddPayload { + compilations: [Compilation!] +} + + +# +# Contracts +# + +# Resource +type Contract implements Resource & Named { + id: ID! + name: String! + source: Source + abi: ABI + compilation: Compilation + processedSource: ProcessedSource + createBytecode: Bytecode + callBytecode: Bytecode +} + +type ABI { + json: String! +} + +# Resource input +input ContractInput { + name: String! + abi: ABIInput + compilation: ResourceReferenceInput + processedSource: IndexReferenceInput + createBytecode: ResourceReferenceInput + callBytecode: ResourceReferenceInput +} + +input ABIInput { + json: String! +} + +# Mutation input +input ContractsAddInput { + contracts: [ContractInput!]! +} + +# Mutation payload +type ContractsAddPayload { + contracts: [Contract]! +} + + +# +# ContractInstances +# + +# Resource +type ContractInstance implements Resource { + id: ID! + address: Address! + network: Network! + creation: ContractInstanceCreation + callBytecode: LinkedBytecode! + contract: Contract +} + +type ContractInstanceCreation { + transactionHash: TransactionHash + constructorArgs: [Value] + constructor: Constructor +} + +type Constructor { + createBytecode: LinkedBytecode +} + +type LinkedBytecode { + bytecode: Bytecode! + linkValues: [LinkValue]! +} + +type LinkValue { + linkReference: LinkReference! + value: Bytes +} + +# Resource input +input ContractInstanceInput { + address: Address! + network: ResourceReferenceInput + creation: ContractInstanceCreationInput + contract: ResourceReferenceInput + callBytecode: LinkedBytecodeInput +} + +input ContractInstanceCreationInput { + transactionHash: TransactionHash! + constructor: ConstructorInput! +} + +input ConstructorInput { + createBytecode: LinkedBytecodeInput! +} + +input LinkedBytecodeInput { + bytecode: ResourceReferenceInput + linkValues: [LinkValueInput] +} + +input LinkValueInput { + value: Address! + linkReference: LinkReferenceInput! +} + +input LinkReferenceInput { + bytecode: ID! + index: Index +} + +# Mutation input +input ContractInstancesAddInput { + contractInstances: [ContractInstanceInput!]! +} + +# Mutation payload +type ContractInstancesAddPayload { + contractInstances: [ContractInstance!] +} + + +# +# Networks +# + +# Resource +type Network implements Resource & Named { + id: ID! + name: String! + networkId: NetworkId! + historicBlock: Block! + fork: Network +} + +type Block { + height: Int! + hash: String! +} + +# Resource input +input NetworkInput { + name: String! + networkId: NetworkId! + historicBlock: BlockInput! +} + +input BlockInput { + height: Int! + hash: String! +} + +# Mutation input +input NetworksAddInput { + networks: [NetworkInput!]! +} + +# Mutation payload +type NetworksAddPayload { + networks: [Network!]! +} + + +# +# NameRecords +# + +# Resource +type NameRecord implements Resource { + id: ID! + name: String! + type: String! + resource: Named! + previous: NameRecord +} + +# Resource input +input NameRecordInput { + name: String! + type: String! + resource: ResourceReferenceInput! + previous: ResourceReferenceInput +} + +# Mutation input +input NameRecordsAddInput { + nameRecords: [NameRecordInput!]! +} + +# Mutation payload +type NameRecordsAddPayload { + nameRecords: [NameRecord] +} + + +# +# Projects +# + +# Resource +type Project implements Resource { + id: ID! + + directory: String! + + contract(name: String!): Contract + network(name: String!): Network + resolve(type: String, name: String): [NameRecord] # null means unknown type +} + +# Resource input +input ProjectInput { + directory: String! +} + +# Mutation input +input ProjectsAddInput { + projects: [ProjectInput!]! +} + +# Mutation payload +type ProjectsAddPayload { + projects: [Project!]! +} + + +# +# ProjectNames +# + +type ProjectName implements Resource { + id: ID! + project: Project! + name: String! + type: String! + nameRecord: NameRecord! +} + +# Resource input +input ProjectNameInput { + project: ResourceReferenceInput! + name: String! + type: String! + nameRecord: ResourceReferenceInput! +} + +# Mutation input +input ProjectNamesAssignInput { + projectNames: [ProjectNameInput!]! +} + +# Mutation payload +type ProjectNamesAssignPayload { + projectNames: [ProjectName!]! } diff --git a/packages/db/src/workspace/schema.ts b/packages/db/src/workspace/schema.ts index f2b4837306e..7049b3cfa43 100644 --- a/packages/db/src/workspace/schema.ts +++ b/packages/db/src/workspace/schema.ts @@ -1,338 +1,9 @@ -import { mergeSchemas } from "@gnd/graphql-tools"; +import { makeExecutableSchema } from "@gnd/graphql-tools"; import { schema as rootSchema } from "@truffle/db/schema"; -export const schema = mergeSchemas({ - schemas: [ - // HACK github.com/apollographql/graphql-tools/issues/847 - // fix seems to require nesting mergeSchemas so extend works - mergeSchemas({ - schemas: [ - rootSchema, - ` - extend type Source { - id: ID! - } - extend type Bytecode { - id: ID! - } - extend type Contract { - id: ID! - } - extend type Compilation { - id: ID! - } - extend type ContractInstance { - id: ID! - } - extend type Network { - id: ID! - } - extend type NameRecord { - id: ID! - } - extend type Project { - id: ID! - } - extend interface Named { - id: ID! - } - type ProjectName { - project: Project! - name: String! - type: String! - nameRecord: NameRecord! - id: ID! - } - ` - ] - }), - - // define entrypoints - `type Query { - contractNames: [String]! - contract(id: ID!): Contract - compilation(id: ID!): Compilation - - bytecodes: [Bytecode] - compilations: [Compilation] - contracts: [Contract] - contractInstances: [ContractInstance] - networks: [Network] - sources: [Source] - nameRecords: [NameRecord] - projects: [Project] - - source(id: ID!): Source - bytecode(id: ID!): Bytecode - contractInstance(id: ID!): ContractInstance - network(id: ID!): Network - nameRecord(id:ID!): NameRecord - project(id: ID!): Project - } - - input SourceInput { - contents: String! - sourcePath: String - } - - input SourcesAddInput { - sources: [SourceInput!]! - } - - type SourcesAddPayload { - sources: [Source!] - } - - input BytecodeLinkReferenceInput { - offsets: [Int!]! - name: String - length: Int! - } - - input BytecodeInput { - bytes: Bytes! - linkReferences: [BytecodeLinkReferenceInput] - } - - input BytecodesAddInput { - bytecodes: [BytecodeInput!]! - } - - type BytecodesAddPayload { - bytecodes: [Bytecode!] - } - - input ContractSourceInput { - id: ID! - } - - input AbiInput { - json: String! - items: [String] - } - - input ContractCompilationInput { - id: ID! - } - - input ContractProcessedSourceInput { - index: FileIndex - } - - input ContractBytecodeInput { - id: ID! - } - - input ContractInput { - name: String! - abi: AbiInput - compilation: ContractCompilationInput - processedSource: ContractProcessedSourceInput - createBytecode: ContractBytecodeInput - callBytecode: ContractBytecodeInput - } - - input ContractsAddInput { - contracts: [ContractInput!]! - } - - type ContractsAddPayload { - contracts: [Contract]! - } - - input CompilerInput { - name: String! - version: String! - settings: Object - } - - input CompilationSourceInput { - id: ID! - } - - input CompilationProcessedSourceSourceInput { - id: ID! - } - - input CompilationProcessedSourceAstInput { - json: String! - } - - input CompilationProcessedSourceInput { - name: String - source: CompilationProcessedSourceSourceInput - ast: CompilationProcessedSourceAstInput - } - - input CompilationSourceMapInput { - json: String! - } - - input CompilationInput { - compiler: CompilerInput! - processedSources: [CompilationProcessedSourceInput!] - sources: [CompilationSourceInput!]! - sourceMaps: [CompilationSourceMapInput] - } - input CompilationsAddInput { - compilations: [CompilationInput!]! - } - type CompilationsAddPayload { - compilations: [Compilation!] - } - - input LinkReferenceInput { - bytecode: ID! - index: FileIndex - } - - input ContractInstanceLinkValueInput { - value: Address! - linkReference: LinkReferenceInput! - } - - input ContractInstanceCreationConstructorLinkValueInput { - value: Address! - linkReference: LinkReferenceInput! - } - - type ContractInstancesAddPayload { - contractInstances: [ContractInstance!]! - } - - input ContractInstanceAddressInput { - address: Address! - } - - input ContractInstanceNetworkInput { - id: ID! - } - - input ContractInstanceBytecodeInput { - id: ID! - } - - input ContractInstanceContractInput { - id: ID! - } - - input ContractInstanceCreationConstructorBytecodeIdInput { - id: ID! - } - - input ContractInstanceCreationConstructorBytecodeInput { - bytecode: ContractInstanceCreationConstructorBytecodeIdInput - linkValues: [ContractInstanceCreationConstructorLinkValueInput] - } - - input ContractInstanceCreationConstructorInput { - createBytecode: ContractInstanceCreationConstructorBytecodeInput! - } - - input ContractInstanceCreationInput { - transactionHash: TransactionHash! - constructor: ContractInstanceCreationConstructorInput! - } - - input ContractInstanceLinkedBytecodeInput { - bytecode: ContractInstanceBytecodeInput! - linkValues: [ContractInstanceLinkValueInput] - } - - input ContractInstanceInput { - address: Address! - network: ContractInstanceNetworkInput - creation: ContractInstanceCreationInput - contract: ContractInstanceContractInput - callBytecode: ContractInstanceLinkedBytecodeInput - } - - input ContractInstancesAddInput { - contractInstances: [ContractInstanceInput!]! - } - - type NetworksAddPayload { - networks: [Network!]! - } - - input HistoricBlockInput { - height: Int! - hash: String! - } - - input NetworkInput { - name: String! - networkId: NetworkId! - historicBlock: HistoricBlockInput! - } - - input NetworksAddInput { - networks: [NetworkInput!]! - } - - input ResourceInput { - id: ID! - } - - input PreviousNameRecordInput { - id: ID! - } - - input NameRecordInput { - name: String! - type: String! - resource: ResourceInput! - previous: PreviousNameRecordInput - } - - input NameRecordsAddInput { - nameRecords: [NameRecordInput!]! - } - - type NameRecordsAddPayload { - nameRecords: [NameRecord] - } - - input ProjectInput { - directory: String! - } - - input ProjectsAddInput { - projects: [ProjectInput!]! - } - - type ProjectsAddPayload { - projects: [Project!]! - } - - input ProjectNameInput { - project: ResourceInput! - name: String! - type: String! - nameRecord: ResourceInput! - } - - input ProjectNamesAssignInput { - projectNames: [ProjectNameInput!]! - } - - type ProjectNamesAssignPayload { - projectNames: [ProjectName!]! - } - - type Mutation { - sourcesAdd(input: SourcesAddInput!): SourcesAddPayload - bytecodesAdd(input: BytecodesAddInput!): BytecodesAddPayload - contractsAdd(input: ContractsAddInput!): ContractsAddPayload - compilationsAdd(input: CompilationsAddInput!): CompilationsAddPayload - contractInstancesAdd(input: ContractInstancesAddInput!): ContractInstancesAddPayload - networksAdd(input: NetworksAddInput!): NetworksAddPayload - nameRecordsAdd(input: NameRecordsAddInput!): NameRecordsAddPayload - projectsAdd(input:ProjectsAddInput!):ProjectsAddPayload - projectNamesAssign(input: ProjectNamesAssignInput): ProjectNamesAssignPayload - } ` - ], +export const schema = makeExecutableSchema({ + typeDefs: [rootSchema], resolvers: { Query: { diff --git a/packages/db/src/workspace/test/nameRecord.graphql.ts b/packages/db/src/workspace/test/nameRecord.graphql.ts index 54cdaef6693..7b2bfe7ad3d 100644 --- a/packages/db/src/workspace/test/nameRecord.graphql.ts +++ b/packages/db/src/workspace/test/nameRecord.graphql.ts @@ -31,26 +31,11 @@ export const GetAllNameRecords = gql` `; export const AddNameRecord = gql` - input ResourceInput { - id: ID! - } - - input PreviousNameRecordInput { - id: ID! - } - - input NameRecordInput { - name: String! - type: String! - resource: ResourceInput! - previous: PreviousNameRecordInput - } - mutation AddNameRecord( $name: String! $type: String! - $resource: ResourceInput! - $previous: PreviousNameRecordInput + $resource: ResourceReferenceInput! + $previous: ResourceReferenceInput ) { nameRecordsAdd( input: { diff --git a/packages/db/types/stub.d.ts b/packages/db/types/stub.d.ts index 9ae484ae39c..4160f1d148d 100644 --- a/packages/db/types/stub.d.ts +++ b/packages/db/types/stub.d.ts @@ -2,15 +2,15 @@ // graphql typescript definitions declare namespace DataModel { + type IResourceReferenceInput = any; type IBytecode = any; type IBytecodeInput = any; type IBytecodesAddInput = any; type IBytecodesAddPayload = any; type ICompilation = any; type ICompilationInput = any; - type ICompilationProcessedSourceInput = any; - type ICompilationSourceMapInput = any; - type ICompilationSourceInput = any; + type IProcessedSourceInput = any; + type ISourceMapInput = any; type ICompilationsAddInput = any; type ICompilationsAddPayload = any; type ICompiler = any; From b313309fa90efde561b365ce2307ff52a622cbc1 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Thu, 15 Oct 2020 22:23:25 -0400 Subject: [PATCH 34/63] Move relevant types into new sources definition ... and remove from schema.graphql --- packages/db/src/schema.graphql | 26 --------- packages/db/src/schema.ts | 18 +------ packages/db/src/workspace/definitions.ts | 67 +++++++++++++++++++++--- packages/db/src/workspace/index.ts | 8 --- packages/db/src/workspace/pouch/types.ts | 2 + packages/db/src/workspace/schema.ts | 39 +++++++++----- 6 files changed, 88 insertions(+), 72 deletions(-) diff --git a/packages/db/src/schema.graphql b/packages/db/src/schema.graphql index de6f39cf1b9..1a310149a1f 100644 --- a/packages/db/src/schema.graphql +++ b/packages/db/src/schema.graphql @@ -37,7 +37,6 @@ type Query { contractNames: [String]! # query individual resources - source(id: ID!): Source bytecode(id: ID!): Bytecode contract(id: ID!): Contract compilation(id: ID!): Compilation @@ -48,7 +47,6 @@ type Query { # query collections contractInstances: [ContractInstance] - sources: [Source] bytecodes: [Bytecode] contracts: [Contract] compilations: [Compilation] @@ -64,7 +62,6 @@ type Query { type Mutation { projectsAdd(input:ProjectsAddInput!):ProjectsAddPayload projectNamesAssign(input: ProjectNamesAssignInput): ProjectNamesAssignPayload - sourcesAdd(input: SourcesAddInput!): SourcesAddPayload bytecodesAdd(input: BytecodesAddInput!): BytecodesAddPayload contractsAdd(input: ContractsAddInput!): ContractsAddPayload compilationsAdd(input: CompilationsAddInput!): CompilationsAddPayload @@ -78,29 +75,6 @@ type Mutation { # Sources # -# Resource -type Source implements Resource { - id: ID! - sourcePath: String - contents: String! -} - -# Resource input -input SourceInput { - contents: String! - sourcePath: String -} - -# Mutation input -input SourcesAddInput { - sources: [SourceInput!]! -} - -# Mutation payload -type SourcesAddPayload { - sources: [Source!] -} - # # Bytecodes diff --git a/packages/db/src/schema.ts b/packages/db/src/schema.ts index a426b0d0b21..89e4b03869f 100644 --- a/packages/db/src/schema.ts +++ b/packages/db/src/schema.ts @@ -1,26 +1,10 @@ import * as fse from "fs-extra"; import path from "path"; -import { makeExecutableSchema } from "@gnd/graphql-tools"; - export function readSchema() { const schemaFile = path.join(__dirname, "schema.graphql"); const typeDefs = fse.readFileSync(schemaFile).toString(); - - return makeExecutableSchema({ - typeDefs, - resolvers: { - Named: { - __resolveType: obj => { - if (obj.networkId) { - return "Network"; - } else { - return "Contract"; - } - } - } - } - }); + return typeDefs; } export const schema = readSchema(); diff --git a/packages/db/src/workspace/definitions.ts b/packages/db/src/workspace/definitions.ts index b0d19ee8497..74a30f3b70b 100644 --- a/packages/db/src/workspace/definitions.ts +++ b/packages/db/src/workspace/definitions.ts @@ -1,7 +1,12 @@ +import gql from "graphql-tag"; import * as Meta from "@truffle/db/meta"; import * as Pouch from "./pouch"; export type Collections = { + sources: { + resource: DataModel.ISource; + input: DataModel.ISourceInput; + }; bytecodes: { resource: DataModel.IBytecode; input: DataModel.IBytecodeInput; @@ -28,10 +33,6 @@ export type Collections = { input: DataModel.INetworkInput; named: true; }; - sources: { - resource: DataModel.ISource; - input: DataModel.ISourceInput; - }; projects: { resource: DataModel.IProject; input: DataModel.IProjectInput; @@ -47,6 +48,11 @@ export type Definitions = Pouch.Definitions; export type CollectionName = Meta.CollectionName; +export type Definition = Pouch.Definition< + Collections, + N +>; + export type Resource = Meta.Resource< Collections, N @@ -60,7 +66,56 @@ export type NamedResource< N extends CollectionName = CollectionName > = Meta.NamedResource; +const sources: Definition<"sources"> = { + createIndexes: [], + idFields: ["contents", "sourcePath"], + typeDefs: { + resource: gql` + type Source implements Resource { + id: ID! + sourcePath: String + contents: String! + } + `, + input: gql` + input SourceInput { + contents: String! + sourcePath: String + } + `, + query: gql` + extend type Query { + source(id: ID!): Source + sources: [Source] + } + `, + mutation: gql` + extend type Mutation { + sourcesAdd(input: SourcesAddInput!): SourcesAddPayload + } + ` + }, + resolvers: { + Query: { + source: { + resolve: (_, { id }, { workspace }) => + workspace.databases.get("sources", id) + }, + sources: { + resolve: (_, {}, { workspace }) => workspace.databases.all("sources") + } + }, + Mutation: { + sourcesAdd: { + resolve: (_, { input }, { workspace }) => + workspace.databases.add("sources", input) + } + } + } +}; + export const definitions: Definitions = { + sources, contracts: { createIndexes: [ { @@ -69,10 +124,6 @@ export const definitions: Definitions = { ], idFields: ["name", "abi", "processedSource", "compilation"] }, - sources: { - createIndexes: [], - idFields: ["contents", "sourcePath"] - }, compilations: { createIndexes: [], idFields: ["compiler", "sources"] diff --git a/packages/db/src/workspace/index.ts b/packages/db/src/workspace/index.ts index a7081cbea67..0b01aa1945f 100644 --- a/packages/db/src/workspace/index.ts +++ b/packages/db/src/workspace/index.ts @@ -126,10 +126,6 @@ export class Workspace { return await this.databases.get("networks", id); } - async source({ id }: { id: string }): Promise { - return await this.databases.get("sources", id); - } - async project({ id }: { id: string }): Promise { return await this.databases.get("projects", id); } @@ -184,10 +180,6 @@ export class Workspace { return await this.databases.add("networks", input); } - async sourcesAdd({ input }): Promise<{ sources: DataModel.ISource[] }> { - return await this.databases.add("sources", input); - } - async projectsAdd({ input }): Promise<{ projects: DataModel.IProject[] }> { return await this.databases.add("projects", input); } diff --git a/packages/db/src/workspace/pouch/types.ts b/packages/db/src/workspace/pouch/types.ts index 3c680698eb4..45e43dd6941 100644 --- a/packages/db/src/workspace/pouch/types.ts +++ b/packages/db/src/workspace/pouch/types.ts @@ -6,6 +6,8 @@ export type Definitions = { [N in CollectionName]: { createIndexes: PouchDB.Find.CreateIndexOptions["index"][]; idFields: string[]; + typeDefs?: any; + resolvers?: any; }; }; diff --git a/packages/db/src/workspace/schema.ts b/packages/db/src/workspace/schema.ts index 7049b3cfa43..83dc45f63b2 100644 --- a/packages/db/src/workspace/schema.ts +++ b/packages/db/src/workspace/schema.ts @@ -1,12 +1,31 @@ +import gql from "graphql-tag"; import { makeExecutableSchema } from "@gnd/graphql-tools"; import { schema as rootSchema } from "@truffle/db/schema"; +import { definitions } from "./definitions"; export const schema = makeExecutableSchema({ - typeDefs: [rootSchema], + typeDefs: [ + rootSchema, + definitions.sources.typeDefs.resource, + definitions.sources.typeDefs.input, + definitions.sources.typeDefs.query, + definitions.sources.typeDefs.mutation, + gql` + type SourcesAddPayload { + sources: [Source!] + } + `, + gql` + input SourcesAddInput { + sources: [SourceInput!]! + } + ` + ], resolvers: { Query: { + ...definitions.sources.resolvers.Query, contractNames: { resolve: (_, {}, { workspace }) => workspace.contractNames() }, @@ -16,12 +35,6 @@ export const schema = makeExecutableSchema({ contract: { resolve: (_, { id }, { workspace }) => workspace.contract({ id }) }, - sources: { - resolve: (_, {}, { workspace }) => workspace.sources() - }, - source: { - resolve: (_, { id }, { workspace }) => workspace.source({ id }) - }, bytecodes: { resolve: (_, {}, { workspace }) => workspace.bytecodes() }, @@ -61,10 +74,7 @@ export const schema = makeExecutableSchema({ } }, Mutation: { - sourcesAdd: { - resolve: (_, { input }, { workspace }) => - workspace.sourcesAdd({ input }) - }, + ...definitions.sources.resolvers.Mutation, bytecodesAdd: { resolve: (_, { input }, { workspace }) => workspace.bytecodesAdd({ input }) @@ -180,7 +190,9 @@ export const schema = makeExecutableSchema({ Compilation: { sources: { resolve: ({ sources }, _, { workspace }) => - Promise.all(sources.map(source => workspace.source(source))) + Promise.all( + sources.map(({ id }) => workspace.databases.get("sources", id)) + ) }, processedSources: { resolve: ({ id, processedSources }, _, {}) => @@ -267,7 +279,8 @@ export const schema = makeExecutableSchema({ }, ProcessedSource: { source: { - resolve: ({ source }, _, { workspace }) => workspace.source(source) + resolve: ({ source: { id } }, _, { workspace }) => + workspace.databases.get("sources", id) }, contracts: { resolve: ({ compilation, index }, _, { workspace }) => From f8a81a902441b63d873e5b68319d4176b3571d65 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Fri, 16 Oct 2020 08:18:46 -0400 Subject: [PATCH 35/63] Begin generating GraphQL from definitions - Split src/workspace/definitions into module directory - Define helper to generate typeDefs for a given definition - Define helper to generate resolvers for a given definition - Begin with sources definition --- packages/db/package.json | 2 + packages/db/src/workspace/definitions.ts | 165 ------------------ .../db/src/workspace/definitions/index.ts | 54 ++++++ .../db/src/workspace/definitions/sources.ts | 20 +++ .../db/src/workspace/definitions/types.ts | 66 +++++++ packages/db/src/workspace/pouch/types.ts | 101 ++++++++++- packages/db/src/workspace/schema.ts | 26 +-- yarn.lock | 10 ++ 8 files changed, 257 insertions(+), 187 deletions(-) delete mode 100644 packages/db/src/workspace/definitions.ts create mode 100644 packages/db/src/workspace/definitions/index.ts create mode 100644 packages/db/src/workspace/definitions/sources.ts create mode 100644 packages/db/src/workspace/definitions/types.ts diff --git a/packages/db/package.json b/packages/db/package.json index b1109472b79..0fe30f9eb3f 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -41,6 +41,7 @@ "@types/graphql": "^14.0.4", "@types/jest": "^23.3.11", "@types/node": "^10.12.18", + "@types/pluralize": "^0.0.29", "@types/pouchdb": "^6.3.2", "@types/pouchdb-adapter-leveldb": "^6.1.3", "@types/web3": "1.0.20", @@ -67,6 +68,7 @@ "leveldown": "^5.2.0", "module-alias": "^2.1.0", "pascal-case": "^2.0.1", + "pluralize": "^8.0.0", "pouchdb": "7.1.1", "pouchdb-adapter-memory": "^7.1.1", "pouchdb-adapter-node-websql": "^7.0.0", diff --git a/packages/db/src/workspace/definitions.ts b/packages/db/src/workspace/definitions.ts deleted file mode 100644 index 74a30f3b70b..00000000000 --- a/packages/db/src/workspace/definitions.ts +++ /dev/null @@ -1,165 +0,0 @@ -import gql from "graphql-tag"; -import * as Meta from "@truffle/db/meta"; -import * as Pouch from "./pouch"; - -export type Collections = { - sources: { - resource: DataModel.ISource; - input: DataModel.ISourceInput; - }; - bytecodes: { - resource: DataModel.IBytecode; - input: DataModel.IBytecodeInput; - }; - compilations: { - resource: DataModel.ICompilation; - input: DataModel.ICompilationInput; - }; - contractInstances: { - resource: DataModel.IContractInstance; - input: DataModel.IContractInstanceInput; - }; - contracts: { - resource: DataModel.IContract; - input: DataModel.IContractInput; - named: true; - }; - nameRecords: { - resource: DataModel.INameRecord; - input: DataModel.INameRecordInput; - }; - networks: { - resource: DataModel.INetwork; - input: DataModel.INetworkInput; - named: true; - }; - projects: { - resource: DataModel.IProject; - input: DataModel.IProjectInput; - }; - projectNames: { - resource: DataModel.IProjectName; - input: DataModel.IProjectNameInput; - mutable: true; - }; -}; - -export type Definitions = Pouch.Definitions; - -export type CollectionName = Meta.CollectionName; - -export type Definition = Pouch.Definition< - Collections, - N ->; - -export type Resource = Meta.Resource< - Collections, - N ->; - -export type MutableResource< - N extends CollectionName = CollectionName -> = Meta.MutableResource; - -export type NamedResource< - N extends CollectionName = CollectionName -> = Meta.NamedResource; - -const sources: Definition<"sources"> = { - createIndexes: [], - idFields: ["contents", "sourcePath"], - typeDefs: { - resource: gql` - type Source implements Resource { - id: ID! - sourcePath: String - contents: String! - } - `, - input: gql` - input SourceInput { - contents: String! - sourcePath: String - } - `, - query: gql` - extend type Query { - source(id: ID!): Source - sources: [Source] - } - `, - mutation: gql` - extend type Mutation { - sourcesAdd(input: SourcesAddInput!): SourcesAddPayload - } - ` - }, - resolvers: { - Query: { - source: { - resolve: (_, { id }, { workspace }) => - workspace.databases.get("sources", id) - }, - sources: { - resolve: (_, {}, { workspace }) => workspace.databases.all("sources") - } - }, - Mutation: { - sourcesAdd: { - resolve: (_, { input }, { workspace }) => - workspace.databases.add("sources", input) - } - } - } -}; - -export const definitions: Definitions = { - sources, - contracts: { - createIndexes: [ - { - fields: ["compilation.id", "processedSource.index"] - } - ], - idFields: ["name", "abi", "processedSource", "compilation"] - }, - compilations: { - createIndexes: [], - idFields: ["compiler", "sources"] - }, - bytecodes: { - createIndexes: [], - idFields: ["bytes", "linkReferences"] - }, - networks: { - createIndexes: [], - idFields: ["networkId", "historicBlock"] - }, - contractInstances: { - createIndexes: [], - idFields: ["address", "network"] - }, - nameRecords: { - createIndexes: [], - idFields: ["name", "type", "resource", "previous"] - }, - projects: { - createIndexes: [], - idFields: ["directory"] - }, - projectNames: { - createIndexes: [ - { - fields: ["project.id"] - }, - { - fields: ["project.id", "type"] - }, - { - fields: ["project.id", "name", "type"] - } - ], - idFields: ["project", "name", "type"] - } -}; diff --git a/packages/db/src/workspace/definitions/index.ts b/packages/db/src/workspace/definitions/index.ts new file mode 100644 index 00000000000..f9e7f9c3ea5 --- /dev/null +++ b/packages/db/src/workspace/definitions/index.ts @@ -0,0 +1,54 @@ +import { Definitions } from "./types"; +export * from "./types"; + +import { sources } from "./sources"; + +export const definitions: Definitions = { + sources, + contracts: { + createIndexes: [ + { + fields: ["compilation.id", "processedSource.index"] + } + ], + idFields: ["name", "abi", "processedSource", "compilation"] + }, + compilations: { + createIndexes: [], + idFields: ["compiler", "sources"] + }, + bytecodes: { + createIndexes: [], + idFields: ["bytes", "linkReferences"] + }, + networks: { + createIndexes: [], + idFields: ["networkId", "historicBlock"] + }, + contractInstances: { + createIndexes: [], + idFields: ["address", "network"] + }, + nameRecords: { + createIndexes: [], + idFields: ["name", "type", "resource", "previous"] + }, + projects: { + createIndexes: [], + idFields: ["directory"] + }, + projectNames: { + createIndexes: [ + { + fields: ["project.id"] + }, + { + fields: ["project.id", "type"] + }, + { + fields: ["project.id", "name", "type"] + } + ], + idFields: ["project", "name", "type"] + } +}; diff --git a/packages/db/src/workspace/definitions/sources.ts b/packages/db/src/workspace/definitions/sources.ts new file mode 100644 index 00000000000..f4e5468b55c --- /dev/null +++ b/packages/db/src/workspace/definitions/sources.ts @@ -0,0 +1,20 @@ +import gql from "graphql-tag"; + +import { Definition } from "./types"; + +export const sources: Definition<"sources"> = { + createIndexes: [], + idFields: ["contents", "sourcePath"], + typeDefs: gql` + type Source implements Resource { + id: ID! + sourcePath: String + contents: String! + } + + input SourceInput { + contents: String! + sourcePath: String + } + ` +}; diff --git a/packages/db/src/workspace/definitions/types.ts b/packages/db/src/workspace/definitions/types.ts new file mode 100644 index 00000000000..da34324fe48 --- /dev/null +++ b/packages/db/src/workspace/definitions/types.ts @@ -0,0 +1,66 @@ +import * as Meta from "@truffle/db/meta"; +import * as Pouch from "../pouch"; + +export type Collections = { + sources: { + resource: DataModel.ISource; + input: DataModel.ISourceInput; + }; + bytecodes: { + resource: DataModel.IBytecode; + input: DataModel.IBytecodeInput; + }; + compilations: { + resource: DataModel.ICompilation; + input: DataModel.ICompilationInput; + }; + contractInstances: { + resource: DataModel.IContractInstance; + input: DataModel.IContractInstanceInput; + }; + contracts: { + resource: DataModel.IContract; + input: DataModel.IContractInput; + named: true; + }; + nameRecords: { + resource: DataModel.INameRecord; + input: DataModel.INameRecordInput; + }; + networks: { + resource: DataModel.INetwork; + input: DataModel.INetworkInput; + named: true; + }; + projects: { + resource: DataModel.IProject; + input: DataModel.IProjectInput; + }; + projectNames: { + resource: DataModel.IProjectName; + input: DataModel.IProjectNameInput; + mutable: true; + }; +}; + +export type Definitions = Pouch.Definitions; + +export type CollectionName = Meta.CollectionName; + +export type Definition = Pouch.Definition< + Collections, + N +>; + +export type Resource = Meta.Resource< + Collections, + N +>; + +export type MutableResource< + N extends CollectionName = CollectionName +> = Meta.MutableResource; + +export type NamedResource< + N extends CollectionName = CollectionName +> = Meta.NamedResource; diff --git a/packages/db/src/workspace/pouch/types.ts b/packages/db/src/workspace/pouch/types.ts index 45e43dd6941..645f37d66ec 100644 --- a/packages/db/src/workspace/pouch/types.ts +++ b/packages/db/src/workspace/pouch/types.ts @@ -1,4 +1,8 @@ +import gql from "graphql-tag"; +import * as graphql from "graphql"; import PouchDB from "pouchdb"; +import pascalCase from "pascal-case"; +import { singular } from "pluralize"; import { Collections, CollectionName } from "@truffle/db/meta"; @@ -6,8 +10,8 @@ export type Definitions = { [N in CollectionName]: { createIndexes: PouchDB.Find.CreateIndexOptions["index"][]; idFields: string[]; - typeDefs?: any; - resolvers?: any; + mutable?: boolean; + typeDefs?: graphql.DocumentNode; }; }; @@ -19,3 +23,96 @@ export type Definition< C extends Collections, N extends CollectionName > = Definitions[N]; + +export const names = >( + collectionName: N, + definition: Definition +) => { + const resources = collectionName; + const Resources = pascalCase(resources); + + const resource = singular(collectionName); + const Resource = pascalCase(resource); + + const resourcesMutate = definition.mutable + ? `${resources}Assign` + : `${resources}Add`; + + const ResourcesMutate = pascalCase(resourcesMutate); + + return { + resource, + resources, + Resource, + Resources, + resourcesMutate, + ResourcesMutate + }; +}; + +export const typeDefs = >( + collectionName: N, + definition: Definition +): graphql.DocumentNode => { + const { typeDefs } = definition; + + const { + resource, + resources, + Resource, + resourcesMutate, + ResourcesMutate + } = names(collectionName, definition); + + return gql` + ${typeDefs} + + extend type Query { + ${resources}: [${Resource}] + ${resource}(id: ID!): ${Resource} + } + + input ${ResourcesMutate}Input { + ${resources}: [${Resource}Input!]! + } + + type ${ResourcesMutate}Payload { + ${resources}: [${Resource}!] + } + + extend type Mutation { + ${resourcesMutate}( + input: ${ResourcesMutate}Input! + ): ${ResourcesMutate}Payload + } + `; +}; + +export const resolvers = >( + collectionName: N, + definition: Definition +) => { + const { resource, resources, resourcesMutate } = names( + collectionName, + definition + ); + + return { + Query: { + [resource]: { + resolve: (_, { id }, { workspace }) => + workspace.databases.get(resources, id) + }, + [resources]: { + resolve: (_, {}, { workspace }) => workspace.databases.all(resources) + } + }, + Mutation: { + [resourcesMutate]: definition.mutable + ? (_, { input }, { workspace }) => + workspace.databases.update(resources, input) + : (_, { input }, { workspace }) => + workspace.databases.add(resources, input) + } + }; +}; diff --git a/packages/db/src/workspace/schema.ts b/packages/db/src/workspace/schema.ts index 83dc45f63b2..855e4c68779 100644 --- a/packages/db/src/workspace/schema.ts +++ b/packages/db/src/workspace/schema.ts @@ -1,31 +1,17 @@ -import gql from "graphql-tag"; import { makeExecutableSchema } from "@gnd/graphql-tools"; import { schema as rootSchema } from "@truffle/db/schema"; import { definitions } from "./definitions"; +import { typeDefs, resolvers } from "./pouch"; + +const sources = resolvers("sources", definitions.sources); export const schema = makeExecutableSchema({ - typeDefs: [ - rootSchema, - definitions.sources.typeDefs.resource, - definitions.sources.typeDefs.input, - definitions.sources.typeDefs.query, - definitions.sources.typeDefs.mutation, - gql` - type SourcesAddPayload { - sources: [Source!] - } - `, - gql` - input SourcesAddInput { - sources: [SourceInput!]! - } - ` - ], + typeDefs: [rootSchema, typeDefs("sources", definitions.sources)], resolvers: { Query: { - ...definitions.sources.resolvers.Query, + ...sources.Query, contractNames: { resolve: (_, {}, { workspace }) => workspace.contractNames() }, @@ -74,7 +60,7 @@ export const schema = makeExecutableSchema({ } }, Mutation: { - ...definitions.sources.resolvers.Mutation, + ...sources.Mutation, bytecodesAdd: { resolve: (_, { input }, { workspace }) => workspace.bytecodesAdd({ input }) diff --git a/yarn.lock b/yarn.lock index c5b27b5549d..cba9a7f56d8 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2443,6 +2443,11 @@ dependencies: "@types/node" "*" +"@types/pluralize@^0.0.29": + version "0.0.29" + resolved "https://registry.yarnpkg.com/@types/pluralize/-/pluralize-0.0.29.tgz#6ffa33ed1fc8813c469b859681d09707eb40d03c" + integrity sha512-BYOID+l2Aco2nBik+iYS4SZX0Lf20KPILP5RGmM1IgzdwNdTs0eebiFriOPcej1sX9mLnSoiNte5zcFxssgpGA== + "@types/pouchdb-adapter-fruitdown@*": version "6.1.2" resolved "https://registry.yarnpkg.com/@types/pouchdb-adapter-fruitdown/-/pouchdb-adapter-fruitdown-6.1.2.tgz#9cd8b8d40f8a50ab1f4ad60fa1646d7cbba4213f" @@ -16116,6 +16121,11 @@ pluralize@^7.0.0: resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== +pluralize@^8.0.0: + version "8.0.0" + resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" + integrity sha512-Nc3IT5yHzflTfbjgqWcCPpo7DaKy4FnpB0l/zCAW0Tc7jxAiuqSxHasntB3D7887LSrA93kDJ9IXovxJYxyLCA== + posix-character-classes@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" From b0d8f8ce1f60e88054fe0e661350e08e30c6aa86 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Fri, 16 Oct 2020 09:27:42 -0400 Subject: [PATCH 36/63] Adapt bytecodes to new format - Define bytecodes to include typeDefs - Remove those typeDefs from schema.graphql - Use typeDefs and resolvers helpers in creating workspace schema - Fix missing { id } wrapper for some data object somewhere - Begin favoring `workspace.databases.add()`, etc. instead of (e.g.) `workspace.bytecodesAdd()` --- .../contractInstances/add.graphql.ts | 34 +------ .../db/src/loaders/schema/artifactsLoader.ts | 4 +- packages/db/src/schema.graphql | 90 +------------------ .../db/src/workspace/definitions/bytecodes.ts | 70 +++++++++++++++ .../db/src/workspace/definitions/index.ts | 6 +- packages/db/src/workspace/schema.ts | 28 +++--- .../db/src/workspace/test/persistence.spec.ts | 32 +++---- 7 files changed, 106 insertions(+), 158 deletions(-) create mode 100644 packages/db/src/workspace/definitions/bytecodes.ts diff --git a/packages/db/src/loaders/resources/contractInstances/add.graphql.ts b/packages/db/src/loaders/resources/contractInstances/add.graphql.ts index 512db2d649e..9623a7d54fa 100644 --- a/packages/db/src/loaders/resources/contractInstances/add.graphql.ts +++ b/packages/db/src/loaders/resources/contractInstances/add.graphql.ts @@ -1,36 +1,8 @@ import gql from "graphql-tag"; export const AddContractInstances = gql` - input ContractInstanceNetworkInput { - id: ID! - } - - input ContractInstanceContractInput { - id: ID! - } - - input ContractInstanceCreationConstructorBytecodeInput { - id: ID! - } - - input LinkReferenceInput { - offsets: [Int] - name: String - length: Int - } - - input LinkValueLinkReferenceInput { - bytecode: ID! - index: FileIndex - } - - input LinkValueInput { - value: Address! - linkReference: LinkValueLinkReferenceInput! - } - input ContractInstanceCreationConstructorLinkedBytecodeInput { - bytecode: ContractInstanceCreationConstructorBytecodeInput! + bytecode: ResourceReferenceInput! linkValues: [LinkValueInput] } @@ -54,9 +26,9 @@ export const AddContractInstances = gql` input ContractInstanceInput { address: Address! - network: ContractInstanceNetworkInput! + network: ResourceReferenceInput! creation: ContractInstanceCreationInput - contract: ContractInstanceContractInput + contract: ResourceReferenceInput callBytecode: ContractInstanceLinkedCallBytecodeInput } diff --git a/packages/db/src/loaders/schema/artifactsLoader.ts b/packages/db/src/loaders/schema/artifactsLoader.ts index 2d24b113a4d..6d367808611 100644 --- a/packages/db/src/loaders/schema/artifactsLoader.ts +++ b/packages/db/src/loaders/schema/artifactsLoader.ts @@ -24,7 +24,7 @@ type NetworkLinkObject = { }; type LinkValueLinkReferenceObject = { - bytecode: string; + bytecode: { id: string }; index: number; }; @@ -270,7 +270,7 @@ export class ArtifactsLoader { let linkValue = { value: link[1], linkReference: { - bytecode: bytecode.id, + bytecode: { id: bytecode.id }, index: linkReferenceIndexByName } }; diff --git a/packages/db/src/schema.graphql b/packages/db/src/schema.graphql index 1a310149a1f..b79f64f7d04 100644 --- a/packages/db/src/schema.graphql +++ b/packages/db/src/schema.graphql @@ -2,9 +2,7 @@ scalar Address scalar NetworkId scalar TransactionHash scalar Value -scalar Bytes scalar Object -scalar ByteOffset scalar Index # @@ -37,7 +35,6 @@ type Query { contractNames: [String]! # query individual resources - bytecode(id: ID!): Bytecode contract(id: ID!): Contract compilation(id: ID!): Compilation contractInstance(id: ID!): ContractInstance @@ -47,7 +44,6 @@ type Query { # query collections contractInstances: [ContractInstance] - bytecodes: [Bytecode] contracts: [Contract] compilations: [Compilation] networks: [Network] @@ -62,7 +58,6 @@ type Query { type Mutation { projectsAdd(input:ProjectsAddInput!):ProjectsAddPayload projectNamesAssign(input: ProjectNamesAssignInput): ProjectNamesAssignPayload - bytecodesAdd(input: BytecodesAddInput!): BytecodesAddPayload contractsAdd(input: ContractsAddInput!): ContractsAddPayload compilationsAdd(input: CompilationsAddInput!): CompilationsAddPayload contractInstancesAdd(input: ContractInstancesAddInput!): ContractInstancesAddPayload @@ -71,85 +66,6 @@ type Mutation { } -# -# Sources -# - - -# -# Bytecodes -# - -# Resource -type Bytecode implements Resource { - id: ID! - bytes: Bytes! - linkReferences: [LinkReference] - instructions: [Instruction!], -} - -type LinkReference { - offsets: [ByteOffset!]! - name: String - length: Int! -} - -type Instruction { - opcode: String!, - programCounter: Int!, - meta: InstructionMeta, - sourceRange: SourceRange, - pushData: Bytes -} - -type InstructionMeta { - cost: Int!, - dynamic: Boolean, - - # stack operations - pops: Int, - pushes: Int -} - -type SourceRange { - source: Source! - start: ByteOffset! - length: Int! - meta: SourceRangeMeta! -} - -type SourceRangeMeta { - jump: JumpDirection -} - -enum JumpDirection { - IN - OUT -} - -# Resource input -input BytecodeInput { - bytes: Bytes! - linkReferences: [BytecodeLinkReferenceInput] -} - -input BytecodeLinkReferenceInput { - offsets: [Int!]! - name: String - length: Int! -} - -# Mutation input -input BytecodesAddInput { - bytecodes: [BytecodeInput!]! -} - -# Mutation payload -type BytecodesAddPayload { - bytecodes: [Bytecode!] -} - - # # Compilations # @@ -326,11 +242,11 @@ input LinkedBytecodeInput { input LinkValueInput { value: Address! - linkReference: LinkReferenceInput! + linkReference: LinkValueLinkReferenceInput! } -input LinkReferenceInput { - bytecode: ID! +input LinkValueLinkReferenceInput { + bytecode: ResourceReferenceInput! index: Index } diff --git a/packages/db/src/workspace/definitions/bytecodes.ts b/packages/db/src/workspace/definitions/bytecodes.ts new file mode 100644 index 00000000000..3c39cc8b1a2 --- /dev/null +++ b/packages/db/src/workspace/definitions/bytecodes.ts @@ -0,0 +1,70 @@ +import gql from "graphql-tag"; + +import { Definition } from "./types"; + +export const bytecodes: Definition<"bytecodes"> = { + createIndexes: [], + idFields: ["bytes", "linkReferences"], + typeDefs: gql` + type Bytecode implements Resource { + id: ID! + bytes: Bytes! + linkReferences: [LinkReference] + instructions: [Instruction!] + } + + scalar Bytes + + type LinkReference { + offsets: [ByteOffset!]! + name: String + length: Int! + } + + scalar ByteOffset + + type Instruction { + opcode: String! + programCounter: Int! + meta: InstructionMeta + sourceRange: SourceRange + pushData: Bytes + } + + type InstructionMeta { + cost: Int! + dynamic: Boolean + + # stack operations + pops: Int + pushes: Int + } + + type SourceRange { + source: Source! + start: ByteOffset! + length: Int! + meta: SourceRangeMeta! + } + + type SourceRangeMeta { + jump: JumpDirection + } + + enum JumpDirection { + IN + OUT + } + + input BytecodeInput { + bytes: Bytes! + linkReferences: [LinkReferenceInput] + } + + input LinkReferenceInput { + offsets: [Int!]! + name: String + length: Int! + } + ` +}; diff --git a/packages/db/src/workspace/definitions/index.ts b/packages/db/src/workspace/definitions/index.ts index f9e7f9c3ea5..3ca7304289d 100644 --- a/packages/db/src/workspace/definitions/index.ts +++ b/packages/db/src/workspace/definitions/index.ts @@ -2,9 +2,11 @@ import { Definitions } from "./types"; export * from "./types"; import { sources } from "./sources"; +import { bytecodes } from "./bytecodes"; export const definitions: Definitions = { sources, + bytecodes, contracts: { createIndexes: [ { @@ -17,10 +19,6 @@ export const definitions: Definitions = { createIndexes: [], idFields: ["compiler", "sources"] }, - bytecodes: { - createIndexes: [], - idFields: ["bytes", "linkReferences"] - }, networks: { createIndexes: [], idFields: ["networkId", "historicBlock"] diff --git a/packages/db/src/workspace/schema.ts b/packages/db/src/workspace/schema.ts index 855e4c68779..6a5da315791 100644 --- a/packages/db/src/workspace/schema.ts +++ b/packages/db/src/workspace/schema.ts @@ -5,13 +5,19 @@ import { definitions } from "./definitions"; import { typeDefs, resolvers } from "./pouch"; const sources = resolvers("sources", definitions.sources); +const bytecodes = resolvers("bytecodes", definitions.bytecodes); export const schema = makeExecutableSchema({ - typeDefs: [rootSchema, typeDefs("sources", definitions.sources)], + typeDefs: [ + rootSchema, + typeDefs("sources", definitions.sources), + typeDefs("bytecodes", definitions.bytecodes) + ], resolvers: { Query: { ...sources.Query, + ...bytecodes.Query, contractNames: { resolve: (_, {}, { workspace }) => workspace.contractNames() }, @@ -21,12 +27,6 @@ export const schema = makeExecutableSchema({ contract: { resolve: (_, { id }, { workspace }) => workspace.contract({ id }) }, - bytecodes: { - resolve: (_, {}, { workspace }) => workspace.bytecodes() - }, - bytecode: { - resolve: (_, { id }, { workspace }) => workspace.bytecode({ id }) - }, compilations: { resolve: (_, {}, { workspace }) => workspace.compilations() }, @@ -61,10 +61,7 @@ export const schema = makeExecutableSchema({ }, Mutation: { ...sources.Mutation, - bytecodesAdd: { - resolve: (_, { input }, { workspace }) => - workspace.bytecodesAdd({ input }) - }, + ...bytecodes.Mutation, contractsAdd: { resolve: (_, { input }, { workspace }) => workspace.contractsAdd({ input }) @@ -191,8 +188,9 @@ export const schema = makeExecutableSchema({ }, Contract: { compilation: { - resolve: ({ compilation }, _, { workspace }) => - workspace.compilation(compilation) + resolve: async ({ compilation }, _, { workspace }) => { + return await workspace.compilation(compilation); + } }, processedSource: { fragment: `... on Contract { compilation { id } }`, @@ -203,8 +201,8 @@ export const schema = makeExecutableSchema({ } }, createBytecode: { - resolve: ({ createBytecode }, _, { workspace }) => - workspace.bytecode(createBytecode) + resolve: ({ createBytecode: { id } }, _, { workspace }) => + workspace.databases.get("bytecodes", id) }, callBytecode: { resolve: ({ callBytecode }, _, { workspace }) => diff --git a/packages/db/src/workspace/test/persistence.spec.ts b/packages/db/src/workspace/test/persistence.spec.ts index d04f4c8ce7f..25ab9333506 100644 --- a/packages/db/src/workspace/test/persistence.spec.ts +++ b/packages/db/src/workspace/test/persistence.spec.ts @@ -1,6 +1,6 @@ import path from "path"; import { Workspace } from ".."; -import { generateId, Migrations } from "./utils"; +import { generateId } from "./utils"; import tmp from "tmp"; const tempDir = tmp.dirSync({ unsafeCleanup: true }); @@ -34,20 +34,18 @@ describe("Memory-based Workspace", () => { it("does not persist data", async () => { // create first workspace and add to it const workspace1 = new Workspace({ adapter: memoryAdapter }); - await workspace1.bytecodesAdd({ - input: { - bytecodes: [bytecode] - } + await workspace1.databases.add("bytecodes", { + bytecodes: [bytecode] }); // make sure we can get data out of that workspace - expect(await workspace1.bytecode({ id })).toBeDefined(); + expect(await workspace1.databases.get("bytecodes", id)).toBeDefined(); // create a second workspace and don't add anything const workspace2 = new Workspace({ adapter: memoryAdapter }); // and don't get data out! - expect(await workspace2.bytecode({ id })).toBeNull(); + expect(await workspace2.databases.get("bytecodes", id)).toBeNull(); }); }); @@ -55,20 +53,18 @@ describe("FS-based Workspace", () => { it("does persist data", async () => { // create first workspace and add to it const workspace1 = new Workspace({ adapter: fsAdapter }); - await workspace1.bytecodesAdd({ - input: { - bytecodes: [bytecode] - } + await workspace1.databases.add("bytecodes", { + bytecodes: [bytecode] }); // make sure we can get data out of that workspace - expect(await workspace1.bytecode({ id })).toBeDefined(); + expect(await workspace1.databases.get("bytecodes", id)).toBeDefined(); // create a second workspace and don't add anything const workspace2 = new Workspace({ adapter: fsAdapter }); // but DO get data out - expect(await workspace2.bytecode({ id })).toBeDefined(); + expect(await workspace2.databases.get("bytecodes", id)).toBeDefined(); }); }); @@ -76,19 +72,17 @@ describe("SQLite-based Workspace", () => { it("does persist data", async () => { // create first workspace and add to it const workspace1 = new Workspace({ adapter: sqliteAdapter }); - await workspace1.bytecodesAdd({ - input: { - bytecodes: [bytecode] - } + await workspace1.databases.add("bytecodes", { + bytecodes: [bytecode] }); // make sure we can get data out of that workspace - expect(await workspace1.bytecode({ id })).toBeDefined(); + expect(await workspace1.databases.get("bytecodes", id)).toBeDefined(); // create a second workspace and don't add anything const workspace2 = new Workspace({ adapter: sqliteAdapter }); // but DO get data out - expect(await workspace2.bytecode({ id })).toBeDefined(); + expect(await workspace2.databases.get("bytecodes", id)).toBeDefined(); }); }); From c737a8e6923a60cfe62179e49d811fc3a8dc0219 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Fri, 16 Oct 2020 09:31:48 -0400 Subject: [PATCH 37/63] Adapt compilations to new format - Define compilations to include typeDefs - Remove those typeDefs from schema.graphql - Use typeDefs and resolvers helpers --- packages/db/src/schema.graphql | 76 ------------------- .../src/workspace/definitions/compilations.ts | 66 ++++++++++++++++ .../db/src/workspace/definitions/index.ts | 6 +- packages/db/src/workspace/schema.ts | 16 ++-- 4 files changed, 73 insertions(+), 91 deletions(-) create mode 100644 packages/db/src/workspace/definitions/compilations.ts diff --git a/packages/db/src/schema.graphql b/packages/db/src/schema.graphql index b79f64f7d04..784471aaeaa 100644 --- a/packages/db/src/schema.graphql +++ b/packages/db/src/schema.graphql @@ -2,7 +2,6 @@ scalar Address scalar NetworkId scalar TransactionHash scalar Value -scalar Object scalar Index # @@ -36,7 +35,6 @@ type Query { # query individual resources contract(id: ID!): Contract - compilation(id: ID!): Compilation contractInstance(id: ID!): ContractInstance network(id: ID!): Network nameRecord(id:ID!): NameRecord @@ -45,7 +43,6 @@ type Query { # query collections contractInstances: [ContractInstance] contracts: [Contract] - compilations: [Compilation] networks: [Network] nameRecords: [NameRecord] projects: [Project] @@ -59,85 +56,12 @@ type Mutation { projectsAdd(input:ProjectsAddInput!):ProjectsAddPayload projectNamesAssign(input: ProjectNamesAssignInput): ProjectNamesAssignPayload contractsAdd(input: ContractsAddInput!): ContractsAddPayload - compilationsAdd(input: CompilationsAddInput!): CompilationsAddPayload contractInstancesAdd(input: ContractInstancesAddInput!): ContractInstancesAddPayload networksAdd(input: NetworksAddInput!): NetworksAddPayload nameRecordsAdd(input: NameRecordsAddInput!): NameRecordsAddPayload } -# -# Compilations -# - -# Resource -type Compilation implements Resource { - id: ID! - compiler: Compiler! - sources: [Source]! - processedSources: [ProcessedSource]! - sourceMaps: [SourceMap] -} - -type Compiler { - name: String! - version: String! - settings: Object -} - -type ProcessedSource { - source: Source! - contracts: [Contract]! - ast: AST -} - -type AST { - json: String! -} - -type SourceMap { - json: String! -} - -# Resource input -input CompilationInput { - compiler: CompilerInput! - processedSources: [ProcessedSourceInput!] - sources: [ResourceReferenceInput!]! - sourceMaps: [SourceMapInput] -} - -input CompilerInput { - name: String! - version: String! - settings: Object -} - -input ProcessedSourceInput { - name: String - source: ResourceReferenceInput - ast: ASTInput -} - -input ASTInput { - json: String! -} - -input SourceMapInput { - json: String! -} - -# Mutation input -input CompilationsAddInput { - compilations: [CompilationInput!]! -} - -# Mutation payload -type CompilationsAddPayload { - compilations: [Compilation!] -} - - # # Contracts # diff --git a/packages/db/src/workspace/definitions/compilations.ts b/packages/db/src/workspace/definitions/compilations.ts new file mode 100644 index 00000000000..94a0a26294e --- /dev/null +++ b/packages/db/src/workspace/definitions/compilations.ts @@ -0,0 +1,66 @@ +import gql from "graphql-tag"; + +import { Definition } from "./types"; + +export const compilations: Definition<"compilations"> = { + createIndexes: [], + idFields: ["compiler", "sources"], + typeDefs: gql` + type Compilation implements Resource { + id: ID! + compiler: Compiler! + sources: [Source]! + processedSources: [ProcessedSource]! + sourceMaps: [SourceMap] + } + + type Compiler { + name: String! + version: String! + settings: CompilerSettings + } + + scalar CompilerSettings + + type ProcessedSource { + source: Source! + contracts: [Contract]! + ast: AST + } + + type AST { + json: String! + } + + type SourceMap { + json: String! + } + + input CompilationInput { + compiler: CompilerInput! + processedSources: [ProcessedSourceInput!] + sources: [ResourceReferenceInput!]! + sourceMaps: [SourceMapInput] + } + + input CompilerInput { + name: String! + version: String! + settings: CompilerSettings + } + + input ProcessedSourceInput { + name: String + source: ResourceReferenceInput + ast: ASTInput + } + + input ASTInput { + json: String! + } + + input SourceMapInput { + json: String! + } + ` +}; diff --git a/packages/db/src/workspace/definitions/index.ts b/packages/db/src/workspace/definitions/index.ts index 3ca7304289d..fdcf74690a0 100644 --- a/packages/db/src/workspace/definitions/index.ts +++ b/packages/db/src/workspace/definitions/index.ts @@ -3,6 +3,7 @@ export * from "./types"; import { sources } from "./sources"; import { bytecodes } from "./bytecodes"; +import { compilations } from "./compilations"; export const definitions: Definitions = { sources, @@ -15,10 +16,7 @@ export const definitions: Definitions = { ], idFields: ["name", "abi", "processedSource", "compilation"] }, - compilations: { - createIndexes: [], - idFields: ["compiler", "sources"] - }, + compilations, networks: { createIndexes: [], idFields: ["networkId", "historicBlock"] diff --git a/packages/db/src/workspace/schema.ts b/packages/db/src/workspace/schema.ts index 6a5da315791..c55ee43ffcf 100644 --- a/packages/db/src/workspace/schema.ts +++ b/packages/db/src/workspace/schema.ts @@ -6,18 +6,21 @@ import { typeDefs, resolvers } from "./pouch"; const sources = resolvers("sources", definitions.sources); const bytecodes = resolvers("bytecodes", definitions.bytecodes); +const compilations = resolvers("compilations", definitions.compilations); export const schema = makeExecutableSchema({ typeDefs: [ rootSchema, typeDefs("sources", definitions.sources), - typeDefs("bytecodes", definitions.bytecodes) + typeDefs("bytecodes", definitions.bytecodes), + typeDefs("compilations", definitions.compilations) ], resolvers: { Query: { ...sources.Query, ...bytecodes.Query, + ...compilations.Query, contractNames: { resolve: (_, {}, { workspace }) => workspace.contractNames() }, @@ -27,12 +30,6 @@ export const schema = makeExecutableSchema({ contract: { resolve: (_, { id }, { workspace }) => workspace.contract({ id }) }, - compilations: { - resolve: (_, {}, { workspace }) => workspace.compilations() - }, - compilation: { - resolve: (_, { id }, { workspace }) => workspace.compilation({ id }) - }, contractInstances: { resolve: (_, {}, { workspace }) => workspace.contractInstances() }, @@ -62,14 +59,11 @@ export const schema = makeExecutableSchema({ Mutation: { ...sources.Mutation, ...bytecodes.Mutation, + ...compilations.Mutation, contractsAdd: { resolve: (_, { input }, { workspace }) => workspace.contractsAdd({ input }) }, - compilationsAdd: { - resolve: (_, { input }, { workspace }) => - workspace.compilationsAdd({ input }) - }, contractInstancesAdd: { resolve: (_, { input }, { workspace }) => workspace.contractInstancesAdd({ input }) From a0efa21018250397f1e8c53764ba263ac13f68fa Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Fri, 16 Oct 2020 10:16:29 -0400 Subject: [PATCH 38/63] Split auto-graphql stuff out ouf pouch module - Add new src/workspace/graphql/ module - Move graphql stuff from pouch to there - Specify definitions for pouch separately from definitions for graphql - Specify that concrete definitions include both pouch and graphql stuff --- .../db/src/workspace/definitions/types.ts | 13 +- packages/db/src/workspace/graphql/index.ts | 1 + packages/db/src/workspace/graphql/types.ts | 111 ++++++++++++++++++ packages/db/src/workspace/pouch/types.ts | 99 ---------------- packages/db/src/workspace/schema.ts | 2 +- 5 files changed, 120 insertions(+), 106 deletions(-) create mode 100644 packages/db/src/workspace/graphql/index.ts create mode 100644 packages/db/src/workspace/graphql/types.ts diff --git a/packages/db/src/workspace/definitions/types.ts b/packages/db/src/workspace/definitions/types.ts index da34324fe48..3ef6696e1c7 100644 --- a/packages/db/src/workspace/definitions/types.ts +++ b/packages/db/src/workspace/definitions/types.ts @@ -1,5 +1,6 @@ import * as Meta from "@truffle/db/meta"; import * as Pouch from "../pouch"; +import * as GraphQl from "../graphql"; export type Collections = { sources: { @@ -43,14 +44,14 @@ export type Collections = { }; }; -export type Definitions = Pouch.Definitions; - export type CollectionName = Meta.CollectionName; -export type Definition = Pouch.Definition< - Collections, - N ->; +export type Definitions = { + [N in CollectionName]: Pouch.Definition & + GraphQl.Definition; +}; + +export type Definition = Definitions[N]; export type Resource = Meta.Resource< Collections, diff --git a/packages/db/src/workspace/graphql/index.ts b/packages/db/src/workspace/graphql/index.ts new file mode 100644 index 00000000000..eea524d6557 --- /dev/null +++ b/packages/db/src/workspace/graphql/index.ts @@ -0,0 +1 @@ +export * from "./types"; diff --git a/packages/db/src/workspace/graphql/types.ts b/packages/db/src/workspace/graphql/types.ts new file mode 100644 index 00000000000..4c0cd869244 --- /dev/null +++ b/packages/db/src/workspace/graphql/types.ts @@ -0,0 +1,111 @@ +import gql from "graphql-tag"; +import * as graphql from "graphql"; +import pascalCase from "pascal-case"; +import { singular } from "pluralize"; + +import { Collections, CollectionName } from "@truffle/db/meta"; + +export type Definitions = { + [N in CollectionName]: { + mutable?: boolean; + typeDefs?: graphql.DocumentNode; + }; +}; + +export type Definition< + C extends Collections, + N extends CollectionName +> = Definitions[N]; + +export const names = >( + collectionName: N, + definition: Definition +) => { + const resources = collectionName; + const Resources = pascalCase(resources); + + const resource = singular(collectionName); + const Resource = pascalCase(resource); + + const resourcesMutate = definition.mutable + ? `${resources}Assign` + : `${resources}Add`; + + const ResourcesMutate = pascalCase(resourcesMutate); + + return { + resource, + resources, + Resource, + Resources, + resourcesMutate, + ResourcesMutate + }; +}; + +export const typeDefs = >( + collectionName: N, + definition: Definition +): graphql.DocumentNode => { + const { typeDefs } = definition; + + const { + resource, + resources, + Resource, + resourcesMutate, + ResourcesMutate + } = names(collectionName, definition); + + return gql` + ${typeDefs} + + extend type Query { + ${resources}: [${Resource}] + ${resource}(id: ID!): ${Resource} + } + + input ${ResourcesMutate}Input { + ${resources}: [${Resource}Input!]! + } + + type ${ResourcesMutate}Payload { + ${resources}: [${Resource}!] + } + + extend type Mutation { + ${resourcesMutate}( + input: ${ResourcesMutate}Input! + ): ${ResourcesMutate}Payload + } + `; +}; + +export const resolvers = >( + collectionName: N, + definition: Definition +) => { + const { resource, resources, resourcesMutate } = names( + collectionName, + definition + ); + + return { + Query: { + [resource]: { + resolve: (_, { id }, { workspace }) => + workspace.databases.get(resources, id) + }, + [resources]: { + resolve: (_, {}, { workspace }) => workspace.databases.all(resources) + } + }, + Mutation: { + [resourcesMutate]: definition.mutable + ? (_, { input }, { workspace }) => + workspace.databases.update(resources, input) + : (_, { input }, { workspace }) => + workspace.databases.add(resources, input) + } + }; +}; diff --git a/packages/db/src/workspace/pouch/types.ts b/packages/db/src/workspace/pouch/types.ts index 645f37d66ec..3c680698eb4 100644 --- a/packages/db/src/workspace/pouch/types.ts +++ b/packages/db/src/workspace/pouch/types.ts @@ -1,8 +1,4 @@ -import gql from "graphql-tag"; -import * as graphql from "graphql"; import PouchDB from "pouchdb"; -import pascalCase from "pascal-case"; -import { singular } from "pluralize"; import { Collections, CollectionName } from "@truffle/db/meta"; @@ -10,8 +6,6 @@ export type Definitions = { [N in CollectionName]: { createIndexes: PouchDB.Find.CreateIndexOptions["index"][]; idFields: string[]; - mutable?: boolean; - typeDefs?: graphql.DocumentNode; }; }; @@ -23,96 +17,3 @@ export type Definition< C extends Collections, N extends CollectionName > = Definitions[N]; - -export const names = >( - collectionName: N, - definition: Definition -) => { - const resources = collectionName; - const Resources = pascalCase(resources); - - const resource = singular(collectionName); - const Resource = pascalCase(resource); - - const resourcesMutate = definition.mutable - ? `${resources}Assign` - : `${resources}Add`; - - const ResourcesMutate = pascalCase(resourcesMutate); - - return { - resource, - resources, - Resource, - Resources, - resourcesMutate, - ResourcesMutate - }; -}; - -export const typeDefs = >( - collectionName: N, - definition: Definition -): graphql.DocumentNode => { - const { typeDefs } = definition; - - const { - resource, - resources, - Resource, - resourcesMutate, - ResourcesMutate - } = names(collectionName, definition); - - return gql` - ${typeDefs} - - extend type Query { - ${resources}: [${Resource}] - ${resource}(id: ID!): ${Resource} - } - - input ${ResourcesMutate}Input { - ${resources}: [${Resource}Input!]! - } - - type ${ResourcesMutate}Payload { - ${resources}: [${Resource}!] - } - - extend type Mutation { - ${resourcesMutate}( - input: ${ResourcesMutate}Input! - ): ${ResourcesMutate}Payload - } - `; -}; - -export const resolvers = >( - collectionName: N, - definition: Definition -) => { - const { resource, resources, resourcesMutate } = names( - collectionName, - definition - ); - - return { - Query: { - [resource]: { - resolve: (_, { id }, { workspace }) => - workspace.databases.get(resources, id) - }, - [resources]: { - resolve: (_, {}, { workspace }) => workspace.databases.all(resources) - } - }, - Mutation: { - [resourcesMutate]: definition.mutable - ? (_, { input }, { workspace }) => - workspace.databases.update(resources, input) - : (_, { input }, { workspace }) => - workspace.databases.add(resources, input) - } - }; -}; diff --git a/packages/db/src/workspace/schema.ts b/packages/db/src/workspace/schema.ts index c55ee43ffcf..05b0306070b 100644 --- a/packages/db/src/workspace/schema.ts +++ b/packages/db/src/workspace/schema.ts @@ -2,7 +2,7 @@ import { makeExecutableSchema } from "@gnd/graphql-tools"; import { schema as rootSchema } from "@truffle/db/schema"; import { definitions } from "./definitions"; -import { typeDefs, resolvers } from "./pouch"; +import { typeDefs, resolvers } from "./graphql"; const sources = resolvers("sources", definitions.sources); const bytecodes = resolvers("bytecodes", definitions.bytecodes); From 99287fccd39ec38478d93c2765f7efb38daac1e3 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Fri, 16 Oct 2020 19:07:02 -0400 Subject: [PATCH 39/63] Replace helpers with new schema builder mechanism - Create DefinitionsSchema class, which accepts definitions and returns all typeDefs and resolvers - Generate schemas and resolvers from: - Each resource with appropriate definitions - Legacy schema.graphql and legacy workspace resolvers (now moved) - Standard-form Query and Mutation for each resource - Create abstract DefinitionSchema class for a single definition - Create concrete DefinitionSchema classes for mutable vs. immutable resources, since they have different mutation names --- .../src/workspace/definitions/compilations.ts | 36 ++- packages/db/src/workspace/graphql/index.ts | 1 + packages/db/src/workspace/graphql/legacy.ts | 214 ++++++++++++++ packages/db/src/workspace/graphql/schema.ts | 242 ++++++++++++++++ packages/db/src/workspace/graphql/types.ts | 98 +------ packages/db/src/workspace/pouch/databases.ts | 6 +- packages/db/src/workspace/pouch/types.ts | 4 - packages/db/src/workspace/schema.ts | 274 +----------------- 8 files changed, 501 insertions(+), 374 deletions(-) create mode 100644 packages/db/src/workspace/graphql/legacy.ts create mode 100644 packages/db/src/workspace/graphql/schema.ts diff --git a/packages/db/src/workspace/definitions/compilations.ts b/packages/db/src/workspace/definitions/compilations.ts index 94a0a26294e..e86b861b999 100644 --- a/packages/db/src/workspace/definitions/compilations.ts +++ b/packages/db/src/workspace/definitions/compilations.ts @@ -62,5 +62,39 @@ export const compilations: Definition<"compilations"> = { input SourceMapInput { json: String! } - ` + `, + resolvers: { + Compilation: { + sources: { + resolve: ({ sources }, _, { workspace }) => + Promise.all( + sources.map(({ id }) => workspace.databases.get("sources", id)) + ) + }, + processedSources: { + resolve: ({ id, processedSources }, _, {}) => + processedSources.map((processedSource, index) => ({ + ...processedSource, + compilation: { id }, + index + })) + } + }, + + ProcessedSource: { + source: { + resolve: ({ source: { id } }, _, { workspace }) => + workspace.databases.get("sources", id) + }, + contracts: { + resolve: ({ compilation, index }, _, { workspace }) => + workspace.databases.find("contracts", { + selector: { + "compilation.id": compilation.id, + "processedSource.index": index + } + }) + } + } + } }; diff --git a/packages/db/src/workspace/graphql/index.ts b/packages/db/src/workspace/graphql/index.ts index eea524d6557..d0bb0ac74ab 100644 --- a/packages/db/src/workspace/graphql/index.ts +++ b/packages/db/src/workspace/graphql/index.ts @@ -1 +1,2 @@ export * from "./types"; +export * from "./schema"; diff --git a/packages/db/src/workspace/graphql/legacy.ts b/packages/db/src/workspace/graphql/legacy.ts new file mode 100644 index 00000000000..e5afc331b04 --- /dev/null +++ b/packages/db/src/workspace/graphql/legacy.ts @@ -0,0 +1,214 @@ +export const resolvers = { + Query: { + contractNames: { + resolve: (_, {}, { workspace }) => workspace.contractNames() + }, + contracts: { + resolve: (_, {}, { workspace }) => workspace.contracts() + }, + contract: { + resolve: (_, { id }, { workspace }) => workspace.contract({ id }) + }, + contractInstances: { + resolve: (_, {}, { workspace }) => workspace.contractInstances() + }, + contractInstance: { + resolve: (_, { id }, { workspace }) => workspace.contractInstance({ id }) + }, + networks: { + resolve: (_, {}, { workspace }) => workspace.networks() + }, + network: { + resolve: (_, { id }, { workspace }) => workspace.network({ id }) + }, + nameRecord: { + resolve: (_, { id }, { workspace }) => workspace.nameRecord({ id }) + }, + nameRecords: { + resolve: (_, {}, { workspace }) => workspace.nameRecords() + }, + project: { + resolve: (_, { id }, { workspace }) => workspace.project({ id }) + }, + projects: { + resolve: (_, {}, { workspace }) => workspace.projects() + } + }, + Mutation: { + contractsAdd: { + resolve: (_, { input }, { workspace }) => + workspace.contractsAdd({ input }) + }, + contractInstancesAdd: { + resolve: (_, { input }, { workspace }) => + workspace.contractInstancesAdd({ input }) + }, + networksAdd: { + resolve: (_, { input }, { workspace }) => workspace.networksAdd({ input }) + }, + nameRecordsAdd: { + resolve: async (_, { input }, { workspace }) => { + return await workspace.nameRecordsAdd({ input }); + } + }, + projectsAdd: { + resolve: (_, { input }, { workspace }) => workspace.projectsAdd({ input }) + }, + projectNamesAssign: { + resolve: (_, { input }, { workspace }) => { + return workspace.projectNamesAssign({ input }); + } + } + }, + Named: { + __resolveType: obj => { + if (obj.networkId) { + return "Network"; + } else if (obj.abi) { + return "Contract"; + } else { + return null; + } + } + }, + NameRecord: { + resource: { + resolve: async ({ type, resource: { id } }, _, { workspace }) => { + switch (type) { + case "Contract": + return await workspace.contract({ id }); + case "Network": + return await workspace.network({ id }); + default: + return null; + } + } + }, + previous: { + resolve: ({ id }, _, { workspace }) => workspace.nameRecord({ id }) + } + }, + Project: { + resolve: { + resolve: async ({ id }, { name, type }, { workspace }) => { + return await workspace.projectNames({ + project: { id }, + name, + type + }); + } + }, + network: { + resolve: async ({ id }, { name }, { workspace }) => { + const nameRecords = await workspace.projectNames({ + project: { id }, + type: "Network", + name + }); + if (nameRecords.length === 0) { + return; + } + const { resource } = nameRecords[0]; + return await workspace.network(resource); + } + }, + contract: { + resolve: async ({ id }, { name }, { workspace }) => { + const nameRecords = await workspace.projectNames({ + project: { id }, + type: "Contract", + name + }); + if (nameRecords.length === 0) { + return; + } + const { resource } = nameRecords[0]; + return await workspace.contract(resource); + } + } + }, + ProjectName: { + project: { + resolve: ({ project: { id } }, _, { workspace }) => + workspace.project({ id }) + }, + nameRecord: { + resolve: ({ nameRecord: { id } }, _, { workspace }) => + workspace.nameRecord({ id }) + } + }, + Contract: { + compilation: { + resolve: async ({ compilation }, _, { workspace }) => { + return await workspace.compilation(compilation); + } + }, + processedSource: { + fragment: `... on Contract { compilation { id } }`, + resolve: async ({ processedSource, compilation }, _, { workspace }) => { + const { processedSources } = await workspace.compilation(compilation); + + return processedSources[processedSource.index]; + } + }, + createBytecode: { + resolve: ({ createBytecode: { id } }, _, { workspace }) => + workspace.databases.get("bytecodes", id) + }, + callBytecode: { + resolve: ({ callBytecode }, _, { workspace }) => + workspace.bytecode(callBytecode) + } + }, + ContractInstance: { + network: { + resolve: async ({ network }, _, { workspace }) => + await workspace.network(network) + }, + contract: { + resolve: ({ contract }, _, { workspace }) => workspace.contract(contract) + }, + callBytecode: { + resolve: async ({ callBytecode }, _, { workspace }) => { + let bytecode = await workspace.bytecode(callBytecode.bytecode); + let linkValues = callBytecode.linkValues.map( + ({ value, linkReference }) => { + return { + value: value, + linkReference: bytecode.linkReferences[linkReference.index] + }; + } + ); + return { + bytecode: bytecode, + linkValues: linkValues + }; + } + }, + creation: { + resolve: async (input, _, { workspace }) => { + let bytecode = await workspace.bytecode( + input.creation.constructor.createBytecode.bytecode + ); + let transactionHash = input.creation.transactionHash; + let linkValues = input.creation.constructor.createBytecode.linkValues.map( + ({ value, linkReference }) => { + return { + value: value, + linkReference: bytecode.linkReferences[linkReference.index] + }; + } + ); + return { + transactionHash: transactionHash, + constructor: { + createBytecode: { + bytecode: bytecode, + linkValues: linkValues + } + } + }; + } + } + } +}; diff --git a/packages/db/src/workspace/graphql/schema.ts b/packages/db/src/workspace/graphql/schema.ts new file mode 100644 index 00000000000..c14d530fda3 --- /dev/null +++ b/packages/db/src/workspace/graphql/schema.ts @@ -0,0 +1,242 @@ +import gql from "graphql-tag"; +import * as graphql from "graphql"; +import { makeExecutableSchema, IResolvers } from "@gnd/graphql-tools"; +import pascalCase from "pascal-case"; +import { singular } from "pluralize"; + +import { + Collections, + CollectionName, + MutableCollectionName +} from "@truffle/db/meta"; +import { Definition, Definitions } from "./types"; +import { schema as rootSchema } from "@truffle/db/schema"; +import { resolvers as legacyResolvers } from "./legacy"; + +export const forDefinitions = ( + definitions: Definitions +) => { + const { typeDefs, resolvers } = new DefinitionsSchema({ definitions }); + return makeExecutableSchema({ typeDefs, resolvers }); +}; + +class DefinitionsSchema { + private definitions: Definitions; + private collections: CollectionSchemas; + + constructor(options: { definitions: Definitions }) { + this.definitions = options.definitions; + + this.collections = Object.entries(options.definitions) + // TODO remove this filter+map once all the resources are setup + .filter(([_, definition]) => definition.typeDefs) + .map(([resource]) => resource) + + .map((resource: CollectionName) => ({ + [resource]: this.createSchema(resource) + })) + .reduce((a, b) => ({ ...a, ...b }), {}) as CollectionSchemas; + } + + get typeDefs(): graphql.DocumentNode[] { + return Object.values(this.collections) + .map(schema => schema.typeDefs) + .reduce((a, b) => [...a, ...b], [rootSchema]); + } + + get resolvers() { + return Object.values(this.collections).reduce( + (a, { resolvers: b }) => ({ + ...a, + ...b, + Query: { + ...a.Query, + ...b.Query + }, + Mutation: { + ...a.Mutation, + ...b.Mutation + } + }), + legacyResolvers + ); + } + + private createSchema( + resource: CollectionName + ): DefinitionSchema> { + const definition = this.definitions[resource]; + if (definition.mutable) { + return new MutableDefinitionSchema({ + resource: resource as MutableCollectionName, + definition + }); + } + + return new ImmutableDefinitionSchema({ + resource, + definition + }); + } +} + +abstract class DefinitionSchema< + C extends Collections, + N extends CollectionName +> { + protected resource: N; + protected definition: Definition; + + protected names: { + resource: string; + Resource: string; + resources: N; // sure why not + Resources: string; + resourcesMutate: string; + ResourcesMutate: string; + }; + + constructor(options: { resource: N; definition: Definition }) { + this.resource = options.resource; + this.definition = options.definition; + } + + get typeDefs() { + const { typeDefs } = this.definition; + + const { + resource, + resources, + Resource, + resourcesMutate, + ResourcesMutate + } = this.names; + + return [ + gql` + ${typeDefs} + + extend type Query { + ${resources}: [${Resource}] + ${resource}(id: ID!): ${Resource} + } + + input ${ResourcesMutate}Input { + ${resources}: [${Resource}Input!]! + } + + type ${ResourcesMutate}Payload { + ${resources}: [${Resource}!] + } + + extend type Mutation { + ${resourcesMutate}( + input: ${ResourcesMutate}Input! + ): ${ResourcesMutate}Payload + } + ` + ]; + } + + get resolvers(): IResolvers { + const { resource, resources } = this.names; + + const { resolvers = {} } = this.definition; + + return { + ...resolvers, + + Query: { + [resource]: { + resolve: (_, { id }, { workspace }) => + workspace.databases.get(resources, id) + }, + [resources]: { + resolve: (_, {}, { workspace }) => workspace.databases.all(resources) + } + } + }; + } +} + +class ImmutableDefinitionSchema< + C extends Collections, + N extends CollectionName +> extends DefinitionSchema { + get names() { + const resources = this.resource; + const Resources = pascalCase(resources); + + const resource = singular(resources); + const Resource = pascalCase(resource); + + const resourcesMutate = `${resources}Add`; + + const ResourcesMutate = pascalCase(resourcesMutate); + + return { + resource, + resources, + Resource, + Resources, + resourcesMutate, + ResourcesMutate + }; + } + + get resolvers() { + const { resources, resourcesMutate } = this.names; + + return { + ...super.resolvers, + + Mutation: { + [resourcesMutate]: (_, { input }, { workspace }) => + workspace.databases.add(resources, input) + } + }; + } +} + +class MutableDefinitionSchema< + C extends Collections, + M extends MutableCollectionName +> extends DefinitionSchema { + get names() { + const resources = this.resource; + const Resources = pascalCase(resources); + + const resource = singular(resources); + const Resource = pascalCase(resource); + + const resourcesMutate = `${resources}Assign`; + + const ResourcesMutate = pascalCase(resourcesMutate); + + return { + resource, + resources, + Resource, + Resources, + resourcesMutate, + ResourcesMutate + }; + } + + get resolvers() { + const { resources, resourcesMutate } = this.names; + + return { + ...super.resolvers, + + Mutation: { + [resourcesMutate]: (_, { input }, { workspace }) => + workspace.databases.update(resources, input) + } + }; + } +} + +type CollectionSchemas = { + [N in CollectionName]: DefinitionSchema; +}; diff --git a/packages/db/src/workspace/graphql/types.ts b/packages/db/src/workspace/graphql/types.ts index 4c0cd869244..c8df4f2c2af 100644 --- a/packages/db/src/workspace/graphql/types.ts +++ b/packages/db/src/workspace/graphql/types.ts @@ -1,7 +1,5 @@ -import gql from "graphql-tag"; import * as graphql from "graphql"; -import pascalCase from "pascal-case"; -import { singular } from "pluralize"; +import { IResolvers } from "@gnd/graphql-tools"; import { Collections, CollectionName } from "@truffle/db/meta"; @@ -9,6 +7,7 @@ export type Definitions = { [N in CollectionName]: { mutable?: boolean; typeDefs?: graphql.DocumentNode; + resolvers?: IResolvers; }; }; @@ -16,96 +15,3 @@ export type Definition< C extends Collections, N extends CollectionName > = Definitions[N]; - -export const names = >( - collectionName: N, - definition: Definition -) => { - const resources = collectionName; - const Resources = pascalCase(resources); - - const resource = singular(collectionName); - const Resource = pascalCase(resource); - - const resourcesMutate = definition.mutable - ? `${resources}Assign` - : `${resources}Add`; - - const ResourcesMutate = pascalCase(resourcesMutate); - - return { - resource, - resources, - Resource, - Resources, - resourcesMutate, - ResourcesMutate - }; -}; - -export const typeDefs = >( - collectionName: N, - definition: Definition -): graphql.DocumentNode => { - const { typeDefs } = definition; - - const { - resource, - resources, - Resource, - resourcesMutate, - ResourcesMutate - } = names(collectionName, definition); - - return gql` - ${typeDefs} - - extend type Query { - ${resources}: [${Resource}] - ${resource}(id: ID!): ${Resource} - } - - input ${ResourcesMutate}Input { - ${resources}: [${Resource}Input!]! - } - - type ${ResourcesMutate}Payload { - ${resources}: [${Resource}!] - } - - extend type Mutation { - ${resourcesMutate}( - input: ${ResourcesMutate}Input! - ): ${ResourcesMutate}Payload - } - `; -}; - -export const resolvers = >( - collectionName: N, - definition: Definition -) => { - const { resource, resources, resourcesMutate } = names( - collectionName, - definition - ); - - return { - Query: { - [resource]: { - resolve: (_, { id }, { workspace }) => - workspace.databases.get(resources, id) - }, - [resources]: { - resolve: (_, {}, { workspace }) => workspace.databases.all(resources) - } - }, - Mutation: { - [resourcesMutate]: definition.mutable - ? (_, { input }, { workspace }) => - workspace.databases.update(resources, input) - : (_, { input }, { workspace }) => - workspace.databases.add(resources, input) - } - }; -}; diff --git a/packages/db/src/workspace/pouch/databases.ts b/packages/db/src/workspace/pouch/databases.ts index 73d6b35a7c1..1312e62749e 100644 --- a/packages/db/src/workspace/pouch/databases.ts +++ b/packages/db/src/workspace/pouch/databases.ts @@ -13,7 +13,7 @@ import { Resource } from "@truffle/db/meta"; -import { CollectionDatabases, Definition, Definitions } from "./types"; +import { Definition, Definitions } from "./types"; export interface DatabasesOptions { settings: any; @@ -244,3 +244,7 @@ type Historical = { ? T[K] : never; }; + +type CollectionDatabases = { + [N in CollectionName]: PouchDB.Database; +}; diff --git a/packages/db/src/workspace/pouch/types.ts b/packages/db/src/workspace/pouch/types.ts index 3c680698eb4..4f5626f1355 100644 --- a/packages/db/src/workspace/pouch/types.ts +++ b/packages/db/src/workspace/pouch/types.ts @@ -9,10 +9,6 @@ export type Definitions = { }; }; -export type CollectionDatabases = { - [N in CollectionName]: PouchDB.Database; -}; - export type Definition< C extends Collections, N extends CollectionName diff --git a/packages/db/src/workspace/schema.ts b/packages/db/src/workspace/schema.ts index 05b0306070b..311080ae83c 100644 --- a/packages/db/src/workspace/schema.ts +++ b/packages/db/src/workspace/schema.ts @@ -1,274 +1,4 @@ -import { makeExecutableSchema } from "@gnd/graphql-tools"; - -import { schema as rootSchema } from "@truffle/db/schema"; import { definitions } from "./definitions"; -import { typeDefs, resolvers } from "./graphql"; - -const sources = resolvers("sources", definitions.sources); -const bytecodes = resolvers("bytecodes", definitions.bytecodes); -const compilations = resolvers("compilations", definitions.compilations); - -export const schema = makeExecutableSchema({ - typeDefs: [ - rootSchema, - typeDefs("sources", definitions.sources), - typeDefs("bytecodes", definitions.bytecodes), - typeDefs("compilations", definitions.compilations) - ], - - resolvers: { - Query: { - ...sources.Query, - ...bytecodes.Query, - ...compilations.Query, - contractNames: { - resolve: (_, {}, { workspace }) => workspace.contractNames() - }, - contracts: { - resolve: (_, {}, { workspace }) => workspace.contracts() - }, - contract: { - resolve: (_, { id }, { workspace }) => workspace.contract({ id }) - }, - contractInstances: { - resolve: (_, {}, { workspace }) => workspace.contractInstances() - }, - contractInstance: { - resolve: (_, { id }, { workspace }) => - workspace.contractInstance({ id }) - }, - networks: { - resolve: (_, {}, { workspace }) => workspace.networks() - }, - network: { - resolve: (_, { id }, { workspace }) => workspace.network({ id }) - }, - nameRecord: { - resolve: (_, { id }, { workspace }) => workspace.nameRecord({ id }) - }, - nameRecords: { - resolve: (_, {}, { workspace }) => workspace.nameRecords() - }, - project: { - resolve: (_, { id }, { workspace }) => workspace.project({ id }) - }, - projects: { - resolve: (_, {}, { workspace }) => workspace.projects() - } - }, - Mutation: { - ...sources.Mutation, - ...bytecodes.Mutation, - ...compilations.Mutation, - contractsAdd: { - resolve: (_, { input }, { workspace }) => - workspace.contractsAdd({ input }) - }, - contractInstancesAdd: { - resolve: (_, { input }, { workspace }) => - workspace.contractInstancesAdd({ input }) - }, - networksAdd: { - resolve: (_, { input }, { workspace }) => - workspace.networksAdd({ input }) - }, - nameRecordsAdd: { - resolve: async (_, { input }, { workspace }) => { - return await workspace.nameRecordsAdd({ input }); - } - }, - projectsAdd: { - resolve: (_, { input }, { workspace }) => - workspace.projectsAdd({ input }) - }, - projectNamesAssign: { - resolve: (_, { input }, { workspace }) => { - return workspace.projectNamesAssign({ input }); - } - } - }, - Named: { - __resolveType: obj => { - if (obj.networkId) { - return "Network"; - } else if (obj.abi) { - return "Contract"; - } else { - return null; - } - } - }, - NameRecord: { - resource: { - resolve: async ({ type, resource: { id } }, _, { workspace }) => { - switch (type) { - case "Contract": - return await workspace.contract({ id }); - case "Network": - return await workspace.network({ id }); - default: - return null; - } - } - }, - previous: { - resolve: ({ id }, _, { workspace }) => workspace.nameRecord({ id }) - } - }, - Project: { - resolve: { - resolve: async ({ id }, { name, type }, { workspace }) => { - return await workspace.projectNames({ - project: { id }, - name, - type - }); - } - }, - network: { - resolve: async ({ id }, { name }, { workspace }) => { - const nameRecords = await workspace.projectNames({ - project: { id }, - type: "Network", - name - }); - if (nameRecords.length === 0) { - return; - } - const { resource } = nameRecords[0]; - return await workspace.network(resource); - } - }, - contract: { - resolve: async ({ id }, { name }, { workspace }) => { - const nameRecords = await workspace.projectNames({ - project: { id }, - type: "Contract", - name - }); - if (nameRecords.length === 0) { - return; - } - const { resource } = nameRecords[0]; - return await workspace.contract(resource); - } - } - }, - ProjectName: { - project: { - resolve: ({ project: { id } }, _, { workspace }) => - workspace.project({ id }) - }, - nameRecord: { - resolve: ({ nameRecord: { id } }, _, { workspace }) => - workspace.nameRecord({ id }) - } - }, - Compilation: { - sources: { - resolve: ({ sources }, _, { workspace }) => - Promise.all( - sources.map(({ id }) => workspace.databases.get("sources", id)) - ) - }, - processedSources: { - resolve: ({ id, processedSources }, _, {}) => - processedSources.map((processedSource, index) => ({ - ...processedSource, - compilation: { id }, - index - })) - } - }, - Contract: { - compilation: { - resolve: async ({ compilation }, _, { workspace }) => { - return await workspace.compilation(compilation); - } - }, - processedSource: { - fragment: `... on Contract { compilation { id } }`, - resolve: async ({ processedSource, compilation }, _, { workspace }) => { - const { processedSources } = await workspace.compilation(compilation); +import { forDefinitions } from "./graphql"; - return processedSources[processedSource.index]; - } - }, - createBytecode: { - resolve: ({ createBytecode: { id } }, _, { workspace }) => - workspace.databases.get("bytecodes", id) - }, - callBytecode: { - resolve: ({ callBytecode }, _, { workspace }) => - workspace.bytecode(callBytecode) - } - }, - ContractInstance: { - network: { - resolve: async ({ network }, _, { workspace }) => - await workspace.network(network) - }, - contract: { - resolve: ({ contract }, _, { workspace }) => - workspace.contract(contract) - }, - callBytecode: { - resolve: async ({ callBytecode }, _, { workspace }) => { - let bytecode = await workspace.bytecode(callBytecode.bytecode); - let linkValues = callBytecode.linkValues.map( - ({ value, linkReference }) => { - return { - value: value, - linkReference: bytecode.linkReferences[linkReference.index] - }; - } - ); - return { - bytecode: bytecode, - linkValues: linkValues - }; - } - }, - creation: { - resolve: async (input, _, { workspace }) => { - let bytecode = await workspace.bytecode( - input.creation.constructor.createBytecode.bytecode - ); - let transactionHash = input.creation.transactionHash; - let linkValues = input.creation.constructor.createBytecode.linkValues.map( - ({ value, linkReference }) => { - return { - value: value, - linkReference: bytecode.linkReferences[linkReference.index] - }; - } - ); - return { - transactionHash: transactionHash, - constructor: { - createBytecode: { - bytecode: bytecode, - linkValues: linkValues - } - } - }; - } - } - }, - ProcessedSource: { - source: { - resolve: ({ source: { id } }, _, { workspace }) => - workspace.databases.get("sources", id) - }, - contracts: { - resolve: ({ compilation, index }, _, { workspace }) => - workspace.databases.find("contracts", { - selector: { - "compilation.id": compilation.id, - "processedSource.index": index - } - }) - } - } - } -}); +export const schema = forDefinitions(definitions); From 88fab925699a5e91e72e49961cf4fa2714e23431 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Fri, 16 Oct 2020 19:55:05 -0400 Subject: [PATCH 40/63] Finish adapting definitions according to new forms - Include contracts, contractInstances, networks, nameRecords, projects, and projectNames - Remove schema.graphql, now obsolete - Remove schema.ts, now obsolete - Remove legacy resolvers, now obsolete - Make typeDefs now required in definition - Require mutable to be defined as true for mutable resources --- packages/db/bin/build | 1 - packages/db/src/schema.graphql | 320 ------------------ packages/db/src/schema.ts | 10 - .../definitions/contractInstances.ts | 130 +++++++ .../db/src/workspace/definitions/contracts.ts | 70 ++++ .../db/src/workspace/definitions/index.ts | 50 +-- .../src/workspace/definitions/nameRecords.ts | 43 +++ .../db/src/workspace/definitions/networks.ts | 35 ++ .../src/workspace/definitions/projectNames.ts | 47 +++ .../db/src/workspace/definitions/projects.ts | 64 ++++ packages/db/src/workspace/graphql/legacy.ts | 214 ------------ packages/db/src/workspace/graphql/schema.ts | 58 +++- packages/db/src/workspace/graphql/types.ts | 22 +- 13 files changed, 466 insertions(+), 598 deletions(-) delete mode 100644 packages/db/src/schema.graphql delete mode 100644 packages/db/src/schema.ts create mode 100644 packages/db/src/workspace/definitions/contractInstances.ts create mode 100644 packages/db/src/workspace/definitions/contracts.ts create mode 100644 packages/db/src/workspace/definitions/nameRecords.ts create mode 100644 packages/db/src/workspace/definitions/networks.ts create mode 100644 packages/db/src/workspace/definitions/projectNames.ts create mode 100644 packages/db/src/workspace/definitions/projects.ts delete mode 100644 packages/db/src/workspace/graphql/legacy.ts diff --git a/packages/db/bin/build b/packages/db/bin/build index c93a0c36c4e..c82c0d7601a 100755 --- a/packages/db/bin/build +++ b/packages/db/bin/build @@ -4,7 +4,6 @@ set -ex mkdir -p dist/src/ -cp ./src/schema.graphql ./dist/src/schema.graphql tsc --project tsconfig.codegen.json node ./bin/codegen.js tsc $@ diff --git a/packages/db/src/schema.graphql b/packages/db/src/schema.graphql deleted file mode 100644 index 784471aaeaa..00000000000 --- a/packages/db/src/schema.graphql +++ /dev/null @@ -1,320 +0,0 @@ -scalar Address -scalar NetworkId -scalar TransactionHash -scalar Value -scalar Index - -# -# Abstract -# - -interface Resource { - id: ID! -} - -interface Named { - id: ID! - name: String! -} - -input ResourceReferenceInput { - id: ID! -} - -input IndexReferenceInput { - index: Index! -} - - -# -# Query -# - -type Query { - contractNames: [String]! - - # query individual resources - contract(id: ID!): Contract - contractInstance(id: ID!): ContractInstance - network(id: ID!): Network - nameRecord(id:ID!): NameRecord - project(id: ID!): Project - - # query collections - contractInstances: [ContractInstance] - contracts: [Contract] - networks: [Network] - nameRecords: [NameRecord] - projects: [Project] -} - -# -# Mutation -# - -type Mutation { - projectsAdd(input:ProjectsAddInput!):ProjectsAddPayload - projectNamesAssign(input: ProjectNamesAssignInput): ProjectNamesAssignPayload - contractsAdd(input: ContractsAddInput!): ContractsAddPayload - contractInstancesAdd(input: ContractInstancesAddInput!): ContractInstancesAddPayload - networksAdd(input: NetworksAddInput!): NetworksAddPayload - nameRecordsAdd(input: NameRecordsAddInput!): NameRecordsAddPayload -} - - -# -# Contracts -# - -# Resource -type Contract implements Resource & Named { - id: ID! - name: String! - source: Source - abi: ABI - compilation: Compilation - processedSource: ProcessedSource - createBytecode: Bytecode - callBytecode: Bytecode -} - -type ABI { - json: String! -} - -# Resource input -input ContractInput { - name: String! - abi: ABIInput - compilation: ResourceReferenceInput - processedSource: IndexReferenceInput - createBytecode: ResourceReferenceInput - callBytecode: ResourceReferenceInput -} - -input ABIInput { - json: String! -} - -# Mutation input -input ContractsAddInput { - contracts: [ContractInput!]! -} - -# Mutation payload -type ContractsAddPayload { - contracts: [Contract]! -} - - -# -# ContractInstances -# - -# Resource -type ContractInstance implements Resource { - id: ID! - address: Address! - network: Network! - creation: ContractInstanceCreation - callBytecode: LinkedBytecode! - contract: Contract -} - -type ContractInstanceCreation { - transactionHash: TransactionHash - constructorArgs: [Value] - constructor: Constructor -} - -type Constructor { - createBytecode: LinkedBytecode -} - -type LinkedBytecode { - bytecode: Bytecode! - linkValues: [LinkValue]! -} - -type LinkValue { - linkReference: LinkReference! - value: Bytes -} - -# Resource input -input ContractInstanceInput { - address: Address! - network: ResourceReferenceInput - creation: ContractInstanceCreationInput - contract: ResourceReferenceInput - callBytecode: LinkedBytecodeInput -} - -input ContractInstanceCreationInput { - transactionHash: TransactionHash! - constructor: ConstructorInput! -} - -input ConstructorInput { - createBytecode: LinkedBytecodeInput! -} - -input LinkedBytecodeInput { - bytecode: ResourceReferenceInput - linkValues: [LinkValueInput] -} - -input LinkValueInput { - value: Address! - linkReference: LinkValueLinkReferenceInput! -} - -input LinkValueLinkReferenceInput { - bytecode: ResourceReferenceInput! - index: Index -} - -# Mutation input -input ContractInstancesAddInput { - contractInstances: [ContractInstanceInput!]! -} - -# Mutation payload -type ContractInstancesAddPayload { - contractInstances: [ContractInstance!] -} - - -# -# Networks -# - -# Resource -type Network implements Resource & Named { - id: ID! - name: String! - networkId: NetworkId! - historicBlock: Block! - fork: Network -} - -type Block { - height: Int! - hash: String! -} - -# Resource input -input NetworkInput { - name: String! - networkId: NetworkId! - historicBlock: BlockInput! -} - -input BlockInput { - height: Int! - hash: String! -} - -# Mutation input -input NetworksAddInput { - networks: [NetworkInput!]! -} - -# Mutation payload -type NetworksAddPayload { - networks: [Network!]! -} - - -# -# NameRecords -# - -# Resource -type NameRecord implements Resource { - id: ID! - name: String! - type: String! - resource: Named! - previous: NameRecord -} - -# Resource input -input NameRecordInput { - name: String! - type: String! - resource: ResourceReferenceInput! - previous: ResourceReferenceInput -} - -# Mutation input -input NameRecordsAddInput { - nameRecords: [NameRecordInput!]! -} - -# Mutation payload -type NameRecordsAddPayload { - nameRecords: [NameRecord] -} - - -# -# Projects -# - -# Resource -type Project implements Resource { - id: ID! - - directory: String! - - contract(name: String!): Contract - network(name: String!): Network - resolve(type: String, name: String): [NameRecord] # null means unknown type -} - -# Resource input -input ProjectInput { - directory: String! -} - -# Mutation input -input ProjectsAddInput { - projects: [ProjectInput!]! -} - -# Mutation payload -type ProjectsAddPayload { - projects: [Project!]! -} - - -# -# ProjectNames -# - -type ProjectName implements Resource { - id: ID! - project: Project! - name: String! - type: String! - nameRecord: NameRecord! -} - -# Resource input -input ProjectNameInput { - project: ResourceReferenceInput! - name: String! - type: String! - nameRecord: ResourceReferenceInput! -} - -# Mutation input -input ProjectNamesAssignInput { - projectNames: [ProjectNameInput!]! -} - -# Mutation payload -type ProjectNamesAssignPayload { - projectNames: [ProjectName!]! -} diff --git a/packages/db/src/schema.ts b/packages/db/src/schema.ts deleted file mode 100644 index 89e4b03869f..00000000000 --- a/packages/db/src/schema.ts +++ /dev/null @@ -1,10 +0,0 @@ -import * as fse from "fs-extra"; -import path from "path"; - -export function readSchema() { - const schemaFile = path.join(__dirname, "schema.graphql"); - const typeDefs = fse.readFileSync(schemaFile).toString(); - return typeDefs; -} - -export const schema = readSchema(); diff --git a/packages/db/src/workspace/definitions/contractInstances.ts b/packages/db/src/workspace/definitions/contractInstances.ts new file mode 100644 index 00000000000..507a4dc81a5 --- /dev/null +++ b/packages/db/src/workspace/definitions/contractInstances.ts @@ -0,0 +1,130 @@ +import gql from "graphql-tag"; + +import { Definition } from "./types"; + +export const contractInstances: Definition<"contractInstances"> = { + createIndexes: [], + idFields: ["address", "network"], + typeDefs: gql` + type ContractInstance implements Resource { + id: ID! + address: Address! + network: Network! + creation: ContractInstanceCreation + callBytecode: LinkedBytecode! + contract: Contract + } + + scalar Address + + type ContractInstanceCreation { + transactionHash: TransactionHash + constructorArguments: [ConstructorArgument] + constructor: Constructor + } + + scalar TransactionHash + + scalar ConstructorArgument + + type Constructor { + createBytecode: LinkedBytecode + } + + type LinkedBytecode { + bytecode: Bytecode! + linkValues: [LinkValue]! + } + + type LinkValue { + linkReference: LinkReference! + value: Bytes + } + + input ContractInstanceInput { + address: Address! + network: ResourceReferenceInput + creation: ContractInstanceCreationInput + contract: ResourceReferenceInput + callBytecode: LinkedBytecodeInput + } + + input ContractInstanceCreationInput { + transactionHash: TransactionHash! + constructor: ConstructorInput! + } + + input ConstructorInput { + createBytecode: LinkedBytecodeInput! + } + + input LinkedBytecodeInput { + bytecode: ResourceReferenceInput + linkValues: [LinkValueInput] + } + + input LinkValueInput { + value: Address! + linkReference: LinkValueLinkReferenceInput! + } + + input LinkValueLinkReferenceInput { + bytecode: ResourceReferenceInput! + index: Int + } + `, + resolvers: { + ContractInstance: { + network: { + resolve: async ({ network }, _, { workspace }) => + await workspace.network(network) + }, + contract: { + resolve: ({ contract }, _, { workspace }) => + workspace.contract(contract) + }, + callBytecode: { + resolve: async ({ callBytecode }, _, { workspace }) => { + let bytecode = await workspace.bytecode(callBytecode.bytecode); + let linkValues = callBytecode.linkValues.map( + ({ value, linkReference }) => { + return { + value: value, + linkReference: bytecode.linkReferences[linkReference.index] + }; + } + ); + return { + bytecode: bytecode, + linkValues: linkValues + }; + } + }, + creation: { + resolve: async (input, _, { workspace }) => { + let bytecode = await workspace.bytecode( + input.creation.constructor.createBytecode.bytecode + ); + let transactionHash = input.creation.transactionHash; + let linkValues = input.creation.constructor.createBytecode.linkValues.map( + ({ value, linkReference }) => { + return { + value: value, + linkReference: bytecode.linkReferences[linkReference.index] + }; + } + ); + return { + transactionHash: transactionHash, + constructor: { + createBytecode: { + bytecode: bytecode, + linkValues: linkValues + } + } + }; + } + } + } + } +}; diff --git a/packages/db/src/workspace/definitions/contracts.ts b/packages/db/src/workspace/definitions/contracts.ts new file mode 100644 index 00000000000..dbfad3dbceb --- /dev/null +++ b/packages/db/src/workspace/definitions/contracts.ts @@ -0,0 +1,70 @@ +import gql from "graphql-tag"; + +import { Definition } from "./types"; + +export const contracts: Definition<"contracts"> = { + createIndexes: [ + { + fields: ["compilation.id", "processedSource.index"] + } + ], + idFields: ["name", "abi", "processedSource", "compilation"], + typeDefs: gql` + type Contract implements Resource & Named { + id: ID! + name: String! + source: Source + abi: ABI + compilation: Compilation + processedSource: ProcessedSource + createBytecode: Bytecode + callBytecode: Bytecode + } + + type ABI { + json: String! + } + + input ContractInput { + name: String! + abi: ABIInput + compilation: ResourceReferenceInput + processedSource: IndexReferenceInput + createBytecode: ResourceReferenceInput + callBytecode: ResourceReferenceInput + } + + input IndexReferenceInput { + index: Int! + } + + input ABIInput { + json: String! + } + `, + resolvers: { + Contract: { + compilation: { + resolve: async ({ compilation }, _, { workspace }) => { + return await workspace.compilation(compilation); + } + }, + processedSource: { + fragment: `... on Contract { compilation { id } }`, + resolve: async ({ processedSource, compilation }, _, { workspace }) => { + const { processedSources } = await workspace.compilation(compilation); + + return processedSources[processedSource.index]; + } + }, + createBytecode: { + resolve: ({ createBytecode: { id } }, _, { workspace }) => + workspace.databases.get("bytecodes", id) + }, + callBytecode: { + resolve: ({ callBytecode }, _, { workspace }) => + workspace.bytecode(callBytecode) + } + } + } +}; diff --git a/packages/db/src/workspace/definitions/index.ts b/packages/db/src/workspace/definitions/index.ts index fdcf74690a0..5dcffe3af4e 100644 --- a/packages/db/src/workspace/definitions/index.ts +++ b/packages/db/src/workspace/definitions/index.ts @@ -4,47 +4,21 @@ export * from "./types"; import { sources } from "./sources"; import { bytecodes } from "./bytecodes"; import { compilations } from "./compilations"; +import { contracts } from "./contracts"; +import { contractInstances } from "./contractInstances"; +import { networks } from "./networks"; +import { nameRecords } from "./nameRecords"; +import { projects } from "./projects"; +import { projectNames } from "./projectNames"; export const definitions: Definitions = { sources, bytecodes, - contracts: { - createIndexes: [ - { - fields: ["compilation.id", "processedSource.index"] - } - ], - idFields: ["name", "abi", "processedSource", "compilation"] - }, compilations, - networks: { - createIndexes: [], - idFields: ["networkId", "historicBlock"] - }, - contractInstances: { - createIndexes: [], - idFields: ["address", "network"] - }, - nameRecords: { - createIndexes: [], - idFields: ["name", "type", "resource", "previous"] - }, - projects: { - createIndexes: [], - idFields: ["directory"] - }, - projectNames: { - createIndexes: [ - { - fields: ["project.id"] - }, - { - fields: ["project.id", "type"] - }, - { - fields: ["project.id", "name", "type"] - } - ], - idFields: ["project", "name", "type"] - } + contracts, + contractInstances, + networks, + nameRecords, + projects, + projectNames }; diff --git a/packages/db/src/workspace/definitions/nameRecords.ts b/packages/db/src/workspace/definitions/nameRecords.ts new file mode 100644 index 00000000000..030db7ee9d0 --- /dev/null +++ b/packages/db/src/workspace/definitions/nameRecords.ts @@ -0,0 +1,43 @@ +import gql from "graphql-tag"; + +import { Definition } from "./types"; + +export const nameRecords: Definition<"nameRecords"> = { + createIndexes: [], + idFields: ["name", "type", "resource", "previous"], + typeDefs: gql` + type NameRecord implements Resource { + id: ID! + name: String! + type: String! + resource: Named! + previous: NameRecord + } + + input NameRecordInput { + name: String! + type: String! + resource: ResourceReferenceInput! + previous: ResourceReferenceInput + } + `, + resolvers: { + NameRecord: { + resource: { + resolve: async ({ type, resource: { id } }, _, { workspace }) => { + switch (type) { + case "Contract": + return await workspace.contract({ id }); + case "Network": + return await workspace.network({ id }); + default: + return null; + } + } + }, + previous: { + resolve: ({ id }, _, { workspace }) => workspace.nameRecord({ id }) + } + } + } +}; diff --git a/packages/db/src/workspace/definitions/networks.ts b/packages/db/src/workspace/definitions/networks.ts new file mode 100644 index 00000000000..8d9879d41af --- /dev/null +++ b/packages/db/src/workspace/definitions/networks.ts @@ -0,0 +1,35 @@ +import gql from "graphql-tag"; + +import { Definition } from "./types"; + +export const networks: Definition<"networks"> = { + createIndexes: [], + idFields: ["networkId", "historicBlock"], + typeDefs: gql` + type Network implements Resource & Named { + id: ID! + name: String! + networkId: NetworkId! + historicBlock: Block! + fork: Network + } + + scalar NetworkId + + type Block { + height: Int! + hash: String! + } + + input NetworkInput { + name: String! + networkId: NetworkId! + historicBlock: BlockInput! + } + + input BlockInput { + height: Int! + hash: String! + } + ` +}; diff --git a/packages/db/src/workspace/definitions/projectNames.ts b/packages/db/src/workspace/definitions/projectNames.ts new file mode 100644 index 00000000000..596c1f0def1 --- /dev/null +++ b/packages/db/src/workspace/definitions/projectNames.ts @@ -0,0 +1,47 @@ +import gql from "graphql-tag"; + +import { Definition } from "./types"; + +export const projectNames: Definition<"projectNames"> = { + createIndexes: [ + { + fields: ["project.id"] + }, + { + fields: ["project.id", "type"] + }, + { + fields: ["project.id", "name", "type"] + } + ], + idFields: ["project", "name", "type"], + mutable: true, + typeDefs: gql` + type ProjectName implements Resource { + id: ID! + project: Project! + name: String! + type: String! + nameRecord: NameRecord! + } + + input ProjectNameInput { + project: ResourceReferenceInput! + name: String! + type: String! + nameRecord: ResourceReferenceInput! + } + `, + resolvers: { + ProjectName: { + project: { + resolve: ({ project: { id } }, _, { workspace }) => + workspace.project({ id }) + }, + nameRecord: { + resolve: ({ nameRecord: { id } }, _, { workspace }) => + workspace.nameRecord({ id }) + } + } + } +}; diff --git a/packages/db/src/workspace/definitions/projects.ts b/packages/db/src/workspace/definitions/projects.ts new file mode 100644 index 00000000000..409db74e3dc --- /dev/null +++ b/packages/db/src/workspace/definitions/projects.ts @@ -0,0 +1,64 @@ +import gql from "graphql-tag"; + +import { Definition } from "./types"; + +export const projects: Definition<"projects"> = { + createIndexes: [], + idFields: ["directory"], + typeDefs: gql` + type Project implements Resource { + id: ID! + + directory: String! + + contract(name: String!): Contract + network(name: String!): Network + resolve(type: String, name: String): [NameRecord] # null means unknown type + } + + input ProjectInput { + directory: String! + } + `, + resolvers: { + Project: { + resolve: { + resolve: async ({ id }, { name, type }, { workspace }) => { + return await workspace.projectNames({ + project: { id }, + name, + type + }); + } + }, + network: { + resolve: async ({ id }, { name }, { workspace }) => { + const nameRecords = await workspace.projectNames({ + project: { id }, + type: "Network", + name + }); + if (nameRecords.length === 0) { + return; + } + const { resource } = nameRecords[0]; + return await workspace.network(resource); + } + }, + contract: { + resolve: async ({ id }, { name }, { workspace }) => { + const nameRecords = await workspace.projectNames({ + project: { id }, + type: "Contract", + name + }); + if (nameRecords.length === 0) { + return; + } + const { resource } = nameRecords[0]; + return await workspace.contract(resource); + } + } + } + } +}; diff --git a/packages/db/src/workspace/graphql/legacy.ts b/packages/db/src/workspace/graphql/legacy.ts deleted file mode 100644 index e5afc331b04..00000000000 --- a/packages/db/src/workspace/graphql/legacy.ts +++ /dev/null @@ -1,214 +0,0 @@ -export const resolvers = { - Query: { - contractNames: { - resolve: (_, {}, { workspace }) => workspace.contractNames() - }, - contracts: { - resolve: (_, {}, { workspace }) => workspace.contracts() - }, - contract: { - resolve: (_, { id }, { workspace }) => workspace.contract({ id }) - }, - contractInstances: { - resolve: (_, {}, { workspace }) => workspace.contractInstances() - }, - contractInstance: { - resolve: (_, { id }, { workspace }) => workspace.contractInstance({ id }) - }, - networks: { - resolve: (_, {}, { workspace }) => workspace.networks() - }, - network: { - resolve: (_, { id }, { workspace }) => workspace.network({ id }) - }, - nameRecord: { - resolve: (_, { id }, { workspace }) => workspace.nameRecord({ id }) - }, - nameRecords: { - resolve: (_, {}, { workspace }) => workspace.nameRecords() - }, - project: { - resolve: (_, { id }, { workspace }) => workspace.project({ id }) - }, - projects: { - resolve: (_, {}, { workspace }) => workspace.projects() - } - }, - Mutation: { - contractsAdd: { - resolve: (_, { input }, { workspace }) => - workspace.contractsAdd({ input }) - }, - contractInstancesAdd: { - resolve: (_, { input }, { workspace }) => - workspace.contractInstancesAdd({ input }) - }, - networksAdd: { - resolve: (_, { input }, { workspace }) => workspace.networksAdd({ input }) - }, - nameRecordsAdd: { - resolve: async (_, { input }, { workspace }) => { - return await workspace.nameRecordsAdd({ input }); - } - }, - projectsAdd: { - resolve: (_, { input }, { workspace }) => workspace.projectsAdd({ input }) - }, - projectNamesAssign: { - resolve: (_, { input }, { workspace }) => { - return workspace.projectNamesAssign({ input }); - } - } - }, - Named: { - __resolveType: obj => { - if (obj.networkId) { - return "Network"; - } else if (obj.abi) { - return "Contract"; - } else { - return null; - } - } - }, - NameRecord: { - resource: { - resolve: async ({ type, resource: { id } }, _, { workspace }) => { - switch (type) { - case "Contract": - return await workspace.contract({ id }); - case "Network": - return await workspace.network({ id }); - default: - return null; - } - } - }, - previous: { - resolve: ({ id }, _, { workspace }) => workspace.nameRecord({ id }) - } - }, - Project: { - resolve: { - resolve: async ({ id }, { name, type }, { workspace }) => { - return await workspace.projectNames({ - project: { id }, - name, - type - }); - } - }, - network: { - resolve: async ({ id }, { name }, { workspace }) => { - const nameRecords = await workspace.projectNames({ - project: { id }, - type: "Network", - name - }); - if (nameRecords.length === 0) { - return; - } - const { resource } = nameRecords[0]; - return await workspace.network(resource); - } - }, - contract: { - resolve: async ({ id }, { name }, { workspace }) => { - const nameRecords = await workspace.projectNames({ - project: { id }, - type: "Contract", - name - }); - if (nameRecords.length === 0) { - return; - } - const { resource } = nameRecords[0]; - return await workspace.contract(resource); - } - } - }, - ProjectName: { - project: { - resolve: ({ project: { id } }, _, { workspace }) => - workspace.project({ id }) - }, - nameRecord: { - resolve: ({ nameRecord: { id } }, _, { workspace }) => - workspace.nameRecord({ id }) - } - }, - Contract: { - compilation: { - resolve: async ({ compilation }, _, { workspace }) => { - return await workspace.compilation(compilation); - } - }, - processedSource: { - fragment: `... on Contract { compilation { id } }`, - resolve: async ({ processedSource, compilation }, _, { workspace }) => { - const { processedSources } = await workspace.compilation(compilation); - - return processedSources[processedSource.index]; - } - }, - createBytecode: { - resolve: ({ createBytecode: { id } }, _, { workspace }) => - workspace.databases.get("bytecodes", id) - }, - callBytecode: { - resolve: ({ callBytecode }, _, { workspace }) => - workspace.bytecode(callBytecode) - } - }, - ContractInstance: { - network: { - resolve: async ({ network }, _, { workspace }) => - await workspace.network(network) - }, - contract: { - resolve: ({ contract }, _, { workspace }) => workspace.contract(contract) - }, - callBytecode: { - resolve: async ({ callBytecode }, _, { workspace }) => { - let bytecode = await workspace.bytecode(callBytecode.bytecode); - let linkValues = callBytecode.linkValues.map( - ({ value, linkReference }) => { - return { - value: value, - linkReference: bytecode.linkReferences[linkReference.index] - }; - } - ); - return { - bytecode: bytecode, - linkValues: linkValues - }; - } - }, - creation: { - resolve: async (input, _, { workspace }) => { - let bytecode = await workspace.bytecode( - input.creation.constructor.createBytecode.bytecode - ); - let transactionHash = input.creation.transactionHash; - let linkValues = input.creation.constructor.createBytecode.linkValues.map( - ({ value, linkReference }) => { - return { - value: value, - linkReference: bytecode.linkReferences[linkReference.index] - }; - } - ); - return { - transactionHash: transactionHash, - constructor: { - createBytecode: { - bytecode: bytecode, - linkValues: linkValues - } - } - }; - } - } - } -}; diff --git a/packages/db/src/workspace/graphql/schema.ts b/packages/db/src/workspace/graphql/schema.ts index c14d530fda3..26b18c879c6 100644 --- a/packages/db/src/workspace/graphql/schema.ts +++ b/packages/db/src/workspace/graphql/schema.ts @@ -10,8 +10,6 @@ import { MutableCollectionName } from "@truffle/db/meta"; import { Definition, Definitions } from "./types"; -import { schema as rootSchema } from "@truffle/db/schema"; -import { resolvers as legacyResolvers } from "./legacy"; export const forDefinitions = ( definitions: Definitions @@ -27,11 +25,7 @@ class DefinitionsSchema { constructor(options: { definitions: Definitions }) { this.definitions = options.definitions; - this.collections = Object.entries(options.definitions) - // TODO remove this filter+map once all the resources are setup - .filter(([_, definition]) => definition.typeDefs) - .map(([resource]) => resource) - + this.collections = Object.keys(options.definitions) .map((resource: CollectionName) => ({ [resource]: this.createSchema(resource) })) @@ -39,12 +33,58 @@ class DefinitionsSchema { } get typeDefs(): graphql.DocumentNode[] { + const common = gql` + interface Resource { + id: ID! + } + + interface Named { + id: ID! + name: String! + } + + input ResourceReferenceInput { + id: ID! + } + + type Query { + contractNames: [String]! + } + + type Mutation { + _: Boolean + } + `; + return Object.values(this.collections) .map(schema => schema.typeDefs) - .reduce((a, b) => [...a, ...b], [rootSchema]); + .reduce((a, b) => [...a, ...b], [common]); } get resolvers() { + const common = { + Query: { + contractNames: { + resolve: (_, {}, { workspace }) => workspace.contractNames() + } + }, + + Mutation: {}, + + // HACK bit messy to put this here + Named: { + __resolveType: obj => { + if (obj.networkId) { + return "Network"; + } else if (obj.abi) { + return "Contract"; + } else { + return null; + } + } + } + }; + return Object.values(this.collections).reduce( (a, { resolvers: b }) => ({ ...a, @@ -58,7 +98,7 @@ class DefinitionsSchema { ...b.Mutation } }), - legacyResolvers + common ); } diff --git a/packages/db/src/workspace/graphql/types.ts b/packages/db/src/workspace/graphql/types.ts index c8df4f2c2af..7058ecfc652 100644 --- a/packages/db/src/workspace/graphql/types.ts +++ b/packages/db/src/workspace/graphql/types.ts @@ -1,14 +1,24 @@ import * as graphql from "graphql"; import { IResolvers } from "@gnd/graphql-tools"; -import { Collections, CollectionName } from "@truffle/db/meta"; +import { + Collections, + CollectionName, + MutableCollectionName +} from "@truffle/db/meta"; export type Definitions = { - [N in CollectionName]: { - mutable?: boolean; - typeDefs?: graphql.DocumentNode; - resolvers?: IResolvers; - }; + [N in CollectionName]: N extends MutableCollectionName + ? { + mutable: true; + typeDefs: graphql.DocumentNode; + resolvers?: IResolvers; + } + : { + mutable?: boolean; + typeDefs: graphql.DocumentNode; + resolvers?: IResolvers; + }; }; export type Definition< From 1560f41859f3180ab66a41ce37f35dd884be1884 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Fri, 16 Oct 2020 20:13:17 -0400 Subject: [PATCH 41/63] Upgrade various graphql dependencies - Upgrade graphql to v15.3.0 - Upgrade graphql-tag to v2.11.0 - Upgrade graphql-tools to v6.2.4, replacing @gnd/ fork - Upgrade @gql2ts/from-schema to ^2.0.0-4, replacing gql2ts - Upgrade apollo-server to v2.18.2 - Remove unused dependency @truffle/artifactor - Remove unused dependency @gnd/jsonschema2graphql - Remove now-failing and incorrect `boolean` types on some queries - Avoid dummy properties since later graphql now allows blank types --- packages/db/package.json | 14 +- packages/db/src/loaders/test/index.ts | 10 +- packages/db/src/loaders/types.ts | 4 +- packages/db/src/workspace/graphql/schema.ts | 6 +- packages/db/src/workspace/graphql/types.ts | 2 +- yarn.lock | 2029 +++++++++++++------ 6 files changed, 1476 insertions(+), 589 deletions(-) diff --git a/packages/db/package.json b/packages/db/package.json index 0fe30f9eb3f..9ffe21c7211 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -37,8 +37,9 @@ "url": "https://github.com/trufflesuite/truffle/issues" }, "devDependencies": { + "@gql2ts/from-schema": "^2.0.0-4", "@types/express": "^4.16.0", - "@types/graphql": "^14.0.4", + "@types/graphql": "^14.5.0", "@types/jest": "^23.3.11", "@types/node": "^10.12.18", "@types/pluralize": "^0.0.29", @@ -46,7 +47,6 @@ "@types/pouchdb-adapter-leveldb": "^6.1.3", "@types/web3": "1.0.20", "ganache-core": "2.13.0", - "gql2ts": "^1.10.1", "jest": "26.5.2", "jsondown": "^1.0.0", "ts-jest": "26.4.1", @@ -55,15 +55,13 @@ "typescript": "^3.6.3" }, "dependencies": { - "@gnd/graphql-tools": "^4.0.5-fix.0", - "@gnd/jsonschema2graphql": "^1.0.15", - "@truffle/artifactor": "^4.0.82", "@truffle/compile-common": "^0.4.1", "@truffle/workflow-compile": "^3.0.4", - "apollo-server": "^2.3.1", + "apollo-server": "^2.18.2", "fse": "^4.0.1", - "graphql": "^14.0.2", - "graphql-tag": "^2.10.1", + "graphql": "^15.3.0", + "graphql-tag": "^2.11.0", + "graphql-tools": "^6.2.4", "jsondown": "^1.0.0", "leveldown": "^5.2.0", "module-alias": "^2.1.0", diff --git a/packages/db/src/loaders/test/index.ts b/packages/db/src/loaders/test/index.ts index 4b949e573a3..2396971940c 100644 --- a/packages/db/src/loaders/test/index.ts +++ b/packages/db/src/loaders/test/index.ts @@ -158,7 +158,7 @@ const artifacts = [ )) ]; -const GetWorkspaceBytecode: boolean = gql` +const GetWorkspaceBytecode = gql` query GetWorkspaceBytecode($id: ID!) { bytecode(id: $id) { id @@ -172,7 +172,7 @@ const GetWorkspaceBytecode: boolean = gql` } `; -const GetWorkspaceSource: boolean = gql` +const GetWorkspaceSource = gql` query GetWorkspaceSource($id: ID!) { source(id: $id) { id @@ -225,7 +225,7 @@ const GetWorkspaceContract = gql` } `; -const GetWorkspaceCompilation: boolean = gql` +const GetWorkspaceCompilation = gql` query getWorkspaceCompilation($id: ID!) { compilation(id: $id) { compiler { @@ -253,7 +253,7 @@ const GetWorkspaceCompilation: boolean = gql` } `; -const GetWorkspaceNetwork: boolean = gql` +const GetWorkspaceNetwork = gql` query GetWorkspaceNetwork($id: ID!) { network(id: $id) { networkId @@ -267,7 +267,7 @@ const GetWorkspaceNetwork: boolean = gql` } `; -const GetWorkspaceContractInstance: boolean = gql` +const GetWorkspaceContractInstance = gql` query GetContractInstance($id: ID!) { contractInstance(id: $id) { address diff --git a/packages/db/src/loaders/types.ts b/packages/db/src/loaders/types.ts index f2cb8e3971d..acb13530a11 100644 --- a/packages/db/src/loaders/types.ts +++ b/packages/db/src/loaders/types.ts @@ -1,3 +1,5 @@ +import * as graphql from "graphql"; + import { CompiledContract } from "@truffle/compile-common"; import { IdObject } from "@truffle/db/meta"; @@ -33,7 +35,7 @@ export interface LoadedBytecodes { } export interface WorkspaceRequest { - request: string; // GraphQL request + request: string | graphql.DocumentNode; // GraphQL request variables: { [name: string]: any; }; diff --git a/packages/db/src/workspace/graphql/schema.ts b/packages/db/src/workspace/graphql/schema.ts index 26b18c879c6..df6ebb46e6f 100644 --- a/packages/db/src/workspace/graphql/schema.ts +++ b/packages/db/src/workspace/graphql/schema.ts @@ -1,6 +1,6 @@ import gql from "graphql-tag"; import * as graphql from "graphql"; -import { makeExecutableSchema, IResolvers } from "@gnd/graphql-tools"; +import { makeExecutableSchema, IResolvers } from "graphql-tools"; import pascalCase from "pascal-case"; import { singular } from "pluralize"; @@ -51,9 +51,7 @@ class DefinitionsSchema { contractNames: [String]! } - type Mutation { - _: Boolean - } + type Mutation `; return Object.values(this.collections) diff --git a/packages/db/src/workspace/graphql/types.ts b/packages/db/src/workspace/graphql/types.ts index 7058ecfc652..41081666f8c 100644 --- a/packages/db/src/workspace/graphql/types.ts +++ b/packages/db/src/workspace/graphql/types.ts @@ -1,5 +1,5 @@ import * as graphql from "graphql"; -import { IResolvers } from "@gnd/graphql-tools"; +import { IResolvers } from "graphql-tools"; import { Collections, diff --git a/yarn.lock b/yarn.lock index cba9a7f56d8..5123d080f5a 100644 --- a/yarn.lock +++ b/yarn.lock @@ -2,17 +2,65 @@ # yarn lockfile v1 -"@apollographql/apollo-tools@^0.2.6": - version "0.2.9" - resolved "https://registry.yarnpkg.com/@apollographql/apollo-tools/-/apollo-tools-0.2.9.tgz#1e20999d11728ef47f8f812f2be0426b5dde1a51" - integrity sha512-AEIQwPkS0QLbkpb6WyRhV4aOMxuErasp47ABv5niDKOasQH8mrD8JSGKJAHuQxVe4kB8DE9sLRoc5qeQ0KFCHA== +"@apollo/client@^3.1.5": + version "3.2.4" + resolved "https://registry.yarnpkg.com/@apollo/client/-/client-3.2.4.tgz#d9a308a900bd9e7053348367f66f3962804ed385" + integrity sha512-lfsxKINoc11+g4NQFyKFuxszc/GlecHrxkJYvx/oWkdpscSU5bm/c+BwI/yvk1/E3yfbR7Afi9XIYrt212xrtA== dependencies: - apollo-env "0.2.5" + "@graphql-typed-document-node/core" "^3.0.0" + "@types/zen-observable" "^0.8.0" + "@wry/context" "^0.5.2" + "@wry/equality" "^0.2.0" + fast-json-stable-stringify "^2.0.0" + graphql-tag "^2.11.0" + hoist-non-react-statics "^3.3.2" + optimism "^0.13.0" + prop-types "^15.7.2" + symbol-observable "^2.0.0" + terser "^5.2.0" + ts-invariant "^0.4.4" + tslib "^1.10.0" + zen-observable "^0.8.14" -"@apollographql/graphql-playground-html@^1.6.6": - version "1.6.6" - resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.6.tgz#022209e28a2b547dcde15b219f0c50f47aa5beb3" - integrity sha512-lqK94b+caNtmKFs5oUVXlSpN3sm5IXZ+KfhMxOtr0LR2SqErzkoJilitjDvJ1WbjHlxLI7WtCjRmOLdOGJqtMQ== +"@apollo/protobufjs@^1.0.3": + version "1.0.5" + resolved "https://registry.yarnpkg.com/@apollo/protobufjs/-/protobufjs-1.0.5.tgz#a78b726147efc0795e74c8cb8a11aafc6e02f773" + integrity sha512-ZtyaBH1icCgqwIGb3zrtopV2D5Q8yxibkJzlaViM08eOhTQc7rACdYu0pfORFfhllvdMZ3aq69vifYHszY4gNA== + dependencies: + "@protobufjs/aspromise" "^1.1.2" + "@protobufjs/base64" "^1.1.2" + "@protobufjs/codegen" "^2.0.4" + "@protobufjs/eventemitter" "^1.1.0" + "@protobufjs/fetch" "^1.1.0" + "@protobufjs/float" "^1.0.2" + "@protobufjs/inquire" "^1.1.0" + "@protobufjs/path" "^1.1.2" + "@protobufjs/pool" "^1.1.0" + "@protobufjs/utf8" "^1.1.0" + "@types/long" "^4.0.0" + "@types/node" "^10.1.0" + long "^4.0.0" + +"@apollographql/apollo-tools@^0.4.3": + version "0.4.8" + resolved "https://registry.yarnpkg.com/@apollographql/apollo-tools/-/apollo-tools-0.4.8.tgz#d81da89ee880c2345eb86bddb92b35291f6135ed" + integrity sha512-W2+HB8Y7ifowcf3YyPHgDI05izyRtOeZ4MqIr7LbTArtmJ0ZHULWpn84SGMW7NAvTV1tFExpHlveHhnXuJfuGA== + dependencies: + apollo-env "^0.6.5" + +"@apollographql/graphql-playground-html@1.6.26": + version "1.6.26" + resolved "https://registry.yarnpkg.com/@apollographql/graphql-playground-html/-/graphql-playground-html-1.6.26.tgz#2f7b610392e2a872722912fc342b43cf8d641cb3" + integrity sha512-XAwXOIab51QyhBxnxySdK3nuMEUohhDsHQ5Rbco/V1vjlP75zZ0ZLHD9dTpXTN8uxKxopb2lUvJTq+M4g2Q0HQ== + dependencies: + xss "^1.0.6" + +"@ardatan/aggregate-error@0.0.6": + version "0.0.6" + resolved "https://registry.yarnpkg.com/@ardatan/aggregate-error/-/aggregate-error-0.0.6.tgz#fe6924771ea40fc98dc7a7045c2e872dc8527609" + integrity sha512-vyrkEHG1jrukmzTPtyWB4NLPauUw5bQeg4uhn8f+1SSynmrOcyvlb1GKQjjgoBzElLdfXCRYX8UnBlhklOHYRQ== + dependencies: + tslib "~2.0.1" "@babel/code-frame@^7.0.0", "@babel/code-frame@^7.5.5": version "7.5.5" @@ -28,6 +76,28 @@ dependencies: "@babel/highlight" "^7.10.4" +"@babel/core@^7.0.0": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.12.3.tgz#1b436884e1e3bff6fb1328dc02b208759de92ad8" + integrity sha512-0qXcZYKZp3/6N2jKYVxZv0aNCsxTSVCiK72DTiTYZAu7sjg73W0/aynWjMbiGd87EQL4WyA8reiJVh92AVla9g== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helpers" "^7.12.1" + "@babel/parser" "^7.12.3" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + convert-source-map "^1.7.0" + debug "^4.1.0" + gensync "^1.0.0-beta.1" + json5 "^2.1.2" + lodash "^4.17.19" + resolve "^1.3.2" + semver "^5.4.1" + source-map "^0.5.0" + "@babel/core@^7.1.0", "@babel/core@^7.7.5": version "7.11.6" resolved "https://registry.yarnpkg.com/@babel/core/-/core-7.11.6.tgz#3a9455dc7387ff1bac45770650bc13ba04a15651" @@ -50,7 +120,16 @@ semver "^5.4.1" source-map "^0.5.0" -"@babel/generator@^7.11.5", "@babel/generator@^7.11.6": +"@babel/generator@^7.11.5", "@babel/generator@^7.12.1", "@babel/generator@^7.5.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.12.1.tgz#0d70be32bdaa03d7c51c8597dda76e0df1f15468" + integrity sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg== + dependencies: + "@babel/types" "^7.12.1" + jsesc "^2.5.1" + source-map "^0.5.0" + +"@babel/generator@^7.11.6": version "7.11.6" resolved "https://registry.yarnpkg.com/@babel/generator/-/generator-7.11.6.tgz#b868900f81b163b4d464ea24545c61cbac4dc620" integrity sha512-DWtQ1PV3r+cLbySoHrwn9RWEgKMBLLma4OBQloPRyDYvc5msJM9kvTLo1YnlJd1P/ZuKbdli3ijr5q3FvAF3uA== @@ -69,6 +148,50 @@ lodash "^4.17.13" source-map "^0.5.0" +"@babel/helper-annotate-as-pure@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.10.4.tgz#5bf0d495a3f757ac3bda48b5bf3b3ba309c72ba3" + integrity sha512-XQlqKQP4vXFB7BN8fEEerrmYvHp3fK/rBkRFz9jaJbzK0B1DSfej9Kc7ZzE8Z/OnId1jpJdNAZ3BFQjWG68rcA== + dependencies: + "@babel/types" "^7.10.4" + +"@babel/helper-builder-react-jsx-experimental@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx-experimental/-/helper-builder-react-jsx-experimental-7.12.1.tgz#1f1ad4c95f1d059856d2fdbc0763489d020cd02d" + integrity sha512-82to8lR7TofZWbTd3IEZT1xNHfeU/Ef4rDm/GLXddzqDh+yQ19QuGSzqww51aNxVH8rwfRIzL0EUQsvODVhtyw== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-module-imports" "^7.12.1" + "@babel/types" "^7.12.1" + +"@babel/helper-builder-react-jsx@^7.10.4": + version "7.10.4" + resolved "https://registry.yarnpkg.com/@babel/helper-builder-react-jsx/-/helper-builder-react-jsx-7.10.4.tgz#8095cddbff858e6fa9c326daee54a2f2732c1d5d" + integrity sha512-5nPcIZ7+KKDxT1427oBivl9V9YTal7qk0diccnh7RrcgrT/pGFOjgGw1dgryyx1GvHEpXVfoDF6Ak3rTiWh8Rg== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/types" "^7.10.4" + +"@babel/helper-create-class-features-plugin@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.12.1.tgz#3c45998f431edd4a9214c5f1d3ad1448a6137f6e" + integrity sha512-hkL++rWeta/OVOBTRJc9a5Azh5mt5WgZUGAKMD8JM141YsE08K//bp1unBBieO6rUKkIPyUE0USQ30jAy3Sk1w== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + +"@babel/helper-define-map@^7.10.4": + version "7.10.5" + resolved "https://registry.yarnpkg.com/@babel/helper-define-map/-/helper-define-map-7.10.5.tgz#b53c10db78a640800152692b13393147acb9bb30" + integrity sha512-fMw4kgFB720aQFXSVaXr79pjjcW5puTCM16+rECJ/plGS+zByelE8l9nCpV1GibxTnFVmUuYG9U8wYfQHdzOEQ== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/types" "^7.10.5" + lodash "^4.17.19" + "@babel/helper-function-name@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz#d2d3b20c59ad8c47112fa7d2a94bc09d5ef82f1a" @@ -108,6 +231,13 @@ dependencies: "@babel/types" "^7.11.0" +"@babel/helper-member-expression-to-functions@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.12.1.tgz#fba0f2fcff3fba00e6ecb664bb5e6e26e2d6165c" + integrity sha512-k0CIe3tXUKTRSoEx1LQEPFU9vRQfqHtl+kf8eNnDqb4AUJEy5pz6aIiog+YWtVm2jpggjS1laH68bPsR+KWWPQ== + dependencies: + "@babel/types" "^7.12.1" + "@babel/helper-module-imports@^7.10.3": version "7.10.3" resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.10.3.tgz#766fa1d57608e53e5676f23ae498ec7a95e1b11a" @@ -122,6 +252,13 @@ dependencies: "@babel/types" "^7.10.4" +"@babel/helper-module-imports@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-imports/-/helper-module-imports-7.12.1.tgz#1644c01591a15a2f084dd6d092d9430eb1d1216c" + integrity sha512-ZeC1TlMSvikvJNy1v/wPIazCu3NdOwgYZLIkmIyAsGhqkNpiDoQQRmaCK8YP4Pq3GPTLPV9WXaPCJKvx06JxKA== + dependencies: + "@babel/types" "^7.12.1" + "@babel/helper-module-transforms@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.11.0.tgz#b16f250229e47211abdd84b34b64737c2ab2d359" @@ -135,6 +272,21 @@ "@babel/types" "^7.11.0" lodash "^4.17.19" +"@babel/helper-module-transforms@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-module-transforms/-/helper-module-transforms-7.12.1.tgz#7954fec71f5b32c48e4b303b437c34453fd7247c" + integrity sha512-QQzehgFAZ2bbISiCpmVGfiGux8YVFXQ0abBic2Envhej22DVXV9nCFaS5hIQbkyo1AdGb+gNME2TSh3hYJVV/w== + dependencies: + "@babel/helper-module-imports" "^7.12.1" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-simple-access" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/helper-validator-identifier" "^7.10.4" + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + lodash "^4.17.19" + "@babel/helper-optimise-call-expression@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.10.4.tgz#50dc96413d594f995a77905905b05893cd779673" @@ -162,6 +314,16 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helper-replace-supers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-replace-supers/-/helper-replace-supers-7.12.1.tgz#f15c9cc897439281891e11d5ce12562ac0cf3fa9" + integrity sha512-zJjTvtNJnCFsCXVi5rUInstLd/EIVNmIKA1Q9ynESmMBWPWd+7sdR+G4/wdu+Mppfep0XLyG2m7EBPvjCeFyrw== + dependencies: + "@babel/helper-member-expression-to-functions" "^7.12.1" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + "@babel/helper-simple-access@^7.10.4": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.10.4.tgz#0f5ccda2945277a2a7a2d3a821e15395edcf3461" @@ -170,7 +332,21 @@ "@babel/template" "^7.10.4" "@babel/types" "^7.10.4" -"@babel/helper-split-export-declaration@^7.11.0": +"@babel/helper-simple-access@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-simple-access/-/helper-simple-access-7.12.1.tgz#32427e5aa61547d38eb1e6eaf5fd1426fdad9136" + integrity sha512-OxBp7pMrjVewSSC8fXDFrHrBcJATOOFssZwv16F3/6Xtc138GHybBfPbm9kfiqQHKhYQrlamWILwlDCeyMFEaA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-skip-transparent-expression-wrappers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helper-skip-transparent-expression-wrappers/-/helper-skip-transparent-expression-wrappers-7.12.1.tgz#462dc63a7e435ade8468385c63d2b84cce4b3cbf" + integrity sha512-Mf5AUuhG1/OCChOJ/HcADmvcHM42WJockombn8ATJG3OnyiSxBK/Mm5x78BQWvmtXZKHgbjdGL2kin/HOLlZGA== + dependencies: + "@babel/types" "^7.12.1" + +"@babel/helper-split-export-declaration@^7.10.4", "@babel/helper-split-export-declaration@^7.11.0": version "7.11.0" resolved "https://registry.yarnpkg.com/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz#f8a491244acf6a676158ac42072911ba83ad099f" integrity sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg== @@ -203,6 +379,15 @@ "@babel/traverse" "^7.10.4" "@babel/types" "^7.10.4" +"@babel/helpers@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/helpers/-/helpers-7.12.1.tgz#8a8261c1d438ec18cb890434df4ec768734c1e79" + integrity sha512-9JoDSBGoWtmbay98efmT2+mySkwjzeFeAL9BuWNoVQpkPFQF8SIIFUfY5os9u8wVzglzoiPRSW7cuJmBDUt43g== + dependencies: + "@babel/template" "^7.10.4" + "@babel/traverse" "^7.12.1" + "@babel/types" "^7.12.1" + "@babel/highlight@^7.0.0": version "7.5.0" resolved "https://registry.yarnpkg.com/@babel/highlight/-/highlight-7.5.0.tgz#56d11312bd9248fa619591d02472be6e8cb32540" @@ -221,16 +406,38 @@ chalk "^2.0.0" js-tokens "^4.0.0" -"@babel/parser@^7.1.0", "@babel/parser@^7.10.4", "@babel/parser@^7.11.5": +"@babel/parser@7.11.5", "@babel/parser@^7.1.0": version "7.11.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.11.5.tgz#c7ff6303df71080ec7a4f5b8c003c58f1cf51037" integrity sha512-X9rD8qqm695vgmeaQ4fvz/o3+Wk4ZzQvSHkDBgpYKxpD4qTAUm88ZKtHkVqIOsYFFbIQ6wQYhC6q7pjqVK0E0Q== +"@babel/parser@^7.0.0", "@babel/parser@^7.10.4", "@babel/parser@^7.11.5", "@babel/parser@^7.12.1", "@babel/parser@^7.12.3": + version "7.12.3" + resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.12.3.tgz#a305415ebe7a6c7023b40b5122a0662d928334cd" + integrity sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw== + "@babel/parser@^7.4.3", "@babel/parser@^7.7.4": version "7.7.5" resolved "https://registry.yarnpkg.com/@babel/parser/-/parser-7.7.5.tgz#cbf45321619ac12d83363fcf9c94bb67fa646d71" integrity sha512-KNlOe9+/nk4i29g0VXgl8PEXIRms5xKLJeuZ6UptN0fHv+jDiriG+y94X6qAgWTR0h3KaoM1wK5G5h7MHFRSig== +"@babel/plugin-proposal-class-properties@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.12.1.tgz#a082ff541f2a29a4821065b8add9346c0c16e5de" + integrity sha512-cKp3dlQsFsEs5CWKnN7BnSHOd0EOW8EKpEjkoz1pO2E5KzIDNV9Ros1b0CnmbVgAGXJubOYVBOGCT1OmJwOI7w== + dependencies: + "@babel/helper-create-class-features-plugin" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-proposal-object-rest-spread@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.12.1.tgz#def9bd03cea0f9b72283dac0ec22d289c7691069" + integrity sha512-s6SowJIjzlhx8o7lsFx5zmY4At6CTtDvgNQDdPzkBQucle58A6b/TTeEBYtyDgmcXjUTM+vE8YOGHZzzbc/ioA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-object-rest-spread" "^7.8.0" + "@babel/plugin-transform-parameters" "^7.12.1" + "@babel/plugin-syntax-async-generators@^7.8.4": version "7.8.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz#a983fb1aeb2ec3f6ed042a210f640e90e786fe0d" @@ -245,6 +452,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-class-properties@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.1.tgz#bcb297c5366e79bebadef509549cd93b04f19978" + integrity sha512-U40A76x5gTwmESz+qiqssqmeEsKvcSyvtgktrm0uzcARAmM9I1jR221f6Oq+GmHrcD+LvZDag1UTOTe2fL3TeA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-class-properties@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.10.4.tgz#6644e6a0baa55a61f9e3231f6c9eeb6ee46c124c" @@ -252,6 +466,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" +"@babel/plugin-syntax-flow@^7.0.0", "@babel/plugin-syntax-flow@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.12.1.tgz#a77670d9abe6d63e8acadf4c31bb1eb5a506bbdd" + integrity sha512-1lBLLmtxrwpm4VKmtVFselI/P3pX+G63fAtUUt6b2Nzgao77KNDwyuRt90Mj2/9pKobtt68FdvjfqohZjg/FCA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-import-meta@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz#ee601348c370fa334d2207be158777496521fd51" @@ -266,6 +487,13 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-syntax-jsx@^7.0.0", "@babel/plugin-syntax-jsx@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.12.1.tgz#9d9d357cc818aa7ae7935917c1257f67677a0926" + integrity sha512-1yRi7yAtB0ETgxdY9ti/p2TivUxJkTdhu/ZbF9MshVGqOx1TdB3b7xCXs49Fupgg50N45KcAsRP/ZqWjs9SRjg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-logical-assignment-operators@^7.8.3": version "7.10.4" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz#ca91ef46303530448b906652bac2e9fe9941f699" @@ -287,7 +515,7 @@ dependencies: "@babel/helper-plugin-utils" "^7.10.4" -"@babel/plugin-syntax-object-rest-spread@^7.8.3": +"@babel/plugin-syntax-object-rest-spread@^7.0.0", "@babel/plugin-syntax-object-rest-spread@^7.8.0", "@babel/plugin-syntax-object-rest-spread@^7.8.3": version "7.8.3" resolved "https://registry.yarnpkg.com/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz#60e225edcbd98a640332a2e72dd3e66f1af55871" integrity sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA== @@ -308,6 +536,141 @@ dependencies: "@babel/helper-plugin-utils" "^7.8.0" +"@babel/plugin-transform-arrow-functions@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.12.1.tgz#8083ffc86ac8e777fbe24b5967c4b2521f3cb2b3" + integrity sha512-5QB50qyN44fzzz4/qxDPQMBCTHgxg3n0xRBLJUmBlLoU/sFvxVWGZF/ZUfMVDQuJUKXaBhbupxIzIfZ6Fwk/0A== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-block-scoped-functions@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.12.1.tgz#f2a1a365bde2b7112e0a6ded9067fdd7c07905d9" + integrity sha512-5OpxfuYnSgPalRpo8EWGPzIYf0lHBWORCkj5M0oLBwHdlux9Ri36QqGW3/LR13RSVOAoUUMzoPI/jpE4ABcHoA== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-block-scoping@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.12.1.tgz#f0ee727874b42a208a48a586b84c3d222c2bbef1" + integrity sha512-zJyAC9sZdE60r1nVQHblcfCj29Dh2Y0DOvlMkcqSo0ckqjiCwNiUezUKw+RjOCwGfpLRwnAeQ2XlLpsnGkvv9w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-classes@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-classes/-/plugin-transform-classes-7.12.1.tgz#65e650fcaddd3d88ddce67c0f834a3d436a32db6" + integrity sha512-/74xkA7bVdzQTBeSUhLLJgYIcxw/dpEpCdRDiHgPJ3Mv6uC11UhjpOhl72CgqbBCmt1qtssCyB2xnJm1+PFjog== + dependencies: + "@babel/helper-annotate-as-pure" "^7.10.4" + "@babel/helper-define-map" "^7.10.4" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-optimise-call-expression" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + "@babel/helper-split-export-declaration" "^7.10.4" + globals "^11.1.0" + +"@babel/plugin-transform-computed-properties@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.12.1.tgz#d68cf6c9b7f838a8a4144badbe97541ea0904852" + integrity sha512-vVUOYpPWB7BkgUWPo4C44mUQHpTZXakEqFjbv8rQMg7TC6S6ZhGZ3otQcRH6u7+adSlE5i0sp63eMC/XGffrzg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-destructuring@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.12.1.tgz#b9a570fe0d0a8d460116413cb4f97e8e08b2f847" + integrity sha512-fRMYFKuzi/rSiYb2uRLiUENJOKq4Gnl+6qOv5f8z0TZXg3llUwUhsNNwrwaT/6dUhJTzNpBr+CUvEWBtfNY1cw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-flow-strip-types@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.12.1.tgz#8430decfa7eb2aea5414ed4a3fa6e1652b7d77c4" + integrity sha512-8hAtkmsQb36yMmEtk2JZ9JnVyDSnDOdlB+0nEGzIDLuK4yR3JcEjfuFPYkdEPSh8Id+rAMeBEn+X0iVEyho6Hg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-flow" "^7.12.1" + +"@babel/plugin-transform-for-of@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.12.1.tgz#07640f28867ed16f9511c99c888291f560921cfa" + integrity sha512-Zaeq10naAsuHo7heQvyV0ptj4dlZJwZgNAtBYBnu5nNKJoW62m0zKcIEyVECrUKErkUkg6ajMy4ZfnVZciSBhg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-function-name@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.12.1.tgz#2ec76258c70fe08c6d7da154003a480620eba667" + integrity sha512-JF3UgJUILoFrFMEnOJLJkRHSk6LUSXLmEFsA23aR2O5CSLUxbeUX1IZ1YQ7Sn0aXb601Ncwjx73a+FVqgcljVw== + dependencies: + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-literals@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-literals/-/plugin-transform-literals-7.12.1.tgz#d73b803a26b37017ddf9d3bb8f4dc58bfb806f57" + integrity sha512-+PxVGA+2Ag6uGgL0A5f+9rklOnnMccwEBzwYFL3EUaKuiyVnUipyXncFcfjSkbimLrODoqki1U9XxZzTvfN7IQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-member-expression-literals@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.12.1.tgz#496038602daf1514a64d43d8e17cbb2755e0c3ad" + integrity sha512-1sxePl6z9ad0gFMB9KqmYofk34flq62aqMt9NqliS/7hPEpURUCMbyHXrMPlo282iY7nAvUB1aQd5mg79UD9Jg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-modules-commonjs@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.12.1.tgz#fa403124542636c786cf9b460a0ffbb48a86e648" + integrity sha512-dY789wq6l0uLY8py9c1B48V8mVL5gZh/+PQ5ZPrylPYsnAvnEMjqsUXkuoDVPeVK+0VyGar+D08107LzDQ6pag== + dependencies: + "@babel/helper-module-transforms" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-simple-access" "^7.12.1" + babel-plugin-dynamic-import-node "^2.3.3" + +"@babel/plugin-transform-object-super@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.12.1.tgz#4ea08696b8d2e65841d0c7706482b048bed1066e" + integrity sha512-AvypiGJH9hsquNUn+RXVcBdeE3KHPZexWRdimhuV59cSoOt5kFBmqlByorAeUlGG2CJWd0U+4ZtNKga/TB0cAw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-replace-supers" "^7.12.1" + +"@babel/plugin-transform-parameters@^7.0.0", "@babel/plugin-transform-parameters@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.12.1.tgz#d2e963b038771650c922eff593799c96d853255d" + integrity sha512-xq9C5EQhdPK23ZeCdMxl8bbRnAgHFrw5EOC3KJUsSylZqdkCaFEXxGSBuTSObOpiiHHNyb82es8M1QYgfQGfNg== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-property-literals@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.12.1.tgz#41bc81200d730abb4456ab8b3fbd5537b59adecd" + integrity sha512-6MTCR/mZ1MQS+AwZLplX4cEySjCpnIF26ToWo942nqn8hXSm7McaHQNeGx/pt7suI1TWOWMfa/NgBhiqSnX0cQ== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-display-name@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.12.1.tgz#1cbcd0c3b1d6648c55374a22fc9b6b7e5341c00d" + integrity sha512-cAzB+UzBIrekfYxyLlFqf/OagTvHLcVBb5vpouzkYkBclRPraiygVnafvAoipErZLI8ANv8Ecn6E/m5qPXD26w== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-react-jsx@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.12.1.tgz#c2d96c77c2b0e4362cc4e77a43ce7c2539d478cb" + integrity sha512-RmKejwnT0T0QzQUzcbP5p1VWlpnP8QHtdhEtLG55ZDQnJNalbF3eeDyu3dnGKvGzFIQiBzFhBYTwvv435p9Xpw== + dependencies: + "@babel/helper-builder-react-jsx" "^7.10.4" + "@babel/helper-builder-react-jsx-experimental" "^7.12.1" + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/plugin-syntax-jsx" "^7.12.1" + "@babel/plugin-transform-runtime@^7.5.5": version "7.10.3" resolved "https://registry.yarnpkg.com/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.10.3.tgz#3b287b06acc534a7cb6e6c71d6b1d88b1922dd6c" @@ -318,6 +681,28 @@ resolve "^1.8.1" semver "^5.5.1" +"@babel/plugin-transform-shorthand-properties@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.12.1.tgz#0bf9cac5550fce0cfdf043420f661d645fdc75e3" + integrity sha512-GFZS3c/MhX1OusqB1MZ1ct2xRzX5ppQh2JU1h2Pnfk88HtFTM+TWQqJNfwkmxtPQtb/s1tk87oENfXJlx7rSDw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + +"@babel/plugin-transform-spread@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-spread/-/plugin-transform-spread-7.12.1.tgz#527f9f311be4ec7fdc2b79bb89f7bf884b3e1e1e" + integrity sha512-vuLp8CP0BE18zVYjsEBZ5xoCecMK6LBMMxYzJnh01rxQRvhNhH1csMMmBfNo5tGpGO+NhdSNW2mzIvBu3K1fng== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/helper-skip-transparent-expression-wrappers" "^7.12.1" + +"@babel/plugin-transform-template-literals@^7.0.0": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.12.1.tgz#b43ece6ed9a79c0c71119f576d299ef09d942843" + integrity sha512-b4Zx3KHi+taXB1dVRBhVJtEPi9h1THCeKmae2qP0YdUHIFhVjtpqqNfxeVAa1xeHVhAy4SbHxEwx5cltAu5apw== + dependencies: + "@babel/helper-plugin-utils" "^7.10.4" + "@babel/runtime-corejs2@^7.2.0": version "7.7.6" resolved "https://registry.yarnpkg.com/@babel/runtime-corejs2/-/runtime-corejs2-7.7.6.tgz#50b7cd4eab929b4cb66167c4972d35eaceaa124b" @@ -326,6 +711,13 @@ core-js "^2.6.5" regenerator-runtime "^0.13.2" +"@babel/runtime@^7.0.0", "@babel/runtime@^7.11.2": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.12.1.tgz#b4116a6b6711d010b2dad3b7b6e43bf1b9954740" + integrity sha512-J5AIf3vPj3UwXaAzb5j1xM4WAQDX3EMgemF8rjCP3SoW09LfRKAXQKt6CoVYl230P6iWdRcBbnLDDdnqWxZSCA== + dependencies: + regenerator-runtime "^0.13.4" + "@babel/runtime@^7.5.5": version "7.10.3" resolved "https://registry.yarnpkg.com/@babel/runtime/-/runtime-7.10.3.tgz#670d002655a7c366540c67f6fd3342cd09500364" @@ -358,7 +750,7 @@ "@babel/parser" "^7.7.4" "@babel/types" "^7.7.4" -"@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5": +"@babel/traverse@7.11.5", "@babel/traverse@^7.1.0", "@babel/traverse@^7.10.4", "@babel/traverse@^7.11.5": version "7.11.5" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.11.5.tgz#be777b93b518eb6d76ee2e1ea1d143daa11e61c3" integrity sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ== @@ -373,6 +765,21 @@ globals "^11.1.0" lodash "^4.17.19" +"@babel/traverse@^7.0.0", "@babel/traverse@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.12.1.tgz#941395e0c5cc86d5d3e75caa095d3924526f0c1e" + integrity sha512-MA3WPoRt1ZHo2ZmoGKNqi20YnPt0B1S0GTZEPhhd+hw2KGUzBlHuVunj6K4sNuK+reEvyiPwtp0cpaqLzJDmAw== + dependencies: + "@babel/code-frame" "^7.10.4" + "@babel/generator" "^7.12.1" + "@babel/helper-function-name" "^7.10.4" + "@babel/helper-split-export-declaration" "^7.11.0" + "@babel/parser" "^7.12.1" + "@babel/types" "^7.12.1" + debug "^4.1.0" + globals "^11.1.0" + lodash "^4.17.19" + "@babel/traverse@^7.4.3": version "7.7.4" resolved "https://registry.yarnpkg.com/@babel/traverse/-/traverse-7.7.4.tgz#9c1e7c60fb679fe4fcfaa42500833333c2058558" @@ -388,7 +795,7 @@ globals "^11.1.0" lodash "^4.17.13" -"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3": +"@babel/types@7.11.5", "@babel/types@^7.3.0", "@babel/types@^7.3.3": version "7.11.5" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.11.5.tgz#d9de577d01252d77c6800cee039ee64faf75662d" integrity sha512-bvM7Qz6eKnJVFIn+1LPtjlBFPVN5jNDc1XmN15vWe7Q3DPBufWWsLiIvUu7xW87uTG6QoggpIDnUgLQvPheU+Q== @@ -397,6 +804,15 @@ lodash "^4.17.19" to-fast-properties "^2.0.0" +"@babel/types@^7.0.0", "@babel/types@^7.10.4", "@babel/types@^7.10.5", "@babel/types@^7.11.0", "@babel/types@^7.11.5", "@babel/types@^7.12.1": + version "7.12.1" + resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.12.1.tgz#e109d9ab99a8de735be287ee3d6a9947a190c4ae" + integrity sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA== + dependencies: + "@babel/helper-validator-identifier" "^7.10.4" + lodash "^4.17.19" + to-fast-properties "^2.0.0" + "@babel/types@^7.10.3": version "7.10.3" resolved "https://registry.yarnpkg.com/@babel/types/-/types-7.10.3.tgz#6535e3b79fea86a6b09e012ea8528f935099de8e" @@ -658,30 +1074,6 @@ unique-filename "^1.1.1" which "^1.3.1" -"@gnd/graphql-tools@^4.0.5-fix.0": - version "4.0.5-fix.0" - resolved "https://registry.yarnpkg.com/@gnd/graphql-tools/-/graphql-tools-4.0.5-fix.0.tgz#cd25d232e93be352ccde3f535fa5b4e9b3d7fa7a" - integrity sha512-ZhC4n7KGFnkhsxu9psg3DG8/lmu6+5LvGo2RgZhy8/+eyVimk0QYX8Ds5r8/ceFtoAEHiGzr1YzMiLj/J6LtYA== - dependencies: - apollo-link "^1.2.3" - apollo-utilities "^1.0.1" - deprecated-decorator "^0.1.6" - iterall "^1.1.3" - uuid "^3.1.0" - -"@gnd/jsonschema2graphql@^1.0.15": - version "1.0.15" - resolved "https://registry.yarnpkg.com/@gnd/jsonschema2graphql/-/jsonschema2graphql-1.0.15.tgz#d5abd7ec425874ac9d93b6ba2faaf74d015ae294" - integrity sha512-dcUCGh9ZKTCNbs79rlFQq9gMLLZu2LHWkqIeEWfO8Z7wjwTvhSZTe3E2/h0/laCEWoyp14gBVTJoeRn6qiEPLQ== - dependencies: - ajv "^6.5.4" - camelcase "^5.0.0" - graphql "14.0.2" - lodash "^4.17.11" - pluralize "^7.0.0" - ramda "^0.25.0" - uppercamelcase "^3.0.0" - "@gnd/typedoc@0.15.0-0": version "0.15.0-0" resolved "https://registry.yarnpkg.com/@gnd/typedoc/-/typedoc-0.15.0-0.tgz#bb2fd8f316e496cabab0f33966f5f1581e974f86" @@ -699,35 +1091,262 @@ typedoc-default-themes "^0.6.0" typescript "3.6.x" -"@gql2ts/from-query@^1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@gql2ts/from-query/-/from-query-1.9.0.tgz#ae92a4fa3df005df57eb835b371d7964644b9beb" - integrity sha512-hfH2Oq3ikHu+zKE4b9kdGbzEqFiX+VxIg0nhgpY5iUgl975cAtTFhAdwfzr/jKdZhC9Ad5dE1CPrjEA+G7hzMg== +"@gql2ts/from-schema@^2.0.0-4": + version "2.0.0-4" + resolved "https://registry.yarnpkg.com/@gql2ts/from-schema/-/from-schema-2.0.0-4.tgz#9927dd0d991e64101ad443cadee8c47f347f1db9" + integrity sha512-dx9OCgL5A6IiDecIFxKyfbpzCsEI6dbyCLlYwQU0dzr+L3IN0YkEIpNtPmO83W1MRZAi34G1AiKZBgbRcT0S9g== dependencies: - "@gql2ts/language-typescript" "^1.9.0" - "@gql2ts/util" "^1.9.0" - -"@gql2ts/from-schema@^1.10.1": - version "1.10.1" - resolved "https://registry.yarnpkg.com/@gql2ts/from-schema/-/from-schema-1.10.1.tgz#f8bb1f9525d5731163b16f5bcf300f87ef560273" - integrity sha512-atYXxY8WBBfK39fEbdwx3CgqRYYUR10a1hGPIwVcvEuNYIlAnIUR1drVbmC3higwMbAyHGkMxDPJ9Us7tnNz6w== - dependencies: - "@gql2ts/language-typescript" "^1.9.0" - "@gql2ts/util" "^1.9.0" + "@gql2ts/language-typescript" "^2.0.0-0" + "@gql2ts/util" "^2.0.0-0" dedent "^0.7.0" -"@gql2ts/language-typescript@^1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@gql2ts/language-typescript/-/language-typescript-1.9.0.tgz#c521e800817d1341552e9c684bca6b64b0abb46f" - integrity sha512-d3OlIFMjKoXH+VukXD7+pQRLgrP3NkXDQbCWSGonIl5mpRQ5aO5I8Fo53cMZQ9xCjj1Y5Vg24wtZOuY8spc6Ag== +"@gql2ts/language-typescript@^2.0.0-0": + version "2.0.0-0" + resolved "https://registry.yarnpkg.com/@gql2ts/language-typescript/-/language-typescript-2.0.0-0.tgz#733c611a11a1061e7bedde679cd347b37c5cdbe0" + integrity sha512-7jxNsQutjQ5rUfOxNZuovUXFldIA5hhIjQh95aJLQIRYKBVDCIceM6QpCCbf1iuhwx4P23jx1kc/4uLsAJHnug== dependencies: - "@gql2ts/util" "^1.9.0" + "@gql2ts/util" "^2.0.0-0" humps "^2.0.0" -"@gql2ts/util@^1.9.0": - version "1.9.0" - resolved "https://registry.yarnpkg.com/@gql2ts/util/-/util-1.9.0.tgz#d07a54832757d2f2d1fc9891e5b0e3e3b4886c6a" - integrity sha512-mkHar7AdyShUFJE6Mlke1tUbb+lPCK1EozZeAhCuRrhQ5aCCBAG6RxzNUYX1Q2jeGeyU0WRAtQu1oE/GoIsNXA== +"@gql2ts/util@^2.0.0-0": + version "2.0.0-0" + resolved "https://registry.yarnpkg.com/@gql2ts/util/-/util-2.0.0-0.tgz#865599a661042b64da73a35e1d5d0cc52f72a976" + integrity sha512-lMUYZZtoo31klzenNvJ4cMYzFbs3T4peT7fSlCAq1EEthbIuXFtrY8aFIa2Y5BdrnhoHFYDgdlYbr3xJ0j1teA== + +"@graphql-tools/batch-delegate@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/batch-delegate/-/batch-delegate-6.2.4.tgz#8aab19ff69939c1a8bd3bebb4b1a3ff13c933559" + integrity sha512-sDWHMuTVGB2ShAnMAF1fLgaPMDgvweUYBXKuef9qHtCE0YtSO8xhP72CtQvHDOIJf30emWTmFFIsw6zbRe1ZWA== + dependencies: + "@graphql-tools/delegate" "^6.2.4" + dataloader "2.0.0" + tslib "~2.0.1" + +"@graphql-tools/code-file-loader@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/code-file-loader/-/code-file-loader-6.2.4.tgz#ce194c19b2fcd714bffa4c0c529a4c65a6b0db4b" + integrity sha512-aDVI/JVUXIdqSJJKLjpBaqOAOCa5yUvsgQZu2Q9nVwV9faGlQi5MUuYAh1xp0LW80/5/unbiZ5/taRUyUY/6Eg== + dependencies: + "@graphql-tools/graphql-tag-pluck" "^6.2.4" + "@graphql-tools/utils" "^6.2.4" + fs-extra "9.0.1" + tslib "~2.0.1" + +"@graphql-tools/delegate@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/delegate/-/delegate-6.2.4.tgz#db553b63eb9512d5eb5bbfdfcd8cb1e2b534699c" + integrity sha512-mXe6DfoWmq49kPcDrpKHgC2DSWcD5q0YCaHHoXYPAOlnLH8VMTY8BxcE8y/Do2eyg+GLcwAcrpffVszWMwqw0w== + dependencies: + "@ardatan/aggregate-error" "0.0.6" + "@graphql-tools/schema" "^6.2.4" + "@graphql-tools/utils" "^6.2.4" + dataloader "2.0.0" + is-promise "4.0.0" + tslib "~2.0.1" + +"@graphql-tools/git-loader@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/git-loader/-/git-loader-6.2.4.tgz#2502d48cb1253bde7df3f3e1dfd2bdcf7ff72b82" + integrity sha512-urMwWhhsZUKnX9MDHXbMUfZd568pWwj1Bx1O2M7N8I25GqZDW54Fzj9DudlVKE5M9twMtoEyBTH7sH4tscliqg== + dependencies: + "@graphql-tools/graphql-tag-pluck" "^6.2.4" + "@graphql-tools/utils" "^6.2.4" + tslib "~2.0.1" + +"@graphql-tools/github-loader@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/github-loader/-/github-loader-6.2.4.tgz#38520b5964594a578dbb4a7693a76938a79877a1" + integrity sha512-p4peplm/Ot989bCD4XATK5NEXX7l39BXNw+YKaqgoEoHopyQ142I2Zb0GJiMRjW9yXGqIlDjG4reZazleiprgQ== + dependencies: + "@graphql-tools/graphql-tag-pluck" "^6.2.4" + "@graphql-tools/utils" "^6.2.4" + cross-fetch "3.0.6" + tslib "~2.0.1" + +"@graphql-tools/graphql-file-loader@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-file-loader/-/graphql-file-loader-6.2.4.tgz#1765b644cd621040f232f5c32321b45c187399a7" + integrity sha512-IcdUZoOlkCGr0KO8QCO8G031CDDv5dzHBZeN5H1gzE2AVFFwn2AexysrUXBxftm2DQIOuV+Knap7dC4Ol54kNA== + dependencies: + "@graphql-tools/import" "^6.2.4" + "@graphql-tools/utils" "^6.2.4" + fs-extra "9.0.1" + tslib "~2.0.1" + +"@graphql-tools/graphql-tag-pluck@^6.2.4": + version "6.2.5" + resolved "https://registry.yarnpkg.com/@graphql-tools/graphql-tag-pluck/-/graphql-tag-pluck-6.2.5.tgz#5c0c47362406a55aaf661c4af0209b542b8483dc" + integrity sha512-qvdIOTanBuKYLIMSYl9Tk+ej9dq00B4BqUnHqoCvYtSjD1n1UINGrqXgwMT+JXp66gUZWw8BU9Ke92mQ4UwTpg== + dependencies: + "@babel/parser" "7.11.5" + "@babel/traverse" "7.11.5" + "@babel/types" "7.11.5" + "@graphql-tools/utils" "^6.2.4" + tslib "~2.0.1" + optionalDependencies: + vue-template-compiler "^2.6.12" + +"@graphql-tools/import@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/import/-/import-6.2.4.tgz#0547f6d4754a924e80439d6af013577cdb617194" + integrity sha512-Q6fk6hbtDevoEVcgwb3WRn7XOqGY4MnX3Mvc+x8/b8k4RZ4wT+0WSLRDXGAKiVKRxGhgouU2lZVnGE/LDrGSCg== + dependencies: + fs-extra "9.0.1" + resolve-from "5.0.0" + tslib "~2.0.1" + +"@graphql-tools/json-file-loader@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/json-file-loader/-/json-file-loader-6.2.4.tgz#0707fedfced73dd91b1dd81dfa02e83413e5aeaa" + integrity sha512-1iL6wwZrUt888hExlNEloSpNXuuUFYD2KV2FZ82t6yiq6bO9Iyg12SUuGd5xVXx9jUkdaHRZc0plMyuIA6gTGA== + dependencies: + "@graphql-tools/utils" "^6.2.4" + fs-extra "9.0.1" + tslib "~2.0.1" + +"@graphql-tools/links@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/links/-/links-6.2.4.tgz#f06bfae67ec2485706af98ae9ad58dbf78a6bcea" + integrity sha512-dQH3oWVTkCwzGmfIi1OjyKAjPw1jOexP1f3hv8UajgU7Um/DCjVkvXQHeMGlihXg4bH/wogFheCJ0SwF4oFFUA== + dependencies: + "@graphql-tools/utils" "^6.2.4" + apollo-link "1.2.14" + apollo-upload-client "14.1.2" + cross-fetch "3.0.6" + form-data "3.0.0" + is-promise "4.0.0" + tslib "~2.0.1" + +"@graphql-tools/load-files@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/load-files/-/load-files-6.2.4.tgz#17a6c10791d040da31458c8cfe70b187b13f169f" + integrity sha512-uQt8Bbd1WC8yewjChnvtxFdSw4reOM1B4MN17EzQr4Bw0nqp5LKXWfte0Y8ienS8MrGgjCUma1GWLKxvmRdTWQ== + dependencies: + fs-extra "9.0.1" + globby "11.0.1" + tslib "~2.0.1" + unixify "1.0.0" + +"@graphql-tools/load@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/load/-/load-6.2.4.tgz#a1a860bdc9d9e0bd93e1dffdbd2cf8839a521c41" + integrity sha512-FlQC50VELwRxoWUbJMMMs5gG0Dl8BaQYMrXUHTsxwqR7UmksUYnysC21rdousvs6jVZ7pf4unZfZFtBjz+8Edg== + dependencies: + "@graphql-tools/merge" "^6.2.4" + "@graphql-tools/utils" "^6.2.4" + globby "11.0.1" + import-from "3.0.0" + is-glob "4.0.1" + p-limit "3.0.2" + tslib "~2.0.1" + unixify "1.0.0" + valid-url "1.0.9" + +"@graphql-tools/merge@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/merge/-/merge-6.2.4.tgz#5b3b68083d55a38a7f3caac6e0adc46f428c2a3b" + integrity sha512-hQbiSzCJgzUYG1Aspj5EAUY9DsbTI2OK30GLBOjUI16DWkoLVXLXy4ljQYJxq6wDc4fqixMOmvxwf8FoJ9okmw== + dependencies: + "@graphql-tools/schema" "^6.2.4" + "@graphql-tools/utils" "^6.2.4" + tslib "~2.0.1" + +"@graphql-tools/mock@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/mock/-/mock-6.2.4.tgz#205323c51f89dd855d345d130c7713d0420909ea" + integrity sha512-O5Zvq/mcDZ7Ptky0IZ4EK9USmxV6FEVYq0Jxv2TI80kvxbCjt0tbEpZ+r1vIt1gZOXlAvadSHYyzWnUPh+1vkQ== + dependencies: + "@graphql-tools/schema" "^6.2.4" + "@graphql-tools/utils" "^6.2.4" + tslib "~2.0.1" + +"@graphql-tools/module-loader@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/module-loader/-/module-loader-6.2.4.tgz#d5d4c3d0c398ba0d52319a7baa37bb38e3289574" + integrity sha512-xfdgAvuwvQxRpS27jWyHFlEvrdlrJ+EuCeTmX34eYwzmGTHdI/MBrpAfUgk9z3HEi/gSw3qwbzm2qpWZKZf5Ng== + dependencies: + "@graphql-tools/utils" "^6.2.4" + tslib "~2.0.1" + +"@graphql-tools/relay-operation-optimizer@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/relay-operation-optimizer/-/relay-operation-optimizer-6.2.4.tgz#1cba2ea7ebc30aa28d1e5461a6079aca173fabd0" + integrity sha512-lvBCrRupmVpKfwgOmwz7epm28Nwmk9McddG1htRiAPRCg5MB7/52bYP/QgklDQgkRXWsaDEBXfxKyoGkvLvu0w== + dependencies: + "@graphql-tools/utils" "^6.2.4" + relay-compiler "10.0.1" + tslib "~2.0.1" + +"@graphql-tools/resolvers-composition@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/resolvers-composition/-/resolvers-composition-6.2.4.tgz#03dbb83c220b4d3a371b3c8290a3548c64c4eeb5" + integrity sha512-qcFHXZJykHvMymJKJnLBr9vxFhD/cefRjyVHhe5SxFxbY6h2CUVNcgSWfR74x59GWFj3bWsxCt6/JW1G0Ws+nQ== + dependencies: + "@graphql-tools/utils" "^6.2.4" + lodash "4.17.20" + tslib "~2.0.1" + +"@graphql-tools/schema@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/schema/-/schema-6.2.4.tgz#cc4e9f5cab0f4ec48500e666719d99fc5042481d" + integrity sha512-rh+14lSY1q8IPbEv2J9x8UBFJ5NrDX9W5asXEUlPp+7vraLp/Tiox4GXdgyA92JhwpYco3nTf5Bo2JDMt1KnAQ== + dependencies: + "@graphql-tools/utils" "^6.2.4" + tslib "~2.0.1" + +"@graphql-tools/stitch@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/stitch/-/stitch-6.2.4.tgz#acfa6a577a33c0f02e4940ffff04753b23b87fd6" + integrity sha512-0C7PNkS7v7iAc001m7c1LPm5FUB0/DYw+s3OyCii6YYYHY8NwdI0roeOyeDGFJkFubWBQfjc3hoSyueKtU73mw== + dependencies: + "@graphql-tools/batch-delegate" "^6.2.4" + "@graphql-tools/delegate" "^6.2.4" + "@graphql-tools/merge" "^6.2.4" + "@graphql-tools/schema" "^6.2.4" + "@graphql-tools/utils" "^6.2.4" + "@graphql-tools/wrap" "^6.2.4" + is-promise "4.0.0" + tslib "~2.0.1" + +"@graphql-tools/url-loader@^6.2.4": + version "6.3.0" + resolved "https://registry.yarnpkg.com/@graphql-tools/url-loader/-/url-loader-6.3.0.tgz#75b82bdf0983d3e389c75948a7abff20fa45a630" + integrity sha512-lX6A22Rhbqj8FHmkCVSDflolOGy7UtCJGtGbfRuv8/VqD94JfJLnGVFxC1jODURFdj+yrs/97Wm/ntRcpy7nDA== + dependencies: + "@graphql-tools/delegate" "^6.2.4" + "@graphql-tools/utils" "^6.2.4" + "@graphql-tools/wrap" "^6.2.4" + "@types/websocket" "1.0.1" + cross-fetch "3.0.6" + subscriptions-transport-ws "0.9.18" + tslib "~2.0.1" + valid-url "1.0.9" + websocket "1.0.32" + +"@graphql-tools/utils@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/utils/-/utils-6.2.4.tgz#38a2314d2e5e229ad4f78cca44e1199e18d55856" + integrity sha512-ybgZ9EIJE3JMOtTrTd2VcIpTXtDrn2q6eiYkeYMKRVh3K41+LZa6YnR2zKERTXqTWqhobROwLt4BZbw2O3Aeeg== + dependencies: + "@ardatan/aggregate-error" "0.0.6" + camel-case "4.1.1" + tslib "~2.0.1" + +"@graphql-tools/wrap@^6.2.4": + version "6.2.4" + resolved "https://registry.yarnpkg.com/@graphql-tools/wrap/-/wrap-6.2.4.tgz#2709817da6e469753735a9fe038c9e99736b2c57" + integrity sha512-cyQgpybolF9DjL2QNOvTS1WDCT/epgYoiA8/8b3nwv5xmMBQ6/6nYnZwityCZ7njb7MMyk7HBEDNNlP9qNJDcA== + dependencies: + "@graphql-tools/delegate" "^6.2.4" + "@graphql-tools/schema" "^6.2.4" + "@graphql-tools/utils" "^6.2.4" + is-promise "4.0.0" + tslib "~2.0.1" + +"@graphql-typed-document-node/core@^3.0.0": + version "3.1.0" + resolved "https://registry.yarnpkg.com/@graphql-typed-document-node/core/-/core-3.1.0.tgz#0eee6373e11418bfe0b5638f654df7a4ca6a3950" + integrity sha512-wYn6r8zVZyQJ6rQaALBEln5B1pzxb9shV5Ef97kTvn6yVGrqyXVnDqnU24MXnFubR+rZjBY9NWuxX3FB2sTsjg== "@gulp-sourcemaps/map-sources@1.X": version "1.0.0" @@ -2018,7 +2637,7 @@ xhr "^2.2.0" xtend "^4.0.1" -"@types/accepts@^1.3.5": +"@types/accepts@*", "@types/accepts@^1.3.5": version "1.3.5" resolved "https://registry.yarnpkg.com/@types/accepts/-/accepts-1.3.5.tgz#c34bec115cfc746e04fe5a059df4ce7e7b391575" integrity sha512-jOdnI/3qTpHABjM5cx1Hc0sKsPoYCp+DP/GJRGtDlPd7fiV9oXGGIcjW/ZOxLIvjGz8MA+uMZI9metHlgqbgwQ== @@ -2101,7 +2720,7 @@ dependencies: "@types/node" "*" -"@types/body-parser@*", "@types/body-parser@1.17.0": +"@types/body-parser@*": version "1.17.0" resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.17.0.tgz#9f5c9d9bd04bb54be32d5eb9fc0d8c974e6cf58c" integrity sha512-a2+YeUjPkztKJu5aIF2yArYFQQp8d51wZ7DavSHjFuY1mqVgidGyzEQ41JIVNy82fXj8yPgy2vJmfIywgESW6w== @@ -2109,6 +2728,14 @@ "@types/connect" "*" "@types/node" "*" +"@types/body-parser@1.19.0": + version "1.19.0" + resolved "https://registry.yarnpkg.com/@types/body-parser/-/body-parser-1.19.0.tgz#0685b3c47eb3006ffed117cdd55164b61f80538f" + integrity sha512-W98JrE0j2K78swW4ukqMleo8R7h/pFETjM2DQ90MF6XK2i4LO4W3gQ71Lt4w3bfm2EvVSyWHplECvB5sK22yFQ== + dependencies: + "@types/connect" "*" + "@types/node" "*" + "@types/caseless@*": version "0.12.2" resolved "https://registry.yarnpkg.com/@types/caseless/-/caseless-0.12.2.tgz#f65d3d6389e01eeb458bd54dc8f52b95a9463bc8" @@ -2136,10 +2763,25 @@ dependencies: "@types/node" "*" -"@types/cors@^2.8.4": - version "2.8.4" - resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.4.tgz#50991a759a29c0b89492751008c6af7a7c8267b0" - integrity sha512-ipZjBVsm2tF/n8qFGOuGBkUij9X9ZswVi9G3bx/6dz7POpVa6gVHcj1wsX/LVEn9MMF41fxK/PnZPPoTD1UFPw== +"@types/content-disposition@*": + version "0.5.3" + resolved "https://registry.yarnpkg.com/@types/content-disposition/-/content-disposition-0.5.3.tgz#0aa116701955c2faa0717fc69cd1596095e49d96" + integrity sha512-P1bffQfhD3O4LW0ioENXUhZ9OIa0Zn+P7M+pWgkCKaT53wVLSq0mrKksCID/FGHpFhRSxRGhgrQmfhRuzwtKdg== + +"@types/cookies@*": + version "0.7.4" + resolved "https://registry.yarnpkg.com/@types/cookies/-/cookies-0.7.4.tgz#26dedf791701abc0e36b5b79a5722f40e455f87b" + integrity sha512-oTGtMzZZAVuEjTwCjIh8T8FrC8n/uwy+PG0yTvQcdZ7etoel7C7/3MSd7qrukENTgQtotG7gvBlBojuVs7X5rw== + dependencies: + "@types/connect" "*" + "@types/express" "*" + "@types/keygrip" "*" + "@types/node" "*" + +"@types/cors@2.8.7": + version "2.8.7" + resolved "https://registry.yarnpkg.com/@types/cors/-/cors-2.8.7.tgz#ab2f47f1cba93bce27dfd3639b006cc0e5600889" + integrity sha512-sOdDRU3oRS7LBNTIqwDkPJyq0lpHYcbMTt0TrjzsXbk/e37hcLTH6eZX7CdbDeN0yJJvzw9hFBZkbtCSbk/jAQ== dependencies: "@types/express" "*" @@ -2190,7 +2832,36 @@ "@types/node" "*" "@types/range-parser" "*" -"@types/express@*", "@types/express@4.16.0", "@types/express@^4.16.0": +"@types/express-serve-static-core@4.17.9": + version "4.17.9" + resolved "https://registry.yarnpkg.com/@types/express-serve-static-core/-/express-serve-static-core-4.17.9.tgz#2d7b34dcfd25ec663c25c85d76608f8b249667f1" + integrity sha512-DG0BYg6yO+ePW+XoDENYz8zhNGC3jDDEpComMYn7WJc4mY1Us8Rw9ax2YhJXxpyk2SF47PQAoQ0YyVT1a0bEkA== + dependencies: + "@types/node" "*" + "@types/qs" "*" + "@types/range-parser" "*" + +"@types/express@*": + version "4.17.8" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.8.tgz#3df4293293317e61c60137d273a2e96cd8d5f27a" + integrity sha512-wLhcKh3PMlyA2cNAB9sjM1BntnhPMiM0JOBwPBqttjHev2428MLEB4AYVN+d8s2iyCVZac+o41Pflm/ZH5vLXQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "*" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/express@4.17.7": + version "4.17.7" + resolved "https://registry.yarnpkg.com/@types/express/-/express-4.17.7.tgz#42045be6475636d9801369cd4418ef65cdb0dd59" + integrity sha512-dCOT5lcmV/uC2J9k0rPafATeeyz+99xTt54ReX11/LObZgfzJqZNcW27zGhYyX+9iSEGXGt5qLPwRSvBZcLvtQ== + dependencies: + "@types/body-parser" "*" + "@types/express-serve-static-core" "*" + "@types/qs" "*" + "@types/serve-static" "*" + +"@types/express@^4.16.0": version "4.16.0" resolved "https://registry.yarnpkg.com/@types/express/-/express-4.16.0.tgz#6d8bc42ccaa6f35cf29a2b7c3333cb47b5a32a19" integrity sha512-TtPEYumsmSTtTetAPXlJVf3kEqb6wZK0bZojpJQrnD/djV4q1oB6QQ8aKvKqwNPACoe02GNiy5zDzcYivR5Z2w== @@ -2209,6 +2880,13 @@ resolved "https://registry.yarnpkg.com/@types/find-up/-/find-up-2.1.1.tgz#1cd2d240f1ad1f48d32346074724dc3107248a11" integrity sha512-60LC501bQRN9/3yfVaEEMd7IndaufffL56PBRAejPpUrY304Ps1jfnjNqPw5jmM5R8JHWiKBAe5IHzNcPV41AA== +"@types/fs-capacitor@*": + version "2.0.0" + resolved "https://registry.yarnpkg.com/@types/fs-capacitor/-/fs-capacitor-2.0.0.tgz#17113e25817f584f58100fb7a08eed288b81956e" + integrity sha512-FKVPOCFbhCvZxpVAMhdBdTfVfXUpsh15wFHgqOKxh9N9vzWZVuWCSijZ5T4U34XYNnuj2oduh6xcs1i+LPI+BQ== + dependencies: + "@types/node" "*" + "@types/fs-extra@^8.1.0": version "8.1.0" resolved "https://registry.yarnpkg.com/@types/fs-extra/-/fs-extra-8.1.0.tgz#1114834b53c3914806cd03b3304b37b3bd221a4d" @@ -2232,10 +2910,32 @@ dependencies: "@types/node" "*" -"@types/graphql@^14.0.4": - version "14.0.4" - resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-14.0.4.tgz#d71a75967cd93c33eaea32b626b362ce0f2b2ae9" - integrity sha512-gI98ANelzzpq7lZzuYCUJg8LZDjQc7ekj7cxoWt8RezOKaVaAyK27U6AHa9LEqikP1NUhyi8blQQkHYHVRZ7Tg== +"@types/graphql-upload@^8.0.0": + version "8.0.4" + resolved "https://registry.yarnpkg.com/@types/graphql-upload/-/graphql-upload-8.0.4.tgz#23a8ffb3d2fe6e0ee07e6f16ee9d9d5e995a2f4f" + integrity sha512-0TRyJD2o8vbkmJF8InppFcPVcXKk+Rvlg/xvpHBIndSJYpmDWfmtx/ZAtl4f3jR2vfarpTqYgj8MZuJssSoU7Q== + dependencies: + "@types/express" "*" + "@types/fs-capacitor" "*" + "@types/koa" "*" + graphql "^15.3.0" + +"@types/graphql@^14.5.0": + version "14.5.0" + resolved "https://registry.yarnpkg.com/@types/graphql/-/graphql-14.5.0.tgz#a545fb3bc8013a3547cf2f07f5e13a33642b75d6" + integrity sha512-MOkzsEp1Jk5bXuAsHsUi6BVv0zCO+7/2PTiZMXWDSsMXvNU6w/PLMQT2vHn8hy2i0JqojPz1Sz6rsFjHtsU0lA== + dependencies: + graphql "*" + +"@types/http-assert@*": + version "1.5.1" + resolved "https://registry.yarnpkg.com/@types/http-assert/-/http-assert-1.5.1.tgz#d775e93630c2469c2f980fc27e3143240335db3b" + integrity sha512-PGAK759pxyfXE78NbKxyfRcWYA/KwW17X290cNev/qAsn9eQIxkH4shoNBafH37wewhDG/0p1cHPbK6+SzZjWQ== + +"@types/http-errors@*": + version "1.8.0" + resolved "https://registry.yarnpkg.com/@types/http-errors/-/http-errors-1.8.0.tgz#682477dbbbd07cd032731cb3b0e7eaee3d026b69" + integrity sha512-2aoSC4UUbHDj2uCsCxcG/vRMXey/m17bC7UwitVm5hn22nI8O8Y9iDpA76Orc+DWkQ4zZrOKEshCqR/jSuXAHA== "@types/inquirer@6.0.3": version "6.0.3" @@ -2308,6 +3008,32 @@ resolved "https://registry.yarnpkg.com/@types/json5/-/json5-0.0.29.tgz#ee28707ae94e11d2b827bcbe5270bcea7f3e71ee" integrity sha1-7ihweulOEdK4J7y+UnC86n8+ce4= +"@types/keygrip@*": + version "1.0.2" + resolved "https://registry.yarnpkg.com/@types/keygrip/-/keygrip-1.0.2.tgz#513abfd256d7ad0bf1ee1873606317b33b1b2a72" + integrity sha512-GJhpTepz2udxGexqos8wgaBx4I/zWIDPh/KOGEwAqtuGDkOUJu5eFvwmdBX4AmB8Odsr+9pHCQqiAqDL/yKMKw== + +"@types/koa-compose@*": + version "3.2.5" + resolved "https://registry.yarnpkg.com/@types/koa-compose/-/koa-compose-3.2.5.tgz#85eb2e80ac50be95f37ccf8c407c09bbe3468e9d" + integrity sha512-B8nG/OoE1ORZqCkBVsup/AKcvjdgoHnfi4pZMn5UwAPCbhk/96xyv284eBYW8JlQbQ7zDmnpFr68I/40mFoIBQ== + dependencies: + "@types/koa" "*" + +"@types/koa@*": + version "2.11.5" + resolved "https://registry.yarnpkg.com/@types/koa/-/koa-2.11.5.tgz#a2b81382bf65d72bdc3bd906abdee259fefdebc2" + integrity sha512-egP+ceD3+v9PnFW+DLTFO8mt6wa5sDqfGOBIwOAZ61Wzsq4bGZc5kMpJgcCwq7ARGIBfHBY+KkK/1RsMftV/qQ== + dependencies: + "@types/accepts" "*" + "@types/content-disposition" "*" + "@types/cookies" "*" + "@types/http-assert" "*" + "@types/http-errors" "*" + "@types/keygrip" "*" + "@types/koa-compose" "*" + "@types/node" "*" + "@types/lodash.assign@^4.2.6": version "4.2.6" resolved "https://registry.yarnpkg.com/@types/lodash.assign/-/lodash.assign-4.2.6.tgz#e5cc225446c706907893263d5938c6571ad28551" @@ -2363,9 +3089,9 @@ integrity sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ== "@types/long@^4.0.0": - version "4.0.0" - resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.0.tgz#719551d2352d301ac8b81db732acb6bdc28dbdef" - integrity sha512-1w52Nyx4Gq47uuu0EVcsHBxZFJgurQ+rTKS3qMHxR1GY2T8c2AJYd6vZoZ9q1rupaDjU0yT+Jc2XTyXkjeMA+Q== + version "4.0.1" + resolved "https://registry.yarnpkg.com/@types/long/-/long-4.0.1.tgz#459c65fa1867dafe6a8f322c4c51695663cc55e9" + integrity sha512-5tXH6Bx/kNGd3MgffdmP4dy2Z+G4eaXw0SE81Tq3BNadtnMR5/ySMzX4SLEzHJzSmPNn4HIdpQsBvXMUykr58w== "@types/mime@*": version "2.0.0" @@ -2401,15 +3127,23 @@ dependencies: "@types/node" "*" +"@types/node-fetch@2.5.7": + version "2.5.7" + resolved "https://registry.yarnpkg.com/@types/node-fetch/-/node-fetch-2.5.7.tgz#20a2afffa882ab04d44ca786449a276f9f6bbf3c" + integrity sha512-o2WVNf5UhWRkxlf6eq+jMZDu7kjgpgJfl4xVNlvryc95O/6F2ld8ztKX+qu+Rjyet93WAWm5LjeX9H5FGkODvw== + dependencies: + "@types/node" "*" + form-data "^3.0.0" + "@types/node@*", "@types/node@>= 8", "@types/node@^12.12.5", "@types/node@^12.12.9", "@types/node@^12.6.2", "@types/node@^12.6.8": version "12.12.21" resolved "https://registry.yarnpkg.com/@types/node/-/node-12.12.21.tgz#aa44a6363291c7037111c47e4661ad210aded23f" integrity sha512-8sRGhbpU+ck1n0PGAUgVrWrWdjSW2aqNeyC15W88GRsMpSwzv6RJGlLhE7s2RhVSOdyDmxbqlWSeThq4/7xqlA== "@types/node@^10.1.0": - version "10.12.18" - resolved "https://registry.yarnpkg.com/@types/node/-/node-10.12.18.tgz#1d3ca764718915584fcd9f6344621b7672665c67" - integrity sha512-fh+pAqt4xRzPfqA6eh3Z2y6fyZavRIumvjhaCL753+TVkGKGhpPeyrJG2JftD0T9q4GF00KjefsQ+PQNDdWQaQ== + version "10.17.40" + resolved "https://registry.yarnpkg.com/@types/node/-/node-10.17.40.tgz#8a50e47daff15fd4a89dc56f5221b3729e506be6" + integrity sha512-3hZT2z2/531A5pc8hYhn1gU5Qb1SIRSgMLQ6zuHA5xtt16lWAxUGprtr8lJuc9zNJMXEIIBWfSnzqBP/4mglpA== "@types/node@^10.12.18", "@types/node@^10.3.2", "@types/node@^10.9.4": version "10.17.11" @@ -2604,6 +3338,11 @@ resolved "https://registry.yarnpkg.com/@types/prettier/-/prettier-2.1.2.tgz#4929992f87a0129f4960a110faeb526210562e7b" integrity sha512-IiPhNnenzkqdSdQH3ifk9LoX7oQe61ZlDdDO4+MUv6FyWdPGDPr26gCPVs3oguZEMq//nFZZpwUZcVuNJsG+DQ== +"@types/qs@*": + version "6.9.5" + resolved "https://registry.yarnpkg.com/@types/qs/-/qs-6.9.5.tgz#434711bdd49eb5ee69d90c1d67c354a9a8ecb18b" + integrity sha512-/JHkVHtx/REVG0VVToGRGH2+23hsYLHdyG+GrvoUGlGAd0ErauXDyvHtRI/7H7mzLm+tBCKA7pfcpkQ1lf58iQ== + "@types/range-parser@*": version "1.2.3" resolved "https://registry.yarnpkg.com/@types/range-parser/-/range-parser-1.2.3.tgz#7ee330ba7caafb98090bece86a5ee44115904c2c" @@ -2771,12 +3510,18 @@ "@types/webpack-sources" "*" source-map "^0.6.0" -"@types/ws@^6.0.0": - version "6.0.1" - resolved "https://registry.yarnpkg.com/@types/ws/-/ws-6.0.1.tgz#ca7a3f3756aa12f62a0a62145ed14c6db25d5a28" - integrity sha512-EzH8k1gyZ4xih/MaZTXwT2xOkPiIMSrhQ9b8wrlX88L0T02eYsddatQlwVFlEPyEqV0ChpdpNnE51QPH6NVT4Q== +"@types/websocket@1.0.1": + version "1.0.1" + resolved "https://registry.yarnpkg.com/@types/websocket/-/websocket-1.0.1.tgz#039272c196c2c0e4868a0d8a1a27bbb86e9e9138" + integrity sha512-f5WLMpezwVxCLm1xQe/kdPpQIOmL0TXYx2O15VYfYzc7hTIdxiOoOvez+McSIw3b7z/1zGovew9YSL7+h4h7/Q== + dependencies: + "@types/node" "*" + +"@types/ws@^7.0.0": + version "7.2.7" + resolved "https://registry.yarnpkg.com/@types/ws/-/ws-7.2.7.tgz#362ad1a1d62721bdb725e72c8cccf357078cf5a3" + integrity sha512-UUFC/xxqFLP17hTva8/lVT0SybLUrfSD9c+iapKb0fEiC8uoDbA+xuZ3pAN603eW+bY8ebSMLm9jXdIPnD0ZgA== dependencies: - "@types/events" "*" "@types/node" "*" "@types/yargs-parser@*": @@ -2798,6 +3543,11 @@ dependencies: "@types/yargs-parser" "*" +"@types/zen-observable@^0.8.0": + version "0.8.1" + resolved "https://registry.yarnpkg.com/@types/zen-observable/-/zen-observable-0.8.1.tgz#5668c0bce55a91f2b9566b1d8a4c0a8dbbc79764" + integrity sha512-wmk0xQI6Yy7Fs/il4EpOcflG4uonUpYGqvZARESLc2oy4u69fkatFLbJOeW4Q6awO15P4rduAe6xkwHevpXcUQ== + "@typescript-eslint/eslint-plugin@^4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.2.0.tgz#a3d5c11b377b7e18f3cd9c4e87d465fe9432669b" @@ -3032,6 +3782,13 @@ "@webassemblyjs/wast-parser" "1.9.0" "@xtuc/long" "4.2.2" +"@wry/context@^0.5.2": + version "0.5.2" + resolved "https://registry.yarnpkg.com/@wry/context/-/context-0.5.2.tgz#f2a5d5ab9227343aa74c81e06533c1ef84598ec7" + integrity sha512-B/JLuRZ/vbEKHRUiGj6xiMojST1kHhu4WcreLfNN7q9DqQFrb97cWgf/kiYsPSUCAMVN0HzfFc8XjJdzgZzfjw== + dependencies: + tslib "^1.9.3" + "@wry/equality@^0.1.2": version "0.1.9" resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.1.9.tgz#b13e18b7a8053c6858aa6c85b54911fb31e3a909" @@ -3039,6 +3796,13 @@ dependencies: tslib "^1.9.3" +"@wry/equality@^0.2.0": + version "0.2.0" + resolved "https://registry.yarnpkg.com/@wry/equality/-/equality-0.2.0.tgz#a312d1b6a682d0909904c2bcd355b02303104fb7" + integrity sha512-Y4d+WH6hs+KZJUC8YKLYGarjGekBrhslDbf/R20oV+AakHPINSitHfDRQz3EGcEWc1luXYNUvMhawWtZVWNGvQ== + dependencies: + tslib "^1.9.3" + "@xtuc/ieee754@^1.2.0": version "1.2.0" resolved "https://registry.yarnpkg.com/@xtuc/ieee754/-/ieee754-1.2.0.tgz#eef014a3145ae477a1cbc00cd1e552336dceb790" @@ -3151,14 +3915,7 @@ abstract-leveldown@~6.0.0, abstract-leveldown@~6.0.1: level-concat-iterator "~2.0.0" xtend "~4.0.0" -accepts@^1.3.5: - version "1.3.5" - resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.5.tgz#eb777df6011723a3b14e8a72c0805c8e86746bd2" - dependencies: - mime-types "~2.1.18" - negotiator "0.6.1" - -accepts@~1.3.5, accepts@~1.3.7: +accepts@^1.3.5, accepts@~1.3.7: version "1.3.7" resolved "https://registry.yarnpkg.com/accepts/-/accepts-1.3.7.tgz#531bc726517a3b2b41f850021c6cc15eaab507cd" integrity sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA== @@ -3343,15 +4100,6 @@ ajv@^6.12.4: json-schema-traverse "^0.4.1" uri-js "^4.2.2" -ajv@^6.5.4: - version "6.7.0" - resolved "https://registry.yarnpkg.com/ajv/-/ajv-6.7.0.tgz#e3ce7bb372d6577bb1839f1dfdfcbf5ad2948d96" - dependencies: - fast-deep-equal "^2.0.1" - fast-json-stable-stringify "^2.0.0" - json-schema-traverse "^0.4.1" - uri-js "^4.2.2" - align-text@^0.1.1, align-text@^0.1.3: version "0.1.4" resolved "https://registry.yarnpkg.com/align-text/-/align-text-0.1.4.tgz#0cd90a561093f35d0a99256c22b7069433fad117" @@ -3472,14 +4220,6 @@ anymatch@^3.0.3, anymatch@~3.1.1: normalize-path "^3.0.0" picomatch "^2.0.4" -apollo-cache-control@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.4.0.tgz#fec343e6ec95aa4f1b88e07e62f067bee0c48397" - integrity sha512-WuriaNQIugTE8gYwfBWWCbbQTSKul/cV4JMi5UgqNIUvjHvnKZQLKbt5uYWow6QQNMkLT9hey8QPYkWpogkeSA== - dependencies: - apollo-server-env "2.2.0" - graphql-extensions "0.4.0" - apollo-cache-control@^0.1.0: version "0.1.1" resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.1.1.tgz#173d14ceb3eb9e7cb53de7eb8b61bee6159d4171" @@ -3487,39 +4227,49 @@ apollo-cache-control@^0.1.0: dependencies: graphql-extensions "^0.0.x" -apollo-datasource@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/apollo-datasource/-/apollo-datasource-0.2.1.tgz#3ecef4efe64f7a04a43862f32027d38ac09e142c" - integrity sha512-r185+JTa5KuF1INeTAk7AEP76zwMN6c8Ph1lmpzJMNwBUEzTGnLClrccCskCBx4SxfnkdKbuQdwn9JwCJUWrdg== +apollo-cache-control@^0.11.3: + version "0.11.3" + resolved "https://registry.yarnpkg.com/apollo-cache-control/-/apollo-cache-control-0.11.3.tgz#caa409692bccc35da582cb133c023c0175b84e91" + integrity sha512-21GCeC9AIIa22uD0Vtqn/N0D5kOB4rY/Pa9aQhxVeLN+4f8Eu4nmteXhFypUD0LL1/58dmm8lS5embsfoIGjEA== dependencies: - apollo-server-caching "0.2.1" - apollo-server-env "2.2.0" + apollo-server-env "^2.4.5" + apollo-server-plugin-base "^0.10.1" -apollo-engine-reporting-protobuf@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/apollo-engine-reporting-protobuf/-/apollo-engine-reporting-protobuf-0.2.0.tgz#2aaf4d2eddefe7924d469cf1135267bc0deadf73" - integrity sha512-qI+GJKN78UMJ9Aq/ORdiM2qymZ5yswem+/VDdVFocq+/e1QqxjnpKjQWISkswci5+WtpJl9SpHBNxG98uHDKkA== +apollo-datasource@^0.7.2: + version "0.7.2" + resolved "https://registry.yarnpkg.com/apollo-datasource/-/apollo-datasource-0.7.2.tgz#1662ee93453a9b89af6f73ce561bde46b41ebf31" + integrity sha512-ibnW+s4BMp4K2AgzLEtvzkjg7dJgCaw9M5b5N0YKNmeRZRnl/I/qBTQae648FsRKgMwTbRQIvBhQ0URUFAqFOw== dependencies: - protobufjs "^6.8.6" + apollo-server-caching "^0.5.2" + apollo-server-env "^2.4.5" -apollo-engine-reporting@0.2.0: - version "0.2.0" - resolved "https://registry.yarnpkg.com/apollo-engine-reporting/-/apollo-engine-reporting-0.2.0.tgz#e71816b1f46e782f8538c5a118148d4c0e628e25" - integrity sha512-Q6FfVb10v/nrv8FaFsPjIYlWh62jaYav3LuMgM9PsHWGK/zRQFXOEwLxcY2UCvG7O1moxF3XGmfBhMgo54py+Q== +apollo-env@^0.6.5: + version "0.6.5" + resolved "https://registry.yarnpkg.com/apollo-env/-/apollo-env-0.6.5.tgz#5a36e699d39e2356381f7203493187260fded9f3" + integrity sha512-jeBUVsGymeTHYWp3me0R2CZRZrFeuSZeICZHCeRflHTfnQtlmbSXdy5E0pOyRM9CU4JfQkKDC98S1YglQj7Bzg== dependencies: - apollo-engine-reporting-protobuf "0.2.0" - apollo-server-env "2.2.0" - async-retry "^1.2.1" - graphql-extensions "0.4.0" - lodash "^4.17.10" + "@types/node-fetch" "2.5.7" + core-js "^3.0.1" + node-fetch "^2.2.0" + sha.js "^2.4.11" -apollo-env@0.2.5: - version "0.2.5" - resolved "https://registry.yarnpkg.com/apollo-env/-/apollo-env-0.2.5.tgz#162c785bccd2aea69350a7600fab4b7147fc9da5" - integrity sha512-Gc7TEbwCl7jJVutnn8TWfzNSkrrqyoo0DP92BQJFU9pZbJhpidoXf2Sw1YwOJl82rRKH3ujM3C8vdZLOgpFcFA== +apollo-graphql@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/apollo-graphql/-/apollo-graphql-0.6.0.tgz#37bee7dc853213269137f4c60bfdf2ee28658669" + integrity sha512-BxTf5LOQe649e9BNTPdyCGItVv4Ll8wZ2BKnmiYpRAocYEXAVrQPWuSr3dO4iipqAU8X0gvle/Xu9mSqg5b7Qg== dependencies: - core-js "^3.0.0-beta.3" - node-fetch "^2.2.0" + apollo-env "^0.6.5" + lodash.sortby "^4.7.0" + +apollo-link@1.2.14, apollo-link@^1.2.14: + version "1.2.14" + resolved "https://registry.yarnpkg.com/apollo-link/-/apollo-link-1.2.14.tgz#3feda4b47f9ebba7f4160bef8b977ba725b684d9" + integrity sha512-p67CMEFP7kOG1JZ0ZkYZwRDa369w5PIjtMjvrQd/HnIV8FRsHRqLqK+oAZQnFa1DDdZtOtHTi+aMIW6EatC2jg== + dependencies: + apollo-utilities "^1.3.0" + ts-invariant "^0.4.0" + tslib "^1.9.3" + zen-observable-ts "^0.8.21" apollo-link@^1.2.3: version "1.2.13" @@ -3531,38 +4281,19 @@ apollo-link@^1.2.3: tslib "^1.9.3" zen-observable-ts "^0.8.20" -apollo-server-caching@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/apollo-server-caching/-/apollo-server-caching-0.2.1.tgz#7e67f8c8cac829e622b394f0fb82579cabbeadfd" - integrity sha512-+U9F3X297LL8Gqy6ypfDNEv/DfV/tDht9Dr2z3AMaEkNW1bwO6rmdDL01zYxDuVDVq6Z3qSiNCSO2pXE2F0zmA== +apollo-reporting-protobuf@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/apollo-reporting-protobuf/-/apollo-reporting-protobuf-0.6.0.tgz#179e49e99229851d588b1fe6faff4ffdcf503224" + integrity sha512-AFLQIuO0QhkoCF+41Be/B/YU0C33BZ0opfyXorIjM3MNNiEDSyjZqmUozlB3LqgfhT9mn2IR5RSsA+1b4VovDQ== dependencies: - lru-cache "^5.0.0" + "@apollo/protobufjs" "^1.0.3" -apollo-server-core@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.3.1.tgz#cbdc0020a0dfecf2220cf5062dbb304fdf56edf2" - integrity sha512-8jMWYOQIZi9mDJlHe2rXg8Cp4xKYogeRu23jkcNy+k5UjZL+eO+kHXbNFiTaP4HLYYEpe2XE3asxp6q5YUEQeQ== - dependencies: - "@apollographql/apollo-tools" "^0.2.6" - "@apollographql/graphql-playground-html" "^1.6.6" - "@types/ws" "^6.0.0" - apollo-cache-control "0.4.0" - apollo-datasource "0.2.1" - apollo-engine-reporting "0.2.0" - apollo-server-caching "0.2.1" - apollo-server-env "2.2.0" - apollo-server-errors "2.2.0" - apollo-server-plugin-base "0.2.1" - apollo-tracing "0.4.0" - graphql-extensions "0.4.1" - graphql-subscriptions "^1.0.0" - graphql-tag "^2.9.2" - graphql-tools "^4.0.0" - graphql-upload "^8.0.2" - json-stable-stringify "^1.0.1" - lodash "^4.17.10" - subscriptions-transport-ws "^0.9.11" - ws "^6.0.0" +apollo-server-caching@^0.5.2: + version "0.5.2" + resolved "https://registry.yarnpkg.com/apollo-server-caching/-/apollo-server-caching-0.5.2.tgz#bef5d5e0d48473a454927a66b7bb947a0b6eb13e" + integrity sha512-HUcP3TlgRsuGgeTOn8QMbkdx0hLPXyEJehZIPrcof0ATz7j7aTPA4at7gaiFHCo8gk07DaWYGB3PFgjboXRcWQ== + dependencies: + lru-cache "^5.0.0" apollo-server-core@^1.4.0: version "1.4.0" @@ -3573,74 +4304,114 @@ apollo-server-core@^1.4.0: apollo-tracing "^0.1.0" graphql-extensions "^0.0.x" -apollo-server-env@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-2.2.0.tgz#5eec5dbf46581f663fd6692b2e05c7e8ae6d6034" - integrity sha512-wjJiI5nQWPBpNmpiLP389Ezpstp71szS6DHAeTgYLb/ulCw3CTuuA+0/E1bsThVWiQaDeHZE0sE3yI8q2zrYiA== +apollo-server-core@^2.18.2: + version "2.18.2" + resolved "https://registry.yarnpkg.com/apollo-server-core/-/apollo-server-core-2.18.2.tgz#1b8a625531a92e137f68c730bc42b9e3f7d7fcbb" + integrity sha512-phz57BFBukMa3Ta7ZVW7pj1pdUne9KYLbcBdEcITr+I0+nbhy+YM8gcgpOnjrokWYiEZgIe52XeM3m4BMLw5dg== + dependencies: + "@apollographql/apollo-tools" "^0.4.3" + "@apollographql/graphql-playground-html" "1.6.26" + "@types/graphql-upload" "^8.0.0" + "@types/ws" "^7.0.0" + apollo-cache-control "^0.11.3" + apollo-datasource "^0.7.2" + apollo-graphql "^0.6.0" + apollo-reporting-protobuf "^0.6.0" + apollo-server-caching "^0.5.2" + apollo-server-env "^2.4.5" + apollo-server-errors "^2.4.2" + apollo-server-plugin-base "^0.10.1" + apollo-server-types "^0.6.0" + apollo-tracing "^0.11.4" + async-retry "^1.2.1" + fast-json-stable-stringify "^2.0.0" + graphql-extensions "^0.12.5" + graphql-tag "^2.9.2" + graphql-tools "^4.0.0" + graphql-upload "^8.0.2" + loglevel "^1.6.7" + lru-cache "^5.0.0" + sha.js "^2.4.11" + subscriptions-transport-ws "^0.9.11" + uuid "^8.0.0" + ws "^6.0.0" + +apollo-server-env@^2.4.5: + version "2.4.5" + resolved "https://registry.yarnpkg.com/apollo-server-env/-/apollo-server-env-2.4.5.tgz#73730b4f0439094a2272a9d0caa4079d4b661d5f" + integrity sha512-nfNhmGPzbq3xCEWT8eRpoHXIPNcNy3QcEoBlzVMjeglrBGryLG2LXwBSPnVmTRRrzUYugX0ULBtgE3rBFNoUgA== dependencies: node-fetch "^2.1.2" util.promisify "^1.0.0" -apollo-server-errors@2.2.0: - version "2.2.0" - resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-2.2.0.tgz#5b452a1d6ff76440eb0f127511dc58031a8f3cb5" - integrity sha512-gV9EZG2tovFtT1cLuCTavnJu2DaKxnXPRNGSTo+SDI6IAk6cdzyW0Gje5N2+3LybI0Wq5KAbW6VLei31S4MWmg== +apollo-server-errors@^2.4.2: + version "2.4.2" + resolved "https://registry.yarnpkg.com/apollo-server-errors/-/apollo-server-errors-2.4.2.tgz#1128738a1d14da989f58420896d70524784eabe5" + integrity sha512-FeGxW3Batn6sUtX3OVVUm7o56EgjxDlmgpTLNyWcLb0j6P8mw9oLNyAm3B+deHA4KNdNHO5BmHS2g1SJYjqPCQ== -apollo-server-express@2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-2.3.1.tgz#0598e2fa0a0d9e6eb570c0bb6ce65c31810a9c09" - integrity sha512-J+rObr4GdT/5j6qTByUJoSvZSjTAX/7VqIkr2t+GxwcVUFGet2MdOHuV6rtWKc8CRgvVKfKN6iBrb2EOFcp2LQ== +apollo-server-express@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-1.4.0.tgz#7d7c58d6d6f9892b83fe575669093bb66738b125" + integrity sha512-zkH00nxhLnJfO0HgnNPBTfZw8qI5ILaPZ5TecMCI9+Y9Ssr2b0bFr9pBRsXy9eudPhI+/O4yqegSUsnLdF/CPw== + dependencies: + apollo-server-core "^1.4.0" + apollo-server-module-graphiql "^1.4.0" + +apollo-server-express@^2.18.2: + version "2.18.2" + resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-2.18.2.tgz#eb5f1ba566268080dd56269d9a7dfade55ccded8" + integrity sha512-9P5YOSE2amcNdkXqxqU3oulp+lpwoIBdwS2vOP69kl6ix+n7vEWHde4ulHwwl4xLdtZ88yyxgdKJEIkhaepiNw== dependencies: - "@apollographql/graphql-playground-html" "^1.6.6" + "@apollographql/graphql-playground-html" "1.6.26" "@types/accepts" "^1.3.5" - "@types/body-parser" "1.17.0" - "@types/cors" "^2.8.4" - "@types/express" "4.16.0" + "@types/body-parser" "1.19.0" + "@types/cors" "2.8.7" + "@types/express" "4.17.7" + "@types/express-serve-static-core" "4.17.9" accepts "^1.3.5" - apollo-server-core "2.3.1" + apollo-server-core "^2.18.2" + apollo-server-types "^0.6.0" body-parser "^1.18.3" cors "^2.8.4" + express "^4.17.1" graphql-subscriptions "^1.0.0" graphql-tools "^4.0.0" + parseurl "^1.3.2" + subscriptions-transport-ws "^0.9.16" type-is "^1.6.16" -apollo-server-express@^1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/apollo-server-express/-/apollo-server-express-1.4.0.tgz#7d7c58d6d6f9892b83fe575669093bb66738b125" - integrity sha512-zkH00nxhLnJfO0HgnNPBTfZw8qI5ILaPZ5TecMCI9+Y9Ssr2b0bFr9pBRsXy9eudPhI+/O4yqegSUsnLdF/CPw== - dependencies: - apollo-server-core "^1.4.0" - apollo-server-module-graphiql "^1.4.0" - apollo-server-module-graphiql@^1.4.0: version "1.4.0" resolved "https://registry.yarnpkg.com/apollo-server-module-graphiql/-/apollo-server-module-graphiql-1.4.0.tgz#c559efa285578820709f1769bb85d3b3eed3d8ec" integrity sha512-GmkOcb5he2x5gat+TuiTvabnBf1m4jzdecal3XbXBh/Jg+kx4hcvO3TTDFQ9CuTprtzdcVyA11iqG7iOMOt7vA== -apollo-server-plugin-base@0.2.1: - version "0.2.1" - resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-0.2.1.tgz#d08c9576f7f11ab6e212f352d482faaa4059a31e" - integrity sha512-497NIY9VWRYCrMSkgR11IrIUO4Fsy6aGgnpOJoTdLQAnkDD9SJDSRzwKj4gypUoTT2unfKDng4eMxXVZlHvjOw== +apollo-server-plugin-base@^0.10.1: + version "0.10.1" + resolved "https://registry.yarnpkg.com/apollo-server-plugin-base/-/apollo-server-plugin-base-0.10.1.tgz#b053d43b1ff5f728735ed35095cf4427657bfa9f" + integrity sha512-XChCBDNyfByWqVXptsjPwrwrCj5cxMmNbchZZi8KXjtJ0hN2C/9BMNlInJd6bVGXvUbkRJYUakfKCfO5dZmwIg== + dependencies: + apollo-server-types "^0.6.0" -apollo-server@^2.3.1: - version "2.3.1" - resolved "https://registry.yarnpkg.com/apollo-server/-/apollo-server-2.3.1.tgz#4d2b6bbb48b44d86076680304705b8b7ae952d37" - integrity sha512-+S+/BhLJF9Ms99OK9HpC4P6rcVWTobWWKeLSVdgxqG487i/kwMrCAw/ICrDVJGeOGJRi6PndVu9XdHWHuX1lvQ== +apollo-server-types@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/apollo-server-types/-/apollo-server-types-0.6.0.tgz#6085f8389881b79911384dab6c0e8a8b91c0e1a2" + integrity sha512-usqXaz81bHxD2IZvKEQNnLpSbf2Z/BmobXZAjEefJEQv1ItNn+lJNUmSSEfGejHvHlg2A7WuAJKJWyDWcJrNnA== + dependencies: + apollo-reporting-protobuf "^0.6.0" + apollo-server-caching "^0.5.2" + apollo-server-env "^2.4.5" + +apollo-server@^2.18.2: + version "2.18.2" + resolved "https://registry.yarnpkg.com/apollo-server/-/apollo-server-2.18.2.tgz#de55a8b7e90e6ddaba29331ecc9469d6945fff23" + integrity sha512-I8B7Zd7WrqUhOWAVMQRmKhgJkvdTlCY7C74WToCdkeOyHl1/myiA7tERKedgv111xOTpIMZHyBzcCRX5CH/oqQ== dependencies: - apollo-server-core "2.3.1" - apollo-server-express "2.3.1" + apollo-server-core "^2.18.2" + apollo-server-express "^2.18.2" express "^4.0.0" graphql-subscriptions "^1.0.0" graphql-tools "^4.0.0" -apollo-tracing@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.4.0.tgz#4b939063f4292422ac5a3564b76d1d88dec0a916" - integrity sha512-BlM8iQUQva4fm0xD/pLwkcz0degfB9a/aAn4k4cK36eLVD8XUkl7ptEB0c+cwcj7tOYpV1r5QX1XwdayBzlHSg== - dependencies: - apollo-server-env "2.2.0" - graphql-extensions "0.4.0" - apollo-tracing@^0.1.0: version "0.1.4" resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.1.4.tgz#5b8ae1b01526b160ee6e552a7f131923a9aedcc7" @@ -3648,6 +4419,23 @@ apollo-tracing@^0.1.0: dependencies: graphql-extensions "~0.0.9" +apollo-tracing@^0.11.4: + version "0.11.4" + resolved "https://registry.yarnpkg.com/apollo-tracing/-/apollo-tracing-0.11.4.tgz#e953547064bc50dfa337cbe56836271bfd2d2efc" + integrity sha512-zBu/SwQlXfbdpcKLzWARGVjrEkIZUW3W9Mb4CCIzv07HbBQ8IQpmf9w7HIJJefC7rBiBJYg6JBGyuro3N2lxCA== + dependencies: + apollo-server-env "^2.4.5" + apollo-server-plugin-base "^0.10.1" + +apollo-upload-client@14.1.2: + version "14.1.2" + resolved "https://registry.yarnpkg.com/apollo-upload-client/-/apollo-upload-client-14.1.2.tgz#7a72b000f1cd67eaf8f12b4bda2796d0898c0dae" + integrity sha512-ozaW+4tnVz1rpfwiQwG3RCdCcZ93RV/37ZQbRnObcQ9mjb+zur58sGDPVg9Ef3fiujLmiE/Fe9kdgvIMA3VOjA== + dependencies: + "@apollo/client" "^3.1.5" + "@babel/runtime" "^7.11.2" + extract-files "^9.0.0" + apollo-utilities@^1.0.1, apollo-utilities@^1.3.0: version "1.3.3" resolved "https://registry.yarnpkg.com/apollo-utilities/-/apollo-utilities-1.3.3.tgz#f1854715a7be80cd810bc3ac95df085815c0787c" @@ -3811,7 +4599,7 @@ arrify@^1.0.0, arrify@^1.0.1: resolved "https://registry.yarnpkg.com/arrify/-/arrify-1.0.1.tgz#898508da2226f380df904728456849c1501a4b0d" integrity sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0= -asap@^2.0.0: +asap@^2.0.0, asap@~2.0.3: version "2.0.6" resolved "https://registry.yarnpkg.com/asap/-/asap-2.0.6.tgz#e50347611d7e690943208bbdafebcbc2fb866d46" integrity sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY= @@ -3878,9 +4666,9 @@ async-limiter@^1.0.0, async-limiter@~1.0.0: integrity sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ== async-retry@^1.2.1: - version "1.2.3" - resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.2.3.tgz#a6521f338358d322b1a0012b79030c6f411d1ce0" - integrity sha512-tfDb02Th6CE6pJUF2gjW5ZVjsgwlucVXOEQMvEX9JgSJMs9gAX+Nz3xRuJBKuUYjTSYORqvDBORdAQ3LU59g7Q== + version "1.3.1" + resolved "https://registry.yarnpkg.com/async-retry/-/async-retry-1.3.1.tgz#139f31f8ddce50c0870b0ba558a6079684aaed55" + integrity sha512-aiieFW/7h3hY0Bq5d+ktDBejxuwR78vRu9hDUdR8rNhSaQ29VzPL4AoIRG7D/c7tdenwOcKvgPM6tIxB3cB6HA== dependencies: retry "0.12.0" @@ -3927,6 +4715,11 @@ asynckit@^0.4.0: resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79" integrity sha1-x57Zf380y48robyXkLzDZkdLS3k= +at-least-node@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/at-least-node/-/at-least-node-1.0.0.tgz#602cd4b46e844ad4effc92a8011a3c46e0238dc2" + integrity sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg== + atob-lite@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/atob-lite/-/atob-lite-2.0.0.tgz#0fef5ad46f1bd7a8502c65727f0367d5ee43d696" @@ -4167,6 +4960,13 @@ babel-plugin-check-es2015-constants@^6.22.0: dependencies: babel-runtime "^6.22.0" +babel-plugin-dynamic-import-node@^2.3.3: + version "2.3.3" + resolved "https://registry.yarnpkg.com/babel-plugin-dynamic-import-node/-/babel-plugin-dynamic-import-node-2.3.3.tgz#84fda19c976ec5c6defef57f9427b3def66e17a3" + integrity sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ== + dependencies: + object.assign "^4.1.0" + babel-plugin-istanbul@^6.0.0: version "6.0.0" resolved "https://registry.yarnpkg.com/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz#e159ccdc9af95e0b570c75b4573b7c34d671d765" @@ -4208,6 +5008,11 @@ babel-plugin-syntax-trailing-function-commas@^6.22.0: resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-6.22.0.tgz#ba0360937f8d06e40180a43fe0d5616fff532cf3" integrity sha1-ugNgk3+NBuQBgKQ/4NVhb/9TLPM= +babel-plugin-syntax-trailing-function-commas@^7.0.0-beta.0: + version "7.0.0-beta.0" + resolved "https://registry.yarnpkg.com/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz#aa213c1435e2bffeb6fca842287ef534ad05d5cf" + integrity sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ== + babel-plugin-transform-async-to-generator@^6.22.0: version "6.24.1" resolved "https://registry.yarnpkg.com/babel-plugin-transform-async-to-generator/-/babel-plugin-transform-async-to-generator-6.24.1.tgz#6536e378aff6cb1d5517ac0e40eb3e9fc8d08761" @@ -4508,6 +5313,39 @@ babel-preset-env@^1.6.1, babel-preset-env@^1.7.0: invariant "^2.2.2" semver "^5.3.0" +babel-preset-fbjs@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/babel-preset-fbjs/-/babel-preset-fbjs-3.3.0.tgz#a6024764ea86c8e06a22d794ca8b69534d263541" + integrity sha512-7QTLTCd2gwB2qGoi5epSULMHugSVgpcVt5YAeiFO9ABLrutDQzKfGwzxgZHLpugq8qMdg/DhRZDZ5CLKxBkEbw== + dependencies: + "@babel/plugin-proposal-class-properties" "^7.0.0" + "@babel/plugin-proposal-object-rest-spread" "^7.0.0" + "@babel/plugin-syntax-class-properties" "^7.0.0" + "@babel/plugin-syntax-flow" "^7.0.0" + "@babel/plugin-syntax-jsx" "^7.0.0" + "@babel/plugin-syntax-object-rest-spread" "^7.0.0" + "@babel/plugin-transform-arrow-functions" "^7.0.0" + "@babel/plugin-transform-block-scoped-functions" "^7.0.0" + "@babel/plugin-transform-block-scoping" "^7.0.0" + "@babel/plugin-transform-classes" "^7.0.0" + "@babel/plugin-transform-computed-properties" "^7.0.0" + "@babel/plugin-transform-destructuring" "^7.0.0" + "@babel/plugin-transform-flow-strip-types" "^7.0.0" + "@babel/plugin-transform-for-of" "^7.0.0" + "@babel/plugin-transform-function-name" "^7.0.0" + "@babel/plugin-transform-literals" "^7.0.0" + "@babel/plugin-transform-member-expression-literals" "^7.0.0" + "@babel/plugin-transform-modules-commonjs" "^7.0.0" + "@babel/plugin-transform-object-super" "^7.0.0" + "@babel/plugin-transform-parameters" "^7.0.0" + "@babel/plugin-transform-property-literals" "^7.0.0" + "@babel/plugin-transform-react-display-name" "^7.0.0" + "@babel/plugin-transform-react-jsx" "^7.0.0" + "@babel/plugin-transform-shorthand-properties" "^7.0.0" + "@babel/plugin-transform-spread" "^7.0.0" + "@babel/plugin-transform-template-literals" "^7.0.0" + babel-plugin-syntax-trailing-function-commas "^7.0.0-beta.0" + babel-preset-jest@^26.5.0: version "26.5.0" resolved "https://registry.yarnpkg.com/babel-preset-jest/-/babel-preset-jest-26.5.0.tgz#f1b166045cd21437d1188d29f7fba470d5bdb0e7" @@ -4769,22 +5607,7 @@ bn.js@^5.1.2: resolved "https://registry.yarnpkg.com/bn.js/-/bn.js-5.1.2.tgz#c9686902d3c9a27729f43ab10f9d79c2004da7b0" integrity sha512-40rZaf3bUNKTVYu9sIeeEGOg7g14Yvnj9kH7b50EiwX0Q7A6umbvfI5tvHaOERH0XigqKkfLkFQxzb4e6CIXnA== -body-parser@1.18.3, body-parser@^1.18.3: - version "1.18.3" - resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.18.3.tgz#5b292198ffdd553b3a0f20ded0592b956955c8b4" - dependencies: - bytes "3.0.0" - content-type "~1.0.4" - debug "2.6.9" - depd "~1.1.2" - http-errors "~1.6.3" - iconv-lite "0.4.23" - on-finished "~2.3.0" - qs "6.5.2" - raw-body "2.3.3" - type-is "~1.6.16" - -body-parser@1.19.0, body-parser@^1.15.0, body-parser@^1.16.0: +body-parser@1.19.0, body-parser@^1.15.0, body-parser@^1.16.0, body-parser@^1.18.3: version "1.19.0" resolved "https://registry.yarnpkg.com/body-parser/-/body-parser-1.19.0.tgz#96b2709e57c9c4e09a6fd66a8fd979844f69f08a" integrity sha512-dhEPs72UPbDnAQJ9ZKMNTP6ptJaionhP5cBb541nXPlW60Jepo9RV/a4fX4XWW9CuFNK22krhrj1+rgzifNCsw== @@ -5154,10 +5977,10 @@ builtins@^1.0.3: resolved "https://registry.yarnpkg.com/builtins/-/builtins-1.0.3.tgz#cb94faeb61c8696451db36534e1422f94f0aee88" integrity sha1-y5T662HIaWRR2zZTThQi+U8K7og= -busboy@^0.3.0: - version "0.3.0" - resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.3.0.tgz#6ee3cb1c844fc1f691d8f9d824f70128b3b5e485" - integrity sha512-e+kzZRAbbvJPLjQz2z+zAyr78BSi9IFeBTyLwF76g78Q2zRt/RZ1NtS3MS17v2yLqYfLz69zHdC+1L4ja8PwqQ== +busboy@^0.3.1: + version "0.3.1" + resolved "https://registry.yarnpkg.com/busboy/-/busboy-0.3.1.tgz#170899274c5bf38aae27d5c62b71268cd585fd1b" + integrity sha512-y7tTxhGKXcyBxRKAni+awqx8uqaJKrSFSNFSeRG5CsWNdmy2BIK+6VGWEW7TZnIO/533mtMEA4rOevQV815YJw== dependencies: dicer "0.3.0" @@ -5171,11 +5994,6 @@ byte-size@^5.0.1: resolved "https://registry.yarnpkg.com/byte-size/-/byte-size-5.0.1.tgz#4b651039a5ecd96767e71a3d7ed380e48bed4191" integrity sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw== -bytes@3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.0.0.tgz#d32815404d689699f85a4ea4fa8755dd13a96048" - integrity sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg= - bytes@3.1.0: version "3.1.0" resolved "https://registry.yarnpkg.com/bytes/-/bytes-3.1.0.tgz#f6cf7933a360e0588fa9fde85651cdc7f805d1f6" @@ -5331,6 +6149,14 @@ callsites@^3.0.0: resolved "https://registry.yarnpkg.com/callsites/-/callsites-3.1.0.tgz#b3630abd8943432f54b3f0519238e33cd7df2f73" integrity sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ== +camel-case@4.1.1, camel-case@^4.1.1: + version "4.1.1" + resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" + integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== + dependencies: + pascal-case "^3.1.1" + tslib "^1.10.0" + camel-case@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-3.0.0.tgz#ca3c3688a4e9cf3a4cda777dc4dcbc713249cf73" @@ -5339,14 +6165,6 @@ camel-case@^3.0.0: no-case "^2.2.0" upper-case "^1.1.1" -camel-case@^4.1.1: - version "4.1.1" - resolved "https://registry.yarnpkg.com/camel-case/-/camel-case-4.1.1.tgz#1fc41c854f00e2f7d0139dfeba1542d6896fe547" - integrity sha512-7fa2WcG4fYFkclIvEmxBbTvmibwF2/agfEBc6q3lOpVu0A13ltLsA+Hr/8Hp6kp5f+G7hKi6t8lys6XxP+1K6Q== - dependencies: - pascal-case "^3.1.1" - tslib "^1.10.0" - camelcase-keys@^2.0.0: version "2.1.0" resolved "https://registry.yarnpkg.com/camelcase-keys/-/camelcase-keys-2.1.0.tgz#308beeaffdf28119051efa1d932213c91b8f92e7" @@ -5964,7 +6782,7 @@ combine-source-map@^0.8.0, combine-source-map@~0.8.0: lodash.memoize "~3.0.3" source-map "~0.5.3" -combined-stream@^1.0.6, combined-stream@~1.0.6: +combined-stream@^1.0.6, combined-stream@^1.0.8, combined-stream@~1.0.6: version "1.0.8" resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.8.tgz#c3d45a8b34fd730631a110a8a2520682b31d5a7f" integrity sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg== @@ -5986,7 +6804,7 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^2.11.0, commander@^2.14.1, commander@^2.15.0, commander@^2.16.0, commander@^2.18.0, commander@^2.20.0, commander@^2.9.0, commander@~2.20.3: +commander@^2.11.0, commander@^2.14.1, commander@^2.15.0, commander@^2.16.0, commander@^2.18.0, commander@^2.20.0, commander@^2.20.3, commander@^2.9.0, commander@~2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -6126,11 +6944,6 @@ constants-browserify@^1.0.0, constants-browserify@~1.0.0: resolved "https://registry.yarnpkg.com/constants-browserify/-/constants-browserify-1.0.0.tgz#c20b96d8c617748aaf1c16021760cd27fcb8cb75" integrity sha1-wguW2MYXdIqvHBYCF2DNJ/y4y3U= -content-disposition@0.5.2: - version "0.5.2" - resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.2.tgz#0cf68bb9ddf5f2be7961c3a85178cb85dba78cb4" - integrity sha1-DPaLud318r55YcOoUXjLhdunjLQ= - content-disposition@0.5.3, content-disposition@^0.5.2: version "0.5.3" resolved "https://registry.yarnpkg.com/content-disposition/-/content-disposition-0.5.3.tgz#e130caf7e7279087c5616c2007d0485698984fbd" @@ -6259,11 +7072,6 @@ cookie-signature@1.0.6: resolved "https://registry.yarnpkg.com/cookie-signature/-/cookie-signature-1.0.6.tgz#e303a882b342cc3ee8ca513a79999734dab3ae2c" integrity sha1-4wOogrNCzD7oylE6eZmXNNqzriw= -cookie@0.3.1: - version "0.3.1" - resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.3.1.tgz#e7e0a1f9ef43b4c8ba925c5c5a96e806d16873bb" - integrity sha1-5+Ch+e9DtMi6klxcWpboBtFoc7s= - cookie@0.4.0: version "0.4.0" resolved "https://registry.yarnpkg.com/cookie/-/cookie-0.4.0.tgz#beb437e7022b3b6d49019d088665303ebe9c14ba" @@ -6314,15 +7122,15 @@ core-js-pure@^3.0.1: resolved "https://registry.yarnpkg.com/core-js-pure/-/core-js-pure-3.6.4.tgz#4bf1ba866e25814f149d4e9aaa08c36173506e3a" integrity sha512-epIhRLkXdgv32xIUFaaAry2wdxZYBi6bgM7cB136dzzXXa+dFyRLTZeLUJxnd8ShrmyVXBub63n2NHo2JAt8Cw== -core-js@^2.4.0, core-js@^2.5.0, core-js@^2.5.3, core-js@^2.6.5: +core-js@^2.4.0, core-js@^2.4.1, core-js@^2.5.0, core-js@^2.5.3, core-js@^2.6.5: version "2.6.11" resolved "https://registry.yarnpkg.com/core-js/-/core-js-2.6.11.tgz#38831469f9922bded8ee21c9dc46985e0399308c" integrity sha512-5wjnpaT/3dV+XB4borEsnAYQchn00XSgTAWKDkEqv+K8KevjbzmofK6hfJ9TZIlpj2N0xQpazy7PiRQiWHqzWg== -core-js@^3.0.0-beta.3: - version "3.0.0-beta.8" - resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.0.0-beta.8.tgz#2b0b5a26e01cb176c9197d84d1f05911bcd66f53" - integrity sha512-ex9wpitprNDuK6bPRljFW0z0IBatqtmqeuZ1HpcFcSkdOQSGNu3XdZSTshEuAIeYgLarHpw55P3SQlKAnXmpuQ== +core-js@^3.0.1: + version "3.6.5" + resolved "https://registry.yarnpkg.com/core-js/-/core-js-3.6.5.tgz#7395dc273af37fb2e50e9bd3d9fe841285231d1a" + integrity sha512-vZVEEwZoIsI+vPEuoF9Iqf5H7/M3eeQqWlQnYa8FSKKePuYTf5MWnxb5SDAzCa60b3JBRS5g9b+Dq7b1y/RCrA== core-util-is@1.0.2, core-util-is@~1.0.0: version "1.0.2" @@ -6399,6 +7207,13 @@ create-hmac@^1.1.0, create-hmac@^1.1.2, create-hmac@^1.1.4, create-hmac@^1.1.7: safe-buffer "^5.0.1" sha.js "^2.4.8" +cross-fetch@3.0.6: + version "3.0.6" + resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-3.0.6.tgz#3a4040bc8941e653e0e9cf17f29ebcd177d3365c" + integrity sha512-KBPUbqgFjzWlVcURG+Svp9TlhA5uliYtiNx/0r8nv0pdypeQCRJ9IaSIc3q/x3q8t3F75cHuwxVql1HFGHCNJQ== + dependencies: + node-fetch "2.6.1" + cross-fetch@^2.1.0, cross-fetch@^2.1.1: version "2.2.3" resolved "https://registry.yarnpkg.com/cross-fetch/-/cross-fetch-2.2.3.tgz#e8a0b3c54598136e037f8650f8e823ccdfac198e" @@ -6496,6 +7311,11 @@ css@2.X: source-map-resolve "^0.5.2" urix "^0.1.0" +cssfilter@0.0.10: + version "0.0.10" + resolved "https://registry.yarnpkg.com/cssfilter/-/cssfilter-0.0.10.tgz#c6d2672632a2e5c83e013e6864a42ce8defd20ae" + integrity sha1-xtJnJjKi5cg+AT5oZKQs6N79IK4= + cssom@0.3.x, "cssom@>= 0.3.0 < 0.4.0", cssom@~0.3.6: version "0.3.8" resolved "https://registry.yarnpkg.com/cssom/-/cssom-0.3.8.tgz#9f1276f5b2b463f2114d3f2c75250af8c1a36f4a" @@ -6568,6 +7388,11 @@ data-urls@^2.0.0: whatwg-mimetype "^2.3.0" whatwg-url "^8.0.0" +dataloader@2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/dataloader/-/dataloader-2.0.0.tgz#41eaf123db115987e21ca93c005cd7753c55fe6f" + integrity sha512-YzhyDAwA4TaQIhM5go+vCLmU0UikghC/t9DTQYZR2M/UvZ1MdOhPezSDZcjj9uqQJOMqjLcpWtyW2iNINdlatQ== + date-fns@^1.27.2: version "1.30.1" resolved "https://registry.yarnpkg.com/date-fns/-/date-fns-1.30.1.tgz#2e71bf0b119153dbb4cc4e88d9ea5acfb50dc05c" @@ -6586,6 +7411,11 @@ dateformat@~1.0.4-1.2.3: get-stdin "^4.0.1" meow "^3.3.0" +de-indent@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/de-indent/-/de-indent-1.0.2.tgz#b2038e846dc33baa5796128d0804b455b8c1e21d" + integrity sha1-sgOOhG3DO6pXlhKNCAS0VbjB4h0= + debounce@^1.0.0: version "1.2.0" resolved "https://registry.yarnpkg.com/debounce/-/debounce-1.2.0.tgz#44a540abc0ea9943018dc0eaa95cce87f65cd131" @@ -8743,52 +9573,17 @@ expect@^26.5.3: dependencies: "@jest/types" "^26.5.2" ansi-styles "^4.0.0" - jest-get-type "^26.3.0" - jest-matcher-utils "^26.5.2" - jest-message-util "^26.5.2" - jest-regex-util "^26.0.0" - -expirymanager@^0.9.3: - version "0.9.3" - resolved "https://registry.yarnpkg.com/expirymanager/-/expirymanager-0.9.3.tgz#e5f6b3ba00d8d76cf63311c2b71d7dfc9bde3e4f" - integrity sha1-5fazugDY12z2MxHCtx19/JvePk8= - -express@^4.0.0: - version "4.16.4" - resolved "https://registry.yarnpkg.com/express/-/express-4.16.4.tgz#fddef61926109e24c515ea97fd2f1bdbf62df12e" - dependencies: - accepts "~1.3.5" - array-flatten "1.1.1" - body-parser "1.18.3" - content-disposition "0.5.2" - content-type "~1.0.4" - cookie "0.3.1" - cookie-signature "1.0.6" - debug "2.6.9" - depd "~1.1.2" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - finalhandler "1.1.1" - fresh "0.5.2" - merge-descriptors "1.0.1" - methods "~1.1.2" - on-finished "~2.3.0" - parseurl "~1.3.2" - path-to-regexp "0.1.7" - proxy-addr "~2.0.4" - qs "6.5.2" - range-parser "~1.2.0" - safe-buffer "5.1.2" - send "0.16.2" - serve-static "1.13.2" - setprototypeof "1.1.0" - statuses "~1.4.0" - type-is "~1.6.16" - utils-merge "1.0.1" - vary "~1.1.2" + jest-get-type "^26.3.0" + jest-matcher-utils "^26.5.2" + jest-message-util "^26.5.2" + jest-regex-util "^26.0.0" + +expirymanager@^0.9.3: + version "0.9.3" + resolved "https://registry.yarnpkg.com/expirymanager/-/expirymanager-0.9.3.tgz#e5f6b3ba00d8d76cf63311c2b71d7dfc9bde3e4f" + integrity sha1-5fazugDY12z2MxHCtx19/JvePk8= -express@^4.13.3, express@^4.14.0, express@^4.16.2, express@^4.16.3: +express@^4.0.0, express@^4.13.3, express@^4.14.0, express@^4.16.2, express@^4.16.3, express@^4.17.1: version "4.17.1" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" integrity sha512-mHJ9O79RqluphRrcw2X/GTh3k9tVv8YcoyY4Kkh4WDMUYKRZUq0h1o0w2rrrxBqM7VoeUVqgb27xlEMXTnYt4g== @@ -8905,6 +9700,11 @@ extglob@^2.0.4: snapdragon "^0.8.1" to-regex "^3.0.1" +extract-files@^9.0.0: + version "9.0.0" + resolved "https://registry.yarnpkg.com/extract-files/-/extract-files-9.0.0.tgz#8a7744f2437f81f5ed3250ed9f1550de902fe54a" + integrity sha512-CvdFfHkC95B4bBBk36hcEmvdR2awOdhhVUYH6S/zrVj3477zven/fJMYg7121h4T1xHZC+tetUpubpAhxwI7hQ== + extsprintf@1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05" @@ -9017,6 +9817,25 @@ fb-watchman@^2.0.0: dependencies: bser "2.1.1" +fbjs-css-vars@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz#216551136ae02fe255932c3ec8775f18e2c078b8" + integrity sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ== + +fbjs@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fbjs/-/fbjs-1.0.0.tgz#52c215e0883a3c86af2a7a776ed51525ae8e0a5a" + integrity sha512-MUgcMEJaFhCaF1QtWGnmq9ZDRAzECTCRAF7O6UZIlAlkTs1SasiX9aP0Iw7wfD2mJ7wDTNfg2w7u5fSCwJk1OA== + dependencies: + core-js "^2.4.1" + fbjs-css-vars "^1.0.0" + isomorphic-fetch "^2.1.1" + loose-envify "^1.0.0" + object-assign "^4.1.0" + promise "^7.1.1" + setimmediate "^1.0.5" + ua-parser-js "^0.7.18" + fd-slicer@~1.1.0: version "1.1.0" resolved "https://registry.yarnpkg.com/fd-slicer/-/fd-slicer-1.1.0.tgz#25c7c89cb1f9077f8891bbe61d8f390eae256f1e" @@ -9162,19 +9981,6 @@ fill-range@^7.0.1: dependencies: to-regex-range "^5.0.1" -finalhandler@1.1.1: - version "1.1.1" - resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.1.tgz#eebf4ed840079c83f4249038c9d703008301b105" - integrity sha512-Y1GUDo39ez4aHAw7MysnUD5JzYX+WaIj8I57kO3aEPT1fFRL4sr7mjei97FgnwhAyyzRYmQZaTHb2+9uZ1dPtg== - dependencies: - debug "2.6.9" - encodeurl "~1.0.2" - escape-html "~1.0.3" - on-finished "~2.3.0" - parseurl "~1.3.2" - statuses "~1.4.0" - unpipe "~1.0.0" - finalhandler@~1.1.2: version "1.1.2" resolved "https://registry.yarnpkg.com/finalhandler/-/finalhandler-1.1.2.tgz#b7e7d000ffd11938d0fdb053506f6ebabe9f587d" @@ -9404,6 +10210,15 @@ forever-agent@~0.6.1: resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91" integrity sha1-+8cfDEGt6zf5bFd60e1C2P2sypE= +form-data@3.0.0, form-data@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/form-data/-/form-data-3.0.0.tgz#31b7e39c85f1355b7139ee0c647cf0de7f83c682" + integrity sha512-CKMFDglpbMi6PyN+brwB9Q/GOw0eAnsrEZDgcsH5Krhz5Od/haKHAX0NmQfha2zPPz0JpWzA7GJHGSnvCRLWsg== + dependencies: + asynckit "^0.4.0" + combined-stream "^1.0.8" + mime-types "^2.1.12" + form-data@^2.5.0: version "2.5.1" resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.5.1.tgz#f2cbec57b5e59e23716e128fe44d4e5dd23895f4" @@ -9452,10 +10267,10 @@ from2@^2.1.0, from2@^2.1.1: inherits "^2.0.1" readable-stream "^2.0.0" -fs-capacitor@^2.0.0: - version "2.0.0" - resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-2.0.0.tgz#6cbafaa39313eebf9c49ecff8795aadc08337fc5" - integrity sha512-CIJZpxbVWhO+qyODeCR55Q+6vj0p2oL8DAWd/DZi3Ev+25PimUoScw07K0fPgluaH3lFoqNvwW13BDYfHWFQJw== +fs-capacitor@^2.0.4: + version "2.0.4" + resolved "https://registry.yarnpkg.com/fs-capacitor/-/fs-capacitor-2.0.4.tgz#5a22e72d40ae5078b4fe64fe4d08c0d3fc88ad3c" + integrity sha512-8S4f4WsCryNw2mJJchi46YgB6CR5Ze+4L1h8ewl9tEpL4SJ3ZO+c/bS4BWhB8bK+O3TMqhuZarTitd0S0eh2pA== fs-constants@^1.0.0: version "1.0.0" @@ -9489,6 +10304,16 @@ fs-extra@6.0.1, fs-extra@^6.0.1: jsonfile "^4.0.0" universalify "^0.1.0" +fs-extra@9.0.1: + version "9.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-9.0.1.tgz#910da0062437ba4c39fedd863f1675ccfefcb9fc" + integrity sha512-h2iAoN838FqAFJY2/qVpzFXy+EBxfVE220PalAqQLDVsFOHLJrZvut5puAbCdNv6WJk+B8ihI+k0c7JK5erwqQ== + dependencies: + at-least-node "^1.0.0" + graceful-fs "^4.2.0" + jsonfile "^6.0.1" + universalify "^1.0.0" + fs-extra@^0.30.0: version "0.30.0" resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-0.30.0.tgz#f233ffcc08d4da7d432daa449776989db1df93f0" @@ -10073,7 +10898,7 @@ globals@^9.18.0: resolved "https://registry.yarnpkg.com/globals/-/globals-9.18.0.tgz#aa3896b3e69b487f17e31ed2143d69a8e30c2d8a" integrity sha512-S0nG3CLEQiY/ILxqtztTWH/3iRRdyBLw6KMDxnKMchrtbj2OFmehVh0WUCfW3DUrIgx/qFrJPICrq4Z4sTR9UQ== -globby@^11.0.1: +globby@11.0.1, globby@^11.0.1: version "11.0.1" resolved "https://registry.yarnpkg.com/globby/-/globby-11.0.1.tgz#9a2bf107a068f3ffeabc49ad702c79ede8cfd357" integrity sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ== @@ -10207,17 +11032,6 @@ got@^8.3.1: url-parse-lax "^3.0.0" url-to-options "^1.0.1" -gql2ts@^1.10.1: - version "1.10.1" - resolved "https://registry.yarnpkg.com/gql2ts/-/gql2ts-1.10.1.tgz#aae1a1312744f7c9b36abf78437413ea317f6a71" - integrity sha512-Kwa1Db1e3qGediBi1A5wX98UBKmvUklsQgfLwk7J8bj9RQ4AkAwTToFvUmKhflKTZndAtQbdOJWwm5cmgXsLYA== - dependencies: - "@gql2ts/from-query" "^1.9.0" - "@gql2ts/from-schema" "^1.10.1" - "@gql2ts/util" "^1.9.0" - commander "^2.9.0" - graphql ">= 0.10 <15" - graceful-fs@4.X, graceful-fs@^4.0.0, graceful-fs@^4.1.10, graceful-fs@^4.1.11, graceful-fs@^4.1.15, graceful-fs@^4.1.2, graceful-fs@^4.1.5, graceful-fs@^4.1.6, graceful-fs@^4.1.9, graceful-fs@^4.2.0, graceful-fs@^4.2.2: version "4.2.3" resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.3.tgz#4a12ff1b60376ef09862c2093edd908328be8423" @@ -10233,20 +11047,6 @@ graceful-fs@^4.2.4: resolved "https://registry.yarnpkg.com/graceful-readlink/-/graceful-readlink-1.0.1.tgz#4cafad76bc62f02fa039b2f94e9a3dd3a391a725" integrity sha1-TK+tdrxi8C+gObL5Tpo906ORpyU= -graphql-extensions@0.4.0: - version "0.4.0" - resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.4.0.tgz#5857c7b7b9f20dbccbfd88730fffa5963b3c61ee" - integrity sha512-8TUgIIUVpXWOcqq9RdmTSHUrhc3a/s+saKv9cCl8TYWHK9vyJIdea7ZaSKHGDthZNcsN+C3LulZYRL3Ah8ukoA== - dependencies: - "@apollographql/apollo-tools" "^0.2.6" - -graphql-extensions@0.4.1: - version "0.4.1" - resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.4.1.tgz#92c49a8409ffbfb24559d7661ab60cc90d6086e4" - integrity sha512-Xei4rBxbsTHU6dYiq9y1xxbpRMU3+Os7yD3vXV5W4HbTaxRMizDmu6LAvV4oBEi0ttwICHARQjYTjDTDhHnxrQ== - dependencies: - "@apollographql/apollo-tools" "^0.2.6" - graphql-extensions@^0.0.x, graphql-extensions@~0.0.9: version "0.0.10" resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.0.10.tgz#34bdb2546d43f6a5bc89ab23c295ec0466c6843d" @@ -10255,6 +11055,15 @@ graphql-extensions@^0.0.x, graphql-extensions@~0.0.9: core-js "^2.5.3" source-map-support "^0.5.1" +graphql-extensions@^0.12.5: + version "0.12.5" + resolved "https://registry.yarnpkg.com/graphql-extensions/-/graphql-extensions-0.12.5.tgz#b0e6b218f26f5aafe9dd73642410fec6beac0575" + integrity sha512-mGyGaktGpK3TVBtM0ZoyPX6Xk0mN9GYX9DRyFzDU4k4A2w93nLX7Ebcp+9/O5nHRmgrc0WziYYSmoWq2WNIoUQ== + dependencies: + "@apollographql/apollo-tools" "^0.4.3" + apollo-server-env "^2.4.5" + apollo-server-types "^0.6.0" + graphql-server-express@^1.4.0: version "1.4.1" resolved "https://registry.yarnpkg.com/graphql-server-express/-/graphql-server-express-1.4.1.tgz#b096743fb8e3380a3e93cefbe635d0f18f7a57f5" @@ -10263,28 +11072,23 @@ graphql-server-express@^1.4.0: apollo-server-express "^1.4.0" graphql-subscriptions@^1.0.0: - version "1.0.0" - resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-1.0.0.tgz#475267694b3bd465af6477dbab4263a3f62702b8" - integrity sha512-+ytmryoHF1LVf58NKEaNPRUzYyXplm120ntxfPcgOBC7TnK7Tv/4VRHeh4FAR9iL+O1bqhZs4nkibxQ+OA5cDQ== + version "1.1.0" + resolved "https://registry.yarnpkg.com/graphql-subscriptions/-/graphql-subscriptions-1.1.0.tgz#5f2fa4233eda44cf7570526adfcf3c16937aef11" + integrity sha512-6WzlBFC0lWmXJbIVE8OgFgXIP4RJi3OQgTPa0DVMsDXdpRDjTsM1K9wfl5HSYX7R87QAGlvcv2Y4BIZa/ItonA== dependencies: iterall "^1.2.1" -graphql-tag@^2.10.1: - version "2.10.1" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.1.tgz#10aa41f1cd8fae5373eaf11f1f67260a3cad5e02" - integrity sha512-jApXqWBzNXQ8jYa/HLkZJaVw9jgwNqZkywa2zfFn16Iv1Zb7ELNHkJaXHR7Quvd5SIGsy6Ny7SUKATgnu05uEg== - -graphql-tag@^2.9.2: - version "2.10.0" - resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.10.0.tgz#87da024be863e357551b2b8700e496ee2d4353ae" - integrity sha512-9FD6cw976TLLf9WYIUPCaaTpniawIjHWZSwIRZSjrfufJamcXbVVYfN2TWvJYbw0Xf2JjYbl1/f2+wDnBVw3/w== +graphql-tag@^2.11.0, graphql-tag@^2.9.2: + version "2.11.0" + resolved "https://registry.yarnpkg.com/graphql-tag/-/graphql-tag-2.11.0.tgz#1deb53a01c46a7eb401d6cb59dec86fa1cccbffd" + integrity sha512-VmsD5pJqWJnQZMUeRwrDhfgoyqcfwEkvtpANqcoUG8/tOLkwNgU9mzub/Mc78OJMhHjx7gfAMTxzdG43VGg3bA== graphql-tools@^4.0.0: - version "4.0.3" - resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.3.tgz#23b5cb52c519212b1b2e4630a361464396ad264b" - integrity sha512-NNZM0WSnVLX1zIMUxu7SjzLZ4prCp15N5L2T2ro02OVyydZ0fuCnZYRnx/yK9xjGWbZA0Q58yEO//Bv/psJWrg== + version "4.0.8" + resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-4.0.8.tgz#e7fb9f0d43408fb0878ba66b522ce871bafe9d30" + integrity sha512-MW+ioleBrwhRjalKjYaLQbr+920pHBgy9vM/n47sswtns8+96sRn5M/G+J1eu7IMeKWiN/9p6tmwCHU7552VJg== dependencies: - apollo-link "^1.2.3" + apollo-link "^1.2.14" apollo-utilities "^1.0.1" deprecated-decorator "^0.1.6" iterall "^1.1.3" @@ -10301,22 +11105,49 @@ graphql-tools@^4.0.3: iterall "^1.1.3" uuid "^3.1.0" +graphql-tools@^6.2.4: + version "6.2.4" + resolved "https://registry.yarnpkg.com/graphql-tools/-/graphql-tools-6.2.4.tgz#e4573ab65ea53a1e64dbe1fd4ccb483b59946fd2" + integrity sha512-yA5E6QRz6IRZ3TrxGkh+xIGeinISZVzb3Mc0Z/3q3gu1MgqnB/3y7Iv3tXuL1DNvoNcJV5WiAU8KYMsvNSF1gQ== + dependencies: + "@graphql-tools/batch-delegate" "^6.2.4" + "@graphql-tools/code-file-loader" "^6.2.4" + "@graphql-tools/delegate" "^6.2.4" + "@graphql-tools/git-loader" "^6.2.4" + "@graphql-tools/github-loader" "^6.2.4" + "@graphql-tools/graphql-file-loader" "^6.2.4" + "@graphql-tools/graphql-tag-pluck" "^6.2.4" + "@graphql-tools/import" "^6.2.4" + "@graphql-tools/json-file-loader" "^6.2.4" + "@graphql-tools/links" "^6.2.4" + "@graphql-tools/load" "^6.2.4" + "@graphql-tools/load-files" "^6.2.4" + "@graphql-tools/merge" "^6.2.4" + "@graphql-tools/mock" "^6.2.4" + "@graphql-tools/module-loader" "^6.2.4" + "@graphql-tools/relay-operation-optimizer" "^6.2.4" + "@graphql-tools/resolvers-composition" "^6.2.4" + "@graphql-tools/schema" "^6.2.4" + "@graphql-tools/stitch" "^6.2.4" + "@graphql-tools/url-loader" "^6.2.4" + "@graphql-tools/utils" "^6.2.4" + "@graphql-tools/wrap" "^6.2.4" + tslib "~2.0.1" + graphql-upload@^8.0.2: - version "8.0.4" - resolved "https://registry.yarnpkg.com/graphql-upload/-/graphql-upload-8.0.4.tgz#ed7cbde883b5cca493de77e39f95cddf40dfd514" - integrity sha512-jsTfVYXJ5mU6BXiiJ20CUCAcf41ICCQJ2ltwQFUuaFKiY4JhlG99uZZp5S3hbpQ/oA1kS7hz4pRtsnxPCa7Yfg== + version "8.1.0" + resolved "https://registry.yarnpkg.com/graphql-upload/-/graphql-upload-8.1.0.tgz#6d0ab662db5677a68bfb1f2c870ab2544c14939a" + integrity sha512-U2OiDI5VxYmzRKw0Z2dmfk0zkqMRaecH9Smh1U277gVgVe9Qn+18xqf4skwr4YJszGIh7iQDZ57+5ygOK9sM/Q== dependencies: - busboy "^0.3.0" - fs-capacitor "^2.0.0" - http-errors "^1.7.1" + busboy "^0.3.1" + fs-capacitor "^2.0.4" + http-errors "^1.7.3" object-path "^0.11.4" -graphql@14.0.2, "graphql@>= 0.10 <15", graphql@^14.0.2: - version "14.0.2" - resolved "https://registry.yarnpkg.com/graphql/-/graphql-14.0.2.tgz#7dded337a4c3fd2d075692323384034b357f5650" - integrity sha512-gUC4YYsaiSJT1h40krG3J+USGlwhzNTXSb4IOZljn9ag5Tj+RkoXrWp+Kh7WyE3t1NCfab5kzCuxBIvOMERMXw== - dependencies: - iterall "^1.2.2" +graphql@*, graphql@^15.3.0: + version "15.3.0" + resolved "https://registry.yarnpkg.com/graphql/-/graphql-15.3.0.tgz#3ad2b0caab0d110e3be4a5a9b2aa281e362b5278" + integrity sha512-GTCJtzJmkFLWRfFJuoo9RWWa/FfamUHgiFosxi/X1Ani4AVWbeyBenZTNX6dM+7WSbbFfTo/25eh0LLkwHMw2w== graphql@^0.13.0: version "0.13.2" @@ -10519,7 +11350,7 @@ he@1.1.1: resolved "https://registry.yarnpkg.com/he/-/he-1.1.1.tgz#93410fd21b009735151f8868c2f271f3427e23fd" integrity sha1-k0EP0hsAlzUVH4howvJx80J+I/0= -he@1.2.0, he@^1.1.1: +he@1.2.0, he@^1.1.0, he@^1.1.1: version "1.2.0" resolved "https://registry.yarnpkg.com/he/-/he-1.2.0.tgz#84ae65fa7eafb165fddb61566ae14baf05664f0f" integrity sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw== @@ -10566,6 +11397,13 @@ hmac-drbg@^1.0.0: minimalistic-assert "^1.0.0" minimalistic-crypto-utils "^1.0.1" +hoist-non-react-statics@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz#ece0acaf71d62c2969c2ec59feff42a4b1a85b45" + integrity sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw== + dependencies: + react-is "^16.7.0" + home-or-tmp@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/home-or-tmp/-/home-or-tmp-2.0.0.tgz#e36c3f2d2cae7d746a857e38d18d5f32a7882db8" @@ -10641,16 +11479,6 @@ http-cache-semantics@^4.0.0: resolved "https://registry.yarnpkg.com/http-cache-semantics/-/http-cache-semantics-4.0.3.tgz#495704773277eeef6e43f9ab2c2c7d259dda25c5" integrity sha512-TcIMG3qeVLgDr1TEd2XvHaTnMPwYQUQMIBLy+5pLSDKYFc7UIqj39w8EGzZkaxoLv/l2K8HaI0t5AVA+YYgUew== -http-errors@1.6.3, http-errors@~1.6.2, http-errors@~1.6.3: - version "1.6.3" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.6.3.tgz#8b55680bb4be283a0b5bf4ea2e38580be1d9320d" - integrity sha1-i1VoC7S+KDoLW/TqLjhYC+HZMg0= - dependencies: - depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" - statuses ">= 1.4.0 < 2" - http-errors@1.7.2: version "1.7.2" resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.2.tgz#4f5029cf13239f31036e5b2e55292bcfbcc85c8f" @@ -10662,14 +11490,14 @@ http-errors@1.7.2: statuses ">= 1.5.0 < 2" toidentifier "1.0.0" -http-errors@^1.7.1: - version "1.7.1" - resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.7.1.tgz#6a4ffe5d35188e1c39f872534690585852e1f027" - integrity sha512-jWEUgtZWGSMba9I1N3gc1HmvpBUaNC9vDdA46yScAdp+C5rdEuKWUBLWTQpW9FwSWSbYYs++b6SDCxf9UEJzfw== +http-errors@^1.7.3: + version "1.8.0" + resolved "https://registry.yarnpkg.com/http-errors/-/http-errors-1.8.0.tgz#75d1bbe497e1044f51e4ee9e704a62f28d336507" + integrity sha512-4I8r0C5JDhT5VkvI47QktDW75rNlGVsUf/8hzjCC/wkWI/jdTRmBb9aI7erSG82r1bjKY3F6k28WnsVxB1C73A== dependencies: depd "~1.1.2" - inherits "2.0.3" - setprototypeof "1.1.0" + inherits "2.0.4" + setprototypeof "1.2.0" statuses ">= 1.5.0 < 2" toidentifier "1.0.0" @@ -10769,13 +11597,6 @@ ice-cap@0.0.4: cheerio "0.20.0" color-logger "0.0.3" -iconv-lite@0.4.23: - version "0.4.23" - resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.23.tgz#297871f63be507adcfbfca715d0cd0eed84e9a63" - integrity sha512-neyTUVFtahjf0mB3dZT77u+8O0QB89jFdnBkd5P1JgYPbPaia3gXXOVL2fq8VyU2gMMD7SaN7QukTB/pmXYvDA== - dependencies: - safer-buffer ">= 2.1.2 < 3" - iconv-lite@0.4.24, iconv-lite@^0.4.17, iconv-lite@^0.4.24, iconv-lite@^0.4.4, iconv-lite@~0.4.13: version "0.4.24" resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" @@ -10832,6 +11653,11 @@ immediate@^3.2.2, immediate@^3.2.3, immediate@~3.2.3: resolved "https://registry.yarnpkg.com/immediate/-/immediate-3.2.3.tgz#d140fa8f614659bd6541233097ddaac25cdd991c" integrity sha1-0UD6j2FGWb1lQSMwl92qwlzdmRw= +immutable@~3.7.6: + version "3.7.6" + resolved "https://registry.yarnpkg.com/immutable/-/immutable-3.7.6.tgz#13b4d3cb12befa15482a26fe1b2ebae640071e4b" + integrity sha1-E7TTyxK++hVIKib+Gy665kAHHks= + import-fresh@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-fresh/-/import-fresh-2.0.0.tgz#d81355c15612d386c61f9ddd3922d4304822a546" @@ -10848,6 +11674,13 @@ import-fresh@^3.0.0, import-fresh@^3.2.1: parent-module "^1.0.0" resolve-from "^4.0.0" +import-from@3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/import-from/-/import-from-3.0.0.tgz#055cfec38cd5a27d8057ca51376d7d3bf0891966" + integrity sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ== + dependencies: + resolve-from "^5.0.0" + import-local@2.0.0, import-local@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/import-local/-/import-local-2.0.0.tgz#55070be38a5993cf18ef6db7e961f5bee5c5a09d" @@ -11336,6 +12169,13 @@ is-generator-fn@^2.0.0: resolved "https://registry.yarnpkg.com/is-generator-fn/-/is-generator-fn-2.1.0.tgz#7d140adc389aaf3011a8f2a2a4cfa6faadffb118" integrity sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ== +is-glob@4.0.1, is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" + integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== + dependencies: + is-extglob "^2.1.1" + is-glob@^2.0.0, is-glob@^2.0.1: version "2.0.1" resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-2.0.1.tgz#d096f926a3ded5600f3fdfd91198cb0888c2d863" @@ -11350,13 +12190,6 @@ is-glob@^3.1.0: dependencies: is-extglob "^2.1.0" -is-glob@^4.0.0, is-glob@^4.0.1, is-glob@~4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/is-glob/-/is-glob-4.0.1.tgz#7567dbe9f2f5e2467bc77ab83c4a29482407a5dc" - integrity sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg== - dependencies: - is-extglob "^2.1.1" - is-hex-prefixed@1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" @@ -11492,6 +12325,11 @@ is-primitive@^2.0.0: resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575" integrity sha1-IHurkWOEmcB7Kt8kCkGochADRXU= +is-promise@4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-4.0.0.tgz#42ff9f84206c1991d26debf520dd5c01042dd2f3" + integrity sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ== + is-promise@^2.1, is-promise@^2.1.0: version "2.1.0" resolved "https://registry.yarnpkg.com/is-promise/-/is-promise-2.1.0.tgz#79a2a9ece7f096e80f36d2b2f3bc16c1ff4bf3fa" @@ -11662,6 +12500,14 @@ isobject@^4.0.0: resolved "https://registry.yarnpkg.com/isobject/-/isobject-4.0.0.tgz#3f1c9155e73b192022a80819bacd0343711697b0" integrity sha512-S/2fF5wH8SJA/kmwr6HYhK/RI/OkhD84k8ntalo0iJjZikgq1XFvR5M8NPT1x5F7fBwCG3qHfnzeP/Vh/ZxCUA== +isomorphic-fetch@^2.1.1: + version "2.2.1" + resolved "https://registry.yarnpkg.com/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz#611ae1acf14f5e81f729507472819fe9733558a9" + integrity sha1-YRrhrPFPXoH3KVB0coGf6XM1WKk= + dependencies: + node-fetch "^1.0.1" + whatwg-fetch ">=0.10.0" + isstream@~0.1.2: version "0.1.2" resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a" @@ -11796,7 +12642,7 @@ isurl@^1.0.0-alpha5: has-to-string-tag-x "^1.2.0" is-object "^1.0.1" -iterall@^1.1.3, iterall@^1.2.1, iterall@^1.2.2: +iterall@^1.1.3, iterall@^1.2.1: version "1.2.2" resolved "https://registry.yarnpkg.com/iterall/-/iterall-1.2.2.tgz#92d70deb8028e0c39ff3164fdbf4d8b088130cd7" integrity sha512-yynBb1g+RFUPY64fTrFv7nsjRrENBQJaX2UL+2Szc9REFrSNm1rpSXHGzhmAy7a9uv3vlvgBlXnf9RqmPH1/DA== @@ -12627,6 +13473,15 @@ jsonfile@^4.0.0: optionalDependencies: graceful-fs "^4.1.6" +jsonfile@^6.0.1: + version "6.0.1" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-6.0.1.tgz#98966cba214378c8c84b82e085907b40bf614179" + integrity sha512-jR2b5v7d2vIOust+w3wtFKZIfpC2pnRmFAhAC/BuweZFQR8qZzxH1OyrQ10HmdVYiXWkYUqPVsz91cG7EL2FBg== + dependencies: + universalify "^1.0.0" + optionalDependencies: + graceful-fs "^4.1.6" + jsonfile@~1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-1.0.1.tgz#ea5efe40b83690b98667614a7392fc60e842c0dd" @@ -13636,6 +14491,11 @@ log-update@^2.3.0: cli-cursor "^2.0.0" wrap-ansi "^3.0.1" +loglevel@^1.6.7: + version "1.7.0" + resolved "https://registry.yarnpkg.com/loglevel/-/loglevel-1.7.0.tgz#728166855a740d59d38db01cf46f042caa041bb0" + integrity sha512-i2sY04nal5jDcagM3FMfG++T69GEEM8CYuOfeOIvmXzOIcwE9a/CJPR0MFM97pYMj/u10lzz7/zd7+qwhrBTqQ== + loglevelnext@^1.0.1: version "1.0.5" resolved "https://registry.yarnpkg.com/loglevelnext/-/loglevelnext-1.0.5.tgz#36fc4f5996d6640f539ff203ba819641680d75a2" @@ -14204,11 +15064,6 @@ miller-rabin@^4.0.0: bn.js "^4.0.0" brorand "^1.0.1" -mime-db@1.40.0: - version "1.40.0" - resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.40.0.tgz#a65057e998db090f732a68f6c276d387d4126c32" - integrity sha512-jYdeOMPy9vnxEqFRRo6ZvTZ8d9oPb+k18PKoYNYUe2stVEBPPwsln/qWzdbmaIvnhZ9v2P+CuecK+fpUfsV2mA== - mime-db@1.42.0: version "1.42.0" resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.42.0.tgz#3e252907b4c7adb906597b4b65636272cf9e7bac" @@ -14226,18 +15081,6 @@ mime-types@^2.1.12, mime-types@^2.1.16, mime-types@~2.1.19, mime-types@~2.1.24: dependencies: mime-db "1.42.0" -mime-types@~2.1.18: - version "2.1.24" - resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.24.tgz#b6f8d0b3e951efb77dedeca194cff6d16f676f81" - integrity sha512-WaFHS3MCl5fapm3oLxU4eYDw77IQM2ACcxQ9RIxfaC3ooc6PFuBMGZZsYpvoXS5D5QTWPieo1jjLdAm3TBP3cQ== - dependencies: - mime-db "1.40.0" - -mime@1.4.1: - version "1.4.1" - resolved "https://registry.yarnpkg.com/mime/-/mime-1.4.1.tgz#121f9ebc49e3766f311a76e1fa1c8003c4b03aa6" - integrity sha512-KI1+qOZu5DcW6wayYHSzR/tXKCDC5Om4s1z2QJjDULzLcmf3DvzS7oluY4HCTrc+9FiKmWUgeNLg7W3uIQvxtQ== - mime@1.6.0: version "1.6.0" resolved "https://registry.yarnpkg.com/mime/-/mime-1.6.0.tgz#32cd9e5c64553bd58d19a568af452acff04981b1" @@ -14734,11 +15577,6 @@ needle@^2.2.1: iconv-lite "^0.4.4" sax "^1.2.4" -negotiator@0.6.1: - version "0.6.1" - resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.1.tgz#2b327184e8992101177b28563fb5e7102acd0ca9" - integrity sha1-KzJxhOiZIQEXeyhWP7XnECrNDKk= - negotiator@0.6.2: version "0.6.2" resolved "https://registry.yarnpkg.com/negotiator/-/negotiator-0.6.2.tgz#feacf7ccf525a77ae9634436a64883ffeca346fb" @@ -14823,16 +15661,12 @@ node-fetch@2.4.1: resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.4.1.tgz#b2e38f1117b8acbedbe0524f041fb3177188255d" integrity sha512-P9UbpFK87NyqBZzUuDBDz4f6Yiys8xm8j7ACDbi6usvFm6KItklQUKjeoqTrYS/S1k6I8oaOC2YLLDr/gg26Mw== -node-fetch@^2.0.0, node-fetch@^2.1.2, node-fetch@^2.2.0: - version "2.3.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" - -node-fetch@^2.1.1, node-fetch@^2.3.0, node-fetch@^2.5.0: - version "2.6.0" - resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" - integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== +node-fetch@2.6.1, node-fetch@^2.1.2, node-fetch@^2.2.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.1.tgz#045bd323631f76ed2e2b55573394416b639a0052" + integrity sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw== -node-fetch@~1.7.1: +node-fetch@^1.0.1, node-fetch@~1.7.1: version "1.7.3" resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-1.7.3.tgz#980f6f72d85211a5347c6b2bc18c5b84c3eb47ef" integrity sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ== @@ -14840,6 +15674,15 @@ node-fetch@~1.7.1: encoding "^0.1.11" is-stream "^1.0.1" +node-fetch@^2.0.0: + version "2.3.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.3.0.tgz#1a1d940bbfb916a1d3e0219f037e89e71f8c5fa5" + +node-fetch@^2.1.1, node-fetch@^2.3.0, node-fetch@^2.5.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/node-fetch/-/node-fetch-2.6.0.tgz#e633456386d4aa55863f676a7ab0daa8fdecb0fd" + integrity sha512-8dG4H5ujfvFiqDmVu9fQ5bOHUC15JMjMY/Zumv26oOvvVJjM67KF8koCWIabKQ1GJIa9r2mMZscBq/TbdOcmNA== + node-gyp-build@^4.2.0: version "4.2.2" resolved "https://registry.yarnpkg.com/node-gyp-build/-/node-gyp-build-4.2.2.tgz#3f44b65adaafd42fb6c3d81afd630e45c847eb66" @@ -15143,6 +15986,11 @@ nth-check@~1.0.1: dependencies: boolbase "~1.0.0" +nullthrows@^1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/nullthrows/-/nullthrows-1.1.1.tgz#7818258843856ae971eae4208ad7d7eb19a431b1" + integrity sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw== + number-is-nan@^1.0.0: version "1.0.1" resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" @@ -15241,9 +16089,9 @@ object-keys@~0.4.0: integrity sha1-KKaq50KN0sOpLz2V8hM13SBOAzY= object-path@^0.11.4: - version "0.11.4" - resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.4.tgz#370ae752fbf37de3ea70a861c23bba8915691949" - integrity sha1-NwrnUvvzfePqcKhhwju6iRVpGUk= + version "0.11.5" + resolved "https://registry.yarnpkg.com/object-path/-/object-path-0.11.5.tgz#d4e3cf19601a5140a55a16ad712019a9c50b577a" + integrity sha512-jgSbThcoR/s+XumvGMTMf81QVBmah+/Q7K7YduKeKVWL7N111unR2d6pZZarSk6kY/caeNxUDyxOvMWyzoU2eg== object-visit@^1.0.0: version "1.0.1" @@ -15365,6 +16213,13 @@ opener@^1.5.1: resolved "https://registry.yarnpkg.com/opener/-/opener-1.5.1.tgz#6d2f0e77f1a0af0032aca716c2c1fbb8e7e8abed" integrity sha512-goYSy5c2UXE4Ra1xixabeVh1guIX/ZV/YokJksb6q2lubWu6UbvPQ20p542/sFIll1nl8JnCyK9oBaOcCWXwvA== +optimism@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/optimism/-/optimism-0.13.0.tgz#c08904e1439a0eb9e7f86183dafa06cc715ff351" + integrity sha512-6JAh3dH+YUE4QUdsgUw8nUQyrNeBKfAEKOHMlLkQ168KhIYFIxzPsHakWrRXDnTO+x61RJrS3/2uEt6W0xlocA== + dependencies: + "@wry/context" "^0.5.2" + optimist@^0.6.1: version "0.6.1" resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" @@ -15537,6 +16392,13 @@ p-is-promise@^2.0.0: resolved "https://registry.yarnpkg.com/p-is-promise/-/p-is-promise-2.1.0.tgz#918cebaea248a62cf7ffab8e3bca8c5f882fc42e" integrity sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg== +p-limit@3.0.2, p-limit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" + integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== + dependencies: + p-try "^2.0.0" + p-limit@^1.1.0: version "1.3.0" resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" @@ -15558,13 +16420,6 @@ p-limit@^2.2.0, p-limit@^2.2.1: dependencies: p-try "^2.0.0" -p-limit@^3.0.2: - version "3.0.2" - resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-3.0.2.tgz#1664e010af3cadc681baafd3e2a437be7b0fb5fe" - integrity sha512-iwqZSOoWIW+Ew4kAGUlN16J4M7OB3ysMLSZtnhmqx7njIHFPlxWBX8xo3lVTyFVq6mI/lL9qt2IsN1sHwaxJkg== - dependencies: - p-try "^2.0.0" - p-locate@^2.0.0: version "2.0.0" resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-2.0.0.tgz#20a0103b222a70c8fd39cc2e580680f3dde5ec43" @@ -15824,7 +16679,7 @@ parse5@^3.0.1: dependencies: "@types/node" "*" -parseurl@~1.3.2, parseurl@~1.3.3: +parseurl@^1.3.2, parseurl@~1.3.3: version "1.3.3" resolved "https://registry.yarnpkg.com/parseurl/-/parseurl-1.3.3.tgz#9da19e7bee8d12dff0513ed5b76957793bc2e8d4" integrity sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ== @@ -16116,11 +16971,6 @@ please-upgrade-node@^3.0.2, please-upgrade-node@^3.1.1: dependencies: semver-compare "^1.0.0" -pluralize@^7.0.0: - version "7.0.0" - resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-7.0.0.tgz#298b89df8b93b0221dbf421ad2b1b1ea23fc6777" - integrity sha512-ARhBOdzS3e41FbkW/XWrTEtukqqLoK5+Z/4UeDaLuSW+39JPeFgs4gCGqsrJHVZX0fUrx//4OF0K1CUGwlIFow== - pluralize@^8.0.0: version "8.0.0" resolved "https://registry.yarnpkg.com/pluralize/-/pluralize-8.0.0.tgz#1a6fa16a38d12a1901e0320fa017051c539ce3b1" @@ -16568,6 +17418,13 @@ promise.allsettled@1.0.2: function-bind "^1.1.1" iterate-value "^1.0.0" +promise@^7.1.1: + version "7.3.1" + resolved "https://registry.yarnpkg.com/promise/-/promise-7.3.1.tgz#064b72602b18f90f29192b8b1bc418ffd1ebd3bf" + integrity sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg== + dependencies: + asap "~2.0.3" + prompt-sync@^4.1.5: version "4.1.7" resolved "https://registry.yarnpkg.com/prompt-sync/-/prompt-sync-4.1.7.tgz#8465d6a83ce35db7fcc5cb73936ba54a8f2b8517" @@ -16590,30 +17447,20 @@ promzard@^0.3.0: dependencies: read "1" +prop-types@^15.7.2: + version "15.7.2" + resolved "https://registry.yarnpkg.com/prop-types/-/prop-types-15.7.2.tgz#52c41e75b8c87e72b9d9360e0206b99dcbffa6c5" + integrity sha512-8QQikdH7//R2vurIJSutZ1smHYTcLpRWEOlHnzcWHmBYrOGUysKwSsrC89BCiFj3CbrfJ/nXFdJepOVrY1GCHQ== + dependencies: + loose-envify "^1.4.0" + object-assign "^4.1.1" + react-is "^16.8.1" + proto-list@~1.2.1: version "1.2.4" resolved "https://registry.yarnpkg.com/proto-list/-/proto-list-1.2.4.tgz#212d5bfe1318306a420f6402b8e26ff39647a849" integrity sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk= -protobufjs@^6.8.6: - version "6.8.8" - resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-6.8.8.tgz#c8b4f1282fd7a90e6f5b109ed11c84af82908e7c" - integrity sha512-AAmHtD5pXgZfi7GMpllpO3q1Xw1OYldr+dMUlAnffGTAhqkg72WdmSY71uKBF/JuyiKs8psYbtKrhi0ASCD8qw== - dependencies: - "@protobufjs/aspromise" "^1.1.2" - "@protobufjs/base64" "^1.1.2" - "@protobufjs/codegen" "^2.0.4" - "@protobufjs/eventemitter" "^1.1.0" - "@protobufjs/fetch" "^1.1.0" - "@protobufjs/float" "^1.0.2" - "@protobufjs/inquire" "^1.1.0" - "@protobufjs/path" "^1.1.2" - "@protobufjs/pool" "^1.1.0" - "@protobufjs/utf8" "^1.1.0" - "@types/long" "^4.0.0" - "@types/node" "^10.1.0" - long "^4.0.0" - protocols@^1.1.0, protocols@^1.4.0: version "1.4.7" resolved "https://registry.yarnpkg.com/protocols/-/protocols-1.4.7.tgz#95f788a4f0e979b291ffefcf5636ad113d037d32" @@ -16626,7 +17473,7 @@ protoduck@^5.0.1: dependencies: genfun "^5.0.0" -proxy-addr@~2.0.4, proxy-addr@~2.0.5: +proxy-addr@~2.0.5: version "2.0.5" resolved "https://registry.yarnpkg.com/proxy-addr/-/proxy-addr-2.0.5.tgz#34cbd64a2d81f4b1fd21e76f9f06c8a45299ee34" integrity sha512-t/7RxHXPH6cJtP0pRG6smSr9QJidhB+3kXu0KgXnbGYMgzEnUxRQ4/LDdfOwZEMyIh3/xHb8PX3t+lfL9z+YVQ== @@ -16773,16 +17620,16 @@ q@^1.5.1: resolved "https://registry.yarnpkg.com/q/-/q-1.5.1.tgz#7e32f75b41381291d04611f1bf14109ac00651d7" integrity sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc= -qs@6.5.2, qs@~6.5.2: - version "6.5.2" - resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" - integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== - qs@6.7.0: version "6.7.0" resolved "https://registry.yarnpkg.com/qs/-/qs-6.7.0.tgz#41dc1a015e3d581f1621776be31afb2876a9b1bc" integrity sha512-VCdBRNFTX1fyE7Nb6FYoURo/SPe62QCaAyzJvUjwRaIsc+NePBEniHlvxFmmX56+HZphIGtV0XeCirBtpDrTyQ== +qs@~6.5.2: + version "6.5.2" + resolved "https://registry.yarnpkg.com/qs/-/qs-6.5.2.tgz#cb3ae806e8740444584ef154ce8ee98d403f3e36" + integrity sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA== + query-string@^5.0.1: version "5.1.1" resolved "https://registry.yarnpkg.com/query-string/-/query-string-5.1.1.tgz#a78c012b71c17e05f2e3fa2319dd330682efb3cb" @@ -16807,11 +17654,6 @@ quick-lru@^1.0.0: resolved "https://registry.yarnpkg.com/quick-lru/-/quick-lru-1.1.0.tgz#4360b17c61136ad38078397ff11416e186dcfbb8" integrity sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g= -ramda@^0.25.0: - version "0.25.0" - resolved "https://registry.yarnpkg.com/ramda/-/ramda-0.25.0.tgz#8fdf68231cffa90bc2f9460390a0cb74a29b29a9" - integrity sha512-GXpfrYVPwx3K7RQ6aYT8KPS8XViSXUVJT1ONhoKPE9VAleW42YE+U+8VEyGWt41EnEQW7gwecYJriTI0pKoecQ== - randomatic@^3.0.0: version "3.1.1" resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-3.1.1.tgz#b776efc59375984e36c537b2f51a1f0aff0da1ed" @@ -16841,21 +17683,11 @@ randomhex@0.1.5: resolved "https://registry.yarnpkg.com/randomhex/-/randomhex-0.1.5.tgz#baceef982329091400f2a2912c6cd02f1094f585" integrity sha1-us7vmCMpCRQA8qKRLGzQLxCU9YU= -range-parser@^1.0.3, range-parser@~1.2.0, range-parser@~1.2.1: +range-parser@^1.0.3, range-parser@~1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/range-parser/-/range-parser-1.2.1.tgz#3cf37023d199e1c24d1a55b84800c2f3e6468031" integrity sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg== -raw-body@2.3.3: - version "2.3.3" - resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.3.3.tgz#1b324ece6b5706e153855bc1148c65bb7f6ea0c3" - integrity sha512-9esiElv1BrZoI3rCDuOuKCBRbuApGGaDPQfjSflGxdy4oyzqghxu6klEkkVIvBje+FF0BX9coEv8KqW6X/7njw== - dependencies: - bytes "3.0.0" - http-errors "1.6.3" - iconv-lite "0.4.23" - unpipe "1.0.0" - raw-body@2.4.0: version "2.4.0" resolved "https://registry.yarnpkg.com/raw-body/-/raw-body-2.4.0.tgz#a1ce6fb9c9bc356ca52e89256ab59059e13d0332" @@ -16876,7 +17708,7 @@ rc@^1.2.7: minimist "^1.2.0" strip-json-comments "~2.0.1" -react-is@^16.12.0, react-is@^16.8.4: +react-is@^16.12.0, react-is@^16.7.0, react-is@^16.8.1, react-is@^16.8.4: version "16.13.1" resolved "https://registry.yarnpkg.com/react-is/-/react-is-16.13.1.tgz#789729a4dc36de2999dc156dd6c1d9c18cea56a4" integrity sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ== @@ -17306,6 +18138,36 @@ regjsparser@^0.1.4: dependencies: jsesc "~0.5.0" +relay-compiler@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/relay-compiler/-/relay-compiler-10.0.1.tgz#d3029a5121cad52e1e55073210365b827cee5f3b" + integrity sha512-hrTqh81XXxPB4EgvxPmvojICr0wJnRoumxOsMZnS9dmhDHSqcBAT7+C3+rdGm5sSdNH8mbMcZM7YSPDh8ABxQw== + dependencies: + "@babel/core" "^7.0.0" + "@babel/generator" "^7.5.0" + "@babel/parser" "^7.0.0" + "@babel/runtime" "^7.0.0" + "@babel/traverse" "^7.0.0" + "@babel/types" "^7.0.0" + babel-preset-fbjs "^3.3.0" + chalk "^4.0.0" + fb-watchman "^2.0.0" + fbjs "^1.0.0" + glob "^7.1.1" + immutable "~3.7.6" + nullthrows "^1.1.1" + relay-runtime "10.0.1" + signedsource "^1.0.0" + yargs "^15.3.1" + +relay-runtime@10.0.1: + version "10.0.1" + resolved "https://registry.yarnpkg.com/relay-runtime/-/relay-runtime-10.0.1.tgz#c83bd7e6e37234ece2a62a254e37dd199a4f74f9" + integrity sha512-sPYiuosq+5gQ7zXs2EKg2O8qRSsF8vmMYo6SIHEi4juBLg1HrdTEvqcaNztc2ZFmUc4vYZpTbbS4j/TZCtHuyA== + dependencies: + "@babel/runtime" "^7.0.0" + fbjs "^1.0.0" + release-zalgo@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/release-zalgo/-/release-zalgo-1.0.0.tgz#09700b7e5074329739330e535c5a90fb67851730" @@ -17535,6 +18397,11 @@ resolve-dir@^1.0.0, resolve-dir@^1.0.1: expand-tilde "^2.0.0" global-modules "^1.0.0" +resolve-from@5.0.0, resolve-from@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" + integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== + resolve-from@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-3.0.0.tgz#b22c7af7d9d6881bc8b6e653335eebcb0a188748" @@ -17545,11 +18412,6 @@ resolve-from@^4.0.0: resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-4.0.0.tgz#4abcd852ad32dd7baabfe9b40e00a36db5f392e6" integrity sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g== -resolve-from@^5.0.0: - version "5.0.0" - resolved "https://registry.yarnpkg.com/resolve-from/-/resolve-from-5.0.0.tgz#c35225843df8f776df21c57557bc087e9dfdfc69" - integrity sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw== - resolve-url@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/resolve-url/-/resolve-url-0.2.1.tgz#2c637fe77c893afd2a663fe21aa9080068e2052a" @@ -18015,25 +18877,6 @@ semver@~5.4.1: resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e" integrity sha512-WfG/X9+oATh81XtllIo/I8gOiY9EXRdv1cQdyykeXK17YcUW3EXUAi2To4pcH6nZtJPr7ZOpM5OMyWJZm+8Rsg== -send@0.16.2: - version "0.16.2" - resolved "https://registry.yarnpkg.com/send/-/send-0.16.2.tgz#6ecca1e0f8c156d141597559848df64730a6bbc1" - integrity sha512-E64YFPUssFHEFBvpbbjr44NCLtI1AohxQ8ZSiJjQLskAdKuriYEP6VyGEsRDH8ScozGpkaX1BGvhanqCwkcEZw== - dependencies: - debug "2.6.9" - depd "~1.1.2" - destroy "~1.0.4" - encodeurl "~1.0.2" - escape-html "~1.0.3" - etag "~1.8.1" - fresh "0.5.2" - http-errors "~1.6.2" - mime "1.4.1" - ms "2.0.0" - on-finished "~2.3.0" - range-parser "~1.2.0" - statuses "~1.4.0" - send@0.17.1: version "0.17.1" resolved "https://registry.yarnpkg.com/send/-/send-0.17.1.tgz#c1d8b059f7900f7466dd4938bdc44e11ddb376c8" @@ -18087,16 +18930,6 @@ serialize-javascript@^2.1.2: resolved "https://registry.yarnpkg.com/serialize-javascript/-/serialize-javascript-2.1.2.tgz#ecec53b0e0317bdc95ef76ab7074b7384785fa61" integrity sha512-rs9OggEUF0V4jUSecXazOYsLfu7OGK2qIn3c7IPBiffz32XniEp/TX9Xmc9LQfK2nQ2QKHvZ2oygKUGU0lG4jQ== -serve-static@1.13.2: - version "1.13.2" - resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.13.2.tgz#095e8472fd5b46237db50ce486a43f4b86c6cec1" - integrity sha512-p/tdJrO4U387R9oMjb1oj7qSMaMfmOyd4j9hOFoxZe2baQszgHcSWjuya/CiT5kgZZKRudHNOA0pYXOl8rQ5nw== - dependencies: - encodeurl "~1.0.2" - escape-html "~1.0.3" - parseurl "~1.3.2" - send "0.16.2" - serve-static@1.14.1: version "1.14.1" resolved "https://registry.yarnpkg.com/serve-static/-/serve-static-1.14.1.tgz#666e636dc4f010f7ef29970a88a674320898b2f9" @@ -18148,17 +18981,17 @@ setimmediate@^1.0.4, setimmediate@^1.0.5: resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= -setprototypeof@1.1.0: - version "1.1.0" - resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.0.tgz#d0bd85536887b6fe7c0d818cb962d9d91c54e656" - integrity sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ== - setprototypeof@1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.1.1.tgz#7e95acb24aa92f5885e0abef5ba131330d4ae683" integrity sha512-JvdAWfbXeIGaZ9cILp38HntZSFSo3mWg6xGcJJsd+d4aRMOqauag1C63dJfDw7OaMYwEbHMOxEZ1lqVRYP2OAw== -sha.js@^2.4.0, sha.js@^2.4.8, sha.js@~2.4.4: +setprototypeof@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/setprototypeof/-/setprototypeof-1.2.0.tgz#66c9a24a73f9fc28cbe66b09fed3d33dcaf1b424" + integrity sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw== + +sha.js@^2.4.0, sha.js@^2.4.11, sha.js@^2.4.8, sha.js@~2.4.4: version "2.4.11" resolved "https://registry.yarnpkg.com/sha.js/-/sha.js-2.4.11.tgz#37a5cf0b81ecbc6943de109ba2960d1b26584ae7" integrity sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ== @@ -18290,6 +19123,11 @@ signal-exit@^3.0.0, signal-exit@^3.0.2: resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= +signedsource@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/signedsource/-/signedsource-1.0.0.tgz#1ddace4981798f93bd833973803d80d52e93ad6a" + integrity sha1-HdrOSYF5j5O9gzlzgD2A1S6TrWo= + simple-concat@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/simple-concat/-/simple-concat-1.0.0.tgz#7344cbb8b6e26fb27d66b2fc86f9f6d5997521c6" @@ -18587,7 +19425,7 @@ source-map-support@^0.5.12: buffer-from "^1.0.0" source-map "^0.6.0" -source-map-support@^0.5.17, source-map-support@^0.5.19, source-map-support@^0.5.6: +source-map-support@^0.5.17, source-map-support@^0.5.19, source-map-support@^0.5.6, source-map-support@~0.5.19: version "0.5.19" resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.19.tgz#a98b62f86dcaf4f67399648c085291ab9e8fed61" integrity sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw== @@ -18626,7 +19464,7 @@ source-map@^0.6.0, source-map@^0.6.1, source-map@~0.6.0, source-map@~0.6.1: resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== -source-map@^0.7.3: +source-map@^0.7.3, source-map@~0.7.2: version "0.7.3" resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.7.3.tgz#5302f8169031735226544092e64981f751750383" integrity sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ== @@ -18761,16 +19599,11 @@ static-extend@^0.1.1: define-property "^0.2.5" object-copy "^0.1.0" -"statuses@>= 1.4.0 < 2", "statuses@>= 1.5.0 < 2", statuses@~1.5.0: +"statuses@>= 1.5.0 < 2", statuses@~1.5.0: version "1.5.0" resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.5.0.tgz#161c7dac177659fd9811f43771fa99381478628c" integrity sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow= -statuses@~1.4.0: - version "1.4.0" - resolved "https://registry.yarnpkg.com/statuses/-/statuses-1.4.0.tgz#bb73d446da2796106efcc1b601a253d6c46bd087" - integrity sha512-zhSCtt8v2NDrRlPQpCNtw/heZLtfUDqxBM1udqikb/Hbk52LK4nQSwr10u77iopCW5LsyHpuXS0GnEc48mLeew== - stdin@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/stdin/-/stdin-0.0.1.tgz#d3041981aaec3dfdbc77a1b38d6372e38f5fb71e" @@ -19113,10 +19946,10 @@ sublevel-pouchdb@7.1.1: ltgt "2.2.1" readable-stream "1.0.33" -subscriptions-transport-ws@^0.9.11: - version "0.9.15" - resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.15.tgz#68a8b7ba0037d8c489fb2f5a102d1494db297d0d" - integrity sha512-f9eBfWdHsePQV67QIX+VRhf++dn1adyC/PZHP6XI5AfKnZ4n0FW+v5omxwdHVpd4xq2ZijaHEcmlQrhBY79ZWQ== +subscriptions-transport-ws@0.9.18, subscriptions-transport-ws@^0.9.11, subscriptions-transport-ws@^0.9.16: + version "0.9.18" + resolved "https://registry.yarnpkg.com/subscriptions-transport-ws/-/subscriptions-transport-ws-0.9.18.tgz#bcf02320c911fbadb054f7f928e51c6041a37b97" + integrity sha512-tztzcBTNoEbuErsVQpTN2xUNN/efAZXyCyL5m3x4t6SKrEiTL2N8SaKWBFWM4u56pL79ULif3zjyeq+oV+nOaA== dependencies: backo2 "^1.0.2" eventemitter3 "^3.1.0" @@ -19237,6 +20070,11 @@ symbol-observable@^1.0.2, symbol-observable@^1.0.3, symbol-observable@^1.0.4, sy resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-1.2.0.tgz#c22688aed4eab3cdc2dfeacbb561660560a00804" integrity sha512-e900nM8RRtGhlV36KGEU9k65K3mPb1WV70OdjfxlG2EAuM1noi/E/BaW/uMhL7bPEssK8QV57vN3esixjUvcXQ== +symbol-observable@^2.0.0: + version "2.0.3" + resolved "https://registry.yarnpkg.com/symbol-observable/-/symbol-observable-2.0.3.tgz#5b521d3d07a43c351055fa43b8355b62d33fd16a" + integrity sha512-sQV7phh2WCYAn81oAkakC5qjq2Ml0g8ozqz03wOGnx9dDlG1de6yrF+0RAzSJD8fPUow3PTSMf2SAbOGxb93BA== + "symbol-tree@>= 3.1.0 < 4.0.0", symbol-tree@^3.2.4: version "3.2.4" resolved "https://registry.yarnpkg.com/symbol-tree/-/symbol-tree-3.2.4.tgz#430637d248ba77e078883951fb9aa0eed7c63fa2" @@ -19397,6 +20235,15 @@ terser@^4.1.2: source-map "~0.6.1" source-map-support "~0.5.12" +terser@^5.2.0: + version "5.3.5" + resolved "https://registry.yarnpkg.com/terser/-/terser-5.3.5.tgz#9e080baa0568f96654621b20eb9effa440b1484e" + integrity sha512-Qw3CZAMmmfU824AoGKalx+riwocSI5Cs0PoGp9RdSLfmxkmJgyBxqLBP/isDNtFyhHnitikvRMZzyVgeq+U+Tg== + dependencies: + commander "^2.20.0" + source-map "~0.7.2" + source-map-support "~0.5.19" + test-exclude@^5.1.0: version "5.2.3" resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" @@ -19777,7 +20624,7 @@ tryer@^1.0.1: resolved "https://registry.yarnpkg.com/tryer/-/tryer-1.0.1.tgz#f2c85406800b9b0f74c9f7465b81eaad241252f8" integrity sha512-c3zayb8/kWWpycWYg87P71E1S1ZL6b6IJxfb5fvsUgsf0S2MVGaDhDXXjDMpdCpfWXqptc+4mXwmiy1ypXqRAA== -ts-invariant@^0.4.0: +ts-invariant@^0.4.0, ts-invariant@^0.4.4: version "0.4.4" resolved "https://registry.yarnpkg.com/ts-invariant/-/ts-invariant-0.4.4.tgz#97a523518688f93aafad01b0e80eb803eb2abd86" integrity sha512-uEtWkFM/sdZvRNNDL3Ehu4WVpwaulhwQszV8mrtcdeE8nN00BV9mAmQ88RkrBhFgl9gMgvjJLAQcZbnPXI9mlA== @@ -19886,6 +20733,11 @@ tslib@^1.8.1: resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.13.0.tgz#c881e13cc7015894ed914862d276436fa9a47043" integrity sha512-i/6DQjL8Xf3be4K/E6Wgpekn5Qasl1usyw++dAA35Ue5orEn65VIxOA+YvNNl9HV3qv70T7CNwjODHZrLwvd1Q== +tslib@~2.0.1: + version "2.0.3" + resolved "https://registry.yarnpkg.com/tslib/-/tslib-2.0.3.tgz#8e0741ac45fc0c226e58a17bfc3e64b9bc6ca61c" + integrity sha512-uZtkfKblCEQtZKBF6EBXVZeQNl82yqtDQdv+eck8u7tdPxjLu2/lp5/uPW+um2tpuxINHWy3GhiccY7QgEaVHQ== + tsutils@^3.17.1: version "3.17.1" resolved "https://registry.yarnpkg.com/tsutils/-/tsutils-3.17.1.tgz#ed719917f11ca0dee586272b2ac49e015a2dd759" @@ -19966,14 +20818,7 @@ type-fest@^0.8.1: resolved "https://registry.yarnpkg.com/type-fest/-/type-fest-0.8.1.tgz#09e249ebde851d3b1e48d27c105444667f17b83d" integrity sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA== -type-is@^1.6.16: - version "1.6.16" - resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.16.tgz#f89ce341541c672b25ee7ae3c73dee3b2be50194" - dependencies: - media-typer "0.3.0" - mime-types "~2.1.18" - -type-is@~1.6.16, type-is@~1.6.17, type-is@~1.6.18: +type-is@^1.6.16, type-is@~1.6.17, type-is@~1.6.18: version "1.6.18" resolved "https://registry.yarnpkg.com/type-is/-/type-is-1.6.18.tgz#4e552cd05df09467dcbc4ef739de89f2cf37c131" integrity sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g== @@ -20096,6 +20941,11 @@ typewiselite@~1.0.0: resolved "https://registry.yarnpkg.com/typewiselite/-/typewiselite-1.0.0.tgz#c8882fa1bb1092c06005a97f34ef5c8508e3664e" integrity sha1-yIgvobsQksBgBal/NO9chQjjZk4= +ua-parser-js@^0.7.18: + version "0.7.22" + resolved "https://registry.yarnpkg.com/ua-parser-js/-/ua-parser-js-0.7.22.tgz#960df60a5f911ea8f1c818f3747b99c6e177eae3" + integrity sha512-YUxzMjJ5T71w6a8WWVcMGM6YWOTX27rCoIQgLXiWaxqXSx9D7DNjiGWn1aJIRSQ5qr0xuhra77bSIh6voR/46Q== + uglify-es@^3.3.9: version "3.3.9" resolved "https://registry.yarnpkg.com/uglify-es/-/uglify-es-3.3.9.tgz#0c1c4f0700bed8dbc124cdb304d2592ca203e677" @@ -20252,6 +21102,18 @@ universalify@^0.1.0: resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== +universalify@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-1.0.0.tgz#b61a1da173e8435b2fe3c67d29b9adf8594bd16d" + integrity sha512-rb6X1W158d7pRQBg5gkR8uPaSfiids68LTJQYOtEUhoJUWBdaQHsuT/EUduxXYxcrt4r5PJ4fuHW1MHT6p0qug== + +unixify@1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/unixify/-/unixify-1.0.0.tgz#3a641c8c2ffbce4da683a5c70f03a462940c2090" + integrity sha1-OmQcjC/7zk2mg6XHDwOkYpQMIJA= + dependencies: + normalize-path "^2.1.1" + unorm@^1.3.3: version "1.6.0" resolved "https://registry.yarnpkg.com/unorm/-/unorm-1.6.0.tgz#029b289661fba714f1a9af439eb51d9b16c205af" @@ -20301,13 +21163,6 @@ upper-case@^2.0.1: dependencies: tslib "^1.10.0" -uppercamelcase@^3.0.0: - version "3.0.0" - resolved "https://registry.yarnpkg.com/uppercamelcase/-/uppercamelcase-3.0.0.tgz#380b321b8d73cba16fec4d752a575152d1ef7317" - integrity sha1-OAsyG41zy6Fv7E11KldRUtHvcxc= - dependencies: - camelcase "^4.1.0" - uri-js@^4.2.2: version "4.2.2" resolved "https://registry.yarnpkg.com/uri-js/-/uri-js-4.2.2.tgz#94c540e1ff772956e2299507c010aea6c8838eb0" @@ -20450,7 +21305,7 @@ uuid@^3.0.0, uuid@^3.0.1, uuid@^3.1.0, uuid@^3.3.2: resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.3.tgz#4568f0216e78760ee1dbf3a4d2cf53e224112866" integrity sha512-pW0No1RGHgzlpHJO1nsVrHKpOEIxkGg1xB+v0ZmdNH5OAeAwzAVrCnI2/6Mtx+Uys6iaylxa+D3g4j63IKKjSQ== -uuid@^8.3.0: +uuid@^8.0.0, uuid@^8.3.0: version "8.3.1" resolved "https://registry.yarnpkg.com/uuid/-/uuid-8.3.1.tgz#2ba2e6ca000da60fce5a196954ab241131e05a31" integrity sha512-FOmRr+FmWEIG8uhZv6C2bTgEVXsHk08kE7mPlrBbEe+c3r9pjceVPgupIfNIhc4yx55H69OXANrUaSuu9eInKg== @@ -20486,6 +21341,11 @@ vali-date@^1.0.0: resolved "https://registry.yarnpkg.com/vali-date/-/vali-date-1.0.0.tgz#1b904a59609fb328ef078138420934f6b86709a6" integrity sha1-G5BKWWCfsyjvB4E4Qgk09rhnCaY= +valid-url@1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/valid-url/-/valid-url-1.0.9.tgz#1c14479b40f1397a75782f115e4086447433a200" + integrity sha1-HBRHm0DxOXp1eC8RXkCGRHQzogA= + validate-npm-package-license@^3.0.1, validate-npm-package-license@^3.0.3: version "3.0.4" resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" @@ -20569,6 +21429,14 @@ vm-browserify@~0.0.1: dependencies: indexof "0.0.1" +vue-template-compiler@^2.6.12: + version "2.6.12" + resolved "https://registry.yarnpkg.com/vue-template-compiler/-/vue-template-compiler-2.6.12.tgz#947ed7196744c8a5285ebe1233fe960437fcc57e" + integrity sha512-OzzZ52zS41YUbkCBfdXShQTe69j1gQDZ9HIX8miuC9C3rBCk9wIRjLiZZLrmX9V+Ftq/YEyv1JaVr5Y/hNtByg== + dependencies: + de-indent "^1.0.2" + he "^1.1.0" + vuvuzela@1.0.3: version "1.0.3" resolved "https://registry.yarnpkg.com/vuvuzela/-/vuvuzela-1.0.3.tgz#3be145e58271c73ca55279dd851f12a682114b0b" @@ -21808,6 +22676,11 @@ whatwg-fetch@2.0.4: resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-2.0.4.tgz#dde6a5df315f9d39991aa17621853d720b85566f" integrity sha512-dcQ1GWpOD/eEQ97k66aiEVpNnapVj90/+R+SXTPYGHpYBBypfKJEQjLrvMZ7YXbKm21gXd4NcuxUTjiv1YtLng== +whatwg-fetch@>=0.10.0: + version "3.4.1" + resolved "https://registry.yarnpkg.com/whatwg-fetch/-/whatwg-fetch-3.4.1.tgz#e5f871572d6879663fa5674c8f833f15a8425ab3" + integrity sha512-sofZVzE1wKwO+EYPbWfiwzaKovWiZXf4coEzjGP9b2GBVgQRLQUZ2QcuPpQExGDAW5GItpEm6Tl4OU5mywnAoQ== + whatwg-mimetype@^2.3.0: version "2.3.0" resolved "https://registry.yarnpkg.com/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz#3d4b1e0312d2079879f826aff18dbeeca5960fbf" @@ -22134,6 +23007,14 @@ xregexp@^4.2.4: dependencies: "@babel/runtime-corejs2" "^7.2.0" +xss@^1.0.6: + version "1.0.8" + resolved "https://registry.yarnpkg.com/xss/-/xss-1.0.8.tgz#32feb87feb74b3dcd3d404b7a68ababf10700535" + integrity sha512-3MgPdaXV8rfQ/pNn16Eio6VXYPTkqwa0vc7GkiymmY/DqR1SE/7VPAAVZz1GJsJFrllMYO3RHfEaiUGjab6TNw== + dependencies: + commander "^2.20.3" + cssfilter "0.0.10" + "xtend@>=4.0.0 <4.1.0-0", xtend@^4.0.0, xtend@^4.0.1, xtend@^4.0.2, xtend@~4.0.0, xtend@~4.0.1: version "4.0.2" resolved "https://registry.yarnpkg.com/xtend/-/xtend-4.0.2.tgz#bb72779f5fa465186b1f438f674fa347fdb5db54" @@ -22394,7 +23275,7 @@ yargs@^14.2.3: y18n "^4.0.0" yargs-parser "^15.0.1" -yargs@^15.4.1: +yargs@^15.3.1, yargs@^15.4.1: version "15.4.1" resolved "https://registry.yarnpkg.com/yargs/-/yargs-15.4.1.tgz#0d87a16de01aee9d8bec2bfbf74f67851730f4f8" integrity sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A== @@ -22486,7 +23367,15 @@ zen-observable-ts@^0.8.20: tslib "^1.9.3" zen-observable "^0.8.0" -zen-observable@^0.8.0: +zen-observable-ts@^0.8.21: + version "0.8.21" + resolved "https://registry.yarnpkg.com/zen-observable-ts/-/zen-observable-ts-0.8.21.tgz#85d0031fbbde1eba3cd07d3ba90da241215f421d" + integrity sha512-Yj3yXweRc8LdRMrCC8nIc4kkjWecPAUVh0TI0OUrWXx6aX790vLcDlWca6I4vsyCGH3LpWxq0dJRcMOFoVqmeg== + dependencies: + tslib "^1.9.3" + zen-observable "^0.8.0" + +zen-observable@^0.8.0, zen-observable@^0.8.14: version "0.8.15" resolved "https://registry.yarnpkg.com/zen-observable/-/zen-observable-0.8.15.tgz#96415c512d8e3ffd920afd3889604e30b9eaac15" integrity sha512-PQ2PC7R9rslx84ndNBZB/Dkv8V8fZEpk83RLgXtYd0fwUgEjseMn1Dgajh2x6S8QbZAFa9p2qVCEuYZNgve0dQ== From e0123f0106418f188c86753826c79a47827c95e5 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Fri, 16 Oct 2020 20:36:03 -0400 Subject: [PATCH 42/63] Remove contractNames query --- packages/db/src/workspace/graphql/schema.ts | 11 ++-------- packages/db/src/workspace/index.ts | 12 ----------- .../src/workspace/test/contractNames.spec.ts | 20 ------------------- 3 files changed, 2 insertions(+), 41 deletions(-) delete mode 100644 packages/db/src/workspace/test/contractNames.spec.ts diff --git a/packages/db/src/workspace/graphql/schema.ts b/packages/db/src/workspace/graphql/schema.ts index df6ebb46e6f..0cb3f8ebc2c 100644 --- a/packages/db/src/workspace/graphql/schema.ts +++ b/packages/db/src/workspace/graphql/schema.ts @@ -47,10 +47,7 @@ class DefinitionsSchema { id: ID! } - type Query { - contractNames: [String]! - } - + type Query type Mutation `; @@ -61,11 +58,7 @@ class DefinitionsSchema { get resolvers() { const common = { - Query: { - contractNames: { - resolve: (_, {}, { workspace }) => workspace.contractNames() - } - }, + Query: {}, Mutation: {}, diff --git a/packages/db/src/workspace/index.ts b/packages/db/src/workspace/index.ts index 0b01aa1945f..d179e1a5509 100644 --- a/packages/db/src/workspace/index.ts +++ b/packages/db/src/workspace/index.ts @@ -189,18 +189,6 @@ export class Workspace { }): Promise<{ projectNames: DataModel.IProjectName[] }> { return await this.databases.update("projectNames", input); } - - /*************************************************************************** - * Misc. - ***************************************************************************/ - - async contractNames(): Promise { - const contracts = await this.databases.find("contracts", { - selector: {}, - fields: ["name"] - }); - return contracts.map(({ name }) => name); - } } const getDefaultFSAdapterSettings = workingDirectory => ({ diff --git a/packages/db/src/workspace/test/contractNames.spec.ts b/packages/db/src/workspace/test/contractNames.spec.ts deleted file mode 100644 index 2a917217c00..00000000000 --- a/packages/db/src/workspace/test/contractNames.spec.ts +++ /dev/null @@ -1,20 +0,0 @@ -import gql from "graphql-tag"; -import { WorkspaceClient } from "./utils"; - -describe("ContractNames", () => { - test("can be queried", async () => { - const wsClient = new WorkspaceClient(); - - const result = await wsClient.execute(GetContractNames, {}); - expect(result).toHaveProperty("contractNames"); - - const { contractNames } = result; - expect(contractNames).toEqual([]); - }); -}); - -export const GetContractNames = gql` - query GetContractNames { - contractNames - } -`; From 41198bc88fbbf0b83b2a5d4da230ff181de8fbd7 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Fri, 16 Oct 2020 20:55:12 -0400 Subject: [PATCH 43/63] Delete Workspace class - Remove use of custom resource-specific Workspace methods, use get/find/all/add/update directly - Define those methods as Databases interface - Rename existing Databases abstract class to AbstractDatabases - Create root `connect()` function to implement Databases interface (taking the place of the Workspace constructor) - Explicitly define resolvers as having access to this interface --- packages/db/src/db.ts | 7 +- packages/db/src/workspace/connect.ts | 4 + .../src/workspace/definitions/compilations.ts | 8 +- .../definitions/contractInstances.ts | 20 +- .../db/src/workspace/definitions/contracts.ts | 19 +- .../src/workspace/definitions/nameRecords.ts | 18 +- .../src/workspace/definitions/projectNames.ts | 4 +- .../db/src/workspace/definitions/projects.ts | 43 ++-- .../db/src/workspace/definitions/types.ts | 2 + packages/db/src/workspace/graphql/schema.ts | 12 +- packages/db/src/workspace/graphql/types.ts | 6 +- packages/db/src/workspace/index.ts | 201 +----------------- packages/db/src/workspace/pouch/databases.ts | 15 +- packages/db/src/workspace/pouch/fs.ts | 4 +- packages/db/src/workspace/pouch/index.ts | 75 ++++++- packages/db/src/workspace/pouch/memory.ts | 6 +- packages/db/src/workspace/pouch/sqlite.ts | 6 +- packages/db/src/workspace/pouch/types.ts | 51 ++++- .../db/src/workspace/test/persistence.spec.ts | 32 +-- packages/db/src/workspace/test/utils.ts | 6 +- 20 files changed, 239 insertions(+), 300 deletions(-) create mode 100644 packages/db/src/workspace/connect.ts diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index ef637084dd8..32678b2e239 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -1,9 +1,8 @@ import { GraphQLSchema, DocumentNode, parse, execute } from "graphql"; -import { schema } from "@truffle/db/workspace/schema"; import { generateCompileLoad } from "@truffle/db/loaders/commands"; import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; import { WorkflowCompileResult } from "@truffle/compile-common"; -import { Workspace } from "@truffle/db/workspace"; +import { schema, connect, Databases } from "@truffle/db/workspace"; import { generateInitializeLoad, generateNamesLoad @@ -26,7 +25,7 @@ interface IContext { artifactsDirectory: string; workingDirectory: string; contractsDirectory: string; - workspace: Workspace; + workspace: Databases; db: ITruffleDB; } @@ -119,7 +118,7 @@ export class TruffleDB { createContext(config: IConfig): IContext { return { - workspace: new Workspace({ + workspace: connect({ workingDirectory: config.working_directory, adapter: (config.db || {}).adapter }), diff --git a/packages/db/src/workspace/connect.ts b/packages/db/src/workspace/connect.ts new file mode 100644 index 00000000000..a0971617ff1 --- /dev/null +++ b/packages/db/src/workspace/connect.ts @@ -0,0 +1,4 @@ +import { definitions } from "./definitions"; +import { forDefinitions } from "./pouch"; + +export const connect = forDefinitions(definitions); diff --git a/packages/db/src/workspace/definitions/compilations.ts b/packages/db/src/workspace/definitions/compilations.ts index e86b861b999..594a9660d92 100644 --- a/packages/db/src/workspace/definitions/compilations.ts +++ b/packages/db/src/workspace/definitions/compilations.ts @@ -67,9 +67,7 @@ export const compilations: Definition<"compilations"> = { Compilation: { sources: { resolve: ({ sources }, _, { workspace }) => - Promise.all( - sources.map(({ id }) => workspace.databases.get("sources", id)) - ) + Promise.all(sources.map(({ id }) => workspace.get("sources", id))) }, processedSources: { resolve: ({ id, processedSources }, _, {}) => @@ -84,11 +82,11 @@ export const compilations: Definition<"compilations"> = { ProcessedSource: { source: { resolve: ({ source: { id } }, _, { workspace }) => - workspace.databases.get("sources", id) + workspace.get("sources", id) }, contracts: { resolve: ({ compilation, index }, _, { workspace }) => - workspace.databases.find("contracts", { + workspace.find("contracts", { selector: { "compilation.id": compilation.id, "processedSource.index": index diff --git a/packages/db/src/workspace/definitions/contractInstances.ts b/packages/db/src/workspace/definitions/contractInstances.ts index 507a4dc81a5..cafcb09ff36 100644 --- a/packages/db/src/workspace/definitions/contractInstances.ts +++ b/packages/db/src/workspace/definitions/contractInstances.ts @@ -76,17 +76,20 @@ export const contractInstances: Definition<"contractInstances"> = { resolvers: { ContractInstance: { network: { - resolve: async ({ network }, _, { workspace }) => - await workspace.network(network) + resolve: ({ network: { id } }, _, { workspace }) => + workspace.get("networks", id) }, contract: { - resolve: ({ contract }, _, { workspace }) => - workspace.contract(contract) + resolve: ({ contract: { id } }, _, { workspace }) => + workspace.get("contracts", id) }, callBytecode: { resolve: async ({ callBytecode }, _, { workspace }) => { - let bytecode = await workspace.bytecode(callBytecode.bytecode); - let linkValues = callBytecode.linkValues.map( + const bytecode = await workspace.get( + "bytecodes", + callBytecode.bytecode.id + ); + const linkValues = callBytecode.linkValues.map( ({ value, linkReference }) => { return { value: value, @@ -102,8 +105,9 @@ export const contractInstances: Definition<"contractInstances"> = { }, creation: { resolve: async (input, _, { workspace }) => { - let bytecode = await workspace.bytecode( - input.creation.constructor.createBytecode.bytecode + let bytecode = await workspace.get( + "bytecodes", + input.creation.constructor.createBytecode.bytecode.id ); let transactionHash = input.creation.transactionHash; let linkValues = input.creation.constructor.createBytecode.linkValues.map( diff --git a/packages/db/src/workspace/definitions/contracts.ts b/packages/db/src/workspace/definitions/contracts.ts index dbfad3dbceb..2f8a87d245c 100644 --- a/packages/db/src/workspace/definitions/contracts.ts +++ b/packages/db/src/workspace/definitions/contracts.ts @@ -45,25 +45,28 @@ export const contracts: Definition<"contracts"> = { resolvers: { Contract: { compilation: { - resolve: async ({ compilation }, _, { workspace }) => { - return await workspace.compilation(compilation); - } + resolve: ({ compilation: { id } }, _, { workspace }) => + workspace.get("compilations", id) }, processedSource: { fragment: `... on Contract { compilation { id } }`, - resolve: async ({ processedSource, compilation }, _, { workspace }) => { - const { processedSources } = await workspace.compilation(compilation); + resolve: async ( + { processedSource, compilation: { id } }, + _, + { workspace } + ) => { + const { processedSources } = await workspace.get("compilations", id); return processedSources[processedSource.index]; } }, createBytecode: { resolve: ({ createBytecode: { id } }, _, { workspace }) => - workspace.databases.get("bytecodes", id) + workspace.get("bytecodes", id) }, callBytecode: { - resolve: ({ callBytecode }, _, { workspace }) => - workspace.bytecode(callBytecode) + resolve: ({ callBytecode: { id } }, _, { workspace }) => + workspace.get("bytecodes", id) } } } diff --git a/packages/db/src/workspace/definitions/nameRecords.ts b/packages/db/src/workspace/definitions/nameRecords.ts index 030db7ee9d0..a50458b854b 100644 --- a/packages/db/src/workspace/definitions/nameRecords.ts +++ b/packages/db/src/workspace/definitions/nameRecords.ts @@ -1,6 +1,8 @@ import gql from "graphql-tag"; +import camelCase from "camel-case"; +import { plural } from "pluralize"; -import { Definition } from "./types"; +import { Definition, CollectionName } from "./types"; export const nameRecords: Definition<"nameRecords"> = { createIndexes: [], @@ -21,22 +23,18 @@ export const nameRecords: Definition<"nameRecords"> = { previous: ResourceReferenceInput } `, + resolvers: { NameRecord: { resource: { resolve: async ({ type, resource: { id } }, _, { workspace }) => { - switch (type) { - case "Contract": - return await workspace.contract({ id }); - case "Network": - return await workspace.network({ id }); - default: - return null; - } + const collectionName = camelCase(plural(type)) as CollectionName; + + return await workspace.get(collectionName, id); } }, previous: { - resolve: ({ id }, _, { workspace }) => workspace.nameRecord({ id }) + resolve: ({ id }, _, { workspace }) => workspace.get("nameRecords", id) } } } diff --git a/packages/db/src/workspace/definitions/projectNames.ts b/packages/db/src/workspace/definitions/projectNames.ts index 596c1f0def1..cbf327a2b37 100644 --- a/packages/db/src/workspace/definitions/projectNames.ts +++ b/packages/db/src/workspace/definitions/projectNames.ts @@ -36,11 +36,11 @@ export const projectNames: Definition<"projectNames"> = { ProjectName: { project: { resolve: ({ project: { id } }, _, { workspace }) => - workspace.project({ id }) + workspace.get("projects", id) }, nameRecord: { resolve: ({ nameRecord: { id } }, _, { workspace }) => - workspace.nameRecord({ id }) + workspace.get("nameRecords", id) } } } diff --git a/packages/db/src/workspace/definitions/projects.ts b/packages/db/src/workspace/definitions/projects.ts index 409db74e3dc..40f47c69740 100644 --- a/packages/db/src/workspace/definitions/projects.ts +++ b/packages/db/src/workspace/definitions/projects.ts @@ -24,39 +24,54 @@ export const projects: Definition<"projects"> = { Project: { resolve: { resolve: async ({ id }, { name, type }, { workspace }) => { - return await workspace.projectNames({ - project: { id }, - name, - type + const results = await workspace.find("projectNames", { + selector: { "project.id": id, name, type } + }); + const nameRecordIds = results.map(({ nameRecord: { id } }) => id); + return await workspace.find("nameRecords", { + selector: { + id: { $in: nameRecordIds } + } }); } }, network: { resolve: async ({ id }, { name }, { workspace }) => { - const nameRecords = await workspace.projectNames({ - project: { id }, - type: "Network", - name + const results = await workspace.find("projectNames", { + selector: { "project.id": id, name, "type": "Network" } + }); + const nameRecordIds = results.map(({ nameRecord: { id } }) => id); + const nameRecords = await workspace.find("nameRecords", { + selector: { + id: { $in: nameRecordIds } + } }); + if (nameRecords.length === 0) { return; } const { resource } = nameRecords[0]; - return await workspace.network(resource); + + return await workspace.get("networks", resource.id); } }, contract: { resolve: async ({ id }, { name }, { workspace }) => { - const nameRecords = await workspace.projectNames({ - project: { id }, - type: "Contract", - name + const results = await workspace.find("projectNames", { + selector: { "project.id": id, name, "type": "Contract" } + }); + const nameRecordIds = results.map(({ nameRecord: { id } }) => id); + const nameRecords = await workspace.find("nameRecords", { + selector: { + id: { $in: nameRecordIds } + } }); + if (nameRecords.length === 0) { return; } const { resource } = nameRecords[0]; - return await workspace.contract(resource); + return await workspace.get("contracts", resource.id); } } } diff --git a/packages/db/src/workspace/definitions/types.ts b/packages/db/src/workspace/definitions/types.ts index 3ef6696e1c7..1cd80101df4 100644 --- a/packages/db/src/workspace/definitions/types.ts +++ b/packages/db/src/workspace/definitions/types.ts @@ -65,3 +65,5 @@ export type MutableResource< export type NamedResource< N extends CollectionName = CollectionName > = Meta.NamedResource; + +export type Databases = Pouch.Databases; diff --git a/packages/db/src/workspace/graphql/schema.ts b/packages/db/src/workspace/graphql/schema.ts index 0cb3f8ebc2c..a07817df3d2 100644 --- a/packages/db/src/workspace/graphql/schema.ts +++ b/packages/db/src/workspace/graphql/schema.ts @@ -9,6 +9,7 @@ import { CollectionName, MutableCollectionName } from "@truffle/db/meta"; +import { Databases } from "../pouch"; import { Definition, Definitions } from "./types"; export const forDefinitions = ( @@ -169,7 +170,7 @@ abstract class DefinitionSchema< ]; } - get resolvers(): IResolvers { + get resolvers(): IResolvers }> { const { resource, resources } = this.names; const { resolvers = {} } = this.definition; @@ -179,11 +180,10 @@ abstract class DefinitionSchema< Query: { [resource]: { - resolve: (_, { id }, { workspace }) => - workspace.databases.get(resources, id) + resolve: (_, { id }, { workspace }) => workspace.get(resources, id) }, [resources]: { - resolve: (_, {}, { workspace }) => workspace.databases.all(resources) + resolve: (_, {}, { workspace }) => workspace.all(resources) } } }; @@ -223,7 +223,7 @@ class ImmutableDefinitionSchema< Mutation: { [resourcesMutate]: (_, { input }, { workspace }) => - workspace.databases.add(resources, input) + workspace.add(resources, input) } }; } @@ -262,7 +262,7 @@ class MutableDefinitionSchema< Mutation: { [resourcesMutate]: (_, { input }, { workspace }) => - workspace.databases.update(resources, input) + workspace.update(resources, input) } }; } diff --git a/packages/db/src/workspace/graphql/types.ts b/packages/db/src/workspace/graphql/types.ts index 41081666f8c..ff55173d54b 100644 --- a/packages/db/src/workspace/graphql/types.ts +++ b/packages/db/src/workspace/graphql/types.ts @@ -7,17 +7,19 @@ import { MutableCollectionName } from "@truffle/db/meta"; +import { Databases } from "../pouch"; + export type Definitions = { [N in CollectionName]: N extends MutableCollectionName ? { mutable: true; typeDefs: graphql.DocumentNode; - resolvers?: IResolvers; + resolvers?: IResolvers }>; } : { mutable?: boolean; typeDefs: graphql.DocumentNode; - resolvers?: IResolvers; + resolvers?: IResolvers }>; }; }; diff --git a/packages/db/src/workspace/index.ts b/packages/db/src/workspace/index.ts index d179e1a5509..b48c4c6a844 100644 --- a/packages/db/src/workspace/index.ts +++ b/packages/db/src/workspace/index.ts @@ -1,200 +1,3 @@ -import path from "path"; - +export * from "./definitions"; export { schema } from "./schema"; -import { - Databases, - FSDatabases, - MemoryDatabases, - SqliteDatabases -} from "./pouch"; -import { Collections, definitions } from "./definitions"; - -export interface WorkspaceConfig { - workingDirectory?: string; - adapter?: { - name: string; - settings?: any; // to allow adapters to define any options type - }; -} - -export class Workspace { - public databases: Databases; - - constructor({ - workingDirectory, - adapter: { name, settings } = { name: "fs" } - }: WorkspaceConfig) { - switch (name) { - case "fs": { - this.databases = new FSDatabases({ - definitions, - settings: settings || getDefaultFSAdapterSettings(workingDirectory) - }); - break; - } - case "sqlite": { - this.databases = new SqliteDatabases({ - definitions, - settings: - settings || getDefaultSqliteAdapterSettings(workingDirectory) - }); - break; - } - case "memory": { - this.databases = new MemoryDatabases({ definitions, settings }); - break; - } - default: { - throw new Error(`Unknown Truffle DB adapter: ${name}`); - } - } - } - - /*************************************************************************** - * Collection queries - ***************************************************************************/ - - async bytecodes(): Promise { - return await this.databases.all("bytecodes"); - } - - async compilations(): Promise { - return await this.databases.all("compilations"); - } - - async contracts(): Promise { - return await this.databases.all("contracts"); - } - - async contractInstances(): Promise { - return await this.databases.all("contractInstances"); - } - - async nameRecords(): Promise { - return await this.databases.all("nameRecords"); - } - - async networks(): Promise { - return await this.databases.all("networks"); - } - - async sources(): Promise { - return await this.databases.all("sources"); - } - - async projects(): Promise { - return await this.databases.all("projects"); - } - - /*************************************************************************** - * Resource queries - ***************************************************************************/ - - async bytecode({ id }: { id: string }): Promise { - return await this.databases.get("bytecodes", id); - } - - async compilation({ - id - }: { - id: string; - }): Promise { - return await this.databases.get("compilations", id); - } - - async contract({ id }: { id: string }): Promise { - return await this.databases.get("contracts", id); - } - - async contractInstance({ - id - }: { - id: string; - }): Promise { - return await this.databases.get("contractInstances", id); - } - - async nameRecord({ - id - }: { - id: string; - }): Promise { - return await this.databases.get("nameRecords", id); - } - - async network({ id }: { id: string }): Promise { - return await this.databases.get("networks", id); - } - - async project({ id }: { id: string }): Promise { - return await this.databases.get("projects", id); - } - - async projectNames({ - project, - name, - type - }): Promise { - const results = await this.databases.find("projectNames", { - selector: { "project.id": project.id, name, type } - }); - const nameRecordIds = results.map(({ nameRecord: { id } }) => id); - return await this.databases.find("nameRecords", { - selector: { - id: { $in: nameRecordIds } - } - }); - } - - /*************************************************************************** - * Mutations - ***************************************************************************/ - - async bytecodesAdd({ input }): Promise<{ bytecodes: DataModel.IBytecode[] }> { - return await this.databases.add("bytecodes", input); - } - - async compilationsAdd({ - input - }): Promise<{ compilations: DataModel.ICompilation[] }> { - return await this.databases.add("compilations", input); - } - - async contractsAdd({ input }): Promise<{ contracts: DataModel.IContract[] }> { - return await this.databases.add("contracts", input); - } - - async contractInstancesAdd({ - input - }): Promise<{ contractInstances: DataModel.IContractInstance[] }> { - return await this.databases.add("contractInstances", input); - } - - async nameRecordsAdd({ - input - }): Promise<{ nameRecords: DataModel.INameRecord[] }> { - return await this.databases.add("nameRecords", input); - } - - async networksAdd({ input }): Promise<{ networks: DataModel.INetwork[] }> { - return await this.databases.add("networks", input); - } - - async projectsAdd({ input }): Promise<{ projects: DataModel.IProject[] }> { - return await this.databases.add("projects", input); - } - - async projectNamesAssign({ - input - }): Promise<{ projectNames: DataModel.IProjectName[] }> { - return await this.databases.update("projectNames", input); - } -} - -const getDefaultFSAdapterSettings = workingDirectory => ({ - directory: path.join(workingDirectory, ".db", "json") -}); - -const getDefaultSqliteAdapterSettings = workingDirectory => ({ - directory: path.join(workingDirectory, ".db", "sqlite") -}); +export { connect } from "./connect"; diff --git a/packages/db/src/workspace/pouch/databases.ts b/packages/db/src/workspace/pouch/databases.ts index 1312e62749e..fa9be694aee 100644 --- a/packages/db/src/workspace/pouch/databases.ts +++ b/packages/db/src/workspace/pouch/databases.ts @@ -13,7 +13,7 @@ import { Resource } from "@truffle/db/meta"; -import { Definition, Definitions } from "./types"; +import { Databases, Definition, Definitions, Historical } from "./types"; export interface DatabasesOptions { settings: any; @@ -24,7 +24,8 @@ export interface DatabasesOptions { * Aggegrates logic for interacting wth a set of PouchDB databases identified * by resource collection name. */ -export abstract class Databases { +export abstract class AbstractDatabases + implements Databases { private collections: CollectionDatabases; private definitions: Definitions; @@ -235,16 +236,6 @@ export abstract class Databases { } } -type History = PouchDB.Core.IdMeta & PouchDB.Core.GetMeta; - -type Historical = { - [K in keyof T | keyof History]: K extends keyof History - ? History[K] - : K extends keyof T - ? T[K] - : never; -}; - type CollectionDatabases = { [N in CollectionName]: PouchDB.Database; }; diff --git a/packages/db/src/workspace/pouch/fs.ts b/packages/db/src/workspace/pouch/fs.ts index 03bbc85e2c3..ad01f6dde87 100644 --- a/packages/db/src/workspace/pouch/fs.ts +++ b/packages/db/src/workspace/pouch/fs.ts @@ -5,9 +5,9 @@ import * as PouchDBUtils from "pouchdb-utils"; import CoreLevelPouch from "pouchdb-adapter-leveldb-core"; import { Collections } from "@truffle/db/meta"; -import { Databases } from "./databases"; +import { AbstractDatabases } from "./databases"; -export class FSDatabases extends Databases { +export class FSDatabases extends AbstractDatabases { private directory: string; setup(options) { diff --git a/packages/db/src/workspace/pouch/index.ts b/packages/db/src/workspace/pouch/index.ts index aff9c8b9adc..66085243189 100644 --- a/packages/db/src/workspace/pouch/index.ts +++ b/packages/db/src/workspace/pouch/index.ts @@ -1,5 +1,72 @@ +import path from "path"; + export * from "./types"; -export * from "./databases"; -export * from "./fs"; -export * from "./memory"; -export * from "./sqlite"; + +import { DatabasesOptions } from "./databases"; + +import { FSDatabases } from "./fs"; +import { MemoryDatabases } from "./memory"; +import { SqliteDatabases } from "./sqlite"; + +import { Collections } from "@truffle/db/meta"; +import { Databases, Definitions } from "./types"; + +export interface WorkspaceConfig { + workingDirectory?: string; + adapter?: { + name: string; + settings?: any; // to allow adapters to define any options type + }; +} + +export const forDefinitions = ( + definitions: Definitions +) => (config: WorkspaceConfig): Databases => { + const { WorkspaceDatabases, settings } = concretize(config); + + return new WorkspaceDatabases({ definitions, settings }); +}; + +const concretize = ( + config: WorkspaceConfig +): { + WorkspaceDatabases: new (options: DatabasesOptions) => Databases; + settings: any; +} => { + const { + workingDirectory, + adapter: { name, settings } = { name: "fs" } + } = config; + + switch (name) { + case "fs": { + return { + WorkspaceDatabases: FSDatabases, + settings: settings || getDefaultFSAdapterSettings(workingDirectory) + }; + } + case "sqlite": { + return { + WorkspaceDatabases: SqliteDatabases, + settings: settings || getDefaultSqliteAdapterSettings(workingDirectory) + }; + } + case "memory": { + return { + WorkspaceDatabases: MemoryDatabases, + settings: settings + }; + } + default: { + throw new Error(`Unknown Truffle DB adapter: ${name}`); + } + } +}; + +const getDefaultFSAdapterSettings = workingDirectory => ({ + directory: path.join(workingDirectory, ".db", "json") +}); + +const getDefaultSqliteAdapterSettings = workingDirectory => ({ + directory: path.join(workingDirectory, ".db", "sqlite") +}); diff --git a/packages/db/src/workspace/pouch/memory.ts b/packages/db/src/workspace/pouch/memory.ts index bcfd3baa7ec..7e606062221 100644 --- a/packages/db/src/workspace/pouch/memory.ts +++ b/packages/db/src/workspace/pouch/memory.ts @@ -2,9 +2,11 @@ import PouchDB from "pouchdb"; import PouchDBMemoryAdapter from "pouchdb-adapter-memory"; import { Collections } from "@truffle/db/meta"; -import { Databases } from "./databases"; +import { AbstractDatabases } from "./databases"; -export class MemoryDatabases extends Databases { +export class MemoryDatabases extends AbstractDatabases< + C +> { static counter: number = 0; setup(options) { diff --git a/packages/db/src/workspace/pouch/sqlite.ts b/packages/db/src/workspace/pouch/sqlite.ts index cd40a546846..0bc2061c0d4 100644 --- a/packages/db/src/workspace/pouch/sqlite.ts +++ b/packages/db/src/workspace/pouch/sqlite.ts @@ -4,9 +4,11 @@ import PouchDB from "pouchdb"; import PouchDBNodeWebSQLAdapter from "pouchdb-adapter-node-websql"; import { Collections } from "@truffle/db/meta"; -import { Databases } from "./databases"; +import { AbstractDatabases } from "./databases"; -export class SqliteDatabases extends Databases { +export class SqliteDatabases extends AbstractDatabases< + C +> { private directory: string; setup(options) { diff --git a/packages/db/src/workspace/pouch/types.ts b/packages/db/src/workspace/pouch/types.ts index 4f5626f1355..c53db9226f7 100644 --- a/packages/db/src/workspace/pouch/types.ts +++ b/packages/db/src/workspace/pouch/types.ts @@ -1,6 +1,14 @@ import PouchDB from "pouchdb"; -import { Collections, CollectionName } from "@truffle/db/meta"; +import { + CollectionName, + CollectionResult, + Collections, + MutationInput, + MutationPayload, + MutableCollectionName, + Resource +} from "@truffle/db/meta"; export type Definitions = { [N in CollectionName]: { @@ -13,3 +21,44 @@ export type Definition< C extends Collections, N extends CollectionName > = Definitions[N]; + +export interface Databases { + all>( + collectionName: N + ): Promise>; + + find>( + collectionName: N, + options: PouchDB.Find.FindRequest<{}> + ): Promise>; + + get>( + collectionName: N, + id: string + ): Promise> | null>; + + add>( + collectionName: N, + input: MutationInput + ): Promise>; + + update>( + collectionName: M, + input: MutationInput + ): Promise>; + + remove>( + collectionName: M, + input: MutationInput + ): Promise; +} + +export type History = PouchDB.Core.IdMeta & PouchDB.Core.GetMeta; + +export type Historical = { + [K in keyof T | keyof History]: K extends keyof History + ? History[K] + : K extends keyof T + ? T[K] + : never; +}; diff --git a/packages/db/src/workspace/test/persistence.spec.ts b/packages/db/src/workspace/test/persistence.spec.ts index 25ab9333506..3986eb72e02 100644 --- a/packages/db/src/workspace/test/persistence.spec.ts +++ b/packages/db/src/workspace/test/persistence.spec.ts @@ -1,5 +1,5 @@ import path from "path"; -import { Workspace } from ".."; +import { connect } from ".."; import { generateId } from "./utils"; import tmp from "tmp"; @@ -33,56 +33,56 @@ const sqliteAdapter = { describe("Memory-based Workspace", () => { it("does not persist data", async () => { // create first workspace and add to it - const workspace1 = new Workspace({ adapter: memoryAdapter }); - await workspace1.databases.add("bytecodes", { + const workspace1 = connect({ adapter: memoryAdapter }); + await workspace1.add("bytecodes", { bytecodes: [bytecode] }); // make sure we can get data out of that workspace - expect(await workspace1.databases.get("bytecodes", id)).toBeDefined(); + expect(await workspace1.get("bytecodes", id)).toBeDefined(); // create a second workspace and don't add anything - const workspace2 = new Workspace({ adapter: memoryAdapter }); + const workspace2 = connect({ adapter: memoryAdapter }); // and don't get data out! - expect(await workspace2.databases.get("bytecodes", id)).toBeNull(); + expect(await workspace2.get("bytecodes", id)).toBeNull(); }); }); describe("FS-based Workspace", () => { it("does persist data", async () => { // create first workspace and add to it - const workspace1 = new Workspace({ adapter: fsAdapter }); - await workspace1.databases.add("bytecodes", { + const workspace1 = connect({ adapter: fsAdapter }); + await workspace1.add("bytecodes", { bytecodes: [bytecode] }); // make sure we can get data out of that workspace - expect(await workspace1.databases.get("bytecodes", id)).toBeDefined(); + expect(await workspace1.get("bytecodes", id)).toBeDefined(); // create a second workspace and don't add anything - const workspace2 = new Workspace({ adapter: fsAdapter }); + const workspace2 = connect({ adapter: fsAdapter }); // but DO get data out - expect(await workspace2.databases.get("bytecodes", id)).toBeDefined(); + expect(await workspace2.get("bytecodes", id)).toBeDefined(); }); }); describe("SQLite-based Workspace", () => { it("does persist data", async () => { // create first workspace and add to it - const workspace1 = new Workspace({ adapter: sqliteAdapter }); - await workspace1.databases.add("bytecodes", { + const workspace1 = connect({ adapter: sqliteAdapter }); + await workspace1.add("bytecodes", { bytecodes: [bytecode] }); // make sure we can get data out of that workspace - expect(await workspace1.databases.get("bytecodes", id)).toBeDefined(); + expect(await workspace1.get("bytecodes", id)).toBeDefined(); // create a second workspace and don't add anything - const workspace2 = new Workspace({ adapter: sqliteAdapter }); + const workspace2 = connect({ adapter: sqliteAdapter }); // but DO get data out - expect(await workspace2.databases.get("bytecodes", id)).toBeDefined(); + expect(await workspace2.get("bytecodes", id)).toBeDefined(); }); }); diff --git a/packages/db/src/workspace/test/utils.ts b/packages/db/src/workspace/test/utils.ts index 40ffe8c6f60..235b8444890 100644 --- a/packages/db/src/workspace/test/utils.ts +++ b/packages/db/src/workspace/test/utils.ts @@ -2,7 +2,7 @@ import path from "path"; import * as graphql from "graphql"; -import { Workspace, schema } from "@truffle/db/workspace"; +import { Databases, connect, schema } from "@truffle/db/workspace"; export { generateId } from "@truffle/db/helpers"; @@ -21,10 +21,10 @@ const tempDir = tmp.dirSync({ unsafeCleanup: true }); tmp.setGracefulCleanup(); export class WorkspaceClient { - private workspace: Workspace; + private workspace: Databases; constructor() { - this.workspace = new Workspace({ + this.workspace = connect({ workingDirectory: tempDir.name }); } From a635e608955c90eed8363a25b3fb5eff929af91d Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Sun, 18 Oct 2020 20:35:15 -0400 Subject: [PATCH 44/63] Squash workspace directory ... making the following top-level modules: - src/schema - src/connect - src/pouch - src/graphql --- packages/db/bin/codegen.js | 2 +- packages/db/src/{workspace => }/connect.ts | 0 packages/db/src/db.ts | 4 +++- packages/db/src/{workspace => }/definitions/bytecodes.ts | 0 .../db/src/{workspace => }/definitions/compilations.ts | 0 .../src/{workspace => }/definitions/contractInstances.ts | 0 packages/db/src/{workspace => }/definitions/contracts.ts | 0 packages/db/src/{workspace => }/definitions/index.ts | 0 packages/db/src/{workspace => }/definitions/nameRecords.ts | 0 packages/db/src/{workspace => }/definitions/networks.ts | 0 .../db/src/{workspace => }/definitions/projectNames.ts | 0 packages/db/src/{workspace => }/definitions/projects.ts | 0 packages/db/src/{workspace => }/definitions/sources.ts | 0 packages/db/src/{workspace => }/definitions/types.ts | 0 packages/db/src/{workspace => }/graphql/index.ts | 0 packages/db/src/{workspace => }/graphql/schema.ts | 0 packages/db/src/{workspace => }/graphql/types.ts | 0 packages/db/src/{workspace => }/pouch/databases.ts | 0 packages/db/src/{workspace => }/pouch/fs.ts | 0 packages/db/src/{workspace => }/pouch/index.ts | 0 packages/db/src/{workspace => }/pouch/memory.ts | 0 packages/db/src/{workspace => }/pouch/sqlite.ts | 0 packages/db/src/{workspace => }/pouch/types.ts | 0 packages/db/src/{workspace => }/schema.ts | 0 packages/db/src/{workspace => }/test/bytecode.graphql.ts | 0 packages/db/src/{workspace => }/test/bytecode.spec.ts | 2 +- .../db/src/{workspace => }/test/compilation.graphql.ts | 0 packages/db/src/{workspace => }/test/compilation.spec.ts | 2 +- packages/db/src/{workspace => }/test/contract.graphql.ts | 0 packages/db/src/{workspace => }/test/contract.spec.ts | 0 .../src/{workspace => }/test/contractInstance.graphql.ts | 0 .../db/src/{workspace => }/test/contractInstance.spec.ts | 0 packages/db/src/{workspace => }/test/nameRecord.graphql.ts | 0 packages/db/src/{workspace => }/test/nameRecord.spec.ts | 0 packages/db/src/{workspace => }/test/network.graphql.ts | 0 packages/db/src/{workspace => }/test/network.spec.ts | 0 packages/db/src/{workspace => }/test/persistence.spec.ts | 2 +- packages/db/src/{workspace => }/test/projects.graphql.ts | 0 packages/db/src/{workspace => }/test/projects.spec.ts | 4 ++-- packages/db/src/{workspace => }/test/source.graphql.ts | 0 packages/db/src/{workspace => }/test/source.spec.ts | 0 packages/db/src/{workspace => }/test/utils.ts | 7 ++++--- packages/db/src/workspace/index.ts | 3 --- 43 files changed, 13 insertions(+), 13 deletions(-) rename packages/db/src/{workspace => }/connect.ts (100%) rename packages/db/src/{workspace => }/definitions/bytecodes.ts (100%) rename packages/db/src/{workspace => }/definitions/compilations.ts (100%) rename packages/db/src/{workspace => }/definitions/contractInstances.ts (100%) rename packages/db/src/{workspace => }/definitions/contracts.ts (100%) rename packages/db/src/{workspace => }/definitions/index.ts (100%) rename packages/db/src/{workspace => }/definitions/nameRecords.ts (100%) rename packages/db/src/{workspace => }/definitions/networks.ts (100%) rename packages/db/src/{workspace => }/definitions/projectNames.ts (100%) rename packages/db/src/{workspace => }/definitions/projects.ts (100%) rename packages/db/src/{workspace => }/definitions/sources.ts (100%) rename packages/db/src/{workspace => }/definitions/types.ts (100%) rename packages/db/src/{workspace => }/graphql/index.ts (100%) rename packages/db/src/{workspace => }/graphql/schema.ts (100%) rename packages/db/src/{workspace => }/graphql/types.ts (100%) rename packages/db/src/{workspace => }/pouch/databases.ts (100%) rename packages/db/src/{workspace => }/pouch/fs.ts (100%) rename packages/db/src/{workspace => }/pouch/index.ts (100%) rename packages/db/src/{workspace => }/pouch/memory.ts (100%) rename packages/db/src/{workspace => }/pouch/sqlite.ts (100%) rename packages/db/src/{workspace => }/pouch/types.ts (100%) rename packages/db/src/{workspace => }/schema.ts (100%) rename packages/db/src/{workspace => }/test/bytecode.graphql.ts (100%) rename packages/db/src/{workspace => }/test/bytecode.spec.ts (97%) rename packages/db/src/{workspace => }/test/compilation.graphql.ts (100%) rename packages/db/src/{workspace => }/test/compilation.spec.ts (97%) rename packages/db/src/{workspace => }/test/contract.graphql.ts (100%) rename packages/db/src/{workspace => }/test/contract.spec.ts (100%) rename packages/db/src/{workspace => }/test/contractInstance.graphql.ts (100%) rename packages/db/src/{workspace => }/test/contractInstance.spec.ts (100%) rename packages/db/src/{workspace => }/test/nameRecord.graphql.ts (100%) rename packages/db/src/{workspace => }/test/nameRecord.spec.ts (100%) rename packages/db/src/{workspace => }/test/network.graphql.ts (100%) rename packages/db/src/{workspace => }/test/network.spec.ts (100%) rename packages/db/src/{workspace => }/test/persistence.spec.ts (98%) rename packages/db/src/{workspace => }/test/projects.graphql.ts (100%) rename packages/db/src/{workspace => }/test/projects.spec.ts (98%) rename packages/db/src/{workspace => }/test/source.graphql.ts (100%) rename packages/db/src/{workspace => }/test/source.spec.ts (100%) rename packages/db/src/{workspace => }/test/utils.ts (83%) delete mode 100644 packages/db/src/workspace/index.ts diff --git a/packages/db/bin/codegen.js b/packages/db/bin/codegen.js index 91b4fcefca1..cc7aefea122 100644 --- a/packages/db/bin/codegen.js +++ b/packages/db/bin/codegen.js @@ -5,7 +5,7 @@ const { generateNamespace } = require("@gql2ts/from-schema"); // for path setup require("@truffle/db"); -const { schema } = require("@truffle/db/workspace/schema"); +const { schema } = require("@truffle/db/schema"); const dataModel = generateNamespace("DataModel", schema, { ignoreTypeNameDeclaration: true diff --git a/packages/db/src/workspace/connect.ts b/packages/db/src/connect.ts similarity index 100% rename from packages/db/src/workspace/connect.ts rename to packages/db/src/connect.ts diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 32678b2e239..f63a31df6d1 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -2,7 +2,9 @@ import { GraphQLSchema, DocumentNode, parse, execute } from "graphql"; import { generateCompileLoad } from "@truffle/db/loaders/commands"; import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; import { WorkflowCompileResult } from "@truffle/compile-common"; -import { schema, connect, Databases } from "@truffle/db/workspace"; +import { schema } from "./schema"; +import { connect } from "./connect"; +import { Databases } from "./definitions"; import { generateInitializeLoad, generateNamesLoad diff --git a/packages/db/src/workspace/definitions/bytecodes.ts b/packages/db/src/definitions/bytecodes.ts similarity index 100% rename from packages/db/src/workspace/definitions/bytecodes.ts rename to packages/db/src/definitions/bytecodes.ts diff --git a/packages/db/src/workspace/definitions/compilations.ts b/packages/db/src/definitions/compilations.ts similarity index 100% rename from packages/db/src/workspace/definitions/compilations.ts rename to packages/db/src/definitions/compilations.ts diff --git a/packages/db/src/workspace/definitions/contractInstances.ts b/packages/db/src/definitions/contractInstances.ts similarity index 100% rename from packages/db/src/workspace/definitions/contractInstances.ts rename to packages/db/src/definitions/contractInstances.ts diff --git a/packages/db/src/workspace/definitions/contracts.ts b/packages/db/src/definitions/contracts.ts similarity index 100% rename from packages/db/src/workspace/definitions/contracts.ts rename to packages/db/src/definitions/contracts.ts diff --git a/packages/db/src/workspace/definitions/index.ts b/packages/db/src/definitions/index.ts similarity index 100% rename from packages/db/src/workspace/definitions/index.ts rename to packages/db/src/definitions/index.ts diff --git a/packages/db/src/workspace/definitions/nameRecords.ts b/packages/db/src/definitions/nameRecords.ts similarity index 100% rename from packages/db/src/workspace/definitions/nameRecords.ts rename to packages/db/src/definitions/nameRecords.ts diff --git a/packages/db/src/workspace/definitions/networks.ts b/packages/db/src/definitions/networks.ts similarity index 100% rename from packages/db/src/workspace/definitions/networks.ts rename to packages/db/src/definitions/networks.ts diff --git a/packages/db/src/workspace/definitions/projectNames.ts b/packages/db/src/definitions/projectNames.ts similarity index 100% rename from packages/db/src/workspace/definitions/projectNames.ts rename to packages/db/src/definitions/projectNames.ts diff --git a/packages/db/src/workspace/definitions/projects.ts b/packages/db/src/definitions/projects.ts similarity index 100% rename from packages/db/src/workspace/definitions/projects.ts rename to packages/db/src/definitions/projects.ts diff --git a/packages/db/src/workspace/definitions/sources.ts b/packages/db/src/definitions/sources.ts similarity index 100% rename from packages/db/src/workspace/definitions/sources.ts rename to packages/db/src/definitions/sources.ts diff --git a/packages/db/src/workspace/definitions/types.ts b/packages/db/src/definitions/types.ts similarity index 100% rename from packages/db/src/workspace/definitions/types.ts rename to packages/db/src/definitions/types.ts diff --git a/packages/db/src/workspace/graphql/index.ts b/packages/db/src/graphql/index.ts similarity index 100% rename from packages/db/src/workspace/graphql/index.ts rename to packages/db/src/graphql/index.ts diff --git a/packages/db/src/workspace/graphql/schema.ts b/packages/db/src/graphql/schema.ts similarity index 100% rename from packages/db/src/workspace/graphql/schema.ts rename to packages/db/src/graphql/schema.ts diff --git a/packages/db/src/workspace/graphql/types.ts b/packages/db/src/graphql/types.ts similarity index 100% rename from packages/db/src/workspace/graphql/types.ts rename to packages/db/src/graphql/types.ts diff --git a/packages/db/src/workspace/pouch/databases.ts b/packages/db/src/pouch/databases.ts similarity index 100% rename from packages/db/src/workspace/pouch/databases.ts rename to packages/db/src/pouch/databases.ts diff --git a/packages/db/src/workspace/pouch/fs.ts b/packages/db/src/pouch/fs.ts similarity index 100% rename from packages/db/src/workspace/pouch/fs.ts rename to packages/db/src/pouch/fs.ts diff --git a/packages/db/src/workspace/pouch/index.ts b/packages/db/src/pouch/index.ts similarity index 100% rename from packages/db/src/workspace/pouch/index.ts rename to packages/db/src/pouch/index.ts diff --git a/packages/db/src/workspace/pouch/memory.ts b/packages/db/src/pouch/memory.ts similarity index 100% rename from packages/db/src/workspace/pouch/memory.ts rename to packages/db/src/pouch/memory.ts diff --git a/packages/db/src/workspace/pouch/sqlite.ts b/packages/db/src/pouch/sqlite.ts similarity index 100% rename from packages/db/src/workspace/pouch/sqlite.ts rename to packages/db/src/pouch/sqlite.ts diff --git a/packages/db/src/workspace/pouch/types.ts b/packages/db/src/pouch/types.ts similarity index 100% rename from packages/db/src/workspace/pouch/types.ts rename to packages/db/src/pouch/types.ts diff --git a/packages/db/src/workspace/schema.ts b/packages/db/src/schema.ts similarity index 100% rename from packages/db/src/workspace/schema.ts rename to packages/db/src/schema.ts diff --git a/packages/db/src/workspace/test/bytecode.graphql.ts b/packages/db/src/test/bytecode.graphql.ts similarity index 100% rename from packages/db/src/workspace/test/bytecode.graphql.ts rename to packages/db/src/test/bytecode.graphql.ts diff --git a/packages/db/src/workspace/test/bytecode.spec.ts b/packages/db/src/test/bytecode.spec.ts similarity index 97% rename from packages/db/src/workspace/test/bytecode.spec.ts rename to packages/db/src/test/bytecode.spec.ts index 34db08f2624..f98e6a983d4 100644 --- a/packages/db/src/workspace/test/bytecode.spec.ts +++ b/packages/db/src/test/bytecode.spec.ts @@ -5,7 +5,7 @@ import { Shims } from "@truffle/compile-common"; describe("Bytecode", () => { let wsClient; let expectedId; - let variables, addBytecodeResult, shimmedBytecode; + let addBytecodeResult, shimmedBytecode; beforeEach(async () => { wsClient = new WorkspaceClient(); diff --git a/packages/db/src/workspace/test/compilation.graphql.ts b/packages/db/src/test/compilation.graphql.ts similarity index 100% rename from packages/db/src/workspace/test/compilation.graphql.ts rename to packages/db/src/test/compilation.graphql.ts diff --git a/packages/db/src/workspace/test/compilation.spec.ts b/packages/db/src/test/compilation.spec.ts similarity index 97% rename from packages/db/src/workspace/test/compilation.spec.ts rename to packages/db/src/test/compilation.spec.ts index 71c490be1a6..931971f3c54 100644 --- a/packages/db/src/workspace/test/compilation.spec.ts +++ b/packages/db/src/test/compilation.spec.ts @@ -43,7 +43,7 @@ describe("Compilation", () => { for (let compilation of compilations) { expect(compilation).toHaveProperty("compiler"); expect(compilation).toHaveProperty("sources"); - const { compiler, sources, processedSources, sourceMaps } = compilation; + const { compiler, sources, processedSources } = compilation; expect(compiler).toHaveProperty("name"); diff --git a/packages/db/src/workspace/test/contract.graphql.ts b/packages/db/src/test/contract.graphql.ts similarity index 100% rename from packages/db/src/workspace/test/contract.graphql.ts rename to packages/db/src/test/contract.graphql.ts diff --git a/packages/db/src/workspace/test/contract.spec.ts b/packages/db/src/test/contract.spec.ts similarity index 100% rename from packages/db/src/workspace/test/contract.spec.ts rename to packages/db/src/test/contract.spec.ts diff --git a/packages/db/src/workspace/test/contractInstance.graphql.ts b/packages/db/src/test/contractInstance.graphql.ts similarity index 100% rename from packages/db/src/workspace/test/contractInstance.graphql.ts rename to packages/db/src/test/contractInstance.graphql.ts diff --git a/packages/db/src/workspace/test/contractInstance.spec.ts b/packages/db/src/test/contractInstance.spec.ts similarity index 100% rename from packages/db/src/workspace/test/contractInstance.spec.ts rename to packages/db/src/test/contractInstance.spec.ts diff --git a/packages/db/src/workspace/test/nameRecord.graphql.ts b/packages/db/src/test/nameRecord.graphql.ts similarity index 100% rename from packages/db/src/workspace/test/nameRecord.graphql.ts rename to packages/db/src/test/nameRecord.graphql.ts diff --git a/packages/db/src/workspace/test/nameRecord.spec.ts b/packages/db/src/test/nameRecord.spec.ts similarity index 100% rename from packages/db/src/workspace/test/nameRecord.spec.ts rename to packages/db/src/test/nameRecord.spec.ts diff --git a/packages/db/src/workspace/test/network.graphql.ts b/packages/db/src/test/network.graphql.ts similarity index 100% rename from packages/db/src/workspace/test/network.graphql.ts rename to packages/db/src/test/network.graphql.ts diff --git a/packages/db/src/workspace/test/network.spec.ts b/packages/db/src/test/network.spec.ts similarity index 100% rename from packages/db/src/workspace/test/network.spec.ts rename to packages/db/src/test/network.spec.ts diff --git a/packages/db/src/workspace/test/persistence.spec.ts b/packages/db/src/test/persistence.spec.ts similarity index 98% rename from packages/db/src/workspace/test/persistence.spec.ts rename to packages/db/src/test/persistence.spec.ts index 3986eb72e02..94bedf9537a 100644 --- a/packages/db/src/workspace/test/persistence.spec.ts +++ b/packages/db/src/test/persistence.spec.ts @@ -1,5 +1,5 @@ import path from "path"; -import { connect } from ".."; +import { connect } from "@truffle/db/connect"; import { generateId } from "./utils"; import tmp from "tmp"; diff --git a/packages/db/src/workspace/test/projects.graphql.ts b/packages/db/src/test/projects.graphql.ts similarity index 100% rename from packages/db/src/workspace/test/projects.graphql.ts rename to packages/db/src/test/projects.graphql.ts diff --git a/packages/db/src/workspace/test/projects.spec.ts b/packages/db/src/test/projects.spec.ts similarity index 98% rename from packages/db/src/workspace/test/projects.spec.ts rename to packages/db/src/test/projects.spec.ts index 14469b2f00e..c9f9a6ff175 100644 --- a/packages/db/src/workspace/test/projects.spec.ts +++ b/packages/db/src/test/projects.spec.ts @@ -116,7 +116,7 @@ describe("Project", () => { const projectName = projectNames[0]; expect(projectName).toHaveProperty("project"); expect(projectName).toHaveProperty("nameRecord"); - const { project, nameRecord } = projectName; + const { nameRecord } = projectName; expect(nameRecord.resource.name).toEqual("ganache"); expect(nameRecord.resource.id).toEqual(addNetworkId); } @@ -132,7 +132,7 @@ describe("Project", () => { const projectName = projectNames[0]; expect(projectName).toHaveProperty("project"); expect(projectName).toHaveProperty("nameRecord"); - const { project, nameRecord } = projectName; + const { nameRecord } = projectName; expect(nameRecord.resource.name).toEqual("Migrations"); expect(nameRecord.resource.id).toEqual(addContractId); } diff --git a/packages/db/src/workspace/test/source.graphql.ts b/packages/db/src/test/source.graphql.ts similarity index 100% rename from packages/db/src/workspace/test/source.graphql.ts rename to packages/db/src/test/source.graphql.ts diff --git a/packages/db/src/workspace/test/source.spec.ts b/packages/db/src/test/source.spec.ts similarity index 100% rename from packages/db/src/workspace/test/source.spec.ts rename to packages/db/src/test/source.spec.ts diff --git a/packages/db/src/workspace/test/utils.ts b/packages/db/src/test/utils.ts similarity index 83% rename from packages/db/src/workspace/test/utils.ts rename to packages/db/src/test/utils.ts index 235b8444890..6b8c6b9107f 100644 --- a/packages/db/src/workspace/test/utils.ts +++ b/packages/db/src/test/utils.ts @@ -2,15 +2,16 @@ import path from "path"; import * as graphql from "graphql"; -import { Databases, connect, schema } from "@truffle/db/workspace"; +import { schema } from "@truffle/db/schema"; +import { connect } from "@truffle/db/connect"; +import { Databases } from "@truffle/db/definitions"; export { generateId } from "@truffle/db/helpers"; import tmp from "tmp"; export const fixturesDirectory = path.join( - __dirname, // db/src/db/test - "..", // db/src/db + __dirname, // db/src/test "..", // db/src/ "..", // db/ "test", diff --git a/packages/db/src/workspace/index.ts b/packages/db/src/workspace/index.ts deleted file mode 100644 index b48c4c6a844..00000000000 --- a/packages/db/src/workspace/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from "./definitions"; -export { schema } from "./schema"; -export { connect } from "./connect"; From 26041c43cb22f1c2e0c65d2393989cdccf8894c9 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Sun, 18 Oct 2020 20:50:59 -0400 Subject: [PATCH 45/63] Make databases only deal in Inputs --- packages/db/src/meta/index.ts | 14 +++++++++----- packages/db/src/pouch/databases.ts | 17 ++++++++--------- packages/db/src/pouch/types.ts | 9 ++++----- 3 files changed, 21 insertions(+), 19 deletions(-) diff --git a/packages/db/src/meta/index.ts b/packages/db/src/meta/index.ts index 3e9fe050b53..65757bc1bbc 100644 --- a/packages/db/src/meta/index.ts +++ b/packages/db/src/meta/index.ts @@ -51,11 +51,6 @@ export type CollectionProperty< N extends CollectionName = CollectionName > = Collection[P]; -export type CollectionResult< - C extends Collections, - N extends CollectionName -> = Resource[]; - export type ResourceFilter = { is: CollectionPropertyName<{ extends: boolean }>; }; @@ -75,6 +70,15 @@ export type Input< N extends CollectionName = CollectionName > = CollectionProperty<"input", C, N>; +export type SavedInput< + C extends Collections = Collections, + N extends CollectionName = CollectionName +> = { + [K in keyof Input | "id"]: K extends keyof Input + ? Input[K] + : string; +}; + export type FilteredCollectionName = { [K in CollectionName]: Resource extends never ? never : K; }[CollectionName]; diff --git a/packages/db/src/pouch/databases.ts b/packages/db/src/pouch/databases.ts index fa9be694aee..1a6bca1d15c 100644 --- a/packages/db/src/pouch/databases.ts +++ b/packages/db/src/pouch/databases.ts @@ -5,12 +5,11 @@ import { generateId } from "@truffle/db/helpers"; import { CollectionName, - CollectionResult, Collections, MutationInput, MutationPayload, MutableCollectionName, - Resource + SavedInput } from "@truffle/db/meta"; import { Databases, Definition, Definitions, Historical } from "./types"; @@ -77,14 +76,14 @@ export abstract class AbstractDatabases public async all>( collectionName: N - ): Promise> { + ): Promise[]> { return await this.find(collectionName, { selector: {} }); } public async find>( collectionName: N, options: PouchDB.Find.FindRequest<{}> - ): Promise> { + ): Promise[]> { await this.ready; // allows searching with `id` instead of pouch's internal `_id`, @@ -108,14 +107,14 @@ export abstract class AbstractDatabases } catch (error) { console.log(`Error fetching all ${collectionName}\n`); console.log(error); - return ([] as unknown) as CollectionResult; + return ([] as unknown) as SavedInput[]; } } public async get>( collectionName: N, id: string - ): Promise> | null> { + ): Promise> | null> { await this.ready; try { @@ -123,7 +122,7 @@ export abstract class AbstractDatabases return { ...result, id - } as Historical>; + } as Historical>; } catch (_) { return null; } @@ -153,7 +152,7 @@ export abstract class AbstractDatabases return { ...resourceInput, id - } as Resource; + } as SavedInput; }) ); @@ -185,7 +184,7 @@ export abstract class AbstractDatabases return { ...resourceInput, id - } as Resource; + } as SavedInput; }) ); diff --git a/packages/db/src/pouch/types.ts b/packages/db/src/pouch/types.ts index c53db9226f7..5bb6e4abf56 100644 --- a/packages/db/src/pouch/types.ts +++ b/packages/db/src/pouch/types.ts @@ -2,12 +2,11 @@ import PouchDB from "pouchdb"; import { CollectionName, - CollectionResult, Collections, MutationInput, MutationPayload, MutableCollectionName, - Resource + SavedInput } from "@truffle/db/meta"; export type Definitions = { @@ -25,17 +24,17 @@ export type Definition< export interface Databases { all>( collectionName: N - ): Promise>; + ): Promise[]>; find>( collectionName: N, options: PouchDB.Find.FindRequest<{}> - ): Promise>; + ): Promise[]>; get>( collectionName: N, id: string - ): Promise> | null>; + ): Promise> | null>; add>( collectionName: N, From 8c82f6e2138f7a0286281f472ff0f36122eaf1ab Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Sun, 18 Oct 2020 21:07:57 -0400 Subject: [PATCH 46/63] Remove extraneous input definitions --- .../resources/bytecodes/add.graphql.ts | 11 ------ .../resources/compilations/add.graphql.ts | 38 ------------------- .../contractInstances/add.graphql.ts | 31 --------------- .../resources/contracts/add.graphql.ts | 31 --------------- .../resources/nameRecords/add.graphql.ts | 15 -------- .../loaders/resources/networks/add.graphql.ts | 11 ------ .../loaders/resources/projects/add.graphql.ts | 3 -- .../resources/projects/assign.graphql.ts | 12 ------ .../loaders/resources/sources/add.graphql.ts | 5 --- packages/db/src/test/bytecode.graphql.ts | 6 --- .../db/src/test/contractInstance.graphql.ts | 31 --------------- 11 files changed, 194 deletions(-) diff --git a/packages/db/src/loaders/resources/bytecodes/add.graphql.ts b/packages/db/src/loaders/resources/bytecodes/add.graphql.ts index b08b3e1deae..983ce924682 100644 --- a/packages/db/src/loaders/resources/bytecodes/add.graphql.ts +++ b/packages/db/src/loaders/resources/bytecodes/add.graphql.ts @@ -1,17 +1,6 @@ import gql from "graphql-tag"; export const AddBytecodes = gql` - input LinkReferenceInput { - offsets: [Int] - name: String - length: Int - } - - input BytecodeInput { - bytes: Bytes! - linkReferences: [LinkReferenceInput]! - } - mutation AddBytecodes($bytecodes: [BytecodeInput!]!) { bytecodesAdd(input: { bytecodes: $bytecodes }) { bytecodes { diff --git a/packages/db/src/loaders/resources/compilations/add.graphql.ts b/packages/db/src/loaders/resources/compilations/add.graphql.ts index b3cd0c680ec..52352cb8b35 100644 --- a/packages/db/src/loaders/resources/compilations/add.graphql.ts +++ b/packages/db/src/loaders/resources/compilations/add.graphql.ts @@ -1,44 +1,6 @@ import gql from "graphql-tag"; export const AddCompilations = gql` - input CompilerInput { - name: String - version: String - settings: Object - } - - input CompilationSourceInput { - id: ID! - } - - input CompilationProcessedSourceSourceInput { - id: ID! - } - - input CompilationProcessedSourceAstInput { - json: String! - } - - input CompilationSourceMapInput { - json: String! - } - - input CompilationProcessedSourceInput { - name: String - source: CompilationProcessedSourceSourceInput - ast: CompilationProcessedSourceAstInput - } - - input CompilationInput { - compiler: CompilerInput! - sources: [CompilationSourceInput!]! - processedSources: [CompilationProcessedSourceInput!] - sourceMaps: [CompilationSourceMapInput] - } - input CompilationsAddInput { - compilations: [CompilationInput!]! - } - mutation AddCompilations($compilations: [CompilationInput!]!) { compilationsAdd(input: { compilations: $compilations }) { compilations { diff --git a/packages/db/src/loaders/resources/contractInstances/add.graphql.ts b/packages/db/src/loaders/resources/contractInstances/add.graphql.ts index 9623a7d54fa..4363218a4fa 100644 --- a/packages/db/src/loaders/resources/contractInstances/add.graphql.ts +++ b/packages/db/src/loaders/resources/contractInstances/add.graphql.ts @@ -1,37 +1,6 @@ import gql from "graphql-tag"; export const AddContractInstances = gql` - input ContractInstanceCreationConstructorLinkedBytecodeInput { - bytecode: ResourceReferenceInput! - linkValues: [LinkValueInput] - } - - input ContractInstanceCallBytecodeInput { - id: ID! - } - - input ContractInstanceLinkedCallBytecodeInput { - bytecode: ContractInstanceBytecodeInput - linkValues: [LinkValueInput] - } - - input ContractInstanceCreationConstructorInput { - createBytecode: ContractInstanceCreationConstructorLinkedBytecodeInput! - } - - input ContractInstanceCreationInput { - transactionHash: TransactionHash! - constructor: ContractInstanceCreationConstructorInput! - } - - input ContractInstanceInput { - address: Address! - network: ResourceReferenceInput! - creation: ContractInstanceCreationInput - contract: ResourceReferenceInput - callBytecode: ContractInstanceLinkedCallBytecodeInput - } - mutation AddContractInstances($contractInstances: [ContractInstanceInput!]!) { contractInstancesAdd(input: { contractInstances: $contractInstances }) { contractInstances { diff --git a/packages/db/src/loaders/resources/contracts/add.graphql.ts b/packages/db/src/loaders/resources/contracts/add.graphql.ts index 9139f0454f2..a0162cbd701 100644 --- a/packages/db/src/loaders/resources/contracts/add.graphql.ts +++ b/packages/db/src/loaders/resources/contracts/add.graphql.ts @@ -1,37 +1,6 @@ import gql from "graphql-tag"; export const AddContracts = gql` - input AbiInput { - json: String! - items: [String] - } - - input ContractCompilationInput { - id: ID! - } - - input ContractProcessedSourceInput { - index: FileIndex - } - - input ContractBytecodeInput { - id: ID! - } - - input LinkReferenceInput { - bytecode: ID! - index: FileIndex - } - - input ContractInput { - name: String - abi: AbiInput - compilation: ContractCompilationInput - processedSource: ContractProcessedSourceInput - createBytecode: ContractBytecodeInput - callBytecode: ContractBytecodeInput - } - mutation AddContracts($contracts: [ContractInput!]!) { contractsAdd(input: { contracts: $contracts }) { contracts { diff --git a/packages/db/src/loaders/resources/nameRecords/add.graphql.ts b/packages/db/src/loaders/resources/nameRecords/add.graphql.ts index 9b79979c985..501644767be 100644 --- a/packages/db/src/loaders/resources/nameRecords/add.graphql.ts +++ b/packages/db/src/loaders/resources/nameRecords/add.graphql.ts @@ -1,21 +1,6 @@ import gql from "graphql-tag"; export const AddNameRecords = gql` - input ResourceInput { - id: ID! - } - - input PreviousNameRecordInput { - id: ID! - } - - input NameRecordInput { - name: String! - type: String! - resource: ResourceInput! - previous: PreviousNameRecordInput - } - mutation AddNameRecords($nameRecords: [NameRecordInput!]!) { nameRecordsAdd(input: { nameRecords: $nameRecords }) { nameRecords { diff --git a/packages/db/src/loaders/resources/networks/add.graphql.ts b/packages/db/src/loaders/resources/networks/add.graphql.ts index 98d2e3defc1..2f646cbd7f4 100644 --- a/packages/db/src/loaders/resources/networks/add.graphql.ts +++ b/packages/db/src/loaders/resources/networks/add.graphql.ts @@ -1,17 +1,6 @@ import gql from "graphql-tag"; export const AddNetworks = gql` - input HistoricBlockInput { - height: Int! - hash: String! - } - - input NetworkInput { - name: String - networkId: NetworkId! - historicBlock: HistoricBlockInput! - } - mutation AddNetworks($networks: [NetworkInput!]!) { networksAdd(input: { networks: $networks }) { networks { diff --git a/packages/db/src/loaders/resources/projects/add.graphql.ts b/packages/db/src/loaders/resources/projects/add.graphql.ts index f20e6c2fca9..a524ad60f61 100644 --- a/packages/db/src/loaders/resources/projects/add.graphql.ts +++ b/packages/db/src/loaders/resources/projects/add.graphql.ts @@ -1,9 +1,6 @@ import gql from "graphql-tag"; export const AddProjects = gql` - input ProjectInput { - directory: String! - } mutation AddProjects($projects: [ProjectInput!]!) { projectsAdd(input: { projects: $projects }) { projects { diff --git a/packages/db/src/loaders/resources/projects/assign.graphql.ts b/packages/db/src/loaders/resources/projects/assign.graphql.ts index 90102f75718..9287c5c3116 100644 --- a/packages/db/src/loaders/resources/projects/assign.graphql.ts +++ b/packages/db/src/loaders/resources/projects/assign.graphql.ts @@ -1,18 +1,6 @@ import gql from "graphql-tag"; export const AssignProjectNames = gql` - input ProjectInput { - id: ID! - } - input NameRecordInput { - id: ID! - } - input ProjectNameInput { - project: ProjectInput! - name: String! - type: String! - nameRecord: NameRecordInput! - } mutation AssignProjectNames($projectNames: [ProjectNameInput!]!) { projectNamesAssign(input: { projectNames: $projectNames }) { projectNames { diff --git a/packages/db/src/loaders/resources/sources/add.graphql.ts b/packages/db/src/loaders/resources/sources/add.graphql.ts index 5a78c877001..b0efc42b06d 100644 --- a/packages/db/src/loaders/resources/sources/add.graphql.ts +++ b/packages/db/src/loaders/resources/sources/add.graphql.ts @@ -1,11 +1,6 @@ import gql from "graphql-tag"; export const AddSources = gql` - input SourceInput { - contents: String! - sourcePath: String - } - mutation AddSource($sources: [SourceInput!]!) { sourcesAdd(input: { sources: $sources }) { sources { diff --git a/packages/db/src/test/bytecode.graphql.ts b/packages/db/src/test/bytecode.graphql.ts index ce91f7131d0..d067208974d 100644 --- a/packages/db/src/test/bytecode.graphql.ts +++ b/packages/db/src/test/bytecode.graphql.ts @@ -33,12 +33,6 @@ export const GetBytecode = gql` `; export const AddBytecode = gql` - type linkReferenceInput { - offsets: [Int] - name: String - length: Int - } - mutation AddBytecode($bytes: Bytes!, $linkReferences: [LinkReferenceInput]) { bytecodesAdd( input: { bytecodes: [{ bytes: $bytes, linkReferences: $linkReferences }] } diff --git a/packages/db/src/test/contractInstance.graphql.ts b/packages/db/src/test/contractInstance.graphql.ts index 409f53215d1..70eb48e6f24 100644 --- a/packages/db/src/test/contractInstance.graphql.ts +++ b/packages/db/src/test/contractInstance.graphql.ts @@ -42,37 +42,6 @@ export const GetAllContractInstances = gql` `; export const AddContractInstances = gql` - input ContractInstanceNetworkInput { - id: ID! - } - - input ContractInstanceContractInput { - id: ID! - } - - input BytecodeInput { - id: ID! - } - - input ContractInstanceCreationConstructorBytecodeInput { - bytecode: BytecodeInput! - } - - input ContractInstanceCreationConstructorInput { - createBytecode: ContractInstanceCreationConstructorBytecodeInput! - } - - input ContractInstanceCreationInput { - transactionHash: TransactionHash! - constructor: ContractInstanceCreationConstructorInput! - } - - input ContractInstanceInput { - address: Address! - network: ContractInstanceNetworkInput! - creation: ContractInstanceCreationInput - contract: ContractInstanceContractInput - } mutation AddContractInstances($contractInstances: [ContractInstanceInput!]!) { contractInstancesAdd(input: { contractInstances: $contractInstances }) { contractInstances { From 39cf8c4a36c228e6418e6e500bc98b3eca447a9f Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Tue, 20 Oct 2020 17:19:11 -0400 Subject: [PATCH 47/63] Remove some lingering uses of the word "Workspace" --- packages/db/src/pouch/index.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/packages/db/src/pouch/index.ts b/packages/db/src/pouch/index.ts index 66085243189..728fbfa7734 100644 --- a/packages/db/src/pouch/index.ts +++ b/packages/db/src/pouch/index.ts @@ -11,7 +11,7 @@ import { SqliteDatabases } from "./sqlite"; import { Collections } from "@truffle/db/meta"; import { Databases, Definitions } from "./types"; -export interface WorkspaceConfig { +export interface DatabasesConfig { workingDirectory?: string; adapter?: { name: string; @@ -21,16 +21,16 @@ export interface WorkspaceConfig { export const forDefinitions = ( definitions: Definitions -) => (config: WorkspaceConfig): Databases => { - const { WorkspaceDatabases, settings } = concretize(config); +) => (config: DatabasesConfig): Databases => { + const { constructor, settings } = concretize(config); - return new WorkspaceDatabases({ definitions, settings }); + return new constructor({ definitions, settings }); }; const concretize = ( - config: WorkspaceConfig + config: DatabasesConfig ): { - WorkspaceDatabases: new (options: DatabasesOptions) => Databases; + constructor: new (options: DatabasesOptions) => Databases; settings: any; } => { const { @@ -41,19 +41,19 @@ const concretize = ( switch (name) { case "fs": { return { - WorkspaceDatabases: FSDatabases, + constructor: FSDatabases, settings: settings || getDefaultFSAdapterSettings(workingDirectory) }; } case "sqlite": { return { - WorkspaceDatabases: SqliteDatabases, + constructor: SqliteDatabases, settings: settings || getDefaultSqliteAdapterSettings(workingDirectory) }; } case "memory": { return { - WorkspaceDatabases: MemoryDatabases, + constructor: MemoryDatabases, settings: settings }; } From 0701b9d5f0ed2a2386a9ccf0e073d5e572a56a0a Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Tue, 20 Oct 2020 17:56:48 -0400 Subject: [PATCH 48/63] Define Context interface as graphql type - Strip out unused fields - Remove internal IContext from src/db - Use new type wherever we specify IResolvers --- packages/db/src/db.ts | 25 +++++-------------------- packages/db/src/definitions/types.ts | 2 ++ packages/db/src/graphql/schema.ts | 5 ++--- packages/db/src/graphql/types.ts | 11 +++++++++-- 4 files changed, 18 insertions(+), 25 deletions(-) diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index f63a31df6d1..334163a8aff 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -4,7 +4,7 @@ import { WorkspaceRequest, WorkspaceResponse } from "@truffle/db/loaders/types"; import { WorkflowCompileResult } from "@truffle/compile-common"; import { schema } from "./schema"; import { connect } from "./connect"; -import { Databases } from "./definitions"; +import { Context } from "./definitions"; import { generateInitializeLoad, generateNamesLoad @@ -23,29 +23,17 @@ interface IConfig { }; } -interface IContext { - artifactsDirectory: string; - workingDirectory: string; - contractsDirectory: string; - workspace: Databases; - db: ITruffleDB; -} - -interface ITruffleDB { - query: (query: DocumentNode | string, variables: any) => Promise; -} - type LoaderOptions = { names: boolean; }; export class TruffleDB { schema: GraphQLSchema; - context: IContext; + private context: Context; constructor(config: IConfig) { - this.context = this.createContext(config); this.schema = schema; + this.context = this.createContext(config); } async query(query: DocumentNode | string, variables: any = {}): Promise { @@ -118,16 +106,13 @@ export class TruffleDB { return { compilations, contracts }; } - createContext(config: IConfig): IContext { + private createContext(config: IConfig): Context { return { workspace: connect({ workingDirectory: config.working_directory, adapter: (config.db || {}).adapter }), - artifactsDirectory: config.contracts_build_directory, - workingDirectory: config.working_directory || process.cwd(), - contractsDirectory: config.contracts_directory, - db: this + workingDirectory: config.working_directory || process.cwd() }; } } diff --git a/packages/db/src/definitions/types.ts b/packages/db/src/definitions/types.ts index 1cd80101df4..c3601275ec9 100644 --- a/packages/db/src/definitions/types.ts +++ b/packages/db/src/definitions/types.ts @@ -67,3 +67,5 @@ export type NamedResource< > = Meta.NamedResource; export type Databases = Pouch.Databases; + +export type Context = GraphQl.Context; diff --git a/packages/db/src/graphql/schema.ts b/packages/db/src/graphql/schema.ts index a07817df3d2..66102cb0ff5 100644 --- a/packages/db/src/graphql/schema.ts +++ b/packages/db/src/graphql/schema.ts @@ -9,8 +9,7 @@ import { CollectionName, MutableCollectionName } from "@truffle/db/meta"; -import { Databases } from "../pouch"; -import { Definition, Definitions } from "./types"; +import { Context, Definition, Definitions } from "./types"; export const forDefinitions = ( definitions: Definitions @@ -170,7 +169,7 @@ abstract class DefinitionSchema< ]; } - get resolvers(): IResolvers }> { + get resolvers(): IResolvers> { const { resource, resources } = this.names; const { resolvers = {} } = this.definition; diff --git a/packages/db/src/graphql/types.ts b/packages/db/src/graphql/types.ts index ff55173d54b..6a110dd8bd1 100644 --- a/packages/db/src/graphql/types.ts +++ b/packages/db/src/graphql/types.ts @@ -14,15 +14,22 @@ export type Definitions = { ? { mutable: true; typeDefs: graphql.DocumentNode; - resolvers?: IResolvers }>; + resolvers?: IResolvers>; } : { mutable?: boolean; typeDefs: graphql.DocumentNode; - resolvers?: IResolvers }>; + resolvers?: IResolvers>; }; }; +export interface Context { + workspace: Databases; + + // HACK this is a bit out of place here + workingDirectory: string; +} + export type Definition< C extends Collections, N extends CollectionName From 20ce9da564ca65c50fe5bba5375686fc62b62eb9 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Tue, 20 Oct 2020 18:02:48 -0400 Subject: [PATCH 49/63] Rename Databases interface to Workspace ... and rename AbstractDatabases, the class, back to Databases --- packages/db/src/definitions/types.ts | 2 +- packages/db/src/graphql/types.ts | 4 ++-- packages/db/src/pouch/databases.ts | 5 ++--- packages/db/src/pouch/fs.ts | 4 ++-- packages/db/src/pouch/index.ts | 6 +++--- packages/db/src/pouch/memory.ts | 6 ++---- packages/db/src/pouch/sqlite.ts | 6 ++---- packages/db/src/pouch/types.ts | 2 +- packages/db/src/test/utils.ts | 4 ++-- 9 files changed, 17 insertions(+), 22 deletions(-) diff --git a/packages/db/src/definitions/types.ts b/packages/db/src/definitions/types.ts index c3601275ec9..3ddcaaff0d5 100644 --- a/packages/db/src/definitions/types.ts +++ b/packages/db/src/definitions/types.ts @@ -66,6 +66,6 @@ export type NamedResource< N extends CollectionName = CollectionName > = Meta.NamedResource; -export type Databases = Pouch.Databases; +export type Workspace = Pouch.Workspace; export type Context = GraphQl.Context; diff --git a/packages/db/src/graphql/types.ts b/packages/db/src/graphql/types.ts index 6a110dd8bd1..3f10cba7efc 100644 --- a/packages/db/src/graphql/types.ts +++ b/packages/db/src/graphql/types.ts @@ -7,7 +7,7 @@ import { MutableCollectionName } from "@truffle/db/meta"; -import { Databases } from "../pouch"; +import { Workspace } from "../pouch"; export type Definitions = { [N in CollectionName]: N extends MutableCollectionName @@ -24,7 +24,7 @@ export type Definitions = { }; export interface Context { - workspace: Databases; + workspace: Workspace; // HACK this is a bit out of place here workingDirectory: string; diff --git a/packages/db/src/pouch/databases.ts b/packages/db/src/pouch/databases.ts index 1a6bca1d15c..93b886b3664 100644 --- a/packages/db/src/pouch/databases.ts +++ b/packages/db/src/pouch/databases.ts @@ -12,7 +12,7 @@ import { SavedInput } from "@truffle/db/meta"; -import { Databases, Definition, Definitions, Historical } from "./types"; +import { Workspace, Definition, Definitions, Historical } from "./types"; export interface DatabasesOptions { settings: any; @@ -23,8 +23,7 @@ export interface DatabasesOptions { * Aggegrates logic for interacting wth a set of PouchDB databases identified * by resource collection name. */ -export abstract class AbstractDatabases - implements Databases { +export abstract class Databases implements Workspace { private collections: CollectionDatabases; private definitions: Definitions; diff --git a/packages/db/src/pouch/fs.ts b/packages/db/src/pouch/fs.ts index ad01f6dde87..03bbc85e2c3 100644 --- a/packages/db/src/pouch/fs.ts +++ b/packages/db/src/pouch/fs.ts @@ -5,9 +5,9 @@ import * as PouchDBUtils from "pouchdb-utils"; import CoreLevelPouch from "pouchdb-adapter-leveldb-core"; import { Collections } from "@truffle/db/meta"; -import { AbstractDatabases } from "./databases"; +import { Databases } from "./databases"; -export class FSDatabases extends AbstractDatabases { +export class FSDatabases extends Databases { private directory: string; setup(options) { diff --git a/packages/db/src/pouch/index.ts b/packages/db/src/pouch/index.ts index 728fbfa7734..4e148ba060d 100644 --- a/packages/db/src/pouch/index.ts +++ b/packages/db/src/pouch/index.ts @@ -9,7 +9,7 @@ import { MemoryDatabases } from "./memory"; import { SqliteDatabases } from "./sqlite"; import { Collections } from "@truffle/db/meta"; -import { Databases, Definitions } from "./types"; +import { Workspace, Definitions } from "./types"; export interface DatabasesConfig { workingDirectory?: string; @@ -21,7 +21,7 @@ export interface DatabasesConfig { export const forDefinitions = ( definitions: Definitions -) => (config: DatabasesConfig): Databases => { +) => (config: DatabasesConfig): Workspace => { const { constructor, settings } = concretize(config); return new constructor({ definitions, settings }); @@ -30,7 +30,7 @@ export const forDefinitions = ( const concretize = ( config: DatabasesConfig ): { - constructor: new (options: DatabasesOptions) => Databases; + constructor: new (options: DatabasesOptions) => Workspace; settings: any; } => { const { diff --git a/packages/db/src/pouch/memory.ts b/packages/db/src/pouch/memory.ts index 7e606062221..bcfd3baa7ec 100644 --- a/packages/db/src/pouch/memory.ts +++ b/packages/db/src/pouch/memory.ts @@ -2,11 +2,9 @@ import PouchDB from "pouchdb"; import PouchDBMemoryAdapter from "pouchdb-adapter-memory"; import { Collections } from "@truffle/db/meta"; -import { AbstractDatabases } from "./databases"; +import { Databases } from "./databases"; -export class MemoryDatabases extends AbstractDatabases< - C -> { +export class MemoryDatabases extends Databases { static counter: number = 0; setup(options) { diff --git a/packages/db/src/pouch/sqlite.ts b/packages/db/src/pouch/sqlite.ts index 0bc2061c0d4..cd40a546846 100644 --- a/packages/db/src/pouch/sqlite.ts +++ b/packages/db/src/pouch/sqlite.ts @@ -4,11 +4,9 @@ import PouchDB from "pouchdb"; import PouchDBNodeWebSQLAdapter from "pouchdb-adapter-node-websql"; import { Collections } from "@truffle/db/meta"; -import { AbstractDatabases } from "./databases"; +import { Databases } from "./databases"; -export class SqliteDatabases extends AbstractDatabases< - C -> { +export class SqliteDatabases extends Databases { private directory: string; setup(options) { diff --git a/packages/db/src/pouch/types.ts b/packages/db/src/pouch/types.ts index 5bb6e4abf56..573e1c0e27f 100644 --- a/packages/db/src/pouch/types.ts +++ b/packages/db/src/pouch/types.ts @@ -21,7 +21,7 @@ export type Definition< N extends CollectionName > = Definitions[N]; -export interface Databases { +export interface Workspace { all>( collectionName: N ): Promise[]>; diff --git a/packages/db/src/test/utils.ts b/packages/db/src/test/utils.ts index 6b8c6b9107f..2e4824a0576 100644 --- a/packages/db/src/test/utils.ts +++ b/packages/db/src/test/utils.ts @@ -4,7 +4,7 @@ import * as graphql from "graphql"; import { schema } from "@truffle/db/schema"; import { connect } from "@truffle/db/connect"; -import { Databases } from "@truffle/db/definitions"; +import { Workspace } from "@truffle/db/definitions"; export { generateId } from "@truffle/db/helpers"; @@ -22,7 +22,7 @@ const tempDir = tmp.dirSync({ unsafeCleanup: true }); tmp.setGracefulCleanup(); export class WorkspaceClient { - private workspace: Databases; + private workspace: Workspace; constructor() { this.workspace = connect({ From 81904be9485495699af0acc395d9d5ed834b2b99 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Mon, 19 Oct 2020 22:59:51 -0400 Subject: [PATCH 50/63] Use ttypescript instead of module-alias - Remove module-alias and replace with ttypescript dev dependency - Add @zerollup/ts-transform-paths to rewrite paths - Remove extra `require("@truffle/db")` statement, no longer necessary - Fix awkward external require() statement into Truffle DB internals - Update build script to use ttsc --- packages/db/bin/build | 5 ++--- packages/db/bin/codegen.js | 5 +---- packages/db/configs/base.json | 3 +++ packages/db/package.json | 2 ++ packages/db/src/index.ts | 5 ----- 5 files changed, 8 insertions(+), 12 deletions(-) diff --git a/packages/db/bin/build b/packages/db/bin/build index c82c0d7601a..73fae85038e 100755 --- a/packages/db/bin/build +++ b/packages/db/bin/build @@ -3,7 +3,6 @@ # stop if any commands fail set -ex -mkdir -p dist/src/ -tsc --project tsconfig.codegen.json +ttsc --project tsconfig.codegen.json node ./bin/codegen.js -tsc $@ +ttsc $@ diff --git a/packages/db/bin/codegen.js b/packages/db/bin/codegen.js index cc7aefea122..df8abd1c2ec 100644 --- a/packages/db/bin/codegen.js +++ b/packages/db/bin/codegen.js @@ -2,10 +2,7 @@ const fs = require("fs"); const path = require("path"); const { generateNamespace } = require("@gql2ts/from-schema"); -// for path setup -require("@truffle/db"); - -const { schema } = require("@truffle/db/schema"); +const { schema } = require("@truffle/db/dist/src/schema"); const dataModel = generateNamespace("DataModel", schema, { ignoreTypeNameDeclaration: true diff --git a/packages/db/configs/base.json b/packages/db/configs/base.json index be1acafafce..0160fac6e43 100644 --- a/packages/db/configs/base.json +++ b/packages/db/configs/base.json @@ -22,6 +22,9 @@ "jest", "node", "pouchdb" + ], + "plugins": [ + { "transform": "@zerollup/ts-transform-paths", "exclude": "*" } ] }, "include": [ diff --git a/packages/db/package.json b/packages/db/package.json index 9ffe21c7211..b7792f7be4e 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -46,12 +46,14 @@ "@types/pouchdb": "^6.3.2", "@types/pouchdb-adapter-leveldb": "^6.1.3", "@types/web3": "1.0.20", + "@zerollup/ts-transform-paths": "^1.7.3", "ganache-core": "2.13.0", "jest": "26.5.2", "jsondown": "^1.0.0", "ts-jest": "26.4.1", "ts-node-dev": "^1.0.0-pre.32", "tsconfig-paths": "^3.7.0", + "ttypescript": "^1.5.7", "typescript": "^3.6.3" }, "dependencies": { diff --git a/packages/db/src/index.ts b/packages/db/src/index.ts index af612cc9de1..947bbd2c8af 100644 --- a/packages/db/src/index.ts +++ b/packages/db/src/index.ts @@ -1,9 +1,4 @@ require("source-map-support/register"); -require("module-alias/register"); -const path = require("path"); -const moduleAlias = require("module-alias"); - -moduleAlias.addAlias("@truffle/db", path.join(__dirname)); const { TruffleDB } = require("./db"); const { ApolloServer } = require("apollo-server"); From 2b4c067976a06e9963ec93871b8ca4e5632fc57a Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Mon, 19 Oct 2020 23:11:40 -0400 Subject: [PATCH 51/63] Configure madge for module dependency analysis - Add madge as dev dependency - Move base config to rootDir to get things to play nice - Define .madgerc - Add `yarn madge` script --- packages/db/.madgerc | 5 + packages/db/package.json | 2 + .../{configs/base.json => tsconfig.base.json} | 10 +- packages/db/tsconfig.codegen.json | 2 +- packages/db/tsconfig.json | 2 +- yarn.lock | 416 +++++++++++++++++- 6 files changed, 419 insertions(+), 18 deletions(-) create mode 100644 packages/db/.madgerc rename packages/db/{configs/base.json => tsconfig.base.json} (80%) diff --git a/packages/db/.madgerc b/packages/db/.madgerc new file mode 100644 index 00000000000..b33c2c2b617 --- /dev/null +++ b/packages/db/.madgerc @@ -0,0 +1,5 @@ +{ + "excludeRegExp": ["\\.\\.", "test"], + "fileExtensions": ["ts"], + "tsConfig": "./tsconfig.base.json" +} diff --git a/packages/db/package.json b/packages/db/package.json index b7792f7be4e..270feae09b0 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -31,6 +31,7 @@ "start:debug": "DEBUG=pouchdb:api ts-node-dev -r tsconfig-paths/register ./bin/server", "start:drizzle": "ts-node-dev -r tsconfig-paths/register ./bin/server ./test/truffle-projects/drizzle-box", "start:drizzle:debug": "DEBUG=pouchdb:api ts-node-dev -r tsconfig-paths/register ./bin/server ./test/truffle-projects/drizzle-box", + "madge": "madge ./src/db.ts", "test": "jest --verbose --detectOpenHandles" }, "bugs": { @@ -50,6 +51,7 @@ "ganache-core": "2.13.0", "jest": "26.5.2", "jsondown": "^1.0.0", + "madge": "^3.11.0", "ts-jest": "26.4.1", "ts-node-dev": "^1.0.0-pre.32", "tsconfig-paths": "^3.7.0", diff --git a/packages/db/configs/base.json b/packages/db/tsconfig.base.json similarity index 80% rename from packages/db/configs/base.json rename to packages/db/tsconfig.base.json index 0160fac6e43..b0bebb353fd 100644 --- a/packages/db/configs/base.json +++ b/packages/db/tsconfig.base.json @@ -8,14 +8,14 @@ "moduleResolution": "node", "allowSyntheticDefaultImports": true, "module": "commonjs", - "outDir": "../dist", + "outDir": "./dist", "strictBindCallApply": true, "paths": { - "@truffle/db": ["../src"], - "@truffle/db/*": ["../src/*"], - "test/*": ["../test/*"] + "@truffle/db": ["./src"], + "@truffle/db/*": ["./src/*"], + "test/*": ["./test/*"] }, - "rootDir": "..", + "rootDir": ".", "baseUrl": ".", "types": [ "express", diff --git a/packages/db/tsconfig.codegen.json b/packages/db/tsconfig.codegen.json index 6fb8c2c45b4..b7d5d549001 100644 --- a/packages/db/tsconfig.codegen.json +++ b/packages/db/tsconfig.codegen.json @@ -1,5 +1,5 @@ { - "extends": "./configs/base", + "extends": "./tsconfig.base.json", "include": [ "src/**/*", "test/**/*", diff --git a/packages/db/tsconfig.json b/packages/db/tsconfig.json index c25477a88a8..428dc1c09ca 100644 --- a/packages/db/tsconfig.json +++ b/packages/db/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "./configs/base", + "extends": "./tsconfig.base.json", "include": [ "src/**/*", "test/**/*", diff --git a/yarn.lock b/yarn.lock index 5123d080f5a..4122b9648ba 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3610,6 +3610,19 @@ semver "^7.3.2" tsutils "^3.17.1" +"@typescript-eslint/typescript-estree@^2.29.0": + version "2.34.0" + resolved "https://registry.yarnpkg.com/@typescript-eslint/typescript-estree/-/typescript-estree-2.34.0.tgz#14aeb6353b39ef0732cc7f1b8285294937cf37d5" + integrity sha512-OMAr+nJWKdlVM9LOqCqh3pQQPwxHAN7Du8DR6dmwCrAmxtiXQnhHJ6tBNtf+cggqfo51SG/FCwnKhXCIM7hnVg== + dependencies: + debug "^4.1.1" + eslint-visitor-keys "^1.1.0" + glob "^7.1.6" + is-glob "^4.0.1" + lodash "^4.17.15" + semver "^7.3.2" + tsutils "^3.17.1" + "@typescript-eslint/visitor-keys@4.2.0": version "4.2.0" resolved "https://registry.yarnpkg.com/@typescript-eslint/visitor-keys/-/visitor-keys-4.2.0.tgz#ae13838e3a260b63ae51021ecaf1d0cdea8dbba5" @@ -4643,6 +4656,11 @@ assign-symbols@^1.0.0: resolved "https://registry.yarnpkg.com/assign-symbols/-/assign-symbols-1.0.0.tgz#59667f41fadd4f20ccbc2bb96b8d4f7f78ec0367" integrity sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c= +ast-module-types@^2.3.1, ast-module-types@^2.3.2, ast-module-types@^2.4.0, ast-module-types@^2.6.0: + version "2.6.0" + resolved "https://registry.yarnpkg.com/ast-module-types/-/ast-module-types-2.6.0.tgz#f9f367fd273bbe01e52f2c51b5f46b65801d5d7f" + integrity sha512-zXSoVaMrf2R+r+ISid5/9a8SXm1LLdkhHzh6pSRhj9jklzruOOl1hva1YmFT33wAstg/f9ZndJAlq1BSrFLSGA== + astral-regex@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/astral-regex/-/astral-regex-1.0.0.tgz#6c8c3fb827dd43ee3918f27b82782ab7658a6fd9" @@ -6305,7 +6323,7 @@ chalk@^3.0.0: ansi-styles "^4.1.0" supports-color "^7.1.0" -chalk@^4.0.0: +chalk@^4.0.0, chalk@^4.1.0: version "4.1.0" resolved "https://registry.yarnpkg.com/chalk/-/chalk-4.1.0.tgz#4e14870a618d9e2edd97dd8345fd9d9dc315646a" integrity sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A== @@ -6595,6 +6613,11 @@ cli-spinners@^2.0.0: resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.2.0.tgz#e8b988d9206c692302d8ee834e7a85c0144d8f77" integrity sha512-tgU3fKwzYjiLEQgPMD9Jt+JjHVL9kW93FiIMX/l7rivvOD4/LL0Mf7gda3+4U2KJBloybwgj5KEoQgGRioMiKQ== +cli-spinners@^2.2.0: + version "2.5.0" + resolved "https://registry.yarnpkg.com/cli-spinners/-/cli-spinners-2.5.0.tgz#12763e47251bf951cb75c201dfa58ff1bcb2d047" + integrity sha512-PC+AmIuK04E6aeSs/pUccSujsTzBhu4HzC2dL+CfJB/Jcc2qTRbEwZQDfIUpt2Xl8BodYBEq8w4fc0kU2I9DjQ== + cli-truncate@^0.2.1: version "0.2.1" resolved "https://registry.yarnpkg.com/cli-truncate/-/cli-truncate-0.2.1.tgz#9f15cfbb0705005369216c626ac7d05ab90dd574" @@ -6804,7 +6827,7 @@ commander@3.0.2: resolved "https://registry.yarnpkg.com/commander/-/commander-3.0.2.tgz#6837c3fb677ad9933d1cfba42dd14d5117d6b39e" integrity sha512-Gar0ASD4BDyKC4hl4DwHqDrmvjoxWKZigVnAbn5H1owvm4CxCPdb0HQDehwNYMJpla5+M2tPmPARzhtYuwpHow== -commander@^2.11.0, commander@^2.14.1, commander@^2.15.0, commander@^2.16.0, commander@^2.18.0, commander@^2.20.0, commander@^2.20.3, commander@^2.9.0, commander@~2.20.3: +commander@^2.11.0, commander@^2.13.0, commander@^2.14.1, commander@^2.15.0, commander@^2.16.0, commander@^2.18.0, commander@^2.19.0, commander@^2.20.0, commander@^2.20.3, commander@^2.8.1, commander@^2.9.0, commander@~2.20.3: version "2.20.3" resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.3.tgz#fd485e84c03eb4881c20722ba48035e8531aeb33" integrity sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ== @@ -6814,6 +6837,11 @@ commander@^4.0.1: resolved "https://registry.yarnpkg.com/commander/-/commander-4.0.1.tgz#b67622721785993182e807f4883633e6401ba53c" integrity sha512-IPF4ouhCP+qdlcmCedhxX4xiGBPyigb8v5NeUp+0LyhwLgxMqyp3S0vl7TAPfS/hiP7FC3caI/PB9lTmP8r1NA== +commander@^5.1.0: + version "5.1.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-5.1.0.tgz#46abbd1652f8e059bddaef99bbdcb2ad9cf179ae" + integrity sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg== + commander@~2.13.0: version "2.13.0" resolved "https://registry.yarnpkg.com/commander/-/commander-2.13.0.tgz#6964bca67685df7c1f1430c584f07d7597885b9c" @@ -7486,6 +7514,13 @@ decode-uri-component@^0.2.0: resolved "https://registry.yarnpkg.com/decode-uri-component/-/decode-uri-component-0.2.0.tgz#eb3913333458775cb84cd1a1fae062106bb87545" integrity sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU= +decomment@^0.9.2: + version "0.9.3" + resolved "https://registry.yarnpkg.com/decomment/-/decomment-0.9.3.tgz#b913f32e5fe1113848f516caa5c7afefa9544d38" + integrity sha512-5skH5BfUL3n09RDmMVaHS1QGCiZRnl2nArUwmsE9JRY93Ueh3tihYl5wIrDdAuXnoFhxVis/DmRWREO2c6DG3w== + dependencies: + esprima "4.0.1" + decompress-response@^3.2.0, decompress-response@^3.3.0: version "3.3.0" resolved "https://registry.yarnpkg.com/decompress-response/-/decompress-response-3.3.0.tgz#80a4dd323748384bfa248083622aedec982adff3" @@ -7734,6 +7769,17 @@ depd@~1.1.2: resolved "https://registry.yarnpkg.com/depd/-/depd-1.1.2.tgz#9bcd52e14c097763e749b274c4346ed2e560b5a9" integrity sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak= +dependency-tree@^7.2.1: + version "7.2.1" + resolved "https://registry.yarnpkg.com/dependency-tree/-/dependency-tree-7.2.1.tgz#41c8f6feb54a2ae32475c0158e8d2c2696bb7f54" + integrity sha512-nBxnjkqDW4LqAzBazy60V4lE0mAtIQ+oers/GIIvVvGYVdCD9+RNNd4G9jjstyz7ZFVg/j/OiYCvK5MjoVqA2w== + dependencies: + commander "^2.19.0" + debug "^4.1.1" + filing-cabinet "^2.5.1" + precinct "^6.2.0" + typescript "^3.7.5" + deprecated-decorator@^0.1.6: version "0.1.6" resolved "https://registry.yarnpkg.com/deprecated-decorator/-/deprecated-decorator-0.1.6.tgz#00966317b7a12fe92f3cc831f7583af329b86c37" @@ -7815,6 +7861,83 @@ detect-newline@^3.0.0: resolved "https://registry.yarnpkg.com/detect-newline/-/detect-newline-3.1.0.tgz#576f5dfc63ae1a192ff192d8ad3af6308991b651" integrity sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA== +detective-amd@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/detective-amd/-/detective-amd-3.0.0.tgz#40c8e21e229df8bca1ee2d4b952a7b67b01e2a5a" + integrity sha512-kOpKHyabdSKF9kj7PqYHLeHPw+TJT8q2u48tZYMkIcas28el1CYeLEJ42Nm+563/Fq060T5WknfwDhdX9+kkBQ== + dependencies: + ast-module-types "^2.3.1" + escodegen "^1.8.0" + get-amd-module-type "^3.0.0" + node-source-walk "^4.0.0" + +detective-cjs@^3.1.1: + version "3.1.1" + resolved "https://registry.yarnpkg.com/detective-cjs/-/detective-cjs-3.1.1.tgz#18da3e39a002d2098a1123d45ce1de1b0d9045a0" + integrity sha512-JQtNTBgFY6h8uT6pgph5QpV3IyxDv+z3qPk/FZRDT9TlFfm5dnRtpH39WtQEr1khqsUxVqXzKjZHpdoQvQbllg== + dependencies: + ast-module-types "^2.4.0" + node-source-walk "^4.0.0" + +detective-es6@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/detective-es6/-/detective-es6-2.2.0.tgz#8f2baba3f8cd90a5cfd748f5ac436f0158ed2585" + integrity sha512-fSpNY0SLER7/sVgQZ1NxJPwmc9uCTzNgdkQDhAaj8NPYwr7Qji9QBcmbNvtMCnuuOGMuKn3O7jv0An+/WRWJZQ== + dependencies: + node-source-walk "^4.0.0" + +detective-less@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/detective-less/-/detective-less-1.0.2.tgz#a68af9ca5f69d74b7d0aa190218b211d83b4f7e3" + integrity sha512-Rps1xDkEEBSq3kLdsdnHZL1x2S4NGDcbrjmd4q+PykK5aJwDdP5MBgrJw1Xo+kyUHuv3JEzPqxr+Dj9ryeDRTA== + dependencies: + debug "^4.0.0" + gonzales-pe "^4.2.3" + node-source-walk "^4.0.0" + +detective-postcss@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/detective-postcss/-/detective-postcss-3.0.1.tgz#511921951f66135e17d0ece2e7604c6e4966c9c6" + integrity sha512-tfTS2GdpUal5NY0aCqI4dpEy8Xfr88AehYKB0iBIZvo8y2g3UsrcDnrp9PR2FbzoW7xD5Rip3NJW7eCSvtqdUw== + dependencies: + debug "^4.1.1" + is-url "^1.2.4" + postcss "^7.0.2" + postcss-values-parser "^1.5.0" + +detective-sass@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/detective-sass/-/detective-sass-3.0.1.tgz#496b819efd1f5c4dd3f0e19b43a8634bdd6927c4" + integrity sha512-oSbrBozRjJ+QFF4WJFbjPQKeakoaY1GiR380NPqwdbWYd5wfl5cLWv0l6LsJVqrgWfFN1bjFqSeo32Nxza8Lbw== + dependencies: + debug "^4.1.1" + gonzales-pe "^4.2.3" + node-source-walk "^4.0.0" + +detective-scss@^2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/detective-scss/-/detective-scss-2.0.1.tgz#06f8c21ae6dedad1fccc26d544892d968083eaf8" + integrity sha512-VveyXW4WQE04s05KlJ8K0bG34jtHQVgTc9InspqoQxvnelj/rdgSAy7i2DXAazyQNFKlWSWbS+Ro2DWKFOKTPQ== + dependencies: + debug "^4.1.1" + gonzales-pe "^4.2.3" + node-source-walk "^4.0.0" + +detective-stylus@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/detective-stylus/-/detective-stylus-1.0.0.tgz#50aee7db8babb990381f010c63fabba5b58e54cd" + integrity sha1-UK7n24uruZA4HwEMY/q7pbWOVM0= + +detective-typescript@^5.8.0: + version "5.8.0" + resolved "https://registry.yarnpkg.com/detective-typescript/-/detective-typescript-5.8.0.tgz#c46776571e26bad6c9ada020cb3cb4e5625d1311" + integrity sha512-SrsUCfCaDTF64QVMHMidRal+kmkbIc5zP8cxxZPsomWx9vuEUjBlSJNhf7/ypE5cLdJJDI4qzKDmyzqQ+iz/xg== + dependencies: + "@typescript-eslint/typescript-estree" "^2.29.0" + ast-module-types "^2.6.0" + node-source-walk "^4.2.0" + typescript "^3.8.3" + detective@^4.0.0: version "4.7.1" resolved "https://registry.yarnpkg.com/detective/-/detective-4.7.1.tgz#0eca7314338442febb6d65da54c10bb1c82b246e" @@ -8485,7 +8608,7 @@ escape-string-regexp@^2.0.0: resolved "https://registry.yarnpkg.com/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz#a30304e99daa32e23b2fd20f51babd07cffca344" integrity sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w== -escodegen@^1.14.1: +escodegen@^1.14.1, escodegen@^1.8.0: version "1.14.3" resolved "https://registry.yarnpkg.com/escodegen/-/escodegen-1.14.3.tgz#4e7b81fba61581dc97582ed78cab7f0e8d63f503" integrity sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw== @@ -8773,16 +8896,16 @@ espree@^7.3.0: acorn-jsx "^5.2.0" eslint-visitor-keys "^1.3.0" +esprima@4.0.1, esprima@^4.0.0, esprima@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" + integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== + esprima@^3.1.3: version "3.1.3" resolved "https://registry.yarnpkg.com/esprima/-/esprima-3.1.3.tgz#fdca51cee6133895e3c88d535ce49dbff62a4633" integrity sha1-/cpRzuYTOJXjyI1TXOSdv/YqRjM= -esprima@^4.0.0, esprima@^4.0.1: - version "4.0.1" - resolved "https://registry.yarnpkg.com/esprima/-/esprima-4.0.1.tgz#13b04cdb3e6c5d19df91ab6987a8695619b0aa71" - integrity sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A== - esquery@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/esquery/-/esquery-1.0.1.tgz#406c51658b1f5991a5f9b62b1dc25b00e3e5c708" @@ -9892,6 +10015,11 @@ file-entry-cache@^5.0.1: dependencies: flat-cache "^2.0.1" +file-exists-dazinatorfork@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/file-exists-dazinatorfork/-/file-exists-dazinatorfork-1.0.2.tgz#cd8d0d85f63e39dc81eceb0b687c44a2cca95c47" + integrity sha512-r70c72ln2YHzQINNfxDp02hAhbGkt1HffZ+Du8oetWDLjDtFja/Lm10lUaSh9e+wD+7VDvPee0b0C9SAy8pWZg== + file-type@^3.8.0: version "3.9.0" resolved "https://registry.yarnpkg.com/file-type/-/file-type-3.9.0.tgz#257a078384d1db8087bc449d107d52a52672b9e9" @@ -9953,6 +10081,25 @@ filewatcher@~3.0.0: dependencies: debounce "^1.0.0" +filing-cabinet@^2.5.1: + version "2.6.0" + resolved "https://registry.yarnpkg.com/filing-cabinet/-/filing-cabinet-2.6.0.tgz#3d4d5093a98b6fae84cf282e8bded1b8ad5f9c0c" + integrity sha512-7kSlTScEkxoYKXCix7tAQ52ZeIHcx7ZWWArEZgXY+eTMe6yDYFdDhHdkXm9rSmvrrpzdZeR1wiufS1rUt4OzMA== + dependencies: + app-module-path "^2.2.0" + commander "^2.13.0" + debug "^4.1.1" + decomment "^0.9.2" + enhanced-resolve "^4.1.0" + is-relative-path "^1.0.2" + module-definition "^3.0.0" + module-lookup-amd "^6.1.0" + resolve "^1.11.1" + resolve-dependency-path "^2.0.0" + sass-lookup "^3.0.0" + stylus-lookup "^3.0.1" + typescript "^3.0.3" + fill-range@^2.1.0: version "2.2.4" resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.4.tgz#eb1e773abb056dcd8df2bfdf6af59b8b3a936565" @@ -10071,6 +10218,13 @@ find-yarn-workspace-root@^1.2.1: fs-extra "^4.0.3" micromatch "^3.1.4" +find@^0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/find/-/find-0.3.0.tgz#4082e8fc8d8320f1a382b5e4f521b9bc50775cb8" + integrity sha512-iSd+O4OEYV/I36Zl8MdYJO0xD82wH528SaCieTVHhclgiYNe9y+yPKSwK+A7/WsmHL1EZ+pYUJBXWTL5qofksw== + dependencies: + traverse-chain "~0.1.0" + findup-sync@3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/findup-sync/-/findup-sync-3.0.0.tgz#17b108f9ee512dfb7a5c7f3c8b27ea9e1a9c08d1" @@ -10143,6 +10297,11 @@ flatted@^2.0.0: resolved "https://registry.yarnpkg.com/flatted/-/flatted-2.0.1.tgz#69e57caa8f0eacbc281d2e2cb458d46fdb449e08" integrity sha512-a1hQMktqW9Nmqr5aktAux3JMNqaucxGcjtjWnZLHX7yyPCmlSV3M54nGYbqT8K+0GhF3NBgmJCc3ma+WOgX8Jg== +flatten@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/flatten/-/flatten-1.0.3.tgz#c1283ac9f27b368abc1e36d1ff7b04501a30356b" + integrity sha512-dVsPA/UwQ8+2uoFe5GHtiBMu48dWLTdsuEd7CKGlZlD78r1TTWBvDuFaFGKCo/ZfEr95Uk56vZoX86OsHkUeIg== + fleximap@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/fleximap/-/fleximap-1.0.0.tgz#1ad448de87b8e023ba6a60623b7e8b0867360ef6" @@ -10504,6 +10663,14 @@ gensync@^1.0.0-beta.1: resolved "https://registry.yarnpkg.com/gensync/-/gensync-1.0.0-beta.1.tgz#58f4361ff987e5ff6e1e7a210827aa371eaac269" integrity sha512-r8EC6NO1sngH/zdD9fiRDLdcgnbayXah+mLgManTaIZJqEC1MZstmnox8KpnI2/fxQwrp5OpCOYWLp4rBl4Jcg== +get-amd-module-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-amd-module-type/-/get-amd-module-type-3.0.0.tgz#bb334662fa04427018c937774570de495845c288" + integrity sha512-99Q7COuACPfVt18zH9N4VAMyb81S6TUgJm2NgV6ERtkh9VIkAaByZkW530wl3lLN5KTtSrK9jVLxYsoP5hQKsw== + dependencies: + ast-module-types "^2.3.2" + node-source-walk "^4.0.0" + get-assigned-identifiers@^1.2.0: version "1.2.0" resolved "https://registry.yarnpkg.com/get-assigned-identifiers/-/get-assigned-identifiers-1.2.0.tgz#6dbf411de648cbaf8d9169ebb0d2d576191e2ff1" @@ -10972,6 +11139,13 @@ globby@^9.2.0: pify "^4.0.1" slash "^2.0.0" +gonzales-pe@^4.2.3: + version "4.3.0" + resolved "https://registry.yarnpkg.com/gonzales-pe/-/gonzales-pe-4.3.0.tgz#fe9dec5f3c557eead09ff868c65826be54d067b3" + integrity sha512-otgSPpUmdWJ43VXyiNgEYE4luzHCL2pz4wQ0OnDluC6Eg4Ko3Vexy/SrSynglw/eR+OhkzmqFCZa/OFa/RgAOQ== + dependencies: + minimist "^1.2.5" + got@9.6.0: version "9.6.0" resolved "https://registry.yarnpkg.com/got/-/got-9.6.0.tgz#edf45e7d67f99545705de1f7bbeeeb121765ed85" @@ -11156,6 +11330,13 @@ graphql@^0.13.0: dependencies: iterall "^1.2.1" +graphviz@0.0.9: + version "0.0.9" + resolved "https://registry.yarnpkg.com/graphviz/-/graphviz-0.0.9.tgz#0bbf1df588c6a92259282da35323622528c4bbc4" + integrity sha512-SmoY2pOtcikmMCqCSy2NO1YsRfu9OO0wpTlOYW++giGjfX1a6gax/m1Fo8IdUd0/3H15cTOfR1SMKwohj4LKsg== + dependencies: + temp "~0.4.0" + growl@1.10.5: version "1.10.5" resolved "https://registry.yarnpkg.com/growl/-/growl-1.10.5.tgz#f2735dc2283674fa67478b10181059355c369e5e" @@ -11714,6 +11895,11 @@ indent-string@^3.0.0: resolved "https://registry.yarnpkg.com/indent-string/-/indent-string-3.2.0.tgz#4a5fd6d27cc332f37e5419a504dbb837105c9289" integrity sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok= +indexes-of@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/indexes-of/-/indexes-of-1.0.1.tgz#f30f716c8e2bd346c7b67d3df3915566a7c05607" + integrity sha1-8w9xbI4r00bHtn0985FVZqfAVgc= + indexof@0.0.1: version "0.0.1" resolved "https://registry.yarnpkg.com/indexof/-/indexof-0.0.1.tgz#82dc336d232b9062179d05ab3293a66059fd435d" @@ -12049,6 +12235,13 @@ is-ci@^2.0.0: dependencies: ci-info "^2.0.0" +is-core-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-core-module/-/is-core-module-2.0.0.tgz#58531b70aed1db7c0e8d4eb1a0a2d1ddd64bd12d" + integrity sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw== + dependencies: + has "^1.0.3" + is-data-descriptor@^0.1.4: version "0.1.4" resolved "https://registry.yarnpkg.com/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz#0b5ee648388e2c860282e793f1856fec3f301b56" @@ -12195,6 +12388,11 @@ is-hex-prefixed@1.0.0: resolved "https://registry.yarnpkg.com/is-hex-prefixed/-/is-hex-prefixed-1.0.0.tgz#7d8d37e6ad77e5d127148913c573e082d777f554" integrity sha1-fY035q135dEnFIkTxXPggtd39VQ= +is-interactive@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-interactive/-/is-interactive-1.0.0.tgz#cea6e6ae5c870a7b0a0004070b7b587e0252912e" + integrity sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w== + is-lower-case@^1.1.0: version "1.1.3" resolved "https://registry.yarnpkg.com/is-lower-case/-/is-lower-case-1.1.3.tgz#7e147be4768dc466db3bfb21cc60b31e6ad69393" @@ -12354,6 +12552,11 @@ is-regexp@^1.0.0: resolved "https://registry.yarnpkg.com/is-regexp/-/is-regexp-1.0.0.tgz#fd2d883545c46bac5a633e7b9a09e87fa2cb5069" integrity sha1-/S2INUXEa6xaYz57mgnof6LLUGk= +is-relative-path@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/is-relative-path/-/is-relative-path-1.0.2.tgz#091b46a0d67c1ed0fe85f1f8cfdde006bb251d46" + integrity sha1-CRtGoNZ8HtD+hfH4z93gBrslHUY= + is-relative@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/is-relative/-/is-relative-1.0.0.tgz#a1bb6935ce8c5dba1e8b9754b9b2dcc020e2260d" @@ -12426,6 +12629,11 @@ is-upper-case@^1.1.0: dependencies: upper-case "^1.1.0" +is-url@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/is-url/-/is-url-1.2.4.tgz#04a4df46d28c4cff3d73d01ff06abeb318a1aa52" + integrity sha512-ITvGim8FhRiYe4IQ5uHSkj7pVaPDrCTkNd3yq3cV7iZAcJdHTUMPMEHcqSOy9xZ9qFenQCvi+2wjH9a1nXqHww== + is-utf8@^0.2.0: version "0.2.1" resolved "https://registry.yarnpkg.com/is-utf8/-/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" @@ -14454,7 +14662,7 @@ log-driver@^1.2.7: resolved "https://registry.yarnpkg.com/log-driver/-/log-driver-1.2.7.tgz#63b95021f0702fedfa2c9bb0a24e7797d71871d8" integrity sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg== -log-symbols@3.0.0: +log-symbols@3.0.0, log-symbols@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/log-symbols/-/log-symbols-3.0.0.tgz#f3a08516a5dea893336a7dee14d18a1cfdab77c4" integrity sha512-dSkNGuI7iG3mfvDzUuYZyvk5dD9ocYCYzNU6CYDE6+Xqd+gwme6Z00NS3dUh8mq/73HaEtT7m6W+yUPtU6BZnQ== @@ -14635,6 +14843,35 @@ macos-release@^2.2.0: resolved "https://registry.yarnpkg.com/macos-release/-/macos-release-2.3.0.tgz#eb1930b036c0800adebccd5f17bc4c12de8bb71f" integrity sha512-OHhSbtcviqMPt7yfw5ef5aghS2jzFVKEFyCJndQt2YpSQ9qRVSEv2axSJI1paVThEu+FFGs584h/1YhxjVqajA== +madge@^3.11.0: + version "3.11.0" + resolved "https://registry.yarnpkg.com/madge/-/madge-3.11.0.tgz#293ec7f2a70221f11e326c768a2166c0681a7ad9" + integrity sha512-1CIyV2tL7H3qTFtAARwS3uaJzqBH8a7e3dvABU5ZTIuT1j3aBDYRy5KIhkO8o5mUrYa0+9eBWFaqqvpOQsPssQ== + dependencies: + chalk "^4.1.0" + commander "^5.1.0" + commondir "^1.0.1" + debug "^4.0.1" + dependency-tree "^7.2.1" + detective-amd "^3.0.0" + detective-cjs "^3.1.1" + detective-es6 "^2.1.0" + detective-less "^1.0.2" + detective-postcss "^3.0.1" + detective-sass "^3.0.1" + detective-scss "^2.0.1" + detective-stylus "^1.0.0" + detective-typescript "^5.8.0" + graphviz "0.0.9" + ora "^4.0.4" + pify "^5.0.0" + pluralize "^8.0.0" + precinct "^6.3.1" + pretty-ms "^7.0.0" + rc "^1.2.7" + typescript "^3.9.5" + walkdir "^0.4.1" + make-dir@^1.0.0, make-dir@^1.2.0, make-dir@^1.3.0: version "1.3.0" resolved "https://registry.yarnpkg.com/make-dir/-/make-dir-1.3.0.tgz#79c1033b80515bd6d24ec9933e860ca75ee27f0c" @@ -15355,6 +15592,14 @@ module-alias@^2.1.0: resolved "https://registry.yarnpkg.com/module-alias/-/module-alias-2.1.0.tgz#c36d4fd15f7f9d7112f62fa015385e7b65a286c1" integrity sha1-w21P0V9/nXES9i+gFThee2WihsE= +module-definition@^3.0.0, module-definition@^3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/module-definition/-/module-definition-3.3.0.tgz#aae06d68c99c5f93841e59b8a4469b974956d4d4" + integrity sha512-HTplA9xwDzH67XJFC1YvZMUElWJD28DV0dUq7lhTs+JKJamUOWA/CcYWSlhW5amJO66uWtY7XdltT+LfX0wIVg== + dependencies: + ast-module-types "^2.6.0" + node-source-walk "^4.0.0" + module-deps@^4.0.8: version "4.1.1" resolved "https://registry.yarnpkg.com/module-deps/-/module-deps-4.1.1.tgz#23215833f1da13fd606ccb8087b44852dcb821fd" @@ -15376,6 +15621,18 @@ module-deps@^4.0.8: through2 "^2.0.0" xtend "^4.0.0" +module-lookup-amd@^6.1.0: + version "6.2.0" + resolved "https://registry.yarnpkg.com/module-lookup-amd/-/module-lookup-amd-6.2.0.tgz#70600008b3f26630fde9ef9ae6165ac69de6ecbb" + integrity sha512-uxHCj5Pw9psZiC1znjU2qPsubt6haCSsN9m7xmIdoTciEgfxUkE1vhtDvjHPuOXEZrVJhjKgkmkP+w73rRuelQ== + dependencies: + commander "^2.8.1" + debug "^4.1.0" + file-exists-dazinatorfork "^1.0.2" + find "^0.3.0" + requirejs "^2.3.5" + requirejs-config-file "^3.1.1" + module@^1.2.5: version "1.2.5" resolved "https://registry.yarnpkg.com/module/-/module-1.2.5.tgz#b503eb06cdc13473f56818426974cde7ec59bf15" @@ -15814,6 +16071,13 @@ node-pre-gyp@^0.11.0: semver "^5.3.0" tar "^4" +node-source-walk@^4.0.0, node-source-walk@^4.2.0: + version "4.2.0" + resolved "https://registry.yarnpkg.com/node-source-walk/-/node-source-walk-4.2.0.tgz#c2efe731ea8ba9c03c562aa0a9d984e54f27bc2c" + integrity sha512-hPs/QMe6zS94f5+jG3kk9E7TNm4P2SulrKiLWMzKszBfNZvL/V6wseHlTd7IvfW0NZWqPtK3+9yYNr+3USGteA== + dependencies: + "@babel/parser" "^7.0.0" + nodent-runtime@^3.0.3: version "3.2.1" resolved "https://registry.yarnpkg.com/nodent-runtime/-/nodent-runtime-3.2.1.tgz#9e2755d85e39f764288f0d4752ebcfe3e541e00e" @@ -16276,6 +16540,20 @@ ora@^3.4.0: strip-ansi "^5.2.0" wcwidth "^1.0.1" +ora@^4.0.4: + version "4.1.1" + resolved "https://registry.yarnpkg.com/ora/-/ora-4.1.1.tgz#566cc0348a15c36f5f0e979612842e02ba9dddbc" + integrity sha512-sjYP8QyVWBpBZWD6Vr1M/KwknSw6kJOz41tvGMlwWeClHBtYKTbHMki1PsLZnxKpXMPbTKv9b3pjQu3REib96A== + dependencies: + chalk "^3.0.0" + cli-cursor "^3.1.0" + cli-spinners "^2.2.0" + is-interactive "^1.0.0" + log-symbols "^3.0.0" + mute-stream "0.0.8" + strip-ansi "^6.0.0" + wcwidth "^1.0.1" + ordered-read-streams@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/ordered-read-streams/-/ordered-read-streams-0.3.0.tgz#7137e69b3298bb342247a1bbee3881c80e2fd78b" @@ -16639,6 +16917,11 @@ parse-json@^5.0.0: json-parse-even-better-errors "^2.3.0" lines-and-columns "^1.1.6" +parse-ms@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/parse-ms/-/parse-ms-2.1.0.tgz#348565a753d4391fa524029956b172cb7753097d" + integrity sha512-kHt7kzLoS9VBZfUsiKjv43mr91ea+U05EyKkEtqp7vNbHxmaVuEqN7XxeEVnGrMtYOAxGrDElSi96K7EgO1zCA== + parse-passwd@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/parse-passwd/-/parse-passwd-1.0.0.tgz#6d5b934a456993b23d37f40a382d6f1666a8e5c6" @@ -16914,6 +17197,11 @@ pify@^4.0.1: resolved "https://registry.yarnpkg.com/pify/-/pify-4.0.1.tgz#4b2cd25c50d598735c50292224fd8c6df41e3231" integrity sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g== +pify@^5.0.0: + version "5.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-5.0.0.tgz#1f5eca3f5e87ebec28cc6d54a0e4aaf00acc127f" + integrity sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA== + pinkie-promise@^2.0.0: version "2.0.1" resolved "https://registry.yarnpkg.com/pinkie-promise/-/pinkie-promise-2.0.1.tgz#2135d6dfa7a358c069ac9b178776288228450ffa" @@ -16981,6 +17269,24 @@ posix-character-classes@^0.1.0: resolved "https://registry.yarnpkg.com/posix-character-classes/-/posix-character-classes-0.1.1.tgz#01eac0fe3b5af71a2a6c02feabb8c1fef7e00eab" integrity sha1-AerA/jta9xoqbAL+q7jB/vfgDqs= +postcss-values-parser@^1.5.0: + version "1.5.0" + resolved "https://registry.yarnpkg.com/postcss-values-parser/-/postcss-values-parser-1.5.0.tgz#5d9fa63e2bcb0179ce48f3235303765eb89f3047" + integrity sha512-3M3p+2gMp0AH3da530TlX8kiO1nxdTnc3C6vr8dMxRLIlh8UYkz0/wcwptSXjhtx2Fr0TySI7a+BHDQ8NL7LaQ== + dependencies: + flatten "^1.0.2" + indexes-of "^1.0.1" + uniq "^1.0.1" + +postcss@^7.0.2: + version "7.0.35" + resolved "https://registry.yarnpkg.com/postcss/-/postcss-7.0.35.tgz#d2be00b998f7f211d8a276974079f2e92b970e24" + integrity sha512-3QT8bBJeX/S5zKTTjTCIjRF3If4avAT6kqxcASlTWEtAFCb9NH0OUxNDfgZSWdP5fJnBYCMEWkIFfWeugjzYMg== + dependencies: + chalk "^2.4.2" + source-map "^0.6.1" + supports-color "^6.1.0" + pouchdb-abstract-mapreduce@7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/pouchdb-abstract-mapreduce/-/pouchdb-abstract-mapreduce-7.0.0.tgz#946d79073c9795ca03c9b5c318a64372422e8740" @@ -17252,6 +17558,25 @@ pouchdb@7.1.1: uuid "3.2.1" vuvuzela "1.0.3" +precinct@^6.2.0, precinct@^6.3.1: + version "6.3.1" + resolved "https://registry.yarnpkg.com/precinct/-/precinct-6.3.1.tgz#8ad735a8afdfc48b56ed39c9ad3bf999b6b928dc" + integrity sha512-JAwyLCgTylWminoD7V0VJwMElWmwrVSR6r9HaPWCoswkB4iFzX7aNtO7VBfAVPy+NhmjKb8IF8UmlWJXzUkOIQ== + dependencies: + commander "^2.20.3" + debug "^4.1.1" + detective-amd "^3.0.0" + detective-cjs "^3.1.1" + detective-es6 "^2.1.0" + detective-less "^1.0.2" + detective-postcss "^3.0.1" + detective-sass "^3.0.1" + detective-scss "^2.0.1" + detective-stylus "^1.0.0" + detective-typescript "^5.8.0" + module-definition "^3.3.0" + node-source-walk "^4.2.0" + precond@0.2: version "0.2.3" resolved "https://registry.yarnpkg.com/precond/-/precond-0.2.3.tgz#aa9591bcaa24923f1e0f4849d240f47efc1075ac" @@ -17356,6 +17681,13 @@ pretty-hrtime@^1.0.3: resolved "https://registry.yarnpkg.com/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz#b7e3ea42435a4c9b2759d99e0f201eb195802ee1" integrity sha1-t+PqQkNaTJsnWdmeDyAesZWALuE= +pretty-ms@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/pretty-ms/-/pretty-ms-7.0.1.tgz#7d903eaab281f7d8e03c66f867e239dc32fb73e8" + integrity sha512-973driJZvxiGOQ5ONsFhOF/DtzPMOMtgC11kCpUrPGMTgqp2q/1gwzCquocrN33is0VZ5GFHXZYMM9l6h67v2Q== + dependencies: + parse-ms "^2.1.0" + private@^0.1.6, private@^0.1.8: version "0.1.8" resolved "https://registry.yarnpkg.com/private/-/private-0.1.8.tgz#2381edb3689f7a53d653190060fcf822d2f368ff" @@ -18359,6 +18691,20 @@ require-nocache@^1.0.0: resolved "https://registry.yarnpkg.com/require-nocache/-/require-nocache-1.0.0.tgz#a665d0b60a07e8249875790a4d350219d3c85fa3" integrity sha1-pmXQtgoH6CSYdXkKTTUCGdPIX6M= +requirejs-config-file@^3.1.1: + version "3.1.2" + resolved "https://registry.yarnpkg.com/requirejs-config-file/-/requirejs-config-file-3.1.2.tgz#de8c0b3eebdf243511c994a8a24b006f8b825997" + integrity sha512-sdLWywcDuNz7EIOhenSbRfT4YF84nItDv90coN2htbokjmU2QeyQuSBZILQUKNksepl8UPVU+hgYySFaDxbJPQ== + dependencies: + esprima "^4.0.0" + make-dir "^2.1.0" + stringify-object "^3.2.1" + +requirejs@^2.3.5: + version "2.3.6" + resolved "https://registry.yarnpkg.com/requirejs/-/requirejs-2.3.6.tgz#e5093d9601c2829251258c0b9445d4d19fa9e7c9" + integrity sha512-ipEzlWQe6RK3jkzikgCupiTbTvm4S0/CAU5GlgptkN5SO6F3u0UD0K18wy6ErDqiCyP4J4YYe1HuAShvsxePLg== + reselect-tree@^1.3.4: version "1.3.4" resolved "https://registry.yarnpkg.com/reselect-tree/-/reselect-tree-1.3.4.tgz#449629728e2dc79bf0602571ec8859ac34737089" @@ -18389,6 +18735,11 @@ resolve-cwd@^3.0.0: dependencies: resolve-from "^5.0.0" +resolve-dependency-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/resolve-dependency-path/-/resolve-dependency-path-2.0.0.tgz#11700e340717b865d216c66cabeb4a2a3c696736" + integrity sha512-DIgu+0Dv+6v2XwRaNWnumKu7GPufBBOr5I1gRPJHkvghrfCGOooJODFvgFimX/KRxk9j0whD2MnKHzM1jYvk9w== + resolve-dir@^1.0.0, resolve-dir@^1.0.1: version "1.0.1" resolved "https://registry.yarnpkg.com/resolve-dir/-/resolve-dir-1.0.1.tgz#79a40644c362be82f26effe739c9bb5382046f43" @@ -18436,6 +18787,14 @@ resolve@^1.1.3, resolve@^1.1.4, resolve@^1.1.6, resolve@^1.1.7, resolve@^1.10.0, dependencies: path-parse "^1.0.6" +resolve@^1.11.1: + version "1.18.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.18.1.tgz#018fcb2c5b207d2a6424aee361c5a266da8f4130" + integrity sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA== + dependencies: + is-core-module "^2.0.0" + path-parse "^1.0.6" + resolve@^1.17.0, resolve@^1.3.2, resolve@^1.8.1: version "1.17.0" resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.17.0.tgz#b25941b54968231cc2d1bb76a79cb7f2c0bf8444" @@ -18664,6 +19023,13 @@ sane@^4.0.2, sane@^4.0.3: minimist "^1.1.1" walker "~1.0.5" +sass-lookup@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/sass-lookup/-/sass-lookup-3.0.0.tgz#3b395fa40569738ce857bc258e04df2617c48cac" + integrity sha512-TTsus8CfFRn1N44bvdEai1no6PqdmDiQUiqW5DlpmtT+tYnIt1tXtDIph5KA1efC+LmioJXSnCtUVpcK9gaKIg== + dependencies: + commander "^2.16.0" + sax@^1.1.4, sax@^1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" @@ -19800,7 +20166,7 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -stringify-object@^3.2.2: +stringify-object@^3.2.1, stringify-object@^3.2.2: version "3.3.0" resolved "https://registry.yarnpkg.com/stringify-object/-/stringify-object-3.3.0.tgz#703065aefca19300d3ce88af4f5b3956d7556629" integrity sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw== @@ -19929,6 +20295,14 @@ strong-log-transformer@^2.0.0: minimist "^1.2.0" through "^2.3.4" +stylus-lookup@^3.0.1: + version "3.0.2" + resolved "https://registry.yarnpkg.com/stylus-lookup/-/stylus-lookup-3.0.2.tgz#c9eca3ff799691020f30b382260a67355fefdddd" + integrity sha512-oEQGHSjg/AMaWlKe7gqsnYzan8DLcGIHe0dUaFkucZZ14z4zjENRlQMCHT4FNsiWnJf17YN9OvrCfCoi7VvOyg== + dependencies: + commander "^2.8.1" + debug "^4.1.0" + subarg@^1.0.0: version "1.0.0" resolved "https://registry.yarnpkg.com/subarg/-/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" @@ -20203,6 +20577,11 @@ temp-write@^3.4.0: temp-dir "^1.0.0" uuid "^3.0.1" +temp@~0.4.0: + version "0.4.0" + resolved "https://registry.yarnpkg.com/temp/-/temp-0.4.0.tgz#671ad63d57be0fe9d7294664b3fc400636678a60" + integrity sha1-ZxrWPVe+D+nXKUZks/xABjZnimA= + terminal-link@^2.0.0: version "2.1.1" resolved "https://registry.yarnpkg.com/terminal-link/-/terminal-link-2.1.1.tgz#14a64a27ab3c0df933ea546fba55f2d078edc994" @@ -20542,6 +20921,11 @@ tr46@~0.0.1: resolved "https://registry.yarnpkg.com/tr46/-/tr46-0.0.3.tgz#8184fd347dac9cdc185992f3a6622e14b9d9ab6a" integrity sha1-gYT9NH2snNwYWZLzpmIuFLnZq2o= +traverse-chain@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/traverse-chain/-/traverse-chain-0.1.0.tgz#61dbc2d53b69ff6091a12a168fd7d433107e40f1" + integrity sha1-YdvC1Ttp/2CRoSoWj9fUMxB+QPE= + tree-kill@^1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/tree-kill/-/tree-kill-1.2.1.tgz#5398f374e2f292b9dcc7b2e71e30a5c3bb6c743a" @@ -20914,7 +21298,7 @@ typescript@3.9.6: resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.6.tgz#8f3e0198a34c3ae17091b35571d3afd31999365a" integrity sha512-Pspx3oKAPJtjNwE92YS05HQoY7z2SFyOpHo9MqJor3BXAGNaPUs83CuVp9VISFkSjyRfiTpmKuAYGJB7S7hOxw== -typescript@^3.6.3, typescript@^3.9.7: +typescript@^3.0.3, typescript@^3.6.3, typescript@^3.7.5, typescript@^3.8.3, typescript@^3.9.5, typescript@^3.9.7: version "3.9.7" resolved "https://registry.yarnpkg.com/typescript/-/typescript-3.9.7.tgz#98d600a5ebdc38f40cb277522f12dc800e9e25fa" integrity sha512-BLbiRkiBzAwsjut4x/dsibSTB6yWpwT5qWmC2OfuCg3GgVQCSgMs4vEctYPhsaGtd0AeuuHMkjZ2h2WG8MSzRw== @@ -21045,6 +21429,11 @@ union-value@^1.0.0: is-extendable "^0.1.1" set-value "^2.0.1" +uniq@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/uniq/-/uniq-1.0.1.tgz#b31c5ae8254844a3a8281541ce2b04b865a734ff" + integrity sha1-sxxa6CVIRKOoKBVBzisEuGWnNP8= + unique-filename@^1.1.1: version "1.1.1" resolved "https://registry.yarnpkg.com/unique-filename/-/unique-filename-1.1.1.tgz#1d69769369ada0583103a1e6ae87681b56573230" @@ -21463,6 +21852,11 @@ walk@^2.3.9: dependencies: foreachasync "^3.0.0" +walkdir@^0.4.1: + version "0.4.1" + resolved "https://registry.yarnpkg.com/walkdir/-/walkdir-0.4.1.tgz#dc119f83f4421df52e3061e514228a2db20afa39" + integrity sha512-3eBwRyEln6E1MSzcxcVpQIhRG8Q1jLvEqRmCZqS3dsfXEDR/AhOF4d+jHg1qvDCpYaVRZjENPQyrVxAkQqxPgQ== + walker@^1.0.7, walker@~1.0.5: version "1.0.7" resolved "https://registry.yarnpkg.com/walker/-/walker-1.0.7.tgz#2f7f9b8fd10d677262b18a884e28d19618e028fb" From 039ab9c60653135a4c07e1777ee26f5a9c46f104 Mon Sep 17 00:00:00 2001 From: eggplantzzz Date: Wed, 21 Oct 2020 18:56:17 -0400 Subject: [PATCH 52/63] Fix variable error --- packages/core/lib/testing/TestRunner.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core/lib/testing/TestRunner.js b/packages/core/lib/testing/TestRunner.js index 475c7039dbd..aedb6951da4 100644 --- a/packages/core/lib/testing/TestRunner.js +++ b/packages/core/lib/testing/TestRunner.js @@ -41,7 +41,7 @@ class TestRunner { async initialize() { debug("initializing"); - this.config.resolver = new Resolver(config, true); + this.config.resolver = new Resolver(this.config, true); if (this.first_snapshot) { debug("taking first snapshot"); From 7f73e67e6bf25fd12a3b0f069b179dabe8109ca7 Mon Sep 17 00:00:00 2001 From: eggplantzzz Date: Mon, 19 Oct 2020 11:51:47 -0400 Subject: [PATCH 53/63] Bump web3 to 1.2.9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * @truffle/artifactor: 1.2.1 → 1.2.9 * @truffle/contract: 1.2.1 → 1.2.9 * @truffle/contract-tests: 1.2.1 → 1.2.9 * @truffle/core: 1.2.1 → 1.2.9 * @truffle/db: 1.2.2 → 1.2.9 * @truffle/debugger: 1.2.1 → 1.2.9 * @truffle/decoder: 1.2.1 → 1.2.9 * @truffle/deployer: 1.2.1 → 1.2.9 * @truffle/environment: 1.2.1 → 1.2.9 * @truffle/interface-adapter: 1.2.1 → 1.2.9 * @truffle/migrate: 1.2.1 → 1.2.9 * @truffle/provider: 1.2.1 → 1.2.9 * @truffle/require: 1.2.1 → 1.2.9 * truffle: 1.2.1 → 1.2.9 --- packages/artifactor/package.json | 2 +- packages/contract-tests/package.json | 14 +- packages/contract/package.json | 2 +- packages/core/package.json | 2 +- packages/db/package.json | 92 ++--- packages/debugger/package.json | 2 +- packages/decoder/package.json | 2 +- packages/deployer/package.json | 2 +- packages/environment/package.json | 2 +- packages/interface-adapter/package.json | 2 +- packages/migrate/package.json | 2 +- packages/provider/package.json | 2 +- packages/require/package.json | 2 +- packages/truffle/package.json | 6 +- yarn.lock | 473 ++++++++++++------------ 15 files changed, 310 insertions(+), 297 deletions(-) diff --git a/packages/artifactor/package.json b/packages/artifactor/package.json index 62021ddf8a4..1b2d5a34488 100644 --- a/packages/artifactor/package.json +++ b/packages/artifactor/package.json @@ -35,7 +35,7 @@ "tmp": "^0.2.1", "ts-node": "8.10.2", "typescript": "3.9.6", - "web3": "1.2.1" + "web3": "1.2.9" }, "publishConfig": { "access": "public" diff --git a/packages/contract-tests/package.json b/packages/contract-tests/package.json index 800910a073b..b761c8df90c 100644 --- a/packages/contract-tests/package.json +++ b/packages/contract-tests/package.json @@ -1,24 +1,24 @@ { + "private": true, "name": "@truffle/contract-tests", - "version": "0.1.8", "description": "Test suite for @truffle/contract smart contract abstraction (unpublished)", + "license": "MIT", "author": "g. nicholas d'andrea ", "homepage": "https://github.com/trufflesuite/truffle#readme", - "license": "MIT", - "private": true, "repository": { "type": "git", "url": "git+https://github.com/trufflesuite/truffle.git" }, + "bugs": { + "url": "https://github.com/trufflesuite/truffle/issues" + }, + "version": "0.1.8", "scripts": { "prepare": "exit 0", "test": "./scripts/test.sh", "test:debug": "$(yarn bin)/mocha --inspect-brk", "test:trace": "$(yarn bin)/mocha --trace-warnings" }, - "bugs": { - "url": "https://github.com/trufflesuite/truffle/issues" - }, "devDependencies": { "@truffle/blockchain-utils": "^0.0.25", "@truffle/compile-solidity": "^5.0.4", @@ -29,7 +29,7 @@ "ganache-core": "2.13.0", "mocha": "8.0.1", "sinon": "9.0.2", - "web3": "1.2.1", + "web3": "1.2.9", "web3-core-promievent": "1.2.1" } } diff --git a/packages/contract/package.json b/packages/contract/package.json index 0dc892ab10b..e5076039c3a 100644 --- a/packages/contract/package.json +++ b/packages/contract/package.json @@ -26,7 +26,7 @@ "ethereum-ens": "^0.8.0", "ethers": "^4.0.0-beta.1", "source-map-support": "^0.5.19", - "web3": "1.2.1", + "web3": "1.2.9", "web3-core-helpers": "1.2.1", "web3-core-promievent": "1.2.1", "web3-eth-abi": "1.2.1", diff --git a/packages/core/package.json b/packages/core/package.json index 6585bb50ba0..7cca74ac2e3 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -68,7 +68,7 @@ "spawn-args": "^0.1.0", "tmp": "^0.2.1", "universal-analytics": "^0.4.17", - "web3": "1.2.1", + "web3": "1.2.9", "web3-utils": "1.2.1", "xregexp": "^4.2.4", "yargs": "^8.0.2" diff --git a/packages/db/package.json b/packages/db/package.json index 270feae09b0..ba5fa022e20 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -1,32 +1,29 @@ { "name": "@truffle/db", - "version": "0.1.0-3", "description": "Smart contract data aggregation", - "keywords": [ - "truffle", - "smart-contracts", - "ethereum", - "database" - ], + "license": "MIT", "author": "g. nicholas d'andrea ", "homepage": "https://github.com/trufflesuite/truffle#readme", - "license": "MIT", - "main": "dist/src/index.js", - "directories": { - "dist": "dist" + "repository": { + "type": "git", + "url": "git+https://github.com/trufflesuite/truffle.git" + }, + "bugs": { + "url": "https://github.com/trufflesuite/truffle/issues" }, + "version": "0.1.0-3", + "main": "dist/src/index.js", "files": [ "dist", "types/schema.d.ts" ], - "repository": { - "type": "git", - "url": "git+https://github.com/trufflesuite/truffle.git" + "directories": { + "dist": "dist" }, "scripts": { + "build": "./bin/build", "clean": "rm -rf ./dist ./types/schema.d.ts", "prepare": "yarn build", - "build": "./bin/build", "start": "ts-node-dev -r tsconfig-paths/register ./bin/server", "start:debug": "DEBUG=pouchdb:api ts-node-dev -r tsconfig-paths/register ./bin/server", "start:drizzle": "ts-node-dev -r tsconfig-paths/register ./bin/server ./test/truffle-projects/drizzle-box", @@ -34,8 +31,27 @@ "madge": "madge ./src/db.ts", "test": "jest --verbose --detectOpenHandles" }, - "bugs": { - "url": "https://github.com/trufflesuite/truffle/issues" + "dependencies": { + "@truffle/compile-common": "^0.4.1", + "@truffle/workflow-compile": "^3.0.4", + "apollo-server": "^2.18.2", + "fse": "^4.0.1", + "graphql": "^15.3.0", + "graphql-tag": "^2.11.0", + "graphql-tools": "^6.2.4", + "jsondown": "^1.0.0", + "leveldown": "^5.2.0", + "module-alias": "^2.1.0", + "pascal-case": "^2.0.1", + "pluralize": "^8.0.0", + "pouchdb": "7.1.1", + "pouchdb-adapter-memory": "^7.1.1", + "pouchdb-adapter-node-websql": "^7.0.0", + "pouchdb-debug": "^7.1.1", + "pouchdb-find": "^7.0.0", + "source-map-support": "^0.5.9", + "web3": "1.2.9", + "web3-utils": "1.2.2" }, "devDependencies": { "@gql2ts/from-schema": "^2.0.0-4", @@ -58,28 +74,19 @@ "ttypescript": "^1.5.7", "typescript": "^3.6.3" }, - "dependencies": { - "@truffle/compile-common": "^0.4.1", - "@truffle/workflow-compile": "^3.0.4", - "apollo-server": "^2.18.2", - "fse": "^4.0.1", - "graphql": "^15.3.0", - "graphql-tag": "^2.11.0", - "graphql-tools": "^6.2.4", - "jsondown": "^1.0.0", - "leveldown": "^5.2.0", - "module-alias": "^2.1.0", - "pascal-case": "^2.0.1", - "pluralize": "^8.0.0", - "pouchdb": "7.1.1", - "pouchdb-adapter-memory": "^7.1.1", - "pouchdb-adapter-node-websql": "^7.0.0", - "pouchdb-debug": "^7.1.1", - "pouchdb-find": "^7.0.0", - "source-map-support": "^0.5.9", - "web3": "1.2.2", - "web3-utils": "1.2.2" + "keywords": [ + "database", + "ethereum", + "smart-contracts", + "truffle" + ], + "publishConfig": { + "access": "public" }, + "_moduleAliases": { + "@truffle/db": "db/dist/src" + }, + "gitHead": "4c327e21da2e7abebcc1d78879a8d6f0eb7d802c", "jest": { "moduleFileExtensions": [ "ts", @@ -108,12 +115,5 @@ "/src/**/test/*\\.(spec|test)\\.(ts|js)", "/test/**/test/*\\.(spec|test)\\.(ts|js)" ] - }, - "_moduleAliases": { - "@truffle/db": "db/dist/src" - }, - "publishConfig": { - "access": "public" - }, - "gitHead": "4c327e21da2e7abebcc1d78879a8d6f0eb7d802c" + } } diff --git a/packages/debugger/package.json b/packages/debugger/package.json index 47a7bdc8b36..80012edd62d 100644 --- a/packages/debugger/package.json +++ b/packages/debugger/package.json @@ -39,7 +39,7 @@ "reselect-tree": "^1.3.4", "semver": "^6.3.0", "source-map-support": "^0.5.19", - "web3": "1.2.1", + "web3": "1.2.9", "web3-eth-abi": "1.2.1" }, "devDependencies": { diff --git a/packages/decoder/package.json b/packages/decoder/package.json index 7ecc05f6288..70856d74ec3 100644 --- a/packages/decoder/package.json +++ b/packages/decoder/package.json @@ -28,7 +28,7 @@ "bn.js": "^4.11.8", "debug": "^4.1.0", "source-map-support": "^0.5.19", - "web3": "1.2.1" + "web3": "1.2.9" }, "peerDependencies": { "truffle": "^5.0.14" diff --git a/packages/deployer/package.json b/packages/deployer/package.json index 59590fc485e..8bf78970b79 100644 --- a/packages/deployer/package.json +++ b/packages/deployer/package.json @@ -30,7 +30,7 @@ "ganache-core": "2.13.0", "mocha": "8.1.2", "sinon": "9.0.2", - "web3": "1.2.1" + "web3": "1.2.9" }, "keywords": [ "contracts", diff --git a/packages/environment/package.json b/packages/environment/package.json index 5fb262d536c..e0da5380853 100644 --- a/packages/environment/package.json +++ b/packages/environment/package.json @@ -23,7 +23,7 @@ "ganache-core": "2.13.0", "node-ipc": "^9.1.1", "source-map-support": "^0.5.19", - "web3": "1.2.1" + "web3": "1.2.9" }, "devDependencies": { "debug": "^4.1.0" diff --git a/packages/interface-adapter/package.json b/packages/interface-adapter/package.json index cc949895598..0ecad0dfb64 100644 --- a/packages/interface-adapter/package.json +++ b/packages/interface-adapter/package.json @@ -23,7 +23,7 @@ "bn.js": "^4.11.8", "ethers": "^4.0.32", "source-map-support": "^0.5.19", - "web3": "1.2.1" + "web3": "1.2.9" }, "devDependencies": { "@types/bn.js": "^4.11.4", diff --git a/packages/migrate/package.json b/packages/migrate/package.json index a933949333c..a9afe1cb621 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -23,7 +23,7 @@ "@truffle/require": "^2.0.54", "emittery": "^0.4.0", "glob": "^7.1.6", - "web3": "1.2.1" + "web3": "1.2.9" }, "devDependencies": { "mocha": "8.1.2", diff --git a/packages/provider/package.json b/packages/provider/package.json index 627224efe33..2e170b176e2 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -18,7 +18,7 @@ "dependencies": { "@truffle/error": "^0.0.11", "@truffle/interface-adapter": "^0.4.17", - "web3": "1.2.1" + "web3": "1.2.9" }, "devDependencies": { "ganache-core": "2.13.0", diff --git a/packages/require/package.json b/packages/require/package.json index f634825539d..529b40a76c5 100644 --- a/packages/require/package.json +++ b/packages/require/package.json @@ -19,7 +19,7 @@ "@truffle/expect": "^0.0.15", "@truffle/interface-adapter": "^0.4.17", "original-require": "1.0.1", - "web3": "1.2.1" + "web3": "1.2.9" }, "devDependencies": { "mocha": "8.1.2" diff --git a/packages/truffle/package.json b/packages/truffle/package.json index eaefbd6b393..d31ea940449 100644 --- a/packages/truffle/package.json +++ b/packages/truffle/package.json @@ -51,7 +51,7 @@ "shebang-loader": "0.0.1", "stream-buffers": "^3.0.1", "tmp": "0.2.1", - "web3": "1.2.1", + "web3": "1.2.9", "webpack": "^4.43.0", "webpack-bundle-analyzer": "^3.0.3", "webpack-cli": "^3.3.11", @@ -67,6 +67,6 @@ "url": "https://github.com/tcoulter" } ], - "namespace": "consensys", - "gitHead": "ad57ef2ef13380c7923d5c6682540540755a0435" + "gitHead": "ad57ef2ef13380c7923d5c6682540540755a0435", + "namespace": "consensys" } diff --git a/yarn.lock b/yarn.lock index 4122b9648ba..aa6b389a179 100644 --- a/yarn.lock +++ b/yarn.lock @@ -9039,7 +9039,7 @@ eth-lib@0.2.7: elliptic "^6.4.0" xhr-request-promise "^0.1.2" -eth-lib@0.2.8: +eth-lib@0.2.8, eth-lib@^0.2.8: version "0.2.8" resolved "https://registry.yarnpkg.com/eth-lib/-/eth-lib-0.2.8.tgz#b194058bef4b220ad12ea497431d6cb6aa0623c8" integrity sha512-ArJ7x1WcWOlSpzdoTBX8vkwlkSQ85CjjifSZtV4co64vWxSV8geWfPI9x4SVYu3DSxnX4yWFVTtGL+j9DUFLNw== @@ -9544,6 +9544,11 @@ eventemitter3@4.0.4: resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.4.tgz#b5463ace635a083d018bdc7c917b4c5f10a85384" integrity sha512-rlaVLnVxtxvoyLsQQFBx53YmXHDxRIzzTLbdfxqi4yocpSjAxXwkU0cScM5JgSKMqEhrZpnvQ2D9gjylR0AimQ== +eventemitter3@^4.0.0: + version "4.0.7" + resolved "https://registry.yarnpkg.com/eventemitter3/-/eventemitter3-4.0.7.tgz#2de9b68f6528d5644ef5c59526a1b4a07306169f" + integrity sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw== + events@^3.0.0: version "3.0.0" resolved "https://registry.yarnpkg.com/events/-/events-3.0.0.tgz#9a0a0dfaf62893d92b875b8f2698ca4114973e88" @@ -19138,13 +19143,6 @@ scrypt-js@^3.0.0, scrypt-js@^3.0.1: resolved "https://registry.yarnpkg.com/scrypt-js/-/scrypt-js-3.0.1.tgz#d314a57c2aef69d1ad98a138a21fe9eafa9ee312" integrity sha512-cdwTTnqPu0Hyvf5in5asVdZocVDTNRmR7XEcJuIzMjJeSHybHl7vpB66AzwTaIg6CLSbtjcxc8fqcySfnTkccA== -"scrypt-shim@github:web3-js/scrypt-shim": - version "0.1.0" - resolved "https://codeload.github.com/web3-js/scrypt-shim/tar.gz/be5e616323a8b5e568788bf94d03c1b8410eac54" - dependencies: - scryptsy "^2.1.0" - semver "^6.3.0" - scrypt.js@^0.3.0: version "0.3.0" resolved "https://registry.yarnpkg.com/scrypt.js/-/scrypt.js-0.3.0.tgz#6c62d61728ad533c8c376a2e5e3e86d41a95c4c0" @@ -21908,24 +21906,24 @@ web3-bzz@1.2.11: swarm-js "^0.1.40" underscore "1.9.1" -web3-bzz@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.2.tgz#a3b9f613c49fd3e120e0997088a73557d5adb724" - integrity sha512-b1O2ObsqUN1lJxmFSjvnEC4TsaCbmh7Owj3IAIWTKqL9qhVgx7Qsu5O9cD13pBiSPNZJ68uJPaKq380QB4NWeA== +web3-bzz@1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.4.tgz#a4adb7a8cba3d260de649bdb1f14ed359bfb3821" + integrity sha512-MqhAo/+0iQSMBtt3/QI1rU83uvF08sYq8r25+OUZ+4VtihnYsmkkca+rdU0QbRyrXY2/yGIpI46PFdh0khD53A== dependencies: "@types/node" "^10.12.18" got "9.6.0" swarm-js "0.1.39" underscore "1.9.1" -web3-bzz@1.2.4: - version "1.2.4" - resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.4.tgz#a4adb7a8cba3d260de649bdb1f14ed359bfb3821" - integrity sha512-MqhAo/+0iQSMBtt3/QI1rU83uvF08sYq8r25+OUZ+4VtihnYsmkkca+rdU0QbRyrXY2/yGIpI46PFdh0khD53A== +web3-bzz@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-bzz/-/web3-bzz-1.2.9.tgz#25f8a373bc2dd019f47bf80523546f98b93c8790" + integrity sha512-ogVQr9jHodu9HobARtvUSmWG22cv2EUQzlPeejGWZ7j5h20HX40EDuWyomGY5VclIj5DdLY76Tmq88RTf/6nxA== dependencies: "@types/node" "^10.12.18" got "9.6.0" - swarm-js "0.1.39" + swarm-js "^0.1.40" underscore "1.9.1" web3-core-helpers@1.2.1: @@ -21946,15 +21944,6 @@ web3-core-helpers@1.2.11: web3-eth-iban "1.2.11" web3-utils "1.2.11" -web3-core-helpers@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.2.tgz#484974f4bd4a487217b85b0d7cfe841af0907619" - integrity sha512-HJrRsIGgZa1jGUIhvGz4S5Yh6wtOIo/TMIsSLe+Xay+KVnbseJpPprDI5W3s7H2ODhMQTbogmmUFquZweW2ImQ== - dependencies: - underscore "1.9.1" - web3-eth-iban "1.2.2" - web3-utils "1.2.2" - web3-core-helpers@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.4.tgz#ffd425861f4d66b3f38df032afdb39ea0971fc0f" @@ -21964,6 +21953,15 @@ web3-core-helpers@1.2.4: web3-eth-iban "1.2.4" web3-utils "1.2.4" +web3-core-helpers@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-core-helpers/-/web3-core-helpers-1.2.9.tgz#6381077c3e01c127018cb9e9e3d1422697123315" + integrity sha512-t0WAG3orLCE3lqi77ZoSRNFok3VQWZXTniZigDQjyOJYMAX7BU3F3js8HKbjVnAxlX3tiKoDxI0KBk9F3AxYuw== + dependencies: + underscore "1.9.1" + web3-eth-iban "1.2.9" + web3-utils "1.2.9" + web3-core-method@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.1.tgz#9df1bafa2cd8be9d9937e01c6a47fc768d15d90a" @@ -21987,17 +21985,6 @@ web3-core-method@1.2.11: web3-core-subscriptions "1.2.11" web3-utils "1.2.11" -web3-core-method@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.2.tgz#d4fe2bb1945b7152e5f08e4ea568b171132a1e56" - integrity sha512-szR4fDSBxNHaF1DFqE+j6sFR/afv9Aa36OW93saHZnrh+iXSrYeUUDfugeNcRlugEKeUCkd4CZylfgbK2SKYJA== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.2" - web3-core-promievent "1.2.2" - web3-core-subscriptions "1.2.2" - web3-utils "1.2.2" - web3-core-method@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.4.tgz#a0fbc50b8ff5fd214021435cc2c6d1e115807aed" @@ -22009,6 +21996,18 @@ web3-core-method@1.2.4: web3-core-subscriptions "1.2.4" web3-utils "1.2.4" +web3-core-method@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-core-method/-/web3-core-method-1.2.9.tgz#3fb538751029bea570e4f86731e2fa5e4945e462" + integrity sha512-bjsIoqP3gs7A/gP8+QeLUCyOKJ8bopteCSNbCX36Pxk6TYfYWNuC6hP+2GzUuqdP3xaZNe+XEElQFUNpR3oyAg== + dependencies: + "@ethersproject/transactions" "^5.0.0-beta.135" + underscore "1.9.1" + web3-core-helpers "1.2.9" + web3-core-promievent "1.2.9" + web3-core-subscriptions "1.2.9" + web3-utils "1.2.9" + web3-core-promievent@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.1.tgz#003e8a3eb82fb27b6164a6d5b9cad04acf733838" @@ -22024,14 +22023,6 @@ web3-core-promievent@1.2.11: dependencies: eventemitter3 "4.0.4" -web3-core-promievent@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.2.tgz#3b60e3f2a0c96db8a891c927899d29d39e66ab1c" - integrity sha512-tKvYeT8bkUfKABcQswK6/X79blKTKYGk949urZKcLvLDEaWrM3uuzDwdQT3BNKzQ3vIvTggFPX9BwYh0F1WwqQ== - dependencies: - any-promise "1.3.0" - eventemitter3 "3.1.2" - web3-core-promievent@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.4.tgz#75e5c0f2940028722cdd21ba503ebd65272df6cb" @@ -22040,6 +22031,13 @@ web3-core-promievent@1.2.4: any-promise "1.3.0" eventemitter3 "3.1.2" +web3-core-promievent@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-core-promievent/-/web3-core-promievent-1.2.9.tgz#bb1c56aa6fac2f4b3c598510f06554d25c11c553" + integrity sha512-0eAUA2zjgXTleSrnc1wdoKQPPIHU6KHf4fAscu4W9kKrR+mqP1KsjYrxY9wUyjNnXxfQ+5M29ipvbiaK8OqdOw== + dependencies: + eventemitter3 "3.1.2" + web3-core-requestmanager@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.1.tgz#fa2e2206c3d738db38db7c8fe9c107006f5c6e3d" @@ -22062,17 +22060,6 @@ web3-core-requestmanager@1.2.11: web3-providers-ipc "1.2.11" web3-providers-ws "1.2.11" -web3-core-requestmanager@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.2.tgz#667ba9ac724c9c76fa8965ae8a3c61f66e68d8d6" - integrity sha512-a+gSbiBRHtHvkp78U2bsntMGYGF2eCb6219aMufuZWeAZGXJ63Wc2321PCbA8hF9cQrZI4EoZ4kVLRI4OF15Hw== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.2" - web3-providers-http "1.2.2" - web3-providers-ipc "1.2.2" - web3-providers-ws "1.2.2" - web3-core-requestmanager@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.4.tgz#0a7020a23fb91c6913c611dfd3d8c398d1e4b4a8" @@ -22084,6 +22071,17 @@ web3-core-requestmanager@1.2.4: web3-providers-ipc "1.2.4" web3-providers-ws "1.2.4" +web3-core-requestmanager@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-core-requestmanager/-/web3-core-requestmanager-1.2.9.tgz#dd6d855256c4dd681434fe0867f8cd742fe10503" + integrity sha512-1PwKV2m46ALUnIN5VPPgjOj8yMLJhhqZYvYJE34hTN5SErOkwhzx5zScvo5MN7v7KyQGFnpVCZKKGCiEnDmtFA== + dependencies: + underscore "1.9.1" + web3-core-helpers "1.2.9" + web3-providers-http "1.2.9" + web3-providers-ipc "1.2.9" + web3-providers-ws "1.2.9" + web3-core-subscriptions@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.1.tgz#8c2368a839d4eec1c01a4b5650bbeb82d0e4a099" @@ -22102,15 +22100,6 @@ web3-core-subscriptions@1.2.11: underscore "1.9.1" web3-core-helpers "1.2.11" -web3-core-subscriptions@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.2.tgz#bf4ba23a653a003bdc3551649958cc0b080b068e" - integrity sha512-QbTgigNuT4eicAWWr7ahVpJyM8GbICsR1Ys9mJqzBEwpqS+RXTRVSkwZ2IsxO+iqv6liMNwGregbJLq4urMFcQ== - dependencies: - eventemitter3 "3.1.2" - underscore "1.9.1" - web3-core-helpers "1.2.2" - web3-core-subscriptions@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.4.tgz#0dc095b5cfd82baa527a39796e3515a846b21b99" @@ -22120,6 +22109,15 @@ web3-core-subscriptions@1.2.4: underscore "1.9.1" web3-core-helpers "1.2.4" +web3-core-subscriptions@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-core-subscriptions/-/web3-core-subscriptions-1.2.9.tgz#335fd7d15dfce5d78b4b7bef05ce4b3d7237b0e4" + integrity sha512-Y48TvXPSPxEM33OmXjGVDMzTd0j8X0t2+sDw66haeBS8eYnrEzasWuBZZXDq0zNUsqyxItgBGDn+cszkgEnFqg== + dependencies: + eventemitter3 "3.1.2" + underscore "1.9.1" + web3-core-helpers "1.2.9" + web3-core@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.1.tgz#7278b58fb6495065e73a77efbbce781a7fddf1a9" @@ -22143,18 +22141,6 @@ web3-core@1.2.11: web3-core-requestmanager "1.2.11" web3-utils "1.2.11" -web3-core@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.2.tgz#334b99c8222ef9cfd0339e27352f0b58ea789a2f" - integrity sha512-miHAX3qUgxV+KYfaOY93Hlc3kLW2j5fH8FJy6kSxAv+d4d5aH0wwrU2IIoJylQdT+FeenQ38sgsCnFu9iZ1hCQ== - dependencies: - "@types/bn.js" "^4.11.4" - "@types/node" "^12.6.1" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-core-requestmanager "1.2.2" - web3-utils "1.2.2" - web3-core@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.4.tgz#2df13b978dcfc59c2abaa887d27f88f21ad9a9d6" @@ -22168,6 +22154,19 @@ web3-core@1.2.4: web3-core-requestmanager "1.2.4" web3-utils "1.2.4" +web3-core@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-core/-/web3-core-1.2.9.tgz#2cba57aa259b6409db532d21bdf57db8d504fd3e" + integrity sha512-fSYv21IP658Ty2wAuU9iqmW7V+75DOYMVZsDH/c14jcF/1VXnedOcxzxSj3vArsCvXZNe6XC5/wAuGZyQwR9RA== + dependencies: + "@types/bn.js" "^4.11.4" + "@types/node" "^12.6.1" + bignumber.js "^9.0.0" + web3-core-helpers "1.2.9" + web3-core-method "1.2.9" + web3-core-requestmanager "1.2.9" + web3-utils "1.2.9" + web3-eth-abi@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.1.tgz#9b915b1c9ebf82f70cca631147035d5419064689" @@ -22186,15 +22185,6 @@ web3-eth-abi@1.2.11: underscore "1.9.1" web3-utils "1.2.11" -web3-eth-abi@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.2.tgz#d5616d88a90020f894763423a9769f2da11fe37a" - integrity sha512-Yn/ZMgoOLxhTVxIYtPJ0eS6pnAnkTAaJgUJh1JhZS4ekzgswMfEYXOwpMaD5eiqPJLpuxmZFnXnBZlnQ1JMXsw== - dependencies: - ethers "4.0.0-beta.3" - underscore "1.9.1" - web3-utils "1.2.2" - web3-eth-abi@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.4.tgz#5b73e5ef70b03999227066d5d1310b168845e2b8" @@ -22204,6 +22194,15 @@ web3-eth-abi@1.2.4: underscore "1.9.1" web3-utils "1.2.4" +web3-eth-abi@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth-abi/-/web3-eth-abi-1.2.9.tgz#14bedd7e4be04fcca35b2ac84af1400574cd8280" + integrity sha512-3YwUYbh/DMfDbhMWEebAdjSd5bj3ZQieOjLzWFHU23CaLEqT34sUix1lba+hgUH/EN6A7bKAuKOhR3p0OvTn7Q== + dependencies: + "@ethersproject/abi" "5.0.0-beta.153" + underscore "1.9.1" + web3-utils "1.2.9" + web3-eth-accounts@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.1.tgz#2741a8ef337a7219d57959ac8bd118b9d68d63cf" @@ -22238,24 +22237,6 @@ web3-eth-accounts@1.2.11: web3-core-method "1.2.11" web3-utils "1.2.11" -web3-eth-accounts@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.2.tgz#c187e14bff6baa698ac352220290222dbfd332e5" - integrity sha512-KzHOEyXOEZ13ZOkWN3skZKqSo5f4Z1ogPFNn9uZbKCz+kSp+gCAEKxyfbOsB/JMAp5h7o7pb6eYsPCUBJmFFiA== - dependencies: - any-promise "1.3.0" - crypto-browserify "3.12.0" - eth-lib "0.2.7" - ethereumjs-common "^1.3.2" - ethereumjs-tx "^2.1.1" - scrypt-shim "github:web3-js/scrypt-shim" - underscore "1.9.1" - uuid "3.3.2" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-utils "1.2.2" - web3-eth-accounts@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.4.tgz#ada6edc49542354328a85cafab067acd7f88c288" @@ -22274,6 +22255,23 @@ web3-eth-accounts@1.2.4: web3-core-method "1.2.4" web3-utils "1.2.4" +web3-eth-accounts@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth-accounts/-/web3-eth-accounts-1.2.9.tgz#7ec422df90fecb5243603ea49dc28726db7bdab6" + integrity sha512-jkbDCZoA1qv53mFcRHCinoCsgg8WH+M0YUO1awxmqWXRmCRws1wW0TsuSQ14UThih5Dxolgl+e+aGWxG58LMwg== + dependencies: + crypto-browserify "3.12.0" + eth-lib "^0.2.8" + ethereumjs-common "^1.3.2" + ethereumjs-tx "^2.1.1" + scrypt-js "^3.0.1" + underscore "1.9.1" + uuid "3.3.2" + web3-core "1.2.9" + web3-core-helpers "1.2.9" + web3-core-method "1.2.9" + web3-utils "1.2.9" + web3-eth-contract@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.1.tgz#3542424f3d341386fd9ff65e78060b85ac0ea8c4" @@ -22303,21 +22301,6 @@ web3-eth-contract@1.2.11: web3-eth-abi "1.2.11" web3-utils "1.2.11" -web3-eth-contract@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.2.tgz#84e92714918a29e1028ee7718f0712536e14e9a1" - integrity sha512-EKT2yVFws3FEdotDQoNsXTYL798+ogJqR2//CaGwx3p0/RvQIgfzEwp8nbgA6dMxCsn9KOQi7OtklzpnJMkjtA== - dependencies: - "@types/bn.js" "^4.11.4" - underscore "1.9.1" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-core-promievent "1.2.2" - web3-core-subscriptions "1.2.2" - web3-eth-abi "1.2.2" - web3-utils "1.2.2" - web3-eth-contract@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.4.tgz#68ef7cc633232779b0a2c506a810fbe903575886" @@ -22333,6 +22316,21 @@ web3-eth-contract@1.2.4: web3-eth-abi "1.2.4" web3-utils "1.2.4" +web3-eth-contract@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth-contract/-/web3-eth-contract-1.2.9.tgz#713d9c6d502d8c8f22b696b7ffd8e254444e6bfd" + integrity sha512-PYMvJf7EG/HyssUZa+pXrc8IB06K/YFfWYyW4R7ed3sab+9wWUys1TlWxBCBuiBXOokSAyM6H6P6/cKEx8FT8Q== + dependencies: + "@types/bn.js" "^4.11.4" + underscore "1.9.1" + web3-core "1.2.9" + web3-core-helpers "1.2.9" + web3-core-method "1.2.9" + web3-core-promievent "1.2.9" + web3-core-subscriptions "1.2.9" + web3-eth-abi "1.2.9" + web3-utils "1.2.9" + web3-eth-ens@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.1.tgz#a0e52eee68c42a8b9865ceb04e5fb022c2d971d5" @@ -22362,20 +22360,6 @@ web3-eth-ens@1.2.11: web3-eth-contract "1.2.11" web3-utils "1.2.11" -web3-eth-ens@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.2.tgz#0a4abed1d4cbdacbf5e1ab06e502d806d1192bc6" - integrity sha512-CFjkr2HnuyMoMFBoNUWojyguD4Ef+NkyovcnUc/iAb9GP4LHohKrODG4pl76R5u61TkJGobC2ij6TyibtsyVYg== - dependencies: - eth-ens-namehash "2.0.8" - underscore "1.9.1" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-promievent "1.2.2" - web3-eth-abi "1.2.2" - web3-eth-contract "1.2.2" - web3-utils "1.2.2" - web3-eth-ens@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.4.tgz#b95b3aa99fb1e35c802b9e02a44c3046a3fa065e" @@ -22390,6 +22374,21 @@ web3-eth-ens@1.2.4: web3-eth-contract "1.2.4" web3-utils "1.2.4" +web3-eth-ens@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth-ens/-/web3-eth-ens-1.2.9.tgz#577b9358c036337833fb2bdc59c11be7f6f731b6" + integrity sha512-kG4+ZRgZ8I1WYyOBGI8QVRHfUSbbJjvJAGA1AF/NOW7JXQ+x7gBGeJw6taDWJhSshMoEKWcsgvsiuoG4870YxQ== + dependencies: + content-hash "^2.5.2" + eth-ens-namehash "2.0.8" + underscore "1.9.1" + web3-core "1.2.9" + web3-core-helpers "1.2.9" + web3-core-promievent "1.2.9" + web3-eth-abi "1.2.9" + web3-eth-contract "1.2.9" + web3-utils "1.2.9" + web3-eth-iban@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.1.tgz#2c3801718946bea24e9296993a975c80b5acf880" @@ -22406,14 +22405,6 @@ web3-eth-iban@1.2.11: bn.js "^4.11.9" web3-utils "1.2.11" -web3-eth-iban@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.2.tgz#76bec73bad214df7c4192388979a59fc98b96c5a" - integrity sha512-gxKXBoUhaTFHr0vJB/5sd4i8ejF/7gIsbM/VvemHT3tF5smnmY6hcwSMmn7sl5Gs+83XVb/BngnnGkf+I/rsrQ== - dependencies: - bn.js "4.11.8" - web3-utils "1.2.2" - web3-eth-iban@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.4.tgz#8e0550fd3fd8e47a39357d87fe27dee9483ee476" @@ -22422,6 +22413,14 @@ web3-eth-iban@1.2.4: bn.js "4.11.8" web3-utils "1.2.4" +web3-eth-iban@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth-iban/-/web3-eth-iban-1.2.9.tgz#4ebf3d8783f34d04c4740dc18938556466399f7a" + integrity sha512-RtdVvJE0pyg9dHLy0GzDiqgnLnssSzfz/JYguhC1wsj9+Gnq1M6Diy3NixACWUAp6ty/zafyOaZnNQ+JuH9TjQ== + dependencies: + bn.js "4.11.8" + web3-utils "1.2.9" + web3-eth-personal@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.1.tgz#244e9911b7b482dc17c02f23a061a627c6e47faf" @@ -22445,18 +22444,6 @@ web3-eth-personal@1.2.11: web3-net "1.2.11" web3-utils "1.2.11" -web3-eth-personal@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.2.tgz#eee1c86a8132fa16b5e34c6d421ca92e684f0be6" - integrity sha512-4w+GLvTlFqW3+q4xDUXvCEMU7kRZ+xm/iJC8gm1Li1nXxwwFbs+Y+KBK6ZYtoN1qqAnHR+plYpIoVo27ixI5Rg== - dependencies: - "@types/node" "^12.6.1" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-net "1.2.2" - web3-utils "1.2.2" - web3-eth-personal@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.4.tgz#3224cca6851c96347d9799b12c1b67b2a6eb232b" @@ -22469,6 +22456,18 @@ web3-eth-personal@1.2.4: web3-net "1.2.4" web3-utils "1.2.4" +web3-eth-personal@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth-personal/-/web3-eth-personal-1.2.9.tgz#9b95eb159b950b83cd8ae15873e1d57711b7a368" + integrity sha512-cFiNrktxZ1C/rIdJFzQTvFn3/0zcsR3a+Jf8Y3KxeQDHszQtosjLWptP7bsUmDwEh4hzh0Cy3KpOxlYBWB8bJQ== + dependencies: + "@types/node" "^12.6.1" + web3-core "1.2.9" + web3-core-helpers "1.2.9" + web3-core-method "1.2.9" + web3-net "1.2.9" + web3-utils "1.2.9" + web3-eth@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.1.tgz#b9989e2557c73a9e8ffdc107c6dafbe72c79c1b0" @@ -22507,25 +22506,6 @@ web3-eth@1.2.11: web3-net "1.2.11" web3-utils "1.2.11" -web3-eth@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.2.tgz#65a1564634a23b990efd1655bf94ad513904286c" - integrity sha512-UXpC74mBQvZzd4b+baD4Ocp7g+BlwxhBHumy9seyE/LMIcMlePXwCKzxve9yReNpjaU16Mmyya6ZYlyiKKV8UA== - dependencies: - underscore "1.9.1" - web3-core "1.2.2" - web3-core-helpers "1.2.2" - web3-core-method "1.2.2" - web3-core-subscriptions "1.2.2" - web3-eth-abi "1.2.2" - web3-eth-accounts "1.2.2" - web3-eth-contract "1.2.2" - web3-eth-ens "1.2.2" - web3-eth-iban "1.2.2" - web3-eth-personal "1.2.2" - web3-net "1.2.2" - web3-utils "1.2.2" - web3-eth@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.4.tgz#24c3b1f1ac79351bbfb808b2ab5c585fa57cdd00" @@ -22545,6 +22525,25 @@ web3-eth@1.2.4: web3-net "1.2.4" web3-utils "1.2.4" +web3-eth@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-eth/-/web3-eth-1.2.9.tgz#e40e7b88baffc9b487193211c8b424dc944977b3" + integrity sha512-sIKO4iE9FEBa/CYUd6GdPd7GXt/wISqxUd8PlIld6+hvMJj02lgO7Z7p5T9mZIJcIZJGvZX81ogx8oJ9yif+Ag== + dependencies: + underscore "1.9.1" + web3-core "1.2.9" + web3-core-helpers "1.2.9" + web3-core-method "1.2.9" + web3-core-subscriptions "1.2.9" + web3-eth-abi "1.2.9" + web3-eth-accounts "1.2.9" + web3-eth-contract "1.2.9" + web3-eth-ens "1.2.9" + web3-eth-iban "1.2.9" + web3-eth-personal "1.2.9" + web3-net "1.2.9" + web3-utils "1.2.9" + web3-net@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.1.tgz#edd249503315dd5ab4fa00220f6509d95bb7ab10" @@ -22563,15 +22562,6 @@ web3-net@1.2.11: web3-core-method "1.2.11" web3-utils "1.2.11" -web3-net@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.2.tgz#5c3226ca72df7c591422440ce6f1203fd42ddad9" - integrity sha512-K07j2DXq0x4UOJgae65rWZKraOznhk8v5EGSTdFqASTx7vWE/m+NqBijBYGEsQY1lSMlVaAY9UEQlcXK5HzXTw== - dependencies: - web3-core "1.2.2" - web3-core-method "1.2.2" - web3-utils "1.2.2" - web3-net@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.4.tgz#1d246406d3aaffbf39c030e4e98bce0ca5f25458" @@ -22581,6 +22571,15 @@ web3-net@1.2.4: web3-core-method "1.2.4" web3-utils "1.2.4" +web3-net@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-net/-/web3-net-1.2.9.tgz#51d248ed1bc5c37713c4ac40c0073d9beacd87d3" + integrity sha512-d2mTn8jPlg+SI2hTj2b32Qan6DmtU9ap/IUlJTeQbZQSkTLf0u9suW8Vjwyr4poJYXTurdSshE7OZsPNn30/ZA== + dependencies: + web3-core "1.2.9" + web3-core-method "1.2.9" + web3-utils "1.2.9" + web3-provider-engine@14.2.1: version "14.2.1" resolved "https://registry.yarnpkg.com/web3-provider-engine/-/web3-provider-engine-14.2.1.tgz#ef351578797bf170e08d529cb5b02f8751329b95" @@ -22623,14 +22622,6 @@ web3-providers-http@1.2.11: web3-core-helpers "1.2.11" xhr2-cookies "1.1.0" -web3-providers-http@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.2.tgz#155e55c1d69f4c5cc0b411ede40dea3d06720956" - integrity sha512-BNZ7Hguy3eBszsarH5gqr9SIZNvqk9eKwqwmGH1LQS1FL3NdoOn7tgPPdddrXec4fL94CwgNk4rCU+OjjZRNDg== - dependencies: - web3-core-helpers "1.2.2" - xhr2-cookies "1.1.0" - web3-providers-http@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.4.tgz#514fcad71ae77832c2c15574296282fbbc5f4a67" @@ -22639,6 +22630,14 @@ web3-providers-http@1.2.4: web3-core-helpers "1.2.4" xhr2-cookies "1.1.0" +web3-providers-http@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-providers-http/-/web3-providers-http-1.2.9.tgz#e698aa5377e2019c24c5a1e6efa0f51018728934" + integrity sha512-F956tCIj60Ttr0UvEHWFIhx+be3He8msoPzyA44/kfzzYoMAsCFRn5cf0zQG6al0znE75g6HlWVSN6s3yAh51A== + dependencies: + web3-core-helpers "1.2.9" + xhr2-cookies "1.1.0" + web3-providers-ipc@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.1.tgz#017bfc687a8fc5398df2241eb98f135e3edd672c" @@ -22657,15 +22656,6 @@ web3-providers-ipc@1.2.11: underscore "1.9.1" web3-core-helpers "1.2.11" -web3-providers-ipc@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.2.tgz#c6d165a12bc68674b4cdd543ea18aec79cafc2e8" - integrity sha512-t97w3zi5Kn/LEWGA6D9qxoO0LBOG+lK2FjlEdCwDQatffB/+vYrzZ/CLYVQSoyFZAlsDoBasVoYSWZK1n39aHA== - dependencies: - oboe "2.1.4" - underscore "1.9.1" - web3-core-helpers "1.2.2" - web3-providers-ipc@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.4.tgz#9d6659f8d44943fb369b739f48df09092be459bd" @@ -22675,6 +22665,15 @@ web3-providers-ipc@1.2.4: underscore "1.9.1" web3-core-helpers "1.2.4" +web3-providers-ipc@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-providers-ipc/-/web3-providers-ipc-1.2.9.tgz#6159eacfcd7ac31edc470d93ef10814fe874763b" + integrity sha512-NQ8QnBleoHA2qTJlqoWu7EJAD/FR5uimf7Ielzk4Z2z+m+6UAuJdJMSuQNj+Umhz9L/Ys6vpS1vHx9NizFl+aQ== + dependencies: + oboe "2.1.4" + underscore "1.9.1" + web3-core-helpers "1.2.9" + web3-providers-ws@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.1.tgz#2d941eaf3d5a8caa3214eff8dc16d96252b842cb" @@ -22694,15 +22693,6 @@ web3-providers-ws@1.2.11: web3-core-helpers "1.2.11" websocket "^1.0.31" -web3-providers-ws@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.2.tgz#d2c05c68598cea5ad3fa6ef076c3bcb3ca300d29" - integrity sha512-Wb1mrWTGMTXOpJkL0yGvL/WYLt8fUIXx8k/l52QB2IiKzvyd42dTWn4+j8IKXGSYYzOm7NMqv6nhA5VDk12VfA== - dependencies: - underscore "1.9.1" - web3-core-helpers "1.2.2" - websocket "github:web3-js/WebSocket-Node#polyfill/globalThis" - web3-providers-ws@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.4.tgz#099ee271ee03f6ea4f5df9cfe969e83f4ce0e36f" @@ -22712,6 +22702,16 @@ web3-providers-ws@1.2.4: underscore "1.9.1" web3-core-helpers "1.2.4" +web3-providers-ws@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-providers-ws/-/web3-providers-ws-1.2.9.tgz#22c2006655ec44b4ad2b41acae62741a6ae7a88c" + integrity sha512-6+UpvINeI//dglZoAKStUXqxDOXJy6Iitv2z3dbgInG4zb8tkYl/VBDL80UjUg3ZvzWG0g7EKY2nRPEpON2TFA== + dependencies: + eventemitter3 "^4.0.0" + underscore "1.9.1" + web3-core-helpers "1.2.9" + websocket "^1.0.31" + web3-shh@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.1.tgz#4460e3c1e07faf73ddec24ccd00da46f89152b0c" @@ -22732,16 +22732,6 @@ web3-shh@1.2.11: web3-core-subscriptions "1.2.11" web3-net "1.2.11" -web3-shh@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.2.tgz#44ed998f2a6ba0ec5cb9d455184a0f647826a49c" - integrity sha512-og258NPhlBn8yYrDWjoWBBb6zo1OlBgoWGT+LL5/LPqRbjPe09hlOYHgscAAr9zZGtohTOty7RrxYw6Z6oDWCg== - dependencies: - web3-core "1.2.2" - web3-core-method "1.2.2" - web3-core-subscriptions "1.2.2" - web3-net "1.2.2" - web3-shh@1.2.4: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.4.tgz#5c8ff5ab624a3b14f08af0d24d2b16c10e9f70dd" @@ -22752,6 +22742,16 @@ web3-shh@1.2.4: web3-core-subscriptions "1.2.4" web3-net "1.2.4" +web3-shh@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-shh/-/web3-shh-1.2.9.tgz#c4ba70d6142cfd61341a50752d8cace9a0370911" + integrity sha512-PWa8b/EaxaMinFaxy6cV0i0EOi2M7a/ST+9k9nhyhCjVa2vzXuNoBNo2IUOmeZ0WP2UQB8ByJ2+p4htlJaDOjA== + dependencies: + web3-core "1.2.9" + web3-core-method "1.2.9" + web3-core-subscriptions "1.2.9" + web3-net "1.2.9" + web3-utils@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.1.tgz#21466e38291551de0ab34558de21512ac4274534" @@ -22807,6 +22807,20 @@ web3-utils@1.2.4, web3-utils@^1.0.0-beta.31: underscore "1.9.1" utf8 "3.0.0" +web3-utils@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.9.tgz#abe11735221627da943971ef1a630868fb9c61f3" + integrity sha512-9hcpuis3n/LxFzEVjwnVgvJzTirS2S9/MiNAa7l4WOEoywY+BSNwnRX4MuHnjkh9NY25B6QOjuNG6FNnSjTw1w== + dependencies: + bn.js "4.11.8" + eth-lib "0.2.7" + ethereum-bloom-filters "^1.0.6" + ethjs-unit "0.1.6" + number-to-bn "1.7.0" + randombytes "^2.1.0" + underscore "1.9.1" + utf8 "3.0.0" + web3@1.2.1: version "1.2.1" resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.1.tgz#5d8158bcca47838ab8c2b784a2dee4c3ceb4179b" @@ -22833,19 +22847,18 @@ web3@1.2.11: web3-shh "1.2.11" web3-utils "1.2.11" -web3@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.2.tgz#b1b8b69aafdf94cbaeadbb68a8aa1df2ef266aec" - integrity sha512-/ChbmB6qZpfGx6eNpczt5YSUBHEA5V2+iUCbn85EVb3Zv6FVxrOo5Tv7Lw0gE2tW7EEjASbCyp3mZeiZaCCngg== - dependencies: - "@types/node" "^12.6.1" - web3-bzz "1.2.2" - web3-core "1.2.2" - web3-eth "1.2.2" - web3-eth-personal "1.2.2" - web3-net "1.2.2" - web3-shh "1.2.2" - web3-utils "1.2.2" +web3@1.2.9: + version "1.2.9" + resolved "https://registry.yarnpkg.com/web3/-/web3-1.2.9.tgz#cbcf1c0fba5e213a6dfb1f2c1f4b37062e4ce337" + integrity sha512-Mo5aBRm0JrcNpN/g4VOrDzudymfOnHRC3s2VarhYxRA8aWgF5rnhQ0ziySaugpic1gksbXPe105pUWyRqw8HUA== + dependencies: + web3-bzz "1.2.9" + web3-core "1.2.9" + web3-eth "1.2.9" + web3-eth-personal "1.2.9" + web3-net "1.2.9" + web3-shh "1.2.9" + web3-utils "1.2.9" web3@^1.0.0-beta.34: version "1.2.4" From df69cc0311a3ea37404bfeec9bf8526a19e30290 Mon Sep 17 00:00:00 2001 From: eggplantzzz Date: Mon, 19 Oct 2020 12:07:38 -0400 Subject: [PATCH 54/63] Fix type import --- packages/interface-adapter/lib/adapter/types.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/interface-adapter/lib/adapter/types.ts b/packages/interface-adapter/lib/adapter/types.ts index d7df2108c52..21e98ce9c33 100644 --- a/packages/interface-adapter/lib/adapter/types.ts +++ b/packages/interface-adapter/lib/adapter/types.ts @@ -3,14 +3,14 @@ import { BlockType as EvmBlockType, Tx as EvmTransaction } from "web3/eth/types"; -import { TransactionReceipt as EvmTransactionReceipt } from "web3/types"; +import { TransactionReceipt as EvmTransactionReceipt } from "web3-eth/types"; export { Block as EvmBlock, BlockType as EvmBlockType, Tx as EvmTransaction } from "web3/eth/types"; -export { TransactionReceipt as EvmTransactionReceipt } from "web3/types"; +export { TransactionReceipt as EvmTransactionReceipt } from "web3-eth/types"; export { Provider } from "web3/providers"; export type NetworkId = Number | String; export type Block = EvmBlock | any; From b35a4761130c9937833cef7fd00583594fea6a17 Mon Sep 17 00:00:00 2001 From: eggplantzzz Date: Mon, 19 Oct 2020 12:21:57 -0400 Subject: [PATCH 55/63] Update some tests --- packages/contract-tests/test/errors.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/contract-tests/test/errors.js b/packages/contract-tests/test/errors.js index fd4df7bcc89..d0150b06a73 100644 --- a/packages/contract-tests/test/errors.js +++ b/packages/contract-tests/test/errors.js @@ -310,7 +310,7 @@ describe("Client appends errors (vmErrorsOnRPCResponse)", function () { assert.fail(); } catch (e) { assert( - e.stack.includes("Error: invalid number value ("), + e.stack.includes("Error: invalid BigNumber string"), "Should keep hijacked error description" ); assert( @@ -318,11 +318,11 @@ describe("Client appends errors (vmErrorsOnRPCResponse)", function () { "Should include original stack details" ); assert( - e.hijackedStack.includes("Error: invalid number value ("), + e.hijackedStack.includes("Error: invalid BigNumber string"), "Should preserve hijacked error message" ); assert( - e.hijackedStack.includes("/utils/abi-coder.js:"), + e.hijackedStack.includes("/lib/abi-coder.js:"), "Should preserve hijacked stack details" ); } From a551fbf42c00b8007a6ad12b2c2e37244e65aed0 Mon Sep 17 00:00:00 2001 From: eggplantzzz Date: Mon, 19 Oct 2020 11:55:24 -0400 Subject: [PATCH 56/63] Bump web3-utils to 1.2.9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * @truffle/codec: 1.2.1 → 1.2.9 * @truffle/contract: 1.2.1 → 1.2.9 * @truffle/core: 1.2.1 → 1.2.9 * @truffle/db: 1.2.2 → 1.2.9 * @truffle/deployer: 1.2.2 → 1.2.9 * @truffle/external-compile: 1.2.1 → 1.2.9 * @truffle/reporters: 1.2.1 → 1.2.9 --- packages/codec/package.json | 2 +- packages/contract/package.json | 2 +- packages/core/package.json | 2 +- packages/db/package.json | 2 +- packages/deployer/package.json | 2 +- packages/external-compile/package.json | 2 +- packages/reporters/package.json | 2 +- yarn.lock | 14 -------------- 8 files changed, 7 insertions(+), 21 deletions(-) diff --git a/packages/codec/package.json b/packages/codec/package.json index e5462f81927..40d0f41a9c6 100644 --- a/packages/codec/package.json +++ b/packages/codec/package.json @@ -32,7 +32,7 @@ "semver": "^6.3.0", "source-map-support": "^0.5.19", "utf8": "^3.0.0", - "web3-utils": "1.2.1" + "web3-utils": "1.2.9" }, "devDependencies": { "@gnd/typedoc": "0.15.0-0", diff --git a/packages/contract/package.json b/packages/contract/package.json index e5076039c3a..21147092326 100644 --- a/packages/contract/package.json +++ b/packages/contract/package.json @@ -30,7 +30,7 @@ "web3-core-helpers": "1.2.1", "web3-core-promievent": "1.2.1", "web3-eth-abi": "1.2.1", - "web3-utils": "1.2.1" + "web3-utils": "1.2.9" }, "devDependencies": { "browserify": "^14.0.0", diff --git a/packages/core/package.json b/packages/core/package.json index 7cca74ac2e3..000326d2b41 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -69,7 +69,7 @@ "tmp": "^0.2.1", "universal-analytics": "^0.4.17", "web3": "1.2.9", - "web3-utils": "1.2.1", + "web3-utils": "1.2.9", "xregexp": "^4.2.4", "yargs": "^8.0.2" }, diff --git a/packages/db/package.json b/packages/db/package.json index ba5fa022e20..d19336dd46a 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -51,7 +51,7 @@ "pouchdb-find": "^7.0.0", "source-map-support": "^0.5.9", "web3": "1.2.9", - "web3-utils": "1.2.2" + "web3-utils": "1.2.9" }, "devDependencies": { "@gql2ts/from-schema": "^2.0.0-4", diff --git a/packages/deployer/package.json b/packages/deployer/package.json index 8bf78970b79..0b8989ff817 100644 --- a/packages/deployer/package.json +++ b/packages/deployer/package.json @@ -22,7 +22,7 @@ "emittery": "^0.4.0", "eth-ens-namehash": "^2.0.8", "ethereum-ens": "^0.8.0", - "web3-utils": "1.2.2" + "web3-utils": "1.2.9" }, "devDependencies": { "@truffle/reporters": "^1.1.1", diff --git a/packages/external-compile/package.json b/packages/external-compile/package.json index ac8990d95e4..eaa97ac0b3b 100644 --- a/packages/external-compile/package.json +++ b/packages/external-compile/package.json @@ -19,7 +19,7 @@ "@truffle/expect": "^0.0.15", "debug": "^4.1.0", "glob": "^7.1.2", - "web3-utils": "1.2.1" + "web3-utils": "1.2.9" }, "devDependencies": { "chai": "4.2.0", diff --git a/packages/reporters/package.json b/packages/reporters/package.json index 39425d958a2..30320d12e1e 100644 --- a/packages/reporters/package.json +++ b/packages/reporters/package.json @@ -12,7 +12,7 @@ "dependencies": { "node-emoji": "^1.8.1", "ora": "^3.4.0", - "web3-utils": "1.2.1" + "web3-utils": "1.2.9" }, "publishConfig": { "access": "public" diff --git a/yarn.lock b/yarn.lock index aa6b389a179..d14eab79feb 100644 --- a/yarn.lock +++ b/yarn.lock @@ -22779,20 +22779,6 @@ web3-utils@1.2.11: underscore "1.9.1" utf8 "3.0.0" -web3-utils@1.2.2: - version "1.2.2" - resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.2.tgz#b53a08c40d2c3f31d3c4a28e7d749405df99c8c0" - integrity sha512-joF+s3243TY5cL7Z7y4h1JsJpUCf/kmFmj+eJar7Y2yNIGVcW961VyrAms75tjUysSuHaUQ3eQXjBEUJueT52A== - dependencies: - bn.js "4.11.8" - eth-lib "0.2.7" - ethereum-bloom-filters "^1.0.6" - ethjs-unit "0.1.6" - number-to-bn "1.7.0" - randombytes "^2.1.0" - underscore "1.9.1" - utf8 "3.0.0" - web3-utils@1.2.4, web3-utils@^1.0.0-beta.31: version "1.2.4" resolved "https://registry.yarnpkg.com/web3-utils/-/web3-utils-1.2.4.tgz#96832a39a66b05bf8862a5b0bdad2799d709d951" From 89266ed6e00ce16516a0446f9b3f6e803bc22d3e Mon Sep 17 00:00:00 2001 From: eggplantzzz Date: Mon, 19 Oct 2020 11:57:22 -0400 Subject: [PATCH 57/63] Bump web3-core-helpers to 1.2.9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * @truffle/contract: 1.2.1 → 1.2.9 --- packages/contract/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/contract/package.json b/packages/contract/package.json index 21147092326..ac2328af84f 100644 --- a/packages/contract/package.json +++ b/packages/contract/package.json @@ -27,7 +27,7 @@ "ethers": "^4.0.0-beta.1", "source-map-support": "^0.5.19", "web3": "1.2.9", - "web3-core-helpers": "1.2.1", + "web3-core-helpers": "1.2.9", "web3-core-promievent": "1.2.1", "web3-eth-abi": "1.2.1", "web3-utils": "1.2.9" From b23bc15576d2b4b084243bb803a0a8e5a3b7a22a Mon Sep 17 00:00:00 2001 From: eggplantzzz Date: Mon, 19 Oct 2020 11:58:51 -0400 Subject: [PATCH 58/63] Bump web3-core-promievent to 1.2.9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * @truffle/contract: 1.2.1 → 1.2.9 * @truffle/contract-tests: 1.2.1 → 1.2.9 --- packages/contract-tests/package.json | 2 +- packages/contract/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/contract-tests/package.json b/packages/contract-tests/package.json index b761c8df90c..1af885784e3 100644 --- a/packages/contract-tests/package.json +++ b/packages/contract-tests/package.json @@ -30,6 +30,6 @@ "mocha": "8.0.1", "sinon": "9.0.2", "web3": "1.2.9", - "web3-core-promievent": "1.2.1" + "web3-core-promievent": "1.2.9" } } diff --git a/packages/contract/package.json b/packages/contract/package.json index ac2328af84f..2a4f8099eb2 100644 --- a/packages/contract/package.json +++ b/packages/contract/package.json @@ -28,7 +28,7 @@ "source-map-support": "^0.5.19", "web3": "1.2.9", "web3-core-helpers": "1.2.9", - "web3-core-promievent": "1.2.1", + "web3-core-promievent": "1.2.9", "web3-eth-abi": "1.2.1", "web3-utils": "1.2.9" }, From aa2f296a49fc85b11ccf03ac831078c2b8362e75 Mon Sep 17 00:00:00 2001 From: eggplantzzz Date: Mon, 19 Oct 2020 12:00:16 -0400 Subject: [PATCH 59/63] Bump web3-eth-abi to 1.2.9 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * @truffle/contract: 1.2.1 → 1.2.9 * @truffle/debugger: 1.2.1 → 1.2.9 --- packages/contract/package.json | 2 +- packages/debugger/package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/packages/contract/package.json b/packages/contract/package.json index 2a4f8099eb2..5fb3dcf3ffe 100644 --- a/packages/contract/package.json +++ b/packages/contract/package.json @@ -29,7 +29,7 @@ "web3": "1.2.9", "web3-core-helpers": "1.2.9", "web3-core-promievent": "1.2.9", - "web3-eth-abi": "1.2.1", + "web3-eth-abi": "1.2.9", "web3-utils": "1.2.9" }, "devDependencies": { diff --git a/packages/debugger/package.json b/packages/debugger/package.json index 80012edd62d..d53026ad3ec 100644 --- a/packages/debugger/package.json +++ b/packages/debugger/package.json @@ -40,7 +40,7 @@ "semver": "^6.3.0", "source-map-support": "^0.5.19", "web3": "1.2.9", - "web3-eth-abi": "1.2.1" + "web3-eth-abi": "1.2.9" }, "devDependencies": { "@truffle/artifactor": "^4.0.82", From 89642b90e3140aa72e4d5004233cbafd6af1292a Mon Sep 17 00:00:00 2001 From: eggplantzzz Date: Thu, 22 Oct 2020 12:53:08 -0400 Subject: [PATCH 60/63] Publish - @truffle/artifactor@4.0.83 - @truffle/box@2.1.3 - @truffle/codec@0.7.1 - @truffle/compile-solidity@5.0.5 - @truffle/compile-vyper@2.1.2 - @truffle/config@1.2.32 - @truffle/contract-tests@0.1.9 - @truffle/contract@4.2.27 - @truffle/core@5.1.50 - @truffle/db@0.1.0 - @truffle/debug-utils@4.2.13 - @truffle/debugger@7.7.6 - @truffle/decoder@4.4.7 - @truffle/deployer@3.1.44 - @truffle/environment@0.2.30 - @truffle/external-compile@2.0.3 - @truffle/interface-adapter@0.4.18 - @truffle/migrate@3.1.44 - @truffle/provider@0.2.24 - @truffle/provisioner@0.2.9 - @truffle/reporters@1.1.2 - @truffle/require@2.0.55 - @truffle/resolver@6.0.24 - @truffle/solidity-utils@1.3.24 - truffle@5.1.50 - @truffle/workflow-compile@3.0.5 --- packages/artifactor/package.json | 4 +-- packages/box/package.json | 4 +-- packages/codec/package.json | 2 +- packages/compile-solidity/package.json | 6 ++-- packages/compile-vyper/package.json | 6 ++-- packages/config/package.json | 4 +-- packages/contract-tests/package.json | 6 ++-- packages/contract/package.json | 6 ++-- packages/core/package.json | 38 ++++++++++++------------- packages/db/package.json | 4 +-- packages/debug-utils/package.json | 4 +-- packages/debugger/package.json | 18 ++++++------ packages/decoder/package.json | 12 ++++---- packages/deployer/package.json | 8 +++--- packages/environment/package.json | 8 +++--- packages/external-compile/package.json | 2 +- packages/interface-adapter/package.json | 2 +- packages/migrate/package.json | 12 ++++---- packages/provider/package.json | 4 +-- packages/provisioner/package.json | 4 +-- packages/reporters/package.json | 2 +- packages/require/package.json | 6 ++-- packages/resolver/package.json | 6 ++-- packages/solidity-utils/package.json | 4 +-- packages/truffle/package.json | 12 ++++---- packages/workflow-compile/package.json | 14 ++++----- 26 files changed, 99 insertions(+), 99 deletions(-) diff --git a/packages/artifactor/package.json b/packages/artifactor/package.json index 1b2d5a34488..9b6dbcaf9bf 100644 --- a/packages/artifactor/package.json +++ b/packages/artifactor/package.json @@ -5,7 +5,7 @@ "license": "MIT", "author": "Tim Coulter", "repository": "https://github.com/trufflesuite/truffle/tree/master/packages/artifactor", - "version": "4.0.82", + "version": "4.0.83", "main": "dist/index.js", "scripts": { "build": "tsc", @@ -21,7 +21,7 @@ "source-map-support": "^0.5.19" }, "devDependencies": { - "@truffle/contract": "^4.2.26", + "@truffle/contract": "^4.2.27", "@types/fs-extra": "^8.1.0", "@types/lodash.assign": "^4.2.6", "@types/lodash.merge": "^4.6.6", diff --git a/packages/box/package.json b/packages/box/package.json index 3151b5d6d1f..88455610f65 100644 --- a/packages/box/package.json +++ b/packages/box/package.json @@ -4,7 +4,7 @@ "license": "MIT", "author": "g. nicholas d'andrea ", "repository": "https://github.com/trufflesuite/truffle/tree/master/packages/box", - "version": "2.1.2", + "version": "2.1.3", "main": "dist/box.js", "scripts": { "build": "tsc", @@ -13,7 +13,7 @@ }, "types": "./typings/index.d.ts", "dependencies": { - "@truffle/config": "^1.2.31", + "@truffle/config": "^1.2.32", "download-git-repo": "^3.0.2", "fs-extra": "^8.1.0", "ignore": "^5.1.8", diff --git a/packages/codec/package.json b/packages/codec/package.json index 40d0f41a9c6..b82cca497dc 100644 --- a/packages/codec/package.json +++ b/packages/codec/package.json @@ -8,7 +8,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "0.7.0", + "version": "0.7.1", "main": "dist/lib/index.js", "files": [ "dist" diff --git a/packages/compile-solidity/package.json b/packages/compile-solidity/package.json index 292c4f99bbd..ff4403d2631 100644 --- a/packages/compile-solidity/package.json +++ b/packages/compile-solidity/package.json @@ -8,7 +8,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "5.0.4", + "version": "5.0.5", "main": "index.js", "scripts": { "prepare": "exit 0", @@ -16,7 +16,7 @@ }, "dependencies": { "@truffle/compile-common": "^0.4.1", - "@truffle/config": "^1.2.31", + "@truffle/config": "^1.2.32", "@truffle/contract-sources": "^0.1.8", "@truffle/error": "^0.0.11", "@truffle/expect": "^0.0.15", @@ -32,7 +32,7 @@ "solc": "^0.6.0" }, "devDependencies": { - "@truffle/resolver": "^6.0.23", + "@truffle/resolver": "^6.0.24", "babel-core": "^6.26.0", "babel-polyfill": "^6.26.0", "babel-preset-env": "^1.6.1", diff --git a/packages/compile-vyper/package.json b/packages/compile-vyper/package.json index d72f1e4176e..fc86537d8be 100644 --- a/packages/compile-vyper/package.json +++ b/packages/compile-vyper/package.json @@ -4,20 +4,20 @@ "license": "MIT", "author": "Evgeniy Filatov ", "repository": "https://github.com/trufflesuite/truffle/tree/master/packages/compile-vyper", - "version": "2.1.1", + "version": "2.1.2", "main": "index.js", "scripts": { "prepare": "exit 0", "test": "mocha" }, "dependencies": { - "@truffle/compile-solidity": "^5.0.4", + "@truffle/compile-solidity": "^5.0.5", "colors": "^1.1.2", "eslint": "^5.5.0", "minimatch": "^3.0.4" }, "devDependencies": { - "@truffle/config": "^1.2.31", + "@truffle/config": "^1.2.32", "mocha": "8.1.2" }, "keywords": [ diff --git a/packages/config/package.json b/packages/config/package.json index f3a6cba3892..e3c921b78fa 100644 --- a/packages/config/package.json +++ b/packages/config/package.json @@ -8,7 +8,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "1.2.31", + "version": "1.2.32", "main": "dist/index.js", "scripts": { "build": "tsc", @@ -19,7 +19,7 @@ "dependencies": { "@truffle/error": "^0.0.11", "@truffle/events": "^0.0.8", - "@truffle/provider": "^0.2.23", + "@truffle/provider": "^0.2.24", "configstore": "^4.0.0", "find-up": "^2.1.0", "lodash.assignin": "^4.2.0", diff --git a/packages/contract-tests/package.json b/packages/contract-tests/package.json index 1af885784e3..236c535cae2 100644 --- a/packages/contract-tests/package.json +++ b/packages/contract-tests/package.json @@ -12,7 +12,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "0.1.8", + "version": "0.1.9", "scripts": { "prepare": "exit 0", "test": "./scripts/test.sh", @@ -21,8 +21,8 @@ }, "devDependencies": { "@truffle/blockchain-utils": "^0.0.25", - "@truffle/compile-solidity": "^5.0.4", - "@truffle/contract": "^4.2.26", + "@truffle/compile-solidity": "^5.0.5", + "@truffle/contract": "^4.2.27", "bignumber.js": "^7.2.1", "chai": "4.2.0", "debug": "^4.1.0", diff --git a/packages/contract/package.json b/packages/contract/package.json index 5fb3dcf3ffe..2ea28e7e8f4 100644 --- a/packages/contract/package.json +++ b/packages/contract/package.json @@ -8,7 +8,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "4.2.26", + "version": "4.2.27", "main": "index.js", "scripts": { "compile": "sh -c \"mkdir -p ./dist\" && browserify --debug ./index.js | exorcist ./dist/truffle-contract.js.map > ./dist/truffle-contract.js && uglifyjs ./dist/truffle-contract.js -o ./dist/truffle-contract.min.js", @@ -19,9 +19,9 @@ "dependencies": { "@truffle/blockchain-utils": "^0.0.25", "@truffle/contract-schema": "^3.3.1", - "@truffle/debug-utils": "^4.2.12", + "@truffle/debug-utils": "^4.2.13", "@truffle/error": "^0.0.11", - "@truffle/interface-adapter": "^0.4.17", + "@truffle/interface-adapter": "^0.4.18", "bignumber.js": "^7.2.1", "ethereum-ens": "^0.8.0", "ethers": "^4.0.0-beta.1", diff --git a/packages/core/package.json b/packages/core/package.json index 000326d2b41..edf26b3d84a 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -7,7 +7,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "5.1.49", + "version": "5.1.50", "bin": { "truffle": "./cli.js", "truffle-exec": "./exec.js" @@ -17,28 +17,28 @@ "test": "mocha ./test/** ./test/**/*" }, "dependencies": { - "@truffle/artifactor": "^4.0.82", - "@truffle/box": "^2.1.2", - "@truffle/codec": "^0.7.0", - "@truffle/compile-solidity": "^5.0.4", - "@truffle/config": "^1.2.31", - "@truffle/contract": "^4.2.26", + "@truffle/artifactor": "^4.0.83", + "@truffle/box": "^2.1.3", + "@truffle/codec": "^0.7.1", + "@truffle/compile-solidity": "^5.0.5", + "@truffle/config": "^1.2.32", + "@truffle/contract": "^4.2.27", "@truffle/contract-sources": "^0.1.8", - "@truffle/debug-utils": "^4.2.12", - "@truffle/debugger": "^7.7.5", - "@truffle/decoder": "^4.4.6", - "@truffle/deployer": "^3.1.43", - "@truffle/environment": "^0.2.29", + "@truffle/debug-utils": "^4.2.13", + "@truffle/debugger": "^7.7.6", + "@truffle/decoder": "^4.4.7", + "@truffle/deployer": "^3.1.44", + "@truffle/environment": "^0.2.30", "@truffle/error": "^0.0.11", "@truffle/expect": "^0.0.15", - "@truffle/interface-adapter": "^0.4.17", - "@truffle/migrate": "^3.1.43", - "@truffle/provider": "^0.2.23", - "@truffle/provisioner": "^0.2.8", - "@truffle/require": "^2.0.54", - "@truffle/resolver": "^6.0.23", + "@truffle/interface-adapter": "^0.4.18", + "@truffle/migrate": "^3.1.44", + "@truffle/provider": "^0.2.24", + "@truffle/provisioner": "^0.2.9", + "@truffle/require": "^2.0.55", + "@truffle/resolver": "^6.0.24", "@truffle/source-fetcher": "^0.2.4", - "@truffle/workflow-compile": "^3.0.4", + "@truffle/workflow-compile": "^3.0.5", "app-module-path": "^2.2.0", "chai": "4.2.0", "colors": "^1.1.2", diff --git a/packages/db/package.json b/packages/db/package.json index d19336dd46a..3cb05ddbd95 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -11,7 +11,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "0.1.0-3", + "version": "0.1.0", "main": "dist/src/index.js", "files": [ "dist", @@ -33,7 +33,7 @@ }, "dependencies": { "@truffle/compile-common": "^0.4.1", - "@truffle/workflow-compile": "^3.0.4", + "@truffle/workflow-compile": "^3.0.5", "apollo-server": "^2.18.2", "fse": "^4.0.1", "graphql": "^15.3.0", diff --git a/packages/debug-utils/package.json b/packages/debug-utils/package.json index db7d7835664..dc131d46e45 100644 --- a/packages/debug-utils/package.json +++ b/packages/debug-utils/package.json @@ -8,13 +8,13 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "4.2.12", + "version": "4.2.13", "main": "index.js", "scripts": { "prepare": "exit 0" }, "dependencies": { - "@truffle/codec": "^0.7.0", + "@truffle/codec": "^0.7.1", "@trufflesuite/chromafi": "^2.2.0", "chalk": "^2.4.2", "debug": "^4.1.0", diff --git a/packages/debugger/package.json b/packages/debugger/package.json index d53026ad3ec..465b7197fca 100644 --- a/packages/debugger/package.json +++ b/packages/debugger/package.json @@ -8,7 +8,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "7.7.5", + "version": "7.7.6", "main": "dist/debugger.js", "scripts": { "build": "webpack --config webpack/webpack.config.js", @@ -21,10 +21,10 @@ }, "dependencies": { "@truffle/abi-utils": "^0.1.0", - "@truffle/codec": "^0.7.0", - "@truffle/compile-solidity": "^5.0.4", + "@truffle/codec": "^0.7.1", + "@truffle/compile-solidity": "^5.0.5", "@truffle/expect": "^0.0.15", - "@truffle/solidity-utils": "^1.3.23", + "@truffle/solidity-utils": "^1.3.24", "bn.js": "^4.11.8", "debug": "^4.1.0", "json-pointer": "^0.6.0", @@ -43,11 +43,11 @@ "web3-eth-abi": "1.2.9" }, "devDependencies": { - "@truffle/artifactor": "^4.0.82", - "@truffle/box": "^2.1.2", - "@truffle/migrate": "^3.1.43", - "@truffle/resolver": "^6.0.23", - "@truffle/workflow-compile": "^3.0.4", + "@truffle/artifactor": "^4.0.83", + "@truffle/box": "^2.1.3", + "@truffle/migrate": "^3.1.44", + "@truffle/resolver": "^6.0.24", + "@truffle/workflow-compile": "^3.0.5", "babel-core": "^6.26.0", "babel-loader": "^7.1.2", "babel-plugin-transform-object-rest-spread": "^6.26.0", diff --git a/packages/decoder/package.json b/packages/decoder/package.json index 70856d74ec3..50278f6f5b5 100644 --- a/packages/decoder/package.json +++ b/packages/decoder/package.json @@ -8,7 +8,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "4.4.6", + "version": "4.4.7", "main": "dist/index.js", "directories": { "lib": "lib" @@ -22,9 +22,9 @@ "types": "dist/index.d.ts", "dependencies": { "@truffle/abi-utils": "^0.1.0", - "@truffle/codec": "^0.7.0", - "@truffle/compile-solidity": "^5.0.4", - "@truffle/solidity-utils": "^1.3.23", + "@truffle/codec": "^0.7.1", + "@truffle/compile-solidity": "^5.0.5", + "@truffle/solidity-utils": "^1.3.24", "bn.js": "^4.11.8", "debug": "^4.1.0", "source-map-support": "^0.5.19", @@ -34,9 +34,9 @@ "truffle": "^5.0.14" }, "devDependencies": { - "@truffle/config": "^1.2.31", + "@truffle/config": "^1.2.32", "@truffle/contract-schema": "^3.3.1", - "@truffle/provider": "^0.2.23", + "@truffle/provider": "^0.2.24", "@types/big.js": "^4.0.5", "@types/bn.js": "^4.11.2", "@types/debug": "^0.0.31", diff --git a/packages/deployer/package.json b/packages/deployer/package.json index 0b8989ff817..acde62bbb73 100644 --- a/packages/deployer/package.json +++ b/packages/deployer/package.json @@ -8,7 +8,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "3.1.43", + "version": "3.1.44", "main": "index.js", "scripts": { "prepare": "exit 0", @@ -17,7 +17,7 @@ "dependencies": { "@ensdomains/ens": "^0.4.0", "@ensdomains/resolver": "^0.2.0", - "@truffle/contract": "^4.2.26", + "@truffle/contract": "^4.2.27", "@truffle/expect": "^0.0.15", "emittery": "^0.4.0", "eth-ens-namehash": "^2.0.8", @@ -25,8 +25,8 @@ "web3-utils": "1.2.9" }, "devDependencies": { - "@truffle/reporters": "^1.1.1", - "@truffle/workflow-compile": "^3.0.4", + "@truffle/reporters": "^1.1.2", + "@truffle/workflow-compile": "^3.0.5", "ganache-core": "2.13.0", "mocha": "8.1.2", "sinon": "9.0.2", diff --git a/packages/environment/package.json b/packages/environment/package.json index e0da5380853..e6cc77cbec7 100644 --- a/packages/environment/package.json +++ b/packages/environment/package.json @@ -9,17 +9,17 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "0.2.29", + "version": "0.2.30", "main": "index.js", "scripts": { "prepare": "exit 0" }, "dependencies": { - "@truffle/artifactor": "^4.0.82", + "@truffle/artifactor": "^4.0.83", "@truffle/error": "^0.0.11", "@truffle/expect": "^0.0.15", - "@truffle/interface-adapter": "^0.4.17", - "@truffle/resolver": "^6.0.23", + "@truffle/interface-adapter": "^0.4.18", + "@truffle/resolver": "^6.0.24", "ganache-core": "2.13.0", "node-ipc": "^9.1.1", "source-map-support": "^0.5.19", diff --git a/packages/external-compile/package.json b/packages/external-compile/package.json index eaa97ac0b3b..e85881e05e5 100644 --- a/packages/external-compile/package.json +++ b/packages/external-compile/package.json @@ -8,7 +8,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "2.0.2", + "version": "2.0.3", "main": "index.js", "scripts": { "prepare": "exit 0", diff --git a/packages/interface-adapter/package.json b/packages/interface-adapter/package.json index 0ecad0dfb64..773241af270 100644 --- a/packages/interface-adapter/package.json +++ b/packages/interface-adapter/package.json @@ -7,7 +7,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "0.4.17", + "version": "0.4.18", "main": "dist/index.js", "directories": { "lib": "lib" diff --git a/packages/migrate/package.json b/packages/migrate/package.json index a9afe1cb621..7b689bf1274 100644 --- a/packages/migrate/package.json +++ b/packages/migrate/package.json @@ -8,19 +8,19 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "3.1.43", + "version": "3.1.44", "main": "index.js", "scripts": { "prepare": "exit 0", "test": "mocha ./test/* ./test/**/*" }, "dependencies": { - "@truffle/config": "^1.2.31", - "@truffle/deployer": "^3.1.43", + "@truffle/config": "^1.2.32", + "@truffle/deployer": "^3.1.44", "@truffle/expect": "^0.0.15", - "@truffle/interface-adapter": "^0.4.17", - "@truffle/reporters": "^1.1.1", - "@truffle/require": "^2.0.54", + "@truffle/interface-adapter": "^0.4.18", + "@truffle/reporters": "^1.1.2", + "@truffle/require": "^2.0.55", "emittery": "^0.4.0", "glob": "^7.1.6", "web3": "1.2.9" diff --git a/packages/provider/package.json b/packages/provider/package.json index 2e170b176e2..50bdf2a6e71 100644 --- a/packages/provider/package.json +++ b/packages/provider/package.json @@ -8,7 +8,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "0.2.23", + "version": "0.2.24", "main": "index.js", "scripts": { "prepare": "exit 0", @@ -17,7 +17,7 @@ "types": "./typings/index.d.ts", "dependencies": { "@truffle/error": "^0.0.11", - "@truffle/interface-adapter": "^0.4.17", + "@truffle/interface-adapter": "^0.4.18", "web3": "1.2.9" }, "devDependencies": { diff --git a/packages/provisioner/package.json b/packages/provisioner/package.json index 1aa041fb087..e3151a82e8e 100644 --- a/packages/provisioner/package.json +++ b/packages/provisioner/package.json @@ -1,6 +1,6 @@ { "name": "@truffle/provisioner", - "version": "0.2.8", + "version": "0.2.9", "description": "Provision contract objects for use from multiple sources", "main": "./dist/src/index.js", "types": "./dist/src/index.d.ts", @@ -31,6 +31,6 @@ "typescript": "^3.9.7" }, "dependencies": { - "@truffle/config": "^1.2.31" + "@truffle/config": "^1.2.32" } } diff --git a/packages/reporters/package.json b/packages/reporters/package.json index 30320d12e1e..7d78e8fa550 100644 --- a/packages/reporters/package.json +++ b/packages/reporters/package.json @@ -4,7 +4,7 @@ "license": "MIT", "author": "", "repository": "https://github.com/trufflesuite/truffle/tree/master/packages/reporters", - "version": "1.1.1", + "version": "1.1.2", "main": "index.js", "scripts": { "prepare": "exit 0" diff --git a/packages/require/package.json b/packages/require/package.json index 529b40a76c5..1944cba8319 100644 --- a/packages/require/package.json +++ b/packages/require/package.json @@ -8,16 +8,16 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "2.0.54", + "version": "2.0.55", "main": "require.js", "scripts": { "prepare": "exit 0", "test": "mocha" }, "dependencies": { - "@truffle/config": "^1.2.31", + "@truffle/config": "^1.2.32", "@truffle/expect": "^0.0.15", - "@truffle/interface-adapter": "^0.4.17", + "@truffle/interface-adapter": "^0.4.18", "original-require": "1.0.1", "web3": "1.2.9" }, diff --git a/packages/resolver/package.json b/packages/resolver/package.json index e1014a54dff..435338b3d94 100644 --- a/packages/resolver/package.json +++ b/packages/resolver/package.json @@ -8,7 +8,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "6.0.23", + "version": "6.0.24", "main": "dist/lib/index.js", "files": [ "dist", @@ -21,10 +21,10 @@ }, "types": "dist/lib/index.d.ts", "dependencies": { - "@truffle/contract": "^4.2.26", + "@truffle/contract": "^4.2.27", "@truffle/contract-sources": "^0.1.8", "@truffle/expect": "^0.0.15", - "@truffle/provisioner": "^0.2.8", + "@truffle/provisioner": "^0.2.9", "debug": "^4.1.1", "detect-installed": "^2.0.4", "get-installed-path": "^4.0.8", diff --git a/packages/solidity-utils/package.json b/packages/solidity-utils/package.json index bf4465c9777..2f9cf0daa59 100644 --- a/packages/solidity-utils/package.json +++ b/packages/solidity-utils/package.json @@ -1,6 +1,6 @@ { "name": "@truffle/solidity-utils", - "version": "1.3.23", + "version": "1.3.24", "description": "Utilities for Solidity contracts", "main": "index.js", "scripts": { @@ -24,7 +24,7 @@ }, "dependencies": { "@truffle/code-utils": "^1.2.21", - "@truffle/codec": "^0.7.0", + "@truffle/codec": "^0.7.1", "debug": "^4.1.1", "json-pointer": "^0.6.0", "node-interval-tree": "^1.3.3" diff --git a/packages/truffle/package.json b/packages/truffle/package.json index d31ea940449..8afe6ff6ca3 100644 --- a/packages/truffle/package.json +++ b/packages/truffle/package.json @@ -7,7 +7,7 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "5.1.49", + "version": "5.1.50", "main": "./build/library.bundled.js", "bin": { "truffle": "./build/cli.bundled.js" @@ -31,11 +31,11 @@ "original-require": "1.0.1" }, "devDependencies": { - "@truffle/box": "^2.1.2", - "@truffle/contract": "^4.2.26", - "@truffle/core": "^5.1.49", - "@truffle/debugger": "^7.7.5", - "@truffle/interface-adapter": "^0.4.17", + "@truffle/box": "^2.1.3", + "@truffle/contract": "^4.2.27", + "@truffle/core": "^5.1.50", + "@truffle/debugger": "^7.7.6", + "@truffle/interface-adapter": "^0.4.18", "clean-webpack-plugin": "^3.0.0", "copy-webpack-plugin": "^5.1.1", "eslint": "^5.7.0", diff --git a/packages/workflow-compile/package.json b/packages/workflow-compile/package.json index b654d9e50b9..b45aea21d6c 100644 --- a/packages/workflow-compile/package.json +++ b/packages/workflow-compile/package.json @@ -8,21 +8,21 @@ "bugs": { "url": "https://github.com/trufflesuite/truffle/issues" }, - "version": "3.0.4", + "version": "3.0.5", "main": "index.js", "scripts": { "prepare": "exit 0", "test": "mocha" }, "dependencies": { - "@truffle/artifactor": "^4.0.82", + "@truffle/artifactor": "^4.0.83", "@truffle/compile-common": "^0.4.1", - "@truffle/compile-solidity": "^5.0.4", - "@truffle/compile-vyper": "^2.1.1", - "@truffle/config": "^1.2.31", + "@truffle/compile-solidity": "^5.0.5", + "@truffle/compile-vyper": "^2.1.2", + "@truffle/config": "^1.2.32", "@truffle/expect": "^0.0.15", - "@truffle/external-compile": "^2.0.2", - "@truffle/resolver": "^6.0.23", + "@truffle/external-compile": "^2.0.3", + "@truffle/resolver": "^6.0.24", "fs-extra": "^8.1.0" }, "devDependencies": { From b04f1f69f8a474aaf665900e85586bc610c1ef29 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Wed, 21 Oct 2020 18:14:31 -0400 Subject: [PATCH 61/63] Remove I prefix from autogenerated types --- packages/db/bin/codegen.js | 14 ++- packages/db/src/db.ts | 4 +- packages/db/src/definitions/types.ts | 36 +++---- .../db/src/loaders/commands/initialize.ts | 2 +- packages/db/src/loaders/commands/names.ts | 4 +- .../src/loaders/resources/bytecodes/index.ts | 2 +- .../loaders/resources/compilations/index.ts | 12 +-- .../src/loaders/resources/contracts/index.ts | 6 +- .../loaders/resources/nameRecords/index.ts | 8 +- .../src/loaders/resources/projects/index.ts | 16 ++-- .../db/src/loaders/resources/sources/index.ts | 2 +- .../db/src/loaders/schema/artifactsLoader.ts | 2 +- packages/db/src/loaders/types.ts | 8 +- packages/db/types/stub.d.ts | 94 ++++++++----------- 14 files changed, 103 insertions(+), 107 deletions(-) diff --git a/packages/db/bin/codegen.js b/packages/db/bin/codegen.js index df8abd1c2ec..488bb391900 100644 --- a/packages/db/bin/codegen.js +++ b/packages/db/bin/codegen.js @@ -4,8 +4,16 @@ const { generateNamespace } = require("@gql2ts/from-schema"); const { schema } = require("@truffle/db/dist/src/schema"); -const dataModel = generateNamespace("DataModel", schema, { - ignoreTypeNameDeclaration: true -}); +const dataModel = generateNamespace( + "DataModel", + schema, + { + ignoreTypeNameDeclaration: true, + ignoredTypes: ["Resource", "Named"] + }, + { + generateInterfaceName: name => name + } +); fs.writeFileSync(path.join(__dirname, "..", "types", "schema.d.ts"), dataModel); diff --git a/packages/db/src/db.ts b/packages/db/src/db.ts index 334163a8aff..c05915a1374 100644 --- a/packages/db/src/db.ts +++ b/packages/db/src/db.ts @@ -74,7 +74,7 @@ export class TruffleDB { return current.value; } - async loadNames(project: DataModel.IProject, resources: NamedResource[]) { + async loadNames(project: DataModel.Project, resources: NamedResource[]) { return await this.runLoader( generateNamesLoad, toIdObject(project), @@ -82,7 +82,7 @@ export class TruffleDB { ); } - async loadProject(): Promise { + async loadProject(): Promise { return await this.runLoader(generateInitializeLoad, { directory: this.context.workingDirectory }); diff --git a/packages/db/src/definitions/types.ts b/packages/db/src/definitions/types.ts index 3ddcaaff0d5..bae06119b3c 100644 --- a/packages/db/src/definitions/types.ts +++ b/packages/db/src/definitions/types.ts @@ -4,42 +4,42 @@ import * as GraphQl from "../graphql"; export type Collections = { sources: { - resource: DataModel.ISource; - input: DataModel.ISourceInput; + resource: DataModel.Source; + input: DataModel.SourceInput; }; bytecodes: { - resource: DataModel.IBytecode; - input: DataModel.IBytecodeInput; + resource: DataModel.Bytecode; + input: DataModel.BytecodeInput; }; compilations: { - resource: DataModel.ICompilation; - input: DataModel.ICompilationInput; + resource: DataModel.Compilation; + input: DataModel.CompilationInput; }; contractInstances: { - resource: DataModel.IContractInstance; - input: DataModel.IContractInstanceInput; + resource: DataModel.ContractInstance; + input: DataModel.ContractInstanceInput; }; contracts: { - resource: DataModel.IContract; - input: DataModel.IContractInput; + resource: DataModel.Contract; + input: DataModel.ContractInput; named: true; }; nameRecords: { - resource: DataModel.INameRecord; - input: DataModel.INameRecordInput; + resource: DataModel.NameRecord; + input: DataModel.NameRecordInput; }; networks: { - resource: DataModel.INetwork; - input: DataModel.INetworkInput; + resource: DataModel.Network; + input: DataModel.NetworkInput; named: true; }; projects: { - resource: DataModel.IProject; - input: DataModel.IProjectInput; + resource: DataModel.Project; + input: DataModel.ProjectInput; }; projectNames: { - resource: DataModel.IProjectName; - input: DataModel.IProjectNameInput; + resource: DataModel.ProjectName; + input: DataModel.ProjectNameInput; mutable: true; }; }; diff --git a/packages/db/src/loaders/commands/initialize.ts b/packages/db/src/loaders/commands/initialize.ts index ba501b35002..0a959e423de 100644 --- a/packages/db/src/loaders/commands/initialize.ts +++ b/packages/db/src/loaders/commands/initialize.ts @@ -8,7 +8,7 @@ export function* generateInitializeLoad({ }): Generator< WorkspaceRequest, any, - WorkspaceResponse<"projectsAdd", DataModel.IProjectsAddPayload> + WorkspaceResponse<"projectsAdd", DataModel.ProjectsAddPayload> > { const project = yield* generateProjectLoad(directory); return project; diff --git a/packages/db/src/loaders/commands/names.ts b/packages/db/src/loaders/commands/names.ts index 82deb7fc980..f8a2533e7f5 100644 --- a/packages/db/src/loaders/commands/names.ts +++ b/packages/db/src/loaders/commands/names.ts @@ -11,10 +11,10 @@ import { IdObject, NamedResource } from "@truffle/db/meta"; * generator function to load nameRecords and project names into Truffle DB */ export function* generateNamesLoad( - project: IdObject, + project: IdObject, contracts: NamedResource[] ): Generator> { - let getCurrent = function* (name, type) { + let getCurrent = function*(name, type) { return yield* generateProjectNameResolve(project, name, type); }; diff --git a/packages/db/src/loaders/resources/bytecodes/index.ts b/packages/db/src/loaders/resources/bytecodes/index.ts index 9f2526ad7ae..2fe9cc6b4e9 100644 --- a/packages/db/src/loaders/resources/bytecodes/index.ts +++ b/packages/db/src/loaders/resources/bytecodes/index.ts @@ -17,7 +17,7 @@ export function* generateBytecodesLoad( ): Generator< WorkspaceRequest, LoadedBytecodes, - WorkspaceResponse<"bytecodesAdd", DataModel.IBytecodesAddPayload> + WorkspaceResponse<"bytecodesAdd", DataModel.BytecodesAddPayload> > { // we're flattening in order to send all bytecodes in one big list // (it's okay, we're gonna recreate the structure before we return) diff --git a/packages/db/src/loaders/resources/compilations/index.ts b/packages/db/src/loaders/resources/compilations/index.ts index 9024b15abb0..0814db937f7 100644 --- a/packages/db/src/loaders/resources/compilations/index.ts +++ b/packages/db/src/loaders/resources/compilations/index.ts @@ -13,13 +13,13 @@ export { GetCompilation } from "./get.graphql"; const compilationSourceInputs = ({ compilation, sources -}: LoadableCompilation): DataModel.IResourceReferenceInput[] => +}: LoadableCompilation): DataModel.ResourceReferenceInput[] => compilation.sources.map(({ input: { sourcePath } }) => sources[sourcePath]); const compilationProcessedSourceInputs = ({ compilation, sources -}: LoadableCompilation): DataModel.IProcessedSourceInput[] => +}: LoadableCompilation): DataModel.ProcessedSourceInput[] => compilation.sources.map(({ input: { sourcePath }, contracts }) => ({ source: sources[sourcePath], // PRECONDITION: all contracts in the same compilation with the same @@ -31,7 +31,7 @@ const compilationProcessedSourceInputs = ({ const compilationSourceMapInputs = ({ compilation -}: LoadableCompilation): DataModel.ISourceMapInput[] => { +}: LoadableCompilation): DataModel.SourceMapInput[] => { const contracts = compilation.sources .map(({ contracts }) => contracts) .flat(); @@ -48,7 +48,7 @@ const compilationSourceMapInputs = ({ const compilationInput = ( data: LoadableCompilation -): DataModel.ICompilationInput => ({ +): DataModel.CompilationInput => ({ compiler: data.compilation.compiler, processedSources: compilationProcessedSourceInputs(data), sources: compilationSourceInputs(data), @@ -64,8 +64,8 @@ export function* generateCompilationsLoad( loadableCompilations: LoadableCompilation[] ): Generator< WorkspaceRequest, - DataModel.ICompilation[], - WorkspaceResponse<"compilationsAdd", DataModel.ICompilationsAddPayload> + DataModel.Compilation[], + WorkspaceResponse<"compilationsAdd", DataModel.CompilationsAddPayload> > { const compilations = loadableCompilations.map(compilationInput); diff --git a/packages/db/src/loaders/resources/contracts/index.ts b/packages/db/src/loaders/resources/contracts/index.ts index a5e801ee902..e70f374b661 100644 --- a/packages/db/src/loaders/resources/contracts/index.ts +++ b/packages/db/src/loaders/resources/contracts/index.ts @@ -13,15 +13,15 @@ export interface LoadableContract { contract: CompiledContract; path: { sourceIndex: number; contractIndex: number }; bytecodes: LoadedBytecodes; - compilation: IdObject; + compilation: IdObject; } export function* generateContractsLoad( loadableContracts: LoadableContract[] ): Generator< WorkspaceRequest, - DataModel.IContract[], - WorkspaceResponse<"contractsAdd", DataModel.IContractsAddPayload> + DataModel.Contract[], + WorkspaceResponse<"contractsAdd", DataModel.ContractsAddPayload> > { const contracts = loadableContracts.map(loadableContract => { const { diff --git a/packages/db/src/loaders/resources/nameRecords/index.ts b/packages/db/src/loaders/resources/nameRecords/index.ts index 1cf56857db4..11cd664b1f0 100644 --- a/packages/db/src/loaders/resources/nameRecords/index.ts +++ b/packages/db/src/loaders/resources/nameRecords/index.ts @@ -14,7 +14,7 @@ type ResolveFunc = ( type: string ) => Generator< WorkspaceRequest, - DataModel.INameRecord | null, + DataModel.NameRecord | null, WorkspaceResponse >; @@ -24,13 +24,13 @@ export function* generateNameRecordsLoad( getCurrent: ResolveFunc ): Generator< WorkspaceRequest, - DataModel.INameRecord[], - WorkspaceResponse<"nameRecordsAdd", DataModel.INameRecordsAddPayload> + DataModel.NameRecord[], + WorkspaceResponse<"nameRecordsAdd", DataModel.NameRecordsAddPayload> > { const nameRecords = []; for (const resource of resources) { const { name } = resource; - const current: DataModel.INameRecord = yield* getCurrent(name, type); + const current: DataModel.NameRecord = yield* getCurrent(name, type); if (current) { nameRecords.push({ diff --git a/packages/db/src/loaders/resources/projects/index.ts b/packages/db/src/loaders/resources/projects/index.ts index 864336a389e..d18c3ff581a 100644 --- a/packages/db/src/loaders/resources/projects/index.ts +++ b/packages/db/src/loaders/resources/projects/index.ts @@ -10,8 +10,8 @@ export function* generateProjectLoad( directory: string ): Generator< WorkspaceRequest, - DataModel.IProject, - WorkspaceResponse<"projectsAdd", DataModel.IProjectsAddPayload> + DataModel.Project, + WorkspaceResponse<"projectsAdd", DataModel.ProjectsAddPayload> > { const result = yield { request: AddProjects, @@ -24,13 +24,13 @@ export function* generateProjectLoad( } export function* generateProjectNameResolve( - project: IdObject, + project: IdObject, name: string, type: string ): Generator< WorkspaceRequest, - DataModel.INameRecord, - WorkspaceResponse<"project", { resolve: DataModel.IProject["resolve"] }> + DataModel.NameRecord, + WorkspaceResponse<"project", { resolve: DataModel.Project["resolve"] }> > { const result = yield { request: ResolveProjectName, @@ -45,12 +45,12 @@ export function* generateProjectNameResolve( } export function* generateProjectNamesAssign( - project: IdObject, - nameRecords: DataModel.INameRecord[] + project: IdObject, + nameRecords: DataModel.NameRecord[] ): Generator< WorkspaceRequest, void, - WorkspaceResponse<"projectNamesAssign", DataModel.IProjectNamesAssignPayload> + WorkspaceResponse<"projectNamesAssign", DataModel.ProjectNamesAssignPayload> > { const projectNames = nameRecords.map(({ id, name, type }) => ({ project, diff --git a/packages/db/src/loaders/resources/sources/index.ts b/packages/db/src/loaders/resources/sources/index.ts index 2fcda0aa74d..2785989b2e3 100644 --- a/packages/db/src/loaders/resources/sources/index.ts +++ b/packages/db/src/loaders/resources/sources/index.ts @@ -16,7 +16,7 @@ export function* generateSourcesLoad( ): Generator< WorkspaceRequest, LoadedSources, - WorkspaceResponse<"sourcesAdd", DataModel.ISourcesAddPayload> + WorkspaceResponse<"sourcesAdd", DataModel.SourcesAddPayload> > { // for each compilation, we need to load sources for each of the contracts const inputs = compilation.sources.map(({ input }) => input); diff --git a/packages/db/src/loaders/schema/artifactsLoader.ts b/packages/db/src/loaders/schema/artifactsLoader.ts index 6d367808611..1d9d0a8f61d 100644 --- a/packages/db/src/loaders/schema/artifactsLoader.ts +++ b/packages/db/src/loaders/schema/artifactsLoader.ts @@ -283,7 +283,7 @@ export class ArtifactsLoader { } async loadContractInstances( - contracts: Array, + contracts: Array, networksArray: Array> ) { // networksArray is an array of arrays of networks for each contract; diff --git a/packages/db/src/loaders/types.ts b/packages/db/src/loaders/types.ts index acb13530a11..0484df2835a 100644 --- a/packages/db/src/loaders/types.ts +++ b/packages/db/src/loaders/types.ts @@ -13,12 +13,12 @@ export interface CompilationData { export interface SourceData { index: number; - input: DataModel.ISourceInput; + input: DataModel.SourceInput; contracts: CompiledContract[]; } export interface LoadedSources { - [sourcePath: string]: IdObject; + [sourcePath: string]: IdObject; } // we track loaded bytecodes using the same structure as CompilationData: @@ -28,8 +28,8 @@ export interface LoadedSources { export interface LoadedBytecodes { sources: { contracts: { - createBytecode: IdObject; - callBytecode: IdObject; + createBytecode: IdObject; + callBytecode: IdObject; }[]; }[]; } diff --git a/packages/db/types/stub.d.ts b/packages/db/types/stub.d.ts index 4160f1d148d..11415387376 100644 --- a/packages/db/types/stub.d.ts +++ b/packages/db/types/stub.d.ts @@ -2,59 +2,47 @@ // graphql typescript definitions declare namespace DataModel { - type IResourceReferenceInput = any; - type IBytecode = any; - type IBytecodeInput = any; - type IBytecodesAddInput = any; - type IBytecodesAddPayload = any; - type ICompilation = any; - type ICompilationInput = any; - type IProcessedSourceInput = any; - type ISourceMapInput = any; - type ICompilationsAddInput = any; - type ICompilationsAddPayload = any; - type ICompiler = any; - type ICompilerInput = any; - type IContract = any; - type IContractInput = any; - type IContractInstance = any; - type IContractInstanceInput = any; - type IContractInstancesAddInput = any; - type IContractInstancesAddPayload = any; - type IContractsAddInput = any; - type IContractsAddPayload = any; - type IInstruction = any; - type INameRecord = any; - type INameRecordInput = any; - type INameRecordsAddInput = any; - type INameRecordsAddPayload = any; - type INetwork = any; - type INetworkInput = any; - type INetworksAddInput = any; - type IProject = any; - type IProjectInput = any; - type IProjectsAddInput = any; - type IProjectsAddPayload = any; - type IProjectName = any; - type IProjectNameInput = any; - type IProjectNamesAssignPayload = any; - type ISource = any; - type ISourceInput = any; - type ISourceRange = any; - type ISourcesAddInput = any; - type ISourcesAddPayload = any; - - interface IWorkspaceQuery { - [key: string]: any; - } - - interface IWorkspaceMutation { - [key: string]: any; - } - - interface INamed { - name: string; - } + type ResourceReferenceInput = any; + type Bytecode = any; + type BytecodeInput = any; + type BytecodesAddInput = any; + type BytecodesAddPayload = any; + type Compilation = any; + type CompilationInput = any; + type ProcessedSourceInput = any; + type SourceMapInput = any; + type CompilationsAddInput = any; + type CompilationsAddPayload = any; + type Compiler = any; + type CompilerInput = any; + type Contract = any; + type ContractInput = any; + type ContractInstance = any; + type ContractInstanceInput = any; + type ContractInstancesAddInput = any; + type ContractInstancesAddPayload = any; + type ContractsAddInput = any; + type ContractsAddPayload = any; + type Instruction = any; + type NameRecord = any; + type NameRecordInput = any; + type NameRecordsAddInput = any; + type NameRecordsAddPayload = any; + type Network = any; + type NetworkInput = any; + type NetworksAddInput = any; + type Project = any; + type ProjectInput = any; + type ProjectsAddInput = any; + type ProjectsAddPayload = any; + type ProjectName = any; + type ProjectNameInput = any; + type ProjectNamesAssignPayload = any; + type Source = any; + type SourceInput = any; + type SourceRange = any; + type SourcesAddInput = any; + type SourcesAddPayload = any; } // tslint:enable From 80a6081f1858b0d4fe219056af3dcdeb68e25bd5 Mon Sep 17 00:00:00 2001 From: "g. nicholas d'andrea" Date: Thu, 22 Oct 2020 21:12:29 -0400 Subject: [PATCH 62/63] Split build into multiple yarn scripts - Remove shell script that does building - Define separate scripts for building with stubs, autogenerating the schema types, and then building the project for real --- packages/db/bin/build | 8 -------- packages/db/package.json | 4 ++++ 2 files changed, 4 insertions(+), 8 deletions(-) delete mode 100755 packages/db/bin/build diff --git a/packages/db/bin/build b/packages/db/bin/build deleted file mode 100755 index 73fae85038e..00000000000 --- a/packages/db/bin/build +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/env bash - -# stop if any commands fail -set -ex - -ttsc --project tsconfig.codegen.json -node ./bin/codegen.js -ttsc $@ diff --git a/packages/db/package.json b/packages/db/package.json index 3cb05ddbd95..27059c4c649 100644 --- a/packages/db/package.json +++ b/packages/db/package.json @@ -24,6 +24,10 @@ "build": "./bin/build", "clean": "rm -rf ./dist ./types/schema.d.ts", "prepare": "yarn build", + "build": "yarn build:types && yarn build:dist", + "build:stubbed": "ttsc --project tsconfig.codegen.json", + "build:types": "yarn build:stubbed && node ./bin/codegen.js", + "build:dist": "ttsc", "start": "ts-node-dev -r tsconfig-paths/register ./bin/server", "start:debug": "DEBUG=pouchdb:api ts-node-dev -r tsconfig-paths/register ./bin/server", "start:drizzle": "ts-node-dev -r tsconfig-paths/register ./bin/server ./test/truffle-projects/drizzle-box", From 25f59bffa28514a2a95018f2bded9052b54268db Mon Sep 17 00:00:00 2001 From: eggplantzzz Date: Sun, 25 Oct 2020 14:17:40 -0400 Subject: [PATCH 63/63] Bump husky to ^4.3.0 and lint-staged to to ^10.4.2 --- package-lock.json | 11046 ++++++++++++++++++++++++++++++++++++++++++++ package.json | 4 +- 2 files changed, 11048 insertions(+), 2 deletions(-) create mode 100644 package-lock.json diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 00000000000..abdd20b9a37 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,11046 @@ +{ + "requires": true, + "lockfileVersion": 1, + "dependencies": { + "@babel/code-frame": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.10.4.tgz", + "integrity": "sha512-vG6SvB6oYEhvgisZNFRmRCUkLz11c7rp+tbNTynGqc6mS1d5ATd/sGyV6W0KZZnXRKMTzZDRgQT3Ou9jhpAfUg==", + "dev": true, + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/generator": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.12.1.tgz", + "integrity": "sha512-DB+6rafIdc9o72Yc3/Ph5h+6hUjeOp66pF0naQBgUFFuPqzQwIlPTm3xZR7YNvduIMtkDIj2t21LSQwnbCrXvg==", + "dev": true, + "requires": { + "@babel/types": "^7.12.1", + "jsesc": "^2.5.1", + "source-map": "^0.5.0" + } + }, + "@babel/helper-function-name": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.10.4.tgz", + "integrity": "sha512-YdaSyz1n8gY44EmN7x44zBn9zQ1Ry2Y+3GTA+3vH6Mizke1Vw0aWDM66FOYEPw8//qKkmqOckrGgTYa+6sceqQ==", + "dev": true, + "requires": { + "@babel/helper-get-function-arity": "^7.10.4", + "@babel/template": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-get-function-arity": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.10.4.tgz", + "integrity": "sha512-EkN3YDB+SRDgiIUnNgcmiD361ti+AVbL3f3Henf6dqqUyr5dMsorno0lJWJuLhDhkI5sYEpgj6y9kB8AOU1I2A==", + "dev": true, + "requires": { + "@babel/types": "^7.10.4" + } + }, + "@babel/helper-split-export-declaration": { + "version": "7.11.0", + "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.11.0.tgz", + "integrity": "sha512-74Vejvp6mHkGE+m+k5vHY93FX2cAtrw1zXrZXRlG4l410Nm9PxfEiVTn1PjDPV5SnmieiueY4AFg2xqhNFuuZg==", + "dev": true, + "requires": { + "@babel/types": "^7.11.0" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.10.4.tgz", + "integrity": "sha512-3U9y+43hz7ZM+rzG24Qe2mufW5KhvFg/NhnNph+i9mgCtdTCtMJuI1TMkrIUiK7Ix4PYlRF9I5dhqaLYA/ADXw==", + "dev": true + }, + "@babel/highlight": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.10.4.tgz", + "integrity": "sha512-i6rgnR/YgPEQzZZnbTHHuZdlE8qyoBNalD6F+q4vAFlcMEcqmkoG+mPqJYJCo63qPf74+Y1UZsl3l6f7/RIkmA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "chalk": "^2.0.0", + "js-tokens": "^4.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@babel/parser": { + "version": "7.12.3", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.12.3.tgz", + "integrity": "sha512-kFsOS0IbsuhO5ojF8Hc8z/8vEIOkylVBrjiZUbLTE3XFe0Qi+uu6HjzQixkFaqr0ZPAMZcBVxEwmsnsLPZ2Xsw==", + "dev": true + }, + "@babel/template": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.10.4.tgz", + "integrity": "sha512-ZCjD27cGJFUB6nmCB1Enki3r+L5kJveX9pq1SvAUKoICy6CZ9yD8xO086YXdYhvNjBdnekm4ZnaP5yC8Cs/1tA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/parser": "^7.10.4", + "@babel/types": "^7.10.4" + } + }, + "@babel/traverse": { + "version": "7.11.5", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.11.5.tgz", + "integrity": "sha512-EjiPXt+r7LiCZXEfRpSJd+jUMnBd4/9OUv7Nx3+0u9+eimMwJmG0Q98lw4/289JCoxSE8OolDMNZaaF/JZ69WQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.10.4", + "@babel/generator": "^7.11.5", + "@babel/helper-function-name": "^7.10.4", + "@babel/helper-split-export-declaration": "^7.11.0", + "@babel/parser": "^7.11.5", + "@babel/types": "^7.11.5", + "debug": "^4.1.0", + "globals": "^11.1.0", + "lodash": "^4.17.19" + }, + "dependencies": { + "globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true + } + } + }, + "@babel/types": { + "version": "7.12.1", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.12.1.tgz", + "integrity": "sha512-BzSY3NJBKM4kyatSOWh3D/JJ2O3CVzBybHWxtgxnggaxEuaSTTDqeiSb/xk9lrkw2Tbqyivw5ZU4rT+EfznQsA==", + "dev": true, + "requires": { + "@babel/helper-validator-identifier": "^7.10.4", + "lodash": "^4.17.19", + "to-fast-properties": "^2.0.0" + } + }, + "@eslint/eslintrc": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.1.3.tgz", + "integrity": "sha512-4YVwPkANLeNtRjMekzux1ci8hIaH5eGKktGqR0d3LWsKNn5B2X/1Z6Trxy7jQXl9EBGE6Yj02O+t09FMeRllaA==", + "dev": true, + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + } + } + }, + "@evocateur/libnpmaccess": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@evocateur/libnpmaccess/-/libnpmaccess-3.1.2.tgz", + "integrity": "sha512-KSCAHwNWro0CF2ukxufCitT9K5LjL/KuMmNzSu8wuwN2rjyKHD8+cmOsiybK+W5hdnwc5M1SmRlVCaMHQo+3rg==", + "dev": true, + "requires": { + "@evocateur/npm-registry-fetch": "^4.0.0", + "aproba": "^2.0.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "npm-package-arg": "^6.1.0" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + } + } + }, + "@evocateur/libnpmpublish": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@evocateur/libnpmpublish/-/libnpmpublish-1.2.2.tgz", + "integrity": "sha512-MJrrk9ct1FeY9zRlyeoyMieBjGDG9ihyyD9/Ft6MMrTxql9NyoEx2hw9casTIP4CdqEVu+3nQ2nXxoJ8RCXyFg==", + "dev": true, + "requires": { + "@evocateur/npm-registry-fetch": "^4.0.0", + "aproba": "^2.0.0", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.0.0", + "lodash.clonedeep": "^4.5.0", + "normalize-package-data": "^2.4.0", + "npm-package-arg": "^6.1.0", + "semver": "^5.5.1", + "ssri": "^6.0.1" + }, + "dependencies": { + "aproba": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "@evocateur/npm-registry-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@evocateur/npm-registry-fetch/-/npm-registry-fetch-4.0.0.tgz", + "integrity": "sha512-k1WGfKRQyhJpIr+P17O5vLIo2ko1PFLKwoetatdduUSt/aQ4J2sJrJwwatdI5Z3SiYk/mRH9S3JpdmMFd/IK4g==", + "dev": true, + "requires": { + "JSONStream": "^1.3.4", + "bluebird": "^3.5.1", + "figgy-pudding": "^3.4.1", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "npm-package-arg": "^6.1.0", + "safe-buffer": "^5.1.2" + } + }, + "@evocateur/pacote": { + "version": "9.6.5", + "resolved": "https://registry.npmjs.org/@evocateur/pacote/-/pacote-9.6.5.tgz", + "integrity": "sha512-EI552lf0aG2nOV8NnZpTxNo2PcXKPmDbF9K8eCBFQdIZwHNGN/mi815fxtmUMa2wTa1yndotICIDt/V0vpEx2w==", + "dev": true, + "requires": { + "@evocateur/npm-registry-fetch": "^4.0.0", + "bluebird": "^3.5.3", + "cacache": "^12.0.3", + "chownr": "^1.1.2", + "figgy-pudding": "^3.5.1", + "get-stream": "^4.1.0", + "glob": "^7.1.4", + "infer-owner": "^1.0.4", + "lru-cache": "^5.1.1", + "make-fetch-happen": "^5.0.0", + "minimatch": "^3.0.4", + "minipass": "^2.3.5", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "normalize-package-data": "^2.5.0", + "npm-package-arg": "^6.1.0", + "npm-packlist": "^1.4.4", + "npm-pick-manifest": "^3.0.0", + "osenv": "^0.1.5", + "promise-inflight": "^1.0.1", + "promise-retry": "^1.1.1", + "protoduck": "^5.0.1", + "rimraf": "^2.6.3", + "safe-buffer": "^5.2.0", + "semver": "^5.7.0", + "ssri": "^6.0.1", + "tar": "^4.4.10", + "unique-filename": "^1.1.1", + "which": "^1.3.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "@lerna/add": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/@lerna/add/-/add-3.19.0.tgz", + "integrity": "sha512-qzhxPyoczvvT1W0wwCK9I0iJ4B9WR+HzYsusmRuzM3mEhWjowhbuvKEl5BjGYuXc9AvEErM/S0Fm5K0RcuS39Q==", + "dev": true, + "requires": { + "@evocateur/pacote": "^9.6.3", + "@lerna/bootstrap": "3.18.5", + "@lerna/command": "3.18.5", + "@lerna/filter-options": "3.18.4", + "@lerna/npm-conf": "3.16.0", + "@lerna/validation-error": "3.13.0", + "dedent": "^0.7.0", + "npm-package-arg": "^6.1.0", + "p-map": "^2.1.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@lerna/bootstrap": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/bootstrap/-/bootstrap-3.18.5.tgz", + "integrity": "sha512-9vD/BfCz8YSF2Dx7sHaMVo6Cy33WjLEmoN1yrHgNkHjm7ykWbLHG5wru0f4Y4pvwa0s5Hf76rvT8aJWzGHk9IQ==", + "dev": true, + "requires": { + "@lerna/command": "3.18.5", + "@lerna/filter-options": "3.18.4", + "@lerna/has-npm-version": "3.16.5", + "@lerna/npm-install": "3.16.5", + "@lerna/package-graph": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/rimraf-dir": "3.16.5", + "@lerna/run-lifecycle": "3.16.2", + "@lerna/run-topologically": "3.18.5", + "@lerna/symlink-binary": "3.17.0", + "@lerna/symlink-dependencies": "3.17.0", + "@lerna/validation-error": "3.13.0", + "dedent": "^0.7.0", + "get-port": "^4.2.0", + "multimatch": "^3.0.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "p-finally": "^1.0.0", + "p-map": "^2.1.0", + "p-map-series": "^1.0.0", + "p-waterfall": "^1.0.0", + "read-package-tree": "^5.1.6", + "semver": "^6.2.0" + }, + "dependencies": { + "get-port": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/get-port/-/get-port-4.2.0.tgz", + "integrity": "sha512-/b3jarXkH8KJoOMQc3uVGHASwGLPq3gSFJ7tgJm2diza+bydJPTGOibin2steecKeOylE8oY2JERlVWkAJO6yw==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@lerna/changed": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/changed/-/changed-3.18.5.tgz", + "integrity": "sha512-IXS7VZ5VDQUfCsgK56WYxd42luMBxL456cNUf1yBgQ1cy1U2FPVMitIdLN4AcP7bJizdPWeG8yDptf47jN/xVw==", + "dev": true, + "requires": { + "@lerna/collect-updates": "3.18.0", + "@lerna/command": "3.18.5", + "@lerna/listable": "3.18.5", + "@lerna/output": "3.13.0" + } + }, + "@lerna/check-working-tree": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/check-working-tree/-/check-working-tree-3.16.5.tgz", + "integrity": "sha512-xWjVBcuhvB8+UmCSb5tKVLB5OuzSpw96WEhS2uz6hkWVa/Euh1A0/HJwn2cemyK47wUrCQXtczBUiqnq9yX5VQ==", + "dev": true, + "requires": { + "@lerna/collect-uncommitted": "3.16.5", + "@lerna/describe-ref": "3.16.5", + "@lerna/validation-error": "3.13.0" + } + }, + "@lerna/child-process": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/child-process/-/child-process-3.16.5.tgz", + "integrity": "sha512-vdcI7mzei9ERRV4oO8Y1LHBZ3A5+ampRKg1wq5nutLsUA4mEBN6H7JqjWOMY9xZemv6+kATm2ofjJ3lW5TszQg==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "execa": "^1.0.0", + "strong-log-transformer": "^2.0.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@lerna/clean": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/clean/-/clean-3.18.5.tgz", + "integrity": "sha512-tHxOj9frTIhB/H2gtgMU3xpIc4IJEhXcUlReko6RJt8TTiDZGPDudCcgjg6i7n15v9jXMOc1y4F+y5/1089bfA==", + "dev": true, + "requires": { + "@lerna/command": "3.18.5", + "@lerna/filter-options": "3.18.4", + "@lerna/prompt": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/rimraf-dir": "3.16.5", + "p-map": "^2.1.0", + "p-map-series": "^1.0.0", + "p-waterfall": "^1.0.0" + } + }, + "@lerna/cli": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/cli/-/cli-3.18.5.tgz", + "integrity": "sha512-erkbxkj9jfc89vVs/jBLY/fM0I80oLmJkFUV3Q3wk9J3miYhP14zgVEBsPZY68IZlEjT6T3Xlq2xO1AVaatHsA==", + "dev": true, + "requires": { + "@lerna/global-options": "3.13.0", + "dedent": "^0.7.0", + "npmlog": "^4.1.2", + "yargs": "^14.2.2" + }, + "dependencies": { + "yargs": { + "version": "14.2.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-14.2.3.tgz", + "integrity": "sha512-ZbotRWhF+lkjijC/VhmOT9wSgyBQ7+zr13+YLkhfsSiTriYsMzkTUFP18pFhWwBeMa5gUc1MzbhrO6/VB7c9Xg==", + "dev": true, + "requires": { + "cliui": "^5.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^2.0.1", + "require-directory": "^2.1.1", + "require-main-filename": "^2.0.0", + "set-blocking": "^2.0.0", + "string-width": "^3.0.0", + "which-module": "^2.0.0", + "y18n": "^4.0.0", + "yargs-parser": "^15.0.1" + } + }, + "yargs-parser": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-15.0.1.tgz", + "integrity": "sha512-0OAMV2mAZQrs3FkNpDQcBk1x5HXb8X4twADss4S0Iuk+2dGnLOE/fRHrsYm542GduMveyA77OF4wrNJuanRCWw==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "@lerna/collect-uncommitted": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/collect-uncommitted/-/collect-uncommitted-3.16.5.tgz", + "integrity": "sha512-ZgqnGwpDZiWyzIQVZtQaj9tRizsL4dUOhuOStWgTAw1EMe47cvAY2kL709DzxFhjr6JpJSjXV5rZEAeU3VE0Hg==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "chalk": "^2.3.1", + "figgy-pudding": "^3.5.1", + "npmlog": "^4.1.2" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@lerna/collect-updates": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/@lerna/collect-updates/-/collect-updates-3.18.0.tgz", + "integrity": "sha512-LJMKgWsE/var1RSvpKDIxS8eJ7POADEc0HM3FQiTpEczhP6aZfv9x3wlDjaHpZm9MxJyQilqxZcasRANmRcNgw==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/describe-ref": "3.16.5", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@lerna/command": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/command/-/command-3.18.5.tgz", + "integrity": "sha512-36EnqR59yaTU4HrR1C9XDFti2jRx0BgpIUBeWn129LZZB8kAB3ov1/dJNa1KcNRKp91DncoKHLY99FZ6zTNpMQ==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/package-graph": "3.18.5", + "@lerna/project": "3.18.0", + "@lerna/validation-error": "3.13.0", + "@lerna/write-log-file": "3.13.0", + "clone-deep": "^4.0.1", + "dedent": "^0.7.0", + "execa": "^1.0.0", + "is-ci": "^2.0.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/conventional-commits": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/conventional-commits/-/conventional-commits-3.18.5.tgz", + "integrity": "sha512-qcvXIEJ3qSgalxXnQ7Yxp5H9Ta5TVyai6vEor6AAEHc20WiO7UIdbLDCxBtiiHMdGdpH85dTYlsoYUwsCJu3HQ==", + "dev": true, + "requires": { + "@lerna/validation-error": "3.13.0", + "conventional-changelog-angular": "^5.0.3", + "conventional-changelog-core": "^3.1.6", + "conventional-recommended-bump": "^5.0.0", + "fs-extra": "^8.1.0", + "get-stream": "^4.0.0", + "lodash.template": "^4.5.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "pify": "^4.0.1", + "semver": "^6.2.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@lerna/create": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/create/-/create-3.18.5.tgz", + "integrity": "sha512-cHpjocbpKmLopCuZFI7cKEM3E/QY8y+yC7VtZ4FQRSaLU8D8i2xXtXmYaP1GOlVNavji0iwoXjuNpnRMInIr2g==", + "dev": true, + "requires": { + "@evocateur/pacote": "^9.6.3", + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.18.5", + "@lerna/npm-conf": "3.16.0", + "@lerna/validation-error": "3.13.0", + "camelcase": "^5.0.0", + "dedent": "^0.7.0", + "fs-extra": "^8.1.0", + "globby": "^9.2.0", + "init-package-json": "^1.10.3", + "npm-package-arg": "^6.1.0", + "p-reduce": "^1.0.0", + "pify": "^4.0.1", + "semver": "^6.2.0", + "slash": "^2.0.0", + "validate-npm-package-license": "^3.0.3", + "validate-npm-package-name": "^3.0.0", + "whatwg-url": "^7.0.0" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "@lerna/create-symlink": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/@lerna/create-symlink/-/create-symlink-3.16.2.tgz", + "integrity": "sha512-pzXIJp6av15P325sgiIRpsPXLFmkisLhMBCy4764d+7yjf2bzrJ4gkWVMhsv4AdF0NN3OyZ5jjzzTtLNqfR+Jw==", + "dev": true, + "requires": { + "@zkochan/cmd-shim": "^3.1.0", + "fs-extra": "^8.1.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/describe-ref": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/describe-ref/-/describe-ref-3.16.5.tgz", + "integrity": "sha512-c01+4gUF0saOOtDBzbLMFOTJDHTKbDFNErEY6q6i9QaXuzy9LNN62z+Hw4acAAZuJQhrVWncVathcmkkjvSVGw==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "npmlog": "^4.1.2" + } + }, + "@lerna/diff": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/diff/-/diff-3.18.5.tgz", + "integrity": "sha512-u90lGs+B8DRA9Z/2xX4YaS3h9X6GbypmGV6ITzx9+1Ga12UWGTVlKaCXBgONMBjzJDzAQOK8qPTwLA57SeBLgA==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.18.5", + "@lerna/validation-error": "3.13.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/exec": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/exec/-/exec-3.18.5.tgz", + "integrity": "sha512-Q1nz95MeAxctS9bF+aG8FkjixzqEjRpg6ujtnDW84J42GgxedkPtNcJ2o/MBqLd/mxAlr+fW3UZ6CPC/zgoyCg==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.18.5", + "@lerna/filter-options": "3.18.4", + "@lerna/run-topologically": "3.18.5", + "@lerna/validation-error": "3.13.0", + "p-map": "^2.1.0" + } + }, + "@lerna/filter-options": { + "version": "3.18.4", + "resolved": "https://registry.npmjs.org/@lerna/filter-options/-/filter-options-3.18.4.tgz", + "integrity": "sha512-4giVQD6tauRwweO/322LP2gfVDOVrt/xN4khkXyfkJDfcsZziFXq+668otD9KSLL8Ps+To4Fah3XbK0MoNuEvA==", + "dev": true, + "requires": { + "@lerna/collect-updates": "3.18.0", + "@lerna/filter-packages": "3.18.0", + "dedent": "^0.7.0", + "figgy-pudding": "^3.5.1", + "npmlog": "^4.1.2" + } + }, + "@lerna/filter-packages": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/@lerna/filter-packages/-/filter-packages-3.18.0.tgz", + "integrity": "sha512-6/0pMM04bCHNATIOkouuYmPg6KH3VkPCIgTfQmdkPJTullERyEQfNUKikrefjxo1vHOoCACDpy65JYyKiAbdwQ==", + "dev": true, + "requires": { + "@lerna/validation-error": "3.13.0", + "multimatch": "^3.0.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/get-npm-exec-opts": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/get-npm-exec-opts/-/get-npm-exec-opts-3.13.0.tgz", + "integrity": "sha512-Y0xWL0rg3boVyJk6An/vurKzubyJKtrxYv2sj4bB8Mc5zZ3tqtv0ccbOkmkXKqbzvNNF7VeUt1OJ3DRgtC/QZw==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/get-packed": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/get-packed/-/get-packed-3.16.0.tgz", + "integrity": "sha512-AjsFiaJzo1GCPnJUJZiTW6J1EihrPkc2y3nMu6m3uWFxoleklsSCyImumzVZJssxMi3CPpztj8LmADLedl9kXw==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "ssri": "^6.0.1", + "tar": "^4.4.8" + } + }, + "@lerna/github-client": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/github-client/-/github-client-3.16.5.tgz", + "integrity": "sha512-rHQdn8Dv/CJrO3VouOP66zAcJzrHsm+wFuZ4uGAai2At2NkgKH+tpNhQy2H1PSC0Ezj9LxvdaHYrUzULqVK5Hw==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@octokit/plugin-enterprise-rest": "^3.6.1", + "@octokit/rest": "^16.28.4", + "git-url-parse": "^11.1.2", + "npmlog": "^4.1.2" + } + }, + "@lerna/gitlab-client": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/@lerna/gitlab-client/-/gitlab-client-3.15.0.tgz", + "integrity": "sha512-OsBvRSejHXUBMgwWQqNoioB8sgzL/Pf1pOUhHKtkiMl6aAWjklaaq5HPMvTIsZPfS6DJ9L5OK2GGZuooP/5c8Q==", + "dev": true, + "requires": { + "node-fetch": "^2.5.0", + "npmlog": "^4.1.2", + "whatwg-url": "^7.0.0" + } + }, + "@lerna/global-options": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/global-options/-/global-options-3.13.0.tgz", + "integrity": "sha512-SlZvh1gVRRzYLVluz9fryY1nJpZ0FHDGB66U9tFfvnnxmueckRQxLopn3tXj3NU1kc3QANT2I5BsQkOqZ4TEFQ==", + "dev": true + }, + "@lerna/has-npm-version": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/has-npm-version/-/has-npm-version-3.16.5.tgz", + "integrity": "sha512-WL7LycR9bkftyqbYop5rEGJ9sRFIV55tSGmbN1HLrF9idwOCD7CLrT64t235t3t4O5gehDnwKI5h2U3oxTrF8Q==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@lerna/import": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/import/-/import-3.18.5.tgz", + "integrity": "sha512-PH0WVLEgp+ORyNKbGGwUcrueW89K3Iuk/DDCz8mFyG2IG09l/jOF0vzckEyGyz6PO5CMcz4TI1al/qnp3FrahQ==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.18.5", + "@lerna/prompt": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/validation-error": "3.13.0", + "dedent": "^0.7.0", + "fs-extra": "^8.1.0", + "p-map-series": "^1.0.0" + } + }, + "@lerna/init": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/init/-/init-3.18.5.tgz", + "integrity": "sha512-oCwipWrha98EcJAHm8AGd2YFFLNI7AW9AWi0/LbClj1+XY9ah+uifXIgYGfTk63LbgophDd8936ZEpHMxBsbAg==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/command": "3.18.5", + "fs-extra": "^8.1.0", + "p-map": "^2.1.0", + "write-json-file": "^3.2.0" + } + }, + "@lerna/link": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/link/-/link-3.18.5.tgz", + "integrity": "sha512-xTN3vktJpkT7Nqc3QkZRtHO4bT5NvuLMtKNIBDkks0HpGxC9PRyyqwOoCoh1yOGbrWIuDezhfMg3Qow+6I69IQ==", + "dev": true, + "requires": { + "@lerna/command": "3.18.5", + "@lerna/package-graph": "3.18.5", + "@lerna/symlink-dependencies": "3.17.0", + "p-map": "^2.1.0", + "slash": "^2.0.0" + }, + "dependencies": { + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@lerna/list": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/list/-/list-3.18.5.tgz", + "integrity": "sha512-qIeomm28C2OCM8TMjEe/chTnQf6XLN54wPVQ6kZy+axMYxANFNt/uhs6GZEmhem7GEVawzkyHSz5ZJPsfH3IFg==", + "dev": true, + "requires": { + "@lerna/command": "3.18.5", + "@lerna/filter-options": "3.18.4", + "@lerna/listable": "3.18.5", + "@lerna/output": "3.13.0" + } + }, + "@lerna/listable": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/listable/-/listable-3.18.5.tgz", + "integrity": "sha512-Sdr3pVyaEv5A7ZkGGYR7zN+tTl2iDcinryBPvtuv20VJrXBE8wYcOks1edBTcOWsPjCE/rMP4bo1pseyk3UTsg==", + "dev": true, + "requires": { + "@lerna/query-graph": "3.18.5", + "chalk": "^2.3.1", + "columnify": "^1.5.4" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "@lerna/log-packed": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/log-packed/-/log-packed-3.16.0.tgz", + "integrity": "sha512-Fp+McSNBV/P2mnLUYTaSlG8GSmpXM7krKWcllqElGxvAqv6chk2K3c2k80MeVB4WvJ9tRjUUf+i7HUTiQ9/ckQ==", + "dev": true, + "requires": { + "byte-size": "^5.0.1", + "columnify": "^1.5.4", + "has-unicode": "^2.0.1", + "npmlog": "^4.1.2" + } + }, + "@lerna/npm-conf": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/npm-conf/-/npm-conf-3.16.0.tgz", + "integrity": "sha512-HbO3DUrTkCAn2iQ9+FF/eisDpWY5POQAOF1m7q//CZjdC2HSW3UYbKEGsSisFxSfaF9Z4jtrV+F/wX6qWs3CuA==", + "dev": true, + "requires": { + "config-chain": "^1.1.11", + "pify": "^4.0.1" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "@lerna/npm-dist-tag": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-dist-tag/-/npm-dist-tag-3.18.5.tgz", + "integrity": "sha512-xw0HDoIG6HreVsJND9/dGls1c+lf6vhu7yJoo56Sz5bvncTloYGLUppIfDHQr4ZvmPCK8rsh0euCVh2giPxzKQ==", + "dev": true, + "requires": { + "@evocateur/npm-registry-fetch": "^4.0.0", + "@lerna/otplease": "3.18.5", + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/npm-install": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-install/-/npm-install-3.16.5.tgz", + "integrity": "sha512-hfiKk8Eku6rB9uApqsalHHTHY+mOrrHeWEs+gtg7+meQZMTS3kzv4oVp5cBZigndQr3knTLjwthT/FX4KvseFg==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/get-npm-exec-opts": "3.13.0", + "fs-extra": "^8.1.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "signal-exit": "^3.0.2", + "write-pkg": "^3.1.0" + } + }, + "@lerna/npm-publish": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-publish/-/npm-publish-3.18.5.tgz", + "integrity": "sha512-3etLT9+2L8JAx5F8uf7qp6iAtOLSMj+ZYWY6oUgozPi/uLqU0/gsMsEXh3F0+YVW33q0M61RpduBoAlOOZnaTg==", + "dev": true, + "requires": { + "@evocateur/libnpmpublish": "^1.2.2", + "@lerna/otplease": "3.18.5", + "@lerna/run-lifecycle": "3.16.2", + "figgy-pudding": "^3.5.1", + "fs-extra": "^8.1.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "pify": "^4.0.1", + "read-package-json": "^2.0.13" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + } + } + }, + "@lerna/npm-run-script": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/npm-run-script/-/npm-run-script-3.16.5.tgz", + "integrity": "sha512-1asRi+LjmVn3pMjEdpqKJZFT/3ZNpb+VVeJMwrJaV/3DivdNg7XlPK9LTrORuKU4PSvhdEZvJmSlxCKyDpiXsQ==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "@lerna/get-npm-exec-opts": "3.13.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/otplease": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/otplease/-/otplease-3.18.5.tgz", + "integrity": "sha512-S+SldXAbcXTEDhzdxYLU0ZBKuYyURP/ND2/dK6IpKgLxQYh/z4ScljPDMyKymmEvgiEJmBsPZAAPfmNPEzxjog==", + "dev": true, + "requires": { + "@lerna/prompt": "3.18.5", + "figgy-pudding": "^3.5.1" + } + }, + "@lerna/output": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/output/-/output-3.13.0.tgz", + "integrity": "sha512-7ZnQ9nvUDu/WD+bNsypmPG5MwZBwu86iRoiW6C1WBuXXDxM5cnIAC1m2WxHeFnjyMrYlRXM9PzOQ9VDD+C15Rg==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/pack-directory": { + "version": "3.16.4", + "resolved": "https://registry.npmjs.org/@lerna/pack-directory/-/pack-directory-3.16.4.tgz", + "integrity": "sha512-uxSF0HZeGyKaaVHz5FroDY9A5NDDiCibrbYR6+khmrhZtY0Bgn6hWq8Gswl9iIlymA+VzCbshWIMX4o2O8C8ng==", + "dev": true, + "requires": { + "@lerna/get-packed": "3.16.0", + "@lerna/package": "3.16.0", + "@lerna/run-lifecycle": "3.16.2", + "figgy-pudding": "^3.5.1", + "npm-packlist": "^1.4.4", + "npmlog": "^4.1.2", + "tar": "^4.4.10", + "temp-write": "^3.4.0" + } + }, + "@lerna/package": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/package/-/package-3.16.0.tgz", + "integrity": "sha512-2lHBWpaxcBoiNVbtyLtPUuTYEaB/Z+eEqRS9duxpZs6D+mTTZMNy6/5vpEVSCBmzvdYpyqhqaYjjSLvjjr5Riw==", + "dev": true, + "requires": { + "load-json-file": "^5.3.0", + "npm-package-arg": "^6.1.0", + "write-pkg": "^3.1.0" + } + }, + "@lerna/package-graph": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/package-graph/-/package-graph-3.18.5.tgz", + "integrity": "sha512-8QDrR9T+dBegjeLr+n9WZTVxUYUhIUjUgZ0gvNxUBN8S1WB9r6H5Yk56/MVaB64tA3oGAN9IIxX6w0WvTfFudA==", + "dev": true, + "requires": { + "@lerna/prerelease-id-from-version": "3.16.0", + "@lerna/validation-error": "3.13.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@lerna/prerelease-id-from-version": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/prerelease-id-from-version/-/prerelease-id-from-version-3.16.0.tgz", + "integrity": "sha512-qZyeUyrE59uOK8rKdGn7jQz+9uOpAaF/3hbslJVFL1NqF9ELDTqjCPXivuejMX/lN4OgD6BugTO4cR7UTq/sZA==", + "dev": true, + "requires": { + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@lerna/project": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/@lerna/project/-/project-3.18.0.tgz", + "integrity": "sha512-+LDwvdAp0BurOAWmeHE3uuticsq9hNxBI0+FMHiIai8jrygpJGahaQrBYWpwbshbQyVLeQgx3+YJdW2TbEdFWA==", + "dev": true, + "requires": { + "@lerna/package": "3.16.0", + "@lerna/validation-error": "3.13.0", + "cosmiconfig": "^5.1.0", + "dedent": "^0.7.0", + "dot-prop": "^4.2.0", + "glob-parent": "^5.0.0", + "globby": "^9.2.0", + "load-json-file": "^5.3.0", + "npmlog": "^4.1.2", + "p-map": "^2.1.0", + "resolve-from": "^4.0.0", + "write-json-file": "^3.2.0" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "dir-glob": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.2.2.tgz", + "integrity": "sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==", + "dev": true, + "requires": { + "path-type": "^3.0.0" + } + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + }, + "dependencies": { + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + } + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "globby": { + "version": "9.2.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-9.2.0.tgz", + "integrity": "sha512-ollPHROa5mcxDEkwg6bPt3QbEf4pDQSNtd6JPL1YvOvAo/7/0VAm9TccUeoTmarjPw4pfUthSCqcyfNB1I3ZSg==", + "dev": true, + "requires": { + "@types/glob": "^7.1.1", + "array-union": "^1.0.2", + "dir-glob": "^2.2.2", + "fast-glob": "^2.2.6", + "glob": "^7.1.3", + "ignore": "^4.0.3", + "pify": "^4.0.1", + "slash": "^2.0.0" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + }, + "dependencies": { + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + } + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + } + } + }, + "@lerna/prompt": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/prompt/-/prompt-3.18.5.tgz", + "integrity": "sha512-rkKj4nm1twSbBEb69+Em/2jAERK8htUuV8/xSjN0NPC+6UjzAwY52/x9n5cfmpa9lyKf/uItp7chCI7eDmNTKQ==", + "dev": true, + "requires": { + "inquirer": "^6.2.0", + "npmlog": "^4.1.2" + } + }, + "@lerna/publish": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/publish/-/publish-3.18.5.tgz", + "integrity": "sha512-ifYqLX6mvw95T8vYRlhT68UC7Al0flQvnf5uF9lDgdrgR5Bs+BTwzk3D+0ctdqMtfooekrV6pqfW0R3gtwRffQ==", + "dev": true, + "requires": { + "@evocateur/libnpmaccess": "^3.1.2", + "@evocateur/npm-registry-fetch": "^4.0.0", + "@evocateur/pacote": "^9.6.3", + "@lerna/check-working-tree": "3.16.5", + "@lerna/child-process": "3.16.5", + "@lerna/collect-updates": "3.18.0", + "@lerna/command": "3.18.5", + "@lerna/describe-ref": "3.16.5", + "@lerna/log-packed": "3.16.0", + "@lerna/npm-conf": "3.16.0", + "@lerna/npm-dist-tag": "3.18.5", + "@lerna/npm-publish": "3.18.5", + "@lerna/otplease": "3.18.5", + "@lerna/output": "3.13.0", + "@lerna/pack-directory": "3.16.4", + "@lerna/prerelease-id-from-version": "3.16.0", + "@lerna/prompt": "3.18.5", + "@lerna/pulse-till-done": "3.13.0", + "@lerna/run-lifecycle": "3.16.2", + "@lerna/run-topologically": "3.18.5", + "@lerna/validation-error": "3.13.0", + "@lerna/version": "3.18.5", + "figgy-pudding": "^3.5.1", + "fs-extra": "^8.1.0", + "npm-package-arg": "^6.1.0", + "npmlog": "^4.1.2", + "p-finally": "^1.0.0", + "p-map": "^2.1.0", + "p-pipe": "^1.2.0", + "semver": "^6.2.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "@lerna/pulse-till-done": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/pulse-till-done/-/pulse-till-done-3.13.0.tgz", + "integrity": "sha512-1SOHpy7ZNTPulzIbargrgaJX387csN7cF1cLOGZiJQA6VqnS5eWs2CIrG8i8wmaUavj2QlQ5oEbRMVVXSsGrzA==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/query-graph": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/query-graph/-/query-graph-3.18.5.tgz", + "integrity": "sha512-50Lf4uuMpMWvJ306be3oQDHrWV42nai9gbIVByPBYJuVW8dT8O8pA3EzitNYBUdLL9/qEVbrR0ry1HD7EXwtRA==", + "dev": true, + "requires": { + "@lerna/package-graph": "3.18.5", + "figgy-pudding": "^3.5.1" + } + }, + "@lerna/resolve-symlink": { + "version": "3.16.0", + "resolved": "https://registry.npmjs.org/@lerna/resolve-symlink/-/resolve-symlink-3.16.0.tgz", + "integrity": "sha512-Ibj5e7njVHNJ/NOqT4HlEgPFPtPLWsO7iu59AM5bJDcAJcR96mLZ7KGVIsS2tvaO7akMEJvt2P+ErwCdloG3jQ==", + "dev": true, + "requires": { + "fs-extra": "^8.1.0", + "npmlog": "^4.1.2", + "read-cmd-shim": "^1.0.1" + } + }, + "@lerna/rimraf-dir": { + "version": "3.16.5", + "resolved": "https://registry.npmjs.org/@lerna/rimraf-dir/-/rimraf-dir-3.16.5.tgz", + "integrity": "sha512-bQlKmO0pXUsXoF8lOLknhyQjOZsCc0bosQDoX4lujBXSWxHVTg1VxURtWf2lUjz/ACsJVDfvHZbDm8kyBk5okA==", + "dev": true, + "requires": { + "@lerna/child-process": "3.16.5", + "npmlog": "^4.1.2", + "path-exists": "^3.0.0", + "rimraf": "^2.6.2" + } + }, + "@lerna/run": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/run/-/run-3.18.5.tgz", + "integrity": "sha512-1S0dZccNJO8+gT5ztYE4rHTEnbXVwThHOfDnlVt2KDxl9cbnBALk3xprGLW7lSzJsxegS849hxrAPUh0UorMgw==", + "dev": true, + "requires": { + "@lerna/command": "3.18.5", + "@lerna/filter-options": "3.18.4", + "@lerna/npm-run-script": "3.16.5", + "@lerna/output": "3.13.0", + "@lerna/run-topologically": "3.18.5", + "@lerna/timer": "3.13.0", + "@lerna/validation-error": "3.13.0", + "p-map": "^2.1.0" + } + }, + "@lerna/run-lifecycle": { + "version": "3.16.2", + "resolved": "https://registry.npmjs.org/@lerna/run-lifecycle/-/run-lifecycle-3.16.2.tgz", + "integrity": "sha512-RqFoznE8rDpyyF0rOJy3+KjZCeTkO8y/OB9orPauR7G2xQ7PTdCpgo7EO6ZNdz3Al+k1BydClZz/j78gNCmL2A==", + "dev": true, + "requires": { + "@lerna/npm-conf": "3.16.0", + "figgy-pudding": "^3.5.1", + "npm-lifecycle": "^3.1.2", + "npmlog": "^4.1.2" + } + }, + "@lerna/run-topologically": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/run-topologically/-/run-topologically-3.18.5.tgz", + "integrity": "sha512-6N1I+6wf4hLOnPW+XDZqwufyIQ6gqoPfHZFkfWlvTQ+Ue7CuF8qIVQ1Eddw5HKQMkxqN10thKOFfq/9NQZ4NUg==", + "dev": true, + "requires": { + "@lerna/query-graph": "3.18.5", + "figgy-pudding": "^3.5.1", + "p-queue": "^4.0.0" + } + }, + "@lerna/symlink-binary": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-binary/-/symlink-binary-3.17.0.tgz", + "integrity": "sha512-RLpy9UY6+3nT5J+5jkM5MZyMmjNHxZIZvXLV+Q3MXrf7Eaa1hNqyynyj4RO95fxbS+EZc4XVSk25DGFQbcRNSQ==", + "dev": true, + "requires": { + "@lerna/create-symlink": "3.16.2", + "@lerna/package": "3.16.0", + "fs-extra": "^8.1.0", + "p-map": "^2.1.0" + } + }, + "@lerna/symlink-dependencies": { + "version": "3.17.0", + "resolved": "https://registry.npmjs.org/@lerna/symlink-dependencies/-/symlink-dependencies-3.17.0.tgz", + "integrity": "sha512-KmjU5YT1bpt6coOmdFueTJ7DFJL4H1w5eF8yAQ2zsGNTtZ+i5SGFBWpb9AQaw168dydc3s4eu0W0Sirda+F59Q==", + "dev": true, + "requires": { + "@lerna/create-symlink": "3.16.2", + "@lerna/resolve-symlink": "3.16.0", + "@lerna/symlink-binary": "3.17.0", + "fs-extra": "^8.1.0", + "p-finally": "^1.0.0", + "p-map": "^2.1.0", + "p-map-series": "^1.0.0" + } + }, + "@lerna/timer": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/timer/-/timer-3.13.0.tgz", + "integrity": "sha512-RHWrDl8U4XNPqY5MQHkToWS9jHPnkLZEt5VD+uunCKTfzlxGnRCr3/zVr8VGy/uENMYpVP3wJa4RKGY6M0vkRw==", + "dev": true + }, + "@lerna/validation-error": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/validation-error/-/validation-error-3.13.0.tgz", + "integrity": "sha512-SiJP75nwB8GhgwLKQfdkSnDufAaCbkZWJqEDlKOUPUvVOplRGnfL+BPQZH5nvq2BYSRXsksXWZ4UHVnQZI/HYA==", + "dev": true, + "requires": { + "npmlog": "^4.1.2" + } + }, + "@lerna/version": { + "version": "3.18.5", + "resolved": "https://registry.npmjs.org/@lerna/version/-/version-3.18.5.tgz", + "integrity": "sha512-eSMxLIDuVxZIq0JZKNih50x1IZuMmViwF59uwOGMx0hHB84N3waE8HXOF9CJXDSjeP6sHB8tS+Y+X5fFpBop2Q==", + "dev": true, + "requires": { + "@lerna/check-working-tree": "3.16.5", + "@lerna/child-process": "3.16.5", + "@lerna/collect-updates": "3.18.0", + "@lerna/command": "3.18.5", + "@lerna/conventional-commits": "3.18.5", + "@lerna/github-client": "3.16.5", + "@lerna/gitlab-client": "3.15.0", + "@lerna/output": "3.13.0", + "@lerna/prerelease-id-from-version": "3.16.0", + "@lerna/prompt": "3.18.5", + "@lerna/run-lifecycle": "3.16.2", + "@lerna/run-topologically": "3.18.5", + "@lerna/validation-error": "3.13.0", + "chalk": "^2.3.1", + "dedent": "^0.7.0", + "load-json-file": "^5.3.0", + "minimatch": "^3.0.4", + "npmlog": "^4.1.2", + "p-map": "^2.1.0", + "p-pipe": "^1.2.0", + "p-reduce": "^1.0.0", + "p-waterfall": "^1.0.0", + "semver": "^6.2.0", + "slash": "^2.0.0", + "temp-write": "^3.4.0", + "write-json-file": "^3.2.0" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "slash": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-2.0.0.tgz", + "integrity": "sha512-ZYKh3Wh2z1PpEXWr0MpSBZ0V6mZHAQfYevttO11c51CaWjGTaadiKZ+wVt1PbMlDV5qhMFslpZCemhwOK7C89A==", + "dev": true + } + } + }, + "@lerna/write-log-file": { + "version": "3.13.0", + "resolved": "https://registry.npmjs.org/@lerna/write-log-file/-/write-log-file-3.13.0.tgz", + "integrity": "sha512-RibeMnDPvlL8bFYW5C8cs4mbI3AHfQef73tnJCQ/SgrXZHehmHnsyWUiE7qDQCAo+B1RfTapvSyFF69iPj326A==", + "dev": true, + "requires": { + "npmlog": "^4.1.2", + "write-file-atomic": "^2.3.0" + } + }, + "@mrmlnc/readdir-enhanced": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/@mrmlnc/readdir-enhanced/-/readdir-enhanced-2.2.1.tgz", + "integrity": "sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==", + "dev": true, + "requires": { + "call-me-maybe": "^1.0.1", + "glob-to-regexp": "^0.3.0" + } + }, + "@nodelib/fs.scandir": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.3.tgz", + "integrity": "sha512-eGmwYQn3gxo4r7jdQnkrrN6bY478C3P+a/y72IJukF8LjB6ZHeB3c+Ehacj3sYeSmUXGlnA67/PmbM9CVwL7Dw==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "2.0.3", + "run-parallel": "^1.1.9" + } + }, + "@nodelib/fs.stat": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.3.tgz", + "integrity": "sha512-bQBFruR2TAwoevBEd/NWMoAAtNGzTRgdrqnYCc7dhzfoNvqPzLyqlEQnzZ3kVnNrSp25iyxE00/3h2fqGAGArA==", + "dev": true + }, + "@nodelib/fs.walk": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.4.tgz", + "integrity": "sha512-1V9XOY4rDW0rehzbrcqAmHnz8e7SKvX27gh8Gt2WgB0+pdzdiLV83p72kZPU+jvMbS1qU5mauP2iOvO8rhmurQ==", + "dev": true, + "requires": { + "@nodelib/fs.scandir": "2.1.3", + "fastq": "^1.6.0" + } + }, + "@octokit/auth-token": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-2.4.2.tgz", + "integrity": "sha512-jE/lE/IKIz2v1+/P0u4fJqv0kYwXOTujKemJMFr6FeopsxlIK3+wKDCJGnysg81XID5TgZQbIfuJ5J0lnTiuyQ==", + "dev": true, + "requires": { + "@octokit/types": "^5.0.0" + } + }, + "@octokit/endpoint": { + "version": "6.0.8", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-6.0.8.tgz", + "integrity": "sha512-MuRrgv+bM4Q+e9uEvxAB/Kf+Sj0O2JAOBA131uo1o6lgdq1iS8ejKwtqHgdfY91V3rN9R/hdGKFiQYMzVzVBEQ==", + "dev": true, + "requires": { + "@octokit/types": "^5.0.0", + "is-plain-object": "^5.0.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + } + } + }, + "@octokit/plugin-enterprise-rest": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-enterprise-rest/-/plugin-enterprise-rest-3.6.2.tgz", + "integrity": "sha512-3wF5eueS5OHQYuAEudkpN+xVeUsg8vYEMMenEzLphUZ7PRZ8OJtDcsreL3ad9zxXmBbaFWzLmFcdob5CLyZftA==", + "dev": true + }, + "@octokit/plugin-paginate-rest": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-1.1.2.tgz", + "integrity": "sha512-jbsSoi5Q1pj63sC16XIUboklNw+8tL9VOnJsWycWYR78TKss5PVpIPb1TUUcMQ+bBh7cY579cVAWmf5qG+dw+Q==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.1" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + } + } + }, + "@octokit/plugin-request-log": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-1.0.2.tgz", + "integrity": "sha512-oTJSNAmBqyDR41uSMunLQKMX0jmEXbwD1fpz8FG27lScV3RhtGfBa1/BBLym+PxcC16IBlF7KH9vP1BUYxA+Eg==", + "dev": true + }, + "@octokit/plugin-rest-endpoint-methods": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-2.4.0.tgz", + "integrity": "sha512-EZi/AWhtkdfAYi01obpX0DF7U6b1VRr30QNQ5xSFPITMdLSfhcBqjamE3F+sKcxPbD7eZuMHu3Qkk2V+JGxBDQ==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.1", + "deprecation": "^2.3.1" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + } + } + }, + "@octokit/request": { + "version": "5.4.9", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-5.4.9.tgz", + "integrity": "sha512-CzwVvRyimIM1h2n9pLVYfTDmX9m+KHSgCpqPsY8F1NdEK8IaWqXhSBXsdjOBFZSpEcxNEeg4p0UO9cQ8EnOCLA==", + "dev": true, + "requires": { + "@octokit/endpoint": "^6.0.1", + "@octokit/request-error": "^2.0.0", + "@octokit/types": "^5.0.0", + "deprecation": "^2.0.0", + "is-plain-object": "^5.0.0", + "node-fetch": "^2.6.1", + "once": "^1.4.0", + "universal-user-agent": "^6.0.0" + }, + "dependencies": { + "@octokit/request-error": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-2.0.2.tgz", + "integrity": "sha512-2BrmnvVSV1MXQvEkrb9zwzP0wXFNbPJij922kYBTLIlIafukrGOb+ABBT2+c6wZiuyWDH1K1zmjGQ0toN/wMWw==", + "dev": true, + "requires": { + "@octokit/types": "^5.0.1", + "deprecation": "^2.0.0", + "once": "^1.4.0" + } + }, + "is-plain-object": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", + "dev": true + }, + "universal-user-agent": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.0.tgz", + "integrity": "sha512-isyNax3wXoKaulPDZWHQqbmIx1k2tb9fb3GGDBRxCscfYV2Ch7WxPArBsFEG8s/safwXTT7H4QGhaIkTp9447w==", + "dev": true + } + } + }, + "@octokit/request-error": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-1.2.1.tgz", + "integrity": "sha512-+6yDyk1EES6WK+l3viRDElw96MvwfJxCt45GvmjDUKWjYIb3PJZQkq3i46TwGwoPD4h8NmTrENmtyA1FwbmhRA==", + "dev": true, + "requires": { + "@octokit/types": "^2.0.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "dependencies": { + "@octokit/types": { + "version": "2.16.2", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-2.16.2.tgz", + "integrity": "sha512-O75k56TYvJ8WpAakWwYRN8Bgu60KrmX0z1KqFp1kNiFNkgW+JW+9EBKZ+S33PU6SLvbihqd+3drvPxKK68Ee8Q==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + } + } + }, + "@octokit/rest": { + "version": "16.43.2", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-16.43.2.tgz", + "integrity": "sha512-ngDBevLbBTFfrHZeiS7SAMAZ6ssuVmXuya+F/7RaVvlysgGa1JKJkKWY+jV6TCJYcW0OALfJ7nTIGXcBXzycfQ==", + "dev": true, + "requires": { + "@octokit/auth-token": "^2.4.0", + "@octokit/plugin-paginate-rest": "^1.1.1", + "@octokit/plugin-request-log": "^1.0.0", + "@octokit/plugin-rest-endpoint-methods": "2.4.0", + "@octokit/request": "^5.2.0", + "@octokit/request-error": "^1.0.2", + "atob-lite": "^2.0.0", + "before-after-hook": "^2.0.0", + "btoa-lite": "^1.0.0", + "deprecation": "^2.0.0", + "lodash.get": "^4.4.2", + "lodash.set": "^4.3.2", + "lodash.uniq": "^4.5.0", + "octokit-pagination-methods": "^1.1.0", + "once": "^1.4.0", + "universal-user-agent": "^4.0.0" + } + }, + "@octokit/types": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-5.5.0.tgz", + "integrity": "sha512-UZ1pErDue6bZNjYOotCNveTXArOMZQFG6hKJfOnGnulVCMcVVi7YIIuuR4WfBhjo7zgpmzn/BkPDnUXtNx+PcQ==", + "dev": true, + "requires": { + "@types/node": ">= 8" + } + }, + "@types/glob": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/glob/-/glob-7.1.3.tgz", + "integrity": "sha512-SEYeGAIQIQX8NN6LDKprLjbrd5dARM5EXsd8GI/A5l0apYI1fGMWgPHSe4ZKL4eozlAyI+doUE9XbYS4xCkQ1w==", + "dev": true, + "requires": { + "@types/minimatch": "*", + "@types/node": "*" + } + }, + "@types/json-schema": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.3.tgz", + "integrity": "sha512-Il2DtDVRGDcqjDtE+rF8iqg1CArehSK84HZJCT7AMITlyXRBpuPhqGLDQMowraqqu1coEaimg4ZOqggt6L6L+A==", + "dev": true + }, + "@types/minimatch": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/minimatch/-/minimatch-3.0.3.tgz", + "integrity": "sha512-tHq6qdbT9U1IRSGf14CL0pUlULksvY9OZ+5eEgl1N7t+OA3tGvNpxJCzuKQlsNgCVwbAs670L1vcVQi8j9HjnA==", + "dev": true + }, + "@types/minimist": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.0.tgz", + "integrity": "sha1-aaI6OtKcrwCX8G7aWbNh7i8GOfY=", + "dev": true + }, + "@types/node": { + "version": "14.14.2", + "resolved": "https://registry.npmjs.org/@types/node/-/node-14.14.2.tgz", + "integrity": "sha512-jeYJU2kl7hL9U5xuI/BhKPZ4vqGM/OmK6whiFAXVhlstzZhVamWhDSmHyGLIp+RVyuF9/d0dqr2P85aFj4BvJg==", + "dev": true + }, + "@types/normalize-package-data": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", + "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", + "dev": true + }, + "@types/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==", + "dev": true + }, + "@typescript-eslint/eslint-plugin": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-4.2.0.tgz", + "integrity": "sha512-zBNRkzvLSwo6y5TG0DVcmshZIYBHKtmzD4N+LYnfTFpzc4bc79o8jNRSb728WV7A4Cegbs+MV5IRAj8BKBgOVQ==", + "dev": true, + "requires": { + "@typescript-eslint/experimental-utils": "4.2.0", + "@typescript-eslint/scope-manager": "4.2.0", + "debug": "^4.1.1", + "functional-red-black-tree": "^1.0.1", + "regexpp": "^3.0.0", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/experimental-utils": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/experimental-utils/-/experimental-utils-4.2.0.tgz", + "integrity": "sha512-5BBj6BjgHEndBaQQpUVzRIPERz03LBc0MCQkHwUaH044FJFL08SwWv/sQftk7gf0ShZ2xZysz0LTwCwNt4Xu3w==", + "dev": true, + "requires": { + "@types/json-schema": "^7.0.3", + "@typescript-eslint/scope-manager": "4.2.0", + "@typescript-eslint/types": "4.2.0", + "@typescript-eslint/typescript-estree": "4.2.0", + "eslint-scope": "^5.0.0", + "eslint-utils": "^2.0.0" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + } + } + }, + "@typescript-eslint/parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-4.2.0.tgz", + "integrity": "sha512-54jJ6MwkOtowpE48C0QJF9iTz2/NZxfKVJzv1ha5imigzHbNSLN9yvbxFFH1KdlRPQrlR8qxqyOvLHHxd397VA==", + "dev": true, + "requires": { + "@typescript-eslint/scope-manager": "4.2.0", + "@typescript-eslint/types": "4.2.0", + "@typescript-eslint/typescript-estree": "4.2.0", + "debug": "^4.1.1" + } + }, + "@typescript-eslint/scope-manager": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-4.2.0.tgz", + "integrity": "sha512-Tb402cxxObSxWIVT+PnBp5ruT2V/36yj6gG4C9AjkgRlZpxrLAzWDk3neen6ToMBGeGdxtnfFLoJRUecGz9mYQ==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.2.0", + "@typescript-eslint/visitor-keys": "4.2.0" + } + }, + "@typescript-eslint/types": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-4.2.0.tgz", + "integrity": "sha512-xkv5nIsxfI/Di9eVwN+G9reWl7Me9R5jpzmZUch58uQ7g0/hHVuGUbbn4NcxcM5y/R4wuJIIEPKPDb5l4Fdmwg==", + "dev": true + }, + "@typescript-eslint/typescript-estree": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-4.2.0.tgz", + "integrity": "sha512-iWDLCB7z4MGkLipduF6EOotdHNtgxuNKnYD54nMS/oitFnsk4S3S/TE/UYXQTra550lHtlv9eGmp+dvN9pUDtA==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.2.0", + "@typescript-eslint/visitor-keys": "4.2.0", + "debug": "^4.1.1", + "globby": "^11.0.1", + "is-glob": "^4.0.1", + "lodash": "^4.17.15", + "semver": "^7.3.2", + "tsutils": "^3.17.1" + } + }, + "@typescript-eslint/visitor-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-4.2.0.tgz", + "integrity": "sha512-WIf4BNOlFOH2W+YqGWa6YKLcK/EB3gEj2apCrqLw6mme1RzBy0jtJ9ewJgnrZDB640zfnv8L+/gwGH5sYp/rGw==", + "dev": true, + "requires": { + "@typescript-eslint/types": "4.2.0", + "eslint-visitor-keys": "^2.0.0" + } + }, + "@zkochan/cmd-shim": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@zkochan/cmd-shim/-/cmd-shim-3.1.0.tgz", + "integrity": "sha512-o8l0+x7C7sMZU3v9GuJIAU10qQLtwR1dtRQIOmlNMtyaqhmpXOzx1HWiYoWfmmf9HHZoAkXpc9TM9PQYF9d4Jg==", + "dev": true, + "requires": { + "is-windows": "^1.0.0", + "mkdirp-promise": "^5.0.1", + "mz": "^2.5.0" + } + }, + "JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "requires": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + } + }, + "abbrev": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true + }, + "agent-base": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.3.0.tgz", + "integrity": "sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + }, + "agentkeepalive": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-3.5.2.tgz", + "integrity": "sha512-e0L/HNe6qkQ7H19kTlRRqUibEAwDK5AFk6y3PtMsuut2VAH6+Q4xZml1tNDJD7kSAyqmbG/K08K5WEJYtUrSlQ==", + "dev": true, + "requires": { + "humanize-ms": "^1.2.1" + } + }, + "aggregate-error": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", + "dev": true, + "requires": { + "clean-stack": "^2.0.0", + "indent-string": "^4.0.0" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", + "dev": true + }, + "ansi-escapes": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-3.2.0.tgz", + "integrity": "sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==", + "dev": true + }, + "ansi-regex": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.0.tgz", + "integrity": "sha512-bY6fj56OUQ0hU1KjFNDQuJFezqKdrAyFdIevADiqrWHwSlbmBNMHp5ak2f40Pm8JTFyM2mqxkG6ngkHO11f/lg==", + "dev": true + }, + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "requires": { + "color-convert": "^1.9.0" + } + }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha1-q8av7tzqUugJzcA3au0845Y10X8=", + "dev": true + }, + "aproba": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz", + "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==", + "dev": true + }, + "are-we-there-yet": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz", + "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==", + "dev": true, + "requires": { + "delegates": "^1.0.0", + "readable-stream": "^2.0.6" + } + }, + "argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "arr-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", + "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", + "dev": true + }, + "arr-flatten": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", + "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", + "dev": true + }, + "arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", + "dev": true + }, + "array-differ": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-differ/-/array-differ-2.1.0.tgz", + "integrity": "sha512-KbUpJgx909ZscOc/7CLATBFam7P1Z1QRQInvgT0UztM9Q72aGKCunKASAl7WNW0tnPmPyEMeMhdsfWhfmW037w==", + "dev": true + }, + "array-find-index": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha1-3wEKoSh+Fku9pvlyOwqWoexBh6E=", + "dev": true + }, + "array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha1-nlKHYrSpBmrRY6aWKjZEGOlibs4=", + "dev": true + }, + "array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha1-r2rId6Jcx/dOBYiUdThY39sk/bY=", + "dev": true + }, + "array-unique": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", + "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", + "dev": true + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha1-iYUI2iIm84DfkEcoRWhJwVAaSw0=", + "dev": true + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "dev": true + }, + "asn1": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", + "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", + "dev": true, + "requires": { + "safer-buffer": "~2.1.0" + } + }, + "assert-plus": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", + "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", + "dev": true + }, + "assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", + "dev": true + }, + "astral-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", + "dev": true + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", + "dev": true + }, + "atob": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", + "dev": true + }, + "atob-lite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/atob-lite/-/atob-lite-2.0.0.tgz", + "integrity": "sha1-D+9a1G8b16hQLGVyfwNn1e5D1pY=", + "dev": true + }, + "author-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/author-regex/-/author-regex-1.0.0.tgz", + "integrity": "sha1-0IiFvmubv5Q5/gh8dihyRfCoFFA=", + "dev": true + }, + "aws-sign2": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", + "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", + "dev": true + }, + "aws4": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz", + "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==", + "dev": true + }, + "balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "base": { + "version": "0.11.2", + "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", + "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", + "dev": true, + "requires": { + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "bcrypt-pbkdf": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", + "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", + "dev": true, + "requires": { + "tweetnacl": "^0.14.3" + } + }, + "before-after-hook": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.1.0.tgz", + "integrity": "sha512-IWIbu7pMqyw3EAJHzzHbWa85b6oud/yfKYg5rqB5hNE8CeMi3nX+2C2sj0HswfblST86hpVEOAb9x34NZd6P7A==", + "dev": true + }, + "bluebird": { + "version": "3.7.2", + "resolved": "https://registry.npmjs.org/bluebird/-/bluebird-3.7.2.tgz", + "integrity": "sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "requires": { + "fill-range": "^7.0.1" + } + }, + "btoa-lite": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/btoa-lite/-/btoa-lite-1.0.0.tgz", + "integrity": "sha1-M3dm2hWAEhD92VbCLpxokaudAzc=", + "dev": true + }, + "buffer-from": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", + "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", + "dev": true + }, + "builtins": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/builtins/-/builtins-1.0.3.tgz", + "integrity": "sha1-y5T662HIaWRR2zZTThQi+U8K7og=", + "dev": true + }, + "byline": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/byline/-/byline-5.0.0.tgz", + "integrity": "sha1-dBxSFkaOrcRXsDQQEYrXfejB3bE=", + "dev": true + }, + "byte-size": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/byte-size/-/byte-size-5.0.1.tgz", + "integrity": "sha512-/XuKeqWocKsYa/cBY1YbSJSWWqTi4cFgr9S6OyM7PBaPbr9zvNGwWP33vt0uqGhwDdN+y3yhbXVILEUpnwEWGw==", + "dev": true + }, + "cacache": { + "version": "12.0.4", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-12.0.4.tgz", + "integrity": "sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==", + "dev": true, + "requires": { + "bluebird": "^3.5.5", + "chownr": "^1.1.1", + "figgy-pudding": "^3.5.1", + "glob": "^7.1.4", + "graceful-fs": "^4.1.15", + "infer-owner": "^1.0.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "mkdirp": "^0.5.1", + "move-concurrently": "^1.0.1", + "promise-inflight": "^1.0.1", + "rimraf": "^2.6.3", + "ssri": "^6.0.1", + "unique-filename": "^1.1.1", + "y18n": "^4.0.0" + } + }, + "cache-base": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", + "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", + "dev": true, + "requires": { + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" + } + }, + "call-me-maybe": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/call-me-maybe/-/call-me-maybe-1.0.1.tgz", + "integrity": "sha1-JtII6onje1y95gJQoV8DHBak1ms=", + "dev": true + }, + "caller-callsite": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha1-hH4PzgoiN1CpoCfFSzNzGtMVQTQ=", + "dev": true, + "requires": { + "callsites": "^2.0.0" + }, + "dependencies": { + "callsites": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha1-BuuE8A7qQT2oav/vrL/7Ngk7PFA=", + "dev": true + } + } + }, + "caller-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha1-Ro+DBE42mrIBD6xfBs7uFbsssfQ=", + "dev": true, + "requires": { + "caller-callsite": "^2.0.0" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true + }, + "camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true + }, + "camelcase-keys": { + "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", + "dev": true, + "requires": { + "camelcase": "^5.3.1", + "map-obj": "^4.0.0", + "quick-lru": "^4.0.1" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", + "dev": true + }, + "chalk": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.0.tgz", + "integrity": "sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==", + "dev": true + }, + "chownr": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz", + "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==", + "dev": true + }, + "ci-info": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", + "dev": true + }, + "class-utils": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", + "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "clean-stack": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", + "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "dev": true + }, + "cli-cursor": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", + "integrity": "sha1-s12sN2R5+sw+lHR9QdDQ9SOP/LU=", + "dev": true, + "requires": { + "restore-cursor": "^2.0.0" + } + }, + "cli-truncate": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", + "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", + "dev": true, + "requires": { + "slice-ansi": "^3.0.0", + "string-width": "^4.2.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "slice-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", + "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "cli-width": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-2.2.1.tgz", + "integrity": "sha512-GRMWDxpOB6Dgk2E5Uo+3eEBvtOOlimMmpbFiKuLFnQzYDavtLFY3K5ona41jgN/WdRZtG7utuVSVTL4HbZHGkw==", + "dev": true + }, + "cliui": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-5.0.0.tgz", + "integrity": "sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==", + "dev": true, + "requires": { + "string-width": "^3.1.0", + "strip-ansi": "^5.2.0", + "wrap-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, + "collection-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", + "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", + "dev": true, + "requires": { + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "dev": true + }, + "columnify": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/columnify/-/columnify-1.5.4.tgz", + "integrity": "sha1-Rzfd8ce2mop8NAVweC6UfuyOeLs=", + "dev": true, + "requires": { + "strip-ansi": "^3.0.0", + "wcwidth": "^1.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dev": true, + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "requires": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + }, + "dependencies": { + "dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "requires": { + "is-obj": "^2.0.0" + } + }, + "is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true + } + } + }, + "compare-versions": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/compare-versions/-/compare-versions-3.6.0.tgz", + "integrity": "sha512-W6Af2Iw1z4CB7q4uU4hv646dW9GQuBM+YpC0UvUCWSD8w90SJjp+ujJuXaEMtAXBtSqGfMPuFOVn4/+FlaqfBA==", + "dev": true + }, + "component-emitter": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.2.1.tgz", + "integrity": "sha1-E3kY1teCg/ffemt8WmPhQOaUJeY=", + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "config-chain": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.12.tgz", + "integrity": "sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==", + "dev": true, + "requires": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "console-control-strings": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4=", + "dev": true + }, + "conventional-changelog-angular": { + "version": "5.0.11", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-5.0.11.tgz", + "integrity": "sha512-nSLypht/1yEflhuTogC03i7DX7sOrXGsRn14g131Potqi6cbGbGEE9PSDEHKldabB6N76HiSyw9Ph+kLmC04Qw==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "q": "^1.5.1" + } + }, + "conventional-changelog-core": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-3.2.3.tgz", + "integrity": "sha512-LMMX1JlxPIq/Ez5aYAYS5CpuwbOk6QFp8O4HLAcZxe3vxoCtABkhfjetk8IYdRB9CDQGwJFLR3Dr55Za6XKgUQ==", + "dev": true, + "requires": { + "conventional-changelog-writer": "^4.0.6", + "conventional-commits-parser": "^3.0.3", + "dateformat": "^3.0.0", + "get-pkg-repo": "^1.0.0", + "git-raw-commits": "2.0.0", + "git-remote-origin-url": "^2.0.0", + "git-semver-tags": "^2.0.3", + "lodash": "^4.2.1", + "normalize-package-data": "^2.3.5", + "q": "^1.5.1", + "read-pkg": "^3.0.0", + "read-pkg-up": "^3.0.0", + "through2": "^3.0.0" + }, + "dependencies": { + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-changelog-preset-loader": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-2.3.4.tgz", + "integrity": "sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==", + "dev": true + }, + "conventional-changelog-writer": { + "version": "4.0.17", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-4.0.17.tgz", + "integrity": "sha512-IKQuK3bib/n032KWaSb8YlBFds+aLmzENtnKtxJy3+HqDq5kohu3g/UdNbIHeJWygfnEbZjnCKFxAW0y7ArZAw==", + "dev": true, + "requires": { + "compare-func": "^2.0.0", + "conventional-commits-filter": "^2.0.6", + "dateformat": "^3.0.0", + "handlebars": "^4.7.6", + "json-stringify-safe": "^5.0.1", + "lodash": "^4.17.15", + "meow": "^7.0.0", + "semver": "^6.0.0", + "split": "^1.0.0", + "through2": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-commits-filter": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-2.0.6.tgz", + "integrity": "sha512-4g+sw8+KA50/Qwzfr0hL5k5NWxqtrOVw4DDk3/h6L85a9Gz0/Eqp3oP+CWCNfesBvZZZEFHF7OTEbRe+yYSyKw==", + "dev": true, + "requires": { + "lodash.ismatch": "^4.4.0", + "modify-values": "^1.0.0" + } + }, + "conventional-commits-parser": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-3.1.0.tgz", + "integrity": "sha512-RSo5S0WIwXZiRxUGTPuYFbqvrR4vpJ1BDdTlthFgvHt5kEdnd1+pdvwWphWn57/oIl4V72NMmOocFqqJ8mFFhA==", + "dev": true, + "requires": { + "JSONStream": "^1.0.4", + "is-text-path": "^1.0.1", + "lodash": "^4.17.15", + "meow": "^7.0.0", + "split2": "^2.0.0", + "through2": "^3.0.0", + "trim-off-newlines": "^1.0.0" + }, + "dependencies": { + "through2": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/through2/-/through2-3.0.2.tgz", + "integrity": "sha512-enaDQ4MUyP2W6ZyT6EsMzqBPZaM/avg8iuo+l2d3QCs0J+6RaqkHV/2/lOwDTueBHeJ/2LG9lrLW3d5rWPucuQ==", + "dev": true, + "requires": { + "inherits": "^2.0.4", + "readable-stream": "2 || 3" + } + } + } + }, + "conventional-recommended-bump": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-5.0.1.tgz", + "integrity": "sha512-RVdt0elRcCxL90IrNP0fYCpq1uGt2MALko0eyeQ+zQuDVWtMGAy9ng6yYn3kax42lCj9+XBxQ8ZN6S9bdKxDhQ==", + "dev": true, + "requires": { + "concat-stream": "^2.0.0", + "conventional-changelog-preset-loader": "^2.1.1", + "conventional-commits-filter": "^2.0.2", + "conventional-commits-parser": "^3.0.3", + "git-raw-commits": "2.0.0", + "git-semver-tags": "^2.0.3", + "meow": "^4.0.0", + "q": "^1.5.1" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + } + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "requires": { + "safe-buffer": "~5.2.0" + } + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + } + } + }, + "copy-concurrently": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/copy-concurrently/-/copy-concurrently-1.0.5.tgz", + "integrity": "sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "fs-write-stream-atomic": "^1.0.8", + "iferr": "^0.1.5", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.0" + } + }, + "copy-descriptor": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", + "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", + "dev": true + }, + "core-util-is": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", + "dev": true + }, + "cosmiconfig": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", + "dev": true, + "requires": { + "import-fresh": "^2.0.0", + "is-directory": "^0.3.1", + "js-yaml": "^3.13.1", + "parse-json": "^4.0.0" + }, + "dependencies": { + "import-fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha1-2BNVwVYS04bGH53dOSLUMEgipUY=", + "dev": true, + "requires": { + "caller-path": "^2.0.0", + "resolve-from": "^3.0.0" + } + }, + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "coveralls": { + "version": "3.0.9", + "resolved": "https://registry.npmjs.org/coveralls/-/coveralls-3.0.9.tgz", + "integrity": "sha512-nNBg3B1+4iDox5A5zqHKzUTiwl2ey4k2o0NEcVZYvl+GOSJdKBj4AJGKLv6h3SvWch7tABHePAQOSZWM9E2hMg==", + "dev": true, + "requires": { + "js-yaml": "^3.13.1", + "lcov-parse": "^1.0.0", + "log-driver": "^1.2.7", + "minimist": "^1.2.0", + "request": "^2.88.0" + } + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "currently-unhandled": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/currently-unhandled/-/currently-unhandled-0.4.1.tgz", + "integrity": "sha1-mI3zP+qxke95mmE2nddsF635V+o=", + "dev": true, + "requires": { + "array-find-index": "^1.0.1" + } + }, + "cyclist": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cyclist/-/cyclist-1.0.1.tgz", + "integrity": "sha1-WW6WmP0MgOEgOMK4LW6xs1tiJNk=", + "dev": true + }, + "dargs": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-4.1.0.tgz", + "integrity": "sha1-A6nbtLXC8Tm/FK5T8LiipqhvThc=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "dashdash": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", + "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "dateformat": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/dateformat/-/dateformat-3.0.3.tgz", + "integrity": "sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==", + "dev": true + }, + "debug": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.2.0.tgz", + "integrity": "sha512-IX2ncY78vDTjZMFUdmsvIRFY2Cf4FnD0wRs+nQwJU8Lu99/tPFdb0VybiiMTPe3I6rQmwsqQqRBvxU+bZ/I8sg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "debuglog": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/debuglog/-/debuglog-1.0.1.tgz", + "integrity": "sha1-qiT/uaw9+aI1GDfPstJ5NgzXhJI=", + "dev": true + }, + "decamelize": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "dev": true + }, + "decamelize-keys": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.0.tgz", + "integrity": "sha1-0XGoeTMlKAfrPLYdwcFEXQeN8tk=", + "dev": true, + "requires": { + "decamelize": "^1.1.0", + "map-obj": "^1.0.0" + }, + "dependencies": { + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + } + } + }, + "decode-uri-component": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", + "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", + "dev": true + }, + "dedent": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", + "dev": true + }, + "deep-is": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", + "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", + "dev": true + }, + "defaults": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.3.tgz", + "integrity": "sha1-xlYFHpgX2f8I7YgUd/P+QBnz730=", + "dev": true, + "requires": { + "clone": "^1.0.2" + }, + "dependencies": { + "clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha1-2jCcwmPfFZlMaIypAheco8fNfH4=", + "dev": true + } + } + }, + "define-properties": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", + "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", + "dev": true, + "requires": { + "object-keys": "^1.0.12" + } + }, + "define-property": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", + "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", + "dev": true, + "requires": { + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" + }, + "dependencies": { + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", + "dev": true + }, + "delegates": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o=", + "dev": true + }, + "deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "detect-indent": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-5.0.0.tgz", + "integrity": "sha1-OHHMCmoALow+Wzz38zYmRnXwa50=", + "dev": true + }, + "dezalgo": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.3.tgz", + "integrity": "sha1-f3Qt4Gb8dIvI24IFad3c5Jvw1FY=", + "dev": true, + "requires": { + "asap": "^2.0.0", + "wrappy": "1" + } + }, + "dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "requires": { + "path-type": "^4.0.0" + } + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "requires": { + "esutils": "^2.0.2" + } + }, + "dot-prop": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-4.2.1.tgz", + "integrity": "sha512-l0p4+mIuJIua0mhxGoh4a+iNL9bmeK5DvnSVQa6T0OhrVmaEa1XScX5Etc673FePCJOArq/4Pa2cLGODUWTPOQ==", + "dev": true, + "requires": { + "is-obj": "^1.0.0" + } + }, + "duplexer": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/duplexer/-/duplexer-0.1.2.tgz", + "integrity": "sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==", + "dev": true + }, + "duplexify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", + "dev": true, + "requires": { + "end-of-stream": "^1.0.0", + "inherits": "^2.0.1", + "readable-stream": "^2.0.0", + "stream-shift": "^1.0.0" + } + }, + "ecc-jsbn": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", + "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", + "dev": true, + "requires": { + "jsbn": "~0.1.0", + "safer-buffer": "^2.1.0" + } + }, + "emoji-regex": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-7.0.3.tgz", + "integrity": "sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==", + "dev": true + }, + "encoding": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", + "dev": true, + "requires": { + "iconv-lite": "^0.6.2" + } + }, + "end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "enquirer": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.3.6.tgz", + "integrity": "sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==", + "dev": true, + "requires": { + "ansi-colors": "^4.1.1" + } + }, + "env-paths": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.0.tgz", + "integrity": "sha512-6u0VYSCo/OW6IoD5WCLLy9JUGARbamfSavcNXry/eu8aHVFei6CD3Sw+VGX5alea1i9pgPHW0mbu6Xj0uBh7gA==", + "dev": true + }, + "err-code": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/err-code/-/err-code-1.1.2.tgz", + "integrity": "sha1-BuARbTAo9q70gGhJ6w6mp0iuaWA=", + "dev": true + }, + "error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es-abstract": { + "version": "1.17.7", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.7.tgz", + "integrity": "sha512-VBl/gnfcJ7OercKA9MVaegWsBHFjV492syMudcnQZvt/Dw8ezpcOHYZXa/J96O8vx+g4x65YKhxOwDUh63aS5g==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + }, + "es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "requires": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + } + }, + "es6-promise": { + "version": "4.2.8", + "resolved": "https://registry.npmjs.org/es6-promise/-/es6-promise-4.2.8.tgz", + "integrity": "sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==", + "dev": true + }, + "es6-promisify": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/es6-promisify/-/es6-promisify-5.0.0.tgz", + "integrity": "sha1-UQnWLz5W6pZ8S2NQWu8IKRyKUgM=", + "dev": true, + "requires": { + "es6-promise": "^4.0.3" + } + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "dev": true + }, + "eslint": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.9.0.tgz", + "integrity": "sha512-V6QyhX21+uXp4T+3nrNfI3hQNBDa/P8ga7LoQOenwrlEFXrEnUEE+ok1dMtaS3b6rmLXhT1TkTIsG75HMLbknA==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "@eslint/eslintrc": "^0.1.3", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "eslint-scope": "^5.1.0", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^1.3.0", + "espree": "^7.3.0", + "esquery": "^1.2.0", + "esutils": "^2.0.2", + "file-entry-cache": "^5.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.0.0", + "globals": "^12.1.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash": "^4.17.19", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^5.2.3", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dev": true, + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "dev": true + }, + "levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "optionator": { + "version": "0.9.1", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.1.tgz", + "integrity": "sha512-74RlY5FCnhq4jRxVUPKDaRwrVNXMqsGsiW6AJw4XK8hmtm10wC0ypZBLw5IIp85NZMr91+qd1RvvENwg7jjRFw==", + "dev": true, + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.3" + } + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "requires": { + "prelude-ls": "^1.2.1" + } + } + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dev": true, + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "eslint-visitor-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-2.0.0.tgz", + "integrity": "sha512-QudtT6av5WXels9WjIM7qz1XD1cWGvX4gGXvp/zBn9nXG02D0utdU3Em2m/QjTnrsk6bBjmCygl3rmj118msQQ==", + "dev": true + }, + "espree": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.0.tgz", + "integrity": "sha512-dksIWsvKCixn1yrEXO8UosNSxaDoSYpq9reEjZSbHLpT5hpaCAKTLBwq0RHtLrIr+c0ByiYzWT8KTMRzoRCNlw==", + "dev": true, + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.2.0", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true + }, + "acorn-jsx": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.1.tgz", + "integrity": "sha512-K0Ptm/47OKfQRpNQ2J/oIN/3QYiK6FwW+eJbILhsdxh2WTLdl+30o8aGdTbm5JbffpFFAg/g+zi1E+jvJha5ng==", + "dev": true + }, + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "dev": true + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true + }, + "esquery": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.3.1.tgz", + "integrity": "sha512-olpvt9QG0vniUBZspVRN6lwB7hOZoTRtT+jzR+tS4ffYx2mzbw+z0XCOk44aaLYKApNX5nMm+E+P6o25ip/DHQ==", + "dev": true, + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", + "dev": true + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "dev": true + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true + }, + "eventemitter3": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz", + "integrity": "sha512-tvtQIeLVHjDkJYnzf2dgVMxfuSGJeM/7UCG17TT4EumTfNtF+0nebF/4zWOIkCreAbtNqhGEboB6BWrwqNaw4Q==", + "dev": true + }, + "execa": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", + "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + }, + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "execution-time": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/execution-time/-/execution-time-1.4.1.tgz", + "integrity": "sha512-4t9svrTtsXxAEzAs9/tm1R/Voj5AYHqxd72BiLEbGQWJq2PD3tAmW8bXI7Pp0yorjaKshT1+NyKy0ytHlKW4Pg==", + "dev": true, + "requires": { + "pretty-hrtime": "^1.0.3" + } + }, + "expand-brackets": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", + "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", + "dev": true, + "requires": { + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", + "dev": true + }, + "extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", + "dev": true, + "requires": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dev": true, + "requires": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "dependencies": { + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "extglob": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", + "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", + "dev": true, + "requires": { + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "extsprintf": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", + "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", + "dev": true + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "fast-glob": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.4.tgz", + "integrity": "sha512-kr/Oo6PX51265qeuCYsyGypiO5uJFgBS0jksyG7FUeCyQzNwYnzrNIMR1NXfkZXsMYXYLRAHgISHBz8gQcxKHQ==", + "dev": true, + "requires": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.0", + "merge2": "^1.3.0", + "micromatch": "^4.0.2", + "picomatch": "^2.2.1" + } + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", + "dev": true + }, + "fastq": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.8.0.tgz", + "integrity": "sha512-SMIZoZdLh/fgofivvIkmknUXyPnvxRE3DhtZ5Me3Mrsk5gyPL42F0xr51TdRXskBxHfMp+07bcYzfsYEsSQA9Q==", + "dev": true, + "requires": { + "reusify": "^1.0.4" + } + }, + "figgy-pudding": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/figgy-pudding/-/figgy-pudding-3.5.2.tgz", + "integrity": "sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==", + "dev": true + }, + "figures": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-2.0.0.tgz", + "integrity": "sha1-OrGi0qYsi/tDGgyUy3l6L84nyWI=", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "file-entry-cache": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-5.0.1.tgz", + "integrity": "sha512-bCg29ictuBaKUwwArK4ouCaqDgLZcysCFLmM/Yn/FDoqndh/9vNuQfXRDvTuXKLxfD/JtZQGKFT8MGcJBK644g==", + "dev": true, + "requires": { + "flat-cache": "^2.0.1" + } + }, + "fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "dev": true, + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "find-versions": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-3.2.0.tgz", + "integrity": "sha512-P8WRou2S+oe222TOCHitLy8zj+SIsVJh52VP4lvXkaFVnOFFdoWv1H1Jjvel1aI6NCFOAaeAVm8qrI0odiLcww==", + "dev": true, + "requires": { + "semver-regex": "^2.0.0" + } + }, + "flat-cache": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-2.0.1.tgz", + "integrity": "sha512-LoQe6yDuUMDzQAEH8sgmh4Md6oZnc/7PjtwjNFSzveXqSHt6ka9fPBuso7IGf9Rz4uqnSnWiFH2B/zj24a5ReA==", + "dev": true, + "requires": { + "flatted": "^2.0.0", + "rimraf": "2.6.3", + "write": "1.0.3" + } + }, + "flatted": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-2.0.2.tgz", + "integrity": "sha512-r5wGx7YeOwNWNlCA0wQ86zKyDLMQr+/RB8xy74M4hTphfmjlijTSSXGuH8rnvKZnfT9i+75zmd8jcKdMR4O6jA==", + "dev": true + }, + "flush-write-stream": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/flush-write-stream/-/flush-write-stream-1.1.1.tgz", + "integrity": "sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==", + "dev": true, + "requires": { + "inherits": "^2.0.3", + "readable-stream": "^2.3.6" + } + }, + "for-in": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", + "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", + "dev": true + }, + "forever-agent": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", + "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", + "dev": true + }, + "form-data": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", + "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", + "dev": true, + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fragment-cache": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", + "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", + "dev": true, + "requires": { + "map-cache": "^0.2.2" + } + }, + "from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha1-i/tVAr3kpNNs/e6gB/zKIdfjgq8=", + "dev": true, + "requires": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" + } + }, + "fs-extra": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + } + }, + "fs-minipass": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz", + "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==", + "dev": true, + "requires": { + "minipass": "^2.6.0" + } + }, + "fs-write-stream-atomic": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/fs-write-stream-atomic/-/fs-write-stream-atomic-1.0.10.tgz", + "integrity": "sha1-tH31NJPvkR33VzHnCp3tAYnbQMk=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "iferr": "^0.1.5", + "imurmurhash": "^0.1.4", + "readable-stream": "1 || 2" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "dev": true + }, + "function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha1-GwqzvVU7Kg1jmdKcDj6gslIHgyc=", + "dev": true + }, + "gauge": { + "version": "2.7.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz", + "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=", + "dev": true, + "requires": { + "aproba": "^1.0.3", + "console-control-strings": "^1.0.0", + "has-unicode": "^2.0.0", + "object-assign": "^4.1.0", + "signal-exit": "^3.0.0", + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wide-align": "^1.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "genfun": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/genfun/-/genfun-5.0.0.tgz", + "integrity": "sha512-KGDOARWVga7+rnB3z9Sd2Letx515owfk0hSxHGuqjANb1M+x2bGZGqHLiozPsYMdM2OubeMni/Hpwmjq6qIUhA==", + "dev": true + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, + "get-own-enumerable-property-symbols": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/get-own-enumerable-property-symbols/-/get-own-enumerable-property-symbols-3.0.2.tgz", + "integrity": "sha512-I0UBV/XOz1XkIJHEUDMZAbzCThU/H8DxmSfmdGcKPnVhu2VfFqr34jr9777IyaTYvxjedWhqVIilEDsCdP5G6g==", + "dev": true + }, + "get-pkg-repo": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/get-pkg-repo/-/get-pkg-repo-1.4.0.tgz", + "integrity": "sha1-xztInAbYDMVTbCyFP54FIyBWly0=", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "meow": "^3.3.0", + "normalize-package-data": "^2.3.0", + "parse-github-repo-url": "^1.3.0", + "through2": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "camelcase-keys": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-2.1.0.tgz", + "integrity": "sha1-MIvur/3ygRkFHvodkyITyRuPkuc=", + "dev": true, + "requires": { + "camelcase": "^2.0.0", + "map-obj": "^1.0.0" + } + }, + "find-up": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-1.1.2.tgz", + "integrity": "sha1-ay6YIrGizgpgq2TWEOzK1TyyTQ8=", + "dev": true, + "requires": { + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "get-stdin": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha1-uWjGsKBDhDJJAui/Gl3zJXmkUP4=", + "dev": true + }, + "indent-string": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-2.1.0.tgz", + "integrity": "sha1-ji1INIdCEhtKghi3oTfppSBJ3IA=", + "dev": true, + "requires": { + "repeating": "^2.0.0" + } + }, + "load-json-file": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-1.1.0.tgz", + "integrity": "sha1-lWkFcI1YtLq0wiYbBPWfMcmTdMA=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" + } + }, + "map-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha1-2TPOuSBdgr3PSIb2dCvcK03qFG0=", + "dev": true + }, + "meow": { + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-3.7.0.tgz", + "integrity": "sha1-cstmi0JSKCkKu/qFaJJYcwioAfs=", + "dev": true, + "requires": { + "camelcase-keys": "^2.0.0", + "decamelize": "^1.1.2", + "loud-rejection": "^1.0.0", + "map-obj": "^1.0.1", + "minimist": "^1.1.3", + "normalize-package-data": "^2.3.4", + "object-assign": "^4.0.1", + "read-pkg-up": "^1.0.1", + "redent": "^1.0.0", + "trim-newlines": "^1.0.0" + } + }, + "parse-json": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz", + "integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=", + "dev": true, + "requires": { + "error-ex": "^1.2.0" + } + }, + "path-exists": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-2.1.0.tgz", + "integrity": "sha1-D+tsZPD8UY2adU3V77YscCJ2H0s=", + "dev": true, + "requires": { + "pinkie-promise": "^2.0.0" + } + }, + "path-type": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-1.1.0.tgz", + "integrity": "sha1-WcRPfuSR2nBNpBXaWkBwuk+P5EE=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + } + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + }, + "read-pkg": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-1.1.0.tgz", + "integrity": "sha1-9f+qXs0pyzHAR0vKfXVra7KePyg=", + "dev": true, + "requires": { + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" + } + }, + "read-pkg-up": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-1.0.1.tgz", + "integrity": "sha1-nWPBMnbAZZGNV/ACpX9AobZD+wI=", + "dev": true, + "requires": { + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" + } + }, + "redent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-1.0.0.tgz", + "integrity": "sha1-z5Fqsf1fHxbfsggi3W7H9zDCr94=", + "dev": true, + "requires": { + "indent-string": "^2.1.0", + "strip-indent": "^1.0.1" + } + }, + "strip-bom": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-2.0.0.tgz", + "integrity": "sha1-YhmoVhZSBJHzV4i9vxRHqZx+aw4=", + "dev": true, + "requires": { + "is-utf8": "^0.2.0" + } + }, + "strip-indent": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-1.0.1.tgz", + "integrity": "sha1-DHlipq3vp7vUrDZkYKY4VSrhoKI=", + "dev": true, + "requires": { + "get-stdin": "^4.0.1" + } + }, + "trim-newlines": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-1.0.0.tgz", + "integrity": "sha1-WIeWa7WCpFA6QetST301ARgVphM=", + "dev": true + } + } + }, + "get-stream": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", + "dev": true + }, + "getpass": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", + "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0" + } + }, + "git-raw-commits": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-2.0.0.tgz", + "integrity": "sha512-w4jFEJFgKXMQJ0H0ikBk2S+4KP2VEjhCvLCNqbNRQC8BgGWgLKNCO7a9K9LI+TVT7Gfoloje502sEnctibffgg==", + "dev": true, + "requires": { + "dargs": "^4.0.1", + "lodash.template": "^4.0.2", + "meow": "^4.0.0", + "split2": "^2.0.0", + "through2": "^2.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + } + } + }, + "git-remote-origin-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/git-remote-origin-url/-/git-remote-origin-url-2.0.0.tgz", + "integrity": "sha1-UoJlna4hBxRaERJhEq0yFuxfpl8=", + "dev": true, + "requires": { + "gitconfiglocal": "^1.0.0", + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=", + "dev": true + } + } + }, + "git-semver-tags": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-2.0.3.tgz", + "integrity": "sha512-tj4FD4ww2RX2ae//jSrXZzrocla9db5h0V7ikPl1P/WwoZar9epdUhwR7XHXSgc+ZkNq72BEEerqQuicoEQfzA==", + "dev": true, + "requires": { + "meow": "^4.0.0", + "semver": "^6.0.0" + }, + "dependencies": { + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + } + } + }, + "git-up": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-4.0.2.tgz", + "integrity": "sha512-kbuvus1dWQB2sSW4cbfTeGpCMd8ge9jx9RKnhXhuJ7tnvT+NIrTVfYZxjtflZddQYcmdOTlkAcjmx7bor+15AQ==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "parse-url": "^5.0.0" + } + }, + "git-url-parse": { + "version": "11.4.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-11.4.0.tgz", + "integrity": "sha512-KlIa5jvMYLjXMQXkqpFzobsyD/V2K5DRHl5OAf+6oDFPlPLxrGDVQlIdI63c4/Kt6kai4kALENSALlzTGST3GQ==", + "dev": true, + "requires": { + "git-up": "^4.0.0" + } + }, + "gitconfiglocal": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/gitconfiglocal/-/gitconfiglocal-1.0.0.tgz", + "integrity": "sha1-QdBF84UaXqiPA/JMocYXgRRGS5s=", + "dev": true, + "requires": { + "ini": "^1.3.2" + } + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "glob-parent": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.1.tgz", + "integrity": "sha512-FnI+VGOpnlGHWZxthPGR+QhR78fuiK0sNLkHQv+bL9fQi57lNNdquIbna/WrfROrolq8GK5Ek6BiMwqL/voRYQ==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + }, + "glob-to-regexp": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.3.0.tgz", + "integrity": "sha1-jFoUlNIGbFcMw7/kSWF1rMTVAqs=", + "dev": true + }, + "globals": { + "version": "12.4.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-12.4.0.tgz", + "integrity": "sha512-BWICuzzDvDoH54NHKCseDanAhE3CeDorgDL5MT6LMXXj2WCnd9UC2szdk4AWLfjdgNBCXLUanXYcpBBKOSWGwg==", + "dev": true, + "requires": { + "type-fest": "^0.8.1" + } + }, + "globby": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.0.1.tgz", + "integrity": "sha512-iH9RmgwCmUJHi2z5o2l3eTtGBtXek1OYlHrbcxOYugyHLmAsZrPj43OtHThd62Buh/Vv6VyCBD2bdyWcGNQqoQ==", + "dev": true, + "requires": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.1.1", + "ignore": "^5.1.4", + "merge2": "^1.3.0", + "slash": "^3.0.0" + } + }, + "graceful-fs": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz", + "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==", + "dev": true + }, + "handlebars": { + "version": "4.7.6", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.6.tgz", + "integrity": "sha512-1f2BACcBfiwAfStCKZNrUCgqNZkGsAT7UM3kkYtXuLo0KnaVfjKOyf7PRzB6++aK9STyT1Pd2ZCPe3EGOXleXA==", + "dev": true, + "requires": { + "minimist": "^1.2.5", + "neo-async": "^2.6.0", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4", + "wordwrap": "^1.0.0" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true + }, + "uglify-js": { + "version": "3.11.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.11.3.tgz", + "integrity": "sha512-wDRziHG94mNj2n3R864CvYw/+pc9y/RNImiTyrrf8BzgWn75JgFSwYvXrtZQMnMnOp/4UTrf3iCSQxSStPiByA==", + "dev": true, + "optional": true + } + } + }, + "har-schema": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", + "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", + "dev": true + }, + "har-validator": { + "version": "5.1.5", + "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", + "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", + "dev": true, + "requires": { + "ajv": "^6.12.3", + "har-schema": "^2.0.0" + } + }, + "hard-rejection": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", + "dev": true + }, + "has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "requires": { + "function-bind": "^1.1.1" + } + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "dev": true + }, + "has-symbols": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", + "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", + "dev": true + }, + "has-unicode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk=", + "dev": true + }, + "has-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", + "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", + "dev": true, + "requires": { + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" + } + }, + "has-values": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", + "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "kind-of": "^4.0.0" + }, + "dependencies": { + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "kind-of": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", + "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "hosted-git-info": { + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.8.tgz", + "integrity": "sha512-f/wzC2QaWBs7t9IYqB4T3sR1xviIViXJRJTWBlx2Gf3g0Xi5vI7Yy4koXQ1c9OYDGHN9sBy1DQ2AB8fqZBWhUg==", + "dev": true + }, + "http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==", + "dev": true + }, + "http-proxy-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-2.1.0.tgz", + "integrity": "sha512-qwHbBLV7WviBl0rQsOzH6o5lwyOIvwp/BdFnvVxXORldu5TmjFfjzBcWUWS5kWAZhmv+JtiDhSuQCp4sBfbIgg==", + "dev": true, + "requires": { + "agent-base": "4", + "debug": "3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "http-signature": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", + "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "jsprim": "^1.2.2", + "sshpk": "^1.7.0" + } + }, + "https-proxy-agent": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-2.2.4.tgz", + "integrity": "sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==", + "dev": true, + "requires": { + "agent-base": "^4.3.0", + "debug": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + } + } + }, + "human-signals": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", + "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", + "dev": true + }, + "humanize-ms": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha1-xG4xWaKT9riW2ikxbYtv6Lt5u+0=", + "dev": true, + "requires": { + "ms": "^2.0.0" + } + }, + "husky": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/husky/-/husky-4.3.0.tgz", + "integrity": "sha512-tTMeLCLqSBqnflBZnlVDhpaIMucSGaYyX6855jM4AguGeWCeSzNdb1mfyWduTZ3pe3SJVvVWGL0jO1iKZVPfTA==", + "dev": true, + "requires": { + "chalk": "^4.0.0", + "ci-info": "^2.0.0", + "compare-versions": "^3.6.0", + "cosmiconfig": "^7.0.0", + "find-versions": "^3.2.0", + "opencollective-postinstall": "^2.0.2", + "pkg-dir": "^4.2.0", + "please-upgrade-node": "^3.2.0", + "slash": "^3.0.0", + "which-pm-runs": "^1.0.0" + }, + "dependencies": { + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "requires": { + "find-up": "^4.0.0" + } + } + } + }, + "iconv-lite": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.2.tgz", + "integrity": "sha512-2y91h5OpQlolefMPmUlivelittSWy0rP+oYVpn6A7GwVHNE8AWzoYOBNmlwks3LobaJxgHCYZAnyNo2GgpNRNQ==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + } + }, + "iferr": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/iferr/-/iferr-0.1.5.tgz", + "integrity": "sha1-xg7taebY/bazEEofy8ocGS3FtQE=", + "dev": true + }, + "ignore": { + "version": "5.1.8", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz", + "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==", + "dev": true + }, + "ignore-walk": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz", + "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==", + "dev": true, + "requires": { + "minimatch": "^3.0.4" + } + }, + "import-fresh": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.2.1.tgz", + "integrity": "sha512-6e1q1cnWP2RXD9/keSkxHScg508CdXqXWgWBaETNhyuBFz+kUZlKboh+ISK+bU++DmbHimVBrOz/zzPe0sZ3sQ==", + "dev": true, + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "import-local": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-2.0.0.tgz", + "integrity": "sha512-b6s04m3O+s3CGSbqDIyP4R6aAwAeYlVq9+WUWep6iHa8ETRf9yei1U48C5MmfJmV9AiLYYBKPMq/W+/WRpQmCQ==", + "dev": true, + "requires": { + "pkg-dir": "^3.0.0", + "resolve-cwd": "^2.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "dev": true + }, + "indent-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", + "dev": true + }, + "infer-owner": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "ini": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz", + "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", + "dev": true + }, + "init-package-json": { + "version": "1.10.3", + "resolved": "https://registry.npmjs.org/init-package-json/-/init-package-json-1.10.3.tgz", + "integrity": "sha512-zKSiXKhQveNteyhcj1CoOP8tqp1QuxPIPBl8Bid99DGLFqA1p87M6lNgfjJHSBoWJJlidGOv5rWjyYKEB3g2Jw==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "npm-package-arg": "^4.0.0 || ^5.0.0 || ^6.0.0", + "promzard": "^0.3.0", + "read": "~1.0.1", + "read-package-json": "1 || 2", + "semver": "2.x || 3.x || 4 || 5", + "validate-npm-package-license": "^3.0.1", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "inquirer": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-6.5.2.tgz", + "integrity": "sha512-cntlB5ghuB0iuO65Ovoi8ogLHiWGs/5yNrtUcKjFhSSiVeAIVpD7koaSU9RM8mpXw5YDi9RdYXGQMaOURB7ycQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.2.0", + "chalk": "^2.4.2", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^3.0.3", + "figures": "^2.0.0", + "lodash": "^4.17.12", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rxjs": "^6.4.0", + "string-width": "^2.1.0", + "strip-ansi": "^5.1.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + }, + "dependencies": { + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + } + } + } + } + }, + "inquirer-autocomplete-prompt": { + "version": "0.12.2", + "resolved": "https://registry.npmjs.org/inquirer-autocomplete-prompt/-/inquirer-autocomplete-prompt-0.12.2.tgz", + "integrity": "sha512-XbgPlnFdAboyUYWIrOkV8vh426BVZWzvbIKRkNY/aCvKhoCSWOO6ZQagAEOGA5ff2iOboNEaT1Wa/cM9ekj8jw==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "figures": "^2.0.0", + "inquirer": "3.2.0", + "run-async": "^2.3.0" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "inquirer": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-3.2.0.tgz", + "integrity": "sha512-4CyUYMP7lOBkiUU1rR24WGrfRX6SucwbY2Mqb1PdApU24wnTIk4TsnkQwV72dDdIKZ2ycLP+fWCV+tA7wwgoew==", + "dev": true, + "requires": { + "ansi-escapes": "^2.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.0.4", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + }, + "dependencies": { + "ansi-escapes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-2.0.0.tgz", + "integrity": "sha1-W65SvkJIeN2Xg+iRDj/Cki6DyBs=", + "dev": true + } + } + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + } + } + }, + "ip": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.5.tgz", + "integrity": "sha1-vd7XARQpCCjAoDnnLvJfWq7ENUo=", + "dev": true + }, + "is-accessor-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", + "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "is-buffer": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", + "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", + "dev": true + }, + "is-callable": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.2.tgz", + "integrity": "sha512-dnMqspv5nU3LoewK2N/y7KLtxtakvTuaCsU9FU50/QDmdbHNy/4/JuRtMHqRU22o3q+W89YQndQEeCVwK+3qrA==", + "dev": true + }, + "is-ci": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", + "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", + "dev": true, + "requires": { + "ci-info": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.0.0.tgz", + "integrity": "sha512-jq1AH6C8MuteOoBPwkxHafmByhL9j5q4OaPGdbuD+ZtQJVzH+i6E3BJDQcBA09k57i2Hh2yQbEG8yObZ0jdlWw==", + "dev": true, + "requires": { + "has": "^1.0.3" + } + }, + "is-data-descriptor": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", + "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "is-date-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.2.tgz", + "integrity": "sha512-USlDT524woQ08aoZFzh3/Z6ch9Y/EWXEHQ/AaRN0SkKq4t2Jw2R2339tSXmwuVoY7LLlBCbOIlx2myP/L5zk0g==", + "dev": true + }, + "is-descriptor": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", + "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" + }, + "dependencies": { + "kind-of": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", + "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", + "dev": true + } + } + }, + "is-directory": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha1-YTObbyR1/Hcv2cnYP1yFddwVSuE=", + "dev": true + }, + "is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", + "dev": true + }, + "is-finite": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "dev": true + }, + "is-glob": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.1.tgz", + "integrity": "sha512-5G0tKtBTFImOqDnLB2hG6Bp2qcKEFduo4tZu9MT/H6NQv/ghhy30o55ufafxJ/LdH79LLs2Kfrn85TLKyA7BUg==", + "dev": true, + "requires": { + "is-extglob": "^2.1.1" + }, + "dependencies": { + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + } + } + }, + "is-negative-zero": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.0.tgz", + "integrity": "sha1-lVOxIbD6wohp2p7UWeIMdUN4hGE=", + "dev": true + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true + }, + "is-obj": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha1-PkcprB9f3gJc19g6iW2rn09n2w8=", + "dev": true + }, + "is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha1-caUMhCnfync8kqOQpKA7OfzVHT4=", + "dev": true + }, + "is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "is-regex": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.1.tgz", + "integrity": "sha512-1+QkEcxiLlB7VEyFtyBg94e08OAsvq7FUBgApTq/w2ymCLyKJgDPsybBENVtA7XCQEgEXxKPonG+mvYRxh/LIg==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-regexp": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-regexp/-/is-regexp-1.0.0.tgz", + "integrity": "sha1-/S2INUXEa6xaYz57mgnof6LLUGk=", + "dev": true + }, + "is-ssh": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.3.2.tgz", + "integrity": "sha512-elEw0/0c2UscLrNG+OAorbP539E3rhliKPg+hDMWN9VwrDXfYK+4PBEykDPfxlYYtQvl84TascnQyobfQLHEhQ==", + "dev": true, + "requires": { + "protocols": "^1.1.0" + } + }, + "is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", + "dev": true + }, + "is-symbol": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.3.tgz", + "integrity": "sha512-OwijhaRSgqvhm/0ZdAcXNZt9lYdKFpcRDT5ULUuYXPoT794UNOdU+gpT6Rzo7b4V2HUl/op6GqY894AZwv9faQ==", + "dev": true, + "requires": { + "has-symbols": "^1.0.1" + } + }, + "is-text-path": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-1.0.1.tgz", + "integrity": "sha1-Thqg+1G/vLPpJogAE5cgLBd1tm4=", + "dev": true, + "requires": { + "text-extensions": "^1.0.0" + } + }, + "is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", + "dev": true + }, + "is-utf8": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-utf8/-/is-utf8-0.2.1.tgz", + "integrity": "sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=", + "dev": true + }, + "is-windows": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", + "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", + "dev": true + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "dev": true + }, + "isstream": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", + "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", + "dev": true + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "js-yaml": { + "version": "3.14.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.0.tgz", + "integrity": "sha512-/4IbIeHcD9VMHFqDR/gQ7EdZdLimOvW2DdcxFjdyyZ9NsbS+ccrXqVWDtab/lRl5AlUqmpBx8EhPaWR+OtY17A==", + "dev": true, + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "jsbn": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", + "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", + "dev": true + }, + "jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true + }, + "json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "json-schema": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", + "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", + "dev": true + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", + "dev": true + }, + "jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6" + } + }, + "jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA=", + "dev": true + }, + "jsprim": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", + "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", + "dev": true, + "requires": { + "assert-plus": "1.0.0", + "extsprintf": "1.3.0", + "json-schema": "0.2.3", + "verror": "1.10.0" + } + }, + "kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true + }, + "lcov-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcov-parse/-/lcov-parse-1.0.0.tgz", + "integrity": "sha1-6w1GtUER68VhrLTECO+TY73I9+A=", + "dev": true + }, + "lerna": { + "version": "3.19.0", + "resolved": "https://registry.npmjs.org/lerna/-/lerna-3.19.0.tgz", + "integrity": "sha512-YtMmwEqzWHQCh7Ynk7BvjrZri3EkSeVqTAcwZIqWlv9V/dCfvFPyRqp+2NIjPB5nj1FWXLRH6F05VT/qvzuuOA==", + "dev": true, + "requires": { + "@lerna/add": "3.19.0", + "@lerna/bootstrap": "3.18.5", + "@lerna/changed": "3.18.5", + "@lerna/clean": "3.18.5", + "@lerna/cli": "3.18.5", + "@lerna/create": "3.18.5", + "@lerna/diff": "3.18.5", + "@lerna/exec": "3.18.5", + "@lerna/import": "3.18.5", + "@lerna/init": "3.18.5", + "@lerna/link": "3.18.5", + "@lerna/list": "3.18.5", + "@lerna/publish": "3.18.5", + "@lerna/run": "3.18.5", + "@lerna/version": "3.18.5", + "import-local": "^2.0.0", + "npmlog": "^4.1.2" + } + }, + "lerna-update-wizard": { + "version": "0.16.0", + "resolved": "https://registry.npmjs.org/lerna-update-wizard/-/lerna-update-wizard-0.16.0.tgz", + "integrity": "sha512-H5hhybjPyeOqkWantS23bPXKhs42DIP98B8tAHNvXrufw1CmlOgLsMFmHbYPecqIMgC2vRBVvZMLB/eRN1zPOQ==", + "dev": true, + "requires": { + "chalk": "^2.3.0", + "execution-time": "^1.2.0", + "globby": "^8.0.1", + "inquirer": "^4.0.1", + "inquirer-autocomplete-prompt": "^0.12.1", + "lodash": "^4.17.4", + "meow": "^4.0.0", + "minimist": "^1.2.0", + "prettier-package-json": "^2.1.0", + "semver-compare": "^1.0.0" + }, + "dependencies": { + "@nodelib/fs.stat": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-1.1.3.tgz", + "integrity": "sha512-shAmDyaQC4H92APFoIaVDHCx5bStIocgvbwQyxPRrbUY20V1EYTbSDchWbuwlMG3V17cprZhA6+78JfB+3DTPw==", + "dev": true + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + }, + "braces": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", + "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", + "dev": true, + "requires": { + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "camelcase-keys": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-4.2.0.tgz", + "integrity": "sha1-oqpfsa9oh1glnDLBQUJteJI7m3c=", + "dev": true, + "requires": { + "camelcase": "^4.1.0", + "map-obj": "^2.0.0", + "quick-lru": "^1.0.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "chardet": { + "version": "0.4.2", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.4.2.tgz", + "integrity": "sha1-tUc7M9yXxCTl2Y3IfVXU2KKci/I=", + "dev": true + }, + "dir-glob": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-2.0.0.tgz", + "integrity": "sha512-37qirFDz8cA5fimp9feo43fSuRo2gHwaIn6dXL8Ber1dGwUosDrGZeCCXq57WnIqE4aQ+u3eQZzsk1yOzhdwag==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "path-type": "^3.0.0" + } + }, + "external-editor": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-2.2.0.tgz", + "integrity": "sha512-bSn6gvGxKt+b7+6TKEv1ZycHleA7aHhRHyAqJyp5pbUFuYYNIzpZnQDk7AsYckyWdEnTeAnay0aCy2aV6iTk9A==", + "dev": true, + "requires": { + "chardet": "^0.4.0", + "iconv-lite": "^0.4.17", + "tmp": "^0.0.33" + } + }, + "fast-glob": { + "version": "2.2.7", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-2.2.7.tgz", + "integrity": "sha512-g1KuQwHOZAmOZMuBtHdxDtju+T2RT8jgCC9aANsbpdiDDTSnjgfuVsIBNKbUeJI3oKMRExcfNDtJl4OhbffMsw==", + "dev": true, + "requires": { + "@mrmlnc/readdir-enhanced": "^2.2.1", + "@nodelib/fs.stat": "^1.1.2", + "glob-parent": "^3.1.0", + "is-glob": "^4.0.0", + "merge2": "^1.2.3", + "micromatch": "^3.1.10" + } + }, + "fill-range": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", + "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "glob-parent": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-3.1.0.tgz", + "integrity": "sha1-nmr2KZ2NO9K9QEMIMr0RPfkGxa4=", + "dev": true, + "requires": { + "is-glob": "^3.1.0", + "path-dirname": "^1.0.0" + }, + "dependencies": { + "is-glob": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-3.1.0.tgz", + "integrity": "sha1-e6WuJCF4BKxwcHuWkiVnSGzD6Eo=", + "dev": true, + "requires": { + "is-extglob": "^2.1.0" + } + } + } + }, + "globby": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-8.0.2.tgz", + "integrity": "sha512-yTzMmKygLp8RUpG1Ymu2VXPSJQZjNAZPD4ywgYEaG7e4tBJeUQBO8OpXrf1RCNcEs5alsoJYPAMiIHP0cmeC7w==", + "dev": true, + "requires": { + "array-union": "^1.0.1", + "dir-glob": "2.0.0", + "fast-glob": "^2.0.2", + "glob": "^7.1.2", + "ignore": "^3.3.5", + "pify": "^3.0.0", + "slash": "^1.0.0" + } + }, + "iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dev": true, + "requires": { + "safer-buffer": ">= 2.1.2 < 3" + } + }, + "ignore": { + "version": "3.3.10", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-3.3.10.tgz", + "integrity": "sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==", + "dev": true + }, + "indent-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-3.2.0.tgz", + "integrity": "sha1-Sl/W0nzDMvN+VBmlBNu4NxBckok=", + "dev": true + }, + "inquirer": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-4.0.2.tgz", + "integrity": "sha512-+f3qDNeZpkhFJ61NBA9jXDrGGhoQuqfEum9A681c9oHoIbGgVqjogKynjB/vNVP+nVu9w3FbFQ35c0ibU0MaIQ==", + "dev": true, + "requires": { + "ansi-escapes": "^3.0.0", + "chalk": "^2.0.0", + "cli-cursor": "^2.1.0", + "cli-width": "^2.0.0", + "external-editor": "^2.1.0", + "figures": "^2.0.0", + "lodash": "^4.3.0", + "mute-stream": "0.0.7", + "run-async": "^2.2.0", + "rx-lite": "^4.0.8", + "rx-lite-aggregates": "^4.0.8", + "string-width": "^2.1.0", + "strip-ansi": "^4.0.0", + "through": "^2.3.6" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", + "dev": true + }, + "is-number": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", + "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "map-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-2.0.0.tgz", + "integrity": "sha1-plzSkIepJZi4eRJXpSPgISIqwfk=", + "dev": true + }, + "meow": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-4.0.1.tgz", + "integrity": "sha512-xcSBHD5Z86zaOc+781KrupuHAzeGXSLtiAOmBsiLDiPSaYSB6hdew2ng9EBAnZ62jagG9MHAOdxpDi/lWBFJ/A==", + "dev": true, + "requires": { + "camelcase-keys": "^4.0.0", + "decamelize-keys": "^1.0.0", + "loud-rejection": "^1.0.0", + "minimist": "^1.1.3", + "minimist-options": "^3.0.1", + "normalize-package-data": "^2.3.4", + "read-pkg-up": "^3.0.0", + "redent": "^2.0.0", + "trim-newlines": "^2.0.0" + } + }, + "micromatch": { + "version": "3.1.10", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", + "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" + } + }, + "minimist-options": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-3.0.2.tgz", + "integrity": "sha512-FyBrT/d0d4+uiZRbqznPXqw3IpZZG3gl3wKWiX784FycUKVwBt0uLBFkQrtE4tZOrgo78nZp2jnKz3L65T5LdQ==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0" + } + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "quick-lru": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-1.1.0.tgz", + "integrity": "sha1-Q2CxfGETatOAeDl/8RQW4Ybc+7g=", + "dev": true + }, + "redent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-2.0.0.tgz", + "integrity": "sha1-wbIAe0LVfrE4kHmzyDM2OdXhzKo=", + "dev": true, + "requires": { + "indent-string": "^3.0.0", + "strip-indent": "^2.0.0" + } + }, + "slash": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-1.0.0.tgz", + "integrity": "sha1-xB8vbDn8FtHNF61LXYlhFK5HDVU=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-indent": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-2.0.0.tgz", + "integrity": "sha1-XvjbKV0B5u1sv3qrlpmNeCJSe2g=", + "dev": true + }, + "tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dev": true, + "requires": { + "os-tmpdir": "~1.0.2" + } + }, + "to-regex-range": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", + "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", + "dev": true, + "requires": { + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" + } + }, + "trim-newlines": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-2.0.0.tgz", + "integrity": "sha1-tAPQuRvlDDMd/EuC7s6yLD3hbSA=", + "dev": true + } + } + }, + "lines-and-columns": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", + "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", + "dev": true + }, + "lint-staged": { + "version": "10.4.2", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-10.4.2.tgz", + "integrity": "sha512-OLCA9K1hS+Sl179SO6kX0JtnsaKj/MZalEhUj5yAgXsb63qPI/Gfn6Ua1KuZdbfkZNEu3/n5C/obYCu70IMt9g==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "cli-truncate": "^2.1.0", + "commander": "^6.0.0", + "cosmiconfig": "^7.0.0", + "debug": "^4.1.1", + "dedent": "^0.7.0", + "enquirer": "^2.3.6", + "execa": "^4.0.3", + "listr2": "^2.6.0", + "log-symbols": "^4.0.0", + "micromatch": "^4.0.2", + "normalize-path": "^3.0.0", + "please-upgrade-node": "^3.2.0", + "string-argv": "0.3.1", + "stringify-object": "^3.3.0" + }, + "dependencies": { + "commander": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-6.2.0.tgz", + "integrity": "sha512-zP4jEKbe8SHzKJYQmq8Y9gYjtO/POJLgIdKgV7B9qNmABVFVc+ctqSX6iXh4mCpJfRBOabiZ2YKPg8ciDw6C+Q==", + "dev": true + }, + "cosmiconfig": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.0.tgz", + "integrity": "sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==", + "dev": true, + "requires": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + } + }, + "execa": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/execa/-/execa-4.0.3.tgz", + "integrity": "sha512-WFDXGHckXPWZX19t1kCsXzOpqX9LWYNqn4C+HqZlk/V0imTkzJZqf87ZBhvpHaftERYknpk0fjSylnXVlVgI0A==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.0", + "get-stream": "^5.0.0", + "human-signals": "^1.1.1", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.0", + "onetime": "^5.1.0", + "signal-exit": "^3.0.2", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "is-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", + "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", + "dev": true + }, + "log-symbols": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.0.0.tgz", + "integrity": "sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==", + "dev": true, + "requires": { + "chalk": "^4.0.0" + } + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + } + } + }, + "listr2": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-2.6.2.tgz", + "integrity": "sha512-6x6pKEMs8DSIpA/tixiYY2m/GcbgMplMVmhQAaLFxEtNSKLeWTGjtmU57xvv6QCm2XcqzyNXL/cTSVf4IChCRA==", + "dev": true, + "requires": { + "chalk": "^4.1.0", + "cli-truncate": "^2.1.0", + "figures": "^3.2.0", + "indent-string": "^4.0.0", + "log-update": "^4.0.0", + "p-map": "^4.0.0", + "rxjs": "^6.6.2", + "through": "^2.3.8" + }, + "dependencies": { + "figures": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", + "integrity": "sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==", + "dev": true, + "requires": { + "escape-string-regexp": "^1.0.5" + } + }, + "p-map": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", + "dev": true, + "requires": { + "aggregate-error": "^3.0.0" + } + } + } + }, + "load-json-file": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-5.3.0.tgz", + "integrity": "sha512-cJGP40Jc/VXUsp8/OrnyKyTZ1y6v/dphm3bioS+RrKXjK2BB6wHUd6JptZEFDGgGahMT+InnZO5i1Ei9mpC8Bw==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "parse-json": "^4.0.0", + "pify": "^4.0.1", + "strip-bom": "^3.0.0", + "type-fest": "^0.3.0" + }, + "dependencies": { + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "type-fest": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.3.1.tgz", + "integrity": "sha512-cUGJnCdr4STbePCgqNFbpVNCepa+kAVohJs1sLhxzdH+gnEoOd8VhbYa7pD3zZYGiURWM2xzEII3fQcRizDkYQ==", + "dev": true + } + } + }, + "locate-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-3.0.0.tgz", + "integrity": "sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==", + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.20", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.20.tgz", + "integrity": "sha512-PlhdFcillOINfeV7Ni6oF1TAEayyZBoZ8bcshTHqOYJYlrqzRK5hagpagky5o4HfCzzd1TRkXPMFq6cKk9rGmA==", + "dev": true + }, + "lodash._reinterpolate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lodash._reinterpolate/-/lodash._reinterpolate-3.0.0.tgz", + "integrity": "sha1-DM8tiRZq8Ds2Y8eWU4t1rG4RTZ0=", + "dev": true + }, + "lodash.clonedeep": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.clonedeep/-/lodash.clonedeep-4.5.0.tgz", + "integrity": "sha1-4j8/nE+Pvd6HJSnBBxhXoIblzO8=", + "dev": true + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha1-LRd/ZS+jHpObRDjVNBSZ36OCXpk=", + "dev": true + }, + "lodash.ismatch": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.ismatch/-/lodash.ismatch-4.4.0.tgz", + "integrity": "sha1-dWy1FQyjum8RCFp4hJZF8Yj4Xzc=", + "dev": true + }, + "lodash.set": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", + "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", + "dev": true + }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha1-7dFMgk4sycHgsKG0K7UhBRakJDg=", + "dev": true + }, + "lodash.template": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.template/-/lodash.template-4.5.0.tgz", + "integrity": "sha512-84vYFxIkmidUiFxidA/KjjH9pAycqW+h980j7Fuz5qxRtO9pgB7MDFTdys1N7A5mcucRiDyEq4fusljItR1T/A==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0", + "lodash.templatesettings": "^4.0.0" + } + }, + "lodash.templatesettings": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/lodash.templatesettings/-/lodash.templatesettings-4.2.0.tgz", + "integrity": "sha512-stgLz+i3Aa9mZgnjr/O+v9ruKZsPsndy7qPZOchbqk2cnTU1ZaldKK+v7m54WoKIyxiuMZTKT2H81F8BeAc3ZQ==", + "dev": true, + "requires": { + "lodash._reinterpolate": "^3.0.0" + } + }, + "lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha1-0CJTc662Uq3BvILklFM5qEJ1R3M=", + "dev": true + }, + "log-driver": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/log-driver/-/log-driver-1.2.7.tgz", + "integrity": "sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==", + "dev": true + }, + "log-symbols": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-2.2.0.tgz", + "integrity": "sha512-VeIAFslyIerEJLXHziedo2basKbMKtTw3vfn5IzG0XTjhAVEJyNHnL2p7vc+wBDSdQuUpNw3M2u6xb9QsAY5Eg==", + "dev": true, + "requires": { + "chalk": "^2.0.1" + }, + "dependencies": { + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + } + } + }, + "log-update": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", + "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "dev": true, + "requires": { + "ansi-escapes": "^4.3.0", + "cli-cursor": "^3.1.0", + "slice-ansi": "^4.0.0", + "wrap-ansi": "^6.2.0" + }, + "dependencies": { + "ansi-escapes": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.1.tgz", + "integrity": "sha512-JWF7ocqNrp8u9oqpgV+wH5ftbt+cfvv+PTjOvKLT3AdYly/LmORARfEVT1iyjwN+4MqE5UmVKoAdIBqeoCHgLA==", + "dev": true, + "requires": { + "type-fest": "^0.11.0" + } + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "dev": true + }, + "cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "requires": { + "restore-cursor": "^3.1.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true + }, + "restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "requires": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + } + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "string-width": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.0.tgz", + "integrity": "sha512-zUz5JD+tgqtuDjMhwIg5uFVV3dtqZ9yQJlZVfq4I01/K5Paj5UHj7VyrQOJvzawSVlKpObApbfD0Ed6yJc+1eg==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.0" + } + }, + "type-fest": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.11.0.tgz", + "integrity": "sha512-OdjXJxnCN1AvyLSzeKIgXTXxV+99ZuXl3Hpo9XpJAv9MBcHrrJOQ5kV7ypXOuQie+AmWG25hLbiKdwYTifzcfQ==", + "dev": true + }, + "wrap-ansi": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + } + } + }, + "loud-rejection": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/loud-rejection/-/loud-rejection-1.6.0.tgz", + "integrity": "sha1-W0b4AUft7leIcPCG0Eghz5mOVR8=", + "dev": true, + "requires": { + "currently-unhandled": "^0.4.1", + "signal-exit": "^3.0.0" + } + }, + "lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "requires": { + "yallist": "^3.0.2" + } + }, + "macos-release": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-2.4.1.tgz", + "integrity": "sha512-H/QHeBIN1fIGJX517pvK8IEK53yQOW7YcEI55oYtgjDdoCQQz7eJS94qt5kNrscReEyuD/JcdFCm2XBEcGOITg==", + "dev": true + }, + "make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "make-fetch-happen": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-5.0.2.tgz", + "integrity": "sha512-07JHC0r1ykIoruKO8ifMXu+xEU8qOXDFETylktdug6vJDACnP+HKevOu3PXyNPzFyTSlz8vrBYlBO1JZRe8Cag==", + "dev": true, + "requires": { + "agentkeepalive": "^3.4.1", + "cacache": "^12.0.0", + "http-cache-semantics": "^3.8.1", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.3", + "lru-cache": "^5.1.1", + "mississippi": "^3.0.0", + "node-fetch-npm": "^2.0.2", + "promise-retry": "^1.1.1", + "socks-proxy-agent": "^4.0.0", + "ssri": "^6.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/map-age-cleaner/-/map-age-cleaner-0.1.3.tgz", + "integrity": "sha512-bJzx6nMoP6PDLPBFmg7+xRKeFZvFboMrGlxmNj9ClvX53KrmvM5bXFXEWjbz4cz1AFn+jWJ9z/DJSz7hrs0w3w==", + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "map-cache": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", + "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", + "dev": true + }, + "map-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.1.0.tgz", + "integrity": "sha512-glc9y00wgtwcDmp7GaE/0b0OnxpNJsVf3ael/An6Fe2Q51LLwN1er6sdomLRzz5h0+yMpiYLhWYF5R7HeqVd4g==", + "dev": true + }, + "map-visit": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", + "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", + "dev": true, + "requires": { + "object-visit": "^1.0.0" + } + }, + "mem": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/mem/-/mem-4.3.0.tgz", + "integrity": "sha512-qX2bG48pTqYRVmDB37rn/6PT7LcR8T7oAX3bf99u1Tt1nzxYfxkgqDwUwolPlXweM0XzBOBFzSx4kfp7KP1s/w==", + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^2.0.0", + "p-is-promise": "^2.0.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + } + } + }, + "meow": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-7.1.1.tgz", + "integrity": "sha512-GWHvA5QOcS412WCo8vwKDlTelGLsCGBVevQB5Kva961rmNfun0PCbv5+xta2kUMFJyR8/oWnn7ddeKdosbAPbA==", + "dev": true, + "requires": { + "@types/minimist": "^1.2.0", + "camelcase-keys": "^6.2.2", + "decamelize-keys": "^1.1.0", + "hard-rejection": "^2.1.0", + "minimist-options": "4.1.0", + "normalize-package-data": "^2.5.0", + "read-pkg-up": "^7.0.1", + "redent": "^3.0.0", + "trim-newlines": "^3.0.0", + "type-fest": "^0.13.1", + "yargs-parser": "^18.1.3" + }, + "dependencies": { + "find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "requires": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + } + }, + "locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "requires": { + "p-locate": "^4.1.0" + } + }, + "p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "requires": { + "p-limit": "^2.2.0" + } + }, + "parse-json": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.1.0.tgz", + "integrity": "sha512-+mi/lmVVNKFNVyLXV31ERiy2CY5E1/F6QtJFEzoChPRwwngMNXRDQ9GJ5WdE2Z2P4AujsOi0/+2qHID68KwfIQ==", + "dev": true, + "requires": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + } + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true + }, + "read-pkg": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", + "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", + "dev": true, + "requires": { + "@types/normalize-package-data": "^2.4.0", + "normalize-package-data": "^2.5.0", + "parse-json": "^5.0.0", + "type-fest": "^0.6.0" + }, + "dependencies": { + "type-fest": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", + "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", + "dev": true + } + } + }, + "read-pkg-up": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", + "dev": true, + "requires": { + "find-up": "^4.1.0", + "read-pkg": "^5.2.0", + "type-fest": "^0.8.1" + }, + "dependencies": { + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + } + } + }, + "type-fest": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.13.1.tgz", + "integrity": "sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==", + "dev": true + }, + "yargs-parser": { + "version": "18.1.3", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true + }, + "micromatch": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.2.tgz", + "integrity": "sha512-y7FpHSbMUMoyPbYUSzO6PaZ6FyRnQOpHuKwbo1G+Knck95XVU4QAiKdGEnj5wwoS7PlOgthX/09u5iFJ+aYf5Q==", + "dev": true, + "requires": { + "braces": "^3.0.1", + "picomatch": "^2.0.5" + } + }, + "mime-db": { + "version": "1.44.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz", + "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==", + "dev": true + }, + "mime-types": { + "version": "2.1.27", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz", + "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==", + "dev": true, + "requires": { + "mime-db": "1.44.0" + } + }, + "mimic-fn": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-1.2.0.tgz", + "integrity": "sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==", + "dev": true + }, + "min-indent": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.0.tgz", + "integrity": "sha1-z8RcN+nsDY8KDsPdTvf3w6vjklY=", + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", + "dev": true + }, + "minimist-options": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", + "dev": true, + "requires": { + "arrify": "^1.0.1", + "is-plain-obj": "^1.1.0", + "kind-of": "^6.0.3" + } + }, + "minipass": { + "version": "2.9.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz", + "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + } + }, + "minizlib": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz", + "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==", + "dev": true, + "requires": { + "minipass": "^2.9.0" + } + }, + "mississippi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mississippi/-/mississippi-3.0.0.tgz", + "integrity": "sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==", + "dev": true, + "requires": { + "concat-stream": "^1.5.0", + "duplexify": "^3.4.2", + "end-of-stream": "^1.1.0", + "flush-write-stream": "^1.0.0", + "from2": "^2.1.0", + "parallel-transform": "^1.1.0", + "pump": "^3.0.0", + "pumpify": "^1.3.3", + "stream-each": "^1.1.0", + "through2": "^2.0.0" + } + }, + "mixin-deep": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", + "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", + "dev": true, + "requires": { + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" + }, + "dependencies": { + "is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dev": true, + "requires": { + "is-plain-object": "^2.0.4" + } + } + } + }, + "mkdirp": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz", + "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==", + "dev": true, + "requires": { + "minimist": "^1.2.5" + } + }, + "mkdirp-promise": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/mkdirp-promise/-/mkdirp-promise-5.0.1.tgz", + "integrity": "sha1-6bj2jlUsaKnBcTuEiD96HdA5uKE=", + "dev": true, + "requires": { + "mkdirp": "*" + } + }, + "modify-values": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/modify-values/-/modify-values-1.0.1.tgz", + "integrity": "sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==", + "dev": true + }, + "move-concurrently": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/move-concurrently/-/move-concurrently-1.0.1.tgz", + "integrity": "sha1-viwAX9oy4LKa8fBdfEszIUxwH5I=", + "dev": true, + "requires": { + "aproba": "^1.1.1", + "copy-concurrently": "^1.0.0", + "fs-write-stream-atomic": "^1.0.8", + "mkdirp": "^0.5.1", + "rimraf": "^2.5.4", + "run-queue": "^1.0.3" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "multimatch": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/multimatch/-/multimatch-3.0.0.tgz", + "integrity": "sha512-22foS/gqQfANZ3o+W7ST2x25ueHDVNWl/b9OlGcLpy/iKxjCpvcNCM51YCenUi7Mt/jAjjqv8JwZRs8YP5sRjA==", + "dev": true, + "requires": { + "array-differ": "^2.0.3", + "array-union": "^1.0.2", + "arrify": "^1.0.1", + "minimatch": "^3.0.4" + }, + "dependencies": { + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha1-mjRBDk9OPaI96jdb5b5w8kd47Dk=", + "dev": true, + "requires": { + "array-uniq": "^1.0.1" + } + } + } + }, + "mute-stream": { + "version": "0.0.7", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.7.tgz", + "integrity": "sha1-MHXOk7whuPq0PhvE2n6BFe0ee6s=", + "dev": true + }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "nanomatch": { + "version": "1.2.13", + "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", + "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", + "dev": true, + "requires": { + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" + } + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node-fetch": { + "version": "2.6.1", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.1.tgz", + "integrity": "sha512-V4aYg89jEoVRxRb2fJdAg8FHvI7cEyYdVAh94HH0UIK8oJxUfkjlDQN9RbMx+bEjP7+ggMiFRprSti032Oipxw==", + "dev": true + }, + "node-fetch-npm": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/node-fetch-npm/-/node-fetch-npm-2.0.4.tgz", + "integrity": "sha512-iOuIQDWDyjhv9qSDrj9aq/klt6F9z1p2otB3AV7v3zBDcL/x+OfGsvGQZZCcMZbUf4Ujw1xGNQkjvGnVT22cKg==", + "dev": true, + "requires": { + "encoding": "^0.1.11", + "json-parse-better-errors": "^1.0.0", + "safe-buffer": "^5.1.1" + } + }, + "node-gyp": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-5.1.1.tgz", + "integrity": "sha512-WH0WKGi+a4i4DUt2mHnvocex/xPLp9pYt5R6M2JdFB7pJ7Z34hveZ4nDTGTiLXCkitA9T8HFZjhinBCiVHYcWw==", + "dev": true, + "requires": { + "env-paths": "^2.2.0", + "glob": "^7.1.4", + "graceful-fs": "^4.2.2", + "mkdirp": "^0.5.1", + "nopt": "^4.0.1", + "npmlog": "^4.1.2", + "request": "^2.88.0", + "rimraf": "^2.6.3", + "semver": "^5.7.1", + "tar": "^4.4.12", + "which": "^1.3.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + }, + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "nopt": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz", + "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==", + "dev": true, + "requires": { + "abbrev": "1", + "osenv": "^0.1.4" + } + }, + "normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true + }, + "npm-bundled": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz", + "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==", + "dev": true, + "requires": { + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-lifecycle": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/npm-lifecycle/-/npm-lifecycle-3.1.5.tgz", + "integrity": "sha512-lDLVkjfZmvmfvpvBzA4vzee9cn+Me4orq0QF8glbswJVEbIcSNWib7qGOffolysc3teCqbbPZZkzbr3GQZTL1g==", + "dev": true, + "requires": { + "byline": "^5.0.0", + "graceful-fs": "^4.1.15", + "node-gyp": "^5.0.2", + "resolve-from": "^4.0.0", + "slide": "^1.1.6", + "uid-number": "0.0.6", + "umask": "^1.1.0", + "which": "^1.3.1" + }, + "dependencies": { + "which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + } + } + }, + "npm-normalize-package-bin": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz", + "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==", + "dev": true + }, + "npm-package-arg": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/npm-package-arg/-/npm-package-arg-6.1.1.tgz", + "integrity": "sha512-qBpssaL3IOZWi5vEKUKW0cO7kzLeT+EQO9W8RsLOZf76KF9E/K9+wH0C7t06HXPpaH8WH5xF1MExLuCwbTqRUg==", + "dev": true, + "requires": { + "hosted-git-info": "^2.7.1", + "osenv": "^0.1.5", + "semver": "^5.6.0", + "validate-npm-package-name": "^3.0.0" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-packlist": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz", + "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==", + "dev": true, + "requires": { + "ignore-walk": "^3.0.1", + "npm-bundled": "^1.0.1", + "npm-normalize-package-bin": "^1.0.1" + } + }, + "npm-pick-manifest": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/npm-pick-manifest/-/npm-pick-manifest-3.0.2.tgz", + "integrity": "sha512-wNprTNg+X5nf+tDi+hbjdHhM4bX+mKqv6XmPh7B5eG+QY9VARfQPfCEH013H5GqfNj6ee8Ij2fg8yk0mzps1Vw==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1", + "npm-package-arg": "^6.0.0", + "semver": "^5.4.1" + }, + "dependencies": { + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", + "dev": true, + "requires": { + "path-key": "^2.0.0" + }, + "dependencies": { + "path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", + "dev": true + } + } + }, + "npmlog": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz", + "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==", + "dev": true, + "requires": { + "are-we-there-yet": "~1.1.2", + "console-control-strings": "~1.1.0", + "gauge": "~2.7.3", + "set-blocking": "~2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, + "nyc": { + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/nyc/-/nyc-13.3.0.tgz", + "integrity": "sha512-P+FwIuro2aFG6B0Esd9ZDWUd51uZrAEoGutqZxzrVmYl3qSfkLgcQpBPBjtDFsUQLFY1dvTQJPOyeqr8S9GF8w==", + "dev": true, + "requires": { + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^3.0.1", + "convert-source-map": "^1.6.0", + "find-cache-dir": "^2.0.0", + "find-up": "^3.0.0", + "foreground-child": "^1.5.6", + "glob": "^7.1.3", + "istanbul-lib-coverage": "^2.0.3", + "istanbul-lib-hook": "^2.0.3", + "istanbul-lib-instrument": "^3.1.0", + "istanbul-lib-report": "^2.0.4", + "istanbul-lib-source-maps": "^3.0.2", + "istanbul-reports": "^2.1.1", + "make-dir": "^1.3.0", + "merge-source-map": "^1.1.0", + "resolve-from": "^4.0.0", + "rimraf": "^2.6.3", + "signal-exit": "^3.0.2", + "spawn-wrap": "^1.4.2", + "test-exclude": "^5.1.0", + "uuid": "^3.3.2", + "yargs": "^12.0.5", + "yargs-parser": "^11.1.1" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "append-transform": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "default-require-extensions": "^2.0.0" + } + }, + "archy": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "arrify": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "async": { + "version": "2.6.2", + "bundled": true, + "dev": true, + "requires": { + "lodash": "^4.17.11" + } + }, + "balanced-match": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "bundled": true, + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "caching-transform": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "hasha": "^3.0.0", + "make-dir": "^1.3.0", + "package-hash": "^3.0.0", + "write-file-atomic": "^2.3.0" + } + }, + "camelcase": { + "version": "5.0.0", + "bundled": true, + "dev": true + }, + "cliui": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "code-point-at": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "commander": { + "version": "2.17.1", + "bundled": true, + "dev": true, + "optional": true + }, + "commondir": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "concat-map": { + "version": "0.0.1", + "bundled": true, + "dev": true + }, + "convert-source-map": { + "version": "1.6.0", + "bundled": true, + "dev": true, + "requires": { + "safe-buffer": "~5.1.1" + } + }, + "cross-spawn": { + "version": "4.0.2", + "bundled": true, + "dev": true, + "requires": { + "lru-cache": "^4.0.1", + "which": "^1.2.9" + } + }, + "debug": { + "version": "4.1.1", + "bundled": true, + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "decamelize": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "default-require-extensions": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "strip-bom": "^3.0.0" + } + }, + "end-of-stream": { + "version": "1.4.1", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.4.0" + } + }, + "error-ex": { + "version": "1.3.2", + "bundled": true, + "dev": true, + "requires": { + "is-arrayish": "^0.2.1" + } + }, + "es6-error": { + "version": "4.1.1", + "bundled": true, + "dev": true + }, + "execa": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^6.0.0", + "get-stream": "^4.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" + }, + "dependencies": { + "cross-spawn": { + "version": "6.0.5", + "bundled": true, + "dev": true, + "requires": { + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" + } + } + } + }, + "find-cache-dir": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "commondir": "^1.0.1", + "make-dir": "^1.0.0", + "pkg-dir": "^3.0.0" + } + }, + "find-up": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "locate-path": "^3.0.0" + } + }, + "foreground-child": { + "version": "1.5.6", + "bundled": true, + "dev": true, + "requires": { + "cross-spawn": "^4", + "signal-exit": "^3.0.0" + } + }, + "fs.realpath": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "get-caller-file": { + "version": "1.0.3", + "bundled": true, + "dev": true + }, + "get-stream": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "pump": "^3.0.0" + } + }, + "glob": { + "version": "7.1.3", + "bundled": true, + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + }, + "graceful-fs": { + "version": "4.1.15", + "bundled": true, + "dev": true + }, + "handlebars": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "async": "^2.5.0", + "optimist": "^0.6.1", + "source-map": "^0.6.1", + "uglify-js": "^3.1.4" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } + } + }, + "has-flag": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "hasha": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "is-stream": "^1.0.1" + } + }, + "hosted-git-info": { + "version": "2.7.1", + "bundled": true, + "dev": true + }, + "imurmurhash": { + "version": "0.1.4", + "bundled": true, + "dev": true + }, + "inflight": { + "version": "1.0.6", + "bundled": true, + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "invert-kv": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-arrayish": { + "version": "0.2.1", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "is-stream": { + "version": "1.1.0", + "bundled": true, + "dev": true + }, + "isexe": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "istanbul-lib-coverage": { + "version": "2.0.3", + "bundled": true, + "dev": true + }, + "istanbul-lib-hook": { + "version": "2.0.3", + "bundled": true, + "dev": true, + "requires": { + "append-transform": "^1.0.0" + } + }, + "istanbul-lib-instrument": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-3.3.0.tgz", + "integrity": "sha512-5nnIN4vo5xQZHdXno/YDXJ0G+I3dAm4XgzfSVTPLQpj/zAV2dV6Juy0yaf10/zrJOJeHoN3fraFe+XRq2bFVZA==", + "dev": true, + "requires": { + "@babel/generator": "^7.4.0", + "@babel/parser": "^7.4.3", + "@babel/template": "^7.4.0", + "@babel/traverse": "^7.4.3", + "@babel/types": "^7.4.0", + "istanbul-lib-coverage": "^2.0.5", + "semver": "^6.0.0" + }, + "dependencies": { + "istanbul-lib-coverage": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.5.tgz", + "integrity": "sha512-8aXznuEPCJvGnMSRft4udDRDtb1V3pkQkMMI5LI+6HuQz5oQ4J2UFn1H82raA3qJtyOLkkwVqICBQkjnGtn5mA==", + "dev": true + }, + "semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "dev": true + } + } + }, + "istanbul-lib-report": { + "version": "2.0.4", + "bundled": true, + "dev": true, + "requires": { + "istanbul-lib-coverage": "^2.0.3", + "make-dir": "^1.3.0", + "supports-color": "^6.0.0" + }, + "dependencies": { + "supports-color": { + "version": "6.1.0", + "bundled": true, + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "istanbul-lib-source-maps": { + "version": "3.0.2", + "bundled": true, + "dev": true, + "requires": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^2.0.3", + "make-dir": "^1.3.0", + "rimraf": "^2.6.2", + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } + } + }, + "istanbul-reports": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "handlebars": "^4.1.0" + } + }, + "json-parse-better-errors": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "lcid": { + "version": "2.0.0", + "bundled": true, + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-locate": "^3.0.0", + "path-exists": "^3.0.0" + } + }, + "lodash": { + "version": "4.17.11", + "bundled": true, + "dev": true + }, + "lodash.flattendeep": { + "version": "4.4.0", + "bundled": true, + "dev": true + }, + "lru-cache": { + "version": "4.1.5", + "bundled": true, + "dev": true, + "requires": { + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" + } + }, + "make-dir": { + "version": "1.3.0", + "bundled": true, + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "map-age-cleaner": { + "version": "0.1.3", + "bundled": true, + "dev": true, + "requires": { + "p-defer": "^1.0.0" + } + }, + "mem": { + "version": "4.1.0", + "bundled": true, + "dev": true, + "requires": { + "map-age-cleaner": "^0.1.1", + "mimic-fn": "^1.0.0", + "p-is-promise": "^2.0.0" + } + }, + "merge-source-map": { + "version": "1.1.0", + "bundled": true, + "dev": true, + "requires": { + "source-map": "^0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true + } + } + }, + "mimic-fn": { + "version": "1.2.0", + "bundled": true, + "dev": true + }, + "minimatch": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "minimist": { + "version": "0.0.10", + "bundled": true, + "dev": true + }, + "mkdirp": { + "version": "0.5.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "bundled": true, + "dev": true + } + } + }, + "ms": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "nice-try": { + "version": "1.0.5", + "bundled": true, + "dev": true + }, + "normalize-package-data": { + "version": "2.5.0", + "bundled": true, + "dev": true, + "requires": { + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" + } + }, + "npm-run-path": { + "version": "2.0.2", + "bundled": true, + "dev": true, + "requires": { + "path-key": "^2.0.0" + } + }, + "number-is-nan": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "once": { + "version": "1.4.0", + "bundled": true, + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "optimist": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "requires": { + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-homedir": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "p-is-promise": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "p-limit": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-try": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "package-hash": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.15", + "hasha": "^3.0.0", + "lodash.flattendeep": "^4.4.0", + "release-zalgo": "^1.0.0" + } + }, + "parse-json": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "path-exists": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "path-key": { + "version": "2.0.1", + "bundled": true, + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "bundled": true, + "dev": true + }, + "path-type": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "pify": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "pkg-dir": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "pseudomap": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "pump": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "read-pkg": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + }, + "read-pkg-up": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "find-up": "^3.0.0", + "read-pkg": "^3.0.0" + } + }, + "release-zalgo": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "es6-error": "^4.0.1" + } + }, + "require-directory": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "bundled": true, + "dev": true + }, + "resolve": { + "version": "1.10.0", + "bundled": true, + "dev": true, + "requires": { + "path-parse": "^1.0.6" + } + }, + "resolve-from": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "bundled": true, + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "bundled": true, + "dev": true + }, + "semver": { + "version": "5.6.0", + "bundled": true, + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "shebang-command": { + "version": "1.2.0", + "bundled": true, + "dev": true, + "requires": { + "shebang-regex": "^1.0.0" + } + }, + "shebang-regex": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "signal-exit": { + "version": "3.0.2", + "bundled": true, + "dev": true + }, + "spawn-wrap": { + "version": "1.4.2", + "bundled": true, + "dev": true, + "requires": { + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" + } + }, + "spdx-correct": { + "version": "3.1.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.2.0", + "bundled": true, + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.0", + "bundled": true, + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.3", + "bundled": true, + "dev": true + }, + "string-width": { + "version": "2.1.1", + "bundled": true, + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "bundled": true, + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "bundled": true, + "dev": true + }, + "test-exclude": { + "version": "5.1.0", + "bundled": true, + "dev": true, + "requires": { + "arrify": "^1.0.1", + "minimatch": "^3.0.4", + "read-pkg-up": "^4.0.0", + "require-main-filename": "^1.0.1" + } + }, + "uglify-js": { + "version": "3.4.9", + "bundled": true, + "dev": true, + "optional": true, + "requires": { + "commander": "~2.17.1", + "source-map": "~0.6.1" + }, + "dependencies": { + "source-map": { + "version": "0.6.1", + "bundled": true, + "dev": true, + "optional": true + } + } + }, + "uuid": { + "version": "3.3.2", + "bundled": true, + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "bundled": true, + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "which": { + "version": "1.3.1", + "bundled": true, + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "bundled": true, + "dev": true + }, + "wordwrap": { + "version": "0.0.3", + "bundled": true, + "dev": true + }, + "wrap-ansi": { + "version": "2.1.0", + "bundled": true, + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "bundled": true, + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "bundled": true, + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "bundled": true, + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "bundled": true, + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "bundled": true, + "dev": true + }, + "write-file-atomic": { + "version": "2.4.2", + "bundled": true, + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "y18n": { + "version": "4.0.0", + "bundled": true, + "dev": true + }, + "yallist": { + "version": "2.1.2", + "bundled": true, + "dev": true + }, + "yargs": { + "version": "12.0.5", + "bundled": true, + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.2.0", + "find-up": "^3.0.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1 || ^4.0.0", + "yargs-parser": "^11.1.1" + } + }, + "yargs-parser": { + "version": "11.1.1", + "bundled": true, + "dev": true, + "requires": { + "camelcase": "^5.0.0", + "decamelize": "^1.2.0" + } + } + } + }, + "oauth-sign": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", + "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", + "dev": true + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "dev": true + }, + "object-copy": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", + "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", + "dev": true, + "requires": { + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "object-inspect": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.8.0.tgz", + "integrity": "sha512-jLdtEOB112fORuypAyl/50VRVIBIdVQOSUUGQHzJ4xBSbit81zRarz7GThkEFZy1RceYrWYcPcBFPQwHyAc1gA==", + "dev": true + }, + "object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true + }, + "object-visit": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", + "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", + "dev": true, + "requires": { + "isobject": "^3.0.0" + } + }, + "object.assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.1.tgz", + "integrity": "sha512-VT/cxmx5yaoHSOTSyrCygIDFco+RsibY2NM0a4RdEeY/4KgqezwFtK1yr3U67xYhqJSlASm2pKhLVzPj2lr4bA==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.0", + "has-symbols": "^1.0.1", + "object-keys": "^1.1.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "object.getownpropertydescriptors": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/object.getownpropertydescriptors/-/object.getownpropertydescriptors-2.1.0.tgz", + "integrity": "sha512-Z53Oah9A3TdLoblT7VKJaTDdXdT+lQO+cNpKVnya5JDe9uLvzu1YyY1yFDFrcxrlRgWrEFH0jJtD/IbuwjcEVg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.0-next.1" + } + }, + "object.pick": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", + "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", + "dev": true, + "requires": { + "isobject": "^3.0.1" + } + }, + "octokit-pagination-methods": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/octokit-pagination-methods/-/octokit-pagination-methods-1.1.0.tgz", + "integrity": "sha512-fZ4qZdQ2nxJvtcasX7Ghl+WlWS/d9IgnBIwFZXVNNZUmzpno91SX5bc5vuxiuKoCtK78XxGGNuSCrDC7xYB3OQ==", + "dev": true + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "requires": { + "mimic-fn": "^2.1.0" + }, + "dependencies": { + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + } + } + }, + "opencollective-postinstall": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/opencollective-postinstall/-/opencollective-postinstall-2.0.3.tgz", + "integrity": "sha512-8AV/sCtuzUeTo8gQK5qDZzARrulB3egtLzFgteqB2tcT4Mw7B8Kt7JcDHmltjz6FOAHsvTevk70gZEbhM4ZS9Q==", + "dev": true + }, + "os-homedir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", + "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M=", + "dev": true + }, + "os-locale": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-3.1.0.tgz", + "integrity": "sha512-Z8l3R4wYWM40/52Z+S265okfFj8Kt2cC2MKY+xNi3kFs+XGI7WXu/I309QQQYbRW4ijiZ+yxs9pqEhJh0DqW3Q==", + "dev": true, + "requires": { + "execa": "^1.0.0", + "lcid": "^2.0.0", + "mem": "^4.0.0" + }, + "dependencies": { + "invert-kv": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-2.0.0.tgz", + "integrity": "sha512-wPVv/y/QQ/Uiirj/vh3oP+1Ww+AWehmi1g5fFWGPF6IpCBCDVrhgHRMvrLfdYcwDh3QJbGXDW4JAuzxElLSqKA==", + "dev": true + }, + "lcid": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-2.0.0.tgz", + "integrity": "sha512-avPEb8P8EGnwXKClwsNUgryVjllcRqtMYa49NTsbQagYuT1DcXnl1915oxWjoyGrXR6zH/Y0Zc96xWsPcoDKeA==", + "dev": true, + "requires": { + "invert-kv": "^2.0.0" + } + } + } + }, + "os-name": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-3.1.0.tgz", + "integrity": "sha512-h8L+8aNjNcMpo/mAIBPn5PXCM16iyPGjHNWo6U1YO8sJTMHtEtyczI6QJnLoplswm6goopQkqc7OAnjhWcugVg==", + "dev": true, + "requires": { + "macos-release": "^2.2.0", + "windows-release": "^3.1.0" + } + }, + "os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ=", + "dev": true + }, + "osenv": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz", + "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==", + "dev": true, + "requires": { + "os-homedir": "^1.0.0", + "os-tmpdir": "^1.0.0" + } + }, + "p-defer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-defer/-/p-defer-1.0.0.tgz", + "integrity": "sha1-n26xgvbJqozXQwBKfU+WsZaw+ww=", + "dev": true + }, + "p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", + "dev": true + }, + "p-is-promise": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-2.1.0.tgz", + "integrity": "sha512-Y3W0wlRPK8ZMRbNq97l4M5otioeA5lm1z7bkNkxCka8HSPjR0xRWmpCmc9utiaLP9Jb1eD8BgeIxTW4AIF45Pg==", + "dev": true + }, + "p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "requires": { + "p-try": "^2.0.0" + } + }, + "p-locate": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-3.0.0.tgz", + "integrity": "sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==", + "dev": true, + "requires": { + "p-limit": "^2.0.0" + } + }, + "p-map": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-2.1.0.tgz", + "integrity": "sha512-y3b8Kpd8OAN444hxfBbFfj1FY/RjtTd8tzYwhUqNYXx0fXx2iX4maP4Qr6qhIKbQXI02wTLAda4fYUbDagTUFw==", + "dev": true + }, + "p-map-series": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-map-series/-/p-map-series-1.0.0.tgz", + "integrity": "sha1-v5j+V1cFZYqeE1G++4WuTB8Hvco=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "p-pipe": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/p-pipe/-/p-pipe-1.2.0.tgz", + "integrity": "sha1-SxoROZoRUgpneQ7loMHViB1r7+k=", + "dev": true + }, + "p-queue": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-queue/-/p-queue-4.0.0.tgz", + "integrity": "sha512-3cRXXn3/O0o3+eVmUroJPSj/esxoEFIm0ZOno/T+NzG/VZgPOqQ8WKmlNqubSEpZmCIngEy34unkHGg83ZIBmg==", + "dev": true, + "requires": { + "eventemitter3": "^3.1.0" + } + }, + "p-reduce": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-reduce/-/p-reduce-1.0.0.tgz", + "integrity": "sha1-GMKw3ZNqRpClKfgjH1ig/bakffo=", + "dev": true + }, + "p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true + }, + "p-waterfall": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-waterfall/-/p-waterfall-1.0.0.tgz", + "integrity": "sha1-ftlLPOszMngjU69qrhGqn8I1uwA=", + "dev": true, + "requires": { + "p-reduce": "^1.0.0" + } + }, + "parallel-transform": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/parallel-transform/-/parallel-transform-1.2.0.tgz", + "integrity": "sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==", + "dev": true, + "requires": { + "cyclist": "^1.0.1", + "inherits": "^2.0.3", + "readable-stream": "^2.1.5" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-author": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-author/-/parse-author-2.0.0.tgz", + "integrity": "sha1-00YL8d3Q367tQtp1QkLmX7aEqB8=", + "dev": true, + "requires": { + "author-regex": "^1.0.0" + } + }, + "parse-github-repo-url": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/parse-github-repo-url/-/parse-github-repo-url-1.4.1.tgz", + "integrity": "sha1-nn2LslKmy2ukJZUGC3v23z28H1A=", + "dev": true + }, + "parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", + "dev": true, + "requires": { + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" + } + }, + "parse-path": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-4.0.2.tgz", + "integrity": "sha512-HSqVz6iuXSiL8C1ku5Gl1Z5cwDd9Wo0q8CoffdAghP6bz8pJa1tcMC+m4N+z6VAS8QdksnIGq1TB6EgR4vPR6w==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "protocols": "^1.4.0" + } + }, + "parse-url": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-5.0.2.tgz", + "integrity": "sha512-Czj+GIit4cdWtxo3ISZCvLiUjErSo0iI3wJ+q9Oi3QuMYTI6OZu+7cewMWZ+C1YAnKhYTk6/TLuhIgCypLthPA==", + "dev": true, + "requires": { + "is-ssh": "^1.3.0", + "normalize-url": "^3.3.0", + "parse-path": "^4.0.0", + "protocols": "^1.4.0" + }, + "dependencies": { + "normalize-url": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-3.3.0.tgz", + "integrity": "sha512-U+JJi7duF1o+u2pynbp2zXDW2/PADgC30f0GsHZtRh+HOcXHnw137TrNlyxxRvWW5fjKd3bcLHPxofWuCjaeZg==", + "dev": true + } + } + }, + "pascalcase": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", + "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", + "dev": true + }, + "path-dirname": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-dirname/-/path-dirname-1.0.2.tgz", + "integrity": "sha1-zDPSTVJeCZpTiMAzbG4yuRYGCeA=", + "dev": true + }, + "path-exists": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "dev": true + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "dev": true + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true + }, + "path-parse": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.6.tgz", + "integrity": "sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw==", + "dev": true + }, + "path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true + }, + "performance-now": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", + "dev": true + }, + "picomatch": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.2.tgz", + "integrity": "sha512-q0M/9eZHzmr0AulXyPwNfZjtwZ/RBZlbN3K3CErVrk50T2ASYI7Bye0EvekFY3IP1Nt2DHu0re+V2ZHIpMkuWg==", + "dev": true + }, + "pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", + "dev": true + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha1-clVrgM+g1IqXToDnckjoDtT3+HA=", + "dev": true + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha1-ITXW36ejWMBprJsXh3YogihFD/o=", + "dev": true, + "requires": { + "pinkie": "^2.0.0" + } + }, + "pkg-dir": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", + "dev": true, + "requires": { + "find-up": "^3.0.0" + } + }, + "please-upgrade-node": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.2.0.tgz", + "integrity": "sha512-gQR3WpIgNIKwBMVLkpMUeR3e1/E1y42bqDQZfql+kDeXd8COYfM8PQA4X6y7a8u9Ua9FHmsrrmirW2vHs45hWg==", + "dev": true, + "requires": { + "semver-compare": "^1.0.0" + } + }, + "posix-character-classes": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", + "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", + "dev": true + }, + "prettier": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.0.5.tgz", + "integrity": "sha512-7PtVymN48hGcO4fGjybyBSIWDsLU4H4XlvOHfq91pz9kkGlonzwTfYkaIEwiRg/dAJF9YlbsduBAgtYLi+8cFg==", + "dev": true + }, + "prettier-package-json": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/prettier-package-json/-/prettier-package-json-2.1.3.tgz", + "integrity": "sha512-GP245nK+xMsayxUghlmiCpzWSxfUywU6IADXy7KVc0cfb+Gs/yzzbqkseFTbmwXfld722gA1VpApy8INGdVfyg==", + "dev": true, + "requires": { + "commander": "^4.0.1", + "fs-extra": "^8.1.0", + "glob": "^7.1.6", + "minimatch": "^3.0.4", + "parse-author": "^2.0.0", + "sort-object-keys": "^1.1.2", + "sort-order": "^1.0.1" + } + }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha1-t+PqQkNaTJsnWdmeDyAesZWALuE=", + "dev": true + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", + "dev": true + }, + "progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "dev": true + }, + "promise-inflight": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha1-mEcocL8igTL8vdhoEputEsPAKeM=", + "dev": true + }, + "promise-retry": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-1.1.1.tgz", + "integrity": "sha1-ZznpaOMFHaIM5kl/srUPaRHfPW0=", + "dev": true, + "requires": { + "err-code": "^1.0.0", + "retry": "^0.10.0" + }, + "dependencies": { + "retry": { + "version": "0.10.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.10.1.tgz", + "integrity": "sha1-52OI0heZLCUnUCQdPTlW/tmNj/Q=", + "dev": true + } + } + }, + "promzard": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/promzard/-/promzard-0.3.0.tgz", + "integrity": "sha1-JqXW7ox97kyxIggwWs+5O6OCqe4=", + "dev": true, + "requires": { + "read": "1" + } + }, + "proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha1-IS1b/hMYMGpCD2QCuOJv85ZHqEk=", + "dev": true + }, + "protocols": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-1.4.8.tgz", + "integrity": "sha512-IgjKyaUSjsROSO8/D49Ab7hP8mJgTYcqApOqdPhLoPxAplXmkp+zRvsrSQjFn5by0rhm4VH0GAUELIPpx7B1yg==", + "dev": true + }, + "protoduck": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/protoduck/-/protoduck-5.0.1.tgz", + "integrity": "sha512-WxoCeDCoCBY55BMvj4cAEjdVUFGRWed9ZxPlqTKYyw1nDDTQ4pqmnIMAGfJlg7Dx35uB/M+PHJPTmGOvaCaPTg==", + "dev": true, + "requires": { + "genfun": "^5.0.0" + } + }, + "prs-merged-since": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/prs-merged-since/-/prs-merged-since-1.1.0.tgz", + "integrity": "sha512-DiKcXemnzpFBzE9KWiToIsAsfnmvBC4DlTQ1A3UFqVAn/CifCKWuqsq+hH8YLbXwdYKVlRZIAMYqzjSyezWLSQ==", + "dev": true, + "requires": { + "@octokit/rest": "^15.2.6", + "ora": "^2.0.0", + "yargs": "^11.0.0" + }, + "dependencies": { + "@octokit/rest": { + "version": "15.18.3", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-15.18.3.tgz", + "integrity": "sha512-oHABAvvC83tPIuvUfWRaw9eLThFrCxBgywl+KvEwfTFjoCrMOfEaMh0r39+Ub/EEbV345GJiMzN+zPZ4kqOvbA==", + "dev": true, + "requires": { + "before-after-hook": "^1.1.0", + "btoa-lite": "^1.0.0", + "debug": "^3.1.0", + "http-proxy-agent": "^2.1.0", + "https-proxy-agent": "^2.2.0", + "lodash": "^4.17.4", + "node-fetch": "^2.1.1", + "universal-user-agent": "^2.0.0", + "url-template": "^2.0.8" + } + }, + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "before-after-hook": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-1.4.0.tgz", + "integrity": "sha512-l5r9ir56nda3qu14nAXIlyq1MmUSs0meCIaFAh8HwkFwP1F8eToOuS3ah2VAHHcY04jaYD7FpJC5JTXHYRbkzg==", + "dev": true + }, + "camelcase": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-4.1.0.tgz", + "integrity": "sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=", + "dev": true + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "cli-spinners": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-1.3.1.tgz", + "integrity": "sha512-1QL4544moEsDVH9T/l6Cemov/37iv1RtoKf7NJ04A60+4MREXNfx/QvavbH6QoGdsD4N4Mwy49cmaINR/o2mdg==", + "dev": true + }, + "cliui": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-4.1.0.tgz", + "integrity": "sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ==", + "dev": true, + "requires": { + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" + } + }, + "debug": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz", + "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==", + "dev": true, + "requires": { + "ms": "^2.1.1" + } + }, + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "get-caller-file": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-1.0.3.tgz", + "integrity": "sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w==", + "dev": true + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "ora": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/ora/-/ora-2.1.0.tgz", + "integrity": "sha512-hNNlAd3gfv/iPmsNxYoAPLvxg7HuPozww7fFonMZvL84tP6Ox5igfk5j/+a9rtJJwqMgKK+JgWsAQik5o0HTLA==", + "dev": true, + "requires": { + "chalk": "^2.3.1", + "cli-cursor": "^2.1.0", + "cli-spinners": "^1.1.0", + "log-symbols": "^2.2.0", + "strip-ansi": "^4.0.0", + "wcwidth": "^1.0.1" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "require-main-filename": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-1.0.1.tgz", + "integrity": "sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + }, + "universal-user-agent": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-2.1.0.tgz", + "integrity": "sha512-8itiX7G05Tu3mGDTdNY2fB4KJ8MgZLS54RdG6PkkfwMAavrXu1mV/lls/GABx9O3Rw4PnTtasxrvbMQoBYY92Q==", + "dev": true, + "requires": { + "os-name": "^3.0.0" + } + }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + }, + "dependencies": { + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" + } + } + } + }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, + "yargs": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-11.1.1.tgz", + "integrity": "sha512-PRU7gJrJaXv3q3yQZ/+/X6KBswZiaQ+zOmdprZcouPYtQgvNU35i+68M4b1ZHLZtYFT5QObFLV+ZkmJYcwKdiw==", + "dev": true, + "requires": { + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^3.1.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" + } + }, + "yargs-parser": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-9.0.2.tgz", + "integrity": "sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc=", + "dev": true, + "requires": { + "camelcase": "^4.1.0" + } + } + } + }, + "psl": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", + "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", + "dev": true + }, + "pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "pumpify": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/pumpify/-/pumpify-1.5.1.tgz", + "integrity": "sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==", + "dev": true, + "requires": { + "duplexify": "^3.6.0", + "inherits": "^2.0.3", + "pump": "^2.0.0" + }, + "dependencies": { + "pump": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pump/-/pump-2.0.1.tgz", + "integrity": "sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + } + } + }, + "punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "dev": true + }, + "qs": { + "version": "6.5.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", + "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", + "dev": true + }, + "quick-lru": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", + "dev": true + }, + "read": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/read/-/read-1.0.7.tgz", + "integrity": "sha1-s9oZvQUkMal2cdRKQmNK33ELQMQ=", + "dev": true, + "requires": { + "mute-stream": "~0.0.4" + } + }, + "read-cmd-shim": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/read-cmd-shim/-/read-cmd-shim-1.0.5.tgz", + "integrity": "sha512-v5yCqQ/7okKoZZkBQUAfTsQ3sVJtXdNfbPnI5cceppoxEVLYA3k+VtV2omkeo8MS94JCy4fSiUwlRBAwCVRPUA==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2" + } + }, + "read-package-json": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/read-package-json/-/read-package-json-2.1.2.tgz", + "integrity": "sha512-D1KmuLQr6ZSJS0tW8hf3WGpRlwszJOXZ3E8Yd/DNRaM5d+1wVRZdHlpGBLAuovjr28LbWvjpWkBHMxpRGGjzNA==", + "dev": true, + "requires": { + "glob": "^7.1.1", + "json-parse-even-better-errors": "^2.3.0", + "normalize-package-data": "^2.0.0", + "npm-normalize-package-bin": "^1.0.0" + } + }, + "read-package-tree": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/read-package-tree/-/read-package-tree-5.3.1.tgz", + "integrity": "sha512-mLUDsD5JVtlZxjSlPPx1RETkNjjvQYuweKwNVt1Sn8kP5Jh44pvYuUHCp6xSVDZWbNxVxG5lyZJ921aJH61sTw==", + "dev": true, + "requires": { + "read-package-json": "^2.0.0", + "readdir-scoped-modules": "^1.0.0", + "util-promisify": "^2.1.0" + } + }, + "read-pkg-up": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-3.0.0.tgz", + "integrity": "sha1-PtSWaF26D4/hGNBpHcUfSh/5bwc=", + "dev": true, + "requires": { + "find-up": "^2.0.0", + "read-pkg": "^3.0.0" + }, + "dependencies": { + "find-up": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz", + "integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=", + "dev": true, + "requires": { + "locate-path": "^2.0.0" + } + }, + "load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" + } + }, + "locate-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz", + "integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=", + "dev": true, + "requires": { + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" + } + }, + "p-limit": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz", + "integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==", + "dev": true, + "requires": { + "p-try": "^1.0.0" + } + }, + "p-locate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz", + "integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=", + "dev": true, + "requires": { + "p-limit": "^1.1.0" + } + }, + "p-try": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz", + "integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=", + "dev": true + }, + "path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, + "requires": { + "pify": "^3.0.0" + } + }, + "read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", + "dev": true, + "requires": { + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" + } + } + } + }, + "readable-stream": { + "version": "2.3.7", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", + "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "dev": true, + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + }, + "dependencies": { + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dev": true, + "requires": { + "safe-buffer": "~5.1.0" + } + } + } + }, + "readdir-scoped-modules": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/readdir-scoped-modules/-/readdir-scoped-modules-1.1.0.tgz", + "integrity": "sha512-asaikDeqAQg7JifRsZn1NJZXo9E+VwlyCfbkZhwyISinqk5zNS6266HS5kah6P0SaQKGF6SkNnZVHUzHFYxYDw==", + "dev": true, + "requires": { + "debuglog": "^1.0.1", + "dezalgo": "^1.0.0", + "graceful-fs": "^4.1.2", + "once": "^1.3.0" + } + }, + "redent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", + "dev": true, + "requires": { + "indent-string": "^4.0.0", + "strip-indent": "^3.0.0" + } + }, + "regex-not": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", + "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" + } + }, + "regexpp": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.1.0.tgz", + "integrity": "sha512-ZOIzd8yVsQQA7j8GCSlPGXwg5PfmA1mrq0JP4nGhh54LaKN3xdai/vHUDu74pKwV8OxseMS65u2NImosQcSD0Q==", + "dev": true + }, + "repeat-element": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.3.tgz", + "integrity": "sha512-ahGq0ZnV5m5XtZLMb+vP76kcAM5nkLqk0lpqAuojSKGgQtn4eRi4ZZGm2olo2zKFH+sMsWaqOCW1dqAnOru72g==", + "dev": true + }, + "repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "dev": true + }, + "repeating": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/repeating/-/repeating-2.0.1.tgz", + "integrity": "sha1-UhTFOpJtNVJwdSf7q0FdvAjQbdo=", + "dev": true, + "requires": { + "is-finite": "^1.0.0" + } + }, + "request": { + "version": "2.88.2", + "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", + "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", + "dev": true, + "requires": { + "aws-sign2": "~0.7.0", + "aws4": "^1.8.0", + "caseless": "~0.12.0", + "combined-stream": "~1.0.6", + "extend": "~3.0.2", + "forever-agent": "~0.6.1", + "form-data": "~2.3.2", + "har-validator": "~5.1.3", + "http-signature": "~1.2.0", + "is-typedarray": "~1.0.0", + "isstream": "~0.1.2", + "json-stringify-safe": "~5.0.1", + "mime-types": "~2.1.19", + "oauth-sign": "~0.9.0", + "performance-now": "^2.1.0", + "qs": "~6.5.2", + "safe-buffer": "^5.1.2", + "tough-cookie": "~2.5.0", + "tunnel-agent": "^0.6.0", + "uuid": "^3.3.2" + } + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "dev": true + }, + "require-main-filename": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", + "dev": true + }, + "resolve": { + "version": "1.18.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.18.1.tgz", + "integrity": "sha512-lDfCPaMKfOJXjy0dPayzPdF1phampNWr3qFCjAu+rw/qbQmr5jWH5xN2hwh9QKfw9E5v4hwV7A+jrCmL8yjjqA==", + "dev": true, + "requires": { + "is-core-module": "^2.0.0", + "path-parse": "^1.0.6" + } + }, + "resolve-cwd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-2.0.0.tgz", + "integrity": "sha1-AKn3OHVW4nA46uIyyqNypqWbZlo=", + "dev": true, + "requires": { + "resolve-from": "^3.0.0" + }, + "dependencies": { + "resolve-from": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha1-six699nWiBvItuZTM17rywoYh0g=", + "dev": true + } + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true + }, + "resolve-url": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", + "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", + "dev": true + }, + "restore-cursor": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-2.0.0.tgz", + "integrity": "sha1-n37ih/gv0ybU/RYpI9YhKe7g368=", + "dev": true, + "requires": { + "onetime": "^2.0.0", + "signal-exit": "^3.0.2" + }, + "dependencies": { + "onetime": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-2.0.1.tgz", + "integrity": "sha1-BnQoIw/WdEOyeUsiu6UotoZ5YtQ=", + "dev": true, + "requires": { + "mimic-fn": "^1.0.0" + } + } + } + }, + "ret": { + "version": "0.1.15", + "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", + "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", + "dev": true + }, + "reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true + }, + "rimraf": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", + "dev": true, + "requires": { + "glob": "^7.1.3" + } + }, + "run-async": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-2.4.1.tgz", + "integrity": "sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==", + "dev": true + }, + "run-parallel": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.1.9.tgz", + "integrity": "sha512-DEqnSRTDw/Tc3FXf49zedI638Z9onwUotBMiUFKmrO2sdFKIbXamXGQ3Axd4qgphxKB4kw/qP1w5kTxnfU1B9Q==", + "dev": true + }, + "run-queue": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/run-queue/-/run-queue-1.0.3.tgz", + "integrity": "sha1-6Eg5bwV9Ij8kOGkkYY4laUFh7Ec=", + "dev": true, + "requires": { + "aproba": "^1.1.1" + } + }, + "rx-lite": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite/-/rx-lite-4.0.8.tgz", + "integrity": "sha1-Cx4Rr4vESDbwSmQH6S2kJGe3lEQ=", + "dev": true + }, + "rx-lite-aggregates": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/rx-lite-aggregates/-/rx-lite-aggregates-4.0.8.tgz", + "integrity": "sha1-dTuHqJoRyVRnxKwWJsTvxOBcZ74=", + "dev": true, + "requires": { + "rx-lite": "*" + } + }, + "rxjs": { + "version": "6.6.3", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-6.6.3.tgz", + "integrity": "sha512-trsQc+xYYXZ3urjOiJOuCOa5N3jAZ3eiSpQB5hIT8zGlL2QfnHLJ2r7GMkBGuIausdJN1OneaI6gQlsqNHHmZQ==", + "dev": true, + "requires": { + "tslib": "^1.9.0" + } + }, + "safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "safe-regex": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", + "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", + "dev": true, + "requires": { + "ret": "~0.1.10" + } + }, + "safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "semver": { + "version": "7.3.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.2.tgz", + "integrity": "sha512-OrOb32TeeambH6UrhtShmF7CRDqhL6/5XpPNp2DuRH6+9QLw/orhp72j87v8Qa1ScDkvrrBNpZcDejAirJmfXQ==", + "dev": true + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha1-De4hahyUGrN+nvsXiPavxf9VN/w=", + "dev": true + }, + "semver-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-2.0.0.tgz", + "integrity": "sha512-mUdIBBvdn0PLOeP3TEkMH7HHeUP3GjsXCwKarjv/kGmUFOYg1VqEemKhoQpWMu6X2I8kHeuVdGibLGkVK+/5Qw==", + "dev": true + }, + "set-blocking": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "dev": true + }, + "set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dev": true, + "requires": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "dependencies": { + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + } + } + }, + "shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "dev": true, + "requires": { + "kind-of": "^6.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true + }, + "signal-exit": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", + "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", + "dev": true + }, + "slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true + }, + "slice-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "astral-regex": "^1.0.0", + "is-fullwidth-code-point": "^2.0.0" + } + }, + "slide": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/slide/-/slide-1.1.6.tgz", + "integrity": "sha1-VusCfWW00tzmyy4tMsTUr8nh1wc=", + "dev": true + }, + "smart-buffer": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.1.0.tgz", + "integrity": "sha512-iVICrxOzCynf/SNaBQCw34eM9jROU/s5rzIhpOvzhzuYHfJR/DhZfDkXiZSgKXfgv26HT3Yni3AV/DGw0cGnnw==", + "dev": true + }, + "snapdragon": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", + "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", + "dev": true, + "requires": { + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" + }, + "dependencies": { + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dev": true, + "requires": { + "ms": "2.0.0" + } + }, + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + }, + "extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", + "dev": true, + "requires": { + "is-extendable": "^0.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", + "dev": true + } + } + }, + "snapdragon-node": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", + "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", + "dev": true, + "requires": { + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" + }, + "dependencies": { + "define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", + "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", + "dev": true, + "requires": { + "is-descriptor": "^1.0.0" + } + }, + "is-accessor-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", + "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-data-descriptor": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", + "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", + "dev": true, + "requires": { + "kind-of": "^6.0.0" + } + }, + "is-descriptor": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", + "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", + "dev": true, + "requires": { + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" + } + } + } + }, + "snapdragon-util": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", + "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", + "dev": true, + "requires": { + "kind-of": "^3.2.0" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "socks": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.3.3.tgz", + "integrity": "sha512-o5t52PCNtVdiOvzMry7wU4aOqYWL0PeCXRWBEiJow4/i/wr+wpsJQ9awEu1EonLIqsfGd5qSgDdxEOvCdmBEpA==", + "dev": true, + "requires": { + "ip": "1.1.5", + "smart-buffer": "^4.1.0" + } + }, + "socks-proxy-agent": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-4.0.2.tgz", + "integrity": "sha512-NT6syHhI9LmuEMSK6Kd2V7gNv5KFZoLE7V5udWmn0de+3Mkj3UMA/AJPLyeNUVmElCurSHtUdM3ETpR3z770Wg==", + "dev": true, + "requires": { + "agent-base": "~4.2.1", + "socks": "~2.3.2" + }, + "dependencies": { + "agent-base": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-4.2.1.tgz", + "integrity": "sha512-JVwXMr9nHYTUXsBFKUqhJwvlcYU/blreOEUkhNR2eXZIvwd+c+o5V4MgDPKWnMS/56awN3TRzIP+KoPn+roQtg==", + "dev": true, + "requires": { + "es6-promisify": "^5.0.0" + } + } + } + }, + "sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha1-ZYU1WEhh7JfXMNbPQYIuH1ZoQSg=", + "dev": true, + "requires": { + "is-plain-obj": "^1.0.0" + } + }, + "sort-object-keys": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz", + "integrity": "sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==", + "dev": true + }, + "sort-order": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-order/-/sort-order-1.0.1.tgz", + "integrity": "sha1-2CK4zbkOpqnfloxL1FmHz1SBmeY=", + "dev": true + }, + "source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", + "dev": true + }, + "source-map-resolve": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", + "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", + "dev": true, + "requires": { + "atob": "^2.1.2", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" + } + }, + "source-map-url": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.0.tgz", + "integrity": "sha1-PpNdfd1zYxuXZZlW1VEo6HtQhKM=", + "dev": true + }, + "spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", + "dev": true, + "requires": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true + }, + "spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "requires": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "spdx-license-ids": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.6.tgz", + "integrity": "sha512-+orQK83kyMva3WyPf59k1+Y525csj5JejicWut55zeTWANuN17qSiSLUXWtzHeNWORSvT7GLDJ/E/XiIWoXBTw==", + "dev": true + }, + "split": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/split/-/split-1.0.1.tgz", + "integrity": "sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==", + "dev": true, + "requires": { + "through": "2" + } + }, + "split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dev": true, + "requires": { + "extend-shallow": "^3.0.0" + } + }, + "split2": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-2.2.0.tgz", + "integrity": "sha512-RAb22TG39LhI31MbreBgIuKiIKhVsawfTgEGqKHTK87aG+ul/PB8Sqoi3I7kVdRWiCfrKxK3uo4/YUkpNvhPbw==", + "dev": true, + "requires": { + "through2": "^2.0.2" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "dev": true + }, + "sshpk": { + "version": "1.16.1", + "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", + "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", + "dev": true, + "requires": { + "asn1": "~0.2.3", + "assert-plus": "^1.0.0", + "bcrypt-pbkdf": "^1.0.0", + "dashdash": "^1.12.0", + "ecc-jsbn": "~0.1.1", + "getpass": "^0.1.1", + "jsbn": "~0.1.0", + "safer-buffer": "^2.0.2", + "tweetnacl": "~0.14.0" + } + }, + "ssri": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-6.0.1.tgz", + "integrity": "sha512-3Wge10hNcT1Kur4PDFwEieXSCMCJs/7WvSACcrMYrNp+b8kDL1/0wJch5Ni2WrtwEa2IO8OsVfeKIciKCDx/QA==", + "dev": true, + "requires": { + "figgy-pudding": "^3.5.1" + } + }, + "static-extend": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", + "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", + "dev": true, + "requires": { + "define-property": "^0.2.5", + "object-copy": "^0.1.0" + }, + "dependencies": { + "define-property": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", + "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", + "dev": true, + "requires": { + "is-descriptor": "^0.1.0" + } + } + } + }, + "stream-each": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/stream-each/-/stream-each-1.2.3.tgz", + "integrity": "sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==", + "dev": true, + "requires": { + "end-of-stream": "^1.1.0", + "stream-shift": "^1.0.0" + } + }, + "stream-shift": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==", + "dev": true + }, + "string-argv": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", + "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "dev": true + }, + "string-width": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-3.1.0.tgz", + "integrity": "sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==", + "dev": true, + "requires": { + "emoji-regex": "^7.0.1", + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^5.1.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "string.prototype.trimend": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.1.tgz", + "integrity": "sha512-LRPxFUaTtpqYsTeNKaFOw3R4bxIzWOnbQ837QfBylo8jIxtcbK/A/sMV7Q+OAV/vWo+7s25pOE10KYSjaSO06g==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "string.prototype.trimstart": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.2.tgz", + "integrity": "sha512-7F6CdBTl5zyu30BJFdzSTlSlLPwODC23Od+iLoVH8X6+3fvDPPuBVVj9iaB1GOsSTSIgVfsfm27R2FGrAPznWg==", + "dev": true, + "requires": { + "define-properties": "^1.1.3", + "es-abstract": "^1.18.0-next.1" + }, + "dependencies": { + "es-abstract": { + "version": "1.18.0-next.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.18.0-next.1.tgz", + "integrity": "sha512-I4UGspA0wpZXWENrdA0uHbnhte683t3qT/1VFH9aX2dA5PPSf6QW5HHXf5HImaqPmjXaVeVk4RGWnaylmV7uAA==", + "dev": true, + "requires": { + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.1", + "is-callable": "^1.2.2", + "is-negative-zero": "^2.0.0", + "is-regex": "^1.1.1", + "object-inspect": "^1.8.0", + "object-keys": "^1.1.1", + "object.assign": "^4.1.1", + "string.prototype.trimend": "^1.0.1", + "string.prototype.trimstart": "^1.0.1" + } + } + } + }, + "stringify-object": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/stringify-object/-/stringify-object-3.3.0.tgz", + "integrity": "sha512-rHqiFh1elqCQ9WPLIC8I0Q/g/wj5J1eMkyoiD6eoQApWHP0FtlK7rqnhmabL5VUY9JQCcqwwvlOaSuutekgyrw==", + "dev": true, + "requires": { + "get-own-enumerable-property-symbols": "^3.0.0", + "is-obj": "^1.0.1", + "is-regexp": "^1.0.0" + } + }, + "strip-ansi": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", + "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", + "dev": true, + "requires": { + "ansi-regex": "^5.0.0" + } + }, + "strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", + "dev": true + }, + "strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", + "dev": true + }, + "strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true + }, + "strip-indent": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", + "dev": true, + "requires": { + "min-indent": "^1.0.0" + } + }, + "strong-log-transformer": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strong-log-transformer/-/strong-log-transformer-2.1.0.tgz", + "integrity": "sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==", + "dev": true, + "requires": { + "duplexer": "^0.1.1", + "minimist": "^1.2.0", + "through": "^2.3.4" + } + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "requires": { + "has-flag": "^3.0.0" + } + }, + "table": { + "version": "5.4.6", + "resolved": "https://registry.npmjs.org/table/-/table-5.4.6.tgz", + "integrity": "sha512-wmEc8m4fjnob4gt5riFRtTu/6+4rSe12TpAELNSqHMfF3IqnA+CH37USM6/YR3qRZv7e56kAEAtd6nKZaxe0Ug==", + "dev": true, + "requires": { + "ajv": "^6.10.2", + "lodash": "^4.17.14", + "slice-ansi": "^2.1.0", + "string-width": "^3.0.0" + } + }, + "tar": { + "version": "4.4.13", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz", + "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==", + "dev": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.8.6", + "minizlib": "^1.2.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.3" + } + }, + "temp-dir": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/temp-dir/-/temp-dir-1.0.0.tgz", + "integrity": "sha1-CnwOom06Oa+n4OvqnB/AvE2qAR0=", + "dev": true + }, + "temp-write": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/temp-write/-/temp-write-3.4.0.tgz", + "integrity": "sha1-jP9jD7fp2gXwR8dM5M5NaFRX1JI=", + "dev": true, + "requires": { + "graceful-fs": "^4.1.2", + "is-stream": "^1.1.0", + "make-dir": "^1.0.0", + "pify": "^3.0.0", + "temp-dir": "^1.0.0", + "uuid": "^3.0.1" + } + }, + "text-extensions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-1.9.0.tgz", + "integrity": "sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==", + "dev": true + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha1-GhkY1ALY/D+Y+/I02wvMjMEOlyY=", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, + "through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU=", + "dev": true + }, + "through2": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", + "dev": true, + "requires": { + "readable-stream": "~2.3.6", + "xtend": "~4.0.1" + } + }, + "to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", + "dev": true + }, + "to-object-path": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", + "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", + "dev": true, + "requires": { + "kind-of": "^3.0.2" + }, + "dependencies": { + "kind-of": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", + "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "dev": true, + "requires": { + "is-buffer": "^1.1.5" + } + } + } + }, + "to-regex": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", + "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", + "dev": true, + "requires": { + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "requires": { + "is-number": "^7.0.0" + } + }, + "tough-cookie": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", + "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", + "dev": true, + "requires": { + "psl": "^1.1.28", + "punycode": "^2.1.1" + } + }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha1-qLE/1r/SSJUZZ0zN5VujaTtwbQk=", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "trim-newlines": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.0.tgz", + "integrity": "sha512-C4+gOpvmxaSMKuEf9Qc134F1ZuOHVXKRbtEflf4NTtuuJDEIJ9p5PXsalL8SkeRw+qit1Mo+yuvMPAKwWg/1hA==", + "dev": true + }, + "trim-off-newlines": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/trim-off-newlines/-/trim-off-newlines-1.0.1.tgz", + "integrity": "sha1-n5up2e+odkw4dpi8v+sshI8RrbM=", + "dev": true + }, + "tslib": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true + }, + "tsutils": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/tsutils/-/tsutils-3.17.1.tgz", + "integrity": "sha512-kzeQ5B8H3w60nFY2g8cJIuH7JDpsALXySGtwGJ0p2LSjLgay3NdIpqq5SoOBe46bKDW2iq25irHCr8wjomUS2g==", + "dev": true, + "requires": { + "tslib": "^1.8.1" + } + }, + "tunnel-agent": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", + "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", + "dev": true, + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "tweetnacl": { + "version": "0.14.5", + "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", + "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", + "dev": true + }, + "type-fest": { + "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", + "dev": true + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "dev": true + }, + "uid-number": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/uid-number/-/uid-number-0.0.6.tgz", + "integrity": "sha1-DqEOgDXo61uOREnwbaHHMGY7qoE=", + "dev": true + }, + "umask": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/umask/-/umask-1.1.0.tgz", + "integrity": "sha1-8pzr8B31F5ErtY/5xOUP3o4zMg0=", + "dev": true + }, + "union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dev": true, + "requires": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + } + }, + "unique-filename": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", + "dev": true, + "requires": { + "unique-slug": "^2.0.0" + } + }, + "unique-slug": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", + "dev": true, + "requires": { + "imurmurhash": "^0.1.4" + } + }, + "universal-user-agent": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-4.0.1.tgz", + "integrity": "sha512-LnST3ebHwVL2aNe4mejI9IQh2HfZ1RLo8Io2HugSif8ekzD1TlWpHpColOB/eh8JHMLkGH3Akqf040I+4ylNxg==", + "dev": true, + "requires": { + "os-name": "^3.1.0" + } + }, + "universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "dev": true + }, + "unset-value": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", + "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", + "dev": true, + "requires": { + "has-value": "^0.3.1", + "isobject": "^3.0.0" + }, + "dependencies": { + "has-value": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", + "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", + "dev": true, + "requires": { + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" + }, + "dependencies": { + "isobject": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", + "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", + "dev": true, + "requires": { + "isarray": "1.0.0" + } + } + } + }, + "has-values": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", + "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", + "dev": true + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", + "dev": true + } + } + }, + "uri-js": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz", + "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "urix": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", + "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", + "dev": true + }, + "url-template": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/url-template/-/url-template-2.0.8.tgz", + "integrity": "sha1-/FZaPMy/93MMd19WQflVV5FDnyE=", + "dev": true + }, + "use": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", + "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", + "dev": true + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "dev": true + }, + "util-promisify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/util-promisify/-/util-promisify-2.1.0.tgz", + "integrity": "sha1-PCI2R2xNMsX/PEcAKt18E7moKlM=", + "dev": true, + "requires": { + "object.getownpropertydescriptors": "^2.0.3" + } + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "v8-compile-cache": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.1.1.tgz", + "integrity": "sha512-8OQ9CL+VWyt3JStj7HX7/ciTL2V3Rl1Wf5OL+SNTm0yK1KvtReVulksyeRnCANHHuUxHlQig+JJDlUhBt1NQDQ==", + "dev": true + }, + "validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, + "requires": { + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" + } + }, + "validate-npm-package-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-3.0.0.tgz", + "integrity": "sha1-X6kS2B630MdK/BQN5zF/DKffQ34=", + "dev": true, + "requires": { + "builtins": "^1.0.3" + } + }, + "verror": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", + "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", + "dev": true, + "requires": { + "assert-plus": "^1.0.0", + "core-util-is": "1.0.2", + "extsprintf": "^1.2.0" + } + }, + "wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha1-8LDc+RW8X/FSivrbLA4XtTLaL+g=", + "dev": true, + "requires": { + "defaults": "^1.0.3" + } + }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + }, + "dependencies": { + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + } + } + }, + "which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "requires": { + "isexe": "^2.0.0" + } + }, + "which-module": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "dev": true + }, + "which-pm-runs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/which-pm-runs/-/which-pm-runs-1.0.0.tgz", + "integrity": "sha1-Zws6+8VS4LVd9rd4DKdGFfI60cs=", + "dev": true + }, + "wide-align": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz", + "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==", + "dev": true, + "requires": { + "string-width": "^1.0.2 || 2" + }, + "dependencies": { + "ansi-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-3.0.0.tgz", + "integrity": "sha1-7QMXwyIGT3lGbAKWa922Bas32Zg=", + "dev": true + }, + "string-width": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-2.1.1.tgz", + "integrity": "sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==", + "dev": true, + "requires": { + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" + } + }, + "strip-ansi": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "dev": true, + "requires": { + "ansi-regex": "^3.0.0" + } + } + } + }, + "windows-release": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-3.3.3.tgz", + "integrity": "sha512-OSOGH1QYiW5yVor9TtmXKQvt2vjQqbYS+DqmsZw+r7xDwLXEeT3JGW0ZppFmHx4diyXmxt238KFR3N9jzevBRg==", + "dev": true, + "requires": { + "execa": "^1.0.0" + } + }, + "word-wrap": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", + "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", + "dev": true + }, + "wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha1-J1hIEIkUVqQXHI0CJkQa3pDLyus=", + "dev": true + }, + "wrap-ansi": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-5.1.0.tgz", + "integrity": "sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==", + "dev": true, + "requires": { + "ansi-styles": "^3.2.0", + "string-width": "^3.0.0", + "strip-ansi": "^5.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.0.tgz", + "integrity": "sha512-1apePfXM1UOSqw0o9IiFAovVz9M5S1Dg+4TrDwfMewQ6p/rmMueb7tWZjQ1rx4Loy1ArBggoqGpfqqdI4rondg==", + "dev": true + }, + "strip-ansi": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", + "dev": true, + "requires": { + "ansi-regex": "^4.1.0" + } + } + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + }, + "write": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/write/-/write-1.0.3.tgz", + "integrity": "sha512-/lg70HAjtkUgWPVZhZcm+T4hkL8Zbtp1nFNOn3lRrxnlv50SRBv7cR7RqR+GMsd3hUXy9hWBo4CHTbFTcOYwig==", + "dev": true, + "requires": { + "mkdirp": "^0.5.1" + } + }, + "write-file-atomic": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.2" + } + }, + "write-json-file": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-3.2.0.tgz", + "integrity": "sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==", + "dev": true, + "requires": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.15", + "make-dir": "^2.1.0", + "pify": "^4.0.1", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.4.2" + }, + "dependencies": { + "make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dev": true, + "requires": { + "pify": "^4.0.1", + "semver": "^5.6.0" + } + }, + "pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "dev": true + }, + "semver": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "dev": true + } + } + }, + "write-pkg": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/write-pkg/-/write-pkg-3.2.0.tgz", + "integrity": "sha512-tX2ifZ0YqEFOF1wjRW2Pk93NLsj02+n1UP5RvO6rCs0K6R2g1padvf006cY74PQJKMGS2r42NK7FD0dG6Y6paw==", + "dev": true, + "requires": { + "sort-keys": "^2.0.0", + "write-json-file": "^2.2.0" + }, + "dependencies": { + "write-json-file": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/write-json-file/-/write-json-file-2.3.0.tgz", + "integrity": "sha1-K2TIozAE1UuGmMdtWFp3zrYdoy8=", + "dev": true, + "requires": { + "detect-indent": "^5.0.0", + "graceful-fs": "^4.1.2", + "make-dir": "^1.0.0", + "pify": "^3.0.0", + "sort-keys": "^2.0.0", + "write-file-atomic": "^2.0.0" + } + } + } + }, + "xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", + "dev": true + }, + "y18n": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.0.tgz", + "integrity": "sha512-r9S/ZyXu/Xu9q1tYlpsLIsa3EeLXXk0VwlxqTcFRfg9EhMW+17kbt9G0NrgCmhGb5vT2hyhJZLfDGx+7+5Uj/w==", + "dev": true + }, + "yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "yaml": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.0.tgz", + "integrity": "sha512-yr2icI4glYaNG+KWONODapy2/jDdMSDnrONSjblABjD9B4Z5LgiircSt8m8sRZFNi08kG9Sm0uSHtEmP3zaEGg==", + "dev": true + } + } +} diff --git a/package.json b/package.json index 548976bab0f..8bcbcc20b84 100644 --- a/package.json +++ b/package.json @@ -17,10 +17,10 @@ "@typescript-eslint/parser": "^4.2.0", "coveralls": "^3.0.2", "eslint": "^7.9.0", - "husky": "^1.2.0", + "husky": "^4.3.0", "lerna": "^3.16.4", "lerna-update-wizard": "^0.16.0", - "lint-staged": "^7.3.0", + "lint-staged": "^10.4.2", "nyc": "^13.0.1", "prettier": "^2.0.5", "prs-merged-since": "^1.1.0"