Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1461 commits
Select commit Hold shift + click to select a range
db80adf
fix(node-compat): fs — fix parallel/test-fs-realpath-pipe.js
vigoo Mar 12, 2026
ca0e44b
fix(node-compat): fs — fix parallel/test-fs-realpath.js
vigoo Mar 12, 2026
095ca71
fix(node-compat): fs — fix parallel/test-fs-rm.js
vigoo Mar 12, 2026
746e0dc
fix(node-compat): fs — fix parallel/test-fs-rm.js
vigoo Mar 12, 2026
349ed3c
fix(node-compat): fs — fix parallel/test-fs-rm.js
vigoo Mar 12, 2026
2958437
fix(node-compat): fs — fix parallel/test-fs-rm.js
vigoo Mar 12, 2026
8e40837
fix(node-compat): fs — fix parallel/test-fs-rmdir-recursive.js
vigoo Mar 12, 2026
91aa405
fix(node-compat): fs — fix parallel/test-fs-rmdir-recursive.js
vigoo Mar 12, 2026
a98ac12
fix(node-compat): fs — fix parallel/test-fs-stat-bigint.js
vigoo Mar 12, 2026
6058fcc
fix(node-compat): fs — fix parallel/test-fs-stat-bigint.js
vigoo Mar 12, 2026
6c8a70b
fix(node-compat): fs — fix parallel/test-fs-stat-bigint.js
vigoo Mar 12, 2026
d755c05
fix(node-compat): fs — fix parallel/test-fs-stat-bigint.js
vigoo Mar 12, 2026
5d4ecb7
fix(node-compat): fs — fix parallel/test-fs-stat-bigint.js
vigoo Mar 12, 2026
261823f
fix(node-compat): fs — fix parallel/test-fs-stat-bigint.js
vigoo Mar 12, 2026
37c7293
fix(node-compat): fs — fix parallel/test-fs-stat-bigint.js
vigoo Mar 12, 2026
bc0c682
fix(node-compat): fs — fix parallel/test-fs-statfs.js
vigoo Mar 12, 2026
a025e3e
fix(node-compat): fs — fix parallel/test-fs-stream-fs-options.js
vigoo Mar 12, 2026
437a209
fix(node-compat): fs — fix sequential/test-fs-opendir-recursive.js
vigoo Mar 12, 2026
64ef050
fix(node-compat): fs — fix sequential/test-fs-stat-sync-overflow.js
vigoo Mar 12, 2026
827e788
fix(node-compat): fs — fix parallel/test-fs-stream-options.js
vigoo Mar 12, 2026
b8a8431
fix(node-compat): fs — fix parallel/test-fs-timestamp-parsing-error.js
vigoo Mar 12, 2026
653fe64
fix(node-compat): fs — fix parallel/test-fs-write-no-fd.js
vigoo Mar 12, 2026
2ab7780
fix(node-compat): fs — fix parallel/test-fs-write-sync-optional-param…
vigoo Mar 12, 2026
d1deed0
fix(node-compat): fs — fix parallel/test-fs-watch-file-enoent-after-d…
vigoo Mar 12, 2026
14685c1
fix(node-compat): fs — fix parallel/test-fs-watch-recursive-delete.js
vigoo Mar 12, 2026
ededd59
fix(node-compat): fs — fix parallel/test-fs-watch-recursive-sync-writ…
vigoo Mar 12, 2026
bd465b4
fix(node-compat): fs — fix parallel/test-fs-watch-recursive-update-fi…
vigoo Mar 12, 2026
5efa9ec
fix(node-compat): fs — fix parallel/test-fs-sync-fd-leak.js
vigoo Mar 12, 2026
79224d5
fix(node-compat): fs — fix parallel/test-fs-syncwritestream.js
vigoo Mar 12, 2026
31d8ce2
fix(node-compat): fs — fix parallel/test-fs-util-validateoffsetlength.js
vigoo Mar 12, 2026
1bc0723
fix(node-compat): fs — fix parallel/test-fs-utils-get-dirents.js
vigoo Mar 12, 2026
8eaf4cf
fix(node-compat): fs — fix parallel/test-fs-utils-get-dirents.js
vigoo Mar 12, 2026
481b66c
fix(node-compat): fs — fix parallel/test-fs-utils-get-dirents.js
vigoo Mar 12, 2026
d1b9a6f
fix(node-compat): fs — fix parallel/test-fs-utils-get-dirents.js
vigoo Mar 12, 2026
41cf6f1
fix(node-compat): fs — fix parallel/test-fs-utils-get-dirents.js
vigoo Mar 12, 2026
a96c06a
fix(node-compat): fs — fix parallel/test-fs-utils-get-dirents.js
vigoo Mar 12, 2026
ea09ca7
fix(node-compat): fs — fix parallel/test-fs-utils-get-dirents.js
vigoo Mar 12, 2026
f3bfbef
fix(node-compat): fs — fix parallel/test-fs-utils-get-dirents.js
vigoo Mar 12, 2026
3c793e8
fix(node-compat): fs — fix parallel/test-fs-utils-get-dirents.js
vigoo Mar 12, 2026
25ccadd
fix(node-compat): fs — fix parallel/test-fs-utimes.js
vigoo Mar 12, 2026
930e211
fix(node-compat): fs — fix parallel/test-fs-utimes.js
vigoo Mar 12, 2026
ea83494
fix(node-compat): fs — fix parallel/test-fs-watch-abort-signal.js
vigoo Mar 12, 2026
aa0641c
fix(node-compat): fs — fix sequential/test-fs-opendir-recursive.js
vigoo Mar 12, 2026
b1e1d42
fix(node-compat): fs — fix sequential/test-fs-opendir-recursive.js
vigoo Mar 12, 2026
2aee173
fix(node-compat): fs — fix sequential/test-fs-opendir-recursive.js
vigoo Mar 12, 2026
3f2244c
fix(node-compat): fs — fix sequential/test-fs-opendir-recursive.js
vigoo Mar 12, 2026
3bbd02d
fix(node-compat): fs — fix sequential/test-fs-opendir-recursive.js
vigoo Mar 12, 2026
27f121a
fix(node-compat): fs — fix sequential/test-fs-opendir-recursive.js
vigoo Mar 12, 2026
bf9d2b2
fix(node-compat): fs — fix parallel/test-fs-whatwg-url.js
vigoo Mar 12, 2026
f4fc4d6
fix(node-compat): fs — fix parallel/test-fs-write-file-sync.js
vigoo Mar 12, 2026
092df9e
fix(node-compat): fs — fix parallel/test-fs-write-file-sync.js
vigoo Mar 12, 2026
f1efeb5
fix(node-compat): fs — fix parallel/test-fs-write-file-sync.js
vigoo Mar 12, 2026
40469c6
fix(node-compat): fs — fix parallel/test-fs-watch-close-when-destroye…
vigoo Mar 12, 2026
4d8faa8
fix(node-compat): fs — fix parallel/test-fs-watch-encoding.js
vigoo Mar 12, 2026
9a85a5c
fix(node-compat): fs — fix parallel/test-fs-watch-encoding.js
vigoo Mar 12, 2026
26502d7
fix(node-compat): fs — fix parallel/test-fs-watch-encoding.js
vigoo Mar 12, 2026
5f5e2f8
fix(node-compat): fs — fix parallel/test-fs-watch-enoent.js
vigoo Mar 12, 2026
a476c08
fix(node-compat): fs — fix parallel/test-fs-watch-recursive-add-file-…
vigoo Mar 12, 2026
f1aac2f
fix(node-compat): fs — fix parallel/test-fs-watch-recursive-add-file-…
vigoo Mar 12, 2026
5fc2c42
fix(node-compat): fs — fix parallel/test-fs-watch-recursive-add-file-…
vigoo Mar 12, 2026
a604995
fix(node-compat): fs — fix parallel/test-fs-watch-recursive-add-file.js
vigoo Mar 12, 2026
6cceb72
fix(node-compat): fs — fix parallel/test-fs-watch-recursive-add-folde…
vigoo Mar 12, 2026
14a7dac
fix(node-compat): fs — fix parallel/test-fs-watch-recursive-assert-le…
vigoo Mar 12, 2026
ca67e63
fix(node-compat): fs — fix parallel/test-fs-watch-recursive-promise.js
vigoo Mar 12, 2026
9b254f7
fix(node-compat): fs — fix parallel/test-fs-watch-recursive-symlink.js
vigoo Mar 12, 2026
02d9dfd
fix(node-compat): fs — fix parallel/test-fs-watch-recursive-validate.js
vigoo Mar 12, 2026
5be336b
fix(node-compat): fs — fix parallel/test-fs-watch-recursive-watch-fil…
vigoo Mar 12, 2026
1815812
fix(node-compat): fs — fix parallel/test-fs-watch-stop-async.js
vigoo Mar 12, 2026
302dad3
fix(node-compat): fs — fix parallel/test-fs-watch-stop-sync.js
vigoo Mar 12, 2026
37deb58
fix(node-compat): fs — fix parallel/test-fs-watchfile-bigint.js
vigoo Mar 12, 2026
58e310e
fix(node-compat): fs — fix parallel/test-fs-watchfile.js
vigoo Mar 12, 2026
916b6e0
fix(node-compat): fs — fix parallel/test-fs-write-file-sync.js
vigoo Mar 12, 2026
6e1d15b
fix(node-compat): fs — fix parallel/test-fs-write-file-sync.js
vigoo Mar 12, 2026
c194899
fix(node-compat): fs — fix parallel/test-fs-write-file-sync.js
vigoo Mar 12, 2026
ac05912
fix(node-compat): fs — fix parallel/test-fs-write-sigxfsz.js
vigoo Mar 12, 2026
2afb530
fix(node-compat): fs — fix parallel/test-fs-write.js
vigoo Mar 12, 2026
503d61c
fix(node-compat): fs — fix parallel/test-fs-write.js
vigoo Mar 12, 2026
60002cf
fix(node-compat): fs — fix parallel/test-fs-write.js
vigoo Mar 12, 2026
dc4b567
fix(node-compat): fs — fix parallel/test-fs-write.js
vigoo Mar 12, 2026
e3ce871
fix(node-compat): fs — fix parallel/test-fs-write.js
vigoo Mar 12, 2026
391cb17
fix(node-compat): fs — fix sequential/test-fs-watch.js
vigoo Mar 12, 2026
38c0bd0
fix(node-compat): fs — fix sequential/test-fs-watch.js
vigoo Mar 12, 2026
9c70f22
fix(node-compat): fs — fix sequential/test-fs-watch.js
vigoo Mar 12, 2026
c6dd388
fix(node-compat): fs — fix sequential/test-fs-watch.js
vigoo Mar 12, 2026
28f1b52
fix(node-compat): fs — fix sequential/test-fs-watch.js
vigoo Mar 12, 2026
c06b29d
fix(node-compat): fs — fix sequential/test-fs-watch.js
vigoo Mar 12, 2026
e0c848c
cleanup node:fs
vigoo Mar 12, 2026
f62da25
fix(node-compat): webstreams — fix skip-regressions
vigoo Mar 12, 2026
b153880
fix(node-compat): webstreams — fix batch-partial-other-1-9of10
vigoo Mar 12, 2026
e62c99f
fix(node-compat): webstreams — fix batch-enable-other-2
vigoo Mar 12, 2026
ebb01dd
fix(node-compat): webstreams — fix batch-enable-other-3
vigoo Mar 12, 2026
877ca1d
fix(node-compat): webstreams — fix batch-enable-other-4
vigoo Mar 12, 2026
62dcae1
fix(node-compat): webstreams — fix batch-enable-other-5
vigoo Mar 12, 2026
f83560f
fix(node-compat): webstreams — fix batch-partial-other-6-5of6
vigoo Mar 12, 2026
ea734b1
fix(node-compat): webstreams — fix batch-fix-other
vigoo Mar 12, 2026
2ef0d85
node:fs fixes and better categorization
vigoo Mar 13, 2026
1812fc8
new 'impossible' flag for vendored tests
vigoo Mar 13, 2026
83355d6
lite/normal/full mode
vigoo Mar 13, 2026
34d34a8
Updated report
vigoo Mar 15, 2026
67a63d3
Fixes and report generator improvements
vigoo Mar 15, 2026
4cedd1c
Regenerated report
vigoo Mar 16, 2026
5ec0621
Fixes and improvements
vigoo Mar 16, 2026
8a0d0c1
various failing tests fixed
vigoo Mar 16, 2026
8fb4f8e
Updated testing-library skill to create integration tests
vigoo Mar 16, 2026
05445e8
More library tests and related fixes
vigoo Mar 16, 2026
ad7a39f
lib: @google/generative-ai test
vigoo Mar 17, 2026
8100de7
lib: cohere-ai test
vigoo Mar 17, 2026
e5175f6
lib: @mistralai/mistralai test
vigoo Mar 17, 2026
de45ce3
lib: groq-sdk test
vigoo Mar 17, 2026
ea7f05a
lib: together-ai test
vigoo Mar 17, 2026
b5dbeee
Improved testing-library skill
vigoo Mar 17, 2026
ed77848
lib: replicate test
vigoo Mar 17, 2026
f10ea2b
lib: @huggingface/inference test
vigoo Mar 17, 2026
01210b4
lib: @huggingface/hub test
vigoo Mar 17, 2026
d9f1dcf
lib: ollama test
vigoo Mar 17, 2026
54a392e
lib: @ai-sdk/openai test
vigoo Mar 17, 2026
fe6a17d
http fix
vigoo Mar 17, 2026
a250408
test-libraries skill improvements
vigoo Mar 17, 2026
527a11c
More library test results
vigoo Mar 17, 2026
af0b27f
lib: @ai-sdk/anthropic test
vigoo Mar 17, 2026
9b89ca8
lib: @ai-sdk/google test
vigoo Mar 17, 2026
b6b94e8
lib: @ai-sdk/mistral test
vigoo Mar 17, 2026
d5963ca
lib: @langchain/openai test
vigoo Mar 17, 2026
a44ef9a
lib: @langchain/anthropic test
vigoo Mar 17, 2026
6e5002e
lib: @langchain/google-genai test
vigoo Mar 17, 2026
806ce82
lib: @langchain/community test
vigoo Mar 17, 2026
155c37c
lib: langsmith test
vigoo Mar 17, 2026
688f8f7
lib: autogen test
vigoo Mar 17, 2026
cf0687d
lib: crewai test
vigoo Mar 17, 2026
a7a4bda
lib: @instructor-ai/instructor test
vigoo Mar 17, 2026
a6784dc
lib: mastra test
vigoo Mar 17, 2026
c3cf3f5
lib: @genkit-ai/core test
vigoo Mar 17, 2026
d5cca4a
lib: openai test
vigoo Mar 17, 2026
41f1ae1
lib: voyageai test
vigoo Mar 17, 2026
c233420
lib: @jina-ai/sdk test
vigoo Mar 17, 2026
22bafbc
lib: @xenova/transformers test
vigoo Mar 17, 2026
53a4562
lib: llamaindex test
vigoo Mar 17, 2026
d99b6eb
lib: @pinecone-database/pinecone test
vigoo Mar 17, 2026
b0ba41a
lib: weaviate-client test
vigoo Mar 17, 2026
1da35cd
lib: @qdrant/js-client-rest test
vigoo Mar 17, 2026
8aeed4f
lib: chromadb test
vigoo Mar 17, 2026
65f1b0e
lib: @zilliz/milvus2-sdk-node test
vigoo Mar 17, 2026
72a396d
lib: @lancedb/lancedb test
vigoo Mar 17, 2026
c999ff0
lib: @turbopuffer/turbopuffer test
vigoo Mar 17, 2026
0de8221
lib: @upstash/vector test
vigoo Mar 17, 2026
495e452
lib: neo4j-driver test
vigoo Mar 17, 2026
3305561
lib: arangojs test
vigoo Mar 17, 2026
f753a92
lib: dgraph-js-http test
vigoo Mar 17, 2026
ab5a3b1
lib: surrealdb test
vigoo Mar 18, 2026
7f89709
lib: falkordb test
vigoo Mar 18, 2026
29a6dfc
lib: typedb-driver test
vigoo Mar 18, 2026
f2106ba
lib: @elastic/elasticsearch test
vigoo Mar 18, 2026
66bf986
lib: algoliasearch test
vigoo Mar 18, 2026
c1321b6
lib: typesense test
vigoo Mar 18, 2026
79035ac
lib: meilisearch test
vigoo Mar 18, 2026
573bccc
lib: @opensearch-project/opensearch test
vigoo Mar 18, 2026
f695f74
lib: serpapi test
vigoo Mar 18, 2026
cfe2c0c
lib: serper test
vigoo Mar 18, 2026
65b9ed1
lib: @tavily/core test
vigoo Mar 18, 2026
779ef49
lib: brave-search test
vigoo Mar 18, 2026
159726b
lib: exa-js test
vigoo Mar 18, 2026
4ce3580
lib: googleapis test
vigoo Mar 18, 2026
ba2d5ac
lib: @deepgram/sdk test
vigoo Mar 18, 2026
e926b57
lib: assemblyai test
vigoo Mar 18, 2026
43038de
lib: elevenlabs test
vigoo Mar 18, 2026
d397281
lib: @google-cloud/speech test
vigoo Mar 18, 2026
e3fc505
lib: @google-cloud/text-to-speech test
vigoo Mar 18, 2026
721c8cb
lib: microsoft-cognitiveservices-speech-sdk test
vigoo Mar 18, 2026
aead737
lib: playht test
vigoo Mar 18, 2026
3d21786
lib: @cartesia/cartesia-js test
vigoo Mar 18, 2026
b6aec6e
lib: @stability-ai/sdk test
vigoo Mar 18, 2026
66d7ec7
lib: @fal-ai/client test
vigoo Mar 18, 2026
0533859
lib: lumaai test
vigoo Mar 18, 2026
7fba97c
lib: @runwayml/sdk test
vigoo Mar 18, 2026
cfcf44e
lib: @leonardo-ai/sdk test
vigoo Mar 18, 2026
90f9599
lib: effect test
vigoo Mar 18, 2026
67d12b4
lib: @effect/platform test
vigoo Mar 18, 2026
2f5a79c
lib: @effect/platform-node test
vigoo Mar 18, 2026
8e611d8
lib: @effect/schema test
vigoo Mar 18, 2026
5be0b3b
Fixed skill
vigoo Mar 18, 2026
98165dd
lib: @effect/cli test
vigoo Mar 18, 2026
bbc9944
lib: @effect/sql test
vigoo Mar 18, 2026
cff8872
lib: @effect/sql-pg test
vigoo Mar 18, 2026
fda0b60
Updated testing-libraries skill
vigoo Mar 18, 2026
130260f
lib: @effect/sql-mysql2 test
vigoo Mar 18, 2026
9e330ba
lib: @effect/sql-sqlite-node test
vigoo Mar 18, 2026
ff65a9d
lib: @effect/rpc test
vigoo Mar 18, 2026
46d045c
lib: @effect/opentelemetry test
vigoo Mar 18, 2026
ab2d925
lib: @effect/cluster test
vigoo Mar 18, 2026
627b0f7
lib: @opentelemetry/api test
vigoo Mar 18, 2026
b48e2a6
lib: @opentelemetry/sdk-trace-base test
vigoo Mar 18, 2026
660f52a
lib: @opentelemetry/sdk-metrics test
vigoo Mar 18, 2026
0d2b018
lib: @opentelemetry/exporter-trace-otlp-http test
vigoo Mar 18, 2026
97484de
lib: @sentry/node test
vigoo Mar 18, 2026
0d35255
lib: dd-trace test
vigoo Mar 18, 2026
491952c
lib: prom-client test
vigoo Mar 18, 2026
3210bae
lib: handlebars test
vigoo Mar 18, 2026
3007c24
lib: ejs test
vigoo Mar 18, 2026
8691017
lib: mustache test
vigoo Mar 18, 2026
4e2a7a1
lib: nunjucks test
vigoo Mar 18, 2026
988962e
lib: liquidjs test
vigoo Mar 18, 2026
d0bd834
lib: csv-parser test
vigoo Mar 18, 2026
45bd8aa
lib: papaparse test
vigoo Mar 18, 2026
7eb3da7
lib: xlsx test
vigoo Mar 18, 2026
47f88d4
lib: pdf-parse test
vigoo Mar 18, 2026
26295f2
lib: cheerio test
vigoo Mar 18, 2026
56e7c37
lib: turndown test
vigoo Mar 18, 2026
e186bbb
lib: marked test
vigoo Mar 18, 2026
f508aed
encoding, http and url fixes
vigoo Mar 19, 2026
a360060
more tests and fixes
vigoo Mar 19, 2026
427422a
Errors module fixes
vigoo Mar 19, 2026
05104e4
inspector and formdata_node
vigoo Mar 19, 2026
163dabf
initialization fix
vigoo Mar 19, 2026
2e83feb
__filename and __dirname
vigoo Mar 19, 2026
5177efc
library testing fix
vigoo Mar 19, 2026
1493047
self
vigoo Mar 19, 2026
3a07991
intl fixes
vigoo Mar 19, 2026
baf84b0
Merge branch 'main' into node-compat
vigoo Mar 19, 2026
84c0cfd
Fixes after merge
vigoo Mar 19, 2026
8d8b8c7
CI improvements
vigoo Mar 19, 2026
ebe7533
CI improvements
vigoo Mar 19, 2026
5e47f91
Compilation fix
vigoo Mar 19, 2026
bc65a3f
Format and clippy
vigoo Mar 19, 2026
63f1d63
Format and clippy
vigoo Mar 19, 2026
74314be
CI fix
vigoo Mar 19, 2026
1d17f3a
Updated README
vigoo Mar 19, 2026
d489e08
Include cargo.lock in skeleton
vigoo Mar 19, 2026
01af47d
Test reorganization
vigoo Mar 19, 2026
7919462
Updated goldenfiles
vigoo Mar 19, 2026
4f0b602
Use shared target dir for all
vigoo Mar 19, 2026
e3ef6ed
Split runtime tests
vigoo Mar 19, 2026
cf5e9ef
Fix runtime crypto tests
vigoo Mar 19, 2026
b619ed1
Format
vigoo Mar 19, 2026
408bf4a
Sequential run for node_compat tests
vigoo Mar 19, 2026
bbd109e
Parallel run for node_compat tests
vigoo Mar 20, 2026
7357111
Updated report
vigoo Mar 20, 2026
fe1bdc1
Skipped/ignored failing vendored tests
vigoo Mar 20, 2026
236b39f
Test runner improvements
vigoo Mar 20, 2026
bc15c96
Report fixes
vigoo Mar 20, 2026
95acb87
Fixes
vigoo Mar 20, 2026
6f94166
Fix
vigoo Mar 20, 2026
88a77dc
Updated library report
vigoo Mar 20, 2026
20d91d3
Fixed and updated node.js report
vigoo Mar 20, 2026
e229d85
Cleanup built-in modules
vigoo Mar 20, 2026
53621b1
Revert breaking cleanup
vigoo Mar 20, 2026
9a27aab
Revert breaking cleanup
vigoo Mar 20, 2026
0c132e1
Revert breaking cleanup
vigoo Mar 20, 2026
eae40b3
Skip failing test
vigoo Mar 20, 2026
f52669f
Revert breaking cleanup
vigoo Mar 20, 2026
2c7c4ff
Revert breaking cleanup
vigoo Mar 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
The diff you're trying to view is too large. We only load the first 3000 changed files.
130 changes: 130 additions & 0 deletions .agents/skills/adding-builtin-module/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
---
name: adding-builtin-module
description: "Scaffolds and registers a new Node.js-compatible built-in module in the skeleton. Use when asked to add a new node:X module, implement a new built-in, or create a new native+JS module pair."
---

