typescript 4.6.0-dev.20211103 → 4.6.0-dev.20211104

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.
package/lib/tsc.js CHANGED
@@ -69,7 +69,7 @@ var __generator = (this && this.__generator) || function (thisArg, body) {
69
69
  var ts;
70
70
  (function (ts) {
71
71
  ts.versionMajorMinor = "4.6";
72
- ts.version = ts.versionMajorMinor + ".0-dev.20211103";
72
+ ts.version = ts.versionMajorMinor + ".0-dev.20211104";
73
73
  var NativeCollections;
74
74
  (function (NativeCollections) {
75
75
  function tryGetNativeMap() {
@@ -55016,7 +55016,8 @@ var ts;
55016
55016
  (resolveName(param, param.name.escapedText, 788968, undefined, param.name.escapedText, true) ||
55017
55017
  param.name.originalKeywordKind && ts.isTypeNodeKind(param.name.originalKeywordKind))) {
55018
55018
  var newName = "arg" + param.parent.parameters.indexOf(param);
55019
- errorOrSuggestion(noImplicitAny, declaration, ts.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, ts.declarationNameToString(param.name));
55019
+ var typeName = ts.declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : "");
55020
+ errorOrSuggestion(noImplicitAny, declaration, ts.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName);
55020
55021
  return;
55021
55022
  }
55022
55023
  diagnostic = declaration.dotDotDotToken ?
@@ -98679,13 +98680,15 @@ var ts;
98679
98680
  var moduleFileToTry = path;
98680
98681
  if (host.fileExists(packageJsonPath)) {
98681
98682
  var packageJsonContent = JSON.parse(host.readFile(packageJsonPath));
98682
- var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string" ? tryGetModuleNameFromExports(options, path, packageRootPath, packageJsonContent.name, packageJsonContent.exports, ["node", "types"]) : undefined;
98683
- if (fromExports) {
98684
- var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry) ? fromExports : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
98685
- return __assign(__assign({}, withJsExtension), { verbatimFromExports: true });
98686
- }
98687
- if (packageJsonContent.exports) {
98688
- return { moduleFileToTry: path, blockedByExports: true };
98683
+ if (ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.Node12 || ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.NodeNext) {
98684
+ var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string" ? tryGetModuleNameFromExports(options, path, packageRootPath, packageJsonContent.name, packageJsonContent.exports, ["node", "types"]) : undefined;
98685
+ if (fromExports) {
98686
+ var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry) ? fromExports : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
98687
+ return __assign(__assign({}, withJsExtension), { verbatimFromExports: true });
98688
+ }
98689
+ if (packageJsonContent.exports) {
98690
+ return { moduleFileToTry: path, blockedByExports: true };
98691
+ }
98689
98692
  }
98690
98693
  var versionPaths = packageJsonContent.typesVersions
98691
98694
  ? ts.getPackageJsonTypesVersionsPaths(packageJsonContent.typesVersions)
package/lib/tsserver.js CHANGED
@@ -100,7 +100,7 @@ var ts;
100
100
  // The following is baselined as a literal template type without intervention
101
101
  /** The version of the TypeScript compiler release */
102
102
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
103
- ts.version = ts.versionMajorMinor + ".0-dev.20211103";
103
+ ts.version = ts.versionMajorMinor + ".0-dev.20211104";
104
104
  /* @internal */
105
105
  var Comparison;
106
106
  (function (Comparison) {
@@ -66007,7 +66007,8 @@ var ts;
66007
66007
  (resolveName(param, param.name.escapedText, 788968 /* Type */, undefined, param.name.escapedText, /*isUse*/ true) ||
66008
66008
  param.name.originalKeywordKind && ts.isTypeNodeKind(param.name.originalKeywordKind))) {
66009
66009
  var newName = "arg" + param.parent.parameters.indexOf(param);
66010
- errorOrSuggestion(noImplicitAny, declaration, ts.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, ts.declarationNameToString(param.name));
66010
+ var typeName = ts.declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : "");
66011
+ errorOrSuggestion(noImplicitAny, declaration, ts.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName);
66011
66012
  return;
66012
66013
  }
66013
66014
  diagnostic = declaration.dotDotDotToken ?
@@ -119447,13 +119448,15 @@ var ts;
119447
119448
  if (host.fileExists(packageJsonPath)) {
119448
119449
  var packageJsonContent = JSON.parse(host.readFile(packageJsonPath));
119449
119450
  // TODO: Inject `require` or `import` condition based on the intended import mode
119450
- var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string" ? tryGetModuleNameFromExports(options, path, packageRootPath, packageJsonContent.name, packageJsonContent.exports, ["node", "types"]) : undefined;
119451
- if (fromExports) {
119452
- var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry) ? fromExports : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
119453
- return __assign(__assign({}, withJsExtension), { verbatimFromExports: true });
119454
- }
119455
- if (packageJsonContent.exports) {
119456
- return { moduleFileToTry: path, blockedByExports: true };
119451
+ if (ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.Node12 || ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.NodeNext) {
119452
+ var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string" ? tryGetModuleNameFromExports(options, path, packageRootPath, packageJsonContent.name, packageJsonContent.exports, ["node", "types"]) : undefined;
119453
+ if (fromExports) {
119454
+ var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry) ? fromExports : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
119455
+ return __assign(__assign({}, withJsExtension), { verbatimFromExports: true });
119456
+ }
119457
+ if (packageJsonContent.exports) {
119458
+ return { moduleFileToTry: path, blockedByExports: true };
119459
+ }
119457
119460
  }
119458
119461
  var versionPaths = packageJsonContent.typesVersions
119459
119462
  ? ts.getPackageJsonTypesVersionsPaths(packageJsonContent.typesVersions)
@@ -128841,7 +128844,7 @@ var ts;
128841
128844
  }
128842
128845
  node = ts.factory.updateModifiers(node, modifiers & (~presentModifiers));
128843
128846
  completionNodes.push(node);
128844
- }, body, isAbstract);
128847
+ }, body, 2 /* Property */, isAbstract);
128845
128848
  if (completionNodes.length) {
128846
128849
  insertText = printer.printSnippetList(1 /* MultiLine */, ts.factory.createNodeArray(completionNodes), sourceFile);
128847
128850
  }
