Skip to content
Merged
18 changes: 18 additions & 0 deletions bun.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

65 changes: 65 additions & 0 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -187,6 +187,10 @@
"picomatch": "^4.0.4",
"url-parse": "^1.5.10",
"vanilla-picker": "^2.12.3",
"vscode-css-languageservice": "6.3.10",
"vscode-html-languageservice": "5.6.2",
"vscode-json-languageservice": "5.7.2",
"vscode-languageserver-textdocument": "1.0.12",
"yargs": "^18.0.0"
},
"overrides": {
Expand Down
21 changes: 21 additions & 0 deletions rspack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,10 @@ module.exports = (env, options) => {
: '';

const rules = [
{
test: /typescript[\\/]lib[\\/]lib\..*\.d\.ts$/,
type: 'asset/source',
},
// TypeScript/TSX files - Custom JSX loader + SWC
{
test: /\.tsx?$/,
Expand Down Expand Up @@ -120,12 +124,20 @@ module.exports = (env, options) => {

const main = {
mode,
node: {
__dirname: false,
__filename: false,
},
entry: {
boot: './src/boot.js',
main: './src/main.js',
console: './src/lib/console.js',
searchInFilesWorker: './src/sidebarApps/searchInFiles/worker.js',
searchIndexWorker: './src/sidebarApps/searchInFiles/indexWorker.js',
htmlLspWorker: './src/cm/lsp/workers/html.worker.ts',
cssLspWorker: './src/cm/lsp/workers/css.worker.ts',
jsonLspWorker: './src/cm/lsp/workers/json.worker.ts',
typescriptLspWorker: './src/cm/lsp/workers/typescript.worker.ts',
},
output: {
path: path.resolve(__dirname, 'www/build/'),
Expand All @@ -135,8 +147,17 @@ module.exports = (env, options) => {
publicPath: devOrigin ? ''.concat(devOrigin, '/build/') : '/build/',
clean: !isDev,
},
// TypeScript's Node-only plugin loader uses a dynamic require. It is never
// reached by the browser worker, but Rspack cannot prove that statically.
ignoreWarnings: [
{
module: /typescript[\\/]lib[\\/]typescript\.js$/,
message: /Critical dependency/,
},
],
module: {
rules,
exprContextCritical: false,
parser: {
javascript: {
exportsPresence: 'error',
Expand Down
12 changes: 12 additions & 0 deletions src/cm/lsp/api.ts
Original file line number Diff line number Diff line change
Expand Up @@ -31,8 +31,13 @@ import type {
LspServerDefinition,
LspServerManifest,
} from "./types";
import {
createWorkerTransport,
type LspWorkerTransportOptions,
} from "./workerTransport";

export { defineBundle, defineServer, installers };
export type { LspWorkerHostHandler, LspWorkerTransportOptions } from "./workerTransport";

export type LspRegistrationEntry = LspServerManifest | LspServerBundle;

Expand Down Expand Up @@ -117,6 +122,12 @@ export const runtimes = {
export const registerRuntime = runtimes.register;
export const unregisterRuntime = runtimes.unregister;

export const workers = {
createTransport(options: LspWorkerTransportOptions) {
return createWorkerTransport(options);
},
};

const lspApi = {
defineServer,
defineBundle,
Expand All @@ -126,6 +137,7 @@ const lspApi = {
servers,
bundles,
runtimes,
workers,
registerRuntimeProvider: registerRuntime,
unregisterRuntimeProvider: unregisterRuntime,
};
Expand Down
Loading