@angular/language-server 12.2.1 → 13.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/index.js +532 -121
  2. package/package.json +2 -2
package/index.js CHANGED
@@ -33,7 +33,9 @@ var require_cmdline_utils = __commonJS({
33
33
  logVerbosity: findArgument(argv, "--logVerbosity"),
34
34
  logToConsole: hasArgument(argv, "--logToConsole"),
35
35
  ngProbeLocations: parseStringArray(argv, "--ngProbeLocations"),
36
- tsProbeLocations: parseStringArray(argv, "--tsProbeLocations")
36
+ tsProbeLocations: parseStringArray(argv, "--tsProbeLocations"),
37
+ includeAutomaticOptionalChainCompletions: hasArgument(argv, "--includeAutomaticOptionalChainCompletions"),
38
+ includeCompletionsWithSnippetText: hasArgument(argv, "--includeCompletionsWithSnippetText")
37
39
  };
38
40
  }
39
41
  exports2.parseCommandLine = parseCommandLine;
@@ -66,9 +68,37 @@ var require_cmdline_utils = __commonJS({
66
68
  var require_resolver = __commonJS({
67
69
  "dist/common/resolver.js"(exports2) {
68
70
  "use strict";
71
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
72
+ if (k2 === void 0)
73
+ k2 = k;
74
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
75
+ return m[k];
76
+ } });
77
+ } : function(o, m, k, k2) {
78
+ if (k2 === void 0)
79
+ k2 = k;
80
+ o[k2] = m[k];
81
+ });
82
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
83
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
84
+ } : function(o, v) {
85
+ o["default"] = v;
86
+ });
87
+ var __importStar = exports2 && exports2.__importStar || function(mod) {
88
+ if (mod && mod.__esModule)
89
+ return mod;
90
+ var result = {};
91
+ if (mod != null) {
92
+ for (var k in mod)
93
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
94
+ __createBinding(result, mod, k);
95
+ }
96
+ __setModuleDefault(result, mod);
97
+ return result;
98
+ };
69
99
  Object.defineProperty(exports2, "__esModule", { value: true });
70
100
  exports2.Version = exports2.resolve = void 0;
71
- var fs = require("fs");
101
+ var fs = __importStar(require("fs"));
72
102
  function resolve(packageName, location, rootPackage) {
73
103
  rootPackage = rootPackage || packageName;
74
104
  try {
@@ -135,13 +165,45 @@ var require_resolver = __commonJS({
135
165
  var require_version_provider = __commonJS({
136
166
  "dist/banner/version_provider.js"(exports2) {
137
167
  "use strict";
168
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
169
+ if (k2 === void 0)
170
+ k2 = k;
171
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
172
+ return m[k];
173
+ } });
174
+ } : function(o, m, k, k2) {
175
+ if (k2 === void 0)
176
+ k2 = k;
177
+ o[k2] = m[k];
178
+ });
179
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
180
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
181
+ } : function(o, v) {
182
+ o["default"] = v;
183
+ });
184
+ var __importStar = exports2 && exports2.__importStar || function(mod) {
185
+ if (mod && mod.__esModule)
186
+ return mod;
187
+ var result = {};
188
+ if (mod != null) {
189
+ for (var k in mod)
190
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
191
+ __createBinding(result, mod, k);
192
+ }
193
+ __setModuleDefault(result, mod);
194
+ return result;
195
+ };
196
+ var __importDefault = exports2 && exports2.__importDefault || function(mod) {
197
+ return mod && mod.__esModule ? mod : { "default": mod };
198
+ };
138
199
  Object.defineProperty(exports2, "__esModule", { value: true });
139
- exports2.resolveNgcc = exports2.resolveNgLangSvc = exports2.resolveTsServer = void 0;
140
- var fs = require("fs");
141
- var path = require("path");
200
+ exports2.resolveNgcc = exports2.resolveNgLangSvc = exports2.loadEsmModule = exports2.resolveTsServer = void 0;
201
+ var fs = __importStar(require("fs"));
202
+ var path = __importStar(require("path"));
203
+ var url_1 = __importDefault(require("url"));
142
204
  var resolver_1 = require_resolver();
143
- var MIN_TS_VERSION = "4.2";
144
- var MIN_NG_VERSION = "12.0";
205
+ var MIN_TS_VERSION = "4.3";
206
+ var MIN_NG_VERSION = "13.0";
145
207
  var TSSERVERLIB = "typescript/lib/tsserverlibrary";