# Adding a New Built-in Module

Step-by-step guide for adding a new Node.js-compatible built-in module to the skeleton.

## Architecture

Built-in modules use a **hybrid native+JS pattern**:
- **Rust native bridge**: Low-level operations via `#[rquickjs::module]`, registered as `__wasm_rquickjs_builtin/<name>_native`
- **JS wrapper**: High-level Node.js-compatible API surface, imports from the native bridge

## Checklist

### 1. Create the Rust native module

File: `crates/wasm-rquickjs/skeleton/src/builtin/<name>.rs`

```rust
use rquickjs::module::ModuleDef;
use rquickjs::prelude::*;

pub const <NAME>_JS: &str = include_str!("<name>.js");
pub const REEXPORT_JS: &str = r#"export { default } from 'node:<name>'; export * from 'node:<name>';"#;
pub const WIRE_JS: &str = ""; // Only if globals need wiring

#[rquickjs::module]
mod native_module {
// Export functions here
#[rquickjs::function]
pub fn example_function() -> String {
"hello".to_string()
}
}

pub use native_module::js_native_module;
```

### 2. Create the JS wrapper

File: `crates/wasm-rquickjs/skeleton/src/builtin/<name>.js`

```javascript
import { example_function } from '__wasm_rquickjs_builtin/<name>_native';
// NOTE: Always use original Rust snake_case names in imports!

// Implement Node.js-compatible API surface
const result = example_function();

export { result };
export default { result };
```