@@ -146208,9 +146211,6 @@ var ts;
146208
146211
  });
146209
146212
  function makeChange(changeTracker, sourceFile, pos) {
146210
146213
  var token = ts.getTokenAtPosition(sourceFile, pos);
146211
- if (!ts.isIdentifier(token)) {
146212
- return ts.Debug.fail("add-name-to-nameless-parameter operates on identifiers, but got a " + ts.Debug.formatSyntaxKind(token.kind));
146213
- }
146214
146214
  var param = token.parent;
146215
146215
  if (!ts.isParameter(param)) {
146216
146216
  return ts.Debug.fail("Tried to add a parameter name to a non-parameter: " + ts.Debug.formatSyntaxKind(token.kind));
@@ -146218,9 +146218,10 @@ var ts;
146218
146218
  var i = param.parent.parameters.indexOf(param);
146219
146219
  ts.Debug.assert(!param.type, "Tried to add a parameter name to a parameter that already had one.");
146220
146220
  ts.Debug.assert(i > -1, "Parameter not found in parent parameter list.");
146221
+ var typeNode = ts.factory.createTypeReferenceNode(param.name, /*typeArguments*/ undefined);
146221
146222
  var replacement = ts.factory.createParameterDeclaration(
146222
- /*decorators*/ undefined, param.modifiers, param.dotDotDotToken, "arg" + i, param.questionToken, ts.factory.createTypeReferenceNode(token, /*typeArguments*/ undefined), param.initializer);
146223
- changeTracker.replaceNode(sourceFile, token, replacement);
146223
+ /*decorators*/ undefined, param.modifiers, param.dotDotDotToken, "arg" + i, param.questionToken, param.dotDotDotToken ? ts.factory.createArrayTypeNode(typeNode) : typeNode, param.initializer);
146224
+ changeTracker.replaceNode(sourceFile, param, replacement);
146224
146225
  }
146225
146226
  })(codefix = ts.codefix || (ts.codefix = {}));
146226
146227
  })(ts || (ts = {}));
@@ -152674,11 +152675,18 @@ var ts;
152674
152675
  };
152675
152676
  }
152676
152677
  codefix.getNoopSymbolTrackerWithResolver = getNoopSymbolTrackerWithResolver;
152678
+ var PreserveOptionalFlags;
152679
+ (function (PreserveOptionalFlags) {
152680
+ PreserveOptionalFlags[PreserveOptionalFlags["Method"] = 1] = "Method";
152681
+ PreserveOptionalFlags[PreserveOptionalFlags["Property"] = 2] = "Property";
152682
+ PreserveOptionalFlags[PreserveOptionalFlags["All"] = 3] = "All";
152683
+ })(PreserveOptionalFlags = codefix.PreserveOptionalFlags || (codefix.PreserveOptionalFlags = {}));
152677
152684
  /**
152678
152685
  * `addClassElement` will not be called if we can't figure out a representation for `symbol` in `enclosingDeclaration`.
152679
152686
  * @param body If defined, this will be the body of the member node passed to `addClassElement`. Otherwise, the body will default to a stub.
152680
152687
  */
152681
- function addNewNodeForMemberSymbol(symbol, enclosingDeclaration, sourceFile, context, preferences, importAdder, addClassElement, body, isAmbient) {
152688
+ function addNewNodeForMemberSymbol(symbol, enclosingDeclaration, sourceFile, context, preferences, importAdder, addClassElement, body, preserveOptional, isAmbient) {
152689
+ if (preserveOptional === void 0) { preserveOptional = 3 /* All */; }
152682
152690
  if (isAmbient === void 0) { isAmbient = false; }
152683
152691
  var declarations = symbol.getDeclarations();
152684
152692
  if (!(declarations && declarations.length)) {
@@ -152707,7 +152715,7 @@ var ts;
152707
152715
  }
152708
152716
  }
152709
152717
  addClassElement(ts.factory.createPropertyDeclaration(
152710
- /*decorators*/ undefined, modifiers, name, optional ? ts.factory.createToken(57 /* QuestionToken */) : undefined, typeNode,
152718
+ /*decorators*/ undefined, modifiers, name, optional && (preserveOptional & 2 /* Property */) ? ts.factory.createToken(57 /* QuestionToken */) : undefined, typeNode,
152711
152719
  /*initializer*/ undefined));
152712
152720
  break;
152713
152721
  case 171 /* GetAccessor */:
@@ -152771,13 +152779,13 @@ var ts;
152771
152779
  }
