typescript 4.5.0-dev.20211028 → 4.5.0-dev.20211029

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.
@@ -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.20211028";
92
+ ts.version = ts.versionMajorMinor + ".0-dev.20211029";
93
93
  /* @internal */
94
94
  var Comparison;
95
95
  (function (Comparison) {
@@ -2540,6 +2540,10 @@ var ts;
2540
2540
  return formatEnum(kind, ts.SyntaxKind, /*isFlags*/ false);
2541
2541
  }
2542
2542
  Debug.formatSyntaxKind = formatSyntaxKind;
2543
+ function formatSnippetKind(kind) {
2544
+ return formatEnum(kind, ts.SnippetKind, /*isFlags*/ false);
2545
+ }
2546
+ Debug.formatSnippetKind = formatSnippetKind;
2543
2547
  function formatNodeFlags(flags) {
2544
2548
  return formatEnum(flags, ts.NodeFlags, /*isFlags*/ true);
2545
2549
  }
@@ -4456,6 +4460,13 @@ var ts;
4456
4460
  ExitStatus[ExitStatus["ProjectReferenceCycle_OutputsSkupped"] = 4] = "ProjectReferenceCycle_OutputsSkupped";
4457
4461
  })(ExitStatus = ts.ExitStatus || (ts.ExitStatus = {}));
4458
4462
  /* @internal */
4463
+ var MemberOverrideStatus;
4464
+ (function (MemberOverrideStatus) {
4465
+ MemberOverrideStatus[MemberOverrideStatus["Ok"] = 0] = "Ok";
4466
+ MemberOverrideStatus[MemberOverrideStatus["NeedsOverride"] = 1] = "NeedsOverride";
4467
+ MemberOverrideStatus[MemberOverrideStatus["HasInvalidOverride"] = 2] = "HasInvalidOverride";
4468
+ })(MemberOverrideStatus = ts.MemberOverrideStatus || (ts.MemberOverrideStatus = {}));
4469
+ /* @internal */
4459
4470
  var UnionReduction;
4460
4471
  (function (UnionReduction) {
4461
4472
  UnionReduction[UnionReduction["None"] = 0] = "None";
@@ -5437,6 +5448,15 @@ var ts;
5437
5448
  // Masks
5438
5449
  // - Additional bitmasks
5439
5450
  })(TransformFlags = ts.TransformFlags || (ts.TransformFlags = {}));
5451
+ // Reference: https://code.visualstudio.com/docs/editor/userdefinedsnippets#_snippet-syntax
5452
+ /* @internal */
5453
+ var SnippetKind;
5454
+ (function (SnippetKind) {
5455
+ SnippetKind[SnippetKind["TabStop"] = 0] = "TabStop";
5456
+ SnippetKind[SnippetKind["Placeholder"] = 1] = "Placeholder";
5457
+ SnippetKind[SnippetKind["Choice"] = 2] = "Choice";
5458
+ SnippetKind[SnippetKind["Variable"] = 3] = "Variable";
5459
+ })(SnippetKind = ts.SnippetKind || (ts.SnippetKind = {}));
5440
5460
  var EmitFlags;
5441
5461
  (function (EmitFlags) {
5442
5462
  EmitFlags[EmitFlags["None"] = 0] = "None";
@@ -20742,6 +20762,10 @@ var ts;
20742
20762
  return node.kind === 212 /* FunctionExpression */ || node.kind === 213 /* ArrowFunction */;
20743
20763
  }
20744
20764
  ts.isFunctionExpressionOrArrowFunction = isFunctionExpressionOrArrowFunction;
20765
+ function escapeSnippetText(text) {
20766
+ return text.replace(/\$/gm, "\\$");
20767
+ }
20768
+ ts.escapeSnippetText = escapeSnippetText;
20745
20769
  })(ts || (ts = {}));
20746
20770
  /* @internal */
20747
20771
  var ts;
@@ -26945,6 +26969,25 @@ var ts;
26945
26969
  }
26946
26970
  }
26947
26971
  ts.moveEmitHelpers = moveEmitHelpers;
