@barefootjs/xslate 0.19.0 → 0.20.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/index.js +5 -4
- package/dist/adapter/xslate-adapter.d.ts +8 -5
- package/dist/adapter/xslate-adapter.d.ts.map +1 -1
- package/dist/build.js +5 -4
- package/dist/conformance-pins.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/lib/BarefootJS/Backend/Xslate.pm +1 -1
- package/package.json +3 -3
- package/src/__tests__/xslate-adapter.test.ts +1 -17
- package/src/adapter/xslate-adapter.ts +13 -24
- package/src/conformance-pins.ts +6 -0
package/dist/adapter/index.js
CHANGED
|
@@ -188886,10 +188886,11 @@ ${name}="<: ${val} :>"
|
|
|
188886
188886
|
if (e.kind === "expr" && !isSupported(parseExpression2(e.expr)).supported)
|
|
188887
188887
|
return null;
|
|
188888
188888
|
}
|
|
188889
|
-
|
|
188890
|
-
|
|
188891
|
-
|
|
188892
|
-
|
|
188889
|
+
const args = entries.flatMap((e) => [
|
|
188890
|
+
`'${escapeKolonSingleQuoted(e.cssKey)}'`,
|
|
188891
|
+
e.kind === "literal" ? `'${escapeKolonSingleQuoted(e.value)}'` : this.convertExpressionToKolon(e.expr)
|
|
188892
|
+
]);
|
|
188893
|
+
return `<: $bf.style_object(${args.join(", ")}) | mark_raw :>`;
|
|
188893
188894
|
}
|
|
188894
188895
|
renderAttributes(element) {
|
|
188895
188896
|
const parts = [];
|
|
@@ -235,14 +235,17 @@ export declare class XslateAdapter extends BaseAdapter implements IRNodeEmitter<
|
|
|
235
235
|
*/
|
|
236
236
|
private readonly elementAttrEmitter;
|
|
237
237
|
/**
|
|
238
|
-
* Lower a `style={{ … }}` object literal to a
|
|
239
|
-
*
|
|
240
|
-
*
|
|
238
|
+
* Lower a `style={{ … }}` object literal to a `$bf.style_object(...)` call,
|
|
239
|
+
* e.g. `{ backgroundColor: color }` → `<: $bf.style_object('background-color',
|
|
240
|
+
* $color) | mark_raw :>`. `style_object` is the single oracle-matching
|
|
241
|
+
* sanitizer (ported from Hono's `hasUnsafeStyleValue`): it drops any
|
|
242
|
+
* key:value pair whose value could break out of a CSS declaration and
|
|
243
|
+
* HTML-escapes the rest, so the call is piped through `| mark_raw` (not
|
|
244
|
+
* left to Kolon's own autoescape) to avoid double-encoding the
|
|
245
|
+
* already-safe result (#2261). Returns null when the shape is unsupported
|
|
241
246
|
* or any value can't be lowered (caller falls through to BF101). (#1322)
|
|
242
247
|
*/
|
|
243
248
|
private tryLowerStyleObject;
|
|
244
|
-
/** HTML-attribute escape for static text inlined into a `"..."` attribute. */
|
|
245
|
-
private escapeAttrText;
|
|
246
249
|
private renderAttributes;
|
|
247
250
|
renderScopeMarker(_instanceIdExpr: string): string;
|
|
248
251
|
renderSlotMarker(slotId: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"xslate-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/xslate-adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"xslate-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/xslate-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/build.js
CHANGED
|
@@ -188886,10 +188886,11 @@ ${name}="<: ${val} :>"
|
|
|
188886
188886
|
if (e.kind === "expr" && !isSupported(parseExpression2(e.expr)).supported)
|
|
188887
188887
|
return null;
|
|
188888
188888
|
}
|
|
188889
|
-
|
|
188890
|
-
|
|
188891
|
-
|
|
188892
|
-
|
|
188889
|
+
const args = entries.flatMap((e) => [
|
|
188890
|
+
`'${escapeKolonSingleQuoted(e.cssKey)}'`,
|
|
188891
|
+
e.kind === "literal" ? `'${escapeKolonSingleQuoted(e.value)}'` : this.convertExpressionToKolon(e.expr)
|
|
188892
|
+
]);
|
|
188893
|
+
return `<: $bf.style_object(${args.join(", ")}) | mark_raw :>`;
|
|
188893
188894
|
}
|
|
188894
188895
|
renderAttributes(element) {
|
|
188895
188896
|
const parts = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conformance-pins.d.ts","sourceRoot":"","sources":["../src/conformance-pins.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;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;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,eAAO,MAAM,eAAe,EAAE,eA+G7B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -188886,10 +188886,11 @@ ${name}="<: ${val} :>"
|
|
|
188886
188886
|
if (e.kind === "expr" && !isSupported(parseExpression2(e.expr)).supported)
|
|
188887
188887
|
return null;
|
|
188888
188888
|
}
|
|
188889
|
-
|
|
188890
|
-
|
|
188891
|
-
|
|
188892
|
-
|
|
188889
|
+
const args = entries.flatMap((e) => [
|
|
188890
|
+
`'${escapeKolonSingleQuoted(e.cssKey)}'`,
|
|
188891
|
+
e.kind === "literal" ? `'${escapeKolonSingleQuoted(e.value)}'` : this.convertExpressionToKolon(e.expr)
|
|
188892
|
+
]);
|
|
188893
|
+
return `<: $bf.style_object(${args.join(", ")}) | mark_raw :>`;
|
|
188893
188894
|
}
|
|
188894
188895
|
renderAttributes(element) {
|
|
188895
188896
|
const parts = [];
|
|
@@ -189142,7 +189143,8 @@ var conformancePins = {
|
|
|
189142
189143
|
"filter-nested-find-predicate": [
|
|
189143
189144
|
{ code: "BF101", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2038" }
|
|
189144
189145
|
],
|
|
189145
|
-
"dangerous-inner-html-dynamic": [{ code: "BF101", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2215" }]
|
|
189146
|
+
"dangerous-inner-html-dynamic": [{ code: "BF101", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2215" }],
|
|
189147
|
+
"date-method-uncatalogued": [{ code: "BF021", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2274" }]
|
|
189146
189148
|
};
|
|
189147
189149
|
// src/render-divergences.ts
|
|
189148
189150
|
var renderDivergences = {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@barefootjs/xslate",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "Text::Xslate (Kolon) adapter for BarefootJS — compiles IR to .tx templates and ships the Xslate rendering backend; runs under any PSGI/Plack app",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -55,14 +55,14 @@
|
|
|
55
55
|
"directory": "packages/adapter-xslate"
|
|
56
56
|
},
|
|
57
57
|
"dependencies": {
|
|
58
|
-
"@barefootjs/shared": "0.
|
|
58
|
+
"@barefootjs/shared": "0.20.0"
|
|
59
59
|
},
|
|
60
60
|
"peerDependencies": {
|
|
61
61
|
"@barefootjs/jsx": ">=0.2.0"
|
|
62
62
|
},
|
|
63
63
|
"devDependencies": {
|
|
64
64
|
"@barefootjs/adapter-tests": "0.1.0",
|
|
65
|
-
"@barefootjs/jsx": "0.
|
|
65
|
+
"@barefootjs/jsx": "0.20.0",
|
|
66
66
|
"typescript": "^5.0.0"
|
|
67
67
|
}
|
|
68
68
|
}
|
|
@@ -63,23 +63,7 @@ runAdapterConformanceTests({
|
|
|
63
63
|
// #1467 Phase 2e: same `/* @client */` keyed-map elision (data-table).
|
|
64
64
|
'data-table',
|
|
65
65
|
]),
|
|
66
|
-
skipDataPoints: new Set<string>(
|
|
67
|
-
// #2255 — Perl length() counts codepoints under utf8; JS counts
|
|
68
|
-
// UTF-16 code units, so a surrogate-pair character is 2 in JS, 1 here.
|
|
69
|
-
'string-length-text:astral',
|
|
70
|
-
// #2260 — controlled boolean props: the SSR seed evaluates only the
|
|
71
|
-
// static fallback of `props.X ?? internal()` chains.
|
|
72
|
-
'toggle:gen:pressed:true',
|
|
73
|
-
'switch:gen:checked:true',
|
|
74
|
-
'checkbox:gen:checked:true',
|
|
75
|
-
// #2261 — invalid dynamic CSS value kept (escaped) where the oracle
|
|
76
|
-
// drops the property.
|
|
77
|
-
'style-object-dynamic:gen:color:markup',
|
|
78
|
-
// #2262 — dynamic `.flat` depth 0/negative violates the documented
|
|
79
|
-
// shallow-copy contract (shared with the Mojo Perl runtime).
|
|
80
|
-
'array-flat-dynamic-depth:gen:depth:zero',
|
|
81
|
-
'array-flat-dynamic-depth:gen:depth:negative',
|
|
82
|
-
]),
|
|
66
|
+
skipDataPoints: new Set<string>(),
|
|
83
67
|
onRenderError: (err, id) => {
|
|
84
68
|
if (err instanceof XslateNotAvailableError) {
|
|
85
69
|
console.log(`Skipping [${id}]: ${err.message}`)
|
|
@@ -1365,9 +1365,14 @@ export class XslateAdapter extends BaseAdapter implements IRNodeEmitter<XslateRe
|
|
|
1365
1365
|
}
|
|
1366
1366
|
|
|
1367
1367
|
/**
|
|
1368
|
-
* Lower a `style={{ … }}` object literal to a
|
|
1369
|
-
*
|
|
1370
|
-
*
|
|
1368
|
+
* Lower a `style={{ … }}` object literal to a `$bf.style_object(...)` call,
|
|
1369
|
+
* e.g. `{ backgroundColor: color }` → `<: $bf.style_object('background-color',
|
|
1370
|
+
* $color) | mark_raw :>`. `style_object` is the single oracle-matching
|
|
1371
|
+
* sanitizer (ported from Hono's `hasUnsafeStyleValue`): it drops any
|
|
1372
|
+
* key:value pair whose value could break out of a CSS declaration and
|
|
1373
|
+
* HTML-escapes the rest, so the call is piped through `| mark_raw` (not
|
|
1374
|
+
* left to Kolon's own autoescape) to avoid double-encoding the
|
|
1375
|
+
* already-safe result (#2261). Returns null when the shape is unsupported
|
|
1371
1376
|
* or any value can't be lowered (caller falls through to BF101). (#1322)
|
|
1372
1377
|
*/
|
|
1373
1378
|
private tryLowerStyleObject(expr: string): string | null {
|
|
@@ -1376,27 +1381,11 @@ export class XslateAdapter extends BaseAdapter implements IRNodeEmitter<XslateRe
|
|
|
1376
1381
|
for (const e of entries) {
|
|
1377
1382
|
if (e.kind === 'expr' && !isSupported(parseExpression(e.expr)).supported) return null
|
|
1378
1383
|
}
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
return
|
|
1384
|
-
.map(e =>
|
|
1385
|
-
e.kind === 'literal'
|
|
1386
|
-
? `${this.escapeAttrText(e.cssKey)}:${this.escapeAttrText(e.value)}`
|
|
1387
|
-
: `${this.escapeAttrText(e.cssKey)}:<: ${this.convertExpressionToKolon(e.expr)} :>`,
|
|
1388
|
-
)
|
|
1389
|
-
.join(';')
|
|
1390
|
-
}
|
|
1391
|
-
|
|
1392
|
-
/** HTML-attribute escape for static text inlined into a `"..."` attribute. */
|
|
1393
|
-
private escapeAttrText(s: string): string {
|
|
1394
|
-
return s
|
|
1395
|
-
.replace(/&/g, '&')
|
|
1396
|
-
.replace(/"/g, '"')
|
|
1397
|
-
.replace(/'/g, ''')
|
|
1398
|
-
.replace(/</g, '<')
|
|
1399
|
-
.replace(/>/g, '>')
|
|
1384
|
+
const args = entries.flatMap(e => [
|
|
1385
|
+
`'${escapeKolonSingleQuoted(e.cssKey)}'`,
|
|
1386
|
+
e.kind === 'literal' ? `'${escapeKolonSingleQuoted(e.value)}'` : this.convertExpressionToKolon(e.expr),
|
|
1387
|
+
])
|
|
1388
|
+
return `<: $bf.style_object(${args.join(', ')}) | mark_raw :>`
|
|
1400
1389
|
}
|
|
1401
1390
|
|
|
1402
1391
|
private renderAttributes(element: IRElement): string {
|
package/src/conformance-pins.ts
CHANGED
|
@@ -113,4 +113,10 @@ export const conformancePins: ConformancePins = {
|
|
|
113
113
|
// A dynamic/signal-derived value still refuses with BF101 — see the
|
|
114
114
|
// `dangerous-inner-html-dynamic` fixture/pin below (tracked: #2215).
|
|
115
115
|
'dangerous-inner-html-dynamic': [{ code: 'BF101', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2215' }],
|
|
116
|
+
// #2273: a method call on a prop typed as a built-in host rich type
|
|
117
|
+
// (Date, Map, …) has no catalogued lowering in any adapter — this is a
|
|
118
|
+
// compiler-level refusal (`checkRichTypeMethodCalls`, wired ahead of
|
|
119
|
+
// `adapter.generate()`), not an adapter-specific gap, so it is pinned
|
|
120
|
+
// identically across every adapter package including Hono.
|
|
121
|
+
'date-method-uncatalogued': [{ code: 'BF021', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2274' }],
|
|
116
122
|
}
|