Skip to content

Commit 0b61561

Browse files
authored
feat: support rslint-wasm (#304)
1 parent 66aac2b commit 0b61561

27 files changed

+2409
-104
lines changed

cmd/rslint/signal_unix.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
//go:build !windows
1+
//go:build linux || darwin
22

33
package main
44

cmd/rslint/signal_wasm.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
//go:build js
2+
3+
package main
4+
5+
import (
6+
7+
"time"
8+
)
9+
10+
func waitForDebugSignal(pollInterval time.Duration) {
11+
12+
}

internal/api/api.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,7 @@ func (s *Service) handleExit(msg *Message) {
282282
func (s *Service) handleLint(msg *Message) {
283283
var req LintRequest
284284
data, err := json.Marshal(msg.Data)
285+
285286
if err != nil {
286287
s.sendError(msg.ID, fmt.Sprintf("failed to marshal data: %v", err))
287288
return
@@ -291,7 +292,6 @@ func (s *Service) handleLint(msg *Message) {
291292
s.sendError(msg.ID, fmt.Sprintf("failed to parse lint request: %v", err))
292293
return
293294
}
294-
295295
resp, err := s.handler.HandleLint(req)
296296
if err != nil {
297297
s.sendError(msg.ID, err.Error())

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
"scripts": {
1616
"build": "pnpm -r build",
1717
"build:npm": "zx scripts/build-npm.mjs",
18+
"build:website": "pnpm -F @rslint/website... -r build",
1819
"check-spell": "pnpx cspell",
1920
"version": "zx scripts/version.mjs",
2021
"release": "pnpm publish -r --no-git-checks",

packages/rslint-wasm/.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
rslint.wasm

packages/rslint-wasm/README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
## rslint-wasm
2+
3+
wasm package for running on browser.

packages/rslint-wasm/package.json

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
{
2+
"name": "@rslint/wasm",
3+
"version": "0.1.12",
4+
"description": "rslint wasm package",
5+
"main": "dist/index.mjs",
6+
"scripts": {
7+
"build:wasm": "cross-env GOOS=js GOARCH=wasm go build -o rslint.wasm -ldflags=\"-s -w\" ../../cmd/rslint",
8+
"build:js": "node scripts/build.mjs && tsc -b tsconfig.json",
9+
"build": "pnpm run build:wasm && pnpm run build:js"
10+
},
11+
"files": [
12+
"dist/index.mjs",
13+
"dist/**.d.ts",
14+
"rslint.wasm"
15+
],
16+
"keywords": [],
17+
"author": "",
18+
"license": "ISC",
19+
"packageManager": "[email protected]",
20+
"devDependencies": {
21+
"@rslint/core": "workspace:*",
22+
"@wasmer/wasmfs": "0.12.0",
23+
"esbuild": "^0.25.9",
24+
"buffer": "^6.0.3",
25+
"cross-env": "^10.0.0",
26+
"esbuild-plugin-polyfill-node": "0.3.0",
27+
"memfs": "^4.38.2"
28+
},
29+
"dependencies": {},
30+
"publishConfig": {
31+
"access": "public"
32+
}
33+
}

packages/rslint-wasm/rslint.wasm

-30.9 MB
Binary file not shown.
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
import esbuild from 'esbuild';
2+
import fs from 'fs/promises';
3+
import path from 'path';
4+
import { polyfillNode } from 'esbuild-plugin-polyfill-node';
5+
import { fileURLToPath } from 'url';
6+
7+
async function main() {
8+
await buildWorker();
9+
await buildBrowser();
10+
}
11+
async function buildWorker() {
12+
await esbuild.build({
13+
entryPoints: ['./src/worker.ts'],
14+
bundle: true,
15+
outfile: './dist/worker.js',
16+
platform: 'browser',
17+
target: 'es2020',
18+
write: true,
19+
format: 'iife',
20+
sourcemap: 'inline',
21+
plugins: [polyfillNode()],
22+
});
23+
}
24+
async function buildBrowser() {
25+
const WEB_WORKER_SOURCE_CODE = await fs.readFile(
26+
path.resolve(import.meta.dirname, '../dist/worker.js'),
27+
'utf8',
28+
);
29+
await esbuild.build({
30+
entryPoints: ['./src/browser.ts'],
31+
outfile: './dist/index.mjs',
32+
bundle: true,
33+
platform: 'browser',
34+
target: 'es2020',
35+
format: 'esm',
36+
splitting: false,
37+
define: {
38+
WEB_WORKER_SOURCE_CODE: JSON.stringify(WEB_WORKER_SOURCE_CODE),
39+
},
40+
});
41+
}
42+
43+
main();
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { BrowserRslintService } from '@rslint/core/browser';
2+
import { RSLintService } from '@rslint/core/service';
3+
declare const WEB_WORKER_SOURCE_CODE: string;
4+
export async function initialize(options: { wasmURL: string }) {
5+
let blob = new Blob([WEB_WORKER_SOURCE_CODE], { type: 'text/javascript' });
6+
const service = new RSLintService(
7+
new BrowserRslintService({
8+
workerUrl: URL.createObjectURL(blob),
9+
wasmUrl: options.wasmURL,
10+
}),
11+
);
12+
13+
return service;
14+
}

0 commit comments

Comments
 (0)