modern-monaco 0.1.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -93,7 +93,7 @@ export default {
93
93
  },
94
94
  );
95
95
  return new Response(
96
- /* html */`
96
+ /* html */ `
97
97
  ${editorHTML}
98
98
  <script type="module">
99
99
  import { hydrate } from "https://esm.sh/modern-monaco";
@@ -337,8 +337,6 @@ export interface LSPLanguageConfig {
337
337
  compilerOptions?: ts.CompilerOptions;
338
338
  /** The global import map. */
339
339
  importMap?: ImportMap;
340
- /** The version of TypeScript from the CDN. Default: ">= 5.0.0" */
341
- tsVersion?: string;
342
340
  };
343
341
  }
344
342
  ```
@@ -348,7 +346,7 @@ export interface LSPLanguageConfig {
348
346
  modern-monaco uses [import maps](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/script/type/importmap) to resolve **bare specifier** imports in JavaScript/TypeScript. By default, modern-monaco detects the `importmap` from the root `index.html` in the workspace.
349
347
 
350
348
  ```js
351
- const indexHtml = /* html */`<!DOCTYPE html>
349
+ const indexHtml = /* html */ `<!DOCTYPE html>
352
350
  <html>
353
351
  <head>
354
352
  <script type="importmap">
@@ -1,5 +1,5 @@
1
1
  // src/cache.ts
