Skip to content
This repository was archived by the owner on Sep 4, 2020. It is now read-only.

Commit 8efdc49

Browse files
committed
release v1.21.0
Signed-off-by: 迷渡 <[email protected]>
1 parent 7b0b601 commit 8efdc49

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "typescript-deno-plugin",
3-
"version": "1.18.0",
3+
"version": "1.21.0",
44
"description": "Deno language service plugin for TypeScript",
55
"main": "out/index.js",
66
"types": "out/index.d.ts",

src/index.ts

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,9 @@ const config: DenoPluginConfig = {
3333
enable: true,
3434
};
3535

36+
let parsedImportMap: ImportMaps | null = null;
37+
let projectDirectory: string;
38+
3639
module.exports = function init(
3740
{ typescript }: { typescript: typeof ts_module },
3841
) {
@@ -84,12 +87,10 @@ module.exports = function init(
8487
return tsLs;
8588
}
8689

87-
const projectDirectory = project.getCurrentDirectory();
90+
projectDirectory = project.getCurrentDirectory();
8891
// TypeScript plugins have a `cwd` of `/`, which causes issues with import resolution.
8992
process.chdir(projectDirectory);
9093

91-
let parsedImportMap: ImportMaps | null = null;
92-
9394
const resolveTypeReferenceDirectives =
9495
tsLsHost.resolveTypeReferenceDirectives;
9596

@@ -126,6 +127,7 @@ module.exports = function init(
126127
containingFile: string,
127128
...rest
128129
) => {
130+
logger.info("resolveModuleNames");
129131
if (!config.enable) {
130132
logger.info("plugin disabled.");
131133
return resolveModuleNames.call(
@@ -155,17 +157,21 @@ module.exports = function init(
155157
);
156158

157159
if (parsedModuleName == null) {
160+
logger.info(`module "${moduleName}" can not parsed`)
158161
resolvedModules.push(undefined);
159162
continue;
160163
}
161164

162165
const resolvedModule = resolveDenoModule(parsedModuleName);
163166

164167
if (!resolvedModule) {
168+
logger.info(`module "${moduleName}" can not resolved`)
165169
resolvedModules.push(undefined);
166170
continue;
167171
}
168172

173+
logger.info(`module "${moduleName}" -> ${resolvedModule.filepath}`);
174+
169175
resolvedModules.push({
170176
extension: resolvedModule.extension as ts_module.Extension,
171177
isExternalLibraryImport: false,
@@ -297,6 +303,7 @@ module.exports = function init(
297303
}
298304

299305
function getSemanticDiagnostics(filename: string) {
306+
logger.info("getSemanticDiagnostics");
300307
const diagnostics = tsLs.getSemanticDiagnostics(filename);
301308

302309
if (!config.enable) {
@@ -359,7 +366,7 @@ module.exports = function init(
359366
);
360367

361368
if (parsedModuleName == null) {
362-
d.code = 10001;
369+
d.code = 10001; // InvalidRelativeImport
363370
d.messageText =
364371
`relative import path "${moduleName}" not prefixed with / or ./ or ../`;
365372
return d;
@@ -373,7 +380,7 @@ module.exports = function init(
373380

374381
if (isHttpURL(parsedModuleName)) {
375382
d.code = 10002; // RemoteModuleNotExist
376-
d.messageText = `Could not find module ${moduleName} locally`;
383+
d.messageText = `The remote module "${moduleName}" have not cached locally`;
377384
return d;
378385
}
379386

@@ -384,11 +391,11 @@ module.exports = function init(
384391
parsedModuleName.startsWith("file://")
385392
) {
386393
d.code = 10003; // LocalModuleNotExist
387-
d.messageText = `Could not find module ${moduleName} locally`;
394+
d.messageText = `Could not find module "${moduleName}" locally`;
388395
return d;
389396
}
390397

391-
d.code = 10003; // InvalidImport
398+
d.code = 10004; // InvalidImport
392399
d.messageText =
393400
`Import module "${moduleName}" must be a relative path or remote HTTP URL`;
394401
}
@@ -411,9 +418,18 @@ module.exports = function init(
411418
onConfigurationChanged(c: DenoPluginConfig) {
412419
logger.info("config change to:\n" + JSON.stringify(c, null, " "));
413420
Object.assign(config, c);
421+
422+
if (config.importmap != null) {
423+
parsedImportMap = parseImportMapFromFile(
424+
projectDirectory,
425+
config.importmap,
426+
);
427+
}
428+
414429
pluginInfo.project.markAsDirty();
415430
pluginInfo.project.refreshDiagnostics();
416431
pluginInfo.project.updateGraph();
432+
pluginInfo.languageService.getProgram()?.emit();
417433
},
418434
};
419435
};

0 commit comments

Comments
 (0)