diff --git a/integration/language_service_plugin/.gitignore b/integration/language_service_plugin/.gitignore
index 4c43fe68f6..7420cfbcc3 100644
--- a/integration/language_service_plugin/.gitignore
+++ b/integration/language_service_plugin/.gitignore
@@ -1 +1,3 @@
-*.js
\ No newline at end of file
+*.js
+tsserver.log
+ti-*.log
diff --git a/integration/language_service_plugin/fixtures/getCompletions-expected-2.3.json b/integration/language_service_plugin/fixtures/getCompletions-expected-2.3.json
deleted file mode 100644
index 3560e80927..0000000000
--- a/integration/language_service_plugin/fixtures/getCompletions-expected-2.3.json
+++ /dev/null
@@ -1,260 +0,0 @@
-[
- {
- "type": "response",
- "command": "configure",
- "success": true
- },
- {
- "type": "response",
- "command": "compilerOptionsForInferredProjects",
- "success": true,
- "body": true
- },
- {
- "type": "response",
- "command": "completions",
- "success": true,
- "body": [
- {
- "name": "anchor",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "anchor"
- },
- {
- "name": "big",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "big"
- },
- {
- "name": "blink",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "blink"
- },
- {
- "name": "bold",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "bold"
- },
- {
- "name": "charAt",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "charAt"
- },
- {
- "name": "charCodeAt",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "charCodeAt"
- },
- {
- "name": "codePointAt",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "codePointAt"
- },
- {
- "name": "concat",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "concat"
- },
- {
- "name": "endsWith",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "endsWith"
- },
- {
- "name": "fixed",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "fixed"
- },
- {
- "name": "fontcolor",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "fontcolor"
- },
- {
- "name": "fontsize",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "fontsize"
- },
- {
- "name": "includes",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "includes"
- },
- {
- "name": "indexOf",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "indexOf"
- },
- {
- "name": "italics",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "italics"
- },
- {
- "name": "lastIndexOf",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "lastIndexOf"
- },
- {
- "name": "length",
- "kind": "property",
- "kindModifiers": "",
- "sortText": "length"
- },
- {
- "name": "link",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "link"
- },
- {
- "name": "localeCompare",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "localeCompare"
- },
- {
- "name": "match",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "match"
- },
- {
- "name": "normalize",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "normalize"
- },
- {
- "name": "repeat",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "repeat"
- },
- {
- "name": "replace",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "replace"
- },
- {
- "name": "search",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "search"
- },
- {
- "name": "slice",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "slice"
- },
- {
- "name": "small",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "small"
- },
- {
- "name": "split",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "split"
- },
- {
- "name": "startsWith",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "startsWith"
- },
- {
- "name": "strike",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "strike"
- },
- {
- "name": "sub",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "sub"
- },
- {
- "name": "substr",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "substr"
- },
- {
- "name": "substring",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "substring"
- },
- {
- "name": "sup",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "sup"
- },
- {
- "name": "toLocaleLowerCase",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "toLocaleLowerCase"
- },
- {
- "name": "toLocaleUpperCase",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "toLocaleUpperCase"
- },
- {
- "name": "toLowerCase",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "toLowerCase"
- },
- {
- "name": "toString",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "toString"
- },
- {
- "name": "toUpperCase",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "toUpperCase"
- },
- {
- "name": "trim",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "trim"
- },
- {
- "name": "valueOf",
- "kind": "method",
- "kindModifiers": "",
- "sortText": "valueOf"
- }
- ]
- }
-]
diff --git a/integration/language_service_plugin/fixtures/getCompletions.json b/integration/language_service_plugin/fixtures/getCompletions.json
deleted file mode 100644
index 94be1ebe38..0000000000
--- a/integration/language_service_plugin/fixtures/getCompletions.json
+++ /dev/null
@@ -1,68 +0,0 @@
-[
- {
- "seq": 0,
- "type": "request",
- "command": "configure",
- "arguments": {
- "hostInfo": "vscode"
- }
- },
- {
- "seq": 1,
- "type": "request",
- "command": "compilerOptionsForInferredProjects",
- "arguments": {
- "options": {
- "module": "CommonJS",
- "target": "ES6",
- "allowSyntheticDefaultImports": true,
- "allowNonTsExtensions": true,
- "allowJs": true,
- "jsx": "Preserve"
- }
- }
- },
- {
- "seq": 4,
- "type": "request",
- "command": "open",
- "arguments": {
- "file": "$$PWD$$/project/app/app.component.ts",
- "fileContent": "import { Component } from '@angular/core';\n\n@Component({\n selector: 'my-app',\n template: `
Hello {{name}}
`,\n})\nexport class AppComponent { name = 'Angular'; }\n"
- }
- },
- {
- "seq": 7,
- "type": "request",
- "command": "geterr",
- "arguments": {
- "delay": 0,
- "files": [
- "$$PWD$$/project/app/app.component.ts"
- ]
- }
- },
- {
- "seq": 12,
- "type": "request",
- "command": "change",
- "arguments": {
- "file": "$$PWD$$/project/app/app.component.ts",
- "line": 5,
- "offset": 30,
- "endLine": 5,
- "endOffset": 30,
- "insertString": "."
- }
- },
- {
- "seq": 13,
- "type": "request",
- "command": "completions",
- "arguments": {
- "file": "$$PWD$$/project/app/app.component.ts",
- "line": 5,
- "offset": 31
- }
- }
-]
\ No newline at end of file
diff --git a/integration/language_service_plugin/fixtures/smokeTest.json b/integration/language_service_plugin/fixtures/smokeTest.json
deleted file mode 100644
index 7ddc202c9a..0000000000
--- a/integration/language_service_plugin/fixtures/smokeTest.json
+++ /dev/null
@@ -1,45 +0,0 @@
-[
- {
- "seq": 0,
- "type": "request",
- "command": "configure",
- "arguments": {
- "hostInfo": "vscode"
- }
- },
- {
- "seq": 1,
- "type": "request",
- "command": "compilerOptionsForInferredProjects",
- "arguments": {
- "options": {
- "module": "CommonJS",
- "target": "ES6",
- "allowSyntheticDefaultImports": true,
- "allowNonTsExtensions": true,
- "allowJs": true,
- "jsx": "Preserve"
- }
- }
- },
- {
- "seq": 2,
- "type": "request",
- "command": "open",
- "arguments": {
- "file": "$$PWD$$/app/app.module.ts",
- "fileContent": ""
- }
- },
- {
- "seq": 3,
- "type": "request",
- "command": "geterr",
- "arguments": {
- "delay": 0,
- "files": [
- "$$PWD$$/app/app.module.ts"
- ]
- }
- }
-]
\ No newline at end of file
diff --git a/integration/language_service_plugin/generate.ts b/integration/language_service_plugin/generate.ts
new file mode 100644
index 0000000000..3db7aa54aa
--- /dev/null
+++ b/integration/language_service_plugin/generate.ts
@@ -0,0 +1,22 @@
+/**
+ * @fileOverview
+ * This file serves as the entry point for generating goldens file for the
+ * language service integration test. It expects each golden file that needs
+ * to be generated to be passed in as command line arguments.
+ * For example, to generate golden file for the 'configure' request, run
+ * `yarn golden configure.json`.
+ * To generate multiple golden files, run
+ * `yarn golden configure.json completionInfo.json`.
+ *
+ * This is different from just running `yarn jasmine test.js` because this
+ * allows passing in arbitrary arguments.
+ */
+
+import Jasmine = require('jasmine');
+
+function main() {
+ const jasmine = new Jasmine({});
+ jasmine.execute(['test.js']);
+}
+
+main()
diff --git a/integration/language_service_plugin/fixtures/smokeTest-expected-2.3.json b/integration/language_service_plugin/goldens/compilerOptionsForInferredProjects.json
similarity index 56%
rename from integration/language_service_plugin/fixtures/smokeTest-expected-2.3.json
rename to integration/language_service_plugin/goldens/compilerOptionsForInferredProjects.json
index 55645cf60d..38eaa54b68 100644
--- a/integration/language_service_plugin/fixtures/smokeTest-expected-2.3.json
+++ b/integration/language_service_plugin/goldens/compilerOptionsForInferredProjects.json
@@ -1,13 +1,8 @@
-[
- {
- "type": "response",
- "command": "configure",
- "success": true
- },
- {
+{
+ "seq": 0,
"type": "response",
"command": "compilerOptionsForInferredProjects",
+ "request_seq": 1,
"success": true,
"body": true
- }
-]
+}
diff --git a/integration/language_service_plugin/goldens/completionInfo.json b/integration/language_service_plugin/goldens/completionInfo.json
new file mode 100644
index 0000000000..3c503000c8
--- /dev/null
+++ b/integration/language_service_plugin/goldens/completionInfo.json
@@ -0,0 +1,266 @@
+{
+ "seq": 0,
+ "type": "response",
+ "command": "completionInfo",
+ "request_seq": 5,
+ "success": true,
+ "body": {
+ "isGlobalCompletion": false,
+ "isMemberCompletion": false,
+ "isNewIdentifierLocation": false,
+ "entries": [
+ {
+ "name": "anchor",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "anchor"
+ },
+ {
+ "name": "big",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "big"
+ },
+ {
+ "name": "blink",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "blink"
+ },
+ {
+ "name": "bold",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "bold"
+ },
+ {
+ "name": "charAt",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "charAt"
+ },
+ {
+ "name": "charCodeAt",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "charCodeAt"
+ },
+ {
+ "name": "codePointAt",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "codePointAt"
+ },
+ {
+ "name": "concat",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "concat"
+ },
+ {
+ "name": "endsWith",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "endsWith"
+ },
+ {
+ "name": "fixed",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "fixed"
+ },
+ {
+ "name": "fontcolor",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "fontcolor"
+ },
+ {
+ "name": "fontsize",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "fontsize"
+ },
+ {
+ "name": "includes",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "includes"
+ },
+ {
+ "name": "indexOf",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "indexOf"
+ },
+ {
+ "name": "italics",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "italics"
+ },
+ {
+ "name": "lastIndexOf",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "lastIndexOf"
+ },
+ {
+ "name": "length",
+ "kind": "property",
+ "kindModifiers": "",
+ "sortText": "length"
+ },
+ {
+ "name": "link",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "link"
+ },
+ {
+ "name": "localeCompare",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "localeCompare"
+ },
+ {
+ "name": "match",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "match"
+ },
+ {
+ "name": "normalize",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "normalize"
+ },
+ {
+ "name": "repeat",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "repeat"
+ },
+ {
+ "name": "replace",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "replace"
+ },
+ {
+ "name": "search",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "search"
+ },
+ {
+ "name": "slice",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "slice"
+ },
+ {
+ "name": "small",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "small"
+ },
+ {
+ "name": "split",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "split"
+ },
+ {
+ "name": "startsWith",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "startsWith"
+ },
+ {
+ "name": "strike",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "strike"
+ },
+ {
+ "name": "sub",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "sub"
+ },
+ {
+ "name": "substr",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "substr"
+ },
+ {
+ "name": "substring",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "substring"
+ },
+ {
+ "name": "sup",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "sup"
+ },
+ {
+ "name": "toLocaleLowerCase",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "toLocaleLowerCase"
+ },
+ {
+ "name": "toLocaleUpperCase",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "toLocaleUpperCase"
+ },
+ {
+ "name": "toLowerCase",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "toLowerCase"
+ },
+ {
+ "name": "toString",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "toString"
+ },
+ {
+ "name": "toUpperCase",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "toUpperCase"
+ },
+ {
+ "name": "trim",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "trim"
+ },
+ {
+ "name": "trimLeft",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "trimLeft"
+ },
+ {
+ "name": "trimRight",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "trimRight"
+ },
+ {
+ "name": "valueOf",
+ "kind": "method",
+ "kindModifiers": "",
+ "sortText": "valueOf"
+ }
+ ]
+ }
+}
\ No newline at end of file
diff --git a/integration/language_service_plugin/goldens/configure.json b/integration/language_service_plugin/goldens/configure.json
new file mode 100644
index 0000000000..b4a7a6f32b
--- /dev/null
+++ b/integration/language_service_plugin/goldens/configure.json
@@ -0,0 +1,7 @@
+{
+ "seq": 0,
+ "type": "response",
+ "command": "configure",
+ "request_seq": 0,
+ "success": true
+}
diff --git a/integration/language_service_plugin/matcher.ts b/integration/language_service_plugin/matcher.ts
new file mode 100644
index 0000000000..b46edbf3bc
--- /dev/null
+++ b/integration/language_service_plugin/matcher.ts
@@ -0,0 +1,32 @@
+import { writeFileSync } from 'fs';
+
+const goldens: string[] = process.argv.slice(2);
+
+export const goldenMatcher: jasmine.CustomMatcherFactories = {
+ toMatchGolden(util: jasmine.MatchersUtil): jasmine.CustomMatcher {
+ return {
+ compare(actual: {command: string}, golden: string): jasmine.CustomMatcherResult {
+ const expected = require(`./goldens/${golden}`);
+ const pass = util.equals(actual, expected);
+ if (!pass && goldens.indexOf(golden) >= 0) {
+ console.error(`Writing golden file ${golden}`);
+ writeFileSync(`./goldens/${golden}`, JSON.stringify(actual, null, 2));
+ return { pass : true };
+ }
+ return {
+ pass,
+ message: `Expected response for '${actual.command}' to match golden file ${golden}.\n` +
+ `To generate new golden file, run "yarn golden ${golden}".`,
+ };
+ }
+ };
+ },
+};
+
+declare global {
+ namespace jasmine {
+ interface Matchers {
+ toMatchGolden(golden: string): void
+ }
+ }
+}
diff --git a/integration/language_service_plugin/package.json b/integration/language_service_plugin/package.json
index c6c91f558f..c5036b18a1 100644
--- a/integration/language_service_plugin/package.json
+++ b/integration/language_service_plugin/package.json
@@ -4,23 +4,16 @@
"license": "MIT",
"description": "Angular Language Service plugin integration test",
"dependencies": {
- "@angular/animations": "file:../../dist/packages-dist/animations",
- "@angular/common": "file:../../dist/packages-dist/common",
- "@angular/compiler": "file:../../dist/packages-dist/compiler",
- "@angular/compiler-cli": "file:../../dist/packages-dist/compiler-cli",
"@angular/core": "file:../../dist/packages-dist/core",
"@angular/language-service": "file:../../dist/packages-dist/language-service",
- "@angular/platform-browser": "file:../../dist/packages-dist/platform-browser",
- "@angular/platform-server": "file:../../dist/packages-dist/platform-server",
- "@types/minimist": "^1.2.0",
- "@types/node": "^7.0.5",
- "minimist": "^1.2.0",
- "rxjs": "file:../../node_modules/rxjs",
- "typescript": "file:../../node_modules/typescript",
- "zone.js": "file:../../node_modules/zone.js"
+ "@types/node": "file:../../node_modules/@types/node",
+ "jasmine": "file:../../node_modules/jasmine",
+ "typescript": "file:../../node_modules/typescript"
},
"scripts": {
- "postinstall": "scripts/install.sh",
- "test": "tsc -p tools && scripts/test.sh"
+ "build": "tsc -p tsconfig.json",
+ "cleanup": "rm -rf ti-*.log tsserver.log",
+ "golden": "node generate.js",
+ "test": "yarn cleanup && yarn build && jasmine test.js"
}
}
diff --git a/integration/language_service_plugin/project/tsconfig.json b/integration/language_service_plugin/project/tsconfig.json
index 6a81fdd7df..2c7260d1bc 100644
--- a/integration/language_service_plugin/project/tsconfig.json
+++ b/integration/language_service_plugin/project/tsconfig.json
@@ -8,9 +8,6 @@
"experimentalDecorators": true,
"lib": [ "es2015", "dom" ],
"noImplicitAny": true,
- "suppressImplicitAnyIndexErrors": true,
- "plugins": [
- { "name": "@angular/language-service" }
- ]
+ "suppressImplicitAnyIndexErrors": true
}
}
diff --git a/integration/language_service_plugin/scripts/env.sh b/integration/language_service_plugin/scripts/env.sh
deleted file mode 100755
index 321f42a45c..0000000000
--- a/integration/language_service_plugin/scripts/env.sh
+++ /dev/null
@@ -1,2 +0,0 @@
-TYPESCRIPTS=2.3
-FIXTURES="smokeTest getCompletions"
diff --git a/integration/language_service_plugin/scripts/install.sh b/integration/language_service_plugin/scripts/install.sh
deleted file mode 100755
index d835479259..0000000000
--- a/integration/language_service_plugin/scripts/install.sh
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/usr/bin/env bash
-
-set -ex -o pipefail
-
-cd `dirname $0`
-cd ..
-source scripts/env.sh
-
-# Setup TypeScripts
-for TYPESCRIPT in ${TYPESCRIPTS[@]}
-do
- (
- cd typescripts/$TYPESCRIPT
- yarn
- )
-done
\ No newline at end of file
diff --git a/integration/language_service_plugin/scripts/test.sh b/integration/language_service_plugin/scripts/test.sh
deleted file mode 100755
index 0721da0c45..0000000000
--- a/integration/language_service_plugin/scripts/test.sh
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env bash
-
-set -ex -o pipefail
-
-cd `dirname $0`
-cd ..
-source scripts/env.sh
-
-HOST="node tools/typescript_host.js"
-VALIDATE="node tools/typescript_validator.js"
-
-# Ensure the languages service can load correctly in node before typescript loads it.
-# This verifies its dependencies and emits any exceptions, both of which are only
-# emitted to the typescript logs (not the validated output).
-node tools/load_test.js
-
-for TYPESCRIPT in ${TYPESCRIPTS[@]}
-do
- SERVER="node typescripts/$TYPESCRIPT/node_modules/typescript/lib/tsserver.js"
- for FIXTURE_BASE in ${FIXTURES[@]}
- do
- FIXTURE=fixtures/$FIXTURE_BASE.json
- EXPECTED=fixtures/$FIXTURE_BASE-expected-$TYPESCRIPT.json
- if [[ ${UPDATE_GOLDEN} == true ]]; then
- $HOST --file $FIXTURE --pwd $(pwd) | $SERVER | $VALIDATE --golden > $EXPECTED
- else
- $HOST --file $FIXTURE --pwd $(pwd) | $SERVER | $VALIDATE --expect $EXPECTED
- fi
- done
-done
\ No newline at end of file
diff --git a/integration/language_service_plugin/scripts/update_golden.sh b/integration/language_service_plugin/scripts/update_golden.sh
deleted file mode 100755
index 4fd0d2484d..0000000000
--- a/integration/language_service_plugin/scripts/update_golden.sh
+++ /dev/null
@@ -1,8 +0,0 @@
-#!/usr/bin/env bash
-
-set -ex -o pipefail
-
-cd `dirname $0`
-cd ..
-
-UPDATE_GOLDEN=true scripts/test.sh
\ No newline at end of file
diff --git a/integration/language_service_plugin/test.ts b/integration/language_service_plugin/test.ts
new file mode 100644
index 0000000000..0147ed1ebb
--- /dev/null
+++ b/integration/language_service_plugin/test.ts
@@ -0,0 +1,104 @@
+import { fork, ChildProcess } from 'child_process';
+import { join } from 'path';
+import { Client } from './tsclient';
+import { goldenMatcher } from './matcher';
+
+describe('Angular Language Service', () => {
+ jasmine.DEFAULT_TIMEOUT_INTERVAL = 10000; /* 10 seconds */
+ const PWD = process.env.PWD!;
+ const SERVER_PATH = "./node_modules/typescript/lib/tsserver.js";
+ let server: ChildProcess;
+ let client: Client;
+
+ beforeEach(() => {
+ jasmine.addMatchers(goldenMatcher);
+ server = fork(SERVER_PATH, [
+ '--globalPlugins', '@angular/language-service',
+ '--logVerbosity', 'verbose',
+ '--logFile', join(PWD, 'tsserver.log'),
+ ], {
+ stdio: ['pipe', 'pipe', 'inherit', 'ipc'],
+ });
+ client = new Client(server);
+ client.listen();
+ });
+
+ afterEach(async () => {
+ client.sendRequest('exit', {});
+
+ // Give server process some time to flush all messages
+ await new Promise((resolve) => setTimeout(resolve, 1000));
+ });
+
+ it('should be launched as tsserver plugin', async () => {
+ let response = await client.sendRequest('configure', {
+ hostInfo: 'vscode',
+ });
+ expect(response).toMatchGolden('configure.json');
+ response = await client.sendRequest('compilerOptionsForInferredProjects', {
+ "options": {
+ module: "CommonJS",
+ target: "ES6",
+ allowSyntheticDefaultImports: true,
+ allowNonTsExtensions: true,
+ allowJs: true,
+ jsx: "Preserve"
+ }
+ });
+ expect(response).toMatchGolden('compilerOptionsForInferredProjects.json');
+ // Server does not send response to open request
+ // https://github.com/Microsoft/TypeScript/blob/master/lib/protocol.d.ts#L1055
+ client.sendRequest('open', {
+ file: `${PWD}/project/app/app.module.ts`,
+ fileContent: ""
+ });
+ // Server does not send response to geterr request
+ // https://github.com/Microsoft/TypeScript/blob/master/lib/protocol.d.ts#L1770
+ client.sendRequest('geterr', {
+ delay: 0,
+ files: [`${PWD}/project/app/app.module.ts`]
+ });
+ });
+
+ it('should perform completions', async () => {
+ await client.sendRequest('configure', {
+ hostInfo: 'vscode',
+ });
+ await client.sendRequest('compilerOptionsForInferredProjects', {
+ "options": {
+ module: "CommonJS",
+ target: "ES6",
+ allowSyntheticDefaultImports: true,
+ allowNonTsExtensions: true,
+ allowJs: true,
+ jsx: "Preserve"
+ }
+ });
+
+ client.sendRequest('open', {
+ file: `${PWD}/project/app/app.component.ts`,
+ fileContent: "import { Component } from '@angular/core';\n\n@Component({\n selector: 'my-app',\n template: `Hello {{name}}
`,\n})\nexport class AppComponent { name = 'Angular'; }\n"
+ });
+
+ client.sendRequest('geterr', {
+ delay: 0,
+ files: [`${PWD}/project/app/app.component.ts`]
+ });
+
+ client.sendRequest('change', {
+ file: `${PWD}/project/app/app.component.ts`,
+ line: 5,
+ offset: 30,
+ endLine: 5,
+ endOffset: 30,
+ insertString: '.',
+ });
+
+ const response = await client.sendRequest('completionInfo', {
+ file: `${PWD}/project/app/app.component.ts`,
+ line: 5,
+ offset: 31,
+ });
+ expect(response).toMatchGolden('completionInfo.json');
+ });
+});
diff --git a/integration/language_service_plugin/tools/load_test.ts b/integration/language_service_plugin/tools/load_test.ts
deleted file mode 100644
index 22090f30f6..0000000000
--- a/integration/language_service_plugin/tools/load_test.ts
+++ /dev/null
@@ -1,35 +0,0 @@
-const ts = require('typescript');
-const Module = require('module');
-
-const existingRequire = Module.prototype.require;
-
-const recordedRequires: string[] = [];
-
-function recordingRequire(path: string) {
- recordedRequires.push(path);
- return existingRequire.call(this, path);
-}
-
-Module.prototype.require = recordingRequire;
-
-try {
- const lsf = require('@angular/language-service');
- const ls = lsf({typescript: ts});
-
- // Assert that the only module that should have been required are '@angular/language-service', 'fs', and 'path'
-
- const allowedLoads = new Set(["@angular/language-service", "fs", "path"]);
-
- const invalidModules = recordedRequires.filter(m => !allowedLoads.has(m));
-
- if (invalidModules.length > 0) {
- console.error(`FAILED: Loading the language service required: ${invalidModules.join(', ')}`);
- process.exit(1);
- }
-} catch (e) {
- console.error(`FAILED: Loading the language service caused the following exception: ${e.stack || e}`);
- process.exit(1);
-}
-
-console.log('SUCCESS: Loading passed')
-process.exit(0);
\ No newline at end of file
diff --git a/integration/language_service_plugin/tools/tsconfig.json b/integration/language_service_plugin/tools/tsconfig.json
deleted file mode 100644
index fd844f194c..0000000000
--- a/integration/language_service_plugin/tools/tsconfig.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "compilerOptions": {
- "module": "commonjs",
- "target": "es5",
- "noImplicitAny": true,
- "skipLibCheck": true,
- "sourceMap": false,
- "lib": ["es2015", "dom"],
- "types": [
- "node",
- "minimist"
- ]
- },
- "files": [
- "typescript_host.ts",
- "typescript_validator.ts",
- "load_test.ts"
- ]
-}
\ No newline at end of file
diff --git a/integration/language_service_plugin/tools/typescript_host.ts b/integration/language_service_plugin/tools/typescript_host.ts
deleted file mode 100644
index 4dc2f415c8..0000000000
--- a/integration/language_service_plugin/tools/typescript_host.ts
+++ /dev/null
@@ -1,77 +0,0 @@
-import * as fs from 'fs';
-import * as minimist from 'minimist';
-
-const RE_PWD = /\$\$PWD\$\$/g;
-
-let errorsDetected = false;
-
-function reportError(arg: string): boolean {
- console.error(`Unknown argument: ${arg}`);
- errorsDetected = true;
- return false;
-}
-
-function help() {
- console.log('TypeScript Host')
- console.log(`${process.argv[1]} --file [--pwd ]`);
- console.log(`
- Send JSON message using the JSON RPC protocol to stdout.
- `)
-}
-
-let args = minimist(process.argv.slice(2), { string: ['file', 'pwd'], unknown: reportError });
-
-if (errorsDetected) {
- help();
- process.exit(2);
-}
-
-const file = args['file'];
-if (!file) {
- console.log('stdin form not supported yet.')
- process.exit(1);
-}
-
-// Sender
-const pending: string[] = [];
-let writing = false;
-
-function writeMessage(message: string) {
- writing = true;
- process.stdout.write(message + '\n', checkPending);
-}
-
-function checkPending() {
- writing = false;
- if (pending.length) {
- writeMessage(pending.shift());
- }
-}
-
-function send(message: string) {
- if (writing) {
- pending.push(message);
- } else {
- writeMessage(message);
- }
-}
-
-try {
- let content = fs.readFileSync(file, 'utf8');
- if (args['pwd']) {
- content = content.replace(RE_PWD, args['pwd']);
- }
-
- const json = JSON.parse(content);
-
- if (Array.isArray(json)) {
- for (const message of json) {
- send(JSON.stringify(message));
- }
- } else {
- throw Error('Expected an array for input messages.')
- }
-} catch(e) {
- console.error(`Error: ${e.message}`);
- process.exit(2);
-}
\ No newline at end of file
diff --git a/integration/language_service_plugin/tools/typescript_validator.ts b/integration/language_service_plugin/tools/typescript_validator.ts
deleted file mode 100644
index 0bad6a4d07..0000000000
--- a/integration/language_service_plugin/tools/typescript_validator.ts
+++ /dev/null
@@ -1,164 +0,0 @@
-import * as fs from 'fs';
-import * as minimist from 'minimist';
-
-let errorsDetected = false;
-
-const start = Date.now();
-
-function reportError(arg: string): boolean {
- console.error(`Unknown argument: ${arg}`);
- errorsDetected = true;
- return false;
-}
-
-function help() {
- console.log('TypeScript Validator')
- console.log(`${process.argv[1]} [--expect | --golden] [--pwd ]`);
- console.log(`
- Validate that the emitted output produces the expect JSON.`)
-}
-
-let args = minimist(process.argv.slice(2), { string: ['expect', 'pwd'], boolean: ['golden'], unknown: reportError });
-
-if (!args.golden && !args.expect) {
- console.log('Expected -golden or -expect');
- errorsDetected = true;
-}
-
-if (args.golden && args.expect) {
- console.log('Expected -golded or -expect but not both');
- errorsDetected = true;
-}
-
-if (errorsDetected) {
- help();
- process.exit(2);
-}
-
-var expected: any;
-if (args.expect) {
- expected = JSON.parse(fs.readFileSync(args.expect, 'utf8'));
-}
-
-// Reader
-let pending = Buffer.alloc(0);
-
-const prefix = 'Content-Length: ';
-
-function tryReadMessage(cb: (message: any) => void) {
- const firstLine = pending.indexOf(10);
- if (firstLine >= 1) {
- const line = pending.toString('utf8', 0, firstLine);
- if (!line.startsWith(prefix)) {
- throw Error(`Unexpected input: ${line}`);
- }
- const length = +line.substring(prefix.length, firstLine - 1);
- const dataStart = firstLine + 2;
- const messageText = pending.toString('utf8', dataStart, dataStart + length);
- const message = JSON.parse(messageText);
- pending = pending.slice(dataStart + length + 1);
- cb(message);
- tryReadMessage(cb);
- }
-}
-
-function collect(cb: (error: any, messages: any[]) => void) {
- const result: any[] = [];
-
- function report(error: any, messages: any[]) {
- cb(error, messages);
- cb = () => {};
- }
-
- process.stdin.on('error', report);
- process.stdin.on('data', (data: Buffer) => {
- try {
- pending = Buffer.concat([pending, data], pending.length + data.length);
- tryReadMessage((message: any) => {
- result.push(message);
- });
- } catch (e) {
- report(e, []);
- }
- });
-
- process.stdin.on('close', () => {
- report(null, result);
- });
-}
-
-function sanitize(messages: any[]): any[] {
- return messages.filter((message: any) => {
- return message && message.type == 'response';
- }).map((message: any) => {
- // Only preserve a fixed set of fields.
- const result: any = {};
- if (message.type != null) result.type = message.type;
- if (message.command != null) result.command = message.command;
- if (message.success != null) result.success = message.success;
- if (message.body != null) result.body = message.body;
- return result;
- });
-}
-
-
-function isPrimitive(value: any): boolean {
- return Object(value) !== value;
-}
-
-function expectPrimitive(received: any, expected: any) {
- if (received !== expected) {
- throw new Error(`Expected ${expected} but received ${received}`);
- }
-}
-
-function expectArray(received: any, expected: any[]) {
- if (!Array.isArray(received)) {
- throw new Error(`Expected an array, received ${JSON.stringify(received)}`);
- }
- if (received.length != expected.length) {
- throw new Error(`Expected an array length ${expected.length}, received ${JSON.stringify(received)}`);
- }
- for (let i = 0; i < expected.length; i++) {
- expect(received[i], expected[i]);
- }
-}
-
-function expectObject(received: any, expected: any) {
- for (const name of Object.getOwnPropertyNames(expected)) {
- if (!received.hasOwnProperty(name)) {
- throw new Error(`Expected object an object containing a field ${name}, received ${JSON.stringify(expected)}`);
- }
- expect(received[name], expected[name]);
- }
-}
-
-function expect(received: any, expected: any) {
- if (isPrimitive(expected)) {
- expectPrimitive(received, expected);
- } else if (Array.isArray(expected)) {
- expectArray(received, expected);
- } else {
- expectObject(received, expected);
- }
-}
-
-
-collect((err: any, messages: any[]) => {
- if (err) {
- console.error(err.message);
- process.exit(1);
- }
- if (args.golden) {
- console.log(JSON.stringify(sanitize(messages), null, ' '));
- } else {
- try {
- expect(sanitize(messages), expected);
- console.log('PASSED:', Date.now() - start, 'ms');
- process.exit(0);
- } catch(e) {
- console.log('FAILED:', e.message);
- process.exit(1);
- }
- }
-});
diff --git a/integration/language_service_plugin/tsclient.ts b/integration/language_service_plugin/tsclient.ts
new file mode 100644
index 0000000000..05dd3c0e0d
--- /dev/null
+++ b/integration/language_service_plugin/tsclient.ts
@@ -0,0 +1,70 @@
+import { ChildProcess } from "child_process";
+import { EventEmitter } from "events";
+
+/**
+ * Provides a client for tsserver. Tsserver does not use standard JSON-RPC
+ * protocol thus the need for this custom client.
+ */
+export class Client {
+ private data: Buffer|undefined;
+ private id = 0;
+ private responseEmitter = new EventEmitter();
+
+ constructor(private readonly server: ChildProcess) {}
+
+ listen() {
+ this.server.stdout.on('data', (data: Buffer) => {
+ this.data = this.data ? Buffer.concat([this.data, data]) : data;
+ const CONTENT_LENGTH = 'Content-Length: '
+ const index = this.data.indexOf(CONTENT_LENGTH);
+ if (index < 0) {
+ return;
+ }
+ let start = index + CONTENT_LENGTH.length;
+ let end = this.data.indexOf('\r\n', start);
+ if (end < start) {
+ return;
+ }
+ const contentLengthStr = this.data.slice(start, end).toString();
+ const contentLength = Number(contentLengthStr);
+ if (isNaN(contentLength) || contentLength < 0) {
+ return;
+ }
+ start = end + 4;
+ end = start + contentLength;
+ if (end > this.data.length) {
+ return;
+ }
+ const content = this.data.slice(start, end).toString();
+ this.data = this.data.slice(end);
+ try {
+ const payload = JSON.parse(content);
+ if (payload.type === "event") {
+ return;
+ }
+ this.responseEmitter.emit('response', payload);
+ }
+ catch (error) {
+ this.responseEmitter.emit('error', error);
+ }
+ });
+ }
+
+ async send(type: string, command: string, params: {}) {
+ const request = {
+ seq: this.id++,
+ type,
+ command,
+ arguments: params
+ };
+ this.server.stdin.write(JSON.stringify(request) + '\r\n');
+ return new Promise((resolve, reject) => {
+ this.responseEmitter.once('response', resolve);
+ this.responseEmitter.once('error', reject);
+ });
+ }
+
+ async sendRequest(command: string, params: {}) {
+ return this.send('request', command, params);
+ }
+}
diff --git a/integration/language_service_plugin/tsconfig.json b/integration/language_service_plugin/tsconfig.json
index 2c7260d1bc..9730ac2fe3 100644
--- a/integration/language_service_plugin/tsconfig.json
+++ b/integration/language_service_plugin/tsconfig.json
@@ -1,13 +1,60 @@
{
"compilerOptions": {
- "target": "es5",
- "module": "commonjs",
- "moduleResolution": "node",
- "sourceMap": true,
- "emitDecoratorMetadata": true,
- "experimentalDecorators": true,
- "lib": [ "es2015", "dom" ],
- "noImplicitAny": true,
- "suppressImplicitAnyIndexErrors": true
- }
+ /* Basic Options */
+ "target": "es2015", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017','ES2018' or 'ESNEXT'. */
+ "module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
+ // "lib": [], /* Specify library files to be included in the compilation. */
+ // "allowJs": true, /* Allow javascript files to be compiled. */
+ // "checkJs": true, /* Report errors in .js files. */
+ // "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
+ // "declaration": true, /* Generates corresponding '.d.ts' file. */
+ // "declarationMap": true, /* Generates a sourcemap for each corresponding '.d.ts' file. */
+ // "sourceMap": true, /* Generates corresponding '.map' file. */
+ // "outFile": "./", /* Concatenate and emit output to single file. */
+ // "outDir": "./", /* Redirect output structure to the directory. */
+ // "rootDir": "./", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
+ // "composite": true, /* Enable project compilation */
+ // "removeComments": true, /* Do not emit comments to output. */
+ // "noEmit": true, /* Do not emit outputs. */
+ // "importHelpers": true, /* Import emit helpers from 'tslib'. */
+ // "downlevelIteration": true, /* Provide full support for iterables in 'for-of', spread, and destructuring when targeting 'ES5' or 'ES3'. */
+ // "isolatedModules": true, /* Transpile each file as a separate module (similar to 'ts.transpileModule'). */
+
+ /* Strict Type-Checking Options */
+ "strict": true, /* Enable all strict type-checking options. */
+ // "noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
+ // "strictNullChecks": true, /* Enable strict null checks. */
+ // "strictFunctionTypes": true, /* Enable strict checking of function types. */
+ // "strictPropertyInitialization": true, /* Enable strict checking of property initialization in classes. */
+ // "noImplicitThis": true, /* Raise error on 'this' expressions with an implied 'any' type. */
+ // "alwaysStrict": true, /* Parse in strict mode and emit "use strict" for each source file. */
+
+ /* Additional Checks */
+ // "noUnusedLocals": true, /* Report errors on unused locals. */
+ // "noUnusedParameters": true, /* Report errors on unused parameters. */
+ // "noImplicitReturns": true, /* Report error when not all code paths in function return a value. */
+ // "noFallthroughCasesInSwitch": true, /* Report errors for fallthrough cases in switch statement. */
+
+ /* Module Resolution Options */
+ // "moduleResolution": "node", /* Specify module resolution strategy: 'node' (Node.js) or 'classic' (TypeScript pre-1.6). */
+ // "baseUrl": "./", /* Base directory to resolve non-absolute module names. */
+ // "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
+ // "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
+ // "typeRoots": [], /* List of folders to include type definitions from. */
+ // "types": [], /* Type declaration files to be included in compilation. */
+ // "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
+ "esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
+ // "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
+
+ /* Source Map Options */
+ // "sourceRoot": "", /* Specify the location where debugger should locate TypeScript files instead of source locations. */
+ // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */
+ // "inlineSourceMap": true, /* Emit a single file with source maps instead of having a separate file. */
+ // "inlineSources": true, /* Emit the source alongside the sourcemaps within a single file; requires '--inlineSourceMap' or '--sourceMap' to be set. */
+
+ /* Experimental Options */
+ // "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
+ // "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
+ },
+ "include": ["*.ts"]
}
diff --git a/integration/language_service_plugin/typescripts/2.3/package.json b/integration/language_service_plugin/typescripts/2.3/package.json
deleted file mode 100644
index a76f86606d..0000000000
--- a/integration/language_service_plugin/typescripts/2.3/package.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "name": "2.3",
- "version": "1.0.0",
- "description": "",
- "main": "index.js",
- "scripts": {
- "test": "echo \"Error: no test specified\" && exit 1"
- },
- "keywords": [],
- "author": "",
- "license": "ISC",
- "dependencies": {
- "typescript": "2.3.0"
- }
-}
diff --git a/integration/language_service_plugin/typescripts/2.3/yarn.lock b/integration/language_service_plugin/typescripts/2.3/yarn.lock
deleted file mode 100644
index 978ea5c25e..0000000000
--- a/integration/language_service_plugin/typescripts/2.3/yarn.lock
+++ /dev/null
@@ -1,7 +0,0 @@
-# THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY.
-# yarn lockfile v1
-
-
-typescript@2.3.0:
- version "2.3.0"
- resolved "https://registry.yarnpkg.com/typescript/-/typescript-2.3.0.tgz#2e63e09284392bc8158a2444c33e2093795c0418"
diff --git a/integration/language_service_plugin/yarn.lock b/integration/language_service_plugin/yarn.lock
index 2e3bc312da..73dcc87276 100644
--- a/integration/language_service_plugin/yarn.lock
+++ b/integration/language_service_plugin/yarn.lock
@@ -2,391 +2,44 @@
# yarn lockfile v1
-"@angular/animations@file:../../dist/packages-dist/animations":
- version "6.0.0-beta.7-8203e0365a"
- dependencies:
- tslib "^1.9.0"
-
-"@angular/common@file:../../dist/packages-dist/common":
- version "6.0.0-beta.7-8203e0365a"
- dependencies:
- tslib "^1.9.0"
-
-"@angular/compiler-cli@file:../../dist/packages-dist/compiler-cli":
- version "6.0.0-beta.7-8203e0365a"
- dependencies:
- chokidar "^1.4.2"
- minimist "^1.2.0"
- reflect-metadata "^0.1.2"
- tsickle "^0.27.2"
-
-"@angular/compiler@file:../../dist/packages-dist/compiler":
- version "6.0.0-beta.7-8203e0365a"
- dependencies:
- tslib "^1.9.0"
-
"@angular/core@file:../../dist/packages-dist/core":
- version "6.0.0-beta.7-8203e0365a"
+ version "7.2.0"
dependencies:
tslib "^1.9.0"
"@angular/language-service@file:../../dist/packages-dist/language-service":
- version "6.0.0-beta.7-8203e0365a"
+ version "7.2.0"
-"@angular/platform-browser@file:../../dist/packages-dist/platform-browser":
- version "6.0.0-beta.7-8203e0365a"
- dependencies:
- tslib "^1.9.0"
-
-"@angular/platform-server@file:../../dist/packages-dist/platform-server":
- version "6.0.0-beta.7-8203e0365a"
- dependencies:
- domino "^2.0.1"
- tslib "^1.9.0"
- xhr2 "^0.1.4"
-
-"@types/minimist@^1.2.0":
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/@types/minimist/-/minimist-1.2.0.tgz#69a23a3ad29caf0097f06eda59b361ee2f0639f6"
-
-"@types/node@^7.0.5":
- version "7.0.52"
- resolved "https://registry.yarnpkg.com/@types/node/-/node-7.0.52.tgz#8990d3350375542b0c21a83cd0331e6a8fc86716"
-
-abbrev@1:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/abbrev/-/abbrev-1.1.1.tgz#f8f2c887ad10bf67f634f005b6987fed3179aac8"
-
-ajv@^4.9.1:
- version "4.11.8"
- resolved "https://registry.yarnpkg.com/ajv/-/ajv-4.11.8.tgz#82ffb02b29e662ae53bdc20af15947706739c536"
- dependencies:
- co "^4.6.0"
- json-stable-stringify "^1.0.1"
-
-ansi-regex@^2.0.0:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/ansi-regex/-/ansi-regex-2.1.1.tgz#c3b33ab5ee360d86e0e628f0468ae7ef27d654df"
-
-anymatch@^1.3.0:
- version "1.3.2"
- resolved "https://registry.yarnpkg.com/anymatch/-/anymatch-1.3.2.tgz#553dcb8f91e3c889845dfdba34c77721b90b9d7a"
- dependencies:
- micromatch "^2.1.5"
- normalize-path "^2.0.0"
-
-aproba@^1.0.3:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/aproba/-/aproba-1.2.0.tgz#6802e6264efd18c790a1b0d517f0f2627bf2c94a"
-
-are-we-there-yet@~1.1.2:
- version "1.1.4"
- resolved "https://registry.yarnpkg.com/are-we-there-yet/-/are-we-there-yet-1.1.4.tgz#bb5dca382bb94f05e15194373d16fd3ba1ca110d"
- dependencies:
- delegates "^1.0.0"
- readable-stream "^2.0.6"
-
-arr-diff@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/arr-diff/-/arr-diff-2.0.0.tgz#8f3b827f955a8bd669697e4a4256ac3ceae356cf"
- dependencies:
- arr-flatten "^1.0.1"
-
-arr-flatten@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/arr-flatten/-/arr-flatten-1.1.0.tgz#36048bbff4e7b47e136644316c99669ea5ae91f1"
-
-array-unique@^0.2.1:
- version "0.2.1"
- resolved "https://registry.yarnpkg.com/array-unique/-/array-unique-0.2.1.tgz#a1d97ccafcbc2625cc70fadceb36a50c58b01a53"
-
-asn1@~0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/asn1/-/asn1-0.2.3.tgz#dac8787713c9966849fc8180777ebe9c1ddf3b86"
-
-assert-plus@1.0.0, assert-plus@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-1.0.0.tgz#f12e0f3c5d77b0b1cdd9146942e4e96c1e4dd525"
-
-assert-plus@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/assert-plus/-/assert-plus-0.2.0.tgz#d74e1b87e7affc0db8aadb7021f3fe48101ab234"
-
-async-each@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/async-each/-/async-each-1.0.1.tgz#19d386a1d9edc6e7c1c85d388aedbcc56d33602d"
-
-asynckit@^0.4.0:
- version "0.4.0"
- resolved "https://registry.yarnpkg.com/asynckit/-/asynckit-0.4.0.tgz#c79ed97f7f34cb8f2ba1bc9790bcc366474b4b79"
-
-aws-sign2@~0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/aws-sign2/-/aws-sign2-0.6.0.tgz#14342dd38dbcc94d0e5b87d763cd63612c0e794f"
-
-aws4@^1.2.1:
- version "1.6.0"
- resolved "https://registry.yarnpkg.com/aws4/-/aws4-1.6.0.tgz#83ef5ca860b2b32e4a0deedee8c771b9db57471e"
+"@types/node@file:../../node_modules/@types/node":
+ version "10.9.4"
balanced-match@^1.0.0:
version "1.0.0"
resolved "https://registry.yarnpkg.com/balanced-match/-/balanced-match-1.0.0.tgz#89b4d199ab2bee49de164ea02b89ce462d71b767"
-
-bcrypt-pbkdf@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.1.tgz#63bc5dcb61331b92bc05fd528953c33462a06f8d"
- dependencies:
- tweetnacl "^0.14.3"
-
-binary-extensions@^1.0.0:
- version "1.11.0"
- resolved "https://registry.yarnpkg.com/binary-extensions/-/binary-extensions-1.11.0.tgz#46aa1751fb6a2f93ee5e689bb1087d4b14c6c205"
-
-block-stream@*:
- version "0.0.9"
- resolved "https://registry.yarnpkg.com/block-stream/-/block-stream-0.0.9.tgz#13ebfe778a03205cfe03751481ebb4b3300c126a"
- dependencies:
- inherits "~2.0.0"
-
-boom@2.x.x:
- version "2.10.1"
- resolved "https://registry.yarnpkg.com/boom/-/boom-2.10.1.tgz#39c8918ceff5799f83f9492a848f625add0c766f"
- dependencies:
- hoek "2.x.x"
+ integrity sha1-ibTRmasr7kneFk6gK4nORi1xt2c=
brace-expansion@^1.1.7:
- version "1.1.8"
- resolved "https://registry.yarnpkg.com/brace-expansion/-/brace-expansion-1.1.8.tgz#c07b211c7c952ec1f8efd51a77ef0d1d3990a292"
+ 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"
-braces@^1.8.2:
- version "1.8.5"
- resolved "https://registry.yarnpkg.com/braces/-/braces-1.8.5.tgz#ba77962e12dff969d6b76711e914b737857bf6a7"
- dependencies:
- expand-range "^1.8.1"
- preserve "^0.2.0"
- repeat-element "^1.1.2"
-
-caseless@~0.12.0:
- version "0.12.0"
- resolved "https://registry.yarnpkg.com/caseless/-/caseless-0.12.0.tgz#1b681c21ff84033c826543090689420d187151dc"
-
-chokidar@^1.4.2:
- version "1.7.0"
- resolved "https://registry.yarnpkg.com/chokidar/-/chokidar-1.7.0.tgz#798e689778151c8076b4b360e5edd28cda2bb468"
- dependencies:
- anymatch "^1.3.0"
- async-each "^1.0.0"
- glob-parent "^2.0.0"
- inherits "^2.0.1"
- is-binary-path "^1.0.0"
- is-glob "^2.0.0"
- path-is-absolute "^1.0.0"
- readdirp "^2.0.0"
- optionalDependencies:
- fsevents "^1.0.0"
-
-co@^4.6.0:
- version "4.6.0"
- resolved "https://registry.yarnpkg.com/co/-/co-4.6.0.tgz#6ea6bdf3d853ae54ccb8e47bfa0bf3f9031fb184"
-
-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"
-
-combined-stream@^1.0.5, combined-stream@~1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/combined-stream/-/combined-stream-1.0.5.tgz#938370a57b4a51dea2c77c15d5c5fdf895164009"
- dependencies:
- delayed-stream "~1.0.0"
-
concat-map@0.0.1:
version "0.0.1"
resolved "https://registry.yarnpkg.com/concat-map/-/concat-map-0.0.1.tgz#d8a96bd77fd68df7793a73036a3ba0d5405d477b"
-
-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"
-
-core-util-is@1.0.2, 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"
-
-cryptiles@2.x.x:
- version "2.0.5"
- resolved "https://registry.yarnpkg.com/cryptiles/-/cryptiles-2.0.5.tgz#3bdfecdc608147c1c67202fa291e7dca59eaa3b8"
- dependencies:
- boom "2.x.x"
-
-dashdash@^1.12.0:
- version "1.14.1"
- resolved "https://registry.yarnpkg.com/dashdash/-/dashdash-1.14.1.tgz#853cfa0f7cbe2fed5de20326b8dd581035f6e2f0"
- dependencies:
- assert-plus "^1.0.0"
-
-debug@^2.2.0:
- version "2.6.9"
- resolved "https://registry.yarnpkg.com/debug/-/debug-2.6.9.tgz#5d128515df134ff327e90a4c93f4e077a536341f"
- dependencies:
- ms "2.0.0"
-
-deep-extend@~0.4.0:
- version "0.4.2"
- resolved "https://registry.yarnpkg.com/deep-extend/-/deep-extend-0.4.2.tgz#48b699c27e334bf89f10892be432f6e4c7d34a7f"
-
-delayed-stream@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delayed-stream/-/delayed-stream-1.0.0.tgz#df3ae199acadfb7d440aaae0b29e2272b24ec619"
-
-delegates@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/delegates/-/delegates-1.0.0.tgz#84c6e159b81904fdca59a0ef44cd870d31250f9a"
-
-detect-libc@^1.0.2:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/detect-libc/-/detect-libc-1.0.3.tgz#fa137c4bd698edf55cd5cd02ac559f91a4c4ba9b"
-
-domino@^2.0.1:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/domino/-/domino-2.0.1.tgz#9e1d63215d0fe8dcb8202bff07effa1a216db504"
-
-ecc-jsbn@~0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/ecc-jsbn/-/ecc-jsbn-0.1.1.tgz#0fc73a9ed5f0d53c38193398523ef7e543777505"
- dependencies:
- jsbn "~0.1.0"
-
-expand-brackets@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/expand-brackets/-/expand-brackets-0.1.5.tgz#df07284e342a807cd733ac5af72411e581d1177b"
- dependencies:
- is-posix-bracket "^0.1.0"
-
-expand-range@^1.8.1:
- version "1.8.2"
- resolved "https://registry.yarnpkg.com/expand-range/-/expand-range-1.8.2.tgz#a299effd335fe2721ebae8e257ec79644fc85337"
- dependencies:
- fill-range "^2.1.0"
-
-extend@~3.0.0:
- version "3.0.1"
- resolved "https://registry.yarnpkg.com/extend/-/extend-3.0.1.tgz#a755ea7bc1adfcc5a31ce7e762dbaadc5e636444"
-
-extglob@^0.3.1:
- version "0.3.2"
- resolved "https://registry.yarnpkg.com/extglob/-/extglob-0.3.2.tgz#2e18ff3d2f49ab2765cec9023f011daa8d8349a1"
- dependencies:
- is-extglob "^1.0.0"
-
-extsprintf@1.3.0:
- version "1.3.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.3.0.tgz#96918440e3041a7a414f8c52e3c574eb3c3e1e05"
-
-extsprintf@^1.2.0:
- version "1.4.0"
- resolved "https://registry.yarnpkg.com/extsprintf/-/extsprintf-1.4.0.tgz#e2689f8f356fad62cca65a3a91c5df5f9551692f"
-
-filename-regex@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/filename-regex/-/filename-regex-2.0.1.tgz#c1c4b9bee3e09725ddb106b75c1e301fe2f18b26"
-
-fill-range@^2.1.0:
- version "2.2.3"
- resolved "https://registry.yarnpkg.com/fill-range/-/fill-range-2.2.3.tgz#50b77dfd7e469bc7492470963699fe7a8485a723"
- dependencies:
- is-number "^2.1.0"
- isobject "^2.0.0"
- randomatic "^1.1.3"
- repeat-element "^1.1.2"
- repeat-string "^1.5.2"
-
-for-in@^1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/for-in/-/for-in-1.0.2.tgz#81068d295a8142ec0ac726c6e2200c30fb6d5e80"
-
-for-own@^0.1.4:
- version "0.1.5"
- resolved "https://registry.yarnpkg.com/for-own/-/for-own-0.1.5.tgz#5265c681a4f294dabbf17c9509b6763aa84510ce"
- dependencies:
- for-in "^1.0.1"
-
-forever-agent@~0.6.1:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/forever-agent/-/forever-agent-0.6.1.tgz#fbc71f0c41adeb37f96c577ad1ed42d8fdacca91"
-
-form-data@~2.1.1:
- version "2.1.4"
- resolved "https://registry.yarnpkg.com/form-data/-/form-data-2.1.4.tgz#33c183acf193276ecaa98143a69e94bfee1750d1"
- dependencies:
- asynckit "^0.4.0"
- combined-stream "^1.0.5"
- mime-types "^2.1.12"
+ integrity sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=
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=
-fsevents@^1.0.0:
- version "1.1.3"
- resolved "https://registry.yarnpkg.com/fsevents/-/fsevents-1.1.3.tgz#11f82318f5fe7bb2cd22965a108e9306208216d8"
- dependencies:
- nan "^2.3.0"
- node-pre-gyp "^0.6.39"
-
-fstream-ignore@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/fstream-ignore/-/fstream-ignore-1.0.5.tgz#9c31dae34767018fe1d249b24dada67d092da105"
- dependencies:
- fstream "^1.0.0"
- inherits "2"
- minimatch "^3.0.0"
-
-fstream@^1.0.0, fstream@^1.0.10, fstream@^1.0.2:
- version "1.0.11"
- resolved "https://registry.yarnpkg.com/fstream/-/fstream-1.0.11.tgz#5c1fb1f117477114f0632a0eb4b71b3cb0fd3171"
- 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"
- 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"
-
-getpass@^0.1.1:
- version "0.1.7"
- resolved "https://registry.yarnpkg.com/getpass/-/getpass-0.1.7.tgz#5eff8e3e684d569ae4cb2b1282604e8ba62149fa"
- dependencies:
- assert-plus "^1.0.0"
-
-glob-base@^0.3.0:
- version "0.3.0"
- resolved "https://registry.yarnpkg.com/glob-base/-/glob-base-0.3.0.tgz#dbb164f6221b1c0b1ccf82aea328b497df0ea3c4"
- dependencies:
- glob-parent "^2.0.0"
- is-glob "^2.0.0"
-
-glob-parent@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/glob-parent/-/glob-parent-2.0.0.tgz#81383d72db054fcccf5336daa902f182f6edbb28"
- dependencies:
- is-glob "^2.0.0"
-
-glob@^7.0.5:
- version "7.1.2"
- resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.2.tgz#c19c9df9a028702d678612384a6552404c636d15"
+glob@^7.0.6:
+ version "7.1.3"
+ resolved "https://registry.yarnpkg.com/glob/-/glob-7.1.3.tgz#3960832d3f1574108342dafd3a67b332c0969df1"
+ integrity sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==
dependencies:
fs.realpath "^1.0.0"
inflight "^1.0.4"
@@ -395,610 +48,58 @@ glob@^7.0.5:
once "^1.3.0"
path-is-absolute "^1.0.0"
-graceful-fs@^4.1.2:
- version "4.1.11"
- resolved "https://registry.yarnpkg.com/graceful-fs/-/graceful-fs-4.1.11.tgz#0e8bdfe4d1ddb8854d64e04ea7c00e2a026e5658"
-
-har-schema@^1.0.5:
- version "1.0.5"
- resolved "https://registry.yarnpkg.com/har-schema/-/har-schema-1.0.5.tgz#d263135f43307c02c602afc8fe95970c0151369e"
-
-har-validator@~4.2.1:
- version "4.2.1"
- resolved "https://registry.yarnpkg.com/har-validator/-/har-validator-4.2.1.tgz#33481d0f1bbff600dd203d75812a6a5fba002e2a"
- dependencies:
- ajv "^4.9.1"
- har-schema "^1.0.5"
-
-has-unicode@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/has-unicode/-/has-unicode-2.0.1.tgz#e0e6fe6a28cf51138855e086d1691e771de2a8b9"
-
-hawk@3.1.3, hawk@~3.1.3:
- version "3.1.3"
- resolved "https://registry.yarnpkg.com/hawk/-/hawk-3.1.3.tgz#078444bd7c1640b0fe540d2c9b73d59678e8e1c4"
- dependencies:
- boom "2.x.x"
- cryptiles "2.x.x"
- hoek "2.x.x"
- sntp "1.x.x"
-
-hoek@2.x.x:
- version "2.16.3"
- resolved "https://registry.yarnpkg.com/hoek/-/hoek-2.16.3.tgz#20bb7403d3cea398e91dc4710a8ff1b8274a25ed"
-
-http-signature@~1.1.0:
- version "1.1.1"
- resolved "https://registry.yarnpkg.com/http-signature/-/http-signature-1.1.1.tgz#df72e267066cd0ac67fb76adf8e134a8fbcf91bf"
- dependencies:
- assert-plus "^0.2.0"
- jsprim "^1.2.2"
- sshpk "^1.7.0"
-
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.1, inherits@~2.0.0, inherits@~2.0.3:
+inherits@2:
version "2.0.3"
resolved "https://registry.yarnpkg.com/inherits/-/inherits-2.0.3.tgz#633c2c83e3da42a502f52466022480f4208261de"
+ integrity sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=
-ini@~1.3.0:
- version "1.3.5"
- resolved "https://registry.yarnpkg.com/ini/-/ini-1.3.5.tgz#eee25f56db1c9ec6085e0c22778083f596abf927"
+jasmine-core@~3.1.0:
+ version "3.1.0"
+ resolved "https://registry.yarnpkg.com/jasmine-core/-/jasmine-core-3.1.0.tgz#a4785e135d5df65024dfc9224953df585bd2766c"
+ integrity sha1-pHheE11d9lAk38kiSVPfWFvSdmw=
-is-binary-path@^1.0.0:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/is-binary-path/-/is-binary-path-1.0.1.tgz#75f16642b480f187a711c814161fd3a4a7655898"
+"jasmine@file:../../node_modules/jasmine":
+ version "3.1.0"
dependencies:
- binary-extensions "^1.0.0"
+ glob "^7.0.6"
+ jasmine-core "~3.1.0"
-is-buffer@^1.1.5:
- version "1.1.6"
- resolved "https://registry.yarnpkg.com/is-buffer/-/is-buffer-1.1.6.tgz#efaa2ea9daa0d7ab2ea13a97b2b8ad51fefbe8be"
-
-is-dotfile@^1.0.0:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/is-dotfile/-/is-dotfile-1.0.3.tgz#a6a2f32ffd2dfb04f5ca25ecd0f6b83cf798a1e1"
-
-is-equal-shallow@^0.1.3:
- version "0.1.3"
- resolved "https://registry.yarnpkg.com/is-equal-shallow/-/is-equal-shallow-0.1.3.tgz#2238098fc221de0bcfa5d9eac4c45d638aa1c534"
- dependencies:
- is-primitive "^2.0.0"
-
-is-extendable@^0.1.1:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-extendable/-/is-extendable-0.1.1.tgz#62b110e289a471418e3ec36a617d472e301dfc89"
-
-is-extglob@^1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-extglob/-/is-extglob-1.0.0.tgz#ac468177c4943405a092fc8f29760c6ffc6206c0"
-
-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"
- dependencies:
- number-is-nan "^1.0.0"
-
-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"
- dependencies:
- is-extglob "^1.0.0"
-
-is-number@^2.1.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-2.1.0.tgz#01fcbbb393463a548f2f466cce16dece49db908f"
- dependencies:
- kind-of "^3.0.2"
-
-is-number@^3.0.0:
- version "3.0.0"
- resolved "https://registry.yarnpkg.com/is-number/-/is-number-3.0.0.tgz#24fd6201a4782cf50561c810276afc7d12d71195"
- dependencies:
- kind-of "^3.0.2"
-
-is-posix-bracket@^0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/is-posix-bracket/-/is-posix-bracket-0.1.1.tgz#3334dc79774368e92f016e6fbc0a88f5cd6e6bc4"
-
-is-primitive@^2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/is-primitive/-/is-primitive-2.0.0.tgz#207bab91638499c07b2adf240a41a87210034575"
-
-is-typedarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/is-typedarray/-/is-typedarray-1.0.0.tgz#e479c80858df0c1b11ddda6940f96011fcda4a9a"
-
-isarray@1.0.0, isarray@~1.0.0:
- version "1.0.0"
- resolved "https://registry.yarnpkg.com/isarray/-/isarray-1.0.0.tgz#bb935d48582cba168c06834957a54a3e07124f11"
-
-isobject@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/isobject/-/isobject-2.1.0.tgz#f065561096a3f1da2ef46272f815c840d87e0c89"
- dependencies:
- isarray "1.0.0"
-
-isstream@~0.1.2:
- version "0.1.2"
- resolved "https://registry.yarnpkg.com/isstream/-/isstream-0.1.2.tgz#47e63f7af55afa6f92e1500e690eb8b8529c099a"
-
-jsbn@~0.1.0:
- version "0.1.1"
- resolved "https://registry.yarnpkg.com/jsbn/-/jsbn-0.1.1.tgz#a5e654c2e5a2deb5f201d96cefbca80c0ef2f513"
-
-json-schema@0.2.3:
- version "0.2.3"
- resolved "https://registry.yarnpkg.com/json-schema/-/json-schema-0.2.3.tgz#b480c892e59a2f05954ce727bd3f2a4e882f9e13"
-
-json-stable-stringify@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/json-stable-stringify/-/json-stable-stringify-1.0.1.tgz#9a759d39c5f2ff503fd5300646ed445f88c4f9af"
- dependencies:
- jsonify "~0.0.0"
-
-json-stringify-safe@~5.0.1:
- version "5.0.1"
- resolved "https://registry.yarnpkg.com/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz#1296a2d58fd45f19a0f6ce01d65701e2c735b6eb"
-
-jsonify@~0.0.0:
- version "0.0.0"
- resolved "https://registry.yarnpkg.com/jsonify/-/jsonify-0.0.0.tgz#2c74b6ee41d93ca51b7b5aaee8f503631d252a73"
-
-jsprim@^1.2.2:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/jsprim/-/jsprim-1.4.1.tgz#313e66bc1e5cc06e438bc1b7499c2e5c56acb6a2"
- dependencies:
- assert-plus "1.0.0"
- extsprintf "1.3.0"
- json-schema "0.2.3"
- verror "1.10.0"
-
-kind-of@^3.0.2:
- version "3.2.2"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-3.2.2.tgz#31ea21a734bab9bbb0f32466d893aea51e4a3c64"
- dependencies:
- is-buffer "^1.1.5"
-
-kind-of@^4.0.0:
- version "4.0.0"
- resolved "https://registry.yarnpkg.com/kind-of/-/kind-of-4.0.0.tgz#20813df3d712928b207378691a45066fae72dd57"
- dependencies:
- is-buffer "^1.1.5"
-
-micromatch@^2.1.5:
- version "2.3.11"
- resolved "https://registry.yarnpkg.com/micromatch/-/micromatch-2.3.11.tgz#86677c97d1720b363431d04d0d15293bd38c1565"
- dependencies:
- arr-diff "^2.0.0"
- array-unique "^0.2.1"
- braces "^1.8.2"
- expand-brackets "^0.1.4"
- extglob "^0.3.1"
- filename-regex "^2.0.0"
- is-extglob "^1.0.0"
- is-glob "^2.0.1"
- kind-of "^3.0.2"
- normalize-path "^2.0.1"
- object.omit "^2.0.0"
- parse-glob "^3.0.4"
- regex-cache "^0.4.2"
-
-mime-db@~1.30.0:
- version "1.30.0"
- resolved "https://registry.yarnpkg.com/mime-db/-/mime-db-1.30.0.tgz#74c643da2dd9d6a45399963465b26d5ca7d71f01"
-
-mime-types@^2.1.12, mime-types@~2.1.7:
- version "2.1.17"
- resolved "https://registry.yarnpkg.com/mime-types/-/mime-types-2.1.17.tgz#09d7a393f03e995a79f8af857b70a9e0ab16557a"
- dependencies:
- mime-db "~1.30.0"
-
-minimatch@^3.0.0, minimatch@^3.0.2, minimatch@^3.0.4:
+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"
-
-minimist@^1.2.0:
- version "1.2.0"
- resolved "https://registry.yarnpkg.com/minimist/-/minimist-1.2.0.tgz#a35008b20f41383eec1fb914f4cd5df79a264284"
-
-"mkdirp@>=0.5 0", mkdirp@^0.5.1:
- version "0.5.1"
- resolved "https://registry.yarnpkg.com/mkdirp/-/mkdirp-0.5.1.tgz#30057438eac6cf7f8c4767f38648d6697d75c903"
- dependencies:
- minimist "0.0.8"
-
-ms@2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/ms/-/ms-2.0.0.tgz#5608aeadfc00be6c2901df5f9861788de0d597c8"
-
-nan@^2.3.0:
- version "2.8.0"
- resolved "https://registry.yarnpkg.com/nan/-/nan-2.8.0.tgz#ed715f3fe9de02b57a5e6252d90a96675e1f085a"
-
-node-pre-gyp@^0.6.39:
- version "0.6.39"
- resolved "https://registry.yarnpkg.com/node-pre-gyp/-/node-pre-gyp-0.6.39.tgz#c00e96860b23c0e1420ac7befc5044e1d78d8649"
- dependencies:
- detect-libc "^1.0.2"
- hawk "3.1.3"
- mkdirp "^0.5.1"
- nopt "^4.0.1"
- npmlog "^4.0.2"
- rc "^1.1.7"
- request "2.81.0"
- rimraf "^2.6.1"
- semver "^5.3.0"
- tar "^2.2.1"
- tar-pack "^3.4.0"
-
-nopt@^4.0.1:
- version "4.0.1"
- resolved "https://registry.yarnpkg.com/nopt/-/nopt-4.0.1.tgz#d0d4685afd5415193c8c7505602d0d17cd64474d"
- dependencies:
- abbrev "1"
- osenv "^0.1.4"
-
-normalize-path@^2.0.0, normalize-path@^2.0.1:
- version "2.1.1"
- resolved "https://registry.yarnpkg.com/normalize-path/-/normalize-path-2.1.1.tgz#1ab28b556e198363a8c1a6f7e6fa20137fe6aed9"
- dependencies:
- remove-trailing-separator "^1.0.1"
-
-npmlog@^4.0.2:
- version "4.1.2"
- resolved "https://registry.yarnpkg.com/npmlog/-/npmlog-4.1.2.tgz#08a7f2a8bf734604779a9efa4ad5cc717abb954b"
- 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"
-
-oauth-sign@~0.8.1:
- version "0.8.2"
- resolved "https://registry.yarnpkg.com/oauth-sign/-/oauth-sign-0.8.2.tgz#46a6ab7f0aead8deae9ec0565780b7d4efeb9d43"
-
-object-assign@^4.1.0:
- version "4.1.1"
- resolved "https://registry.yarnpkg.com/object-assign/-/object-assign-4.1.1.tgz#2109adc7965887cfc05cbbd442cac8bfbb360863"
-
-object.omit@^2.0.0:
- version "2.0.1"
- resolved "https://registry.yarnpkg.com/object.omit/-/object.omit-2.0.1.tgz#1a9c744829f39dbb858c76ca3579ae2a54ebd1fa"
- dependencies:
- for-own "^0.1.4"
- is-extendable "^0.1.1"
-
-once@^1.3.0, once@^1.3.3:
+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"
-os-homedir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-homedir/-/os-homedir-1.0.2.tgz#ffbc4988336e0e833de0c168c7ef152121aa7fb3"
-
-os-tmpdir@^1.0.0:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/os-tmpdir/-/os-tmpdir-1.0.2.tgz#bbe67406c79aa85c5cfec766fe5734555dfa1274"
-
-osenv@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/osenv/-/osenv-0.1.4.tgz#42fe6d5953df06c8064be6f176c3d05aaaa34644"
- dependencies:
- os-homedir "^1.0.0"
- os-tmpdir "^1.0.0"
-
-parse-glob@^3.0.4:
- version "3.0.4"
- resolved "https://registry.yarnpkg.com/parse-glob/-/parse-glob-3.0.4.tgz#b2c376cfb11f35513badd173ef0bb6e3a388391c"
- dependencies:
- glob-base "^0.3.0"
- is-dotfile "^1.0.0"
- is-extglob "^1.0.0"
- is-glob "^2.0.0"
-
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"
-
-performance-now@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/performance-now/-/performance-now-0.2.0.tgz#33ef30c5c77d4ea21c5a53869d91b56d8f2555e5"
-
-preserve@^0.2.0:
- version "0.2.0"
- resolved "https://registry.yarnpkg.com/preserve/-/preserve-0.2.0.tgz#815ed1f6ebc65926f865b310c0713bcb3315ce4b"
-
-process-nextick-args@~1.0.6:
- version "1.0.7"
- resolved "https://registry.yarnpkg.com/process-nextick-args/-/process-nextick-args-1.0.7.tgz#150e20b756590ad3f91093f25a4f2ad8bff30ba3"
-
-punycode@^1.4.1:
- version "1.4.1"
- resolved "https://registry.yarnpkg.com/punycode/-/punycode-1.4.1.tgz#c0d5a63b2718800ad8e1eb0fa5269c84dd41845e"
-
-qs@~6.4.0:
- version "6.4.0"
- resolved "https://registry.yarnpkg.com/qs/-/qs-6.4.0.tgz#13e26d28ad6b0ffaa91312cd3bf708ed351e7233"
-
-randomatic@^1.1.3:
- version "1.1.7"
- resolved "https://registry.yarnpkg.com/randomatic/-/randomatic-1.1.7.tgz#c7abe9cc8b87c0baa876b19fde83fd464797e38c"
- dependencies:
- is-number "^3.0.0"
- kind-of "^4.0.0"
-
-rc@^1.1.7:
- version "1.2.3"
- resolved "https://registry.yarnpkg.com/rc/-/rc-1.2.3.tgz#51575a900f8dd68381c710b4712c2154c3e2035b"
- dependencies:
- deep-extend "~0.4.0"
- ini "~1.3.0"
- minimist "^1.2.0"
- strip-json-comments "~2.0.1"
-
-readable-stream@^2.0.2, readable-stream@^2.0.6, readable-stream@^2.1.4:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/readable-stream/-/readable-stream-2.3.3.tgz#368f2512d79f9d46fdfc71349ae7878bbc1eb95c"
- dependencies:
- core-util-is "~1.0.0"
- inherits "~2.0.3"
- isarray "~1.0.0"
- process-nextick-args "~1.0.6"
- safe-buffer "~5.1.1"
- string_decoder "~1.0.3"
- util-deprecate "~1.0.1"
-
-readdirp@^2.0.0:
- version "2.1.0"
- resolved "https://registry.yarnpkg.com/readdirp/-/readdirp-2.1.0.tgz#4ed0ad060df3073300c48440373f72d1cc642d78"
- dependencies:
- graceful-fs "^4.1.2"
- minimatch "^3.0.2"
- readable-stream "^2.0.2"
- set-immediate-shim "^1.0.1"
-
-reflect-metadata@^0.1.2:
- version "0.1.10"
- resolved "https://registry.yarnpkg.com/reflect-metadata/-/reflect-metadata-0.1.10.tgz#b4f83704416acad89988c9b15635d47e03b9344a"
-
-regex-cache@^0.4.2:
- version "0.4.4"
- resolved "https://registry.yarnpkg.com/regex-cache/-/regex-cache-0.4.4.tgz#75bdc58a2a1496cec48a12835bc54c8d562336dd"
- dependencies:
- is-equal-shallow "^0.1.3"
-
-remove-trailing-separator@^1.0.1:
- version "1.1.0"
- resolved "https://registry.yarnpkg.com/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz#c24bce2a283adad5bc3f58e0d48249b92379d8ef"
-
-repeat-element@^1.1.2:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/repeat-element/-/repeat-element-1.1.2.tgz#ef089a178d1483baae4d93eb98b4f9e4e11d990a"
-
-repeat-string@^1.5.2:
- version "1.6.1"
- resolved "https://registry.yarnpkg.com/repeat-string/-/repeat-string-1.6.1.tgz#8dcae470e1c88abc2d600fff4a776286da75e637"
-
-request@2.81.0:
- version "2.81.0"
- resolved "https://registry.yarnpkg.com/request/-/request-2.81.0.tgz#c6928946a0e06c5f8d6f8a9333469ffda46298a0"
- dependencies:
- aws-sign2 "~0.6.0"
- aws4 "^1.2.1"
- caseless "~0.12.0"
- combined-stream "~1.0.5"
- extend "~3.0.0"
- forever-agent "~0.6.1"
- form-data "~2.1.1"
- har-validator "~4.2.1"
- hawk "~3.1.3"
- http-signature "~1.1.0"
- is-typedarray "~1.0.0"
- isstream "~0.1.2"
- json-stringify-safe "~5.0.1"
- mime-types "~2.1.7"
- oauth-sign "~0.8.1"
- performance-now "^0.2.0"
- qs "~6.4.0"
- safe-buffer "^5.0.1"
- stringstream "~0.0.4"
- tough-cookie "~2.3.0"
- tunnel-agent "^0.6.0"
- uuid "^3.0.0"
-
-rimraf@2, rimraf@^2.5.1, rimraf@^2.6.1:
- version "2.6.2"
- resolved "https://registry.yarnpkg.com/rimraf/-/rimraf-2.6.2.tgz#2ed8150d24a16ea8651e6d6ef0f47c4158ce7a36"
- dependencies:
- glob "^7.0.5"
-
-"rxjs@file:../../node_modules/rxjs":
- version "6.0.0-alpha.4"
- dependencies:
- tslib "^1.9.0"
-
-safe-buffer@^5.0.1, safe-buffer@~5.1.0, safe-buffer@~5.1.1:
- version "5.1.1"
- resolved "https://registry.yarnpkg.com/safe-buffer/-/safe-buffer-5.1.1.tgz#893312af69b2123def71f57889001671eeb2c853"
-
-semver@^5.3.0:
- version "5.4.1"
- resolved "https://registry.yarnpkg.com/semver/-/semver-5.4.1.tgz#e059c09d8571f0540823733433505d3a2f00b18e"
-
-set-blocking@~2.0.0:
- version "2.0.0"
- resolved "https://registry.yarnpkg.com/set-blocking/-/set-blocking-2.0.0.tgz#045f9782d011ae9a6803ddd382b24392b3d890f7"
-
-set-immediate-shim@^1.0.1:
- version "1.0.1"
- resolved "https://registry.yarnpkg.com/set-immediate-shim/-/set-immediate-shim-1.0.1.tgz#4b2b1b27eb808a9f8dcc481a58e5e56f599f3f61"
-
-signal-exit@^3.0.0:
- version "3.0.2"
- resolved "https://registry.yarnpkg.com/signal-exit/-/signal-exit-3.0.2.tgz#b5fdc08f1287ea1178628e415e25132b73646c6d"
-
-sntp@1.x.x:
- version "1.0.9"
- resolved "https://registry.yarnpkg.com/sntp/-/sntp-1.0.9.tgz#6541184cc90aeea6c6e7b35e2659082443c66198"
- dependencies:
- hoek "2.x.x"
-
-source-map-support@^0.5.0:
- version "0.5.3"
- resolved "https://registry.yarnpkg.com/source-map-support/-/source-map-support-0.5.3.tgz#2b3d5fff298cfa4d1afd7d4352d569e9a0158e76"
- dependencies:
- source-map "^0.6.0"
-
-source-map@^0.6.0:
- version "0.6.1"
- resolved "https://registry.yarnpkg.com/source-map/-/source-map-0.6.1.tgz#74722af32e9614e9c287a8d0bbde48b5e2f1a263"
-
-sshpk@^1.7.0:
- version "1.13.1"
- resolved "https://registry.yarnpkg.com/sshpk/-/sshpk-1.13.1.tgz#512df6da6287144316dc4c18fe1cf1d940739be3"
- dependencies:
- asn1 "~0.2.3"
- assert-plus "^1.0.0"
- dashdash "^1.12.0"
- getpass "^0.1.1"
- optionalDependencies:
- bcrypt-pbkdf "^1.0.0"
- ecc-jsbn "~0.1.1"
- jsbn "~0.1.0"
- tweetnacl "~0.14.0"
-
-string-width@^1.0.1, string-width@^1.0.2:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/string-width/-/string-width-1.0.2.tgz#118bdf5b8cdc51a2a7e70d211e07e2b0b9b107d3"
- dependencies:
- code-point-at "^1.0.0"
- is-fullwidth-code-point "^1.0.0"
- strip-ansi "^3.0.0"
-
-string_decoder@~1.0.3:
- version "1.0.3"
- resolved "https://registry.yarnpkg.com/string_decoder/-/string_decoder-1.0.3.tgz#0fc67d7c141825de94282dd536bec6b9bce860ab"
- dependencies:
- safe-buffer "~5.1.0"
-
-stringstream@~0.0.4:
- version "0.0.5"
- resolved "https://registry.yarnpkg.com/stringstream/-/stringstream-0.0.5.tgz#4e484cd4de5a0bbbee18e46307710a8a81621878"
-
-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"
- dependencies:
- ansi-regex "^2.0.0"
-
-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"
-
-tar-pack@^3.4.0:
- version "3.4.1"
- resolved "https://registry.yarnpkg.com/tar-pack/-/tar-pack-3.4.1.tgz#e1dbc03a9b9d3ba07e896ad027317eb679a10a1f"
- dependencies:
- debug "^2.2.0"
- fstream "^1.0.10"
- fstream-ignore "^1.0.5"
- once "^1.3.3"
- readable-stream "^2.1.4"
- rimraf "^2.5.1"
- tar "^2.2.1"
- uid-number "^0.0.6"
-
-tar@^2.2.1:
- version "2.2.1"
- resolved "https://registry.yarnpkg.com/tar/-/tar-2.2.1.tgz#8e4d2a256c0e2185c6b18ad694aec968b83cb1d1"
- dependencies:
- block-stream "*"
- fstream "^1.0.2"
- inherits "2"
-
-tough-cookie@~2.3.0:
- version "2.3.3"
- resolved "https://registry.yarnpkg.com/tough-cookie/-/tough-cookie-2.3.3.tgz#0b618a5565b6dea90bf3425d04d55edc475a7561"
- dependencies:
- punycode "^1.4.1"
-
-tsickle@^0.27.2:
- version "0.27.2"
- resolved "https://registry.yarnpkg.com/tsickle/-/tsickle-0.27.2.tgz#f33d46d046f73dd5c155a37922e422816e878736"
- dependencies:
- minimist "^1.2.0"
- mkdirp "^0.5.1"
- source-map "^0.6.0"
- source-map-support "^0.5.0"
+ integrity sha1-F0uSaHNVNP+8es5r9TpanhtcX18=
tslib@^1.9.0:
- version "1.9.0"
- resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.0.tgz#e37a86fda8cbbaf23a057f473c9f4dc64e5fc2e8"
-
-tunnel-agent@^0.6.0:
- version "0.6.0"
- resolved "https://registry.yarnpkg.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz#27a5dea06b36b04a0a9966774b290868f0fc40fd"
- dependencies:
- safe-buffer "^5.0.1"
-
-tweetnacl@^0.14.3, tweetnacl@~0.14.0:
- version "0.14.5"
- resolved "https://registry.yarnpkg.com/tweetnacl/-/tweetnacl-0.14.5.tgz#5ae68177f192d4456269d108afa93ff8743f4f64"
+ version "1.9.3"
+ resolved "https://registry.yarnpkg.com/tslib/-/tslib-1.9.3.tgz#d7e4dd79245d85428c4d7e4822a79917954ca286"
+ integrity sha512-4krF8scpejhaOgqzBEcGM7yDIEfi0/8+8zDRZhNZZ2kjmHJ4hv3zCbQWxoJGz1iw5U0Jl0nma13xzHXcncMavQ==
"typescript@file:../../node_modules/typescript":
- version "2.7.2"
-
-uid-number@^0.0.6:
- version "0.0.6"
- resolved "https://registry.yarnpkg.com/uid-number/-/uid-number-0.0.6.tgz#0ea10e8035e8eb5b8e4449f06da1c730663baa81"
-
-util-deprecate@~1.0.1:
- version "1.0.2"
- resolved "https://registry.yarnpkg.com/util-deprecate/-/util-deprecate-1.0.2.tgz#450d4dc9fa70de732762fbd2d4a28981419a0ccf"
-
-uuid@^3.0.0:
- version "3.1.0"
- resolved "https://registry.yarnpkg.com/uuid/-/uuid-3.1.0.tgz#3dd3d3e790abc24d7b0d3a034ffababe28ebbc04"
-
-verror@1.10.0:
- version "1.10.0"
- resolved "https://registry.yarnpkg.com/verror/-/verror-1.10.0.tgz#3a105ca17053af55d6e270c1f8288682e18da400"
- dependencies:
- assert-plus "^1.0.0"
- core-util-is "1.0.2"
- extsprintf "^1.2.0"
-
-wide-align@^1.1.0:
- version "1.1.2"
- resolved "https://registry.yarnpkg.com/wide-align/-/wide-align-1.1.2.tgz#571e0f1b0604636ebc0dfc21b0339bbe31341710"
- dependencies:
- string-width "^1.0.2"
+ version "3.2.2"
wrappy@1:
version "1.0.2"
resolved "https://registry.yarnpkg.com/wrappy/-/wrappy-1.0.2.tgz#b5243d8f3ec1aa35f1364605bc0d1036e30ab69f"
-
-xhr2@^0.1.4:
- version "0.1.4"
- resolved "https://registry.yarnpkg.com/xhr2/-/xhr2-0.1.4.tgz#7f87658847716db5026323812f818cadab387a5f"
-
-"zone.js@file:../../node_modules/zone.js":
- version "0.8.20"
+ integrity sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=