146
208
  function resolveWithMinVersion(packageName, minVersionStr, probeLocations, rootPackage) {
147
209
  if (!packageName.startsWith(rootPackage)) {
@@ -149,7 +211,7 @@ var require_version_provider = __commonJS({
149
211
  }
150
212
  const minVersion = new resolver_1.Version(minVersionStr);
151
213
  for (const location of probeLocations) {
152
- const nodeModule = resolver_1.resolve(packageName, location, rootPackage);
214
+ const nodeModule = (0, resolver_1.resolve)(packageName, location, rootPackage);
153
215
  if (nodeModule && nodeModule.version.greaterThanOrEqual(minVersion)) {
154
216
  return nodeModule;
155
217
  }
@@ -189,13 +251,30 @@ var require_version_provider = __commonJS({
189
251
  return void 0;
190
252
  }
191
253
  }
254
+ function loadEsmModule(modulePath) {
255
+ return new Function("modulePath", `return import(modulePath);`)(modulePath);
256
+ }
257
+ exports2.loadEsmModule = loadEsmModule;
192
258
  function resolveNgLangSvc(probeLocations) {
193
259
  const ngls = "@angular/language-service";
194
260
  return resolveWithMinVersion(ngls, MIN_NG_VERSION, probeLocations, ngls);
195
261
  }
196
262
  exports2.resolveNgLangSvc = resolveNgLangSvc;
197
- function resolveNgcc(directory) {
198
- return resolver_1.resolve("@angular/compiler-cli/ngcc/main-ngcc.js", directory, "@angular/compiler-cli");
263
+ async function resolveNgcc(directory) {
264
+ try {
265
+ const ngcc = (0, resolver_1.resolve)("@angular/compiler-cli/ngcc", directory, "@angular/compiler-cli");
266
+ if (ngcc === void 0) {
267
+ throw new Error("Could not resolve ngcc");
268
+ }
269
+ const ngccModule = await loadEsmModule(url_1.default.pathToFileURL(ngcc.resolvedPath));
270
+ const resolvedPath = ngccModule.ngccMainFilePath;
271
+ if (resolvedPath === void 0) {
272
+ throw new Error("could not resolve ngcc path.");
273
+ }
274
+ return Object.assign(Object.assign({}, ngcc), { resolvedPath });
275
+ } catch (e) {
276
+ return (0, resolver_1.resolve)("@angular/compiler-cli/ngcc/main-ngcc.js", directory, "@angular/compiler-cli");
277
+ }
199
278
  }
200
279
  exports2.resolveNgcc = resolveNgcc;
201
280
  }
@@ -214,8 +293,8 @@ function requireOverride(moduleName) {
214
293
  throw new Error(`Import '${TSSERVER}' instead of 'typescript'`);
215
294
  }
216
295
  if (moduleName === TSSERVER) {
217
- const { tsProbeLocations } = cmdline_utils_1.parseCommandLine(process.argv);
218
- moduleName = version_provider_1.resolveTsServer(tsProbeLocations).resolvedPath;
296
+ const { tsProbeLocations } = (0, cmdline_utils_1.parseCommandLine)(process.argv);
297
+ moduleName = (0, version_provider_1.resolveTsServer)(tsProbeLocations).resolvedPath;
219
298
  }
220
299
  return originalRequire(moduleName);
221
300
  }
@@ -265,7 +344,9 @@ var require_cmdline_utils = __commonJS({
265
344
  logVerbosity: findArgument(argv, "--logVerbosity"),
266
345
  logToConsole: hasArgument(argv, "--logToConsole"),
267
346
  ngProbeLocations: parseStringArray(argv, "--ngProbeLocations"),
268
- tsProbeLocations: parseStringArray(argv, "--tsProbeLocations")
347
+ tsProbeLocations: parseStringArray(argv, "--tsProbeLocations"),
348
+ includeAutomaticOptionalChainCompletions: hasArgument(argv, "--includeAutomaticOptionalChainCompletions"),
349
+ includeCompletionsWithSnippetText: hasArgument(argv, "--includeCompletionsWithSnippetText")
269
350
  };
270
351
  }
271
352
  exports2.parseCommandLine = parseCommandLine;
@@ -298,11 +379,39 @@ var require_cmdline_utils = __commonJS({
298
379
  var require_logger = __commonJS({
299
380
  "dist/server/logger.js"(exports2) {
300
381
  "use strict";
382
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
383
+ if (k2 === void 0)
384
+ k2 = k;
385
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
386
+ return m[k];
387
+ } });
388
+ } : function(o, m, k, k2) {
389
+ if (k2 === void 0)
390
+ k2 = k;
391
+ o[k2] = m[k];
392
+ });
393
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
394
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
395
+ } : function(o, v) {
396
+ o["default"] = v;
397
+ });
398
+ var __importStar = exports2 && exports2.__importStar || function(mod) {
399
+ if (mod && mod.__esModule)
400
+ return mod;
401
+ var result = {};
402
+ if (mod != null) {
403
+ for (var k in mod)
404
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
405
+ __createBinding(result, mod, k);
406
+ }
407
+ __setModuleDefault(result, mod);
408
+ return result;
409
+ };
301
410
  Object.defineProperty(exports2, "__esModule", { value: true });
302
411
  exports2.createLogger = void 0;
303
- var fs = require("fs");
304
- var path = require("path");
305
- var ts = require("typescript/lib/tsserverlibrary");
412
+ var fs = __importStar(require("fs"));
413
+ var path = __importStar(require("path"));
414
+ var ts = __importStar(require("typescript/lib/tsserverlibrary"));
306
415
  function createLogger(options) {
307
416
  let logLevel;
308
417
  switch (options.logVerbosity) {
@@ -398,9 +507,37 @@ var require_logger = __commonJS({
398
507
  var require_server_host = __commonJS({
399
508
  "dist/server/server_host.js"(exports2) {
400
509
  "use strict";
510
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
511
+ if (k2 === void 0)
512
+ k2 = k;
513
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
514
+ return m[k];
515
+ } });
516
+ } : function(o, m, k, k2) {
517
+ if (k2 === void 0)
518
+ k2 = k;
519
+ o[k2] = m[k];
520
+ });
521
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
522
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
523
+ } : function(o, v) {
524
+ o["default"] = v;
525
+ });
526
+ var __importStar = exports2 && exports2.__importStar || function(mod) {
527
+ if (mod && mod.__esModule)
528
+ return mod;
529
+ var result = {};
530
+ if (mod != null) {
531
+ for (var k in mod)
532
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
533
+ __createBinding(result, mod, k);
534
+ }
535
+ __setModuleDefault(result, mod);
536
+ return result;
537
+ };
401
538
  Object.defineProperty(exports2, "__esModule", { value: true });
402
539
  exports2.ServerHost = void 0;
403
- var ts = require("typescript/lib/tsserverlibrary");
540
+ var ts = __importStar(require("typescript/lib/tsserverlibrary"));
404
541
  var NOOP_WATCHER = {
405
542
  close() {
406
543
  }
@@ -2873,10 +3010,39 @@ var require_main2 = __commonJS({
2873
3010
  var require_requests = __commonJS({
2874
3011
  "dist/common/requests.js"(exports2) {
2875
3012
  "use strict";
3013
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
3014
+ if (k2 === void 0)
3015
+ k2 = k;
3016
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
3017
+ return m[k];
3018
+ } });
3019
+ } : function(o, m, k, k2) {
3020
+ if (k2 === void 0)
3021
+ k2 = k;
3022
+ o[k2] = m[k];
3023
+ });
3024
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
3025
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
3026
+ } : function(o, v) {
3027
+ o["default"] = v;
3028
+ });
3029
+ var __importStar = exports2 && exports2.__importStar || function(mod) {
3030
+ if (mod && mod.__esModule)
3031
+ return mod;
3032
+ var result = {};
3033
+ if (mod != null) {
3034
+ for (var k in mod)
3035
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
3036
+ __createBinding(result, mod, k);
3037
+ }
3038
+ __setModuleDefault(result, mod);
3039
+ return result;
3040
+ };
2876
3041
  Object.defineProperty(exports2, "__esModule", { value: true });
2877
- exports2.IsInAngularProject = exports2.GetTcbRequest = exports2.GetComponentsWithTemplateFile = void 0;
2878
- var lsp = require_main2();
3042
+ exports2.IsInAngularProject = exports2.GetTcbRequest = exports2.GetTemplateLocationForComponent = exports2.GetComponentsWithTemplateFile = void 0;
3043
+ var lsp = __importStar(require_main2());
2879
3044
  exports2.GetComponentsWithTemplateFile = new lsp.RequestType("angular/getComponentsWithTemplateFile");
3045
+ exports2.GetTemplateLocationForComponent = new lsp.RequestType("angular/getTemplateLocationForComponent");
2880
3046
  exports2.GetTcbRequest = new lsp.RequestType("angular/getTcb");
2881
3047
  exports2.IsInAngularProject = new lsp.RequestType("angular/isAngularCoreInOwningProject");
2882
3048
  }
@@ -2886,10 +3052,38 @@ var require_requests = __commonJS({
2886
3052
  var require_utils = __commonJS({
2887
3053
  "dist/server/utils.js"(exports2) {
2888
3054
  "use strict";
3055
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
3056
+ if (k2 === void 0)
3057
+ k2 = k;
3058
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
3059
+ return m[k];
3060
+ } });
3061
+ } : function(o, m, k, k2) {
3062
+ if (k2 === void 0)
3063
+ k2 = k;
3064
+ o[k2] = m[k];
3065
+ });
3066
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
3067
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
3068
+ } : function(o, v) {
3069
+ o["default"] = v;
3070
+ });
3071
+ var __importStar = exports2 && exports2.__importStar || function(mod) {
3072
+ if (mod && mod.__esModule)
3073
+ return mod;
3074
+ var result = {};
3075
+ if (mod != null) {
3076
+ for (var k in mod)
3077
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
3078
+ __createBinding(result, mod, k);
3079
+ }
3080
+ __setModuleDefault(result, mod);
3081
+ return result;
3082
+ };
2889
3083
  Object.defineProperty(exports2, "__esModule", { value: true });
2890
- exports2.tsDisplayPartsToText = exports2.MruTracker = exports2.isConfiguredProject = exports2.lspRangeToTsPositions = exports2.lspPositionToTsPosition = exports2.tsTextSpanToLspRange = exports2.filePathToUri = exports2.uriToFilePath = exports2.isDebugMode = void 0;
2891
- var ts = require("typescript/lib/tsserverlibrary");
2892
- var lsp = require("vscode-languageserver");
3084
+ exports2.tsDisplayPartsToText = exports2.MruTracker = exports2.isConfiguredProject = exports2.tsRelatedInformationToLspRelatedInformation = exports2.lspRangeToTsPositions = exports2.lspPositionToTsPosition = exports2.tsTextSpanToLspRange = exports2.filePathToUri = exports2.uriToFilePath = exports2.isDebugMode = void 0;
3085
+ var ts = __importStar(require("typescript/lib/tsserverlibrary"));
3086
+ var lsp = __importStar(require("vscode-languageserver"));
2893
3087
  var vscode_uri_1 = require("vscode-uri");
2894
3088
  exports2.isDebugMode = process.env["NG_DEBUG"] === "true";
2895
3089
  var Scheme;
