typescript 4.7.0-dev.20220421 → 4.7.0-dev.20220422

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.7";
72
- ts.version = ts.versionMajorMinor + ".0-dev.20220421";
72
+ ts.version = ts.versionMajorMinor + ".0-dev.20220422";
73
73
  var NativeCollections;
74
74
  (function (NativeCollections) {
75
75
  var globals = typeof globalThis !== "undefined" ? globalThis :
@@ -14324,10 +14324,10 @@ var ts;
14324
14324
  return ts.combinePaths(newDirPath, sourceFilePath);
14325
14325
  }
14326
14326
  ts.getSourceFilePathInNewDirWorker = getSourceFilePathInNewDirWorker;
14327
- function writeFile(host, diagnostics, fileName, data, writeByteOrderMark, sourceFiles) {
14328
- host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) {
14327
+ function writeFile(host, diagnostics, fileName, text, writeByteOrderMark, sourceFiles, data) {
14328
+ host.writeFile(fileName, text, writeByteOrderMark, function (hostErrorMessage) {
14329
14329
  diagnostics.add(createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage));
14330
- }, sourceFiles);
14330
+ }, sourceFiles, data);
14331
14331
  }
14332
14332
  ts.writeFile = writeFile;
14333
14333
  function ensureDirectoriesExist(directoryPath, createDirectory, directoryExists) {
@@ -61316,6 +61316,7 @@ var ts;
61316
61316
  }
61317
61317
  }
61318
61318
  else {
61319
+ error(attributeDecl.expression, ts.Diagnostics.Spread_types_may_only_be_created_from_object_types);
61319
61320
  typeToIntersect = typeToIntersect ? getIntersectionType([typeToIntersect, exprType]) : exprType;
61320
61321
  }
61321
61322
  }
@@ -90213,6 +90214,7 @@ var ts;
90213
90214
  else {
90214
90215
  printer.writeFile(sourceFile, writer, sourceMapGenerator);
90215
90216
  }