2
- import { defineProperty, openIDB, promisifyIDBRequest, toURL } from "./util.js";
2
+ import { defineProperty, openIDB, promisifyIDBRequest, toURL } from "./util.mjs";
3
3
  var IndexedDB = class {
4
4
  #db;
5
5
  constructor(name) {
@@ -1,21 +1,9 @@
1
- // src/lsp/index.ts
2
- function createWebWorker(url, name) {
3
- let workerUrl = url;
4
- if (url.origin !== location.origin) {
5
- workerUrl = URL.createObjectURL(new Blob([`import "${url.href}"`], { type: "application/javascript" }));
6
- }
7
- return new Worker(workerUrl, {
8
- type: "module",
9
- name: name ?? url.pathname.slice(1).split("/").slice(-2).join("/")
10
- });
11
- }
12
-
13
1
  // src/core.ts
14
- import { getExtnameFromLanguageId, getLanguageIdFromPath, grammars, initShiki, setDefaultWasmLoader, themes } from "./shiki.js";
15
- import { initShikiMonacoTokenizer, registerShikiMonacoTokenizer } from "./shiki.js";
16
- import { render } from "./shiki.js";
17
- import { getWasmInstance } from "./shiki-wasm.js";
18
- import { ErrorNotFound, Workspace } from "./workspace.js";
2
+ import { getExtnameFromLanguageId, getLanguageIdFromPath, grammars, initShiki, setDefaultWasmLoader, themes } from "./shiki.mjs";
3
+ import { initShikiMonacoTokenizer, registerShikiMonacoTokenizer } from "./shiki.mjs";
4
+ import { render } from "./shiki.mjs";
5
+ import { getWasmInstance } from "./shiki-wasm.mjs";
6
+ import { ErrorNotFound, Workspace } from "./workspace.mjs";
19
7
 
20
8
  // src/util.ts
21
9
  var dec = /* @__PURE__ */ new TextDecoder();
@@ -48,7 +36,7 @@ function promiseWithResolvers() {
48
36
  }
49
37
 
50
38
  // src/core.ts
51
- import { init as initLS } from "./lsp/language-service.js";
39
+ import { init as initLS } from "./lsp/language-service.mjs";
52
40
  var editorProps = [
53
41
  "autoDetectHighContrast",
54
42
  "automaticLayout",
@@ -84,7 +72,7 @@ var errors = {
84
72
  NotFound: ErrorNotFound
85
73
  };
86
74
  var syntaxes = [];
87
- var lSPProviders = {};
75
+ var lspProviders = {};
88
76
  var { promise: editorWorkerPromise, resolve: onDidEditorWorkerResolve } = promiseWithResolvers();
89
77
  var attr = (el, name) => el.getAttribute(name);
90
78
  var style = (el, style2) => Object.assign(el.style, style2);
@@ -256,7 +244,7 @@ async function lazy(options) {
256
244
  }
257
245
  }
258
246
  async function createEditor() {
259
- const monaco = await (monacoPromise ?? (monacoPromise = loadMonaco(highlighter, workspace, options?.lsp, onDidEditorWorkerResolve)));
247
+ const monaco = await (monacoPromise ?? (monacoPromise = loadMonaco(highlighter, workspace, options?.lsp)));
260
248
  const editor = monaco.editor.create(containerEl, renderOptions);
261
249
  if (workspace) {
262
250
  const storeViewState = () => {
@@ -334,42 +322,31 @@ async function lazy(options) {
334
322
  function hydrate(options) {
335
323
  return lazy(options);
336
324
  }
337
- async function loadMonaco(highlighter, workspace, lsp, onDidEditorWorkerResolve2) {
338
- const monaco = await import("./editor-core.js");
339
- const lspProviders = { ...lSPProviders, ...lsp?.providers };
325
+ async function loadMonaco(highlighter, workspace, lsp) {
326
+ const monaco = await import("./editor-core.mjs");
327
+ const lspProviderMap = { ...lspProviders, ...lsp?.providers };
340
328
  workspace?.setupMonaco(monaco);
341
- if (Object.keys(lspProviders).length > 0) {
329
+ if (Object.keys(lspProviderMap).length > 0) {
342
330
  initLS(monaco);
343
331
  }
344
332
  if (!document.getElementById("monaco-editor-core-css")) {
345
333
  const styleEl = document.createElement("style");
346
334
  styleEl.id = "monaco-editor-core-css";
347
335
  styleEl.media = "screen";
348
- styleEl.textContent = monaco.CSS;
336
+ styleEl.textContent = monaco.cssBundle;
349
337
  document.head.appendChild(styleEl);
350
338
  }
351
339
  Reflect.set(globalThis, "MonacoEnvironment", {
352
340
  getWorker: async (_workerId, label) => {
353
- let provider = lspProviders[label];
354
- if (!provider) {
355
- provider = Object.values(lspProviders).find((p) => p.aliases?.includes(label));
356
- }
357
- const url = provider ? (await provider.import()).getWorkerUrl() : monaco.getWorkerUrl();
358
- if (label === "typescript") {
359
- const tsVersion = lsp?.typescript?.tsVersion;
360
- if (tsVersion && (url.hostname === "esm.sh" || url.hostname.endsWith(".esm.sh"))) {
361
- url.searchParams.set("deps", `typescript@${tsVersion}`);
362
- }
363
- }
364
- const worker = createWebWorker(url, void 0);
365
- if (!provider) {
341
+ if (label === "editorWorkerService") {
342
+ const worker = monaco.createEditorWorkerMain();
366
343
  const onMessage = (e) => {
367
- onDidEditorWorkerResolve2?.();
368
344
  worker.removeEventListener("message", onMessage);
345
+ onDidEditorWorkerResolve();
369
346
  };
370
347
  worker.addEventListener("message", onMessage);
348
+ return worker;
371
349
  }
372
- return worker;
373
350
  },
374
351
  getLanguageIdFromUri: (uri) => getLanguageIdFromPath(uri.path),
375
352
  getExtnameFromLanguageId
@@ -444,23 +421,23 @@ async function loadMonaco(highlighter, workspace, lsp, onDidEditorWorkerResolve2
444
421
  }
445
422
  registerShikiMonacoTokenizer(monaco, highlighter, id);
446
423
  let lspLabel = id;
447
- let lspProvider = lspProviders[lspLabel];
424
+ let lspProvider = lspProviderMap[lspLabel];
448
425
  if (!lspProvider) {
449
- const alias = Object.entries(lspProviders).find(([, lsp2]) => lsp2.aliases?.includes(id));
426
+ const alias = Object.entries(lspProviderMap).find(([, lsp2]) => lsp2.aliases?.includes(id));
450
427
  if (alias) {
451
428
  [lspLabel, lspProvider] = alias;
452
429
  }
453
430
  }
454
431
  if (lspProvider) {
455
- lspProvider.import().then(({ setup }) => setup(monaco, id, workspace, lsp?.[lspLabel], lsp?.formatting));
432
+ lspProvider.import().then(({ setup }) => setup(monaco, id, lsp?.[lspLabel], lsp?.formatting, workspace));
456
433
  }
457
434
  });
458
435
  });
459
436
  initShikiMonacoTokenizer(monaco, highlighter);
460
437
  return monaco;
461
438
  }
462
- function registerSyntax(...syntaxes2) {
463
- syntaxes2.push(...syntaxes2);
439
+ function registerSyntax(syntax) {
440
+ syntaxes.push(syntax);
464
441
  }
465
442
  function registerTheme(theme) {
466
443
  if (theme.name) {
@@ -468,7 +445,7 @@ function registerTheme(theme) {
468
445
  }
469
446
  }
470
447
  function registerLSPProvider(lang, provider) {
471
- lSPProviders[lang] = provider;
448
+ lspProviders[lang] = provider;
472
449
  }
473
450
  setDefaultWasmLoader(getWasmInstance);
474
451
  export {