@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.
@@ -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 { FC as a, Component as i, jsx as n, JSXElement as o, JSX as r, JSXNode as s, Fragment as t };
1299
- //# sourceMappingURL=jsx-runtime-CpxZaJu6.d.mts.map
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"}
@@ -1,2 +1,2 @@
1
- import { n as jsx, r as JSX, t as Fragment } from "./jsx-runtime-CpxZaJu6.mjs";
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",
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 { Suspense, use, type SuspenseProps } from './lib/suspense.js';
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';
@@ -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
+ }