90217
+ var sourceMapUrlPos;
90216
90218
  if (sourceMapGenerator) {
90217
90219
  if (sourceMapDataList) {
90218
90220
  sourceMapDataList.push({
@@ -90224,6 +90226,7 @@ var ts;
90224
90226
  if (sourceMappingURL) {
90225
90227
  if (!writer.isAtStartOfLine())
90226
90228
  writer.rawWrite(newLine);
90229
+ sourceMapUrlPos = writer.getTextPos();
90227
90230
  writer.writeComment("//# " + "sourceMappingURL" + "=" + sourceMappingURL);
90228
90231
  }
90229
90232
  if (sourceMapFilePath) {
@@ -90234,7 +90237,7 @@ var ts;
90234
90237
  else {
90235
90238
  writer.writeLine();
90236
90239
  }
90237
- ts.writeFile(host, emitterDiagnostics, jsFilePath, writer.getText(), !!compilerOptions.emitBOM, sourceFiles);
90240
+ ts.writeFile(host, emitterDiagnostics, jsFilePath, writer.getText(), !!compilerOptions.emitBOM, sourceFiles, { sourceMapUrlPos: sourceMapUrlPos });
90238
90241
  writer.clear();
90239
90242
  }
90240
90243
  function shouldEmitSourceMaps(mapOptions, sourceFileOrBundle) {
@@ -95206,7 +95209,11 @@ var ts;
95206
95209
  return newValue;
95207
95210
  };
95208
95211
  if (originalWriteFile) {
95209
- host.writeFile = function (fileName, data, writeByteOrderMark, onError, sourceFiles) {
95212
+ host.writeFile = function (fileName, data) {
95213
+ var rest = [];
95214
+ for (var _i = 2; _i < arguments.length; _i++) {
95215
+ rest[_i - 2] = arguments[_i];
95216
+ }
95210
95217
  var key = toPath(fileName);
95211
95218
  fileExistsCache.delete(key);
95212
95219
  var value = readFileCache.get(key);
@@ -95220,7 +95227,7 @@ var ts;
95220
95227
  sourceFileCache.delete(key);
95221
95228
  }
95222
95229
  }
95223
- originalWriteFile.call(host, fileName, data, writeByteOrderMark, onError, sourceFiles);
95230
+ originalWriteFile.call.apply(originalWriteFile, __spreadArray([host, fileName, data], rest, false));
95224
95231
  };
95225
95232
  }
95226
95233
  if (originalDirectoryExists && originalCreateDirectory) {
@@ -96042,6 +96049,7 @@ var ts;
96042
96049
  useCaseSensitiveFileNames: function () { return host.useCaseSensitiveFileNames(); },
96043
96050
  getFileIncludeReasons: function () { return fileReasons; },
96044
96051
  structureIsReused: structureIsReused,
96052
+ writeFile: writeFile,
96045
96053
  };
96046
96054
  onProgramCreateComplete();
96047
96055
  fileProcessingDiagnostics === null || fileProcessingDiagnostics === void 0 ? void 0 : fileProcessingDiagnostics.forEach(function (diagnostic) {
@@ -96445,7 +96453,7 @@ var ts;
96445
96453
  getProjectReferenceRedirect: getProjectReferenceRedirect,
96446
96454
  isSourceOfProjectReferenceRedirect: isSourceOfProjectReferenceRedirect,
96447
96455
  getSymlinkCache: getSymlinkCache,
96448
- writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError, sourceFiles) { return host.writeFile(fileName, data, writeByteOrderMark, onError, sourceFiles); }),
96456
+ writeFile: writeFileCallback || writeFile,
96449
96457
  isEmitBlocked: isEmitBlocked,
96450
96458
  readFile: function (f) { return host.readFile(f); },
96451
96459
  fileExists: function (f) {
@@ -96463,6 +96471,9 @@ var ts;
96463
96471
  getFileIncludeReasons: program.getFileIncludeReasons,
96464
96472
  };
96465
96473
  }
96474
+ function writeFile(fileName, text, writeByteOrderMark, onError, sourceFiles, data) {
96475
+ host.writeFile(fileName, text, writeByteOrderMark, onError, sourceFiles, data);
96476
+ }
96466
96477
  function emitBuildInfo(writeFileCallback) {
96467
96478
  ts.Debug.assert(!ts.outFile(options));
96468
96479
  ts.tracing === null || ts.tracing === void 0 ? void 0 : ts.tracing.push("emit", "emitBuildInfo", {}, true);
@@ -98640,6 +98651,7 @@ var ts;
98640
98651
  }
98641
98652
  }
98642
98653
  }
98654
+ BuilderState.updateExportedModules = updateExportedModules;
98643
98655
  function updateExportedFilesMapFromCache(state, exportedModulesMapCache) {
98644
98656
  var _a;
98645
98657
  if (exportedModulesMapCache) {
@@ -99411,7 +99423,43 @@ var ts;
99411
99423
  affected = program;
99412
99424
  }
99413
99425
  }