152772
152780
  else {
152773
152781
  ts.Debug.assert(declarations.length === signatures.length, "Declarations and signatures should match count");
152774
- addClassElement(createMethodImplementingSignatures(checker, context, enclosingDeclaration, signatures, name, optional, modifiers, quotePreference, body));
152782
+ addClassElement(createMethodImplementingSignatures(checker, context, enclosingDeclaration, signatures, name, optional && !!(preserveOptional & 1 /* Method */), modifiers, quotePreference, body));
152775
152783
  }
152776
152784
  }
152777
152785
  break;
152778
152786
  }
152779
152787
  function outputMethod(quotePreference, signature, modifiers, name, body) {
152780
- var method = createSignatureDeclarationFromSignature(168 /* MethodDeclaration */, context, quotePreference, signature, body, name, modifiers, optional, enclosingDeclaration, importAdder);
152788
+ var method = createSignatureDeclarationFromSignature(168 /* MethodDeclaration */, context, quotePreference, signature, body, name, modifiers, optional && !!(preserveOptional & 1 /* Method */), enclosingDeclaration, importAdder);
152781
152789
  if (method)
152782
152790
  addClassElement(method);
152783
152791
  }
@@ -294,7 +294,7 @@ var ts;
294
294
  // The following is baselined as a literal template type without intervention
295
295
  /** The version of the TypeScript compiler release */
296
296
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
297
- ts.version = ts.versionMajorMinor + ".0-dev.20211103";
297
+ ts.version = ts.versionMajorMinor + ".0-dev.20211104";
298
298
  /* @internal */
299
299
  var Comparison;
300
300
  (function (Comparison) {
@@ -66201,7 +66201,8 @@ var ts;
66201
66201
  (resolveName(param, param.name.escapedText, 788968 /* Type */, undefined, param.name.escapedText, /*isUse*/ true) ||
66202
66202
  param.name.originalKeywordKind && ts.isTypeNodeKind(param.name.originalKeywordKind))) {
66203
66203
  var newName = "arg" + param.parent.parameters.indexOf(param);
66204
- errorOrSuggestion(noImplicitAny, declaration, ts.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, ts.declarationNameToString(param.name));
66204
+ var typeName = ts.declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : "");
66205
+ errorOrSuggestion(noImplicitAny, declaration, ts.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName);
66205
66206
  return;
66206
66207
  }
66207
66208
  diagnostic = declaration.dotDotDotToken ?
@@ -119641,13 +119642,15 @@ var ts;
119641
119642
  if (host.fileExists(packageJsonPath)) {
119642
119643
  var packageJsonContent = JSON.parse(host.readFile(packageJsonPath));
119643
119644
  // TODO: Inject `require` or `import` condition based on the intended import mode
119644
- var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string" ? tryGetModuleNameFromExports(options, path, packageRootPath, packageJsonContent.name, packageJsonContent.exports, ["node", "types"]) : undefined;
119645
- if (fromExports) {
119646
- var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry) ? fromExports : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
119647
- return __assign(__assign({}, withJsExtension), { verbatimFromExports: true });
119648
- }
119649
- if (packageJsonContent.exports) {
119650
- return { moduleFileToTry: path, blockedByExports: true };
119645
+ if (ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.Node12 || ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.NodeNext) {
119646
+ var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string" ? tryGetModuleNameFromExports(options, path, packageRootPath, packageJsonContent.name, packageJsonContent.exports, ["node", "types"]) : undefined;
119647
+ if (fromExports) {
119648
+ var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry) ? fromExports : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
119649
+ return __assign(__assign({}, withJsExtension), { verbatimFromExports: true });
119650
+ }
119651
+ if (packageJsonContent.exports) {
119652
+ return { moduleFileToTry: path, blockedByExports: true };
119653
+ }
119651
119654
  }
119652
119655
  var versionPaths = packageJsonContent.typesVersions
119653
119656
  ? ts.getPackageJsonTypesVersionsPaths(packageJsonContent.typesVersions)
@@ -129423,7 +129426,7 @@ var ts;
129423
129426
  }
129424
129427
  node = ts.factory.updateModifiers(node, modifiers & (~presentModifiers));
129425
129428
  completionNodes.push(node);
129426
- }, body, isAbstract);
129429
+ }, body, 2 /* Property */, isAbstract);
129427
129430
  if (completionNodes.length) {
129428
129431
  insertText = printer.printSnippetList(1 /* MultiLine */, ts.factory.createNodeArray(completionNodes), sourceFile);
129429
129432
  }
@@ -146790,9 +146793,6 @@ var ts;
146790
146793
  });
