@barefootjs/xslate 0.16.0 → 0.17.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/analysis/component-tree.d.ts +30 -0
- package/dist/adapter/analysis/component-tree.d.ts.map +1 -0
- package/dist/adapter/emit-context.d.ts +94 -0
- package/dist/adapter/emit-context.d.ts.map +1 -0
- package/dist/adapter/expr/array-method.d.ts +63 -0
- package/dist/adapter/expr/array-method.d.ts.map +1 -0
- package/dist/adapter/expr/emitters.d.ts +97 -0
- package/dist/adapter/expr/emitters.d.ts.map +1 -0
- package/dist/adapter/expr/operand.d.ts +25 -0
- package/dist/adapter/expr/operand.d.ts.map +1 -0
- package/dist/adapter/index.js +1428 -1326
- package/dist/adapter/lib/constants.d.ts +22 -0
- package/dist/adapter/lib/constants.d.ts.map +1 -0
- package/dist/adapter/lib/ir-scope.d.ts +34 -0
- package/dist/adapter/lib/ir-scope.d.ts.map +1 -0
- package/dist/adapter/lib/kolon-naming.d.ts +22 -0
- package/dist/adapter/lib/kolon-naming.d.ts.map +1 -0
- package/dist/adapter/lib/types.d.ts +27 -0
- package/dist/adapter/lib/types.d.ts.map +1 -0
- package/dist/adapter/memo/seed.d.ts +38 -0
- package/dist/adapter/memo/seed.d.ts.map +1 -0
- package/dist/adapter/props/prop-classes.d.ts +32 -0
- package/dist/adapter/props/prop-classes.d.ts.map +1 -0
- package/dist/adapter/spread/spread-codegen.d.ts +69 -0
- package/dist/adapter/spread/spread-codegen.d.ts.map +1 -0
- package/dist/adapter/value/parsed-literal.d.ts +32 -0
- package/dist/adapter/value/parsed-literal.d.ts.map +1 -0
- package/dist/adapter/xslate-adapter.d.ts +38 -92
- package/dist/adapter/xslate-adapter.d.ts.map +1 -1
- package/dist/build.js +1428 -1326
- package/dist/index.js +1428 -1326
- package/lib/BarefootJS/Backend/Xslate.pm +1 -1
- package/package.json +3 -3
- package/src/__tests__/query-href.test.ts +96 -0
- package/src/__tests__/xslate-adapter.test.ts +55 -0
- package/src/adapter/analysis/component-tree.ts +123 -0
- package/src/adapter/emit-context.ts +104 -0
- package/src/adapter/expr/array-method.ts +311 -0
- package/src/adapter/expr/emitters.ts +530 -0
- package/src/adapter/expr/operand.ts +35 -0
- package/src/adapter/lib/constants.ts +34 -0
- package/src/adapter/lib/ir-scope.ts +64 -0
- package/src/adapter/lib/kolon-naming.ts +27 -0
- package/src/adapter/lib/types.ts +30 -0
- package/src/adapter/memo/seed.ts +125 -0
- package/src/adapter/props/prop-classes.ts +64 -0
- package/src/adapter/spread/spread-codegen.ts +179 -0
- package/src/adapter/value/parsed-literal.ts +80 -0
- package/src/adapter/xslate-adapter.ts +169 -1233
- package/src/test-render.ts +3 -0
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Compile-time constant tables for the Text::Xslate (Kolon) template adapter.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `xslate-adapter.ts` (domain-module refactor, issue #2018
|
|
5
|
+
* track D).
|
|
6
|
+
*/
|
|
7
|
+
import type { PrimitiveSpec } from './types.ts';
|
|
8
|
+
/**
|
|
9
|
+
* Single source of truth for the Xslate adapter's template-primitive
|
|
10
|
+
* surface. Each entry pairs the expected arity with the emit function.
|
|
11
|
+
*
|
|
12
|
+
* The emit fn returns a Kolon expression (no surrounding `<: :>`) suitable
|
|
13
|
+
* for embedding inside an interpolation — `$bf.json($val)`,
|
|
14
|
+
* `$bf.floor($val)`, etc. The same primitive names as the Mojo adapter, but
|
|
15
|
+
* invoked as `$bf.NAME(args)` on the runtime instance instead of `bf->NAME`.
|
|
16
|
+
*/
|
|
17
|
+
export declare const XSLATE_TEMPLATE_PRIMITIVES: Record<string, PrimitiveSpec>;
|
|
18
|
+
/**
|
|
19
|
+
* Module-scope `templatePrimitives` map derived once from the spec record.
|
|
20
|
+
*/
|
|
21
|
+
export declare const XSLATE_PRIMITIVE_EMIT_MAP: Record<string, (args: string[]) => string>;
|
|
22
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/adapter/lib/constants.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C;;;;;;;;GAQG;AACH,eAAO,MAAM,0BAA0B,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAOpE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAG9E,CAAA"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IR traversal helpers for the Text::Xslate (Kolon) template adapter.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `xslate-adapter.ts` (domain-module refactor, issue #2018
|
|
5
|
+
* track D). Pure functions over the IR tree — no adapter instance state.
|
|
6
|
+
*
|
|
7
|
+
* SHARED CANDIDATE: the bodies here are byte-identical to the Mojo
|
|
8
|
+
* adapter's `lib/ir-scope.ts`. They are adapter-agnostic (no Perl/Kolon
|
|
9
|
+
* specifics), so they are the obvious first extraction into a shared
|
|
10
|
+
* Perl-family codegen module once one exists — the groundwork for the
|
|
11
|
+
* future Perl evaluator integration (issue #2018 track D). Kept per-adapter
|
|
12
|
+
* for now, matching the repo convention (the Go adapter keeps its own copy).
|
|
13
|
+
*/
|
|
14
|
+
import type { IRNode, IRProp } from '@barefootjs/jsx';
|
|
15
|
+
/**
|
|
16
|
+
* Find the `children` prop's `jsx-children` payload. Narrowed via the
|
|
17
|
+
* AttrValue `kind` discriminator so adapter code stays type-safe if the IR
|
|
18
|
+
* shape evolves.
|
|
19
|
+
*/
|
|
20
|
+
export declare function resolveJsxChildrenProp(props: readonly IRProp[]): IRNode[];
|
|
21
|
+
/**
|
|
22
|
+
* Collect the component's root scope element node(s) — the elements that
|
|
23
|
+
* become the rendered root and so carry `data-key` for a keyed loop item. A
|
|
24
|
+
* plain element root is itself; an `if-statement` (early-return) root
|
|
25
|
+
* contributes the top element of each branch, since exactly one renders at
|
|
26
|
+
* runtime. (#1297)
|
|
27
|
+
*/
|
|
28
|
+
export declare function collectRootScopeNodes(node: IRNode): Set<IRNode>;
|
|
29
|
+
/**
|
|
30
|
+
* True when every `$var` the lowered Kolon expression references is already in
|
|
31
|
+
* scope — guards in-template memo seeding against an out-of-scope binding. (#1297)
|
|
32
|
+
*/
|
|
33
|
+
export declare function referencedVarsAreAvailable(expr: string, available: ReadonlySet<string>): boolean;
|
|
34
|
+
//# sourceMappingURL=ir-scope.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ir-scope.d.ts","sourceRoot":"","sources":["../../../src/adapter/lib/ir-scope.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,EAA6B,MAAM,iBAAiB,CAAA;AAEhF;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAKzE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAiB/D;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAAG,OAAO,CAKhG"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Kolon identifier / hash-key conventions for the Text::Xslate adapter.
|
|
3
|
+
*
|
|
4
|
+
* Pure helpers extracted from `xslate-adapter.ts` (domain-module refactor,
|
|
5
|
+
* issue #2018 track D): none read adapter instance state, so they live at
|
|
6
|
+
* module scope as the single source of truth for Kolon-literal escaping and
|
|
7
|
+
* hashref-key quoting.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Escape a string for a Kolon/Perl single-quoted literal: backslash first
|
|
11
|
+
* (so it doesn't double-escape the quote we add next), then the quote. Used
|
|
12
|
+
* by every `'…'` hashref key/value emitter.
|
|
13
|
+
*/
|
|
14
|
+
export declare function escapeKolonSingleQuoted(s: string): string;
|
|
15
|
+
/**
|
|
16
|
+
* Quote a hashref KEY for Kolon when it isn't a bare-identifier-safe name.
|
|
17
|
+
* Kolon parses `data-slot` as `data - slot` (subtraction) and faults on the
|
|
18
|
+
* undefined `data` symbol, so a hyphenated key (`data-slot`, `aria-label`)
|
|
19
|
+
* must be single-quoted: `'data-slot'`. Bare identifiers pass through unquoted.
|
|
20
|
+
*/
|
|
21
|
+
export declare function kolonHashKey(name: string): string;
|
|
22
|
+
//# sourceMappingURL=kolon-naming.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kolon-naming.d.ts","sourceRoot":"","sources":["../../../src/adapter/lib/kolon-naming.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAEzD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared type aliases for the Text::Xslate (Kolon) template adapter.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `xslate-adapter.ts` (domain-module refactor, issue #2018
|
|
5
|
+
* track D). Pure type declarations — no runtime behaviour — so the
|
|
6
|
+
* extracted emit modules and the main adapter share one definition rather
|
|
7
|
+
* than re-declaring the render context / options shape.
|
|
8
|
+
*/
|
|
9
|
+
/** A template-primitive spec: expected call arity + the emit fn. */
|
|
10
|
+
export interface PrimitiveSpec {
|
|
11
|
+
arity: number;
|
|
12
|
+
emit: (args: string[]) => string;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Xslate adapter's IRNode render context. Like the Mojo adapter, Kolon's
|
|
16
|
+
* lowering doesn't consume any render-position flags, so the Ctx is empty.
|
|
17
|
+
* Kept as a named alias so future flags can extend it without changing the
|
|
18
|
+
* `IRNodeEmitter` interface.
|
|
19
|
+
*/
|
|
20
|
+
export type XslateRenderCtx = Record<string, never>;
|
|
21
|
+
export interface XslateAdapterOptions {
|
|
22
|
+
/** Base path for client JS files (default: '/static/components/') */
|
|
23
|
+
clientJsBasePath?: string;
|
|
24
|
+
/** Path to barefoot.js runtime (default: '/static/components/barefoot.js') */
|
|
25
|
+
barefootJsPath?: string;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/adapter/lib/types.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,oEAAoE;AACpE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAAA;CACjC;AAED;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;AAEnD,MAAM,WAAW,oBAAoB;IACnC,qEAAqE;IACrE,gBAAgB,CAAC,EAAE,MAAM,CAAA;IAEzB,8EAA8E;IAC9E,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* In-template memo / context seeding for the Text::Xslate template adapter.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `xslate-adapter.ts` (domain-module refactor, issue #2018
|
|
5
|
+
* track D). Free functions taking a `XslateMemoContext` (built by the adapter's
|
|
6
|
+
* `memoCtx` getter) so the cluster depends only on the recursive expression entry, not
|
|
7
|
+
* the whole adapter class. These emit the `: my $x = ...;` line-statements
|
|
8
|
+
* that let the body's bare `$x` resolve to a derived signal/memo value or an
|
|
9
|
+
* active context value at SSR time. Mirror of the Go / Mojo adapter's `memo/*`.
|
|
10
|
+
*/
|
|
11
|
+
import { type ComponentIR, type ContextConsumer } from '@barefootjs/jsx';
|
|
12
|
+
import type { XslateMemoContext } from '../emit-context.ts';
|
|
13
|
+
/** Kolon literal for a context-consumer's `createContext` default. */
|
|
14
|
+
export declare function contextDefaultKolon(c: ContextConsumer): string;
|
|
15
|
+
/**
|
|
16
|
+
* Emit one `: my $<local> = $bf.use_context(...)` line-statement per
|
|
17
|
+
* context consumer so the body's bare `$<local>` resolves to the active
|
|
18
|
+
* provider value (or the `createContext` default). (#1297)
|
|
19
|
+
*/
|
|
20
|
+
export declare function generateContextConsumerSeed(ir: ComponentIR): string;
|
|
21
|
+
/**
|
|
22
|
+
* Seed memos whose SSR default is `null` (not statically evaluable) by
|
|
23
|
+
* computing them in-template from the already-seeded prop / signal vars
|
|
24
|
+
* (`createMemo(() => props.value * 10)` → `: my $x = $value * 10;`). Without
|
|
25
|
+
* this the memo's `$x` renders empty — the reason
|
|
26
|
+
* `props-reactivity-comparison` was skipped. Only emitted when every var the
|
|
27
|
+
* lowering references is already in scope. (#1297)
|
|
28
|
+
*/
|
|
29
|
+
export declare function generateDerivedMemoSeed(ctx: XslateMemoContext, ir: ComponentIR): string;
|
|
30
|
+
/**
|
|
31
|
+
* Lower a signal init / memo body to Kolon for an in-template SSR seed, or
|
|
32
|
+
* `null` when it shouldn't be seeded this way: not a supported shape
|
|
33
|
+
* (`isSupported` pre-check, so object/array literals don't fail the build),
|
|
34
|
+
* references no in-scope var (a constant — keep ssr-defaults seeding), or
|
|
35
|
+
* references an out-of-scope binding. (#1297)
|
|
36
|
+
*/
|
|
37
|
+
export declare function tryLowerToKolon(ctx: XslateMemoContext, expr: string, available: ReadonlySet<string>): string | null;
|
|
38
|
+
//# sourceMappingURL=seed.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"seed.d.ts","sourceRoot":"","sources":["../../../src/adapter/memo/seed.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,EACL,KAAK,WAAW,EAChB,KAAK,eAAe,EAKrB,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAA;AAG3D,sEAAsE;AACtE,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,eAAe,GAAG,MAAM,CAM9D;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,EAAE,EAAE,WAAW,GAAG,MAAM,CAWnE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,GAAG,EAAE,iBAAiB,EAAE,EAAE,EAAE,WAAW,GAAG,MAAM,CA8CvF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,iBAAiB,EACtB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,GAC7B,MAAM,GAAG,IAAI,CAOf"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Prop classification for the Text::Xslate (Kolon) template adapter.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `xslate-adapter.ts` (domain-module refactor, issue #2018
|
|
5
|
+
* track D). Pure functions over `ir.metadata` that derive the per-compile
|
|
6
|
+
* prop/name sets the adapter consults during lowering. Mirror of the Go
|
|
7
|
+
* adapter's `props/prop-types.ts`. No adapter instance state.
|
|
8
|
+
*/
|
|
9
|
+
import type { ComponentIR } from '@barefootjs/jsx';
|
|
10
|
+
/**
|
|
11
|
+
* Props whose declared TS type is boolean — a bare binding of one
|
|
12
|
+
* (`data-active={props.isActive}`) must stringify as JS `String(boolean)`
|
|
13
|
+
* ("true"/"false"), not Perl's native `1`/`''` (#1897, pagination's
|
|
14
|
+
* data-active).
|
|
15
|
+
*/
|
|
16
|
+
export declare function collectBooleanTypedProps(ir: ComponentIR): Set<string>;
|
|
17
|
+
/**
|
|
18
|
+
* Bare references to optional, no-default, non-primitive props (e.g.
|
|
19
|
+
* textarea's `rows`) are `undef` when omitted → `defined`-guarded in
|
|
20
|
+
* `emitExpression`. See the `nullableOptionalProps` field docstring.
|
|
21
|
+
*/
|
|
22
|
+
export declare function collectNullableOptionalProps(ir: ComponentIR): Set<string>;
|
|
23
|
+
/**
|
|
24
|
+
* String-typed signals and props. A signal is string-typed when its inferred
|
|
25
|
+
* type is `string` (or, defensively, when its initial value is a bare string
|
|
26
|
+
* literal); a prop when its annotated type is `string`. In the Mojo adapter
|
|
27
|
+
* this drives `eq`/`ne` selection for string equality; the Kolon emitters
|
|
28
|
+
* don't consume the distinction (Kolon's `==`/`!=` compare strings and numbers
|
|
29
|
+
* correctly), so this set is carried for parity with the Mojo adapter.
|
|
30
|
+
*/
|
|
31
|
+
export declare function collectStringValueNames(ir: ComponentIR): Set<string>;
|
|
32
|
+
//# sourceMappingURL=prop-classes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prop-classes.d.ts","sourceRoot":"","sources":["../../../src/adapter/props/prop-classes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAGlD;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAMrE;AAED;;;;GAIG;AACH,wBAAgB,4BAA4B,CAAC,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAWzE;AAED;;;;;;;GAOG;AACH,wBAAgB,uBAAuB,CAAC,EAAE,EAAE,WAAW,GAAG,GAAG,CAAC,MAAM,CAAC,CAWpE"}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Object-literal / conditional-spread → Kolon hashref lowering for the
|
|
3
|
+
* Text::Xslate template adapter.
|
|
4
|
+
*
|
|
5
|
+
* Extracted from `xslate-adapter.ts` (domain-module refactor, issue #2018
|
|
6
|
+
* track D). Free functions taking a `XslateSpreadContext` (built by the adapter's
|
|
7
|
+
* `spreadCtx` getter) so the cluster depends on the narrow seam — the recursive
|
|
8
|
+
* expression entry plus per-compile bookkeeping — rather than the whole
|
|
9
|
+
* adapter class. Mirror of the Go / Mojo adapter's `spread/spread-codegen.ts`.
|
|
10
|
+
*
|
|
11
|
+
* The conditional-spread / object-literal entries read the IR-carried
|
|
12
|
+
* structured `ParsedExpr` tree (#2018, mirroring go-template's U5/U6) instead
|
|
13
|
+
* of re-parsing the source with `ts.createSourceFile`. The condition and scalar
|
|
14
|
+
* values are threaded straight into `ctx.convertExpressionToKolon` as its
|
|
15
|
+
* `preParsed` argument (cf. go-template's
|
|
16
|
+
* `convertExpressionToGo(jsExpr, out?, preParsed?)`), so no stringify→re-parse
|
|
17
|
+
* round-trip occurs — the emitted Kolon is byte-identical to the former path
|
|
18
|
+
* because the carried tree is exactly what re-parsing the stringified text
|
|
19
|
+
* produced. The `ts.factory` rebuild in `recordIndexAccessToKolon` only
|
|
20
|
+
* reconstructs the `IDENT[KEY]` node the shared `parseRecordIndexAccess` parser
|
|
21
|
+
* accepts; no source-text re-parse. `stringifyParsedExpr` is retained solely for
|
|
22
|
+
* the BF101 diagnostic message (display purposes).
|
|
23
|
+
*/
|
|
24
|
+
import type { ParsedExpr } from '@barefootjs/jsx';
|
|
25
|
+
import type { XslateSpreadContext } from '../emit-context.ts';
|
|
26
|
+
/**
|
|
27
|
+
* Lower a conditional inline-object spread
|
|
28
|
+
* `COND ? { 'aria-describedby': describedBy } : {}`
|
|
29
|
+
* to a Kolon inline ternary of hashrefs
|
|
30
|
+
* `$describedBy ? { 'aria-describedby' => $describedBy } : {}`.
|
|
31
|
+
* Reads the IR-carried structured `ParsedExpr` tree; both branches must be
|
|
32
|
+
* object literals; the condition + values route through
|
|
33
|
+
* `convertExpressionToKolon`. Returns `null` for any other shape so the caller
|
|
34
|
+
* falls back to its normal lowering. Mirror of `conditionalSpreadToPerl`.
|
|
35
|
+
* `parseExpression` already strips redundant parentheses, so the conditional /
|
|
36
|
+
* object-literal shapes surface directly.
|
|
37
|
+
*/
|
|
38
|
+
export declare function conditionalSpreadToKolon(ctx: XslateSpreadContext, expr: ParsedExpr | undefined): string | null;
|
|
39
|
+
/**
|
|
40
|
+
* (#1971 Perl) Lower a bare object-literal expression (`{ align: 'start' }`),
|
|
41
|
+
* carried as the IR's structured `ParsedExpr` tree, to a Kolon hashref via
|
|
42
|
+
* `objectLiteralToKolonHashref`, or null when it isn't a plain object literal.
|
|
43
|
+
* Used for inline object-literal child props (carousel `opts`).
|
|
44
|
+
*/
|
|
45
|
+
export declare function objectLiteralExprToKolonHashref(ctx: XslateSpreadContext, expr: ParsedExpr | undefined): string | null;
|
|
46
|
+
/**
|
|
47
|
+
* Convert a static object literal into a Kolon hashref string for a
|
|
48
|
+
* conditional spread. Only static string/identifier keys are allowed; values
|
|
49
|
+
* resolve via `convertExpressionToKolon` (or the `Record[propKey]` index
|
|
50
|
+
* lowering). Returns `null` for any computed/spread/dynamic key. Empty object
|
|
51
|
+
* → `{}`. Mirror of `objectLiteralToPerlHashref`.
|
|
52
|
+
*/
|
|
53
|
+
export declare function objectLiteralToKolonHashref(ctx: XslateSpreadContext, obj: Extract<ParsedExpr, {
|
|
54
|
+
kind: 'object-literal';
|
|
55
|
+
}>): string | null;
|
|
56
|
+
/**
|
|
57
|
+
* Lower a spread-object VALUE of the form `IDENT[KEY]` (CheckIcon's
|
|
58
|
+
* `sizeMap[size]`) to an inline indexed Kolon hashref
|
|
59
|
+
* `{ 'sm' => 16, 'md' => 20, ... }[$size]`.
|
|
60
|
+
* Reuses the shared structural parse (`parseRecordIndexAccess`) — rebuilding
|
|
61
|
+
* the `IDENT[KEY]` node from the carried tree via `ts.factory` rather than
|
|
62
|
+
* re-parsing source text; this wrapper only does the single-quote escaping +
|
|
63
|
+
* Kolon index emit. NB: Kolon indexes a hashref literal with bracket syntax
|
|
64
|
+
* `{…}[$key]`, NOT Perl's arrow-deref `{…}->{$key}` (which Kolon's parser
|
|
65
|
+
* rejects) — this is the one divergence from the Mojo `recordIndexAccessToPerl`
|
|
66
|
+
* emit.
|
|
67
|
+
*/
|
|
68
|
+
export declare function recordIndexAccessToKolon(ctx: XslateSpreadContext, val: ParsedExpr): string | null;
|
|
69
|
+
//# sourceMappingURL=spread-codegen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spread-codegen.d.ts","sourceRoot":"","sources":["../../../src/adapter/spread/spread-codegen.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAIH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAEjD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAG7D;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CACtC,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,UAAU,GAAG,SAAS,GAC3B,MAAM,GAAG,IAAI,CAef;AAED;;;;;GAKG;AACH,wBAAgB,+BAA+B,CAC7C,GAAG,EAAE,mBAAmB,EACxB,IAAI,EAAE,UAAU,GAAG,SAAS,GAC3B,MAAM,GAAG,IAAI,CAGf;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,GAAG,EAAE,mBAAmB,EACxB,GAAG,EAAE,OAAO,CAAC,UAAU,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,GACnD,MAAM,GAAG,IAAI,CA6Cf;AAUD;;;;;;;;;;;GAWG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,mBAAmB,EAAE,GAAG,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAwBjG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* String-literal value lowering for the Text::Xslate (Kolon) template adapter.
|
|
3
|
+
*
|
|
4
|
+
* Extracted from `xslate-adapter.ts` (domain-module refactor, issue #2018
|
|
5
|
+
* track D). Pure functions over const-initializer source text and analyzer
|
|
6
|
+
* type info — no adapter instance state.
|
|
7
|
+
*
|
|
8
|
+
* SHARED CANDIDATE: `isStringTypeInfo` and `isBareStringLiteral` are
|
|
9
|
+
* byte-identical to the Mojo adapter's copies and adapter-agnostic —
|
|
10
|
+
* extraction candidates for a shared Perl-family codegen module (groundwork
|
|
11
|
+
* for the future Perl evaluator integration, issue #2018 track D).
|
|
12
|
+
* `parsePureStringLiteral` deliberately differs (Xslate hand-parses; Mojo
|
|
13
|
+
* uses the TS parser), so it stays per-adapter.
|
|
14
|
+
*/
|
|
15
|
+
import { type TypeInfo } from '@barefootjs/jsx';
|
|
16
|
+
/**
|
|
17
|
+
* Parse a const initializer's source text. Returns the unescaped string value
|
|
18
|
+
* when the whole initializer is a single pure string literal — single/double
|
|
19
|
+
* quoted, or a no-substitution backtick template (no `${}`) — else `null`.
|
|
20
|
+
* Only such a value can be inlined byte-for-byte; template literals with
|
|
21
|
+
* interpolation, numbers, objects, and `Record<T,string>` maps are excluded.
|
|
22
|
+
*/
|
|
23
|
+
export declare function parsePureStringLiteral(source: string): string | null;
|
|
24
|
+
/** Whether `s` contains an unescaped occurrence of `ch`. */
|
|
25
|
+
export declare function containsUnescaped(s: string, ch: string): boolean;
|
|
26
|
+
/** Unescape a JS string-literal body's common escape sequences. */
|
|
27
|
+
export declare function unescapeStringLiteralBody(s: string): string;
|
|
28
|
+
/** True when `type` is the `string` primitive. */
|
|
29
|
+
export declare function isStringTypeInfo(type: TypeInfo | undefined): boolean;
|
|
30
|
+
/** True when `initialValue` is a bare string-literal expression. */
|
|
31
|
+
export declare function isBareStringLiteral(initialValue: string | undefined): boolean;
|
|
32
|
+
//# sourceMappingURL=parsed-literal.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"parsed-literal.d.ts","sourceRoot":"","sources":["../../../src/adapter/value/parsed-literal.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAAuB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAEpE;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAqBpE;AAED,4DAA4D;AAC5D,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,OAAO,CAMhE;AAED,mEAAmE;AACnE,wBAAgB,yBAAyB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAU3D;AAED,kDAAkD;AAClD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,GAAG,OAAO,CAEpE;AAED,oEAAoE;AACpE,wBAAgB,mBAAmB,CAAC,YAAY,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAI7E"}
|
|
@@ -21,20 +21,9 @@
|
|
|
21
21
|
*/
|
|
22
22
|
import type { ComponentIR, IRNode, IRElement, IRText, IRExpression, IRConditional, IRLoop, IRComponent, IRFragment, IRSlot, IRIfStatement, IRProvider, IRAsync, TemplatePrimitiveRegistry } from '@barefootjs/jsx';
|
|
23
23
|
import { BaseAdapter, type AdapterOutput, type AdapterGenerateOptions, type IRNodeEmitter, type EmitIRNode } from '@barefootjs/jsx';
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
* Kept as a named alias so future flags can extend it without changing the
|
|
28
|
-
* `IRNodeEmitter` interface.
|
|
29
|
-
*/
|
|
30
|
-
type XslateRenderCtx = Record<string, never>;
|
|
31
|
-
import type { ParsedExpr } from '@barefootjs/jsx';
|
|
32
|
-
export interface XslateAdapterOptions {
|
|
33
|
-
/** Base path for client JS files (default: '/static/components/') */
|
|
34
|
-
clientJsBasePath?: string;
|
|
35
|
-
/** Path to barefoot.js runtime (default: '/static/components/barefoot.js') */
|
|
36
|
-
barefootJsPath?: string;
|
|
37
|
-
}
|
|
24
|
+
import type { XslateRenderCtx } from './lib/types.ts';
|
|
25
|
+
export type { XslateAdapterOptions } from './lib/types.ts';
|
|
26
|
+
import type { XslateAdapterOptions } from './lib/types.ts';
|
|
38
27
|
export declare class XslateAdapter extends BaseAdapter implements IRNodeEmitter<XslateRenderCtx> {
|
|
39
28
|
name: string;
|
|
40
29
|
extension: string;
|
|
@@ -66,10 +55,13 @@ export declare class XslateAdapter extends BaseAdapter implements IRNodeEmitter<
|
|
|
66
55
|
private propsParams;
|
|
67
56
|
private booleanTypedProps;
|
|
68
57
|
/**
|
|
69
|
-
* Names (signal getters + props) whose value is a string
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
*
|
|
58
|
+
* Names (signal getters + props) whose value is a string. In the Mojo
|
|
59
|
+
* adapter this drives choosing Perl `eq`/`ne` over numeric `==`/`!=` for a
|
|
60
|
+
* string `===`/`!==`. The Kolon emitters do NOT consume this: Kolon's
|
|
61
|
+
* `==`/`!=` are value-equality operators that compare strings and numbers
|
|
62
|
+
* correctly, so `===`/`!==` always map to `==`/`!=`. The set is populated
|
|
63
|
+
* and threaded for parity with the Mojo adapter (and as groundwork for a
|
|
64
|
+
* shared Perl-family codegen surface), not because Kolon needs it today.
|
|
73
65
|
*/
|
|
74
66
|
private stringValueNames;
|
|
75
67
|
/**
|
|
@@ -89,7 +81,14 @@ export declare class XslateAdapter extends BaseAdapter implements IRNodeEmitter<
|
|
|
89
81
|
* the generic dot deref. Set at `generate()` entry from `ir.metadata.imports`;
|
|
90
82
|
* read by the top-level ParsedExpr emitter.
|
|
91
83
|
*/
|
|
92
|
-
_searchParamsLocals
|
|
84
|
+
private _searchParamsLocals;
|
|
85
|
+
/**
|
|
86
|
+
* Call-lowering matchers active for this component (#2057). Bound at
|
|
87
|
+
* `generate()` entry via `prepareLoweringMatchers` and read by the top-level
|
|
88
|
+
* emitter. Covers both userland plugins and the compiler's built-in plugins
|
|
89
|
+
* (e.g. `queryHref` → `$bf.query`, #2042) — one uniform path, no per-API branch.
|
|
90
|
+
*/
|
|
91
|
+
private _loweringMatchers;
|
|
93
92
|
/**
|
|
94
93
|
* Local + module constants from the IR, used by the conditional-spread and
|
|
95
94
|
* `Record<staticKeys, scalar>[propKey]` lowering paths (#textarea / #checkbox).
|
|
@@ -108,7 +107,6 @@ export declare class XslateAdapter extends BaseAdapter implements IRNodeEmitter<
|
|
|
108
107
|
constructor(options?: XslateAdapterOptions);
|
|
109
108
|
generate(ir: ComponentIR, options?: AdapterGenerateOptions): AdapterOutput;
|
|
110
109
|
private generateScriptRegistrations;
|
|
111
|
-
private hasClientInteractivity;
|
|
112
110
|
/**
|
|
113
111
|
* Public entry point for node rendering. Delegates to the shared
|
|
114
112
|
* `IRNodeEmitter` dispatcher; per-kind logic lives in the `IRNodeEmitter`
|
|
@@ -146,31 +144,6 @@ export declare class XslateAdapter extends BaseAdapter implements IRNodeEmitter<
|
|
|
146
144
|
* the whole-expression path, which refuses those shapes with BF101.
|
|
147
145
|
*/
|
|
148
146
|
private providerObjectLiteralKolon;
|
|
149
|
-
/** Kolon literal for a context-consumer's `createContext` default. */
|
|
150
|
-
private contextDefaultKolon;
|
|
151
|
-
/**
|
|
152
|
-
* Emit one `: my $<local> = $bf.use_context(...)` line-statement per
|
|
153
|
-
* context consumer so the body's bare `$<local>` resolves to the active
|
|
154
|
-
* provider value (or the `createContext` default). (#1297)
|
|
155
|
-
*/
|
|
156
|
-
private generateContextConsumerSeed;
|
|
157
|
-
/**
|
|
158
|
-
* Seed memos whose SSR default is `null` (not statically evaluable) by
|
|
159
|
-
* computing them in-template from the already-seeded prop / signal vars
|
|
160
|
-
* (`createMemo(() => props.value * 10)` → `: my $x = $value * 10;`). Without
|
|
161
|
-
* this the memo's `$x` renders empty — the reason
|
|
162
|
-
* `props-reactivity-comparison` was skipped. Only emitted when every var the
|
|
163
|
-
* lowering references is already in scope. (#1297)
|
|
164
|
-
*/
|
|
165
|
-
private generateDerivedMemoSeed;
|
|
166
|
-
/**
|
|
167
|
-
* Lower a signal init / memo body to Kolon for an in-template SSR seed, or
|
|
168
|
-
* `null` when it shouldn't be seeded this way: not a supported shape
|
|
169
|
-
* (`isSupported` pre-check, so object/array literals don't fail the build),
|
|
170
|
-
* references no in-scope var (a constant — keep ssr-defaults seeding), or
|
|
171
|
-
* references an out-of-scope binding. (#1297)
|
|
172
|
-
*/
|
|
173
|
-
private tryLowerToKolon;
|
|
174
147
|
emitAsync(node: IRAsync, _ctx: XslateRenderCtx, _emit: EmitIRNode<XslateRenderCtx>): string;
|
|
175
148
|
renderElement(element: IRElement): string;
|
|
176
149
|
renderExpression(expr: IRExpression): string;
|
|
@@ -181,13 +154,6 @@ export declare class XslateAdapter extends BaseAdapter implements IRNodeEmitter<
|
|
|
181
154
|
* If no element found, wrap with comment markers.
|
|
182
155
|
*/
|
|
183
156
|
private addCondMarkerToFirstElement;
|
|
184
|
-
/**
|
|
185
|
-
* Push a `BF103` diagnostic for every component reference inside a loop body
|
|
186
|
-
* whose name is imported from a relative-path module. Mirror of the Mojo
|
|
187
|
-
* adapter's check — the Xslate adapter has the same cross-template-
|
|
188
|
-
* registration constraint at request time.
|
|
189
|
-
*/
|
|
190
|
-
private checkImportedLoopChildComponents;
|
|
191
157
|
renderLoop(loop: IRLoop): string;
|
|
192
158
|
/**
|
|
193
159
|
* AttrValue lowering for component invocation props (Kolon hashref-entry
|
|
@@ -233,14 +199,6 @@ export declare class XslateAdapter extends BaseAdapter implements IRNodeEmitter<
|
|
|
233
199
|
* block-body local var aliases.
|
|
234
200
|
*/
|
|
235
201
|
private renderKolonFilterExpr;
|
|
236
|
-
/**
|
|
237
|
-
* Render a complex block body filter into a Kolon condition.
|
|
238
|
-
* Handles patterns like: filter(t => { const f = filter(); if (...) return ...; })
|
|
239
|
-
*/
|
|
240
|
-
private renderBlockBodyCondition;
|
|
241
|
-
private collectReturnPaths;
|
|
242
|
-
private buildSinglePathCondition;
|
|
243
|
-
private renderConditionsAnd;
|
|
244
202
|
private convertTemplateLiteralPartsToKolon;
|
|
245
203
|
/**
|
|
246
204
|
* Translate `${EXPR}` interpolations in a static template-part string into
|
|
@@ -256,34 +214,23 @@ export declare class XslateAdapter extends BaseAdapter implements IRNodeEmitter<
|
|
|
256
214
|
*/
|
|
257
215
|
private refuseUnsupportedAttrExpression;
|
|
258
216
|
/**
|
|
259
|
-
*
|
|
260
|
-
*
|
|
261
|
-
*
|
|
262
|
-
*
|
|
263
|
-
*
|
|
264
|
-
* `
|
|
265
|
-
* falls back to its normal lowering. Mirror of `conditionalSpreadToPerl`.
|
|
266
|
-
*/
|
|
267
|
-
private conditionalSpreadToKolon;
|
|
268
|
-
/**
|
|
269
|
-
* Convert a static object literal into a Kolon hashref string for a
|
|
270
|
-
* conditional spread. Only static string/identifier keys are allowed; values
|
|
271
|
-
* resolve via `convertExpressionToKolon` (or the `Record[propKey]` index
|
|
272
|
-
* lowering). Returns `null` for any computed/spread/dynamic key. Empty object
|
|
273
|
-
* → `{}`. Mirror of `objectLiteralToPerlHashref`.
|
|
217
|
+
* Build the EmitContext seam the top-level `ParsedExpr` emitter depends on.
|
|
218
|
+
* Built as a private object (the adapter does NOT `implements XslateEmitContext`)
|
|
219
|
+
* so the wrapped bookkeeping — `_searchParamsLocals`, the const/record
|
|
220
|
+
* resolvers, BF101 recording, the filter-predicate entry — stays private and
|
|
221
|
+
* off the exported adapter's public type, matching the Go adapter's
|
|
222
|
+
* `emitCtx` and the `spreadCtx` / `memoCtx` seams below.
|
|
274
223
|
*/
|
|
275
|
-
private
|
|
224
|
+
private get emitCtx();
|
|
276
225
|
/**
|
|
277
|
-
*
|
|
278
|
-
* `
|
|
279
|
-
*
|
|
280
|
-
*
|
|
281
|
-
* only does the single-quote escaping + Kolon index emit. NB: Kolon indexes a
|
|
282
|
-
* hashref literal with bracket syntax `{…}[$key]`, NOT Perl's arrow-deref
|
|
283
|
-
* `{…}->{$key}` (which Kolon's parser rejects) — this is the one divergence
|
|
284
|
-
* from the Mojo `recordIndexAccessToPerl` emit.
|
|
226
|
+
* Build the narrow context the extracted spread lowering depends on. Passing
|
|
227
|
+
* a purpose-built object (rather than `this`) keeps the adapter's bookkeeping
|
|
228
|
+
* members private — they stay internal implementation detail, not part of the
|
|
229
|
+
* exported class's public surface.
|
|
285
230
|
*/
|
|
286
|
-
private
|
|
231
|
+
private get spreadCtx();
|
|
232
|
+
/** Build the narrow context the extracted memo seeding depends on. */
|
|
233
|
+
private get memoCtx();
|
|
287
234
|
private convertExpressionToKolon;
|
|
288
235
|
/**
|
|
289
236
|
* Render a full ParsedExpr tree to Kolon for top-level (non-filter)
|
|
@@ -292,7 +239,7 @@ export declare class XslateAdapter extends BaseAdapter implements IRNodeEmitter<
|
|
|
292
239
|
private renderParsedExprToKolon;
|
|
293
240
|
/** Whether `name` (a signal getter or prop) holds a string value, so an
|
|
294
241
|
* equality comparison against it should use Perl `eq`/`ne`. */
|
|
295
|
-
_isStringValueName
|
|
242
|
+
private _isStringValueName;
|
|
296
243
|
/**
|
|
297
244
|
* Resolve an identifier to its inlined Kolon single-quoted literal when it
|
|
298
245
|
* names a module pure-string const, else `null` (caller falls back to the
|
|
@@ -327,13 +274,12 @@ export declare class XslateAdapter extends BaseAdapter implements IRNodeEmitter<
|
|
|
327
274
|
* pagination) — function-scope consts never reach the per-render
|
|
328
275
|
* stash, so a bare `$totalPages` renders empty.
|
|
329
276
|
*/
|
|
330
|
-
_resolveLiteralConst
|
|
331
|
-
_resolveStaticRecordLiteral
|
|
332
|
-
_resolveModuleStringConst
|
|
333
|
-
_recordExprBF101
|
|
277
|
+
private _resolveLiteralConst;
|
|
278
|
+
private _resolveStaticRecordLiteral;
|
|
279
|
+
private _resolveModuleStringConst;
|
|
280
|
+
private _recordExprBF101;
|
|
334
281
|
/** Internal hook for higher-order: predicate body re-uses the filter emitter. */
|
|
335
|
-
_renderKolonFilterExprPublic
|
|
282
|
+
private _renderKolonFilterExprPublic;
|
|
336
283
|
}
|
|
337
284
|
export declare const xslateAdapter: XslateAdapter;
|
|
338
|
-
export {};
|
|
339
285
|
//# sourceMappingURL=xslate-adapter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xslate-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/xslate-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,SAAS,EACT,MAAM,EACN,YAAY,EACZ,aAAa,EACb,MAAM,EACN,WAAW,EACX,UAAU,EACV,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EAKP,yBAAyB,EAE1B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,sBAAsB,
|
|
1
|
+
{"version":3,"file":"xslate-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/xslate-adapter.ts"],"names":[],"mappings":"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"}
|