@@ -2925,6 +3119,23 @@ var require_utils = __commonJS({
2925
3119
  return [start, end];
2926
3120
  }
2927
3121
  exports2.lspRangeToTsPositions = lspRangeToTsPositions;
3122
+ function tsRelatedInformationToLspRelatedInformation(scriptInfo, relatedInfo) {
3123
+ if (relatedInfo === void 0)
3124
+ return;
3125
+ const lspRelatedInfo = [];
3126
+ for (const info of relatedInfo) {
3127
+ if (info.file === void 0 || info.start === void 0 || info.length === void 0)
3128
+ continue;
3129
+ const textSpan = {
3130
+ start: info.start,
3131
+ length: info.length
3132
+ };
3133
+ const location = lsp.Location.create(filePathToUri(info.file.fileName), tsTextSpanToLspRange(scriptInfo, textSpan));
3134
+ lspRelatedInfo.push(lsp.DiagnosticRelatedInformation.create(location, ts.flattenDiagnosticMessageText(info.messageText, "\n")));
3135
+ }
3136
+ return lspRelatedInfo;
3137
+ }
3138
+ exports2.tsRelatedInformationToLspRelatedInformation = tsRelatedInformationToLspRelatedInformation;
2928
3139
  function isConfiguredProject(project) {
2929
3140
  return project.projectKind === ts.server.ProjectKind.Configured;
2930
3141
  }
@@ -2958,9 +3169,37 @@ var require_utils = __commonJS({
2958
3169
  var require_completion = __commonJS({
2959
3170
  "dist/server/completion.js"(exports2) {
2960
3171
  "use strict";
3172
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
3173
+ if (k2 === void 0)
3174
+ k2 = k;
3175
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
3176
+ return m[k];
3177
+ } });
3178
+ } : function(o, m, k, k2) {
3179
+ if (k2 === void 0)
3180
+ k2 = k;
3181
+ o[k2] = m[k];
3182
+ });
3183
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
3184
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
3185
+ } : function(o, v) {
3186
+ o["default"] = v;
3187
+ });
3188
+ var __importStar = exports2 && exports2.__importStar || function(mod) {
3189
+ if (mod && mod.__esModule)
3190
+ return mod;
3191
+ var result = {};
3192
+ if (mod != null) {
3193
+ for (var k in mod)
3194
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
3195
+ __createBinding(result, mod, k);
3196
+ }
3197
+ __setModuleDefault(result, mod);
3198
+ return result;
3199
+ };
2961
3200
  Object.defineProperty(exports2, "__esModule", { value: true });
2962
3201
  exports2.tsCompletionEntryToLspCompletionItem = exports2.readNgCompletionData = void 0;
2963
- var lsp = require("vscode-languageserver");
3202
+ var lsp = __importStar(require("vscode-languageserver"));
2964
3203
  var utils_1 = require_utils();
2965
3204
  var CompletionKind;