99414
- return toAffectedFileEmitResult(state, ts.Debug.checkDefined(state.program).emit(affected === state.program ? undefined : affected, writeFile || ts.maybeBind(host, host.writeFile), cancellationToken, emitOnlyDtsFiles || emitKind === 0, customTransformers), affected, emitKind, isPendingEmitFile);
99426
+ return toAffectedFileEmitResult(state, ts.Debug.checkDefined(state.program).emit(affected === state.program ? undefined : affected, affected !== state.program && ts.getEmitDeclarations(state.compilerOptions) && !customTransformers ?
99427
+ getWriteFileUpdatingSignatureCallback(writeFile) :
99428
+ writeFile || ts.maybeBind(host, host.writeFile), cancellationToken, emitOnlyDtsFiles || emitKind === 0, customTransformers), affected, emitKind, isPendingEmitFile);
99429
+ }
99430
+ function getWriteFileUpdatingSignatureCallback(writeFile) {
99431
+ return function (fileName, text, writeByteOrderMark, onError, sourceFiles, data) {
99432
+ var _a;
99433
+ if (ts.isDeclarationFileName(fileName)) {
99434
+ ts.Debug.assert((sourceFiles === null || sourceFiles === void 0 ? void 0 : sourceFiles.length) === 1);
99435
+ var file = sourceFiles[0];
99436
+ var info = state.fileInfos.get(file.resolvedPath);
99437
+ var signature = ((_a = state.currentAffectedFilesSignatures) === null || _a === void 0 ? void 0 : _a.get(file.resolvedPath)) || info.signature;
99438
+ if (signature === file.version) {
99439
+ var newSignature = (computeHash || ts.generateDjb2Hash)((data === null || data === void 0 ? void 0 : data.sourceMapUrlPos) !== undefined ? text.substring(0, data.sourceMapUrlPos) : text);
99440
+ if (newSignature !== file.version) {
99441
+ if (host.storeFilesChangingSignatureDuringEmit)
99442
+ (state.filesChangingSignature || (state.filesChangingSignature = new ts.Set())).add(file.resolvedPath);
99443
+ if (state.exportedModulesMap)
99444
+ ts.BuilderState.updateExportedModules(file, file.exportedModulesFromDeclarationEmit, state.currentAffectedFilesExportedModulesMap || (state.currentAffectedFilesExportedModulesMap = ts.BuilderState.createManyToManyPathMap()));
99445
+ if (state.affectedFiles && state.affectedFilesIndex < state.affectedFiles.length) {
99446
+ state.currentAffectedFilesSignatures.set(file.resolvedPath, newSignature);
99447
+ }
99448
+ else {
99449
+ info.signature = newSignature;
99450
+ if (state.exportedModulesMap)
99451
+ ts.BuilderState.updateExportedFilesMapFromCache(state, state.currentAffectedFilesExportedModulesMap);
99452
+ }
99453
+ }
99454
+ }
99455
+ }
99456
+ if (writeFile)
99457
+ writeFile(fileName, text, writeByteOrderMark, onError, sourceFiles, data);
99458
+ else if (host.writeFile)
99459
+ host.writeFile(fileName, text, writeByteOrderMark, onError, sourceFiles, data);
99460
+ else
99461
+ state.program.writeFile(fileName, text, writeByteOrderMark, onError, sourceFiles, data);
99462
+ };
99415
99463
  }
99416
99464
  function emit(targetSourceFile, writeFile, cancellationToken, emitOnlyDtsFiles, customTransformers) {
99417
99465
  var _a;
@@ -99452,7 +99500,9 @@ var ts;
99452
99500
  }
99453
99501
  }
99454
99502
  }
99455
- return ts.Debug.checkDefined(state.program).emit(targetSourceFile, writeFile || ts.maybeBind(host, host.writeFile), cancellationToken, emitOnlyDtsFiles, customTransformers);
99503
+ return ts.Debug.checkDefined(state.program).emit(targetSourceFile, !ts.outFile(state.compilerOptions) && ts.getEmitDeclarations(state.compilerOptions) && !customTransformers ?
99504
+ getWriteFileUpdatingSignatureCallback(writeFile) :
99505
+ writeFile || ts.maybeBind(host, host.writeFile), cancellationToken, emitOnlyDtsFiles, customTransformers);
99456
99506
  }
