Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
74 commits
Select commit Hold shift + click to select a range
a3b5207
Use fixed time for vfs so baselining is consistent
sheetalkamat Apr 13, 2022
c20613f
Baseline buildinfos
sheetalkamat Apr 13, 2022
c79af2c
Write new file text in baseline even if the file wasnt read on the sh…
sheetalkamat Apr 14, 2022
40a8c7f
Remove unnecessary debugger statement
sheetalkamat Apr 15, 2022
7377470
Make sure that incremental correctness is checked with correct writeF…
sheetalkamat Apr 15, 2022
c206ff0
More baselines for the tsbuildinfo
sheetalkamat Apr 19, 2022
fc91aff
If we are writing dts file and have used file text as version, we can…
sheetalkamat Apr 13, 2022
396e6c8
Make WriteFileCallback Api ready for future
sheetalkamat Apr 14, 2022
7084221
Assert that there is only single source file when emitting d.ts file
sheetalkamat Apr 15, 2022
5f02cf3
Add test
sheetalkamat Apr 5, 2022
c984298
Renames
sheetalkamat Apr 6, 2022
e4bf58a
More refactoring
sheetalkamat Apr 6, 2022
87a7112
If we are updating dts of any of the file and it affects global scope…
sheetalkamat Apr 6, 2022
16cef4a
Stacktrace optimization for getModified time in anticipation of using…
sheetalkamat Mar 16, 2022
7e65cd3
Baseline getModifiedTime, setModifiedTime, fileExits and directoryExi…
sheetalkamat Apr 5, 2022
0ff8cb3
Remove unnecessary write file finger print code since its not used at…
sheetalkamat Mar 16, 2022
59ad6ef
Use modified time instead of file existence check
sheetalkamat Apr 11, 2022
c8327da
Remove unnecessary getModifiedTime
sheetalkamat Mar 17, 2022
7817fbf
No need to check for file existence before reading the d.ts file
sheetalkamat Mar 17, 2022
cb7aca3
Do project reference errors before doing input/output file checks
sheetalkamat Mar 21, 2022
dd96e33
Dont call getModifiedTimes if dts change
sheetalkamat Mar 28, 2022
89d2d4c
Passdown modified time if queried
sheetalkamat Mar 15, 2022
6e0c916
Use modified time passed through the file watching in tsbuild
sheetalkamat Mar 18, 2022
e6a3ee8
Handle force build as separate upto date status
sheetalkamat Mar 29, 2022
7cb0f40
uptodate status worker to read buildinfo and use it to determine upto…
sheetalkamat Apr 7, 2022
1a8abac
No need to update output timestamps if buildinfo will determine uptod…
sheetalkamat Apr 11, 2022
59f2b5c
Store change file set instead of hasPendingChange to be able to reuse…
sheetalkamat Apr 5, 2022
5c12067
Add test that shows input file is not present
sheetalkamat Apr 7, 2022
7734528
No need to check input time stamp before buildinfo
sheetalkamat Apr 7, 2022
6198fa3
Keep buildinfos for lifetime of the solution builder and project
sheetalkamat Apr 8, 2022
fcf07f8
Store modified time along with text of buildinfo
sheetalkamat Apr 8, 2022
2f2e370
Non composite projects dont need to track declaration change time
sheetalkamat Apr 12, 2022
15fe24e
Pass through buildInfo so we dont have to parse it back
sheetalkamat Apr 14, 2022
dc21283
Save dts change time in buildinfo itself
sheetalkamat Apr 12, 2022
5bccee8
Store dts time for --out in the buildInfo
sheetalkamat Apr 15, 2022
62c687b
Store hash of text in the bundle info so it can be verified before ma…
sheetalkamat Apr 19, 2022
128008a
Since buildinfo is cached no need to maintain version check state
sheetalkamat Apr 19, 2022
4fb6773
Store output time stamps for non incremental builds
sheetalkamat Apr 19, 2022
7e1e9d7
Revert "Baseline getModifiedTime, setModifiedTime, fileExits and dire…
sheetalkamat Apr 5, 2022
cb73874
Change verbose messages for upto date status
sheetalkamat Apr 19, 2022
d8d8609
Merge branch 'main' into timestamps
sheetalkamat Apr 20, 2022
0f7903d
Reconcile reusable builder state and builder state so there are not t…
sheetalkamat Apr 20, 2022
82fb56b
Cleanup impliedFormat
sheetalkamat Apr 20, 2022
7785a87
Cleanup
sheetalkamat Apr 20, 2022
a95d3cc
Cleanup noEmit option
sheetalkamat Apr 20, 2022
437619e
BuildInfo options emit as a flag
sheetalkamat Apr 20, 2022
b568d7e
Factor out types for program written in buildinfo with and without bu…
sheetalkamat Apr 20, 2022
78ba778
No need to store output file stamps if not in watch mode
sheetalkamat Apr 20, 2022
10728b4
Cleanup
sheetalkamat Apr 20, 2022
5492949
Test for single watch per file
sheetalkamat Apr 20, 2022
70069d2
Fix emit and error update baselines that were duplicate
sheetalkamat Apr 21, 2022
21a6806
More refactoring
sheetalkamat Apr 21, 2022
b32d2eb
Only copy emit state fields when backing up to restore if emit fails
sheetalkamat Apr 21, 2022
26e7cb6
Merge branch 'main' into timestamps
sheetalkamat Apr 22, 2022
303824e
Instead of maintaining delta of changes, maintain old state for those…
sheetalkamat Apr 26, 2022
643576c
Merge branch 'main' into timestamps
sheetalkamat Apr 27, 2022
7810c56
Add test to verify build when input file does not change
sheetalkamat Apr 29, 2022
28a9ff3
If version of the input file does not change, dont mark as out of date
sheetalkamat Apr 29, 2022
929ddad
Merge branch 'main' into timestamps
sheetalkamat Apr 29, 2022
5d31847
Disable lint warning as build fails without the assert
sheetalkamat Apr 29, 2022
fa1068e
Merge branch 'main' into timestamps
sheetalkamat May 6, 2022
94e7e43
Merge branch 'main' into timestamps
sheetalkamat May 24, 2022
7593eee
Merge branch 'main' into timestamps
sheetalkamat May 27, 2022
405d8e9
Report aggregate statistics for solution as well as some solution per…
sheetalkamat May 27, 2022
fe69264
Merge branch 'main' into timestamps
sheetalkamat Jun 1, 2022
0cf9e30
Options solutionDiagnostics instead so that its not too verbose when …
sheetalkamat Jun 1, 2022
e4e6672
When tsc --build --clean, only remove tsbuildinfo if its incremental …
sheetalkamat Jun 2, 2022
842de49
Merge branch 'main' into timestamps
sheetalkamat Jun 6, 2022
5c07c77
Revert "Options solutionDiagnostics instead so that its not too verbo…
sheetalkamat Jun 7, 2022
31427f6
Revert "Report aggregate statistics for solution as well as some solu…
sheetalkamat Jun 7, 2022
0f898f2
Merge branch 'main' into timestamps
sheetalkamat Jun 7, 2022
5cd883a
Revert "When tsc --build --clean, only remove tsbuildinfo if its incr…
sheetalkamat Jun 7, 2022
5cd5d57
Comments in the code
sheetalkamat Jun 7, 2022
624c182
Feedback
sheetalkamat Jun 8, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
Use fixed time for vfs so baselining is consistent
  • Loading branch information