26972
+ /**
26973
+ * Gets the SnippetElement of a node.
26974
+ */
26975
+ /* @internal */
26976
+ function getSnippetElement(node) {
26977
+ var _a;
26978
+ return (_a = node.emitNode) === null || _a === void 0 ? void 0 : _a.snippetElement;
26979
+ }
26980
+ ts.getSnippetElement = getSnippetElement;
26981
+ /**
26982
+ * Sets the SnippetElement of a node.
26983
+ */
26984
+ /* @internal */
26985
+ function setSnippetElement(node, snippet) {
26986
+ var emitNode = getOrCreateEmitNode(node);
26987
+ emitNode.snippetElement = snippet;
26988
+ return node;
26989
+ }
26990
+ ts.setSnippetElement = setSnippetElement;
26948
26991
  /* @internal */
26949
26992
  function ignoreSourceNewlines(node) {
26950
26993
  getOrCreateEmitNode(node).flags |= 134217728 /* IgnoreSourceNewlines */;
@@ -47070,6 +47113,7 @@ var ts;
47070
47113
  isDeclarationVisible: isDeclarationVisible,
47071
47114
  isPropertyAccessible: isPropertyAccessible,
47072
47115
  getTypeOnlyAliasDeclaration: getTypeOnlyAliasDeclaration,
47116
+ getMemberOverrideModifierStatus: getMemberOverrideModifierStatus,
47073
47117
  };
47074
47118
  function getResolvedSignatureWorker(nodeIn, candidatesOutArray, argumentCount, checkMode) {
47075
47119
  var node = ts.getParseTreeNode(nodeIn, ts.isCallLikeExpression);
@@ -81645,7 +81689,7 @@ var ts;
81645
81689
  checkKindsOfPropertyMemberOverrides(type, baseType_1);
81646
81690
  }
81647
81691
  }
81648
- checkMembersForMissingOverrideModifier(node, type, typeWithThis, staticType);
81692
+ checkMembersForOverrideModifier(node, type, typeWithThis, staticType);
81649
81693
  var implementedTypeNodes = ts.getEffectiveImplementsTypeNodes(node);
81650
81694
  if (implementedTypeNodes) {
81651
81695
  for (var _b = 0, implementedTypeNodes_1 = implementedTypeNodes; _b < implementedTypeNodes_1.length; _b++) {
@@ -81680,8 +81724,7 @@ var ts;
81680
81724
  checkPropertyInitialization(node);
81681
81725
  }
81682
81726
  }
