@barefootjs/jsx 0.16.0 → 0.17.1

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.
Files changed (65) hide show
  1. package/dist/adapters/env-signal.d.ts +73 -15
  2. package/dist/adapters/env-signal.d.ts.map +1 -1
  3. package/dist/adapters/jsx-adapter.d.ts.map +1 -1
  4. package/dist/adapters/parsed-expr-emitter.d.ts +7 -6
  5. package/dist/adapters/parsed-expr-emitter.d.ts.map +1 -1
  6. package/dist/analyzer-context.d.ts +29 -1
  7. package/dist/analyzer-context.d.ts.map +1 -1
  8. package/dist/analyzer.d.ts.map +1 -1
  9. package/dist/builtin-lowering-plugins.d.ts +34 -0
  10. package/dist/builtin-lowering-plugins.d.ts.map +1 -0
  11. package/dist/compiler.d.ts.map +1 -1
  12. package/dist/expression-parser.d.ts +264 -163
  13. package/dist/expression-parser.d.ts.map +1 -1
  14. package/dist/index.d.ts +10 -4
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +7839 -7019
  17. package/dist/ir-to-client-js/csr-substitute.d.ts.map +1 -1
  18. package/dist/ir-to-client-js/plan/build-declaration-emit.d.ts.map +1 -1
  19. package/dist/ir-to-client-js/plan/declaration-emit.d.ts +9 -0
  20. package/dist/ir-to-client-js/plan/declaration-emit.d.ts.map +1 -1
  21. package/dist/jsx-to-ir.d.ts.map +1 -1
  22. package/dist/lowering-registry.d.ts +122 -0
  23. package/dist/lowering-registry.d.ts.map +1 -0
  24. package/dist/query-href-lowering.d.ts +63 -0
  25. package/dist/query-href-lowering.d.ts.map +1 -0
  26. package/dist/ssr-defaults.d.ts.map +1 -1
  27. package/dist/ssr-seed-plan.d.ts +84 -0
  28. package/dist/ssr-seed-plan.d.ts.map +1 -0
  29. package/dist/types.d.ts +180 -11
  30. package/dist/types.d.ts.map +1 -1
  31. package/package.json +2 -2
  32. package/src/__tests__/__snapshots__/doc-examples.test.ts.snap +68 -3
  33. package/src/__tests__/analyzer.test.ts +53 -0
  34. package/src/__tests__/expression-parser.test.ts +714 -392
  35. package/src/__tests__/free-identifiers.test.ts +55 -0
  36. package/src/__tests__/ir-reduce-op.test.ts +18 -21
  37. package/src/__tests__/ir-sort-comparator.test.ts +19 -20
  38. package/src/__tests__/lowering-registry.test.ts +141 -0
  39. package/src/__tests__/materialize-getter-calls.test.ts +58 -0
  40. package/src/__tests__/primitive-resolver-alias.test.ts +23 -0
  41. package/src/__tests__/query-href-recognition.test.ts +58 -0
  42. package/src/__tests__/serialize-parsed-expr.test.ts +223 -0
  43. package/src/__tests__/ssr-seed-plan.test.ts +212 -0
  44. package/src/__tests__/unsupported-expression.test.ts +98 -4
  45. package/src/adapters/env-signal.ts +108 -21
  46. package/src/adapters/jsx-adapter.ts +17 -0
  47. package/src/adapters/parsed-expr-emitter.ts +39 -41
  48. package/src/analyzer-context.ts +72 -27
  49. package/src/analyzer.ts +226 -9
  50. package/src/builtin-lowering-plugins.ts +54 -0
  51. package/src/compiler.ts +6 -1
  52. package/src/expression-parser.ts +1375 -929
  53. package/src/index.ts +31 -3
  54. package/src/ir-to-client-js/csr-substitute.ts +5 -0
  55. package/src/ir-to-client-js/plan/build-declaration-emit.ts +16 -0
  56. package/src/ir-to-client-js/plan/declaration-emit.ts +9 -0
  57. package/src/ir-to-client-js/stringify/declaration-emit.ts +11 -0
  58. package/src/jsx-to-ir.ts +182 -43
  59. package/src/lowering-registry.ts +160 -0
  60. package/src/query-href-lowering.ts +147 -0
  61. package/src/ssr-defaults.ts +5 -1
  62. package/src/ssr-seed-plan.ts +146 -0
  63. package/src/types.ts +182 -12
  64. package/src/__tests__/flatmap-support.test.ts +0 -218
  65. package/src/__tests__/reduce-op.test.ts +0 -201
