Skip to content

Commit

Permalink
fix(core): wasi target (#22)
Browse files Browse the repository at this point in the history
  • Loading branch information
Brooooooklyn authored Jul 21, 2024
1 parent 9e2fee7 commit e7a57f3
Show file tree
Hide file tree
Showing 15 changed files with 531 additions and 703 deletions.
5 changes: 2 additions & 3 deletions .github/workflows/CI.yml
Original file line number Diff line number Diff line change
Expand Up @@ -342,7 +342,6 @@ jobs:
run: corepack enable && npm run test
test-wasi:
name: Test WASI target
if: false
needs:
- build
runs-on: ubuntu-latest
Expand All @@ -356,7 +355,7 @@ jobs:
node-version: 20
cache: pnpm
- name: Install dependencies
run: pnpm install
run: pnpm install --force
- name: Download artifacts
uses: actions/download-artifact@v4
with:
Expand All @@ -377,7 +376,7 @@ jobs:
- test-macOS-windows-binding
- test-linux-binding
- build-freebsd
# - test-wasi
- test-wasi
steps:
- uses: actions/checkout@v4
- name: setup pnpm
Expand Down
79 changes: 47 additions & 32 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 @@ -10,7 +10,7 @@ crate-type = ["cdylib"]
[dependencies]
napi = { version = "3.0.0-alpha.7", default-features = false, features = ["serde-json", "napi3"] }
napi-derive = { version = "3.0.0-alpha.6", default-features = false, features = ["type-def"] }
oxc = { version = "0.20", features = ["codegen", "transformer"] }
oxc = { version = "0.21", features = ["codegen", "transformer"] }
oxc_resolver = "1"
phf = "0.11"
serde = { version = "1.0", features = ["derive"] }
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
"private": true,
"packageManager": "[email protected]",
"devDependencies": {
"@napi-rs/cli": "^3.0.0-alpha.60",
"@napi-rs/cli": "^3.0.0-alpha.62",
"@napi-rs/wasm-runtime": "^0.2.4",
"@oxc-node/core": "workspace:*",
"@taplo/cli": "^0.7.0",
Expand Down
23 changes: 22 additions & 1 deletion packages/core/esm.mjs
Original file line number Diff line number Diff line change
@@ -1,5 +1,26 @@
import { load, resolve, initTracing } from './index.js'
import { isMainThread, MessageChannel } from 'node:worker_threads'

import { load, createResolve, initTracing } from './index.js'

initTracing()

if (!isMainThread) {
const mc = new MessageChannel()
mc.port1.ref()
}

/**
* @type {import('node:module').ResolveHook}
*/
function resolve(specifier, context, nextResolve) {
return createResolve(
{
getCurrentDirectory: () => process.cwd(),
},
specifier,
context,
nextResolve,
)
}

export { load, resolve }
6 changes: 5 additions & 1 deletion packages/core/index.d.ts
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,8 @@ export declare class Output {
sourceMap(): string | null
}

export declare function createResolve(options: OxcResolveOptions, specifier: string, context: ResolveContext, nextResolve: (arg0: string, arg1?: ResolveContext | undefined | null) => ResolveFnOutput | Promise<ResolveFnOutput>): ResolveFnOutput | Promise<ResolveFnOutput>

export declare function initTracing(): void

export declare function load(url: string, context: LoadContext, nextLoad: (arg0: string, arg1?: LoadContext | undefined | null) => LoadFnOutput | Promise<LoadFnOutput>): LoadFnOutput | Promise<LoadFnOutput>
Expand All @@ -32,7 +34,9 @@ export interface LoadFnOutput {
responseURL?: string
}

export declare function resolve(specifier: string, context: ResolveContext, nextResolve: (arg0: string, arg1?: ResolveContext | undefined | null) => ResolveFnOutput | Promise<ResolveFnOutput>): ResolveFnOutput | Promise<ResolveFnOutput>
export interface OxcResolveOptions {
getCurrentDirectory?: () => string
}

export interface ResolveContext {
/** Export conditions of the relevant `package.json` */
Expand Down
6 changes: 3 additions & 3 deletions packages/core/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -336,15 +336,15 @@ if (!nativeBinding || process.env.NAPI_RS_FORCE_WASI) {
nativeBinding = require('./oxc-node.wasi.cjs')
} catch (err) {
if (process.env.NAPI_RS_FORCE_WASI) {
console.error(err)
loadErrors.push(err)
}
}
if (!nativeBinding) {
try {
nativeBinding = require('@oxc-node/core-wasm32-wasi')
} catch (err) {
if (process.env.NAPI_RS_FORCE_WASI) {
console.error(err)
loadErrors.push(err)
}
}
}
Expand All @@ -362,8 +362,8 @@ if (!nativeBinding) {
}

module.exports.Output = nativeBinding.Output
module.exports.createResolve = nativeBinding.createResolve
module.exports.initTracing = nativeBinding.initTracing
module.exports.load = nativeBinding.load
module.exports.resolve = nativeBinding.resolve
module.exports.transform = nativeBinding.transform
module.exports.transformAsync = nativeBinding.transformAsync
11 changes: 6 additions & 5 deletions packages/core/oxc-node.wasi-browser.js
Original file line number Diff line number Diff line change
Expand Up @@ -59,14 +59,15 @@ function __napi_rs_initialize_modules(__napiInstance) {
__napiInstance.exports['__napi_register__transform_async_7']?.()
__napiInstance.exports['__napi_register__ResolveContext_struct_8']?.()
__napiInstance.exports['__napi_register__ResolveFnOutput_struct_9']?.()
__napiInstance.exports['__napi_register__resolve_10']?.()
__napiInstance.exports['__napi_register__LoadContext_struct_11']?.()
__napiInstance.exports['__napi_register__LoadFnOutput_struct_12']?.()
__napiInstance.exports['__napi_register__load_13']?.()
__napiInstance.exports['__napi_register__OxcResolveOptions_struct_10']?.()
__napiInstance.exports['__napi_register__create_resolve_11']?.()
__napiInstance.exports['__napi_register__LoadContext_struct_12']?.()
__napiInstance.exports['__napi_register__LoadFnOutput_struct_13']?.()
__napiInstance.exports['__napi_register__load_14']?.()
}
export const Output = __napiModule.exports.Output
export const createResolve = __napiModule.exports.createResolve
export const initTracing = __napiModule.exports.initTracing
export const load = __napiModule.exports.load
export const resolve = __napiModule.exports.resolve
export const transform = __napiModule.exports.transform
export const transformAsync = __napiModule.exports.transformAsync
11 changes: 6 additions & 5 deletions packages/core/oxc-node.wasi.cjs
Original file line number Diff line number Diff line change
Expand Up @@ -90,14 +90,15 @@ function __napi_rs_initialize_modules(__napiInstance) {
__napiInstance.exports['__napi_register__transform_async_7']?.()
__napiInstance.exports['__napi_register__ResolveContext_struct_8']?.()
__napiInstance.exports['__napi_register__ResolveFnOutput_struct_9']?.()
__napiInstance.exports['__napi_register__resolve_10']?.()
__napiInstance.exports['__napi_register__LoadContext_struct_11']?.()
__napiInstance.exports['__napi_register__LoadFnOutput_struct_12']?.()
__napiInstance.exports['__napi_register__load_13']?.()
__napiInstance.exports['__napi_register__OxcResolveOptions_struct_10']?.()
__napiInstance.exports['__napi_register__create_resolve_11']?.()
__napiInstance.exports['__napi_register__LoadContext_struct_12']?.()
__napiInstance.exports['__napi_register__LoadFnOutput_struct_13']?.()
__napiInstance.exports['__napi_register__load_14']?.()
}
module.exports.Output = __napiModule.exports.Output
module.exports.createResolve = __napiModule.exports.createResolve
module.exports.initTracing = __napiModule.exports.initTracing
module.exports.load = __napiModule.exports.load
module.exports.resolve = __napiModule.exports.resolve
module.exports.transform = __napiModule.exports.transform
module.exports.transformAsync = __napiModule.exports.transformAsync
2 changes: 1 addition & 1 deletion packages/integrate-module-bundler/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
"test": "node --import @oxc-node/core/register ./src/index.ts"
},
"devDependencies": {
"@napi-rs/simple-git": "^0.1.16",
"@napi-rs/tar": "^0.1.4",
"@napi-rs/wasm-runtime": "^0.2.4",
"@oxc-node/core": "workspace:*",
"@types/node": "^20.14.9",
Expand Down
4 changes: 2 additions & 2 deletions packages/integrate-module-bundler/src/index.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import assert from 'node:assert'
import test from 'node:test'

import { RepositoryState } from '@napi-rs/simple-git'
import { EntryType } from '@napi-rs/tar'
import { bar as subBar } from '@subdirectory/bar'
import { supportedExtensions } from 'file-type'
import { renderToString } from 'react-dom/server'
Expand Down Expand Up @@ -52,7 +52,7 @@ await test('jsx should work', () => {
})

await test('resolve @napi-rs projects', () => {
assert.equal(RepositoryState.ApplyMailbox, 10)
assert.equal(EntryType.GNUSparse, 10)
})

await test('resolve simple-git', () => {
Expand Down
Loading

0 comments on commit e7a57f3

Please sign in to comment.