99457
99507
  function getSemanticDiagnosticsOfNextAffectedFile(cancellationToken, ignoreSourceFile) {
99458
99508
  while (true) {
@@ -101375,6 +101425,7 @@ var ts;
101375
101425
  createHash: ts.maybeBind(host, host.createHash),
101376
101426
  readDirectory: ts.maybeBind(host, host.readDirectory),
101377
101427
  disableUseFileVersionAsSignature: host.disableUseFileVersionAsSignature,
101428
+ storeFilesChangingSignatureDuringEmit: host.storeFilesChangingSignatureDuringEmit,
101378
101429
  };
101379
101430
  function writeFile(fileName, text, writeByteOrderMark, onError) {
101380
101431
  try {
@@ -101428,6 +101479,7 @@ var ts;
101428
101479
  createHash: ts.maybeBind(system, system.createHash),
101429
101480
  createProgram: createProgram || ts.createEmitAndSemanticDiagnosticsBuilderProgram,
101430
101481
  disableUseFileVersionAsSignature: system.disableUseFileVersionAsSignature,
101482
+ storeFilesChangingSignatureDuringEmit: system.storeFilesChangingSignatureDuringEmit,
101431
101483
  };
101432
101484
  }
101433
101485
  ts.createProgramHost = createProgramHost;
@@ -101504,6 +101556,7 @@ var ts;
101504
101556
  var host = ts.createCompilerHostWorker(options, undefined, system);
101505
101557
  host.createHash = ts.maybeBind(system, system.createHash);
101506
101558
  host.disableUseFileVersionAsSignature = system.disableUseFileVersionAsSignature;
101559
+ host.storeFilesChangingSignatureDuringEmit = system.storeFilesChangingSignatureDuringEmit;
101507
101560
  ts.setGetSourceFileAsHashVersioned(host, system);
101508
101561
  ts.changeCompilerHostLikeToUseCache(host, function (fileName) { return ts.toPath(fileName, host.getCurrentDirectory(), host.getCanonicalFileName); });
101509
101562
  return host;
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.20220421";
103
+ ts.version = ts.versionMajorMinor + ".0-dev.20220422";
104
104
  /* @internal */
105
105
  var Comparison;
106
106
  (function (Comparison) {
@@ -18293,10 +18293,10 @@ var ts;
18293
18293
  return ts.combinePaths(newDirPath, sourceFilePath);
18294
18294
  }
18295
18295
  ts.getSourceFilePathInNewDirWorker = getSourceFilePathInNewDirWorker;
18296
- function writeFile(host, diagnostics, fileName, data, writeByteOrderMark, sourceFiles) {
18297
- host.writeFile(fileName, data, writeByteOrderMark, function (hostErrorMessage) {
18296
+ function writeFile(host, diagnostics, fileName, text, writeByteOrderMark, sourceFiles, data) {
18297
+ host.writeFile(fileName, text, writeByteOrderMark, function (hostErrorMessage) {
18298
18298
  diagnostics.add(createCompilerDiagnostic(ts.Diagnostics.Could_not_write_file_0_Colon_1, fileName, hostErrorMessage));
18299
- }, sourceFiles);
18299
+ }, sourceFiles, data);
18300
18300
  }
18301
18301
  ts.writeFile = writeFile;
18302
18302
  function ensureDirectoriesExist(directoryPath, createDirectory, directoryExists) {
@@ -73432,6 +73432,7 @@ var ts;
73432
73432
  }
73433
73433
  }
73434
73434
  else {
73435
+ error(attributeDecl.expression, ts.Diagnostics.Spread_types_may_only_be_created_from_object_types);
73435
73436
  typeToIntersect = typeToIntersect ? getIntersectionType([typeToIntersect, exprType]) : exprType;
73436
73437
  }
73437
73438
  }
@@ -109966,6 +109967,7 @@ var ts;
109966
109967
  else {
109967
109968
  printer.writeFile(sourceFile, writer, sourceMapGenerator);
109968
109969
  }
109970
+ var sourceMapUrlPos;
109969
109971
  if (sourceMapGenerator) {
109970
109972
  if (sourceMapDataList) {
109971
109973
  sourceMapDataList.push({
@@ -109977,6 +109979,7 @@ var ts;
109977
109979
  if (sourceMappingURL) {
109978
109980
  if (!writer.isAtStartOfLine())
109979
109981
  writer.rawWrite(newLine);
109982
+ sourceMapUrlPos = writer.getTextPos();
109980
109983
  writer.writeComment("//# " + "sourceMappingURL" + "=" + sourceMappingURL); // Tools can sometimes see this line as a source mapping url comment
109981
109984
  }
109982
109985
  // Write the source map
@@ -109989,7 +109992,7 @@ var ts;
109989
109992
  writer.writeLine();
109990
109993
  }
109991
109994
  // Write the output file
109992
- ts.writeFile(host, emitterDiagnostics, jsFilePath, writer.getText(), !!compilerOptions.emitBOM, sourceFiles);
109995
+ ts.writeFile(host, emitterDiagnostics, jsFilePath, writer.getText(), !!compilerOptions.emitBOM, sourceFiles, { sourceMapUrlPos: sourceMapUrlPos });
109993
109996
  // Reset state
109994
109997
  writer.clear();
109995
109998
  }
@@ -115456,7 +115459,11 @@ var ts;
115456
115459
  return newValue;
115457
115460
  };
115458
115461
  if (originalWriteFile) {
115459
- host.writeFile = function (fileName, data, writeByteOrderMark, onError, sourceFiles) {
115462
+ host.writeFile = function (fileName, data) {
115463
+ var rest = [];
115464
+ for (var _i = 2; _i < arguments.length; _i++) {
115465
+ rest[_i - 2] = arguments[_i];
115466
+ }
115460
115467
  var key = toPath(fileName);
115461
115468
  fileExistsCache.delete(key);
115462
115469
  var value = readFileCache.get(key);
@@ -115470,7 +115477,7 @@ var ts;
115470
115477
  sourceFileCache.delete(key);
115471
115478
  }
115472
115479
  }
115473
- originalWriteFile.call(host, fileName, data, writeByteOrderMark, onError, sourceFiles);
115480
+ originalWriteFile.call.apply(originalWriteFile, __spreadArray([host, fileName, data], rest, false));
115474
115481
  };
115475
115482
  }
115476
115483
  // directoryExists
@@ -116403,6 +116410,7 @@ var ts;
116403
116410
  useCaseSensitiveFileNames: function () { return host.useCaseSensitiveFileNames(); },
116404
116411
  getFileIncludeReasons: function () { return fileReasons; },
116405
116412
  structureIsReused: structureIsReused,
116413
+ writeFile: writeFile,
116406
116414
  };