### 3. Add dependencies (if needed)

Edit `crates/wasm-rquickjs/skeleton/Cargo.toml_`:
- Always use `default-features = false` for crates that may pull in C/native libraries
- Use pure-Rust backends (e.g., `rust_backend` feature) for `wasm32-wasip2` compatibility

### 4. Register in `mod.rs`

File: `crates/wasm-rquickjs/skeleton/src/builtin/mod.rs`

Four places need updating:

**a) Add the module declaration** (top of file):
```rust
mod <name>;
```

**b) Add to `add_module_resolvers`** — register the internal native path and public names:
```rust
.with_module("__wasm_rquickjs_builtin/<name>_native")
.with_module("node:<name>")
.with_module("<name>")
```

**c) Add to `module_loader` (ModuleLoader)** — map native path to Rust module:
```rust
.with_module("__wasm_rquickjs_builtin/<name>_native", <name>::js_native_module)
```

**d) Add to `module_loader` (BuiltinLoader)** — map public names to JS constants:
```rust
.with_module("node:<name>", <name>::<NAME>_JS)
.with_module("<name>", <name>::REEXPORT_JS)
```

**e) (Optional) Add to `wire_builtins`** — if the module needs to attach globals:
```rust
writeln!(result, "{}", <name>::WIRE_JS).unwrap();
```

