* Move package.json related utils to utilities * Add failing test * Make first test pass * Don’t filter when there’s no package.json, fix scoped package imports * Use type acquisition as a heuristic for whether a JS project is using node core * Make same fix in getCompletionDetails * Fix re-exporting * Change JS node core module heuristic to same-file utilization * Remove unused method * Remove other unused method * Remove unused triple-slash ref * Update comment * Refactor findAlias to forEachAlias to reduce iterations * Really fix re-exporting * Use getModuleSpecifier instead of custom hack * Fix offering auto imports to paths within node modules * Rename things and make comments better * Add another reexport test * Inline `symbolHasBeenSeen` * Simplify forEachAlias to findAlias * Add note that symbols is mutated * Symbol order doesn’t matter here * Style nits * Add test with nested package.jsons * Fix and add tests for export * re-exports * Don’t fail when alias isn’t found * Make some easy optimizations * Clean up memoization when done * Remove unnecessary semicolon * Make getSymbolsFromOtherSourceFileExports pure * Cache auto imports * Revert "Cache auto imports" This reverts commit8ea4829587
. * Handle merged symbols through cache * Be safer with symbol declarations, add logging * Improve cache invalidation for imports and exports * Check symbol presence first * Only run cache invalidation logic if there’s something to clear * Consolidate cache invalidation logic * Fix reuseProgramStructure test * Add more logging * Only clear cache if symbols are different * Refactor ambient module handling * Start caching package.json stuff * Support package.json searching in fourslash * Move import suggestions cache to Project * Start making more module specifier work available without having the importing file * Going to backtrack some from here * Get rid of dumb cache, fix node core modules stuff * Start determining changes to a file have invalidated its own auto imports * Move package.json related utils to utilities * Add failing test * Make first test pass * Don’t filter when there’s no package.json, fix scoped package imports * Use type acquisition as a heuristic for whether a JS project is using node core * Make same fix in getCompletionDetails * Fix re-exporting * Change JS node core module heuristic to same-file utilization * Remove unused method * Remove other unused method * Remove unused triple-slash ref * Update comment * Refactor findAlias to forEachAlias to reduce iterations * Really fix re-exporting * Use getModuleSpecifier instead of custom hack * Fix offering auto imports to paths within node modules * Rename things and make comments better * Add another reexport test * Inline `symbolHasBeenSeen` * Simplify forEachAlias to findAlias * Add note that symbols is mutated * Symbol order doesn’t matter here * Style nits * Add test with nested package.jsons * Fix and add tests for export * re-exports * Don’t fail when alias isn’t found * Make some easy optimizations * Clean up memoization when done * Remove unnecessary semicolon * Make getSymbolsFromOtherSourceFileExports pure * Cache auto imports * Revert "Cache auto imports" This reverts commit8ea4829587
. * Handle merged symbols through cache * Be safer with symbol declarations, add logging * Improve cache invalidation for imports and exports * Check symbol presence first * Only run cache invalidation logic if there’s something to clear * Consolidate cache invalidation logic * Fix reuseProgramStructure test * Add more logging * Only clear cache if symbols are different * Refactor ambient module handling * Finish(?) sourceFileHasChangedOwnImportSuggestions * Make package.json info model better * Fix misplaced paren * Use file structure cache for package.json detection when possible * Revert unnecessary changes in moduleSpecifiers * Revert more unnecessary changes * Don’t watch package.jsons inside node_modules, fix tests * Work around declaration emit bug * Sync submodules? * Delete unused type * Add server cache tests * Fix server fourslash editing * Fix packageJsonInfo tests * Add node core modules cache test and fix more fourslash * Clean up symlink caching * Improve logging * Function name doesn’t make any sense anymore * Move symlinks cache to host * Fix markFileAsDirty from ScriptInfo * Mark new Project members internal * Use Path instead of fileName * Rename AutoImportSuggestionsCache * Improve WatchType description * Remove entries() from packageJsonCache * Fix path/fileName bug * Also cache symlinks on Program for benefit of d.ts emit * Let language service use Program’s symlink cache
67 lines
1.4 KiB
TypeScript
67 lines
1.4 KiB
TypeScript
/// <reference path="../fourslash.ts" />
|
|
|
|
// @Filename: /tsconfig.json
|
|
////{
|
|
//// "compilerOptions": {
|
|
//// "module": "esnext",
|
|
//// "allowJs": true,
|
|
//// "checkJs": true,
|
|
//// "typeRoots": [
|
|
//// "node_modules/@types"
|
|
//// ]
|
|
//// },
|
|
//// "include": ["**/*"],
|
|
//// "typeAcquisition": {
|
|
//// "enable": true
|
|
//// }
|
|
////}
|
|
|
|
// @Filename: /node_modules/@types/node/index.d.ts
|
|
////declare module 'fs' {
|
|
//// export function readFile(): void;
|
|
////}
|
|
////declare module 'util' {
|
|
//// export function promisify(): void;
|
|
////}
|
|
|
|
// @Filename: /package.json
|
|
////{}
|
|
|
|
// @Filename: /a.js
|
|
////
|
|
////readF/**/
|
|
|
|
verifyExcludes("readFile");
|
|
edit.replaceLine(0, "import { promisify } from 'util';");
|
|
verifyIncludes("readFile");
|
|
edit.deleteLine(0);
|
|
verifyExcludes("readFile");
|
|
|
|
function verifyIncludes(name: string) {
|
|
goTo.marker("");
|
|
verify.completions({
|
|
includes: {
|
|
name,
|
|
source: "fs",
|
|
hasAction: true,
|
|
sortText: completion.SortText.AutoImportSuggestions,
|
|
},
|
|
preferences: {
|
|
includeCompletionsForModuleExports: true,
|
|
includeInsertTextCompletions: true,
|
|
},
|
|
});
|
|
}
|
|
|
|
function verifyExcludes(name: string) {
|
|
goTo.marker("");
|
|
verify.completions({
|
|
excludes: name,
|
|
preferences: {
|
|
includeCompletionsForModuleExports: true,
|
|
includeInsertTextCompletions: true,
|
|
},
|
|
});
|
|
}
|
|
|