Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 3 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,13 +92,13 @@ jobs:
- name: Setup Node
uses: actions/setup-node@v4
with:
node-version: "16.x"
node-version: "24.x"
registry-url: "https://registry.npmjs.org"

- name: Test Build (wasm-pack)
- name: Test (WASM Build)
run: |
chmod u+x ./wasm/build-wasm.sh
./wasm/build-wasm.sh
./wasm/build-wasm.sh --test

test_docker_build:
runs-on: ubuntu-latest
Expand Down
37 changes: 14 additions & 23 deletions Cargo.lock

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

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ lsp-types = { version = "0.97", optional = true }
lsp-textdocument = { version = "0.4.2", optional = true }

[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen = { version = "0.2.81", optional = true }
wasm-bindgen = { version = "0.2.108", optional = true }

# full-moon should be compiled to release optimisations in debug mode due to stack overflows
# https://github.com/Kampfkarren/full-moon/issues/140
Expand Down
4 changes: 2 additions & 2 deletions wasm/.gitignore
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
stylua.web/
stylua_lib.cjs
stylua.*
stylua_*
LICENSE.md
README.md
*.tgz
51 changes: 44 additions & 7 deletions wasm/build-wasm.sh
Original file line number Diff line number Diff line change
@@ -1,10 +1,47 @@
#!/usr/bin/env bash
set -euo pipefail

PROJECT_ROOT=$(dirname $0)/..
CURRENT_DIR=$PROJECT_ROOT/wasm

# TODO: Ensure that version is up to date
cp README.md wasm/
cp LICENSE.md wasm/
npx wasm-pack@0.10.3 build --target web --out-dir wasm/stylua.web -- --features lua52,lua53,lua54,luajit,luau,cfxlua
cp $PROJECT_ROOT/README.md $CURRENT_DIR/
cp $PROJECT_ROOT/LICENSE.md $CURRENT_DIR/

cargo build --target wasm32-unknown-unknown --release --features lua52,lua53,lua54,luajit,luau,cfxlua

WASM_PATH=$PROJECT_ROOT/target/wasm32-unknown-unknown/release/stylua_lib.wasm

# install wasm-bindgen if needed
command -v wasm-bindgen || cargo install wasm-bindgen-cli
Comment on lines +15 to +16
Copy link

Copilot AI Jan 20, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The build script uses wasm-bindgen but doesn't ensure version compatibility with the Cargo.toml dependency version (0.2.108). The script installs wasm-bindgen-cli if not found using "cargo install wasm-bindgen-cli" without specifying a version, which could lead to version mismatches between the Rust wasm-bindgen dependency (0.2.108) and the CLI tool. This can cause build failures or runtime issues. Consider installing a specific version: "cargo install wasm-bindgen-cli --version 0.2.108".

Suggested change
# install wasm-bindgen if needed
command -v wasm-bindgen || cargo install wasm-bindgen-cli
# install wasm-bindgen if needed, pinning the version to match Cargo.toml (0.2.108)
command -v wasm-bindgen >/dev/null 2>&1 || cargo install wasm-bindgen-cli --version 0.2.108

Copilot uses AI. Check for mistakes.

# check wasm-bindgen version
wasm-bindgen --version

wasm-bindgen $WASM_PATH --target bundler --out-dir $CURRENT_DIR/stylua.bundler
wasm-bindgen $WASM_PATH --target nodejs --out-dir $CURRENT_DIR/stylua.node-cjs
wasm-bindgen $WASM_PATH --target experimental-nodejs-module --out-dir $CURRENT_DIR/stylua.node-esm
wasm-bindgen $WASM_PATH --target deno --out-dir $CURRENT_DIR/stylua.deno
wasm-bindgen $WASM_PATH --target web --out-dir $CURRENT_DIR/stylua.web

cp -R $CURRENT_DIR/stylua.bundler/. $CURRENT_DIR/

cp $CURRENT_DIR/stylua.node-cjs/stylua_lib.js $CURRENT_DIR/stylua_lib_node.cjs
cp $CURRENT_DIR/stylua.node-cjs/stylua_lib.d.ts $CURRENT_DIR/stylua_lib_node.d.cts

cp $CURRENT_DIR/stylua.node-esm/stylua_lib.js $CURRENT_DIR/stylua_lib_node.mjs
cp $CURRENT_DIR/stylua.node-esm/stylua_lib.d.ts $CURRENT_DIR/stylua_lib_node.d.mts

cp $CURRENT_DIR/stylua.deno/stylua_lib.js $CURRENT_DIR/stylua_lib_deno.js
cp $CURRENT_DIR/stylua.deno/stylua_lib.d.ts $CURRENT_DIR/stylua_lib_deno.d.ts

cp $CURRENT_DIR/stylua.web/stylua_lib.js $CURRENT_DIR/stylua_lib_web.js
cp $CURRENT_DIR/stylua.web/stylua_lib.d.ts $CURRENT_DIR/stylua_lib_web.d.ts

# workaround for bundler usage
echo "export { getImports as __getImports, finalizeInit as __finalizeInit }" >> wasm/stylua.web/stylua_lib.js
echo "Build complete!"

# bundle for node CommonJS
npx rollup@4.9.5 wasm/src/stylua_lib_node.cjs --file wasm/stylua_lib.cjs --format cjs
# Run smoke tests if --test flag is passed
if [ "$1" = "--test" ]; then
echo "Running smoke tests..."
cd $CURRENT_DIR && npm test
fi
72 changes: 25 additions & 47 deletions wasm/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,66 +11,44 @@
"type": "git",
"url": "https://github.com/johnnymorganz/stylua"
},
"scripts": {
"test": "node --test tests/smoke.test.mjs tests/smoke.test.cjs"
},
"files": [
"stylua.web/stylua_lib_bg.wasm.d.ts",
"stylua.web/stylua_lib_bg.wasm",
"stylua.web/stylua_lib.d.ts",
"stylua.web/stylua_lib.js",
"stylua_lib_bundler_wbg.cjs",
"stylua_lib_bundler.d.ts",
"stylua_lib_bundler.js",
"stylua_lib.cjs",
"stylua_lib.d.cts",
"stylua_lib.d.mts",
"stylua_lib.mjs",
"LICENSE.md"
"stylua_lib_*",
"stylua_lib.*",
"*.md"
],
"type": "module",
"main": "stylua_lib.cjs",
"module": "stylua_lib_bundler.js",
"types": "stylua.web/stylua_lib.d.ts",
"main": "stylua_lib_node.cjs",
"module": "stylua_lib.js",
"types": "stylua_lib.d.ts",
"exports": {
".": {
"webpack": {
"node": "./stylua_lib.mjs",
"default": "./stylua_lib_bundler.js"
},
"require": {
"types": "./stylua_lib.d.cts",
"default": "./stylua_lib.cjs"
},
"types": "./stylua_lib.d.ts",
"webpack": "./stylua_lib.js",
"node": {
"types": "./stylua_lib.d.mts",
"default": "./stylua_lib.mjs"
"module-sync": "./stylua_lib_node.mjs",
"require": "./stylua_lib_node.cjs",
"default": "./stylua_lib_node.mjs"
},
"deno": {
"types": "./stylua_lib.d.mts",
"default": "./stylua_lib.mjs"
},
"bun": {
"types": "./stylua_lib.d.mts",
"default": "./stylua_lib.mjs"
},
"default": {
"types": "./stylua_lib_bundler.d.ts",
"default": "./stylua_lib_bundler.js"
}
"deno": "./stylua_lib_deno.js",
"bun": "./stylua_lib_node.mjs",
"default": "./stylua_lib.js"
},
"./web": {
"types": "./stylua.web/stylua_lib.d.ts",
"default": "./stylua.web/stylua_lib.js"
"types": "./stylua_lib_web.d.ts",
"default": "./stylua_lib_web.js"
},
"./web/*": "./stylua.web/*",
"./stylua_lib_bg.wasm": "./stylua.web/stylua_lib_bg.wasm",
"./package.josn": "./package.josn",
"./stylua_lib_bg.wasm": "./stylua_lib_bg.wasm",
"./package.json": "./package.json",
"./*": "./*"
},
"browser": {
"wbg": "./stylua_lib_bundler_wbg.cjs"
},
"sideEffects": [
"stylua_lib.mjs",
"stylua_lib_bundler.js"
"./stylua_lib.js",
"./stylua_lib_node.mjs",
"./stylua_lib_node.cjs",
"./stylua_lib_deno.js"
],
"keywords": [
"cli",
Expand Down
7 changes: 0 additions & 7 deletions wasm/src/stylua_lib_node.cjs

This file was deleted.

2 changes: 0 additions & 2 deletions wasm/stylua_lib.d.cts

This file was deleted.

2 changes: 0 additions & 2 deletions wasm/stylua_lib.d.mts

This file was deleted.

7 changes: 0 additions & 7 deletions wasm/stylua_lib.mjs

This file was deleted.

2 changes: 0 additions & 2 deletions wasm/stylua_lib_bundler.d.ts

This file was deleted.

7 changes: 0 additions & 7 deletions wasm/stylua_lib_bundler.js

This file was deleted.

1 change: 0 additions & 1 deletion wasm/stylua_lib_bundler_wbg.cjs

This file was deleted.

Loading
Loading