### 5. Update README.md

Add the new module to the supported APIs list in `README.md`.

## Critical Gotchas

### `#[rquickjs::module(rename = ...)]` does NOT affect JS imports
The `rename` attribute (e.g., `rename = "camelCase"`) only affects Rust-side naming. JavaScript `import` statements must always use the **original Rust `snake_case` names**. Importing the camelCase version causes "Could not find export" errors.

### `u32` return value truncation
`rquickjs` may deliver `u32` as signed i32 to JavaScript (e.g., `0xFFFFFFFF` → `-1`). In the JS wrapper, apply `>>> 0`:
```javascript
const result = native_fn() >>> 0;
```

### CJS default export immutability
Use `Object.defineProperty` with `writable: false, configurable: false` on default export objects to emulate Node.js behavior where module constants are immutable.

### WASM-compatible dependencies
Always use `default-features = false` for crates that may pull in C libraries. Use pure-Rust backends to ensure `wasm32-wasip2` target compatibility.

### No platform-conditional code
The skeleton is **always compiled to `wasm32-wasip1`**. Never write conditional code that checks for unix/windows/macOS or any other host platform (e.g., `#[cfg(unix)]`, `#[cfg(windows)]`, `#[cfg(target_os = "...")]`, `process.platform === "win32"`, `path.sep === "\\"`, etc.). Such checks are meaningless in the WASM target and add dead code complexity.

### node:http transport rule
**Never use a loopback transport for `node:http`.** Every `node:http` client request MUST go through `wasi:http` (the native Rust `NodeHttpClientRequest`). Do NOT add any fallback that bypasses `wasi:http` by creating direct `node:net` socket connections for loopback/localhost addresses.

## Testing

1. Define an example in `examples/runtime/` (JS file + WIT interface pair)
2. Add tests in `tests/runtime.rs` that use the example
3. Run: `cargo test --test runtime <module> -- --nocapture`

If also adding node_compat coverage, use the `fixing-node-compat-test` skill for that workflow.
Loading
Loading