146791
146794
  function makeChange(changeTracker, sourceFile, pos) {
146792
146795
  var token = ts.getTokenAtPosition(sourceFile, pos);
146793
- if (!ts.isIdentifier(token)) {
146794
- return ts.Debug.fail("add-name-to-nameless-parameter operates on identifiers, but got a " + ts.Debug.formatSyntaxKind(token.kind));
146795
- }
146796
146796
  var param = token.parent;
146797
146797
  if (!ts.isParameter(param)) {
146798
146798
  return ts.Debug.fail("Tried to add a parameter name to a non-parameter: " + ts.Debug.formatSyntaxKind(token.kind));
@@ -146800,9 +146800,10 @@ var ts;
146800
146800
  var i = param.parent.parameters.indexOf(param);
146801
146801
  ts.Debug.assert(!param.type, "Tried to add a parameter name to a parameter that already had one.");
146802
146802
  ts.Debug.assert(i > -1, "Parameter not found in parent parameter list.");
146803
+ var typeNode = ts.factory.createTypeReferenceNode(param.name, /*typeArguments*/ undefined);
146803
146804
  var replacement = ts.factory.createParameterDeclaration(
146804
- /*decorators*/ undefined, param.modifiers, param.dotDotDotToken, "arg" + i, param.questionToken, ts.factory.createTypeReferenceNode(token, /*typeArguments*/ undefined), param.initializer);
146805
- changeTracker.replaceNode(sourceFile, token, replacement);
146805
+ /*decorators*/ undefined, param.modifiers, param.dotDotDotToken, "arg" + i, param.questionToken, param.dotDotDotToken ? ts.factory.createArrayTypeNode(typeNode) : typeNode, param.initializer);
146806
+ changeTracker.replaceNode(sourceFile, param, replacement);
146806
146807
  }
146807
146808
  })(codefix = ts.codefix || (ts.codefix = {}));
146808
146809
  })(ts || (ts = {}));
@@ -153256,11 +153257,18 @@ var ts;
153256
153257
  };
153257
153258
  }
153258
153259
  codefix.getNoopSymbolTrackerWithResolver = getNoopSymbolTrackerWithResolver;
153260
+ var PreserveOptionalFlags;
153261
+ (function (PreserveOptionalFlags) {
153262
+ PreserveOptionalFlags[PreserveOptionalFlags["Method"] = 1] = "Method";
153263
+ PreserveOptionalFlags[PreserveOptionalFlags["Property"] = 2] = "Property";
153264
+ PreserveOptionalFlags[PreserveOptionalFlags["All"] = 3] = "All";
153265
+ })(PreserveOptionalFlags = codefix.PreserveOptionalFlags || (codefix.PreserveOptionalFlags = {}));
153259
153266
  /**
153260
153267
  * `addClassElement` will not be called if we can't figure out a representation for `symbol` in `enclosingDeclaration`.
153261
153268
  * @param body If defined, this will be the body of the member node passed to `addClassElement`. Otherwise, the body will default to a stub.
153262
153269
  */
153263
- function addNewNodeForMemberSymbol(symbol, enclosingDeclaration, sourceFile, context, preferences, importAdder, addClassElement, body, isAmbient) {
153270
+ function addNewNodeForMemberSymbol(symbol, enclosingDeclaration, sourceFile, context, preferences, importAdder, addClassElement, body, preserveOptional, isAmbient) {
153271
+ if (preserveOptional === void 0) { preserveOptional = 3 /* All */; }
153264
153272
  if (isAmbient === void 0) { isAmbient = false; }
153265
153273
  var declarations = symbol.getDeclarations();
153266
153274
  if (!(declarations && declarations.length)) {
@@ -153289,7 +153297,7 @@ var ts;
153289
153297
  }
153290
153298
  }
153291
153299
  addClassElement(ts.factory.createPropertyDeclaration(
153292
- /*decorators*/ undefined, modifiers, name, optional ? ts.factory.createToken(57 /* QuestionToken */) : undefined, typeNode,
153300
+ /*decorators*/ undefined, modifiers, name, optional && (preserveOptional & 2 /* Property */) ? ts.factory.createToken(57 /* QuestionToken */) : undefined, typeNode,
153293
153301
  /*initializer*/ undefined));
153294
153302
  break;
153295
153303
  case 171 /* GetAccessor */:
@@ -153353,13 +153361,13 @@ var ts;
153353
153361
  }
153354
153362
  else {
153355
153363
  ts.Debug.assert(declarations.length === signatures.length, "Declarations and signatures should match count");
153356
- addClassElement(createMethodImplementingSignatures(checker, context, enclosingDeclaration, signatures, name, optional, modifiers, quotePreference, body));
153364
+ addClassElement(createMethodImplementingSignatures(checker, context, enclosingDeclaration, signatures, name, optional && !!(preserveOptional & 1 /* Method */), modifiers, quotePreference, body));
153357
153365
  }
153358
153366
  }
153359
153367
  break;
153360
153368
  }
153361
153369
  function outputMethod(quotePreference, signature, modifiers, name, body) {
153362
- var method = createSignatureDeclarationFromSignature(168 /* MethodDeclaration */, context, quotePreference, signature, body, name, modifiers, optional, enclosingDeclaration, importAdder);
153370
+ var method = createSignatureDeclarationFromSignature(168 /* MethodDeclaration */, context, quotePreference, signature, body, name, modifiers, optional && !!(preserveOptional & 1 /* Method */), enclosingDeclaration, importAdder);
153363
153371
  if (method)
153364
153372
  addClassElement(method);
153365
153373
  }
package/lib/typescript.js CHANGED
@@ -294,7 +294,7 @@ var ts;
294
294
  // The following is baselined as a literal template type without intervention
295
295
  /** The version of the TypeScript compiler release */
296
296
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
297
- ts.version = ts.versionMajorMinor + ".0-dev.20211103";
297
+ ts.version = ts.versionMajorMinor + ".0-dev.20211104";
298
298
  /* @internal */