116407
116415
  onProgramCreateComplete();
116408
116416
  // Add file processingDiagnostics
@@ -116900,7 +116908,7 @@ var ts;
116900
116908
  getProjectReferenceRedirect: getProjectReferenceRedirect,
116901
116909
  isSourceOfProjectReferenceRedirect: isSourceOfProjectReferenceRedirect,
116902
116910
  getSymlinkCache: getSymlinkCache,
116903
- writeFile: writeFileCallback || (function (fileName, data, writeByteOrderMark, onError, sourceFiles) { return host.writeFile(fileName, data, writeByteOrderMark, onError, sourceFiles); }),
116911
+ writeFile: writeFileCallback || writeFile,
116904
116912
  isEmitBlocked: isEmitBlocked,
116905
116913
  readFile: function (f) { return host.readFile(f); },
116906
116914
  fileExists: function (f) {
@@ -116920,6 +116928,9 @@ var ts;
116920
116928
  getFileIncludeReasons: program.getFileIncludeReasons,
116921
116929
  };
116922
116930
  }
116931
+ function writeFile(fileName, text, writeByteOrderMark, onError, sourceFiles, data) {
116932
+ host.writeFile(fileName, text, writeByteOrderMark, onError, sourceFiles, data);
116933
+ }
116923
116934
  function emitBuildInfo(writeFileCallback) {
116924
116935
  ts.Debug.assert(!ts.outFile(options));
116925
116936
  ts.tracing === null || ts.tracing === void 0 ? void 0 : ts.tracing.push("emit" /* Emit */, "emitBuildInfo", {}, /*separateBeginAndEnd*/ true);
@@ -119362,6 +119373,7 @@ var ts;
119362
119373
  }
119363
119374
  }
119364
119375
  }
