2927123a69019fa062fcd57e4c953ebf1532bcd0706af935cafbd0bcb8f5a7b5e2a85ce83cf00679a1eb452611bdecadc5089ec915d49918c76c83581ce238 43 KB

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