@@ -1,27 +1,85 @@
1
1
  import type { ParsedExpr } from '../expression-parser.ts';
2
2
  import type { IRMetadata } from '../types.ts';
3
3
  /**
4
- * The local binding name(s) that `searchParams` from `@barefootjs/client` is
5
- * imported under in this component the same import the analyzer allow-lists
6
- * (`CLIENT_EXPORTS`). Usually the single name `searchParams`, but an aliased
7
- * import (`import { searchParams as sp }`) binds it to `sp`, and the template
8
- * expression then reads `sp()` so adapters must gate + match against the
9
- * LOCAL name(s), not the literal `searchParams`. Empty when the env signal is
10
- * not imported (the component keeps the generic signal lowering).
4
+ * Env-signal key the runtime factory that produces it (`'search'`
5
+ * `createSearchParams`). Single source of truth for the reverse of the
6
+ * analyzer's `ENV_SIGNAL_FACTORIES` (#2057): an env signal is `createSignal`-
7
+ * shaped for analysis, but every backend that re-emits its declaration (client
8
+ * JS, JSX/Hono SSR) must call this factory, not `createSignal`, so the value is
9
+ * the request-scoped reader rather than stored state.
10
+ */
11
+ export declare const ENV_SIGNAL_CLIENT_FACTORY: Record<string, string>;
12
+ /**
13
+ * One env signal's SSR-reader surface — the single place a future env signal
14
+ * registers itself so the adapter seed / memo paths stay open-closed:
15
+ * registering a new env signal is an analyzer factory entry + one registry
16
+ * entry here; adapter seed/memo paths consume the registry and need no edits.
17
+ */
18
+ export interface EnvSignalReader {
19
+ /** The analyzer's `envReader` key (`'search'`). */
20
+ key: string;
21
+ /**
22
+ * Canonical per-request reader binding every adapter's lowering
23
+ * canonicalises to (`searchParams` → Perl `$searchParams`, Go
24
+ * `in.SearchParams` via capitalisation).
25
+ */
26
+ canonicalName: string;
27
+ /** Reader method names the SSR lowerings recognise (`.get(key)`). */
28
+ methods: ReadonlySet<string>;
29
+ }
30
+ /**
31
+ * Env-signal key → its {@link EnvSignalReader} descriptor. The open-closed
32
+ * contract: adding a new env signal is an analyzer factory entry
33
+ * (`ENV_SIGNAL_FACTORIES`, #2057) + one entry here — the adapter seed / memo
34
+ * paths consume this registry (via {@link envSignalReaderFor} /
35
+ * {@link envSignalLocalNames}) and need no edits.
36
+ */
37
+ export declare const ENV_SIGNAL_READERS: ReadonlyMap<string, EnvSignalReader>;
38
+ /** Look up an env signal's reader descriptor by its `envReader` key, or `null` when unregistered/absent. */
39
+ export declare function envSignalReaderFor(key: string | undefined): EnvSignalReader | null;
40
+ /**
41
+ * The getter name(s) of env signal(s) in this component, optionally filtered
42
+ * to one `envReader` key.
11
43
  *
12
- * `ImportSpecifier.name` is the exported name and `alias` the local rebinding
13
- * (see `collectImport` in analyzer.ts), so the import is detected by `name ===
14
- * 'searchParams'` and the local binding is `alias ?? name`. Namespace / default
15
- * specifiers bind a different identifier and are excluded.
44
+ * Recognised **structurally** (#2057): an env signal is declared as a
45
+ * `createSignal`-shaped `const [searchParams, setSearchParams] =
46
+ * createSearchParams()`, so the analyzer collects it into `metadata.signals`
47
+ * with `envReader: '<key>'` exactly like any other signal, but tagged. This
48
+ * function returns those getters (whatever the destructured name is —
49
+ * `searchParams`, or an alias), so adapters match the reader `.get()` call
50
+ * against the binding actually used, with **no name allow-list** (this
51
+ * supersedes the import-name matching, and the closed #2055).
52
+ *
53
+ * With `key` omitted, collects every env signal's getters regardless of
54
+ * which reader they belong to; with `key` given, only that reader's
55
+ * (`searchParamsLocalNames` is the `'search'`-filtered convenience below).
56
+ *
57
+ * Empty when the component declares no matching env signal (the component
58
+ * keeps the generic signal lowering).
16
59
  */
