@cmj/juice 0.0.3 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ npm install @cmj/juice react@^19 react-dom@^19 vite@^6
|
|
|
12
12
|
## Quickstart
|
|
13
13
|
|
|
14
14
|
```bash
|
|
15
|
-
npx create-juice-app my-app
|
|
15
|
+
npx @cmj/create-juice-app my-app
|
|
16
16
|
cd my-app
|
|
17
17
|
npm install
|
|
18
18
|
npm run dev
|
|
@@ -21,7 +21,7 @@ npm run dev
|
|
|
21
21
|
Or scaffold for a specific target:
|
|
22
22
|
|
|
23
23
|
```bash
|
|
24
|
-
npx create-juice-app my-app --target cloudflare
|
|
24
|
+
npx @cmj/create-juice-app my-app --target cloudflare
|
|
25
25
|
```
|
|
26
26
|
|
|
27
27
|
**Targets:** `bun` (default), `node`, `cloudflare`, `deno`
|
|
@@ -78,7 +78,7 @@ Source (.tsx) → Vite Plugin → flight-manifest.json → Runtime → Response
|
|
|
78
78
|
- **React 19 RSC** — Server Components, Suspense, streaming SSR
|
|
79
79
|
- **Server Actions** — `'use server'` with FormData support
|
|
80
80
|
- **Zero config** — One plugin call, no magic files
|
|
81
|
-
- **
|
|
81
|
+
- **One dependency** — Only `urlpattern-polyfill` for cross-platform routing
|
|
82
82
|
- **Multi-platform** — Bun, Node.js, Cloudflare Workers, Deno
|
|
83
83
|
- **Empathic errors** — "What-Why-How" error messages for fast debugging
|
|
84
84
|
- **HMR** — Full hot module replacement in development
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/cli/templates.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC;AAElE,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAAmD,CAAC;AAEtG,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAKtD,CAAC;AAEF,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,eAAe,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"templates.d.ts","sourceRoot":"","sources":["../../src/cli/templates.ts"],"names":[],"mappings":"AAKA,MAAM,MAAM,YAAY,GAAG,KAAK,GAAG,MAAM,GAAG,YAAY,GAAG,MAAM,CAAC;AAElE,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAAmD,CAAC;AAEtG,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,YAAY,EAAE,MAAM,CAKtD,CAAC;AAEF,UAAU,eAAe;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,YAAY,CAAC;CACtB;AAED,wBAAgB,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,eAAe,GAAG,MAAM,CA4CrE;AAED,wBAAgB,QAAQ,IAAI,MAAM,CAiBjC;AAED,wBAAgB,UAAU,IAAI,MAAM,CAQnC;AA8DD,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAExD;AAED,wBAAgB,SAAS,IAAI,MAAM,CAmBlC"}
|
package/dist/cli/templates.js
CHANGED
|
@@ -16,18 +16,24 @@ export function packageJson({ name, target }) {
|
|
|
16
16
|
cloudflare: 'wrangler dev',
|
|
17
17
|
deno: 'deno run --allow-net --allow-read server.ts',
|
|
18
18
|
};
|
|
19
|
+
const devScript = {
|
|
20
|
+
bun: 'bun --watch server.ts',
|
|
21
|
+
node: 'node --watch dist/server.js',
|
|
22
|
+
cloudflare: 'wrangler dev',
|
|
23
|
+
deno: 'deno run --watch --allow-net --allow-read server.ts',
|
|
24
|
+
};
|
|
19
25
|
const pkg = {
|
|
20
26
|
name,
|
|
21
27
|
private: true,
|
|
22
28
|
type: 'module',
|
|
23
29
|
scripts: {
|
|
24
|
-
dev:
|
|
30
|
+
dev: devScript[target],
|
|
25
31
|
build: 'vite build',
|
|
26
32
|
start: startScript[target],
|
|
27
33
|
typecheck: 'tsc --noEmit',
|
|
28
34
|
},
|
|
29
35
|
dependencies: {
|
|
30
|
-
'@cmj/juice': '^0.0.
|
|
36
|
+
'@cmj/juice': '^0.0.4',
|
|
31
37
|
react: '^19.0.0',
|
|
32
38
|
'react-dom': '^19.0.0',
|
|
33
39
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/cli/templates.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,kCAAkC;AAClC,mEAAmE;AACnE,oEAAoE;AAIpE,MAAM,CAAC,MAAM,cAAc,GAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAU,CAAC;AAEtG,MAAM,CAAC,MAAM,aAAa,GAAiC;IACzD,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,oBAAoB;IAChC,IAAI,EAAE,MAAM;CACb,CAAC;AAOF,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAmB;IAC3D,MAAM,WAAW,GAAiC;QAChD,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,cAAc;QAC1B,IAAI,EAAE,6CAA6C;KACpD,CAAC;IAEF,MAAM,GAAG,GAA4B;QACnC,IAAI;QACJ,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,GAAG,EAAE,
|
|
1
|
+
{"version":3,"file":"templates.js","sourceRoot":"","sources":["../../src/cli/templates.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,kCAAkC;AAClC,mEAAmE;AACnE,oEAAoE;AAIpE,MAAM,CAAC,MAAM,cAAc,GAA4B,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,CAAU,CAAC;AAEtG,MAAM,CAAC,MAAM,aAAa,GAAiC;IACzD,GAAG,EAAE,KAAK;IACV,IAAI,EAAE,SAAS;IACf,UAAU,EAAE,oBAAoB;IAChC,IAAI,EAAE,MAAM;CACb,CAAC;AAOF,MAAM,UAAU,WAAW,CAAC,EAAE,IAAI,EAAE,MAAM,EAAmB;IAC3D,MAAM,WAAW,GAAiC;QAChD,GAAG,EAAE,eAAe;QACpB,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,cAAc;QAC1B,IAAI,EAAE,6CAA6C;KACpD,CAAC;IAEF,MAAM,SAAS,GAAiC;QAC9C,GAAG,EAAE,uBAAuB;QAC5B,IAAI,EAAE,6BAA6B;QACnC,UAAU,EAAE,cAAc;QAC1B,IAAI,EAAE,qDAAqD;KAC5D,CAAC;IAEF,MAAM,GAAG,GAA4B;QACnC,IAAI;QACJ,OAAO,EAAE,IAAI;QACb,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE;YACP,GAAG,EAAE,SAAS,CAAC,MAAM,CAAC;YACtB,KAAK,EAAE,YAAY;YACnB,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC;YAC1B,SAAS,EAAE,cAAc;SAC1B;QACD,YAAY,EAAE;YACZ,YAAY,EAAE,QAAQ;YACtB,KAAK,EAAE,SAAS;YAChB,WAAW,EAAE,SAAS;SACvB;QACD,eAAe,EAAE;YACf,cAAc,EAAE,SAAS;YACzB,kBAAkB,EAAE,SAAS;YAC7B,UAAU,EAAE,QAAQ;YACpB,IAAI,EAAE,QAAQ;SACf;KACF,CAAC;IAEF,2DAA2D;IAC3D,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACrB,GAAG,CAAC,eAA0C,CAAC,aAAa,CAAC,GAAG,SAAS,CAAC;IAC7E,CAAC;IAED,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AAC7C,CAAC;AAED,MAAM,UAAU,QAAQ;IACtB,MAAM,MAAM,GAAG;QACb,eAAe,EAAE;YACf,MAAM,EAAE,QAAQ;YAChB,MAAM,EAAE,QAAQ;YAChB,gBAAgB,EAAE,SAAS;YAC3B,GAAG,EAAE,WAAW;YAChB,MAAM,EAAE,IAAI;YACZ,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;YACrB,YAAY,EAAE,IAAI;YAClB,eAAe,EAAE,IAAI;YACrB,oBAAoB,EAAE,IAAI;SAC3B;QACD,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;KACjC,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC;AAChD,CAAC;AAED,MAAM,UAAU,UAAU;IACxB,OAAO;;;;;;CAMR,CAAC;AACF,CAAC;AAED,mEAAmE;AAEnE,MAAM,eAAe,GAAG;;;;;;;;;;;;;;CAcvB,CAAC;AAEF,MAAM,eAAe,GAAiC;IACpD,GAAG,EAAE;;;;;;;CAON;IACC,IAAI,EAAE;;;;;;;;;;;;;;;;;;;;;;CAsBP;IACC,UAAU,EAAE;;CAEb;IACC,IAAI,EAAE;;;;CAIP;CACA,CAAC;AAEF,MAAM,UAAU,WAAW,CAAC,MAAoB;IAC9C,OAAO,eAAe,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,SAAS;IACvB,OAAO;;;;;;;;;;;;;;;;;CAiBR,CAAC;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/runtime/matcher.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"matcher.d.ts","sourceRoot":"","sources":["../../src/runtime/matcher.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAmB1E;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,EAC5C,QAAQ,EAAE,MAAM,GACf,cAAc,EAAE,CAmBlB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,EACX,QAAQ,EAAE,SAAS,cAAc,EAAE,GAClC,WAAW,GAAG,IAAI,CAqBpB"}
|
package/dist/runtime/matcher.js
CHANGED
|
@@ -1,8 +1,25 @@
|
|
|
1
1
|
// ── juice/runtime matcher ──────────────────────────────────────────
|
|
2
2
|
// Zero-dependency route matching using the WinterCG URLPattern API.
|
|
3
3
|
// Compiled once at startup, matched per-request.
|
|
4
|
+
//
|
|
5
|
+
// Auto-polyfills URLPattern for runtimes that don't provide it
|
|
6
|
+
// (Bun <1.1, Node <22). The polyfill is a peer/optional dep.
|
|
4
7
|
// ────────────────────────────────────────────────────────────────────
|
|
5
8
|
import { ManifestValidationError } from './errors.js';
|
|
9
|
+
// Auto-polyfill URLPattern if not globally available
|
|
10
|
+
if (!('URLPattern' in globalThis)) {
|
|
11
|
+
try {
|
|
12
|
+
// Dynamic require/import of the polyfill — installs globally
|
|
13
|
+
await import('urlpattern-polyfill');
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
throw new Error('[juice/runtime] URLPattern is not available in this runtime and ' +
|
|
17
|
+
'the "urlpattern-polyfill" package is not installed.\n\n' +
|
|
18
|
+
' npm install urlpattern-polyfill\n\n' +
|
|
19
|
+
'URLPattern is natively available in Deno, Cloudflare Workers, ' +
|
|
20
|
+
'and Node.js 22+. For older runtimes, install the polyfill.');
|
|
21
|
+
}
|
|
22
|
+
}
|
|
6
23
|
/**
|
|
7
24
|
* Compiles the manifest's flat route map into an array of `URLPattern`
|
|
8
25
|
* matchers. Called **once** inside `createRouter` at initialization.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/runtime/matcher.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,iDAAiD;AACjD,uEAAuE;AAGvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,cAAc,CAC5B,MAA4C,EAC5C,QAAgB;IAEhB,mEAAmE;IACnE,MAAM,IAAI,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAElE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE;QACrD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;gBAClD,KAAK;aACN,CAAC;QACJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,IAAI,uBAAuB,CAC/B,0BAA0B,OAAO,mBAAmB,WAAW,MAAM;gBACnE,iCAAiC;gBACjC,uCAAuC,CAC1C,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,WAAW,CACzB,GAAW,EACX,QAAmC;IAEnC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,4DAA4D;YAC5D,yDAAyD;YACzD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzC,MAAM,MAAM,GAA2B,EAAE,CAAC;YAE1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACtB,CAAC;YACH,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
1
|
+
{"version":3,"file":"matcher.js","sourceRoot":"","sources":["../../src/runtime/matcher.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,oEAAoE;AACpE,iDAAiD;AACjD,EAAE;AACF,+DAA+D;AAC/D,6DAA6D;AAC7D,uEAAuE;AAGvE,OAAO,EAAE,uBAAuB,EAAE,MAAM,aAAa,CAAC;AAEtD,qDAAqD;AACrD,IAAI,CAAC,CAAC,YAAY,IAAI,UAAU,CAAC,EAAE,CAAC;IAClC,IAAI,CAAC;QACH,6DAA6D;QAC7D,MAAM,MAAM,CAAC,qBAAqB,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,MAAM,IAAI,KAAK,CACb,kEAAkE;YAChE,yDAAyD;YACzD,uCAAuC;YACvC,gEAAgE;YAChE,4DAA4D,CAC/D,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,UAAU,cAAc,CAC5B,MAA4C,EAC5C,QAAgB;IAEhB,mEAAmE;IACnE,MAAM,IAAI,GAAG,QAAQ,KAAK,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAElE,OAAO,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,CAAC,EAAE,EAAE;QACrD,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;QAC7D,IAAI,CAAC;YACH,OAAO;gBACL,OAAO,EAAE,IAAI,UAAU,CAAC,EAAE,QAAQ,EAAE,WAAW,EAAE,CAAC;gBAClD,KAAK;aACN,CAAC;QACJ,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,IAAI,uBAAuB,CAC/B,0BAA0B,OAAO,mBAAmB,WAAW,MAAM;gBACnE,iCAAiC;gBACjC,uCAAuC,CAC1C,CAAC;QACJ,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,WAAW,CACzB,GAAW,EACX,QAAmC;IAEnC,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACvC,IAAI,MAAM,EAAE,CAAC;YACX,4DAA4D;YAC5D,yDAAyD;YACzD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;YACzC,MAAM,MAAM,GAA2B,EAAE,CAAC;YAE1C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;gBACzC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;gBAC7B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBACxB,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;gBACtB,CAAC;YACH,CAAC;YAED,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACxC,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cmj/juice",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.5",
|
|
4
4
|
"description": "Zero-bloat React 19 RSC framework — streaming SSR, server actions, zero config.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"keywords": [
|
|
@@ -72,6 +72,9 @@
|
|
|
72
72
|
"test": "vitest run",
|
|
73
73
|
"test:watch": "vitest"
|
|
74
74
|
},
|
|
75
|
+
"dependencies": {
|
|
76
|
+
"urlpattern-polyfill": "^10.1.0"
|
|
77
|
+
},
|
|
75
78
|
"peerDependencies": {
|
|
76
79
|
"react": "^19.0.0",
|
|
77
80
|
"react-dom": "^19.0.0",
|