299
299
  var Comparison;
300
300
  (function (Comparison) {
@@ -66201,7 +66201,8 @@ var ts;
66201
66201
  (resolveName(param, param.name.escapedText, 788968 /* Type */, undefined, param.name.escapedText, /*isUse*/ true) ||
66202
66202
  param.name.originalKeywordKind && ts.isTypeNodeKind(param.name.originalKeywordKind))) {
66203
66203
  var newName = "arg" + param.parent.parameters.indexOf(param);
66204
- errorOrSuggestion(noImplicitAny, declaration, ts.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, ts.declarationNameToString(param.name));
66204
+ var typeName = ts.declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : "");
66205
+ errorOrSuggestion(noImplicitAny, declaration, ts.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName);
66205
66206
  return;
66206
66207
  }
66207
66208
  diagnostic = declaration.dotDotDotToken ?
@@ -119641,13 +119642,15 @@ var ts;
119641
119642
  if (host.fileExists(packageJsonPath)) {
119642
119643
  var packageJsonContent = JSON.parse(host.readFile(packageJsonPath));
119643
119644
  // TODO: Inject `require` or `import` condition based on the intended import mode
119644
- var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string" ? tryGetModuleNameFromExports(options, path, packageRootPath, packageJsonContent.name, packageJsonContent.exports, ["node", "types"]) : undefined;
119645
- if (fromExports) {
119646
- var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry) ? fromExports : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
119647
- return __assign(__assign({}, withJsExtension), { verbatimFromExports: true });
119648
- }
119649
- if (packageJsonContent.exports) {
119650
- return { moduleFileToTry: path, blockedByExports: true };
119645
+ if (ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.Node12 || ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.NodeNext) {
119646
+ var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string" ? tryGetModuleNameFromExports(options, path, packageRootPath, packageJsonContent.name, packageJsonContent.exports, ["node", "types"]) : undefined;
119647
+ if (fromExports) {
119648
+ var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry) ? fromExports : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
119649
+ return __assign(__assign({}, withJsExtension), { verbatimFromExports: true });
119650
+ }
119651
+ if (packageJsonContent.exports) {
119652
+ return { moduleFileToTry: path, blockedByExports: true };
119653
+ }
119651
119654
  }
119652
119655
  var versionPaths = packageJsonContent.typesVersions
119653
119656
  ? ts.getPackageJsonTypesVersionsPaths(packageJsonContent.typesVersions)
@@ -129423,7 +129426,7 @@ var ts;
129423
129426
  }
129424
129427
  node = ts.factory.updateModifiers(node, modifiers & (~presentModifiers));
129425
129428
  completionNodes.push(node);
129426
- }, body, isAbstract);
129429
+ }, body, 2 /* Property */, isAbstract);
129427
129430
  if (completionNodes.length) {
129428
129431
  insertText = printer.printSnippetList(1 /* MultiLine */, ts.factory.createNodeArray(completionNodes), sourceFile);
129429
129432
  }
@@ -146790,9 +146793,6 @@ var ts;
146790
146793
  });
146791
146794
  function makeChange(changeTracker, sourceFile, pos) {
146792
146795
  var token = ts.getTokenAtPosition(sourceFile, pos);
146793
- if (!ts.isIdentifier(token)) {
146794
- return ts.Debug.fail("add-name-to-nameless-parameter operates on identifiers, but got a " + ts.Debug.formatSyntaxKind(token.kind));
146795
- }
146796
146796
  var param = token.parent;
146797
146797
  if (!ts.isParameter(param)) {
146798
146798
  return ts.Debug.fail("Tried to add a parameter name to a non-parameter: " + ts.Debug.formatSyntaxKind(token.kind));
@@ -146800,9 +146800,10 @@ var ts;
146800
146800
  var i = param.parent.parameters.indexOf(param);
146801
146801
  ts.Debug.assert(!param.type, "Tried to add a parameter name to a parameter that already had one.");
146802
146802
  ts.Debug.assert(i > -1, "Parameter not found in parent parameter list.");
146803
+ var typeNode = ts.factory.createTypeReferenceNode(param.name, /*typeArguments*/ undefined);
146803
146804
  var replacement = ts.factory.createParameterDeclaration(
146804
- /*decorators*/ undefined, param.modifiers, param.dotDotDotToken, "arg" + i, param.questionToken, ts.factory.createTypeReferenceNode(token, /*typeArguments*/ undefined), param.initializer);
146805
- changeTracker.replaceNode(sourceFile, token, replacement);
146805
+ /*decorators*/ undefined, param.modifiers, param.dotDotDotToken, "arg" + i, param.questionToken, param.dotDotDotToken ? ts.factory.createArrayTypeNode(typeNode) : typeNode, param.initializer);
146806
+ changeTracker.replaceNode(sourceFile, param, replacement);
146806
146807
  }
146807
146808
  })(codefix = ts.codefix || (ts.codefix = {}));
146808
146809
  })(ts || (ts = {}));
@@ -153256,11 +153257,18 @@ var ts;
153256
153257
  };
153257
153258
  }
153258
153259
  codefix.getNoopSymbolTrackerWithResolver = getNoopSymbolTrackerWithResolver;
