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 +12 -9
- package/lib/tsserver.js +27 -19
- package/lib/tsserverlibrary.js +27 -19
- package/lib/typescript.js +27 -19
- package/lib/typescriptServices.js +27 -19
- package/lib/typingsInstaller.js +12 -9
- package/package.json +1 -1
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.
|
|
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
|
-
|
|
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
|
-
|
|
98683
|
-
|
|
98684
|
-
|
|
98685
|
-
|
|
98686
|
-
|
|
98687
|
-
|
|
98688
|
-
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
119451
|
-
|
|
119452
|
-
|
|
119453
|
-
|
|
119454
|
-
|
|
119455
|
-
|
|
119456
|
-
|
|
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.
|
|
146223
|
-
changeTracker.replaceNode(sourceFile,
|
|
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
|
}
|
package/lib/tsserverlibrary.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.
|
|
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
|
-
|
|
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
|
-
|
|
119645
|
-
|
|
119646
|
-
|
|
119647
|
-
|
|
119648
|
-
|
|
119649
|
-
|
|
119650
|
-
|
|
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.
|
|
146805
|
-
changeTracker.replaceNode(sourceFile,
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
119645
|
-
|
|
119646
|
-
|
|
119647
|
-
|
|
119648
|
-
|
|
119649
|
-
|
|
119650
|
-
|
|
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.
|
|
146805
|
-
changeTracker.replaceNode(sourceFile,
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
119645
|
-
|
|
119646
|
-
|
|
119647
|
-
|
|
119648
|
-
|
|
119649
|
-
|
|
119650
|
-
|
|
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.
|
|
146805
|
-
changeTracker.replaceNode(sourceFile,
|
|
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/typingsInstaller.js
CHANGED
|
@@ -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.
|
|
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
|
-
|
|
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
|
-
|
|
119440
|
-
|
|
119441
|
-
|
|
119442
|
-
|
|
119443
|
-
|
|
119444
|
-
|
|
119445
|
-
|
|
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.
|
|
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": [
|