@barefootjs/erb 0.33.4 → 0.34.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/emit-context.d.ts +11 -1
- package/dist/adapter/emit-context.d.ts.map +1 -1
- package/dist/adapter/erb-adapter.d.ts +14 -0
- package/dist/adapter/erb-adapter.d.ts.map +1 -1
- package/dist/adapter/expr/emitters.d.ts +11 -1
- package/dist/adapter/expr/emitters.d.ts.map +1 -1
- package/dist/adapter/index.js +33 -23
- package/dist/conformance-pins.d.ts.map +1 -1
- package/dist/index.js +38 -25
- package/dist/render-divergences.d.ts.map +1 -1
- package/dist/vite.js +197 -135
- package/package.json +5 -5
- package/src/adapter/emit-context.ts +12 -1
- package/src/adapter/erb-adapter.ts +36 -43
- package/src/adapter/expr/emitters.ts +33 -0
- package/src/conformance-pins.ts +11 -0
- package/src/render-divergences.ts +4 -1
|
@@ -17,13 +17,23 @@
|
|
|
17
17
|
* genuinely needs it, so the seam documents the real cross-module coupling
|
|
18
18
|
* rather than re-exposing the whole adapter.
|
|
19
19
|
*/
|
|
20
|
-
import type { ParsedExpr, CompilerError, IRMetadata } from '@barefootjs/jsx';
|
|
20
|
+
import type { ParsedExpr, CompilerError, IRMetadata, LoweringMatcher } from '@barefootjs/jsx';
|
|
21
21
|
export interface ErbEmitContext {
|
|
22
22
|
/**
|
|
23
23
|
* Local binding names the request-scoped `searchParams()` env signal
|
|
24
24
|
* is imported under. Non-empty enables the env-signal method-call lowering.
|
|
25
25
|
*/
|
|
26
26
|
readonly _searchParamsLocals: Set<string>;
|
|
27
|
+
/**
|
|
28
|
+
* Registered lowering-plugin matchers (#2057), bound to this component's
|
|
29
|
+
* metadata at init. Read by `ErbTopLevelEmitter`'s `lowering` seam (#2843)
|
|
30
|
+
* so a registered call — the built-in `queryHref`, or any userland plugin —
|
|
31
|
+
* is recognised no matter where it sits in an expression tree (a ternary
|
|
32
|
+
* branch, a template-literal interpolation, …), not only when it's the call
|
|
33
|
+
* the adapter's own top-level conversion entry point
|
|
34
|
+
* (`convertExpressionToRuby`) is asked to lower directly.
|
|
35
|
+
*/
|
|
36
|
+
readonly _loweringMatchers: readonly LoweringMatcher[];
|
|
27
37
|
/**
|
|
28
38
|
* Inline a module-scope pure string-literal const by name as the resolved
|
|
29
39
|
* literal value, or null when the name is not such a const.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emit-context.d.ts","sourceRoot":"","sources":["../../src/adapter/emit-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;
|
|
1
|
+
{"version":3,"file":"emit-context.d.ts","sourceRoot":"","sources":["../../src/adapter/emit-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,aAAa,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAE7F,MAAM,WAAW,cAAc;IAC7B;;;OAGG;IACH,QAAQ,CAAC,mBAAmB,EAAE,GAAG,CAAC,MAAM,CAAC,CAAA;IAEzC;;;;;;;;OAQG;IACH,QAAQ,CAAC,iBAAiB,EAAE,SAAS,eAAe,EAAE,CAAA;IAEtD;;;OAGG;IACH,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAErD,mFAAmF;IACnF,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAEhD;;;OAGG;IACH,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAAA;IAE1E;;;;;;;;;OASG;IACH,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IAEtC,uEAAuE;IACvE,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;IAEzC,wDAAwD;IACxD,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAExD,wEAAwE;IACxE,2BAA2B,CAAC,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAAA;CACrE;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,gBAAgB;IAC/B,uDAAuD;IACvD,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;IAE9B,kEAAkE;IAClE,QAAQ,CAAC,MAAM,EAAE,aAAa,EAAE,CAAA;IAEhC,0EAA0E;IAC1E,QAAQ,CAAC,cAAc,EAAE,UAAU,CAAC,gBAAgB,CAAC,CAAA;IAErD,sEAAsE;IACtE,QAAQ,CAAC,WAAW,EAAE;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,EAAE,CAAA;IAExC;;;;;;;;;OASG;IACH,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,UAAU,GAAG,MAAM,CAAA;CACtE;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B;;;;;;;;;;;;OAYG;IACH,uBAAuB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,UAAU,EAAE,GAAG,CAAC,EAAE,UAAU,GAAG,OAAO,GAAG,MAAM,CAAA;CAClG"}
|
|
@@ -36,6 +36,7 @@
|
|
|
36
36
|
*/
|
|
37
37
|
import type { ComponentIR, IRNode, IRElement, IRText, IRExpression, IRConditional, IRLoop, IRComponent, IRFragment, IRSlot, IRIfStatement, IRProvider, IRAsync, TemplatePrimitiveRegistry } from '@barefootjs/jsx';
|
|
38
38
|
import { BaseAdapter, type AdapterOutput, type AdapterGenerateOptions, type IRNodeEmitter, type EmitIRNode } from '@barefootjs/jsx';
|
|
39
|
+
import type { ParsedExpr } from '@barefootjs/jsx';
|
|
39
40
|
import type { ErbRenderCtx } from './lib/types.ts';
|
|
40
41
|
export type { ErbAdapterOptions } from './lib/types.ts';
|
|
41
42
|
import type { ErbAdapterOptions } from './lib/types.ts';
|
|
@@ -141,6 +142,17 @@ export declare class ErbAdapter extends BaseAdapter implements IRNodeEmitter<Erb
|
|
|
141
142
|
* nullish-attribute omission.
|
|
142
143
|
*/
|
|
143
144
|
private nullableOptionalProps;
|
|
145
|
+
/**
|
|
146
|
+
* Local alias -> declared/exported name for imported components (#2822,
|
|
147
|
+
* the SSR-side counterpart of #2777's client-JS registry-key fix). A
|
|
148
|
+
* child referenced under an import alias (`import { Foo as Bar }`,
|
|
149
|
+
* `<Bar/>`) must build its cross-template `render_child` call against
|
|
150
|
+
* the child's own declared name (`Foo`, what `foo.tsx` registers its ERB
|
|
151
|
+
* partial as) — never the caller-local binding. Built once per compile
|
|
152
|
+
* from `ir.metadata.imports` via the shared `buildImportAliasMap`
|
|
153
|
+
* (`@barefootjs/jsx`) and read by `toTemplateName`.
|
|
154
|
+
*/
|
|
155
|
+
private importAliases;
|
|
144
156
|
constructor(options?: ErbAdapterOptions);
|
|
145
157
|
generate(ir: ComponentIR, options?: AdapterGenerateOptions): AdapterOutput;
|
|
146
158
|
/**
|
|
@@ -178,6 +190,8 @@ export declare class ErbAdapter extends BaseAdapter implements IRNodeEmitter<Erb
|
|
|
178
190
|
parseUndefinedAlternateTernary(expr: string): {
|
|
179
191
|
condition: string;
|
|
180
192
|
consequent: string;
|
|
193
|
+
testParsed: ParsedExpr;
|
|
194
|
+
consequentParsed: ParsedExpr;
|
|
181
195
|
} | null;
|
|
182
196
|
/**
|
|
183
197
|
* Inline a const (any scope) whose initializer is a pure numeric or
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"erb-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/erb-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AAEH,OAAO,KAAK,EACV,WAAW,EAEX,MAAM,EACN,SAAS,EACT,MAAM,EACN,YAAY,EACZ,aAAa,EACb,MAAM,EACN,WAAW,EACX,UAAU,EACV,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EAMP,yBAAyB,EAC1B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,WAAW,EACX,KAAK,aAAa,EAClB,KAAK,sBAAsB,EAE3B,KAAK,aAAa,EAClB,KAAK,UAAU,
|
|
1
|
+
{"version":3,"file":"erb-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/erb-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
* `nil`/`false`, so `0`, `''`, and `NaN` are Ruby-truthy but JS-falsy. Every
|
|
32
32
|
* JS truthiness test in this file goes through `bf.truthy?` for that reason.
|
|
33
33
|
*/
|
|
34
|
-
import { type ParsedExprEmitter, type ArrayMethod, type LiteralType, type ParsedExpr, type ObjectLiteralProperty, type FlatDepth, type TemplatePart } from '@barefootjs/jsx';
|
|
34
|
+
import { type ParsedExprEmitter, type ArrayMethod, type LiteralType, type ParsedExpr, type ObjectLiteralProperty, type FlatDepth, type TemplatePart, type LoweringEmitter } from '@barefootjs/jsx';
|
|
35
35
|
import type { ErbEmitContext } from '../emit-context.ts';
|
|
36
36
|
export declare class ErbFilterEmitter implements ParsedExprEmitter {
|
|
37
37
|
private readonly param;
|
|
@@ -76,6 +76,16 @@ export declare class ErbFilterEmitter implements ParsedExprEmitter {
|
|
|
76
76
|
export declare class ErbTopLevelEmitter implements ParsedExprEmitter {
|
|
77
77
|
private readonly ctx;
|
|
78
78
|
constructor(ctx: ErbEmitContext);
|
|
79
|
+
/**
|
|
80
|
+
* Registered-lowering seam (#2843): `emitParsedExpr`'s shared `call` case
|
|
81
|
+
* tries every matcher here BEFORE `call()` itself, so a registered call
|
|
82
|
+
* (the built-in `queryHref`, or any userland plugin) is recognised no
|
|
83
|
+
* matter where it sits in the tree. `render` is what used to live inline
|
|
84
|
+
* in `ErbAdapter.convertExpressionToRuby` before the object-literal
|
|
85
|
+
* support-gate refusal (`checkSupport`'s `call` arm, now itself
|
|
86
|
+
* registry-aware) made the pre-gate special case unnecessary.
|
|
87
|
+
*/
|
|
88
|
+
get lowering(): LoweringEmitter;
|
|
79
89
|
identifier(name: string): string;
|
|
80
90
|
literal(value: string | number | boolean | null, literalType: LiteralType): string;
|
|
81
91
|
member(object: ParsedExpr, property: string, _computed: boolean, optional: boolean, emit: (e: ParsedExpr) => string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitters.d.ts","sourceRoot":"","sources":["../../../src/adapter/expr/emitters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AAEH,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACd,KAAK,YAAY,
|
|
1
|
+
{"version":3,"file":"emitters.d.ts","sourceRoot":"","sources":["../../../src/adapter/expr/emitters.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter/index.js
CHANGED
|
@@ -187307,8 +187307,6 @@ import {
|
|
|
187307
187307
|
lookupStaticRecordLiteral,
|
|
187308
187308
|
searchParamsLocalNames,
|
|
187309
187309
|
prepareLoweringMatchers,
|
|
187310
|
-
queryHrefArgs,
|
|
187311
|
-
isValidHelperId,
|
|
187312
187310
|
sortComparatorFromArrow as sortComparatorFromArrow2,
|
|
187313
187311
|
isDangerousInnerHtmlAttr,
|
|
187314
187312
|
resolveDangerousInnerHtml,
|
|
@@ -187316,7 +187314,8 @@ import {
|
|
|
187316
187314
|
dangerousInnerHtmlDiagnostic,
|
|
187317
187315
|
resolveStaticLoopSource,
|
|
187318
187316
|
derivesScopeFromSlot,
|
|
187319
|
-
BindingScope
|
|
187317
|
+
BindingScope,
|
|
187318
|
+
buildImportAliasMap
|
|
187320
187319
|
} from "@barefootjs/jsx";
|
|
187321
187320
|
|
|
187322
187321
|
// src/adapter/boolean-result.ts
|
|
@@ -187710,7 +187709,9 @@ import {
|
|
|
187710
187709
|
groupObjectLiteralSegments,
|
|
187711
187710
|
identifierPath,
|
|
187712
187711
|
matchSearchParamsMethodCall,
|
|
187713
|
-
sortComparatorFromArrow
|
|
187712
|
+
sortComparatorFromArrow,
|
|
187713
|
+
queryHrefArgs,
|
|
187714
|
+
isValidHelperId
|
|
187714
187715
|
} from "@barefootjs/jsx";
|
|
187715
187716
|
|
|
187716
187717
|
// src/adapter/expr/operand.ts
|
|
@@ -187870,6 +187871,21 @@ class ErbTopLevelEmitter {
|
|
|
187870
187871
|
constructor(ctx) {
|
|
187871
187872
|
this.ctx = ctx;
|
|
187872
187873
|
}
|
|
187874
|
+
get lowering() {
|
|
187875
|
+
return {
|
|
187876
|
+
matchers: this.ctx._loweringMatchers,
|
|
187877
|
+
render: (node, emit) => {
|
|
187878
|
+
if (node.kind === "guard-list" && node.helper === "query") {
|
|
187879
|
+
const qArgs = queryHrefArgs(node, emit);
|
|
187880
|
+
return `bf.query(${qArgs.join(", ")})`;
|
|
187881
|
+
}
|
|
187882
|
+
if (node.kind === "helper-call" && isValidHelperId(node.helper)) {
|
|
187883
|
+
return `bf.${node.helper}(${node.args.map(emit).join(", ")})`;
|
|
187884
|
+
}
|
|
187885
|
+
return null;
|
|
187886
|
+
}
|
|
187887
|
+
};
|
|
187888
|
+
}
|
|
187873
187889
|
identifier(name) {
|
|
187874
187890
|
if (name === "undefined" || name === "null")
|
|
187875
187891
|
return "nil";
|
|
@@ -188354,6 +188370,7 @@ class ErbAdapter extends BaseAdapter {
|
|
|
188354
188370
|
localConstants = [];
|
|
188355
188371
|
scope = BindingScope.EMPTY;
|
|
188356
188372
|
nullableOptionalProps = new Set;
|
|
188373
|
+
importAliases = new Map;
|
|
188357
188374
|
constructor(options = {}) {
|
|
188358
188375
|
super();
|
|
188359
188376
|
this.options = {
|
|
@@ -188374,6 +188391,7 @@ class ErbAdapter extends BaseAdapter {
|
|
|
188374
188391
|
this._searchParamsLocals = searchParamsLocalNames(ir.metadata);
|
|
188375
188392
|
this._loweringMatchers = prepareLoweringMatchers(ir.metadata);
|
|
188376
188393
|
this.localConstants = ir.metadata.localConstants ?? [];
|
|
188394
|
+
this.importAliases = buildImportAliasMap(ir.metadata.imports ?? []);
|
|
188377
188395
|
this.scope = BindingScope.EMPTY;
|
|
188378
188396
|
this.errors = [];
|
|
188379
188397
|
this.childrenCaptureCounter = 0;
|
|
@@ -188427,7 +188445,9 @@ class ErbAdapter extends BaseAdapter {
|
|
|
188427
188445
|
return null;
|
|
188428
188446
|
return {
|
|
188429
188447
|
condition: exprToString(parsed.test),
|
|
188430
|
-
consequent: exprToString(parsed.consequent)
|
|
188448
|
+
consequent: exprToString(parsed.consequent),
|
|
188449
|
+
testParsed: parsed.test,
|
|
188450
|
+
consequentParsed: parsed.consequent
|
|
188431
188451
|
};
|
|
188432
188452
|
}
|
|
188433
188453
|
resolveLiteralConst(name) {
|
|
@@ -188901,7 +188921,8 @@ ${renderedChildren}` : renderedChildren;
|
|
|
188901
188921
|
}
|
|
188902
188922
|
childrenCaptureCounter = 0;
|
|
188903
188923
|
toTemplateName(componentName) {
|
|
188904
|
-
|
|
188924
|
+
const declaredName = this.importAliases.get(componentName) ?? componentName;
|
|
188925
|
+
return declaredName.replace(/([A-Z])/g, "_$1").toLowerCase().replace(/^_/, "");
|
|
188905
188926
|
}
|
|
188906
188927
|
renderIfStatement(ifStmt) {
|
|
188907
188928
|
const condition = this.convertExpressionToRuby(ifStmt.condition);
|
|
@@ -188971,8 +188992,8 @@ ${children}`;
|
|
|
188971
188992
|
{
|
|
188972
188993
|
const m = this.parseUndefinedAlternateTernary(value.expr);
|
|
188973
188994
|
if (m) {
|
|
188974
|
-
const cond = this.convertExpressionToRuby(m.
|
|
188975
|
-
const val = this.convertExpressionToRuby(m.
|
|
188995
|
+
const cond = this.convertExpressionToRuby("", m.testParsed);
|
|
188996
|
+
const val = this.convertExpressionToRuby("", m.consequentParsed);
|
|
188976
188997
|
return `<% if bf.truthy?(${cond}) %>${name}="<%= bf.h(${val}) %>"<% end %>`;
|
|
188977
188998
|
}
|
|
188978
188999
|
}
|
|
@@ -189102,7 +189123,7 @@ ${children}`;
|
|
|
189102
189123
|
if (!startsAsObjectLiteral && !hasTaggedTemplate)
|
|
189103
189124
|
return false;
|
|
189104
189125
|
const parsed = parseExpression2(expr.trim());
|
|
189105
|
-
const support = isSupported(parsed);
|
|
189126
|
+
const support = isSupported(parsed, { loweringMatchers: this._loweringMatchers });
|
|
189106
189127
|
if (parsed.kind !== "unsupported" && support.supported)
|
|
189107
189128
|
return false;
|
|
189108
189129
|
const reason = support.reason ?? (parsed.kind === "unsupported" ? parsed.reason : undefined);
|
|
@@ -189122,6 +189143,7 @@ ${reason}` : "";
|
|
|
189122
189143
|
get emitCtx() {
|
|
189123
189144
|
return {
|
|
189124
189145
|
_searchParamsLocals: this._searchParamsLocals,
|
|
189146
|
+
_loweringMatchers: this._loweringMatchers,
|
|
189125
189147
|
resolveModuleStringConst: (name) => this.resolveModuleStringConst(name),
|
|
189126
189148
|
resolveLiteralConst: (name) => this.resolveLiteralConst(name),
|
|
189127
189149
|
resolveStaticRecordLiteral: (o, k) => this.resolveStaticRecordLiteral(o, k),
|
|
@@ -189153,20 +189175,8 @@ ${reason}` : "";
|
|
|
189153
189175
|
return "''";
|
|
189154
189176
|
parsed = parseExpression2(trimmed);
|
|
189155
189177
|
}
|
|
189156
|
-
|
|
189157
|
-
|
|
189158
|
-
const node = matcher(parsed.callee, parsed.args);
|
|
189159
|
-
if (node?.kind === "guard-list" && node.helper === "query") {
|
|
189160
|
-
const argsRuby = queryHrefArgs(node, (n) => this.renderParsedExprToRuby(n));
|
|
189161
|
-
return `bf.query(${argsRuby.join(", ")})`;
|
|
189162
|
-
}
|
|
189163
|
-
if (node?.kind === "helper-call" && isValidHelperId(node.helper)) {
|
|
189164
|
-
const argsX = node.args.map((a) => this.renderParsedExprToRuby(a));
|
|
189165
|
-
return `bf.${node.helper}(${argsX.join(", ")})`;
|
|
189166
|
-
}
|
|
189167
|
-
}
|
|
189168
|
-
}
|
|
189169
|
-
const support = pos === "value" ? isSupportedValue(parsed) : isSupported(parsed);
|
|
189178
|
+
const supportOpts = { loweringMatchers: this._loweringMatchers };
|
|
189179
|
+
const support = pos === "value" ? isSupportedValue(parsed, supportOpts) : isSupported(parsed, supportOpts);
|
|
189170
189180
|
if (!support.supported) {
|
|
189171
189181
|
this.errors.push({
|
|
189172
189182
|
code: "BF101",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conformance-pins.d.ts","sourceRoot":"","sources":["../src/conformance-pins.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,eAAO,MAAM,eAAe,EAAE,
|
|
1
|
+
{"version":3,"file":"conformance-pins.d.ts","sourceRoot":"","sources":["../src/conformance-pins.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,eAAO,MAAM,eAAe,EAAE,eA0D7B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -187307,8 +187307,6 @@ import {
|
|
|
187307
187307
|
lookupStaticRecordLiteral,
|
|
187308
187308
|
searchParamsLocalNames,
|
|
187309
187309
|
prepareLoweringMatchers,
|
|
187310
|
-
queryHrefArgs,
|
|
187311
|
-
isValidHelperId,
|
|
187312
187310
|
sortComparatorFromArrow as sortComparatorFromArrow2,
|
|
187313
187311
|
isDangerousInnerHtmlAttr,
|
|
187314
187312
|
resolveDangerousInnerHtml,
|
|
@@ -187316,7 +187314,8 @@ import {
|
|
|
187316
187314
|
dangerousInnerHtmlDiagnostic,
|
|
187317
187315
|
resolveStaticLoopSource,
|
|
187318
187316
|
derivesScopeFromSlot,
|
|
187319
|
-
BindingScope
|
|
187317
|
+
BindingScope,
|
|
187318
|
+
buildImportAliasMap
|
|
187320
187319
|
} from "@barefootjs/jsx";
|
|
187321
187320
|
|
|
187322
187321
|
// src/adapter/boolean-result.ts
|
|
@@ -187710,7 +187709,9 @@ import {
|
|
|
187710
187709
|
groupObjectLiteralSegments,
|
|
187711
187710
|
identifierPath,
|
|
187712
187711
|
matchSearchParamsMethodCall,
|
|
187713
|
-
sortComparatorFromArrow
|
|
187712
|
+
sortComparatorFromArrow,
|
|
187713
|
+
queryHrefArgs,
|
|
187714
|
+
isValidHelperId
|
|
187714
187715
|
} from "@barefootjs/jsx";
|
|
187715
187716
|
|
|
187716
187717
|
// src/adapter/expr/operand.ts
|
|
@@ -187870,6 +187871,21 @@ class ErbTopLevelEmitter {
|
|
|
187870
187871
|
constructor(ctx) {
|
|
187871
187872
|
this.ctx = ctx;
|
|
187872
187873
|
}
|
|
187874
|
+
get lowering() {
|
|
187875
|
+
return {
|
|
187876
|
+
matchers: this.ctx._loweringMatchers,
|
|
187877
|
+
render: (node, emit) => {
|
|
187878
|
+
if (node.kind === "guard-list" && node.helper === "query") {
|
|
187879
|
+
const qArgs = queryHrefArgs(node, emit);
|
|
187880
|
+
return `bf.query(${qArgs.join(", ")})`;
|
|
187881
|
+
}
|
|
187882
|
+
if (node.kind === "helper-call" && isValidHelperId(node.helper)) {
|
|
187883
|
+
return `bf.${node.helper}(${node.args.map(emit).join(", ")})`;
|
|
187884
|
+
}
|
|
187885
|
+
return null;
|
|
187886
|
+
}
|
|
187887
|
+
};
|
|
187888
|
+
}
|
|
187873
187889
|
identifier(name) {
|
|
187874
187890
|
if (name === "undefined" || name === "null")
|
|
187875
187891
|
return "nil";
|
|
@@ -188354,6 +188370,7 @@ class ErbAdapter extends BaseAdapter {
|
|
|
188354
188370
|
localConstants = [];
|
|
188355
188371
|
scope = BindingScope.EMPTY;
|
|
188356
188372
|
nullableOptionalProps = new Set;
|
|
188373
|
+
importAliases = new Map;
|
|
188357
188374
|
constructor(options = {}) {
|
|
188358
188375
|
super();
|
|
188359
188376
|
this.options = {
|
|
@@ -188374,6 +188391,7 @@ class ErbAdapter extends BaseAdapter {
|
|
|
188374
188391
|
this._searchParamsLocals = searchParamsLocalNames(ir.metadata);
|
|
188375
188392
|
this._loweringMatchers = prepareLoweringMatchers(ir.metadata);
|
|
188376
188393
|
this.localConstants = ir.metadata.localConstants ?? [];
|
|
188394
|
+
this.importAliases = buildImportAliasMap(ir.metadata.imports ?? []);
|
|
188377
188395
|
this.scope = BindingScope.EMPTY;
|
|
188378
188396
|
this.errors = [];
|
|
188379
188397
|
this.childrenCaptureCounter = 0;
|
|
@@ -188427,7 +188445,9 @@ class ErbAdapter extends BaseAdapter {
|
|
|
188427
188445
|
return null;
|
|
188428
188446
|
return {
|
|
188429
188447
|
condition: exprToString(parsed.test),
|
|
188430
|
-
consequent: exprToString(parsed.consequent)
|
|
188448
|
+
consequent: exprToString(parsed.consequent),
|
|
188449
|
+
testParsed: parsed.test,
|
|
188450
|
+
consequentParsed: parsed.consequent
|
|
188431
188451
|
};
|
|
188432
188452
|
}
|
|
188433
188453
|
resolveLiteralConst(name) {
|
|
@@ -188901,7 +188921,8 @@ ${renderedChildren}` : renderedChildren;
|
|
|
188901
188921
|
}
|
|
188902
188922
|
childrenCaptureCounter = 0;
|
|
188903
188923
|
toTemplateName(componentName) {
|
|
188904
|
-
|
|
188924
|
+
const declaredName = this.importAliases.get(componentName) ?? componentName;
|
|
188925
|
+
return declaredName.replace(/([A-Z])/g, "_$1").toLowerCase().replace(/^_/, "");
|
|
188905
188926
|
}
|
|
188906
188927
|
renderIfStatement(ifStmt) {
|
|
188907
188928
|
const condition = this.convertExpressionToRuby(ifStmt.condition);
|
|
@@ -188971,8 +188992,8 @@ ${children}`;
|
|
|
188971
188992
|
{
|
|
188972
188993
|
const m = this.parseUndefinedAlternateTernary(value.expr);
|
|
188973
188994
|
if (m) {
|
|
188974
|
-
const cond = this.convertExpressionToRuby(m.
|
|
188975
|
-
const val = this.convertExpressionToRuby(m.
|
|
188995
|
+
const cond = this.convertExpressionToRuby("", m.testParsed);
|
|
188996
|
+
const val = this.convertExpressionToRuby("", m.consequentParsed);
|
|
188976
188997
|
return `<% if bf.truthy?(${cond}) %>${name}="<%= bf.h(${val}) %>"<% end %>`;
|
|
188977
188998
|
}
|
|
188978
188999
|
}
|
|
@@ -189102,7 +189123,7 @@ ${children}`;
|
|
|
189102
189123
|
if (!startsAsObjectLiteral && !hasTaggedTemplate)
|
|
189103
189124
|
return false;
|
|
189104
189125
|
const parsed = parseExpression2(expr.trim());
|
|
189105
|
-
const support = isSupported(parsed);
|
|
189126
|
+
const support = isSupported(parsed, { loweringMatchers: this._loweringMatchers });
|
|
189106
189127
|
if (parsed.kind !== "unsupported" && support.supported)
|
|
189107
189128
|
return false;
|
|
189108
189129
|
const reason = support.reason ?? (parsed.kind === "unsupported" ? parsed.reason : undefined);
|
|
@@ -189122,6 +189143,7 @@ ${reason}` : "";
|
|
|
189122
189143
|
get emitCtx() {
|
|
189123
189144
|
return {
|
|
189124
189145
|
_searchParamsLocals: this._searchParamsLocals,
|
|
189146
|
+
_loweringMatchers: this._loweringMatchers,
|
|
189125
189147
|
resolveModuleStringConst: (name) => this.resolveModuleStringConst(name),
|
|
189126
189148
|
resolveLiteralConst: (name) => this.resolveLiteralConst(name),
|
|
189127
189149
|
resolveStaticRecordLiteral: (o, k) => this.resolveStaticRecordLiteral(o, k),
|
|
@@ -189153,20 +189175,8 @@ ${reason}` : "";
|
|
|
189153
189175
|
return "''";
|
|
189154
189176
|
parsed = parseExpression2(trimmed);
|
|
189155
189177
|
}
|
|
189156
|
-
|
|
189157
|
-
|
|
189158
|
-
const node = matcher(parsed.callee, parsed.args);
|
|
189159
|
-
if (node?.kind === "guard-list" && node.helper === "query") {
|
|
189160
|
-
const argsRuby = queryHrefArgs(node, (n) => this.renderParsedExprToRuby(n));
|
|
189161
|
-
return `bf.query(${argsRuby.join(", ")})`;
|
|
189162
|
-
}
|
|
189163
|
-
if (node?.kind === "helper-call" && isValidHelperId(node.helper)) {
|
|
189164
|
-
const argsX = node.args.map((a) => this.renderParsedExprToRuby(a));
|
|
189165
|
-
return `bf.${node.helper}(${argsX.join(", ")})`;
|
|
189166
|
-
}
|
|
189167
|
-
}
|
|
189168
|
-
}
|
|
189169
|
-
const support = pos === "value" ? isSupportedValue(parsed) : isSupported(parsed);
|
|
189178
|
+
const supportOpts = { loweringMatchers: this._loweringMatchers };
|
|
189179
|
+
const support = pos === "value" ? isSupportedValue(parsed, supportOpts) : isSupported(parsed, supportOpts);
|
|
189170
189180
|
if (!support.supported) {
|
|
189171
189181
|
this.errors.push({
|
|
189172
189182
|
code: "BF101",
|
|
@@ -189248,10 +189258,13 @@ var conformancePins = {
|
|
|
189248
189258
|
"date-method-uncatalogued": [{ code: "BF021", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2356" }],
|
|
189249
189259
|
"rich-prop-client-read": [{ code: "BF049", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2648" }],
|
|
189250
189260
|
"jsx-element-prop-ternary": [{ code: "BF021", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2667" }],
|
|
189251
|
-
"jsx-element-prop-array": [{ code: "BF021", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2667" }]
|
|
189261
|
+
"jsx-element-prop-array": [{ code: "BF021", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2667" }],
|
|
189262
|
+
"namespace-import-primitive": [{ code: "BF013", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2771" }]
|
|
189252
189263
|
};
|
|
189253
189264
|
// src/render-divergences.ts
|
|
189254
|
-
var renderDivergences = {
|
|
189265
|
+
var renderDivergences = {
|
|
189266
|
+
"aliased-loop-source": "A `.map()` loop whose source is a local const alias of a signal getter (`const items__alias = items`) throws `undefined method 'length' for nil (NoMethodError)` on real Ruby ERB — the seeded loop data is keyed by the signal's real name (`items`), and the alias hop is never resolved when deciding what to seed under `items__alias`. This is the SSR-side twin of #2778 (fixed for the CSR client-JS template in the same PR that added this fixture) — that fix only touches client-JS emission, not SSR data-seeding. Tracked at https://github.com/piconic-ai/barefootjs/issues/2813; graduate by resolving the alias hop at SSR-seeding time using the same `resolveAliasOrigin`/`resolveGetterAliases` mechanism #2778 introduced, rather than a third alias-hop walker."
|
|
189267
|
+
};
|
|
189255
189268
|
export {
|
|
189256
189269
|
renderDivergences,
|
|
189257
189270
|
erbAdapter,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-divergences.d.ts","sourceRoot":"","sources":["../src/render-divergences.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAQxD,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"render-divergences.d.ts","sourceRoot":"","sources":["../src/render-divergences.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAQxD,eAAO,MAAM,iBAAiB,EAAE,iBAG/B,CAAA"}
|