2966
3205
  (function(CompletionKind2) {
@@ -3016,7 +3255,7 @@ var require_completion = __commonJS({
3016
3255
  return lsp.CompletionItemKind.Text;
3017
3256
  }
3018
3257
  }
3019
- function tsCompletionEntryToLspCompletionItem(entry, position, scriptInfo, insertReplaceSupport) {
3258
+ function tsCompletionEntryToLspCompletionItem(entry, position, scriptInfo, insertReplaceSupport, isIvy) {
3020
3259
  const item = lsp.CompletionItem.create(entry.name);
3021
3260
  const kind = entry.kind;
3022
3261
  item.kind = ngCompletionKindToLspCompletionItemKind(kind);
@@ -3024,6 +3263,12 @@ var require_completion = __commonJS({
3024
3263
  item.sortText = entry.sortText;
3025
3264
  const insertText = entry.insertText || entry.name;
3026
3265
  item.textEdit = createTextEdit(scriptInfo, entry, position, insertText, insertReplaceSupport);
3266
+ if (isIvy) {
3267
+ item.filterText = entry.insertText;
3268
+ if (entry.isSnippet) {
3269
+ item.insertTextFormat = lsp.InsertTextFormat.Snippet;
3270
+ }
3271
+ }
3027
3272
  item.data = {
3028
3273
  kind: "ngCompletionOriginData",
3029
3274
  filePath: scriptInfo.fileName,
@@ -3036,13 +3281,13 @@ var require_completion = __commonJS({
3036
3281
  if (entry.replacementSpan === void 0) {
3037
3282
  return lsp.TextEdit.insert(position, insertText);
3038
3283
  } else if (insertReplaceSupport) {
3039
- const replacementRange = utils_1.tsTextSpanToLspRange(scriptInfo, entry.replacementSpan);
3040
- const tsPosition = utils_1.lspPositionToTsPosition(scriptInfo, position);
3284
+ const replacementRange = (0, utils_1.tsTextSpanToLspRange)(scriptInfo, entry.replacementSpan);
3285
+ const tsPosition = (0, utils_1.lspPositionToTsPosition)(scriptInfo, position);
3041
3286
  const insertLength = tsPosition - entry.replacementSpan.start;
3042
- const insertionRange = utils_1.tsTextSpanToLspRange(scriptInfo, Object.assign(Object.assign({}, entry.replacementSpan), { length: insertLength }));
3287
+ const insertionRange = (0, utils_1.tsTextSpanToLspRange)(scriptInfo, Object.assign(Object.assign({}, entry.replacementSpan), { length: insertLength }));
3043
3288
  return lsp.InsertReplaceEdit.create(insertText, insertionRange, replacementRange);
3044
3289
  } else {
3045
- return lsp.TextEdit.replace(utils_1.tsTextSpanToLspRange(scriptInfo, entry.replacementSpan), insertText);
3290
+ return lsp.TextEdit.replace((0, utils_1.tsTextSpanToLspRange)(scriptInfo, entry.replacementSpan), insertText);
3046
3291
  }
3047
3292
  }
3048
3293
  }
@@ -3052,10 +3297,38 @@ var require_completion = __commonJS({
3052
3297
  var require_diagnostic = __commonJS({
3053
3298
  "dist/server/diagnostic.js"(exports2) {
3054
3299
  "use strict";
3300
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
3301
+ if (k2 === void 0)
3302
+ k2 = k;
3303
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
3304
+ return m[k];
3305
+ } });
3306
+ } : function(o, m, k, k2) {
3307
+ if (k2 === void 0)
3308
+ k2 = k;
3309
+ o[k2] = m[k];
3310
+ });
3311
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
3312
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
3313
+ } : function(o, v) {
3314
+ o["default"] = v;
3315
+ });
3316
+ var __importStar = exports2 && exports2.__importStar || function(mod) {
3317
+ if (mod && mod.__esModule)
3318
+ return mod;
3319
+ var result = {};
3320
+ if (mod != null) {
3321
+ for (var k in mod)
3322
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
3323
+ __createBinding(result, mod, k);
3324
+ }
3325
+ __setModuleDefault(result, mod);
3326
+ return result;
3327
+ };
3055
3328
  Object.defineProperty(exports2, "__esModule", { value: true });
3056
3329
  exports2.tsDiagnosticToLspDiagnostic = void 0;
3057
- var ts = require("typescript/lib/tsserverlibrary");
3058
- var lsp = require("vscode-languageserver");
3330
+ var ts = __importStar(require("typescript/lib/tsserverlibrary"));
3331
+ var lsp = __importStar(require("vscode-languageserver"));
3059
3332
  var utils_1 = require_utils();
3060
3333
  function tsDiagnosticCategoryToLspDiagnosticSeverity(category) {
3061
3334
  switch (category) {
@@ -3075,7 +3348,7 @@ var require_diagnostic = __commonJS({
3075
3348
  start: tsDiag.start || 0,
3076
3349
  length: tsDiag.length || 0
3077
3350
  };
3078
- return lsp.Diagnostic.create(utils_1.tsTextSpanToLspRange(scriptInfo, textSpan), ts.flattenDiagnosticMessageText(tsDiag.messageText, "\n"), tsDiagnosticCategoryToLspDiagnosticSeverity(tsDiag.category), tsDiag.code, tsDiag.source);
3351
+ return lsp.Diagnostic.create((0, utils_1.tsTextSpanToLspRange)(scriptInfo, textSpan), ts.flattenDiagnosticMessageText(tsDiag.messageText, "\n"), tsDiagnosticCategoryToLspDiagnosticSeverity(tsDiag.category), tsDiag.code, tsDiag.source, (0, utils_1.tsRelatedInformationToLspRelatedInformation)(scriptInfo, tsDiag.relatedInformation));
3079
3352
  }
3080
3353
  exports2.tsDiagnosticToLspDiagnostic = tsDiagnosticToLspDiagnostic;
3081
3354
  }
@@ -3085,9 +3358,37 @@ var require_diagnostic = __commonJS({
3085
3358
  var require_resolver = __commonJS({
3086
3359
  "dist/common/resolver.js"(exports2) {
3087
3360
  "use strict";
3361
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
3362
+ if (k2 === void 0)
3363
+ k2 = k;
3364
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
3365
+ return m[k];
3366
+ } });
3367
+ } : function(o, m, k, k2) {
3368
+ if (k2 === void 0)
3369
+ k2 = k;
3370
+ o[k2] = m[k];
3371
+ });
3372
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
3373
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
3374
+ } : function(o, v) {
3375
+ o["default"] = v;
3376
+ });
3377
+ var __importStar = exports2 && exports2.__importStar || function(mod) {
3378
+ if (mod && mod.__esModule)
3379
+ return mod;
3380
+ var result = {};
3381
+ if (mod != null) {
3382
+ for (var k in mod)
3383
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
3384
+ __createBinding(result, mod, k);
3385
+ }
3386
+ __setModuleDefault(result, mod);
3387
+ return result;
3388
+ };
3088
3389
  Object.defineProperty(exports2, "__esModule", { value: true });
3089
3390
  exports2.Version = exports2.resolve = void 0;
3090
- var fs = require("fs");
3391
+ var fs = __importStar(require("fs"));
3091
3392
  function resolve(packageName, location, rootPackage) {
3092
3393
  rootPackage = rootPackage || packageName;
3093
3394
  try {
@@ -3154,13 +3455,45 @@ var require_resolver = __commonJS({
3154
3455
  var require_version_provider = __commonJS({
3155
3456
  "dist/server/version_provider.js"(exports2) {
3156
3457
  "use strict";
3458
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
3459
+ if (k2 === void 0)
3460
+ k2 = k;
3461
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
3462
+ return m[k];
3463
+ } });
3464
+ } : function(o, m, k, k2) {
3465
+ if (k2 === void 0)
3466
+ k2 = k;
3467
+ o[k2] = m[k];
3468
+ });
3469
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
3470
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
3471
+ } : function(o, v) {
3472
+ o["default"] = v;
3473
+ });
3474
+ var __importStar = exports2 && exports2.__importStar || function(mod) {
3475
+ if (mod && mod.__esModule)
3476
+ return mod;
3477
+ var result = {};
3478
+ if (mod != null) {
3479
+ for (var k in mod)
3480
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
3481
+ __createBinding(result, mod, k);
3482
+ }
3483
+ __setModuleDefault(result, mod);
3484
+ return result;
3485
+ };
3486
+ var __importDefault = exports2 && exports2.__importDefault || function(mod) {
3487
+ return mod && mod.__esModule ? mod : { "default": mod };
3488
+ };
3157
3489
  Object.defineProperty(exports2, "__esModule", { value: true });
3158
- exports2.resolveNgcc = exports2.resolveNgLangSvc = exports2.resolveTsServer = void 0;
3159
- var fs = require("fs");
3160
- var path = require("path");
3490
+ exports2.resolveNgcc = exports2.resolveNgLangSvc = exports2.loadEsmModule = exports2.resolveTsServer = void 0;
3491
+ var fs = __importStar(require("fs"));
3492
+ var path = __importStar(require("path"));
3493
+ var url_1 = __importDefault(require("url"));
3161
3494
  var resolver_1 = require_resolver();
3162
- var MIN_TS_VERSION = "4.2";
3163
- var MIN_NG_VERSION = "12.0";
3495
+ var MIN_TS_VERSION = "4.3";
3496
+ var MIN_NG_VERSION = "13.0";
3164
3497
  var TSSERVERLIB = "typescript/lib/tsserverlibrary";
3165
3498
  function resolveWithMinVersion(packageName, minVersionStr, probeLocations, rootPackage) {
3166
3499
  if (!packageName.startsWith(rootPackage)) {
@@ -3168,7 +3501,7 @@ var require_version_provider = __commonJS({
3168
3501
  }
3169
3502
  const minVersion = new resolver_1.Version(minVersionStr);
3170
3503
  for (const location of probeLocations) {
3171
- const nodeModule = resolver_1.resolve(packageName, location, rootPackage);
3504
+ const nodeModule = (0, resolver_1.resolve)(packageName, location, rootPackage);
3172
3505
  if (nodeModule && nodeModule.version.greaterThanOrEqual(minVersion)) {
3173
3506
  return nodeModule;
3174
3507
  }
@@ -3208,13 +3541,30 @@ var require_version_provider = __commonJS({
3208
3541
  return void 0;
3209
3542
  }
3210
3543
  }
3544
+ function loadEsmModule(modulePath) {
3545
+ return new Function("modulePath", `return import(modulePath);`)(modulePath);
3546
+ }
3547
+ exports2.loadEsmModule = loadEsmModule;
3211
3548
  function resolveNgLangSvc(probeLocations) {
3212
3549
  const ngls = "@angular/language-service";
3213
3550
  return resolveWithMinVersion(ngls, MIN_NG_VERSION, probeLocations, ngls);
3214
3551
  }
3215
3552
  exports2.resolveNgLangSvc = resolveNgLangSvc;
3216
- function resolveNgcc(directory) {
3217
- return resolver_1.resolve("@angular/compiler-cli/ngcc/main-ngcc.js", directory, "@angular/compiler-cli");
3553
+ async function resolveNgcc(directory) {
3554
+ try {
3555
+ const ngcc = (0, resolver_1.resolve)("@angular/compiler-cli/ngcc", directory, "@angular/compiler-cli");
3556
+ if (ngcc === void 0) {
3557
+ throw new Error("Could not resolve ngcc");
3558
+ }
3559
+ const ngccModule = await loadEsmModule(url_1.default.pathToFileURL(ngcc.resolvedPath));
3560
+ const resolvedPath = ngccModule.ngccMainFilePath;
3561
+ if (resolvedPath === void 0) {
3562
+ throw new Error("could not resolve ngcc path.");
3563
+ }
3564
+ return Object.assign(Object.assign({}, ngcc), { resolvedPath });
3565
+ } catch (e) {
3566
+ return (0, resolver_1.resolve)("@angular/compiler-cli/ngcc/main-ngcc.js", directory, "@angular/compiler-cli");
3567
+ }
3218
3568
  }
3219
3569
  exports2.resolveNgcc = resolveNgcc;
3220
3570
  }
@@ -3232,8 +3582,8 @@ var require_ngcc = __commonJS({
3232
3582
  var version_provider_12 = require_version_provider();
3233
3583
  async function resolveAndRunNgcc(tsconfig, progress) {
3234
3584
  var _a, _b;
3235
- const directory = path_1.dirname(tsconfig);
3236
- const ngcc = version_provider_12.resolveNgcc(directory);
3585
+ const directory = (0, path_1.dirname)(tsconfig);
3586
+ const ngcc = await (0, version_provider_12.resolveNgcc)(directory);
3237
3587
  if (!ngcc) {
3238
3588
  throw new Error(`Failed to resolve ngcc from ${directory}`);
3239
3589
  }
@@ -3246,8 +3596,8 @@ var require_ngcc = __commonJS({
3246
3596
  if (ngcc.version.greaterThanOrEqual(new resolver_1.Version("11.2.4"))) {
3247
3597
  args.push("--typings-only");
3248
3598
  }
3249
- const childProcess = child_process_1.fork(ngcc.resolvedPath, args, {
3250
- cwd: path_1.resolve(cwd),
3599
+ const childProcess = (0, child_process_1.fork)(ngcc.resolvedPath, args, {
3600
+ cwd: (0, path_1.resolve)(cwd),
3251
3601
  silent: true,
3252
3602
  execArgv: []
3253
3603
  });
@@ -3284,13 +3634,40 @@ var require_ngcc = __commonJS({
3284
3634
  var require_session = __commonJS({
3285
3635
  "dist/server/session.js"(exports2) {
3286
3636
  "use strict";
3637
+ var __createBinding = exports2 && exports2.__createBinding || (Object.create ? function(o, m, k, k2) {
3638
+ if (k2 === void 0)
3639
+ k2 = k;
3640
+ Object.defineProperty(o, k2, { enumerable: true, get: function() {
3641
+ return m[k];
3642
+ } });
3643
+ } : function(o, m, k, k2) {
3644
+ if (k2 === void 0)
3645
+ k2 = k;
3646
+ o[k2] = m[k];
3647
+ });
3648
+ var __setModuleDefault = exports2 && exports2.__setModuleDefault || (Object.create ? function(o, v) {
3649
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
3650
+ } : function(o, v) {
3651
+ o["default"] = v;
3652
+ });
3653
+ var __importStar = exports2 && exports2.__importStar || function(mod) {
3654
+ if (mod && mod.__esModule)
3655
+ return mod;
3656
+ var result = {};
3657
+ if (mod != null) {
3658
+ for (var k in mod)
3659
+ if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k))
3660
+ __createBinding(result, mod, k);
3661
+ }
3662
+ __setModuleDefault(result, mod);
3663
+ return result;
3664
+ };
3287
3665
  Object.defineProperty(exports2, "__esModule", { value: true });
3288
3666
  exports2.Session = void 0;
3289
3667
  var api_1 = require_api();
3290
- var assert = require("assert");
3291
- var ts = require("typescript/lib/tsserverlibrary");
3668
+ var ts = __importStar(require("typescript/lib/tsserverlibrary"));
3292
3669
  var util_1 = require("util");
3293
- var lsp = require("vscode-languageserver/node");
3670
+ var lsp = __importStar(require("vscode-languageserver/node"));
3294
3671
  var notifications_1 = require_notifications();
3295
3672
  var progress_1 = require_progress();
3296
3673
  var requests_1 = require_requests();
@@ -3304,7 +3681,7 @@ var require_session = __commonJS({
3304
3681
  LanguageId2["HTML"] = "html";
3305
3682
  })(LanguageId || (LanguageId = {}));
3306
3683
  var EMPTY_RANGE = lsp.Range.create(0, 0, 0, 0);
3307
- var setImmediateP = util_1.promisify(setImmediate);
3684
+ var setImmediateP = (0, util_1.promisify)(setImmediate);
3308
3685
  var Session = class {
3309
3686
  constructor(options) {
3310
3687
  this.configuredProjToExternalProj = new Map();
@@ -3314,6 +3691,8 @@ var require_session = __commonJS({
3314
3691
  this.isProjectLoading = false;
3315
3692
  this.renameDisabledProjects = new WeakSet();
3316
3693
  this.clientCapabilities = {};
3694
+ this.includeAutomaticOptionalChainCompletions = options.includeAutomaticOptionalChainCompletions;
3695
+ this.includeCompletionsWithSnippetText = options.includeCompletionsWithSnippetText;
3317
3696
  this.logger = options.logger;
3318
3697
  this.ivy = options.ivy;
3319
3698
  this.logToConsole = options.logToConsole;
@@ -3341,7 +3720,8 @@ var require_session = __commonJS({
3341
3720
  eventHandler: (e) => this.handleProjectServiceEvent(e),
3342
3721
  globalPlugins: [options.ngPlugin],
3343
3722
  pluginProbeLocations: [options.resolvedNgLsPath],
3344
- allowLocalPluginLoads: false
3723
+ allowLocalPluginLoads: false,
3724
+ session: void 0
3345
3725
  });
3346
3726
  projSvc.setHostConfiguration({
3347
3727
  formatOptions: projSvc.getHostFormatCodeOptions(),
@@ -3362,11 +3742,10 @@ var require_session = __commonJS({
3362
3742
  }
3363
3743
  });
3364
3744
  const pluginConfig = {
3365
- angularOnly: true,
3366
- ivy: options.ivy
3745
+ angularOnly: true
3367
3746
  };
3368
3747
  if (options.host.isG3) {
3369
- assert(options.ivy === true, "Ivy LS must be used in google3");
3748
+ options.ivy = true;
3370
3749
  pluginConfig.forceStrictTemplates = true;
3371
3750
  }
3372
3751
  projSvc.configurePlugin({
@@ -3390,6 +3769,7 @@ var require_session = __commonJS({
3390
3769
  conn.onCompletion((p) => this.onCompletion(p));
3391
3770
  conn.onCompletionResolve((p) => this.onCompletionResolve(p));
3392
3771
  conn.onRequest(requests_1.GetComponentsWithTemplateFile, (p) => this.onGetComponentsWithTemplateFile(p));
3772
+ conn.onRequest(requests_1.GetTemplateLocationForComponent, (p) => this.onGetTemplateLocationForComponent(p));
3393
3773
  conn.onRequest(requests_1.GetTcbRequest, (p) => this.onGetTcb(p));
3394
3774
  conn.onRequest(requests_1.IsInAngularProject, (p) => this.isInAngularProject(p));
3395
3775
  conn.onCodeLens((p) => this.onCodeLens(p));
@@ -3397,7 +3777,7 @@ var require_session = __commonJS({
3397
3777
  conn.onSignatureHelp((p) => this.onSignatureHelp(p));
3398
3778
  }
3399
3779
  isInAngularProject(params) {
3400
- const filePath = utils_1.uriToFilePath(params.textDocument.uri);
3780
+ const filePath = (0, utils_1.uriToFilePath)(params.textDocument.uri);
3401
3781
  if (!filePath) {
3402
3782
  return false;
3403
3783
  }
@@ -3418,7 +3798,7 @@ var require_session = __commonJS({
3418
3798
  return null;
3419
3799
  }
3420
3800
  const { languageService, scriptInfo } = lsInfo;
3421
- const offset = utils_1.lspPositionToTsPosition(scriptInfo, params.position);
3801
+ const offset = (0, utils_1.lspPositionToTsPosition)(scriptInfo, params.position);
3422
3802
  const response = languageService.getTcb(scriptInfo.fileName, offset);
3423
3803
  if (response === void 0) {
3424
3804
  return null;
@@ -3429,11 +3809,29 @@ var require_session = __commonJS({
3429
3809
  return null;
3430
3810
  }
3431
3811
  return {
3432
- uri: utils_1.filePathToUri(tcfName),
3812
+ uri: (0, utils_1.filePathToUri)(tcfName),
3433
3813
  content: response.content,
3434
- selections: response.selections.map((span) => utils_1.tsTextSpanToLspRange(tcfScriptInfo, span))
3814
+ selections: response.selections.map((span) => (0, utils_1.tsTextSpanToLspRange)(tcfScriptInfo, span))
3435
3815
  };
3436
3816
  }
3817
+ onGetTemplateLocationForComponent(params) {
3818
+ const lsInfo = this.getLSAndScriptInfo(params.textDocument);
3819
+ if (lsInfo === null) {
3820
+ return null;
3821
+ }
3822
+ const { languageService, scriptInfo } = lsInfo;
3823
+ const offset = (0, utils_1.lspPositionToTsPosition)(scriptInfo, params.position);
3824
+ const documentSpan = languageService.getTemplateLocationForComponent(scriptInfo.fileName, offset);
3825
+ if (documentSpan === void 0) {
3826
+ return null;
3827
+ }
3828
+ const templateScriptInfo = this.projectService.getScriptInfo(documentSpan.fileName);
3829
+ if (templateScriptInfo === void 0) {
3830
+ return null;
3831
+ }
3832
+ const range = (0, utils_1.tsTextSpanToLspRange)(templateScriptInfo, documentSpan.textSpan);
3833
+ return lsp.Location.create((0, utils_1.filePathToUri)(documentSpan.fileName), range);
3834
+ }
3437
3835
  onGetComponentsWithTemplateFile(params) {
3438
3836
  const lsInfo = this.getLSAndScriptInfo(params.textDocument);
3439
3837
  if (lsInfo === null) {
@@ -3447,8 +3845,8 @@ var require_session = __commonJS({
3447
3845
  if (scriptInfo2 === void 0) {
3448
3846
  continue;
3449
3847
  }
3450
- const range = utils_1.tsTextSpanToLspRange(scriptInfo2, documentSpan.textSpan);
3451
- results.push(lsp.Location.create(utils_1.filePathToUri(documentSpan.fileName), range));
3848
+ const range = (0, utils_1.tsTextSpanToLspRange)(scriptInfo2, documentSpan.textSpan);
3849
+ results.push(lsp.Location.create((0, utils_1.filePathToUri)(documentSpan.fileName), range));
3452
3850
  }
3453
3851
  return results;
3454
3852
  }
@@ -3458,7 +3856,7 @@ var require_session = __commonJS({
3458
3856
  return null;
3459
3857
  }
3460
3858
  const { languageService, scriptInfo } = lsInfo;
3461
- const offset = utils_1.lspPositionToTsPosition(scriptInfo, params.position);
3859
+ const offset = (0, utils_1.lspPositionToTsPosition)(scriptInfo, params.position);
3462
3860
  const help = languageService.getSignatureHelpItems(scriptInfo.fileName, offset, void 0);
3463
3861
  if (help === void 0) {
3464
3862
  return null;
@@ -3467,26 +3865,26 @@ var require_session = __commonJS({
3467
3865
  activeParameter: help.argumentCount > 0 ? help.argumentIndex : null,
3468
3866
  activeSignature: help.selectedItemIndex,
3469
3867
  signatures: help.items.map((item) => {
3470
- let label = utils_1.tsDisplayPartsToText(item.prefixDisplayParts);
3868
+ let label = (0, utils_1.tsDisplayPartsToText)(item.prefixDisplayParts);
3471
3869
  const parameters = [];
3472
3870
  let first = true;
3473
3871
  for (const param of item.parameters) {
3474
3872
  if (!first) {
3475
- label += utils_1.tsDisplayPartsToText(item.separatorDisplayParts);
3873
+ label += (0, utils_1.tsDisplayPartsToText)(item.separatorDisplayParts);
3476
3874
  }
3477
3875
  first = false;
3478
3876
  const start = label.length;
3479
- label += utils_1.tsDisplayPartsToText(param.displayParts);
3877
+ label += (0, utils_1.tsDisplayPartsToText)(param.displayParts);
3480
3878
  const end = label.length;
3481
3879
  parameters.push({
3482
3880
  label: [start, end],
3483
- documentation: utils_1.tsDisplayPartsToText(param.documentation)
3881
+ documentation: (0, utils_1.tsDisplayPartsToText)(param.documentation)
3484
3882
  });
3485
3883
  }
3486
- label += utils_1.tsDisplayPartsToText(item.suffixDisplayParts);
3884
+ label += (0, utils_1.tsDisplayPartsToText)(item.suffixDisplayParts);
3487
3885
  return {
3488
3886
  label,
3489
- documentation: utils_1.tsDisplayPartsToText(item.documentation),
3887
+ documentation: (0, utils_1.tsDisplayPartsToText)(item.documentation),
3490
3888
  parameters
3491
3889
  };
3492
3890
  })
@@ -3554,7 +3952,7 @@ var require_session = __commonJS({
3554
3952
  }
3555
3953
  }
3556
3954
  handleCompilerOptionsDiagnostics(project) {
3557
- if (!utils_1.isConfiguredProject(project)) {
3955
+ if (!(0, utils_1.isConfiguredProject)(project)) {
3558
3956
  return;
3559
3957
  }
3560
3958
  const diags = project.getLanguageService().getCompilerOptionsDiagnostics();
@@ -3644,8 +4042,8 @@ var require_session = __commonJS({
3644
4042
  console.timeEnd(label);
3645
4043
  }
3646
4044
  this.connection.sendDiagnostics({
3647
- uri: utils_1.filePathToUri(fileName),
3648
- diagnostics: diagnostics.map((d) => diagnostic_1.tsDiagnosticToLspDiagnostic(d, result.scriptInfo))
4045
+ uri: (0, utils_1.filePathToUri)(fileName),
4046
+ diagnostics: diagnostics.map((d) => (0, diagnostic_1.tsDiagnosticToLspDiagnostic)(d, result.scriptInfo))
3649
4047
  });
3650
4048
  if (this.diagnosticsTimeout) {
3651
4049
  return;
@@ -3661,11 +4059,11 @@ var require_session = __commonJS({
3661
4059
  const { configFileName } = this.projectService.openClientFile(scriptInfo.fileName);
3662
4060
  if (!configFileName) {
3663
4061
  this.error(`No config file for ${scriptInfo.fileName}`);
3664
- return;
4062
+ return null;
3665
4063
  }
3666
4064
  project = this.projectService.findProject(configFileName);
3667
4065
  if (!project) {
3668
- return;
4066
+ return null;
3669
4067
  }
3670
4068
  scriptInfo.detachAllProjects();
3671
4069
  scriptInfo.attachToProject(project);
@@ -3674,6 +4072,8 @@ var require_session = __commonJS({
3674
4072
  return project;
3675
4073
  }
3676
4074
  onInitialize(params) {
4075
+ var _a, _b, _c;
4076
+ this.snippetSupport = (_c = (_b = (_a = params.capabilities.textDocument) === null || _a === void 0 ? void 0 : _a.completion) === null || _b === void 0 ? void 0 : _b.completionItem) === null || _c === void 0 ? void 0 : _c.snippetSupport;
3677
4077
  const serverOptions = {
3678
4078
  logFile: this.logger.getLogFileName()
3679
4079
  };
@@ -3707,7 +4107,7 @@ var require_session = __commonJS({
3707
4107
  onDidOpenTextDocument(params) {
3708
4108
  var _a;
3709
4109
  const { uri, languageId, text } = params.textDocument;
3710
- const filePath = utils_1.uriToFilePath(uri);
4110
+ const filePath = (0, utils_1.uriToFilePath)(uri);
3711
4111
  if (!filePath) {
3712
4112
  return;
3713
4113
  }
@@ -3740,7 +4140,7 @@ var require_session = __commonJS({
3740
4140
  this.closeOrphanedExternalProjects();
3741
4141
  }
3742
4142
  createExternalProject(project) {
3743
- if (utils_1.isConfiguredProject(project) && !this.configuredProjToExternalProj.has(project.projectName)) {
4143
+ if ((0, utils_1.isConfiguredProject)(project) && !this.configuredProjToExternalProj.has(project.projectName)) {
3744
4144
  const extProjectName = `${project.projectName}-external`;
3745
4145
  project.projectService.openExternalProject({
3746
4146
  projectFileName: extProjectName,
@@ -3752,7 +4152,7 @@ var require_session = __commonJS({
3752
4152
  }
3753
4153
  onDidCloseTextDocument(params) {
3754
4154
  const { textDocument } = params;
3755
- const filePath = utils_1.uriToFilePath(textDocument.uri);
4155
+ const filePath = (0, utils_1.uriToFilePath)(textDocument.uri);
3756
4156
  if (!filePath) {
3757
4157
  return;
3758
4158
  }
@@ -3779,7 +4179,7 @@ var require_session = __commonJS({
3779
4179
  }
3780
4180
  onDidChangeTextDocument(params) {
3781
4181
  const { contentChanges, textDocument } = params;
3782
- const filePath = utils_1.uriToFilePath(textDocument.uri);
4182
+ const filePath = (0, utils_1.uriToFilePath)(textDocument.uri);
3783
4183
  if (!filePath) {
3784
4184
  return;
3785
4185
  }
@@ -3791,7 +4191,7 @@ var require_session = __commonJS({
3791
4191
  }
3792
4192
  for (const change of contentChanges) {
3793
4193
  if ("range" in change) {
3794
- const [start, end] = utils_1.lspRangeToTsPositions(scriptInfo, change.range);
4194
+ const [start, end] = (0, utils_1.lspRangeToTsPositions)(scriptInfo, change.range);
3795
4195
  scriptInfo.editContent(start, end, change.text);
3796
4196
  } else {
3797
4197
  scriptInfo.editContent(0, scriptInfo.getSnapshot().getLength(), change.text);
@@ -3805,7 +4205,7 @@ var require_session = __commonJS({
3805
4205
  }
3806
4206
  onDidSaveTextDocument(params) {
3807
4207
  const { text, textDocument } = params;
3808
- const filePath = utils_1.uriToFilePath(textDocument.uri);
4208
+ const filePath = (0, utils_1.uriToFilePath)(textDocument.uri);
3809
4209
  if (!filePath) {
3810
4210
  return;
3811
4211
  }
@@ -3823,47 +4223,47 @@ var require_session = __commonJS({
3823
4223
  onDefinition(params) {
3824
4224
  const lsInfo = this.getLSAndScriptInfo(params.textDocument);
3825
4225
  if (lsInfo === null) {
3826
- return;
4226
+ return null;
3827
4227
  }
3828
4228
  const { languageService, scriptInfo } = lsInfo;
3829
- const offset = utils_1.lspPositionToTsPosition(scriptInfo, params.position);
4229
+ const offset = (0, utils_1.lspPositionToTsPosition)(scriptInfo, params.position);
3830
4230
  const definition = languageService.getDefinitionAndBoundSpan(scriptInfo.fileName, offset);
3831
4231
  if (!definition || !definition.definitions) {
3832
- return;
4232
+ return null;
3833
4233
  }
3834
- const originSelectionRange = utils_1.tsTextSpanToLspRange(scriptInfo, definition.textSpan);
4234
+ const originSelectionRange = (0, utils_1.tsTextSpanToLspRange)(scriptInfo, definition.textSpan);
3835
4235
  return this.tsDefinitionsToLspLocationLinks(definition.definitions, originSelectionRange);
3836
4236
  }
3837
4237
  onTypeDefinition(params) {
3838
4238
  const lsInfo = this.getLSAndScriptInfo(params.textDocument);
3839
4239
  if (lsInfo === null) {
3840
- return;
4240
+ return null;
3841
4241
  }
3842
4242
  const { languageService, scriptInfo } = lsInfo;
3843
- const offset = utils_1.lspPositionToTsPosition(scriptInfo, params.position);
4243
+ const offset = (0, utils_1.lspPositionToTsPosition)(scriptInfo, params.position);
3844
4244
  const definitions = languageService.getTypeDefinitionAtPosition(scriptInfo.fileName, offset);
3845
4245
  if (!definitions) {
3846
- return;
4246
+ return null;
3847
4247
  }
3848
4248
  return this.tsDefinitionsToLspLocationLinks(definitions);
3849
4249
  }
3850
4250
  onRenameRequest(params) {
3851
4251
  const lsInfo = this.getLSAndScriptInfo(params.textDocument);
3852
4252
  if (lsInfo === null) {
3853
- return;
4253
+ return null;
3854
4254
  }
3855
4255
  const { languageService, scriptInfo } = lsInfo;
3856
4256
  const project = this.getDefaultProjectForScriptInfo(scriptInfo);
3857
- if (project === void 0 || this.renameDisabledProjects.has(project)) {
3858
- return;
4257
+ if (project === null || this.renameDisabledProjects.has(project)) {
4258
+ return null;
3859
4259
  }
3860
- const offset = utils_1.lspPositionToTsPosition(scriptInfo, params.position);
4260
+ const offset = (0, utils_1.lspPositionToTsPosition)(scriptInfo, params.position);
3861
4261
  const renameLocations = languageService.findRenameLocations(scriptInfo.fileName, offset, false, false);
3862
4262
  if (renameLocations === void 0) {
3863
- return;
4263
+ return null;
3864
4264
  }
3865
4265
  const changes = renameLocations.reduce((changes2, location) => {
3866
- let uri = utils_1.filePathToUri(location.fileName);
4266
+ let uri = (0, utils_1.filePathToUri)(location.fileName);
3867
4267
  if (changes2[uri] === void 0) {
3868
4268
  changes2[uri] = [];
3869
4269
  }
@@ -3872,7 +4272,7 @@ var require_session = __commonJS({
3872
4272
  if (lsInfo2 === null) {
3873
4273
  return changes2;
3874
4274
  }
3875
- const range = utils_1.tsTextSpanToLspRange(lsInfo2.scriptInfo, location.textSpan);
4275
+ const range = (0, utils_1.tsTextSpanToLspRange)(lsInfo2.scriptInfo, location.textSpan);
3876
4276
  fileEdits.push({ range, newText: params.newName });
3877
4277
  return changes2;
3878
4278
  }, {});
@@ -3885,15 +4285,15 @@ var require_session = __commonJS({
3885
4285
  }
3886
4286
  const { languageService, scriptInfo } = lsInfo;
3887
4287
  const project = this.getDefaultProjectForScriptInfo(scriptInfo);
3888
- if (project === void 0 || this.renameDisabledProjects.has(project)) {
4288
+ if (project === null || this.renameDisabledProjects.has(project)) {
3889
4289
  return null;
3890
4290
  }
3891
- const offset = utils_1.lspPositionToTsPosition(scriptInfo, params.position);
4291
+ const offset = (0, utils_1.lspPositionToTsPosition)(scriptInfo, params.position);
3892
4292
  const renameInfo = languageService.getRenameInfo(scriptInfo.fileName, offset);
3893
4293
  if (!renameInfo.canRename) {
3894
4294
  return null;
3895
4295
  }
3896
- const range = utils_1.tsTextSpanToLspRange(scriptInfo, renameInfo.triggerSpan);
4296
+ const range = (0, utils_1.tsTextSpanToLspRange)(scriptInfo, renameInfo.triggerSpan);
3897
4297
  return {
3898
4298
  range,
3899
4299
  placeholder: renameInfo.displayName
@@ -3902,18 +4302,18 @@ var require_session = __commonJS({
3902
4302
  onReferences(params) {
3903
4303
  const lsInfo = this.getLSAndScriptInfo(params.textDocument);
3904
4304
  if (lsInfo === null) {
3905
- return;
4305
+ return null;
3906
4306
  }
3907
4307
  const { languageService, scriptInfo } = lsInfo;
3908
- const offset = utils_1.lspPositionToTsPosition(scriptInfo, params.position);
4308
+ const offset = (0, utils_1.lspPositionToTsPosition)(scriptInfo, params.position);
3909
4309
  const references = languageService.getReferencesAtPosition(scriptInfo.fileName, offset);
3910
4310
  if (references === void 0) {
3911
- return;
4311
+ return null;
3912
4312
  }
3913
4313
  return references.map((ref) => {
3914
4314
  const scriptInfo2 = this.projectService.getScriptInfo(ref.fileName);
3915
- const range = scriptInfo2 ? utils_1.tsTextSpanToLspRange(scriptInfo2, ref.textSpan) : EMPTY_RANGE;
3916
- const uri = utils_1.filePathToUri(ref.fileName);
4315
+ const range = scriptInfo2 ? (0, utils_1.tsTextSpanToLspRange)(scriptInfo2, ref.textSpan) : EMPTY_RANGE;
4316
+ const uri = (0, utils_1.filePathToUri)(ref.fileName);
3917
4317
  return { uri, range };
3918
4318
  });
3919
4319
  }
@@ -3924,8 +4324,8 @@ var require_session = __commonJS({
3924
4324
  if (!scriptInfo && d.textSpan.length > 0) {
3925
4325
  continue;
3926
4326
  }
3927
- const range = scriptInfo ? utils_1.tsTextSpanToLspRange(scriptInfo, d.textSpan) : EMPTY_RANGE;
3928
- const targetUri = utils_1.filePathToUri(d.fileName);
4327
+ const range = scriptInfo ? (0, utils_1.tsTextSpanToLspRange)(scriptInfo, d.textSpan) : EMPTY_RANGE;
4328
+ const targetUri = (0, utils_1.filePathToUri)(d.fileName);
3929
4329
  results.push({
3930
4330
  originSelectionRange,
3931
4331
  targetUri,
@@ -3936,7 +4336,7 @@ var require_session = __commonJS({
3936
4336
  return results;
3937
4337
  }
3938
4338
  getLSAndScriptInfo(textDocumentOrFileName) {
3939
- const filePath = lsp.TextDocumentIdentifier.is(textDocumentOrFileName) ? utils_1.uriToFilePath(textDocumentOrFileName.uri) : textDocumentOrFileName;
4339
+ const filePath = lsp.TextDocumentIdentifier.is(textDocumentOrFileName) ? (0, utils_1.uriToFilePath)(textDocumentOrFileName.uri) : textDocumentOrFileName;
3940
4340
  const scriptInfo = this.projectService.getScriptInfo(filePath);
3941
4341
  if (!scriptInfo) {
3942
4342
  this.error(`Script info not found for ${filePath}`);
@@ -3952,7 +4352,7 @@ var require_session = __commonJS({
3952
4352
  return null;
3953
4353
  }
3954
4354
  const languageService = project.getLanguageService();
3955
- if (!api_1.isNgLanguageService(languageService)) {
4355
+ if (!(0, api_1.isNgLanguageService)(languageService)) {
3956
4356
  return null;
3957
4357
  }
3958
4358
  return {
@@ -3963,13 +4363,13 @@ var require_session = __commonJS({
3963
4363
  onHover(params) {
3964
4364
  const lsInfo = this.getLSAndScriptInfo(params.textDocument);
3965
4365
  if (lsInfo === null) {
3966
- return;
4366
+ return null;
3967
4367
  }
3968
4368
  const { languageService, scriptInfo } = lsInfo;
3969
- const offset = utils_1.lspPositionToTsPosition(scriptInfo, params.position);
4369
+ const offset = (0, utils_1.lspPositionToTsPosition)(scriptInfo, params.position);
3970
4370
  const info = languageService.getQuickInfoAtPosition(scriptInfo.fileName, offset);
3971
4371
  if (!info) {
3972
- return;
4372
+ return null;
3973
4373
  }
3974
4374
  const { kind, kindModifiers, textSpan, displayParts, documentation } = info;
3975
4375
  let desc = kindModifiers ? kindModifiers + " " : "";
@@ -3989,27 +4389,36 @@ var require_session = __commonJS({
3989
4389
  }
3990
4390
  return {
3991
4391
  contents,
3992
- range: utils_1.tsTextSpanToLspRange(scriptInfo, textSpan)
4392
+ range: (0, utils_1.tsTextSpanToLspRange)(scriptInfo, textSpan)
3993
4393
  };
3994
4394
  }
3995
4395
  onCompletion(params) {
3996
4396
  var _a, _b, _c, _d;
3997
4397
  const lsInfo = this.getLSAndScriptInfo(params.textDocument);
3998
4398
  if (lsInfo === null) {
3999
- return;
4399
+ return null;
4000
4400
  }
4001
4401
  const { languageService, scriptInfo } = lsInfo;
4002
- const offset = utils_1.lspPositionToTsPosition(scriptInfo, params.position);
4003
- const completions = languageService.getCompletionsAtPosition(scriptInfo.fileName, offset, {});
4402
+ const offset = (0, utils_1.lspPositionToTsPosition)(scriptInfo, params.position);
4403
+ let options = {};
4404
+ const includeCompletionsWithSnippetText = this.includeCompletionsWithSnippetText && this.snippetSupport;
4405
+ if (this.includeAutomaticOptionalChainCompletions || includeCompletionsWithSnippetText) {
4406
+ options = {
4407
+ includeAutomaticOptionalChainCompletions: this.includeAutomaticOptionalChainCompletions,
4408
+ includeCompletionsWithSnippetText,
4409
+ includeCompletionsWithInsertText: this.includeAutomaticOptionalChainCompletions || includeCompletionsWithSnippetText
4410
+ };
4411
+ }
4412
+ const completions = languageService.getCompletionsAtPosition(scriptInfo.fileName, offset, options);
4004
4413
  if (!completions) {
4005
- return;
4414
+ return null;
4006
4415
  }
4007
4416
  const clientSupportsInsertReplaceCompletion = (_d = (_c = (_b = (_a = this.clientCapabilities.textDocument) === null || _a === void 0 ? void 0 : _a.completion) === null || _b === void 0 ? void 0 : _b.completionItem) === null || _c === void 0 ? void 0 : _c.insertReplaceSupport) !== null && _d !== void 0 ? _d : false;
4008
- return completions.entries.map((e) => completion_1.tsCompletionEntryToLspCompletionItem(e, params.position, scriptInfo, clientSupportsInsertReplaceCompletion));
4417
+ return completions.entries.map((e) => (0, completion_1.tsCompletionEntryToLspCompletionItem)(e, params.position, scriptInfo, clientSupportsInsertReplaceCompletion, this.ivy));
4009
4418
  }
4010
4419
  onCompletionResolve(item) {
4011
4420
  var _a;
4012
- const data = completion_1.readNgCompletionData(item);
4421
+ const data = (0, completion_1.readNgCompletionData)(item);
4013
4422
  if (data === null) {
4014
4423
  return item;
4015
4424
  }
@@ -4019,7 +4428,7 @@ var require_session = __commonJS({
4019
4428
  return item;
4020
4429
  }
4021
4430
  const { languageService, scriptInfo } = lsInfo;
4022
- const offset = utils_1.lspPositionToTsPosition(scriptInfo, position);
4431
+ const offset = (0, utils_1.lspPositionToTsPosition)(scriptInfo, position);
4023
4432
  const details = languageService.getCompletionEntryDetails(filePath, offset, (_a = item.insertText) !== null && _a !== void 0 ? _a : item.label, void 0, void 0, void 0, void 0);
4024
4433
  if (details === void 0) {
4025
4434
  return item;
@@ -4072,7 +4481,7 @@ var require_session = __commonJS({
4072
4481
  return angularCore !== null && angularCore !== void 0 ? angularCore : null;
4073
4482
  }
4074
4483
  async runNgcc(project) {
4075
- if (!utils_1.isConfiguredProject(project)) {
4484
+ if (!(0, utils_1.isConfiguredProject)(project)) {
4076
4485
  return;
4077
4486
  }
4078
4487
  this.disableLanguageServiceForProject(project, "ngcc is running");
@@ -4085,7 +4494,7 @@ var require_session = __commonJS({
4085
4494
  let success = false;
4086
4495
  try {
4087
4496
  this.projectNgccQueue.push({ project, done: false });
4088
- await ngcc_1.resolveAndRunNgcc(configFilePath, {
4497
+ await (0, ngcc_1.resolveAndRunNgcc)(configFilePath, {
4089
4498
  report: (msg) => {
4090
4499
  this.connection.sendProgress(progress_1.NgccProgressType, progress_1.NgccProgressToken, {
4091
4500
  done: false,
@@ -4150,17 +4559,17 @@ var server_host_1 = require_server_host();
4150
4559
  var session_1 = require_session();
4151
4560
  var version_provider_1 = require_version_provider();
4152
4561
  function main() {
4153
- const options = cmdline_utils_1.parseCommandLine(process.argv);
4562
+ const options = (0, cmdline_utils_1.parseCommandLine)(process.argv);
4154
4563
  if (options.help) {
4155
- console.error(cmdline_utils_1.generateHelpMessage(process.argv));
4564
+ console.error((0, cmdline_utils_1.generateHelpMessage)(process.argv));
4156
4565
  process.exit(0);
4157
4566
  }
4158
- const logger = logger_1.createLogger({
4567
+ const logger = (0, logger_1.createLogger)({
4159
4568
  logFile: options.logFile,
4160
4569
  logVerbosity: options.logVerbosity
4161
4570
  });
4162
- const ts = version_provider_1.resolveTsServer(options.tsProbeLocations);
4163
- const ng = version_provider_1.resolveNgLangSvc(options.ngProbeLocations);
4571
+ const ts = (0, version_provider_1.resolveTsServer)(options.tsProbeLocations);
4572
+ const ng = (0, version_provider_1.resolveNgLangSvc)(options.ngProbeLocations);
4164
4573
  const isG3 = ts.resolvedPath.includes("/google3/");
4165
4574
  const host = new server_host_1.ServerHost(isG3);
4166
4575
  const session = new session_1.Session({
@@ -4169,7 +4578,9 @@ function main() {
4169
4578
  ngPlugin: "@angular/language-service",
4170
4579
  resolvedNgLsPath: ng.resolvedPath,
4171
4580
  ivy: isG3 ? true : options.ivy,
4172
- logToConsole: options.logToConsole
4581
+ logToConsole: options.logToConsole,
4582
+ includeAutomaticOptionalChainCompletions: options.includeAutomaticOptionalChainCompletions,
4583
+ includeCompletionsWithSnippetText: options.includeCompletionsWithSnippetText
4173
4584
  });
4174
4585
  session.info(`Angular language server process ID: ${process.pid}`);
4175
4586
  session.info(`Using ${ts.name} v${ts.version} from ${ts.resolvedPath}`);
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@angular/language-server",
3
3
  "description": "LSP server for Angular Language Service",
4
- "version": "12.2.1",
4
+ "version": "13.1.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "https://github.com/angular/vscode-ng-language-service.git"
@@ -15,7 +15,7 @@
15
15
  "ngserver": "./bin/ngserver"
16
16
  },
17
17
  "dependencies": {
18
- "@angular/language-service": "12.2.9",
18
+ "@angular/language-service": "13.1.0",
19
19
  "vscode-jsonrpc": "6.0.0",
20
20
  "vscode-languageserver": "7.0.0",
21
21
  "vscode-uri": "3.0.2"