@barefootjs/rust 0.18.3 → 0.18.5
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/expr/array-method.d.ts.map +1 -1
- package/dist/adapter/expr/emitters.d.ts +2 -2
- package/dist/adapter/expr/emitters.d.ts.map +1 -1
- package/dist/adapter/index.js +50 -17
- package/dist/adapter/lib/constants.d.ts.map +1 -1
- package/dist/adapter/minijinja-adapter.d.ts +8 -0
- package/dist/adapter/minijinja-adapter.d.ts.map +1 -1
- package/dist/build.js +50 -17
- package/dist/conformance-pins.d.ts.map +1 -1
- package/dist/index.js +52 -33
- package/dist/render-divergences.d.ts.map +1 -1
- package/package.json +3 -3
- package/runtime/src/num.rs +30 -0
- package/runtime/src/runtime.rs +78 -10
- package/runtime/tests/helper_vectors.rs +6 -0
- package/runtime/tests/template_primitives.rs +42 -0
- package/src/__tests__/minijinja-adapter-unit.test.ts +21 -0
- package/src/adapter/expr/array-method.ts +19 -0
- package/src/adapter/expr/emitters.ts +13 -7
- package/src/adapter/lib/constants.ts +3 -0
- package/src/adapter/minijinja-adapter.ts +68 -8
- package/src/conformance-pins.ts +0 -5
- package/src/render-divergences.ts +1 -26
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"array-method.d.ts","sourceRoot":"","sources":["../../../src/adapter/expr/array-method.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,SAAS,EACV,MAAM,iBAAiB,CAAA;AAGxB,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAAE,EAClB,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,
|
|
1
|
+
{"version":3,"file":"array-method.d.ts","sourceRoot":"","sources":["../../../src/adapter/expr/array-method.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAMH,OAAO,KAAK,EACV,UAAU,EACV,WAAW,EACX,cAAc,EACd,SAAS,EACV,MAAM,iBAAiB,CAAA;AAGxB,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAAE,EAClB,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,CAgJR;AAqBD;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,GAAG,IAAI,CAUf;AAED;;;;;;;;;GASG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,MAAM,EAAE,MAAM,EAAE,EAChB,IAAI,EAAE,UAAU,EAChB,SAAS,EAAE,MAAM,GAAG,OAAO,EAC3B,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,GAAG,IAAI,CAkBf;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,UAAU,EACrB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,EAC/B,OAAO,CAAC,EAAE,OAAO,GAChB,MAAM,GAAG,IAAI,CAMf;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,GAAG,IAAI,CAKf;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,UAAU,EAChB,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,GAAG,IAAI,CAKf;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,EAAE,cAAc,GAAG,MAAM,CASxE;AAGD,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,SAAS,GAAG;IAAE,IAAI,EAAE,UAAU,CAAA;CAAE,EACvC,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,CAmBR"}
|
|
@@ -77,7 +77,7 @@ export declare class JinjaFilterEmitter implements ParsedExprEmitter {
|
|
|
77
77
|
constructor(param: string, localVarMap: Map<string, string>, isStringName?: (n: string) => boolean, onUnsupported?: ((message: string, reason?: string) => void) | undefined);
|
|
78
78
|
identifier(name: string): string;
|
|
79
79
|
literal(value: string | number | boolean | null, literalType: LiteralType): string;
|
|
80
|
-
member(object: ParsedExpr, property: string, _computed: boolean, emit: (e: ParsedExpr) => string): string;
|
|
80
|
+
member(object: ParsedExpr, property: string, _computed: boolean, _optional: boolean, emit: (e: ParsedExpr) => string): string;
|
|
81
81
|
indexAccess(object: ParsedExpr, index: ParsedExpr, emit: (e: ParsedExpr) => string): string;
|
|
82
82
|
call(callee: ParsedExpr, args: ParsedExpr[], emit: (e: ParsedExpr) => string): string;
|
|
83
83
|
unary(op: string, argument: ParsedExpr, emit: (e: ParsedExpr) => string): string;
|
|
@@ -112,7 +112,7 @@ export declare class JinjaTopLevelEmitter implements ParsedExprEmitter {
|
|
|
112
112
|
constructor(ctx: JinjaEmitContext);
|
|
113
113
|
identifier(name: string): string;
|
|
114
114
|
literal(value: string | number | boolean | null, literalType: LiteralType): string;
|
|
115
|
-
member(object: ParsedExpr, property: string, _computed: boolean, emit: (e: ParsedExpr) => string): string;
|
|
115
|
+
member(object: ParsedExpr, property: string, _computed: boolean, _optional: boolean, emit: (e: ParsedExpr) => string): string;
|
|
116
116
|
indexAccess(object: ParsedExpr, index: ParsedExpr, emit: (e: ParsedExpr) => string): string;
|
|
117
117
|
call(callee: ParsedExpr, args: ParsedExpr[], emit: (e: ParsedExpr) => string): string;
|
|
118
118
|
unary(op: string, argument: ParsedExpr, emit: (e: ParsedExpr) => string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emitters.d.ts","sourceRoot":"","sources":["../../../src/adapter/expr/emitters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACd,KAAK,YAAY,EAIlB,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AA+B1D;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,kBAAmB,YAAW,iBAAiB;IAExD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAI7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAPjC,YACmB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,YAAY,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAqB,EAIlD,aAAa,CAAC,GAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,aAAA,EACzE;IAEJ,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/B;IAED,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,CAKjF;IAED,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"emitters.d.ts","sourceRoot":"","sources":["../../../src/adapter/expr/emitters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAEH,OAAO,EACL,KAAK,iBAAiB,EAEtB,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,SAAS,EACd,KAAK,YAAY,EAIlB,MAAM,iBAAiB,CAAA;AAExB,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AA+B1D;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAErE;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,kBAAmB,YAAW,iBAAiB;IAExD,OAAO,CAAC,QAAQ,CAAC,KAAK;IACtB,OAAO,CAAC,QAAQ,CAAC,WAAW;IAC5B,OAAO,CAAC,QAAQ,CAAC,YAAY;IAI7B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAC;IAPjC,YACmB,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,YAAY,GAAE,CAAC,CAAC,EAAE,MAAM,KAAK,OAAqB,EAIlD,aAAa,CAAC,GAAE,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI,aAAA,EACzE;IAEJ,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAK/B;IAED,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,CAKjF;IAED,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAU5H;IAED,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAK1F;IAED,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAMpF;IAED,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAI/E;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAc/F;IAED,OAAO,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAoB5G;IAED,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,MAAM,EAAE,OAAO,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,EAC9C,SAAS,EAAE,UAAU,EAAE,EACvB,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,CASR;IAED,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAE5E;IAED,WAAW,CACT,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAAE,EAClB,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,CAER;IAED,UAAU,CACR,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,SAAS,GAAG;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,EACvC,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,CAER;IAED,WAAW,CAAC,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAEtF;IAED,eAAe,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,CAE9C;IAED,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAElD;IAED,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE1B;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD;IAED,aAAa,CAAC,WAAW,EAAE,qBAAqB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAK1G;CACF;AAED;;;;;;;;GAQG;AACH,qBAAa,oBAAqB,YAAW,iBAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,GAAG;IAAhC,YAA6B,GAAG,EAAE,gBAAgB,EAAI;IAEtD,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAc/B;IAED,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,EAAE,WAAW,EAAE,WAAW,GAAG,MAAM,CAKjF;IAED,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAoB5H;IAED,WAAW,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAI1F;IAED,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CA+BpF;IAED,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAI/E;IAED,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAa/F;IAED,OAAO,CAAC,EAAE,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAW5G;IAED,cAAc,CACZ,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,OAAO,CAAC,UAAU,EAAE;QAAE,IAAI,EAAE,OAAO,CAAA;KAAE,CAAC,EAC7C,QAAQ,EAAE,UAAU,EAAE,EACtB,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,CA2ER;IAED;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IA6B9B,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAE5E;IAED,WAAW,CACT,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,UAAU,EAAE,EAClB,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,CAER;IAED,UAAU,CACR,MAAM,EAAE,UAAU,EAClB,KAAK,EAAE,SAAS,GAAG;QAAE,IAAI,EAAE,UAAU,CAAA;KAAE,EACvC,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,CAER;IAED,WAAW,CACT,IAAI,EAAE,UAAU,EAChB,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,UAAU,EACrB,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAC9B,MAAM,CAER;IAED,eAAe,CAAC,KAAK,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAwB9E;IAED,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,UAAU,GAAG,MAAM,CAMlD;IAED,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG1B;IAED,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAEjD;IAED,aAAa,CAAC,UAAU,EAAE,qBAAqB,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC,EAAE,UAAU,KAAK,MAAM,GAAG,MAAM,CAWzG;CACF"}
|
package/dist/adapter/index.js
CHANGED
|
@@ -187369,7 +187369,7 @@ function isAriaBooleanAttr(name) {
|
|
|
187369
187369
|
}
|
|
187370
187370
|
|
|
187371
187371
|
// src/adapter/minijinja-adapter.ts
|
|
187372
|
-
import { BF_SLOT, BF_COND, BF_REGION } from "@barefootjs/shared";
|
|
187372
|
+
import { BF_SLOT, BF_COND, BF_REGION, escapeHtml } from "@barefootjs/shared";
|
|
187373
187373
|
|
|
187374
187374
|
// src/adapter/lib/constants.ts
|
|
187375
187375
|
var JINJA_TEMPLATE_PRIMITIVES = {
|
|
@@ -187378,7 +187378,10 @@ var JINJA_TEMPLATE_PRIMITIVES = {
|
|
|
187378
187378
|
Number: { arity: 1, emit: (args) => `bf.number(${args[0]})` },
|
|
187379
187379
|
"Math.floor": { arity: 1, emit: (args) => `bf.floor(${args[0]})` },
|
|
187380
187380
|
"Math.ceil": { arity: 1, emit: (args) => `bf.ceil(${args[0]})` },
|
|
187381
|
-
"Math.round": { arity: 1, emit: (args) => `bf.round(${args[0]})` }
|
|
187381
|
+
"Math.round": { arity: 1, emit: (args) => `bf.round(${args[0]})` },
|
|
187382
|
+
"Math.min": { arity: 2, emit: (args) => `bf.min(${args[0]}, ${args[1]})` },
|
|
187383
|
+
"Math.max": { arity: 2, emit: (args) => `bf.max(${args[0]}, ${args[1]})` },
|
|
187384
|
+
"Math.abs": { arity: 1, emit: (args) => `bf.abs(${args[0]})` }
|
|
187382
187385
|
};
|
|
187383
187386
|
var JINJA_PRIMITIVE_EMIT_MAP = Object.fromEntries(Object.entries(JINJA_TEMPLATE_PRIMITIVES).map(([k, v]) => [k, v.emit]));
|
|
187384
187387
|
|
|
@@ -187544,6 +187547,12 @@ function renderArrayMethod(method, object, args, emit) {
|
|
|
187544
187547
|
const recv = emit(object);
|
|
187545
187548
|
return `bf.trim(${recv})`;
|
|
187546
187549
|
}
|
|
187550
|
+
case "trimStart":
|
|
187551
|
+
case "trimEnd": {
|
|
187552
|
+
const fn = method === "trimStart" ? "trim_start" : "trim_end";
|
|
187553
|
+
const recv = emit(object);
|
|
187554
|
+
return `bf.${fn}(${recv})`;
|
|
187555
|
+
}
|
|
187547
187556
|
case "toFixed": {
|
|
187548
187557
|
const recv = emit(object);
|
|
187549
187558
|
const digits = args.length >= 1 ? emit(args[0]) : "0";
|
|
@@ -187577,6 +187586,12 @@ function renderArrayMethod(method, object, args, emit) {
|
|
|
187577
187586
|
const newS = emit(args[1]);
|
|
187578
187587
|
return `bf.replace(${recv}, ${oldS}, ${newS})`;
|
|
187579
187588
|
}
|
|
187589
|
+
case "replaceAll": {
|
|
187590
|
+
const recv = emit(object);
|
|
187591
|
+
const oldS = emit(args[0]);
|
|
187592
|
+
const newS = emit(args[1]);
|
|
187593
|
+
return `bf.replace_all(${recv}, ${oldS}, ${newS})`;
|
|
187594
|
+
}
|
|
187580
187595
|
case "repeat": {
|
|
187581
187596
|
const recv = emit(object);
|
|
187582
187597
|
const count = args.length === 0 ? "0" : emit(args[0]);
|
|
@@ -187673,6 +187688,7 @@ function renderFlatMethod(recv, depth, emit) {
|
|
|
187673
187688
|
|
|
187674
187689
|
// src/adapter/expr/emitters.ts
|
|
187675
187690
|
import {
|
|
187691
|
+
groupBinaryOperand,
|
|
187676
187692
|
identifierPath,
|
|
187677
187693
|
matchSearchParamsMethodCall,
|
|
187678
187694
|
sortComparatorFromArrow
|
|
@@ -187718,7 +187734,7 @@ class JinjaFilterEmitter {
|
|
|
187718
187734
|
return "none";
|
|
187719
187735
|
return String(value);
|
|
187720
187736
|
}
|
|
187721
|
-
member(object, property, _computed, emit) {
|
|
187737
|
+
member(object, property, _computed, _optional, emit) {
|
|
187722
187738
|
if (property === "length") {
|
|
187723
187739
|
return `bf.length(${emit(object)})`;
|
|
187724
187740
|
}
|
|
@@ -187741,8 +187757,8 @@ class JinjaFilterEmitter {
|
|
|
187741
187757
|
return emit(argument);
|
|
187742
187758
|
}
|
|
187743
187759
|
binary(op, left, right, emit) {
|
|
187744
|
-
const l = emit(left);
|
|
187745
|
-
const r = emit(right);
|
|
187760
|
+
const l = groupBinaryOperand(left, emit(left));
|
|
187761
|
+
const r = groupBinaryOperand(right, emit(right));
|
|
187746
187762
|
const opMap = {
|
|
187747
187763
|
"===": "==",
|
|
187748
187764
|
"!==": "!=",
|
|
@@ -187824,7 +187840,7 @@ class JinjaTopLevelEmitter {
|
|
|
187824
187840
|
return "none";
|
|
187825
187841
|
return String(value);
|
|
187826
187842
|
}
|
|
187827
|
-
member(object, property, _computed, emit) {
|
|
187843
|
+
member(object, property, _computed, _optional, emit) {
|
|
187828
187844
|
if (object.kind === "identifier" && object.name === "props") {
|
|
187829
187845
|
return minijinjaIdent(property);
|
|
187830
187846
|
}
|
|
@@ -187870,8 +187886,8 @@ class JinjaTopLevelEmitter {
|
|
|
187870
187886
|
return emit(argument);
|
|
187871
187887
|
}
|
|
187872
187888
|
binary(op, left, right, emit) {
|
|
187873
|
-
const l = emit(left);
|
|
187874
|
-
const r = emit(right);
|
|
187889
|
+
const l = groupBinaryOperand(left, emit(left));
|
|
187890
|
+
const r = groupBinaryOperand(right, emit(right));
|
|
187875
187891
|
const opMap = {
|
|
187876
187892
|
"===": "==",
|
|
187877
187893
|
"!==": "!=",
|
|
@@ -188251,6 +188267,7 @@ class MinijinjaAdapter extends BaseAdapter {
|
|
|
188251
188267
|
options;
|
|
188252
188268
|
errors = [];
|
|
188253
188269
|
inLoop = false;
|
|
188270
|
+
currentLoopKeyDepth = 0;
|
|
188254
188271
|
propsObjectName = null;
|
|
188255
188272
|
propsParams = [];
|
|
188256
188273
|
booleanTypedProps = new Set;
|
|
@@ -188327,7 +188344,7 @@ class MinijinjaAdapter extends BaseAdapter {
|
|
|
188327
188344
|
return this.renderElement(node);
|
|
188328
188345
|
}
|
|
188329
188346
|
emitText(node) {
|
|
188330
|
-
return node.value;
|
|
188347
|
+
return escapeHtml(node.value);
|
|
188331
188348
|
}
|
|
188332
188349
|
emitExpression(node) {
|
|
188333
188350
|
return this.renderExpression(node);
|
|
@@ -188557,7 +188574,7 @@ ${whenTrue}
|
|
|
188557
188574
|
const renderedChildren = this.renderChildren(loop.children);
|
|
188558
188575
|
const loopVar = loop.iterationShape === "keys" ? "__bf_item" : supportableDestructure ? "__bf_item" : param;
|
|
188559
188576
|
const indexLocalLines = [];
|
|
188560
|
-
if (loop.iterationShape === "keys") {
|
|
188577
|
+
if (loop.objectIteration) {} else if (loop.iterationShape === "keys") {
|
|
188561
188578
|
indexLocalLines.push(`{% set ${minijinjaIdent(param)} = loop.index0 %}`);
|
|
188562
188579
|
} else if (loop.index) {
|
|
188563
188580
|
indexLocalLines.push(`{% set ${minijinjaIdent(loop.index)} = loop.index0 %}`);
|
|
@@ -188577,13 +188594,17 @@ ${whenTrue}
|
|
|
188577
188594
|
}
|
|
188578
188595
|
const prevInLoop = this.inLoop;
|
|
188579
188596
|
this.inLoop = true;
|
|
188597
|
+
const prevLoopKeyDepth = this.currentLoopKeyDepth;
|
|
188598
|
+
this.currentLoopKeyDepth = loop.depth;
|
|
188580
188599
|
const childrenUnderLoop = this.renderChildren(loop.children);
|
|
188600
|
+
this.currentLoopKeyDepth = prevLoopKeyDepth;
|
|
188581
188601
|
this.inLoop = prevInLoop;
|
|
188582
188602
|
const bodyChildren = loop.bodyIsItemConditional && loop.key ? `{{ bf.comment("loop-i:" ~ bf.string(${this.convertExpressionToJinja(loop.key)})) | safe }}
|
|
188583
188603
|
${childrenUnderLoop}` : childrenUnderLoop;
|
|
188584
188604
|
const lines = [];
|
|
188585
188605
|
lines.push(`{{ bf.comment("loop:${loop.markerId}") | safe }}`);
|
|
188586
|
-
|
|
188606
|
+
const forHeader = loop.objectIteration === "entries" ? `{% for ${minijinjaIdent(loop.index ?? param)}, ${minijinjaIdent(param)} in ${array}|items %}` : loop.objectIteration === "keys" ? `{% for ${minijinjaIdent(param)}, __bf_v in ${array}|items %}` : loop.objectIteration === "values" ? `{% for __bf_k, ${minijinjaIdent(param)} in ${array}|items %}` : `{% for ${minijinjaIdent(loopVar)} in ${array} %}`;
|
|
188607
|
+
lines.push(forHeader);
|
|
188587
188608
|
for (const il of indexLocalLines)
|
|
188588
188609
|
lines.push(il);
|
|
188589
188610
|
if (loop.filterPredicate) {
|
|
@@ -188655,9 +188676,20 @@ ${childrenUnderLoop}` : childrenUnderLoop;
|
|
|
188655
188676
|
renderComponent(comp) {
|
|
188656
188677
|
const segments = [{ kind: "entries", parts: [] }];
|
|
188657
188678
|
const currentEntries = () => this.componentPropSegmentEntries(segments);
|
|
188679
|
+
const namedSlotSetBlocks = [];
|
|
188658
188680
|
for (const p of comp.props) {
|
|
188659
188681
|
if ((p.name.match(/^on[A-Z]/) || p.name === "ref") && p.value.kind === "expression")
|
|
188660
188682
|
continue;
|
|
188683
|
+
if (p.value.kind === "jsx-children" && p.name !== "children") {
|
|
188684
|
+
const prevInLoop = this.inLoop;
|
|
188685
|
+
this.inLoop = false;
|
|
188686
|
+
const slotBody = this.renderChildren(p.value.children);
|
|
188687
|
+
this.inLoop = prevInLoop;
|
|
188688
|
+
const captureName = `bf_prop_${this.childrenCaptureCounter++}`;
|
|
188689
|
+
namedSlotSetBlocks.push(`{% set ${captureName} %}${slotBody}{% endset %}`);
|
|
188690
|
+
currentEntries().push(`${minijinjaHashKey(p.name)}: ${captureName}`);
|
|
188691
|
+
continue;
|
|
188692
|
+
}
|
|
188661
188693
|
if (p.value.kind === "spread") {
|
|
188662
188694
|
const trimmed = p.value.expr.trim();
|
|
188663
188695
|
if (this.propsObjectName && this.propsObjectName === trimmed) {
|
|
@@ -188686,11 +188718,11 @@ ${childrenUnderLoop}` : childrenUnderLoop;
|
|
|
188686
188718
|
const captureName = `bf_children_${comp.slotId ?? "c" + this.childrenCaptureCounter++}`;
|
|
188687
188719
|
currentEntries().push(`${minijinjaHashKey("children")}: ${captureName}`);
|
|
188688
188720
|
const dict = this.combineComponentPropSegments(segments);
|
|
188689
|
-
return
|
|
188721
|
+
return `${namedSlotSetBlocks.join("")}{% set ${captureName} %}${childrenBody}{% endset %}{{ bf.render_child('${tplName}', ${dict}) | safe }}`;
|
|
188690
188722
|
}
|
|
188691
188723
|
const isEmpty = segments.every((s) => s.kind === "entries" && s.parts.length === 0);
|
|
188692
188724
|
const dictEntries = isEmpty ? "" : `, ${this.combineComponentPropSegments(segments)}`;
|
|
188693
|
-
return
|
|
188725
|
+
return `${namedSlotSetBlocks.join("")}{{ bf.render_child('${tplName}'${dictEntries}) | safe }}`;
|
|
188694
188726
|
}
|
|
188695
188727
|
childrenCaptureCounter = 0;
|
|
188696
188728
|
presenceVarCounter = 0;
|
|
@@ -188735,7 +188767,7 @@ ${alternate}
|
|
|
188735
188767
|
${children}`;
|
|
188736
188768
|
}
|
|
188737
188769
|
elementAttrEmitter = {
|
|
188738
|
-
emitLiteral: (value, name) => `${name}="${value.value}"`,
|
|
188770
|
+
emitLiteral: (value, name) => `${name}="${escapeHtml(value.value)}"`,
|
|
188739
188771
|
emitExpression: (value, name) => {
|
|
188740
188772
|
if (name === "style") {
|
|
188741
188773
|
const css = this.tryLowerStyleObject(value.expr);
|
|
@@ -188843,9 +188875,10 @@ ${name}="{{ bf.string(${val}) }}"
|
|
|
188843
188875
|
let attrName;
|
|
188844
188876
|
if (attr.name === "className")
|
|
188845
188877
|
attrName = "class";
|
|
188846
|
-
else if (attr.name === "key")
|
|
188847
|
-
|
|
188848
|
-
|
|
188878
|
+
else if (attr.name === "key") {
|
|
188879
|
+
const depth = this.currentLoopKeyDepth;
|
|
188880
|
+
attrName = depth > 0 ? `data-key-${depth}` : "data-key";
|
|
188881
|
+
} else
|
|
188849
188882
|
attrName = attr.name;
|
|
188850
188883
|
const lowered = emitAttrValue(attr.value, this.elementAttrEmitter, attrName);
|
|
188851
188884
|
if (lowered)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/adapter/lib/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/adapter/lib/constants.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/C;;;;;;;;GAQG;AACH,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAUnE,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,wBAAwB,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,MAAM,CAG7E,CAAA"}
|
|
@@ -138,6 +138,14 @@ export declare class MinijinjaAdapter extends BaseAdapter implements IRNodeEmitt
|
|
|
138
138
|
private options;
|
|
139
139
|
private errors;
|
|
140
140
|
private inLoop;
|
|
141
|
+
/**
|
|
142
|
+
* `IRLoop.depth` of the loop currently being rendered (save/restore
|
|
143
|
+
* around `renderChildren(loop.children)`, mirroring `inLoop` above).
|
|
144
|
+
* `renderAttributes` reads this to derive the `key` → `data-key`/
|
|
145
|
+
* `data-key-N` suffix — the depth is IR-computed (jsx-to-ir.ts), not
|
|
146
|
+
* re-derived here (#2168 nested-loop-outer-binding).
|
|
147
|
+
*/
|
|
148
|
+
private currentLoopKeyDepth;
|
|
141
149
|
/**
|
|
142
150
|
* SolidJS-style props identifier (`function(props: P)`) and the
|
|
143
151
|
* analyzer-extracted prop names. Stashed at `generate()` entry so the
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"minijinja-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/minijinja-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiHG;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,EAE3B,KAAK,aAAa,EAClB,KAAK,UAAU,EAyBhB,MAAM,iBAAiB,CAAA;AAKxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AA4BpD,YAAY,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AAC7D,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAA;AA8B7D,qBAAa,gBAAiB,SAAQ,WAAY,YAAW,aAAa,CAAC,cAAc,CAAC;IACxF,IAAI,SAAc;IAClB,SAAS,SAAQ;IACjB,qBAAqB,UAAO;IAG5B,kBAAkB,EAAG,cAAc,CAAS;IAE5C;;;;;OAKG;IACH,kBAAkB,EAAE,yBAAyB,CAA2B;IAExE,OAAO,CAAC,aAAa,CAAa;IAClC;;;uCAGmC;IACnC,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,OAAO,CAAmC;IAClD,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,MAAM,CAAiB;IAC/B;;;;;OAKG;IACH,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,iBAAiB,CAAyB;IAClD;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB,CAAyB;IAEjD;;;;;;OAMG;IACH,OAAO,CAAC,kBAAkB,CAAiC;IAE3D;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB,CAAyB;IAEpD;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB,CAAwB;IAEjD;;;;;OAKG;IACH,OAAO,CAAC,cAAc,CAAmC;IAEzD;;;;;;;OAOG;IACH,OAAO,CAAC,qBAAqB,CAAyB;IAEtD,YAAY,OAAO,GAAE,uBAA4B,EAMhD;IAED,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,aAAa,CA4EzE;IAMD,OAAO,CAAC,2BAA2B;IAyBnC;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/B;IAMD,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,cAAc,EAAE,KAAK,EAAE,UAAU,CAAC,cAAc,CAAC,GAAG,MAAM,CAE5F;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,
|
|
1
|
+
{"version":3,"file":"minijinja-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/minijinja-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/build.js
CHANGED
|
@@ -187369,7 +187369,7 @@ function isAriaBooleanAttr(name) {
|
|
|
187369
187369
|
}
|
|
187370
187370
|
|
|
187371
187371
|
// src/adapter/minijinja-adapter.ts
|
|
187372
|
-
import { BF_SLOT, BF_COND, BF_REGION } from "@barefootjs/shared";
|
|
187372
|
+
import { BF_SLOT, BF_COND, BF_REGION, escapeHtml } from "@barefootjs/shared";
|
|
187373
187373
|
|
|
187374
187374
|
// src/adapter/lib/constants.ts
|
|
187375
187375
|
var JINJA_TEMPLATE_PRIMITIVES = {
|
|
@@ -187378,7 +187378,10 @@ var JINJA_TEMPLATE_PRIMITIVES = {
|
|
|
187378
187378
|
Number: { arity: 1, emit: (args) => `bf.number(${args[0]})` },
|
|
187379
187379
|
"Math.floor": { arity: 1, emit: (args) => `bf.floor(${args[0]})` },
|
|
187380
187380
|
"Math.ceil": { arity: 1, emit: (args) => `bf.ceil(${args[0]})` },
|
|
187381
|
-
"Math.round": { arity: 1, emit: (args) => `bf.round(${args[0]})` }
|
|
187381
|
+
"Math.round": { arity: 1, emit: (args) => `bf.round(${args[0]})` },
|
|
187382
|
+
"Math.min": { arity: 2, emit: (args) => `bf.min(${args[0]}, ${args[1]})` },
|
|
187383
|
+
"Math.max": { arity: 2, emit: (args) => `bf.max(${args[0]}, ${args[1]})` },
|
|
187384
|
+
"Math.abs": { arity: 1, emit: (args) => `bf.abs(${args[0]})` }
|
|
187382
187385
|
};
|
|
187383
187386
|
var JINJA_PRIMITIVE_EMIT_MAP = Object.fromEntries(Object.entries(JINJA_TEMPLATE_PRIMITIVES).map(([k, v]) => [k, v.emit]));
|
|
187384
187387
|
|
|
@@ -187544,6 +187547,12 @@ function renderArrayMethod(method, object, args, emit) {
|
|
|
187544
187547
|
const recv = emit(object);
|
|
187545
187548
|
return `bf.trim(${recv})`;
|
|
187546
187549
|
}
|
|
187550
|
+
case "trimStart":
|
|
187551
|
+
case "trimEnd": {
|
|
187552
|
+
const fn = method === "trimStart" ? "trim_start" : "trim_end";
|
|
187553
|
+
const recv = emit(object);
|
|
187554
|
+
return `bf.${fn}(${recv})`;
|
|
187555
|
+
}
|
|
187547
187556
|
case "toFixed": {
|
|
187548
187557
|
const recv = emit(object);
|
|
187549
187558
|
const digits = args.length >= 1 ? emit(args[0]) : "0";
|
|
@@ -187577,6 +187586,12 @@ function renderArrayMethod(method, object, args, emit) {
|
|
|
187577
187586
|
const newS = emit(args[1]);
|
|
187578
187587
|
return `bf.replace(${recv}, ${oldS}, ${newS})`;
|
|
187579
187588
|
}
|
|
187589
|
+
case "replaceAll": {
|
|
187590
|
+
const recv = emit(object);
|
|
187591
|
+
const oldS = emit(args[0]);
|
|
187592
|
+
const newS = emit(args[1]);
|
|
187593
|
+
return `bf.replace_all(${recv}, ${oldS}, ${newS})`;
|
|
187594
|
+
}
|
|
187580
187595
|
case "repeat": {
|
|
187581
187596
|
const recv = emit(object);
|
|
187582
187597
|
const count = args.length === 0 ? "0" : emit(args[0]);
|
|
@@ -187673,6 +187688,7 @@ function renderFlatMethod(recv, depth, emit) {
|
|
|
187673
187688
|
|
|
187674
187689
|
// src/adapter/expr/emitters.ts
|
|
187675
187690
|
import {
|
|
187691
|
+
groupBinaryOperand,
|
|
187676
187692
|
identifierPath,
|
|
187677
187693
|
matchSearchParamsMethodCall,
|
|
187678
187694
|
sortComparatorFromArrow
|
|
@@ -187718,7 +187734,7 @@ class JinjaFilterEmitter {
|
|
|
187718
187734
|
return "none";
|
|
187719
187735
|
return String(value);
|
|
187720
187736
|
}
|
|
187721
|
-
member(object, property, _computed, emit) {
|
|
187737
|
+
member(object, property, _computed, _optional, emit) {
|
|
187722
187738
|
if (property === "length") {
|
|
187723
187739
|
return `bf.length(${emit(object)})`;
|
|
187724
187740
|
}
|
|
@@ -187741,8 +187757,8 @@ class JinjaFilterEmitter {
|
|
|
187741
187757
|
return emit(argument);
|
|
187742
187758
|
}
|
|
187743
187759
|
binary(op, left, right, emit) {
|
|
187744
|
-
const l = emit(left);
|
|
187745
|
-
const r = emit(right);
|
|
187760
|
+
const l = groupBinaryOperand(left, emit(left));
|
|
187761
|
+
const r = groupBinaryOperand(right, emit(right));
|
|
187746
187762
|
const opMap = {
|
|
187747
187763
|
"===": "==",
|
|
187748
187764
|
"!==": "!=",
|
|
@@ -187824,7 +187840,7 @@ class JinjaTopLevelEmitter {
|
|
|
187824
187840
|
return "none";
|
|
187825
187841
|
return String(value);
|
|
187826
187842
|
}
|
|
187827
|
-
member(object, property, _computed, emit) {
|
|
187843
|
+
member(object, property, _computed, _optional, emit) {
|
|
187828
187844
|
if (object.kind === "identifier" && object.name === "props") {
|
|
187829
187845
|
return minijinjaIdent(property);
|
|
187830
187846
|
}
|
|
@@ -187870,8 +187886,8 @@ class JinjaTopLevelEmitter {
|
|
|
187870
187886
|
return emit(argument);
|
|
187871
187887
|
}
|
|
187872
187888
|
binary(op, left, right, emit) {
|
|
187873
|
-
const l = emit(left);
|
|
187874
|
-
const r = emit(right);
|
|
187889
|
+
const l = groupBinaryOperand(left, emit(left));
|
|
187890
|
+
const r = groupBinaryOperand(right, emit(right));
|
|
187875
187891
|
const opMap = {
|
|
187876
187892
|
"===": "==",
|
|
187877
187893
|
"!==": "!=",
|
|
@@ -188251,6 +188267,7 @@ class MinijinjaAdapter extends BaseAdapter {
|
|
|
188251
188267
|
options;
|
|
188252
188268
|
errors = [];
|
|
188253
188269
|
inLoop = false;
|
|
188270
|
+
currentLoopKeyDepth = 0;
|
|
188254
188271
|
propsObjectName = null;
|
|
188255
188272
|
propsParams = [];
|
|
188256
188273
|
booleanTypedProps = new Set;
|
|
@@ -188327,7 +188344,7 @@ class MinijinjaAdapter extends BaseAdapter {
|
|
|
188327
188344
|
return this.renderElement(node);
|
|
188328
188345
|
}
|
|
188329
188346
|
emitText(node) {
|
|
188330
|
-
return node.value;
|
|
188347
|
+
return escapeHtml(node.value);
|
|
188331
188348
|
}
|
|
188332
188349
|
emitExpression(node) {
|
|
188333
188350
|
return this.renderExpression(node);
|
|
@@ -188557,7 +188574,7 @@ ${whenTrue}
|
|
|
188557
188574
|
const renderedChildren = this.renderChildren(loop.children);
|
|
188558
188575
|
const loopVar = loop.iterationShape === "keys" ? "__bf_item" : supportableDestructure ? "__bf_item" : param;
|
|
188559
188576
|
const indexLocalLines = [];
|
|
188560
|
-
if (loop.iterationShape === "keys") {
|
|
188577
|
+
if (loop.objectIteration) {} else if (loop.iterationShape === "keys") {
|
|
188561
188578
|
indexLocalLines.push(`{% set ${minijinjaIdent(param)} = loop.index0 %}`);
|
|
188562
188579
|
} else if (loop.index) {
|
|
188563
188580
|
indexLocalLines.push(`{% set ${minijinjaIdent(loop.index)} = loop.index0 %}`);
|
|
@@ -188577,13 +188594,17 @@ ${whenTrue}
|
|
|
188577
188594
|
}
|
|
188578
188595
|
const prevInLoop = this.inLoop;
|
|
188579
188596
|
this.inLoop = true;
|
|
188597
|
+
const prevLoopKeyDepth = this.currentLoopKeyDepth;
|
|
188598
|
+
this.currentLoopKeyDepth = loop.depth;
|
|
188580
188599
|
const childrenUnderLoop = this.renderChildren(loop.children);
|
|
188600
|
+
this.currentLoopKeyDepth = prevLoopKeyDepth;
|
|
188581
188601
|
this.inLoop = prevInLoop;
|
|
188582
188602
|
const bodyChildren = loop.bodyIsItemConditional && loop.key ? `{{ bf.comment("loop-i:" ~ bf.string(${this.convertExpressionToJinja(loop.key)})) | safe }}
|
|
188583
188603
|
${childrenUnderLoop}` : childrenUnderLoop;
|
|
188584
188604
|
const lines = [];
|
|
188585
188605
|
lines.push(`{{ bf.comment("loop:${loop.markerId}") | safe }}`);
|
|
188586
|
-
|
|
188606
|
+
const forHeader = loop.objectIteration === "entries" ? `{% for ${minijinjaIdent(loop.index ?? param)}, ${minijinjaIdent(param)} in ${array}|items %}` : loop.objectIteration === "keys" ? `{% for ${minijinjaIdent(param)}, __bf_v in ${array}|items %}` : loop.objectIteration === "values" ? `{% for __bf_k, ${minijinjaIdent(param)} in ${array}|items %}` : `{% for ${minijinjaIdent(loopVar)} in ${array} %}`;
|
|
188607
|
+
lines.push(forHeader);
|
|
188587
188608
|
for (const il of indexLocalLines)
|
|
188588
188609
|
lines.push(il);
|
|
188589
188610
|
if (loop.filterPredicate) {
|
|
@@ -188655,9 +188676,20 @@ ${childrenUnderLoop}` : childrenUnderLoop;
|
|
|
188655
188676
|
renderComponent(comp) {
|
|
188656
188677
|
const segments = [{ kind: "entries", parts: [] }];
|
|
188657
188678
|
const currentEntries = () => this.componentPropSegmentEntries(segments);
|
|
188679
|
+
const namedSlotSetBlocks = [];
|
|
188658
188680
|
for (const p of comp.props) {
|
|
188659
188681
|
if ((p.name.match(/^on[A-Z]/) || p.name === "ref") && p.value.kind === "expression")
|
|
188660
188682
|
continue;
|
|
188683
|
+
if (p.value.kind === "jsx-children" && p.name !== "children") {
|
|
188684
|
+
const prevInLoop = this.inLoop;
|
|
188685
|
+
this.inLoop = false;
|
|
188686
|
+
const slotBody = this.renderChildren(p.value.children);
|
|
188687
|
+
this.inLoop = prevInLoop;
|
|
188688
|
+
const captureName = `bf_prop_${this.childrenCaptureCounter++}`;
|
|
188689
|
+
namedSlotSetBlocks.push(`{% set ${captureName} %}${slotBody}{% endset %}`);
|
|
188690
|
+
currentEntries().push(`${minijinjaHashKey(p.name)}: ${captureName}`);
|
|
188691
|
+
continue;
|
|
188692
|
+
}
|
|
188661
188693
|
if (p.value.kind === "spread") {
|
|
188662
188694
|
const trimmed = p.value.expr.trim();
|
|
188663
188695
|
if (this.propsObjectName && this.propsObjectName === trimmed) {
|
|
@@ -188686,11 +188718,11 @@ ${childrenUnderLoop}` : childrenUnderLoop;
|
|
|
188686
188718
|
const captureName = `bf_children_${comp.slotId ?? "c" + this.childrenCaptureCounter++}`;
|
|
188687
188719
|
currentEntries().push(`${minijinjaHashKey("children")}: ${captureName}`);
|
|
188688
188720
|
const dict = this.combineComponentPropSegments(segments);
|
|
188689
|
-
return
|
|
188721
|
+
return `${namedSlotSetBlocks.join("")}{% set ${captureName} %}${childrenBody}{% endset %}{{ bf.render_child('${tplName}', ${dict}) | safe }}`;
|
|
188690
188722
|
}
|
|
188691
188723
|
const isEmpty = segments.every((s) => s.kind === "entries" && s.parts.length === 0);
|
|
188692
188724
|
const dictEntries = isEmpty ? "" : `, ${this.combineComponentPropSegments(segments)}`;
|
|
188693
|
-
return
|
|
188725
|
+
return `${namedSlotSetBlocks.join("")}{{ bf.render_child('${tplName}'${dictEntries}) | safe }}`;
|
|
188694
188726
|
}
|
|
188695
188727
|
childrenCaptureCounter = 0;
|
|
188696
188728
|
presenceVarCounter = 0;
|
|
@@ -188735,7 +188767,7 @@ ${alternate}
|
|
|
188735
188767
|
${children}`;
|
|
188736
188768
|
}
|
|
188737
188769
|
elementAttrEmitter = {
|
|
188738
|
-
emitLiteral: (value, name) => `${name}="${value.value}"`,
|
|
188770
|
+
emitLiteral: (value, name) => `${name}="${escapeHtml(value.value)}"`,
|
|
188739
188771
|
emitExpression: (value, name) => {
|
|
188740
188772
|
if (name === "style") {
|
|
188741
188773
|
const css = this.tryLowerStyleObject(value.expr);
|
|
@@ -188843,9 +188875,10 @@ ${name}="{{ bf.string(${val}) }}"
|
|
|
188843
188875
|
let attrName;
|
|
188844
188876
|
if (attr.name === "className")
|
|
188845
188877
|
attrName = "class";
|
|
188846
|
-
else if (attr.name === "key")
|
|
188847
|
-
|
|
188848
|
-
|
|
188878
|
+
else if (attr.name === "key") {
|
|
188879
|
+
const depth = this.currentLoopKeyDepth;
|
|
188880
|
+
attrName = depth > 0 ? `data-key-${depth}` : "data-key";
|
|
188881
|
+
} else
|
|
188849
188882
|
attrName = attr.name;
|
|
188850
188883
|
const lowered = emitAttrValue(attr.value, this.elementAttrEmitter, attrName);
|
|
188851
188884
|
if (lowered)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conformance-pins.d.ts","sourceRoot":"","sources":["../src/conformance-pins.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;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;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,eAAO,MAAM,eAAe,EAAE,eA6F7B,CAAA"}
|