153260
+ var PreserveOptionalFlags;
153261
+ (function (PreserveOptionalFlags) {
153262
+ PreserveOptionalFlags[PreserveOptionalFlags["Method"] = 1] = "Method";
153263
+ PreserveOptionalFlags[PreserveOptionalFlags["Property"] = 2] = "Property";
153264
+ PreserveOptionalFlags[PreserveOptionalFlags["All"] = 3] = "All";
153265
+ })(PreserveOptionalFlags = codefix.PreserveOptionalFlags || (codefix.PreserveOptionalFlags = {}));
153259
153266
  /**
153260
153267
  * `addClassElement` will not be called if we can't figure out a representation for `symbol` in `enclosingDeclaration`.
153261
153268
  * @param body If defined, this will be the body of the member node passed to `addClassElement`. Otherwise, the body will default to a stub.
153262
153269
  */
153263
- function addNewNodeForMemberSymbol(symbol, enclosingDeclaration, sourceFile, context, preferences, importAdder, addClassElement, body, isAmbient) {
153270
+ function addNewNodeForMemberSymbol(symbol, enclosingDeclaration, sourceFile, context, preferences, importAdder, addClassElement, body, preserveOptional, isAmbient) {
153271
+ if (preserveOptional === void 0) { preserveOptional = 3 /* All */; }
153264
153272
  if (isAmbient === void 0) { isAmbient = false; }
153265
153273
  var declarations = symbol.getDeclarations();
153266
153274
  if (!(declarations && declarations.length)) {
@@ -153289,7 +153297,7 @@ var ts;
153289
153297
  }
153290
153298
  }
153291
153299
  addClassElement(ts.factory.createPropertyDeclaration(
153292
- /*decorators*/ undefined, modifiers, name, optional ? ts.factory.createToken(57 /* QuestionToken */) : undefined, typeNode,
153300
+ /*decorators*/ undefined, modifiers, name, optional && (preserveOptional & 2 /* Property */) ? ts.factory.createToken(57 /* QuestionToken */) : undefined, typeNode,
153293
153301
  /*initializer*/ undefined));
153294
153302
  break;
153295
153303
  case 171 /* GetAccessor */:
@@ -153353,13 +153361,13 @@ var ts;
153353
153361
  }
153354
153362
  else {
153355
153363
  ts.Debug.assert(declarations.length === signatures.length, "Declarations and signatures should match count");
153356
- addClassElement(createMethodImplementingSignatures(checker, context, enclosingDeclaration, signatures, name, optional, modifiers, quotePreference, body));
153364
+ addClassElement(createMethodImplementingSignatures(checker, context, enclosingDeclaration, signatures, name, optional && !!(preserveOptional & 1 /* Method */), modifiers, quotePreference, body));
153357
153365
  }
153358
153366
  }
153359
153367
  break;
153360
153368
  }
153361
153369
  function outputMethod(quotePreference, signature, modifiers, name, body) {
153362
- var method = createSignatureDeclarationFromSignature(168 /* MethodDeclaration */, context, quotePreference, signature, body, name, modifiers, optional, enclosingDeclaration, importAdder);
153370
+ var method = createSignatureDeclarationFromSignature(168 /* MethodDeclaration */, context, quotePreference, signature, body, name, modifiers, optional && !!(preserveOptional & 1 /* Method */), enclosingDeclaration, importAdder);
153363
153371
  if (method)
153364
153372
  addClassElement(method);
153365
153373
  }
@@ -294,7 +294,7 @@ var ts;
294
294
  // The following is baselined as a literal template type without intervention
295
295
  /** The version of the TypeScript compiler release */
296
296
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
297
- ts.version = ts.versionMajorMinor + ".0-dev.20211103";
297
+ ts.version = ts.versionMajorMinor + ".0-dev.20211104";
298
298
  /* @internal */
299
299
  var Comparison;
300
300
  (function (Comparison) {
@@ -66201,7 +66201,8 @@ var ts;
66201
66201
  (resolveName(param, param.name.escapedText, 788968 /* Type */, undefined, param.name.escapedText, /*isUse*/ true) ||
66202
66202
  param.name.originalKeywordKind && ts.isTypeNodeKind(param.name.originalKeywordKind))) {
66203
66203
  var newName = "arg" + param.parent.parameters.indexOf(param);
66204
- errorOrSuggestion(noImplicitAny, declaration, ts.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, ts.declarationNameToString(param.name));
66204
+ var typeName = ts.declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : "");
66205
+ errorOrSuggestion(noImplicitAny, declaration, ts.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName);
66205
66206
  return;
66206
66207
  }
66207
66208
  diagnostic = declaration.dotDotDotToken ?
@@ -119641,13 +119642,15 @@ var ts;
119641
119642
  if (host.fileExists(packageJsonPath)) {
119642
119643
  var packageJsonContent = JSON.parse(host.readFile(packageJsonPath));
119643
119644
  // TODO: Inject `require` or `import` condition based on the intended import mode
119644
- var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string" ? tryGetModuleNameFromExports(options, path, packageRootPath, packageJsonContent.name, packageJsonContent.exports, ["node", "types"]) : undefined;
119645
- if (fromExports) {
119646
- var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry) ? fromExports : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
119647
- return __assign(__assign({}, withJsExtension), { verbatimFromExports: true });
119648
- }
119649
- if (packageJsonContent.exports) {
119650
- return { moduleFileToTry: path, blockedByExports: true };
119645
+ if (ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.Node12 || ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.NodeNext) {
119646
+ var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string" ? tryGetModuleNameFromExports(options, path, packageRootPath, packageJsonContent.name, packageJsonContent.exports, ["node", "types"]) : undefined;
119647
+ if (fromExports) {
119648
+ var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry) ? fromExports : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
119649
+ return __assign(__assign({}, withJsExtension), { verbatimFromExports: true });
119650
+ }
119651
+ if (packageJsonContent.exports) {
119652
+ return { moduleFileToTry: path, blockedByExports: true };
119653
+ }
119651
119654
  }
