diff --git a/src/harness/virtualFileSystemWithWatch.ts b/src/harness/virtualFileSystemWithWatch.ts index 13b87e1c91a..ffb1e19f653 100644 --- a/src/harness/virtualFileSystemWithWatch.ts +++ b/src/harness/virtualFileSystemWithWatch.ts @@ -11,7 +11,7 @@ interface Number { toExponential: any; } interface Object {} interface RegExp {} interface String { charAt: any; } -interface Array {}` +interface Array { length: number; [n: number]: T; }` }; export const safeList = { diff --git a/src/testRunner/tsconfig.json b/src/testRunner/tsconfig.json index e7ff655ce10..c395b05e154 100644 --- a/src/testRunner/tsconfig.json +++ b/src/testRunner/tsconfig.json @@ -93,6 +93,7 @@ "unittests/services/transpile.ts", "unittests/tsbuild/amdModulesWithOut.ts", "unittests/tsbuild/containerOnlyReferenced.ts", + "unittests/tsbuild/demo.ts", "unittests/tsbuild/emptyFiles.ts", "unittests/tsbuild/graphOrdering.ts", "unittests/tsbuild/inferredTypeFromTransitiveModule.ts", diff --git a/src/testRunner/unittests/tsbuild/demo.ts b/src/testRunner/unittests/tsbuild/demo.ts new file mode 100644 index 00000000000..ae34f033b79 --- /dev/null +++ b/src/testRunner/unittests/tsbuild/demo.ts @@ -0,0 +1,80 @@ +namespace ts { + describe("unittests:: tsbuild:: on demo project", () => { + let projFs: vfs.FileSystem; + const { time } = getTime(); + + before(() => { + projFs = loadProjectFromDisk("tests/projects/demo", time); + }); + + after(() => { + projFs = undefined!; // Release the contents + }); + + function coreOutputs(): string[] { + return [ + "/src/lib/core/utilities.js", + "/src/lib/core/utilities.d.ts", + "/src/lib/core/tsconfig.tsbuildinfo" + ]; + } + + function animalOutputs(): string[] { + return [ + "/src/lib/animals/animal.js", + "/src/lib/animals/animal.d.ts", + "/src/lib/animals/index.js", + "/src/lib/animals/index.d.ts", + "/src/lib/animals/dog.js", + "/src/lib/animals/dog.d.ts", + "/src/lib/animals/tsconfig.tsbuildinfo" + ]; + } + + function zooOutputs(): string[] { + return [ + "/src/lib/zoo/zoo.js", + "/src/lib/zoo/zoo.d.ts", + "/src/lib/zoo/tsconfig.tsbuildinfo" + ]; + } + + interface VerifyBuild { + modifyDiskLayout: (fs: vfs.FileSystem) => void; + expectedExitStatus: ExitStatus; + expectedDiagnostics: fakes.ExpectedDiagnostic[]; + expectedOutputs: readonly string[]; + notExpectedOutputs: readonly string[]; + } + + function verifyBuild({ modifyDiskLayout, expectedExitStatus, expectedDiagnostics, expectedOutputs, notExpectedOutputs }: VerifyBuild) { + const fs = projFs.shadow(); + const host = new fakes.SolutionBuilderHost(fs); + modifyDiskLayout(fs); + const builder = createSolutionBuilder(host, ["/src/tsconfig.json"], { verbose: true }); + const exitStatus = builder.build(); + assert.equal(exitStatus, expectedExitStatus); + host.assertDiagnosticMessages(...expectedDiagnostics); + verifyOutputsPresent(fs, expectedOutputs); + verifyOutputsAbsent(fs, notExpectedOutputs); + } + + it("in master branch with everything setup correctly, reports no error", () => { + verifyBuild({ + modifyDiskLayout: noop, + expectedExitStatus: ExitStatus.Success, + expectedDiagnostics: [ + getExpectedDiagnosticForProjectsInBuild("src/core/tsconfig.json", "src/animals/tsconfig.json", "src/zoo/tsconfig.json", "src/tsconfig.json"), + [Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, "src/core/tsconfig.json", "src/lib/core/utilities.js"], + [Diagnostics.Building_project_0, "/src/core/tsconfig.json"], + [Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, "src/animals/tsconfig.json", "src/lib/animals/animal.js"], + [Diagnostics.Building_project_0, "/src/animals/tsconfig.json"], + [Diagnostics.Project_0_is_out_of_date_because_output_file_1_does_not_exist, "src/zoo/tsconfig.json", "src/lib/zoo/zoo.js"], + [Diagnostics.Building_project_0, "/src/zoo/tsconfig.json"] + ], + expectedOutputs: [...coreOutputs(), ...animalOutputs(), ...zooOutputs()], + notExpectedOutputs: emptyArray + }); + }); + }); +} diff --git a/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/incremental-declaration-changes/inferred-type-from-transitive-module.js b/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/incremental-declaration-changes/inferred-type-from-transitive-module.js index c9334a7bcc9..0c32ba7c167 100644 --- a/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/incremental-declaration-changes/inferred-type-from-transitive-module.js +++ b/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/incremental-declaration-changes/inferred-type-from-transitive-module.js @@ -31,8 +31,8 @@ export declare const lazyBar: LazyAction<() => void, typeof import("./lazyIndex" "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../bar.ts": { "version": "747071916", diff --git a/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/initial-Build/inferred-type-from-transitive-module.js b/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/initial-Build/inferred-type-from-transitive-module.js index 88e0b710bb4..2a6aee9c8db 100644 --- a/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/initial-Build/inferred-type-from-transitive-module.js +++ b/tests/baselines/reference/tsbuild/inferredTypeFromTransitiveModule/initial-Build/inferred-type-from-transitive-module.js @@ -69,8 +69,8 @@ exports.bar = bar_1.default; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../bar.ts": { "version": "5936740878", diff --git a/tests/baselines/reference/tsbuild/lateBoundSymbol/incremental-declaration-doesnt-change/interface-is-merged-and-contains-late-bound-member.js b/tests/baselines/reference/tsbuild/lateBoundSymbol/incremental-declaration-doesnt-change/interface-is-merged-and-contains-late-bound-member.js index bfd580e9a99..84fe88219b1 100644 --- a/tests/baselines/reference/tsbuild/lateBoundSymbol/incremental-declaration-doesnt-change/interface-is-merged-and-contains-late-bound-member.js +++ b/tests/baselines/reference/tsbuild/lateBoundSymbol/incremental-declaration-doesnt-change/interface-is-merged-and-contains-late-bound-member.js @@ -22,8 +22,8 @@ type A = HKT[typeof sym]; "program": { "fileInfos": { "../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "./src/globals.d.ts": { "version": "-1994196675", diff --git a/tests/baselines/reference/tsbuild/lateBoundSymbol/initial-Build/interface-is-merged-and-contains-late-bound-member.js b/tests/baselines/reference/tsbuild/lateBoundSymbol/initial-Build/interface-is-merged-and-contains-late-bound-member.js index d1e15d4ca99..afb887c35f8 100644 --- a/tests/baselines/reference/tsbuild/lateBoundSymbol/initial-Build/interface-is-merged-and-contains-late-bound-member.js +++ b/tests/baselines/reference/tsbuild/lateBoundSymbol/initial-Build/interface-is-merged-and-contains-late-bound-member.js @@ -15,8 +15,8 @@ var x = 10; "program": { "fileInfos": { "../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "./src/globals.d.ts": { "version": "-1994196675", diff --git a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/sample.js b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/sample.js index cc92be46021..be4e09ba5b5 100644 --- a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/sample.js +++ b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/sample.js @@ -172,8 +172,8 @@ export class someClass { } "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "./anothermodule.ts": { "version": "-2676574883", @@ -212,8 +212,8 @@ export class someClass { } "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../core/index.ts": { "version": "-2069755619", @@ -262,8 +262,8 @@ export class someClass { } "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../core/index.ts": { "version": "-2069755619", diff --git a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-declaration-option-changes.js b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-declaration-option-changes.js index d58354590cb..bf28ddcc386 100644 --- a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-declaration-option-changes.js +++ b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-declaration-option-changes.js @@ -21,8 +21,8 @@ export declare function multiply(a: number, b: number): number; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "./anothermodule.ts": { "version": "-2676574883", diff --git a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-esModuleInterop-option-changes.js b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-esModuleInterop-option-changes.js index 28c559ee72a..e93ed540970 100644 --- a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-esModuleInterop-option-changes.js +++ b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-esModuleInterop-option-changes.js @@ -37,8 +37,8 @@ exports.m = mod; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../core/index.ts": { "version": "-13851440507", diff --git a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-logic-config-changes-declaration-dir.js b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-logic-config-changes-declaration-dir.js index feefdf8f816..13204cdf566 100644 --- a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-logic-config-changes-declaration-dir.js +++ b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-logic-config-changes-declaration-dir.js @@ -25,8 +25,8 @@ export declare const m: typeof mod; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../core/index.ts": { "version": "-13851440507", @@ -76,8 +76,8 @@ export declare const m: typeof mod; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../core/index.ts": { "version": "-13851440507", diff --git a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-module-option-changes.js b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-module-option-changes.js index a73ad73c155..bda1af5741c 100644 --- a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-module-option-changes.js +++ b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-module-option-changes.js @@ -31,8 +31,8 @@ define(["require", "exports"], function (require, exports) { "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "./anothermodule.ts": { "version": "-2676574883", diff --git a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-target-option-changes.js b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-target-option-changes.js index 8e740f6a235..99721cc54b9 100644 --- a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-target-option-changes.js +++ b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-changes/when-target-option-changes.js @@ -33,8 +33,8 @@ exports.multiply = multiply; "signature": "8926001564" }, "../../lib/lib.esnext.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "./anothermodule.ts": { "version": "-2676574883", diff --git a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-doesnt-change/sample.js b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-doesnt-change/sample.js index ed2fb38595b..2b4b56abbf8 100644 --- a/tests/baselines/reference/tsbuild/sample1/incremental-declaration-doesnt-change/sample.js +++ b/tests/baselines/reference/tsbuild/sample1/incremental-declaration-doesnt-change/sample.js @@ -25,8 +25,8 @@ class someClass { } "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "./anothermodule.ts": { "version": "-2676574883", diff --git a/tests/baselines/reference/tsbuild/sample1/initial-Build/sample.js b/tests/baselines/reference/tsbuild/sample1/initial-Build/sample.js index 75e23dfa0af..829dbe1718f 100644 --- a/tests/baselines/reference/tsbuild/sample1/initial-Build/sample.js +++ b/tests/baselines/reference/tsbuild/sample1/initial-Build/sample.js @@ -185,8 +185,8 @@ exports.multiply = multiply; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "./anothermodule.ts": { "version": "-2676574883", @@ -370,8 +370,8 @@ sourceFile:index.ts "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../core/index.ts": { "version": "-13851440507", @@ -436,8 +436,8 @@ exports.m = mod; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../core/index.ts": { "version": "-13851440507", diff --git a/tests/baselines/reference/tsbuild/sample1/initial-Build/when-declaration-option-changes.js b/tests/baselines/reference/tsbuild/sample1/initial-Build/when-declaration-option-changes.js index 8a66ec9da1f..7c05255bfd1 100644 --- a/tests/baselines/reference/tsbuild/sample1/initial-Build/when-declaration-option-changes.js +++ b/tests/baselines/reference/tsbuild/sample1/initial-Build/when-declaration-option-changes.js @@ -27,8 +27,8 @@ exports.multiply = multiply; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "./anothermodule.ts": { "version": "-2676574883", diff --git a/tests/baselines/reference/tsbuild/sample1/initial-Build/when-esModuleInterop-option-changes.js b/tests/baselines/reference/tsbuild/sample1/initial-Build/when-esModuleInterop-option-changes.js index b6f0b53b89c..998c09d4710 100644 --- a/tests/baselines/reference/tsbuild/sample1/initial-Build/when-esModuleInterop-option-changes.js +++ b/tests/baselines/reference/tsbuild/sample1/initial-Build/when-esModuleInterop-option-changes.js @@ -35,8 +35,8 @@ exports.multiply = multiply; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "./anothermodule.ts": { "version": "-2676574883", @@ -96,8 +96,8 @@ exports.m = mod; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../core/index.ts": { "version": "-13851440507", @@ -178,8 +178,8 @@ exports.m = mod; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../core/index.ts": { "version": "-13851440507", diff --git a/tests/baselines/reference/tsbuild/sample1/initial-Build/when-logic-config-changes-declaration-dir.js b/tests/baselines/reference/tsbuild/sample1/initial-Build/when-logic-config-changes-declaration-dir.js index 75e23dfa0af..829dbe1718f 100644 --- a/tests/baselines/reference/tsbuild/sample1/initial-Build/when-logic-config-changes-declaration-dir.js +++ b/tests/baselines/reference/tsbuild/sample1/initial-Build/when-logic-config-changes-declaration-dir.js @@ -185,8 +185,8 @@ exports.multiply = multiply; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "./anothermodule.ts": { "version": "-2676574883", @@ -370,8 +370,8 @@ sourceFile:index.ts "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../core/index.ts": { "version": "-13851440507", @@ -436,8 +436,8 @@ exports.m = mod; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../core/index.ts": { "version": "-13851440507", diff --git a/tests/baselines/reference/tsbuild/sample1/initial-Build/when-logic-specifies-tsBuildInfoFile.js b/tests/baselines/reference/tsbuild/sample1/initial-Build/when-logic-specifies-tsBuildInfoFile.js index f419af6508a..5dab84c64ac 100644 --- a/tests/baselines/reference/tsbuild/sample1/initial-Build/when-logic-specifies-tsBuildInfoFile.js +++ b/tests/baselines/reference/tsbuild/sample1/initial-Build/when-logic-specifies-tsBuildInfoFile.js @@ -185,8 +185,8 @@ exports.multiply = multiply; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "./anothermodule.ts": { "version": "-2676574883", @@ -370,8 +370,8 @@ sourceFile:index.ts "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../core/index.ts": { "version": "-13851440507", @@ -453,8 +453,8 @@ exports.m = mod; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../core/index.ts": { "version": "-13851440507", diff --git a/tests/baselines/reference/tsbuild/sample1/initial-Build/when-module-option-changes.js b/tests/baselines/reference/tsbuild/sample1/initial-Build/when-module-option-changes.js index 54e0f764dac..abc90d83d09 100644 --- a/tests/baselines/reference/tsbuild/sample1/initial-Build/when-module-option-changes.js +++ b/tests/baselines/reference/tsbuild/sample1/initial-Build/when-module-option-changes.js @@ -27,8 +27,8 @@ exports.multiply = multiply; "program": { "fileInfos": { "../../lib/lib.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "./anothermodule.ts": { "version": "-2676574883", diff --git a/tests/baselines/reference/tsbuild/sample1/initial-Build/when-target-option-changes.js b/tests/baselines/reference/tsbuild/sample1/initial-Build/when-target-option-changes.js index c31d39c0647..74efec1e633 100644 --- a/tests/baselines/reference/tsbuild/sample1/initial-Build/when-target-option-changes.js +++ b/tests/baselines/reference/tsbuild/sample1/initial-Build/when-target-option-changes.js @@ -13,7 +13,7 @@ interface Number { toExponential: any; } interface Object {} interface RegExp {} interface String { charAt: any; } -interface Array {} +interface Array { length: number; [n: number]: T; } interface ReadonlyArray {} declare const console: { log(msg: any): void; }; @@ -46,8 +46,8 @@ export function multiply(a, b) { return a * b; } "program": { "fileInfos": { "../../lib/lib.esnext.d.ts": { - "version": "-15964756381", - "signature": "-15964756381" + "version": "3858781397", + "signature": "3858781397" }, "../../lib/lib.esnext.full.d.ts": { "version": "8926001564", diff --git a/tests/projects/demo/animals/animal.ts b/tests/projects/demo/animals/animal.ts new file mode 100644 index 00000000000..30727d46489 --- /dev/null +++ b/tests/projects/demo/animals/animal.ts @@ -0,0 +1,4 @@ +export type Size = "small" | "medium" | "large"; +export default interface Animal { + size: Size; +} diff --git a/tests/projects/demo/animals/dog.ts b/tests/projects/demo/animals/dog.ts new file mode 100644 index 00000000000..3e51978e7f0 --- /dev/null +++ b/tests/projects/demo/animals/dog.ts @@ -0,0 +1,18 @@ +import Animal from '.'; +import { makeRandomName } from '../core/utilities'; + +export interface Dog extends Animal { + woof(): void; + name: string; +} + +export function createDog(): Dog { + return ({ + size: "medium", + woof: function(this: Dog) { + console.log(`${this.name} says "Woof"!`); + }, + name: makeRandomName() + }); +} + diff --git a/tests/projects/demo/animals/index.ts b/tests/projects/demo/animals/index.ts new file mode 100644 index 00000000000..9d4734f2eb7 --- /dev/null +++ b/tests/projects/demo/animals/index.ts @@ -0,0 +1,5 @@ +import Animal from './animal'; + +export default Animal; +import { createDog, Dog } from './dog'; +export { createDog, Dog }; diff --git a/tests/projects/demo/animals/tsconfig.json b/tests/projects/demo/animals/tsconfig.json new file mode 100644 index 00000000000..f6b2cc49e44 --- /dev/null +++ b/tests/projects/demo/animals/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig-base.json", + "compilerOptions": { + "outDir": "../lib/animals", + "rootDir": ".", + }, + "references": [ + { "path": "../core" } + ] +} diff --git a/tests/projects/demo/core/tsconfig.json b/tests/projects/demo/core/tsconfig.json new file mode 100644 index 00000000000..9b381b9a5cf --- /dev/null +++ b/tests/projects/demo/core/tsconfig.json @@ -0,0 +1,7 @@ +{ + "extends": "../tsconfig-base.json", + "compilerOptions": { + "outDir": "../lib/core", + "rootDir": "." + } +} \ No newline at end of file diff --git a/tests/projects/demo/core/utilities.ts b/tests/projects/demo/core/utilities.ts new file mode 100644 index 00000000000..0988afaf4c3 --- /dev/null +++ b/tests/projects/demo/core/utilities.ts @@ -0,0 +1,10 @@ + +export function makeRandomName() { + return "Bob!?! "; +} + +export function lastElementOf(arr: T[]): T | undefined { + if (arr.length === 0) return undefined; + return arr[arr.length - 1]; +} + diff --git a/tests/projects/demo/tsconfig-base.json b/tests/projects/demo/tsconfig-base.json new file mode 100644 index 00000000000..e5d5ba5c7ce --- /dev/null +++ b/tests/projects/demo/tsconfig-base.json @@ -0,0 +1,13 @@ +{ + "compilerOptions": { + "declaration": true, + "target": "es5", + "module": "commonjs", + "strict": true, + "noUnusedLocals": true, + "noUnusedParameters": true, + "noImplicitReturns": true, + "noFallthroughCasesInSwitch": true, + "composite": true + } +} \ No newline at end of file diff --git a/tests/projects/demo/tsconfig.json b/tests/projects/demo/tsconfig.json new file mode 100644 index 00000000000..a140d4ef8e2 --- /dev/null +++ b/tests/projects/demo/tsconfig.json @@ -0,0 +1,14 @@ +{ + "files": [], + "references": [ + { + "path": "./core" + }, + { + "path": "./animals" + }, + { + "path": "./zoo" + } + ] +} \ No newline at end of file diff --git a/tests/projects/demo/zoo/tsconfig.json b/tests/projects/demo/zoo/tsconfig.json new file mode 100644 index 00000000000..318c0dc06b6 --- /dev/null +++ b/tests/projects/demo/zoo/tsconfig.json @@ -0,0 +1,12 @@ +{ + "extends": "../tsconfig-base.json", + "compilerOptions": { + "outDir": "../lib/zoo", + "rootDir": "." + }, + "references": [ + { + "path": "../animals" + } + ] +} \ No newline at end of file diff --git a/tests/projects/demo/zoo/zoo.ts b/tests/projects/demo/zoo/zoo.ts new file mode 100644 index 00000000000..a00ad8a79e4 --- /dev/null +++ b/tests/projects/demo/zoo/zoo.ts @@ -0,0 +1,9 @@ +// import Animal from '../animals/index'; +import { Dog, createDog } from '../animals/index'; + +export function createZoo(): Array { + return [ + createDog() + ]; +} +