diff --git a/.gitignore b/.gitignore
index 90b078fc94f..40c473d13dd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -59,3 +59,11 @@ internal/
.idea
yarn.lock
.parallelperf.*
+tests/cases/user/*/package-lock.json
+tests/cases/user/*/node_modules/
+tests/cases/user/*/**/*.js
+tests/cases/user/*/**/*.js.map
+tests/cases/user/*/**/*.d.ts
+!tests/cases/user/zone.js/
+!tests/cases/user/bignumber.js/
+!tests/cases/user/discord.js/
diff --git a/Jakefile.js b/Jakefile.js
index da7d96f0699..b7973c092f2 100644
--- a/Jakefile.js
+++ b/Jakefile.js
@@ -105,6 +105,7 @@ var harnessCoreSources = [
"projectsRunner.ts",
"loggedIO.ts",
"rwcRunner.ts",
+ "userRunner.ts",
"test262Runner.ts",
"./parallel/shared.ts",
"./parallel/host.ts",
diff --git a/src/harness/runner.ts b/src/harness/runner.ts
index db807b976bb..9b8ed41554e 100644
--- a/src/harness/runner.ts
+++ b/src/harness/runner.ts
@@ -18,6 +18,7 @@
///
///
///
+///
///
///
@@ -59,6 +60,8 @@ function createRunner(kind: TestRunnerKind): RunnerBase {
return new RWCRunner();
case "test262":
return new Test262BaselineRunner();
+ case "user":
+ return new UserCodeRunner();
}
ts.Debug.fail(`Unknown runner kind ${kind}`);
}
@@ -175,6 +178,9 @@ function handleTestConfig() {
case "test262":
runners.push(new Test262BaselineRunner());
break;
+ case "user":
+ runners.push(new UserCodeRunner());
+ break;
}
}
}
@@ -196,6 +202,11 @@ function handleTestConfig() {
runners.push(new FourSlashRunner(FourSlashTestType.ShimsWithPreprocess));
runners.push(new FourSlashRunner(FourSlashTestType.Server));
// runners.push(new GeneratedFourslashRunner());
+
+ // CRON-only tests
+ if (Utils.getExecutionEnvironment() !== Utils.ExecutionEnvironment.Browser && process.env.TRAVIS_EVENT_TYPE === "cron") {
+ runners.push(new UserCodeRunner());
+ }
}
if (runUnitTests === undefined) {
runUnitTests = runners.length !== 1; // Don't run unit tests when running only one runner if unit tests were not explicitly asked for
@@ -215,8 +226,9 @@ function beginTests() {
}
}
+let isWorker: boolean;
function startTestEnvironment() {
- const isWorker = handleTestConfig();
+ isWorker = handleTestConfig();
if (Utils.getExecutionEnvironment() !== Utils.ExecutionEnvironment.Browser) {
if (isWorker) {
return Harness.Parallel.Worker.start();
diff --git a/src/harness/runnerbase.ts b/src/harness/runnerbase.ts
index d50604803ed..2fef2264b73 100644
--- a/src/harness/runnerbase.ts
+++ b/src/harness/runnerbase.ts
@@ -1,7 +1,7 @@
///
-type TestRunnerKind = CompilerTestKind | FourslashTestKind | "project" | "rwc" | "test262";
+type TestRunnerKind = CompilerTestKind | FourslashTestKind | "project" | "rwc" | "test262" | "user";
type CompilerTestKind = "conformance" | "compiler";
type FourslashTestKind = "fourslash" | "fourslash-shims" | "fourslash-shims-pp" | "fourslash-server";
diff --git a/src/harness/tsconfig.json b/src/harness/tsconfig.json
index 18baeb67c82..6e61b7690bc 100644
--- a/src/harness/tsconfig.json
+++ b/src/harness/tsconfig.json
@@ -92,6 +92,7 @@
"projectsRunner.ts",
"loggedIO.ts",
"rwcRunner.ts",
+ "userRunner.ts",
"test262Runner.ts",
"./parallel/shared.ts",
"./parallel/host.ts",
diff --git a/src/harness/userRunner.ts b/src/harness/userRunner.ts
new file mode 100644
index 00000000000..3802330e10c
--- /dev/null
+++ b/src/harness/userRunner.ts
@@ -0,0 +1,51 @@
+///
+///
+class UserCodeRunner extends RunnerBase {
+ private static readonly testDir = "tests/cases/user/";
+ public enumerateTestFiles() {
+ return Harness.IO.getDirectories(UserCodeRunner.testDir);
+ }
+
+ public kind(): TestRunnerKind {
+ return "user";
+ }
+
+ /** Setup the runner's tests so that they are ready to be executed by the harness
+ * The first test should be a describe/it block that sets up the harness's compiler instance appropriately
+ */
+ public initializeTests(): void {
+ // Read in and evaluate the test list
+ const testList = this.tests && this.tests.length ? this.tests : this.enumerateTestFiles();
+
+ describe(`${this.kind()} code samples`, () => {
+ for (let i = 0; i < testList.length; i++) {
+ this.runTest(testList[i]);
+ }
+ });
+ }
+
+ private runTest(directoryName: string) {
+ describe(directoryName, () => {
+ const cp = require("child_process");
+ const path = require("path");
+
+ it("should build successfully", () => {
+ const cwd = path.join(__dirname, "../../", UserCodeRunner.testDir, directoryName);
+ const timeout = 600000; // 10 minutes
+ const stdio = isWorker ? "pipe" : "inherit";
+ const install = cp.spawnSync(`npm`, ["i"], { cwd, timeout, shell: true, stdio });
+ if (install.status !== 0) throw new Error(`NPM Install for ${directoryName} failed!`);
+ Harness.Baseline.runBaseline(`${this.kind()}/${directoryName}.log`, () => {
+ const result = cp.spawnSync(`node`, ["../../../../built/local/tsc.js"], { cwd, timeout, shell: true });
+ return `Exit Code: ${result.status}
+Standard output:
+${result.stdout.toString().replace(/\r\n/g, "\n")}
+
+
+Standard error:
+${result.stderr.toString().replace(/\r\n/g, "\n")}`;
+ });
+ });
+ });
+ }
+}
diff --git a/tests/baselines/reference/user/ajv.log b/tests/baselines/reference/user/ajv.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/ajv.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/antd.log b/tests/baselines/reference/user/antd.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/antd.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/axios.log b/tests/baselines/reference/user/axios.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/axios.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/bignumber.js.log b/tests/baselines/reference/user/bignumber.js.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/bignumber.js.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/discord.js.log b/tests/baselines/reference/user/discord.js.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/discord.js.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/electron.log b/tests/baselines/reference/user/electron.log
new file mode 100644
index 00000000000..e5eef689d49
--- /dev/null
+++ b/tests/baselines/reference/user/electron.log
@@ -0,0 +1,13 @@
+Exit Code: 2
+Standard output:
+node_modules/electron/electron.d.ts(5390,13): error TS2430: Interface 'WebviewTag' incorrectly extends interface 'HTMLElement'.
+ Types of property 'addEventListener' are incompatible.
+ Type '{ (event: "load-commit", listener: (event: LoadCommitEvent) => void, useCapture?: boolean | undef...' is not assignable to type '{ void'.
+ Type 'EventListenerObject' is not assignable to type '(event: LoadCommitEvent) => void'.
+ Type 'EventListenerObject' provides no match for the signature '(event: LoadCommitEvent): void'.
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/eventemitter2.log b/tests/baselines/reference/user/eventemitter2.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/eventemitter2.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/eventemitter3.log b/tests/baselines/reference/user/eventemitter3.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/eventemitter3.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/firebase.log b/tests/baselines/reference/user/firebase.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/firebase.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/github.log b/tests/baselines/reference/user/github.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/github.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/immutable.log b/tests/baselines/reference/user/immutable.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/immutable.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/isobject.log b/tests/baselines/reference/user/isobject.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/isobject.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/jimp.log b/tests/baselines/reference/user/jimp.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/jimp.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/jsonschema.log b/tests/baselines/reference/user/jsonschema.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/jsonschema.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/keycode.log b/tests/baselines/reference/user/keycode.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/keycode.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/leveldown.log b/tests/baselines/reference/user/leveldown.log
new file mode 100644
index 00000000000..c37a983f73d
--- /dev/null
+++ b/tests/baselines/reference/user/leveldown.log
@@ -0,0 +1,20 @@
+Exit Code: 2
+Standard output:
+node_modules/abstract-leveldown/index.d.ts(2,3): error TS7010: 'open', which lacks return-type annotation, implicitly has an 'any' return type.
+node_modules/abstract-leveldown/index.d.ts(3,3): error TS7010: 'open', which lacks return-type annotation, implicitly has an 'any' return type.
+node_modules/abstract-leveldown/index.d.ts(5,3): error TS7010: 'close', which lacks return-type annotation, implicitly has an 'any' return type.
+node_modules/abstract-leveldown/index.d.ts(7,3): error TS7010: 'get', which lacks return-type annotation, implicitly has an 'any' return type.
+node_modules/abstract-leveldown/index.d.ts(7,26): error TS7006: Parameter 'err' implicitly has an 'any' type.
+node_modules/abstract-leveldown/index.d.ts(8,3): error TS7010: 'get', which lacks return-type annotation, implicitly has an 'any' return type.
+node_modules/abstract-leveldown/index.d.ts(8,39): error TS7006: Parameter 'err' implicitly has an 'any' type.
+node_modules/abstract-leveldown/index.d.ts(10,3): error TS7010: 'put', which lacks return-type annotation, implicitly has an 'any' return type.
+node_modules/abstract-leveldown/index.d.ts(11,3): error TS7010: 'put', which lacks return-type annotation, implicitly has an 'any' return type.
+node_modules/abstract-leveldown/index.d.ts(13,3): error TS7010: 'del', which lacks return-type annotation, implicitly has an 'any' return type.
+node_modules/abstract-leveldown/index.d.ts(14,3): error TS7010: 'del', which lacks return-type annotation, implicitly has an 'any' return type.
+node_modules/abstract-leveldown/index.d.ts(17,3): error TS7010: 'batch', which lacks return-type annotation, implicitly has an 'any' return type.
+node_modules/abstract-leveldown/index.d.ts(18,3): error TS7010: 'batch', which lacks return-type annotation, implicitly has an 'any' return type.
+node_modules/leveldown/leveldown.d.ts(66,3): error TS7010: 'seek', which lacks return-type annotation, implicitly has an 'any' return type.
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/localforage.log b/tests/baselines/reference/user/localforage.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/localforage.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/log4js.log b/tests/baselines/reference/user/log4js.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/log4js.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/mobx.log b/tests/baselines/reference/user/mobx.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/mobx.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/moment.log b/tests/baselines/reference/user/moment.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/moment.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/mqtt.log b/tests/baselines/reference/user/mqtt.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/mqtt.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/parse5.log b/tests/baselines/reference/user/parse5.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/parse5.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/portfinder.log b/tests/baselines/reference/user/portfinder.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/portfinder.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/postcss.log b/tests/baselines/reference/user/postcss.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/postcss.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/protobufjs.log b/tests/baselines/reference/user/protobufjs.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/protobufjs.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/redux.log b/tests/baselines/reference/user/redux.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/redux.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/reselect.log b/tests/baselines/reference/user/reselect.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/reselect.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/rxjs.log b/tests/baselines/reference/user/rxjs.log
new file mode 100644
index 00000000000..73058119ce9
--- /dev/null
+++ b/tests/baselines/reference/user/rxjs.log
@@ -0,0 +1,12 @@
+Exit Code: 2
+Standard output:
+node_modules/rxjs/scheduler/VirtualTimeScheduler.d.ts(22,22): error TS2415: Class 'VirtualAction' incorrectly extends base class 'AsyncAction'.
+ Types of property 'work' are incompatible.
+ Type '(this: VirtualAction, state?: T | undefined) => void' is not assignable to type '(this: AsyncAction, state?: T | undefined) => void'.
+ The 'this' types of each signature are incompatible.
+ Type 'AsyncAction' is not assignable to type 'VirtualAction'.
+ Property 'index' is missing in type 'AsyncAction'.
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/should.log b/tests/baselines/reference/user/should.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/should.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/sift.log b/tests/baselines/reference/user/sift.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/sift.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/soap.log b/tests/baselines/reference/user/soap.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/soap.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/sugar.log b/tests/baselines/reference/user/sugar.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/sugar.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/tslint.log b/tests/baselines/reference/user/tslint.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/tslint.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/vue.log b/tests/baselines/reference/user/vue.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/vue.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/vuex.log b/tests/baselines/reference/user/vuex.log
new file mode 100644
index 00000000000..47a500804bd
--- /dev/null
+++ b/tests/baselines/reference/user/vuex.log
@@ -0,0 +1,7 @@
+Exit Code: 2
+Standard output:
+node_modules/vuex/types/index.d.ts(124,16): error TS2714: The expression of an export assignment must be an identifier or qualified name in an ambient context.
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/xlsx.log b/tests/baselines/reference/user/xlsx.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/xlsx.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/xpath.log b/tests/baselines/reference/user/xpath.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/xpath.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/baselines/reference/user/zone.js.log b/tests/baselines/reference/user/zone.js.log
new file mode 100644
index 00000000000..15b10503c1f
--- /dev/null
+++ b/tests/baselines/reference/user/zone.js.log
@@ -0,0 +1,6 @@
+Exit Code: 0
+Standard output:
+
+
+
+Standard error:
diff --git a/tests/cases/user/ajv/index.ts b/tests/cases/user/ajv/index.ts
new file mode 100644
index 00000000000..ffcbd04e944
--- /dev/null
+++ b/tests/cases/user/ajv/index.ts
@@ -0,0 +1 @@
+import ajv = require("ajv");
diff --git a/tests/cases/user/ajv/package.json b/tests/cases/user/ajv/package.json
new file mode 100644
index 00000000000..72782496ab0
--- /dev/null
+++ b/tests/cases/user/ajv/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "ajv-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "ajv": "latest"
+ }
+}
diff --git a/tests/cases/user/ajv/tsconfig.json b/tests/cases/user/ajv/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/ajv/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/antd/index.ts b/tests/cases/user/antd/index.ts
new file mode 100644
index 00000000000..edc6fcfb52e
--- /dev/null
+++ b/tests/cases/user/antd/index.ts
@@ -0,0 +1 @@
+import antd = require("antd");
diff --git a/tests/cases/user/antd/package.json b/tests/cases/user/antd/package.json
new file mode 100644
index 00000000000..a20168dd27b
--- /dev/null
+++ b/tests/cases/user/antd/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "antd-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/react": "^16.0.18",
+ "antd": "latest"
+ }
+}
diff --git a/tests/cases/user/antd/tsconfig.json b/tests/cases/user/antd/tsconfig.json
new file mode 100644
index 00000000000..adbd65f2d00
--- /dev/null
+++ b/tests/cases/user/antd/tsconfig.json
@@ -0,0 +1,8 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015", "dom"],
+ "types": [],
+ "allowSyntheticDefaultImports": true
+ }
+}
diff --git a/tests/cases/user/axios/index.ts b/tests/cases/user/axios/index.ts
new file mode 100644
index 00000000000..43a4bf8d5d0
--- /dev/null
+++ b/tests/cases/user/axios/index.ts
@@ -0,0 +1 @@
+import axios = require("axios");
diff --git a/tests/cases/user/axios/package.json b/tests/cases/user/axios/package.json
new file mode 100644
index 00000000000..b4cc25a9b97
--- /dev/null
+++ b/tests/cases/user/axios/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "axios-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "axios": "latest"
+ }
+}
diff --git a/tests/cases/user/axios/tsconfig.json b/tests/cases/user/axios/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/axios/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/bignumber.js/index.ts b/tests/cases/user/bignumber.js/index.ts
new file mode 100644
index 00000000000..fbbbc4c0661
--- /dev/null
+++ b/tests/cases/user/bignumber.js/index.ts
@@ -0,0 +1 @@
+import bignumber_js = require("bignumber.js");
diff --git a/tests/cases/user/bignumber.js/package.json b/tests/cases/user/bignumber.js/package.json
new file mode 100644
index 00000000000..8b5fea49297
--- /dev/null
+++ b/tests/cases/user/bignumber.js/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "bignumber.js-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "bignumber.js": "latest"
+ }
+}
diff --git a/tests/cases/user/bignumber.js/tsconfig.json b/tests/cases/user/bignumber.js/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/bignumber.js/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/discord.js/index.ts b/tests/cases/user/discord.js/index.ts
new file mode 100644
index 00000000000..e86cef98fb0
--- /dev/null
+++ b/tests/cases/user/discord.js/index.ts
@@ -0,0 +1 @@
+import discord_js = require("discord.js");
diff --git a/tests/cases/user/discord.js/package.json b/tests/cases/user/discord.js/package.json
new file mode 100644
index 00000000000..c78d4cd0645
--- /dev/null
+++ b/tests/cases/user/discord.js/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "discord.js-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/node": "^8.0.47",
+ "discord.js": "latest"
+ }
+}
diff --git a/tests/cases/user/discord.js/tsconfig.json b/tests/cases/user/discord.js/tsconfig.json
new file mode 100644
index 00000000000..a8a84f5c5fe
--- /dev/null
+++ b/tests/cases/user/discord.js/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": ["node"]
+ }
+}
diff --git a/tests/cases/user/electron/index.ts b/tests/cases/user/electron/index.ts
new file mode 100644
index 00000000000..c8af4b993ff
--- /dev/null
+++ b/tests/cases/user/electron/index.ts
@@ -0,0 +1 @@
+import electron = require("electron");
diff --git a/tests/cases/user/electron/package.json b/tests/cases/user/electron/package.json
new file mode 100644
index 00000000000..3113f8bd03b
--- /dev/null
+++ b/tests/cases/user/electron/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "electron-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "electron": "latest"
+ }
+}
diff --git a/tests/cases/user/electron/tsconfig.json b/tests/cases/user/electron/tsconfig.json
new file mode 100644
index 00000000000..aa10372d8d1
--- /dev/null
+++ b/tests/cases/user/electron/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015", "dom"],
+ "types": []
+ }
+}
diff --git a/tests/cases/user/eventemitter2/index.ts b/tests/cases/user/eventemitter2/index.ts
new file mode 100644
index 00000000000..c68cae71e50
--- /dev/null
+++ b/tests/cases/user/eventemitter2/index.ts
@@ -0,0 +1 @@
+import eventemitter2 = require("eventemitter2");
diff --git a/tests/cases/user/eventemitter2/package.json b/tests/cases/user/eventemitter2/package.json
new file mode 100644
index 00000000000..7a1fb9e04f8
--- /dev/null
+++ b/tests/cases/user/eventemitter2/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "eventemitter2-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "eventemitter2": "latest"
+ }
+}
diff --git a/tests/cases/user/eventemitter2/tsconfig.json b/tests/cases/user/eventemitter2/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/eventemitter2/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/eventemitter3/index.ts b/tests/cases/user/eventemitter3/index.ts
new file mode 100644
index 00000000000..1ef33830f09
--- /dev/null
+++ b/tests/cases/user/eventemitter3/index.ts
@@ -0,0 +1 @@
+import eventemitter3 = require("eventemitter3");
diff --git a/tests/cases/user/eventemitter3/package.json b/tests/cases/user/eventemitter3/package.json
new file mode 100644
index 00000000000..7b401395c6a
--- /dev/null
+++ b/tests/cases/user/eventemitter3/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "eventemitter3-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "eventemitter3": "latest"
+ }
+}
diff --git a/tests/cases/user/eventemitter3/tsconfig.json b/tests/cases/user/eventemitter3/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/eventemitter3/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/firebase/index.ts b/tests/cases/user/firebase/index.ts
new file mode 100644
index 00000000000..dfd40bf009d
--- /dev/null
+++ b/tests/cases/user/firebase/index.ts
@@ -0,0 +1 @@
+import firebase = require("firebase");
diff --git a/tests/cases/user/firebase/package.json b/tests/cases/user/firebase/package.json
new file mode 100644
index 00000000000..11fb1d2ea7e
--- /dev/null
+++ b/tests/cases/user/firebase/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "firebase-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "firebase": "latest"
+ }
+}
diff --git a/tests/cases/user/firebase/tsconfig.json b/tests/cases/user/firebase/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/firebase/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/github/index.ts b/tests/cases/user/github/index.ts
new file mode 100644
index 00000000000..90e2253381c
--- /dev/null
+++ b/tests/cases/user/github/index.ts
@@ -0,0 +1 @@
+import github = require("github");
diff --git a/tests/cases/user/github/package.json b/tests/cases/user/github/package.json
new file mode 100644
index 00000000000..37a0181865f
--- /dev/null
+++ b/tests/cases/user/github/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "github-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "github": "latest"
+ }
+}
diff --git a/tests/cases/user/github/tsconfig.json b/tests/cases/user/github/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/github/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/immutable/index.ts b/tests/cases/user/immutable/index.ts
new file mode 100644
index 00000000000..b5fb927e459
--- /dev/null
+++ b/tests/cases/user/immutable/index.ts
@@ -0,0 +1 @@
+import immutable = require("immutable");
diff --git a/tests/cases/user/immutable/package.json b/tests/cases/user/immutable/package.json
new file mode 100644
index 00000000000..fb869e488ea
--- /dev/null
+++ b/tests/cases/user/immutable/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "immutable-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "immutable": "latest"
+ }
+}
diff --git a/tests/cases/user/immutable/tsconfig.json b/tests/cases/user/immutable/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/immutable/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/isobject/index.ts b/tests/cases/user/isobject/index.ts
new file mode 100644
index 00000000000..92b08ff4825
--- /dev/null
+++ b/tests/cases/user/isobject/index.ts
@@ -0,0 +1 @@
+import isobject = require("isobject");
diff --git a/tests/cases/user/isobject/package.json b/tests/cases/user/isobject/package.json
new file mode 100644
index 00000000000..b1501180526
--- /dev/null
+++ b/tests/cases/user/isobject/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "isobject-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "isobject": "latest"
+ }
+}
diff --git a/tests/cases/user/isobject/tsconfig.json b/tests/cases/user/isobject/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/isobject/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/jimp/index.ts b/tests/cases/user/jimp/index.ts
new file mode 100644
index 00000000000..6a7d51414aa
--- /dev/null
+++ b/tests/cases/user/jimp/index.ts
@@ -0,0 +1 @@
+import jimp = require("jimp");
diff --git a/tests/cases/user/jimp/package.json b/tests/cases/user/jimp/package.json
new file mode 100644
index 00000000000..18ebc2933e3
--- /dev/null
+++ b/tests/cases/user/jimp/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "jimp-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "jimp": "latest"
+ }
+}
diff --git a/tests/cases/user/jimp/tsconfig.json b/tests/cases/user/jimp/tsconfig.json
new file mode 100644
index 00000000000..a8a84f5c5fe
--- /dev/null
+++ b/tests/cases/user/jimp/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": ["node"]
+ }
+}
diff --git a/tests/cases/user/jsonschema/index.ts b/tests/cases/user/jsonschema/index.ts
new file mode 100644
index 00000000000..0cab63413a5
--- /dev/null
+++ b/tests/cases/user/jsonschema/index.ts
@@ -0,0 +1 @@
+import jsonschema = require("jsonschema");
diff --git a/tests/cases/user/jsonschema/package.json b/tests/cases/user/jsonschema/package.json
new file mode 100644
index 00000000000..daf42c5c0c7
--- /dev/null
+++ b/tests/cases/user/jsonschema/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "jsonschema-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "jsonschema": "latest"
+ }
+}
diff --git a/tests/cases/user/jsonschema/tsconfig.json b/tests/cases/user/jsonschema/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/jsonschema/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/keycode/index.ts b/tests/cases/user/keycode/index.ts
new file mode 100644
index 00000000000..cfa11252ecb
--- /dev/null
+++ b/tests/cases/user/keycode/index.ts
@@ -0,0 +1 @@
+import keycode = require("keycode");
diff --git a/tests/cases/user/keycode/package.json b/tests/cases/user/keycode/package.json
new file mode 100644
index 00000000000..73280239eb0
--- /dev/null
+++ b/tests/cases/user/keycode/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "keycode-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/node": "^8.0.47",
+ "keycode": "latest"
+ }
+}
diff --git a/tests/cases/user/keycode/tsconfig.json b/tests/cases/user/keycode/tsconfig.json
new file mode 100644
index 00000000000..aa10372d8d1
--- /dev/null
+++ b/tests/cases/user/keycode/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015", "dom"],
+ "types": []
+ }
+}
diff --git a/tests/cases/user/leveldown/index.ts b/tests/cases/user/leveldown/index.ts
new file mode 100644
index 00000000000..c595cfc3198
--- /dev/null
+++ b/tests/cases/user/leveldown/index.ts
@@ -0,0 +1 @@
+import leveldown = require("leveldown");
diff --git a/tests/cases/user/leveldown/package.json b/tests/cases/user/leveldown/package.json
new file mode 100644
index 00000000000..4ee61ed4ba4
--- /dev/null
+++ b/tests/cases/user/leveldown/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "leveldown-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/node": "^8.0.47",
+ "leveldown": "latest"
+ }
+}
diff --git a/tests/cases/user/leveldown/tsconfig.json b/tests/cases/user/leveldown/tsconfig.json
new file mode 100644
index 00000000000..a8a84f5c5fe
--- /dev/null
+++ b/tests/cases/user/leveldown/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": ["node"]
+ }
+}
diff --git a/tests/cases/user/localforage/index.ts b/tests/cases/user/localforage/index.ts
new file mode 100644
index 00000000000..dad26db93e3
--- /dev/null
+++ b/tests/cases/user/localforage/index.ts
@@ -0,0 +1 @@
+import localforage = require("localforage");
diff --git a/tests/cases/user/localforage/package.json b/tests/cases/user/localforage/package.json
new file mode 100644
index 00000000000..f02b0e02fb2
--- /dev/null
+++ b/tests/cases/user/localforage/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "localforage-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "localforage": "latest"
+ }
+}
diff --git a/tests/cases/user/localforage/tsconfig.json b/tests/cases/user/localforage/tsconfig.json
new file mode 100644
index 00000000000..aa10372d8d1
--- /dev/null
+++ b/tests/cases/user/localforage/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015", "dom"],
+ "types": []
+ }
+}
diff --git a/tests/cases/user/log4js/index.ts b/tests/cases/user/log4js/index.ts
new file mode 100644
index 00000000000..dbafe63e9dd
--- /dev/null
+++ b/tests/cases/user/log4js/index.ts
@@ -0,0 +1 @@
+import log4js = require("log4js");
diff --git a/tests/cases/user/log4js/package.json b/tests/cases/user/log4js/package.json
new file mode 100644
index 00000000000..1c5161081a7
--- /dev/null
+++ b/tests/cases/user/log4js/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "log4js-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "log4js": "latest"
+ }
+}
diff --git a/tests/cases/user/log4js/tsconfig.json b/tests/cases/user/log4js/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/log4js/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/mobx/index.ts b/tests/cases/user/mobx/index.ts
new file mode 100644
index 00000000000..b1cdddab88e
--- /dev/null
+++ b/tests/cases/user/mobx/index.ts
@@ -0,0 +1 @@
+import mobx = require("mobx");
diff --git a/tests/cases/user/mobx/package.json b/tests/cases/user/mobx/package.json
new file mode 100644
index 00000000000..99806321aa5
--- /dev/null
+++ b/tests/cases/user/mobx/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "mobx-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "mobx": "latest"
+ }
+}
diff --git a/tests/cases/user/mobx/tsconfig.json b/tests/cases/user/mobx/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/mobx/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/moment/index.ts b/tests/cases/user/moment/index.ts
new file mode 100644
index 00000000000..7ea0c0f0abc
--- /dev/null
+++ b/tests/cases/user/moment/index.ts
@@ -0,0 +1 @@
+import moment = require("moment");
diff --git a/tests/cases/user/moment/package.json b/tests/cases/user/moment/package.json
new file mode 100644
index 00000000000..fddf99c1c11
--- /dev/null
+++ b/tests/cases/user/moment/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "moment-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "moment": "latest"
+ }
+}
diff --git a/tests/cases/user/moment/tsconfig.json b/tests/cases/user/moment/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/moment/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/mqtt/index.ts b/tests/cases/user/mqtt/index.ts
new file mode 100644
index 00000000000..322527ef757
--- /dev/null
+++ b/tests/cases/user/mqtt/index.ts
@@ -0,0 +1 @@
+import mqtt = require("mqtt");
diff --git a/tests/cases/user/mqtt/package.json b/tests/cases/user/mqtt/package.json
new file mode 100644
index 00000000000..072c255d571
--- /dev/null
+++ b/tests/cases/user/mqtt/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "mqtt-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "mqtt": "latest"
+ }
+}
diff --git a/tests/cases/user/mqtt/tsconfig.json b/tests/cases/user/mqtt/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/mqtt/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/parse5/index.ts b/tests/cases/user/parse5/index.ts
new file mode 100644
index 00000000000..c640ea4f9cb
--- /dev/null
+++ b/tests/cases/user/parse5/index.ts
@@ -0,0 +1 @@
+import parse5 = require("parse5");
diff --git a/tests/cases/user/parse5/package.json b/tests/cases/user/parse5/package.json
new file mode 100644
index 00000000000..4b0aa84c0f3
--- /dev/null
+++ b/tests/cases/user/parse5/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "parse5-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "parse5": "latest"
+ }
+}
diff --git a/tests/cases/user/parse5/tsconfig.json b/tests/cases/user/parse5/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/parse5/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/portfinder/index.ts b/tests/cases/user/portfinder/index.ts
new file mode 100644
index 00000000000..9fafbff4adb
--- /dev/null
+++ b/tests/cases/user/portfinder/index.ts
@@ -0,0 +1 @@
+import portfinder = require("portfinder");
diff --git a/tests/cases/user/portfinder/package.json b/tests/cases/user/portfinder/package.json
new file mode 100644
index 00000000000..e7431dce9a2
--- /dev/null
+++ b/tests/cases/user/portfinder/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "portfinder-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "portfinder": "latest"
+ }
+}
diff --git a/tests/cases/user/portfinder/tsconfig.json b/tests/cases/user/portfinder/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/portfinder/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/postcss/index.ts b/tests/cases/user/postcss/index.ts
new file mode 100644
index 00000000000..e1480858fcd
--- /dev/null
+++ b/tests/cases/user/postcss/index.ts
@@ -0,0 +1 @@
+import postcss = require("postcss");
diff --git a/tests/cases/user/postcss/package.json b/tests/cases/user/postcss/package.json
new file mode 100644
index 00000000000..3c87e7357cd
--- /dev/null
+++ b/tests/cases/user/postcss/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "postcss-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "postcss": "latest"
+ }
+}
diff --git a/tests/cases/user/postcss/tsconfig.json b/tests/cases/user/postcss/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/postcss/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/protobufjs/index.ts b/tests/cases/user/protobufjs/index.ts
new file mode 100644
index 00000000000..cbbc52231d7
--- /dev/null
+++ b/tests/cases/user/protobufjs/index.ts
@@ -0,0 +1 @@
+import protobufjs = require("protobufjs");
diff --git a/tests/cases/user/protobufjs/package.json b/tests/cases/user/protobufjs/package.json
new file mode 100644
index 00000000000..20201e3728e
--- /dev/null
+++ b/tests/cases/user/protobufjs/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "protobufjs-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "protobufjs": "latest"
+ }
+}
diff --git a/tests/cases/user/protobufjs/tsconfig.json b/tests/cases/user/protobufjs/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/protobufjs/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/redux/index.ts b/tests/cases/user/redux/index.ts
new file mode 100644
index 00000000000..0475efa0567
--- /dev/null
+++ b/tests/cases/user/redux/index.ts
@@ -0,0 +1 @@
+import redux = require("redux");
diff --git a/tests/cases/user/redux/package.json b/tests/cases/user/redux/package.json
new file mode 100644
index 00000000000..c31108bcd95
--- /dev/null
+++ b/tests/cases/user/redux/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "redux-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "redux": "latest"
+ }
+}
diff --git a/tests/cases/user/redux/tsconfig.json b/tests/cases/user/redux/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/redux/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/reselect/index.ts b/tests/cases/user/reselect/index.ts
new file mode 100644
index 00000000000..ee93d241169
--- /dev/null
+++ b/tests/cases/user/reselect/index.ts
@@ -0,0 +1 @@
+import reselect = require("reselect");
diff --git a/tests/cases/user/reselect/package.json b/tests/cases/user/reselect/package.json
new file mode 100644
index 00000000000..fc335b32cc4
--- /dev/null
+++ b/tests/cases/user/reselect/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "reselect-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "reselect": "latest"
+ }
+}
diff --git a/tests/cases/user/reselect/tsconfig.json b/tests/cases/user/reselect/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/reselect/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/rxjs/index.ts b/tests/cases/user/rxjs/index.ts
new file mode 100644
index 00000000000..41418158bc5
--- /dev/null
+++ b/tests/cases/user/rxjs/index.ts
@@ -0,0 +1 @@
+import rxjs = require("rxjs");
diff --git a/tests/cases/user/rxjs/package.json b/tests/cases/user/rxjs/package.json
new file mode 100644
index 00000000000..1d006ed3c42
--- /dev/null
+++ b/tests/cases/user/rxjs/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "rxjs-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "rxjs": "latest"
+ }
+}
diff --git a/tests/cases/user/rxjs/tsconfig.json b/tests/cases/user/rxjs/tsconfig.json
new file mode 100644
index 00000000000..aa10372d8d1
--- /dev/null
+++ b/tests/cases/user/rxjs/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015", "dom"],
+ "types": []
+ }
+}
diff --git a/tests/cases/user/should/index.ts b/tests/cases/user/should/index.ts
new file mode 100644
index 00000000000..66e1a7aadfc
--- /dev/null
+++ b/tests/cases/user/should/index.ts
@@ -0,0 +1 @@
+import should = require("should");
diff --git a/tests/cases/user/should/package.json b/tests/cases/user/should/package.json
new file mode 100644
index 00000000000..8674a9f4f38
--- /dev/null
+++ b/tests/cases/user/should/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "should-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "should": "latest"
+ }
+}
diff --git a/tests/cases/user/should/tsconfig.json b/tests/cases/user/should/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/should/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/sift/index.ts b/tests/cases/user/sift/index.ts
new file mode 100644
index 00000000000..383f18d1b7d
--- /dev/null
+++ b/tests/cases/user/sift/index.ts
@@ -0,0 +1 @@
+import sift = require("sift");
diff --git a/tests/cases/user/sift/package.json b/tests/cases/user/sift/package.json
new file mode 100644
index 00000000000..344b2d73d11
--- /dev/null
+++ b/tests/cases/user/sift/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "sift-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "sift": "latest"
+ }
+}
diff --git a/tests/cases/user/sift/tsconfig.json b/tests/cases/user/sift/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/sift/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/soap/index.ts b/tests/cases/user/soap/index.ts
new file mode 100644
index 00000000000..d056570add2
--- /dev/null
+++ b/tests/cases/user/soap/index.ts
@@ -0,0 +1 @@
+import soap = require("soap");
diff --git a/tests/cases/user/soap/package.json b/tests/cases/user/soap/package.json
new file mode 100644
index 00000000000..5882bdeea5c
--- /dev/null
+++ b/tests/cases/user/soap/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "soap-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "@types/bluebird": "^3.5.17",
+ "soap": "latest"
+ }
+}
diff --git a/tests/cases/user/soap/tsconfig.json b/tests/cases/user/soap/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/soap/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/sugar/index.ts b/tests/cases/user/sugar/index.ts
new file mode 100644
index 00000000000..2f959bdf704
--- /dev/null
+++ b/tests/cases/user/sugar/index.ts
@@ -0,0 +1 @@
+import sugar = require("sugar");
diff --git a/tests/cases/user/sugar/package.json b/tests/cases/user/sugar/package.json
new file mode 100644
index 00000000000..c1708049b62
--- /dev/null
+++ b/tests/cases/user/sugar/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "sugar-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "sugar": "latest"
+ }
+}
diff --git a/tests/cases/user/sugar/tsconfig.json b/tests/cases/user/sugar/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/sugar/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/tslint/index.ts b/tests/cases/user/tslint/index.ts
new file mode 100644
index 00000000000..249b3a054f6
--- /dev/null
+++ b/tests/cases/user/tslint/index.ts
@@ -0,0 +1 @@
+import tslint = require("tslint");
\ No newline at end of file
diff --git a/tests/cases/user/tslint/package.json b/tests/cases/user/tslint/package.json
new file mode 100644
index 00000000000..41a315e5110
--- /dev/null
+++ b/tests/cases/user/tslint/package.json
@@ -0,0 +1,27 @@
+{
+ "name": "tslint-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "tslint": "latest",
+ "typescript": "latest"
+ },
+ "devDependencies": {
+ "@types/babel-code-frame": "latest",
+ "@types/chai": "latest",
+ "@types/chalk": "latest",
+ "@types/commander": "latest",
+ "@types/diff": "latest",
+ "@types/glob": "latest",
+ "@types/js-yaml": "latest",
+ "@types/minimatch": "latest",
+ "@types/mocha": "latest",
+ "@types/node": "latest",
+ "@types/resolve": "latest",
+ "@types/rimraf": "latest",
+ "@types/semver": "latest"
+ }
+}
diff --git a/tests/cases/user/tslint/tsconfig.json b/tests/cases/user/tslint/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/tslint/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/vue/index.ts b/tests/cases/user/vue/index.ts
new file mode 100644
index 00000000000..385522edcd9
--- /dev/null
+++ b/tests/cases/user/vue/index.ts
@@ -0,0 +1 @@
+import vue = require("vue");
diff --git a/tests/cases/user/vue/package.json b/tests/cases/user/vue/package.json
new file mode 100644
index 00000000000..69df82e9e0a
--- /dev/null
+++ b/tests/cases/user/vue/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "vue-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "vue": "latest"
+ }
+}
diff --git a/tests/cases/user/vue/tsconfig.json b/tests/cases/user/vue/tsconfig.json
new file mode 100644
index 00000000000..aa10372d8d1
--- /dev/null
+++ b/tests/cases/user/vue/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015", "dom"],
+ "types": []
+ }
+}
diff --git a/tests/cases/user/vuex/index.ts b/tests/cases/user/vuex/index.ts
new file mode 100644
index 00000000000..26e6c2efe19
--- /dev/null
+++ b/tests/cases/user/vuex/index.ts
@@ -0,0 +1 @@
+import vuex = require("vuex");
diff --git a/tests/cases/user/vuex/package.json b/tests/cases/user/vuex/package.json
new file mode 100644
index 00000000000..83d6c53c152
--- /dev/null
+++ b/tests/cases/user/vuex/package.json
@@ -0,0 +1,12 @@
+{
+ "name": "vuex-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "vue": "^2.5.2",
+ "vuex": "latest"
+ }
+}
diff --git a/tests/cases/user/vuex/tsconfig.json b/tests/cases/user/vuex/tsconfig.json
new file mode 100644
index 00000000000..aa10372d8d1
--- /dev/null
+++ b/tests/cases/user/vuex/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015", "dom"],
+ "types": []
+ }
+}
diff --git a/tests/cases/user/xlsx/index.ts b/tests/cases/user/xlsx/index.ts
new file mode 100644
index 00000000000..bf5e78c75a7
--- /dev/null
+++ b/tests/cases/user/xlsx/index.ts
@@ -0,0 +1 @@
+import xlsx = require("xlsx");
diff --git a/tests/cases/user/xlsx/package.json b/tests/cases/user/xlsx/package.json
new file mode 100644
index 00000000000..398ba78ff69
--- /dev/null
+++ b/tests/cases/user/xlsx/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "xlsx-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "xlsx": "latest"
+ }
+}
diff --git a/tests/cases/user/xlsx/tsconfig.json b/tests/cases/user/xlsx/tsconfig.json
new file mode 100644
index 00000000000..cd66d349e94
--- /dev/null
+++ b/tests/cases/user/xlsx/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ }
+}
\ No newline at end of file
diff --git a/tests/cases/user/xpath/index.ts b/tests/cases/user/xpath/index.ts
new file mode 100644
index 00000000000..b747fe100fb
--- /dev/null
+++ b/tests/cases/user/xpath/index.ts
@@ -0,0 +1 @@
+import xpath = require("xpath");
diff --git a/tests/cases/user/xpath/package.json b/tests/cases/user/xpath/package.json
new file mode 100644
index 00000000000..c97f1c46656
--- /dev/null
+++ b/tests/cases/user/xpath/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "xpath-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "xpath": "latest"
+ }
+}
diff --git a/tests/cases/user/xpath/tsconfig.json b/tests/cases/user/xpath/tsconfig.json
new file mode 100644
index 00000000000..aa10372d8d1
--- /dev/null
+++ b/tests/cases/user/xpath/tsconfig.json
@@ -0,0 +1,7 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015", "dom"],
+ "types": []
+ }
+}
diff --git a/tests/cases/user/zone.js/index.ts b/tests/cases/user/zone.js/index.ts
new file mode 100644
index 00000000000..533d8a07e1d
--- /dev/null
+++ b/tests/cases/user/zone.js/index.ts
@@ -0,0 +1 @@
+Zone.assertZonePatched
diff --git a/tests/cases/user/zone.js/package.json b/tests/cases/user/zone.js/package.json
new file mode 100644
index 00000000000..3828f62559e
--- /dev/null
+++ b/tests/cases/user/zone.js/package.json
@@ -0,0 +1,11 @@
+{
+ "name": "zone.js-test",
+ "version": "1.0.0",
+ "description": "",
+ "main": "index.js",
+ "author": "",
+ "license": "Apache-2.0",
+ "dependencies": {
+ "zone.js": "latest"
+ }
+}
diff --git a/tests/cases/user/zone.js/tsconfig.json b/tests/cases/user/zone.js/tsconfig.json
new file mode 100644
index 00000000000..3eff28851c6
--- /dev/null
+++ b/tests/cases/user/zone.js/tsconfig.json
@@ -0,0 +1,11 @@
+{
+ "compilerOptions": {
+ "strict": true,
+ "lib": ["es2015"],
+ "types": []
+ },
+ "files": [
+ "index.ts",
+ "node_modules/zone.js/dist/zone.js.d.ts"
+ ]
+}