60
+ export declare function envSignalLocalNames(metadata: IRMetadata, key?: string): Set<string>;
61
+ /** The getter name(s) of the `searchParams` env signal in this component. See {@link envSignalLocalNames}. */
17
62
  export declare function searchParamsLocalNames(metadata: IRMetadata): Set<string>;
18
63
  /**
19
- * True when the component imports the `searchParams` env signal under any local
20
- * name. Convenience for adapters/harnesses that only need to gate on presence
21
- * (the lowering itself needs the {@link searchParamsLocalNames} set to match the
22
- * actual binding in the expression).
64
+ * True when the component declares the `searchParams` env signal. Convenience
65
+ * for adapters/harnesses that only need to gate on presence (the lowering
66
+ * itself needs the {@link searchParamsLocalNames} set to match the actual
67
+ * binding in the expression).
23
68
  */
24
69
  export declare function importsSearchParams(metadata: IRMetadata): boolean;
70
+ /**
71
+ * The local binding name(s) that `queryHref` is imported under in this component
72
+ * (#2042) — the pure URL-query builder an adapter lowers to its query helper
73
+ * (`bf_query` in go-template). Matched by the exported name `queryHref` and bound
74
+ * to `alias ?? name`, so an aliased import (`import { queryHref as qh }`) is gated
75
+ * against the LOCAL name. Empty when not imported.
76
+ *
77
+ * Both the main `@barefootjs/client` entry and the `@barefootjs/client/runtime`
78
+ * re-export are accepted: `queryHref` is exported from both, so importing it from
79
+ * either must enable SSR lowering — otherwise the call's object-literal arg would
80
+ * hit the support gate (BF101) on the runtime-entry import path.
81
+ */
82
+ export declare function queryHrefLocalNames(metadata: IRMetadata): Set<string>;
25
83
  /**
26
84
  * Recognise a `<binding>().<method>(<args>)` env-signal method call from a
27
85
  * `call` node's callee + args, where `<binding>` is one of the local names
@@ -1 +1 @@
1
- {"version":3,"file":"env-signal.d.ts","sourceRoot":"","sources":["../../src/adapters/env-signal.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;;;;;;;;;;GAaG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAUxE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAEjE;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAAE,EAClB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,GAC9B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,EAAE,CAAA;CAAE,GAAG,IAAI,CAY/C"}
1
+ {"version":3,"file":"env-signal.d.ts","sourceRoot":"","sources":["../../src/adapters/env-signal.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AACzD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AAE7C;;;;;;;GAOG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAE5D,CAAA;AAED;;;;;GAKG;AACH,MAAM,WAAW,eAAe;IAC9B,mDAAmD;IACnD,GAAG,EAAE,MAAM,CAAA;IACX;;;;OAIG;IACH,aAAa,EAAE,MAAM,CAAA;IACrB,qEAAqE;IACrE,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;CAC7B;AAED;;;;;;GAMG;AACH,eAAO,MAAM,kBAAkB,EAAE,WAAW,CAAC,MAAM,EAAE,eAAe,CAElE,CAAA;AAEF,4GAA4G;AAC5G,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,eAAe,GAAG,IAAI,CAGlF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,CAQnF;AAED,8GAA8G;AAC9G,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAExE;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,GAAG,OAAO,CAEjE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,CAUrE;AAQD;;;;;;;;;;GAUG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAAE,EAClB,UAAU,EAAE,WAAW,CAAC,MAAM,CAAC,GAC9B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,UAAU,EAAE,CAAA;CAAE,GAAG,IAAI,CAY/C"}
@@ -1 +1 @@
1
- {"version":3,"file":"jsx-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/jsx-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,eAAe,EAChB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAG5C,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,8BAAsB,UAAW,SAAQ,WAAW;IAClD,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IAEpC,yEAAyE;IACzE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAA;IAM9C,SAAS,CAAC,sBAAsB,CAC9B,UAAU,EAAE,eAAe,EAAE,GAC5B,MAAM,CAuBR;IAMD;;;;;;;;;;OAUG;IACH,0BAA0B,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAuHnE;IAMD,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ5C;IAMD,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEhD;IAED,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvC;IAED,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvC;CACF"}
1
+ {"version":3,"file":"jsx-adapter.d.ts","sourceRoot":"","sources":["../../src/adapters/jsx-adapter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,MAAM,EACN,eAAe,EAChB,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAI5C,MAAM,WAAW,gBAAgB;IAC/B,6EAA6E;IAC7E,aAAa,EAAE,OAAO,CAAA;CACvB;AAED,8BAAsB,UAAW,SAAQ,WAAW;IAClD,SAAS,CAAC,aAAa,EAAE,MAAM,CAAK;IAEpC,yEAAyE;IACzE,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,gBAAgB,CAAA;IAM9C,SAAS,CAAC,sBAAsB,CAC9B,UAAU,EAAE,eAAe,EAAE,GAC5B,MAAM,CAuBR;IAMD;;;;;;;;;;OAUG;IACH,0BAA0B,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAuInE;IAMD,SAAS,CAAC,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAQ5C;IAMD,iBAAiB,CAAC,cAAc,EAAE,MAAM,GAAG,MAAM,CAEhD;IAED,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvC;IAED,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvC;CACF"}
@@ -32,7 +32,7 @@
32
32
  * control so future hooks (depth limits, source-map tracking) can
33
33
  * be added in one place.
34
34
  */
