modern-monaco 0.1.9 → 0.2.1
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 +2 -4
- package/dist/{cache.js → cache.mjs} +1 -1
- package/dist/{core.js → core.mjs} +15 -38
- package/dist/{editor-core.js → editor-core.mjs} +108795 -88348
- package/dist/editor-worker-main.mjs +5 -0
- package/dist/{editor-worker.js → editor-worker.mjs} +5854 -4779
- package/dist/{index.js → index.mjs} +6 -6
- package/dist/lsp/css/{setup.js → setup.mjs} +19 -12
- package/dist/lsp/css/{worker.js → worker.mjs} +18 -23
- package/dist/lsp/html/{setup.js → setup.mjs} +19 -12
- package/dist/lsp/html/{worker.js → worker.mjs} +18 -23
- package/dist/lsp/json/{setup.js → setup.mjs} +19 -12
- package/dist/lsp/json/{worker.js → worker.mjs} +19 -24
- package/dist/lsp/{language-service.js → language-service.mjs} +7 -7
- package/dist/lsp/typescript/{setup.js → setup.mjs} +22 -15
- package/dist/lsp/typescript/{worker.js → worker.mjs} +22 -26
- package/dist/{shiki.js → shiki.mjs} +5 -2
- package/dist/ssr/{index.js → index.mjs} +4 -4
- package/dist/ssr/{workerd.js → workerd.mjs} +3 -3
- package/dist/{workspace.js → workspace.mjs} +16 -12
- package/package.json +18 -15
- package/types/index.d.ts +1 -1
- package/types/lsp.d.ts +2 -5
- package/types/monaco.d.ts +652 -278
- package/types/workspace.d.ts +5 -1
- /package/dist/lsp/typescript/{libs.js → libs.mjs} +0 -0
- /package/dist/{shiki-wasm.js → shiki-wasm.mjs} +0 -0
- /package/dist/{util.js → util.mjs} +0 -0
|
@@ -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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
29347
|
-
import { errors, hydrate, init, lazy, Workspace } from "./core.
|
|
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.
|
|
3
|
-
async function setup(monaco, languageId,
|
|
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
|
-
|
|
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
|
|
34
|
-
const
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
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
|
-
|
|
48133
|
-
|
|
48133
|
+
#documentCache = /* @__PURE__ */ new Map();
|
|
48134
|
+
#fs;
|
|
48134
48135
|
get hasFileSystemProvider() {
|
|
48135
|
-
return !!this.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
48187
|
+
this.#documentCache.set(uri, [version, document, languageDocument]);
|
|
48187
48188
|
return languageDocument;
|
|
48188
48189
|
}
|
|
48189
48190
|
readDir(uri, extensions) {
|
|
48190
48191
|
const entries = [];
|
|
48191
|
-
|
|
48192
|
-
|
|
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.
|
|
48230
|
-
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
3
|
-
async function setup(monaco, languageId,
|
|
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
|
-
|
|
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
|
|
81
|
-
const
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
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
|
-
|
|
22060
|
-
|
|
22060
|
+
#documentCache = /* @__PURE__ */ new Map();
|
|
22061
|
+
#fs;
|
|
22061
22062
|
get hasFileSystemProvider() {
|
|
22062
|
-
return !!this.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
22114
|
+
this.#documentCache.set(uri, [version, document, languageDocument]);
|
|
22114
22115
|
return languageDocument;
|
|
22115
22116
|
}
|
|
22116
22117
|
readDir(uri, extensions) {
|
|
22117
22118
|
const entries = [];
|
|
22118
|
-
|
|
22119
|
-
|
|
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.
|
|
22157
|
-
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
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.
|
|
115
|
-
async function setup(monaco, languageId,
|
|
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
|
-
|
|
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
|
|
249
|
-
const
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
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
|
-
|
|
7690
|
-
|
|
7690
|
+
#documentCache = /* @__PURE__ */ new Map();
|
|
7691
|
+
#fs;
|
|
7691
7692
|
get hasFileSystemProvider() {
|
|
7692
|
-
return !!this.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
7744
|
+
this.#documentCache.set(uri, [version, document, languageDocument]);
|
|
7744
7745
|
return languageDocument;
|
|
7745
7746
|
}
|
|
7746
7747
|
readDir(uri, extensions) {
|
|
7747
7748
|
const entries = [];
|
|
7748
|
-
|
|
7749
|
-
|
|
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.
|
|
7787
|
-
|
|
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.
|
|
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
|
|
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.
|
|
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.
|
|
7819
|
-
import { initializeWorker } from "../../editor-worker.
|
|
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.
|
|
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
|
-
|
|
1270
|
-
worker.getProxy()
|
|
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.
|
|
98
|
-
import { ErrorNotFound } from "../../workspace.
|
|
99
|
-
import * as ls from "../language-service.
|
|
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,
|
|
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
|
-
|
|
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
|
};
|