119376
+ BuilderState.updateExportedModules = updateExportedModules;
119365
119377
  /**
119366
119378
  * Updates the exported modules from cache into state's exported modules map
119367
119379
  * This should be called whenever it is safe to commit the state of the builder
@@ -120326,7 +120338,43 @@ var ts;
120326
120338
  return toAffectedFileEmitResult(state,
120327
120339
  // When whole program is affected, do emit only once (eg when --out or --outFile is specified)
120328
120340
  // Otherwise just affected file
120329
- ts.Debug.checkDefined(state.program).emit(affected === state.program ? undefined : affected, writeFile || ts.maybeBind(host, host.writeFile), cancellationToken, emitOnlyDtsFiles || emitKind === 0 /* DtsOnly */, customTransformers), affected, emitKind, isPendingEmitFile);
120341
+ ts.Debug.checkDefined(state.program).emit(affected === state.program ? undefined : affected, affected !== state.program && ts.getEmitDeclarations(state.compilerOptions) && !customTransformers ?
120342
+ getWriteFileUpdatingSignatureCallback(writeFile) :
120343
+ writeFile || ts.maybeBind(host, host.writeFile), cancellationToken, emitOnlyDtsFiles || emitKind === 0 /* DtsOnly */, customTransformers), affected, emitKind, isPendingEmitFile);
120344
+ }
120345
+ function getWriteFileUpdatingSignatureCallback(writeFile) {
120346
+ return function (fileName, text, writeByteOrderMark, onError, sourceFiles, data) {
120347
+ var _a;
120348
+ if (ts.isDeclarationFileName(fileName)) {
120349
+ ts.Debug.assert((sourceFiles === null || sourceFiles === void 0 ? void 0 : sourceFiles.length) === 1);
120350
+ var file = sourceFiles[0];
120351
+ var info = state.fileInfos.get(file.resolvedPath);
120352
+ var signature = ((_a = state.currentAffectedFilesSignatures) === null || _a === void 0 ? void 0 : _a.get(file.resolvedPath)) || info.signature;
120353
+ if (signature === file.version) {
120354
+ var newSignature = (computeHash || ts.generateDjb2Hash)((data === null || data === void 0 ? void 0 : data.sourceMapUrlPos) !== undefined ? text.substring(0, data.sourceMapUrlPos) : text);
120355
+ if (newSignature !== file.version) { // Update it
120356
+ if (host.storeFilesChangingSignatureDuringEmit)
120357
+ (state.filesChangingSignature || (state.filesChangingSignature = new ts.Set())).add(file.resolvedPath);
120358
+ if (state.exportedModulesMap)
120359
+ ts.BuilderState.updateExportedModules(file, file.exportedModulesFromDeclarationEmit, state.currentAffectedFilesExportedModulesMap || (state.currentAffectedFilesExportedModulesMap = ts.BuilderState.createManyToManyPathMap()));
120360
+ if (state.affectedFiles && state.affectedFilesIndex < state.affectedFiles.length) {
120361
+ state.currentAffectedFilesSignatures.set(file.resolvedPath, newSignature);
120362
+ }
120363
+ else {
120364
+ info.signature = newSignature;
120365
+ if (state.exportedModulesMap)
120366
+ ts.BuilderState.updateExportedFilesMapFromCache(state, state.currentAffectedFilesExportedModulesMap);
120367
+ }
120368
+ }
120369
+ }
120370
+ }
120371
+ if (writeFile)
120372
+ writeFile(fileName, text, writeByteOrderMark, onError, sourceFiles, data);
120373
+ else if (host.writeFile)
120374
+ host.writeFile(fileName, text, writeByteOrderMark, onError, sourceFiles, data);
120375
+ else
120376
+ state.program.writeFile(fileName, text, writeByteOrderMark, onError, sourceFiles, data);
120377
+ };
120330
120378
  }