sheetalkamat committed Apr 18, 2022
commit a3b5207fb8c49b9ff200ef6378f07830b2dfd224
22 changes: 10 additions & 12 deletions src/harness/vfsUtil.ts
Original file line number Diff line number Diff line change
Expand Up @@ -55,12 +55,12 @@ namespace vfs {
} = {};

private _cwd: string; // current working directory
private _time: number | Date | (() => number | Date);
Comment thread
sheetalkamat marked this conversation as resolved.
Outdated
private _time: number;
private _shadowRoot: FileSystem | undefined;
private _dirStack: string[] | undefined;

constructor(ignoreCase: boolean, options: FileSystemOptions = {}) {
const { time = -1, files, meta } = options;
const { time = ts.TestFSWithWatch.timeIncrements, files, meta } = options;
this.ignoreCase = ignoreCase;
this.stringComparer = this.ignoreCase ? vpath.compareCaseInsensitive : vpath.compareCaseSensitive;
this._time = time;
Expand Down Expand Up @@ -167,16 +167,15 @@ namespace vfs {
*
* @link http://pubs.opengroup.org/onlinepubs/9699919799/functions/time.html
*/
public time(value?: number | Date | (() => number | Date)): number {
if (value !== undefined && this.isReadonly) throw createIOError("EPERM");
let result = this._time;
if (typeof result === "function") result = result();
if (typeof result === "object") result = result.getTime();
if (result === -1) result = Date.now();
public time(value?: number): number {
if (value !== undefined) {
if (this.isReadonly) throw createIOError("EPERM");
this._time = value;
}
return result;
else if (!this.isReadonly) {
this._time += ts.TestFSWithWatch.timeIncrements;
}
return this._time;
}

/**
Expand Down Expand Up @@ -1172,9 +1171,8 @@ namespace vfs {
}

export interface FileSystemOptions {
// Sets the initial timestamp for new files and directories, or the function used
// to calculate timestamps.
time?: number | Date | (() => number | Date);
// Sets the initial timestamp for new files and directories
time?: number;

// A set of file system entries to initially add to the file system.
files?: FileSet;
Expand Down
2 changes: 1 addition & 1 deletion src/harness/virtualFileSystemWithWatch.ts
Original file line number Diff line number Diff line change
Expand Up @@ -360,7 +360,7 @@ interface Array<T> { length: number; [n: number]: T; }`
DynamicPolling = "RecursiveDirectoryUsingDynamicPriorityPolling"
}

const timeIncrements = 1000;
export const timeIncrements = 1000;
export interface TestServerHostOptions {
useCaseSensitiveFileNames: boolean;
executingFilePath: string;
Expand Down
63 changes: 5 additions & 58 deletions src/testRunner/unittests/tsbuild/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -78,26 +78,6 @@ namespace ts {
};
}

export function getTime() {
let currentTime = 100;
return { tick, time, touch };

function tick() {
currentTime += 60_000;
}

function time() {
return currentTime;
}

function touch(fs: vfs.FileSystem, path: string) {
if (!fs.statSync(path).isFile()) {
throw new Error(`File ${path} does not exist`);
}
fs.utimesSync(path, new Date(time()), new Date(time()));
}
}

export const libContent = `${TestFSWithWatch.libFile.content}
interface ReadonlyArray<T> {}
declare const console: { log(msg: any): void; };`;
Expand Down Expand Up @@ -154,26 +134,6 @@ interface Symbol {
fs.makeReadonly();
}

/**
* Gets the FS mountuing existing fs's /src and /lib folder
*/
export function getFsWithTime(baseFs: vfs.FileSystem) {
const { time, tick } = getTime();
const host = new fakes.System(baseFs) as any as vfs.FileSystemResolverHost;
host.getWorkspaceRoot = notImplemented;
const resolver = vfs.createResolver(host);
const fs = new vfs.FileSystem(/*ignoreCase*/ true, {
files: {
["/src"]: new vfs.Mount("/src", resolver),
["/lib"]: new vfs.Mount("/lib", resolver)
},
cwd: "/",
meta: { defaultLibLocation: "/lib" },
time
});
return { fs, time, tick };
}

export function verifyOutputsPresent(fs: vfs.FileSystem, outputs: readonly string[]) {
for (const output of outputs) {
assert(fs.existsSync(output), `Expect file ${output} to exist`);
Expand Down Expand Up @@ -336,7 +296,6 @@ interface Symbol {
commandLineArgs: TestTscCompile["commandLineArgs"];
modifyFs: TestTscCompile["modifyFs"];
editFs: TestTscEdit["modifyFs"];
tick: () => void;
baseFs: vfs.FileSystem;
newSys: TscCompileSystem;
cleanBuildDiscrepancies: TestTscEdit["cleanBuildDiscrepancies"];
Expand All @@ -347,15 +306,14 @@ interface Symbol {
const {
scenario, commandLineArgs, cleanBuildDiscrepancies,
modifyFs, editFs,
tick, baseFs, newSys
baseFs, newSys
} = input();
const sys = testTscCompile({
scenario,
subScenario,
fs: () => baseFs.makeReadonly(),
commandLineArgs,
modifyFs: fs => {
tick();
if (modifyFs) modifyFs(fs);
editFs(fs);
},
Expand Down Expand Up @@ -532,22 +490,18 @@ interface Symbol {
edits
}: VerifyTscWithEditsWorkerInput) {
describe(`tsc ${commandLineArgs.join(" ")} ${scenario}:: ${subScenario} serializedEdits`, () => {
let tick: () => void;
let sys: TscCompileSystem;
let baseFs: vfs.FileSystem;
let editsSys: TscCompileSystem[];
before(() => {
Debug.assert(!!edits.length, `${scenario}/${subScenario}:: No incremental scenarios, you probably want to use verifyTsc instead.`);
({ fs: baseFs, tick } = getFsWithTime(fs()));
baseFs = fs().makeReadonly();
sys = testTscCompile({
scenario,
subScenario,
fs: () => baseFs.makeReadonly(),
fs: () => baseFs,
commandLineArgs,
modifyFs: fs => {
if (modifyFs) modifyFs(fs);
tick();
},
modifyFs,
baselineSourceMap,
baselineReadFileCalls,
baselinePrograms
Expand All @@ -556,18 +510,13 @@ interface Symbol {
{ modifyFs, subScenario: editScenario, commandLineArgs: editCommandLineArgs },
index
) => {
tick();
(editsSys || (editsSys = [])).push(testTscCompile({
scenario,
subScenario: editScenario || subScenario,
diffWithInitial: true,
fs: () => index === 0 ? sys.vfs : editsSys[index - 1].vfs,
commandLineArgs: editCommandLineArgs || commandLineArgs,
modifyFs: fs => {
tick();
modifyFs(fs);
tick();
},
modifyFs,
baselineSourceMap,
baselineReadFileCalls,
baselinePrograms
Expand All @@ -577,7 +526,6 @@ interface Symbol {
after(() => {
baseFs = undefined!;
sys = undefined!;
tick = undefined!;
editsSys = undefined!;
});
describe("tsc invocation after edit", () => {
Expand Down Expand Up @@ -608,7 +556,6 @@ interface Symbol {
}
},
modifyFs,
tick
}), index, subScenario));
});
});
Expand Down
12 changes: 4 additions & 8 deletions src/testRunner/unittests/tsbuild/outFile.ts
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,6 @@ namespace ts {
outFileWithBuildFs = undefined!;
});

function createSolutionBuilder(host: fakes.SolutionBuilderHost, baseOptions?: BuildOptions) {
return ts.createSolutionBuilder(host, ["/src/third"], { dry: false, force: false, verbose: true, ...(baseOptions || {}) });
}

interface VerifyOutFileScenarioInput {
subScenario: string;
modifyFs?: (fs: vfs.FileSystem) => void;
Expand Down Expand Up @@ -109,7 +105,7 @@ namespace ts {
if (outFileWithBuildFs) return outFileWithBuildFs;
const fs = outFileFs.shadow();
const host = fakes.SolutionBuilderHost.create(fs);
const builder = createSolutionBuilder(host);
const builder = createSolutionBuilder(host, ["/src/third"], { dry: false, force: false, verbose: true });
builder.build();
fs.makeReadonly();
return outFileWithBuildFs = fs;
Expand Down Expand Up @@ -147,7 +143,7 @@ namespace ts {
compile: sys => {
// Buildinfo will have version which does not match with current ts version
const buildHost = createSolutionBuilderHostForBaseline(sys, "FakeTSCurrentVersion");
const builder = ts.createSolutionBuilder(buildHost, ["/src/third"], { verbose: true });
const builder = createSolutionBuilder(buildHost, ["/src/third"], { verbose: true });
sys.exit(builder.build());
}
});
Expand Down Expand Up @@ -181,7 +177,7 @@ namespace ts {
commandLineArgs: ["--build", "/src/second/tsconfig.json"],
compile: sys => {
const buildHost = createSolutionBuilderHostForBaseline(sys);
const builder = ts.createSolutionBuilder(buildHost, ["/src/third/tsconfig.json"], {});
const builder = createSolutionBuilder(buildHost, ["/src/third/tsconfig.json"], {});
sys.exit(builder.build("/src/second/tsconfig.json"));
}
});
Expand All @@ -193,7 +189,7 @@ namespace ts {
commandLineArgs: ["--build", "--clean", "/src/second/tsconfig.json"],
compile: sys => {
const buildHost = createSolutionBuilderHostForBaseline(sys);
const builder = ts.createSolutionBuilder(buildHost, ["/src/third/tsconfig.json"], { verbose: true });
const builder = createSolutionBuilder(buildHost, ["/src/third/tsconfig.json"], { verbose: true });
sys.exit(builder.clean("/src/second/tsconfig.json"));
}
});
Expand Down
6 changes: 2 additions & 4 deletions src/testRunner/unittests/tsbuild/publicApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ namespace ts {
describe("unittests:: tsbuild:: Public API with custom transformers when passed to build", () => {
let sys: TscCompileSystem;
before(() => {
const initialFs = getFsWithTime(loadProjectFromFiles({
const inputFs = loadProjectFromFiles({
"/src/tsconfig.json": JSON.stringify({
references: [
{ path: "./shared/tsconfig.json" },
Expand All @@ -29,9 +29,7 @@ export class c2 { }
export enum e2 { }
// leading
export function f22() { } // trailing`,
})).fs.makeReadonly();
const inputFs = initialFs.shadow();
inputFs.makeReadonly();
}).makeReadonly();
const fs = inputFs.shadow();

// Create system
Expand Down
2 changes: 1 addition & 1 deletion src/testRunner/unittests/tsc/helpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ ${patch ? vfs.formatPatch(patch) : ""}`
describe(input.subScenario, () => {
verifyTscBaseline(() => verifier({
...input,
fs: () => getFsWithTime(input.fs()).fs.makeReadonly()
fs: () => input.fs().makeReadonly()
}));
});
});
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,17 +69,17 @@ const globalConst = 10;

Output::
/lib/tsc --b /src/app --verbose
[12:01:00 AM] Projects in this build:
[12:00:06 AM] Projects in this build:
* src/lib/tsconfig.json
* src/app/tsconfig.json

[12:01:00 AM] Project 'src/lib/tsconfig.json' is out of date because output file 'src/lib/module.js' does not exist
[12:00:07 AM] Project 'src/lib/tsconfig.json' is out of date because output file 'src/lib/module.js' does not exist

[12:01:00 AM] Building project '/src/lib/tsconfig.json'...
[12:00:08 AM] Building project '/src/lib/tsconfig.json'...

[12:01:00 AM] Project 'src/app/tsconfig.json' is out of date because output file 'src/app/module.js' does not exist
[12:00:16 AM] Project 'src/app/tsconfig.json' is out of date because output file 'src/app/module.js' does not exist

[12:01:00 AM] Building project '/src/app/tsconfig.json'...
[12:00:17 AM] Building project '/src/app/tsconfig.json'...

exitCode:: ExitStatus.Success

Expand Down Expand Up @@ -936,19 +936,19 @@ export const x = 10;console.log(x);

Output::
/lib/tsc --b /src/app --verbose
[12:04:00 AM] Projects in this build:
[12:00:30 AM] Projects in this build:
* src/lib/tsconfig.json
* src/app/tsconfig.json

[12:04:00 AM] Project 'src/lib/tsconfig.json' is out of date because oldest output 'src/lib/module.js' is older than newest input 'src/lib/file1.ts'
[12:00:31 AM] Project 'src/lib/tsconfig.json' is out of date because oldest output 'src/lib/module.js' is older than newest input 'src/lib/file1.ts'

[12:04:00 AM] Building project '/src/lib/tsconfig.json'...
[12:00:32 AM] Building project '/src/lib/tsconfig.json'...

[12:04:00 AM] Project 'src/app/tsconfig.json' is out of date because output of its dependency 'src/lib' has changed
[12:00:40 AM] Project 'src/app/tsconfig.json' is out of date because output of its dependency 'src/lib' has changed

[12:04:00 AM] Updating output of project '/src/app/tsconfig.json'...
[12:00:41 AM] Updating output of project '/src/app/tsconfig.json'...

[12:04:00 AM] Updating unchanged output timestamps of project '/src/app/tsconfig.json'...
[12:00:46 AM] Updating unchanged output timestamps of project '/src/app/tsconfig.json'...

exitCode:: ExitStatus.Success

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -81,17 +81,17 @@ const globalConst = 10;

Output::
/lib/tsc --b /src/app --verbose
[12:01:00 AM] Projects in this build:
[12:00:12 AM] Projects in this build:
* src/lib/tsconfig.json
* src/app/tsconfig.json

[12:01:00 AM] Project 'src/lib/tsconfig.json' is out of date because output file 'src/lib/module.js' does not exist
[12:00:13 AM] Project 'src/lib/tsconfig.json' is out of date because output file 'src/lib/module.js' does not exist

[12:01:00 AM] Building project '/src/lib/tsconfig.json'...
[12:00:14 AM] Building project '/src/lib/tsconfig.json'...

[12:01:00 AM] Project 'src/app/tsconfig.json' is out of date because output file 'src/app/module.js' does not exist
[12:00:22 AM] Project 'src/app/tsconfig.json' is out of date because output file 'src/app/module.js' does not exist

[12:01:00 AM] Building project '/src/app/tsconfig.json'...
[12:00:23 AM] Building project '/src/app/tsconfig.json'...

exitCode:: ExitStatus.Success

Expand Down Expand Up @@ -2113,19 +2113,19 @@ const { b, ...rest } = { a: 10, b: 30, yy: 30 };

Output::
/lib/tsc --b /src/app --verbose
[12:04:00 AM] Projects in this build:
[12:00:36 AM] Projects in this build:
* src/lib/tsconfig.json
* src/app/tsconfig.json

[12:04:00 AM] Project 'src/lib/tsconfig.json' is out of date because oldest output 'src/lib/module.js' is older than newest input 'src/lib/file1.ts'
[12:00:37 AM] Project 'src/lib/tsconfig.json' is out of date because oldest output 'src/lib/module.js' is older than newest input 'src/lib/file1.ts'

[12:04:00 AM] Building project '/src/lib/tsconfig.json'...
[12:00:38 AM] Building project '/src/lib/tsconfig.json'...

[12:04:00 AM] Project 'src/app/tsconfig.json' is out of date because output of its dependency 'src/lib' has changed
[12:00:46 AM] Project 'src/app/tsconfig.json' is out of date because output of its dependency 'src/lib' has changed

[12:04:00 AM] Updating output of project '/src/app/tsconfig.json'...
[12:00:47 AM] Updating output of project '/src/app/tsconfig.json'...

[12:04:00 AM] Updating unchanged output timestamps of project '/src/app/tsconfig.json'...
[12:00:52 AM] Updating unchanged output timestamps of project '/src/app/tsconfig.json'...

exitCode:: ExitStatus.Success

Expand Down Expand Up @@ -3730,19 +3730,19 @@ export const x = 10;function forlibfile1Rest() { }console.log(x);

Output::
/lib/tsc --b /src/app --verbose
[12:07:00 AM] Projects in this build:
[12:01:01 AM] Projects in this build:
* src/lib/tsconfig.json
* src/app/tsconfig.json

[12:07:00 AM] Project 'src/lib/tsconfig.json' is out of date because oldest output 'src/lib/module.js' is older than newest input 'src/lib/file1.ts'
[12:01:02 AM] Project 'src/lib/tsconfig.json' is out of date because oldest output 'src/lib/module.js' is older than newest input 'src/lib/file1.ts'

[12:07:00 AM] Building project '/src/lib/tsconfig.json'...
[12:01:03 AM] Building project '/src/lib/tsconfig.json'...

[12:07:00 AM] Project 'src/app/tsconfig.json' is out of date because output of its dependency 'src/lib' has changed
[12:01:11 AM] Project 'src/app/tsconfig.json' is out of date because output of its dependency 'src/lib' has changed

[12:07:00 AM] Updating output of project '/src/app/tsconfig.json'...
[12:01:12 AM] Updating output of project '/src/app/tsconfig.json'...

[12:07:00 AM] Updating unchanged output timestamps of project '/src/app/tsconfig.json'...
[12:01:17 AM] Updating unchanged output timestamps of project '/src/app/tsconfig.json'...

exitCode:: ExitStatus.Success

Expand Down
Loading