modern-monaco 0.1.9 → 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.
@@ -697,21 +697,21 @@ var vitesse_dark_default = {
697
697
  var builtinLSPProviders = {
698
698
  html: {
699
699
  // @ts-expect-error 'setup.js' is generated at build time
700
- import: () => import("./lsp/html/setup.js")
700
+ import: () => import("./lsp/html/setup.mjs")
701
701
  },
702
702
  css: {
703
703
  aliases: ["less", "sass"],
704
704
  // @ts-expect-error 'setup.js' is generated at build time
705
- import: () => import("./lsp/css/setup.js")
705
+ import: () => import("./lsp/css/setup.mjs")
706
706
  },
707
707
  json: {
708
708
  // @ts-expect-error 'setup.js' is generated at build time
709
- import: () => import("./lsp/json/setup.js")
709
+ import: () => import("./lsp/json/setup.mjs")
710
710
  },
711
711
  typescript: {
712
712
  aliases: ["javascript", "jsx", "tsx"],
713
713
  // @ts-expect-error 'setup.js' is generated at build time
714
- import: () => import("./lsp/typescript/setup.js")
714
+ import: () => import("./lsp/typescript/setup.mjs")
715
715
  }
716
716
  };
717
717
 
@@ -29343,8 +29343,8 @@ var syntaxes = [
29343
29343
  ];
29344
29344
 
29345
29345
  // src/index.ts
29346
- import { registerLSPProvider, registerSyntax, registerTheme } from "./core.js";
29347
- import { errors, hydrate, init, lazy, Workspace } from "./core.js";
29346
+ import { registerLSPProvider, registerSyntax, registerTheme } from "./core.mjs";
29347
+ import { errors, hydrate, init, lazy, Workspace } from "./core.mjs";
29348
29348
  for (const [lang, provider] of Object.entries(builtinLSPProviders)) {
29349
29349
  registerLSPProvider(lang, provider);
29350
29350
  }
@@ -1,6 +1,6 @@
1
1
  // src/lsp/css/setup.ts
2
- import * as ls from "../language-service.js";
3
- async function setup(monaco, languageId, workspace, languageSettings, formattingOptions) {
2
+ import * as ls from "../language-service.mjs";
3
+ async function setup(monaco, languageId, languageSettings, formattingOptions, workspace) {
4
4
  const { tabSize, insertSpaces, insertFinalNewline, trimFinalNewlines } = formattingOptions ?? {};
5
5
  const createData = {
6
6
  language: languageId,
@@ -17,12 +17,11 @@ async function setup(monaco, languageId, workspace, languageSettings, formatting
17
17
  newlineBetweenRules: true,
18
18
  spaceAroundSelectorSeparator: false,
19
19
  braceStyle: "collapse"
20
- }
20
+ },
21
+ workspace: !!workspace
21
22
  };
22
23
  const worker = monaco.editor.createWebWorker({
23
- moduleId: "lsp/css/worker",
24
- label: languageId,
25
- createData,
24
+ worker: getWorker(createData),
26
25
  host: ls.createHost(workspace)
27
26
  });
28
27
  ls.registerBasicFeatures(languageId, worker, ["/", "-", ":", "("], workspace);
@@ -30,13 +29,21 @@ async function setup(monaco, languageId, workspace, languageSettings, formatting
30
29
  ls.registerColorPresentation(languageId, worker);
31
30
  ls.registerDocumentLinks(languageId, worker);
32
31
  }
33
- function getWorkerUrl() {
34
- const i = () => import("./worker.js");
35
- const m = getWorkerUrl.toString().match(/import\(['"](.+?)['"]\)/);
36
- if (!m) throw new Error("worker url not found", { cause: i });
37
- return new URL(m[1], import.meta.url);
32
+ function createWebWorker() {
33
+ const workerUrl = new URL("./worker.mjs", import.meta.url);
34
+ if (workerUrl.origin !== location.origin) {
35
+ return new Worker(
36
+ URL.createObjectURL(new Blob([`import "${workerUrl.href}"`], { type: "application/javascript" })),
37
+ { type: "module" }
38
+ );
39
+ }
40
+ return new Worker(new URL("./worker.mjs", import.meta.url), { type: "module" });
41
+ }
42
+ function getWorker(createData) {
43
+ const worker = createWebWorker();
44
+ worker.postMessage(createData);
45
+ return worker;
38
46
  }
39
47
  export {
40
- getWorkerUrl,
41
48
  setup
42
49
  };
@@ -48125,14 +48125,15 @@ function getLESSLanguageService(options = defaultLanguageServiceOptions) {
48125
48125
 
48126
48126
  // src/lsp/worker-base.ts
48127
48127
  var WorkerBase = class {
48128
- constructor(_ctx, _createLanguageDocument) {
48128
+ constructor(_ctx, _createData, _createLanguageDocument) {
48129
48129
  this._ctx = _ctx;
48130
+ this._createData = _createData;
48130
48131
  this._createLanguageDocument = _createLanguageDocument;
48131
48132
  }
48132
- _documentCache = /* @__PURE__ */ new Map();
48133
- _fsEntries;
48133
+ #documentCache = /* @__PURE__ */ new Map();
48134
+ #fs;
48134
48135
  get hasFileSystemProvider() {
48135
- return !!this._fsEntries;
48136
+ return !!this._createData.workspace;
48136
48137
  }
48137
48138
  get host() {
48138
48139
  return this._ctx.host;
@@ -48165,17 +48166,17 @@ var WorkerBase = class {
48165
48166
  if (!model) {
48166
48167
  return null;
48167
48168
  }
48168
- const cached = this._documentCache.get(uri);
48169
+ const cached = this.#documentCache.get(uri);
48169
48170
  if (cached && cached[0] === model.version) {
48170
48171
  return cached[1];
48171
48172
  }
48172
48173
  const document = TextDocument2.create(uri, "-", model.version, model.getValue());
48173
- this._documentCache.set(uri, [model.version, document, void 0]);
48174
+ this.#documentCache.set(uri, [model.version, document, void 0]);
48174
48175
  return document;
48175
48176
  }
48176
48177
  getLanguageDocument(document) {
48177
48178
  const { uri, version } = document;
48178
- const cached = this._documentCache.get(uri);
48179
+ const cached = this.#documentCache.get(uri);
48179
48180
  if (cached && cached[0] === version && cached[2]) {
48180
48181
  return cached[2];
48181
48182
  }
@@ -48183,14 +48184,13 @@ var WorkerBase = class {
48183
48184
  throw new Error("createLanguageDocument is not provided");
48184
48185
  }
48185
48186
  const languageDocument = this._createLanguageDocument(document);
48186
- this._documentCache.set(uri, [version, document, languageDocument]);
48187
+ this.#documentCache.set(uri, [version, document, languageDocument]);
48187
48188
  return languageDocument;
48188
48189
  }
48189
48190
  readDir(uri, extensions) {
48190
48191
  const entries = [];
48191
- const fsTree = this._fsEntries;
48192
- if (fsTree) {
48193
- for (const [path, type] of fsTree) {
48192
+ if (this.#fs) {
48193
+ for (const [path, type] of this.#fs) {
48194
48194
  if (path.startsWith(uri)) {
48195
48195
  const name = path.slice(uri.length);
48196
48196
  if (!name.includes("/")) {
@@ -48226,30 +48226,25 @@ var WorkerBase = class {
48226
48226
  resolveReference(ref, baseUrl) {
48227
48227
  const url = new URL(ref, baseUrl);
48228
48228
  const href = url.href;
48229
- if (url.protocol === "file:" && this._fsEntries) {
48230
- if (!this._fsEntries.has(href)) {
48231
- return void 0;
48232
- }
48229
+ if (url.protocol === "file:" && url.pathname !== "/" && this.#fs && !this.#fs.has(href.endsWith("/") ? href.slice(0, -1) : href)) {
48230
+ return void 0;
48233
48231
  }
48234
48232
  return href;
48235
48233
  }
48236
48234
  // #region methods used by the host
48237
48235
  async removeDocumentCache(uri) {
48238
- this._documentCache.delete(uri);
48239
- }
48240
- async syncFSEntries(entries) {
48241
- this._fsEntries = new Map(entries);
48236
+ this.#documentCache.delete(uri);
48242
48237
  }
48243
48238
  async fsNotify(kind, path, type) {
48244
48239
  const url = "file://" + path;
48245
- const entries = this._fsEntries ?? (this._fsEntries = /* @__PURE__ */ new Map());
48240
+ const entries = this.#fs ?? (this.#fs = /* @__PURE__ */ new Map());
48246
48241
  if (kind === "create") {
48247
48242
  if (type) {
48248
48243
  entries.set(url, type);
48249
48244
  }
48250
48245
  } else if (kind === "remove") {
48251
48246
  if (entries.get(url) === 1 /* File */) {
48252
- this._documentCache.delete(url);
48247
+ this.#documentCache.delete(url);
48253
48248
  }
48254
48249
  entries.delete(url);
48255
48250
  }
@@ -48258,12 +48253,12 @@ var WorkerBase = class {
48258
48253
  };
48259
48254
 
48260
48255
  // src/lsp/css/worker.ts
48261
- import { initializeWorker } from "../../editor-worker.js";
48256
+ import { initializeWorker } from "../../editor-worker.mjs";
48262
48257
  var CSSWorker = class extends WorkerBase {
48263
48258
  _formatSettings;
48264
48259
  _languageService;
48265
48260
  constructor(ctx, createData) {
48266
- super(ctx, (document) => this._languageService.parseStylesheet(document));
48261
+ super(ctx, createData, (document) => this._languageService.parseStylesheet(document));
48267
48262
  const data = createData.data;
48268
48263
  const customDataProviders = [];
48269
48264
  if (data?.dataProviders) {
@@ -1,6 +1,6 @@
1
1
  // src/lsp/html/setup.ts
2
- import * as ls from "../language-service.js";
3
- async function setup(monaco, languageId, workspace, languageSettings, formattingOptions) {
2
+ import * as ls from "../language-service.mjs";
3
+ async function setup(monaco, languageId, languageSettings, formattingOptions, workspace) {
4
4
  const { editor, languages } = monaco;
5
5
  const { tabSize, insertSpaces, insertFinalNewline, trimFinalNewlines } = formattingOptions ?? {};
6
6
  const createData = {
@@ -25,12 +25,11 @@ async function setup(monaco, languageId, workspace, languageSettings, formatting
25
25
  data: {
26
26
  useDefaultDataProvider: true,
27
27
  dataProviders: Array.isArray(languageSettings?.customTags) ? { custom: { version: 1.1, tags: languageSettings.customTags } } : void 0
28
- }
28
+ },
29
+ workspace: !!workspace
29
30
  };
30
31
  const htmlWorker = editor.createWebWorker({
31
- moduleId: "lsp/html/worker",
32
- label: languageId,
33
- createData,
32
+ worker: getWorker(createData),
34
33
  host: ls.createHost(workspace)
35
34
  });
36
35
  const workerWithEmbeddedLanguages = ls.createWorkerWithEmbeddedLanguages(htmlWorker);
@@ -77,13 +76,21 @@ async function setup(monaco, languageId, workspace, languageSettings, formatting
77
76
  }
78
77
  });
79
78
  }
80
- function getWorkerUrl() {
81
- const i = () => import("./worker.js");
82
- const m = getWorkerUrl.toString().match(/import\(['"](.+?)['"]\)/);
83
- if (!m) throw new Error("worker url not found", { cause: i });
84
- return new URL(m[1], import.meta.url);
79
+ function createWebWorker() {
80
+ const workerUrl = new URL("./worker.mjs", import.meta.url);
81
+ if (workerUrl.origin !== location.origin) {
82
+ return new Worker(
83
+ URL.createObjectURL(new Blob([`import "${workerUrl.href}"`], { type: "application/javascript" })),
84
+ { type: "module" }
85
+ );
86
+ }
87
+ return new Worker(new URL("./worker.mjs", import.meta.url), { type: "module" });
88
+ }
89
+ function getWorker(createData) {
90
+ const worker = createWebWorker();
91
+ worker.postMessage(createData);
92
+ return worker;
85
93
  }
86
94
  export {
87
- getWorkerUrl,
88
95
  setup
89
96
  };
@@ -22052,14 +22052,15 @@ function getAttributeLanguage(attributeName) {
22052
22052
 
22053
22053
  // src/lsp/worker-base.ts
22054
22054
  var WorkerBase = class {
22055
- constructor(_ctx, _createLanguageDocument) {
22055
+ constructor(_ctx, _createData, _createLanguageDocument) {
22056
22056
  this._ctx = _ctx;
22057
+ this._createData = _createData;
22057
22058
  this._createLanguageDocument = _createLanguageDocument;
22058
22059
  }
22059
- _documentCache = /* @__PURE__ */ new Map();
22060
- _fsEntries;
22060
+ #documentCache = /* @__PURE__ */ new Map();
22061
+ #fs;
22061
22062
  get hasFileSystemProvider() {
22062
- return !!this._fsEntries;
22063
+ return !!this._createData.workspace;
22063
22064
  }
22064
22065
  get host() {
22065
22066
  return this._ctx.host;
@@ -22092,17 +22093,17 @@ var WorkerBase = class {
22092
22093
  if (!model) {
22093
22094
  return null;
22094
22095
  }
22095
- const cached = this._documentCache.get(uri);
22096
+ const cached = this.#documentCache.get(uri);
22096
22097
  if (cached && cached[0] === model.version) {
22097
22098
  return cached[1];
22098
22099
  }
22099
22100
  const document = TextDocument2.create(uri, "-", model.version, model.getValue());
22100
- this._documentCache.set(uri, [model.version, document, void 0]);
22101
+ this.#documentCache.set(uri, [model.version, document, void 0]);
22101
22102
  return document;
22102
22103
  }
22103
22104
  getLanguageDocument(document) {
22104
22105
  const { uri, version } = document;
22105
- const cached = this._documentCache.get(uri);
22106
+ const cached = this.#documentCache.get(uri);
22106
22107
  if (cached && cached[0] === version && cached[2]) {
22107
22108
  return cached[2];
22108
22109
  }
@@ -22110,14 +22111,13 @@ var WorkerBase = class {
22110
22111
  throw new Error("createLanguageDocument is not provided");
22111
22112
  }
22112
22113
  const languageDocument = this._createLanguageDocument(document);
22113
- this._documentCache.set(uri, [version, document, languageDocument]);
22114
+ this.#documentCache.set(uri, [version, document, languageDocument]);
22114
22115
  return languageDocument;
22115
22116
  }
22116
22117
  readDir(uri, extensions) {
22117
22118
  const entries = [];
22118
- const fsTree = this._fsEntries;
22119
- if (fsTree) {
22120
- for (const [path, type] of fsTree) {
22119
+ if (this.#fs) {
22120
+ for (const [path, type] of this.#fs) {
22121
22121
  if (path.startsWith(uri)) {
22122
22122
  const name = path.slice(uri.length);
22123
22123
  if (!name.includes("/")) {
@@ -22153,30 +22153,25 @@ var WorkerBase = class {
22153
22153
  resolveReference(ref, baseUrl) {
22154
22154
  const url = new URL(ref, baseUrl);
22155
22155
  const href = url.href;
22156
- if (url.protocol === "file:" && this._fsEntries) {
22157
- if (!this._fsEntries.has(href)) {
22158
- return void 0;
22159
- }
22156
+ if (url.protocol === "file:" && url.pathname !== "/" && this.#fs && !this.#fs.has(href.endsWith("/") ? href.slice(0, -1) : href)) {
22157
+ return void 0;
22160
22158
  }
22161
22159
  return href;
22162
22160
  }
22163
22161
  // #region methods used by the host
22164
22162
  async removeDocumentCache(uri) {
22165
- this._documentCache.delete(uri);
22166
- }
22167
- async syncFSEntries(entries) {
22168
- this._fsEntries = new Map(entries);
22163
+ this.#documentCache.delete(uri);
22169
22164
  }
22170
22165
  async fsNotify(kind, path, type) {
22171
22166
  const url = "file://" + path;
22172
- const entries = this._fsEntries ?? (this._fsEntries = /* @__PURE__ */ new Map());
22167
+ const entries = this.#fs ?? (this.#fs = /* @__PURE__ */ new Map());
22173
22168
  if (kind === "create") {
22174
22169
  if (type) {
22175
22170
  entries.set(url, type);
22176
22171
  }
22177
22172
  } else if (kind === "remove") {
22178
22173
  if (entries.get(url) === 1 /* File */) {
22179
- this._documentCache.delete(url);
22174
+ this.#documentCache.delete(url);
22180
22175
  }
22181
22176
  entries.delete(url);
22182
22177
  }
@@ -22185,13 +22180,13 @@ var WorkerBase = class {
22185
22180
  };
22186
22181
 
22187
22182
  // src/lsp/html/worker.ts
22188
- import { initializeWorker } from "../../editor-worker.js";
22183
+ import { initializeWorker } from "../../editor-worker.mjs";
22189
22184
  var HTMLWorker = class extends WorkerBase {
22190
22185
  _formatSettings;
22191
22186
  _suggestSettings;
22192
22187
  _languageService;
22193
22188
  constructor(ctx, createData) {
22194
- super(ctx, (document) => this._languageService.parseHTMLDocument(document));
22189
+ super(ctx, createData, (document) => this._languageService.parseHTMLDocument(document));
22195
22190
  const data = createData.data;
22196
22191
  const useDefaultDataProvider = data?.useDefaultDataProvider;
22197
22192
  const fileSystemProvider = this.getFileSystemProvider();
@@ -111,8 +111,8 @@ var schemas = [
111
111
  ];
112
112
 
113
113
  // src/lsp/json/setup.ts
114
- import * as ls from "../language-service.js";
115
- async function setup(monaco, languageId, workspace, languageSettings, formattingOptions) {
114
+ import * as ls from "../language-service.mjs";
115
+ async function setup(monaco, languageId, languageSettings, formattingOptions, workspace) {
116
116
  const { editor, languages } = monaco;
117
117
  const createData = {
118
118
  settings: {
@@ -131,12 +131,11 @@ async function setup(monaco, languageId, workspace, languageSettings, formatting
131
131
  insertFinalNewline: true,
132
132
  trimFinalNewlines: true,
133
133
  ...formattingOptions
134
- }
134
+ },
135
+ workspace: !!workspace
135
136
  };
136
137
  const worker = editor.createWebWorker({
137
- moduleId: "lsp/json/worker",
138
- label: languageId,
139
- createData,
138
+ worker: getWorker(createData),
140
139
  host: ls.createHost(workspace)
141
140
  });
142
141
  const resetSchema = async (uri) => {
@@ -245,13 +244,21 @@ async function searchPackagesFromNpm(keyword, size = 20) {
245
244
  }
246
245
  return items.slice(0, len);
247
246
  }
248
- function getWorkerUrl() {
249
- const i = () => import("./worker.js");
250
- const m = getWorkerUrl.toString().match(/import\(['"](.+?)['"]\)/);
251
- if (!m) throw new Error("worker url not found", { cause: i });
252
- return new URL(m[1], import.meta.url);
247
+ function createWebWorker() {
248
+ const workerUrl = new URL("./worker.mjs", import.meta.url);
249
+ if (workerUrl.origin !== location.origin) {
250
+ return new Worker(
251
+ URL.createObjectURL(new Blob([`import "${workerUrl.href}"`], { type: "application/javascript" })),
252
+ { type: "module" }
253
+ );
254
+ }
255
+ return new Worker(new URL("./worker.mjs", import.meta.url), { type: "module" });
256
+ }
257
+ function getWorker(createData) {
258
+ const worker = createWebWorker();
259
+ worker.postMessage(createData);
260
+ return worker;
253
261
  }
254
262
  export {
255
- getWorkerUrl,
256
263
  setup
257
264
  };
@@ -7682,14 +7682,15 @@ function getLanguageService(params) {
7682
7682
 
7683
7683
  // src/lsp/worker-base.ts
7684
7684
  var WorkerBase = class {
7685
- constructor(_ctx, _createLanguageDocument) {
7685
+ constructor(_ctx, _createData, _createLanguageDocument) {
7686
7686
  this._ctx = _ctx;
7687
+ this._createData = _createData;
7687
7688
  this._createLanguageDocument = _createLanguageDocument;
7688
7689
  }
7689
- _documentCache = /* @__PURE__ */ new Map();
7690
- _fsEntries;
7690
+ #documentCache = /* @__PURE__ */ new Map();
7691
+ #fs;
7691
7692
  get hasFileSystemProvider() {
7692
- return !!this._fsEntries;
7693
+ return !!this._createData.workspace;
7693
7694
  }
7694
7695
  get host() {
7695
7696
  return this._ctx.host;
@@ -7722,17 +7723,17 @@ var WorkerBase = class {
7722
7723
  if (!model) {
7723
7724
  return null;
7724
7725
  }
7725
- const cached = this._documentCache.get(uri);
7726
+ const cached = this.#documentCache.get(uri);
7726
7727
  if (cached && cached[0] === model.version) {
7727
7728
  return cached[1];
7728
7729
  }
7729
7730
  const document = TextDocument2.create(uri, "-", model.version, model.getValue());
7730
- this._documentCache.set(uri, [model.version, document, void 0]);
7731
+ this.#documentCache.set(uri, [model.version, document, void 0]);
7731
7732
  return document;
7732
7733
  }
7733
7734
  getLanguageDocument(document) {
7734
7735
  const { uri, version } = document;
7735
- const cached = this._documentCache.get(uri);
7736
+ const cached = this.#documentCache.get(uri);
7736
7737
  if (cached && cached[0] === version && cached[2]) {
7737
7738
  return cached[2];
7738
7739
  }
@@ -7740,14 +7741,13 @@ var WorkerBase = class {
7740
7741
  throw new Error("createLanguageDocument is not provided");
7741
7742
  }
7742
7743
  const languageDocument = this._createLanguageDocument(document);
7743
- this._documentCache.set(uri, [version, document, languageDocument]);
7744
+ this.#documentCache.set(uri, [version, document, languageDocument]);
7744
7745
  return languageDocument;
7745
7746
  }
7746
7747
  readDir(uri, extensions) {
7747
7748
  const entries = [];
7748
- const fsTree = this._fsEntries;
7749
- if (fsTree) {
7750
- for (const [path, type] of fsTree) {
7749
+ if (this.#fs) {
7750
+ for (const [path, type] of this.#fs) {
7751
7751
  if (path.startsWith(uri)) {
7752
7752
  const name = path.slice(uri.length);
7753
7753
  if (!name.includes("/")) {
@@ -7783,30 +7783,25 @@ var WorkerBase = class {
7783
7783
  resolveReference(ref, baseUrl) {
7784
7784
  const url = new URL(ref, baseUrl);
7785
7785
  const href = url.href;
7786
- if (url.protocol === "file:" && this._fsEntries) {
7787
- if (!this._fsEntries.has(href)) {
7788
- return void 0;
7789
- }
7786
+ if (url.protocol === "file:" && url.pathname !== "/" && this.#fs && !this.#fs.has(href.endsWith("/") ? href.slice(0, -1) : href)) {
7787
+ return void 0;
7790
7788
  }
7791
7789
  return href;
7792
7790
  }
7793
7791
  // #region methods used by the host
7794
7792
  async removeDocumentCache(uri) {
7795
- this._documentCache.delete(uri);
7796
- }
7797
- async syncFSEntries(entries) {
7798
- this._fsEntries = new Map(entries);
7793
+ this.#documentCache.delete(uri);
7799
7794
  }
7800
7795
  async fsNotify(kind, path, type) {
7801
7796
  const url = "file://" + path;
7802
- const entries = this._fsEntries ?? (this._fsEntries = /* @__PURE__ */ new Map());
7797
+ const entries = this.#fs ?? (this.#fs = /* @__PURE__ */ new Map());
7803
7798
  if (kind === "create") {
7804
7799
  if (type) {
7805
7800
  entries.set(url, type);
7806
7801
  }
7807
7802
  } else if (kind === "remove") {
7808
7803
  if (entries.get(url) === 1 /* File */) {
7809
- this._documentCache.delete(url);
7804
+ this.#documentCache.delete(url);
7810
7805
  }
7811
7806
  entries.delete(url);
7812
7807
  }
@@ -7815,13 +7810,13 @@ var WorkerBase = class {
7815
7810
  };
7816
7811
 
7817
7812
  // src/lsp/json/worker.ts
7818
- import { cache } from "../../cache.js";
7819
- import { initializeWorker } from "../../editor-worker.js";
7813
+ import { cache } from "../../cache.mjs";
7814
+ import { initializeWorker } from "../../editor-worker.mjs";
7820
7815
  var JSONWorker = class extends WorkerBase {
7821
7816
  _formatSettings;
7822
7817
  _languageService;
7823
7818
  constructor(ctx, createData) {
7824
- super(ctx, (document) => this._languageService.parseJSONDocument(document));
7819
+ super(ctx, createData, (document) => this._languageService.parseJSONDocument(document));
7825
7820
  this._formatSettings = createData.format;
7826
7821
  this._languageService = getLanguageService({
7827
7822
  workspaceContext: {
@@ -1182,7 +1182,7 @@ var Is;
1182
1182
  })(Is || (Is = {}));
1183
1183
 
1184
1184
  // src/lsp/language-service.ts
1185
- import { cache } from "../cache.js";
1185
+ import { cache } from "../cache.mjs";
1186
1186
  var monaco;
1187
1187
  function init(monacoNS) {
1188
1188
  monaco = monacoNS;
@@ -1201,9 +1201,6 @@ function createHost(workspace) {
1201
1201
  } : /* @__PURE__ */ Object.create(null);
1202
1202
  }
1203
1203
  function lspRequest(req, token) {
1204
- if (!token) {
1205
- return req();
1206
- }
1207
1204
  return new Promise((resolve, reject) => {
1208
1205
  if (token.isCancellationRequested) {
1209
1206
  resolve(void 0);
@@ -1266,9 +1263,12 @@ function registerBasicFeatures(languageId, worker, completionTriggerCharacters,
1266
1263
  worker.getProxy().then((proxy) => proxy.fsNotify(kind, path, type));
1267
1264
  }
1268
1265
  });
1269
- workspace.fs.entries().then((entries) => {
1270
- worker.getProxy().then((proxy) => proxy.syncFSEntries(entries));
1271
- });
1266
+ (async () => {
1267
+ const workerProxy = await worker.getProxy();
1268
+ for await (const [path, type] of workspace.fs.walk()) {
1269
+ workerProxy.fsNotify("create", path, type);
1270
+ }
1271
+ })();
1272
1272
  }
1273
1273
  }
1274
1274
  function registerDiagnostics(languageId, worker) {
@@ -94,11 +94,11 @@ function isSameImports(a, b) {
94
94
  }
95
95
 
96
96
  // src/lsp/typescript/setup.ts
97
- import { cache } from "../../cache.js";
98
- import { ErrorNotFound } from "../../workspace.js";
99
- import * as ls from "../language-service.js";
97
+ import { cache } from "../../cache.mjs";
98
+ import { ErrorNotFound } from "../../workspace.mjs";
99
+ import * as ls from "../language-service.mjs";
100
100
  var worker = null;
101
- async function setup(monaco, languageId, workspace, languageSettings, formattingOptions) {
101
+ async function setup(monaco, languageId, languageSettings, formattingOptions, workspace) {
102
102
  if (!worker) {
103
103
  worker = createWorker(monaco, workspace, languageSettings, formattingOptions);
104
104
  }
@@ -110,12 +110,6 @@ async function setup(monaco, languageId, workspace, languageSettings, formatting
110
110
  ls.registerSignatureHelp(languageId, worker, ["(", ","]);
111
111
  ls.registerCodeAction(languageId, worker);
112
112
  }
113
- function getWorkerUrl() {
114
- const i = () => import("./worker.js");
115
- const m = getWorkerUrl.toString().match(/import\(['"](.+?)['"]\)/);
116
- if (!m) throw new Error("worker url not found", { cause: i });
117
- return new URL(m[1], import.meta.url);
118
- }
119
113
  async function createWorker(monaco, workspace, languageSettings, formattingOptions) {
120
114
  const fs = workspace?.fs;
121
115
  const defaultCompilerOptions = {
@@ -173,13 +167,12 @@ async function createWorker(monaco, workspace, languageSettings, formattingOptio
173
167
  insertSpaceAfterOpeningAndBeforeClosingNonemptyBrackets: insertSpaces
174
168
  },
175
169
  importMap,
176
- types: typesStore.types
170
+ types: typesStore.types,
171
+ workspace: !!workspace
177
172
  };
178
173
  const worker2 = monaco.editor.createWebWorker({
179
- moduleId: "lsp/typescript/worker",
180
- label: "typescript",
174
+ worker: getWorker(createData),
181
175
  keepIdleModels: true,
182
- createData,
183
176
  host: {
184
177
  openModel: async (uri) => {
185
178
  if (!workspace) {
@@ -284,6 +277,21 @@ async function createWorker(monaco, workspace, languageSettings, formattingOptio
284
277
  });
285
278
  return worker2;
286
279
  }
280
+ function createWebWorker() {
281
+ const workerUrl = new URL("./worker.mjs", import.meta.url);
282
+ if (workerUrl.origin !== location.origin) {
283
+ return new Worker(
284
+ URL.createObjectURL(new Blob([`import "${workerUrl.href}"`], { type: "application/javascript" })),
285
+ { type: "module" }
286
+ );
287
+ }
288
+ return new Worker(new URL("./worker.mjs", import.meta.url), { type: "module" });
289
+ }
290
+ function getWorker(createData) {
291
+ const worker2 = createWebWorker();
292
+ worker2.postMessage(createData);
293
+ return worker2;
294
+ }
287
295
  var TypesSet = class {
288
296
  _types = {};
289
297
  _removedtypes = {};
@@ -418,7 +426,6 @@ function parseJsonc(text) {
418
426
  }
419
427
  }
420
428
  export {
421
- getWorkerUrl,
422
429
  loadImportMap,
423
430
  setup
424
431
  };