35
- import type { ParsedExpr, SortComparator, ReduceOp, FlatDepth, FlatMapOp, TemplatePart } from '../expression-parser.ts';
35
+ import type { ParsedExpr, FlatDepth, TemplatePart, ObjectLiteralProperty } from '../expression-parser.ts';
36
36
  export type HigherOrderMethod = 'filter' | 'every' | 'some' | 'find' | 'findIndex' | 'findLast' | 'findLastIndex';
37
37
  /**
38
38
  * Non-higher-order array methods (#1443). One discriminator for the
@@ -90,14 +90,15 @@ export interface ParsedExprEmitter {
90
90
  logical(op: '&&' | '||' | '??', left: ParsedExpr, right: ParsedExpr, emit: (e: ParsedExpr) => string): string;
91
91
  conditional(test: ParsedExpr, consequent: ParsedExpr, alternate: ParsedExpr, emit: (e: ParsedExpr) => string): string;
92
92
  templateLiteral(parts: TemplatePart[], emit: (e: ParsedExpr) => string): string;
93
- arrowFn(param: string, body: ParsedExpr, emit: (e: ParsedExpr) => string): string;
94
- higherOrder(method: HigherOrderMethod, object: ParsedExpr, param: string, predicate: ParsedExpr, emit: (e: ParsedExpr) => string): string;
93
+ callbackMethod(method: string, object: ParsedExpr, arrow: Extract<ParsedExpr, {
94
+ kind: 'arrow';
95
+ }>, restArgs: ParsedExpr[], emit: (e: ParsedExpr) => string): string;
96
+ arrow(params: string[], body: ParsedExpr, emit: (e: ParsedExpr) => string): string;
97
+ regex(raw: string): string;
95
98
  arrayLiteral(elements: ParsedExpr[], emit: (e: ParsedExpr) => string): string;
99
+ objectLiteral(properties: ObjectLiteralProperty[], raw: string, emit: (e: ParsedExpr) => string): string;
96
100
  arrayMethod(method: ArrayMethod, object: ParsedExpr, args: ParsedExpr[], emit: (e: ParsedExpr) => string): string;
97
- sortMethod(method: SortMethod, object: ParsedExpr, comparator: SortComparator, emit: (e: ParsedExpr) => string): string;
98
- reduceMethod(method: ReduceMethod, object: ParsedExpr, reduceOp: ReduceOp, emit: (e: ParsedExpr) => string): string;
99
101
  flatMethod(object: ParsedExpr, depth: FlatDepth, emit: (e: ParsedExpr) => string): string;
100
- flatMapMethod(object: ParsedExpr, op: FlatMapOp, emit: (e: ParsedExpr) => string): string;
101
102
  unsupported(raw: string, reason: string): string;
102
103
  }
103
104
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"parsed-expr-emitter.d.ts","sourceRoot":"","sources":["../../src/adapters/parsed-expr-emitter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parsed-expr-emitter.d.ts","sourceRoot":"","sources":["../../src/adapters/parsed-expr-emitter.ts"],"names":[],"mappings":"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"}
@@ -174,7 +174,22 @@ export declare function getSourceLocation(node: ts.Node, sourceFile: ts.SourceFi
174
174
  * identical field shapes.
175
175
  */
176
176
  export declare function membersToProperties(members: ts.NodeArray<ts.TypeElement>, sourceFile: ts.SourceFile): PropertyInfo[];