119652
119655
  var versionPaths = packageJsonContent.typesVersions
119653
119656
  ? ts.getPackageJsonTypesVersionsPaths(packageJsonContent.typesVersions)
@@ -129423,7 +129426,7 @@ var ts;
129423
129426
  }
129424
129427
  node = ts.factory.updateModifiers(node, modifiers & (~presentModifiers));
129425
129428
  completionNodes.push(node);
129426
- }, body, isAbstract);
129429
+ }, body, 2 /* Property */, isAbstract);
129427
129430
  if (completionNodes.length) {
129428
129431
  insertText = printer.printSnippetList(1 /* MultiLine */, ts.factory.createNodeArray(completionNodes), sourceFile);
129429
129432
  }
@@ -146790,9 +146793,6 @@ var ts;
146790
146793
  });
146791
146794
  function makeChange(changeTracker, sourceFile, pos) {
146792
146795
  var token = ts.getTokenAtPosition(sourceFile, pos);
146793
- if (!ts.isIdentifier(token)) {
146794
- return ts.Debug.fail("add-name-to-nameless-parameter operates on identifiers, but got a " + ts.Debug.formatSyntaxKind(token.kind));
146795
- }
146796
146796
  var param = token.parent;
146797
146797
  if (!ts.isParameter(param)) {
146798
146798
  return ts.Debug.fail("Tried to add a parameter name to a non-parameter: " + ts.Debug.formatSyntaxKind(token.kind));
@@ -146800,9 +146800,10 @@ var ts;
146800
146800
  var i = param.parent.parameters.indexOf(param);
146801
146801
  ts.Debug.assert(!param.type, "Tried to add a parameter name to a parameter that already had one.");
146802
146802
  ts.Debug.assert(i > -1, "Parameter not found in parent parameter list.");
146803
+ var typeNode = ts.factory.createTypeReferenceNode(param.name, /*typeArguments*/ undefined);
146803
146804
  var replacement = ts.factory.createParameterDeclaration(
146804
- /*decorators*/ undefined, param.modifiers, param.dotDotDotToken, "arg" + i, param.questionToken, ts.factory.createTypeReferenceNode(token, /*typeArguments*/ undefined), param.initializer);
146805
- changeTracker.replaceNode(sourceFile, token, replacement);
146805
+ /*decorators*/ undefined, param.modifiers, param.dotDotDotToken, "arg" + i, param.questionToken, param.dotDotDotToken ? ts.factory.createArrayTypeNode(typeNode) : typeNode, param.initializer);
146806
+ changeTracker.replaceNode(sourceFile, param, replacement);
146806
146807
  }
146807
146808
  })(codefix = ts.codefix || (ts.codefix = {}));
146808
146809
  })(ts || (ts = {}));
@@ -153256,11 +153257,18 @@ var ts;
153256
153257
  };
153257
153258
  }
153258
153259
  codefix.getNoopSymbolTrackerWithResolver = getNoopSymbolTrackerWithResolver;
153260
+ var PreserveOptionalFlags;
153261
+ (function (PreserveOptionalFlags) {
153262
+ PreserveOptionalFlags[PreserveOptionalFlags["Method"] = 1] = "Method";
153263
+ PreserveOptionalFlags[PreserveOptionalFlags["Property"] = 2] = "Property";
153264
+ PreserveOptionalFlags[PreserveOptionalFlags["All"] = 3] = "All";
153265
+ })(PreserveOptionalFlags = codefix.PreserveOptionalFlags || (codefix.PreserveOptionalFlags = {}));
153259
153266
  /**
153260
153267
  * `addClassElement` will not be called if we can't figure out a representation for `symbol` in `enclosingDeclaration`.
153261
153268
  * @param body If defined, this will be the body of the member node passed to `addClassElement`. Otherwise, the body will default to a stub.
153262
153269
  */
153263
- function addNewNodeForMemberSymbol(symbol, enclosingDeclaration, sourceFile, context, preferences, importAdder, addClassElement, body, isAmbient) {
153270
+ function addNewNodeForMemberSymbol(symbol, enclosingDeclaration, sourceFile, context, preferences, importAdder, addClassElement, body, preserveOptional, isAmbient) {
153271
+ if (preserveOptional === void 0) { preserveOptional = 3 /* All */; }
153264
153272
  if (isAmbient === void 0) { isAmbient = false; }
153265
153273
  var declarations = symbol.getDeclarations();
153266
153274
  if (!(declarations && declarations.length)) {
@@ -153289,7 +153297,7 @@ var ts;
153289
153297
  }
153290
153298
  }
153291
153299
  addClassElement(ts.factory.createPropertyDeclaration(
153292
- /*decorators*/ undefined, modifiers, name, optional ? ts.factory.createToken(57 /* QuestionToken */) : undefined, typeNode,
153300
+ /*decorators*/ undefined, modifiers, name, optional && (preserveOptional & 2 /* Property */) ? ts.factory.createToken(57 /* QuestionToken */) : undefined, typeNode,
153293
153301
  /*initializer*/ undefined));
153294
153302
  break;
153295
153303
  case 171 /* GetAccessor */:
@@ -153353,13 +153361,13 @@ var ts;
153353
153361
  }
