@oomfware/jsx 0.1.4 → 0.1.6
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/dist/index.d.mts +12 -2
- package/dist/index.d.mts.map +1 -1
- package/dist/index.mjs +164 -68
- package/dist/index.mjs.map +1 -1
- package/dist/jsx-dev-runtime.d.mts +1 -1
- package/dist/{jsx-runtime-CpxZaJu6.d.mts → jsx-runtime-DNOsJEgZ.d.mts} +8 -4
- package/dist/jsx-runtime-DNOsJEgZ.d.mts.map +1 -0
- package/dist/jsx-runtime.d.mts +1 -1
- package/package.json +4 -1
- package/src/index.ts +8 -1
- package/src/lib/context.ts +1 -50
- package/src/lib/intrinsic-elements.ts +9 -4
- package/src/lib/render-context.ts +115 -0
- package/src/lib/render.ts +187 -80
- package/src/lib/stream.test.tsx +445 -2
- package/src/lib/suspense.ts +15 -1
- package/dist/jsx-runtime-CpxZaJu6.d.mts.map +0 -1
|
@@ -25,6 +25,10 @@ interface JSXElement<P = unknown, T extends string | Component<any> = string | C
|
|
|
25
25
|
type JSXNode = JSXElement | string | number | bigint | boolean | null | undefined | Iterable<JSXNode>;
|
|
26
26
|
//#endregion
|
|
27
27
|
//#region src/lib/intrinsic-elements.d.ts
|
|
28
|
+
/**
|
|
29
|
+
* a single class value that can be conditionally applied
|
|
30
|
+
*/
|
|
31
|
+
type ClassValue = string | false | 0 | null | undefined;
|
|
28
32
|
/**
|
|
29
33
|
* boolean or string boolean for DOM attributes
|
|
30
34
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute
|
|
@@ -342,7 +346,7 @@ interface HTMLAttributes extends AriaAttributes, DOMAttributes {
|
|
|
342
346
|
accesskey?: string | undefined;
|
|
343
347
|
autocapitalize?: 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined | (string & {});
|
|
344
348
|
autofocus?: boolean | undefined;
|
|
345
|
-
class?: string | undefined;
|
|
349
|
+
class?: string | ClassValue[] | undefined;
|
|
346
350
|
contenteditable?: Booleanish | 'inherit' | 'plaintext-only' | undefined;
|
|
347
351
|
/** @deprecated */
|
|
348
352
|
contextmenu?: string | undefined;
|
|
@@ -817,7 +821,7 @@ interface VideoHTMLAttributes extends MediaHTMLAttributes {
|
|
|
817
821
|
onresize?: string | undefined;
|
|
818
822
|
}
|
|
819
823
|
interface SVGAttributes extends AriaAttributes, DOMAttributes {
|
|
820
|
-
class?: string | undefined;
|
|
824
|
+
class?: string | ClassValue[] | undefined;
|
|
821
825
|
color?: string | undefined;
|
|
822
826
|
height?: number | string | undefined;
|
|
823
827
|
id?: string | undefined;
|
|
@@ -1295,5 +1299,5 @@ declare function Fragment(props: {
|
|
|
1295
1299
|
children?: JSXNode;
|
|
1296
1300
|
}): JSXNode;
|
|
1297
1301
|
//#endregion
|
|
1298
|
-
export {
|
|
1299
|
-
//# sourceMappingURL=jsx-runtime-
|
|
1302
|
+
export { JSX as a, FC as c, HTMLAttributes as i, JSXElement as l, jsx as n, SVGAttributes as o, ClassValue as r, Component as s, Fragment as t, JSXNode as u };
|
|
1303
|
+
//# sourceMappingURL=jsx-runtime-DNOsJEgZ.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jsx-runtime-DNOsJEgZ.d.mts","names":[],"sources":["../src/lib/types.ts","../src/lib/intrinsic-elements.ts","../src/jsx-runtime.ts"],"sourcesContent":[],"mappings":"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SACA;SACA;gBACO;UACN;QACF;YACI;YACA;aACC;YACD;UACF;UACA;SACD;cACK;UACJ;cACI;QACN;SACC;aACI;SACJ;YACG;SACH;QACD;QACA;QACA;WACG;cACG;gBACE;YACJ;YACA;UACF;QACF;QACA;QACA;QACA;QACA;QACA;UACE;YACE;YACA;QACJ;UACE;OACH;YACK;SACH;WACE;SACF;SACA;YACG;WACD;YACC;QACJ;UACE;UACA;SACD;UACC;UACA;cACI;UACJ;WACC;SACF;aACI;cACC;YACF;QACJ;cACM;YACF;YACA;OACL;WACI;aACE;SACJ;cACK;OACP;QACC;QACA;UACE;OACH;UACG;YACE;UACF;YACE;aACC;YACD;WACD;YACC;UACF;YACE;WACD;SACF;aACI;SACJ;WACE;cACG;WACH;QACH;cACM;WACH;QACH;WACG;UACD;WACC;QACH;WACG;OACJ;QACC;SACC;WACE;SACF;aACI;SAGJ;aAEI;mBACM;sBACG;YACV;cACE;UACJ;UACA;aACG;aACA;mBACM;yBACM;iBACR;sBACK;uBACC;uBACA;oBACH;kBACF;aACL;aACA;aACA;aACA;aACA;oBACO;aACP;aACA;iBACI;kBACC;cACJ;kBACI;wBACM;iBACP;YACL;kBACM;YACN;mBACO;OACZ;WACI;UACD;oBACU;YACR;UACF;cACI;WACH;UACD;aACG;aACA;cACC;oBACM;UACV;SACD;UACC;YACE;YACA;UACF;cACI;WACH;SACF;UACC;;;;;;;AD5jDR;AAGA;AAWA;;AAAsF,iBEbtE,GFasE,CAAA,CAAA,EAAA,UAAA,MAAA,GEb5C,SFa4C,CAAA,GAAA,CAAA,CAAA,CAAA,IAAA,EEbtB,CFasB,EAAA,KAAA,EEbZ,CFaY,CAAA,EEbR,UFaQ,CEbG,CFaH,EEbM,CFaN,CAAA;AAE9E,iBETQ,QAAA,CFSR,KAAA,EAAA;EAAC,QAAA,CAAA,EEToC,OFSpC;AAWT,CAAA,CAAA,EEpByD,OFoB7C"}
|
package/dist/jsx-runtime.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { a as JSX, n as jsx, t as Fragment } from "./jsx-runtime-DNOsJEgZ.mjs";
|
|
2
2
|
export { Fragment, JSX, jsx, jsx as jsxs };
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"type": "module",
|
|
3
3
|
"name": "@oomfware/jsx",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.6",
|
|
5
5
|
"description": "server-side JSX renderer",
|
|
6
6
|
"license": "0BSD",
|
|
7
7
|
"repository": {
|
|
@@ -37,6 +37,9 @@
|
|
|
37
37
|
"tsdown": "^0.18.1",
|
|
38
38
|
"typescript": "^5.9.3"
|
|
39
39
|
},
|
|
40
|
+
"dependencies": {
|
|
41
|
+
"@atcute/uint8array": "^1.0.6"
|
|
42
|
+
},
|
|
40
43
|
"scripts": {
|
|
41
44
|
"build": "tsdown",
|
|
42
45
|
"dev": "tsdown --watch",
|
package/src/index.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
export type { Component, FC, JSXElement, JSXNode } from './lib/types.js';
|
|
2
|
+
export type { ClassValue, HTMLAttributes, JSX, SVGAttributes } from './lib/intrinsic-elements.js';
|
|
2
3
|
|
|
3
4
|
export { Fragment } from './jsx-runtime.js';
|
|
4
5
|
|
|
@@ -6,6 +7,12 @@ export { cloneElement, createElement, createElement as h } from './lib/create-el
|
|
|
6
7
|
|
|
7
8
|
export { createContext, type Context } from './lib/context.js';
|
|
8
9
|
|
|
9
|
-
export {
|
|
10
|
+
export {
|
|
11
|
+
ErrorBoundary,
|
|
12
|
+
type ErrorBoundaryProps,
|
|
13
|
+
Suspense,
|
|
14
|
+
type SuspenseProps,
|
|
15
|
+
use,
|
|
16
|
+
} from './lib/suspense.js';
|
|
10
17
|
|
|
11
18
|
export { render, renderToStream, renderToString, type RenderOptions } from './lib/render.js';
|
package/src/lib/context.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { Fragment, jsx } from '../jsx-runtime.ts';
|
|
2
2
|
|
|
3
|
+
import { provide } from './render-context.ts';
|
|
3
4
|
import type { JSXElement, JSXNode } from './types.ts';
|
|
4
5
|
|
|
5
6
|
/** context object returned by createContext() */
|
|
@@ -46,53 +47,3 @@ export function createContext<T>(defaultValue?: T): Context<T | undefined> {
|
|
|
46
47
|
|
|
47
48
|
return context;
|
|
48
49
|
}
|
|
49
|
-
|
|
50
|
-
/** stack of context frames */
|
|
51
|
-
type ContextFrame = Map<Context<unknown>, unknown>;
|
|
52
|
-
const contextStack: ContextFrame[] = [];
|
|
53
|
-
|
|
54
|
-
/** current frame being built (lazily initialized on first provide) */
|
|
55
|
-
export let currentFrame: ContextFrame | null = null;
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* provides a value for the context during the current component's render
|
|
59
|
-
* @param context context key from createContext()
|
|
60
|
-
* @param value value to provide
|
|
61
|
-
*/
|
|
62
|
-
export function provide<T>(context: Context<T>, value: T): void {
|
|
63
|
-
if (!currentFrame) {
|
|
64
|
-
// lazily create frame, copying from previous
|
|
65
|
-
const prev = contextStack[contextStack.length - 1];
|
|
66
|
-
currentFrame = prev ? new Map(prev) : new Map();
|
|
67
|
-
}
|
|
68
|
-
currentFrame.set(context as Context<unknown>, value);
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* returns current provided value, or the default value
|
|
73
|
-
* @param context context key from createContext()
|
|
74
|
-
*/
|
|
75
|
-
export function inject<T>(context: Context<T>): T {
|
|
76
|
-
// check current frame first, then stack
|
|
77
|
-
const frame = currentFrame ?? contextStack[contextStack.length - 1];
|
|
78
|
-
if (frame?.has(context as Context<unknown>)) {
|
|
79
|
-
return frame.get(context as Context<unknown>) as T;
|
|
80
|
-
}
|
|
81
|
-
return context.defaultValue;
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
/** push current frame to stack (called before rendering children) */
|
|
85
|
-
export function pushContextFrame(): void {
|
|
86
|
-
if (currentFrame) {
|
|
87
|
-
contextStack.push(currentFrame);
|
|
88
|
-
currentFrame = null;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
|
|
92
|
-
/** pop context frame (called after rendering children) */
|
|
93
|
-
export function popContextFrame(hadFrame: boolean): void {
|
|
94
|
-
if (hadFrame) {
|
|
95
|
-
contextStack.pop();
|
|
96
|
-
}
|
|
97
|
-
currentFrame = null;
|
|
98
|
-
}
|
|
@@ -4,6 +4,11 @@ import type * as CSS from 'csstype';
|
|
|
4
4
|
|
|
5
5
|
import type { JSXElement, JSXNode } from './types.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* a single class value that can be conditionally applied
|
|
9
|
+
*/
|
|
10
|
+
export type ClassValue = string | false | 0 | null | undefined;
|
|
11
|
+
|
|
7
12
|
/**
|
|
8
13
|
* boolean or string boolean for DOM attributes
|
|
9
14
|
* @see https://developer.mozilla.org/en-US/docs/Web/API/Element/getAttribute
|
|
@@ -449,12 +454,12 @@ type AriaRole =
|
|
|
449
454
|
| 'treeitem'
|
|
450
455
|
| (string & {});
|
|
451
456
|
|
|
452
|
-
interface HTMLAttributes extends AriaAttributes, DOMAttributes {
|
|
457
|
+
export interface HTMLAttributes extends AriaAttributes, DOMAttributes {
|
|
453
458
|
// Standard HTML Attributes
|
|
454
459
|
accesskey?: string | undefined;
|
|
455
460
|
autocapitalize?: 'off' | 'none' | 'on' | 'sentences' | 'words' | 'characters' | undefined | (string & {});
|
|
456
461
|
autofocus?: boolean | undefined;
|
|
457
|
-
class?: string | undefined;
|
|
462
|
+
class?: string | ClassValue[] | undefined;
|
|
458
463
|
contenteditable?: Booleanish | 'inherit' | 'plaintext-only' | undefined;
|
|
459
464
|
/** @deprecated */
|
|
460
465
|
contextmenu?: string | undefined;
|
|
@@ -1094,9 +1099,9 @@ interface VideoHTMLAttributes extends MediaHTMLAttributes {
|
|
|
1094
1099
|
// - "number | string"
|
|
1095
1100
|
// - "string"
|
|
1096
1101
|
// - union of string literals
|
|
1097
|
-
interface SVGAttributes extends AriaAttributes, DOMAttributes {
|
|
1102
|
+
export interface SVGAttributes extends AriaAttributes, DOMAttributes {
|
|
1098
1103
|
// Attributes which also defined in HTMLAttributes
|
|
1099
|
-
class?: string | undefined;
|
|
1104
|
+
class?: string | ClassValue[] | undefined;
|
|
1100
1105
|
color?: string | undefined;
|
|
1101
1106
|
height?: number | string | undefined;
|
|
1102
1107
|
id?: string | undefined;
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import type { Context } from './context.ts';
|
|
2
|
+
import type { JSXNode } from './types.ts';
|
|
3
|
+
|
|
4
|
+
/** stack of context frames */
|
|
5
|
+
type ContextFrame = Map<Context<unknown>, unknown>;
|
|
6
|
+
|
|
7
|
+
// #region Segment types
|
|
8
|
+
|
|
9
|
+
export type Segment =
|
|
10
|
+
| {
|
|
11
|
+
readonly kind: 'static';
|
|
12
|
+
readonly html: string;
|
|
13
|
+
}
|
|
14
|
+
| {
|
|
15
|
+
readonly kind: 'composite';
|
|
16
|
+
readonly parts: readonly Segment[];
|
|
17
|
+
}
|
|
18
|
+
| {
|
|
19
|
+
readonly kind: 'suspense';
|
|
20
|
+
readonly id: string;
|
|
21
|
+
readonly fallback: Segment;
|
|
22
|
+
pending?: Promise<void>;
|
|
23
|
+
content: Segment | null;
|
|
24
|
+
}
|
|
25
|
+
| {
|
|
26
|
+
readonly kind: 'error-boundary';
|
|
27
|
+
readonly children: Segment;
|
|
28
|
+
readonly fallbackFn: (error: unknown) => JSXNode;
|
|
29
|
+
readonly renderContext: RenderContext;
|
|
30
|
+
readonly path: string;
|
|
31
|
+
fallbackSegment: Segment | null;
|
|
32
|
+
};
|
|
33
|
+
|
|
34
|
+
// #endregion
|
|
35
|
+
|
|
36
|
+
/** render context passed through the render tree */
|
|
37
|
+
export interface RenderContext {
|
|
38
|
+
contextStack: ContextFrame[];
|
|
39
|
+
currentFrame: ContextFrame | null;
|
|
40
|
+
headElements: string[];
|
|
41
|
+
idsByPath: Map<string, number>;
|
|
42
|
+
insideHead: boolean;
|
|
43
|
+
insideSvg: boolean;
|
|
44
|
+
onError: (error: unknown) => void;
|
|
45
|
+
pendingSuspense: Array<{ id: string; promise: Promise<Segment> }>;
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
/** active render context (set by renderer) */
|
|
49
|
+
let activeRenderContext: RenderContext | null = null;
|
|
50
|
+
|
|
51
|
+
/**
|
|
52
|
+
* sets the active render context
|
|
53
|
+
* @param ctx render context to activate, or null to clear
|
|
54
|
+
* @returns the previous render context
|
|
55
|
+
*/
|
|
56
|
+
export function setActiveRenderContext(ctx: RenderContext | null): RenderContext | null {
|
|
57
|
+
const prev = activeRenderContext;
|
|
58
|
+
activeRenderContext = ctx;
|
|
59
|
+
return prev;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* provides a value for the context during the current component's render
|
|
64
|
+
* @param context context key from createContext()
|
|
65
|
+
* @param value value to provide
|
|
66
|
+
*/
|
|
67
|
+
export function provide<T>(context: Context<T>, value: T): void {
|
|
68
|
+
const ctx = activeRenderContext!;
|
|
69
|
+
if (!ctx.currentFrame) {
|
|
70
|
+
// lazily create frame, copying from previous
|
|
71
|
+
const prev = ctx.contextStack[ctx.contextStack.length - 1];
|
|
72
|
+
ctx.currentFrame = prev ? new Map(prev) : new Map();
|
|
73
|
+
}
|
|
74
|
+
ctx.currentFrame.set(context as Context<unknown>, value);
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* returns current provided value, or the default value
|
|
79
|
+
* @param context context key from createContext()
|
|
80
|
+
*/
|
|
81
|
+
export function inject<T>(context: Context<T>): T {
|
|
82
|
+
const ctx = activeRenderContext!;
|
|
83
|
+
// check current frame first, then stack
|
|
84
|
+
const frame = ctx.currentFrame ?? ctx.contextStack[ctx.contextStack.length - 1];
|
|
85
|
+
if (frame?.has(context as Context<unknown>)) {
|
|
86
|
+
return frame.get(context as Context<unknown>) as T;
|
|
87
|
+
}
|
|
88
|
+
return context.defaultValue;
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/**
|
|
92
|
+
* pushes current frame to stack (called before rendering children)
|
|
93
|
+
* @returns whether a frame was pushed (needed for popContextFrame)
|
|
94
|
+
*/
|
|
95
|
+
export function pushContextFrame(): boolean {
|
|
96
|
+
const ctx = activeRenderContext!;
|
|
97
|
+
if (ctx.currentFrame) {
|
|
98
|
+
ctx.contextStack.push(ctx.currentFrame);
|
|
99
|
+
ctx.currentFrame = null;
|
|
100
|
+
return true;
|
|
101
|
+
}
|
|
102
|
+
return false;
|
|
103
|
+
}
|
|
104
|
+
|
|
105
|
+
/**
|
|
106
|
+
* pops context frame (called after rendering children)
|
|
107
|
+
* @param hadFrame whether pushContextFrame returned true
|
|
108
|
+
*/
|
|
109
|
+
export function popContextFrame(hadFrame: boolean): void {
|
|
110
|
+
const ctx = activeRenderContext!;
|
|
111
|
+
if (hadFrame) {
|
|
112
|
+
ctx.contextStack.pop();
|
|
113
|
+
}
|
|
114
|
+
ctx.currentFrame = null;
|
|
115
|
+
}
|