177
- export declare function typeNodeToTypeInfo(typeNode: ts.TypeNode | undefined, sourceFile: ts.SourceFile): TypeInfo | null;
177
+ export declare function typeNodeToTypeInfo(typeNode: ts.TypeNode | undefined, sourceFile: ts.SourceFile, rawOf?: (node: ts.TypeNode) => string): TypeInfo | null;
178
+ /**
179
+ * Convert a resolved `ts.Type` to `TypeInfo` via the type checker. Used to
180
+ * sharpen `createMemo` field types the syntactic `inferTypeFromValue`
181
+ * heuristic can't reach — e.g. `createMemo(() => generateDays())` whose body
182
+ * is a local-function call (→ `CalendarDay[][]`) or a ternary of typed
183
+ * arrays (→ `string[]`). Without this the Go adapter renders such memos as
184
+ * `map[string]interface{}` / `bool` placeholders, so a typed backend can't
185
+ * populate the SSR data (#1968). Returns `null` when the type can't be
186
+ * lowered to a `ts.TypeNode`.
187
+ *
188
+ * Shares the structural lowering in `typeNodeToTypeInfo` (via the `rawOf`
189
+ * extractor) so node→TypeInfo logic lives in one place; the synthetic nodes
190
+ * from `typeToTypeNode` have no source text, so `raw` comes from the printer.
191
+ */
192
+ export declare function tsTypeToTypeInfo(type: ts.Type, checker: ts.TypeChecker): TypeInfo | null;
178
193
  export declare function isPascalCase(name: string): boolean;
179
194
  export declare function isComponentFunction(node: ts.Node): node is ts.FunctionDeclaration & {
180
195
  name: ts.Identifier;
@@ -183,4 +198,17 @@ export declare function isArrowComponentFunction(node: ts.Node): node is ts.Vari
183
198
  name: ts.Identifier;
184
199
  initializer: ts.ArrowFunction;
185
200
  };
201
+ /**
202
+ * The set of reactive getter names for a component — signal accessors plus memo
203
+ * names. Single source of truth for "what counts as a reactive getter", shared
204
+ * by the analyzer's block-memo fold purity oracle (#2040) and `jsx-to-ir`'s
205
+ * `getReactiveGetterNames`. A reactive read is idempotent within a render, so
206
+ * callers treat `getter()` as pure. If a third reactive kind is added, update
207
+ * this one function.
208
+ */
209
+ export declare function collectReactiveGetterNames(signals: ReadonlyArray<{
210
+ getter: string;
211
+ }>, memos: ReadonlyArray<{
212
+ name: string;
213
+ }>): Set<string>;
186
214
  //# sourceMappingURL=analyzer-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer-context.d.ts","sourceRoot":"","sources":["../src/analyzer-context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyzer-context.d.ts","sourceRoot":"","sources":["../src/analyzer-context.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAA;AAI3B,OAAO,EACL,KAAK,eAAe,EAQrB,MAAM,uBAAuB,CAAA;AAmB9B;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAK/D;AA8BD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAA;CAAE,GAAG,IAAI,CA8CpF;AAMD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,mBAAmB,CAAC,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,GACnB,eAAe,CAgHjB;AAugBD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAavE;AAmtCD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,CA6BpE;AA2LD;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAuCzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAelE;AAwjCD,eAAO,MAAM,wBAAwB,aAOnC,CAAA;AAkBF;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,EAAE,CA0DV;AAcD,eAAO,MAAM,mBAAmB,aAG9B,CAAA;AAoRF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAwCvE;AAMD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"analyzer.d.ts","sourceRoot":"","sources":["../src/analyzer.ts"],"names":[],"mappings":"AACA;;;;;GAKG;AAEH,OAAO,EAAE,MAAM,YAAY,CAAA;AAK3B,OAAO,EACL,KAAK,eAAe,EAUrB,MAAM,uBAAuB,CAAA;AAmB9B;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAK/D;AA8BD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf;IAAE,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC;IAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC;IAAC,OAAO,EAAE,EAAE,CAAC,WAAW,CAAA;CAAE,GAAG,IAAI,CA8CpF;AAMD,wBAAgB,gBAAgB,CAC9B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,mBAAmB,CAAC,EAAE,MAAM,EAC5B,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,GACnB,eAAe,CA+IjB;AAugBD;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,GAAG,EAAE,CAAC,UAAU,CAavE;AA82CD;;;;;;;;;GASG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,OAAO,CA6BpE;AA2LD;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,CAuCzE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,2BAA2B,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,GAAG,OAAO,CAelE;AA8kCD,eAAO,MAAM,wBAAwB,aAOnC,CAAA;AAkBF;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,GACf,MAAM,EAAE,CA0DV;AAcD,eAAO,MAAM,mBAAmB,aAG9B,CAAA;AAoRF;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CA8CvE;AAMD,OAAO,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Built-in lowering plugins — shipped with the compiler and applied by default,
