From bccbbd57a16ffdf7d02cd51d173add79d897940f Mon Sep 17 00:00:00 2001 From: Max Vorobev Date: Fri, 19 Jul 2019 13:44:01 +0300 Subject: [PATCH] Migrate tests to latest rules-nodejs (#48) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## What is the goal of this PR? Our fork of `rules-nodejs` is ~600 commits behind the official upstream repo and it's time to switch to upstream rules so it's easier to keep up. ## What are the changes implemented in this PR? * Migrate `nodejs_jest_test` to `jasmine_node_test` * `it()` instead of `test()` in test definitions * `expect(obj).toHaveLength(len)` is not available in Jasmine, so we use `expect(obj.length).toBe(len)`. This corresponds to exact [definition](https://jestjs.io/docs/en/expect.html#tohavelengthnumber) of what original function does. * `xit()` instead of `test.skip()` * `jasmine.DEFAULT_TIMEOUT_INTERVAL` instead of `jest.setTimeout` * `await expectAsync(promise).toBeRejected();` instead of `await expect(promise).rejects.toThrowError();` * Use `yarn` to install dependencies instead of `npm`: * this is a currently-recommended way by `rules-nodejs` (see their `README`) * `grpc` failed to install with `npm_install` — planning to open an issue soon * Add `node_modules` to `.gitignore` — `rules-nodejs` now install Node deps right into workspace --- .gitignore | 1 + BUILD | 65 +- WORKSPACE | 17 +- package.json | 7 +- tests/service/keyspace/Keyspace.test.js | 2 +- .../session/transaction/Attribute.test.js | 8 +- .../session/transaction/AttributeType.test.js | 10 +- .../session/transaction/CommitTx.test.js | 20 +- .../session/transaction/Concept.test.js | 40 +- .../session/transaction/EntityType.test.js | 2 +- .../session/transaction/GraknTx.test.js | 8 +- .../session/transaction/Relation.test.js | 10 +- .../session/transaction/RelationType.test.js | 4 +- .../service/session/transaction/Role.test.js | 4 +- .../service/session/transaction/Rule.test.js | 4 +- .../session/transaction/SchemaConcept.test.js | 10 +- .../service/session/transaction/Thing.test.js | 16 +- .../service/session/transaction/Type.test.js | 10 +- tests/support/GraknTestEnvironment.js | 16 +- yarn.lock | 1308 +++++++++++++++++ 20 files changed, 1425 insertions(+), 137 deletions(-) create mode 100644 yarn.lock diff --git a/.gitignore b/.gitignore index b494c55d1b..d67dee6a52 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ bazel-* .ijwb +node_modules diff --git a/BUILD b/BUILD index 7b8f1eb7bc..78e7043f83 100644 --- a/BUILD +++ b/BUILD @@ -18,42 +18,35 @@ exports_files([ "package.json", + "yarn.lock", "VERSION", "deployment.properties", "RELEASE_TEMPLATE.md", ]) -load("@build_bazel_rules_nodejs//:defs.bzl", "npm_package", "nodejs_jest_test", "babel_library") +load("@build_bazel_rules_nodejs//:defs.bzl", "npm_package") +load("@npm_bazel_jasmine//:index.bzl", "jasmine_node_test") load("@graknlabs_bazel_distribution//npm:rules.bzl", "assemble_npm", "deploy_npm") load("@graknlabs_bazel_distribution//github:rules.bzl", "deploy_github") -babel_library( - name = 'bundle', +npm_package( + name = "client-nodejs", srcs = glob([ + "package.json", "src/*.js", "src/service/Keyspace/KeyspaceService.js", "src/service/Session/*.js", "src/service/Session/util/*.js", "src/service/Session/concept/*.js", - ]), - data = [ "package.json", "README.md", ".npmignore" - ], - babel = "@nodejs_dependencies//@bazel/babel/bin:babel", - babelrc = "babel.rc.js" -) - - -npm_package( - name = "client-nodejs", + ]), deps = [ "@graknlabs_protocol//grpc/nodejs:protocol", - ":bundle", - "@nodejs_dependencies//grpc", - "@nodejs_dependencies//google-protobuf" + "@npm//grpc", + "@npm//google-protobuf" ], visibility = ["//visibility:public"], vendor_external = [ @@ -83,12 +76,11 @@ deploy_github( NODEJS_TEST_DEPENDENCIES = [ ":client-nodejs", - "@nodejs_dependencies//fs-extra", - "@nodejs_dependencies//google-protobuf", - "@nodejs_dependencies//grpc", - "@nodejs_dependencies//jest", - "@nodejs_dependencies//tmp", - "@nodejs_dependencies//unzipper" + "@npm//fs-extra", + "@npm//google-protobuf", + "@npm//grpc", + "@npm//tmp", + "@npm//unzipper" ] NODEJS_TEST_DATA = [ @@ -96,7 +88,7 @@ NODEJS_TEST_DATA = [ "tests/support/basic-genealogy.gql" ] -nodejs_jest_test( +jasmine_node_test( name = "keyspace-test", srcs = [ "tests/support/GraknTestEnvironment.js", @@ -106,7 +98,8 @@ nodejs_jest_test( data = NODEJS_TEST_DATA, ) -nodejs_jest_test( + +jasmine_node_test( name = "concept-test", srcs = [ "tests/support/GraknTestEnvironment.js", @@ -116,7 +109,7 @@ nodejs_jest_test( data = NODEJS_TEST_DATA, ) -nodejs_jest_test( +jasmine_node_test( name = "schemaconcept-test", srcs = [ "tests/support/GraknTestEnvironment.js", @@ -126,7 +119,7 @@ nodejs_jest_test( data = NODEJS_TEST_DATA, ) -nodejs_jest_test( +jasmine_node_test( name = "rule-test", srcs = [ "tests/support/GraknTestEnvironment.js", @@ -136,7 +129,7 @@ nodejs_jest_test( data = NODEJS_TEST_DATA, ) -nodejs_jest_test( +jasmine_node_test( name = "type-test", srcs = [ "tests/support/GraknTestEnvironment.js", @@ -146,7 +139,7 @@ nodejs_jest_test( data = NODEJS_TEST_DATA, ) -nodejs_jest_test( +jasmine_node_test( name = "attribute-test", srcs = [ "tests/support/GraknTestEnvironment.js", @@ -156,7 +149,7 @@ nodejs_jest_test( data = NODEJS_TEST_DATA, ) -nodejs_jest_test( +jasmine_node_test( name = "attributetype-test", srcs = [ "tests/support/GraknTestEnvironment.js", @@ -166,7 +159,7 @@ nodejs_jest_test( data = NODEJS_TEST_DATA, ) -nodejs_jest_test( +jasmine_node_test( name = "role-test", srcs = [ "tests/support/GraknTestEnvironment.js", @@ -176,7 +169,7 @@ nodejs_jest_test( data = NODEJS_TEST_DATA, ) -nodejs_jest_test( +jasmine_node_test( name = "grakntx-test", srcs = [ "tests/support/GraknTestEnvironment.js", @@ -186,7 +179,7 @@ nodejs_jest_test( data = NODEJS_TEST_DATA ) -nodejs_jest_test( +jasmine_node_test( name = "relation-test", srcs = [ "tests/support/GraknTestEnvironment.js", @@ -196,7 +189,7 @@ nodejs_jest_test( data = NODEJS_TEST_DATA, ) -nodejs_jest_test( +jasmine_node_test( name = "relationtype-test", srcs = [ "tests/support/GraknTestEnvironment.js", @@ -206,7 +199,7 @@ nodejs_jest_test( data = NODEJS_TEST_DATA, ) -nodejs_jest_test( +jasmine_node_test( name = "thing-test", srcs = [ "tests/support/GraknTestEnvironment.js", @@ -216,7 +209,7 @@ nodejs_jest_test( data = NODEJS_TEST_DATA, ) -nodejs_jest_test( +jasmine_node_test( name = "entitytype-test", srcs = [ "tests/support/GraknTestEnvironment.js", @@ -226,7 +219,7 @@ nodejs_jest_test( data = NODEJS_TEST_DATA, ) -nodejs_jest_test( +jasmine_node_test( name = "committx-test", srcs = [ "tests/support/GraknTestEnvironment.js", diff --git a/WORKSPACE b/WORKSPACE index 7c5dd41547..317b2965be 100644 --- a/WORKSPACE +++ b/WORKSPACE @@ -62,21 +62,16 @@ graknlabs_build_tools_ci_pip_install() load("@graknlabs_build_tools//bazel:dependencies.bzl", "bazel_rules_nodejs") bazel_rules_nodejs() -load("@build_bazel_rules_nodejs//:package.bzl", "rules_nodejs_dependencies") -rules_nodejs_dependencies() - -load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "npm_install") +load("@build_bazel_rules_nodejs//:defs.bzl", "node_repositories", "yarn_install") node_repositories(package_json = ["//:package.json"]) -npm_install( - name = "nodejs_dependencies", +yarn_install( + name = "npm", package_json = "//:package.json", - data = [ - "@build_bazel_rules_nodejs//internal/babel_library:package.json", - "@build_bazel_rules_nodejs//internal/babel_library:babel.js", - "@build_bazel_rules_nodejs//internal/babel_library:yarn.lock", - ], + yarn_lock = "//:yarn.lock" ) +load("@npm//:install_bazel_dependencies.bzl", "install_bazel_dependencies") +install_bazel_dependencies() ########################## # Load GRPC dependencies # diff --git a/package.json b/package.json index e3327c6a02..c15f288f25 100644 --- a/package.json +++ b/package.json @@ -12,14 +12,13 @@ }, "dependencies": { "google-protobuf": "^3.6.0", - "grpc": "^1.12.3" + "grpc": "^1.22.2" }, "devDependencies": { - "@bazel/babel": "file:internal/babel_library", "fs-extra": "^7.0.0", "grpc-tools": "^1.6.6", - "jest": "^23.4.0", "tmp": "0.1.0", - "unzipper": "0.9.11" + "unzipper": "0.9.11", + "@bazel/jasmine": "latest" } } diff --git a/tests/service/keyspace/Keyspace.test.js b/tests/service/keyspace/Keyspace.test.js index 65f803ec4d..cead8ce684 100644 --- a/tests/service/keyspace/Keyspace.test.js +++ b/tests/service/keyspace/Keyspace.test.js @@ -31,7 +31,7 @@ afterAll(async () => { describe("Keyspace methods", () => { - test("retrieve and delete", async () => { + it("retrieve and delete", async () => { const session = await graknClient.session("retrievetest"); const tx = await session.transaction().write(); tx.close(); diff --git a/tests/service/session/transaction/Attribute.test.js b/tests/service/session/transaction/Attribute.test.js index 40009c962d..159b6b85b2 100644 --- a/tests/service/session/transaction/Attribute.test.js +++ b/tests/service/session/transaction/Attribute.test.js @@ -40,13 +40,13 @@ afterEach(() => { describe("Attribute methods", () => { - test("value", async () => { + it("value", async () => { const doubleAttributeType = await tx.putAttributeType("length", env.dataType().DOUBLE); const doubleAttribute = await doubleAttributeType.create(11.58); expect(await doubleAttribute.value()).toBe(11.58); }); - test("get value Date", async () => { + it("get value Date", async () => { const dateType = await tx.putAttributeType("birth-date", env.dataType().DATE); const personType = await tx.putEntityType('person'); await personType.has(dateType); @@ -59,7 +59,7 @@ describe("Attribute methods", () => { expect(value instanceof Date).toBeTruthy(); }); - test("set value Date", async () => { + it("set value Date", async () => { const dateType = await tx.putAttributeType("birth-date", env.dataType().DATE); const testDate = new Date('2018-08-06'); const date = await dateType.create(testDate); @@ -68,7 +68,7 @@ describe("Attribute methods", () => { expect(testDate.getTime()).toEqual(value.getTime()); }); - test("owners", async () => { + it("owners", async () => { const personType = await tx.putEntityType('person'); const animalType = await tx.putEntityType('animal'); const nameType = await tx.putAttributeType("name", env.dataType().STRING); diff --git a/tests/service/session/transaction/AttributeType.test.js b/tests/service/session/transaction/AttributeType.test.js index c951f98483..2145a9c579 100644 --- a/tests/service/session/transaction/AttributeType.test.js +++ b/tests/service/session/transaction/AttributeType.test.js @@ -40,7 +40,7 @@ afterEach(() => { describe("Attribute type methods", () => { - test("create", async () => { + it("create", async () => { const attributeType = await tx.putAttributeType("firstname", env.dataType().STRING); const attribute = await attributeType.create('Marco'); expect(attribute.isAttribute()).toBeTruthy(); @@ -55,7 +55,7 @@ describe("Attribute type methods", () => { expect(await doubleAttribute.value()).toBe(11.58); }); - test('dataType', async () => { + it('dataType', async () => { const attributeType = await tx.putAttributeType("firstname", env.dataType().STRING); expect(await attributeType.dataType()).toBe('String'); @@ -66,7 +66,7 @@ describe("Attribute type methods", () => { expect(await doubleAttributeType.dataType()).toBe('Double'); }); - test('attribute', async () => { + it('attribute', async () => { const attributeType = await tx.putAttributeType("firstname", env.dataType().STRING); await attributeType.create('Marco'); const attribute = await attributeType.attribute('Marco'); @@ -75,10 +75,10 @@ describe("Attribute type methods", () => { expect(nullAttribute).toBeNull(); }); - test('set/get regex', async () => { + it('set/get regex', async () => { const attributeType = await tx.putAttributeType("id", env.dataType().STRING); const emptyRegex = await attributeType.regex(); - expect(emptyRegex).toHaveLength(0); + expect(emptyRegex.length).toBe(0); await attributeType.regex("(good|bad)-dog"); const regex = await attributeType.regex(); diff --git a/tests/service/session/transaction/CommitTx.test.js b/tests/service/session/transaction/CommitTx.test.js index 5e1d677cbb..c0d2423915 100644 --- a/tests/service/session/transaction/CommitTx.test.js +++ b/tests/service/session/transaction/CommitTx.test.js @@ -30,28 +30,28 @@ beforeAll(async () => { afterAll(async () => { await session.close(); - graknClient.keyspaces().delete("testcommit"); - env.tearDown(); + await graknClient.keyspaces().delete("testcommit"); + await env.tearDown(); }); describe('Integration test', () => { - test("Tx open in READ mode should throw when trying to define", async () => { + it("Tx open in READ mode should throw when trying to define", async () => { const tx = await session.transaction().read(); - await expect(tx.query("define person sub entity;")).rejects.toThrowError(); + await expectAsync(tx.query("define person sub entity;")).toBeRejected(); tx.close(); }); - test("If tx does not commit, different Tx won't see changes", async () => { + it("If tx does not commit, different Tx won't see changes", async () => { const tx = await session.transaction().write(); await tx.query("define catwoman sub entity;"); tx.close() const newTx = await session.transaction().write(); - await expect(newTx.query("match $x sub catwoman; get;")).rejects.toThrowError(); // catwoman label does not exist in the graph + await expectAsync(newTx.query("match $x sub catwoman; get;")).toBeRejected(); // catwoman label does not exist in the graph newTx.close(); }); - test("When tx commit, different tx will see changes", async () => { + it("When tx commit, different tx will see changes", async () => { const tx = await session.transaction().write(); await tx.query("define superman sub entity;"); await tx.commit(); @@ -61,7 +61,7 @@ describe('Integration test', () => { newTx.close(); }); - test.skip("explanation and default of infer is true", async () => { + xit("explanation and default of infer is true", async () => { const localSession = await graknClient.session("gene"); const tx = await localSession.transaction().write(); const iterator = await tx.query("match $x isa cousins; get;"); // TODO: put back offset 0; limit 1; @@ -73,7 +73,7 @@ describe('Integration test', () => { await localSession.close(); }); - test.skip("explanation with join explanation", async () => { + xit("explanation with join explanation", async () => { const localSession = await graknClient.session("gene"); const tx = await localSession.transaction().write(); const iterator = await tx.query(`match ($x, $y) isa marriage; ($y, $z) isa marriage; @@ -87,7 +87,7 @@ describe('Integration test', () => { await localSession.close(); }); - test.skip("no results with infer false", async () => { + xit("no results with infer false", async () => { const localSession = await graknClient.session("gene"); const tx = await localSession.transaction().write(); const iterator = await tx.query("match $x isa cousins; get;", { infer: false }); // TODO: put back offset 0; limit 1; diff --git a/tests/service/session/transaction/Concept.test.js b/tests/service/session/transaction/Concept.test.js index 3098b83445..0afceeffc0 100644 --- a/tests/service/session/transaction/Concept.test.js +++ b/tests/service/session/transaction/Concept.test.js @@ -40,7 +40,7 @@ afterEach(() => { describe("Concept methods", () => { - test("delete type", async () => { + it("delete type", async () => { const personType = await tx.putEntityType('person'); const schemaConcept = await tx.getSchemaConcept('person'); expect(schemaConcept.isSchemaConcept()).toBeTruthy(); @@ -49,7 +49,7 @@ describe("Concept methods", () => { expect(nullSchemaConcept).toBeNull(); }); - test("delete instance", async () => { + it("delete instance", async () => { const personType = await tx.putEntityType('person'); const person = await personType.create(); await person.delete(); @@ -57,16 +57,16 @@ describe("Concept methods", () => { expect(nullConcept).toBeNull(); }); - test("delete concept already deleted", async () => { + it("delete concept already deleted", async () => { const personType = await tx.putEntityType('person'); const person = await personType.create(); await person.delete(); const nullConcept = await tx.getConcept(person.id); expect(nullConcept).toBeNull(); - await expect(person.delete()).rejects.toThrowError(); + await expectAsync(person.delete()).toBeRejected(); }); - test("instance isEntity/isRelation/isAttribute", async () => { + it("instance isEntity/isRelation/isAttribute", async () => { const personType = await tx.putEntityType('person'); const person = await personType.create(); expect(person.isEntity()).toBeTruthy(); @@ -86,7 +86,7 @@ describe("Concept methods", () => { expect(employed.isAttribute()).toBeTruthy(); }); - test("getConcept", async () => { + it("getConcept", async () => { await tx.query("define person sub entity;"); const iterator = await tx.query("insert $x isa person;"); const person = (await iterator.next()).map().get('x'); @@ -102,7 +102,7 @@ describe("Concept methods", () => { }); // Bug regression test - test("Ensure no duplicates in metatypes", async () => { + it("Ensure no duplicates in metatypes", async () => { await tx.query("define person sub entity;"); const result = await tx.query("match $x sub entity; get;"); const concepts = (await result.collectConcepts()); @@ -111,26 +111,26 @@ describe("Concept methods", () => { expect(set.size).toBe(2); }); - test("execute query with no results", async () => { + it("execute query with no results", async () => { await tx.query("define person sub entity;"); const result = await tx.query("match $x isa person; get;") const emptyArray = await result.collect(); - expect(emptyArray).toHaveLength(0); + expect(emptyArray.length).toBe(0); }); - test("execute compute count on empty graph - Answer of Value", async () => { + it("execute compute count on empty graph - Answer of Value", async () => { const result = await tx.query("compute count;"); const answer = await(result.next()); expect(answer.number()).toBe(0); }); - test("execute aggregate count on empty graph - Answer of Value", async () => { + it("execute aggregate count on empty graph - Answer of Value", async () => { const result = await tx.query("match $x sub thing; get; count;"); const answer = await(result.next()); expect(answer.number()).toBe(4); }); - test("group query - Answer of answerGroup", async ()=>{ const localSession = await env.sessionForKeyspace('groupks'); + it("group query - Answer of answerGroup", async ()=>{ const localSession = await env.sessionForKeyspace('groupks'); let localTx = await localSession.transaction().write(); const parentshipMap = await env.buildParentship(localTx); localTx = await localSession.transaction().write(); @@ -147,7 +147,7 @@ describe("Concept methods", () => { }); - test("getSchemaConcept", async () => { + it("getSchemaConcept", async () => { await tx.query("define person sub entity;"); const personType = await tx.getSchemaConcept("person"); @@ -157,30 +157,30 @@ describe("Concept methods", () => { expect(nonPerson).toBe(null); }); - test("putEntityType", async () => { + it("putEntityType", async () => { const personType = await tx.putEntityType("person"); expect(personType.isSchemaConcept()).toBeTruthy(); expect(personType.isEntityType()).toBeTruthy(); }); - test("putRelationType", async () => { + it("putRelationType", async () => { const marriage = await tx.putRelationType("marriage"); expect(marriage.isSchemaConcept()).toBeTruthy(); expect(marriage.isRelationType()).toBeTruthy(); }); - test("putAttributeType", async () => { + it("putAttributeType", async () => { const attributeType = await tx.putAttributeType("firstname", env.dataType().STRING); expect(attributeType.isAttributeType()).toBeTruthy(); }); - test("putRole", async () => { + it("putRole", async () => { const role = await tx.putRole("father"); expect(role.isRole()).toBeTruthy(); expect(role.baseType).toBe("ROLE"); }); - test("putRule", async () => { + it("putRule", async () => { const label = "genderisedParentship"; const when = "{ (parent: $p, child: $c) isa parentship; $p has gender 'female'; $c has gender 'male'; };"; const then = "{ (mother: $p, son: $c) isa parentship; };"; @@ -189,7 +189,7 @@ describe("Concept methods", () => { expect(rule.isRule()).toBeTruthy(); }); - test("getAttributesByValue", async () => { + it("getAttributesByValue", async () => { const firstNameAttributeType = await tx.putAttributeType("firstname", env.dataType().STRING); const middleNameAttributeType = await tx.putAttributeType("middlename", env.dataType().STRING); const a1 = await firstNameAttributeType.create('James'); @@ -203,6 +203,6 @@ describe("Concept methods", () => { expect(await attr.value()).toBe('James'); }); const bondAttributes = await (await tx.getAttributesByValue('Bond', env.dataType().STRING)).collect(); - expect(bondAttributes).toHaveLength(0); + expect(bondAttributes.length).toBe(0); }); }); \ No newline at end of file diff --git a/tests/service/session/transaction/EntityType.test.js b/tests/service/session/transaction/EntityType.test.js index 01cbbcd7bd..1a214c1871 100644 --- a/tests/service/session/transaction/EntityType.test.js +++ b/tests/service/session/transaction/EntityType.test.js @@ -40,7 +40,7 @@ afterEach(() => { describe("Entity type methods", () => { - test("create", async () => { + it("create", async () => { const personType = await tx.putEntityType("person"); const person = await personType.create(); expect(person.isEntity()).toBeTruthy(); diff --git a/tests/service/session/transaction/GraknTx.test.js b/tests/service/session/transaction/GraknTx.test.js index e1f19070ed..916354e96e 100644 --- a/tests/service/session/transaction/GraknTx.test.js +++ b/tests/service/session/transaction/GraknTx.test.js @@ -40,7 +40,7 @@ afterEach(() => { describe("Transaction methods", () => { - test("shortest path - Answer of conceptList", async ()=>{ + it("shortest path - Answer of conceptList", async ()=>{ let localSession = await env.sessionForKeyspace('shortestpathks'); let localTx = await localSession.transaction().write(); const parentshipMap = await env.buildParentship(localTx); @@ -49,7 +49,7 @@ describe("Transaction methods", () => { localTx = await localSession.transaction().read(); const result = await localTx.query(`compute path from ${parentshipMap.parent}, to ${parentshipMap.child};`); const answer = await(result.next()); - expect(answer.list()).toHaveLength(3); + expect(answer.list().length).toBe(3); expect(answer.list().includes(parentshipMap.child)).toBeTruthy(); expect(answer.list().includes(parentshipMap.parent)).toBeTruthy(); expect(answer.list().includes(parentshipMap.rel)).toBeTruthy(); @@ -58,7 +58,7 @@ describe("Transaction methods", () => { await env.graknClient.keyspaces().delete('shortestpathks'); }); - test("cluster connected components - Answer of conceptSet", async ()=>{ + it("cluster connected components - Answer of conceptSet", async ()=>{ let localSession = await env.sessionForKeyspace('clusterkeyspace'); let localTx = await localSession.transaction().write(); const parentshipMap = await env.buildParentship(localTx); @@ -76,7 +76,7 @@ describe("Transaction methods", () => { await env.graknClient.keyspaces().delete('clusterkeyspace'); }); - test("compute centrality - Answer of conceptSetMeasure", async ()=>{ + it("compute centrality - Answer of conceptSetMeasure", async ()=>{ const localSession = await env.sessionForKeyspace('computecentralityks'); let localTx = await localSession.transaction().write(); const parentshipMap = await env.buildParentship(localTx); diff --git a/tests/service/session/transaction/Relation.test.js b/tests/service/session/transaction/Relation.test.js index 19247251db..34478dfd1f 100644 --- a/tests/service/session/transaction/Relation.test.js +++ b/tests/service/session/transaction/Relation.test.js @@ -40,7 +40,7 @@ afterEach(() => { describe("Relationsihp methods", () => { - test("rolePlayersMap && rolePlayers with 2 roles with 1 player each", async () => { + it("rolePlayersMap && rolePlayers with 2 roles with 1 player each", async () => { const relationType = await tx.putRelationType('parenthood'); const relation = await relationType.create(); const parentRole = await tx.putRole('parent'); @@ -58,7 +58,7 @@ describe("Relationsihp methods", () => { expect(rolePlayers.length).toBe(2); }); - test("rolePlayersMap && rolePlayers with 1 role with 2 players", async () => { + it("rolePlayersMap && rolePlayers with 1 role with 2 players", async () => { const relationType = await tx.putRelationType('parenthood'); const relation = await relationType.create(); const parentRole = await tx.putRole('parent'); @@ -75,7 +75,7 @@ describe("Relationsihp methods", () => { expect(rolePlayers.length).toBe(2); }); - test("rolePlayersMap && rolePlayers with 2 roles with the same player", async () => { + it("rolePlayersMap && rolePlayers with 2 roles with the same player", async () => { const relationType = await tx.putRelationType('parenthood'); const relation = await relationType.create(); const parentRole = await tx.putRole('parent'); @@ -93,7 +93,7 @@ describe("Relationsihp methods", () => { expect(rolePlayers[0].isThing()).toBeTruthy(); }); - test("assign && unassign && rolePlayers", async () => { + it("assign && unassign && rolePlayers", async () => { const relationType = await tx.putRelationType('parenthood'); const relation = await relationType.create(); const parentRole = await tx.putRole('parent'); @@ -112,7 +112,7 @@ describe("Relationsihp methods", () => { }); - test("rolePlayers() filtered by Role", async () => { + it("rolePlayers() filtered by Role", async () => { const relationType = await tx.putRelationType('parenthood'); const relation = await relationType.create(); const parentRole = await tx.putRole('parent'); diff --git a/tests/service/session/transaction/RelationType.test.js b/tests/service/session/transaction/RelationType.test.js index dc9dd7d1d6..c4ffd05727 100644 --- a/tests/service/session/transaction/RelationType.test.js +++ b/tests/service/session/transaction/RelationType.test.js @@ -40,13 +40,13 @@ afterEach(() => { describe("Relation type methods", () => { - test("create", async () => { + it("create", async () => { const relationType = await tx.putRelationType("parenthood"); const relation = await relationType.create(); expect(relation.isRelation()).toBeTruthy(); }); - test('Get/set/delete relates', async () => { + it('Get/set/delete relates', async () => { const relationType = await tx.putRelationType("parenthood"); const parentRole = await tx.putRole('parent'); const childRole = await tx.putRole('child'); diff --git a/tests/service/session/transaction/Role.test.js b/tests/service/session/transaction/Role.test.js index 8be6912977..95daa0fb11 100644 --- a/tests/service/session/transaction/Role.test.js +++ b/tests/service/session/transaction/Role.test.js @@ -40,7 +40,7 @@ afterEach(() => { describe("Role methods", () => { - test("relations", async () => { + it("relations", async () => { await tx.query('define parentship sub relation, relates parent, relates child;'); const result = await tx.query('match $x type parent; get;'); const concepts = (await result.collectConcepts()); @@ -51,7 +51,7 @@ describe("Role methods", () => { expect(await rels[0].label()).toBe('parentship'); }); - test("players", async () => { + it("players", async () => { await tx.query('define parentship sub relation, relates parent, relates child;'); await tx.query('define person sub entity, plays parent;'); const result = await tx.query('match $x type parent; get;'); diff --git a/tests/service/session/transaction/Rule.test.js b/tests/service/session/transaction/Rule.test.js index 40119fba36..d5d3b44964 100644 --- a/tests/service/session/transaction/Rule.test.js +++ b/tests/service/session/transaction/Rule.test.js @@ -40,7 +40,7 @@ afterEach(() => { describe("Rule methods", () => { - test("get When/Then", async () => { + it("get When/Then", async () => { const label = "genderisedParentship"; const when = "{ (parent: $p, child: $c) isa parentship; $c has gender \"male\"; $p has gender \"female\"; };"; const then = "{ (mother: $p, son: $c) isa parentship; };"; @@ -49,7 +49,7 @@ describe("Rule methods", () => { expect(await rule.getThen()).toBe(then); }); - test("get When/Then when null", async () => { + it("get When/Then when null", async () => { const rule = await tx.getSchemaConcept('rule'); expect(await rule.getWhen()).toBeNull(); expect(await rule.getThen()).toBeNull(); diff --git a/tests/service/session/transaction/SchemaConcept.test.js b/tests/service/session/transaction/SchemaConcept.test.js index bfd650aa10..f4b0e2285b 100644 --- a/tests/service/session/transaction/SchemaConcept.test.js +++ b/tests/service/session/transaction/SchemaConcept.test.js @@ -41,7 +41,7 @@ afterEach(() => { describe("Schema concept methods", () => { - test("Get/set label", async () => { + it("Get/set label", async () => { await tx.query('define person sub entity;') const personSchemaConcept = await tx.getSchemaConcept('person'); expect(await personSchemaConcept.label()).toBe('person'); @@ -52,7 +52,7 @@ describe("Schema concept methods", () => { expect(nullSchemaConcept).toBeNull(); }); - test("isImplicit", async () => { + it("isImplicit", async () => { await tx.query('define person sub entity;') const personSchemaConcept = await tx.getSchemaConcept('person'); expect(await personSchemaConcept.isImplicit()).toBe(false); @@ -61,7 +61,7 @@ describe("Schema concept methods", () => { expect(await implicitSchemaConcept.isImplicit()).toBe(true); }); - test("Get sups and subs", async () => { + it("Get sups and subs", async () => { await tx.query('define person sub entity;') const personSchemaConcept = await tx.getSchemaConcept('person'); const sups = await (await personSchemaConcept.sups()).collect(); @@ -83,7 +83,7 @@ describe("Schema concept methods", () => { expect(subLabels[1]).toBe('person'); }); - test("Get sup", async () => { + it("Get sup", async () => { const entitySchemaConcept = await tx.getSchemaConcept('entity'); const metaType = await entitySchemaConcept.sup(); expect(metaType.baseType).toBe('META_TYPE'); @@ -91,7 +91,7 @@ describe("Schema concept methods", () => { expect(sup).toBeNull(); }); - test("Set sup", async () => { + it("Set sup", async () => { const humanSchemaConcept = await tx.putEntityType('human'); const maleSchemaConcept = await tx.putEntityType('male'); const supType = await maleSchemaConcept.sup(); diff --git a/tests/service/session/transaction/Thing.test.js b/tests/service/session/transaction/Thing.test.js index 6b42bcb8d5..ca03358bd4 100644 --- a/tests/service/session/transaction/Thing.test.js +++ b/tests/service/session/transaction/Thing.test.js @@ -40,13 +40,13 @@ afterEach(() => { describe("Thing methods", () => { - test("isInferred", async () => { + it("isInferred", async () => { const personType = await tx.putEntityType('person'); const thing = await personType.create(); expect(await thing.isInferred()).toBeFalsy(); }); - test("type", async () => { + it("type", async () => { const personType = await tx.putEntityType('person'); const thing = await personType.create(); const type = await thing.type(); @@ -54,7 +54,7 @@ describe("Thing methods", () => { expect(type.isType()).toBeTruthy(); }); - test("relations", async () => { + it("relations", async () => { const relationType = await tx.putRelationType('parenthood'); const relation = await relationType.create(); const parentRole = await tx.putRole('parent'); @@ -66,7 +66,7 @@ describe("Thing methods", () => { expect(rels[0].id).toBe(relation.id); }); - test("relations() filtered by role", async () => { + it("relations() filtered by role", async () => { const personType = await tx.putEntityType('person'); const person = await personType.create(); @@ -94,7 +94,7 @@ describe("Thing methods", () => { expect(employerRelations[0].id).toBe(employmentRel.id); }); - test("roles", async () => { + it("roles", async () => { const relationType = await tx.putRelationType('parenthood'); const relation = await relationType.create(); const parentRole = await tx.putRole('parent'); @@ -106,7 +106,7 @@ describe("Thing methods", () => { expect(roles[0].id).toBe(parentRole.id); }); - test("has/unhas/get attributes", async () => { + it("has/unhas/get attributes", async () => { const personType = await tx.putEntityType('person'); const attrType = await tx.putAttributeType('name', env.dataType().STRING); await personType.has(attrType); @@ -121,7 +121,7 @@ describe("Thing methods", () => { expect(emptyAttrs.length).toBe(0); }); - test("attributes(...AttributeType)", async () => { + it("attributes(...AttributeType)", async () => { const personType = await tx.putEntityType('person'); const attrType = await tx.putAttributeType('name', env.dataType().STRING); const attrMarriedType = await tx.putAttributeType('married', env.dataType().BOOLEAN); @@ -142,7 +142,7 @@ describe("Thing methods", () => { expect(empty.length).toBe(0); }); - test('keys(...AttributeType)', async () => { + it('keys(...AttributeType)', async () => { const personType = await tx.putEntityType('person'); const nameType = await tx.putAttributeType('name', env.dataType().STRING); const surnameType = await tx.putAttributeType('surname', env.dataType().STRING); diff --git a/tests/service/session/transaction/Type.test.js b/tests/service/session/transaction/Type.test.js index 2a8cc965b1..7b90726440 100644 --- a/tests/service/session/transaction/Type.test.js +++ b/tests/service/session/transaction/Type.test.js @@ -40,7 +40,7 @@ afterEach(() => { describe("Type methods", () => { - test("isAbstract", async () => { + it("isAbstract", async () => { const dogType = await tx.putEntityType("dog"); let isAbstract = await dogType.isAbstract(); expect(isAbstract).toBeFalsy(); @@ -52,7 +52,7 @@ describe("Type methods", () => { expect(isAbstract).toBeFalsy(); }); - test("get/set/delete plays", async () => { + it("get/set/delete plays", async () => { const role = await tx.putRole('father'); const type = await tx.putEntityType('person'); const plays = await (await type.playing()).collect(); @@ -66,7 +66,7 @@ describe("Type methods", () => { expect(playsRemoved.length).toBe(0); }); - test("get/set/delete attributes", async () => { + it("get/set/delete attributes", async () => { const type = await tx.putEntityType('person'); const nameType = await tx.putAttributeType('name', env.dataType().STRING); const attrs = await (await type.attributes()).collect(); @@ -80,7 +80,7 @@ describe("Type methods", () => { expect(attrsRemoved.length).toBe(0); }); - test("instances", async () => { + it("instances", async () => { const personType = await tx.putEntityType("person"); const instances = await (await personType.instances()).collect(); expect(instances.length).toBe(0); @@ -89,7 +89,7 @@ describe("Type methods", () => { expect(instancesWithPerson.length).toBe(1); }); - test("Get/set/delete key", async () => { + it("Get/set/delete key", async () => { const type = await tx.putEntityType('person'); const nameType = await tx.putAttributeType('name', env.dataType().STRING); const keys = await (await type.keys()).collect(); diff --git a/tests/support/GraknTestEnvironment.js b/tests/support/GraknTestEnvironment.js index 0b597b6a08..8475ed42fb 100644 --- a/tests/support/GraknTestEnvironment.js +++ b/tests/support/GraknTestEnvironment.js @@ -28,25 +28,17 @@ const tmp = require('tmp'); const unzipper = require('unzipper'); -// Test Grakn with distribution code if TEST_ENV is dist -let GraknClient; -let graknClient; -if(process.env.TEST_ENV === 'dist'){ - GraknClient = require("../../dist/GraknClient"); - graknClient = new GraknClient(DEFAULT_URI); -}else { - GraknClient = require("../../client-nodejs/src/GraknClient"); - graknClient = new GraknClient(DEFAULT_URI); -} +const GraknClient = require("../../client-nodejs/src/GraknClient"); +const graknClient = new GraknClient(DEFAULT_URI); -jest.setTimeout(INTEGRATION_TESTS_TIMEOUT); -//Every test file instantiate a new GraknEnvironment - so session will be new for every test file let session; let tempRootDir; let graknRootDir; let graknExecutablePath; +jasmine.DEFAULT_TIMEOUT_INTERVAL = INTEGRATION_TESTS_TIMEOUT; + const unzipArchive = function(zipFile, extractPath) { return new Promise((resolve, reject) => { fs.createReadStream(zipFile) diff --git a/yarn.lock b/yarn.lock new file mode 100644 index 0000000000..2e28784a7e --- /dev/null +++ b/yarn.lock @@ -0,0 +1,1308 @@ +# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. +# yarn lockfile v1 + + +"@bazel/jasmine@latest": + version "0.33.1" + resolved "https://registry.yarnpkg.com/@bazel/jasmine/-/jasmine-0.33.1.tgz#70bdabc3e2d78d935f7a703b20522a8f7d7d982d" + integrity sha512-5i2gaEKJWQ/gVK4JcvaB9hbflj6MguqDW0eWeDYn6mIQIjJTdLkGHLTkbU4yaF9DeqZxMbc5Ti8AcqL/pB1Apg== + dependencies: + jasmine "~3.3.1" + jasmine-core "~3.3.0" + v8-coverage "1.0.9" + +abbrev@1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8" + integrity sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q== + +ansi-regex@^2.0.0: + version "2.1.1" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df" + integrity sha1-w7M6te42DYbg5ijwRorn7yfWVN8= + +ansi-regex@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-3.0.0.tgz#ed0317c322064f79466c02966bddb605ab37d998" + integrity sha1-7QMXwyIGT3lGbAKWa922Bas32Zg= + +aproba@^1.0.3: + version "1.2.0" + resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a" + integrity sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw== + +are-we-there-yet@~1.1.2: + version "1.1.5" + resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz#4b35c2944f062a8bfcda66410760350fe9ddfc21" + integrity sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w== + dependencies: + delegates "^1.0.0" + readable-stream "^2.0.6" + +ascli@~1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/ascli/-/ascli-1.0.1.tgz#bcfa5974a62f18e81cabaeb49732ab4a88f906bc" + integrity sha1-vPpZdKYvGOgcq660lzKrSoj5Brw= + dependencies: + colour "~0.7.1" + optjs "~3.2.2" + +balanced-match@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767" + integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c= + +big-integer@^1.6.17: + version "1.6.44" + resolved "https://registry.yarnpkg.com/big-integer/-/big-integer-1.6.44.tgz#4ee9ae5f5839fc11ade338fea216b4513454a539" + integrity sha512-7MzElZPTyJ2fNvBkPxtFQ2fWIkVmuzw41+BZHSzpEq3ymB2MfeKp1+yXl/tS75xCx+WnyV+yb0kp+K1C3UNwmQ== + +binary@~0.3.0: + version "0.3.0" + resolved "https://registry.yarnpkg.com/binary/-/binary-0.3.0.tgz#9f60553bc5ce8c3386f3b553cff47462adecaa79" + integrity sha1-n2BVO8XOjDOG87VTz/R0Yq3sqnk= + dependencies: + buffers "~0.1.1" + chainsaw "~0.1.0" + +bluebird@~3.4.1: + version "3.4.7" + resolved "https://registry.yarnpkg.com/bluebird/-/bluebird-3.4.7.tgz#f72d760be09b7f76d08ed8fae98b289a8d05fab3" + integrity sha1-9y12C+Cbf3bQjtj66Ysomo0F+rM= + +brace-expansion@^1.1.7: + version "1.1.11" + resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.11.tgz#3c7fcbf529d87226f3d2f52b966ff5271eb441dd" + integrity sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA== + dependencies: + balanced-match "^1.0.0" + concat-map "0.0.1" + +buffer-indexof-polyfill@~1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/buffer-indexof-polyfill/-/buffer-indexof-polyfill-1.0.1.tgz#a9fb806ce8145d5428510ce72f278bb363a638bf" + integrity sha1-qfuAbOgUXVQoUQznLyeLs2OmOL8= + +buffers@~0.1.1: + version "0.1.1" + resolved "https://registry.yarnpkg.com/buffers/-/buffers-0.1.1.tgz#b24579c3bed4d6d396aeee6d9a8ae7f5482ab7bb" + integrity sha1-skV5w77U1tOWru5tmorn9Ugqt7s= + +bytebuffer@~5: + version "5.0.1" + resolved "https://registry.yarnpkg.com/bytebuffer/-/bytebuffer-5.0.1.tgz#582eea4b1a873b6d020a48d58df85f0bba6cfddd" + integrity sha1-WC7qSxqHO20CCkjVjfhfC7ps/d0= + dependencies: + long "~3" + +camelcase@^2.0.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-2.1.1.tgz#7c1d16d679a1bbe59ca02cacecfb011e201f5a1f" + integrity sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8= + +camelcase@^4.1.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/camelcase/-/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" + integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= + +chainsaw@~0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/chainsaw/-/chainsaw-0.1.0.tgz#5eab50b28afe58074d0d58291388828b5e5fbc98" + integrity sha1-XqtQsor+WAdNDVgpE4iCi15fvJg= + dependencies: + traverse ">=0.3.0 <0.4" + +chownr@^1.1.1: + version "1.1.2" + resolved "https://registry.yarnpkg.com/chownr/-/chownr-1.1.2.tgz#a18f1e0b269c8a6a5d3c86eb298beb14c3dd7bf6" + integrity sha512-GkfeAQh+QNy3wquu9oIZr6SS5x7wGdSgNQvD10X3r+AZr1Oys22HW8kAmDMvNg2+Dm0TeGaEuO8gFwdBXxwO8A== + +cliui@^3.0.3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-3.2.0.tgz#120601537a916d29940f934da3b48d585a39213d" + integrity sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + wrap-ansi "^2.0.0" + +cliui@^4.0.0: + version "4.1.0" + resolved "https://registry.yarnpkg.com/cliui/-/cliui-4.1.0.tgz#348422dbe82d800b3022eef4f6ac10bf2e4d1b49" + integrity sha512-4FG+RSG9DL7uEwRUZXZn3SS34DiDPfzP0VOiEwtUWlE+AR2EIg+hSyvrIgUUfhdgR/UkAeW2QHgeP+hWrXs7jQ== + dependencies: + string-width "^2.1.1" + strip-ansi "^4.0.0" + wrap-ansi "^2.0.0" + +code-point-at@^1.0.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/code-point-at/-/code-point-at-1.1.0.tgz#0d070b4d043a5bea33a2f1a40e2edb3d9a4ccf77" + integrity sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c= + +colour@~0.7.1: + version "0.7.1" + resolved "https://registry.yarnpkg.com/colour/-/colour-0.7.1.tgz#9cb169917ec5d12c0736d3e8685746df1cadf778" + integrity sha1-nLFpkX7F0SwHNtPoaFdG3xyt93g= + +commander@~2.20.0: + version "2.20.0" + resolved "https://registry.yarnpkg.com/commander/-/commander-2.20.0.tgz#d58bb2b5c1ee8f87b0d340027e9e94e222c5a422" + integrity sha512-7j2y+40w61zy6YC2iRNpUe/NwhNyoXrYpHMrSunaMG64nRnaf96zO/KMQR4OyN/UnE5KLyEBnKHd4aG3rskjpQ== + +concat-map@0.0.1: + version "0.0.1" + resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b" + integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s= + +console-control-strings@^1.0.0, console-control-strings@~1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/console-control-strings/-/console-control-strings-1.1.0.tgz#3d7cf4464db6446ea644bf4b39507f9851008e8e" + integrity sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4= + +core-util-is@~1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/core-util-is/-/core-util-is-1.0.2.tgz#b5fd54220aa2bc5ab57aab7140c940754503c1a7" + integrity sha1-tf1UIgqivFq1eqtxQMlAdUUDwac= + +cross-spawn@^4: + version "4.0.2" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-4.0.2.tgz#7b9247621c23adfdd3856004a823cbe397424d41" + integrity sha1-e5JHYhwjrf3ThWAEqCPL45dCTUE= + dependencies: + lru-cache "^4.0.1" + which "^1.2.9" + +cross-spawn@^5.0.1: + version "5.1.0" + resolved "https://registry.yarnpkg.com/cross-spawn/-/cross-spawn-5.1.0.tgz#e8bd0efee58fcff6f8f94510a0a554bbfa235449" + integrity sha1-6L0O/uWPz/b4+UUQoKVUu/ojVEk= + dependencies: + lru-cache "^4.0.1" + shebang-command "^1.2.0" + which "^1.2.9" + +debug@^3.1.0, debug@^3.2.6: + version "3.2.6" + resolved "https://registry.yarnpkg.com/debug/-/debug-3.2.6.tgz#e83d17de16d8a7efb7717edbe5fb10135eee629b" + integrity sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ== + dependencies: + ms "^2.1.1" + +decamelize@^1.1.1: + version "1.2.0" + resolved "https://registry.yarnpkg.com/decamelize/-/decamelize-1.2.0.tgz#f6534d15148269b20352e7bee26f501f9a191290" + integrity sha1-9lNNFRSCabIDUue+4m9QH5oZEpA= + +deep-extend@^0.6.0: + version "0.6.0" + resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.6.0.tgz#c4fa7c95404a17a9c3e8ca7e1537312b736330ac" + integrity sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA== + +delegates@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a" + integrity sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o= + +detect-libc@^1.0.2: + version "1.0.3" + resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b" + integrity sha1-+hN8S9aY7fVc1c0CrFWfkaTEups= + +duplexer2@~0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/duplexer2/-/duplexer2-0.1.4.tgz#8b12dab878c0d69e3e7891051662a32fc6bddcc1" + integrity sha1-ixLauHjA1p4+eJEFFmKjL8a93ME= + dependencies: + readable-stream "^2.0.2" + +error-ex@^1.3.1: + version "1.3.2" + resolved "https://registry.yarnpkg.com/error-ex/-/error-ex-1.3.2.tgz#b4ac40648107fdcdcfae242f428bea8a14d4f1bf" + integrity sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g== + dependencies: + is-arrayish "^0.2.1" + +execa@^0.7.0: + version "0.7.0" + resolved "https://registry.yarnpkg.com/execa/-/execa-0.7.0.tgz#944becd34cc41ee32a63a9faf27ad5a65fc59777" + integrity sha1-lEvs00zEHuMqY6n68nrVpl/Fl3c= + dependencies: + cross-spawn "^5.0.1" + get-stream "^3.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" + +find-up@^2.1.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-2.1.0.tgz#45d1b7e506c717ddd482775a2b77920a3c0c57a7" + integrity sha1-RdG35QbHF93UgndaK3eSCjwMV6c= + dependencies: + locate-path "^2.0.0" + +find-up@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/find-up/-/find-up-3.0.0.tgz#49169f1d7993430646da61ecc5ae355c21c97b73" + integrity sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg== + dependencies: + locate-path "^3.0.0" + +foreground-child@^1.5.6: + version "1.5.6" + resolved "https://registry.yarnpkg.com/foreground-child/-/foreground-child-1.5.6.tgz#4fd71ad2dfde96789b980a5c0a295937cb2f5ce9" + integrity sha1-T9ca0t/elnibmApcCilZN8svXOk= + dependencies: + cross-spawn "^4" + signal-exit "^3.0.0" + +fs-extra@^7.0.0: + version "7.0.1" + resolved "https://registry.yarnpkg.com/fs-extra/-/fs-extra-7.0.1.tgz#4f189c44aa123b895f722804f55ea23eadc348e9" + integrity sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw== + dependencies: + graceful-fs "^4.1.2" + jsonfile "^4.0.0" + universalify "^0.1.0" + +fs-minipass@^1.2.5: + version "1.2.6" + resolved "https://registry.yarnpkg.com/fs-minipass/-/fs-minipass-1.2.6.tgz#2c5cc30ded81282bfe8a0d7c7c1853ddeb102c07" + integrity sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ== + dependencies: + minipass "^2.2.1" + +fs.realpath@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/fs.realpath/-/fs.realpath-1.0.0.tgz#1504ad2523158caa40db4a2787cb01411994ea4f" + integrity sha1-FQStJSMVjKpA20onh8sBQRmU6k8= + +fstream@~1.0.10: + version "1.0.12" + resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.12.tgz#4e8ba8ee2d48be4f7d0de505455548eae5932045" + integrity sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg== + dependencies: + graceful-fs "^4.1.2" + inherits "~2.0.0" + mkdirp ">=0.5 0" + rimraf "2" + +gauge@~2.7.3: + version "2.7.4" + resolved "https://registry.yarnpkg.com/gauge/-/gauge-2.7.4.tgz#2c03405c7538c39d7eb37b317022e325fb018bf7" + integrity sha1-LANAXHU4w51+s3sxcCLjJfsBi/c= + dependencies: + 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" + +get-caller-file@^1.0.1: + version "1.0.3" + resolved "https://registry.yarnpkg.com/get-caller-file/-/get-caller-file-1.0.3.tgz#f978fa4c90d1dfe7ff2d6beda2a515e713bdcf4a" + integrity sha512-3t6rVToeoZfYSGd8YoLFR2DJkiQrIiUrGcjvFX2mDw3bn6k2OtwHN0TNCLbBO+w8qTvimhDkv+LSscbJY1vE6w== + +get-stream@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/get-stream/-/get-stream-3.0.0.tgz#8e943d1358dc37555054ecbe2edb05aa174ede14" + integrity sha1-jpQ9E1jcN1VQVOy+LtsFqhdO3hQ= + +glob@^7.0.5, glob@^7.0.6, glob@^7.1.3: + version "7.1.4" + resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.4.tgz#aa608a2f6c577ad357e1ae5a5c26d9a8d1969255" + integrity sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A== + dependencies: + 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" + +google-protobuf@^3.6.0: + version "3.9.0" + resolved "https://registry.yarnpkg.com/google-protobuf/-/google-protobuf-3.9.0.tgz#1f33e51e7993ea51e758a82650ad4347273b9bc6" + integrity sha512-/t/7NvL9jAmfXLdqJG7Nv2c5Z2GTdZSKi/T6kI3hpIS4yA6rXqBAMF4Yx39xbICWDgRv+R+Z79n7ZxuvoUQU4w== + +graceful-fs@^4.1.2, graceful-fs@^4.1.6: + version "4.2.0" + resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.2.0.tgz#8d8fdc73977cb04104721cb53666c1ca64cd328b" + integrity sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg== + +grpc-tools@^1.6.6: + version "1.8.0" + resolved "https://registry.yarnpkg.com/grpc-tools/-/grpc-tools-1.8.0.tgz#db438dbd0cfb43d412dc02a767d5fb2193636847" + integrity sha512-GzYHjPQ/sbV/DmnNRksapMlLj26Tvq2Qppmzjmd+lHYZNeWM1feiGsYCduzJLyy295P+3uYIPy2/w/1thAnOow== + dependencies: + node-pre-gyp "^0.12.0" + +grpc@^1.22.2: + version "1.22.2" + resolved "https://registry.yarnpkg.com/grpc/-/grpc-1.22.2.tgz#1a60c728c692a93a85e855e35c2e0216654f0198" + integrity sha512-gaK59oAA5/mlOIn+hQO5JROPoAzsaGRpEMcrAayW5WGETS8QScpBoQ+XBxEWAAF0kbeGIELuGRCVEObKS1SLmw== + dependencies: + lodash.camelcase "^4.3.0" + lodash.clone "^4.5.0" + nan "^2.13.2" + node-pre-gyp "^0.13.0" + protobufjs "^5.0.3" + +handlebars@^4.0.3: + version "4.1.2" + resolved "https://registry.yarnpkg.com/handlebars/-/handlebars-4.1.2.tgz#b6b37c1ced0306b221e094fc7aca3ec23b131b67" + integrity sha512-nvfrjqvt9xQ8Z/w0ijewdD/vvWDTOweBUm96NTr66Wfvo1mJenBLwcYmPs3TIBP5ruzYGD7Hx/DaM9RmhroGPw== + dependencies: + neo-async "^2.6.0" + optimist "^0.6.1" + source-map "^0.6.1" + optionalDependencies: + uglify-js "^3.1.4" + +has-flag@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/has-flag/-/has-flag-1.0.0.tgz#9d9e793165ce017a00f00418c43f942a7b1d11fa" + integrity sha1-nZ55MWXOAXoA8AQYxD+UKnsdEfo= + +has-unicode@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9" + integrity sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk= + +hosted-git-info@^2.1.4: + version "2.7.1" + resolved "https://registry.yarnpkg.com/hosted-git-info/-/hosted-git-info-2.7.1.tgz#97f236977bd6e125408930ff6de3eec6281ec047" + integrity sha512-7T/BxH19zbcCTa8XkMlbK5lTo1WtgkFi3GvdWEyNuc4Vex7/9Dqbnpsf4JMydcfj9HCg4zUWFTL3Za6lapg5/w== + +iconv-lite@^0.4.4: + version "0.4.24" + resolved "https://registry.yarnpkg.com/iconv-lite/-/iconv-lite-0.4.24.tgz#2022b4b25fbddc21d2f524974a474aafe733908b" + integrity sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA== + dependencies: + safer-buffer ">= 2.1.2 < 3" + +ignore-walk@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/ignore-walk/-/ignore-walk-3.0.1.tgz#a83e62e7d272ac0e3b551aaa82831a19b69f82f8" + integrity sha512-DTVlMx3IYPe0/JJcYP7Gxg7ttZZu3IInhuEhbchuqneY9wWe5Ojy2mXLBaQFUQmo0AW2r3qG7m1mg86js+gnlQ== + dependencies: + minimatch "^3.0.4" + +inflight@^1.0.4: + version "1.0.6" + resolved "https://registry.yarnpkg.com/inflight/-/inflight-1.0.6.tgz#49bd6331d7d02d0c09bc910a1075ba8165b56df9" + integrity sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk= + dependencies: + once "^1.3.0" + wrappy "1" + +inherits@2, inherits@~2.0.0, inherits@~2.0.3: + version "2.0.4" + resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.4.tgz#0fa2c64f932917c3433a0ded55363aae37416b7c" + integrity sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ== + +ini@~1.3.0: + version "1.3.5" + resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927" + integrity sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw== + +invert-kv@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/invert-kv/-/invert-kv-1.0.0.tgz#104a8e4aaca6d3d8cd157a8ef8bfab2d7a3ffdb6" + integrity sha1-EEqOSqym09jNFXqO+L+rLXo//bY= + +is-arrayish@^0.2.1: + version "0.2.1" + resolved "https://registry.yarnpkg.com/is-arrayish/-/is-arrayish-0.2.1.tgz#77c99840527aa8ecb1a8ba697b80645a7a926a9d" + integrity sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0= + +is-fullwidth-code-point@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz#ef9e31386f031a7f0d643af82fde50c457ef00cb" + integrity sha1-754xOG8DGn8NZDr4L95QxFfvAMs= + dependencies: + number-is-nan "^1.0.0" + +is-fullwidth-code-point@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz#a3b30a5c4f199183167aaab93beefae3ddfb654f" + integrity sha1-o7MKXE8ZkYMWeqq5O+764937ZU8= + +is-stream@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/is-stream/-/is-stream-1.1.0.tgz#12d4a3dd4e68e0b79ceb8dbc84173ae80d91ca44" + integrity sha1-EtSj3U5o4Lec6428hBc66A2RykQ= + +isarray@~1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11" + integrity sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE= + +isexe@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/isexe/-/isexe-2.0.0.tgz#e8fbf374dc556ff8947a10dcb0572d633f2cfa10" + integrity sha1-6PvzdNxVb/iUehDcsFctYz8s+hA= + +istanbul-lib-coverage@^1.2.0, istanbul-lib-coverage@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/istanbul-lib-coverage/-/istanbul-lib-coverage-1.2.1.tgz#ccf7edcd0a0bb9b8f729feeb0930470f9af664f0" + integrity sha512-PzITeunAgyGbtY1ibVIUiV679EFChHjoMNRibEIobvmrCRaIgwLxNucOSimtNWUhEib/oO7QY2imD75JVgCJWQ== + +istanbul-lib-report@^1.1.3: + version "1.1.5" + resolved "https://registry.yarnpkg.com/istanbul-lib-report/-/istanbul-lib-report-1.1.5.tgz#f2a657fc6282f96170aaf281eb30a458f7f4170c" + integrity sha512-UsYfRMoi6QO/doUshYNqcKJqVmFe9w51GZz8BS3WB0lYxAllQYklka2wP9+dGZeHYaWIdcXUx8JGdbqaoXRXzw== + dependencies: + istanbul-lib-coverage "^1.2.1" + mkdirp "^0.5.1" + path-parse "^1.0.5" + supports-color "^3.1.2" + +istanbul-reports@^1.3.0: + version "1.5.1" + resolved "https://registry.yarnpkg.com/istanbul-reports/-/istanbul-reports-1.5.1.tgz#97e4dbf3b515e8c484caea15d6524eebd3ff4e1a" + integrity sha512-+cfoZ0UXzWjhAdzosCPP3AN8vvef8XDkWtTfgaN+7L3YTpNYITnCaEkceo5SEYy644VkHka/P1FvkWvrG/rrJw== + dependencies: + handlebars "^4.0.3" + +jasmine-core@~3.3.0: + version "3.3.0" + resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.3.0.tgz#dea1cdc634bc93c7e0d4ad27185df30fa971b10e" + integrity sha512-3/xSmG/d35hf80BEN66Y6g9Ca5l/Isdeg/j6zvbTYlTzeKinzmaTM4p9am5kYqOmE05D7s1t8FGjzdSnbUbceA== + +jasmine@~3.3.1: + version "3.3.1" + resolved "https://registry.yarnpkg.com/jasmine/-/jasmine-3.3.1.tgz#d61bb1dd8888859bd11ea83074a78ee13d949905" + integrity sha512-/vU3/H7U56XsxIXHwgEuWpCgQ0bRi2iiZeUpx7Nqo8n1TpoDHfZhkPIc7CO8I4pnMzYsi3XaSZEiy8cnTfujng== + dependencies: + glob "^7.0.6" + jasmine-core "~3.3.0" + +json-parse-better-errors@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz#bb867cfb3450e69107c131d1c514bab3dc8bcaa9" + integrity sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw== + +jsonfile@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/jsonfile/-/jsonfile-4.0.0.tgz#8771aae0799b64076b76640fca058f9c10e33ecb" + integrity sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss= + optionalDependencies: + graceful-fs "^4.1.6" + +lcid@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/lcid/-/lcid-1.0.0.tgz#308accafa0bc483a3867b4b6f2b9506251d1b835" + integrity sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU= + dependencies: + invert-kv "^1.0.0" + +listenercount@~1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/listenercount/-/listenercount-1.0.1.tgz#84c8a72ab59c4725321480c975e6508342e70937" + integrity sha1-hMinKrWcRyUyFIDJdeZQg0LnCTc= + +load-json-file@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/load-json-file/-/load-json-file-4.0.0.tgz#2f5f45ab91e33216234fd53adab668eb4ec0993b" + integrity sha1-L19Fq5HjMhYjT9U62rZo607AmTs= + dependencies: + graceful-fs "^4.1.2" + parse-json "^4.0.0" + pify "^3.0.0" + strip-bom "^3.0.0" + +locate-path@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-2.0.0.tgz#2b568b265eec944c6d9c0de9c3dbbbca0354cd8e" + integrity sha1-K1aLJl7slExtnA3pw9u7ygNUzY4= + dependencies: + p-locate "^2.0.0" + path-exists "^3.0.0" + +locate-path@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/locate-path/-/locate-path-3.0.0.tgz#dbec3b3ab759758071b58fe59fc41871af21400e" + integrity sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A== + dependencies: + p-locate "^3.0.0" + path-exists "^3.0.0" + +lodash.camelcase@^4.3.0: + version "4.3.0" + resolved "https://registry.yarnpkg.com/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz#b28aa6288a2b9fc651035c7711f65ab6190331a6" + integrity sha1-soqmKIorn8ZRA1x3EfZathkDMaY= + +lodash.clone@^4.5.0: + version "4.5.0" + resolved "https://registry.yarnpkg.com/lodash.clone/-/lodash.clone-4.5.0.tgz#195870450f5a13192478df4bc3d23d2dea1907b6" + integrity sha1-GVhwRQ9aExkkeN9Lw9I9LeoZB7Y= + +long@~3: + version "3.2.0" + resolved "https://registry.yarnpkg.com/long/-/long-3.2.0.tgz#d821b7138ca1cb581c172990ef14db200b5c474b" + integrity sha1-2CG3E4yhy1gcFymQ7xTbIAtcR0s= + +lru-cache@^4.0.1: + version "4.1.5" + resolved "https://registry.yarnpkg.com/lru-cache/-/lru-cache-4.1.5.tgz#8bbe50ea85bed59bc9e33dcab8235ee9bcf443cd" + integrity sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g== + dependencies: + pseudomap "^1.0.2" + yallist "^2.1.2" + +mem@^1.1.0: + version "1.1.0" + resolved "https://registry.yarnpkg.com/mem/-/mem-1.1.0.tgz#5edd52b485ca1d900fe64895505399a0dfa45f76" + integrity sha1-Xt1StIXKHZAP5kiVUFOZoN+kX3Y= + dependencies: + mimic-fn "^1.0.0" + +mimic-fn@^1.0.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/mimic-fn/-/mimic-fn-1.2.0.tgz#820c86a39334640e99516928bd03fca88057d022" + integrity sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ== + +minimatch@^3.0.4: + version "3.0.4" + resolved "https://registry.yarnpkg.com/minimatch/-/minimatch-3.0.4.tgz#5166e286457f03306064be5497e8dbb0c3d32083" + integrity sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA== + dependencies: + brace-expansion "^1.1.7" + +minimist@0.0.8: + version "0.0.8" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.8.tgz#857fcabfc3397d2625b8228262e86aa7a011b05d" + integrity sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0= + +minimist@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284" + integrity sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ= + +minimist@~0.0.1: + version "0.0.10" + resolved "https://registry.yarnpkg.com/minimist/-/minimist-0.0.10.tgz#de3f98543dbf96082be48ad1a0c7cda836301dcf" + integrity sha1-3j+YVD2/lggr5IrRoMfNqDYwHc8= + +minipass@^2.2.1, minipass@^2.3.5: + version "2.3.5" + resolved "https://registry.yarnpkg.com/minipass/-/minipass-2.3.5.tgz#cacebe492022497f656b0f0f51e2682a9ed2d848" + integrity sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA== + dependencies: + safe-buffer "^5.1.2" + yallist "^3.0.0" + +minizlib@^1.2.1: + version "1.2.1" + resolved "https://registry.yarnpkg.com/minizlib/-/minizlib-1.2.1.tgz#dd27ea6136243c7c880684e8672bb3a45fd9b614" + integrity sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA== + dependencies: + minipass "^2.2.1" + +"mkdirp@>=0.5 0", mkdirp@^0.5.0, mkdirp@^0.5.1: + version "0.5.1" + resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903" + integrity sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM= + dependencies: + minimist "0.0.8" + +ms@^2.1.1: + version "2.1.2" + resolved "https://registry.yarnpkg.com/ms/-/ms-2.1.2.tgz#d09d1f357b443f493382a8eb3ccd183872ae6009" + integrity sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w== + +nan@^2.13.2: + version "2.14.0" + resolved "https://registry.yarnpkg.com/nan/-/nan-2.14.0.tgz#7818f722027b2459a86f0295d434d1fc2336c52c" + integrity sha512-INOFj37C7k3AfaNTtX8RhsTw7qRy7eLET14cROi9+5HAVbbHuIWUHEauBv5qT4Av2tWasiTY1Jw6puUNqRJXQg== + +needle@^2.2.1: + version "2.4.0" + resolved "https://registry.yarnpkg.com/needle/-/needle-2.4.0.tgz#6833e74975c444642590e15a750288c5f939b57c" + integrity sha512-4Hnwzr3mi5L97hMYeNl8wRW/Onhy4nUKR/lVemJ8gJedxxUyBLm9kkrDColJvoSfwi0jCNhD+xCdOtiGDQiRZg== + dependencies: + debug "^3.2.6" + iconv-lite "^0.4.4" + sax "^1.2.4" + +neo-async@^2.6.0: + version "2.6.1" + resolved "https://registry.yarnpkg.com/neo-async/-/neo-async-2.6.1.tgz#ac27ada66167fa8849a6addd837f6b189ad2081c" + integrity sha512-iyam8fBuCUpWeKPGpaNMetEocMt364qkCsfL9JuhjXX6dRnguRVOfk2GZaDpPjcOKiiXCPINZC1GczQ7iTq3Zw== + +node-pre-gyp@^0.12.0: + version "0.12.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.12.0.tgz#39ba4bb1439da030295f899e3b520b7785766149" + integrity sha512-4KghwV8vH5k+g2ylT+sLTjy5wmUOb9vPhnM8NHvRf9dHmnW/CndrFXy2aRPaPST6dugXSdHXfeaHQm77PIz/1A== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +node-pre-gyp@^0.13.0: + version "0.13.0" + resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.13.0.tgz#df9ab7b68dd6498137717838e4f92a33fc9daa42" + integrity sha512-Md1D3xnEne8b/HGVQkZZwV27WUi1ZRuZBij24TNaZwUPU3ZAFtvT6xxJGaUVillfmMKnn5oD1HoGsp2Ftik7SQ== + dependencies: + detect-libc "^1.0.2" + mkdirp "^0.5.1" + needle "^2.2.1" + nopt "^4.0.1" + npm-packlist "^1.1.6" + npmlog "^4.0.2" + rc "^1.2.7" + rimraf "^2.6.1" + semver "^5.3.0" + tar "^4" + +nopt@^4.0.1: + version "4.0.1" + resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d" + integrity sha1-0NRoWv1UFRk8jHUFYC0NF81kR00= + dependencies: + abbrev "1" + osenv "^0.1.4" + +normalize-package-data@^2.3.2: + version "2.5.0" + resolved "https://registry.yarnpkg.com/normalize-package-data/-/normalize-package-data-2.5.0.tgz#e66db1838b200c1dfc233225d12cb36520e234a8" + integrity sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA== + dependencies: + hosted-git-info "^2.1.4" + resolve "^1.10.0" + semver "2 || 3 || 4 || 5" + validate-npm-package-license "^3.0.1" + +npm-bundled@^1.0.1: + version "1.0.6" + resolved "https://registry.yarnpkg.com/npm-bundled/-/npm-bundled-1.0.6.tgz#e7ba9aadcef962bb61248f91721cd932b3fe6bdd" + integrity sha512-8/JCaftHwbd//k6y2rEWp6k1wxVfpFzB6t1p825+cUb7Ym2XQfhwIC5KwhrvzZRJu+LtDE585zVaS32+CGtf0g== + +npm-packlist@^1.1.6: + version "1.4.4" + resolved "https://registry.yarnpkg.com/npm-packlist/-/npm-packlist-1.4.4.tgz#866224233850ac534b63d1a6e76050092b5d2f44" + integrity sha512-zTLo8UcVYtDU3gdeaFu2Xu0n0EvelfHDGuqtNIn5RO7yQj4H1TqNdBc/yZjxnWA0PVB8D3Woyp0i5B43JwQ6Vw== + dependencies: + ignore-walk "^3.0.1" + npm-bundled "^1.0.1" + +npm-run-path@^2.0.0: + version "2.0.2" + resolved "https://registry.yarnpkg.com/npm-run-path/-/npm-run-path-2.0.2.tgz#35a9232dfa35d7067b4cb2ddf2357b1871536c5f" + integrity sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8= + dependencies: + path-key "^2.0.0" + +npmlog@^4.0.2: + version "4.1.2" + resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b" + integrity sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg== + dependencies: + 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@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/number-is-nan/-/number-is-nan-1.0.1.tgz#097b602b53422a522c1afb8790318336941a011d" + integrity sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0= + +object-assign@^4.1.0: + version "4.1.1" + resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863" + integrity sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM= + +once@^1.3.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/once/-/once-1.4.0.tgz#583b1aa775961d4b113ac17d9c50baef9dd76bd1" + integrity sha1-WDsap3WWHUsROsF9nFC6753Xa9E= + dependencies: + wrappy "1" + +optimist@^0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/optimist/-/optimist-0.6.1.tgz#da3ea74686fa21a19a111c326e90eb15a0196686" + integrity sha1-2j6nRob6IaGaERwybpDrFaAZZoY= + dependencies: + minimist "~0.0.1" + wordwrap "~0.0.2" + +optjs@~3.2.2: + version "3.2.2" + resolved "https://registry.yarnpkg.com/optjs/-/optjs-3.2.2.tgz#69a6ce89c442a44403141ad2f9b370bd5bb6f4ee" + integrity sha1-aabOicRCpEQDFBrS+bNwvVu29O4= + +os-homedir@^1.0.0, os-homedir@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3" + integrity sha1-/7xJiDNuDoM94MFox+8VISGqf7M= + +os-locale@^1.4.0: + version "1.4.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-1.4.0.tgz#20f9f17ae29ed345e8bde583b13d2009803c14d9" + integrity sha1-IPnxeuKe00XoveWDsT0gCYA8FNk= + dependencies: + lcid "^1.0.0" + +os-locale@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/os-locale/-/os-locale-2.1.0.tgz#42bc2900a6b5b8bd17376c8e882b65afccf24bf2" + integrity sha512-3sslG3zJbEYcaC4YVAvDorjGxc7tv6KVATnLPZONiljsUncvihe9BQoVCEs0RZ1kmf4Hk9OBqlZfJZWI4GanKA== + dependencies: + execa "^0.7.0" + lcid "^1.0.0" + mem "^1.1.0" + +os-tmpdir@^1.0.0: + version "1.0.2" + resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274" + integrity sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ= + +osenv@^0.1.4: + version "0.1.5" + resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.5.tgz#85cdfafaeb28e8677f416e287592b5f3f49ea410" + integrity sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g== + dependencies: + os-homedir "^1.0.0" + os-tmpdir "^1.0.0" + +p-finally@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-finally/-/p-finally-1.0.0.tgz#3fbcfb15b899a44123b34b6dcc18b724336a2cae" + integrity sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4= + +p-limit@^1.1.0: + version "1.3.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-1.3.0.tgz#b86bd5f0c25690911c7590fcbfc2010d54b3ccb8" + integrity sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q== + dependencies: + p-try "^1.0.0" + +p-limit@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-limit/-/p-limit-2.2.0.tgz#417c9941e6027a9abcba5092dd2904e255b5fbc2" + integrity sha512-pZbTJpoUsCzV48Mc9Nh51VbwO0X9cuPFE8gYwx9BTCt9SF8/b7Zljd2fVgOxhIF/HDTKgpVzs+GPhyKfjLLFRQ== + 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" + integrity sha1-IKAQOyIqcMj9OcwuWAaA893l7EM= + dependencies: + p-limit "^1.1.0" + +p-locate@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/p-locate/-/p-locate-3.0.0.tgz#322d69a05c0264b25997d9f40cd8a891ab0064a4" + integrity sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ== + dependencies: + p-limit "^2.0.0" + +p-try@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-1.0.0.tgz#cbc79cdbaf8fd4228e13f621f2b1a237c1b207b3" + integrity sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M= + +p-try@^2.0.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/p-try/-/p-try-2.2.0.tgz#cb2868540e313d61de58fafbe35ce9004d5540e6" + integrity sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ== + +parse-json@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/parse-json/-/parse-json-4.0.0.tgz#be35f5425be1f7f6c747184f98a788cb99477ee0" + integrity sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA= + dependencies: + error-ex "^1.3.1" + json-parse-better-errors "^1.0.1" + +path-exists@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-exists/-/path-exists-3.0.0.tgz#ce0ebeaa5f78cb18925ea7d810d7b59b010fd515" + integrity sha1-zg6+ql94yxiSXqfYENe1mwEP1RU= + +path-is-absolute@^1.0.0: + version "1.0.1" + resolved "https://registry.yarnpkg.com/path-is-absolute/-/path-is-absolute-1.0.1.tgz#174b9268735534ffbc7ace6bf53a5a9e1b5c5f5f" + integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18= + +path-key@^2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/path-key/-/path-key-2.0.1.tgz#411cadb574c5a140d3a4b1910d40d80cc9f40b40" + integrity sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A= + +path-parse@^1.0.5, path-parse@^1.0.6: + version "1.0.6" + resolved "https://registry.yarnpkg.com/path-parse/-/path-parse-1.0.6.tgz#d62dbb5679405d72c4737ec58600e9ddcf06d24c" + integrity sha512-GSmOT2EbHrINBf9SR7CDELwlJ8AENk3Qn7OikK4nFYAu3Ote2+JYNVvkpAEQm3/TLNEJFD/xZJjzyxg3KBWOzw== + +path-type@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/path-type/-/path-type-3.0.0.tgz#cef31dc8e0a1a3bb0d105c0cd97cf3bf47f4e36f" + integrity sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg== + dependencies: + pify "^3.0.0" + +pify@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/pify/-/pify-3.0.0.tgz#e5a4acd2c101fdf3d9a4d07f0dbc4db49dd28176" + integrity sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY= + +process-nextick-args@~2.0.0: + version "2.0.1" + resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-2.0.1.tgz#7820d9b16120cc55ca9ae7792680ae7dba6d7fe2" + integrity sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag== + +protobufjs@^5.0.3: + version "5.0.3" + resolved "https://registry.yarnpkg.com/protobufjs/-/protobufjs-5.0.3.tgz#e4dfe9fb67c90b2630d15868249bcc4961467a17" + integrity sha512-55Kcx1MhPZX0zTbVosMQEO5R6/rikNXd9b6RQK4KSPcrSIIwoXTtebIczUrXlwaSrbz4x8XUVThGPob1n8I4QA== + dependencies: + ascli "~1" + bytebuffer "~5" + glob "^7.0.5" + yargs "^3.10.0" + +pseudomap@^1.0.2: + version "1.0.2" + resolved "https://registry.yarnpkg.com/pseudomap/-/pseudomap-1.0.2.tgz#f052a28da70e618917ef0a8ac34c1ae5a68286b3" + integrity sha1-8FKijacOYYkX7wqKw0wa5aaChrM= + +rc@^1.2.7: + version "1.2.8" + resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.8.tgz#cd924bf5200a075b83c188cd6b9e211b7fc0d3ed" + integrity sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw== + dependencies: + deep-extend "^0.6.0" + ini "~1.3.0" + minimist "^1.2.0" + strip-json-comments "~2.0.1" + +read-pkg-up@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/read-pkg-up/-/read-pkg-up-4.0.0.tgz#1b221c6088ba7799601c808f91161c66e58f8978" + integrity sha512-6etQSH7nJGsK0RbG/2TeDzZFa8shjQ1um+SwQQ5cwKy0dhSXdOncEhb1CPpvQG4h7FyOV6EB6YlV0yJvZQNAkA== + dependencies: + find-up "^3.0.0" + read-pkg "^3.0.0" + +read-pkg@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/read-pkg/-/read-pkg-3.0.0.tgz#9cbc686978fee65d16c00e2b19c237fcf6e38389" + integrity sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k= + dependencies: + load-json-file "^4.0.0" + normalize-package-data "^2.3.2" + path-type "^3.0.0" + +readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@~2.3.6: + version "2.3.6" + resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.6.tgz#b11c27d88b8ff1fbe070643cf94b0c79ae1b0aaf" + integrity sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw== + dependencies: + 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" + +require-directory@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/require-directory/-/require-directory-2.1.1.tgz#8c64ad5fd30dab1c976e2344ffe7f792a6a6df42" + integrity sha1-jGStX9MNqxyXbiNE/+f3kqam30I= + +require-main-filename@^1.0.1: + version "1.0.1" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-1.0.1.tgz#97f717b69d48784f5f526a6c5aa8ffdda055a4d1" + integrity sha1-l/cXtp1IeE9fUmpsWqj/3aBVpNE= + +require-main-filename@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/require-main-filename/-/require-main-filename-2.0.0.tgz#d0b329ecc7cc0f61649f62215be69af54aa8989b" + integrity sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg== + +resolve@^1.10.0: + version "1.11.1" + resolved "https://registry.yarnpkg.com/resolve/-/resolve-1.11.1.tgz#ea10d8110376982fef578df8fc30b9ac30a07a3e" + integrity sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw== + dependencies: + path-parse "^1.0.6" + +rimraf@2, rimraf@^2.6.1, rimraf@^2.6.2, rimraf@^2.6.3: + version "2.6.3" + resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.3.tgz#b2d104fe0d8fb27cf9e0a1cda8262dd3833c6cab" + integrity sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA== + dependencies: + glob "^7.1.3" + +safe-buffer@^5.1.2: + version "5.2.0" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.2.0.tgz#b74daec49b1148f88c64b68d49b1e815c1f2f519" + integrity sha512-fZEwUGbVl7kouZs1jCdMLdt95hdIv0ZeHg6L7qPeciMZhZ+/gdesW4wgTARkrFWEpspjEATAzUGPG8N2jJiwbg== + +safe-buffer@~5.1.0, safe-buffer@~5.1.1: + version "5.1.2" + resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.2.tgz#991ec69d296e0313747d59bdfd2b745c35f8828d" + integrity sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g== + +"safer-buffer@>= 2.1.2 < 3": + version "2.1.2" + resolved "https://registry.yarnpkg.com/safer-buffer/-/safer-buffer-2.1.2.tgz#44fa161b0187b9549dd84bb91802f9bd8385cd6a" + integrity sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg== + +sax@^1.2.4: + version "1.2.4" + resolved "https://registry.yarnpkg.com/sax/-/sax-1.2.4.tgz#2816234e2378bddc4e5354fab5caa895df7100d9" + integrity sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw== + +"semver@2 || 3 || 4 || 5", semver@^5.3.0: + version "5.7.0" + resolved "https://registry.yarnpkg.com/semver/-/semver-5.7.0.tgz#790a7cf6fea5459bac96110b29b60412dc8ff96b" + integrity sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA== + +set-blocking@^2.0.0, set-blocking@~2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7" + integrity sha1-BF+XgtARrppoA93TgrJDkrPYkPc= + +setimmediate@~1.0.4: + version "1.0.5" + resolved "https://registry.yarnpkg.com/setimmediate/-/setimmediate-1.0.5.tgz#290cbb232e306942d7d7ea9b83732ab7856f8285" + integrity sha1-KQy7Iy4waULX1+qbg3Mqt4VvgoU= + +shebang-command@^1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/shebang-command/-/shebang-command-1.2.0.tgz#44aac65b695b03398968c39f363fee5deafdf1ea" + integrity sha1-RKrGW2lbAzmJaMOfNj/uXer98eo= + dependencies: + shebang-regex "^1.0.0" + +shebang-regex@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/shebang-regex/-/shebang-regex-1.0.0.tgz#da42f49740c0b42db2ca9728571cb190c98efea3" + integrity sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM= + +signal-exit@^3.0.0, signal-exit@^3.0.2: + version "3.0.2" + resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d" + integrity sha1-tf3AjxKH6hF4Yo5BXiUTK3NkbG0= + +source-map@^0.6.1, source-map@~0.6.1: + version "0.6.1" + resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263" + integrity sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g== + +spawn-wrap@^1.4.2: + version "1.4.2" + resolved "https://registry.yarnpkg.com/spawn-wrap/-/spawn-wrap-1.4.2.tgz#cff58e73a8224617b6561abdc32586ea0c82248c" + integrity sha512-vMwR3OmmDhnxCVxM8M+xO/FtIp6Ju/mNaDfCMMW7FDcLRTPFWUswec4LXJHTJE2hwTI9O0YBfygu4DalFl7Ylg== + dependencies: + 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@^3.0.0: + version "3.1.0" + resolved "https://registry.yarnpkg.com/spdx-correct/-/spdx-correct-3.1.0.tgz#fb83e504445268f154b074e218c87c003cd31df4" + integrity sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q== + dependencies: + spdx-expression-parse "^3.0.0" + spdx-license-ids "^3.0.0" + +spdx-exceptions@^2.1.0: + version "2.2.0" + resolved "https://registry.yarnpkg.com/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz#2ea450aee74f2a89bfb94519c07fcd6f41322977" + integrity sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA== + +spdx-expression-parse@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz#99e119b7a5da00e05491c9fa338b7904823b41d0" + integrity sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg== + dependencies: + spdx-exceptions "^2.1.0" + spdx-license-ids "^3.0.0" + +spdx-license-ids@^3.0.0: + version "3.0.5" + resolved "https://registry.yarnpkg.com/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz#3694b5804567a458d3c8045842a6358632f62654" + integrity sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q== + +string-width@^1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3" + integrity sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M= + dependencies: + code-point-at "^1.0.0" + is-fullwidth-code-point "^1.0.0" + strip-ansi "^3.0.0" + +"string-width@^1.0.2 || 2", string-width@^2.0.0, string-width@^2.1.1: + version "2.1.1" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-2.1.1.tgz#ab93f27a8dc13d28cac815c462143a6d9012ae9e" + integrity sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw== + dependencies: + is-fullwidth-code-point "^2.0.0" + strip-ansi "^4.0.0" + +string_decoder@~1.1.1: + version "1.1.1" + resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.1.1.tgz#9cf1611ba62685d7030ae9e4ba34149c3af03fc8" + integrity sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg== + dependencies: + safe-buffer "~5.1.0" + +strip-ansi@^3.0.0, strip-ansi@^3.0.1: + version "3.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-3.0.1.tgz#6a385fb8853d952d5ff05d0e8aaf94278dc63dcf" + integrity sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8= + dependencies: + ansi-regex "^2.0.0" + +strip-ansi@^4.0.0: + version "4.0.0" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-4.0.0.tgz#a8479022eb1ac368a871389b635262c505ee368f" + integrity sha1-qEeQIusaw2iocTibY1JixQXuNo8= + dependencies: + ansi-regex "^3.0.0" + +strip-bom@^3.0.0: + version "3.0.0" + resolved "https://registry.yarnpkg.com/strip-bom/-/strip-bom-3.0.0.tgz#2334c18e9c759f7bdd56fdef7e9ae3d588e68ed3" + integrity sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM= + +strip-eof@^1.0.0: + version "1.0.0" + resolved "https://registry.yarnpkg.com/strip-eof/-/strip-eof-1.0.0.tgz#bb43ff5598a6eb05d89b59fcd129c983313606bf" + integrity sha1-u0P/VZim6wXYm1n80SnJgzE2Br8= + +strip-json-comments@~2.0.1: + version "2.0.1" + resolved "https://registry.yarnpkg.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz#3c531942e908c2697c0ec344858c286c7ca0a60a" + integrity sha1-PFMZQukIwml8DsNEhYwobHygpgo= + +supports-color@^3.1.2: + version "3.2.3" + resolved "https://registry.yarnpkg.com/supports-color/-/supports-color-3.2.3.tgz#65ac0504b3954171d8a64946b2ae3cbb8a5f54f6" + integrity sha1-ZawFBLOVQXHYpklGsq48u4pfVPY= + dependencies: + has-flag "^1.0.0" + +tar@^4: + version "4.4.10" + resolved "https://registry.yarnpkg.com/tar/-/tar-4.4.10.tgz#946b2810b9a5e0b26140cf78bea6b0b0d689eba1" + integrity sha512-g2SVs5QIxvo6OLp0GudTqEf05maawKUxXru104iaayWA09551tFCTI8f1Asb4lPfkBr91k07iL4c11XO3/b0tA== + dependencies: + chownr "^1.1.1" + fs-minipass "^1.2.5" + minipass "^2.3.5" + minizlib "^1.2.1" + mkdirp "^0.5.0" + safe-buffer "^5.1.2" + yallist "^3.0.3" + +test-exclude@^5.2.2: + version "5.2.3" + resolved "https://registry.yarnpkg.com/test-exclude/-/test-exclude-5.2.3.tgz#c3d3e1e311eb7ee405e092dac10aefd09091eac0" + integrity sha512-M+oxtseCFO3EDtAaGH7iiej3CBkzXqFMbzqYAACdzKui4eZA+pq3tZEwChvOdNfa7xxy8BfbmgJSIr43cC/+2g== + dependencies: + glob "^7.1.3" + minimatch "^3.0.4" + read-pkg-up "^4.0.0" + require-main-filename "^2.0.0" + +tmp@0.1.0: + version "0.1.0" + resolved "https://registry.yarnpkg.com/tmp/-/tmp-0.1.0.tgz#ee434a4e22543082e294ba6201dcc6eafefa2877" + integrity sha512-J7Z2K08jbGcdA1kkQpJSqLF6T0tdQqpR2pnSUXsIchbPdTI9v3e85cLW0d6WDhwuAleOV71j2xWs8qMPfK7nKw== + dependencies: + rimraf "^2.6.3" + +"traverse@>=0.3.0 <0.4": + version "0.3.9" + resolved "https://registry.yarnpkg.com/traverse/-/traverse-0.3.9.tgz#717b8f220cc0bb7b44e40514c22b2e8bbc70d8b9" + integrity sha1-cXuPIgzAu3tE5AUUwisui7xw2Lk= + +uglify-js@^3.1.4: + version "3.6.0" + resolved "https://registry.yarnpkg.com/uglify-js/-/uglify-js-3.6.0.tgz#704681345c53a8b2079fb6cec294b05ead242ff5" + integrity sha512-W+jrUHJr3DXKhrsS7NUVxn3zqMOFn0hL/Ei6v0anCIMoKC93TjcflTagwIHLW7SfMFfiQuktQyFVCFHGUE0+yg== + dependencies: + commander "~2.20.0" + source-map "~0.6.1" + +universalify@^0.1.0: + version "0.1.2" + resolved "https://registry.yarnpkg.com/universalify/-/universalify-0.1.2.tgz#b646f69be3942dabcecc9d6639c80dc105efaa66" + integrity sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg== + +unzipper@0.9.11: + version "0.9.11" + resolved "https://registry.yarnpkg.com/unzipper/-/unzipper-0.9.11.tgz#9577d9b85e5974abd6e23a30dbc9dc187940fc47" + integrity sha512-G0z5zv8LYv4/XwpOiXgTGTcN4jyxgyg3P1DfdIeCN2QGOd6ZBl49BSbOe9JsIEvKh3tG7/b0bdJvz+UmwA+BRg== + dependencies: + big-integer "^1.6.17" + binary "~0.3.0" + bluebird "~3.4.1" + buffer-indexof-polyfill "~1.0.0" + duplexer2 "~0.1.4" + fstream "~1.0.10" + listenercount "~1.0.1" + readable-stream "~2.3.6" + setimmediate "~1.0.4" + +util-deprecate@~1.0.1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf" + integrity sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8= + +uuid@^3.3.2: + version "3.3.2" + resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.3.2.tgz#1b4af4955eb3077c501c23872fc6513811587131" + integrity sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA== + +v8-coverage@1.0.9: + version "1.0.9" + resolved "https://registry.yarnpkg.com/v8-coverage/-/v8-coverage-1.0.9.tgz#780889680c0fea0f587adf22e2b5f443b9434745" + integrity sha512-JolsCH1JDI2QULrxkAGZaovJPvg/Q0p20Uj0F5N8fPtYDtz38gNBRPQ/WVXlLLd3d8WHvKN96AfE4XFk4u0g2g== + dependencies: + debug "^3.1.0" + foreground-child "^1.5.6" + istanbul-lib-coverage "^1.2.0" + istanbul-lib-report "^1.1.3" + istanbul-reports "^1.3.0" + mkdirp "^0.5.1" + rimraf "^2.6.2" + signal-exit "^3.0.2" + spawn-wrap "^1.4.2" + test-exclude "^5.2.2" + uuid "^3.3.2" + v8-to-istanbul "1.2.0" + yargs "^11.0.0" + +v8-to-istanbul@1.2.0: + version "1.2.0" + resolved "https://registry.yarnpkg.com/v8-to-istanbul/-/v8-to-istanbul-1.2.0.tgz#f6a22ffb08b2202aaba8c2be497d1d41fe8fb4b6" + integrity sha512-rVSmjdEfJmOHN8GYCbg+XUhbzXZr7DzdaXIslB9DdcopGZEMsW5x5qIdxr/8DcW7msULHNnvs/xUY1TszvhKRw== + +validate-npm-package-license@^3.0.1: + version "3.0.4" + resolved "https://registry.yarnpkg.com/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz#fc91f6b9c7ba15c857f4cb2c5defeec39d4f410a" + integrity sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew== + dependencies: + spdx-correct "^3.0.0" + spdx-expression-parse "^3.0.0" + +which-module@^2.0.0: + version "2.0.0" + resolved "https://registry.yarnpkg.com/which-module/-/which-module-2.0.0.tgz#d9ef07dce77b9902b8a3a8fa4b31c3e3f7e6e87a" + integrity sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho= + +which@^1.2.9, which@^1.3.0: + version "1.3.1" + resolved "https://registry.yarnpkg.com/which/-/which-1.3.1.tgz#a45043d54f5805316da8d62f9f50918d3da70b0a" + integrity sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ== + dependencies: + isexe "^2.0.0" + +wide-align@^1.1.0: + version "1.1.3" + resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.3.tgz#ae074e6bdc0c14a431e804e624549c633b000457" + integrity sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA== + dependencies: + string-width "^1.0.2 || 2" + +window-size@^0.1.4: + version "0.1.4" + resolved "https://registry.yarnpkg.com/window-size/-/window-size-0.1.4.tgz#f8e1aa1ee5a53ec5bf151ffa09742a6ad7697876" + integrity sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY= + +wordwrap@~0.0.2: + version "0.0.3" + resolved "https://registry.yarnpkg.com/wordwrap/-/wordwrap-0.0.3.tgz#a3d5da6cd5c0bc0008d37234bbaf1bed63059107" + integrity sha1-o9XabNXAvAAI03I0u68b7WMFkQc= + +wrap-ansi@^2.0.0: + version "2.1.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-2.1.0.tgz#d8fc3d284dd05794fe84973caecdd1cf824fdd85" + integrity sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU= + dependencies: + string-width "^1.0.1" + strip-ansi "^3.0.1" + +wrappy@1: + version "1.0.2" + resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f" + integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8= + +y18n@^3.2.0, y18n@^3.2.1: + version "3.2.1" + resolved "https://registry.yarnpkg.com/y18n/-/y18n-3.2.1.tgz#6d15fba884c08679c0d77e88e7759e811e07fa41" + integrity sha1-bRX7qITAhnnA136I53WegR4H+kE= + +yallist@^2.1.2: + version "2.1.2" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-2.1.2.tgz#1c11f9218f076089a47dd512f93c6699a6a81d52" + integrity sha1-HBH5IY8HYImkfdUS+TxmmaaoHVI= + +yallist@^3.0.0, yallist@^3.0.3: + version "3.0.3" + resolved "https://registry.yarnpkg.com/yallist/-/yallist-3.0.3.tgz#b4b049e314be545e3ce802236d6cd22cd91c3de9" + integrity sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A== + +yargs-parser@^9.0.2: + version "9.0.2" + resolved "https://registry.yarnpkg.com/yargs-parser/-/yargs-parser-9.0.2.tgz#9ccf6a43460fe4ed40a9bb68f48d43b8a68cc077" + integrity sha1-nM9qQ0YP5O1Aqbto9I1DuKaMwHc= + dependencies: + camelcase "^4.1.0" + +yargs@^11.0.0: + version "11.1.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-11.1.0.tgz#90b869934ed6e871115ea2ff58b03f4724ed2d77" + integrity sha512-NwW69J42EsCSanF8kyn5upxvjp5ds+t3+udGBeTbFnERA+lF541DDpMawzo4z6W/QrzNM18D+BPMiOBibnFV5A== + dependencies: + cliui "^4.0.0" + decamelize "^1.1.1" + find-up "^2.1.0" + get-caller-file "^1.0.1" + os-locale "^2.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" + yargs-parser "^9.0.2" + +yargs@^3.10.0: + version "3.32.0" + resolved "https://registry.yarnpkg.com/yargs/-/yargs-3.32.0.tgz#03088e9ebf9e756b69751611d2a5ef591482c995" + integrity sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU= + dependencies: + camelcase "^2.0.1" + cliui "^3.0.3" + decamelize "^1.1.1" + os-locale "^1.4.0" + string-width "^1.0.1" + window-size "^0.1.4" + y18n "^3.2.0"