The island pieces existed but nothing connected .wrn compilation to island
emission. Now:
- codegen emits a data-wrn-island placeholder for component tags bound to
.tsx imports, keeping .wrn components on the normal mount path
- the dev pipeline and static build resolve island imports, thread the
names into codegen, and build the bundles
- collectScripts adds /__wrnexus/islands.js only when island markup is
present, so island-free pages still ship nothing
- island routes classify as static-interactive via hasIslands
Three bugs found by driving a real page in the browser:
1. The mount runtime was never built anywhere, so the bootstrap 404'd and
no island mounted.
2. Building the runtime separately from the islands gave each its own copy
of React: "Cannot read properties of null (reading 'useState')". The
runtime is now an entrypoint of the same build so React stays in one
shared chunk. The existing single-React test only compared bundles
within one build and could not see across build boundaries.
3. Island props arrived as attribute strings, so start={3} was "3" and
incrementing produced "31" then "311". Props now follow JSX semantics:
{…} parses as JSON, quoted values stay strings, and a runtime
expression is a WRN-ISLAND-PROPS build error rather than a silent
wrong value.
island-codegen.ts no longer imports @wrnexus/core. Compiler modules are
bundled into the Node-only VS Code extension, which contains no other
packages, so a runtime import of core broke the editor compiler; the two
helpers are implemented locally and the core dependency is dropped again.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
34 lines
1013 B
JSON
34 lines
1013 B
JSON
{
|
|
"name": "@wrnexus/dev-server",
|
|
"version": "0.8.33",
|
|
"type": "module",
|
|
"main": "src/index.ts",
|
|
"exports": {
|
|
".": "./src/index.ts",
|
|
"./serve-entry": "./src/serve-entry.ts"
|
|
},
|
|
"dependencies": {
|
|
"@wrnexus/authz": "workspace:*",
|
|
"@wrnexus/rpc": "workspace:*",
|
|
"@wrnexus/core": "workspace:*",
|
|
"@wrnexus/dev-toolbar": "workspace:*",
|
|
"@wrnexus/router": "workspace:*",
|
|
"@wrnexus/ssr": "workspace:*",
|
|
"@wrnexus/csr": "workspace:*",
|
|
"@wrnexus/compiler": "workspace:*",
|
|
"@wrnexus/styles": "workspace:*",
|
|
"@wrnexus/ui": "workspace:*",
|
|
"@wrnexus/validation": "workspace:*",
|
|
"@wrnexus/i18n": "workspace:*",
|
|
"@wrnexus/db": "workspace:*",
|
|
"@wrnexus/pubsub": "workspace:*",
|
|
"@wrnexus/uploader": "workspace:*",
|
|
"@wrnexus/plugin": "workspace:*",
|
|
"@wrnexus/store": "workspace:*",
|
|
"@wrnexus/security": "workspace:*",
|
|
"@wrnexus/observability": "workspace:*",
|
|
"@wrnexus/cache": "workspace:*",
|
|
"@wrnexus/pwa": "workspace:*"
|
|
}
|
|
}
|