3
+ * with no `barefoot.config.ts` registration required (#2057).
4
+ *
5
+ * These use the *exact same* {@link LoweringPlugin} seam as userland plugins.
6
+ * "Built-in" means only that the compiler registers them itself, so consumers
7
+ * get them for free. This is deliberate: it keeps a first-party API like
8
+ * `queryHref` from being a bespoke special-case branch in every adapter. Instead
9
+ * of each adapter carrying an `if (isQueryHref) …` recognizer, `queryHref` is a
10
+ * pre-registered plugin — indistinguishable, at the adapter, from any other. The
11
+ * adapters have one path (registry matcher → neutral node → render), and the
12
+ * only queryHref-specific knowledge left is the plugin registration below.
13
+ */
14
+ import type { LoweringPlugin } from './lowering-registry.ts';
15
+ /**
16
+ * `queryHref(base, { … })` — the pure URL-query builder (#2042). Its runtime
17
+ * lives in `@barefootjs/client`; this plugin recognises the call structurally
18
+ * and returns a backend-neutral `guard-list` on the `query` helper, which each
19
+ * adapter maps to its own runtime helper (`bf_query` / `bf->query` / `$bf.query`).
20
+ * `prepare` resolves the local names `queryHref` is imported under once per
21
+ * component; a component that never imports it gets no matcher (the adapter skips
22
+ * it entirely).
23
+ */
24
+ export declare const queryHrefPlugin: LoweringPlugin;
25
+ /** Every plugin the compiler ships and applies by default. */
26
+ export declare const BUILTIN_LOWERING_PLUGINS: readonly LoweringPlugin[];
27
+ /**
28
+ * Register the built-in plugins into the shared registry. Called for its side
29
+ * effect when `@barefootjs/jsx` is loaded (see `index.ts`), so adapters see
30
+ * `queryHref` without any explicit setup. Idempotent — `registerLoweringPlugin`
31
+ * dedups by name, so re-invoking (e.g. after a test reset) can't stack copies.
32
+ */
33
+ export declare function registerBuiltinLoweringPlugins(): void;
34
+ //# sourceMappingURL=builtin-lowering-plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"builtin-lowering-plugins.d.ts","sourceRoot":"","sources":["../src/builtin-lowering-plugins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,wBAAwB,CAAA;AAK5D;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,EAAE,cAY7B,CAAA;AAED,8DAA8D;AAC9D,eAAO,MAAM,wBAAwB,EAAE,SAAS,cAAc,EAAsB,CAAA;AAEpF;;;;;GAKG;AACH,wBAAgB,8BAA8B,IAAI,IAAI,CAErD"}
@@ -1 +1 @@
1
- {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACX,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAyE,MAAM,eAAe,CAAA;AAYvH;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,cAAc;IAC/D,wDAAwD;IACxD,OAAO,EAAE,eAAe,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAyC5D;AAiYD,wBAAgB,aAAa,CAC3B,GAAG,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,GACvC,UAAU,CA+BZ;AAMD,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,yBAAyB,GACjC,aAAa,CAsOf;AAMD,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,CAAA"}
1
+ {"version":3,"file":"compiler.d.ts","sourceRoot":"","sources":["../src/compiler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,WAAW,EACX,UAAU,EACV,cAAc,EACd,aAAa,EACb,UAAU,EACX,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAyE,MAAM,eAAe,CAAA;AAavH;;GAEG;AACH,MAAM,WAAW,yBAA0B,SAAQ,cAAc;IAC/D,wDAAwD;IACxD,OAAO,EAAE,eAAe,CAAA;CACzB;AAED;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,MAAM,CAyC5D;AAiYD,wBAAgB,aAAa,CAC3B,GAAG,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,GACvC,UAAU,CAmCZ;AAMD,wBAAgB,UAAU,CACxB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,yBAAyB,GACjC,aAAa,CAsOf;AAMD,YAAY,EAAE,WAAW,EAAE,cAAc,EAAE,aAAa,EAAE,UAAU,EAAE,CAAA"}