From 3de799b1ad0208d1c76b698f0b378fe70c010436 Mon Sep 17 00:00:00 2001 From: sean Date: Tue, 3 Mar 2026 13:50:41 +0800 Subject: [PATCH 1/3] feat: add resourcexExecutor to Platform for custom resolver execution Pass CustomExecutor through Platform to ResourceX, enabling QuickJS Wasm execution in Cloudflare Workers where eval() is prohibited. Co-Authored-By: Claude Opus 4.6 --- .changeset/custom-executor-platform.md | 9 +++++++++ bun.lock | 14 +++++++------- packages/core/src/platform.ts | 5 ++++- packages/rolexjs/src/rolex.ts | 6 +++++- 4 files changed, 25 insertions(+), 9 deletions(-) create mode 100644 .changeset/custom-executor-platform.md diff --git a/.changeset/custom-executor-platform.md b/.changeset/custom-executor-platform.md new file mode 100644 index 0000000..945b886 --- /dev/null +++ b/.changeset/custom-executor-platform.md @@ -0,0 +1,9 @@ +--- +"@rolexjs/core": minor +"rolexjs": minor +--- + +Add resourcexExecutor to Platform interface for custom resolver execution + +Platform now accepts an optional CustomExecutor, passed through to ResourceX +as isolator: "custom". Enables QuickJS Wasm execution in Workers environments. diff --git a/bun.lock b/bun.lock index cb928d9..c8bdf63 100644 --- a/bun.lock +++ b/bun.lock @@ -5,9 +5,9 @@ "": { "name": "rolexjs", "dependencies": { - "@resourcexjs/core": "^2.17.2", - "@resourcexjs/node-provider": "^2.17.2", - "resourcexjs": "^2.17.2", + "@resourcexjs/core": "^2.18.0", + "@resourcexjs/node-provider": "^2.18.0", + "resourcexjs": "^2.18.0", }, "devDependencies": { "@biomejs/biome": "^2.4.0", @@ -366,11 +366,11 @@ "@pondwader/socks5-server": ["@pondwader/socks5-server@1.0.10", "", {}, "sha512-bQY06wzzR8D2+vVCUoBsr5QS2U6UgPUQRmErNwtsuI6vLcyRKkafjkr3KxbtGFf9aBBIV2mcvlsKD1UYaIV+sg=="], - "@resourcexjs/arp": ["@resourcexjs/arp@2.17.2", "https://registry.npmmirror.com/@resourcexjs/arp/-/arp-2.17.2.tgz", {}, "sha512-DN9sBDICZMpQVwmT4V8U/PSlN289tnrwkZie73kRT7VqbuAdJbEih0JmW2OtPEvHyB1fDlJYZKEtx8l6cCcDzg=="], + "@resourcexjs/arp": ["@resourcexjs/arp@2.18.0", "", {}, "sha512-rcpdtBM46bwcjLeSoGp8vip6yfeuv6+4Fl99ltKe99LKSXxTxuDgMuhxfBT//ZJaCagIiVaioyqRwLozX5blAg=="], - "@resourcexjs/core": ["@resourcexjs/core@2.17.2", "https://registry.npmmirror.com/@resourcexjs/core/-/core-2.17.2.tgz", { "dependencies": { "modern-tar": "^0.7.3", "zod": "^4.3.6" } }, "sha512-NdsNbBJOnC5a3TNrA8Qn0wCA/qvnYzEgNSGvL9Bq2kIMU6uSmQyTG1FKJvz/0RXgEa60GrOaJTJGvjQzxpjpdg=="], + "@resourcexjs/core": ["@resourcexjs/core@2.18.0", "", { "dependencies": { "modern-tar": "^0.7.3", "zod": "^4.3.6" } }, "sha512-y/Pnp5+s+lmg3kXbo8h8menJvq511z6PIN8/uH/CQjw35BoEHJQpKPSlHcXQY3Npd6MyOPkKBJ4yGsRMxdOlcA=="], - "@resourcexjs/node-provider": ["@resourcexjs/node-provider@2.17.2", "https://registry.npmmirror.com/@resourcexjs/node-provider/-/node-provider-2.17.2.tgz", { "dependencies": { "@resourcexjs/core": "^2.17.2" } }, "sha512-QlCWHhpBOJWbigYoR1wB3oKDLxgxC7g4mp0PRd6QuXCXQzpj3XOwKic8549/FmHN3LRfcn3gLahfCTtuEkH2EQ=="], + "@resourcexjs/node-provider": ["@resourcexjs/node-provider@2.18.0", "", { "dependencies": { "@resourcexjs/core": "^2.18.0" } }, "sha512-8QZNl/YBNQHV7pecvvm6sj54ufgcAQ7U/moO3B6sZIoh3t+54voQtLULDWTLRehlxVITt6eIU6cm4vedVqNPSg=="], "@rolexjs/bdd": ["@rolexjs/bdd@workspace:bdd"], @@ -964,7 +964,7 @@ "resolve-from": ["resolve-from@5.0.0", "", {}, "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw=="], - "resourcexjs": ["resourcexjs@2.17.2", "https://registry.npmmirror.com/resourcexjs/-/resourcexjs-2.17.2.tgz", { "dependencies": { "@resourcexjs/arp": "^2.17.2", "@resourcexjs/core": "^2.17.2", "sandboxxjs": "^0.5.1" } }, "sha512-xQYMbQ5V107mdTQ/29M6ntAQsdPIcanVvyXd6Iu1SuHihIFp/Fv2whQzQZvEN1KuwJZBFZqVrjYGALnI0lTmsw=="], + "resourcexjs": ["resourcexjs@2.18.0", "", { "dependencies": { "@resourcexjs/arp": "^2.18.0", "@resourcexjs/core": "^2.18.0", "sandboxxjs": "^0.5.1" } }, "sha512-UYEyLoDVvxImopuOyIcZFa2obilOsHkS52Ey2fYKvuMHvl2JEa+zTZyJG2psyZ1HtixeDOD1SIXA2oZXMp09TA=="], "reusify": ["reusify@1.1.0", "", {}, "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw=="], diff --git a/packages/core/src/platform.ts b/packages/core/src/platform.ts index 4b07e32..747506b 100644 --- a/packages/core/src/platform.ts +++ b/packages/core/src/platform.ts @@ -11,7 +11,7 @@ * (ResourceX, bootstrap config) to form a complete runtime environment. */ -import type { ResourceXProvider } from "@resourcexjs/core"; +import type { CustomExecutor, ResourceXProvider } from "@resourcexjs/core"; import type { Initializer, Runtime } from "@rolexjs/system"; /** Serializable context data for persistence. */ @@ -54,6 +54,9 @@ export interface Platform { /** ResourceX provider — injected storage backend for resource management. */ readonly resourcexProvider?: ResourceXProvider; + /** Custom executor for ResourceX resolver execution (e.g., QuickJS Wasm for Workers). */ + readonly resourcexExecutor?: CustomExecutor; + /** Initializer — bootstrap the world on first run. */ readonly initializer?: Initializer; diff --git a/packages/rolexjs/src/rolex.ts b/packages/rolexjs/src/rolex.ts index 37bf531..3611ccb 100644 --- a/packages/rolexjs/src/rolex.ts +++ b/packages/rolexjs/src/rolex.ts @@ -47,7 +47,11 @@ export class Rolex { // Create ResourceX from injected provider if (platform.resourcexProvider) { setProvider(platform.resourcexProvider); - this.resourcex = createResourceX(); + this.resourcex = createResourceX( + platform.resourcexExecutor + ? { isolator: "custom", executor: platform.resourcexExecutor } + : undefined + ); } } From acc3b9bcb54f0122874e0a2cd4aa2bed73771a0e Mon Sep 17 00:00:00 2001 From: sean Date: Tue, 3 Mar 2026 13:51:07 +0800 Subject: [PATCH 2/3] style: fix biome formatting issues Co-Authored-By: Claude Opus 4.6 --- package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/package.json b/package.json index 1a4c5a7..88cfffc 100644 --- a/package.json +++ b/package.json @@ -48,9 +48,9 @@ "bun": ">=1.3.0" }, "dependencies": { - "@resourcexjs/core": "^2.17.2", - "@resourcexjs/node-provider": "^2.17.2", - "resourcexjs": "^2.17.2" + "@resourcexjs/core": "^2.18.0", + "@resourcexjs/node-provider": "^2.18.0", + "resourcexjs": "^2.18.0" }, "overrides": { "resourcexjs": "^2.14.0", From 051cfb2f4c904f85a6da64a002eeaec7b2782263 Mon Sep 17 00:00:00 2001 From: sean Date: Tue, 3 Mar 2026 17:00:04 +0800 Subject: [PATCH 3/3] fix(ci): restore workspace protocol replacement in release workflow The replacement step was accidentally removed in ec9e241 when switching dev releases to snapshot mode. Co-Authored-By: Claude Opus 4.6 --- .changeset/tall-places-think.md | 5 +++++ .github/workflows/changesets.yml | 15 ++++++++++++++- 2 files changed, 19 insertions(+), 1 deletion(-) create mode 100644 .changeset/tall-places-think.md diff --git a/.changeset/tall-places-think.md b/.changeset/tall-places-think.md new file mode 100644 index 0000000..a0fa531 --- /dev/null +++ b/.changeset/tall-places-think.md @@ -0,0 +1,5 @@ +--- +"rolexjs": patch +--- + +fix(ci): restore workspace protocol replacement in release workflow diff --git a/.github/workflows/changesets.yml b/.github/workflows/changesets.yml index 57be6cb..1229425 100644 --- a/.github/workflows/changesets.yml +++ b/.github/workflows/changesets.yml @@ -36,6 +36,19 @@ jobs: - name: Build Packages run: bun run build + - name: Replace workspace protocol + run: | + VERSION=$(jq -r '.version' packages/core/package.json) + echo "Replacing workspace:* with ^${VERSION}" + + find packages apps -name "package.json" -type f -exec sed -i 's/"workspace:\*"/"^'"${VERSION}"'"/g' {} \; + + if grep -r '"workspace:' packages/ apps/ --include="package.json" 2>/dev/null; then + echo "ERROR: workspace: protocol still found!" + exit 1 + fi + echo "All workspace:* replaced with ^${VERSION}" + - name: Create Release Pull Request or Publish id: changesets uses: changesets/action@v1 @@ -79,7 +92,7 @@ jobs: if: steps.changesets.outputs.published == 'true' run: | VERSION=$(jq -r '.version' packages/core/package.json) - echo "## ✅ Packages Published" >> $GITHUB_STEP_SUMMARY + echo "## Packages Published" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "**Version:** v${VERSION}" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY