mirror of
https://github.com/microsoft/TypeScript.git
synced 2025-11-18 17:21:48 +00:00
Always recreate the file watcher when rename event occurs (#48997)
* Convert some of the watchEnvironment tests to baselines for updating later * Add tests for inode watching by making fsWatch part of system function that tests presence before creating fs watch * Refactor for simpler tests * Accept map of file content or file or symlink or folder * Add test when rename event occurs when file has already reappeared * On rename event for the file, replace file watcher irrespective of file presence * Fix regex * Ensure that when doing inode watching watchers is replaces only on disappearance or appearance * Some logging for debugging further * Revert "Some logging for debugging further" This reverts commitdd2164ac83. * Add test when rename event occurs on mac with ~ appended to file name * If the relativeFileName ends with tilde, remove it from the event * Some logging for debugging further * Revert "Some logging for debugging further" This reverts commite1ba8a8d5f. * Add documentation and fail safe the event firing
This commit is contained in:
+179
-145
@@ -518,7 +518,7 @@ namespace ts {
|
||||
useCaseSensitiveFileNames: boolean;
|
||||
getCurrentDirectory: System["getCurrentDirectory"];
|
||||
getAccessibleSortedChildDirectories(path: string): readonly string[];
|
||||
directoryExists(dir: string): boolean;
|
||||
fileSystemEntryExists: FileSystemEntryExists;
|
||||
realpath(s: string): string;
|
||||
setTimeout: NonNullable<System["setTimeout"]>;
|
||||
clearTimeout: NonNullable<System["clearTimeout"]>;
|
||||
@@ -535,7 +535,7 @@ namespace ts {
|
||||
useCaseSensitiveFileNames,
|
||||
getCurrentDirectory,
|
||||
getAccessibleSortedChildDirectories,
|
||||
directoryExists,
|
||||
fileSystemEntryExists,
|
||||
realpath,
|
||||
setTimeout,
|
||||
clearTimeout
|
||||
@@ -655,7 +655,7 @@ namespace ts {
|
||||
function nonSyncUpdateChildWatches(dirName: string, dirPath: Path, fileName: string, options: WatchOptions | undefined) {
|
||||
// Iterate through existing children and update the watches if needed
|
||||
const parentWatcher = cache.get(dirPath);
|
||||
if (parentWatcher && directoryExists(dirName)) {
|
||||
if (parentWatcher && fileSystemEntryExists(dirName, FileSystemEntryKind.Directory)) {
|
||||
// Schedule the update and postpone invoke for callbacks
|
||||
scheduleUpdateChildWatches(dirName, dirPath, fileName, options);
|
||||
return;
|
||||
@@ -733,7 +733,7 @@ namespace ts {
|
||||
if (!parentWatcher) return false;
|
||||
let newChildWatches: ChildDirectoryWatcher[] | undefined;
|
||||
const hasChanges = enumerateInsertsAndDeletes<string, ChildDirectoryWatcher>(
|
||||
directoryExists(parentDir) ? mapDefined(getAccessibleSortedChildDirectories(parentDir), child => {
|
||||
fileSystemEntryExists(parentDir, FileSystemEntryKind.Directory) ? mapDefined(getAccessibleSortedChildDirectories(parentDir), child => {
|
||||
const childFullName = getNormalizedAbsolutePath(child, parentDir);
|
||||
// Filter our the symbolic link directories since those arent included in recursive watch
|
||||
// which is same behaviour when recursive: true is passed to fs.watch
|
||||
@@ -780,7 +780,12 @@ namespace ts {
|
||||
export type FsWatchCallback = (eventName: "rename" | "change", relativeFileName: string | undefined, modifiedTime?: Date) => void;
|
||||
/*@internal*/
|
||||
export type FsWatch = (fileOrDirectory: string, entryKind: FileSystemEntryKind, callback: FsWatchCallback, recursive: boolean, fallbackPollingInterval: PollingInterval, fallbackOptions: WatchOptions | undefined) => FileWatcher;
|
||||
|
||||
/*@internal*/
|
||||
export interface FsWatchWorkerWatcher extends FileWatcher {
|
||||
on(eventName: string, listener: () => void): void;
|
||||
}
|
||||
/*@internal*/
|
||||
export type FsWatchWorker = (fileOrDirectory: string, recursive: boolean, callback: FsWatchCallback) => FsWatchWorkerWatcher;
|
||||
/*@internal*/
|
||||
export const enum FileSystemEntryKind {
|
||||
File,
|
||||
@@ -843,6 +848,9 @@ namespace ts {
|
||||
};
|
||||
}
|
||||
|
||||
/*@internal*/
|
||||
export type FileSystemEntryExists = (fileorDirectrory: string, entryKind: FileSystemEntryKind) => boolean;
|
||||
|
||||
/*@internal*/
|
||||
export interface CreateSystemWatchFunctions {
|
||||
// Polling watch file
|
||||
@@ -852,11 +860,11 @@ namespace ts {
|
||||
setTimeout: NonNullable<System["setTimeout"]>;
|
||||
clearTimeout: NonNullable<System["clearTimeout"]>;
|
||||
// For fs events :
|
||||
fsWatch: FsWatch;
|
||||
fsWatchWorker: FsWatchWorker;
|
||||
fileSystemEntryExists: FileSystemEntryExists;
|
||||
useCaseSensitiveFileNames: boolean;
|
||||
getCurrentDirectory: System["getCurrentDirectory"];
|
||||
fsSupportsRecursiveFsWatch: boolean;
|
||||
directoryExists: System["directoryExists"];
|
||||
getAccessibleSortedChildDirectories(path: string): readonly string[];
|
||||
realpath(s: string): string;
|
||||
// For backward compatibility environment variables
|
||||
@@ -864,6 +872,8 @@ namespace ts {
|
||||
useNonPollingWatchers?: boolean;
|
||||
tscWatchDirectory: string | undefined;
|
||||
defaultWatchFileKind: System["defaultWatchFileKind"];
|
||||
inodeWatching: boolean;
|
||||
sysLog: (s: string) => void;
|
||||
}
|
||||
|
||||
/*@internal*/
|
||||
@@ -872,22 +882,25 @@ namespace ts {
|
||||
getModifiedTime,
|
||||
setTimeout,
|
||||
clearTimeout,
|
||||
fsWatch,
|
||||
fsWatchWorker,
|
||||
fileSystemEntryExists,
|
||||
useCaseSensitiveFileNames,
|
||||
getCurrentDirectory,
|
||||
fsSupportsRecursiveFsWatch,
|
||||
directoryExists,
|
||||
getAccessibleSortedChildDirectories,
|
||||
realpath,
|
||||
tscWatchFile,
|
||||
useNonPollingWatchers,
|
||||
tscWatchDirectory,
|
||||
defaultWatchFileKind,
|
||||
inodeWatching,
|
||||
sysLog,
|
||||
}: CreateSystemWatchFunctions): { watchFile: HostWatchFile; watchDirectory: HostWatchDirectory; } {
|
||||
let dynamicPollingWatchFile: HostWatchFile | undefined;
|
||||
let fixedChunkSizePollingWatchFile: HostWatchFile | undefined;
|
||||
let nonPollingWatchFile: HostWatchFile | undefined;
|
||||
let hostRecursiveDirectoryWatcher: HostWatchDirectory | undefined;
|
||||
let hitSystemWatcherLimit = false;
|
||||
return {
|
||||
watchFile,
|
||||
watchDirectory
|
||||
@@ -989,7 +1002,7 @@ namespace ts {
|
||||
hostRecursiveDirectoryWatcher = createDirectoryWatcherSupportingRecursive({
|
||||
useCaseSensitiveFileNames,
|
||||
getCurrentDirectory,
|
||||
directoryExists,
|
||||
fileSystemEntryExists,
|
||||
getAccessibleSortedChildDirectories,
|
||||
watchDirectory: nonRecursiveWatchDirectory,
|
||||
realpath,
|
||||
@@ -1059,6 +1072,147 @@ namespace ts {
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
function fsWatch(
|
||||
fileOrDirectory: string,
|
||||
entryKind: FileSystemEntryKind,
|
||||
callback: FsWatchCallback,
|
||||
recursive: boolean,
|
||||
fallbackPollingInterval: PollingInterval,
|
||||
fallbackOptions: WatchOptions | undefined
|
||||
): FileWatcher {
|
||||
let lastDirectoryPartWithDirectorySeparator: string | undefined;
|
||||
let lastDirectoryPart: string | undefined;
|
||||
if (inodeWatching) {
|
||||
lastDirectoryPartWithDirectorySeparator = fileOrDirectory.substring(fileOrDirectory.lastIndexOf(directorySeparator));
|
||||
lastDirectoryPart = lastDirectoryPartWithDirectorySeparator.slice(directorySeparator.length);
|
||||
}
|
||||
/** Watcher for the file system entry depending on whether it is missing or present */
|
||||
let watcher = !fileSystemEntryExists(fileOrDirectory, entryKind) ?
|
||||
watchMissingFileSystemEntry() :
|
||||
watchPresentFileSystemEntry();
|
||||
return {
|
||||
close: () => {
|
||||
// Close the watcher (either existing file system entry watcher or missing file system entry watcher)
|
||||
watcher.close();
|
||||
watcher = undefined!;
|
||||
}
|
||||
};
|
||||
|
||||
function updateWatcher(createWatcher: () => FileWatcher) {
|
||||
// If watcher is not closed, update it
|
||||
if (watcher) {
|
||||
sysLog(`sysLog:: ${fileOrDirectory}:: Changing watcher to ${createWatcher === watchPresentFileSystemEntry ? "Present" : "Missing"}FileSystemEntryWatcher`);
|
||||
watcher.close();
|
||||
watcher = createWatcher();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Watch the file or directory that is currently present
|
||||
* and when the watched file or directory is deleted, switch to missing file system entry watcher
|
||||
*/
|
||||
function watchPresentFileSystemEntry(): FileWatcher {
|
||||
if (hitSystemWatcherLimit) {
|
||||
sysLog(`sysLog:: ${fileOrDirectory}:: Defaulting to watchFile`);
|
||||
return watchPresentFileSystemEntryWithFsWatchFile();
|
||||
}
|
||||
try {
|
||||
const presentWatcher = fsWatchWorker(
|
||||
fileOrDirectory,
|
||||
recursive,
|
||||
inodeWatching ?
|
||||
callbackChangingToMissingFileSystemEntry :
|
||||
callback
|
||||
);
|
||||
// Watch the missing file or directory or error
|
||||
presentWatcher.on("error", () => {
|
||||
callback("rename", "");
|
||||
updateWatcher(watchMissingFileSystemEntry);
|
||||
});
|
||||
return presentWatcher;
|
||||
}
|
||||
catch (e) {
|
||||
// Catch the exception and use polling instead
|
||||
// Eg. on linux the number of watches are limited and one could easily exhaust watches and the exception ENOSPC is thrown when creating watcher at that point
|
||||
// so instead of throwing error, use fs.watchFile
|
||||
hitSystemWatcherLimit ||= e.code === "ENOSPC";
|
||||
sysLog(`sysLog:: ${fileOrDirectory}:: Changing to watchFile`);
|
||||
return watchPresentFileSystemEntryWithFsWatchFile();
|
||||
}
|
||||
}
|
||||
|
||||
function callbackChangingToMissingFileSystemEntry(event: "rename" | "change", relativeName: string | undefined) {
|
||||
// In some scenarios, file save operation fires event with fileName.ext~ instead of fileName.ext
|
||||
// To ensure we see the file going missing and coming back up (file delete and then recreated)
|
||||
// and watches being updated correctly we are calling back with fileName.ext as well as fileName.ext~
|
||||
// The worst is we have fired event that was not needed but we wont miss any changes
|
||||
// especially in cases where file goes missing and watches wrong inode
|
||||
let originalRelativeName: string | undefined;
|
||||
if (relativeName && endsWith(relativeName, "~")) {
|
||||
originalRelativeName = relativeName;
|
||||
relativeName = relativeName.slice(0, relativeName.length - 1);
|
||||
}
|
||||
// because relativeName is not guaranteed to be correct we need to check on each rename with few combinations
|
||||
// Eg on ubuntu while watching app/node_modules the relativeName is "node_modules" which is neither relative nor full path
|
||||
if (event === "rename" &&
|
||||
(!relativeName ||
|
||||
relativeName === lastDirectoryPart ||
|
||||
endsWith(relativeName, lastDirectoryPartWithDirectorySeparator!))) {
|
||||
const modifiedTime = getModifiedTime(fileOrDirectory) || missingFileModifiedTime;
|
||||
if (originalRelativeName) callback(event, originalRelativeName, modifiedTime);
|
||||
callback(event, relativeName, modifiedTime);
|
||||
if (inodeWatching) {
|
||||
// If this was rename event, inode has changed means we need to update watcher
|
||||
updateWatcher(modifiedTime === missingFileModifiedTime ? watchMissingFileSystemEntry : watchPresentFileSystemEntry);
|
||||
}
|
||||
else if (modifiedTime === missingFileModifiedTime) {
|
||||
updateWatcher(watchMissingFileSystemEntry);
|
||||
}
|
||||
}
|
||||
else {
|
||||
if (originalRelativeName) callback(event, originalRelativeName);
|
||||
callback(event, relativeName);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Watch the file or directory using fs.watchFile since fs.watch threw exception
|
||||
* Eg. on linux the number of watches are limited and one could easily exhaust watches and the exception ENOSPC is thrown when creating watcher at that point
|
||||
*/
|
||||
function watchPresentFileSystemEntryWithFsWatchFile(): FileWatcher {
|
||||
return watchFile(
|
||||
fileOrDirectory,
|
||||
createFileWatcherCallback(callback),
|
||||
fallbackPollingInterval,
|
||||
fallbackOptions
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Watch the file or directory that is missing
|
||||
* and switch to existing file or directory when the missing filesystem entry is created
|
||||
*/
|
||||
function watchMissingFileSystemEntry(): FileWatcher {
|
||||
return watchFile(
|
||||
fileOrDirectory,
|
||||
(_fileName, eventKind, modifiedTime) => {
|
||||
if (eventKind === FileWatcherEventKind.Created) {
|
||||
modifiedTime ||= getModifiedTime(fileOrDirectory) || missingFileModifiedTime;
|
||||
if (modifiedTime !== missingFileModifiedTime) {
|
||||
callback("rename", "", modifiedTime);
|
||||
// Call the callback for current file or directory
|
||||
// For now it could be callback for the inner directory creation,
|
||||
// but just return current directory, better than current no-op
|
||||
updateWatcher(watchPresentFileSystemEntry);
|
||||
}
|
||||
}
|
||||
},
|
||||
fallbackPollingInterval,
|
||||
fallbackOptions
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -1273,8 +1427,6 @@ namespace ts {
|
||||
let activeSession: import("inspector").Session | "stopping" | undefined;
|
||||
let profilePath = "./profile.cpuprofile";
|
||||
|
||||
let hitSystemWatcherLimit = false;
|
||||
|
||||
const Buffer: {
|
||||
new (input: string, encoding?: string): any;
|
||||
from?(input: string, encoding?: string): any;
|
||||
@@ -1295,19 +1447,21 @@ namespace ts {
|
||||
getModifiedTime,
|
||||
setTimeout,
|
||||
clearTimeout,
|
||||
fsWatch,
|
||||
fsWatchWorker,
|
||||
useCaseSensitiveFileNames,
|
||||
getCurrentDirectory,
|
||||
fileSystemEntryExists,
|
||||
// Node 4.0 `fs.watch` function supports the "recursive" option on both OSX and Windows
|
||||
// (ref: https://github.com/nodejs/node/pull/2649 and https://github.com/Microsoft/TypeScript/issues/4643)
|
||||
fsSupportsRecursiveFsWatch,
|
||||
directoryExists,
|
||||
getAccessibleSortedChildDirectories: path => getAccessibleFileSystemEntries(path).directories,
|
||||
realpath,
|
||||
tscWatchFile: process.env.TSC_WATCHFILE,
|
||||
useNonPollingWatchers: process.env.TSC_NONPOLLING_WATCHER,
|
||||
tscWatchDirectory: process.env.TSC_WATCHDIRECTORY,
|
||||
defaultWatchFileKind: () => sys!.defaultWatchFileKind?.(),
|
||||
inodeWatching: isLinuxOrMacOs,
|
||||
sysLog,
|
||||
});
|
||||
const nodeSystem: System = {
|
||||
args: process.argv.slice(2),
|
||||
@@ -1568,139 +1722,19 @@ namespace ts {
|
||||
}
|
||||
}
|
||||
|
||||
function fsWatch(
|
||||
function fsWatchWorker(
|
||||
fileOrDirectory: string,
|
||||
entryKind: FileSystemEntryKind,
|
||||
callback: FsWatchCallback,
|
||||
recursive: boolean,
|
||||
fallbackPollingInterval: PollingInterval,
|
||||
fallbackOptions: WatchOptions | undefined
|
||||
): FileWatcher {
|
||||
let options: any;
|
||||
let lastDirectoryPartWithDirectorySeparator: string | undefined;
|
||||
let lastDirectoryPart: string | undefined;
|
||||
if (isLinuxOrMacOs) {
|
||||
lastDirectoryPartWithDirectorySeparator = fileOrDirectory.substr(fileOrDirectory.lastIndexOf(directorySeparator));
|
||||
lastDirectoryPart = lastDirectoryPartWithDirectorySeparator.slice(directorySeparator.length);
|
||||
}
|
||||
/** Watcher for the file system entry depending on whether it is missing or present */
|
||||
let watcher = !fileSystemEntryExists(fileOrDirectory, entryKind) ?
|
||||
watchMissingFileSystemEntry() :
|
||||
watchPresentFileSystemEntry();
|
||||
return {
|
||||
close: () => {
|
||||
// Close the watcher (either existing file system entry watcher or missing file system entry watcher)
|
||||
watcher.close();
|
||||
watcher = undefined!;
|
||||
}
|
||||
};
|
||||
|
||||
/**
|
||||
* Invoke the callback with rename and update the watcher if not closed
|
||||
* @param createWatcher
|
||||
*/
|
||||
function invokeCallbackAndUpdateWatcher(createWatcher: () => FileWatcher, modifiedTime?: Date) {
|
||||
sysLog(`sysLog:: ${fileOrDirectory}:: Changing watcher to ${createWatcher === watchPresentFileSystemEntry ? "Present" : "Missing"}FileSystemEntryWatcher`);
|
||||
// Call the callback for current directory
|
||||
callback("rename", "", modifiedTime);
|
||||
|
||||
// If watcher is not closed, update it
|
||||
if (watcher) {
|
||||
watcher.close();
|
||||
watcher = createWatcher();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Watch the file or directory that is currently present
|
||||
* and when the watched file or directory is deleted, switch to missing file system entry watcher
|
||||
*/
|
||||
function watchPresentFileSystemEntry(): FileWatcher {
|
||||
// Node 4.0 `fs.watch` function supports the "recursive" option on both OSX and Windows
|
||||
// (ref: https://github.com/nodejs/node/pull/2649 and https://github.com/Microsoft/TypeScript/issues/4643)
|
||||
if (options === undefined) {
|
||||
if (fsSupportsRecursiveFsWatch) {
|
||||
options = { persistent: true, recursive: !!recursive };
|
||||
}
|
||||
else {
|
||||
options = { persistent: true };
|
||||
}
|
||||
}
|
||||
|
||||
if (hitSystemWatcherLimit) {
|
||||
sysLog(`sysLog:: ${fileOrDirectory}:: Defaulting to fsWatchFile`);
|
||||
return watchPresentFileSystemEntryWithFsWatchFile();
|
||||
}
|
||||
try {
|
||||
const presentWatcher = _fs.watch(
|
||||
fileOrDirectory,
|
||||
options,
|
||||
isLinuxOrMacOs ?
|
||||
callbackChangingToMissingFileSystemEntry :
|
||||
callback
|
||||
);
|
||||
// Watch the missing file or directory or error
|
||||
presentWatcher.on("error", () => invokeCallbackAndUpdateWatcher(watchMissingFileSystemEntry));
|
||||
return presentWatcher;
|
||||
}
|
||||
catch (e) {
|
||||
// Catch the exception and use polling instead
|
||||
// Eg. on linux the number of watches are limited and one could easily exhaust watches and the exception ENOSPC is thrown when creating watcher at that point
|
||||
// so instead of throwing error, use fs.watchFile
|
||||
hitSystemWatcherLimit ||= e.code === "ENOSPC";
|
||||
sysLog(`sysLog:: ${fileOrDirectory}:: Changing to fsWatchFile`);
|
||||
return watchPresentFileSystemEntryWithFsWatchFile();
|
||||
}
|
||||
}
|
||||
|
||||
function callbackChangingToMissingFileSystemEntry(event: "rename" | "change", relativeName: string | undefined) {
|
||||
// because relativeName is not guaranteed to be correct we need to check on each rename with few combinations
|
||||
// Eg on ubuntu while watching app/node_modules the relativeName is "node_modules" which is neither relative nor full path
|
||||
const modifiedTime = getModifiedTime(fileOrDirectory) || missingFileModifiedTime;
|
||||
return event === "rename" &&
|
||||
(!relativeName ||
|
||||
relativeName === lastDirectoryPart ||
|
||||
(relativeName.lastIndexOf(lastDirectoryPartWithDirectorySeparator!) !== -1 && relativeName.lastIndexOf(lastDirectoryPartWithDirectorySeparator!) === relativeName.length - lastDirectoryPartWithDirectorySeparator!.length)) &&
|
||||
modifiedTime === missingFileModifiedTime ?
|
||||
invokeCallbackAndUpdateWatcher(watchMissingFileSystemEntry, modifiedTime) :
|
||||
callback(event, relativeName, modifiedTime);
|
||||
}
|
||||
|
||||
/**
|
||||
* Watch the file or directory using fs.watchFile since fs.watch threw exception
|
||||
* Eg. on linux the number of watches are limited and one could easily exhaust watches and the exception ENOSPC is thrown when creating watcher at that point
|
||||
*/
|
||||
function watchPresentFileSystemEntryWithFsWatchFile(): FileWatcher {
|
||||
return watchFile(
|
||||
fileOrDirectory,
|
||||
createFileWatcherCallback(callback),
|
||||
fallbackPollingInterval,
|
||||
fallbackOptions
|
||||
);
|
||||
}
|
||||
|
||||
/**
|
||||
* Watch the file or directory that is missing
|
||||
* and switch to existing file or directory when the missing filesystem entry is created
|
||||
*/
|
||||
function watchMissingFileSystemEntry(): FileWatcher {
|
||||
return watchFile(
|
||||
fileOrDirectory,
|
||||
(_fileName, eventKind, modifiedTime) => {
|
||||
if (eventKind === FileWatcherEventKind.Created) {
|
||||
modifiedTime ||= getModifiedTime(fileOrDirectory) || missingFileModifiedTime;
|
||||
if (modifiedTime !== missingFileModifiedTime) {
|
||||
// Call the callback for current file or directory
|
||||
// For now it could be callback for the inner directory creation,
|
||||
// but just return current directory, better than current no-op
|
||||
invokeCallbackAndUpdateWatcher(watchPresentFileSystemEntry, modifiedTime);
|
||||
}
|
||||
}
|
||||
},
|
||||
fallbackPollingInterval,
|
||||
fallbackOptions
|
||||
);
|
||||
}
|
||||
callback: FsWatchCallback,
|
||||
) {
|
||||
// Node 4.0 `fs.watch` function supports the "recursive" option on both OSX and Windows
|
||||
// (ref: https://github.com/nodejs/node/pull/2649 and https://github.com/Microsoft/TypeScript/issues/4643)
|
||||
return _fs.watch(
|
||||
fileOrDirectory,
|
||||
fsSupportsRecursiveFsWatch ?
|
||||
{ persistent: true, recursive: !!recursive } : { persistent: true },
|
||||
callback
|
||||
);
|
||||
}
|
||||
|
||||
function readFileWorker(fileName: string, _encoding?: string): string | undefined {
|
||||
|
||||
@@ -14,18 +14,6 @@ interface String { charAt: any; }
|
||||
interface Array<T> { length: number; [n: number]: T; }`
|
||||
};
|
||||
|
||||
export const safeList = {
|
||||
path: "/safeList.json" as Path,
|
||||
content: JSON.stringify({
|
||||
commander: "commander",
|
||||
express: "express",
|
||||
jquery: "jquery",
|
||||
lodash: "lodash",
|
||||
moment: "moment",
|
||||
chroma: "chroma-js"
|
||||
})
|
||||
};
|
||||
|
||||
function getExecutingFilePathFromLibFile(): string {
|
||||
return combinePaths(getDirectoryPath(libFile.path), "tsc.js");
|
||||
}
|
||||
@@ -39,14 +27,15 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
environmentVariables?: ESMap<string, string>;
|
||||
runWithoutRecursiveWatches?: boolean;
|
||||
runWithFallbackPolling?: boolean;
|
||||
inodeWatching?: boolean;
|
||||
}
|
||||
|
||||
export function createWatchedSystem(fileOrFolderList: readonly FileOrFolderOrSymLink[], params?: TestServerHostCreationParameters): TestServerHost {
|
||||
return new TestServerHost(/*withSafelist*/ false, fileOrFolderList, params);
|
||||
export function createWatchedSystem(fileOrFolderList: FileOrFolderOrSymLinkMap | readonly FileOrFolderOrSymLink[], params?: TestServerHostCreationParameters): TestServerHost {
|
||||
return new TestServerHost(fileOrFolderList, params);
|
||||
}
|
||||
|
||||
export function createServerHost(fileOrFolderList: readonly FileOrFolderOrSymLink[], params?: TestServerHostCreationParameters): TestServerHost {
|
||||
const host = new TestServerHost(/*withSafelist*/ true, fileOrFolderList, params);
|
||||
export function createServerHost(fileOrFolderList: FileOrFolderOrSymLinkMap | readonly FileOrFolderOrSymLink[], params?: TestServerHostCreationParameters): TestServerHost {
|
||||
const host = new TestServerHost(fileOrFolderList, params);
|
||||
// Just like sys, patch the host to use writeFile
|
||||
patchWriteFileEnsuringDirectory(host);
|
||||
return host;
|
||||
@@ -70,6 +59,9 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
}
|
||||
|
||||
export type FileOrFolderOrSymLink = File | Folder | SymLink;
|
||||
export interface FileOrFolderOrSymLinkMap {
|
||||
[path: string]: string | Omit<FileOrFolderOrSymLink, "path">;
|
||||
}
|
||||
export function isFile(fileOrFolderOrSymLink: FileOrFolderOrSymLink): fileOrFolderOrSymLink is File {
|
||||
return isString((fileOrFolderOrSymLink as File).content);
|
||||
}
|
||||
@@ -195,70 +187,6 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
checkMap(caption, arrayToMap(actual, identity), expected, /*eachKeyCount*/ undefined);
|
||||
}
|
||||
|
||||
export function checkWatchedFiles(host: TestServerHost, expectedFiles: readonly string[], additionalInfo?: string) {
|
||||
checkMap(`watchedFiles:: ${additionalInfo || ""}::`, host.watchedFiles, expectedFiles, /*eachKeyCount*/ undefined);
|
||||
}
|
||||
|
||||
export interface WatchFileDetails {
|
||||
fileName: string;
|
||||
pollingInterval: PollingInterval;
|
||||
}
|
||||
export function checkWatchedFilesDetailed(host: TestServerHost, expectedFiles: ReadonlyESMap<string, number>, expectedDetails?: ESMap<string, WatchFileDetails[]>): void;
|
||||
export function checkWatchedFilesDetailed(host: TestServerHost, expectedFiles: readonly string[], eachFileWatchCount: number, expectedDetails?: ESMap<string, WatchFileDetails[]>): void;
|
||||
export function checkWatchedFilesDetailed(host: TestServerHost, expectedFiles: ReadonlyESMap<string, number> | readonly string[], eachFileWatchCountOrExpectedDetails?: number | ESMap<string, WatchFileDetails[]>, expectedDetails?: ESMap<string, WatchFileDetails[]>) {
|
||||
if (!isNumber(eachFileWatchCountOrExpectedDetails)) expectedDetails = eachFileWatchCountOrExpectedDetails;
|
||||
if (isArray(expectedFiles)) {
|
||||
checkMap(
|
||||
"watchedFiles",
|
||||
host.watchedFiles,
|
||||
expectedFiles,
|
||||
eachFileWatchCountOrExpectedDetails as number,
|
||||
[expectedDetails, ({ fileName, pollingInterval }) => ({ fileName, pollingInterval })]
|
||||
);
|
||||
}
|
||||
else {
|
||||
checkMap(
|
||||
"watchedFiles",
|
||||
host.watchedFiles,
|
||||
expectedFiles,
|
||||
[expectedDetails, ({ fileName, pollingInterval }) => ({ fileName, pollingInterval })]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export function checkWatchedDirectories(host: TestServerHost, expectedDirectories: string[], recursive: boolean) {
|
||||
checkMap(`watchedDirectories${recursive ? " recursive" : ""}`, recursive ? host.fsWatchesRecursive : host.fsWatches, expectedDirectories, /*eachKeyCount*/ undefined);
|
||||
}
|
||||
|
||||
export interface WatchDirectoryDetails {
|
||||
directoryName: string;
|
||||
fallbackPollingInterval: PollingInterval;
|
||||
fallbackOptions: WatchOptions | undefined;
|
||||
}
|
||||
export function checkWatchedDirectoriesDetailed(host: TestServerHost, expectedDirectories: ReadonlyESMap<string, number>, recursive: boolean, expectedDetails?: ESMap<string, WatchDirectoryDetails[]>): void;
|
||||
export function checkWatchedDirectoriesDetailed(host: TestServerHost, expectedDirectories: readonly string[], eachDirectoryWatchCount: number, recursive: boolean, expectedDetails?: ESMap<string, WatchDirectoryDetails[]>): void;
|
||||
export function checkWatchedDirectoriesDetailed(host: TestServerHost, expectedDirectories: ReadonlyESMap<string, number> | readonly string[], recursiveOrEachDirectoryWatchCount: boolean | number, recursiveOrExpectedDetails?: boolean | ESMap<string, WatchDirectoryDetails[]>, expectedDetails?: ESMap<string, WatchDirectoryDetails[]>) {
|
||||
if (typeof recursiveOrExpectedDetails !== "boolean") expectedDetails = recursiveOrExpectedDetails;
|
||||
if (isArray(expectedDirectories)) {
|
||||
checkMap(
|
||||
`fsWatches${recursiveOrExpectedDetails ? " recursive" : ""}`,
|
||||
recursiveOrExpectedDetails as boolean ? host.fsWatchesRecursive : host.fsWatches,
|
||||
expectedDirectories,
|
||||
recursiveOrEachDirectoryWatchCount as number,
|
||||
[expectedDetails, ({ directoryName, fallbackPollingInterval, fallbackOptions }) => ({ directoryName, fallbackPollingInterval, fallbackOptions })]
|
||||
);
|
||||
}
|
||||
else {
|
||||
recursiveOrExpectedDetails = recursiveOrEachDirectoryWatchCount as boolean;
|
||||
checkMap(
|
||||
`fsWatches${recursiveOrExpectedDetails ? " recursive" : ""}`,
|
||||
recursiveOrExpectedDetails ? host.fsWatchesRecursive : host.fsWatches,
|
||||
expectedDirectories,
|
||||
[expectedDetails, ({ directoryName, fallbackPollingInterval, fallbackOptions }) => ({ directoryName, fallbackPollingInterval, fallbackOptions })]
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
export function checkOutputContains(host: TestServerHost, expected: readonly string[]) {
|
||||
const mapExpected = new Set(expected);
|
||||
const mapSeen = new Set<string>();
|
||||
@@ -355,17 +283,22 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
export interface TestFsWatcher {
|
||||
cb: FsWatchCallback;
|
||||
directoryName: string;
|
||||
fallbackPollingInterval: PollingInterval;
|
||||
fallbackOptions: WatchOptions | undefined;
|
||||
inode: number | undefined;
|
||||
}
|
||||
|
||||
export interface ReloadWatchInvokeOptions {
|
||||
export interface WatchInvokeOptions {
|
||||
/** Invokes the directory watcher for the parent instead of the file changed */
|
||||
invokeDirectoryWatcherInsteadOfFileChanged: boolean;
|
||||
/** When new file is created, do not invoke watches for it */
|
||||
ignoreWatchInvokedWithTriggerAsFileCreate: boolean;
|
||||
/** Invoke the file delete, followed by create instead of file changed */
|
||||
invokeFileDeleteCreateAsPartInsteadOfChange: boolean;
|
||||
/** Dont invoke delete watches */
|
||||
ignoreDelete: boolean;
|
||||
/** Skip inode check on file or folder create*/
|
||||
skipInodeCheckOnCreate: boolean;
|
||||
/** When invoking rename event on fs watch, send event with file name suffixed with tilde */
|
||||
useTildeAsSuffixInRenameEventFileName: boolean;
|
||||
}
|
||||
|
||||
export enum Tsc_WatchFile {
|
||||
@@ -384,7 +317,6 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
useCaseSensitiveFileNames: boolean;
|
||||
executingFilePath: string;
|
||||
currentDirectory: string;
|
||||
fileOrFolderorSymLinkList: readonly FileOrFolderOrSymLink[];
|
||||
newLine?: string;
|
||||
useWindowsStylePaths?: boolean;
|
||||
environmentVariables?: ESMap<string, string>;
|
||||
@@ -417,14 +349,16 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
public defaultWatchFileKind?: () => WatchFileKind | undefined;
|
||||
public storeFilesChangingSignatureDuringEmit = true;
|
||||
watchFile: HostWatchFile;
|
||||
private inodeWatching: boolean | undefined;
|
||||
private readonly inodes?: ESMap<Path, number>;
|
||||
watchDirectory: HostWatchDirectory;
|
||||
constructor(
|
||||
public withSafeList: boolean,
|
||||
fileOrFolderorSymLinkList: readonly FileOrFolderOrSymLink[],
|
||||
fileOrFolderorSymLinkList: FileOrFolderOrSymLinkMap | readonly FileOrFolderOrSymLink[],
|
||||
{
|
||||
useCaseSensitiveFileNames, executingFilePath, currentDirectory,
|
||||
newLine, windowsStyleRoot, environmentVariables,
|
||||
runWithoutRecursiveWatches, runWithFallbackPolling
|
||||
runWithoutRecursiveWatches, runWithFallbackPolling,
|
||||
inodeWatching,
|
||||
}: TestServerHostCreationParameters = {}) {
|
||||
this.useCaseSensitiveFileNames = !!useCaseSensitiveFileNames;
|
||||
this.newLine = newLine || "\n";
|
||||
@@ -438,6 +372,11 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
this.runWithFallbackPolling = !!runWithFallbackPolling;
|
||||
const tscWatchFile = this.environmentVariables && this.environmentVariables.get("TSC_WATCHFILE");
|
||||
const tscWatchDirectory = this.environmentVariables && this.environmentVariables.get("TSC_WATCHDIRECTORY");
|
||||
if (inodeWatching) {
|
||||
this.inodeWatching = true;
|
||||
this.inodes = new Map();
|
||||
}
|
||||
|
||||
const { watchFile, watchDirectory } = createSystemWatchFunctions({
|
||||
// We dont have polling watch file
|
||||
// it is essentially fsWatch but lets get that separate from fsWatch and
|
||||
@@ -451,22 +390,29 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
getModifiedTime: this.getModifiedTime.bind(this),
|
||||
setTimeout: this.setTimeout.bind(this),
|
||||
clearTimeout: this.clearTimeout.bind(this),
|
||||
fsWatch: this.fsWatch.bind(this),
|
||||
fsWatchWorker: this.fsWatchWorker.bind(this),
|
||||
fileSystemEntryExists: this.fileSystemEntryExists.bind(this),
|
||||
useCaseSensitiveFileNames: this.useCaseSensitiveFileNames,
|
||||
getCurrentDirectory: this.getCurrentDirectory.bind(this),
|
||||
fsSupportsRecursiveFsWatch: tscWatchDirectory ? false : !runWithoutRecursiveWatches,
|
||||
directoryExists: this.directoryExists.bind(this),
|
||||
getAccessibleSortedChildDirectories: path => this.getDirectories(path),
|
||||
realpath: this.realpath.bind(this),
|
||||
tscWatchFile,
|
||||
tscWatchDirectory,
|
||||
defaultWatchFileKind: () => this.defaultWatchFileKind?.(),
|
||||
inodeWatching: !!this.inodeWatching,
|
||||
sysLog: s => this.write(s + this.newLine),
|
||||
});
|
||||
this.watchFile = watchFile;
|
||||
this.watchDirectory = watchDirectory;
|
||||
this.reloadFS(fileOrFolderorSymLinkList);
|
||||
}
|
||||
|
||||
private nextInode = 0;
|
||||
private setInode(path: Path) {
|
||||
if (this.inodes) this.inodes.set(path, this.nextInode++);
|
||||
}
|
||||
|
||||
// Output is pretty
|
||||
writeOutputIsTTY() {
|
||||
return true;
|
||||
@@ -504,53 +450,31 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
this.time = time;
|
||||
}
|
||||
|
||||
private reloadFS(fileOrFolderOrSymLinkList: readonly FileOrFolderOrSymLink[], options?: Partial<ReloadWatchInvokeOptions>) {
|
||||
private reloadFS(fileOrFolderOrSymLinkList: FileOrFolderOrSymLinkMap | readonly FileOrFolderOrSymLink[]) {
|
||||
Debug.assert(this.fs.size === 0);
|
||||
fileOrFolderOrSymLinkList = fileOrFolderOrSymLinkList.concat(this.withSafeList ? safeList : []);
|
||||
const filesOrFoldersToLoad: readonly FileOrFolderOrSymLink[] = !this.windowsStyleRoot ? fileOrFolderOrSymLinkList :
|
||||
fileOrFolderOrSymLinkList.map<FileOrFolderOrSymLink>(f => {
|
||||
const result = clone(f);
|
||||
result.path = this.getHostSpecificPath(f.path);
|
||||
return result;
|
||||
});
|
||||
for (const fileOrDirectory of filesOrFoldersToLoad) {
|
||||
const path = this.toFullPath(fileOrDirectory.path);
|
||||
// If its a change
|
||||
const currentEntry = this.fs.get(path);
|
||||
if (currentEntry) {
|
||||
if (isFsFile(currentEntry)) {
|
||||
if (isFile(fileOrDirectory)) {
|
||||
// Update file
|
||||
if (currentEntry.content !== fileOrDirectory.content) {
|
||||
this.modifyFile(fileOrDirectory.path, fileOrDirectory.content, options);
|
||||
}
|
||||
if (isArray(fileOrFolderOrSymLinkList)) {
|
||||
fileOrFolderOrSymLinkList.forEach(f => this.ensureFileOrFolder(!this.windowsStyleRoot ?
|
||||
f :
|
||||
{ ...f, path: this.getHostSpecificPath(f.path) }
|
||||
));
|
||||
}
|
||||
else {
|
||||
for (const key in fileOrFolderOrSymLinkList) {
|
||||
if (hasProperty(fileOrFolderOrSymLinkList, key)) {
|
||||
const path = this.getHostSpecificPath(key);
|
||||
const value = fileOrFolderOrSymLinkList[key];
|
||||
if (isString(value)) {
|
||||
this.ensureFileOrFolder({ path, content: value });
|
||||
}
|
||||
else {
|
||||
// TODO: Changing from file => folder/Symlink
|
||||
this.ensureFileOrFolder({ path, ...value });
|
||||
}
|
||||
}
|
||||
else if (isFsSymLink(currentEntry)) {
|
||||
// TODO: update symlinks
|
||||
}
|
||||
else {
|
||||
// Folder
|
||||
if (isFile(fileOrDirectory)) {
|
||||
// TODO: Changing from folder => file
|
||||
}
|
||||
else {
|
||||
// Folder update: Nothing to do.
|
||||
currentEntry.modifiedTime = this.now();
|
||||
this.invokeFsWatches(currentEntry.fullPath, "change", currentEntry.modifiedTime);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
this.ensureFileOrFolder(fileOrDirectory, options && options.ignoreWatchInvokedWithTriggerAsFileCreate);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
modifyFile(filePath: string, content: string, options?: Partial<ReloadWatchInvokeOptions>) {
|
||||
modifyFile(filePath: string, content: string, options?: Partial<WatchInvokeOptions>) {
|
||||
const path = this.toFullPath(filePath);
|
||||
const currentEntry = this.fs.get(path);
|
||||
if (!currentEntry || !isFsFile(currentEntry)) {
|
||||
@@ -558,8 +482,8 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
}
|
||||
|
||||
if (options && options.invokeFileDeleteCreateAsPartInsteadOfChange) {
|
||||
this.removeFileOrFolder(currentEntry, returnFalse);
|
||||
this.ensureFileOrFolder({ path: filePath, content });
|
||||
this.removeFileOrFolder(currentEntry, /*isRenaming*/ false, options);
|
||||
this.ensureFileOrFolder({ path: filePath, content }, /*ignoreWatchInvokedWithTriggerAsFileCreate*/ undefined, /*ignoreParentWatch*/ undefined, options);
|
||||
}
|
||||
else {
|
||||
currentEntry.content = content;
|
||||
@@ -568,11 +492,11 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
if (options && options.invokeDirectoryWatcherInsteadOfFileChanged) {
|
||||
const directoryFullPath = getDirectoryPath(currentEntry.fullPath);
|
||||
this.invokeFileWatcher(directoryFullPath, FileWatcherEventKind.Changed, currentEntry.modifiedTime, /*useFileNameInCallback*/ true);
|
||||
this.invokeFsWatchesCallbacks(directoryFullPath, "rename", currentEntry.modifiedTime, currentEntry.fullPath);
|
||||
this.invokeRecursiveFsWatches(directoryFullPath, "rename", currentEntry.modifiedTime, currentEntry.fullPath);
|
||||
this.invokeFsWatchesCallbacks(directoryFullPath, "rename", currentEntry.modifiedTime, currentEntry.fullPath, options.useTildeAsSuffixInRenameEventFileName);
|
||||
this.invokeRecursiveFsWatches(directoryFullPath, "rename", currentEntry.modifiedTime, currentEntry.fullPath, options.useTildeAsSuffixInRenameEventFileName);
|
||||
}
|
||||
else {
|
||||
this.invokeFileAndFsWatches(currentEntry.fullPath, FileWatcherEventKind.Changed, currentEntry.modifiedTime);
|
||||
this.invokeFileAndFsWatches(currentEntry.fullPath, FileWatcherEventKind.Changed, currentEntry.modifiedTime, options?.useTildeAsSuffixInRenameEventFileName);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -584,7 +508,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
Debug.assert(!!file);
|
||||
|
||||
// Only remove the file
|
||||
this.removeFileOrFolder(file, returnFalse, /*isRenaming*/ true);
|
||||
this.removeFileOrFolder(file, /*isRenaming*/ true);
|
||||
|
||||
// Add updated folder with new folder name
|
||||
const newFullPath = getNormalizedAbsolutePath(newFileName, this.currentDirectory);
|
||||
@@ -604,7 +528,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
Debug.assert(!!folder);
|
||||
|
||||
// Only remove the folder
|
||||
this.removeFileOrFolder(folder, returnFalse, /*isRenaming*/ true);
|
||||
this.removeFileOrFolder(folder, /*isRenaming*/ true);
|
||||
|
||||
// Add updated folder with new folder name
|
||||
const newFullPath = getNormalizedAbsolutePath(newFolderName, this.currentDirectory);
|
||||
@@ -631,6 +555,7 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
newFolder.entries.push(entry);
|
||||
}
|
||||
this.fs.set(entry.path, entry);
|
||||
this.setInode(entry.path);
|
||||
this.invokeFileAndFsWatches(entry.fullPath, FileWatcherEventKind.Created);
|
||||
if (isFsFolder(entry)) {
|
||||
this.renameFolderEntries(entry, entry);
|
||||
@@ -638,29 +563,29 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
}
|
||||
}
|
||||
|
||||
ensureFileOrFolder(fileOrDirectoryOrSymLink: FileOrFolderOrSymLink, ignoreWatchInvokedWithTriggerAsFileCreate?: boolean, ignoreParentWatch?: boolean) {
|
||||
ensureFileOrFolder(fileOrDirectoryOrSymLink: FileOrFolderOrSymLink, ignoreWatchInvokedWithTriggerAsFileCreate?: boolean, ignoreParentWatch?: boolean, options?: Partial<WatchInvokeOptions>) {
|
||||
if (isFile(fileOrDirectoryOrSymLink)) {
|
||||
const file = this.toFsFile(fileOrDirectoryOrSymLink);
|
||||
// file may already exist when updating existing type declaration file
|
||||
if (!this.fs.get(file.path)) {
|
||||
const baseFolder = this.ensureFolder(getDirectoryPath(file.fullPath), ignoreParentWatch);
|
||||
this.addFileOrFolderInFolder(baseFolder, file, ignoreWatchInvokedWithTriggerAsFileCreate);
|
||||
const baseFolder = this.ensureFolder(getDirectoryPath(file.fullPath), ignoreParentWatch, options);
|
||||
this.addFileOrFolderInFolder(baseFolder, file, ignoreWatchInvokedWithTriggerAsFileCreate, options);
|
||||
}
|
||||
}
|
||||
else if (isSymLink(fileOrDirectoryOrSymLink)) {
|
||||
const symLink = this.toFsSymLink(fileOrDirectoryOrSymLink);
|
||||
Debug.assert(!this.fs.get(symLink.path));
|
||||
const baseFolder = this.ensureFolder(getDirectoryPath(symLink.fullPath), ignoreParentWatch);
|
||||
this.addFileOrFolderInFolder(baseFolder, symLink, ignoreWatchInvokedWithTriggerAsFileCreate);
|
||||
const baseFolder = this.ensureFolder(getDirectoryPath(symLink.fullPath), ignoreParentWatch, options);
|
||||
this.addFileOrFolderInFolder(baseFolder, symLink, ignoreWatchInvokedWithTriggerAsFileCreate, options);
|
||||
}
|
||||
else {
|
||||
const fullPath = getNormalizedAbsolutePath(fileOrDirectoryOrSymLink.path, this.currentDirectory);
|
||||
this.ensureFolder(getDirectoryPath(fullPath), ignoreParentWatch);
|
||||
this.ensureFolder(fullPath, ignoreWatchInvokedWithTriggerAsFileCreate);
|
||||
this.ensureFolder(getDirectoryPath(fullPath), ignoreParentWatch, options);
|
||||
this.ensureFolder(fullPath, ignoreWatchInvokedWithTriggerAsFileCreate, options);
|
||||
}
|
||||
}
|
||||
|
||||
private ensureFolder(fullPath: string, ignoreWatch: boolean | undefined): FsFolder {
|
||||
private ensureFolder(fullPath: string, ignoreWatch: boolean | undefined, options: Partial<WatchInvokeOptions> | undefined): FsFolder {
|
||||
const path = this.toPath(fullPath);
|
||||
let folder = this.fs.get(path) as FsFolder;
|
||||
if (!folder) {
|
||||
@@ -668,34 +593,39 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
const baseFullPath = getDirectoryPath(fullPath);
|
||||
if (fullPath !== baseFullPath) {
|
||||
// Add folder in the base folder
|
||||
const baseFolder = this.ensureFolder(baseFullPath, ignoreWatch);
|
||||
this.addFileOrFolderInFolder(baseFolder, folder, ignoreWatch);
|
||||
const baseFolder = this.ensureFolder(baseFullPath, ignoreWatch, options);
|
||||
this.addFileOrFolderInFolder(baseFolder, folder, ignoreWatch, options);
|
||||
}
|
||||
else {
|
||||
// root folder
|
||||
Debug.assert(this.fs.size === 0 || !!this.windowsStyleRoot);
|
||||
this.fs.set(path, folder);
|
||||
this.setInode(path);
|
||||
}
|
||||
}
|
||||
Debug.assert(isFsFolder(folder));
|
||||
return folder;
|
||||
}
|
||||
|
||||
private addFileOrFolderInFolder(folder: FsFolder, fileOrDirectory: FsFile | FsFolder | FsSymLink, ignoreWatch?: boolean) {
|
||||
private addFileOrFolderInFolder(folder: FsFolder, fileOrDirectory: FsFile | FsFolder | FsSymLink, ignoreWatch?: boolean, options?: Partial<WatchInvokeOptions>) {
|
||||
if (!this.fs.has(fileOrDirectory.path)) {
|
||||
insertSorted(folder.entries, fileOrDirectory, (a, b) => compareStringsCaseSensitive(getBaseFileName(a.path), getBaseFileName(b.path)));
|
||||
}
|
||||
folder.modifiedTime = this.now();
|
||||
this.fs.set(fileOrDirectory.path, fileOrDirectory);
|
||||
this.setInode(fileOrDirectory.path);
|
||||
|
||||
if (ignoreWatch) {
|
||||
return;
|
||||
}
|
||||
this.invokeFileAndFsWatches(fileOrDirectory.fullPath, FileWatcherEventKind.Created, fileOrDirectory.modifiedTime);
|
||||
this.invokeFileAndFsWatches(folder.fullPath, FileWatcherEventKind.Changed, folder.modifiedTime);
|
||||
const inodeWatching = this.inodeWatching;
|
||||
if (options?.skipInodeCheckOnCreate) this.inodeWatching = false;
|
||||
this.invokeFileAndFsWatches(fileOrDirectory.fullPath, FileWatcherEventKind.Created, fileOrDirectory.modifiedTime, options?.useTildeAsSuffixInRenameEventFileName);
|
||||
this.invokeFileAndFsWatches(folder.fullPath, FileWatcherEventKind.Changed, fileOrDirectory.modifiedTime, options?.useTildeAsSuffixInRenameEventFileName);
|
||||
this.inodeWatching = inodeWatching;
|
||||
}
|
||||
|
||||
private removeFileOrFolder(fileOrDirectory: FsFile | FsFolder | FsSymLink, isRemovableLeafFolder: (folder: FsFolder) => boolean, isRenaming = false) {
|
||||
private removeFileOrFolder(fileOrDirectory: FsFile | FsFolder | FsSymLink, isRenaming?: boolean, options?: Partial<WatchInvokeOptions>) {
|
||||
const basePath = getDirectoryPath(fileOrDirectory.path);
|
||||
const baseFolder = this.fs.get(basePath) as FsFolder;
|
||||
if (basePath !== fileOrDirectory.path) {
|
||||
@@ -708,20 +638,16 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
if (isFsFolder(fileOrDirectory)) {
|
||||
Debug.assert(fileOrDirectory.entries.length === 0 || isRenaming);
|
||||
}
|
||||
this.invokeFileAndFsWatches(fileOrDirectory.fullPath, FileWatcherEventKind.Deleted);
|
||||
this.invokeFileAndFsWatches(baseFolder.fullPath, FileWatcherEventKind.Changed, baseFolder.modifiedTime);
|
||||
if (basePath !== fileOrDirectory.path &&
|
||||
baseFolder.entries.length === 0 &&
|
||||
isRemovableLeafFolder(baseFolder)) {
|
||||
this.removeFileOrFolder(baseFolder, isRemovableLeafFolder);
|
||||
}
|
||||
if (!options?.ignoreDelete) this.invokeFileAndFsWatches(fileOrDirectory.fullPath, FileWatcherEventKind.Deleted, /*modifiedTime*/ undefined, options?.useTildeAsSuffixInRenameEventFileName);
|
||||
this.inodes?.delete(fileOrDirectory.path);
|
||||
if (!options?.ignoreDelete) this.invokeFileAndFsWatches(baseFolder.fullPath, FileWatcherEventKind.Changed, baseFolder.modifiedTime, options?.useTildeAsSuffixInRenameEventFileName);
|
||||
}
|
||||
|
||||
deleteFile(filePath: string) {
|
||||
const path = this.toFullPath(filePath);
|
||||
const currentEntry = this.fs.get(path) as FsFile;
|
||||
Debug.assert(isFsFile(currentEntry));
|
||||
this.removeFileOrFolder(currentEntry, returnFalse);
|
||||
this.removeFileOrFolder(currentEntry);
|
||||
}
|
||||
|
||||
deleteFolder(folderPath: string, recursive?: boolean) {
|
||||
@@ -735,11 +661,11 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
this.deleteFolder(fsEntry.fullPath, recursive);
|
||||
}
|
||||
else {
|
||||
this.removeFileOrFolder(fsEntry, returnFalse);
|
||||
this.removeFileOrFolder(fsEntry);
|
||||
}
|
||||
});
|
||||
}
|
||||
this.removeFileOrFolder(currentEntry, returnFalse);
|
||||
this.removeFileOrFolder(currentEntry);
|
||||
}
|
||||
|
||||
private watchFileWorker(fileName: string, cb: FileWatcherCallback, pollingInterval: PollingInterval) {
|
||||
@@ -750,69 +676,73 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
);
|
||||
}
|
||||
|
||||
private fsWatch(
|
||||
private fsWatchWorker(
|
||||
fileOrDirectory: string,
|
||||
_entryKind: FileSystemEntryKind,
|
||||
cb: FsWatchCallback,
|
||||
recursive: boolean,
|
||||
fallbackPollingInterval: PollingInterval,
|
||||
fallbackOptions: WatchOptions | undefined): FileWatcher {
|
||||
return this.runWithFallbackPolling ?
|
||||
this.watchFile(
|
||||
fileOrDirectory,
|
||||
createFileWatcherCallback(cb),
|
||||
fallbackPollingInterval,
|
||||
fallbackOptions
|
||||
) :
|
||||
createWatcher(
|
||||
recursive ? this.fsWatchesRecursive : this.fsWatches,
|
||||
this.toFullPath(fileOrDirectory),
|
||||
{
|
||||
directoryName: fileOrDirectory,
|
||||
cb,
|
||||
fallbackPollingInterval,
|
||||
fallbackOptions
|
||||
}
|
||||
);
|
||||
cb: FsWatchCallback,
|
||||
) {
|
||||
if (this.runWithFallbackPolling) throw new Error("Need to use fallback polling instead of file system native watching");
|
||||
const path = this.toFullPath(fileOrDirectory);
|
||||
// Error if the path does not exist
|
||||
if (this.inodeWatching && !this.inodes?.has(path)) throw new Error();
|
||||
const result = createWatcher(
|
||||
recursive ? this.fsWatchesRecursive : this.fsWatches,
|
||||
path,
|
||||
{
|
||||
directoryName: fileOrDirectory,
|
||||
cb,
|
||||
inode: this.inodes?.get(path)
|
||||
}
|
||||
) as FsWatchWorkerWatcher;
|
||||
result.on = noop;
|
||||
return result;
|
||||
}
|
||||
|
||||
invokeFileWatcher(fileFullPath: string, eventKind: FileWatcherEventKind, modifiedTime?: Date, useFileNameInCallback?: boolean) {
|
||||
invokeWatcherCallbacks(this.watchedFiles.get(this.toPath(fileFullPath)), ({ cb, fileName }) => cb(useFileNameInCallback ? fileName : fileFullPath, eventKind, modifiedTime));
|
||||
}
|
||||
|
||||
private fsWatchCallback(map: MultiMap<Path, TestFsWatcher>, fullPath: string, eventName: "rename" | "change", modifiedTime?: Date, entryFullPath?: string) {
|
||||
invokeWatcherCallbacks(map.get(this.toPath(fullPath)), ({ cb }) => cb(eventName, entryFullPath ? this.getRelativePathToDirectory(fullPath, entryFullPath) : "", modifiedTime));
|
||||
private fsWatchCallback(map: MultiMap<Path, TestFsWatcher>, fullPath: string, eventName: "rename" | "change", modifiedTime: Date | undefined, entryFullPath: string | undefined, useTildeSuffix: boolean | undefined) {
|
||||
const path = this.toPath(fullPath);
|
||||
const currentInode = this.inodes?.get(path);
|
||||
invokeWatcherCallbacks(map.get(path), ({ cb, inode }) => {
|
||||
// TODO::
|
||||
if (this.inodeWatching && inode !== undefined && inode !== currentInode) return;
|
||||
let relativeFileName = (entryFullPath ? this.getRelativePathToDirectory(fullPath, entryFullPath) : "");
|
||||
if (useTildeSuffix) relativeFileName = (relativeFileName ? relativeFileName : getBaseFileName(fullPath)) + "~";
|
||||
cb(eventName, relativeFileName, modifiedTime);
|
||||
});
|
||||
}
|
||||
|
||||
invokeFsWatchesCallbacks(fullPath: string, eventName: "rename" | "change", modifiedTime?: Date, entryFullPath?: string) {
|
||||
this.fsWatchCallback(this.fsWatches, fullPath, eventName, modifiedTime, entryFullPath);
|
||||
invokeFsWatchesCallbacks(fullPath: string, eventName: "rename" | "change", modifiedTime?: Date, entryFullPath?: string, useTildeSuffix?: boolean) {
|
||||
this.fsWatchCallback(this.fsWatches, fullPath, eventName, modifiedTime, entryFullPath, useTildeSuffix);
|
||||
}
|
||||
|
||||
invokeFsWatchesRecursiveCallbacks(fullPath: string, eventName: "rename" | "change", modifiedTime?: Date, entryFullPath?: string) {
|
||||
this.fsWatchCallback(this.fsWatchesRecursive, fullPath, eventName, modifiedTime, entryFullPath);
|
||||
invokeFsWatchesRecursiveCallbacks(fullPath: string, eventName: "rename" | "change", modifiedTime?: Date, entryFullPath?: string, useTildeSuffix?: boolean) {
|
||||
this.fsWatchCallback(this.fsWatchesRecursive, fullPath, eventName, modifiedTime, entryFullPath, useTildeSuffix);
|
||||
}
|
||||
|
||||
private getRelativePathToDirectory(directoryFullPath: string, fileFullPath: string) {
|
||||
return getRelativePathToDirectoryOrUrl(directoryFullPath, fileFullPath, this.currentDirectory, this.getCanonicalFileName, /*isAbsolutePathAnUrl*/ false);
|
||||
}
|
||||
|
||||
private invokeRecursiveFsWatches(fullPath: string, eventName: "rename" | "change", modifiedTime?: Date, entryFullPath?: string) {
|
||||
this.invokeFsWatchesRecursiveCallbacks(fullPath, eventName, modifiedTime, entryFullPath);
|
||||
private invokeRecursiveFsWatches(fullPath: string, eventName: "rename" | "change", modifiedTime?: Date, entryFullPath?: string, useTildeSuffix?: boolean) {
|
||||
this.invokeFsWatchesRecursiveCallbacks(fullPath, eventName, modifiedTime, entryFullPath, useTildeSuffix);
|
||||
const basePath = getDirectoryPath(fullPath);
|
||||
if (this.getCanonicalFileName(fullPath) !== this.getCanonicalFileName(basePath)) {
|
||||
this.invokeRecursiveFsWatches(basePath, eventName, modifiedTime, entryFullPath || fullPath);
|
||||
this.invokeRecursiveFsWatches(basePath, eventName, modifiedTime, entryFullPath || fullPath, useTildeSuffix);
|
||||
}
|
||||
}
|
||||
|
||||
private invokeFsWatches(fullPath: string, eventName: "rename" | "change", modifiedTime?: Date) {
|
||||
this.invokeFsWatchesCallbacks(fullPath, eventName, modifiedTime);
|
||||
this.invokeFsWatchesCallbacks(getDirectoryPath(fullPath), eventName, modifiedTime, fullPath);
|
||||
this.invokeRecursiveFsWatches(fullPath, eventName, modifiedTime);
|
||||
private invokeFsWatches(fullPath: string, eventName: "rename" | "change", modifiedTime: Date | undefined, useTildeSuffix: boolean | undefined) {
|
||||
this.invokeFsWatchesCallbacks(fullPath, eventName, modifiedTime, fullPath, useTildeSuffix);
|
||||
this.invokeFsWatchesCallbacks(getDirectoryPath(fullPath), eventName, modifiedTime, fullPath, useTildeSuffix);
|
||||
this.invokeRecursiveFsWatches(fullPath, eventName, modifiedTime, /*entryFullPath*/ undefined, useTildeSuffix);
|
||||
}
|
||||
|
||||
private invokeFileAndFsWatches(fileOrFolderFullPath: string, eventKind: FileWatcherEventKind, modifiedTime?: Date) {
|
||||
private invokeFileAndFsWatches(fileOrFolderFullPath: string, eventKind: FileWatcherEventKind, modifiedTime?: Date, useTildeSuffix?: boolean) {
|
||||
this.invokeFileWatcher(fileOrFolderFullPath, eventKind, modifiedTime);
|
||||
this.invokeFsWatches(fileOrFolderFullPath, eventKind === FileWatcherEventKind.Changed ? "change" : "rename", modifiedTime);
|
||||
this.invokeFsWatches(fileOrFolderFullPath, eventKind === FileWatcherEventKind.Changed ? "change" : "rename", modifiedTime, useTildeSuffix);
|
||||
}
|
||||
|
||||
private toFsEntry(path: string): FSEntryBase {
|
||||
@@ -881,6 +811,10 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
return this.getRealFsEntry(isFsFolder, path, fsEntry);
|
||||
}
|
||||
|
||||
fileSystemEntryExists(s: string, entryKind: FileSystemEntryKind) {
|
||||
return entryKind === FileSystemEntryKind.File ? this.fileExists(s) : this.directoryExists(s);
|
||||
}
|
||||
|
||||
fileExists(s: string) {
|
||||
const path = this.toFullPath(s);
|
||||
return !!this.getRealFile(path);
|
||||
@@ -1046,11 +980,11 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
}
|
||||
}
|
||||
|
||||
prependFile(path: string, content: string, options?: Partial<ReloadWatchInvokeOptions>): void {
|
||||
prependFile(path: string, content: string, options?: Partial<WatchInvokeOptions>): void {
|
||||
this.modifyFile(path, content + this.readFile(path), options);
|
||||
}
|
||||
|
||||
appendFile(path: string, content: string, options?: Partial<ReloadWatchInvokeOptions>): void {
|
||||
appendFile(path: string, content: string, options?: Partial<WatchInvokeOptions>): void {
|
||||
this.modifyFile(path, this.readFile(path) + content, options);
|
||||
}
|
||||
|
||||
@@ -1095,14 +1029,14 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
}
|
||||
|
||||
writtenFiles?: ESMap<Path, number>;
|
||||
diff(baseline: string[], base: ESMap<string, FSEntry> = new Map()) {
|
||||
this.fs.forEach(newFsEntry => {
|
||||
diffFsEntry(baseline, base.get(newFsEntry.path), newFsEntry, this.writtenFiles);
|
||||
diff(baseline: string[], base: ESMap<Path, FSEntry> = new Map()) {
|
||||
this.fs.forEach((newFsEntry, path) => {
|
||||
diffFsEntry(baseline, base.get(path), newFsEntry, this.inodes?.get(path), this.writtenFiles);
|
||||
});
|
||||
base.forEach(oldFsEntry => {
|
||||
const newFsEntry = this.fs.get(oldFsEntry.path);
|
||||
base.forEach((oldFsEntry, path) => {
|
||||
const newFsEntry = this.fs.get(path);
|
||||
if (!newFsEntry) {
|
||||
diffFsEntry(baseline, oldFsEntry, newFsEntry, this.writtenFiles);
|
||||
diffFsEntry(baseline, oldFsEntry, newFsEntry, this.inodes?.get(path), this.writtenFiles);
|
||||
}
|
||||
});
|
||||
baseline.push("");
|
||||
@@ -1150,86 +1084,77 @@ interface Array<T> { length: number; [n: number]: T; }`
|
||||
}
|
||||
}
|
||||
|
||||
function diffFsFile(baseline: string[], fsEntry: FsFile) {
|
||||
baseline.push(`//// [${fsEntry.fullPath}]\r\n${fsEntry.content}`, "");
|
||||
function diffFsFile(baseline: string[], fsEntry: FsFile, newInode: number | undefined) {
|
||||
baseline.push(`//// [${fsEntry.fullPath}]${inodeString(newInode)}\r\n${fsEntry.content}`, "");
|
||||
}
|
||||
function diffFsSymLink(baseline: string[], fsEntry: FsSymLink) {
|
||||
baseline.push(`//// [${fsEntry.fullPath}] symlink(${fsEntry.symLink})`);
|
||||
function diffFsSymLink(baseline: string[], fsEntry: FsSymLink, newInode: number | undefined) {
|
||||
baseline.push(`//// [${fsEntry.fullPath}] symlink(${fsEntry.symLink})${inodeString(newInode)}`);
|
||||
}
|
||||
function diffFsEntry(baseline: string[], oldFsEntry: FSEntry | undefined, newFsEntry: FSEntry | undefined, writtenFiles: ESMap<string, any> | undefined): void {
|
||||
function inodeString(inode: number | undefined) {
|
||||
return inode !== undefined ? ` Inode:: ${inode}` : "";
|
||||
}
|
||||
function diffFsEntry(baseline: string[], oldFsEntry: FSEntry | undefined, newFsEntry: FSEntry | undefined, newInode: number | undefined, writtenFiles: ESMap<string, any> | undefined): void {
|
||||
const file = newFsEntry && newFsEntry.fullPath;
|
||||
if (isFsFile(oldFsEntry)) {
|
||||
if (isFsFile(newFsEntry)) {
|
||||
if (oldFsEntry.content !== newFsEntry.content) {
|
||||
diffFsFile(baseline, newFsEntry);
|
||||
diffFsFile(baseline, newFsEntry, newInode);
|
||||
}
|
||||
else if (oldFsEntry.modifiedTime !== newFsEntry.modifiedTime) {
|
||||
if (oldFsEntry.fullPath !== newFsEntry.fullPath) {
|
||||
baseline.push(`//// [${file}] file was renamed from file ${oldFsEntry.fullPath}`);
|
||||
baseline.push(`//// [${file}] file was renamed from file ${oldFsEntry.fullPath}${inodeString(newInode)}`);
|
||||
}
|
||||
else if (writtenFiles && !writtenFiles.has(newFsEntry.path)) {
|
||||
baseline.push(`//// [${file}] file changed its modified time`);
|
||||
baseline.push(`//// [${file}] file changed its modified time${inodeString(newInode)}`);
|
||||
}
|
||||
else {
|
||||
baseline.push(`//// [${file}] file written with same contents`);
|
||||
baseline.push(`//// [${file}] file written with same contents${inodeString(newInode)}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
baseline.push(`//// [${oldFsEntry.fullPath}] deleted`);
|
||||
if (isFsSymLink(newFsEntry)) {
|
||||
diffFsSymLink(baseline, newFsEntry);
|
||||
diffFsSymLink(baseline, newFsEntry, newInode);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (isFsSymLink(oldFsEntry)) {
|
||||
if (isFsSymLink(newFsEntry)) {
|
||||
if (oldFsEntry.symLink !== newFsEntry.symLink) {
|
||||
diffFsSymLink(baseline, newFsEntry);
|
||||
diffFsSymLink(baseline, newFsEntry, newInode);
|
||||
}
|
||||
else if (oldFsEntry.modifiedTime !== newFsEntry.modifiedTime) {
|
||||
if (oldFsEntry.fullPath !== newFsEntry.fullPath) {
|
||||
baseline.push(`//// [${file}] symlink was renamed from symlink ${oldFsEntry.fullPath}`);
|
||||
baseline.push(`//// [${file}] symlink was renamed from symlink ${oldFsEntry.fullPath}${inodeString(newInode)}`);
|
||||
}
|
||||
else if (writtenFiles && !writtenFiles.has(newFsEntry.path)) {
|
||||
baseline.push(`//// [${file}] symlink changed its modified time`);
|
||||
baseline.push(`//// [${file}] symlink changed its modified time${inodeString(newInode)}`);
|
||||
}
|
||||
else {
|
||||
baseline.push(`//// [${file}] symlink written with same link`);
|
||||
baseline.push(`//// [${file}] symlink written with same link${inodeString(newInode)}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
baseline.push(`//// [${oldFsEntry.fullPath}] deleted symlink`);
|
||||
if (isFsFile(newFsEntry)) {
|
||||
diffFsFile(baseline, newFsEntry);
|
||||
diffFsFile(baseline, newFsEntry, newInode);
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (isFsFile(newFsEntry)) {
|
||||
diffFsFile(baseline, newFsEntry);
|
||||
diffFsFile(baseline, newFsEntry, newInode);
|
||||
}
|
||||
else if (isFsSymLink(newFsEntry)) {
|
||||
diffFsSymLink(baseline, newFsEntry);
|
||||
diffFsSymLink(baseline, newFsEntry, newInode);
|
||||
}
|
||||
}
|
||||
|
||||
function serializeTestFsWatcher({ directoryName, fallbackPollingInterval, fallbackOptions }: TestFsWatcher) {
|
||||
function serializeTestFsWatcher({ directoryName, inode }: TestFsWatcher) {
|
||||
return {
|
||||
directoryName,
|
||||
fallbackPollingInterval,
|
||||
fallbackOptions: serializeWatchOptions(fallbackOptions)
|
||||
};
|
||||
}
|
||||
|
||||
function serializeWatchOptions(fallbackOptions: WatchOptions | undefined) {
|
||||
if (!fallbackOptions) return undefined;
|
||||
const { watchFile, watchDirectory, fallbackPolling, ...rest } = fallbackOptions;
|
||||
return {
|
||||
watchFile: watchFile !== undefined ? WatchFileKind[watchFile] : undefined,
|
||||
watchDirectory: watchDirectory !== undefined ? WatchDirectoryKind[watchDirectory] : undefined,
|
||||
fallbackPolling: fallbackPolling !== undefined ? PollingWatchKind[fallbackPolling] : undefined,
|
||||
...rest
|
||||
inode,
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
@@ -6,11 +6,10 @@ namespace ts.tscWatch {
|
||||
commandLineArgs: ["-b", "-w", "-verbose"],
|
||||
sys: () => createWatchedSystem(
|
||||
[
|
||||
libFile,
|
||||
{ path: libFile.path, content: libContent },
|
||||
{ path: `${projectRoot}/a.js`, content: "" },
|
||||
{ path: `${projectRoot}/b.ts`, content: "" },
|
||||
{ path: `${projectRoot}/tsconfig.json`, content: JSON.stringify({ compilerOptions: { allowJs: true, noEmit: true } }) },
|
||||
{ path: libFile.path, content: libContent }
|
||||
],
|
||||
{ currentDirectory: projectRoot }
|
||||
),
|
||||
|
||||
@@ -6,21 +6,12 @@ namespace ts.tscWatch {
|
||||
scenario,
|
||||
subScenario: `emit with outFile or out setting/${subScenario}`,
|
||||
commandLineArgs: ["--w", "-p", "/a/tsconfig.json"],
|
||||
sys: () => {
|
||||
const config: File = {
|
||||
path: "/a/tsconfig.json",
|
||||
content: JSON.stringify({ compilerOptions: { out, outFile } })
|
||||
};
|
||||
const f1: File = {
|
||||
path: "/a/a.ts",
|
||||
content: "let x = 1"
|
||||
};
|
||||
const f2: File = {
|
||||
path: "/a/b.ts",
|
||||
content: "let y = 1"
|
||||
};
|
||||
return createWatchedSystem([f1, f2, config, libFile]);
|
||||
},
|
||||
sys: () => createWatchedSystem({
|
||||
"/a/a.ts": "let x = 1",
|
||||
"/a/b.ts": "let y = 1",
|
||||
"/a/tsconfig.json": JSON.stringify({ compilerOptions: { out, outFile } }),
|
||||
[libFile.path]: libFile.content,
|
||||
}),
|
||||
changes: [
|
||||
{
|
||||
caption: "Make change in the file",
|
||||
|
||||
@@ -20,7 +20,7 @@ namespace ts.tscWatch {
|
||||
scenario: "forceConsistentCasingInFileNames",
|
||||
subScenario,
|
||||
commandLineArgs: ["--w", "--p", tsconfig.path],
|
||||
sys: () => createWatchedSystem([loggerFile, anotherFile, tsconfig, libFile, tsconfig]),
|
||||
sys: () => createWatchedSystem([loggerFile, anotherFile, tsconfig, libFile]),
|
||||
changes
|
||||
});
|
||||
}
|
||||
|
||||
@@ -7,10 +7,6 @@ namespace ts.tscWatch {
|
||||
export import libFile = TestFSWithWatch.libFile;
|
||||
export import createWatchedSystem = TestFSWithWatch.createWatchedSystem;
|
||||
export import checkArray = TestFSWithWatch.checkArray;
|
||||
export import checkWatchedFiles = TestFSWithWatch.checkWatchedFiles;
|
||||
export import checkWatchedFilesDetailed = TestFSWithWatch.checkWatchedFilesDetailed;
|
||||
export import checkWatchedDirectories = TestFSWithWatch.checkWatchedDirectories;
|
||||
export import checkWatchedDirectoriesDetailed = TestFSWithWatch.checkWatchedDirectoriesDetailed;
|
||||
export import checkOutputContains = TestFSWithWatch.checkOutputContains;
|
||||
export import checkOutputDoesNotContain = TestFSWithWatch.checkOutputDoesNotContain;
|
||||
|
||||
@@ -436,7 +432,7 @@ namespace ts.tscWatch {
|
||||
return sys;
|
||||
}
|
||||
|
||||
export function createSystemWithSolutionBuild(solutionRoots: readonly string[], files: readonly TestFSWithWatch.FileOrFolderOrSymLink[], params?: TestFSWithWatch.TestServerHostCreationParameters) {
|
||||
export function createSystemWithSolutionBuild(solutionRoots: readonly string[], files: TestFSWithWatch.FileOrFolderOrSymLinkMap | readonly TestFSWithWatch.FileOrFolderOrSymLink[], params?: TestFSWithWatch.TestServerHostCreationParameters) {
|
||||
return solutionBuildWithBaseline(createWatchedSystem(files, params), solutionRoots);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -581,5 +581,141 @@ namespace ts.tscWatch {
|
||||
verifyWorker("-extendedDiagnostics");
|
||||
});
|
||||
});
|
||||
|
||||
verifyTscWatch({
|
||||
scenario,
|
||||
subScenario: `fsWatch/when using file watching thats when rename occurs when file is still on the disk`,
|
||||
commandLineArgs: ["-w", "--extendedDiagnostics"],
|
||||
sys: () => createWatchedSystem(
|
||||
{
|
||||
[libFile.path]: libFile.content,
|
||||
[`${projectRoot}/main.ts`]: `import { foo } from "./foo"; foo();`,
|
||||
[`${projectRoot}/foo.ts`]: `export declare function foo(): string;`,
|
||||
[`${projectRoot}/tsconfig.json`]: JSON.stringify({
|
||||
watchOptions: { watchFile: "useFsEvents" },
|
||||
files: ["foo.ts", "main.ts"]
|
||||
}),
|
||||
},
|
||||
{ currentDirectory: projectRoot, }
|
||||
),
|
||||
changes: [
|
||||
{
|
||||
caption: "Introduce error such that when callback happens file is already appeared",
|
||||
// vm's wq generates this kind of event
|
||||
// Skip delete event so inode changes but when the create's rename occurs file is on disk
|
||||
change: sys => sys.modifyFile(`${projectRoot}/foo.ts`, `export declare function foo2(): string;`, {
|
||||
invokeFileDeleteCreateAsPartInsteadOfChange: true,
|
||||
ignoreDelete: true,
|
||||
}),
|
||||
timeouts: sys => sys.checkTimeoutQueueLengthAndRun(1),
|
||||
},
|
||||
{
|
||||
caption: "Replace file with rename event that fixes error",
|
||||
change: sys => sys.modifyFile(`${projectRoot}/foo.ts`, `export declare function foo(): string;`, { invokeFileDeleteCreateAsPartInsteadOfChange: true, }),
|
||||
timeouts: sys => sys.checkTimeoutQueueLengthAndRun(1),
|
||||
},
|
||||
]
|
||||
});
|
||||
|
||||
describe("with fsWatch on inodes", () => {
|
||||
verifyTscWatch({
|
||||
scenario,
|
||||
subScenario: `fsWatch/when using file watching thats on inode`,
|
||||
commandLineArgs: ["-w", "--extendedDiagnostics"],
|
||||
sys: () => createWatchedSystem(
|
||||
{
|
||||
[libFile.path]: libFile.content,
|
||||
[`${projectRoot}/main.ts`]: `import { foo } from "./foo"; foo();`,
|
||||
[`${projectRoot}/foo.d.ts`]: `export function foo(): string;`,
|
||||
[`${projectRoot}/tsconfig.json`]: JSON.stringify({ watchOptions: { watchFile: "useFsEvents" }, files: ["foo.d.ts", "main.ts"] }),
|
||||
},
|
||||
{
|
||||
currentDirectory: projectRoot,
|
||||
inodeWatching: true
|
||||
}
|
||||
),
|
||||
changes: [
|
||||
{
|
||||
caption: "Replace file with rename event that introduces error",
|
||||
change: sys => sys.modifyFile(`${projectRoot}/foo.d.ts`, `export function foo2(): string;`, { invokeFileDeleteCreateAsPartInsteadOfChange: true }),
|
||||
timeouts: sys => sys.checkTimeoutQueueLengthAndRun(2),
|
||||
},
|
||||
{
|
||||
caption: "Replace file with rename event that fixes error",
|
||||
change: sys => sys.modifyFile(`${projectRoot}/foo.d.ts`, `export function foo(): string;`, { invokeFileDeleteCreateAsPartInsteadOfChange: true }),
|
||||
timeouts: sys => sys.checkTimeoutQueueLengthAndRun(2),
|
||||
},
|
||||
]
|
||||
});
|
||||
|
||||
verifyTscWatch({
|
||||
scenario,
|
||||
subScenario: `fsWatch/when using file watching thats on inode when rename event ends with tilde`,
|
||||
commandLineArgs: ["-w", "--extendedDiagnostics"],
|
||||
sys: () => createWatchedSystem(
|
||||
{
|
||||
[libFile.path]: libFile.content,
|
||||
[`${projectRoot}/main.ts`]: `import { foo } from "./foo"; foo();`,
|
||||
[`${projectRoot}/foo.d.ts`]: `export function foo(): string;`,
|
||||
[`${projectRoot}/tsconfig.json`]: JSON.stringify({ watchOptions: { watchFile: "useFsEvents" }, files: ["foo.d.ts", "main.ts"] }),
|
||||
},
|
||||
{
|
||||
currentDirectory: projectRoot,
|
||||
inodeWatching: true
|
||||
}
|
||||
),
|
||||
changes: [
|
||||
{
|
||||
caption: "Replace file with rename event that introduces error",
|
||||
change: sys => sys.modifyFile(`${projectRoot}/foo.d.ts`, `export function foo2(): string;`, { invokeFileDeleteCreateAsPartInsteadOfChange: true, useTildeAsSuffixInRenameEventFileName: true }),
|
||||
timeouts: sys => sys.checkTimeoutQueueLengthAndRun(2),
|
||||
},
|
||||
{
|
||||
caption: "Replace file with rename event that fixes error",
|
||||
change: sys => sys.modifyFile(`${projectRoot}/foo.d.ts`, `export function foo(): string;`, { invokeFileDeleteCreateAsPartInsteadOfChange: true, useTildeAsSuffixInRenameEventFileName: true }),
|
||||
timeouts: sys => sys.checkTimeoutQueueLengthAndRun(2),
|
||||
},
|
||||
]
|
||||
});
|
||||
|
||||
verifyTscWatch({
|
||||
scenario,
|
||||
subScenario: `fsWatch/when using file watching thats on inode when rename occurs when file is still on the disk`,
|
||||
commandLineArgs: ["-w", "--extendedDiagnostics"],
|
||||
sys: () => createWatchedSystem(
|
||||
{
|
||||
[libFile.path]: libFile.content,
|
||||
[`${projectRoot}/main.ts`]: `import { foo } from "./foo"; foo();`,
|
||||
[`${projectRoot}/foo.ts`]: `export declare function foo(): string;`,
|
||||
[`${projectRoot}/tsconfig.json`]: JSON.stringify({
|
||||
watchOptions: { watchFile: "useFsEvents" },
|
||||
files: ["foo.ts", "main.ts"]
|
||||
}),
|
||||
},
|
||||
{
|
||||
currentDirectory: projectRoot,
|
||||
inodeWatching: true,
|
||||
}
|
||||
),
|
||||
changes: [
|
||||
{
|
||||
caption: "Introduce error such that when callback happens file is already appeared",
|
||||
// vm's wq generates this kind of event
|
||||
// Skip delete event so inode changes but when the create's rename occurs file is on disk
|
||||
change: sys => sys.modifyFile(`${projectRoot}/foo.ts`, `export declare function foo2(): string;`, {
|
||||
invokeFileDeleteCreateAsPartInsteadOfChange: true,
|
||||
ignoreDelete: true,
|
||||
skipInodeCheckOnCreate: true
|
||||
}),
|
||||
timeouts: sys => sys.checkTimeoutQueueLengthAndRun(1),
|
||||
},
|
||||
{
|
||||
caption: "Replace file with rename event that fixes error",
|
||||
change: sys => sys.modifyFile(`${projectRoot}/foo.ts`, `export declare function foo(): string;`, { invokeFileDeleteCreateAsPartInsteadOfChange: true, }),
|
||||
timeouts: sys => sys.checkTimeoutQueueLengthAndRun(1),
|
||||
},
|
||||
]
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,8 +1,4 @@
|
||||
namespace ts.projectSystem {
|
||||
function getNumberOfWatchesInvokedForRecursiveWatches(recursiveWatchedDirs: string[], file: string) {
|
||||
return countWhere(recursiveWatchedDirs, dir => file.length > dir.length && startsWith(file, dir) && file[dir.length] === directorySeparator);
|
||||
}
|
||||
|
||||
describe("unittests:: tsserver:: CachingFileSystemInformation:: tsserverProjectSystem CachingFileSystemInformation", () => {
|
||||
enum CalledMapsWithSingleArg {
|
||||
fileExists = "fileExists",
|
||||
@@ -15,7 +11,7 @@ namespace ts.projectSystem {
|
||||
}
|
||||
type CalledMaps = CalledMapsWithSingleArg | CalledMapsWithFiveArgs;
|
||||
type CalledWithFiveArgs = [readonly string[], readonly string[], readonly string[], number];
|
||||
function createCallsTrackingHost(host: TestServerHost) {
|
||||
function createLoggerTrackingHostCalls(host: TestServerHost) {
|
||||
const calledMaps: Record<CalledMapsWithSingleArg, MultiMap<string, true>> & Record<CalledMapsWithFiveArgs, MultiMap<string, CalledWithFiveArgs>> = {
|
||||
fileExists: setCallsTrackingWithSingleArgFn(CalledMapsWithSingleArg.fileExists),
|
||||
directoryExists: setCallsTrackingWithSingleArgFn(CalledMapsWithSingleArg.directoryExists),
|
||||
@@ -24,15 +20,7 @@ namespace ts.projectSystem {
|
||||
readDirectory: setCallsTrackingWithFiveArgFn(CalledMapsWithFiveArgs.readDirectory)
|
||||
};
|
||||
|
||||
return {
|
||||
verifyNoCall,
|
||||
verifyCalledOnEachEntryNTimes,
|
||||
verifyCalledOnEachEntry,
|
||||
verifyNoHostCalls,
|
||||
verifyNoHostCallsExceptFileExistsOnce,
|
||||
verifyCalledOn,
|
||||
clear
|
||||
};
|
||||
return logCacheAndClear;
|
||||
|
||||
function setCallsTrackingWithSingleArgFn(prop: CalledMapsWithSingleArg) {
|
||||
const calledMap = createMultiMap<true>();
|
||||
@@ -54,49 +42,25 @@ namespace ts.projectSystem {
|
||||
return calledMap;
|
||||
}
|
||||
|
||||
function verifyCalledOn(callback: CalledMaps, name: string) {
|
||||
const calledMap = calledMaps[callback];
|
||||
const result = calledMap.get(name);
|
||||
assert.isTrue(result && !!result.length, `${callback} should be called with name: ${name}: ${arrayFrom(calledMap.keys())}`);
|
||||
function logCacheEntry(logger: Logger, callback: CalledMaps) {
|
||||
const result = arrayFrom<[string, (true | CalledWithFiveArgs)[]], { key: string, count: number }>(calledMaps[callback].entries(), ([key, arr]) => ({ key, count: arr.length }));
|
||||
logger.info(`${callback}:: ${JSON.stringify(result)}`);
|
||||
calledMaps[callback].clear();
|
||||
}
|
||||
|
||||
function verifyNoCall(callback: CalledMaps) {
|
||||
const calledMap = calledMaps[callback];
|
||||
assert.equal(calledMap.size, 0, `${callback} shouldn't be called: ${arrayFrom(calledMap.keys())}`);
|
||||
function logCacheAndClear(logger: Logger) {
|
||||
logCacheEntry(logger, CalledMapsWithSingleArg.fileExists);
|
||||
logCacheEntry(logger, CalledMapsWithSingleArg.directoryExists);
|
||||
logCacheEntry(logger, CalledMapsWithSingleArg.getDirectories);
|
||||
logCacheEntry(logger, CalledMapsWithSingleArg.readFile);
|
||||
logCacheEntry(logger, CalledMapsWithFiveArgs.readDirectory);
|
||||
}
|
||||
}
|
||||
|
||||
function verifyCalledOnEachEntry(callback: CalledMaps, expectedKeys: ESMap<string, number>) {
|
||||
TestFSWithWatch.checkMap<true | CalledWithFiveArgs>(callback, calledMaps[callback], expectedKeys);
|
||||
}
|
||||
|
||||
function verifyCalledOnEachEntryNTimes(callback: CalledMaps, expectedKeys: readonly string[], nTimes: number) {
|
||||
TestFSWithWatch.checkMap<true | CalledWithFiveArgs>(callback, calledMaps[callback], expectedKeys, nTimes);
|
||||
}
|
||||
|
||||
function verifyNoHostCalls() {
|
||||
iterateOnCalledMaps(key => verifyNoCall(key));
|
||||
}
|
||||
|
||||
function verifyNoHostCallsExceptFileExistsOnce(expectedKeys: readonly string[]) {
|
||||
verifyCalledOnEachEntryNTimes(CalledMapsWithSingleArg.fileExists, expectedKeys, 1);
|
||||
verifyNoCall(CalledMapsWithSingleArg.directoryExists);
|
||||
verifyNoCall(CalledMapsWithSingleArg.getDirectories);
|
||||
verifyNoCall(CalledMapsWithSingleArg.readFile);
|
||||
verifyNoCall(CalledMapsWithFiveArgs.readDirectory);
|
||||
}
|
||||
|
||||
function clear() {
|
||||
iterateOnCalledMaps(key => calledMaps[key].clear());
|
||||
}
|
||||
|
||||
function iterateOnCalledMaps(cb: (key: CalledMaps) => void) {
|
||||
for (const key in CalledMapsWithSingleArg) {
|
||||
cb(key as CalledMapsWithSingleArg);
|
||||
}
|
||||
for (const key in CalledMapsWithFiveArgs) {
|
||||
cb(key as CalledMapsWithFiveArgs);
|
||||
}
|
||||
}
|
||||
function logSemanticDiagnostics(projectService: server.ProjectService, project: server.Project, file: File) {
|
||||
const diags = project.getLanguageService().getSemanticDiagnostics(file.path);
|
||||
projectService.logger.info(`getSemanticDiagnostics:: ${file.path}:: ${diags.length}`);
|
||||
diags.forEach(d => projectService.logger.info(formatDiagnostic(d, project)));
|
||||
}
|
||||
|
||||
it("works using legacy resolution logic", () => {
|
||||
@@ -112,108 +76,50 @@ namespace ts.projectSystem {
|
||||
};
|
||||
|
||||
const host = createServerHost([root, imported]);
|
||||
const projectService = createProjectService(host);
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
projectService.setCompilerOptionsForInferredProjects({ module: ModuleKind.AMD, noLib: true });
|
||||
projectService.openClientFile(root.path);
|
||||
checkNumberOfProjects(projectService, { inferredProjects: 1 });
|
||||
const project = projectService.inferredProjects[0];
|
||||
const rootScriptInfo = project.getRootScriptInfos()[0];
|
||||
assert.equal(rootScriptInfo.fileName, root.path);
|
||||
|
||||
// ensure that imported file was found
|
||||
verifyImportedDiagnostics();
|
||||
logSemanticDiagnostics(projectService, project, imported);
|
||||
|
||||
const callsTrackingHost = createCallsTrackingHost(host);
|
||||
const logCacheAndClear = createLoggerTrackingHostCalls(host);
|
||||
|
||||
// trigger synchronization to make sure that import will be fetched from the cache
|
||||
// ensure file has correct number of errors after edit
|
||||
editContent(`import {x} from "f1";
|
||||
var x: string = 1;`);
|
||||
verifyImportedDiagnostics();
|
||||
callsTrackingHost.verifyNoHostCalls();
|
||||
logSemanticDiagnostics(projectService, project, imported);
|
||||
logCacheAndClear(projectService.logger);
|
||||
|
||||
// trigger synchronization to make sure that the host will try to find 'f2' module on disk
|
||||
editContent(`import {x} from "f2"`);
|
||||
try {
|
||||
// trigger synchronization to make sure that the host will try to find 'f2' module on disk
|
||||
verifyImportedDiagnostics();
|
||||
assert.isTrue(false, `should not find file '${imported.path}'`);
|
||||
logSemanticDiagnostics(projectService, project, imported);
|
||||
}
|
||||
catch (e) {
|
||||
assert.isTrue(e.message.indexOf(`Could not find source file: '${imported.path}'.`) === 0, `Actual: ${e.message}`);
|
||||
projectService.logger.info(e.message);
|
||||
}
|
||||
const f2Lookups = getLocationsForModuleLookup("f2");
|
||||
callsTrackingHost.verifyCalledOnEachEntryNTimes(CalledMapsWithSingleArg.fileExists, f2Lookups, 1);
|
||||
const f2DirLookups = getLocationsForDirectoryLookup();
|
||||
callsTrackingHost.verifyCalledOnEachEntry(CalledMapsWithSingleArg.directoryExists, f2DirLookups);
|
||||
callsTrackingHost.verifyNoCall(CalledMapsWithSingleArg.getDirectories);
|
||||
callsTrackingHost.verifyNoCall(CalledMapsWithSingleArg.readFile);
|
||||
callsTrackingHost.verifyNoCall(CalledMapsWithFiveArgs.readDirectory);
|
||||
logCacheAndClear(projectService.logger);
|
||||
|
||||
editContent(`import {x} from "f1"`);
|
||||
verifyImportedDiagnostics();
|
||||
const f1Lookups = f2Lookups.map(s => s.replace("f2", "f1"));
|
||||
f1Lookups.length = f1Lookups.indexOf(imported.path) + 1;
|
||||
const f1DirLookups = ["/c/d", "/c", ...mapCombinedPathsInAncestor(getDirectoryPath(root.path), nodeModulesAtTypes, returnTrue)];
|
||||
vertifyF1Lookups();
|
||||
logSemanticDiagnostics(projectService, project, imported);
|
||||
logCacheAndClear(projectService.logger);
|
||||
|
||||
// setting compiler options discards module resolution cache
|
||||
callsTrackingHost.clear();
|
||||
projectService.setCompilerOptionsForInferredProjects({ module: ModuleKind.AMD, noLib: true, target: ScriptTarget.ES5 });
|
||||
verifyImportedDiagnostics();
|
||||
vertifyF1Lookups();
|
||||
|
||||
function vertifyF1Lookups() {
|
||||
callsTrackingHost.verifyCalledOnEachEntryNTimes(CalledMapsWithSingleArg.fileExists, f1Lookups, 1);
|
||||
callsTrackingHost.verifyCalledOnEachEntryNTimes(CalledMapsWithSingleArg.directoryExists, f1DirLookups, 1);
|
||||
callsTrackingHost.verifyNoCall(CalledMapsWithSingleArg.getDirectories);
|
||||
callsTrackingHost.verifyNoCall(CalledMapsWithSingleArg.readFile);
|
||||
callsTrackingHost.verifyNoCall(CalledMapsWithFiveArgs.readDirectory);
|
||||
}
|
||||
logSemanticDiagnostics(projectService, project, imported);
|
||||
logCacheAndClear(projectService.logger);
|
||||
baselineTsserverLogs("cachingFileSystemInformation", "works using legacy resolution logic", projectService);
|
||||
|
||||
function editContent(newContent: string) {
|
||||
callsTrackingHost.clear();
|
||||
rootScriptInfo.editContent(0, rootContent.length, newContent);
|
||||
rootContent = newContent;
|
||||
}
|
||||
|
||||
function verifyImportedDiagnostics() {
|
||||
const diags = project.getLanguageService().getSemanticDiagnostics(imported.path);
|
||||
assert.equal(diags.length, 1);
|
||||
const diag = diags[0];
|
||||
assert.equal(diag.code, Diagnostics.Cannot_find_name_0.code);
|
||||
assert.equal(flattenDiagnosticMessageText(diag.messageText, "\n"), "Cannot find name 'foo'.");
|
||||
}
|
||||
|
||||
function getLocationsForModuleLookup(module: string) {
|
||||
const locations: string[] = [];
|
||||
forEachAncestorDirectory(getDirectoryPath(root.path), ancestor => {
|
||||
locations.push(
|
||||
combinePaths(ancestor, `${module}.ts`),
|
||||
combinePaths(ancestor, `${module}.tsx`),
|
||||
combinePaths(ancestor, `${module}.d.ts`)
|
||||
);
|
||||
});
|
||||
forEachAncestorDirectory(getDirectoryPath(root.path), ancestor => {
|
||||
locations.push(
|
||||
combinePaths(ancestor, `${module}.js`),
|
||||
combinePaths(ancestor, `${module}.jsx`)
|
||||
);
|
||||
});
|
||||
return locations;
|
||||
}
|
||||
|
||||
function getLocationsForDirectoryLookup() {
|
||||
const result = new Map<string, number>();
|
||||
forEachAncestorDirectory(getDirectoryPath(root.path), ancestor => {
|
||||
// To resolve modules
|
||||
result.set(ancestor, 2);
|
||||
// for type roots
|
||||
result.set(combinePaths(ancestor, nodeModules), 1);
|
||||
result.set(combinePaths(ancestor, nodeModulesAtTypes), 1);
|
||||
});
|
||||
return result;
|
||||
}
|
||||
});
|
||||
|
||||
it("loads missing files from disk", () => {
|
||||
@@ -228,29 +134,22 @@ namespace ts.projectSystem {
|
||||
};
|
||||
|
||||
const host = createServerHost([root]);
|
||||
const projectService = createProjectService(host);
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
projectService.setCompilerOptionsForInferredProjects({ module: ModuleKind.AMD, noLib: true });
|
||||
const callsTrackingHost = createCallsTrackingHost(host);
|
||||
const logCacheAndClear = createLoggerTrackingHostCalls(host);
|
||||
projectService.openClientFile(root.path);
|
||||
checkNumberOfProjects(projectService, { inferredProjects: 1 });
|
||||
const project = projectService.inferredProjects[0];
|
||||
const rootScriptInfo = project.getRootScriptInfos()[0];
|
||||
assert.equal(rootScriptInfo.fileName, root.path);
|
||||
|
||||
let diags = project.getLanguageService().getSemanticDiagnostics(root.path);
|
||||
assert.equal(diags.length, 1);
|
||||
const diag = diags[0];
|
||||
assert.equal(diag.code, Diagnostics.Cannot_find_module_0_Did_you_mean_to_set_the_moduleResolution_option_to_node_or_to_add_aliases_to_the_paths_option.code);
|
||||
assert.equal(flattenDiagnosticMessageText(diag.messageText, "\n"), "Cannot find module 'bar'. Did you mean to set the 'moduleResolution' option to 'node', or to add aliases to the 'paths' option?");
|
||||
callsTrackingHost.verifyCalledOn(CalledMapsWithSingleArg.fileExists, imported.path);
|
||||
logSemanticDiagnostics(projectService, project, root);
|
||||
logCacheAndClear(projectService.logger);
|
||||
|
||||
|
||||
callsTrackingHost.clear();
|
||||
host.writeFile(imported.path, imported.content);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
diags = project.getLanguageService().getSemanticDiagnostics(root.path);
|
||||
assert.equal(diags.length, 0);
|
||||
callsTrackingHost.verifyCalledOn(CalledMapsWithSingleArg.fileExists, imported.path);
|
||||
logSemanticDiagnostics(projectService, project, root);
|
||||
logCacheAndClear(projectService.logger);
|
||||
baselineTsserverLogs("cachingFileSystemInformation", "loads missing files from disk", projectService);
|
||||
});
|
||||
|
||||
it("when calling goto definition of module", () => {
|
||||
@@ -296,17 +195,9 @@ namespace ts.projectSystem {
|
||||
};
|
||||
const projectFiles = [clientFile, anotherModuleFile, moduleFile, tsconfigFile];
|
||||
const host = createServerHost(projectFiles);
|
||||
const session = createSession(host);
|
||||
const projectService = session.getProjectService();
|
||||
const { configFileName } = projectService.openClientFile(clientFile.path);
|
||||
|
||||
assert.isDefined(configFileName, `should find config`);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
|
||||
const project = projectService.configuredProjects.get(tsconfigFile.path)!;
|
||||
checkProjectActualFiles(project, map(projectFiles, f => f.path));
|
||||
|
||||
const callsTrackingHost = createCallsTrackingHost(host);
|
||||
const session = createSession(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
openFilesForSession([clientFile], session);
|
||||
const logCacheAndClear = createLoggerTrackingHostCalls(host);
|
||||
|
||||
// Get definitions shouldnt make host requests
|
||||
const getDefinitionRequest = makeSessionRequest<protocol.FileLocationRequestArgs>(protocol.CommandTypes.Definition, {
|
||||
@@ -315,137 +206,90 @@ namespace ts.projectSystem {
|
||||
line: undefined!, // TODO: GH#18217
|
||||
offset: undefined! // TODO: GH#18217
|
||||
});
|
||||
const response = session.executeCommand(getDefinitionRequest).response as server.protocol.FileSpan[];
|
||||
assert.equal(response[0].file, moduleFile.path, "Should go to definition of vessel: response: " + JSON.stringify(response));
|
||||
callsTrackingHost.verifyNoHostCalls();
|
||||
session.executeCommand(getDefinitionRequest);
|
||||
logCacheAndClear(session.logger);
|
||||
|
||||
// Open the file should call only file exists on module directory and use cached value for parental directory
|
||||
const { configFileName: config2 } = projectService.openClientFile(moduleFile.path);
|
||||
assert.equal(config2, configFileName);
|
||||
callsTrackingHost.verifyNoHostCallsExceptFileExistsOnce(["/a/b/models/tsconfig.json", "/a/b/models/jsconfig.json"]);
|
||||
openFilesForSession([moduleFile], session);
|
||||
logCacheAndClear(session.logger);
|
||||
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
assert.strictEqual(projectService.configuredProjects.get(tsconfigFile.path), project);
|
||||
baselineTsserverLogs("cachingFileSystemInformation", "when calling goto definition of module", session);
|
||||
});
|
||||
|
||||
describe("WatchDirectories for config file with", () => {
|
||||
function verifyWatchDirectoriesCaseSensitivity(useCaseSensitiveFileNames: boolean) {
|
||||
const frontendDir = "/Users/someuser/work/applications/frontend";
|
||||
const toCanonical: (s: string) => Path = useCaseSensitiveFileNames ? s => s as Path : s => s.toLowerCase() as Path;
|
||||
const canonicalFrontendDir = toCanonical(frontendDir);
|
||||
const file1: File = {
|
||||
path: `${frontendDir}/src/app/utils/Analytic.ts`,
|
||||
content: "export class SomeClass { };"
|
||||
};
|
||||
const file2: File = {
|
||||
path: `${frontendDir}/src/app/redux/configureStore.ts`,
|
||||
content: "export class configureStore { }"
|
||||
};
|
||||
const file3: File = {
|
||||
path: `${frontendDir}/src/app/utils/Cookie.ts`,
|
||||
content: "export class Cookie { }"
|
||||
};
|
||||
const es2016LibFile: File = {
|
||||
path: "/a/lib/lib.es2016.full.d.ts",
|
||||
content: libFile.content
|
||||
};
|
||||
const typeRoots = ["types", "node_modules/@types"];
|
||||
const types = ["node", "jest"];
|
||||
const tsconfigFile: File = {
|
||||
path: `${frontendDir}/tsconfig.json`,
|
||||
content: JSON.stringify({
|
||||
compilerOptions: {
|
||||
strict: true,
|
||||
strictNullChecks: true,
|
||||
target: "es2016",
|
||||
module: "commonjs",
|
||||
moduleResolution: "node",
|
||||
sourceMap: true,
|
||||
noEmitOnError: true,
|
||||
experimentalDecorators: true,
|
||||
emitDecoratorMetadata: true,
|
||||
types,
|
||||
noUnusedLocals: true,
|
||||
outDir: "./compiled",
|
||||
typeRoots,
|
||||
baseUrl: ".",
|
||||
paths: {
|
||||
"*": [
|
||||
"types/*"
|
||||
]
|
||||
}
|
||||
},
|
||||
include: [
|
||||
"src/**/*"
|
||||
],
|
||||
exclude: [
|
||||
"node_modules",
|
||||
"compiled"
|
||||
]
|
||||
})
|
||||
};
|
||||
const projectFiles = [file1, file2, es2016LibFile, tsconfigFile];
|
||||
const host = createServerHost(projectFiles, { useCaseSensitiveFileNames });
|
||||
const projectService = createProjectService(host);
|
||||
const canonicalConfigPath = toCanonical(tsconfigFile.path);
|
||||
const { configFileName } = projectService.openClientFile(file1.path);
|
||||
assert.equal(configFileName, tsconfigFile.path as server.NormalizedPath, `should find config`);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
const watchingRecursiveDirectories = [`${canonicalFrontendDir}/src`, `${canonicalFrontendDir}/types`, `${canonicalFrontendDir}/node_modules`].concat(getNodeModuleDirectories(getDirectoryPath(canonicalFrontendDir)));
|
||||
it(`watchDirectories for config file with case ${useCaseSensitiveFileNames ? "" : "in"}sensitive file system`, () => {
|
||||
const frontendDir = "/Users/someuser/work/applications/frontend";
|
||||
const file1: File = {
|
||||
path: `${frontendDir}/src/app/utils/Analytic.ts`,
|
||||
content: "export class SomeClass { };"
|
||||
};
|
||||
const file2: File = {
|
||||
path: `${frontendDir}/src/app/redux/configureStore.ts`,
|
||||
content: "export class configureStore { }"
|
||||
};
|
||||
const file3: File = {
|
||||
path: `${frontendDir}/src/app/utils/Cookie.ts`,
|
||||
content: "export class Cookie { }"
|
||||
};
|
||||
const es2016LibFile: File = {
|
||||
path: "/a/lib/lib.es2016.full.d.ts",
|
||||
content: libFile.content
|
||||
};
|
||||
const typeRoots = ["types", "node_modules/@types"];
|
||||
const types = ["node", "jest"];
|
||||
const tsconfigFile: File = {
|
||||
path: `${frontendDir}/tsconfig.json`,
|
||||
content: JSON.stringify({
|
||||
compilerOptions: {
|
||||
strict: true,
|
||||
strictNullChecks: true,
|
||||
target: "es2016",
|
||||
module: "commonjs",
|
||||
moduleResolution: "node",
|
||||
sourceMap: true,
|
||||
noEmitOnError: true,
|
||||
experimentalDecorators: true,
|
||||
emitDecoratorMetadata: true,
|
||||
types,
|
||||
noUnusedLocals: true,
|
||||
outDir: "./compiled",
|
||||
typeRoots,
|
||||
baseUrl: ".",
|
||||
paths: {
|
||||
"*": [
|
||||
"types/*"
|
||||
]
|
||||
}
|
||||
},
|
||||
include: [
|
||||
"src/**/*"
|
||||
],
|
||||
exclude: [
|
||||
"node_modules",
|
||||
"compiled"
|
||||
]
|
||||
})
|
||||
};
|
||||
const projectFiles = [file1, file2, es2016LibFile, tsconfigFile];
|
||||
const host = createServerHost(projectFiles, { useCaseSensitiveFileNames });
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
projectService.openClientFile(file1.path);
|
||||
|
||||
const project = projectService.configuredProjects.get(canonicalConfigPath)!;
|
||||
verifyProjectAndWatchedDirectories();
|
||||
const logCacheAndClear = createLoggerTrackingHostCalls(host);
|
||||
|
||||
const callsTrackingHost = createCallsTrackingHost(host);
|
||||
// Create file cookie.ts
|
||||
host.writeFile(file3.path, file3.content);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
logCacheAndClear(projectService.logger);
|
||||
|
||||
// Create file cookie.ts
|
||||
projectFiles.push(file3);
|
||||
host.writeFile(file3.path, file3.content);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
|
||||
const canonicalFile3Path = useCaseSensitiveFileNames ? file3.path : file3.path.toLocaleLowerCase();
|
||||
const numberOfTimesWatchInvoked = getNumberOfWatchesInvokedForRecursiveWatches(watchingRecursiveDirectories, canonicalFile3Path);
|
||||
callsTrackingHost.verifyCalledOnEachEntryNTimes(CalledMapsWithSingleArg.fileExists, [canonicalFile3Path], numberOfTimesWatchInvoked);
|
||||
callsTrackingHost.verifyCalledOnEachEntryNTimes(CalledMapsWithSingleArg.directoryExists, [canonicalFile3Path], numberOfTimesWatchInvoked);
|
||||
callsTrackingHost.verifyNoCall(CalledMapsWithSingleArg.getDirectories);
|
||||
callsTrackingHost.verifyCalledOnEachEntryNTimes(CalledMapsWithSingleArg.readFile, [file3.path], 1);
|
||||
callsTrackingHost.verifyNoCall(CalledMapsWithFiveArgs.readDirectory);
|
||||
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
assert.strictEqual(projectService.configuredProjects.get(canonicalConfigPath), project);
|
||||
verifyProjectAndWatchedDirectories();
|
||||
|
||||
callsTrackingHost.clear();
|
||||
|
||||
const { configFileName: configFile2 } = projectService.openClientFile(file3.path);
|
||||
assert.equal(configFile2, configFileName);
|
||||
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
assert.strictEqual(projectService.configuredProjects.get(canonicalConfigPath), project);
|
||||
verifyProjectAndWatchedDirectories();
|
||||
callsTrackingHost.verifyNoHostCalls();
|
||||
|
||||
function getFilePathIfNotOpen(f: File) {
|
||||
const path = toCanonical(f.path);
|
||||
const info = projectService.getScriptInfoForPath(toCanonical(f.path));
|
||||
return info && info.isScriptOpen() ? undefined : path;
|
||||
}
|
||||
|
||||
function verifyProjectAndWatchedDirectories() {
|
||||
checkProjectActualFiles(project, map(projectFiles, f => f.path));
|
||||
checkWatchedFiles(host, mapDefined(projectFiles, getFilePathIfNotOpen));
|
||||
checkWatchedDirectories(host, watchingRecursiveDirectories, /*recursive*/ true);
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
}
|
||||
projectService.openClientFile(file3.path);
|
||||
logCacheAndClear(projectService.logger);
|
||||
baselineTsserverLogs("cachingFileSystemInformation", `watchDirectories for config file with case ${useCaseSensitiveFileNames ? "" : "in"}sensitive file system`, projectService);
|
||||
});
|
||||
}
|
||||
|
||||
it("case insensitive file system", () => {
|
||||
verifyWatchDirectoriesCaseSensitivity(/*useCaseSensitiveFileNames*/ false);
|
||||
});
|
||||
|
||||
it("case sensitive file system", () => {
|
||||
verifyWatchDirectoriesCaseSensitivity(/*useCaseSensitiveFileNames*/ true);
|
||||
});
|
||||
verifyWatchDirectoriesCaseSensitivity(/*useCaseSensitiveFileNames*/ false);
|
||||
verifyWatchDirectoriesCaseSensitivity(/*useCaseSensitiveFileNames*/ true);
|
||||
});
|
||||
|
||||
describe("Subfolder invalidations correctly include parent folder failed lookup locations", () => {
|
||||
@@ -538,15 +382,10 @@ namespace ts.projectSystem {
|
||||
}
|
||||
`
|
||||
});
|
||||
const appFolder = getDirectoryPath(app.path);
|
||||
const projectFiles = [app, libFile, tsconfigJson];
|
||||
const otherFiles = [packageJson];
|
||||
const host = createServerHost(projectFiles.concat(otherFiles));
|
||||
const host = createServerHost([app, libFile, tsconfigJson, packageJson]);
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
projectService.setHostConfiguration({ preferences: { includePackageJsonAutoImports: "off" } });
|
||||
const { configFileName } = projectService.openClientFile(app.path);
|
||||
assert.equal(configFileName, tsconfigJson.path as server.NormalizedPath, `should find config`); // TODO: GH#18217
|
||||
const recursiveWatchedDirectories: string[] = [`${appFolder}`, `${appFolder}/node_modules`].concat(getNodeModuleDirectories(getDirectoryPath(appFolder)));
|
||||
projectService.openClientFile(app.path);
|
||||
|
||||
let npmInstallComplete = false;
|
||||
|
||||
@@ -625,10 +464,6 @@ namespace ts.projectSystem {
|
||||
});
|
||||
|
||||
host.deleteFolder(root + "/a/b/node_modules/.staging", /*recursive*/ true);
|
||||
const lodashIndexPath = root + "/a/b/node_modules/@types/lodash/index.d.ts";
|
||||
projectFiles.push(find(filesAndFoldersToAdd, f => f.path === lodashIndexPath)!);
|
||||
// we would now not have failed lookup in the parent of appFolder since lodash is available
|
||||
recursiveWatchedDirectories.length = 2;
|
||||
// npm installation complete, timeout after reload fs
|
||||
npmInstallComplete = true;
|
||||
verifyAfterPartialOrCompleteNpmInstall(2);
|
||||
@@ -660,7 +495,6 @@ namespace ts.projectSystem {
|
||||
it("timeouts occur inbetween installation", () => {
|
||||
verifyNpmInstall(/*timeoutDuringPartialInstallation*/ true);
|
||||
});
|
||||
|
||||
it("timeout occurs after installation", () => {
|
||||
verifyNpmInstall(/*timeoutDuringPartialInstallation*/ false);
|
||||
});
|
||||
|
||||
@@ -38,22 +38,14 @@ namespace ts.projectSystem {
|
||||
content: "{}"
|
||||
};
|
||||
const host = createServerHost([f1, libFile, configFile, configFile2]);
|
||||
const service = createProjectService(host);
|
||||
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
service.openClientFile(f1.path, /*fileContent*/ undefined, /*scriptKind*/ undefined, projectDir);
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
assert.isDefined(service.configuredProjects.get(configFile.path));
|
||||
checkWatchedFiles(host, [libFile.path, configFile.path]);
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
const typeRootLocations = getTypeRootsFromLocation(configFileLocation);
|
||||
checkWatchedDirectories(host, typeRootLocations.concat(configFileLocation), /*recursive*/ true);
|
||||
|
||||
// Delete config file - should create inferred project and not configured project
|
||||
host.deleteFile(configFile.path);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
checkWatchedFiles(host, [libFile.path, configFile.path, `${configFileLocation}/jsconfig.json`, `${projectDir}/tsconfig.json`, `${projectDir}/jsconfig.json`]);
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
checkWatchedDirectories(host, typeRootLocations, /*recursive*/ true);
|
||||
baselineTsserverLogs("configFileSearch", "should use projectRootPath when searching for inferred project again", service);
|
||||
});
|
||||
|
||||
it("should use projectRootPath when searching for inferred project again 2", () => {
|
||||
@@ -72,22 +64,17 @@ namespace ts.projectSystem {
|
||||
content: "{}"
|
||||
};
|
||||
const host = createServerHost([f1, libFile, configFile, configFile2]);
|
||||
const service = createProjectService(host, { useSingleInferredProject: true, useInferredProjectPerProjectRoot: true });
|
||||
const service = createProjectService(host, {
|
||||
useSingleInferredProject: true,
|
||||
useInferredProjectPerProjectRoot: true,
|
||||
logger: createLoggerWithInMemoryLogs(),
|
||||
});
|
||||
service.openClientFile(f1.path, /*fileContent*/ undefined, /*scriptKind*/ undefined, projectDir);
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
assert.isDefined(service.configuredProjects.get(configFile.path));
|
||||
checkWatchedFiles(host, [libFile.path, configFile.path]);
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
checkWatchedDirectories(host, getTypeRootsFromLocation(configFileLocation).concat(configFileLocation), /*recursive*/ true);
|
||||
|
||||
// Delete config file - should create inferred project with project root path set
|
||||
host.deleteFile(configFile.path);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
assert.equal(service.inferredProjects[0].projectRootPath, projectDir);
|
||||
checkWatchedFiles(host, [libFile.path, configFile.path, `${configFileLocation}/jsconfig.json`, `${projectDir}/tsconfig.json`, `${projectDir}/jsconfig.json`]);
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
checkWatchedDirectories(host, getTypeRootsFromLocation(projectDir), /*recursive*/ true);
|
||||
baselineTsserverLogs("configFileSearch", "should use projectRootPath when searching for inferred project again 2", service);
|
||||
});
|
||||
|
||||
describe("when the opened file is not from project root", () => {
|
||||
@@ -100,89 +87,50 @@ namespace ts.projectSystem {
|
||||
path: `${projectRoot}/tsconfig.json`,
|
||||
content: "{}"
|
||||
};
|
||||
const dirOfFile = getDirectoryPath(file.path);
|
||||
|
||||
function openClientFile(files: File[]) {
|
||||
const host = createServerHost(files);
|
||||
const projectService = createProjectService(host);
|
||||
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
projectService.openClientFile(file.path, /*fileContent*/ undefined, /*scriptKind*/ undefined, "/a/b/projects/proj");
|
||||
return { host, projectService };
|
||||
}
|
||||
|
||||
function verifyConfiguredProject(host: TestServerHost, projectService: TestProjectService, orphanInferredProject?: boolean) {
|
||||
projectService.checkNumberOfProjects({ configuredProjects: 1, inferredProjects: orphanInferredProject ? 1 : 0 });
|
||||
const project = Debug.checkDefined(projectService.configuredProjects.get(tsconfig.path));
|
||||
|
||||
if (orphanInferredProject) {
|
||||
const inferredProject = projectService.inferredProjects[0];
|
||||
assert.isTrue(inferredProject.isOrphan());
|
||||
}
|
||||
|
||||
checkProjectActualFiles(project, [file.path, libFile.path, tsconfig.path]);
|
||||
checkWatchedFiles(host, [libFile.path, tsconfig.path]);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
checkWatchedDirectories(host, (orphanInferredProject ? [projectRoot, `${dirOfFile}/node_modules/@types`] : [projectRoot]).concat(getTypeRootsFromLocation(projectRoot)), /*recursive*/ true);
|
||||
}
|
||||
|
||||
function verifyInferredProject(host: TestServerHost, projectService: TestProjectService) {
|
||||
projectService.checkNumberOfProjects({ inferredProjects: 1 });
|
||||
const project = projectService.inferredProjects[0];
|
||||
assert.isDefined(project);
|
||||
|
||||
const filesToWatch = [libFile.path, ...getConfigFilesToWatch(dirOfFile)];
|
||||
|
||||
checkProjectActualFiles(project, [file.path, libFile.path]);
|
||||
checkWatchedFiles(host, filesToWatch);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
checkWatchedDirectories(host, getTypeRootsFromLocation(dirOfFile), /*recursive*/ true);
|
||||
}
|
||||
|
||||
it("tsconfig for the file exists", () => {
|
||||
const { host, projectService } = openClientFile([file, libFile, tsconfig]);
|
||||
verifyConfiguredProject(host, projectService);
|
||||
|
||||
host.deleteFile(tsconfig.path);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
verifyInferredProject(host, projectService);
|
||||
|
||||
host.writeFile(tsconfig.path, tsconfig.content);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
verifyConfiguredProject(host, projectService, /*orphanInferredProject*/ true);
|
||||
|
||||
baselineTsserverLogs("configFileSearch", "tsconfig for the file exists", projectService);
|
||||
});
|
||||
|
||||
it("tsconfig for the file does not exist", () => {
|
||||
const { host, projectService } = openClientFile([file, libFile]);
|
||||
verifyInferredProject(host, projectService);
|
||||
|
||||
host.writeFile(tsconfig.path, tsconfig.content);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
verifyConfiguredProject(host, projectService, /*orphanInferredProject*/ true);
|
||||
|
||||
host.deleteFile(tsconfig.path);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
verifyInferredProject(host, projectService);
|
||||
|
||||
baselineTsserverLogs("configFileSearch", "tsconfig for the file does not exist", projectService);
|
||||
});
|
||||
});
|
||||
|
||||
describe("should not search and watch config files from directories that cannot be watched", () => {
|
||||
const root = "/root/teams/VSCode68/Shared Documents/General/jt-ts-test-workspace";
|
||||
function verifyConfigFileWatch(projectRootPath: string | undefined) {
|
||||
const path = `${root}/x.js`;
|
||||
const host = createServerHost([libFile, { path, content: "const x = 10" }], { useCaseSensitiveFileNames: true });
|
||||
const service = createProjectService(host);
|
||||
service.openClientFile(path, /*fileContent*/ undefined, /*scriptKind*/ undefined, projectRootPath);
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
checkProjectActualFiles(service.inferredProjects[0], [path, libFile.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, ...getConfigFilesToWatch(root)], 1);
|
||||
function verifyConfigFileWatch(scenario: string, projectRootPath: string | undefined) {
|
||||
it(scenario, () => {
|
||||
const path = `/root/teams/VSCode68/Shared Documents/General/jt-ts-test-workspace/x.js`;
|
||||
const host = createServerHost([libFile, { path, content: "const x = 10" }], { useCaseSensitiveFileNames: true });
|
||||
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
service.openClientFile(path, /*fileContent*/ undefined, /*scriptKind*/ undefined, projectRootPath);
|
||||
baselineTsserverLogs("configFileSearch", scenario, service);
|
||||
});
|
||||
}
|
||||
|
||||
it("when projectRootPath is not present", () => {
|
||||
verifyConfigFileWatch(/*projectRootPath*/ undefined);
|
||||
});
|
||||
it("when projectRootPath is present but file is not from project root", () => {
|
||||
verifyConfigFileWatch("/a/b");
|
||||
});
|
||||
verifyConfigFileWatch("when projectRootPath is not present", /*projectRootPath*/ undefined);
|
||||
verifyConfigFileWatch("when projectRootPath is present but file is not from project root", "/a/b");
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
@@ -25,21 +25,13 @@ namespace ts.projectSystem {
|
||||
};
|
||||
|
||||
const host = createServerHost([configFile, libFile, file1, file2, file3]);
|
||||
const projectService = createProjectService(host);
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
const { configFileName, configFileErrors } = projectService.openClientFile(file1.path);
|
||||
|
||||
assert(configFileName, "should find config file");
|
||||
assert.isTrue(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
|
||||
checkNumberOfInferredProjects(projectService, 0);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
checkProjectActualFiles(project, [file1.path, libFile.path, file2.path, configFile.path]);
|
||||
checkProjectRootFiles(project, [file1.path, file2.path]);
|
||||
// watching all files except one that was open
|
||||
checkWatchedFiles(host, [configFile.path, file2.path, libFile.path]);
|
||||
const configFileDirectory = getDirectoryPath(configFile.path);
|
||||
checkWatchedDirectories(host, [configFileDirectory, combinePaths(configFileDirectory, nodeModulesAtTypes)], /*recursive*/ true);
|
||||
baselineTsserverLogs("configuredProjects", "create configured project without file list", projectService);
|
||||
});
|
||||
|
||||
it("create configured project with the file list", () => {
|
||||
@@ -65,20 +57,13 @@ namespace ts.projectSystem {
|
||||
};
|
||||
|
||||
const host = createServerHost([configFile, libFile, file1, file2, file3]);
|
||||
const projectService = createProjectService(host);
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
const { configFileName, configFileErrors } = projectService.openClientFile(file1.path);
|
||||
|
||||
assert(configFileName, "should find config file");
|
||||
assert.isTrue(!configFileErrors || configFileErrors.length === 0, `expect no errors in config file, got ${JSON.stringify(configFileErrors)}`);
|
||||
checkNumberOfInferredProjects(projectService, 0);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
checkProjectActualFiles(project, [file1.path, libFile.path, file2.path, configFile.path]);
|
||||
checkProjectRootFiles(project, [file1.path, file2.path]);
|
||||
// watching all files except one that was open
|
||||
checkWatchedFiles(host, [configFile.path, file2.path, libFile.path]);
|
||||
checkWatchedDirectories(host, [getDirectoryPath(configFile.path)], /*recursive*/ false);
|
||||
baselineTsserverLogs("configuredProjects", "create configured project with the file list", projectService);
|
||||
});
|
||||
|
||||
it("add and then remove a config file in a folder with loose files", () => {
|
||||
@@ -99,41 +84,19 @@ namespace ts.projectSystem {
|
||||
|
||||
const host = createServerHost([libFile, commonFile1, commonFile2]);
|
||||
|
||||
const projectService = createProjectService(host);
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
projectService.openClientFile(commonFile1.path);
|
||||
projectService.openClientFile(commonFile2.path);
|
||||
|
||||
projectService.checkNumberOfProjects({ inferredProjects: 2 });
|
||||
checkProjectActualFiles(projectService.inferredProjects[0], [commonFile1.path, libFile.path]);
|
||||
checkProjectActualFiles(projectService.inferredProjects[1], [commonFile2.path, libFile.path]);
|
||||
|
||||
const watchedFiles = getConfigFilesToWatch(tscWatch.projectRoot).concat(libFile.path);
|
||||
checkWatchedFiles(host, watchedFiles);
|
||||
|
||||
// Add a tsconfig file
|
||||
host.writeFile(configFile.path, configFile.content);
|
||||
host.checkTimeoutQueueLengthAndRun(2); // load configured project from disk + ensureProjectsForOpenFiles
|
||||
|
||||
projectService.checkNumberOfProjects({ inferredProjects: 2, configuredProjects: 1 });
|
||||
assert.isTrue(projectService.inferredProjects[0].isOrphan());
|
||||
checkProjectActualFiles(projectService.inferredProjects[1], [commonFile2.path, libFile.path]);
|
||||
checkProjectActualFiles(projectService.configuredProjects.get(configFile.path)!, [libFile.path, commonFile1.path, configFile.path]);
|
||||
|
||||
checkWatchedFiles(host, watchedFiles);
|
||||
|
||||
// remove the tsconfig file
|
||||
host.deleteFile(configFile.path);
|
||||
|
||||
projectService.checkNumberOfProjects({ inferredProjects: 2 });
|
||||
assert.isTrue(projectService.inferredProjects[0].isOrphan());
|
||||
checkProjectActualFiles(projectService.inferredProjects[1], [commonFile2.path, libFile.path]);
|
||||
|
||||
host.checkTimeoutQueueLengthAndRun(1); // Refresh inferred projects
|
||||
|
||||
projectService.checkNumberOfProjects({ inferredProjects: 2 });
|
||||
checkProjectActualFiles(projectService.inferredProjects[0], [commonFile1.path, libFile.path]);
|
||||
checkProjectActualFiles(projectService.inferredProjects[1], [commonFile2.path, libFile.path]);
|
||||
checkWatchedFiles(host, watchedFiles);
|
||||
baselineTsserverLogs("configuredProjects", "add and then remove a config file in a folder with loose files", projectService);
|
||||
});
|
||||
|
||||
it("add new files to a configured project without file list", () => {
|
||||
@@ -142,20 +105,13 @@ namespace ts.projectSystem {
|
||||
content: `{}`
|
||||
};
|
||||
const host = createServerHost([commonFile1, libFile, configFile]);
|
||||
const projectService = createProjectService(host);
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
projectService.openClientFile(commonFile1.path);
|
||||
const configFileDir = getDirectoryPath(configFile.path);
|
||||
checkWatchedDirectories(host, [configFileDir, combinePaths(configFileDir, nodeModulesAtTypes)], /*recursive*/ true);
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
checkProjectRootFiles(project, [commonFile1.path]);
|
||||
|
||||
// add a new ts file
|
||||
host.writeFile(commonFile2.path, commonFile2.content);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
// project service waits for 250ms to update the project structure, therefore the assertion needs to wait longer.
|
||||
checkProjectRootFiles(project, [commonFile1.path, commonFile2.path]);
|
||||
baselineTsserverLogs("configuredProjects", "add new files to a configured project without file list", projectService);
|
||||
});
|
||||
|
||||
it("should ignore non-existing files specified in the config file", () => {
|
||||
@@ -581,56 +537,37 @@ namespace ts.projectSystem {
|
||||
|
||||
const files = [file1, file2, file3, file4];
|
||||
const host = createServerHost(files.concat(configFile));
|
||||
const projectService = createProjectService(host);
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
|
||||
projectService.openClientFile(file1.path);
|
||||
projectService.openClientFile(file2.path);
|
||||
projectService.openClientFile(file3.path);
|
||||
projectService.openClientFile(file4.path);
|
||||
|
||||
const infos = files.map(file => projectService.getScriptInfoForPath(file.path as Path)!);
|
||||
checkOpenFiles(projectService, files);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects: 2 });
|
||||
const configProject1 = projectService.configuredProjects.get(configFile.path)!;
|
||||
assert.isTrue(configProject1.hasOpenRef()); // file1 and file3
|
||||
checkProjectActualFiles(configProject1, [file1.path, file3.path, configFile.path]);
|
||||
const inferredProject1 = projectService.inferredProjects[0];
|
||||
checkProjectActualFiles(inferredProject1, [file2.path]);
|
||||
const inferredProject2 = projectService.inferredProjects[1];
|
||||
checkProjectActualFiles(inferredProject2, [file4.path]);
|
||||
|
||||
host.writeFile(configFile.path, "{}");
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
|
||||
verifyScriptInfos();
|
||||
checkOpenFiles(projectService, files);
|
||||
verifyConfiguredProjectStateAfterUpdate(/*hasOpenRef*/ true, 2); // file1, file2, file3
|
||||
assert.isTrue(configProject1.hasOpenRef()); // file1, file2, file3
|
||||
assert.isTrue(projectService.inferredProjects[0].isOrphan());
|
||||
const inferredProject3 = projectService.inferredProjects[1];
|
||||
checkProjectActualFiles(inferredProject3, [file4.path]);
|
||||
assert.strictEqual(inferredProject3, inferredProject2);
|
||||
|
||||
projectService.closeClientFile(file1.path);
|
||||
projectService.closeClientFile(file2.path);
|
||||
projectService.closeClientFile(file4.path);
|
||||
|
||||
verifyScriptInfos();
|
||||
checkOpenFiles(projectService, [file3]);
|
||||
verifyConfiguredProjectStateAfterUpdate(/*hasOpenRef*/ true, 2); // file3
|
||||
assert.isTrue(configProject1.hasOpenRef()); // file3
|
||||
assert.isTrue(projectService.inferredProjects[0].isOrphan());
|
||||
assert.isTrue(projectService.inferredProjects[1].isOrphan());
|
||||
|
||||
projectService.openClientFile(file4.path);
|
||||
verifyScriptInfos();
|
||||
checkOpenFiles(projectService, [file3, file4]);
|
||||
verifyConfiguredProjectStateAfterUpdate(/*hasOpenRef*/ true, 1); // file3
|
||||
assert.isTrue(configProject1.hasOpenRef()); // file3
|
||||
const inferredProject4 = projectService.inferredProjects[0];
|
||||
checkProjectActualFiles(inferredProject4, [file4.path]);
|
||||
|
||||
projectService.closeClientFile(file3.path);
|
||||
verifyScriptInfos();
|
||||
checkOpenFiles(projectService, [file4]);
|
||||
verifyConfiguredProjectStateAfterUpdate(/*hasOpenRef*/ false, 1); // No open files
|
||||
assert.isFalse(configProject1.hasOpenRef()); // No open files
|
||||
const inferredProject5 = projectService.inferredProjects[0];
|
||||
checkProjectActualFiles(inferredProject4, [file4.path]);
|
||||
assert.strictEqual(inferredProject5, inferredProject4);
|
||||
@@ -641,31 +578,8 @@ namespace ts.projectSystem {
|
||||
};
|
||||
host.writeFile(file5.path, file5.content);
|
||||
projectService.openClientFile(file5.path);
|
||||
verifyScriptInfosAreUndefined([file1, file2, file3]);
|
||||
assert.strictEqual(projectService.getScriptInfoForPath(file4.path as Path), find(infos, info => info.path === file4.path));
|
||||
assert.isDefined(projectService.getScriptInfoForPath(file5.path as Path));
|
||||
checkOpenFiles(projectService, [file4, file5]);
|
||||
checkNumberOfProjects(projectService, { inferredProjects: 2 });
|
||||
checkProjectActualFiles(projectService.inferredProjects[0], [file4.path]);
|
||||
checkProjectActualFiles(projectService.inferredProjects[1], [file5.path]);
|
||||
|
||||
function verifyScriptInfos() {
|
||||
infos.forEach(info => assert.strictEqual(projectService.getScriptInfoForPath(info.path), info));
|
||||
}
|
||||
|
||||
function verifyScriptInfosAreUndefined(files: File[]) {
|
||||
for (const file of files) {
|
||||
assert.isUndefined(projectService.getScriptInfoForPath(file.path as Path));
|
||||
}
|
||||
}
|
||||
|
||||
function verifyConfiguredProjectStateAfterUpdate(hasOpenRef: boolean, inferredProjects: number) {
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1, inferredProjects });
|
||||
const configProject2 = projectService.configuredProjects.get(configFile.path)!;
|
||||
assert.strictEqual(configProject2, configProject1);
|
||||
checkProjectActualFiles(configProject2, [file1.path, file2.path, file3.path, configFile.path]);
|
||||
assert.equal(configProject2.hasOpenRef(), hasOpenRef);
|
||||
}
|
||||
baselineTsserverLogs("configuredProjects", "Open ref of configured project when open file gets added to the project as part of configured file update", projectService);
|
||||
});
|
||||
|
||||
it("Open ref of configured project when open file gets added to the project as part of configured file update buts its open file references are all closed when the update happens", () => {
|
||||
@@ -1103,35 +1017,22 @@ foo();`
|
||||
};
|
||||
|
||||
const host = createServerHost([alphaExtendedConfig, aConfig, aFile, bravoExtendedConfig, bConfig, bFile, ...(additionalFiles || emptyArray)]);
|
||||
const projectService = createProjectService(host);
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
return { host, projectService, aFile, bFile, aConfig, bConfig, alphaExtendedConfig, bravoExtendedConfig };
|
||||
}
|
||||
|
||||
it("should watch the extended configs of multiple projects", () => {
|
||||
const { host, projectService, aFile, bFile, aConfig, bConfig, alphaExtendedConfig, bravoExtendedConfig } = getService();
|
||||
const { host, projectService, aFile, bFile, bConfig, alphaExtendedConfig, bravoExtendedConfig } = getService();
|
||||
|
||||
projectService.openClientFile(aFile.path);
|
||||
projectService.openClientFile(bFile.path);
|
||||
checkNumberOfConfiguredProjects(projectService, 2);
|
||||
const aProject = projectService.configuredProjects.get(aConfig.path)!;
|
||||
const bProject = projectService.configuredProjects.get(bConfig.path)!;
|
||||
checkProjectActualFiles(aProject, [aFile.path, aConfig.path, alphaExtendedConfig.path]);
|
||||
checkProjectActualFiles(bProject, [bFile.path, bConfig.path, bravoExtendedConfig.path, alphaExtendedConfig.path]);
|
||||
assert.isUndefined(aProject.getCompilerOptions().strict);
|
||||
assert.isUndefined(bProject.getCompilerOptions().strict);
|
||||
checkWatchedFiles(host, [aConfig.path, bConfig.path, libFile.path, bravoExtendedConfig.path, alphaExtendedConfig.path]);
|
||||
|
||||
host.writeFile(alphaExtendedConfig.path, JSON.stringify({
|
||||
compilerOptions: {
|
||||
strict: true
|
||||
}
|
||||
}));
|
||||
assert.isTrue(projectService.hasPendingProjectUpdate(aProject));
|
||||
assert.isTrue(projectService.hasPendingProjectUpdate(bProject));
|
||||
host.checkTimeoutQueueLengthAndRun(3);
|
||||
assert.isTrue(aProject.getCompilerOptions().strict);
|
||||
assert.isTrue(bProject.getCompilerOptions().strict);
|
||||
checkWatchedFiles(host, [aConfig.path, bConfig.path, libFile.path, bravoExtendedConfig.path, alphaExtendedConfig.path]);
|
||||
|
||||
host.writeFile(bravoExtendedConfig.path, JSON.stringify({
|
||||
extends: "./alpha.tsconfig.json",
|
||||
@@ -1139,30 +1040,16 @@ foo();`
|
||||
strict: false
|
||||
}
|
||||
}));
|
||||
assert.isFalse(projectService.hasPendingProjectUpdate(aProject));
|
||||
assert.isTrue(projectService.hasPendingProjectUpdate(bProject));
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
assert.isTrue(aProject.getCompilerOptions().strict);
|
||||
assert.isFalse(bProject.getCompilerOptions().strict);
|
||||
checkWatchedFiles(host, [aConfig.path, bConfig.path, libFile.path, bravoExtendedConfig.path, alphaExtendedConfig.path]);
|
||||
|
||||
host.writeFile(bConfig.path, JSON.stringify({
|
||||
extends: "../extended/alpha.tsconfig.json",
|
||||
}));
|
||||
assert.isFalse(projectService.hasPendingProjectUpdate(aProject));
|
||||
assert.isTrue(projectService.hasPendingProjectUpdate(bProject));
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
assert.isTrue(aProject.getCompilerOptions().strict);
|
||||
assert.isTrue(bProject.getCompilerOptions().strict);
|
||||
checkWatchedFiles(host, [aConfig.path, bConfig.path, libFile.path, alphaExtendedConfig.path]);
|
||||
|
||||
host.writeFile(alphaExtendedConfig.path, "{}");
|
||||
assert.isTrue(projectService.hasPendingProjectUpdate(aProject));
|
||||
assert.isTrue(projectService.hasPendingProjectUpdate(bProject));
|
||||
host.checkTimeoutQueueLengthAndRun(3);
|
||||
assert.isUndefined(aProject.getCompilerOptions().strict);
|
||||
assert.isUndefined(bProject.getCompilerOptions().strict);
|
||||
checkWatchedFiles(host, [aConfig.path, bConfig.path, libFile.path, alphaExtendedConfig.path]);
|
||||
baselineTsserverLogs("configuredProjects", "should watch the extended configs of multiple projects", projectService);
|
||||
});
|
||||
|
||||
it("should stop watching the extended configs of closed projects", () => {
|
||||
@@ -1174,27 +1061,21 @@ foo();`
|
||||
path: `${tscWatch.projectRoot}/dummy/tsconfig.json`,
|
||||
content: "{}"
|
||||
};
|
||||
const { host, projectService, aFile, bFile, aConfig, bConfig, alphaExtendedConfig, bravoExtendedConfig } = getService([dummy, dummyConfig]);
|
||||
const { projectService, aFile, bFile } = getService([dummy, dummyConfig]);
|
||||
|
||||
projectService.openClientFile(aFile.path);
|
||||
projectService.openClientFile(bFile.path);
|
||||
projectService.openClientFile(dummy.path);
|
||||
checkNumberOfConfiguredProjects(projectService, 3);
|
||||
checkWatchedFiles(host, [aConfig.path, bConfig.path, libFile.path, bravoExtendedConfig.path, alphaExtendedConfig.path, dummyConfig.path]);
|
||||
|
||||
projectService.closeClientFile(bFile.path);
|
||||
projectService.closeClientFile(dummy.path);
|
||||
projectService.openClientFile(dummy.path);
|
||||
|
||||
checkNumberOfConfiguredProjects(projectService, 2);
|
||||
checkWatchedFiles(host, [aConfig.path, libFile.path, alphaExtendedConfig.path, dummyConfig.path]);
|
||||
|
||||
projectService.closeClientFile(aFile.path);
|
||||
projectService.closeClientFile(dummy.path);
|
||||
projectService.openClientFile(dummy.path);
|
||||
|
||||
checkNumberOfConfiguredProjects(projectService, 1);
|
||||
checkWatchedFiles(host, [libFile.path, dummyConfig.path]);
|
||||
baselineTsserverLogs("configuredProjects", "should stop watching the extended configs of closed projects", projectService);
|
||||
});
|
||||
});
|
||||
});
|
||||
@@ -1297,35 +1178,16 @@ foo();`
|
||||
};
|
||||
const files = [file1, file2a, configFile, libFile];
|
||||
const host = createServerHost(files);
|
||||
const projectService = createProjectService(host);
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const project = projectService.configuredProjects.get(configFile.path)!;
|
||||
assert.isDefined(project);
|
||||
checkProjectActualFiles(project, map(files, file => file.path));
|
||||
checkWatchedFiles(host, mapDefined(files, file => file === file1 ? undefined : file.path));
|
||||
checkWatchedDirectoriesDetailed(host, ["/a/b"], 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, ["/a/b/node_modules/@types"], 1, /*recursive*/ true);
|
||||
|
||||
files.push(file2);
|
||||
host.writeFile(file2.path, file2.content);
|
||||
host.runQueuedTimeoutCallbacks(); // Scheduled invalidation of resolutions
|
||||
host.runQueuedTimeoutCallbacks(); // Actual update
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
|
||||
checkProjectActualFiles(project, mapDefined(files, file => file === file2a ? undefined : file.path));
|
||||
checkWatchedFiles(host, mapDefined(files, file => file === file1 ? undefined : file.path));
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, ["/a/b/node_modules/@types"], 1, /*recursive*/ true);
|
||||
|
||||
// On next file open the files file2a should be closed and not watched any more
|
||||
projectService.openClientFile(file2.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
assert.strictEqual(projectService.configuredProjects.get(configFile.path), project);
|
||||
checkProjectActualFiles(project, mapDefined(files, file => file === file2a ? undefined : file.path));
|
||||
checkWatchedFiles(host, [libFile.path, configFile.path]);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, ["/a/b/node_modules/@types"], 1, /*recursive*/ true);
|
||||
baselineTsserverLogs("configuredProjects", "changed module resolution reflected when specifying files list", projectService);
|
||||
});
|
||||
|
||||
it("Failed lookup locations uses parent most node_modules directory", () => {
|
||||
@@ -1355,17 +1217,9 @@ foo();`
|
||||
nonLibFiles.forEach(f => f.path = root + f.path);
|
||||
const files = nonLibFiles.concat(libFile);
|
||||
const host = createServerHost(files);
|
||||
const projectService = createProjectService(host);
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
projectService.openClientFile(file1.path);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const project = projectService.configuredProjects.get(configFile.path)!;
|
||||
assert.isDefined(project);
|
||||
checkProjectActualFiles(project, [file1.path, libFile.path, module1.path, module2.path, configFile.path]);
|
||||
checkWatchedFiles(host, [libFile.path, configFile.path]);
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
const watchedRecursiveDirectories = getTypeRootsFromLocation(root + "/a/b/src");
|
||||
watchedRecursiveDirectories.push(`${root}/a/b/src/node_modules`, `${root}/a/b/node_modules`);
|
||||
checkWatchedDirectories(host, watchedRecursiveDirectories, /*recursive*/ true);
|
||||
baselineTsserverLogs("configuredProjects", "failed lookup locations uses parent most node_modules directory", projectService);
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -198,7 +198,7 @@ namespace ts.projectSystem {
|
||||
|
||||
describe("when using event handler", () => {
|
||||
verifyProjectLoadingStartAndFinish(host => {
|
||||
const { session, events } = createSessionWithEventTracking<server.ProjectLoadingStartEvent | server.ProjectLoadingFinishEvent>(host, server.ProjectLoadingStartEvent, server.ProjectLoadingFinishEvent);
|
||||
const { session, events } = createSessionWithEventTracking<server.ProjectLoadingStartEvent | server.ProjectLoadingFinishEvent>(host, [server.ProjectLoadingStartEvent, server.ProjectLoadingFinishEvent]);
|
||||
return {
|
||||
session,
|
||||
getNumberOfEvents: () => events.length,
|
||||
|
||||
@@ -28,7 +28,7 @@ namespace ts.projectSystem {
|
||||
verifyInitialOpen(file: File): void;
|
||||
}
|
||||
|
||||
function verifyProjectsUpdatedInBackgroundEvent(createSession: (host: TestServerHost) => ProjectsUpdatedInBackgroundEventVerifier) {
|
||||
function verifyProjectsUpdatedInBackgroundEvent(scenario: string, createSession: (host: TestServerHost, logger?: Logger) => ProjectsUpdatedInBackgroundEventVerifier) {
|
||||
it("when adding new file", () => {
|
||||
const commonFile1: File = {
|
||||
path: "/a/b/file1.ts",
|
||||
@@ -415,96 +415,70 @@ namespace ts.projectSystem {
|
||||
});
|
||||
|
||||
describe("resolution when resolution cache size", () => {
|
||||
function verifyWithMaxCacheLimit(useSlashRootAsSomeNotRootFolderInUserDirectory: boolean) {
|
||||
const rootFolder = useSlashRootAsSomeNotRootFolderInUserDirectory ? "/user/username/rootfolder/otherfolder/" : "/";
|
||||
const file1: File = {
|
||||
path: rootFolder + "a/b/project/file1.ts",
|
||||
content: 'import a from "file2"'
|
||||
};
|
||||
const file2: File = {
|
||||
path: rootFolder + "a/b/node_modules/file2.d.ts",
|
||||
content: "export class a { }"
|
||||
};
|
||||
const file3: File = {
|
||||
path: rootFolder + "a/b/project/file3.ts",
|
||||
content: "export class c { }"
|
||||
};
|
||||
const configFile: File = {
|
||||
path: rootFolder + "a/b/project/tsconfig.json",
|
||||
content: JSON.stringify({ compilerOptions: { typeRoots: [] } })
|
||||
};
|
||||
function verifyWithMaxCacheLimit(subScenario: string, useSlashRootAsSomeNotRootFolderInUserDirectory: boolean) {
|
||||
it(subScenario, () => {
|
||||
const rootFolder = useSlashRootAsSomeNotRootFolderInUserDirectory ? "/user/username/rootfolder/otherfolder/" : "/";
|
||||
const file1: File = {
|
||||
path: rootFolder + "a/b/project/file1.ts",
|
||||
content: 'import a from "file2"'
|
||||
};
|
||||
const file2: File = {
|
||||
path: rootFolder + "a/b/node_modules/file2.d.ts",
|
||||
content: "export class a { }"
|
||||
};
|
||||
const file3: File = {
|
||||
path: rootFolder + "a/b/project/file3.ts",
|
||||
content: "export class c { }"
|
||||
};
|
||||
const configFile: File = {
|
||||
path: rootFolder + "a/b/project/tsconfig.json",
|
||||
content: JSON.stringify({ compilerOptions: { typeRoots: [] } })
|
||||
};
|
||||
|
||||
const projectFiles = [file1, file3, libFile, configFile];
|
||||
const openFiles = [file1.path];
|
||||
const watchedRecursiveDirectories = useSlashRootAsSomeNotRootFolderInUserDirectory ?
|
||||
// Folders of node_modules lookup not in changedRoot
|
||||
["a/b/project", "a/b/project/node_modules", "a/b/node_modules", "a/node_modules", "node_modules"].map(v => rootFolder + v) :
|
||||
// Folder of tsconfig
|
||||
["/a/b/project", "/a/b/project/node_modules"];
|
||||
const host = createServerHost(projectFiles);
|
||||
const { session, verifyInitialOpen, verifyProjectsUpdatedInBackgroundEventHandler } = createSession(host);
|
||||
const projectService = session.getProjectService();
|
||||
verifyInitialOpen(file1);
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const project = projectService.configuredProjects.get(configFile.path)!;
|
||||
verifyProject();
|
||||
const openFiles = [file1.path];
|
||||
const host = createServerHost([file1, file3, libFile, configFile]);
|
||||
const { session, verifyInitialOpen, verifyProjectsUpdatedInBackgroundEventHandler } = createSession(host, createLoggerWithInMemoryLogs());
|
||||
verifyInitialOpen(file1);
|
||||
|
||||
file3.content += "export class d {}";
|
||||
host.writeFile(file3.path, file3.content);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
file3.content += "export class d {}";
|
||||
host.writeFile(file3.path, file3.content);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
|
||||
// Since this is first event
|
||||
verifyProject();
|
||||
verifyProjectsUpdatedInBackgroundEventHandler([{
|
||||
eventName: server.ProjectsUpdatedInBackgroundEvent,
|
||||
data: {
|
||||
openFiles
|
||||
}
|
||||
}]);
|
||||
// Since this is first event
|
||||
verifyProjectsUpdatedInBackgroundEventHandler([{
|
||||
eventName: server.ProjectsUpdatedInBackgroundEvent,
|
||||
data: {
|
||||
openFiles
|
||||
}
|
||||
}]);
|
||||
|
||||
projectFiles.push(file2);
|
||||
host.writeFile(file2.path, file2.content);
|
||||
host.runQueuedTimeoutCallbacks(); // For invalidation
|
||||
host.runQueuedTimeoutCallbacks(); // For actual update
|
||||
if (useSlashRootAsSomeNotRootFolderInUserDirectory) {
|
||||
watchedRecursiveDirectories.length = 3;
|
||||
}
|
||||
else {
|
||||
// file2 addition wont be detected
|
||||
projectFiles.pop();
|
||||
assert.isTrue(host.fileExists(file2.path));
|
||||
}
|
||||
verifyProject();
|
||||
host.writeFile(file2.path, file2.content);
|
||||
host.runQueuedTimeoutCallbacks(); // For invalidation
|
||||
host.runQueuedTimeoutCallbacks(); // For actual update
|
||||
|
||||
verifyProjectsUpdatedInBackgroundEventHandler(useSlashRootAsSomeNotRootFolderInUserDirectory ? [{
|
||||
eventName: server.ProjectsUpdatedInBackgroundEvent,
|
||||
data: {
|
||||
openFiles
|
||||
}
|
||||
}] : []);
|
||||
|
||||
function verifyProject() {
|
||||
checkProjectActualFiles(project, map(projectFiles, file => file.path));
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
checkWatchedDirectories(host, watchedRecursiveDirectories, /*recursive*/ true);
|
||||
}
|
||||
verifyProjectsUpdatedInBackgroundEventHandler(useSlashRootAsSomeNotRootFolderInUserDirectory ? [{
|
||||
eventName: server.ProjectsUpdatedInBackgroundEvent,
|
||||
data: {
|
||||
openFiles
|
||||
}
|
||||
}] : []);
|
||||
baselineTsserverLogs("projectUpdatedInBackground", `${scenario} and ${subScenario}`, session);
|
||||
});
|
||||
}
|
||||
|
||||
it("project is not at root level", () => {
|
||||
verifyWithMaxCacheLimit(/*useSlashRootAsSomeNotRootFolderInUserDirectory*/ true);
|
||||
});
|
||||
|
||||
it("project is at root level", () => {
|
||||
verifyWithMaxCacheLimit(/*useSlashRootAsSomeNotRootFolderInUserDirectory*/ false);
|
||||
});
|
||||
verifyWithMaxCacheLimit("project is not at root level", /*useSlashRootAsSomeNotRootFolderInUserDirectory*/ true);
|
||||
verifyWithMaxCacheLimit("project is at root level", /*useSlashRootAsSomeNotRootFolderInUserDirectory*/ false);
|
||||
});
|
||||
}
|
||||
|
||||
describe("when event handler is set in the session", () => {
|
||||
verifyProjectsUpdatedInBackgroundEvent(createSessionWithProjectChangedEventHandler);
|
||||
verifyProjectsUpdatedInBackgroundEvent("when event handler is set in the session", createSessionWithProjectChangedEventHandler);
|
||||
|
||||
function createSessionWithProjectChangedEventHandler(host: TestServerHost): ProjectsUpdatedInBackgroundEventVerifier {
|
||||
const { session, events: projectChangedEvents } = createSessionWithEventTracking<server.ProjectsUpdatedInBackgroundEvent>(host, server.ProjectsUpdatedInBackgroundEvent);
|
||||
function createSessionWithProjectChangedEventHandler(host: TestServerHost, logger: Logger | undefined): ProjectsUpdatedInBackgroundEventVerifier {
|
||||
const { session, events: projectChangedEvents } = createSessionWithEventTracking<server.ProjectsUpdatedInBackgroundEvent>(
|
||||
host,
|
||||
server.ProjectsUpdatedInBackgroundEvent,
|
||||
logger && { logger }
|
||||
);
|
||||
return {
|
||||
session,
|
||||
verifyProjectsUpdatedInBackgroundEventHandler,
|
||||
@@ -535,16 +509,20 @@ namespace ts.projectSystem {
|
||||
|
||||
describe("when event handler is not set but session is created with canUseEvents = true", () => {
|
||||
describe("without noGetErrOnBackgroundUpdate, diagnostics for open files are queued", () => {
|
||||
verifyProjectsUpdatedInBackgroundEvent(createSessionThatUsesEvents);
|
||||
verifyProjectsUpdatedInBackgroundEvent("without noGetErrOnBackgroundUpdate", createSessionThatUsesEvents);
|
||||
});
|
||||
|
||||
describe("with noGetErrOnBackgroundUpdate, diagnostics for open file are not queued", () => {
|
||||
verifyProjectsUpdatedInBackgroundEvent(host => createSessionThatUsesEvents(host, /*noGetErrOnBackgroundUpdate*/ true));
|
||||
verifyProjectsUpdatedInBackgroundEvent("with noGetErrOnBackgroundUpdate", (host, logger) => createSessionThatUsesEvents(host, logger, /*noGetErrOnBackgroundUpdate*/ true));
|
||||
});
|
||||
|
||||
|
||||
function createSessionThatUsesEvents(host: TestServerHost, noGetErrOnBackgroundUpdate?: boolean): ProjectsUpdatedInBackgroundEventVerifier {
|
||||
const { session, getEvents, clearEvents } = createSessionWithDefaultEventHandler<protocol.ProjectsUpdatedInBackgroundEvent>(host, server.ProjectsUpdatedInBackgroundEvent, { noGetErrOnBackgroundUpdate });
|
||||
function createSessionThatUsesEvents(host: TestServerHost, logger: Logger | undefined, noGetErrOnBackgroundUpdate?: boolean): ProjectsUpdatedInBackgroundEventVerifier {
|
||||
const { session, getEvents, clearEvents } = createSessionWithDefaultEventHandler<protocol.ProjectsUpdatedInBackgroundEvent>(
|
||||
host,
|
||||
server.ProjectsUpdatedInBackgroundEvent,
|
||||
{ noGetErrOnBackgroundUpdate, logger: logger || createHasErrorMessageLogger() }
|
||||
);
|
||||
|
||||
return {
|
||||
session,
|
||||
|
||||
@@ -10,10 +10,6 @@ namespace ts.projectSystem {
|
||||
export import createServerHost = TestFSWithWatch.createServerHost;
|
||||
export import checkArray = TestFSWithWatch.checkArray;
|
||||
export import libFile = TestFSWithWatch.libFile;
|
||||
export import checkWatchedFiles = TestFSWithWatch.checkWatchedFiles;
|
||||
export import checkWatchedFilesDetailed = TestFSWithWatch.checkWatchedFilesDetailed;
|
||||
export import checkWatchedDirectories = TestFSWithWatch.checkWatchedDirectories;
|
||||
export import checkWatchedDirectoriesDetailed = TestFSWithWatch.checkWatchedDirectoriesDetailed;
|
||||
|
||||
export import commonFile1 = tscWatch.commonFile1;
|
||||
export import commonFile2 = tscWatch.commonFile2;
|
||||
@@ -103,11 +99,22 @@ namespace ts.projectSystem {
|
||||
.replace(/\"updateGraphDurationMs\"\:\d+(?:\.\d+)?/g, `"updateGraphDurationMs":*`)
|
||||
.replace(/\"createAutoImportProviderProgramDurationMs\"\:\d+(?:\.\d+)?/g, `"createAutoImportProviderProgramDurationMs":*`)
|
||||
.replace(`"version":"${version}"`, `"version":"FakeVersion"`)
|
||||
.replace(/getCompletionData: Get current token: \d+(?:\.\d+)?/g, `getCompletionData: Get current token: *`)
|
||||
.replace(/getCompletionData: Is inside comment: \d+(?:\.\d+)?/g, `getCompletionData: Is inside comment: *`)
|
||||
.replace(/getCompletionData: Get previous token: \d+(?:\.\d+)?/g, `getCompletionData: Get previous token: *`)
|
||||
.replace(/getCompletionsAtPosition: isCompletionListBlocker: \d+(?:\.\d+)?/g, `getCompletionsAtPosition: isCompletionListBlocker: *`)
|
||||
.replace(/getCompletionData: Semantic work: \d+(?:\.\d+)?/g, `getCompletionData: Semantic work: *`)
|
||||
.replace(/getCompletionsAtPosition: getCompletionEntriesFromSymbols: \d+(?:\.\d+)?/g, `getCompletionsAtPosition: getCompletionEntriesFromSymbols: *`)
|
||||
.replace(/forEachExternalModuleToImportFrom autoImportProvider: \d+(?:\.\d+)?/g, `forEachExternalModuleToImportFrom autoImportProvider: *`)
|
||||
.replace(/getExportInfoMap: done in \d+(?:\.\d+)?/g, `getExportInfoMap: done in *`)
|
||||
.replace(/collectAutoImports: \d+(?:\.\d+)?/g, `collectAutoImports: *`)
|
||||
.replace(/dependencies in \d+(?:\.\d+)?/g, `dependencies in *`)
|
||||
.replace(/\"exportMapKey\"\:\"[_$a-zA-Z][_$_$a-zA-Z0-9]*\|\d+\|/g, match => match.replace(/\|\d+\|/, `|*|`))
|
||||
)
|
||||
};
|
||||
}
|
||||
|
||||
export function baselineTsserverLogs(scenario: string, subScenario: string, sessionOrService: TestSession | TestProjectService) {
|
||||
export function baselineTsserverLogs(scenario: string, subScenario: string, sessionOrService: { logger: Logger; }) {
|
||||
Debug.assert(sessionOrService.logger.logs.length); // Ensure caller used in memory logger
|
||||
Harness.Baseline.runBaseline(`tsserver/${scenario}/${subScenario.split(" ").join("-")}.js`, sessionOrService.logger.logs.join("\r\n"));
|
||||
}
|
||||
@@ -138,7 +145,7 @@ namespace ts.projectSystem {
|
||||
installTypingHost: server.ServerHost,
|
||||
readonly typesRegistry = new Map<string, MapLike<string>>(),
|
||||
log?: TI.Log) {
|
||||
super(installTypingHost, globalTypingsCacheLocation, TestFSWithWatch.safeList.path, customTypesMap.path, throttleLimit, log);
|
||||
super(installTypingHost, globalTypingsCacheLocation, "/safeList.json" as Path, customTypesMap.path, throttleLimit, log);
|
||||
}
|
||||
|
||||
protected postExecActions: PostExecAction[] = [];
|
||||
@@ -379,14 +386,15 @@ namespace ts.projectSystem {
|
||||
return new TestSession({ ...sessionOptions, ...opts });
|
||||
}
|
||||
|
||||
export function createSessionWithEventTracking<T extends server.ProjectServiceEvent>(host: server.ServerHost, eventName: T["eventName"], ...eventNames: T["eventName"][]) {
|
||||
export function createSessionWithEventTracking<T extends server.ProjectServiceEvent>(host: server.ServerHost, eventNames: T["eventName"] | T["eventName"][], opts: Partial<TestSessionOptions> = {}) {
|
||||
const events: T[] = [];
|
||||
const session = createSession(host, {
|
||||
eventHandler: e => {
|
||||
if (e.eventName === eventName || eventNames.some(eventName => e.eventName === eventName)) {
|
||||
if (isArray(eventNames) ? eventNames.some(eventName => e.eventName === eventName) : eventNames === e.eventName) {
|
||||
events.push(e as T);
|
||||
}
|
||||
}
|
||||
},
|
||||
...opts
|
||||
});
|
||||
|
||||
return { session, events };
|
||||
@@ -475,13 +483,6 @@ namespace ts.projectSystem {
|
||||
return iterResult.value;
|
||||
}
|
||||
|
||||
export function checkOrphanScriptInfos(service: server.ProjectService, expectedFiles: readonly string[]) {
|
||||
checkArray("Orphan ScriptInfos:", arrayFrom(mapDefinedIterator(
|
||||
service.filenameToScriptInfo.values(),
|
||||
v => v.containingProjects.length === 0 ? v.fileName : undefined
|
||||
)), expectedFiles);
|
||||
}
|
||||
|
||||
export function checkProjectActualFiles(project: server.Project, expectedFiles: readonly string[]) {
|
||||
checkArray(`${server.ProjectKind[project.projectKind]} project: ${project.getProjectName()}:: actual files`, project.getFileNames(), expectedFiles);
|
||||
}
|
||||
@@ -522,14 +523,6 @@ namespace ts.projectSystem {
|
||||
];
|
||||
}
|
||||
|
||||
export function checkOpenFiles(projectService: server.ProjectService, expectedFiles: File[]) {
|
||||
checkArray("Open files", arrayFrom(projectService.openFiles.keys(), path => projectService.getScriptInfoForPath(path as Path)!.fileName), expectedFiles.map(file => file.path));
|
||||
}
|
||||
|
||||
export function checkScriptInfos(projectService: server.ProjectService, expectedFiles: readonly string[], additionInfo?: string) {
|
||||
checkArray(`ScriptInfos files: ${additionInfo || ""}`, arrayFrom(projectService.filenameToScriptInfo.values(), info => info.fileName), expectedFiles);
|
||||
}
|
||||
|
||||
export function protocolLocationFromSubstring(str: string, substring: string, options?: SpanFromSubstringOptions): protocol.Location {
|
||||
const start = nthIndexOf(str, substring, options ? options.index : 0);
|
||||
Debug.assert(start !== -1);
|
||||
|
||||
@@ -14,19 +14,9 @@ namespace ts.projectSystem {
|
||||
content: `export let x: number`
|
||||
};
|
||||
const host = createServerHost([appFile, moduleFile, libFile]);
|
||||
const projectService = createProjectService(host);
|
||||
const { configFileName } = projectService.openClientFile(appFile.path);
|
||||
|
||||
assert(!configFileName, `should not find config, got: '${configFileName}`);
|
||||
checkNumberOfConfiguredProjects(projectService, 0);
|
||||
checkNumberOfInferredProjects(projectService, 1);
|
||||
|
||||
const project = projectService.inferredProjects[0];
|
||||
|
||||
checkArray("inferred project", project.getFileNames(), [appFile.path, libFile.path, moduleFile.path]);
|
||||
checkWatchedFiles(host, getConfigFilesToWatch(tscWatch.projectRoot).concat(libFile.path, moduleFile.path));
|
||||
checkWatchedDirectories(host, [tscWatch.projectRoot], /*recursive*/ false);
|
||||
checkWatchedDirectories(host, [combinePaths(tscWatch.projectRoot, nodeModulesAtTypes)], /*recursive*/ true);
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
projectService.openClientFile(appFile.path);
|
||||
baselineTsserverLogs("inferredProjects", "create inferred project", projectService);
|
||||
});
|
||||
|
||||
it("should use only one inferred project if 'useOneInferredProject' is set", () => {
|
||||
|
||||
@@ -59,13 +59,13 @@ namespace ts.projectSystem {
|
||||
});
|
||||
|
||||
it("invalidates module specifiers when changes happen in contained node_modules directories", () => {
|
||||
const { host, moduleSpecifierCache, triggerCompletions } = setup();
|
||||
const { host, session, moduleSpecifierCache, triggerCompletions } = setup(createLoggerWithInMemoryLogs());
|
||||
// Completion at an import statement will calculate and cache module specifiers
|
||||
triggerCompletions({ file: cTs.path, line: 1, offset: cTs.content.length + 1 });
|
||||
checkWatchedDirectories(host, ["/src", "/node_modules"], /*recursive*/ true);
|
||||
host.writeFile("/node_modules/.staging/mobx-12345678/package.json", "{}");
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
assert.equal(moduleSpecifierCache.count(), 0);
|
||||
baselineTsserverLogs("moduleSpecifierCache", "invalidates module specifiers when changes happen in contained node_modules directories", session);
|
||||
});
|
||||
|
||||
it("does not invalidate the cache when new files are added", () => {
|
||||
@@ -123,9 +123,9 @@ namespace ts.projectSystem {
|
||||
});
|
||||
});
|
||||
|
||||
function setup() {
|
||||
function setup(logger?: Logger) {
|
||||
const host = createServerHost([aTs, bTs, cTs, bSymlink, ambientDeclaration, tsconfig, packageJson, mobxPackageJson, mobxDts]);
|
||||
const session = createSession(host);
|
||||
const session = createSession(host, logger && { logger });
|
||||
openFilesForSession([aTs, bTs, cTs], session);
|
||||
const projectService = session.getProjectService();
|
||||
const project = configuredProjectAt(projectService, 0);
|
||||
|
||||
@@ -26,17 +26,19 @@ import { something } from "something";
|
||||
content: "{}"
|
||||
};
|
||||
const host = createServerHost([file1, file2, file3, something, libFile, configFile]);
|
||||
const session = createSession(host, { serverMode: LanguageServiceMode.PartialSemantic, useSingleInferredProject: true });
|
||||
const session = createSession(host, {
|
||||
serverMode: LanguageServiceMode.PartialSemantic,
|
||||
useSingleInferredProject: true,
|
||||
logger: createLoggerWithInMemoryLogs(),
|
||||
});
|
||||
return { host, session, file1, file2, file3, something, configFile };
|
||||
}
|
||||
|
||||
it("open files are added to inferred project even if config file is present and semantic operations succeed", () => {
|
||||
const { host, session, file1, file2 } = setup();
|
||||
const { session, file1, file2 } = setup();
|
||||
const service = session.getProjectService();
|
||||
openFilesForSession([file1], session);
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
const project = service.inferredProjects[0];
|
||||
checkProjectActualFiles(project, [libFile.path, file1.path]); // no imports are resolved
|
||||
verifyCompletions();
|
||||
|
||||
openFilesForSession([file2], session);
|
||||
@@ -44,39 +46,13 @@ import { something } from "something";
|
||||
checkProjectActualFiles(project, [libFile.path, file1.path, file2.path]);
|
||||
verifyCompletions();
|
||||
|
||||
baselineTsserverLogs("partialSemanticServer", "files are added to inferred project", session);
|
||||
|
||||
function verifyCompletions() {
|
||||
assert.isTrue(project.languageServiceEnabled);
|
||||
checkWatchedFiles(host, emptyArray);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ true);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
const response = session.executeCommandSeq<protocol.CompletionsRequest>({
|
||||
session.executeCommandSeq<protocol.CompletionsRequest>({
|
||||
command: protocol.CommandTypes.Completions,
|
||||
arguments: protocolFileLocationFromSubstring(file1, "prop", { index: 1 })
|
||||
}).response as protocol.CompletionEntry[];
|
||||
assert.deepEqual(response, [
|
||||
completionEntry("foo", ScriptElementKind.memberFunctionElement),
|
||||
completionEntry("prop", ScriptElementKind.memberVariableElement),
|
||||
]);
|
||||
}
|
||||
|
||||
function completionEntry(name: string, kind: ScriptElementKind): protocol.CompletionEntry {
|
||||
return {
|
||||
name,
|
||||
kind,
|
||||
kindModifiers: "",
|
||||
sortText: Completions.SortText.LocationPriority,
|
||||
hasAction: undefined,
|
||||
insertText: undefined,
|
||||
isPackageJsonImport: undefined,
|
||||
isImportStatementCompletion: undefined,
|
||||
isRecommended: undefined,
|
||||
replacementSpan: undefined,
|
||||
source: undefined,
|
||||
data: undefined,
|
||||
sourceDisplay: undefined,
|
||||
isSnippet: undefined,
|
||||
labelDetails: undefined,
|
||||
};
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
@@ -84,7 +60,6 @@ import { something } from "something";
|
||||
const { session, file1 } = setup();
|
||||
const service = session.getProjectService();
|
||||
openFilesForSession([file1], session);
|
||||
let hasException = false;
|
||||
const request: protocol.SemanticDiagnosticsSyncRequest = {
|
||||
type: "request",
|
||||
seq: 1,
|
||||
@@ -95,21 +70,17 @@ import { something } from "something";
|
||||
session.executeCommand(request);
|
||||
}
|
||||
catch (e) {
|
||||
assert.equal(e.message, `Request: semanticDiagnosticsSync not allowed in LanguageServiceMode.PartialSemantic`);
|
||||
hasException = true;
|
||||
session.logger.info(e.message);
|
||||
}
|
||||
assert.isTrue(hasException);
|
||||
|
||||
hasException = false;
|
||||
const project = service.inferredProjects[0];
|
||||
try {
|
||||
project.getLanguageService().getSemanticDiagnostics(file1.path);
|
||||
}
|
||||
catch (e) {
|
||||
assert.equal(e.message, `LanguageService Operation: getSemanticDiagnostics not allowed in LanguageServiceMode.PartialSemantic`);
|
||||
hasException = true;
|
||||
session.logger.info(e.message);
|
||||
}
|
||||
assert.isTrue(hasException);
|
||||
baselineTsserverLogs("partialSemanticServer", "throws unsupported commands", session);
|
||||
});
|
||||
|
||||
it("allows syntactic diagnostic commands", () => {
|
||||
@@ -159,11 +130,8 @@ import { something } from "something";
|
||||
content: "export const something = 10;"
|
||||
};
|
||||
host.ensureFileOrFolder(atTypes);
|
||||
const service = session.getProjectService();
|
||||
openFilesForSession([file1], session);
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
const project = service.inferredProjects[0];
|
||||
checkProjectActualFiles(project, [libFile.path, file1.path]); // Should not contain atTypes
|
||||
baselineTsserverLogs("partialSemanticServer", "should not include auto type reference directives", session);
|
||||
});
|
||||
|
||||
it("should not include referenced files from unopened files", () => {
|
||||
@@ -192,30 +160,26 @@ function fooB() { }`
|
||||
content: "{}"
|
||||
};
|
||||
const host = createServerHost([file1, file2, file3, something, libFile, configFile]);
|
||||
const session = createSession(host, { serverMode: LanguageServiceMode.PartialSemantic, useSingleInferredProject: true });
|
||||
const service = session.getProjectService();
|
||||
const session = createSession(host, {
|
||||
serverMode: LanguageServiceMode.PartialSemantic,
|
||||
useSingleInferredProject: true,
|
||||
logger: createLoggerWithInMemoryLogs(),
|
||||
});
|
||||
openFilesForSession([file1], session);
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
const project = service.inferredProjects[0];
|
||||
checkProjectActualFiles(project, [libFile.path, file1.path]); // no resolve
|
||||
baselineTsserverLogs("partialSemanticServer", "should not include referenced files from unopened files", session);
|
||||
});
|
||||
|
||||
it("should not crash when external module name resolution is reused", () => {
|
||||
const { session, file1, file2, file3 } = setup();
|
||||
const service = session.getProjectService();
|
||||
openFilesForSession([file1], session);
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
const project = service.inferredProjects[0];
|
||||
checkProjectActualFiles(project, [libFile.path, file1.path]);
|
||||
|
||||
// Close the file that contains non relative external module name and open some file that doesnt have non relative external module import
|
||||
closeFilesForSession([file1], session);
|
||||
openFilesForSession([file3], session);
|
||||
checkProjectActualFiles(project, [libFile.path, file3.path]);
|
||||
|
||||
// Open file with non relative external module name
|
||||
openFilesForSession([file2], session);
|
||||
checkProjectActualFiles(project, [libFile.path, file2.path, file3.path]);
|
||||
baselineTsserverLogs("partialSemanticServer", "should not crash when external module name resolution is reused", session);
|
||||
});
|
||||
|
||||
it("should not create autoImportProvider or handle package jsons", () => {
|
||||
@@ -250,18 +214,13 @@ function fooB() { }`
|
||||
});
|
||||
|
||||
it("should support go-to-definition on module specifiers", () => {
|
||||
const { session, file1, file2 } = setup();
|
||||
const { session, file1 } = setup();
|
||||
openFilesForSession([file1], session);
|
||||
const response = session.executeCommandSeq<protocol.DefinitionAndBoundSpanRequest>({
|
||||
session.executeCommandSeq<protocol.DefinitionAndBoundSpanRequest>({
|
||||
command: protocol.CommandTypes.DefinitionAndBoundSpan,
|
||||
arguments: protocolFileLocationFromSubstring(file1, `"./b"`)
|
||||
}).response as protocol.DefinitionInfoAndBoundSpan;
|
||||
assert.isDefined(response);
|
||||
assert.deepEqual(response.definitions, [{
|
||||
file: file2.path,
|
||||
start: { line: 1, offset: 1 },
|
||||
end: { line: 1, offset: 1 },
|
||||
}]);
|
||||
});
|
||||
baselineTsserverLogs("partialSemanticServer", "should support go-to-definition on module specifiers", session);
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -861,31 +861,30 @@ namespace ts.projectSystem {
|
||||
content: `<html><script language="javascript">var x = 1;</></html>`
|
||||
};
|
||||
const host = createServerHost([file1]);
|
||||
const projectService = createProjectService(host);
|
||||
const projectService = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
const projectFileName = "projectFileName";
|
||||
projectService.openExternalProject({ projectFileName, options: {}, rootFiles: [{ fileName: file1.path, scriptKind: ScriptKind.JS, hasMixedContent: true }] });
|
||||
|
||||
checkNumberOfProjects(projectService, { externalProjects: 1 });
|
||||
checkWatchedFiles(host, [libFile.path]); // watching the "missing" lib file
|
||||
|
||||
const project = projectService.externalProjects[0];
|
||||
|
||||
const scriptInfo = project.getScriptInfo(file1.path)!;
|
||||
const snap = scriptInfo.getSnapshot();
|
||||
const actualText = getSnapshotText(snap);
|
||||
assert.equal(actualText, "", `expected content to be empty string, got "${actualText}"`);
|
||||
projectService.logger.info(`Text of${file1.path}: ${actualText}`);
|
||||
|
||||
projectService.openClientFile(file1.path, `var x = 1;`);
|
||||
project.updateGraph();
|
||||
|
||||
const quickInfo = project.getLanguageService().getQuickInfoAtPosition(file1.path, 4)!;
|
||||
assert.equal(quickInfo.kind, ScriptElementKind.variableElement);
|
||||
projectService.logger.info(`QuickInfo : ${quickInfo.kind}`);
|
||||
|
||||
projectService.closeClientFile(file1.path);
|
||||
|
||||
const scriptInfo2 = project.getScriptInfo(file1.path)!;
|
||||
const actualText2 = getSnapshotText(scriptInfo2.getSnapshot());
|
||||
assert.equal(actualText2, "", `expected content to be empty string, got "${actualText2}"`);
|
||||
projectService.logger.info(`Text of${file1.path}: ${actualText2}`);
|
||||
baselineTsserverLogs("projects", "files with mixed content are handled correctly", projectService);
|
||||
});
|
||||
|
||||
it("syntax tree cache handles changes in project settings", () => {
|
||||
|
||||
@@ -10,28 +10,17 @@ namespace ts.projectSystem {
|
||||
const testsConfig = TestFSWithWatch.getTsBuildProjectFile("sample1", "tests/tsconfig.json");
|
||||
const testsIndex = TestFSWithWatch.getTsBuildProjectFile("sample1", "tests/index.ts");
|
||||
const host = createServerHost([libFile, coreConfig, coreIndex, coreAnotherModule, coreSomeDecl, logicConfig, logicIndex, testsConfig, testsIndex]);
|
||||
const service = createProjectService(host);
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const service = createProjectService(host, { logger });
|
||||
service.openClientFile(testsIndex.path);
|
||||
|
||||
checkWatchedFilesDetailed(host, [coreConfig, coreIndex, coreAnotherModule, logicConfig, logicIndex, testsConfig, libFile].map(f => f.path.toLowerCase()), 1);
|
||||
checkWatchedDirectoriesDetailed(host, emptyArray, 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
TestFSWithWatch.getTsBuildProjectFilePath("sample1", "core"),
|
||||
TestFSWithWatch.getTsBuildProjectFilePath("sample1", "logic"),
|
||||
...getTypeRootsFromLocation(TestFSWithWatch.getTsBuildProjectFilePath("sample1", "tests"))
|
||||
], 1, /*recursive*/ true);
|
||||
|
||||
// local edit in ts file
|
||||
host.appendFile(logicIndex.path, `function foo() {}`);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(testsConfig.path)!, [libFile.path, coreIndex.path, coreAnotherModule.path, logicIndex.path, testsIndex.path, testsConfig.path]);
|
||||
|
||||
// non local edit in ts file
|
||||
host.appendFile(logicIndex.path, `export function gfoo() {}`);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(testsConfig.path)!, [libFile.path, coreIndex.path, coreAnotherModule.path, logicIndex.path, testsIndex.path, testsConfig.path]);
|
||||
|
||||
// change in project reference config file
|
||||
host.writeFile(logicConfig.path, JSON.stringify({
|
||||
@@ -39,8 +28,7 @@ namespace ts.projectSystem {
|
||||
references: [{ path: "../core" }]
|
||||
}));
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(testsConfig.path)!, [libFile.path, coreIndex.path, coreAnotherModule.path, logicIndex.path, testsIndex.path, testsConfig.path]);
|
||||
baselineTsserverLogs("projectsWithReferences", "sample project", service);
|
||||
});
|
||||
|
||||
describe("on transitive references in different folders", () => {
|
||||
@@ -90,47 +78,23 @@ X;`,
|
||||
export class A {}`
|
||||
};
|
||||
const host = createServerHost([libFile, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs]);
|
||||
const service = createProjectService(host);
|
||||
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
service.openClientFile(cTs.path);
|
||||
return { host, service, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs };
|
||||
}
|
||||
|
||||
it("non local edit", () => {
|
||||
const { host, service, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs } = createService();
|
||||
const { host, service, bTs } = createService();
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
`${tscWatch.projectRoot}/a`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/b`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], 1, /*recursive*/ true);
|
||||
checkOrphanScriptInfos(service, emptyArray);
|
||||
|
||||
// non local edit
|
||||
host.appendFile(bTs.path, `export function gFoo() { }`);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
`${tscWatch.projectRoot}/a`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/b`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], 1, /*recursive*/ true);
|
||||
checkOrphanScriptInfos(service, emptyArray);
|
||||
baselineTsserverLogs("projectsWithReferences", "transitive references with non local edit", service);
|
||||
});
|
||||
|
||||
it("edit on config file", () => {
|
||||
const { host, service, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs } = createService();
|
||||
const { host, service, cConfig, refsTs } = createService();
|
||||
const nRefsTs: File = {
|
||||
path: `${tscWatch.projectRoot}/nrefs/a.d.ts`,
|
||||
content: refsTs.content
|
||||
@@ -140,41 +104,15 @@ export class A {}`
|
||||
cTsConfigJson.compilerOptions.paths = { "@ref/*": ["../nrefs/*"] };
|
||||
host.writeFile(cConfig.path, JSON.stringify(cTsConfigJson));
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, nRefsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path, nRefsTs.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
`${tscWatch.projectRoot}/a`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/b`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/nrefs`, // Failed lookup since nrefs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], 1, /*recursive*/ true);
|
||||
// Script infos arent deleted till next file open
|
||||
checkOrphanScriptInfos(service, [refsTs.path]);
|
||||
|
||||
// revert the edit on config file
|
||||
host.writeFile(cConfig.path, cConfig.content);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path, nRefsTs.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
`${tscWatch.projectRoot}/a`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/b`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], 1, /*recursive*/ true);
|
||||
// Script infos arent deleted till next file open
|
||||
checkOrphanScriptInfos(service, [nRefsTs.path]);
|
||||
baselineTsserverLogs("projectsWithReferences", "transitive references with edit on config file", service);
|
||||
});
|
||||
|
||||
it("edit in referenced config file", () => {
|
||||
const { host, service, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs } = createService();
|
||||
const { host, service, bConfig, refsTs } = createService();
|
||||
const nRefsTs: File = {
|
||||
path: `${tscWatch.projectRoot}/nrefs/a.d.ts`,
|
||||
content: refsTs.content
|
||||
@@ -184,107 +122,33 @@ export class A {}`
|
||||
bTsConfigJson.compilerOptions.paths = { "@ref/*": ["../nrefs/*"] };
|
||||
host.writeFile(bConfig.path, JSON.stringify(bTsConfigJson));
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, refsTs.path, nRefsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path, nRefsTs.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
`${tscWatch.projectRoot}/b`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
`${tscWatch.projectRoot}/nrefs`, // Failed lookup since nrefs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], 1, /*recursive*/ true);
|
||||
// Script infos arent deleted till next file open
|
||||
checkOrphanScriptInfos(service, [aTs.path]);
|
||||
|
||||
// revert the edit on config file
|
||||
host.writeFile(bConfig.path, bConfig.content);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path, nRefsTs.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
`${tscWatch.projectRoot}/a`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/b`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], 1, /*recursive*/ true);
|
||||
// Script infos arent deleted till next file open
|
||||
checkOrphanScriptInfos(service, [nRefsTs.path]);
|
||||
baselineTsserverLogs("projectsWithReferences", "transitive references with edit in referenced config file", service);
|
||||
});
|
||||
|
||||
it("deleting referenced config file", () => {
|
||||
const { host, service, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs } = createService();
|
||||
const { host, service, bConfig } = createService();
|
||||
host.deleteFile(bConfig.path);
|
||||
host.checkTimeoutQueueLengthAndRun(3); // Schedules failed lookup invalidation
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, bConfig.path, cConfig.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
`${tscWatch.projectRoot}/b`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], 1, /*recursive*/ true);
|
||||
// Script infos arent deleted till next file open
|
||||
checkOrphanScriptInfos(service, [aTs.path]);
|
||||
|
||||
// revert
|
||||
host.writeFile(bConfig.path, bConfig.content);
|
||||
host.checkTimeoutQueueLengthAndRun(3); // Schedules failed lookup invalidation
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
`${tscWatch.projectRoot}/a`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/b`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], 1, /*recursive*/ true);
|
||||
checkOrphanScriptInfos(service, emptyArray);
|
||||
baselineTsserverLogs("projectsWithReferences", "transitive references with deleting referenced config file", service);
|
||||
});
|
||||
|
||||
it("deleting transitively referenced config file", () => {
|
||||
const { host, service, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs } = createService();
|
||||
const { host, service, aConfig } = createService();
|
||||
host.deleteFile(aConfig.path);
|
||||
host.checkTimeoutQueueLengthAndRun(3); // Schedules failed lookup invalidation
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
`${tscWatch.projectRoot}/a`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/b`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], 1, /*recursive*/ true);
|
||||
checkOrphanScriptInfos(service, emptyArray);
|
||||
|
||||
// revert
|
||||
host.writeFile(aConfig.path, aConfig.content);
|
||||
host.checkTimeoutQueueLengthAndRun(3); // Schedules failed lookup invalidation
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
`${tscWatch.projectRoot}/a`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/b`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], 1, /*recursive*/ true);
|
||||
checkOrphanScriptInfos(service, emptyArray);
|
||||
baselineTsserverLogs("projectsWithReferences", "transitive references with deleting transitively referenced config file", service);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -330,44 +194,22 @@ X;`,
|
||||
export class A {}`
|
||||
};
|
||||
const host = createServerHost([libFile, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs]);
|
||||
const service = createProjectService(host);
|
||||
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
service.openClientFile(cTs.path);
|
||||
return { host, service, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs };
|
||||
}
|
||||
|
||||
it("non local edit", () => {
|
||||
const { host, service, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs } = createService();
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
const expectedWatchedDirectoriesDetailed = arrayToMap([
|
||||
`${tscWatch.projectRoot}/c`, // Wild card directory
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], identity, () => 1);
|
||||
expectedWatchedDirectoriesDetailed.set(`${tscWatch.projectRoot}/a`, 2); // Failed to package json and wild card directory
|
||||
expectedWatchedDirectoriesDetailed.set(`${tscWatch.projectRoot}/b`, 2); // Failed to package json and wild card directory
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectoriesDetailed, /*recursive*/ true);
|
||||
checkOrphanScriptInfos(service, emptyArray);
|
||||
const { host, service, bTs } = createService();
|
||||
|
||||
// non local edit
|
||||
host.appendFile(bTs.path, `export function gFoo() { }`);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectoriesDetailed, /*recursive*/ true);
|
||||
checkOrphanScriptInfos(service, emptyArray);
|
||||
baselineTsserverLogs("projectsWithReferences", "trasitive references without files with non local edit", service);
|
||||
});
|
||||
|
||||
it("edit on config file", () => {
|
||||
const { host, service, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs } = createService();
|
||||
const { host, service, cConfig, refsTs } = createService();
|
||||
const nRefsTs: File = {
|
||||
path: `${tscWatch.projectRoot}/nrefs/a.d.ts`,
|
||||
content: refsTs.content
|
||||
@@ -377,40 +219,15 @@ export class A {}`
|
||||
cTsConfigJson.compilerOptions.paths = { "@ref/*": ["../nrefs/*"] };
|
||||
host.writeFile(cConfig.path, JSON.stringify(cTsConfigJson));
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, nRefsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path, nRefsTs.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
const expectedWatchedDirectoriesDetailed = arrayToMap([
|
||||
`${tscWatch.projectRoot}/c`, // Wild card directory
|
||||
`${tscWatch.projectRoot}/nrefs`, // Failed lookup since nrefs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], identity, () => 1);
|
||||
expectedWatchedDirectoriesDetailed.set(`${tscWatch.projectRoot}/a`, 2); // Failed to package json and wild card directory
|
||||
expectedWatchedDirectoriesDetailed.set(`${tscWatch.projectRoot}/b`, 2); // Failed to package json and wild card directory
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectoriesDetailed, /*recursive*/ true);
|
||||
// Script infos arent deleted till next file open
|
||||
checkOrphanScriptInfos(service, [refsTs.path]);
|
||||
|
||||
// revert the edit on config file
|
||||
host.writeFile(cConfig.path, cConfig.content);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path, nRefsTs.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
expectedWatchedDirectoriesDetailed.delete(`${tscWatch.projectRoot}/nrefs`);
|
||||
expectedWatchedDirectoriesDetailed.set(`${tscWatch.projectRoot}/refs`, 1); // Failed lookup since refs/a.ts does not exist
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectoriesDetailed, /*recursive*/ true);
|
||||
// Script infos arent deleted till next file open
|
||||
checkOrphanScriptInfos(service, [nRefsTs.path]);
|
||||
baselineTsserverLogs("projectsWithReferences", "trasitive references without files with edit on config file", service);
|
||||
});
|
||||
|
||||
it("edit in referenced config file", () => {
|
||||
const { host, service, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs } = createService();
|
||||
const { host, service, bConfig, refsTs } = createService();
|
||||
const nRefsTs: File = {
|
||||
path: `${tscWatch.projectRoot}/nrefs/a.d.ts`,
|
||||
content: refsTs.content
|
||||
@@ -420,108 +237,33 @@ export class A {}`
|
||||
bTsConfigJson.compilerOptions.paths = { "@ref/*": ["../nrefs/*"] };
|
||||
host.writeFile(bConfig.path, JSON.stringify(bTsConfigJson));
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, refsTs.path, nRefsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path, nRefsTs.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
const expectedWatchedDirectoriesDetailed = arrayToMap([
|
||||
`${tscWatch.projectRoot}/a`, // Wild card directory
|
||||
`${tscWatch.projectRoot}/c`, // Wild card directory
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
`${tscWatch.projectRoot}/nrefs`, // Failed lookup since nrefs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], identity, () => 1);
|
||||
expectedWatchedDirectoriesDetailed.set(`${tscWatch.projectRoot}/b`, 2); // Failed to package json and wild card directory
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectoriesDetailed, /*recursive*/ true);
|
||||
// Script infos arent deleted till next file open
|
||||
checkOrphanScriptInfos(service, [aTs.path]);
|
||||
|
||||
// revert the edit on config file
|
||||
host.writeFile(bConfig.path, bConfig.content);
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path, nRefsTs.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
expectedWatchedDirectoriesDetailed.delete(`${tscWatch.projectRoot}/nrefs`);
|
||||
expectedWatchedDirectoriesDetailed.set(`${tscWatch.projectRoot}/a`, 2); // Failed to package json and wild card directory
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectoriesDetailed, /*recursive*/ true);
|
||||
// Script infos arent deleted till next file open
|
||||
checkOrphanScriptInfos(service, [nRefsTs.path]);
|
||||
baselineTsserverLogs("projectsWithReferences", "trasitive references without files with edit in referenced config file", service);
|
||||
});
|
||||
|
||||
it("deleting referenced config file", () => {
|
||||
const { host, service, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs } = createService();
|
||||
const { host, service, bConfig } = createService();
|
||||
host.deleteFile(bConfig.path);
|
||||
host.checkTimeoutQueueLengthAndRun(3); // Schedules failed lookup invalidation
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, bConfig.path, cConfig.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
`${tscWatch.projectRoot}/c`, // Wild card directory
|
||||
`${tscWatch.projectRoot}/b`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], 1, /*recursive*/ true);
|
||||
// Script infos arent deleted till next file open
|
||||
checkOrphanScriptInfos(service, [aTs.path]);
|
||||
|
||||
// revert
|
||||
host.writeFile(bConfig.path, bConfig.content);
|
||||
host.checkTimeoutQueueLengthAndRun(3); // Schedules failed lookup invalidation
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
const expectedWatchedDirectoriesDetailed = arrayToMap([
|
||||
`${tscWatch.projectRoot}/c`, // Wild card directory
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], identity, () => 1);
|
||||
expectedWatchedDirectoriesDetailed.set(`${tscWatch.projectRoot}/a`, 2); // Failed to package json and wild card directory
|
||||
expectedWatchedDirectoriesDetailed.set(`${tscWatch.projectRoot}/b`, 2); // Failed to package json and wild card directory
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectoriesDetailed, /*recursive*/ true);
|
||||
checkOrphanScriptInfos(service, emptyArray);
|
||||
baselineTsserverLogs("projectsWithReferences", "trasitive references without files with deleting referenced config file", service);
|
||||
});
|
||||
|
||||
it("deleting transitively referenced config file", () => {
|
||||
const { host, service, aConfig, bConfig, cConfig, aTs, bTs, cTs, refsTs } = createService();
|
||||
const { host, service, aConfig } = createService();
|
||||
host.deleteFile(aConfig.path);
|
||||
host.checkTimeoutQueueLengthAndRun(3); // Schedules failed lookup invalidation
|
||||
checkNumberOfProjects(service, { configuredProjects: 1 });
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
const expectedWatchedDirectoriesDetailed = arrayToMap([
|
||||
`${tscWatch.projectRoot}/c`, // Wild card directory
|
||||
`${tscWatch.projectRoot}/a`, // Failed to package json
|
||||
`${tscWatch.projectRoot}/refs`, // Failed lookup since refs/a.ts does not exist
|
||||
...getTypeRootsFromLocation(`${tscWatch.projectRoot}/c`)
|
||||
], identity, () => 1);
|
||||
expectedWatchedDirectoriesDetailed.set(`${tscWatch.projectRoot}/b`, 2); // Failed to package json and wild card directory
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectoriesDetailed, /*recursive*/ true);
|
||||
checkOrphanScriptInfos(service, emptyArray);
|
||||
|
||||
// revert
|
||||
host.writeFile(aConfig.path, aConfig.content);
|
||||
host.checkTimeoutQueueLengthAndRun(3); // Schedules failed lookup invalidation
|
||||
checkProjectActualFiles(service.configuredProjects.get(cConfig.path)!, [libFile.path, cTs.path, cConfig.path, bTs.path, aTs.path, refsTs.path]);
|
||||
checkWatchedFilesDetailed(host, [libFile.path, aTs.path, bTs.path, refsTs.path, aConfig.path, bConfig.path, cConfig.path], 1);
|
||||
checkWatchedDirectoriesDetailed(host, [
|
||||
tscWatch.projectRoot // watches for directories created for resolution of b
|
||||
], 1, /*recursive*/ false);
|
||||
expectedWatchedDirectoriesDetailed.set(`${tscWatch.projectRoot}/a`, 2); // Failed to package json and wild card directory
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectoriesDetailed, /*recursive*/ true);
|
||||
checkOrphanScriptInfos(service, emptyArray);
|
||||
baselineTsserverLogs("projectsWithReferences", "trasitive references without files with deleting transitively referenced config file", service);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -1,10 +1,4 @@
|
||||
namespace ts.projectSystem {
|
||||
function createHostModuleResolutionTrace(host: TestServerHost & ModuleResolutionHost) {
|
||||
const resolutionTrace: string[] = [];
|
||||
host.trace = resolutionTrace.push.bind(resolutionTrace);
|
||||
return resolutionTrace;
|
||||
}
|
||||
|
||||
describe("unittests:: tsserver:: resolutionCache:: tsserverProjectSystem extra resolution pass in server host", () => {
|
||||
it("can load typings that are proper modules", () => {
|
||||
const file1 = {
|
||||
@@ -16,33 +10,14 @@ namespace ts.projectSystem {
|
||||
content: "export let x = 1"
|
||||
};
|
||||
const host: TestServerHost & ModuleResolutionHost = createServerHost([file1, lib]);
|
||||
const resolutionTrace = createHostModuleResolutionTrace(host);
|
||||
const projectService = createProjectService(host, { typingsInstaller: new TestTypingsInstaller("/a/cache", /*throttleLimit*/5, host) });
|
||||
const projectService = createProjectService(host, {
|
||||
typingsInstaller: new TestTypingsInstaller("/a/cache", /*throttleLimit*/5, host),
|
||||
logger: createLoggerWithInMemoryLogs()
|
||||
});
|
||||
|
||||
projectService.setCompilerOptionsForInferredProjects({ traceResolution: true, allowJs: true });
|
||||
projectService.openClientFile(file1.path);
|
||||
projectService.checkNumberOfProjects({ inferredProjects: 1 });
|
||||
const proj = projectService.inferredProjects[0];
|
||||
|
||||
assert.deepEqual(resolutionTrace, [
|
||||
"======== Resolving module 'lib' from '/a/b/app.js'. ========",
|
||||
"Module resolution kind is not specified, using 'NodeJs'.",
|
||||
"Loading module 'lib' from 'node_modules' folder, target file type 'TypeScript'.",
|
||||
"Directory '/a/b/node_modules' does not exist, skipping all lookups in it.",
|
||||
"Directory '/a/node_modules' does not exist, skipping all lookups in it.",
|
||||
"Directory '/node_modules' does not exist, skipping all lookups in it.",
|
||||
"Loading module 'lib' from 'node_modules' folder, target file type 'JavaScript'.",
|
||||
"Directory '/a/b/node_modules' does not exist, skipping all lookups in it.",
|
||||
"Directory '/a/node_modules' does not exist, skipping all lookups in it.",
|
||||
"Directory '/node_modules' does not exist, skipping all lookups in it.",
|
||||
"======== Module name 'lib' was not resolved. ========",
|
||||
`Auto discovery for typings is enabled in project '${proj.getProjectName()}'. Running extra resolution pass for module 'lib' using cache location '/a/cache'.`,
|
||||
"File '/a/cache/node_modules/lib.d.ts' does not exist.",
|
||||
"File '/a/cache/node_modules/@types/lib/package.json' does not exist.",
|
||||
"File '/a/cache/node_modules/@types/lib.d.ts' does not exist.",
|
||||
"File '/a/cache/node_modules/@types/lib/index.d.ts' exist - use it as a name resolution result.",
|
||||
]);
|
||||
checkProjectActualFiles(proj, [file1.path, lib.path]);
|
||||
baselineTsserverLogs("resolutionCache", "can load typings that are proper modules", projectService);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -378,117 +353,6 @@ namespace ts.projectSystem {
|
||||
return { module1, module2 };
|
||||
}
|
||||
|
||||
function verifyTrace(resolutionTrace: string[], expected: string[]) {
|
||||
assert.deepEqual(resolutionTrace, expected);
|
||||
resolutionTrace.length = 0;
|
||||
}
|
||||
|
||||
function getExpectedFileDoesNotExistResolutionTrace(host: TestServerHost, expectedTrace: string[], foundModule: boolean, module: File, directory: string, file: string, ignoreIfParentMissing?: boolean) {
|
||||
if (!foundModule) {
|
||||
const path = combinePaths(directory, file);
|
||||
if (!ignoreIfParentMissing || host.directoryExists(getDirectoryPath(path))) {
|
||||
if (module.path === path) {
|
||||
foundModule = true;
|
||||
}
|
||||
else {
|
||||
expectedTrace.push(`File '${path}' does not exist.`);
|
||||
}
|
||||
}
|
||||
}
|
||||
return foundModule;
|
||||
}
|
||||
|
||||
function getExpectedMissedLocationResolutionTrace(host: TestServerHost, expectedTrace: string[], dirPath: string, module: File, moduleName: string, useNodeModules: boolean, cacheLocation?: string) {
|
||||
let foundModule = false;
|
||||
forEachAncestorDirectory(dirPath, dirPath => {
|
||||
if (dirPath === cacheLocation) {
|
||||
return foundModule;
|
||||
}
|
||||
|
||||
const directory = useNodeModules ? combinePaths(dirPath, nodeModules) : dirPath;
|
||||
if (useNodeModules && !foundModule && !host.directoryExists(directory)) {
|
||||
expectedTrace.push(`Directory '${directory}' does not exist, skipping all lookups in it.`);
|
||||
return undefined;
|
||||
}
|
||||
foundModule = getExpectedFileDoesNotExistResolutionTrace(host, expectedTrace, foundModule, module, directory, `${moduleName}/package.json`, /*ignoreIfParentMissing*/ true);
|
||||
foundModule = getExpectedFileDoesNotExistResolutionTrace(host, expectedTrace, foundModule, module, directory, `${moduleName}.ts`);
|
||||
foundModule = getExpectedFileDoesNotExistResolutionTrace(host, expectedTrace, foundModule, module, directory, `${moduleName}.tsx`);
|
||||
foundModule = getExpectedFileDoesNotExistResolutionTrace(host, expectedTrace, foundModule, module, directory, `${moduleName}.d.ts`);
|
||||
foundModule = getExpectedFileDoesNotExistResolutionTrace(host, expectedTrace, foundModule, module, directory, `${moduleName}/index.ts`, /*ignoreIfParentMissing*/ true);
|
||||
if (useNodeModules && !foundModule) {
|
||||
expectedTrace.push(`Directory '${directory}/@types' does not exist, skipping all lookups in it.`);
|
||||
}
|
||||
return foundModule ? true : undefined;
|
||||
});
|
||||
}
|
||||
|
||||
function getExpectedResolutionTraceHeader(expectedTrace: string[], file: File, moduleName: string) {
|
||||
expectedTrace.push(
|
||||
`======== Resolving module '${moduleName}' from '${file.path}'. ========`,
|
||||
`Module resolution kind is not specified, using 'NodeJs'.`
|
||||
);
|
||||
}
|
||||
|
||||
function getExpectedResolutionTraceFooter(expectedTrace: string[], module: File, moduleName: string, addRealPathTrace: boolean, ignoreModuleFileFound?: boolean) {
|
||||
if (!ignoreModuleFileFound) {
|
||||
expectedTrace.push(`File '${module.path}' exist - use it as a name resolution result.`);
|
||||
}
|
||||
if (addRealPathTrace) {
|
||||
expectedTrace.push(`Resolving real path for '${module.path}', result '${module.path}'.`);
|
||||
}
|
||||
expectedTrace.push(`======== Module name '${moduleName}' was successfully resolved to '${module.path}'. ========`);
|
||||
}
|
||||
|
||||
function getExpectedModuleResolutionFromCacheTrace(containingFile: File, module: File, moduleName: string, cacheLocation: string): string {
|
||||
return `Reusing resolution of module '${moduleName}' from '${containingFile.path}' found in cache from location '${cacheLocation}', it was successfully resolved to '${module.path}'.`;
|
||||
}
|
||||
|
||||
function getExpectedRelativeModuleResolutionTrace(host: TestServerHost, file: File, module: File, moduleName: string, expectedTrace: string[] = []) {
|
||||
getExpectedResolutionTraceHeader(expectedTrace, file, moduleName);
|
||||
expectedTrace.push(`Loading module as file / folder, candidate module location '${removeFileExtension(module.path)}', target file type 'TypeScript'.`);
|
||||
getExpectedMissedLocationResolutionTrace(host, expectedTrace, getDirectoryPath(normalizePath(combinePaths(getDirectoryPath(file.path), moduleName))), module, moduleName.substring(moduleName.lastIndexOf("/") + 1), /*useNodeModules*/ false);
|
||||
getExpectedResolutionTraceFooter(expectedTrace, module, moduleName, /*addRealPathTrace*/ false);
|
||||
return expectedTrace;
|
||||
}
|
||||
|
||||
function getExpectedNonRelativeModuleResolutionTrace(host: TestServerHost, file: File, module: File, moduleName: string, expectedTrace: string[] = []) {
|
||||
getExpectedResolutionTraceHeader(expectedTrace, file, moduleName);
|
||||
expectedTrace.push(`Loading module '${moduleName}' from 'node_modules' folder, target file type 'TypeScript'.`);
|
||||
getExpectedMissedLocationResolutionTrace(host, expectedTrace, getDirectoryPath(file.path), module, moduleName, /*useNodeModules*/ true);
|
||||
getExpectedResolutionTraceFooter(expectedTrace, module, moduleName, /*addRealPathTrace*/ true);
|
||||
return expectedTrace;
|
||||
}
|
||||
|
||||
function getExpectedNonRelativeModuleResolutionFromCacheTrace(host: TestServerHost, file: File, module: File, moduleName: string, cacheLocation: string, expectedTrace: string[] = []) {
|
||||
getExpectedResolutionTraceHeader(expectedTrace, file, moduleName);
|
||||
expectedTrace.push(`Loading module '${moduleName}' from 'node_modules' folder, target file type 'TypeScript'.`);
|
||||
getExpectedMissedLocationResolutionTrace(host, expectedTrace, getDirectoryPath(file.path), module, moduleName, /*useNodeModules*/ true, cacheLocation);
|
||||
expectedTrace.push(`Resolution for module '${moduleName}' was found in cache from location '${cacheLocation}'.`);
|
||||
getExpectedResolutionTraceFooter(expectedTrace, module, moduleName, /*addRealPathTrace*/ false, /*ignoreModuleFileFound*/ true);
|
||||
return expectedTrace;
|
||||
}
|
||||
|
||||
function getExpectedReusingResolutionFromOldProgram(file: File, moduleFile: File, moduleName: string) {
|
||||
return `Reusing resolution of module '${moduleName}' from '${file.path}' of old program, it was successfully resolved to '${moduleFile.path}'.`;
|
||||
}
|
||||
|
||||
function verifyWatchesWithConfigFile(host: TestServerHost, files: File[], openFile: File, extraExpectedDirectories?: readonly string[]) {
|
||||
const expectedRecursiveDirectories = new Set([tscWatch.projectRoot, `${tscWatch.projectRoot}/${nodeModulesAtTypes}`, ...(extraExpectedDirectories || emptyArray)]);
|
||||
checkWatchedFiles(host, mapDefined(files, f => {
|
||||
if (f === openFile) {
|
||||
return undefined;
|
||||
}
|
||||
const indexOfNodeModules = f.path.indexOf("/node_modules/");
|
||||
if (indexOfNodeModules === -1) {
|
||||
return f.path;
|
||||
}
|
||||
expectedRecursiveDirectories.add(f.path.substr(0, indexOfNodeModules + "/node_modules".length));
|
||||
return undefined;
|
||||
}));
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
checkWatchedDirectories(host, arrayFrom(expectedRecursiveDirectories.values()), /*recursive*/ true);
|
||||
}
|
||||
|
||||
describe("from files in same folder", () => {
|
||||
function getFiles(fileContent: string) {
|
||||
const file1: File = {
|
||||
@@ -503,64 +367,34 @@ namespace ts.projectSystem {
|
||||
}
|
||||
|
||||
it("relative module name", () => {
|
||||
const module1Name = "./module1";
|
||||
const module2Name = "../module2";
|
||||
const fileContent = `import { module1 } from "${module1Name}";import { module2 } from "${module2Name}";`;
|
||||
const fileContent = `import { module1 } from "./module1";import { module2 } from "../module2";`;
|
||||
const { file1, file2 } = getFiles(fileContent);
|
||||
const { module1, module2 } = getModules(`${tscWatch.projectRoot}/src/module1.ts`, `${tscWatch.projectRoot}/module2.ts`);
|
||||
const files = [module1, module2, file1, file2, configFile, libFile];
|
||||
const host = createServerHost(files);
|
||||
const resolutionTrace = createHostModuleResolutionTrace(host);
|
||||
const service = createProjectService(host);
|
||||
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
service.openClientFile(file1.path);
|
||||
const expectedTrace = getExpectedRelativeModuleResolutionTrace(host, file1, module1, module1Name);
|
||||
getExpectedRelativeModuleResolutionTrace(host, file1, module2, module2Name, expectedTrace);
|
||||
expectedTrace.push(getExpectedModuleResolutionFromCacheTrace(file2, module1, module1Name, `${tscWatch.projectRoot}/src`));
|
||||
expectedTrace.push(getExpectedModuleResolutionFromCacheTrace(file2, module2, module2Name, `${tscWatch.projectRoot}/src`));
|
||||
verifyTrace(resolutionTrace, expectedTrace);
|
||||
verifyWatchesWithConfigFile(host, files, file1);
|
||||
|
||||
host.writeFile(file1.path, file1.content + fileContent);
|
||||
host.writeFile(file2.path, file2.content + fileContent);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
verifyTrace(resolutionTrace, [
|
||||
getExpectedReusingResolutionFromOldProgram(file1, module1, module1Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file1, module2, module2Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file2, module1, module1Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file2, module2, module2Name),
|
||||
]);
|
||||
verifyWatchesWithConfigFile(host, files, file1);
|
||||
|
||||
baselineTsserverLogs("resolutionCache", "relative module name from files in same folder", service);
|
||||
});
|
||||
|
||||
it("non relative module name", () => {
|
||||
const expectedNonRelativeDirectories = [`${tscWatch.projectRoot}/node_modules`, `${tscWatch.projectRoot}/src`];
|
||||
const module1Name = "module1";
|
||||
const module2Name = "module2";
|
||||
const fileContent = `import { module1 } from "${module1Name}";import { module2 } from "${module2Name}";`;
|
||||
const fileContent = `import { module1 } from "module1";import { module2 } from "module2";`;
|
||||
const { file1, file2 } = getFiles(fileContent);
|
||||
const { module1, module2 } = getModules(`${tscWatch.projectRoot}/src/node_modules/module1/index.ts`, `${tscWatch.projectRoot}/node_modules/module2/index.ts`);
|
||||
const files = [module1, module2, file1, file2, configFile, libFile];
|
||||
const host = createServerHost(files);
|
||||
const resolutionTrace = createHostModuleResolutionTrace(host);
|
||||
const service = createProjectService(host);
|
||||
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
service.openClientFile(file1.path);
|
||||
const expectedTrace = getExpectedNonRelativeModuleResolutionTrace(host, file1, module1, module1Name);
|
||||
getExpectedNonRelativeModuleResolutionTrace(host, file1, module2, module2Name, expectedTrace);
|
||||
expectedTrace.push(getExpectedModuleResolutionFromCacheTrace(file2, module1, module1Name, `${tscWatch.projectRoot}/src`));
|
||||
expectedTrace.push(getExpectedModuleResolutionFromCacheTrace(file2, module2, module2Name, `${tscWatch.projectRoot}/src`));
|
||||
verifyTrace(resolutionTrace, expectedTrace);
|
||||
verifyWatchesWithConfigFile(host, files, file1, expectedNonRelativeDirectories);
|
||||
|
||||
host.writeFile(file1.path, file1.content + fileContent);
|
||||
host.writeFile(file2.path, file2.content + fileContent);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
verifyTrace(resolutionTrace, [
|
||||
getExpectedReusingResolutionFromOldProgram(file1, module1, module1Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file1, module2, module2Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file2, module1, module1Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file2, module2, module2Name),
|
||||
]);
|
||||
verifyWatchesWithConfigFile(host, files, file1, expectedNonRelativeDirectories);
|
||||
baselineTsserverLogs("resolutionCache", "non relative module name from files in same folder", service);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -586,93 +420,40 @@ namespace ts.projectSystem {
|
||||
}
|
||||
|
||||
it("relative module name", () => {
|
||||
const module1Name = "./module1";
|
||||
const module2Name = "../module2";
|
||||
const module3Name = "../module1";
|
||||
const module4Name = "../../module2";
|
||||
const module5Name = "../../src/module1";
|
||||
const module6Name = "../src/module1";
|
||||
const fileContent1 = `import { module1 } from "${module1Name}";import { module2 } from "${module2Name}";`;
|
||||
const fileContent2 = `import { module1 } from "${module3Name}";import { module2 } from "${module4Name}";`;
|
||||
const fileContent3 = `import { module1 } from "${module5Name}";import { module2 } from "${module4Name}";`;
|
||||
const fileContent4 = `import { module1 } from "${module6Name}";import { module2 } from "${module2Name}";`;
|
||||
const fileContent1 = `import { module1 } from "./module1";import { module2 } from "../module2";`;
|
||||
const fileContent2 = `import { module1 } from "../module1";import { module2 } from "../../module2";`;
|
||||
const fileContent3 = `import { module1 } from "../../src/module1";import { module2 } from "../../module2";`;
|
||||
const fileContent4 = `import { module1 } from "../src/module1}";import { module2 } from "../module2";`;
|
||||
const { file1, file2, file3, file4 } = getFiles(fileContent1, fileContent2, fileContent3, fileContent4);
|
||||
const { module1, module2 } = getModules(`${tscWatch.projectRoot}/product/src/module1.ts`, `${tscWatch.projectRoot}/product/module2.ts`);
|
||||
const files = [module1, module2, file1, file2, file3, file4, configFile, libFile];
|
||||
const host = createServerHost(files);
|
||||
const resolutionTrace = createHostModuleResolutionTrace(host);
|
||||
const service = createProjectService(host);
|
||||
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
service.openClientFile(file1.path);
|
||||
const expectedTrace = getExpectedRelativeModuleResolutionTrace(host, file1, module1, module1Name);
|
||||
getExpectedRelativeModuleResolutionTrace(host, file1, module2, module2Name, expectedTrace);
|
||||
getExpectedRelativeModuleResolutionTrace(host, file2, module1, module3Name, expectedTrace);
|
||||
getExpectedRelativeModuleResolutionTrace(host, file2, module2, module4Name, expectedTrace);
|
||||
getExpectedRelativeModuleResolutionTrace(host, file4, module1, module6Name, expectedTrace);
|
||||
getExpectedRelativeModuleResolutionTrace(host, file4, module2, module2Name, expectedTrace);
|
||||
getExpectedRelativeModuleResolutionTrace(host, file3, module1, module5Name, expectedTrace);
|
||||
getExpectedRelativeModuleResolutionTrace(host, file3, module2, module4Name, expectedTrace);
|
||||
verifyTrace(resolutionTrace, expectedTrace);
|
||||
verifyWatchesWithConfigFile(host, files, file1);
|
||||
|
||||
host.writeFile(file1.path, file1.content + fileContent1);
|
||||
host.writeFile(file2.path, file2.content + fileContent2);
|
||||
host.writeFile(file3.path, file3.content + fileContent3);
|
||||
host.writeFile(file4.path, file4.content + fileContent4);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
|
||||
verifyTrace(resolutionTrace, [
|
||||
getExpectedReusingResolutionFromOldProgram(file1, module1, module1Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file1, module2, module2Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file2, module1, module3Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file2, module2, module4Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file4, module1, module6Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file4, module2, module2Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file3, module1, module5Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file3, module2, module4Name),
|
||||
]);
|
||||
verifyWatchesWithConfigFile(host, files, file1);
|
||||
baselineTsserverLogs("resolutionCache", "relative module name from files in different folders", service);
|
||||
});
|
||||
|
||||
it("non relative module name", () => {
|
||||
const expectedNonRelativeDirectories = [`${tscWatch.projectRoot}/node_modules`, `${tscWatch.projectRoot}/product`];
|
||||
const module1Name = "module1";
|
||||
const module2Name = "module2";
|
||||
const fileContent = `import { module1 } from "${module1Name}";import { module2 } from "${module2Name}";`;
|
||||
const fileContent = `import { module1 } from "module1";import { module2 } from "module2";`;
|
||||
const { file1, file2, file3, file4 } = getFiles(fileContent);
|
||||
const { module1, module2 } = getModules(`${tscWatch.projectRoot}/product/node_modules/module1/index.ts`, `${tscWatch.projectRoot}/node_modules/module2/index.ts`);
|
||||
const files = [module1, module2, file1, file2, file3, file4, configFile, libFile];
|
||||
const host = createServerHost(files);
|
||||
const resolutionTrace = createHostModuleResolutionTrace(host);
|
||||
const service = createProjectService(host);
|
||||
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
service.openClientFile(file1.path);
|
||||
const expectedTrace = getExpectedNonRelativeModuleResolutionTrace(host, file1, module1, module1Name);
|
||||
getExpectedNonRelativeModuleResolutionTrace(host, file1, module2, module2Name, expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionFromCacheTrace(host, file2, module1, module1Name, getDirectoryPath(file1.path), expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionFromCacheTrace(host, file2, module2, module2Name, getDirectoryPath(file1.path), expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionFromCacheTrace(host, file4, module1, module1Name, `${tscWatch.projectRoot}/product`, expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionFromCacheTrace(host, file4, module2, module2Name, `${tscWatch.projectRoot}/product`, expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionFromCacheTrace(host, file3, module1, module1Name, getDirectoryPath(file4.path), expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionFromCacheTrace(host, file3, module2, module2Name, getDirectoryPath(file4.path), expectedTrace);
|
||||
verifyTrace(resolutionTrace, expectedTrace);
|
||||
verifyWatchesWithConfigFile(host, files, file1, expectedNonRelativeDirectories);
|
||||
|
||||
host.writeFile(file1.path, file1.content + fileContent);
|
||||
host.writeFile(file2.path, file2.content + fileContent);
|
||||
host.writeFile(file3.path, file3.content + fileContent);
|
||||
host.writeFile(file4.path, file4.content + fileContent);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
|
||||
verifyTrace(resolutionTrace, [
|
||||
getExpectedReusingResolutionFromOldProgram(file1, module1, module1Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file1, module2, module2Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file2, module1, module1Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file2, module2, module2Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file4, module1, module1Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file4, module2, module2Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file3, module1, module1Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file3, module2, module2Name),
|
||||
]);
|
||||
verifyWatchesWithConfigFile(host, files, file1, expectedNonRelativeDirectories);
|
||||
baselineTsserverLogs("resolutionCache", "non relative module name from files in different folders", service);
|
||||
});
|
||||
|
||||
it("non relative module name from inferred project", () => {
|
||||
@@ -686,135 +467,72 @@ namespace ts.projectSystem {
|
||||
const { module1, module2 } = getModules(`${tscWatch.projectRoot}/product/node_modules/module1/index.ts`, `${tscWatch.projectRoot}/node_modules/module2/index.ts`);
|
||||
const files = [module1, module2, file1, file2, file3, file4, libFile];
|
||||
const host = createServerHost(files);
|
||||
const resolutionTrace = createHostModuleResolutionTrace(host);
|
||||
const service = createProjectService(host);
|
||||
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
service.setCompilerOptionsForInferredProjects({ traceResolution: true });
|
||||
service.openClientFile(file1.path);
|
||||
const expectedTrace = getExpectedRelativeModuleResolutionTrace(host, file1, file2, file2Name);
|
||||
getExpectedRelativeModuleResolutionTrace(host, file1, file4, file4Name, expectedTrace);
|
||||
getExpectedRelativeModuleResolutionTrace(host, file1, file3, file3Name, expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionTrace(host, file1, module1, module1Name, expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionTrace(host, file1, module2, module2Name, expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionFromCacheTrace(host, file2, module1, module1Name, getDirectoryPath(file1.path), expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionFromCacheTrace(host, file2, module2, module2Name, getDirectoryPath(file1.path), expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionFromCacheTrace(host, file4, module1, module1Name, `${tscWatch.projectRoot}/product`, expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionFromCacheTrace(host, file4, module2, module2Name, `${tscWatch.projectRoot}/product`, expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionFromCacheTrace(host, file3, module1, module1Name, getDirectoryPath(file4.path), expectedTrace);
|
||||
getExpectedNonRelativeModuleResolutionFromCacheTrace(host, file3, module2, module2Name, getDirectoryPath(file4.path), expectedTrace);
|
||||
verifyTrace(resolutionTrace, expectedTrace);
|
||||
|
||||
const currentDirectory = getDirectoryPath(file1.path);
|
||||
const watchedFiles = mapDefined(files, f => f === file1 || f.path.indexOf("/node_modules/") !== -1 ? undefined : f.path)
|
||||
.concat(getConfigFilesToWatch(`${tscWatch.projectRoot}/product/src`));
|
||||
const watchedRecursiveDirectories = getTypeRootsFromLocation(currentDirectory).concat([
|
||||
`${currentDirectory}/node_modules`, `${currentDirectory}/feature`, `${tscWatch.projectRoot}/product/${nodeModules}`,
|
||||
`${tscWatch.projectRoot}/${nodeModules}`, `${tscWatch.projectRoot}/product/test/${nodeModules}`,
|
||||
`${tscWatch.projectRoot}/product/test/src/${nodeModules}`
|
||||
]);
|
||||
checkWatches();
|
||||
|
||||
host.writeFile(file1.path, file1.content + importModuleContent);
|
||||
host.writeFile(file2.path, file2.content + importModuleContent);
|
||||
host.writeFile(file3.path, file3.content + importModuleContent);
|
||||
host.writeFile(file4.path, file4.content + importModuleContent);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
|
||||
verifyTrace(resolutionTrace, [
|
||||
getExpectedReusingResolutionFromOldProgram(file1, file2, file2Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file1, file4, file4Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file1, file3, file3Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file1, module1, module1Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file1, module2, module2Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file2, module1, module1Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file2, module2, module2Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file4, module1, module1Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file4, module2, module2Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file3, module1, module1Name),
|
||||
getExpectedReusingResolutionFromOldProgram(file3, module2, module2Name),
|
||||
]);
|
||||
checkWatches();
|
||||
|
||||
function checkWatches() {
|
||||
checkWatchedFiles(host, watchedFiles);
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
checkWatchedDirectories(host, watchedRecursiveDirectories, /*recursive*/ true);
|
||||
}
|
||||
baselineTsserverLogs("resolutionCache", "non relative module name from inferred project", service);
|
||||
});
|
||||
});
|
||||
|
||||
describe("when watching directories for failed lookup locations in amd resolution", () => {
|
||||
const nodeFile: File = {
|
||||
path: `${tscWatch.projectRoot}/src/typings/node.d.ts`,
|
||||
content: `
|
||||
function verifyModuleResolution(scenario: string, useNodeFile: boolean) {
|
||||
it(scenario, () => {
|
||||
const nodeFile: File = {
|
||||
path: `${tscWatch.projectRoot}/src/typings/node.d.ts`,
|
||||
content: `
|
||||
declare module "fs" {
|
||||
export interface something {
|
||||
}
|
||||
}`
|
||||
};
|
||||
const electronFile: File = {
|
||||
path: `${tscWatch.projectRoot}/src/typings/electron.d.ts`,
|
||||
content: `
|
||||
};
|
||||
const electronFile: File = {
|
||||
path: `${tscWatch.projectRoot}/src/typings/electron.d.ts`,
|
||||
content: `
|
||||
declare module 'original-fs' {
|
||||
import * as fs from 'fs';
|
||||
export = fs;
|
||||
}`
|
||||
};
|
||||
const srcFile: File = {
|
||||
path: `${tscWatch.projectRoot}/src/somefolder/srcfile.ts`,
|
||||
content: `
|
||||
};
|
||||
const srcFile: File = {
|
||||
path: `${tscWatch.projectRoot}/src/somefolder/srcfile.ts`,
|
||||
content: `
|
||||
import { x } from "somefolder/module1";
|
||||
import { x } from "somefolder/module2";
|
||||
const y = x;`
|
||||
};
|
||||
const moduleFile: File = {
|
||||
path: `${tscWatch.projectRoot}/src/somefolder/module1.ts`,
|
||||
content: `
|
||||
};
|
||||
const moduleFile: File = {
|
||||
path: `${tscWatch.projectRoot}/src/somefolder/module1.ts`,
|
||||
content: `
|
||||
export const x = 10;`
|
||||
};
|
||||
const configFile: File = {
|
||||
path: `${tscWatch.projectRoot}/src/tsconfig.json`,
|
||||
content: JSON.stringify({
|
||||
compilerOptions: {
|
||||
module: "amd",
|
||||
moduleResolution: "classic",
|
||||
target: "es5",
|
||||
outDir: "../out",
|
||||
baseUrl: "./",
|
||||
typeRoots: ["typings"]
|
||||
}
|
||||
})
|
||||
};
|
||||
};
|
||||
const configFile: File = {
|
||||
path: `${tscWatch.projectRoot}/src/tsconfig.json`,
|
||||
content: JSON.stringify({
|
||||
compilerOptions: {
|
||||
module: "amd",
|
||||
moduleResolution: "classic",
|
||||
target: "es5",
|
||||
outDir: "../out",
|
||||
baseUrl: "./",
|
||||
typeRoots: ["typings"]
|
||||
}
|
||||
})
|
||||
};
|
||||
|
||||
function verifyModuleResolution(useNodeFile: boolean) {
|
||||
const files = [...(useNodeFile ? [nodeFile] : []), electronFile, srcFile, moduleFile, configFile, libFile];
|
||||
const host = createServerHost(files);
|
||||
const service = createProjectService(host);
|
||||
service.openClientFile(srcFile.path, srcFile.content, ScriptKind.TS, tscWatch.projectRoot);
|
||||
checkProjectActualFiles(service.configuredProjects.get(configFile.path)!, files.map(f => f.path));
|
||||
checkWatchedFilesDetailed(host, mapDefined(files, f => f === srcFile ? undefined : f.path), 1);
|
||||
if (useNodeFile) {
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false); // since fs resolves to ambient module, shouldnt watch failed lookup
|
||||
}
|
||||
else {
|
||||
checkWatchedDirectoriesDetailed(host, [`${tscWatch.projectRoot}`, `${tscWatch.projectRoot}/src`], 1, /*recursive*/ false); // failed lookup for fs
|
||||
}
|
||||
const expectedWatchedDirectories = new Map<string, number>();
|
||||
expectedWatchedDirectories.set(`${tscWatch.projectRoot}/src`, 1); // Wild card
|
||||
expectedWatchedDirectories.set(`${tscWatch.projectRoot}/src/somefolder`, 1); // failedLookup for somefolder/module2
|
||||
expectedWatchedDirectories.set(`${tscWatch.projectRoot}/src/node_modules`, 1); // failed lookup for somefolder/module2
|
||||
expectedWatchedDirectories.set(`${tscWatch.projectRoot}/somefolder`, 1); // failed lookup for somefolder/module2
|
||||
expectedWatchedDirectories.set(`${tscWatch.projectRoot}/node_modules`, 1); // failed lookup for with node_modules/@types/fs
|
||||
expectedWatchedDirectories.set(`${tscWatch.projectRoot}/src/typings`, useNodeFile ? 1 : 2); // typeroot directory + failed lookup if not using node file
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectories, /*recursive*/ true);
|
||||
const files = [...(useNodeFile ? [nodeFile] : []), electronFile, srcFile, moduleFile, configFile, libFile];
|
||||
const host = createServerHost(files);
|
||||
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
service.openClientFile(srcFile.path, srcFile.content, ScriptKind.TS, tscWatch.projectRoot);
|
||||
baselineTsserverLogs("resolutionCache", scenario, service);
|
||||
});
|
||||
}
|
||||
|
||||
it("when resolves to ambient module", () => {
|
||||
verifyModuleResolution(/*useNodeFile*/ true);
|
||||
});
|
||||
|
||||
it("when resolution fails", () => {
|
||||
verifyModuleResolution(/*useNodeFile*/ false);
|
||||
});
|
||||
verifyModuleResolution("when resolves to ambient module", /*useNodeFile*/ true);
|
||||
verifyModuleResolution("when resolution fails", /*useNodeFile*/ false);
|
||||
});
|
||||
|
||||
describe("ignores files/folder changes in node_modules that start with '.'", () => {
|
||||
@@ -864,10 +582,7 @@ export const x = 10;`
|
||||
|
||||
describe("avoid unnecessary invalidation", () => {
|
||||
it("unnecessary lookup invalidation on save", () => {
|
||||
const expectedNonRelativeDirectories = [`${tscWatch.projectRoot}/node_modules`, `${tscWatch.projectRoot}/src`];
|
||||
const module1Name = "module1";
|
||||
const module2Name = "module2";
|
||||
const fileContent = `import { module1 } from "${module1Name}";import { module2 } from "${module2Name}";`;
|
||||
const fileContent = `import { module1 } from "module1";import { module2 } from "module2";`;
|
||||
const file1: File = {
|
||||
path: `${tscWatch.projectRoot}/src/file1.ts`,
|
||||
content: fileContent
|
||||
@@ -875,17 +590,13 @@ export const x = 10;`
|
||||
const { module1, module2 } = getModules(`${tscWatch.projectRoot}/src/node_modules/module1/index.ts`, `${tscWatch.projectRoot}/node_modules/module2/index.ts`);
|
||||
const files = [module1, module2, file1, configFile, libFile];
|
||||
const host = createServerHost(files);
|
||||
const resolutionTrace = createHostModuleResolutionTrace(host);
|
||||
const service = createProjectService(host);
|
||||
const service = createProjectService(host, { logger: createLoggerWithInMemoryLogs() });
|
||||
service.openClientFile(file1.path);
|
||||
const expectedTrace = getExpectedNonRelativeModuleResolutionTrace(host, file1, module1, module1Name);
|
||||
getExpectedNonRelativeModuleResolutionTrace(host, file1, module2, module2Name, expectedTrace);
|
||||
verifyTrace(resolutionTrace, expectedTrace);
|
||||
verifyWatchesWithConfigFile(host, files, file1, expectedNonRelativeDirectories);
|
||||
|
||||
// invoke callback to simulate saving
|
||||
host.modifyFile(file1.path, file1.content, { invokeFileDeleteCreateAsPartInsteadOfChange: true });
|
||||
host.checkTimeoutQueueLengthAndRun(0);
|
||||
baselineTsserverLogs("resolutionCache", "avoid unnecessary lookup invalidation on save", service);
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
@@ -26,61 +26,40 @@ import { something } from "something";
|
||||
content: "{}"
|
||||
};
|
||||
const host = createServerHost([file1, file2, file3, something, libFile, configFile]);
|
||||
const session = createSession(host, { syntaxOnly: true, useSingleInferredProject: true });
|
||||
const session = createSession(host, { syntaxOnly: true, useSingleInferredProject: true, logger: createLoggerWithInMemoryLogs() });
|
||||
return { host, session, file1, file2, file3, something, configFile };
|
||||
}
|
||||
|
||||
function verifySessionException<T extends server.protocol.Request>(session: TestSession, request: Partial<T>) {
|
||||
let hasException = false;
|
||||
try {
|
||||
session.executeCommandSeq(request);
|
||||
}
|
||||
catch (e) {
|
||||
assert.equal(e.message, `Request: ${request.command} not allowed in LanguageServiceMode.Syntactic`);
|
||||
hasException = true;
|
||||
session.logger.info(e.message);
|
||||
}
|
||||
assert.isTrue(hasException);
|
||||
}
|
||||
|
||||
it("open files are added to inferred project even if config file is present and semantic operations fail", () => {
|
||||
const { host, session, file1, file2, file3, something } = setup();
|
||||
const service = session.getProjectService();
|
||||
const { session, file1, file2, file3, something } = setup();
|
||||
openFilesForSession([file1], session);
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
const project = service.inferredProjects[0];
|
||||
checkProjectActualFiles(project, emptyArray);
|
||||
verifyCompletions();
|
||||
verifyGoToDefToB();
|
||||
|
||||
openFilesForSession([file2], session);
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
checkProjectActualFiles(project, emptyArray);
|
||||
verifyCompletions();
|
||||
verifyGoToDefToB();
|
||||
verifyGoToDefToC();
|
||||
|
||||
openFilesForSession([file3], session);
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
checkProjectActualFiles(project, emptyArray);
|
||||
|
||||
openFilesForSession([something], session);
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
checkProjectActualFiles(project, emptyArray);
|
||||
|
||||
// Close open files and verify resolutions
|
||||
closeFilesForSession([file3], session);
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
checkProjectActualFiles(project, emptyArray);
|
||||
|
||||
closeFilesForSession([file2], session);
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
checkProjectActualFiles(project, emptyArray);
|
||||
|
||||
baselineTsserverLogs("syntacticServer", "files go to inferred project and semantic operations fail", session);
|
||||
|
||||
function verifyCompletions() {
|
||||
assert.isFalse(project.languageServiceEnabled);
|
||||
checkWatchedFiles(host, emptyArray);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ true);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
verifySessionException<protocol.CompletionsRequest>(session, {
|
||||
command: protocol.CommandTypes.Completions,
|
||||
arguments: protocolFileLocationFromSubstring(file1, "prop", { index: 1 })
|
||||
@@ -113,16 +92,14 @@ import { something } from "something";
|
||||
arguments: { file: file1.path }
|
||||
});
|
||||
|
||||
let hasException = false;
|
||||
const project = service.inferredProjects[0];
|
||||
try {
|
||||
project.getLanguageService().getSemanticDiagnostics(file1.path);
|
||||
}
|
||||
catch (e) {
|
||||
assert.equal(e.message, `LanguageService Operation: getSemanticDiagnostics not allowed in LanguageServiceMode.Syntactic`);
|
||||
hasException = true;
|
||||
session.logger.info(e.message);
|
||||
}
|
||||
assert.isTrue(hasException);
|
||||
baselineTsserverLogs("syntacticServer", "throws on unsupported commands", session);
|
||||
});
|
||||
|
||||
it("should not include auto type reference directives", () => {
|
||||
@@ -132,11 +109,8 @@ import { something } from "something";
|
||||
content: "export const something = 10;"
|
||||
};
|
||||
host.ensureFileOrFolder(atTypes);
|
||||
const service = session.getProjectService();
|
||||
openFilesForSession([file1], session);
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
const project = service.inferredProjects[0];
|
||||
checkProjectActualFiles(project, emptyArray); // Should not contain atTypes
|
||||
baselineTsserverLogs("syntacticServer", "should not include auto type reference directives", session);
|
||||
});
|
||||
|
||||
it("should not include referenced files from unopened files", () => {
|
||||
|
||||
@@ -129,38 +129,17 @@ namespace ts.projectSystem {
|
||||
}
|
||||
})();
|
||||
|
||||
const projectService = createProjectService(host, { useSingleInferredProject: true, typingsInstaller: installer });
|
||||
const projectService = createProjectService(host, {
|
||||
useSingleInferredProject: true,
|
||||
typingsInstaller: installer,
|
||||
logger: createLoggerWithInMemoryLogs(),
|
||||
});
|
||||
projectService.setHostConfiguration({ preferences: { includePackageJsonAutoImports: "off" } });
|
||||
projectService.openClientFile(file1.path);
|
||||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const p = configuredProjectAt(projectService, 0);
|
||||
checkProjectActualFiles(p, [file1.path, tsconfig.path]);
|
||||
|
||||
const expectedWatchedFiles = new Map<string, number>();
|
||||
expectedWatchedFiles.set(tsconfig.path, 1); // tsserver
|
||||
expectedWatchedFiles.set(libFile.path, 1); // tsserver
|
||||
expectedWatchedFiles.set(packageJson.path, 1); // typing installer
|
||||
checkWatchedFilesDetailed(host, expectedWatchedFiles);
|
||||
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
|
||||
const expectedWatchedDirectoriesRecursive = new Map<string, number>();
|
||||
expectedWatchedDirectoriesRecursive.set("/a/b", 1); // wild card
|
||||
expectedWatchedDirectoriesRecursive.set("/a/b/node_modules/@types", 1); // type root watch
|
||||
expectedWatchedDirectoriesRecursive.set("/a/b/node_modules", 1); // TypingInstaller
|
||||
expectedWatchedDirectoriesRecursive.set("/a/b/bower_components", 1); // TypingInstaller
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectoriesRecursive, /*recursive*/ true);
|
||||
|
||||
installer.installAll(/*expectedCount*/ 1);
|
||||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkProjectActualFiles(p, [file1.path, jquery.path, tsconfig.path]);
|
||||
// should not watch jquery
|
||||
checkWatchedFilesDetailed(host, expectedWatchedFiles);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectoriesRecursive, /*recursive*/ true);
|
||||
baselineTsserverLogs("typingsInstaller", "configured projects", projectService);
|
||||
});
|
||||
|
||||
it("inferred project (typings installed)", () => {
|
||||
@@ -1047,28 +1026,17 @@ namespace ts.projectSystem {
|
||||
}
|
||||
})();
|
||||
|
||||
const projectService = createProjectService(host, { useSingleInferredProject: true, typingsInstaller: installer });
|
||||
const projectService = createProjectService(host, {
|
||||
useSingleInferredProject: true,
|
||||
typingsInstaller: installer,
|
||||
logger: createLoggerWithInMemoryLogs(),
|
||||
});
|
||||
projectService.openClientFile(app.path);
|
||||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
const p = configuredProjectAt(projectService, 0);
|
||||
checkProjectActualFiles(p, [app.path, jsconfig.path]);
|
||||
|
||||
const watchedFilesExpected = new Map<string, number>();
|
||||
watchedFilesExpected.set(jsconfig.path, 1); // project files
|
||||
watchedFilesExpected.set(libFile.path, 1); // project files
|
||||
watchedFilesExpected.set(combinePaths(installer.globalTypingsCacheLocation, "package.json"), 1);
|
||||
checkWatchedFilesDetailed(host, watchedFilesExpected);
|
||||
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
|
||||
checkWatchedDirectoriesDetailed(host, ["/", "/node_modules", "/bower_components"], 1, /*recursive*/ true);
|
||||
|
||||
installer.installAll(/*expectedCount*/ 1);
|
||||
|
||||
checkNumberOfProjects(projectService, { configuredProjects: 1 });
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkProjectActualFiles(p, [app.path, jqueryDTS.path, jsconfig.path]);
|
||||
baselineTsserverLogs("typingsInstaller", "configured projects discover from bower_components", projectService);
|
||||
});
|
||||
|
||||
it("configured projects discover from bower.json", () => {
|
||||
@@ -1234,30 +1202,18 @@ namespace ts.projectSystem {
|
||||
executeCommand(this, host, installedTypings, typingFiles, cb);
|
||||
}
|
||||
})();
|
||||
const service = createProjectService(host, { typingsInstaller: installer });
|
||||
const service = createProjectService(host, {
|
||||
typingsInstaller: installer,
|
||||
logger: createLoggerWithInMemoryLogs(),
|
||||
});
|
||||
service.openClientFile(file.path);
|
||||
|
||||
checkWatchedFiles(host, [...getConfigFilesToWatch(getDirectoryPath(file.path)), "/a/lib/lib.d.ts"]);
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
// Does not include cachePath because that is handled by typingsInstaller
|
||||
checkWatchedDirectories(host, [
|
||||
`${tscWatch.projects}/node_modules`,
|
||||
`${tscWatch.projects}/a/node_modules`,
|
||||
`${tscWatch.projects}/a/b/node_modules`,
|
||||
`${tscWatch.projects}/a/node_modules/@types`,
|
||||
`${tscWatch.projects}/a/b/node_modules/@types`,
|
||||
`${tscWatch.projects}/a/b/bower_components`
|
||||
], /*recursive*/ true);
|
||||
|
||||
service.checkNumberOfProjects({ inferredProjects: 1 });
|
||||
checkProjectActualFiles(service.inferredProjects[0], [file.path, commanderJS.path]);
|
||||
|
||||
installer.installAll(/*expectedCount*/1);
|
||||
for (const name of typeNames) {
|
||||
assert.isTrue(host.fileExists(typePath(name)), `typings for '${name}' should be created`);
|
||||
}
|
||||
host.checkTimeoutQueueLengthAndRun(2);
|
||||
checkProjectActualFiles(service.inferredProjects[0], [file.path, ...typeNames.map(typePath)]);
|
||||
baselineTsserverLogs("typingsInstaller", "redo resolutions pointing to js on typing install", service);
|
||||
});
|
||||
|
||||
it("should pick typing names from non-relative unresolved imports", () => {
|
||||
|
||||
@@ -1,139 +1,108 @@
|
||||
namespace ts.projectSystem {
|
||||
import Tsc_WatchDirectory = TestFSWithWatch.Tsc_WatchDirectory;
|
||||
function serializeHostWatchesIntoLogger(host: TestServerHost, logger: Logger) {
|
||||
const baselines: string[] = [];
|
||||
host.serializeWatches(baselines);
|
||||
baselines.forEach(s => logger.info(s));
|
||||
}
|
||||
|
||||
describe("unittests:: tsserver:: watchEnvironment:: tsserverProjectSystem watchDirectories implementation", () => {
|
||||
function verifyCompletionListWithNewFileInSubFolder(tscWatchDirectory: Tsc_WatchDirectory) {
|
||||
const projectFolder = "/a/username/project";
|
||||
const projectSrcFolder = `${projectFolder}/src`;
|
||||
const configFile: File = {
|
||||
path: `${projectFolder}/tsconfig.json`,
|
||||
content: JSON.stringify({
|
||||
watchOptions: {
|
||||
synchronousWatchDirectory: true
|
||||
}
|
||||
})
|
||||
};
|
||||
const index: File = {
|
||||
path: `${projectSrcFolder}/index.ts`,
|
||||
content: `import {} from "./"`
|
||||
};
|
||||
const file1: File = {
|
||||
path: `${projectSrcFolder}/file1.ts`,
|
||||
content: ""
|
||||
};
|
||||
function verifyCompletionListWithNewFileInSubFolder(scenario: string, tscWatchDirectory: Tsc_WatchDirectory) {
|
||||
it(scenario, () => {
|
||||
const projectFolder = "/a/username/project";
|
||||
const projectSrcFolder = `${projectFolder}/src`;
|
||||
const configFile: File = {
|
||||
path: `${projectFolder}/tsconfig.json`,
|
||||
content: JSON.stringify({
|
||||
watchOptions: {
|
||||
synchronousWatchDirectory: true
|
||||
}
|
||||
})
|
||||
};
|
||||
const index: File = {
|
||||
path: `${projectSrcFolder}/index.ts`,
|
||||
content: `import {} from "./"`
|
||||
};
|
||||
const file1: File = {
|
||||
path: `${projectSrcFolder}/file1.ts`,
|
||||
content: ""
|
||||
};
|
||||
|
||||
const files = [index, file1, configFile, libFile];
|
||||
const fileNames = files.map(file => file.path);
|
||||
// All closed files(files other than index), project folder, project/src folder and project/node_modules/@types folder
|
||||
const expectedWatchedFiles = arrayToMap(fileNames.slice(1), s => s, () => 1);
|
||||
const expectedWatchedDirectories = new Map<string, number>();
|
||||
const mapOfDirectories = tscWatchDirectory === Tsc_WatchDirectory.NonRecursiveWatchDirectory ?
|
||||
expectedWatchedDirectories :
|
||||
tscWatchDirectory === Tsc_WatchDirectory.WatchFile ?
|
||||
expectedWatchedFiles :
|
||||
new Map();
|
||||
// For failed resolution lookup and tsconfig files => cached so only watched only once
|
||||
mapOfDirectories.set(projectFolder, 1);
|
||||
// Through above recursive watches
|
||||
mapOfDirectories.set(projectSrcFolder, 1);
|
||||
// node_modules/@types folder
|
||||
mapOfDirectories.set(`${projectFolder}/${nodeModulesAtTypes}`, 1);
|
||||
const expectedCompletions = ["file1"];
|
||||
const completionPosition = index.content.lastIndexOf('"');
|
||||
const environmentVariables = new Map<string, string>();
|
||||
environmentVariables.set("TSC_WATCHDIRECTORY", tscWatchDirectory);
|
||||
const host = createServerHost(files, { environmentVariables });
|
||||
const projectService = createProjectService(host);
|
||||
projectService.openClientFile(index.path);
|
||||
const files = [index, file1, configFile, libFile];
|
||||
const completionPosition = index.content.lastIndexOf('"');
|
||||
const environmentVariables = new Map<string, string>();
|
||||
environmentVariables.set("TSC_WATCHDIRECTORY", tscWatchDirectory);
|
||||
const host = createServerHost(files, { environmentVariables });
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const projectService = createProjectService(host, { logger });
|
||||
projectService.openClientFile(index.path);
|
||||
|
||||
const project = Debug.checkDefined(projectService.configuredProjects.get(configFile.path));
|
||||
verifyProjectAndCompletions();
|
||||
const project = Debug.checkDefined(projectService.configuredProjects.get(configFile.path));
|
||||
verifyProjectAndCompletions();
|
||||
|
||||
// Add file2
|
||||
const file2: File = {
|
||||
path: `${projectSrcFolder}/file2.ts`,
|
||||
content: ""
|
||||
};
|
||||
fileNames.push(file2.path);
|
||||
expectedWatchedFiles.set(file2.path, 1);
|
||||
expectedCompletions.push("file2");
|
||||
host.writeFile(file2.path, file2.content);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
assert.equal(projectService.configuredProjects.get(configFile.path), project);
|
||||
verifyProjectAndCompletions();
|
||||
// Add file2
|
||||
const file2: File = {
|
||||
path: `${projectSrcFolder}/file2.ts`,
|
||||
content: ""
|
||||
};
|
||||
host.writeFile(file2.path, file2.content);
|
||||
host.runQueuedTimeoutCallbacks();
|
||||
assert.equal(projectService.configuredProjects.get(configFile.path), project);
|
||||
verifyProjectAndCompletions();
|
||||
baselineTsserverLogs("watchEnvironment", scenario, projectService);
|
||||
|
||||
function verifyProjectAndCompletions() {
|
||||
const completions = project.getLanguageService().getCompletionsAtPosition(index.path, completionPosition, { includeExternalModuleExports: false, includeInsertTextCompletions: false })!;
|
||||
checkArray("Completion Entries", completions.entries.map(e => e.name), expectedCompletions);
|
||||
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ true);
|
||||
|
||||
checkWatchedFilesDetailed(host, expectedWatchedFiles);
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectories, /*recursive*/ false);
|
||||
checkProjectActualFiles(project, fileNames);
|
||||
}
|
||||
function verifyProjectAndCompletions() {
|
||||
const completions = project.getLanguageService().getCompletionsAtPosition(index.path, completionPosition, { includeExternalModuleExports: false, includeInsertTextCompletions: false })!;
|
||||
logger.info(`Completion Entries:: ${JSON.stringify(completions.entries.map(e => e.name))}`);
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
it("uses watchFile when file is added to subfolder, completion list has new file", () => {
|
||||
verifyCompletionListWithNewFileInSubFolder(Tsc_WatchDirectory.WatchFile);
|
||||
});
|
||||
|
||||
it("uses non recursive watchDirectory when file is added to subfolder, completion list has new file", () => {
|
||||
verifyCompletionListWithNewFileInSubFolder(Tsc_WatchDirectory.NonRecursiveWatchDirectory);
|
||||
});
|
||||
|
||||
it("uses dynamic polling when file is added to subfolder, completion list has new file", () => {
|
||||
verifyCompletionListWithNewFileInSubFolder(Tsc_WatchDirectory.DynamicPolling);
|
||||
});
|
||||
verifyCompletionListWithNewFileInSubFolder(
|
||||
"uses watchFile when file is added to subfolder",
|
||||
Tsc_WatchDirectory.WatchFile
|
||||
);
|
||||
verifyCompletionListWithNewFileInSubFolder(
|
||||
"uses non recursive watchDirectory when file is added to subfolder",
|
||||
Tsc_WatchDirectory.NonRecursiveWatchDirectory
|
||||
);
|
||||
verifyCompletionListWithNewFileInSubFolder(
|
||||
"uses dynamic polling when file is added to subfolder",
|
||||
Tsc_WatchDirectory.DynamicPolling
|
||||
);
|
||||
});
|
||||
|
||||
describe("unittests:: tsserver:: watchEnvironment:: tsserverProjectSystem Watched recursive directories with windows style file system", () => {
|
||||
function verifyWatchedDirectories(rootedPath: string, useProjectAtRoot: boolean) {
|
||||
const root = useProjectAtRoot ? rootedPath : `${rootedPath}myfolder/allproject/`;
|
||||
const configFile: File = {
|
||||
path: root + "project/tsconfig.json",
|
||||
content: "{}"
|
||||
};
|
||||
const file1: File = {
|
||||
path: root + "project/file1.ts",
|
||||
content: "let x = 10;"
|
||||
};
|
||||
const file2: File = {
|
||||
path: root + "project/file2.ts",
|
||||
content: "let y = 10;"
|
||||
};
|
||||
const files = [configFile, file1, file2, libFile];
|
||||
const host = createServerHost(files, { windowsStyleRoot: "c:/" });
|
||||
const projectService = createProjectService(host);
|
||||
projectService.openClientFile(file1.path);
|
||||
const project = projectService.configuredProjects.get(configFile.path)!;
|
||||
assert.isDefined(project);
|
||||
const winsowsStyleLibFilePath = "c:/" + libFile.path.substring(1);
|
||||
checkProjectActualFiles(project, files.map(f => f === libFile ? winsowsStyleLibFilePath : f.path));
|
||||
checkWatchedFiles(host, mapDefined(files, f => f === libFile ? winsowsStyleLibFilePath : f === file1 ? undefined : f.path));
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
checkWatchedDirectories(host, [
|
||||
root + "project",
|
||||
root + "project/node_modules/@types"
|
||||
].concat(useProjectAtRoot ? [] : [root + nodeModulesAtTypes]), /*recursive*/ true);
|
||||
}
|
||||
|
||||
function verifyRootedDirectoryWatch(rootedPath: string) {
|
||||
it("When project is in rootFolder of style c:/", () => {
|
||||
verifyWatchedDirectories(rootedPath, /*useProjectAtRoot*/ true);
|
||||
});
|
||||
|
||||
it("When files at some folder other than root", () => {
|
||||
verifyWatchedDirectories(rootedPath, /*useProjectAtRoot*/ false);
|
||||
function verifyWatchedDirectories(scenario: string, rootedPath: string, useProjectAtRoot: boolean) {
|
||||
it(scenario, () => {
|
||||
const root = useProjectAtRoot ? rootedPath : `${rootedPath}myfolder/allproject/`;
|
||||
const configFile: File = {
|
||||
path: root + "project/tsconfig.json",
|
||||
content: "{}"
|
||||
};
|
||||
const file1: File = {
|
||||
path: root + "project/file1.ts",
|
||||
content: "let x = 10;"
|
||||
};
|
||||
const file2: File = {
|
||||
path: root + "project/file2.ts",
|
||||
content: "let y = 10;"
|
||||
};
|
||||
const files = [configFile, file1, file2, libFile];
|
||||
const host = createServerHost(files, { windowsStyleRoot: "c:/" });
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const projectService = createProjectService(host, { logger });
|
||||
projectService.openClientFile(file1.path);
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", scenario, projectService);
|
||||
});
|
||||
}
|
||||
|
||||
describe("for rootFolder of style c:/", () => {
|
||||
verifyRootedDirectoryWatch("c:/");
|
||||
});
|
||||
|
||||
describe("for rootFolder of style c:/users/username", () => {
|
||||
verifyRootedDirectoryWatch("c:/users/username/");
|
||||
});
|
||||
verifyWatchedDirectories("files at windows style root", "c:/", /*useProjectAtRoot*/ true);
|
||||
verifyWatchedDirectories("files not at windows style root", "c:/", /*useProjectAtRoot*/ false);
|
||||
verifyWatchedDirectories("files at root", "c:/", /*useProjectAtRoot*/ true);
|
||||
verifyWatchedDirectories("files not at root", "c:/", /*useProjectAtRoot*/ false);
|
||||
});
|
||||
|
||||
it(`unittests:: tsserver:: watchEnvironment:: tsserverProjectSystem recursive watch directory implementation does not watch files/directories in node_modules starting with "."`, () => {
|
||||
@@ -155,21 +124,14 @@ namespace ts.projectSystem {
|
||||
path: `${projectFolder}/node_modules/someFile.d.ts`,
|
||||
content: ""
|
||||
};
|
||||
|
||||
const fileNames = [index, file1, configFile, libFile].map(file => file.path);
|
||||
// All closed files(files other than index), project folder, project/src folder and project/node_modules/@types folder
|
||||
const expectedWatchedFiles = arrayToMap(fileNames.slice(1), identity, () => 1);
|
||||
const expectedWatchedDirectories = arrayToMap([projectFolder, projectSrcFolder, `${projectFolder}/${nodeModules}`, `${projectFolder}/${nodeModulesAtTypes}`], identity, () => 1);
|
||||
|
||||
const environmentVariables = new Map<string, string>();
|
||||
environmentVariables.set("TSC_WATCHDIRECTORY", Tsc_WatchDirectory.NonRecursiveWatchDirectory);
|
||||
const host = createServerHost([index, file1, configFile, libFile, nodeModulesExistingUnusedFile], { environmentVariables });
|
||||
const projectService = createProjectService(host);
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const projectService = createProjectService(host, { logger });
|
||||
projectService.openClientFile(index.path);
|
||||
|
||||
const project = Debug.checkDefined(projectService.configuredProjects.get(configFile.path));
|
||||
verifyProject();
|
||||
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
const nodeModulesIgnoredFileFromIgnoreDirectory: File = {
|
||||
path: `${projectFolder}/node_modules/.cache/someFile.d.ts`,
|
||||
content: ""
|
||||
@@ -203,51 +165,34 @@ namespace ts.projectSystem {
|
||||
].forEach(ignoredEntity => {
|
||||
host.ensureFileOrFolder(ignoredEntity);
|
||||
host.checkTimeoutQueueLength(0);
|
||||
verifyProject();
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
});
|
||||
|
||||
function verifyProject() {
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ true);
|
||||
checkWatchedFilesDetailed(host, expectedWatchedFiles);
|
||||
checkWatchedDirectoriesDetailed(host, expectedWatchedDirectories, /*recursive*/ false);
|
||||
checkProjectActualFiles(project, fileNames);
|
||||
}
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", `recursive directory does not watch files starting with dot in node_modules`, projectService);
|
||||
});
|
||||
|
||||
describe("unittests:: tsserver:: watchEnvironment:: tsserverProjectSystem watching files with network style paths", () => {
|
||||
function verifyFilePathStyle(path: string) {
|
||||
const windowsStyleRoot = path.substr(0, getRootLength(path));
|
||||
it("unittests:: tsserver:: watchEnvironment:: tsserverProjectSystem watching files with network style paths", () => {
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
verifyFilePathStyle("c:/myprojects/project/x.js", logger);
|
||||
verifyFilePathStyle("//vda1cs4850/myprojects/project/x.js", logger);
|
||||
verifyFilePathStyle("//vda1cs4850/c$/myprojects/project/x.js", logger);
|
||||
verifyFilePathStyle("c:/users/username/myprojects/project/x.js", logger);
|
||||
verifyFilePathStyle("//vda1cs4850/c$/users/username/myprojects/project/x.js", logger);
|
||||
baselineTsserverLogs("watchEnvironment", `watching files with network style paths`, { logger });
|
||||
|
||||
function verifyFilePathStyle(path: string, logger: Logger) {
|
||||
logger.info(`For files of style ${path}`);
|
||||
const windowsStyleRoot = path.substring(0, getRootLength(path));
|
||||
const host = createServerHost(
|
||||
[libFile, { path, content: "const x = 10" }],
|
||||
{ windowsStyleRoot }
|
||||
);
|
||||
const service = createProjectService(host);
|
||||
const service = createProjectService(host, { logger });
|
||||
service.openClientFile(path);
|
||||
checkNumberOfProjects(service, { inferredProjects: 1 });
|
||||
const libPath = `${windowsStyleRoot}${libFile.path.substring(1)}`;
|
||||
checkProjectActualFiles(service.inferredProjects[0], [path, libPath]);
|
||||
checkWatchedFiles(host, [libPath, `${getDirectoryPath(path)}/tsconfig.json`, `${getDirectoryPath(path)}/jsconfig.json`]);
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
}
|
||||
|
||||
it("for file of style c:/myprojects/project/x.js", () => {
|
||||
verifyFilePathStyle("c:/myprojects/project/x.js");
|
||||
});
|
||||
|
||||
it("for file of style //vda1cs4850/myprojects/project/x.js", () => {
|
||||
verifyFilePathStyle("//vda1cs4850/myprojects/project/x.js");
|
||||
});
|
||||
|
||||
it("for file of style //vda1cs4850/c$/myprojects/project/x.js", () => {
|
||||
verifyFilePathStyle("//vda1cs4850/c$/myprojects/project/x.js");
|
||||
});
|
||||
|
||||
it("for file of style c:/users/username/myprojects/project/x.js", () => {
|
||||
verifyFilePathStyle("c:/users/username/myprojects/project/x.js");
|
||||
});
|
||||
|
||||
it("for file of style //vda1cs4850/c$/users/username/myprojects/project/x.js", () => {
|
||||
verifyFilePathStyle("//vda1cs4850/c$/users/username/myprojects/project/x.js");
|
||||
});
|
||||
});
|
||||
|
||||
describe("unittests:: tsserver:: watchEnvironment:: handles watch compiler options", () => {
|
||||
@@ -258,7 +203,8 @@ namespace ts.projectSystem {
|
||||
};
|
||||
const files = [libFile, commonFile2, configFile];
|
||||
const host = createServerHost(files.concat(commonFile1));
|
||||
const session = createSession(host);
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const session = createSession(host, { logger });
|
||||
session.executeCommandSeq<protocol.ConfigureRequest>({
|
||||
command: protocol.CommandTypes.Configure,
|
||||
arguments: {
|
||||
@@ -267,45 +213,9 @@ namespace ts.projectSystem {
|
||||
}
|
||||
}
|
||||
});
|
||||
const service = session.getProjectService();
|
||||
openFilesForSession([{ file: commonFile1, projectRootPath: "/a/b" }], session);
|
||||
checkProjectActualFiles(
|
||||
service.configuredProjects.get(configFile.path)!,
|
||||
files.map(f => f.path).concat(commonFile1.path)
|
||||
);
|
||||
|
||||
// Instead of polling watch (= watchedFiles), uses fsWatch
|
||||
checkWatchedFiles(host, emptyArray);
|
||||
checkWatchedDirectoriesDetailed(
|
||||
host,
|
||||
files.map(f => f.path.toLowerCase()),
|
||||
1,
|
||||
/*recursive*/ false,
|
||||
arrayToMap(
|
||||
files,
|
||||
f => f.path.toLowerCase(),
|
||||
f => [{
|
||||
directoryName: f.path,
|
||||
fallbackPollingInterval: f === configFile ? PollingInterval.High : PollingInterval.Medium,
|
||||
fallbackOptions: { watchFile: WatchFileKind.PriorityPollingInterval }
|
||||
}]
|
||||
)
|
||||
);
|
||||
checkWatchedDirectoriesDetailed(
|
||||
host,
|
||||
["/a/b", "/a/b/node_modules/@types"],
|
||||
1,
|
||||
/*recursive*/ true,
|
||||
arrayToMap(
|
||||
["/a/b", "/a/b/node_modules/@types"],
|
||||
identity,
|
||||
directoryName => [{
|
||||
directoryName,
|
||||
fallbackPollingInterval: PollingInterval.Medium,
|
||||
fallbackOptions: { watchFile: WatchFileKind.PriorityPollingInterval }
|
||||
}]
|
||||
)
|
||||
);
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", `with watchFile option as host configuration`, session);
|
||||
});
|
||||
|
||||
it("with watchDirectory option as host configuration", () => {
|
||||
@@ -315,7 +225,8 @@ namespace ts.projectSystem {
|
||||
};
|
||||
const files = [libFile, commonFile2, configFile];
|
||||
const host = createServerHost(files.concat(commonFile1), { runWithoutRecursiveWatches: true });
|
||||
const session = createSession(host);
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const session = createSession(host, { logger });
|
||||
session.executeCommandSeq<protocol.ConfigureRequest>({
|
||||
command: protocol.CommandTypes.Configure,
|
||||
arguments: {
|
||||
@@ -324,42 +235,9 @@ namespace ts.projectSystem {
|
||||
}
|
||||
}
|
||||
});
|
||||
const service = session.getProjectService();
|
||||
openFilesForSession([{ file: commonFile1, projectRootPath: "/a/b" }], session);
|
||||
checkProjectActualFiles(
|
||||
service.configuredProjects.get(configFile.path)!,
|
||||
files.map(f => f.path).concat(commonFile1.path)
|
||||
);
|
||||
|
||||
checkWatchedFilesDetailed(
|
||||
host,
|
||||
files.map(f => f.path.toLowerCase()),
|
||||
1,
|
||||
arrayToMap(
|
||||
files,
|
||||
f => f.path.toLowerCase(),
|
||||
f => [{
|
||||
fileName: f.path,
|
||||
pollingInterval: PollingInterval.Low
|
||||
}]
|
||||
)
|
||||
);
|
||||
checkWatchedDirectoriesDetailed(
|
||||
host,
|
||||
["/a/b", "/a/b/node_modules/@types"],
|
||||
1,
|
||||
/*recursive*/ false,
|
||||
arrayToMap(
|
||||
["/a/b", "/a/b/node_modules/@types"],
|
||||
identity,
|
||||
directoryName => [{
|
||||
directoryName,
|
||||
fallbackPollingInterval: PollingInterval.Medium,
|
||||
fallbackOptions: { watchFile: WatchFileKind.PriorityPollingInterval }
|
||||
}]
|
||||
)
|
||||
);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ true);
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", `with watchDirectory option as host configuration`, session);
|
||||
});
|
||||
|
||||
it("with fallbackPolling option as host configuration", () => {
|
||||
@@ -369,7 +247,8 @@ namespace ts.projectSystem {
|
||||
};
|
||||
const files = [libFile, commonFile2, configFile];
|
||||
const host = createServerHost(files.concat(commonFile1), { runWithoutRecursiveWatches: true, runWithFallbackPolling: true });
|
||||
const session = createSession(host);
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const session = createSession(host, { logger });
|
||||
session.executeCommandSeq<protocol.ConfigureRequest>({
|
||||
command: protocol.CommandTypes.Configure,
|
||||
arguments: {
|
||||
@@ -378,30 +257,9 @@ namespace ts.projectSystem {
|
||||
}
|
||||
}
|
||||
});
|
||||
const service = session.getProjectService();
|
||||
openFilesForSession([{ file: commonFile1, projectRootPath: "/a/b" }], session);
|
||||
checkProjectActualFiles(
|
||||
service.configuredProjects.get(configFile.path)!,
|
||||
files.map(f => f.path).concat(commonFile1.path)
|
||||
);
|
||||
|
||||
const filePaths = files.map(f => f.path);
|
||||
const allFilePaths = filePaths.concat(["/a/b", "/a/b/node_modules/@types"]);
|
||||
checkWatchedFilesDetailed(
|
||||
host,
|
||||
allFilePaths.map(toLowerCase),
|
||||
1,
|
||||
arrayToMap(
|
||||
allFilePaths,
|
||||
toLowerCase,
|
||||
fileName => [{
|
||||
fileName,
|
||||
pollingInterval: contains(filePaths, fileName) ? PollingInterval.Low : PollingInterval.Medium
|
||||
}]
|
||||
)
|
||||
);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ true);
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", `with fallbackPolling option as host configuration`, session);
|
||||
});
|
||||
|
||||
it("with watchFile option in configFile", () => {
|
||||
@@ -415,59 +273,11 @@ namespace ts.projectSystem {
|
||||
};
|
||||
const files = [libFile, commonFile2, configFile];
|
||||
const host = createServerHost(files.concat(commonFile1));
|
||||
const session = createSession(host);
|
||||
const service = session.getProjectService();
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const session = createSession(host, { logger });
|
||||
openFilesForSession([{ file: commonFile1, projectRootPath: "/a/b" }], session);
|
||||
checkProjectActualFiles(
|
||||
service.configuredProjects.get(configFile.path)!,
|
||||
files.map(f => f.path).concat(commonFile1.path)
|
||||
);
|
||||
|
||||
// The closed script infos are watched using host settings
|
||||
checkWatchedFilesDetailed(
|
||||
host,
|
||||
[libFile, commonFile2].map(f => f.path.toLowerCase()),
|
||||
1,
|
||||
arrayToMap(
|
||||
[libFile, commonFile2],
|
||||
f => f.path.toLowerCase(),
|
||||
f => [{
|
||||
fileName: f.path,
|
||||
pollingInterval: PollingInterval.Low
|
||||
}]
|
||||
)
|
||||
);
|
||||
// Config file with the setting with fsWatch
|
||||
checkWatchedDirectoriesDetailed(
|
||||
host,
|
||||
[configFile.path.toLowerCase()],
|
||||
1,
|
||||
/*recursive*/ false,
|
||||
arrayToMap(
|
||||
[configFile.path],
|
||||
toLowerCase,
|
||||
directoryName => [{
|
||||
directoryName,
|
||||
fallbackPollingInterval: PollingInterval.High,
|
||||
fallbackOptions: { watchFile: WatchFileKind.PriorityPollingInterval }
|
||||
}]
|
||||
)
|
||||
);
|
||||
checkWatchedDirectoriesDetailed(
|
||||
host,
|
||||
["/a/b", "/a/b/node_modules/@types"],
|
||||
1,
|
||||
/*recursive*/ true,
|
||||
arrayToMap(
|
||||
["/a/b", "/a/b/node_modules/@types"],
|
||||
identity,
|
||||
directoryName => [{
|
||||
directoryName,
|
||||
fallbackPollingInterval: PollingInterval.Medium,
|
||||
fallbackOptions: { watchFile: WatchFileKind.PriorityPollingInterval }
|
||||
}]
|
||||
)
|
||||
);
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", `with watchFile option in configFile`, session);
|
||||
});
|
||||
|
||||
it("with watchDirectory option in configFile", () => {
|
||||
@@ -481,43 +291,11 @@ namespace ts.projectSystem {
|
||||
};
|
||||
const files = [libFile, commonFile2, configFile];
|
||||
const host = createServerHost(files.concat(commonFile1), { runWithoutRecursiveWatches: true });
|
||||
const session = createSession(host);
|
||||
const service = session.getProjectService();
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const session = createSession(host, { logger });
|
||||
openFilesForSession([{ file: commonFile1, projectRootPath: "/a/b" }], session);
|
||||
checkProjectActualFiles(
|
||||
service.configuredProjects.get(configFile.path)!,
|
||||
files.map(f => f.path).concat(commonFile1.path)
|
||||
);
|
||||
|
||||
checkWatchedFilesDetailed(
|
||||
host,
|
||||
files.map(f => f.path.toLowerCase()),
|
||||
1,
|
||||
arrayToMap(
|
||||
files,
|
||||
f => f.path.toLowerCase(),
|
||||
f => [{
|
||||
fileName: f.path,
|
||||
pollingInterval: PollingInterval.Low
|
||||
}]
|
||||
)
|
||||
);
|
||||
checkWatchedDirectoriesDetailed(
|
||||
host,
|
||||
["/a/b", "/a/b/node_modules/@types"],
|
||||
1,
|
||||
/*recursive*/ false,
|
||||
arrayToMap(
|
||||
["/a/b", "/a/b/node_modules/@types"],
|
||||
identity,
|
||||
directoryName => [{
|
||||
directoryName,
|
||||
fallbackPollingInterval: PollingInterval.Medium,
|
||||
fallbackOptions: { watchFile: WatchFileKind.PriorityPollingInterval }
|
||||
}]
|
||||
)
|
||||
);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ true);
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", `with watchDirectory option in configFile`, session);
|
||||
});
|
||||
|
||||
it("with fallbackPolling option in configFile", () => {
|
||||
@@ -531,7 +309,8 @@ namespace ts.projectSystem {
|
||||
};
|
||||
const files = [libFile, commonFile2, configFile];
|
||||
const host = createServerHost(files.concat(commonFile1), { runWithoutRecursiveWatches: true, runWithFallbackPolling: true });
|
||||
const session = createSession(host);
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const session = createSession(host, { logger });
|
||||
session.executeCommandSeq<protocol.ConfigureRequest>({
|
||||
command: protocol.CommandTypes.Configure,
|
||||
arguments: {
|
||||
@@ -540,30 +319,9 @@ namespace ts.projectSystem {
|
||||
}
|
||||
}
|
||||
});
|
||||
const service = session.getProjectService();
|
||||
openFilesForSession([{ file: commonFile1, projectRootPath: "/a/b" }], session);
|
||||
checkProjectActualFiles(
|
||||
service.configuredProjects.get(configFile.path)!,
|
||||
files.map(f => f.path).concat(commonFile1.path)
|
||||
);
|
||||
|
||||
const filePaths = files.map(f => f.path);
|
||||
const allFilePaths = filePaths.concat(["/a/b", "/a/b/node_modules/@types"]);
|
||||
checkWatchedFilesDetailed(
|
||||
host,
|
||||
allFilePaths.map(toLowerCase),
|
||||
1,
|
||||
arrayToMap(
|
||||
allFilePaths,
|
||||
toLowerCase,
|
||||
fileName => [{
|
||||
fileName,
|
||||
pollingInterval: contains(filePaths, fileName) ? PollingInterval.Low : PollingInterval.Medium
|
||||
}]
|
||||
)
|
||||
);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ true);
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", `with fallbackPolling option in configFile`, session);
|
||||
});
|
||||
|
||||
describe("excludeDirectories", () => {
|
||||
@@ -598,44 +356,31 @@ namespace ts.projectSystem {
|
||||
const { main, bar, foo } = setupFiles();
|
||||
const files = [libFile, main, bar, foo, configFile];
|
||||
const host = createServerHost(files, { currentDirectory: tscWatch.projectRoot });
|
||||
const service = createProjectService(host);
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const service = createProjectService(host, { logger });
|
||||
setupConfigureHost(service, configureHost);
|
||||
service.openClientFile(main.path);
|
||||
return { host, configFile };
|
||||
return { host, service, logger };
|
||||
}
|
||||
|
||||
it("with excludeDirectories option in configFile", () => {
|
||||
const { host, configFile } = setup();
|
||||
checkWatchedFilesDetailed(host, [configFile.path, libFile.path], 1);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(
|
||||
host,
|
||||
arrayToMap(
|
||||
[`${tscWatch.projectRoot}/src`, `${tscWatch.projectRoot}/node_modules`],
|
||||
identity,
|
||||
f => f === `${tscWatch.projectRoot}/node_modules` ? 1 : 2,
|
||||
),
|
||||
/*recursive*/ true,
|
||||
);
|
||||
const { host, service, logger } = setup();
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", `with excludeDirectories option in configFile`, service);
|
||||
});
|
||||
|
||||
it("with excludeDirectories option in configuration", () => {
|
||||
const { host, configFile } = setup(/*configureHost*/ true);
|
||||
checkWatchedFilesDetailed(host, [configFile.path, libFile.path], 1);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(
|
||||
host,
|
||||
[`${tscWatch.projectRoot}/src`],
|
||||
2,
|
||||
/*recursive*/ true,
|
||||
);
|
||||
const { host, service, logger } = setup(/*configureHost*/ true);
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", `with excludeDirectories option in configuration`, service);
|
||||
});
|
||||
|
||||
function setupExternalProject(configureHost?: boolean) {
|
||||
const { main, bar, foo } = setupFiles();
|
||||
const files = [libFile, main, bar, foo];
|
||||
const host = createServerHost(files, { currentDirectory: tscWatch.projectRoot });
|
||||
const service = createProjectService(host);
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const service = createProjectService(host, { logger });
|
||||
setupConfigureHost(service, configureHost);
|
||||
service.openExternalProject({
|
||||
projectFileName: `${tscWatch.projectRoot}/project.csproj`,
|
||||
@@ -643,31 +388,19 @@ namespace ts.projectSystem {
|
||||
options: { excludeDirectories: ["node_modules"] }
|
||||
} as protocol.ExternalProject);
|
||||
service.openClientFile(main.path);
|
||||
return host;
|
||||
return { host, service, logger };
|
||||
}
|
||||
|
||||
it("external project watch options", () => {
|
||||
const host = setupExternalProject();
|
||||
checkWatchedFilesDetailed(host, [libFile.path], 1);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(
|
||||
host,
|
||||
[`${tscWatch.projectRoot}/src`, `${tscWatch.projectRoot}/node_modules`],
|
||||
1,
|
||||
/*recursive*/ true,
|
||||
);
|
||||
const { host, service, logger } = setupExternalProject();
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", `external project watch options`, service);
|
||||
});
|
||||
|
||||
it("external project watch options in host configuration", () => {
|
||||
const host = setupExternalProject(/*configureHost*/ true);
|
||||
checkWatchedFilesDetailed(host, [libFile.path], 1);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(
|
||||
host,
|
||||
[`${tscWatch.projectRoot}/src`],
|
||||
1,
|
||||
/*recursive*/ true,
|
||||
);
|
||||
const { host, service, logger } = setupExternalProject(/*configureHost*/ true);
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", `external project watch options in host configuration`, service);
|
||||
});
|
||||
|
||||
it("external project watch options errors", () => {
|
||||
@@ -700,43 +433,24 @@ namespace ts.projectSystem {
|
||||
const { main, bar, foo } = setupFiles();
|
||||
const files = [libFile, main, bar, foo];
|
||||
const host = createServerHost(files, { currentDirectory: tscWatch.projectRoot });
|
||||
const service = createProjectService(host, { useInferredProjectPerProjectRoot: true });
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const service = createProjectService(host, { useInferredProjectPerProjectRoot: true, logger });
|
||||
setupConfigureHost(service, configureHost);
|
||||
service.setCompilerOptionsForInferredProjects({ excludeDirectories: ["node_modules"] }, tscWatch.projectRoot);
|
||||
service.openClientFile(main.path, main.content, ScriptKind.TS, tscWatch.projectRoot);
|
||||
return host;
|
||||
return { host, service, logger };
|
||||
}
|
||||
|
||||
it("inferred project watch options", () => {
|
||||
const host = setupInferredProject();
|
||||
checkWatchedFilesDetailed(
|
||||
host,
|
||||
[libFile.path, `${tscWatch.projectRoot}/tsconfig.json`, `${tscWatch.projectRoot}/jsconfig.json`, `${tscWatch.projectRoot}/src/tsconfig.json`, `${tscWatch.projectRoot}/src/jsconfig.json`],
|
||||
1
|
||||
);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(
|
||||
host,
|
||||
[`${tscWatch.projectRoot}/src`, `${tscWatch.projectRoot}/node_modules`],
|
||||
1,
|
||||
/*recursive*/ true,
|
||||
);
|
||||
const { host, service, logger } = setupInferredProject();
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", `inferred project watch options`, service);
|
||||
});
|
||||
|
||||
it("inferred project watch options in host configuration", () => {
|
||||
const host = setupInferredProject(/*configureHost*/ true);
|
||||
checkWatchedFilesDetailed(
|
||||
host,
|
||||
[libFile.path, `${tscWatch.projectRoot}/tsconfig.json`, `${tscWatch.projectRoot}/jsconfig.json`, `${tscWatch.projectRoot}/src/tsconfig.json`, `${tscWatch.projectRoot}/src/jsconfig.json`],
|
||||
1
|
||||
);
|
||||
checkWatchedDirectories(host, emptyArray, /*recursive*/ false);
|
||||
checkWatchedDirectoriesDetailed(
|
||||
host,
|
||||
[`${tscWatch.projectRoot}/src`],
|
||||
1,
|
||||
/*recursive*/ true,
|
||||
);
|
||||
const { host, service, logger } = setupInferredProject(/*configureHost*/ true);
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", `inferred project watch options in host configuration`, service);
|
||||
});
|
||||
|
||||
it("inferred project watch options errors", () => {
|
||||
@@ -764,59 +478,24 @@ namespace ts.projectSystem {
|
||||
});
|
||||
|
||||
describe("unittests:: tsserver:: watchEnvironment:: file names on case insensitive file system", () => {
|
||||
function verifyFileNames(projectRoot: string, projectRootPath: string) {
|
||||
const keyMapper = (str: string) => str.replace(projectRoot, projectRootPath);
|
||||
const file: File = {
|
||||
path: `${projectRoot}/foo.ts`,
|
||||
content: `import { foo } from "bar"`
|
||||
};
|
||||
const host = createServerHost([file, libFile]);
|
||||
const service = createProjectService(host);
|
||||
service.openClientFile(file.path, /*fileContent*/ undefined, /*scriptKind*/ undefined, projectRoot);
|
||||
const expectedWatchFiles = [libFile.path, `${projectRoot}/tsconfig.json`, `${projectRoot}/jsconfig.json`];
|
||||
checkWatchedFilesDetailed(
|
||||
host,
|
||||
expectedWatchFiles.map(keyMapper),
|
||||
1,
|
||||
arrayToMap(
|
||||
expectedWatchFiles,
|
||||
keyMapper,
|
||||
fileName => [{
|
||||
fileName,
|
||||
pollingInterval: PollingInterval.Low
|
||||
}]
|
||||
)
|
||||
);
|
||||
checkWatchedDirectories(host, [], /*recursive*/ false);
|
||||
const expectedWatchedDirectories = [`${projectRoot}/node_modules`, `${projectRoot}/node_modules/@types`];
|
||||
checkWatchedDirectoriesDetailed(
|
||||
host,
|
||||
expectedWatchedDirectories.map(keyMapper),
|
||||
1,
|
||||
/*recursive*/ true,
|
||||
arrayToMap(
|
||||
expectedWatchedDirectories,
|
||||
keyMapper,
|
||||
directoryName => [{
|
||||
directoryName,
|
||||
fallbackPollingInterval: PollingInterval.Medium,
|
||||
fallbackOptions: { watchFile: WatchFileKind.PriorityPollingInterval }
|
||||
}]
|
||||
)
|
||||
);
|
||||
function verifyFileNames(scenario: string, projectRoot: string) {
|
||||
it(scenario, () => {
|
||||
const file: File = {
|
||||
path: `${projectRoot}/foo.ts`,
|
||||
content: `import { foo } from "bar"`
|
||||
};
|
||||
const host = createServerHost([file, libFile]);
|
||||
const logger = createLoggerWithInMemoryLogs();
|
||||
const service = createProjectService(host, { logger });
|
||||
service.openClientFile(file.path, /*fileContent*/ undefined, /*scriptKind*/ undefined, projectRoot);
|
||||
serializeHostWatchesIntoLogger(host, logger);
|
||||
baselineTsserverLogs("watchEnvironment", scenario, service);
|
||||
});
|
||||
}
|
||||
|
||||
it("project with ascii file names", () => {
|
||||
verifyFileNames("/User/userName/Projects/I", "/user/username/projects/i");
|
||||
});
|
||||
|
||||
it("project with ascii file names with i", () => {
|
||||
verifyFileNames("/User/userName/Projects/i", "/user/username/projects/i");
|
||||
});
|
||||
|
||||
it("project with unicode file names", () => {
|
||||
verifyFileNames("/User/userName/Projects/İ", "/user/username/projects/İ");
|
||||
});
|
||||
verifyFileNames("project with ascii file names", "/User/userName/Projects/I");
|
||||
verifyFileNames("project with ascii file names with i", "/User/userName/Projects/i");
|
||||
verifyFileNames("project with unicode file names", "/User/userName/Projects/İ");
|
||||
});
|
||||
|
||||
describe("unittests:: tsserver:: watchEnvironment:: watchFile is single watcher per file", () => {
|
||||
|
||||
@@ -273,11 +273,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/demo/core:
|
||||
{"directoryName":"/user/username/projects/demo/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/demo/core"}
|
||||
/user/username/projects/demo/animals:
|
||||
{"directoryName":"/user/username/projects/demo/animals","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/demo/animals"}
|
||||
/user/username/projects/demo/zoo:
|
||||
{"directoryName":"/user/username/projects/demo/zoo","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/demo/zoo"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -549,11 +549,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/demo/core:
|
||||
{"directoryName":"/user/username/projects/demo/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/demo/core"}
|
||||
/user/username/projects/demo/animals:
|
||||
{"directoryName":"/user/username/projects/demo/animals","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/demo/animals"}
|
||||
/user/username/projects/demo/zoo:
|
||||
{"directoryName":"/user/username/projects/demo/zoo","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/demo/zoo"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
@@ -193,11 +193,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/demo/animals:
|
||||
{"directoryName":"/user/username/projects/demo/animals","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/demo/animals"}
|
||||
/user/username/projects/demo/zoo:
|
||||
{"directoryName":"/user/username/projects/demo/zoo","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/demo/zoo"}
|
||||
/user/username/projects/demo/core:
|
||||
{"directoryName":"/user/username/projects/demo/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/demo/core"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -324,11 +324,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/demo/animals:
|
||||
{"directoryName":"/user/username/projects/demo/animals","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/demo/animals"}
|
||||
/user/username/projects/demo/zoo:
|
||||
{"directoryName":"/user/username/projects/demo/zoo","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/demo/zoo"}
|
||||
/user/username/projects/demo/core:
|
||||
{"directoryName":"/user/username/projects/demo/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/demo/core"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -168,9 +168,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/packages/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2"}
|
||||
/user/username/projects/myproject/packages/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -356,9 +356,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/packages/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2"}
|
||||
/user/username/projects/myproject/packages/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -458,9 +458,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/packages/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2"}
|
||||
/user/username/projects/myproject/packages/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+10
-10
@@ -170,9 +170,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/packages/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2"}
|
||||
/user/username/projects/myproject/packages/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -367,9 +367,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/packages/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2"}
|
||||
/user/username/projects/myproject/packages/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -472,9 +472,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/packages/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2"}
|
||||
/user/username/projects/myproject/packages/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -589,9 +589,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/packages/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2"}
|
||||
/user/username/projects/myproject/packages/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -735,9 +735,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/packages/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg2"}
|
||||
/user/username/projects/myproject/packages/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/packages/pkg1"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+16
-16
@@ -27,16 +27,16 @@ declare const console: { log(msg: any): void; };
|
||||
/a/lib/tsc.js -b -w -verbose --incremental
|
||||
Output::
|
||||
>> Screen clear
|
||||
[[90m12:00:25 AM[0m] Starting compilation in watch mode...
|
||||
[[90m12:00:23 AM[0m] Starting compilation in watch mode...
|
||||
|
||||
[[90m12:00:26 AM[0m] Projects in this build:
|
||||
[[90m12:00:24 AM[0m] Projects in this build:
|
||||
* tsconfig.json
|
||||
|
||||
[[90m12:00:27 AM[0m] Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
||||
[[90m12:00:25 AM[0m] Project 'tsconfig.json' is out of date because output file 'tsconfig.tsbuildinfo' does not exist
|
||||
|
||||
[[90m12:00:28 AM[0m] Building project '/user/username/projects/myproject/tsconfig.json'...
|
||||
[[90m12:00:26 AM[0m] Building project '/user/username/projects/myproject/tsconfig.json'...
|
||||
|
||||
[[90m12:00:34 AM[0m] Found 0 errors. Watching for file changes.
|
||||
[[90m12:00:32 AM[0m] Found 0 errors. Watching for file changes.
|
||||
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -130,13 +130,13 @@ Input::
|
||||
|
||||
Output::
|
||||
>> Screen clear
|
||||
[[90m12:00:38 AM[0m] File change detected. Starting incremental compilation...
|
||||
[[90m12:00:36 AM[0m] File change detected. Starting incremental compilation...
|
||||
|
||||
[[90m12:00:39 AM[0m] Project 'tsconfig.json' is out of date because output 'tsconfig.tsbuildinfo' is older than input 'a.js'
|
||||
[[90m12:00:37 AM[0m] Project 'tsconfig.json' is out of date because output 'tsconfig.tsbuildinfo' is older than input 'a.js'
|
||||
|
||||
[[90m12:00:40 AM[0m] Building project '/user/username/projects/myproject/tsconfig.json'...
|
||||
[[90m12:00:38 AM[0m] Building project '/user/username/projects/myproject/tsconfig.json'...
|
||||
|
||||
[[90m12:00:41 AM[0m] Found 0 errors. Watching for file changes.
|
||||
[[90m12:00:39 AM[0m] Found 0 errors. Watching for file changes.
|
||||
|
||||
|
||||
|
||||
@@ -164,7 +164,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -178,13 +178,13 @@ const x = 10;
|
||||
|
||||
Output::
|
||||
>> Screen clear
|
||||
[[90m12:00:45 AM[0m] File change detected. Starting incremental compilation...
|
||||
[[90m12:00:43 AM[0m] File change detected. Starting incremental compilation...
|
||||
|
||||
[[90m12:00:46 AM[0m] Project 'tsconfig.json' is out of date because output 'tsconfig.tsbuildinfo' is older than input 'a.js'
|
||||
[[90m12:00:44 AM[0m] Project 'tsconfig.json' is out of date because output 'tsconfig.tsbuildinfo' is older than input 'a.js'
|
||||
|
||||
[[90m12:00:47 AM[0m] Building project '/user/username/projects/myproject/tsconfig.json'...
|
||||
[[90m12:00:45 AM[0m] Building project '/user/username/projects/myproject/tsconfig.json'...
|
||||
|
||||
[[90m12:00:55 AM[0m] Found 0 errors. Watching for file changes.
|
||||
[[90m12:00:53 AM[0m] Found 0 errors. Watching for file changes.
|
||||
|
||||
|
||||
|
||||
@@ -217,7 +217,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+16
-16
@@ -27,16 +27,16 @@ declare const console: { log(msg: any): void; };
|
||||
/a/lib/tsc.js -b -w -verbose
|
||||
Output::
|
||||
>> Screen clear
|
||||
[[90m12:00:25 AM[0m] Starting compilation in watch mode...
|
||||
[[90m12:00:23 AM[0m] Starting compilation in watch mode...
|
||||
|
||||
[[90m12:00:26 AM[0m] Projects in this build:
|
||||
[[90m12:00:24 AM[0m] Projects in this build:
|
||||
* tsconfig.json
|
||||
|
||||
[[90m12:00:27 AM[0m] Project 'tsconfig.json' is out of date because output 'a.js' is older than input 'b.ts'
|
||||
[[90m12:00:25 AM[0m] Project 'tsconfig.json' is out of date because output 'a.js' is older than input 'b.ts'
|
||||
|
||||
[[90m12:00:28 AM[0m] Building project '/user/username/projects/myproject/tsconfig.json'...
|
||||
[[90m12:00:26 AM[0m] Building project '/user/username/projects/myproject/tsconfig.json'...
|
||||
|
||||
[[90m12:00:29 AM[0m] Found 0 errors. Watching for file changes.
|
||||
[[90m12:00:27 AM[0m] Found 0 errors. Watching for file changes.
|
||||
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -82,13 +82,13 @@ Input::
|
||||
|
||||
Output::
|
||||
>> Screen clear
|
||||
[[90m12:00:33 AM[0m] File change detected. Starting incremental compilation...
|
||||
[[90m12:00:31 AM[0m] File change detected. Starting incremental compilation...
|
||||
|
||||
[[90m12:00:34 AM[0m] Project 'tsconfig.json' is out of date because output 'a.js' is older than input 'a.js'
|
||||
[[90m12:00:32 AM[0m] Project 'tsconfig.json' is out of date because output 'a.js' is older than input 'a.js'
|
||||
|
||||
[[90m12:00:35 AM[0m] Building project '/user/username/projects/myproject/tsconfig.json'...
|
||||
[[90m12:00:33 AM[0m] Building project '/user/username/projects/myproject/tsconfig.json'...
|
||||
|
||||
[[90m12:00:36 AM[0m] Found 0 errors. Watching for file changes.
|
||||
[[90m12:00:34 AM[0m] Found 0 errors. Watching for file changes.
|
||||
|
||||
|
||||
|
||||
@@ -116,7 +116,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -130,13 +130,13 @@ const x = 10;
|
||||
|
||||
Output::
|
||||
>> Screen clear
|
||||
[[90m12:00:40 AM[0m] File change detected. Starting incremental compilation...
|
||||
[[90m12:00:38 AM[0m] File change detected. Starting incremental compilation...
|
||||
|
||||
[[90m12:00:41 AM[0m] Project 'tsconfig.json' is out of date because output 'a.js' is older than input 'a.js'
|
||||
[[90m12:00:39 AM[0m] Project 'tsconfig.json' is out of date because output 'a.js' is older than input 'a.js'
|
||||
|
||||
[[90m12:00:42 AM[0m] Building project '/user/username/projects/myproject/tsconfig.json'...
|
||||
[[90m12:00:40 AM[0m] Building project '/user/username/projects/myproject/tsconfig.json'...
|
||||
|
||||
[[90m12:00:43 AM[0m] Found 0 errors. Watching for file changes.
|
||||
[[90m12:00:41 AM[0m] Found 0 errors. Watching for file changes.
|
||||
|
||||
|
||||
|
||||
@@ -169,7 +169,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+7
-7
@@ -87,7 +87,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -194,7 +194,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -256,7 +256,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -391,7 +391,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -520,7 +520,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -574,7 +574,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -673,7 +673,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+7
-7
@@ -87,7 +87,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -141,7 +141,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -203,7 +203,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -281,7 +281,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -335,7 +335,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -391,7 +391,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -450,7 +450,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+2
-2
@@ -194,9 +194,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -211,9 +211,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -552,9 +552,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -730,9 +730,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+3
-3
@@ -64,7 +64,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/solution/app:
|
||||
{"directoryName":"/user/username/projects/solution/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/solution/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -197,7 +197,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/solution/app:
|
||||
{"directoryName":"/user/username/projects/solution/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/solution/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -248,7 +248,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/solution/app:
|
||||
{"directoryName":"/user/username/projects/solution/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/solution/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+3
-3
@@ -64,7 +64,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/solution/app:
|
||||
{"directoryName":"/user/username/projects/solution/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/solution/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -197,7 +197,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/solution/app:
|
||||
{"directoryName":"/user/username/projects/solution/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/solution/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -232,7 +232,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/solution/app:
|
||||
{"directoryName":"/user/username/projects/solution/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/solution/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+2
-2
@@ -69,7 +69,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/solution/app:
|
||||
{"directoryName":"/user/username/projects/solution/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/solution/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -120,7 +120,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/solution/app:
|
||||
{"directoryName":"/user/username/projects/solution/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/solution/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+2
-2
@@ -69,7 +69,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/solution/app:
|
||||
{"directoryName":"/user/username/projects/solution/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/solution/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -118,7 +118,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/solution/app:
|
||||
{"directoryName":"/user/username/projects/solution/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/solution/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -194,9 +194,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -532,9 +532,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -689,9 +689,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -193,9 +193,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -530,9 +530,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -686,9 +686,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+4
-4
@@ -72,7 +72,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -166,7 +166,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -219,7 +219,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -304,7 +304,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+4
-4
@@ -79,7 +79,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -181,7 +181,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -234,7 +234,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -324,7 +324,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+2
-2
@@ -166,9 +166,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+5
-5
@@ -115,7 +115,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -265,9 +265,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -416,9 +416,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -93,9 +93,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/library:
|
||||
{"directoryName":"/user/username/projects/sample1/library","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/library"}
|
||||
/user/username/projects/sample1/app:
|
||||
{"directoryName":"/user/username/projects/sample1/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -242,9 +242,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/library:
|
||||
{"directoryName":"/user/username/projects/sample1/library","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/library"}
|
||||
/user/username/projects/sample1/app:
|
||||
{"directoryName":"/user/username/projects/sample1/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -374,9 +374,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/library:
|
||||
{"directoryName":"/user/username/projects/sample1/library","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/library"}
|
||||
/user/username/projects/sample1/app:
|
||||
{"directoryName":"/user/username/projects/sample1/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+10
-10
@@ -71,9 +71,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -305,9 +305,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -424,9 +424,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -589,9 +589,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -692,9 +692,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+10
-10
@@ -168,9 +168,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -486,9 +486,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -611,9 +611,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -671,9 +671,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -804,9 +804,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+14
-14
@@ -168,9 +168,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -487,9 +487,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -626,9 +626,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -839,9 +839,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -970,9 +970,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -1185,9 +1185,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -1332,9 +1332,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+4
-4
@@ -168,9 +168,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -489,9 +489,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+10
-10
@@ -194,9 +194,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -520,9 +520,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -650,9 +650,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -710,9 +710,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -848,9 +848,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+14
-14
@@ -194,9 +194,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -521,9 +521,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -665,9 +665,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -878,9 +878,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -1014,9 +1014,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -1229,9 +1229,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -1381,9 +1381,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+4
-4
@@ -194,9 +194,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -523,9 +523,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/sample1/core:
|
||||
{"directoryName":"/user/username/projects/sample1/core","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/core"}
|
||||
/user/username/projects/sample1/logic:
|
||||
{"directoryName":"/user/username/projects/sample1/logic","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/sample1/logic"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+2
-2
@@ -58,7 +58,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -101,7 +101,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+3
-3
@@ -576,7 +576,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -638,7 +638,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -745,7 +745,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+506
-506
File diff suppressed because it is too large
Load Diff
+18
-18
@@ -126,11 +126,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -336,11 +336,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -418,11 +418,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -477,11 +477,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -599,11 +599,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -636,11 +636,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+30
-30
@@ -186,15 +186,15 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -510,15 +510,15 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -606,15 +606,15 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -677,15 +677,15 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -845,15 +845,15 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -896,15 +896,15 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+96
-96
@@ -276,21 +276,21 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
/user/username/projects/myproject/pkg5:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5"}
|
||||
/user/username/projects/myproject/pkg6:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6"}
|
||||
/user/username/projects/myproject/pkg7:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -771,21 +771,21 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
/user/username/projects/myproject/pkg5:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5"}
|
||||
/user/username/projects/myproject/pkg6:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6"}
|
||||
/user/username/projects/myproject/pkg7:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -888,21 +888,21 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
/user/username/projects/myproject/pkg5:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5"}
|
||||
/user/username/projects/myproject/pkg6:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6"}
|
||||
/user/username/projects/myproject/pkg7:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -977,21 +977,21 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
/user/username/projects/myproject/pkg5:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5"}
|
||||
/user/username/projects/myproject/pkg6:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6"}
|
||||
/user/username/projects/myproject/pkg7:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -1178,21 +1178,21 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
/user/username/projects/myproject/pkg5:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5"}
|
||||
/user/username/projects/myproject/pkg6:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6"}
|
||||
/user/username/projects/myproject/pkg7:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -1285,21 +1285,21 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
/user/username/projects/myproject/pkg5:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5"}
|
||||
/user/username/projects/myproject/pkg6:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6"}
|
||||
/user/username/projects/myproject/pkg7:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -1352,21 +1352,21 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
/user/username/projects/myproject/pkg5:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5"}
|
||||
/user/username/projects/myproject/pkg6:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6"}
|
||||
/user/username/projects/myproject/pkg7:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -1441,21 +1441,21 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
/user/username/projects/myproject/pkg5:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5"}
|
||||
/user/username/projects/myproject/pkg6:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6"}
|
||||
/user/username/projects/myproject/pkg7:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -1644,21 +1644,21 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
/user/username/projects/myproject/pkg5:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5"}
|
||||
/user/username/projects/myproject/pkg6:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6"}
|
||||
/user/username/projects/myproject/pkg7:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -1758,21 +1758,21 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
/user/username/projects/myproject/pkg5:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5"}
|
||||
/user/username/projects/myproject/pkg6:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6"}
|
||||
/user/username/projects/myproject/pkg7:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -1913,21 +1913,21 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
/user/username/projects/myproject/pkg5:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5"}
|
||||
/user/username/projects/myproject/pkg6:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6"}
|
||||
/user/username/projects/myproject/pkg7:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -1980,21 +1980,21 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
/user/username/projects/myproject/pkg4:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg4"}
|
||||
/user/username/projects/myproject/pkg5:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg5"}
|
||||
/user/username/projects/myproject/pkg6:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg6"}
|
||||
/user/username/projects/myproject/pkg7:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg7"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
@@ -101,9 +101,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/shared:
|
||||
{"directoryName":"/user/username/projects/myproject/shared","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/shared"}
|
||||
/user/username/projects/myproject/webpack:
|
||||
{"directoryName":"/user/username/projects/myproject/webpack","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/webpack"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -327,9 +327,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/shared:
|
||||
{"directoryName":"/user/username/projects/myproject/shared","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/shared"}
|
||||
/user/username/projects/myproject/webpack:
|
||||
{"directoryName":"/user/username/projects/myproject/webpack","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/webpack"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
@@ -145,9 +145,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/reexport/src/pure:
|
||||
{"directoryName":"/user/username/projects/reexport/src/pure","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/reexport/src/pure"}
|
||||
/user/username/projects/reexport/src/main:
|
||||
{"directoryName":"/user/username/projects/reexport/src/main","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/reexport/src/main"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -345,9 +345,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/reexport/src/pure:
|
||||
{"directoryName":"/user/username/projects/reexport/src/pure","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/reexport/src/pure"}
|
||||
/user/username/projects/reexport/src/main:
|
||||
{"directoryName":"/user/username/projects/reexport/src/main","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/reexport/src/main"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -503,9 +503,9 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/reexport/src/pure:
|
||||
{"directoryName":"/user/username/projects/reexport/src/pure","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/reexport/src/pure"}
|
||||
/user/username/projects/reexport/src/main:
|
||||
{"directoryName":"/user/username/projects/reexport/src/main","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/reexport/src/main"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+14
-14
@@ -173,13 +173,13 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -333,13 +333,13 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -385,11 +385,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -491,11 +491,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+14
-14
@@ -173,13 +173,13 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -333,13 +333,13 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
/user/username/projects/myproject/pkg3:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg3"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -385,11 +385,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -491,11 +491,11 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/pkg0:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg0"}
|
||||
/user/username/projects/myproject/pkg1:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg1"}
|
||||
/user/username/projects/myproject/pkg2:
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject/pkg2"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+2
-2
@@ -55,7 +55,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/:
|
||||
{"directoryName":"","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":""}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -102,7 +102,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/:
|
||||
{"directoryName":"","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":""}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+2
-2
@@ -54,7 +54,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/:
|
||||
{"directoryName":"","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":""}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -101,7 +101,7 @@ FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/:
|
||||
{"directoryName":"","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":""}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -50,14 +50,14 @@ WatchedFiles::
|
||||
{"fileName":"/home/username/project/app/file.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/home/username/project/node_modules/@types:
|
||||
{"fileName":"/home/username/project/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/home/username/project/node_modules/@types:
|
||||
{"directoryName":"/home/username/project/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/home/username/project/app:
|
||||
{"directoryName":"/home/username/project/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/home/username/project/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -103,14 +103,14 @@ WatchedFiles::
|
||||
{"fileName":"/home/username/project/app/file.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/home/username/project/node_modules/@types:
|
||||
{"fileName":"/home/username/project/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/home/username/project/node_modules/@types:
|
||||
{"directoryName":"/home/username/project/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/home/username/project/app:
|
||||
{"directoryName":"/home/username/project/app","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/home/username/project/app"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+9
-9
@@ -66,14 +66,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/f3.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -146,14 +146,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/f3.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -213,14 +213,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/f3.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -87,14 +87,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -187,14 +187,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -70,14 +70,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -175,14 +175,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -82,14 +82,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -173,14 +173,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -82,14 +82,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -183,16 +183,16 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
/a/b/file1consumer3.ts:
|
||||
{"fileName":"/a/b/file1Consumer3.ts","pollingInterval":250}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+18
-18
@@ -82,14 +82,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -178,14 +178,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -251,14 +251,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -320,14 +320,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -405,14 +405,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -478,14 +478,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+9
-9
@@ -82,14 +82,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -177,14 +177,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -252,14 +252,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -67,12 +67,12 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile1.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -133,12 +133,12 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile1.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -191,12 +191,12 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile1.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+9
-9
@@ -63,14 +63,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/modulefile2.ts:
|
||||
{"fileName":"/a/b/modulefile2.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -136,14 +136,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/modulefile2.ts:
|
||||
{"fileName":"/a/b/modulefile2.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -205,16 +205,16 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/referenceFile1.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
/a/b/modulefile2.ts:
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -64,14 +64,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/referenceFile1.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -136,16 +136,16 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/referenceFile1.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
/a/b/modulefile1.ts:
|
||||
{"fileName":"/a/b/modulefile1.ts","pollingInterval":250}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -82,14 +82,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -182,14 +182,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+12
-12
@@ -90,14 +90,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -191,14 +191,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -265,14 +265,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -347,14 +347,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/moduleFile2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -60,14 +60,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/file2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -129,14 +129,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/file2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/node_modules/@types:
|
||||
{"fileName":"/a/b/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/node_modules/@types:
|
||||
{"directoryName":"/a/b/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/b:
|
||||
{"directoryName":"/a/b","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/b"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+9
-9
@@ -58,14 +58,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/node_modules/@types:
|
||||
{"fileName":"/a/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/node_modules/@types:
|
||||
{"directoryName":"/a/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a:
|
||||
{"directoryName":"/a","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -119,14 +119,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/node_modules/@types:
|
||||
{"fileName":"/a/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/node_modules/@types:
|
||||
{"directoryName":"/a/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a:
|
||||
{"directoryName":"/a","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -177,14 +177,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/node_modules/@types:
|
||||
{"fileName":"/a/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/node_modules/@types:
|
||||
{"directoryName":"/a/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a:
|
||||
{"directoryName":"/a","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+9
-9
@@ -52,14 +52,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/node_modules/@types:
|
||||
{"fileName":"/a/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/node_modules/@types:
|
||||
{"directoryName":"/a/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a:
|
||||
{"directoryName":"/a","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -105,14 +105,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/node_modules/@types:
|
||||
{"fileName":"/a/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/node_modules/@types:
|
||||
{"directoryName":"/a/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a:
|
||||
{"directoryName":"/a","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -158,14 +158,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/node_modules/@types:
|
||||
{"fileName":"/a/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/node_modules/@types:
|
||||
{"directoryName":"/a/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a:
|
||||
{"directoryName":"/a","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+9
-9
@@ -52,14 +52,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/node_modules/@types:
|
||||
{"fileName":"/a/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/node_modules/@types:
|
||||
{"directoryName":"/a/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a:
|
||||
{"directoryName":"/a","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -105,14 +105,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/node_modules/@types:
|
||||
{"fileName":"/a/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/node_modules/@types:
|
||||
{"directoryName":"/a/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a:
|
||||
{"directoryName":"/a","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -158,14 +158,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/b.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/node_modules/@types:
|
||||
{"fileName":"/a/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/node_modules/@types:
|
||||
{"directoryName":"/a/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a:
|
||||
{"directoryName":"/a","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+2
-2
@@ -69,12 +69,12 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/project/src/main2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/project/node_modules/@types:
|
||||
{"fileName":"/a/b/project/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/project/node_modules/@types:
|
||||
{"directoryName":"/a/b/project/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+2
-2
@@ -79,12 +79,12 @@ WatchedFiles::
|
||||
{"fileName":"/a/b/project/src/main2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/b/project/node_modules/@types:
|
||||
{"fileName":"/a/b/project/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/b/project/node_modules/@types:
|
||||
{"directoryName":"/a/b/project/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+6
-6
@@ -58,14 +58,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/rootFolder/project/Scripts/TypeScript.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/rootfolder/project/node_modules/@types:
|
||||
{"fileName":"/a/rootFolder/project/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/rootfolder/project/node_modules/@types:
|
||||
{"directoryName":"/a/rootFolder/project/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/rootfolder/project/scripts:
|
||||
{"directoryName":"/a/rootfolder/project/scripts","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/rootfolder/project/scripts"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -119,14 +119,14 @@ WatchedFiles::
|
||||
{"fileName":"/a/rootFolder/project/Scripts/TypeScript.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/a/rootfolder/project/node_modules/@types:
|
||||
{"fileName":"/a/rootFolder/project/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/a/rootfolder/project/node_modules/@types:
|
||||
{"directoryName":"/a/rootFolder/project/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/a/rootfolder/project/scripts:
|
||||
{"directoryName":"/a/rootfolder/project/scripts","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/a/rootfolder/project/scripts"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+16
-16
@@ -76,16 +76,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -213,16 +213,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -342,16 +342,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -471,16 +471,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+16
-16
@@ -76,16 +76,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -144,16 +144,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -204,16 +204,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -264,16 +264,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+12
-12
@@ -76,14 +76,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -245,14 +245,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -401,14 +401,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -556,14 +556,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+12
-12
@@ -76,14 +76,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -176,14 +176,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -254,14 +254,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -331,14 +331,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+12
-12
@@ -117,14 +117,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/e.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -375,14 +375,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/e.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -544,14 +544,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/e.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -710,14 +710,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/e.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+12
-12
@@ -117,14 +117,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/e.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -231,14 +231,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/e.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -304,14 +304,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/e.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -374,14 +374,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/e.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+8
-8
@@ -105,12 +105,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib1/tools/tools.interface.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -394,12 +394,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib1/tools/tools.interface.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -604,12 +604,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib1/tools/tools.interface.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -810,12 +810,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib1/tools/tools.interface.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+8
-8
@@ -105,12 +105,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib1/tools/tools.interface.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -280,12 +280,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib1/tools/tools.interface.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -356,12 +356,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib1/tools/tools.interface.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -428,12 +428,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib1/tools/tools.interface.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+8
-8
@@ -116,12 +116,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib2/data2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -437,12 +437,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib2/data2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -666,12 +666,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib2/data2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -890,12 +890,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib2/data2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+8
-8
@@ -116,12 +116,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib2/data2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -308,12 +308,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib2/data2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -388,12 +388,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib2/data2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -463,12 +463,12 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/lib2/data2.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+21
-21
@@ -85,14 +85,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -215,14 +215,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -271,14 +271,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -407,14 +407,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -537,14 +537,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -591,14 +591,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -704,14 +704,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+21
-21
@@ -85,14 +85,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -139,14 +139,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -195,14 +195,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -273,14 +273,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -327,14 +327,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -381,14 +381,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -436,14 +436,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/noEmitOnError/src/other.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/noEmitOnError/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/noemitonerror/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/noEmitOnError/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/noemitonerror:
|
||||
{"directoryName":"/user/username/projects/noemitonerror","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/noemitonerror"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+16
-16
@@ -76,16 +76,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -215,16 +215,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -342,16 +342,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -469,16 +469,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+16
-16
@@ -76,16 +76,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -148,16 +148,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -208,16 +208,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -268,16 +268,16 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.d.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+12
-12
@@ -76,14 +76,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -253,14 +253,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -399,14 +399,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -545,14 +545,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+12
-12
@@ -76,14 +76,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -186,14 +186,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -265,14 +265,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -344,14 +344,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/c.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
+12
-12
@@ -117,14 +117,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/e.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -413,14 +413,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/e.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -653,14 +653,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/e.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
@@ -893,14 +893,14 @@ WatchedFiles::
|
||||
{"fileName":"/user/username/projects/myproject/e.ts","pollingInterval":250}
|
||||
/a/lib/lib.d.ts:
|
||||
{"fileName":"/a/lib/lib.d.ts","pollingInterval":250}
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"fileName":"/user/username/projects/myproject/node_modules/@types","pollingInterval":500}
|
||||
|
||||
FsWatches::
|
||||
|
||||
FsWatchesRecursive::
|
||||
/user/username/projects/myproject/node_modules/@types:
|
||||
{"directoryName":"/user/username/projects/myproject/node_modules/@types","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
/user/username/projects/myproject:
|
||||
{"directoryName":"/user/username/projects/myproject","fallbackPollingInterval":500,"fallbackOptions":{"watchFile":"PriorityPollingInterval"}}
|
||||
{"directoryName":"/user/username/projects/myproject"}
|
||||
|
||||
exitCode:: ExitStatus.undefined
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user