port ujsx from Deno-only to cross-platform (Node/Bun/Deno)

Add npm project configuration (package.json, tsconfig.json, tsup, vitest)
matching the taskgraph_ts conventions. All source imports changed from .ts
to .js extensions for Node16 module resolution. Tests migrated from Deno.test
to vitest. Fixed strict type errors (noUncheckedIndexedAccess). Preserved
deno.json with sloppy-imports for dual Deno/Node compatibility.

Subpath exports: schema, h, reactive, context, events, pointer, host,
transform, jsx-runtime — plus barrel export at root.

Build: ESM + CJS dual output via tsup. 22 tests passing.
This commit is contained in:
2026-05-03 08:19:49 +00:00
parent b256fc7eb5
commit 3eb1f1d896
19 changed files with 4137 additions and 0 deletions

149
package.json Normal file
View File

@@ -0,0 +1,149 @@
{
"name": "@alkdev/ujsx",
"version": "0.1.0",
"description": "Universal JSX — runtime-agnostic reactive tree primitives with TypeBox schemas",
"type": "module",
"main": "./dist/mod.cjs",
"module": "./dist/mod.js",
"types": "./dist/mod.d.ts",
"exports": {
".": {
"import": {
"types": "./dist/mod.d.ts",
"default": "./dist/mod.js"
},
"require": {
"types": "./dist/mod.d.cts",
"default": "./dist/mod.cjs"
}
},
"./schema": {
"import": {
"types": "./dist/core/schema.d.ts",
"default": "./dist/core/schema.js"
},
"require": {
"types": "./dist/core/schema.d.cts",
"default": "./dist/core/schema.cjs"
}
},
"./h": {
"import": {
"types": "./dist/core/h.d.ts",
"default": "./dist/core/h.js"
},
"require": {
"types": "./dist/core/h.d.cts",
"default": "./dist/core/h.cjs"
}
},
"./reactive": {
"import": {
"types": "./dist/core/reactive.d.ts",
"default": "./dist/core/reactive.js"
},
"require": {
"types": "./dist/core/reactive.d.cts",
"default": "./dist/core/reactive.cjs"
}
},
"./context": {
"import": {
"types": "./dist/core/context.d.ts",
"default": "./dist/core/context.js"
},
"require": {
"types": "./dist/core/context.d.cts",
"default": "./dist/core/context.cjs"
}
},
"./events": {
"import": {
"types": "./dist/core/events.d.ts",
"default": "./dist/core/events.js"
},
"require": {
"types": "./dist/core/events.d.cts",
"default": "./dist/core/events.cjs"
}
},
"./pointer": {
"import": {
"types": "./dist/core/pointer.d.ts",
"default": "./dist/core/pointer.js"
},
"require": {
"types": "./dist/core/pointer.d.cts",
"default": "./dist/core/pointer.cjs"
}
},
"./host": {
"import": {
"types": "./dist/host/config.d.ts",
"default": "./dist/host/config.js"
},
"require": {
"types": "./dist/host/config.d.cts",
"default": "./dist/host/config.cjs"
}
},
"./transform": {
"import": {
"types": "./dist/transform/registry.d.ts",
"default": "./dist/transform/registry.js"
},
"require": {
"types": "./dist/transform/registry.d.cts",
"default": "./dist/transform/registry.cjs"
}
},
"./jsx-runtime": {
"import": {
"types": "./dist/core/jsx-runtime.d.ts",
"default": "./dist/core/jsx-runtime.js"
},
"require": {
"types": "./dist/core/jsx-runtime.d.cts",
"default": "./dist/core/jsx-runtime.cjs"
}
}
},
"publishConfig": {
"access": "public"
},
"files": [
"dist"
],
"scripts": {
"build": "tsup",
"build:tsc": "tsc",
"test": "vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"lint": "tsc --noEmit",
"prepublishOnly": "npm run build"
},
"keywords": [
"ujsx",
"jsx",
"reactive",
"signals",
"typebox",
"universal-jsx"
],
"license": "MIT OR Apache-2.0",
"dependencies": {
"@alkdev/typebox": "^0.34.49",
"@preact/signals-core": "^1.14.1"
},
"devDependencies": {
"@types/node": "^22.0.0",
"@vitest/coverage-v8": "^3.2.4",
"tsup": "^8.5.1",
"typescript": "^5.7.0",
"vitest": "^3.1.0"
},
"engines": {
"node": ">=18.0.0"
}
}