120331
120379
  /**
120332
120380
  * Emits the JavaScript and declaration files.
@@ -120383,7 +120431,9 @@ var ts;
120383
120431
  }
120384
120432
  }
120385
120433
  }
120386
- return ts.Debug.checkDefined(state.program).emit(targetSourceFile, writeFile || ts.maybeBind(host, host.writeFile), cancellationToken, emitOnlyDtsFiles, customTransformers);
120434
+ return ts.Debug.checkDefined(state.program).emit(targetSourceFile, !ts.outFile(state.compilerOptions) && ts.getEmitDeclarations(state.compilerOptions) && !customTransformers ?
120435
+ getWriteFileUpdatingSignatureCallback(writeFile) :
120436
+ writeFile || ts.maybeBind(host, host.writeFile), cancellationToken, emitOnlyDtsFiles, customTransformers);
120387
120437
  }
120388
120438
  /**
120389
120439
  * Return the semantic diagnostics for the next affected file or undefined if iteration is complete
@@ -122575,6 +122625,7 @@ var ts;
122575
122625
  createHash: ts.maybeBind(host, host.createHash),
122576
122626
  readDirectory: ts.maybeBind(host, host.readDirectory),
122577
122627
  disableUseFileVersionAsSignature: host.disableUseFileVersionAsSignature,
122628
+ storeFilesChangingSignatureDuringEmit: host.storeFilesChangingSignatureDuringEmit,
122578
122629
  };
122579
122630
  function writeFile(fileName, text, writeByteOrderMark, onError) {
122580
122631
  try {
@@ -122634,6 +122685,7 @@ var ts;
122634
122685
  createHash: ts.maybeBind(system, system.createHash),
122635
122686
  createProgram: createProgram || ts.createEmitAndSemanticDiagnosticsBuilderProgram,
122636
122687
  disableUseFileVersionAsSignature: system.disableUseFileVersionAsSignature,
122688
+ storeFilesChangingSignatureDuringEmit: system.storeFilesChangingSignatureDuringEmit,
122637
122689
  };
122638
122690
  }
122639
122691
  ts.createProgramHost = createProgramHost;
@@ -122722,6 +122774,7 @@ var ts;
122722
122774
  var host = ts.createCompilerHostWorker(options, /*setParentNodes*/ undefined, system);
122723
122775
  host.createHash = ts.maybeBind(system, system.createHash);
122724
122776
  host.disableUseFileVersionAsSignature = system.disableUseFileVersionAsSignature;
122777
+ host.storeFilesChangingSignatureDuringEmit = system.storeFilesChangingSignatureDuringEmit;
122725
122778
  ts.setGetSourceFileAsHashVersioned(host, system);
122726
122779
  ts.changeCompilerHostLikeToUseCache(host, function (fileName) { return ts.toPath(fileName, host.getCurrentDirectory(), host.getCanonicalFileName); });
122727
122780
  return host;
@@ -131790,22 +131843,44 @@ var ts;
131790
131843
  }
131791
131844
  }
