tsMode-YC564YPK.js 42 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176
  1. import {
  2. typescriptDefaults
  3. } from "./chunk-HBG4UVTE.js";
  4. import {
  5. editor_api_exports
  6. } from "./chunk-5Q5BEFT4.js";
  7. import "./chunk-FBUDSZGC.js";
  8. import {
  9. __publicField
  10. } from "./chunk-2LSFTFF7.js";
  11. // node_modules/.pnpm/monaco-editor@0.38.0/node_modules/monaco-editor/esm/vs/language/typescript/tsMode.js
  12. var __defProp = Object.defineProperty;
  13. var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
  14. var __getOwnPropNames = Object.getOwnPropertyNames;
  15. var __hasOwnProp = Object.prototype.hasOwnProperty;
  16. var __defNormalProp = (obj, key, value) => key in obj ? __defProp(obj, key, { enumerable: true, configurable: true, writable: true, value }) : obj[key] = value;
  17. var __copyProps = (to, from, except, desc) => {
  18. if (from && typeof from === "object" || typeof from === "function") {
  19. for (let key of __getOwnPropNames(from))
  20. if (!__hasOwnProp.call(to, key) && key !== except)
  21. __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
  22. }
  23. return to;
  24. };
  25. var __reExport = (target, mod, secondTarget) => (__copyProps(target, mod, "default"), secondTarget && __copyProps(secondTarget, mod, "default"));
  26. var __publicField2 = (obj, key, value) => {
  27. __defNormalProp(obj, typeof key !== "symbol" ? key + "" : key, value);
  28. return value;
  29. };
  30. var monaco_editor_core_exports = {};
  31. __reExport(monaco_editor_core_exports, editor_api_exports);
  32. var WorkerManager = class {
  33. constructor(_modeId, _defaults) {
  34. __publicField(this, "_configChangeListener");
  35. __publicField(this, "_updateExtraLibsToken");
  36. __publicField(this, "_extraLibsChangeListener");
  37. __publicField(this, "_worker");
  38. __publicField(this, "_client");
  39. this._modeId = _modeId;
  40. this._defaults = _defaults;
  41. this._worker = null;
  42. this._client = null;
  43. this._configChangeListener = this._defaults.onDidChange(() => this._stopWorker());
  44. this._updateExtraLibsToken = 0;
  45. this._extraLibsChangeListener = this._defaults.onDidExtraLibsChange(() => this._updateExtraLibs());
  46. }
  47. dispose() {
  48. this._configChangeListener.dispose();
  49. this._extraLibsChangeListener.dispose();
  50. this._stopWorker();
  51. }
  52. _stopWorker() {
  53. if (this._worker) {
  54. this._worker.dispose();
  55. this._worker = null;
  56. }
  57. this._client = null;
  58. }
  59. async _updateExtraLibs() {
  60. if (!this._worker) {
  61. return;
  62. }
  63. const myToken = ++this._updateExtraLibsToken;
  64. const proxy = await this._worker.getProxy();
  65. if (this._updateExtraLibsToken !== myToken) {
  66. return;
  67. }
  68. proxy.updateExtraLibs(this._defaults.getExtraLibs());
  69. }
  70. _getClient() {
  71. if (!this._client) {
  72. this._client = (async () => {
  73. this._worker = monaco_editor_core_exports.editor.createWebWorker({
  74. moduleId: "vs/language/typescript/tsWorker",
  75. label: this._modeId,
  76. keepIdleModels: true,
  77. createData: {
  78. compilerOptions: this._defaults.getCompilerOptions(),
  79. extraLibs: this._defaults.getExtraLibs(),
  80. customWorkerPath: this._defaults.workerOptions.customWorkerPath,
  81. inlayHintsOptions: this._defaults.inlayHintsOptions
  82. }
  83. });
  84. if (this._defaults.getEagerModelSync()) {
  85. return await this._worker.withSyncedResources(monaco_editor_core_exports.editor.getModels().filter((model) => model.getLanguageId() === this._modeId).map((model) => model.uri));
  86. }
  87. return await this._worker.getProxy();
  88. })();
  89. }
  90. return this._client;
  91. }
  92. async getLanguageServiceWorker(...resources) {
  93. const client = await this._getClient();
  94. if (this._worker) {
  95. await this._worker.withSyncedResources(resources);
  96. }
  97. return client;
  98. }
  99. };
  100. var libFileSet = {};
  101. libFileSet["lib.d.ts"] = true;
  102. libFileSet["lib.decorators.d.ts"] = true;
  103. libFileSet["lib.decorators.legacy.d.ts"] = true;
  104. libFileSet["lib.dom.d.ts"] = true;
  105. libFileSet["lib.dom.iterable.d.ts"] = true;
  106. libFileSet["lib.es2015.collection.d.ts"] = true;
  107. libFileSet["lib.es2015.core.d.ts"] = true;
  108. libFileSet["lib.es2015.d.ts"] = true;
  109. libFileSet["lib.es2015.generator.d.ts"] = true;
  110. libFileSet["lib.es2015.iterable.d.ts"] = true;
  111. libFileSet["lib.es2015.promise.d.ts"] = true;
  112. libFileSet["lib.es2015.proxy.d.ts"] = true;
  113. libFileSet["lib.es2015.reflect.d.ts"] = true;
  114. libFileSet["lib.es2015.symbol.d.ts"] = true;
  115. libFileSet["lib.es2015.symbol.wellknown.d.ts"] = true;
  116. libFileSet["lib.es2016.array.include.d.ts"] = true;
  117. libFileSet["lib.es2016.d.ts"] = true;
  118. libFileSet["lib.es2016.full.d.ts"] = true;
  119. libFileSet["lib.es2017.d.ts"] = true;
  120. libFileSet["lib.es2017.full.d.ts"] = true;
  121. libFileSet["lib.es2017.intl.d.ts"] = true;
  122. libFileSet["lib.es2017.object.d.ts"] = true;
  123. libFileSet["lib.es2017.sharedmemory.d.ts"] = true;
  124. libFileSet["lib.es2017.string.d.ts"] = true;
  125. libFileSet["lib.es2017.typedarrays.d.ts"] = true;
  126. libFileSet["lib.es2018.asyncgenerator.d.ts"] = true;
  127. libFileSet["lib.es2018.asynciterable.d.ts"] = true;
  128. libFileSet["lib.es2018.d.ts"] = true;
  129. libFileSet["lib.es2018.full.d.ts"] = true;
  130. libFileSet["lib.es2018.intl.d.ts"] = true;
  131. libFileSet["lib.es2018.promise.d.ts"] = true;
  132. libFileSet["lib.es2018.regexp.d.ts"] = true;
  133. libFileSet["lib.es2019.array.d.ts"] = true;
  134. libFileSet["lib.es2019.d.ts"] = true;
  135. libFileSet["lib.es2019.full.d.ts"] = true;
  136. libFileSet["lib.es2019.intl.d.ts"] = true;
  137. libFileSet["lib.es2019.object.d.ts"] = true;
  138. libFileSet["lib.es2019.string.d.ts"] = true;
  139. libFileSet["lib.es2019.symbol.d.ts"] = true;
  140. libFileSet["lib.es2020.bigint.d.ts"] = true;
  141. libFileSet["lib.es2020.d.ts"] = true;
  142. libFileSet["lib.es2020.date.d.ts"] = true;
  143. libFileSet["lib.es2020.full.d.ts"] = true;
  144. libFileSet["lib.es2020.intl.d.ts"] = true;
  145. libFileSet["lib.es2020.number.d.ts"] = true;
  146. libFileSet["lib.es2020.promise.d.ts"] = true;
  147. libFileSet["lib.es2020.sharedmemory.d.ts"] = true;
  148. libFileSet["lib.es2020.string.d.ts"] = true;
  149. libFileSet["lib.es2020.symbol.wellknown.d.ts"] = true;
  150. libFileSet["lib.es2021.d.ts"] = true;
  151. libFileSet["lib.es2021.full.d.ts"] = true;
  152. libFileSet["lib.es2021.intl.d.ts"] = true;
  153. libFileSet["lib.es2021.promise.d.ts"] = true;
  154. libFileSet["lib.es2021.string.d.ts"] = true;
  155. libFileSet["lib.es2021.weakref.d.ts"] = true;
  156. libFileSet["lib.es2022.array.d.ts"] = true;
  157. libFileSet["lib.es2022.d.ts"] = true;
  158. libFileSet["lib.es2022.error.d.ts"] = true;
  159. libFileSet["lib.es2022.full.d.ts"] = true;
  160. libFileSet["lib.es2022.intl.d.ts"] = true;
  161. libFileSet["lib.es2022.object.d.ts"] = true;
  162. libFileSet["lib.es2022.regexp.d.ts"] = true;
  163. libFileSet["lib.es2022.sharedmemory.d.ts"] = true;
  164. libFileSet["lib.es2022.string.d.ts"] = true;
  165. libFileSet["lib.es2023.array.d.ts"] = true;
  166. libFileSet["lib.es2023.d.ts"] = true;
  167. libFileSet["lib.es2023.full.d.ts"] = true;
  168. libFileSet["lib.es5.d.ts"] = true;
  169. libFileSet["lib.es6.d.ts"] = true;
  170. libFileSet["lib.esnext.d.ts"] = true;
  171. libFileSet["lib.esnext.full.d.ts"] = true;
  172. libFileSet["lib.esnext.intl.d.ts"] = true;
  173. libFileSet["lib.scripthost.d.ts"] = true;
  174. libFileSet["lib.webworker.d.ts"] = true;
  175. libFileSet["lib.webworker.importscripts.d.ts"] = true;
  176. libFileSet["lib.webworker.iterable.d.ts"] = true;
  177. function flattenDiagnosticMessageText(diag, newLine, indent = 0) {
  178. if (typeof diag === "string") {
  179. return diag;
  180. } else if (diag === void 0) {
  181. return "";
  182. }
  183. let result = "";
  184. if (indent) {
  185. result += newLine;
  186. for (let i = 0; i < indent; i++) {
  187. result += " ";
  188. }
  189. }
  190. result += diag.messageText;
  191. indent++;
  192. if (diag.next) {
  193. for (const kid of diag.next) {
  194. result += flattenDiagnosticMessageText(kid, newLine, indent);
  195. }
  196. }
  197. return result;
  198. }
  199. function displayPartsToString(displayParts) {
  200. if (displayParts) {
  201. return displayParts.map((displayPart) => displayPart.text).join("");
  202. }
  203. return "";
  204. }
  205. var Adapter = class {
  206. constructor(_worker) {
  207. this._worker = _worker;
  208. }
  209. _textSpanToRange(model, span) {
  210. let p1 = model.getPositionAt(span.start);
  211. let p2 = model.getPositionAt(span.start + span.length);
  212. let { lineNumber: startLineNumber, column: startColumn } = p1;
  213. let { lineNumber: endLineNumber, column: endColumn } = p2;
  214. return { startLineNumber, startColumn, endLineNumber, endColumn };
  215. }
  216. };
  217. var LibFiles = class {
  218. constructor(_worker) {
  219. __publicField(this, "_libFiles");
  220. __publicField(this, "_hasFetchedLibFiles");
  221. __publicField(this, "_fetchLibFilesPromise");
  222. this._worker = _worker;
  223. this._libFiles = {};
  224. this._hasFetchedLibFiles = false;
  225. this._fetchLibFilesPromise = null;
  226. }
  227. isLibFile(uri) {
  228. if (!uri) {
  229. return false;
  230. }
  231. if (uri.path.indexOf("/lib.") === 0) {
  232. return !!libFileSet[uri.path.slice(1)];
  233. }
  234. return false;
  235. }
  236. getOrCreateModel(fileName) {
  237. const uri = monaco_editor_core_exports.Uri.parse(fileName);
  238. const model = monaco_editor_core_exports.editor.getModel(uri);
  239. if (model) {
  240. return model;
  241. }
  242. if (this.isLibFile(uri) && this._hasFetchedLibFiles) {
  243. return monaco_editor_core_exports.editor.createModel(this._libFiles[uri.path.slice(1)], "typescript", uri);
  244. }
  245. const matchedLibFile = typescriptDefaults.getExtraLibs()[fileName];
  246. if (matchedLibFile) {
  247. return monaco_editor_core_exports.editor.createModel(matchedLibFile.content, "typescript", uri);
  248. }
  249. return null;
  250. }
  251. _containsLibFile(uris) {
  252. for (let uri of uris) {
  253. if (this.isLibFile(uri)) {
  254. return true;
  255. }
  256. }
  257. return false;
  258. }
  259. async fetchLibFilesIfNecessary(uris) {
  260. if (!this._containsLibFile(uris)) {
  261. return;
  262. }
  263. await this._fetchLibFiles();
  264. }
  265. _fetchLibFiles() {
  266. if (!this._fetchLibFilesPromise) {
  267. this._fetchLibFilesPromise = this._worker().then((w) => w.getLibFiles()).then((libFiles) => {
  268. this._hasFetchedLibFiles = true;
  269. this._libFiles = libFiles;
  270. });
  271. }
  272. return this._fetchLibFilesPromise;
  273. }
  274. };
  275. var DiagnosticsAdapter = class extends Adapter {
  276. constructor(_libFiles, _defaults, _selector, worker) {
  277. super(worker);
  278. __publicField(this, "_disposables", []);
  279. __publicField(this, "_listener", /* @__PURE__ */ Object.create(null));
  280. this._libFiles = _libFiles;
  281. this._defaults = _defaults;
  282. this._selector = _selector;
  283. const onModelAdd = (model) => {
  284. if (model.getLanguageId() !== _selector) {
  285. return;
  286. }
  287. const maybeValidate = () => {
  288. const { onlyVisible } = this._defaults.getDiagnosticsOptions();
  289. if (onlyVisible) {
  290. if (model.isAttachedToEditor()) {
  291. this._doValidate(model);
  292. }
  293. } else {
  294. this._doValidate(model);
  295. }
  296. };
  297. let handle;
  298. const changeSubscription = model.onDidChangeContent(() => {
  299. clearTimeout(handle);
  300. handle = window.setTimeout(maybeValidate, 500);
  301. });
  302. const visibleSubscription = model.onDidChangeAttached(() => {
  303. const { onlyVisible } = this._defaults.getDiagnosticsOptions();
  304. if (onlyVisible) {
  305. if (model.isAttachedToEditor()) {
  306. maybeValidate();
  307. } else {
  308. monaco_editor_core_exports.editor.setModelMarkers(model, this._selector, []);
  309. }
  310. }
  311. });
  312. this._listener[model.uri.toString()] = {
  313. dispose() {
  314. changeSubscription.dispose();
  315. visibleSubscription.dispose();
  316. clearTimeout(handle);
  317. }
  318. };
  319. maybeValidate();
  320. };
  321. const onModelRemoved = (model) => {
  322. monaco_editor_core_exports.editor.setModelMarkers(model, this._selector, []);
  323. const key = model.uri.toString();
  324. if (this._listener[key]) {
  325. this._listener[key].dispose();
  326. delete this._listener[key];
  327. }
  328. };
  329. this._disposables.push(monaco_editor_core_exports.editor.onDidCreateModel((model) => onModelAdd(model)));
  330. this._disposables.push(monaco_editor_core_exports.editor.onWillDisposeModel(onModelRemoved));
  331. this._disposables.push(monaco_editor_core_exports.editor.onDidChangeModelLanguage((event) => {
  332. onModelRemoved(event.model);
  333. onModelAdd(event.model);
  334. }));
  335. this._disposables.push({
  336. dispose() {
  337. for (const model of monaco_editor_core_exports.editor.getModels()) {
  338. onModelRemoved(model);
  339. }
  340. }
  341. });
  342. const recomputeDiagostics = () => {
  343. for (const model of monaco_editor_core_exports.editor.getModels()) {
  344. onModelRemoved(model);
  345. onModelAdd(model);
  346. }
  347. };
  348. this._disposables.push(this._defaults.onDidChange(recomputeDiagostics));
  349. this._disposables.push(this._defaults.onDidExtraLibsChange(recomputeDiagostics));
  350. monaco_editor_core_exports.editor.getModels().forEach((model) => onModelAdd(model));
  351. }
  352. dispose() {
  353. this._disposables.forEach((d) => d && d.dispose());
  354. this._disposables = [];
  355. }
  356. async _doValidate(model) {
  357. const worker = await this._worker(model.uri);
  358. if (model.isDisposed()) {
  359. return;
  360. }
  361. const promises = [];
  362. const { noSyntaxValidation, noSemanticValidation, noSuggestionDiagnostics } = this._defaults.getDiagnosticsOptions();
  363. if (!noSyntaxValidation) {
  364. promises.push(worker.getSyntacticDiagnostics(model.uri.toString()));
  365. }
  366. if (!noSemanticValidation) {
  367. promises.push(worker.getSemanticDiagnostics(model.uri.toString()));
  368. }
  369. if (!noSuggestionDiagnostics) {
  370. promises.push(worker.getSuggestionDiagnostics(model.uri.toString()));
  371. }
  372. const allDiagnostics = await Promise.all(promises);
  373. if (!allDiagnostics || model.isDisposed()) {
  374. return;
  375. }
  376. const diagnostics = allDiagnostics.reduce((p, c) => c.concat(p), []).filter((d) => (this._defaults.getDiagnosticsOptions().diagnosticCodesToIgnore || []).indexOf(d.code) === -1);
  377. const relatedUris = diagnostics.map((d) => d.relatedInformation || []).reduce((p, c) => c.concat(p), []).map((relatedInformation) => relatedInformation.file ? monaco_editor_core_exports.Uri.parse(relatedInformation.file.fileName) : null);
  378. await this._libFiles.fetchLibFilesIfNecessary(relatedUris);
  379. if (model.isDisposed()) {
  380. return;
  381. }
  382. monaco_editor_core_exports.editor.setModelMarkers(model, this._selector, diagnostics.map((d) => this._convertDiagnostics(model, d)));
  383. }
  384. _convertDiagnostics(model, diag) {
  385. const diagStart = diag.start || 0;
  386. const diagLength = diag.length || 1;
  387. const { lineNumber: startLineNumber, column: startColumn } = model.getPositionAt(diagStart);
  388. const { lineNumber: endLineNumber, column: endColumn } = model.getPositionAt(diagStart + diagLength);
  389. const tags = [];
  390. if (diag.reportsUnnecessary) {
  391. tags.push(monaco_editor_core_exports.MarkerTag.Unnecessary);
  392. }
  393. if (diag.reportsDeprecated) {
  394. tags.push(monaco_editor_core_exports.MarkerTag.Deprecated);
  395. }
  396. return {
  397. severity: this._tsDiagnosticCategoryToMarkerSeverity(diag.category),
  398. startLineNumber,
  399. startColumn,
  400. endLineNumber,
  401. endColumn,
  402. message: flattenDiagnosticMessageText(diag.messageText, "\n"),
  403. code: diag.code.toString(),
  404. tags,
  405. relatedInformation: this._convertRelatedInformation(model, diag.relatedInformation)
  406. };
  407. }
  408. _convertRelatedInformation(model, relatedInformation) {
  409. if (!relatedInformation) {
  410. return [];
  411. }
  412. const result = [];
  413. relatedInformation.forEach((info) => {
  414. let relatedResource = model;
  415. if (info.file) {
  416. relatedResource = this._libFiles.getOrCreateModel(info.file.fileName);
  417. }
  418. if (!relatedResource) {
  419. return;
  420. }
  421. const infoStart = info.start || 0;
  422. const infoLength = info.length || 1;
  423. const { lineNumber: startLineNumber, column: startColumn } = relatedResource.getPositionAt(infoStart);
  424. const { lineNumber: endLineNumber, column: endColumn } = relatedResource.getPositionAt(infoStart + infoLength);
  425. result.push({
  426. resource: relatedResource.uri,
  427. startLineNumber,
  428. startColumn,
  429. endLineNumber,
  430. endColumn,
  431. message: flattenDiagnosticMessageText(info.messageText, "\n")
  432. });
  433. });
  434. return result;
  435. }
  436. _tsDiagnosticCategoryToMarkerSeverity(category) {
  437. switch (category) {
  438. case 1:
  439. return monaco_editor_core_exports.MarkerSeverity.Error;
  440. case 3:
  441. return monaco_editor_core_exports.MarkerSeverity.Info;
  442. case 0:
  443. return monaco_editor_core_exports.MarkerSeverity.Warning;
  444. case 2:
  445. return monaco_editor_core_exports.MarkerSeverity.Hint;
  446. }
  447. return monaco_editor_core_exports.MarkerSeverity.Info;
  448. }
  449. };
  450. var SuggestAdapter = class extends Adapter {
  451. get triggerCharacters() {
  452. return ["."];
  453. }
  454. async provideCompletionItems(model, position, _context, token) {
  455. const wordInfo = model.getWordUntilPosition(position);
  456. const wordRange = new monaco_editor_core_exports.Range(position.lineNumber, wordInfo.startColumn, position.lineNumber, wordInfo.endColumn);
  457. const resource = model.uri;
  458. const offset = model.getOffsetAt(position);
  459. const worker = await this._worker(resource);
  460. if (model.isDisposed()) {
  461. return;
  462. }
  463. const info = await worker.getCompletionsAtPosition(resource.toString(), offset);
  464. if (!info || model.isDisposed()) {
  465. return;
  466. }
  467. const suggestions = info.entries.map((entry) => {
  468. let range = wordRange;
  469. if (entry.replacementSpan) {
  470. const p1 = model.getPositionAt(entry.replacementSpan.start);
  471. const p2 = model.getPositionAt(entry.replacementSpan.start + entry.replacementSpan.length);
  472. range = new monaco_editor_core_exports.Range(p1.lineNumber, p1.column, p2.lineNumber, p2.column);
  473. }
  474. const tags = [];
  475. if (entry.kindModifiers !== void 0 && entry.kindModifiers.indexOf("deprecated") !== -1) {
  476. tags.push(monaco_editor_core_exports.languages.CompletionItemTag.Deprecated);
  477. }
  478. return {
  479. uri: resource,
  480. position,
  481. offset,
  482. range,
  483. label: entry.name,
  484. insertText: entry.name,
  485. sortText: entry.sortText,
  486. kind: SuggestAdapter.convertKind(entry.kind),
  487. tags
  488. };
  489. });
  490. return {
  491. suggestions
  492. };
  493. }
  494. async resolveCompletionItem(item, token) {
  495. const myItem = item;
  496. const resource = myItem.uri;
  497. const position = myItem.position;
  498. const offset = myItem.offset;
  499. const worker = await this._worker(resource);
  500. const details = await worker.getCompletionEntryDetails(resource.toString(), offset, myItem.label);
  501. if (!details) {
  502. return myItem;
  503. }
  504. return {
  505. uri: resource,
  506. position,
  507. label: details.name,
  508. kind: SuggestAdapter.convertKind(details.kind),
  509. detail: displayPartsToString(details.displayParts),
  510. documentation: {
  511. value: SuggestAdapter.createDocumentationString(details)
  512. }
  513. };
  514. }
  515. static convertKind(kind) {
  516. switch (kind) {
  517. case Kind.primitiveType:
  518. case Kind.keyword:
  519. return monaco_editor_core_exports.languages.CompletionItemKind.Keyword;
  520. case Kind.variable:
  521. case Kind.localVariable:
  522. return monaco_editor_core_exports.languages.CompletionItemKind.Variable;
  523. case Kind.memberVariable:
  524. case Kind.memberGetAccessor:
  525. case Kind.memberSetAccessor:
  526. return monaco_editor_core_exports.languages.CompletionItemKind.Field;
  527. case Kind.function:
  528. case Kind.memberFunction:
  529. case Kind.constructSignature:
  530. case Kind.callSignature:
  531. case Kind.indexSignature:
  532. return monaco_editor_core_exports.languages.CompletionItemKind.Function;
  533. case Kind.enum:
  534. return monaco_editor_core_exports.languages.CompletionItemKind.Enum;
  535. case Kind.module:
  536. return monaco_editor_core_exports.languages.CompletionItemKind.Module;
  537. case Kind.class:
  538. return monaco_editor_core_exports.languages.CompletionItemKind.Class;
  539. case Kind.interface:
  540. return monaco_editor_core_exports.languages.CompletionItemKind.Interface;
  541. case Kind.warning:
  542. return monaco_editor_core_exports.languages.CompletionItemKind.File;
  543. }
  544. return monaco_editor_core_exports.languages.CompletionItemKind.Property;
  545. }
  546. static createDocumentationString(details) {
  547. let documentationString = displayPartsToString(details.documentation);
  548. if (details.tags) {
  549. for (const tag of details.tags) {
  550. documentationString += `
  551. ${tagToString(tag)}`;
  552. }
  553. }
  554. return documentationString;
  555. }
  556. };
  557. function tagToString(tag) {
  558. let tagLabel = `*@${tag.name}*`;
  559. if (tag.name === "param" && tag.text) {
  560. const [paramName, ...rest] = tag.text;
  561. tagLabel += `\`${paramName.text}\``;
  562. if (rest.length > 0)
  563. tagLabel += ` — ${rest.map((r) => r.text).join(" ")}`;
  564. } else if (Array.isArray(tag.text)) {
  565. tagLabel += ` — ${tag.text.map((r) => r.text).join(" ")}`;
  566. } else if (tag.text) {
  567. tagLabel += ` — ${tag.text}`;
  568. }
  569. return tagLabel;
  570. }
  571. var SignatureHelpAdapter = class extends Adapter {
  572. constructor() {
  573. super(...arguments);
  574. __publicField(this, "signatureHelpTriggerCharacters", ["(", ","]);
  575. }
  576. static _toSignatureHelpTriggerReason(context) {
  577. switch (context.triggerKind) {
  578. case monaco_editor_core_exports.languages.SignatureHelpTriggerKind.TriggerCharacter:
  579. if (context.triggerCharacter) {
  580. if (context.isRetrigger) {
  581. return { kind: "retrigger", triggerCharacter: context.triggerCharacter };
  582. } else {
  583. return { kind: "characterTyped", triggerCharacter: context.triggerCharacter };
  584. }
  585. } else {
  586. return { kind: "invoked" };
  587. }
  588. case monaco_editor_core_exports.languages.SignatureHelpTriggerKind.ContentChange:
  589. return context.isRetrigger ? { kind: "retrigger" } : { kind: "invoked" };
  590. case monaco_editor_core_exports.languages.SignatureHelpTriggerKind.Invoke:
  591. default:
  592. return { kind: "invoked" };
  593. }
  594. }
  595. async provideSignatureHelp(model, position, token, context) {
  596. const resource = model.uri;
  597. const offset = model.getOffsetAt(position);
  598. const worker = await this._worker(resource);
  599. if (model.isDisposed()) {
  600. return;
  601. }
  602. const info = await worker.getSignatureHelpItems(resource.toString(), offset, {
  603. triggerReason: SignatureHelpAdapter._toSignatureHelpTriggerReason(context)
  604. });
  605. if (!info || model.isDisposed()) {
  606. return;
  607. }
  608. const ret = {
  609. activeSignature: info.selectedItemIndex,
  610. activeParameter: info.argumentIndex,
  611. signatures: []
  612. };
  613. info.items.forEach((item) => {
  614. const signature = {
  615. label: "",
  616. parameters: []
  617. };
  618. signature.documentation = {
  619. value: displayPartsToString(item.documentation)
  620. };
  621. signature.label += displayPartsToString(item.prefixDisplayParts);
  622. item.parameters.forEach((p, i, a) => {
  623. const label = displayPartsToString(p.displayParts);
  624. const parameter = {
  625. label,
  626. documentation: {
  627. value: displayPartsToString(p.documentation)
  628. }
  629. };
  630. signature.label += label;
  631. signature.parameters.push(parameter);
  632. if (i < a.length - 1) {
  633. signature.label += displayPartsToString(item.separatorDisplayParts);
  634. }
  635. });
  636. signature.label += displayPartsToString(item.suffixDisplayParts);
  637. ret.signatures.push(signature);
  638. });
  639. return {
  640. value: ret,
  641. dispose() {
  642. }
  643. };
  644. }
  645. };
  646. var QuickInfoAdapter = class extends Adapter {
  647. async provideHover(model, position, token) {
  648. const resource = model.uri;
  649. const offset = model.getOffsetAt(position);
  650. const worker = await this._worker(resource);
  651. if (model.isDisposed()) {
  652. return;
  653. }
  654. const info = await worker.getQuickInfoAtPosition(resource.toString(), offset);
  655. if (!info || model.isDisposed()) {
  656. return;
  657. }
  658. const documentation = displayPartsToString(info.documentation);
  659. const tags = info.tags ? info.tags.map((tag) => tagToString(tag)).join(" \n\n") : "";
  660. const contents = displayPartsToString(info.displayParts);
  661. return {
  662. range: this._textSpanToRange(model, info.textSpan),
  663. contents: [
  664. {
  665. value: "```typescript\n" + contents + "\n```\n"
  666. },
  667. {
  668. value: documentation + (tags ? "\n\n" + tags : "")
  669. }
  670. ]
  671. };
  672. }
  673. };
  674. var DocumentHighlightAdapter = class extends Adapter {
  675. async provideDocumentHighlights(model, position, token) {
  676. const resource = model.uri;
  677. const offset = model.getOffsetAt(position);
  678. const worker = await this._worker(resource);
  679. if (model.isDisposed()) {
  680. return;
  681. }
  682. const entries = await worker.getDocumentHighlights(resource.toString(), offset, [
  683. resource.toString()
  684. ]);
  685. if (!entries || model.isDisposed()) {
  686. return;
  687. }
  688. return entries.flatMap((entry) => {
  689. return entry.highlightSpans.map((highlightSpans) => {
  690. return {
  691. range: this._textSpanToRange(model, highlightSpans.textSpan),
  692. kind: highlightSpans.kind === "writtenReference" ? monaco_editor_core_exports.languages.DocumentHighlightKind.Write : monaco_editor_core_exports.languages.DocumentHighlightKind.Text
  693. };
  694. });
  695. });
  696. }
  697. };
  698. var DefinitionAdapter = class extends Adapter {
  699. constructor(_libFiles, worker) {
  700. super(worker);
  701. this._libFiles = _libFiles;
  702. }
  703. async provideDefinition(model, position, token) {
  704. const resource = model.uri;
  705. const offset = model.getOffsetAt(position);
  706. const worker = await this._worker(resource);
  707. if (model.isDisposed()) {
  708. return;
  709. }
  710. const entries = await worker.getDefinitionAtPosition(resource.toString(), offset);
  711. if (!entries || model.isDisposed()) {
  712. return;
  713. }
  714. await this._libFiles.fetchLibFilesIfNecessary(entries.map((entry) => monaco_editor_core_exports.Uri.parse(entry.fileName)));
  715. if (model.isDisposed()) {
  716. return;
  717. }
  718. const result = [];
  719. for (let entry of entries) {
  720. const refModel = this._libFiles.getOrCreateModel(entry.fileName);
  721. if (refModel) {
  722. result.push({
  723. uri: refModel.uri,
  724. range: this._textSpanToRange(refModel, entry.textSpan)
  725. });
  726. }
  727. }
  728. return result;
  729. }
  730. };
  731. var ReferenceAdapter = class extends Adapter {
  732. constructor(_libFiles, worker) {
  733. super(worker);
  734. this._libFiles = _libFiles;
  735. }
  736. async provideReferences(model, position, context, token) {
  737. const resource = model.uri;
  738. const offset = model.getOffsetAt(position);
  739. const worker = await this._worker(resource);
  740. if (model.isDisposed()) {
  741. return;
  742. }
  743. const entries = await worker.getReferencesAtPosition(resource.toString(), offset);
  744. if (!entries || model.isDisposed()) {
  745. return;
  746. }
  747. await this._libFiles.fetchLibFilesIfNecessary(entries.map((entry) => monaco_editor_core_exports.Uri.parse(entry.fileName)));
  748. if (model.isDisposed()) {
  749. return;
  750. }
  751. const result = [];
  752. for (let entry of entries) {
  753. const refModel = this._libFiles.getOrCreateModel(entry.fileName);
  754. if (refModel) {
  755. result.push({
  756. uri: refModel.uri,
  757. range: this._textSpanToRange(refModel, entry.textSpan)
  758. });
  759. }
  760. }
  761. return result;
  762. }
  763. };
  764. var OutlineAdapter = class extends Adapter {
  765. async provideDocumentSymbols(model, token) {
  766. const resource = model.uri;
  767. const worker = await this._worker(resource);
  768. if (model.isDisposed()) {
  769. return;
  770. }
  771. const root = await worker.getNavigationTree(resource.toString());
  772. if (!root || model.isDisposed()) {
  773. return;
  774. }
  775. const convert = (item, containerLabel) => {
  776. const result2 = {
  777. name: item.text,
  778. detail: "",
  779. kind: outlineTypeTable[item.kind] || monaco_editor_core_exports.languages.SymbolKind.Variable,
  780. range: this._textSpanToRange(model, item.spans[0]),
  781. selectionRange: this._textSpanToRange(model, item.spans[0]),
  782. tags: [],
  783. children: item.childItems?.map((child) => convert(child, item.text)),
  784. containerName: containerLabel
  785. };
  786. return result2;
  787. };
  788. const result = root.childItems ? root.childItems.map((item) => convert(item)) : [];
  789. return result;
  790. }
  791. };
  792. var Kind = class {
  793. };
  794. __publicField2(Kind, "unknown", "");
  795. __publicField2(Kind, "keyword", "keyword");
  796. __publicField2(Kind, "script", "script");
  797. __publicField2(Kind, "module", "module");
  798. __publicField2(Kind, "class", "class");
  799. __publicField2(Kind, "interface", "interface");
  800. __publicField2(Kind, "type", "type");
  801. __publicField2(Kind, "enum", "enum");
  802. __publicField2(Kind, "variable", "var");
  803. __publicField2(Kind, "localVariable", "local var");
  804. __publicField2(Kind, "function", "function");
  805. __publicField2(Kind, "localFunction", "local function");
  806. __publicField2(Kind, "memberFunction", "method");
  807. __publicField2(Kind, "memberGetAccessor", "getter");
  808. __publicField2(Kind, "memberSetAccessor", "setter");
  809. __publicField2(Kind, "memberVariable", "property");
  810. __publicField2(Kind, "constructorImplementation", "constructor");
  811. __publicField2(Kind, "callSignature", "call");
  812. __publicField2(Kind, "indexSignature", "index");
  813. __publicField2(Kind, "constructSignature", "construct");
  814. __publicField2(Kind, "parameter", "parameter");
  815. __publicField2(Kind, "typeParameter", "type parameter");
  816. __publicField2(Kind, "primitiveType", "primitive type");
  817. __publicField2(Kind, "label", "label");
  818. __publicField2(Kind, "alias", "alias");
  819. __publicField2(Kind, "const", "const");
  820. __publicField2(Kind, "let", "let");
  821. __publicField2(Kind, "warning", "warning");
  822. var outlineTypeTable = /* @__PURE__ */ Object.create(null);
  823. outlineTypeTable[Kind.module] = monaco_editor_core_exports.languages.SymbolKind.Module;
  824. outlineTypeTable[Kind.class] = monaco_editor_core_exports.languages.SymbolKind.Class;
  825. outlineTypeTable[Kind.enum] = monaco_editor_core_exports.languages.SymbolKind.Enum;
  826. outlineTypeTable[Kind.interface] = monaco_editor_core_exports.languages.SymbolKind.Interface;
  827. outlineTypeTable[Kind.memberFunction] = monaco_editor_core_exports.languages.SymbolKind.Method;
  828. outlineTypeTable[Kind.memberVariable] = monaco_editor_core_exports.languages.SymbolKind.Property;
  829. outlineTypeTable[Kind.memberGetAccessor] = monaco_editor_core_exports.languages.SymbolKind.Property;
  830. outlineTypeTable[Kind.memberSetAccessor] = monaco_editor_core_exports.languages.SymbolKind.Property;
  831. outlineTypeTable[Kind.variable] = monaco_editor_core_exports.languages.SymbolKind.Variable;
  832. outlineTypeTable[Kind.const] = monaco_editor_core_exports.languages.SymbolKind.Variable;
  833. outlineTypeTable[Kind.localVariable] = monaco_editor_core_exports.languages.SymbolKind.Variable;
  834. outlineTypeTable[Kind.variable] = monaco_editor_core_exports.languages.SymbolKind.Variable;
  835. outlineTypeTable[Kind.function] = monaco_editor_core_exports.languages.SymbolKind.Function;
  836. outlineTypeTable[Kind.localFunction] = monaco_editor_core_exports.languages.SymbolKind.Function;
  837. var FormatHelper = class extends Adapter {
  838. static _convertOptions(options) {
  839. return {
  840. ConvertTabsToSpaces: options.insertSpaces,
  841. TabSize: options.tabSize,
  842. IndentSize: options.tabSize,
  843. IndentStyle: 2,
  844. NewLineCharacter: "\n",
  845. InsertSpaceAfterCommaDelimiter: true,
  846. InsertSpaceAfterSemicolonInForStatements: true,
  847. InsertSpaceBeforeAndAfterBinaryOperators: true,
  848. InsertSpaceAfterKeywordsInControlFlowStatements: true,
  849. InsertSpaceAfterFunctionKeywordForAnonymousFunctions: true,
  850. InsertSpaceAfterOpeningAndBeforeClosingNonemptyParenthesis: false,
  851. InsertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: false,
  852. InsertSpaceAfterOpeningAndBeforeClosingTemplateStringBraces: false,
  853. PlaceOpenBraceOnNewLineForControlBlocks: false,
  854. PlaceOpenBraceOnNewLineForFunctions: false
  855. };
  856. }
  857. _convertTextChanges(model, change) {
  858. return {
  859. text: change.newText,
  860. range: this._textSpanToRange(model, change.span)
  861. };
  862. }
  863. };
  864. var FormatAdapter = class extends FormatHelper {
  865. constructor() {
  866. super(...arguments);
  867. __publicField(this, "canFormatMultipleRanges", false);
  868. }
  869. async provideDocumentRangeFormattingEdits(model, range, options, token) {
  870. const resource = model.uri;
  871. const startOffset = model.getOffsetAt({
  872. lineNumber: range.startLineNumber,
  873. column: range.startColumn
  874. });
  875. const endOffset = model.getOffsetAt({
  876. lineNumber: range.endLineNumber,
  877. column: range.endColumn
  878. });
  879. const worker = await this._worker(resource);
  880. if (model.isDisposed()) {
  881. return;
  882. }
  883. const edits = await worker.getFormattingEditsForRange(resource.toString(), startOffset, endOffset, FormatHelper._convertOptions(options));
  884. if (!edits || model.isDisposed()) {
  885. return;
  886. }
  887. return edits.map((edit) => this._convertTextChanges(model, edit));
  888. }
  889. };
  890. var FormatOnTypeAdapter = class extends FormatHelper {
  891. get autoFormatTriggerCharacters() {
  892. return [";", "}", "\n"];
  893. }
  894. async provideOnTypeFormattingEdits(model, position, ch, options, token) {
  895. const resource = model.uri;
  896. const offset = model.getOffsetAt(position);
  897. const worker = await this._worker(resource);
  898. if (model.isDisposed()) {
  899. return;
  900. }
  901. const edits = await worker.getFormattingEditsAfterKeystroke(resource.toString(), offset, ch, FormatHelper._convertOptions(options));
  902. if (!edits || model.isDisposed()) {
  903. return;
  904. }
  905. return edits.map((edit) => this._convertTextChanges(model, edit));
  906. }
  907. };
  908. var CodeActionAdaptor = class extends FormatHelper {
  909. async provideCodeActions(model, range, context, token) {
  910. const resource = model.uri;
  911. const start = model.getOffsetAt({
  912. lineNumber: range.startLineNumber,
  913. column: range.startColumn
  914. });
  915. const end = model.getOffsetAt({
  916. lineNumber: range.endLineNumber,
  917. column: range.endColumn
  918. });
  919. const formatOptions = FormatHelper._convertOptions(model.getOptions());
  920. const errorCodes = context.markers.filter((m) => m.code).map((m) => m.code).map(Number);
  921. const worker = await this._worker(resource);
  922. if (model.isDisposed()) {
  923. return;
  924. }
  925. const codeFixes = await worker.getCodeFixesAtPosition(resource.toString(), start, end, errorCodes, formatOptions);
  926. if (!codeFixes || model.isDisposed()) {
  927. return { actions: [], dispose: () => {
  928. } };
  929. }
  930. const actions = codeFixes.filter((fix) => {
  931. return fix.changes.filter((change) => change.isNewFile).length === 0;
  932. }).map((fix) => {
  933. return this._tsCodeFixActionToMonacoCodeAction(model, context, fix);
  934. });
  935. return {
  936. actions,
  937. dispose: () => {
  938. }
  939. };
  940. }
  941. _tsCodeFixActionToMonacoCodeAction(model, context, codeFix) {
  942. const edits = [];
  943. for (const change of codeFix.changes) {
  944. for (const textChange of change.textChanges) {
  945. edits.push({
  946. resource: model.uri,
  947. versionId: void 0,
  948. textEdit: {
  949. range: this._textSpanToRange(model, textChange.span),
  950. text: textChange.newText
  951. }
  952. });
  953. }
  954. }
  955. const action = {
  956. title: codeFix.description,
  957. edit: { edits },
  958. diagnostics: context.markers,
  959. kind: "quickfix"
  960. };
  961. return action;
  962. }
  963. };
  964. var RenameAdapter = class extends Adapter {
  965. constructor(_libFiles, worker) {
  966. super(worker);
  967. this._libFiles = _libFiles;
  968. }
  969. async provideRenameEdits(model, position, newName, token) {
  970. const resource = model.uri;
  971. const fileName = resource.toString();
  972. const offset = model.getOffsetAt(position);
  973. const worker = await this._worker(resource);
  974. if (model.isDisposed()) {
  975. return;
  976. }
  977. const renameInfo = await worker.getRenameInfo(fileName, offset, {
  978. allowRenameOfImportPath: false
  979. });
  980. if (renameInfo.canRename === false) {
  981. return {
  982. edits: [],
  983. rejectReason: renameInfo.localizedErrorMessage
  984. };
  985. }
  986. if (renameInfo.fileToRename !== void 0) {
  987. throw new Error("Renaming files is not supported.");
  988. }
  989. const renameLocations = await worker.findRenameLocations(fileName, offset, false, false, false);
  990. if (!renameLocations || model.isDisposed()) {
  991. return;
  992. }
  993. const edits = [];
  994. for (const renameLocation of renameLocations) {
  995. const model2 = this._libFiles.getOrCreateModel(renameLocation.fileName);
  996. if (model2) {
  997. edits.push({
  998. resource: model2.uri,
  999. versionId: void 0,
  1000. textEdit: {
  1001. range: this._textSpanToRange(model2, renameLocation.textSpan),
  1002. text: newName
  1003. }
  1004. });
  1005. } else {
  1006. throw new Error(`Unknown file ${renameLocation.fileName}.`);
  1007. }
  1008. }
  1009. return { edits };
  1010. }
  1011. };
  1012. var InlayHintsAdapter = class extends Adapter {
  1013. async provideInlayHints(model, range, token) {
  1014. const resource = model.uri;
  1015. const fileName = resource.toString();
  1016. const start = model.getOffsetAt({
  1017. lineNumber: range.startLineNumber,
  1018. column: range.startColumn
  1019. });
  1020. const end = model.getOffsetAt({
  1021. lineNumber: range.endLineNumber,
  1022. column: range.endColumn
  1023. });
  1024. const worker = await this._worker(resource);
  1025. if (model.isDisposed()) {
  1026. return null;
  1027. }
  1028. const tsHints = await worker.provideInlayHints(fileName, start, end);
  1029. const hints = tsHints.map((hint) => {
  1030. return {
  1031. ...hint,
  1032. label: hint.text,
  1033. position: model.getPositionAt(hint.position),
  1034. kind: this._convertHintKind(hint.kind)
  1035. };
  1036. });
  1037. return { hints, dispose: () => {
  1038. } };
  1039. }
  1040. _convertHintKind(kind) {
  1041. switch (kind) {
  1042. case "Parameter":
  1043. return monaco_editor_core_exports.languages.InlayHintKind.Parameter;
  1044. case "Type":
  1045. return monaco_editor_core_exports.languages.InlayHintKind.Type;
  1046. default:
  1047. return monaco_editor_core_exports.languages.InlayHintKind.Type;
  1048. }
  1049. }
  1050. };
  1051. var javaScriptWorker;
  1052. var typeScriptWorker;
  1053. function setupTypeScript(defaults) {
  1054. typeScriptWorker = setupMode(defaults, "typescript");
  1055. }
  1056. function setupJavaScript(defaults) {
  1057. javaScriptWorker = setupMode(defaults, "javascript");
  1058. }
  1059. function getJavaScriptWorker() {
  1060. return new Promise((resolve, reject) => {
  1061. if (!javaScriptWorker) {
  1062. return reject("JavaScript not registered!");
  1063. }
  1064. resolve(javaScriptWorker);
  1065. });
  1066. }
  1067. function getTypeScriptWorker() {
  1068. return new Promise((resolve, reject) => {
  1069. if (!typeScriptWorker) {
  1070. return reject("TypeScript not registered!");
  1071. }
  1072. resolve(typeScriptWorker);
  1073. });
  1074. }
  1075. function setupMode(defaults, modeId) {
  1076. const disposables = [];
  1077. const providers = [];
  1078. const client = new WorkerManager(modeId, defaults);
  1079. disposables.push(client);
  1080. const worker = (...uris) => {
  1081. return client.getLanguageServiceWorker(...uris);
  1082. };
  1083. const libFiles = new LibFiles(worker);
  1084. function registerProviders() {
  1085. const { modeConfiguration } = defaults;
  1086. disposeAll(providers);
  1087. if (modeConfiguration.completionItems) {
  1088. providers.push(monaco_editor_core_exports.languages.registerCompletionItemProvider(modeId, new SuggestAdapter(worker)));
  1089. }
  1090. if (modeConfiguration.signatureHelp) {
  1091. providers.push(monaco_editor_core_exports.languages.registerSignatureHelpProvider(modeId, new SignatureHelpAdapter(worker)));
  1092. }
  1093. if (modeConfiguration.hovers) {
  1094. providers.push(monaco_editor_core_exports.languages.registerHoverProvider(modeId, new QuickInfoAdapter(worker)));
  1095. }
  1096. if (modeConfiguration.documentHighlights) {
  1097. providers.push(monaco_editor_core_exports.languages.registerDocumentHighlightProvider(modeId, new DocumentHighlightAdapter(worker)));
  1098. }
  1099. if (modeConfiguration.definitions) {
  1100. providers.push(monaco_editor_core_exports.languages.registerDefinitionProvider(modeId, new DefinitionAdapter(libFiles, worker)));
  1101. }
  1102. if (modeConfiguration.references) {
  1103. providers.push(monaco_editor_core_exports.languages.registerReferenceProvider(modeId, new ReferenceAdapter(libFiles, worker)));
  1104. }
  1105. if (modeConfiguration.documentSymbols) {
  1106. providers.push(monaco_editor_core_exports.languages.registerDocumentSymbolProvider(modeId, new OutlineAdapter(worker)));
  1107. }
  1108. if (modeConfiguration.rename) {
  1109. providers.push(monaco_editor_core_exports.languages.registerRenameProvider(modeId, new RenameAdapter(libFiles, worker)));
  1110. }
  1111. if (modeConfiguration.documentRangeFormattingEdits) {
  1112. providers.push(monaco_editor_core_exports.languages.registerDocumentRangeFormattingEditProvider(modeId, new FormatAdapter(worker)));
  1113. }
  1114. if (modeConfiguration.onTypeFormattingEdits) {
  1115. providers.push(monaco_editor_core_exports.languages.registerOnTypeFormattingEditProvider(modeId, new FormatOnTypeAdapter(worker)));
  1116. }
  1117. if (modeConfiguration.codeActions) {
  1118. providers.push(monaco_editor_core_exports.languages.registerCodeActionProvider(modeId, new CodeActionAdaptor(worker)));
  1119. }
  1120. if (modeConfiguration.inlayHints) {
  1121. providers.push(monaco_editor_core_exports.languages.registerInlayHintsProvider(modeId, new InlayHintsAdapter(worker)));
  1122. }
  1123. if (modeConfiguration.diagnostics) {
  1124. providers.push(new DiagnosticsAdapter(libFiles, defaults, modeId, worker));
  1125. }
  1126. }
  1127. registerProviders();
  1128. disposables.push(asDisposable(providers));
  1129. return worker;
  1130. }
  1131. function asDisposable(disposables) {
  1132. return { dispose: () => disposeAll(disposables) };
  1133. }
  1134. function disposeAll(disposables) {
  1135. while (disposables.length) {
  1136. disposables.pop().dispose();
  1137. }
  1138. }
  1139. export {
  1140. Adapter,
  1141. CodeActionAdaptor,
  1142. DefinitionAdapter,
  1143. DiagnosticsAdapter,
  1144. DocumentHighlightAdapter,
  1145. FormatAdapter,
  1146. FormatHelper,
  1147. FormatOnTypeAdapter,
  1148. InlayHintsAdapter,
  1149. Kind,
  1150. LibFiles,
  1151. OutlineAdapter,
  1152. QuickInfoAdapter,
  1153. ReferenceAdapter,
  1154. RenameAdapter,
  1155. SignatureHelpAdapter,
  1156. SuggestAdapter,
  1157. WorkerManager,
  1158. flattenDiagnosticMessageText,
  1159. getJavaScriptWorker,
  1160. getTypeScriptWorker,
  1161. setupJavaScript,
  1162. setupTypeScript
  1163. };
  1164. /*! Bundled license information:
  1165. monaco-editor/esm/vs/language/typescript/tsMode.js:
  1166. (*!-----------------------------------------------------------------------------
  1167. * Copyright (c) Microsoft Corporation. All rights reserved.
  1168. * Version: 0.38.0(0e330ae453813de4e6cf272460fb79c7117073d0)
  1169. * Released under the MIT license
  1170. * https://github.com/microsoft/monaco-editor/blob/main/LICENSE.txt
  1171. *-----------------------------------------------------------------------------*)
  1172. */
  1173. //# sourceMappingURL=tsMode-YC564YPK.js.map