153354
153362
  else {
153355
153363
  ts.Debug.assert(declarations.length === signatures.length, "Declarations and signatures should match count");
153356
- addClassElement(createMethodImplementingSignatures(checker, context, enclosingDeclaration, signatures, name, optional, modifiers, quotePreference, body));
153364
+ addClassElement(createMethodImplementingSignatures(checker, context, enclosingDeclaration, signatures, name, optional && !!(preserveOptional & 1 /* Method */), modifiers, quotePreference, body));
153357
153365
  }
153358
153366
  }
153359
153367
  break;
153360
153368
  }
153361
153369
  function outputMethod(quotePreference, signature, modifiers, name, body) {
153362
- var method = createSignatureDeclarationFromSignature(168 /* MethodDeclaration */, context, quotePreference, signature, body, name, modifiers, optional, enclosingDeclaration, importAdder);
153370
+ var method = createSignatureDeclarationFromSignature(168 /* MethodDeclaration */, context, quotePreference, signature, body, name, modifiers, optional && !!(preserveOptional & 1 /* Method */), enclosingDeclaration, importAdder);
153363
153371
  if (method)
153364
153372
  addClassElement(method);
153365
153373
  }
@@ -89,7 +89,7 @@ var ts;
89
89
  // The following is baselined as a literal template type without intervention
90
90
  /** The version of the TypeScript compiler release */
91
91
  // eslint-disable-next-line @typescript-eslint/no-inferrable-types
92
- ts.version = ts.versionMajorMinor + ".0-dev.20211103";
92
+ ts.version = ts.versionMajorMinor + ".0-dev.20211104";
93
93
  /* @internal */
94
94
  var Comparison;
95
95
  (function (Comparison) {
@@ -65996,7 +65996,8 @@ var ts;
65996
65996
  (resolveName(param, param.name.escapedText, 788968 /* Type */, undefined, param.name.escapedText, /*isUse*/ true) ||
65997
65997
  param.name.originalKeywordKind && ts.isTypeNodeKind(param.name.originalKeywordKind))) {
65998
65998
  var newName = "arg" + param.parent.parameters.indexOf(param);
65999
- errorOrSuggestion(noImplicitAny, declaration, ts.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, ts.declarationNameToString(param.name));
65999
+ var typeName = ts.declarationNameToString(param.name) + (param.dotDotDotToken ? "[]" : "");
66000
+ errorOrSuggestion(noImplicitAny, declaration, ts.Diagnostics.Parameter_has_a_name_but_no_type_Did_you_mean_0_Colon_1, newName, typeName);
66000
66001
  return;
66001
66002
  }
66002
66003
  diagnostic = declaration.dotDotDotToken ?
@@ -119436,13 +119437,15 @@ var ts;
119436
119437
  if (host.fileExists(packageJsonPath)) {
119437
119438
  var packageJsonContent = JSON.parse(host.readFile(packageJsonPath));
119438
119439
  // TODO: Inject `require` or `import` condition based on the intended import mode
119439
- var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string" ? tryGetModuleNameFromExports(options, path, packageRootPath, packageJsonContent.name, packageJsonContent.exports, ["node", "types"]) : undefined;
119440
- if (fromExports) {
119441
- var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry) ? fromExports : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
119442
- return __assign(__assign({}, withJsExtension), { verbatimFromExports: true });
119443
- }
119444
- if (packageJsonContent.exports) {
119445
- return { moduleFileToTry: path, blockedByExports: true };
119440
+ if (ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.Node12 || ts.getEmitModuleResolutionKind(options) === ts.ModuleResolutionKind.NodeNext) {
119441
+ var fromExports = packageJsonContent.exports && typeof packageJsonContent.name === "string" ? tryGetModuleNameFromExports(options, path, packageRootPath, packageJsonContent.name, packageJsonContent.exports, ["node", "types"]) : undefined;
119442
+ if (fromExports) {
119443
+ var withJsExtension = !ts.hasTSFileExtension(fromExports.moduleFileToTry) ? fromExports : { moduleFileToTry: ts.removeFileExtension(fromExports.moduleFileToTry) + tryGetJSExtensionForFile(fromExports.moduleFileToTry, options) };
119444
+ return __assign(__assign({}, withJsExtension), { verbatimFromExports: true });
119445
+ }
119446
+ if (packageJsonContent.exports) {
119447
+ return { moduleFileToTry: path, blockedByExports: true };
119448
+ }
119446
119449
  }
119447
119450
  var versionPaths = packageJsonContent.typesVersions
119448
119451
  ? ts.getPackageJsonTypesVersionsPaths(packageJsonContent.typesVersions)
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "typescript",
3
3
  "author": "Microsoft Corp.",
4
4
  "homepage": "https://www.typescriptlang.org/",
5
- "version": "4.6.0-dev.20211103",
5
+ "version": "4.6.0-dev.20211104",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [