@barefootjs/hono 0.1.0
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/adapter/hono-adapter.d.ts +141 -0
- package/dist/adapter/hono-adapter.d.ts.map +1 -0
- package/dist/adapter/index.d.ts +6 -0
- package/dist/adapter/index.d.ts.map +1 -0
- package/dist/adapter/index.js +632 -0
- package/dist/app.d.ts +131 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +139 -0
- package/dist/async.d.ts +15 -0
- package/dist/async.d.ts.map +1 -0
- package/dist/async.js +12 -0
- package/dist/build.d.ts +65 -0
- package/dist/build.d.ts.map +1 -0
- package/dist/build.js +785 -0
- package/dist/client-shim.d.ts +59 -0
- package/dist/client-shim.d.ts.map +1 -0
- package/dist/client-shim.js +90 -0
- package/dist/dev-worker.d.ts +25 -0
- package/dist/dev-worker.d.ts.map +1 -0
- package/dist/dev-worker.js +65 -0
- package/dist/dev.d.ts +36 -0
- package/dist/dev.d.ts.map +1 -0
- package/dist/dev.js +418 -0
- package/dist/dialog-context.d.ts +13 -0
- package/dist/dialog-context.d.ts.map +1 -0
- package/dist/dialog-context.js +10 -0
- package/dist/index.d.ts +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +632 -0
- package/dist/jsx/jsx-dev-runtime/index.d.ts +9 -0
- package/dist/jsx/jsx-dev-runtime/index.d.ts.map +1 -0
- package/dist/jsx/jsx-dev-runtime/index.js +6 -0
- package/dist/jsx/jsx-runtime/index.d.ts +32 -0
- package/dist/jsx/jsx-runtime/index.d.ts.map +1 -0
- package/dist/jsx/jsx-runtime/index.js +10 -0
- package/dist/portal-ssr.d.ts +22 -0
- package/dist/portal-ssr.d.ts.map +1 -0
- package/dist/portal-ssr.js +73 -0
- package/dist/portals.d.ts +26 -0
- package/dist/portals.d.ts.map +1 -0
- package/dist/portals.js +41 -0
- package/dist/preload.d.ts +56 -0
- package/dist/preload.d.ts.map +1 -0
- package/dist/preload.js +51 -0
- package/dist/scripts.d.ts +80 -0
- package/dist/scripts.d.ts.map +1 -0
- package/dist/scripts.js +198 -0
- package/dist/test-render.d.ts +28 -0
- package/dist/test-render.d.ts.map +1 -0
- package/dist/utils.d.ts +16 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +16 -0
- package/package.json +116 -0
- package/src/__tests__/async.test.tsx +106 -0
- package/src/__tests__/bfscripts-entry-roots.test.tsx +135 -0
- package/src/__tests__/build.test.ts +299 -0
- package/src/__tests__/dev.test.tsx +123 -0
- package/src/__tests__/hydration-props-type.test.ts +141 -0
- package/src/__tests__/manifest-scripts.test.ts +87 -0
- package/src/__tests__/scaffold.test.ts +209 -0
- package/src/__tests__/ssr-context-bridge.test.ts +110 -0
- package/src/__tests__/string-literal-css-var-prop.test.ts +84 -0
- package/src/__tests__/stub-deps-scripts.test.ts +183 -0
- package/src/adapter/hono-adapter.ts +1114 -0
- package/src/adapter/index.ts +6 -0
- package/src/app.ts +220 -0
- package/src/async.tsx +55 -0
- package/src/build.ts +230 -0
- package/src/client-shim.ts +164 -0
- package/src/dev-worker.ts +93 -0
- package/src/dev.tsx +146 -0
- package/src/dialog-context.tsx +44 -0
- package/src/index.ts +26 -0
- package/src/jsx/jsx-dev-runtime/index.ts +9 -0
- package/src/jsx/jsx-runtime/index.ts +40 -0
- package/src/portal-ssr.tsx +92 -0
- package/src/portals.tsx +98 -0
- package/src/preload.tsx +166 -0
- package/src/scripts.tsx +220 -0
- package/src/test-render.ts +143 -0
- package/src/utils.ts +26 -0
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BarefootJS Hono Adapter
|
|
3
|
+
*
|
|
4
|
+
* Generates Hono JSX from Pure IR.
|
|
5
|
+
*/
|
|
6
|
+
import { type ComponentIR, type IRNode, type IRElement, type IRText, type IRExpression, type IRConditional, type IRLoop, type IRComponent, type IRFragment, type IRIfStatement, type IRProvider, type IRAsync, type IRSlot, type AdapterGenerateOptions, type AdapterOutput, type JsxAdapterConfig, type IRNodeEmitter, type EmitIRNode, JsxAdapter } from '@barefootjs/jsx';
|
|
7
|
+
/**
|
|
8
|
+
* Hono adapter's IRNode render context: which surrounding render
|
|
9
|
+
* state matters when lowering a node. The `IRNodeEmitter` dispatcher
|
|
10
|
+
* threads this `Ctx` unchanged into per-kind methods; per-method
|
|
11
|
+
* documentation below records which flags each kind consults.
|
|
12
|
+
*/
|
|
13
|
+
type HonoRenderCtx = {
|
|
14
|
+
isRootOfClientComponent?: boolean;
|
|
15
|
+
isInsideLoop?: boolean;
|
|
16
|
+
isLoopItemRoot?: boolean;
|
|
17
|
+
};
|
|
18
|
+
export interface HonoAdapterOptions {
|
|
19
|
+
/**
|
|
20
|
+
* Base path for client JS files (e.g., '/static/components/')
|
|
21
|
+
* Used to generate script src attributes.
|
|
22
|
+
*/
|
|
23
|
+
clientJsBasePath?: string;
|
|
24
|
+
/**
|
|
25
|
+
* Path to barefoot.js runtime (e.g., '/static/components/barefoot.js')
|
|
26
|
+
*/
|
|
27
|
+
barefootJsPath?: string;
|
|
28
|
+
/**
|
|
29
|
+
* Client JS filename (without path). When set, all components use this filename.
|
|
30
|
+
* When not set, uses `{componentName}.client.js`.
|
|
31
|
+
* Useful for files with multiple components that share a single client JS file.
|
|
32
|
+
*/
|
|
33
|
+
clientJsFilename?: string;
|
|
34
|
+
/**
|
|
35
|
+
* Display name surfaced through `JsxAdapter.name` — read by `bf build`
|
|
36
|
+
* for its `Adapter: …` banner. Defaults to `'hono'`. CSR-mode callers
|
|
37
|
+
* (`@barefootjs/client/build`) pass `'csr'` so the banner reflects the
|
|
38
|
+
* mode the user picked at scaffold time instead of leaking the
|
|
39
|
+
* fact that CSR currently reuses HonoAdapter under the hood.
|
|
40
|
+
*/
|
|
41
|
+
name?: string;
|
|
42
|
+
}
|
|
43
|
+
export declare class HonoAdapter extends JsxAdapter implements IRNodeEmitter<HonoRenderCtx> {
|
|
44
|
+
name: string;
|
|
45
|
+
extension: string;
|
|
46
|
+
clientShimSource: string;
|
|
47
|
+
acceptsTemplateCall: () => boolean;
|
|
48
|
+
protected jsxConfig: JsxAdapterConfig;
|
|
49
|
+
private options;
|
|
50
|
+
private isClientComponent;
|
|
51
|
+
private hasClientInteractivity;
|
|
52
|
+
private currentComponentHasProps;
|
|
53
|
+
/**
|
|
54
|
+
* Per-call relative-import rewriter supplied by the build pipeline so
|
|
55
|
+
* source-authored relative paths resolve correctly from the emitted
|
|
56
|
+
* file's on-disk position (#1453). Stashed for the duration of one
|
|
57
|
+
* `generate()` call so `generateImports` can apply it; cleared on exit
|
|
58
|
+
* so a singleton adapter instance does not leak state between
|
|
59
|
+
* components.
|
|
60
|
+
*/
|
|
61
|
+
private rewriteRelativeImport?;
|
|
62
|
+
/** Stack of loop keys for generating data-key / data-key-1 attributes on loop items */
|
|
63
|
+
private loopKeyStack;
|
|
64
|
+
constructor(options?: HonoAdapterOptions);
|
|
65
|
+
generate(ir: ComponentIR, options?: AdapterGenerateOptions): AdapterOutput;
|
|
66
|
+
private generateModuleLevelContextBindings;
|
|
67
|
+
private generateImports;
|
|
68
|
+
generateTypes(ir: ComponentIR, componentBody?: string): string | null;
|
|
69
|
+
private getPropsTypeName;
|
|
70
|
+
private generateComponent;
|
|
71
|
+
/**
|
|
72
|
+
* Public entry point for node rendering. Delegates to the shared
|
|
73
|
+
* `IRNodeEmitter` dispatcher (#1290 step 1); per-kind logic lives in
|
|
74
|
+
* the `IRNodeEmitter` methods below.
|
|
75
|
+
*/
|
|
76
|
+
renderNode(node: IRNode, ctx?: HonoRenderCtx): string;
|
|
77
|
+
emitElement(node: IRElement, ctx: HonoRenderCtx, _emit: EmitIRNode<HonoRenderCtx>): string;
|
|
78
|
+
emitText(node: IRText): string;
|
|
79
|
+
emitExpression(node: IRExpression): string;
|
|
80
|
+
emitConditional(node: IRConditional, _ctx: HonoRenderCtx, _emit: EmitIRNode<HonoRenderCtx>): string;
|
|
81
|
+
emitLoop(node: IRLoop, _ctx: HonoRenderCtx, _emit: EmitIRNode<HonoRenderCtx>): string;
|
|
82
|
+
emitComponent(node: IRComponent, ctx: HonoRenderCtx, _emit: EmitIRNode<HonoRenderCtx>): string;
|
|
83
|
+
emitFragment(node: IRFragment, _ctx: HonoRenderCtx, _emit: EmitIRNode<HonoRenderCtx>): string;
|
|
84
|
+
emitSlot(_node: IRSlot): string;
|
|
85
|
+
emitIfStatement(_node: IRIfStatement, _ctx: HonoRenderCtx, _emit: EmitIRNode<HonoRenderCtx>): string;
|
|
86
|
+
emitProvider(node: IRProvider, _ctx: HonoRenderCtx, _emit: EmitIRNode<HonoRenderCtx>): string;
|
|
87
|
+
emitAsync(node: IRAsync, _ctx: HonoRenderCtx, _emit: EmitIRNode<HonoRenderCtx>): string;
|
|
88
|
+
renderElement(element: IRElement, ctx?: {
|
|
89
|
+
isLoopItemRoot?: boolean;
|
|
90
|
+
}): string;
|
|
91
|
+
private renderText;
|
|
92
|
+
renderExpression(expr: IRExpression): string;
|
|
93
|
+
renderConditional(cond: IRConditional): string;
|
|
94
|
+
private wrapWithCondMarker;
|
|
95
|
+
renderLoop(loop: IRLoop): string;
|
|
96
|
+
private renderChildrenInLoop;
|
|
97
|
+
/**
|
|
98
|
+
* Render an if-statement chain as function-level code.
|
|
99
|
+
* This is used for components with early return patterns.
|
|
100
|
+
*/
|
|
101
|
+
renderIfStatement(ifStmt: IRIfStatement, ctx?: {
|
|
102
|
+
isRootOfClientComponent?: boolean;
|
|
103
|
+
}): string;
|
|
104
|
+
renderAsync(node: IRAsync): string;
|
|
105
|
+
renderComponent(comp: IRComponent, ctx?: {
|
|
106
|
+
isRootOfClientComponent?: boolean;
|
|
107
|
+
isInsideLoop?: boolean;
|
|
108
|
+
isLoopItemRoot?: boolean;
|
|
109
|
+
}): string;
|
|
110
|
+
private renderFragment;
|
|
111
|
+
/**
|
|
112
|
+
* Wrap `body` in a fragment-rooted scope comment.
|
|
113
|
+
* Shape (matches `hydrate.ts::hydrateCommentScope`):
|
|
114
|
+
* root: <!--bf-scope:<scopeId>|<propsJson>-->
|
|
115
|
+
* child: <!--bf-scope:<scopeId>|h=<host>|m=<slot>|<propsJson>-->
|
|
116
|
+
* `<scopeId>` stays at the front so child detection can anchor on `|h=`.
|
|
117
|
+
*/
|
|
118
|
+
private wrapWithScopeComment;
|
|
119
|
+
/**
|
|
120
|
+
* AttrValue lowering for intrinsic-element attributes (Hono JSX).
|
|
121
|
+
* Per-kind logic that used to live in a `switch (v.kind)` inside
|
|
122
|
+
* `renderAttributes`; routed through the shared dispatcher so a new
|
|
123
|
+
* AttrValue kind becomes a TS compile error here (#1290 step 2).
|
|
124
|
+
*/
|
|
125
|
+
private readonly elementAttrEmitter;
|
|
126
|
+
/**
|
|
127
|
+
* AttrValue lowering for component-invocation props (Hono JSX).
|
|
128
|
+
* Component props differ from intrinsic attrs in several places —
|
|
129
|
+
* `jsx-children` is rendered as `<>…</>`, `expression` skips the
|
|
130
|
+
* boolean-attr fold, etc. Kept as a separate emitter so each method
|
|
131
|
+
* does one thing.
|
|
132
|
+
*/
|
|
133
|
+
private readonly componentPropEmitter;
|
|
134
|
+
private renderAttributes;
|
|
135
|
+
private renderComponentProps;
|
|
136
|
+
private attrValueToJsExpr;
|
|
137
|
+
private renderTemplateLiteralParts;
|
|
138
|
+
}
|
|
139
|
+
export declare const honoAdapter: HonoAdapter;
|
|
140
|
+
export {};
|
|
141
|
+
//# sourceMappingURL=hono-adapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hono-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/hono-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/adapter/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACzD,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA"}
|