81683
- function checkMembersForMissingOverrideModifier(node, type, typeWithThis, staticType) {
81684
- var nodeInAmbientContext = !!(node.flags & 8388608 /* Ambient */);
81727
+ function checkMembersForOverrideModifier(node, type, typeWithThis, staticType) {
81685
81728
  var baseTypeNode = ts.getEffectiveBaseTypeNode(node);
81686
81729
  var baseTypes = baseTypeNode && getBaseTypes(type);
81687
81730
  var baseWithThis = (baseTypes === null || baseTypes === void 0 ? void 0 : baseTypes.length) ? getTypeWithThisArgument(ts.first(baseTypes), type.thisType) : undefined;
@@ -81693,46 +81736,71 @@ var ts;
81693
81736
  if (ts.isConstructorDeclaration(member)) {
81694
81737
  ts.forEach(member.parameters, function (param) {
81695
81738
  if (ts.isParameterPropertyDeclaration(param, member)) {
81696
- checkClassMember(param, /*memberIsParameterProperty*/ true);
81739
+ checkExistingMemberForOverrideModifier(node, staticType, baseStaticType, baseWithThis, type, typeWithThis, param,
81740
+ /* memberIsParameterProperty */ true);
81697
81741
  }
81698
81742
  });
81699
81743
  }
81700
- checkClassMember(member);
81744
+ checkExistingMemberForOverrideModifier(node, staticType, baseStaticType, baseWithThis, type, typeWithThis, member,
81745
+ /* memberIsParameterProperty */ false);
81701
81746
  };
81702
81747
  for (var _i = 0, _a = node.members; _i < _a.length; _i++) {
81703
81748
  var member = _a[_i];
81704
81749
  _loop_29(member);
81705
81750
  }
81706
- function checkClassMember(member, memberIsParameterProperty) {
81707
- var hasOverride = ts.hasOverrideModifier(member);
81708
- var hasStatic = ts.isStatic(member);
81709
- var isJs = ts.isInJSFile(member);
81710
- if (baseWithThis && (hasOverride || compilerOptions.noImplicitOverride)) {
81711
- var declaredProp = member.name && getSymbolAtLocation(member.name) || getSymbolAtLocation(member);
81712
- if (!declaredProp) {
81713
- return;
81714
- }
81715
- var thisType = hasStatic ? staticType : typeWithThis;
81716
- var baseType = hasStatic ? baseStaticType : baseWithThis;
81717
- var prop = getPropertyOfType(thisType, declaredProp.escapedName);
81718
- var baseProp = getPropertyOfType(baseType, declaredProp.escapedName);
81719
- var baseClassName = typeToString(baseWithThis);
81720
- if (prop && !baseProp && hasOverride) {
81721
- var suggestion = getSuggestedSymbolForNonexistentClassMember(ts.symbolName(declaredProp), baseType);
81751
+ }
81752
+ /**
81753
+ * @param member Existing member node to be checked.
81754
+ * Note: `member` cannot be a synthetic node.
81755
+ */
81756
+ function checkExistingMemberForOverrideModifier(node, staticType, baseStaticType, baseWithThis, type, typeWithThis, member, memberIsParameterProperty, reportErrors) {
81757
+ if (reportErrors === void 0) { reportErrors = true; }
81758
+ var declaredProp = member.name
81759
+ && getSymbolAtLocation(member.name)
81760
+ || getSymbolAtLocation(member);
81761
+ if (!declaredProp) {
81762
+ return 0 /* Ok */;
81763
+ }
81764
+ return checkMemberForOverrideModifier(node, staticType, baseStaticType, baseWithThis, type, typeWithThis, ts.hasOverrideModifier(member), ts.hasAbstractModifier(member), ts.isStatic(member), memberIsParameterProperty, ts.symbolName(declaredProp), reportErrors ? member : undefined);
81765
+ }
81766
+ /**
81767
+ * Checks a class member declaration for either a missing or an invalid `override` modifier.
81768
+ * Note: this function can be used for speculative checking,
81769
+ * i.e. checking a member that does not yet exist in the program.
81770
+ * An example of that would be to call this function in a completions scenario,
81771
+ * when offering a method declaration as completion.
81772
+ * @param errorNode The node where we should report an error, or undefined if we should not report errors.
81773
+ */
81774
+ function checkMemberForOverrideModifier(node, staticType, baseStaticType, baseWithThis, type, typeWithThis, memberHasOverrideModifier, memberHasAbstractModifier, memberIsStatic, memberIsParameterProperty, memberName, errorNode) {
81775
+ var isJs = ts.isInJSFile(node);
81776
+ var nodeInAmbientContext = !!(node.flags & 8388608 /* Ambient */);
81777
+ if (baseWithThis && (memberHasOverrideModifier || compilerOptions.noImplicitOverride)) {
81778
+ var memberEscapedName = ts.escapeLeadingUnderscores(memberName);
81779
+ var thisType = memberIsStatic ? staticType : typeWithThis;
81780
+ var baseType = memberIsStatic ? baseStaticType : baseWithThis;
81781
+ var prop = getPropertyOfType(thisType, memberEscapedName);
81782
+ var baseProp = getPropertyOfType(baseType, memberEscapedName);
81783
+ var baseClassName = typeToString(baseWithThis);
81784
+ if (prop && !baseProp && memberHasOverrideModifier) {
81785
+ if (errorNode) {
81786
+ var suggestion = getSuggestedSymbolForNonexistentClassMember(memberName, baseType); // Again, using symbol name: note that's different from `symbol.escapedName`
81722
81787
  suggestion ?
81723
- error(member, isJs ?
81788
+ error(errorNode, isJs ?
81724
81789
  ts.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1 :
81725
81790
  ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0_Did_you_mean_1, baseClassName, symbolToString(suggestion)) :
81726
- error(member, isJs ?
81791
+ error(errorNode, isJs ?
81727
81792
  ts.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_it_is_not_declared_in_the_base_class_0 :
81728
81793
  ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_it_is_not_declared_in_the_base_class_0, baseClassName);
81729
81794
  }
81730
- else if (prop && (baseProp === null || baseProp === void 0 ? void 0 : baseProp.declarations) && compilerOptions.noImplicitOverride && !nodeInAmbientContext) {
81731
- var baseHasAbstract = ts.some(baseProp.declarations, ts.hasAbstractModifier);
81732
- if (hasOverride) {
81733
- return;
81734
- }
81735
- if (!baseHasAbstract) {
81795
+ return 2 /* HasInvalidOverride */;
81796
+ }
81797
+ else if (prop && (baseProp === null || baseProp === void 0 ? void 0 : baseProp.declarations) && compilerOptions.noImplicitOverride && !nodeInAmbientContext) {
81798
+ var baseHasAbstract = ts.some(baseProp.declarations, ts.hasAbstractModifier);
81799
+ if (memberHasOverrideModifier) {
81800
+ return 0 /* Ok */;
81801
+ }
81802
+ if (!baseHasAbstract) {
81803
+ if (errorNode) {
81736
81804
  var diag = memberIsParameterProperty ?
81737
81805
  isJs ?
81738
81806
  ts.Diagnostics.This_parameter_property_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0 :
@@ -81740,20 +81808,28 @@ var ts;
81740
81808
  isJs ?
81741
81809
  ts.Diagnostics.This_member_must_have_a_JSDoc_comment_with_an_override_tag_because_it_overrides_a_member_in_the_base_class_0 :
81742
81810
  ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_a_member_in_the_base_class_0;
81743
- error(member, diag, baseClassName);
81811
+ error(errorNode, diag, baseClassName);
81744
81812
  }
81745
- else if (ts.hasAbstractModifier(member) && baseHasAbstract) {
81746
- error(member, ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0, baseClassName);
81813
+ return 1 /* NeedsOverride */;
81814
+ }
81815
+ else if (memberHasAbstractModifier && baseHasAbstract) {
81816
+ if (errorNode) {
81817
+ error(errorNode, ts.Diagnostics.This_member_must_have_an_override_modifier_because_it_overrides_an_abstract_method_that_is_declared_in_the_base_class_0, baseClassName);
81747
81818
  }
81819
+ return 1 /* NeedsOverride */;
81748
81820
  }
81749
81821
  }
81750
- else if (hasOverride) {
81822
+ }
81823
+ else if (memberHasOverrideModifier) {
81824
+ if (errorNode) {
81751
81825
  var className = typeToString(type);
81752
- error(member, isJs ?
81826
+ error(errorNode, isJs ?
81753
81827
  ts.Diagnostics.This_member_cannot_have_a_JSDoc_comment_with_an_override_tag_because_its_containing_class_0_does_not_extend_another_class :
81754
81828
  ts.Diagnostics.This_member_cannot_have_an_override_modifier_because_its_containing_class_0_does_not_extend_another_class, className);
81755
81829
  }
81830
+ return 2 /* HasInvalidOverride */;
81756
81831
  }
81832
+ return 0 /* Ok */;
81757
81833
  }
81758
81834
  function issueMemberSpecificError(node, typeWithThis, baseWithThis, broadDiag) {
81759
81835
  // iterate over all implemented properties and issue errors on each one which isn't compatible, rather than the class as a whole, if possible
@@ -81796,6 +81872,31 @@ var ts;
81796
81872
  }
81797
81873
  }
81798
81874
  }
81875
+ /**
81876
+ * Checks a member declaration node to see if has a missing or invalid `override` modifier.
81877
+ * @param node Class-like node where the member is declared.
81878
+ * @param member Member declaration node.
81879
+ * Note: `member` can be a synthetic node without a parent.
81880
+ */
81881
+ function getMemberOverrideModifierStatus(node, member) {
81882
+ if (!member.name) {
81883
+ return 0 /* Ok */;
81884
+ }
81885
+ var symbol = getSymbolOfNode(node);
81886
+ var type = getDeclaredTypeOfSymbol(symbol);
81887
+ var typeWithThis = getTypeWithThisArgument(type);
81888
+ var staticType = getTypeOfSymbol(symbol);
81889
+ var baseTypeNode = ts.getEffectiveBaseTypeNode(node);
81890
+ var baseTypes = baseTypeNode && getBaseTypes(type);
81891
+ var baseWithThis = (baseTypes === null || baseTypes === void 0 ? void 0 : baseTypes.length) ? getTypeWithThisArgument(ts.first(baseTypes), type.thisType) : undefined;
81892
+ var baseStaticType = getBaseConstructorTypeOfClass(type);
81893
+ var memberHasOverrideModifier = member.parent
81894
+ ? ts.hasOverrideModifier(member)
81895
+ : ts.hasSyntacticModifier(member, 16384 /* Override */);
81896
+ var memberName = ts.unescapeLeadingUnderscores(ts.getTextOfPropertyName(member.name));
81897
+ return checkMemberForOverrideModifier(node, staticType, baseStaticType, baseWithThis, type, typeWithThis, memberHasOverrideModifier, ts.hasAbstractModifier(member), ts.isStatic(member),
81898
+ /* memberIsParameterProperty */ false, memberName);
81899
+ }
81799
81900
  function getTargetSymbol(s) {
81800
81901
  // if symbol is instantiated its flags are not copied from the 'target'
81801
81902
  // so we'll need to get back original 'target' symbol to work with correct set of flags
@@ -108100,7 +108201,14 @@ var ts;
108100
108201
  // clear the parenthesizer rule as we ascend
108101
108202
  currentParenthesizerRule = undefined;
108102
108203
  }
108103
- function pipelineEmitWithHintWorker(hint, node) {
108204
+ function pipelineEmitWithHintWorker(hint, node, allowSnippets) {
108205
+ if (allowSnippets === void 0) { allowSnippets = true; }
108206
+ if (allowSnippets) {
108207
+ var snippet = ts.getSnippetElement(node);
108208
+ if (snippet) {
108209
+ return emitSnippetNode(hint, node, snippet);
108210
+ }
108211
+ }
108104
108212
  if (hint === 0 /* SourceFile */)
108105
108213
  return emitSourceFile(ts.cast(node, ts.isSourceFile));
108106
108214
  if (hint === 2 /* IdentifierName */)
@@ -108709,6 +108817,28 @@ var ts;
108709
108817
  }
108710
108818
  }
108711
108819
  //
108820
+ // Snippet Elements
108821
+ //
108822
+ function emitSnippetNode(hint, node, snippet) {
108823
+ switch (snippet.kind) {
108824
+ case 1 /* Placeholder */:
108825
+ emitPlaceholder(hint, node, snippet);
108826
+ break;
108827
+ case 0 /* TabStop */:
108828
+ emitTabStop(snippet);
108829
+ break;
108830
+ }
108831
+ }
108832
+ function emitPlaceholder(hint, node, snippet) {
108833
+ nonEscapingWrite("${" + snippet.order + ":"); // `${2:`
108834
+ pipelineEmitWithHintWorker(hint, node, /*allowSnippets*/ false); // `...`
108835
+ nonEscapingWrite("}"); // `}`
108836
+ // `${2:...}`
108837
+ }
108838
+ function emitTabStop(snippet) {
108839
+ nonEscapingWrite("$" + snippet.order);
108840
+ }
108841
+ //
108712
108842
  // Identifiers
108713
108843
  //
108714
108844
  function emitIdentifier(node) {
@@ -110947,6 +111077,15 @@ var ts;
110947
111077
  function writeProperty(s) {
110948
111078
  writer.writeProperty(s);
110949
111079
  }
111080
+ function nonEscapingWrite(s) {
111081
+ // This should be defined in a snippet-escaping text writer.
111082
+ if (writer.nonEscapingWrite) {
111083
+ writer.nonEscapingWrite(s);
111084
+ }
111085
+ else {
111086
+ writer.write(s);
111087
+ }
111088
+ }
110950
111089
  function writeLine(count) {
110951
111090
  if (count === void 0) { count = 1; }
110952
111091
  for (var i = 0; i < count; i++) {
@@ -839,6 +839,7 @@
839
839
  "JSDoc_typedef_tag_should_either_have_a_type_annotation_or_be_followed_by_property_or_member_tags_8021": "JSDoc '@typedef' 標記應具有類型註解,或者其後接著 '@property' 或 '@member' 標記。",
840
840
  "JSDoc_types_can_only_be_used_inside_documentation_comments_8020": "JSDoc 類型只能在文件註解中使用。",
841
841
  "JSDoc_types_may_be_moved_to_TypeScript_types_80004": "JSDoc 類型可移為 TypeScript 類型。",
842
+ "JSON_imports_are_experimental_in_ES_module_mode_imports_7062": "JSON 匯入在 ES 模組模式匯入中為實驗性。",
842
843
  "JSX_attributes_must_only_be_assigned_a_non_empty_expression_17000": "只能將非空白的 'expression' 指派給 JSX 屬性。",
843
844
  "JSX_element_0_has_no_corresponding_closing_tag_17008": "JSX 元素 '{0}' 沒有對應的結尾標記。",
844
845
  "JSX_element_class_does_not_support_attributes_because_it_does_not_have_a_0_property_2607": "因為 JSX 項目類別沒有 '{0}' 屬性 (property),所以不支援屬性 (attribute)。",
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.5.0-dev.20211028",
5
+ "version": "4.5.0-dev.20211029",
6
6
  "license": "Apache-2.0",
7
7
  "description": "TypeScript is a language for application scale JavaScript development",
8
8
  "keywords": [