131792
131845
  function createSnippetPrinter(printerOptions) {
131846
+ var escapes;
131793
131847
  var baseWriter = ts.textChanges.createWriter(ts.getNewLineCharacter(printerOptions));
131794
131848
  var printer = ts.createPrinter(printerOptions, baseWriter);
131795
- var writer = __assign(__assign({}, baseWriter), { write: function (s) { return baseWriter.write(ts.escapeSnippetText(s)); }, nonEscapingWrite: baseWriter.write, writeLiteral: function (s) { return baseWriter.writeLiteral(ts.escapeSnippetText(s)); }, writeStringLiteral: function (s) { return baseWriter.writeStringLiteral(ts.escapeSnippetText(s)); }, writeSymbol: function (s, symbol) { return baseWriter.writeSymbol(ts.escapeSnippetText(s), symbol); }, writeParameter: function (s) { return baseWriter.writeParameter(ts.escapeSnippetText(s)); }, writeComment: function (s) { return baseWriter.writeComment(ts.escapeSnippetText(s)); }, writeProperty: function (s) { return baseWriter.writeProperty(ts.escapeSnippetText(s)); } });
131849
+ var writer = __assign(__assign({}, baseWriter), { write: function (s) { return escapingWrite(s, function () { return baseWriter.write(s); }); }, nonEscapingWrite: baseWriter.write, writeLiteral: function (s) { return escapingWrite(s, function () { return baseWriter.writeLiteral(s); }); }, writeStringLiteral: function (s) { return escapingWrite(s, function () { return baseWriter.writeStringLiteral(s); }); }, writeSymbol: function (s, symbol) { return escapingWrite(s, function () { return baseWriter.writeSymbol(s, symbol); }); }, writeParameter: function (s) { return escapingWrite(s, function () { return baseWriter.writeParameter(s); }); }, writeComment: function (s) { return escapingWrite(s, function () { return baseWriter.writeComment(s); }); }, writeProperty: function (s) { return escapingWrite(s, function () { return baseWriter.writeProperty(s); }); } });
131796
131850
  return {
131797
131851
  printSnippetList: printSnippetList,
131798
131852
  printAndFormatSnippetList: printAndFormatSnippetList,
131799
131853
  };
131854
+ // The formatter/scanner will have issues with snippet-escaped text,
131855
+ // so instead of writing the escaped text directly to the writer,
131856
+ // generate a set of changes that can be applied to the unescaped text
131857
+ // to escape it post-formatting.
131858
+ function escapingWrite(s, write) {
131859
+ var escaped = ts.escapeSnippetText(s);
131860
+ if (escaped !== s) {
131861
+ var start = baseWriter.getTextPos();
131862
+ write();
131863
+ var end = baseWriter.getTextPos();
131864
+ escapes = ts.append(escapes || (escapes = []), { newText: escaped, span: { start: start, length: end - start } });
131865
+ }
131866
+ else {
131867
+ write();
131868
+ }
131869
+ }
131800
131870
  /* Snippet-escaping version of `printer.printList`. */
131801
131871
  function printSnippetList(format, list, sourceFile) {
131872
+ var unescaped = printUnescapedSnippetList(format, list, sourceFile);
131873
+ return escapes ? ts.textChanges.applyChanges(unescaped, escapes) : unescaped;
131874
+ }
131875
+ function printUnescapedSnippetList(format, list, sourceFile) {
131876
+ escapes = undefined;
131802
131877
  writer.clear();
131803
131878
  printer.writeList(format, list, sourceFile, writer);
131804
131879
  return writer.getText();
131805
131880
  }
131806
131881
  function printAndFormatSnippetList(format, list, sourceFile, formatContext) {
131807
131882
  var syntheticFile = {
131808
- text: printSnippetList(format, list, sourceFile),
131883
+ text: printUnescapedSnippetList(format, list, sourceFile),
131809
131884
  getLineAndCharacterOfPosition: function (pos) {
131810
131885
  return ts.getLineAndCharacterOfPosition(this, pos);
131811
131886
  },
@@ -131817,7 +131892,10 @@ var ts;
131817
131892
  /* indentation */ 0,
131818
131893
  /* delta */ 0, __assign(__assign({}, formatContext), { options: formatOptions }));
131819
131894
  });
131820
- return ts.textChanges.applyChanges(syntheticFile.text, changes);
131895
+ var allChanges = escapes
131896
+ ? ts.stableSort(ts.concatenate(changes, escapes), function (a, b) { return ts.compareTextSpans(a.span, b.span); })
131897
+ : changes;
131898
+ return ts.textChanges.applyChanges(syntheticFile.text, allChanges);
131821
131899
  }
131822
131900
  }
131823
131901
  function originToCompletionEntryData(origin) {
@@ -2172,7 +2172,9 @@ declare namespace ts {
2172
2172
  export type ResolvedConfigFileName = string & {
2173
2173
  _isResolvedConfigFileName: never;
2174
2174
  };
2175
- export type WriteFileCallback = (fileName: string, data: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: readonly SourceFile[]) => void;
2175
+ export interface WriteFileCallbackData {
2176
+ }
2177
+ export type WriteFileCallback = (fileName: string, text: string, writeByteOrderMark: boolean, onError?: (message: string) => void, sourceFiles?: readonly SourceFile[], data?: WriteFileCallbackData) => void;
2176
2178
  export class OperationCanceledException {
2177
2179
  }
2178
2180
  export interface CancellationToken {