@@ -3619,7 +3619,7 @@ var ts;
3619
3619
}
3620
3620
ts.moduleResolutionIsEqualTo = moduleResolutionIsEqualTo;
3621
3621
function packageIdIsEqual(a, b) {
3622
- return a === b || a && b && a.name === b.name && a.version === b.version;
3622
+ return a === b || a && b && a.name === b.name && a.subModuleName === b.subModuleName && a. version === b.version;
3623
3623
}
3624
3624
function typeDirectiveIsEqualTo(oldResolution, newResolution) {
3625
3625
return oldResolution.resolvedFileName === newResolution.resolvedFileName && oldResolution.primary === newResolution.primary;
@@ -11103,7 +11103,7 @@ var ts;
11103
11103
token() === 57 ||
11104
11104
isStartOfType(true);
11105
11105
}
11106
- function parseParameter() {
11106
+ function parseParameter(requireEqualsToken ) {
11107
11107
var node = createNode(146);
11108
11108
if (token() === 99) {
11109
11109
node.name = createIdentifier(true);
@@ -11119,15 +11119,9 @@ var ts;
11119
11119
}
11120
11120
node.questionToken = parseOptionalToken(55);
11121
11121
node.type = parseParameterType();
11122
- node.initializer = parseBindingElementInitializer (true);
11122
+ node.initializer = parseInitializer (true, requireEqualsToken );
11123
11123
return addJSDocComment(finishNode(node));
11124
11124
}
11125
- function parseBindingElementInitializer(inParameter) {
11126
- return inParameter ? parseParameterInitializer() : parseNonParameterInitializer();
11127
- }
11128
- function parseParameterInitializer() {
11129
- return parseInitializer(true);
11130
- }
11131
11125
function fillSignature(returnToken, flags, signature) {
11132
11126
if (!(flags & 32)) {
11133
11127
signature.typeParameters = parseTypeParameters();
@@ -11157,7 +11151,7 @@ var ts;
11157
11151
var savedAwaitContext = inAwaitContext();
11158
11152
setYieldContext(!!(flags & 1));
11159
11153
setAwaitContext(!!(flags & 2));
11160
- var result = parseDelimitedList(16, flags & 32 ? parseJSDocParameter : parseParameter);
11154
+ var result = parseDelimitedList(16, flags & 32 ? parseJSDocParameter : function () { return parseParameter(!!(flags & 8)); } );
11161
11155
setYieldContext(savedYieldContext);
11162
11156
setAwaitContext(savedAwaitContext);
11163
11157
if (!parseExpected(20) && (flags & 8)) {
@@ -11701,11 +11695,16 @@ var ts;
11701
11695
}
11702
11696
return expr;
11703
11697
}
11704
- function parseInitializer(inParameter) {
11698
+ function parseInitializer(inParameter, requireEqualsToken ) {
11705
11699
if (token() !== 58) {
11706
11700
if (scanner.hasPrecedingLineBreak() || (inParameter && token() === 17) || !isStartOfExpression()) {
11707
11701
return undefined;
11708
11702
}
11703
+ if (inParameter && requireEqualsToken) {
11704
+ var result = createMissingNode(71, true, ts.Diagnostics._0_expected, "=");
11705
+ result.escapedText = "= not found";
11706
+ return result;
11707
+ }
11709
11708
}
11710
11709
parseExpected(58);
11711
11710
return parseAssignmentExpressionOrHigher();
@@ -11874,8 +11873,7 @@ var ts;
11874
11873
}
11875
11874
function tryParseAsyncSimpleArrowFunctionExpression() {
11876
11875
if (token() === 120) {
11877
- var isUnParenthesizedAsyncArrowFunction = lookAhead(isUnParenthesizedAsyncArrowFunctionWorker);
11878
- if (isUnParenthesizedAsyncArrowFunction === 1) {
11876
+ if (lookAhead(isUnParenthesizedAsyncArrowFunctionWorker) === 1) {
11879
11877
var asyncModifier = parseModifiersForArrowFunction();
11880
11878
var expr = parseBinaryExpressionOrHigher(0);
11881
11879
return parseSimpleArrowFunctionExpression(expr, asyncModifier);
@@ -11904,7 +11902,8 @@ var ts;
11904
11902
if (!node.parameters) {
11905
11903
return undefined;
11906
11904
}
11907
- if (!allowAmbiguity && token() !== 36 && token() !== 17) {
11905
+ if (!allowAmbiguity && ((token() !== 36 && token() !== 17) ||
11906
+ ts.find(node.parameters, function (p) { return p.initializer && ts.isIdentifier(p.initializer) && p.initializer.escapedText === "= not found"; }))) {
11908
11907
return undefined;
11909
11908
}
11910
11909
return node;
@@ -13147,7 +13146,7 @@ var ts;
13147
13146
var node = createNode(176);
13148
13147
node.dotDotDotToken = parseOptionalToken(24);
13149
13148
node.name = parseIdentifierOrPattern();
13150
- node.initializer = parseBindingElementInitializer (false);
13149
+ node.initializer = parseInitializer (false);
13151
13150
return finishNode(node);
13152
13151
}
13153
13152
function parseObjectBindingElement() {
@@ -13163,7 +13162,7 @@ var ts;
13163
13162
node.propertyName = propertyName;
13164
13163
node.name = parseIdentifierOrPattern();
13165
13164
}
13166
- node.initializer = parseBindingElementInitializer (false);
13165
+ node.initializer = parseInitializer (false);
13167
13166
return finishNode(node);
13168
13167
}
13169
13168
function parseObjectBindingPattern() {
@@ -13197,7 +13196,7 @@ var ts;
13197
13196
node.name = parseIdentifierOrPattern();
13198
13197
node.type = parseTypeAnnotation();
13199
13198
if (!isInOrOfKeyword(token())) {
13200
- node.initializer = parseInitializer(false );
13199
+ node.initializer = parseNonParameterInitializer( );
13201
13200
}
13202
13201
return finishNode(node);
13203
13202
}
@@ -16693,7 +16692,7 @@ var ts;
16693
16692
return undefined;
16694
16693
}
16695
16694
ts.Debug.assert(ts.extensionIsTypeScript(resolved.extension));
16696
- return resolved.path;
16695
+ return { fileName: resolved.path, packageId: resolved.packageId } ;
16697
16696
}
16698
16697
function createResolvedModuleWithFailedLookupLocations(resolved, isExternalLibraryImport, failedLookupLocations) {
16699
16698
return {
@@ -16796,12 +16795,12 @@ var ts;
16796
16795
var resolvedTypeReferenceDirective;
16797
16796
if (resolved) {
16798
16797
if (!options.preserveSymlinks) {
16799
- resolved = realpath(resolved, host, traceEnabled);
16798
+ resolved = __assign({}, resolved, { fileName: realpath(resolved.fileName , host, traceEnabled) } );
16800
16799
}
16801
16800
if (traceEnabled) {
16802
- trace(host, ts.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2, typeReferenceDirectiveName, resolved, primary);
16801
+ trace(host, ts.Diagnostics.Type_reference_directive_0_was_successfully_resolved_to_1_primary_Colon_2, typeReferenceDirectiveName, resolved.fileName , primary);
16803
16802
}
16804
- resolvedTypeReferenceDirective = { primary: primary, resolvedFileName: resolved };
16803
+ resolvedTypeReferenceDirective = { primary: primary, resolvedFileName: resolved.fileName, packageId: resolved.packageId };
16805
16804
}
16806
16805
return { resolvedTypeReferenceDirective: resolvedTypeReferenceDirective, failedLookupLocations: failedLookupLocations };
16807
16806
function primaryLookup() {
@@ -17098,7 +17097,7 @@ var ts;
17098
17097
if (extension !== undefined) {
17099
17098
var path_1 = tryFile(candidate, failedLookupLocations, false, state);
17100
17099
if (path_1 !== undefined) {
17101
- return { path: path_1, extension : extension, packageId: undefined } ;
17100
+ return noPackageId( { path: path_1, ext : extension }) ;
17102
17101
}
17103
17102
}
17104
17103
return loader(extensions, candidate, failedLookupLocations, !directoryProbablyExists(ts.getDirectoryPath(candidate), state.host), state);
@@ -17260,31 +17259,40 @@ var ts;
17260
17259
}
17261
17260
function loadNodeModuleFromDirectory(extensions, candidate, failedLookupLocations, onlyRecordFailures, state, considerPackageJson) {
17262
17261
if (considerPackageJson === void 0) { considerPackageJson = true; }
17262
+ var _a = considerPackageJson
17263
+ ? getPackageJsonInfo(candidate, "", failedLookupLocations, onlyRecordFailures, state)
17264
+ : { packageJsonContent: undefined, packageId: undefined }, packageJsonContent = _a.packageJsonContent, packageId = _a.packageId;
17265
+ return withPackageId(packageId, loadNodeModuleFromDirectoryWorker(extensions, candidate, failedLookupLocations, onlyRecordFailures, state, packageJsonContent));
17266
+ }
17267
+ function loadNodeModuleFromDirectoryWorker(extensions, candidate, failedLookupLocations, onlyRecordFailures, state, packageJsonContent) {
17268
+ var fromPackageJson = packageJsonContent && loadModuleFromPackageJson(packageJsonContent, extensions, candidate, failedLookupLocations, state);
17269
+ if (fromPackageJson) {
17270
+ return fromPackageJson;
17271
+ }
17263
17272
var directoryExists = !onlyRecordFailures && directoryProbablyExists(candidate, state.host);
17264
- var packageId;
17265
- if (considerPackageJson) {
17266
- var packageJsonPath = pathToPackageJson(candidate);
17267
- if (directoryExists && state.host.fileExists(packageJsonPath)) {
17268
- if (state.traceEnabled) {
17269
- trace(state.host, ts.Diagnostics.Found_package_json_at_0, packageJsonPath);
17270
- }
17271
- var jsonContent = readJson(packageJsonPath, state.host);
17272
- if (typeof jsonContent.name === "string" && typeof jsonContent.version === "string") {
17273
- packageId = { name: jsonContent.name, version: jsonContent.version };
17274
- }
17275
- var fromPackageJson = loadModuleFromPackageJson(jsonContent, extensions, candidate, failedLookupLocations, state);
17276
- if (fromPackageJson) {
17277
- return withPackageId(packageId, fromPackageJson);
17278
- }
17273
+ return loadModuleFromFile(extensions, ts.combinePaths(candidate, "index"), failedLookupLocations, !directoryExists, state);
17274
+ }
17275
+ function getPackageJsonInfo(nodeModuleDirectory, subModuleName, failedLookupLocations, onlyRecordFailures, _a) {
17276
+ var host = _a.host, traceEnabled = _a.traceEnabled;
17277
+ var directoryExists = !onlyRecordFailures && directoryProbablyExists(nodeModuleDirectory, host);
17278
+ var packageJsonPath = pathToPackageJson(nodeModuleDirectory);
17279
+ if (directoryExists && host.fileExists(packageJsonPath)) {
17280
+ if (traceEnabled) {
17281
+ trace(host, ts.Diagnostics.Found_package_json_at_0, packageJsonPath);
17279
17282
}
17280
- else {
17281
- if (directoryExists && state.traceEnabled) {
17282
- trace(state.host, ts.Diagnostics.File_0_does_not_exist, packageJsonPath);
17283
- }
17284
- failedLookupLocations.push(packageJsonPath);
17283
+ var packageJsonContent = readJson(packageJsonPath, host);
17284
+ var packageId = typeof packageJsonContent.name === "string" && typeof packageJsonContent.version === "string"
17285
+ ? { name: packageJsonContent.name, subModuleName: subModuleName, version: packageJsonContent.version }
17286
+ : undefined;
17287
+ return { packageJsonContent: packageJsonContent, packageId: packageId };
17288
+ }
17289
+ else {
17290
+ if (directoryExists && traceEnabled) {
17291
+ trace(host, ts.Diagnostics.File_0_does_not_exist, packageJsonPath);
17285
17292
}
17293
+ failedLookupLocations.push(packageJsonPath);
17294
+ return { packageJsonContent: undefined, packageId: undefined };
17286
17295
}
17287
- return withPackageId(packageId, loadModuleFromFile(extensions, ts.combinePaths(candidate, "index"), failedLookupLocations, !directoryExists, state));
17288
17296
}
17289
17297
function loadModuleFromPackageJson(jsonContent, extensions, candidate, failedLookupLocations, state) {
17290
17298
var file = tryReadPackageJsonFields(extensions !== Extensions.JavaScript, jsonContent, candidate, state);
@@ -17327,9 +17335,17 @@ var ts;
17327
17335
return ts.combinePaths(directory, "package.json");
17328
17336
}
17329
17337
function loadModuleFromNodeModulesFolder(extensions, moduleName, nodeModulesFolder, nodeModulesFolderExists, failedLookupLocations, state) {
17338
+ var _a = getNameOfTopDirectory(moduleName), top = _a.top, rest = _a.rest;
17339
+ var packageRootPath = ts.combinePaths(nodeModulesFolder, top);
17340
+ var _b = getPackageJsonInfo(packageRootPath, rest, failedLookupLocations, !nodeModulesFolderExists, state), packageJsonContent = _b.packageJsonContent, packageId = _b.packageId;
17330
17341
var candidate = ts.normalizePath(ts.combinePaths(nodeModulesFolder, moduleName));
17331
- return loadModuleFromFileNoPackageId(extensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state) ||
17332
- loadNodeModuleFromDirectory(extensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state);
17342
+ var pathAndExtension = loadModuleFromFile(extensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state) ||
17343
+ loadNodeModuleFromDirectoryWorker(extensions, candidate, failedLookupLocations, !nodeModulesFolderExists, state, packageJsonContent);
17344
+ return withPackageId(packageId, pathAndExtension);
17345
+ }
17346
+ function getNameOfTopDirectory(name) {
17347
+ var idx = name.indexOf(ts.directorySeparator);
17348
+ return idx === -1 ? { top: name, rest: "" } : { top: name.slice(0, idx), rest: name.slice(idx + 1) };
17333
17349
}
17334
17350
function loadModuleFromNodeModules(extensions, moduleName, directory, failedLookupLocations, state, cache) {
17335
17351
return loadModuleFromNodeModulesWorker(extensions, moduleName, directory, failedLookupLocations, state, false, cache);
0 commit comments