@barefootjs/blade 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/blade-adapter.d.ts +9 -7
- package/dist/adapter/blade-adapter.d.ts.map +1 -1
- package/dist/adapter/index.js +5 -4
- package/dist/build.js +5 -4
- package/dist/conformance-pins.d.ts.map +1 -1
- package/dist/index.js +7 -5
- package/package.json +3 -3
- package/src/__tests__/blade-adapter.test.ts +1 -13
- package/src/adapter/blade-adapter.ts +14 -26
- package/src/conformance-pins.ts +6 -0
|
@@ -449,15 +449,17 @@ export declare class BladeAdapter extends BaseAdapter implements IRNodeEmitter<B
|
|
|
449
449
|
*/
|
|
450
450
|
private readonly elementAttrEmitter;
|
|
451
451
|
/**
|
|
452
|
-
* Lower a `style={{ … }}` object literal to a
|
|
453
|
-
*
|
|
454
|
-
*
|
|
455
|
-
*
|
|
456
|
-
*
|
|
452
|
+
* Lower a `style={{ … }}` object literal to a `$bf->style_object(...)`
|
|
453
|
+
* call, e.g. `{ backgroundColor: color }` → `{!! $bf->style_object(
|
|
454
|
+
* 'background-color', $color) !!}`. `style_object` is the single
|
|
455
|
+
* oracle-matching sanitizer (ported from Hono's `hasUnsafeStyleValue`): it
|
|
456
|
+
* drops any key:value pair whose value could break out of a CSS
|
|
457
|
+
* declaration and HTML-escapes the rest, so the call is wrapped in `{!! !!}`
|
|
458
|
+
* (not `{{ }}`) to avoid Blade's own auto-escaping double-encoding the
|
|
459
|
+
* already-safe result (#2261). Returns null when the shape is unsupported
|
|
460
|
+
* or any value can't be lowered (caller falls through to BF101). (#1322)
|
|
457
461
|
*/
|
|
458
462
|
private tryLowerStyleObject;
|
|
459
|
-
/** HTML-attribute escape for static text inlined into a `"..."` attribute. */
|
|
460
|
-
private escapeAttrText;
|
|
461
463
|
private renderAttributes;
|
|
462
464
|
renderScopeMarker(_instanceIdExpr: string): string;
|
|
463
465
|
renderSlotMarker(slotId: string): string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"blade-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/blade-adapter.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"blade-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/blade-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/adapter/index.js
CHANGED
|
@@ -188911,10 +188911,11 @@ ${name}="{!! e($bf->string(${val})) !!}"
|
|
|
188911
188911
|
if (e.kind === "expr" && !isSupported(parseExpression2(e.expr)).supported)
|
|
188912
188912
|
return null;
|
|
188913
188913
|
}
|
|
188914
|
-
|
|
188915
|
-
|
|
188916
|
-
|
|
188917
|
-
|
|
188914
|
+
const args = entries.flatMap((e) => [
|
|
188915
|
+
`'${escapeBladeSingleQuoted(e.cssKey)}'`,
|
|
188916
|
+
e.kind === "literal" ? `'${escapeBladeSingleQuoted(e.value)}'` : this.convertExpressionToBlade(e.expr)
|
|
188917
|
+
]);
|
|
188918
|
+
return `{!! $bf->style_object(${args.join(", ")}) !!}`;
|
|
188918
188919
|
}
|
|
188919
188920
|
renderAttributes(element) {
|
|
188920
188921
|
const parts = [];
|
package/dist/build.js
CHANGED
|
@@ -188911,10 +188911,11 @@ ${name}="{!! e($bf->string(${val})) !!}"
|
|
|
188911
188911
|
if (e.kind === "expr" && !isSupported(parseExpression2(e.expr)).supported)
|
|
188912
188912
|
return null;
|
|
188913
188913
|
}
|
|
188914
|
-
|
|
188915
|
-
|
|
188916
|
-
|
|
188917
|
-
|
|
188914
|
+
const args = entries.flatMap((e) => [
|
|
188915
|
+
`'${escapeBladeSingleQuoted(e.cssKey)}'`,
|
|
188916
|
+
e.kind === "literal" ? `'${escapeBladeSingleQuoted(e.value)}'` : this.convertExpressionToBlade(e.expr)
|
|
188917
|
+
]);
|
|
188918
|
+
return `{!! $bf->style_object(${args.join(", ")}) !!}`;
|
|
188918
188919
|
}
|
|
188919
188920
|
renderAttributes(element) {
|
|
188920
188921
|
const parts = [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conformance-pins.d.ts","sourceRoot":"","sources":["../src/conformance-pins.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;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;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,eAAO,MAAM,eAAe,EAAE,eAkF7B,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -188911,10 +188911,11 @@ ${name}="{!! e($bf->string(${val})) !!}"
|
|
|
188911
188911
|
if (e.kind === "expr" && !isSupported(parseExpression2(e.expr)).supported)
|
|
188912
188912
|
return null;
|
|
188913
188913
|
}
|
|
188914
|
-
|
|
188915
|
-
|
|
188916
|
-
|
|
188917
|
-
|
|
188914
|
+
const args = entries.flatMap((e) => [
|
|
188915
|
+
`'${escapeBladeSingleQuoted(e.cssKey)}'`,
|
|
188916
|
+
e.kind === "literal" ? `'${escapeBladeSingleQuoted(e.value)}'` : this.convertExpressionToBlade(e.expr)
|
|
188917
|
+
]);
|
|
188918
|
+
return `{!! $bf->style_object(${args.join(", ")}) !!}`;
|
|
188918
188919
|
}
|
|
188919
188920
|
renderAttributes(element) {
|
|
188920
188921
|
const parts = [];
|
|
@@ -189184,7 +189185,8 @@ var conformancePins = {
|
|
|
189184
189185
|
"filter-nested-find-predicate": [
|
|
189185
189186
|
{ code: "BF101", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2038" }
|
|
189186
189187
|
],
|
|
189187
|
-
"dangerous-inner-html-dynamic": [{ code: "BF101", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2215" }]
|
|
189188
|
+
"dangerous-inner-html-dynamic": [{ code: "BF101", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2215" }],
|
|
189189
|
+
"date-method-uncatalogued": [{ code: "BF021", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2274" }]
|
|
189188
189190
|
};
|
|
189189
189191
|
// src/render-divergences.ts
|
|
189190
189192
|
var renderDivergences = {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@barefootjs/blade",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.20.0",
|
|
4
4
|
"description": "Laravel Blade (PHP) adapter for BarefootJS — compiles IR to .blade.php templates and ships the PHP BarefootJS rendering runtime on illuminate/view standalone",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -54,14 +54,14 @@
|
|
|
54
54
|
"directory": "packages/adapter-blade"
|
|
55
55
|
},
|
|
56
56
|
"dependencies": {
|
|
57
|
-
"@barefootjs/shared": "0.
|
|
57
|
+
"@barefootjs/shared": "0.20.0"
|
|
58
58
|
},
|
|
59
59
|
"peerDependencies": {
|
|
60
60
|
"@barefootjs/jsx": ">=0.2.0"
|
|
61
61
|
},
|
|
62
62
|
"devDependencies": {
|
|
63
63
|
"@barefootjs/adapter-tests": "0.1.0",
|
|
64
|
-
"@barefootjs/jsx": "0.
|
|
64
|
+
"@barefootjs/jsx": "0.20.0",
|
|
65
65
|
"typescript": "^5.0.0"
|
|
66
66
|
}
|
|
67
67
|
}
|
|
@@ -50,19 +50,7 @@ runAdapterConformanceTests({
|
|
|
50
50
|
// Same `/* @client */` keyed-map elision (data-table).
|
|
51
51
|
'data-table',
|
|
52
52
|
]),
|
|
53
|
-
skipDataPoints: new Set<string>(
|
|
54
|
-
// #2255 — PHP mb_strlen counts codepoints; JS counts UTF-16 code
|
|
55
|
-
// units, so a surrogate-pair character is 2 in JS, 1 here.
|
|
56
|
-
'string-length-text:astral',
|
|
57
|
-
// #2260 — controlled boolean props: the SSR seed evaluates only the
|
|
58
|
-
// static fallback of `props.X ?? internal()` chains.
|
|
59
|
-
'toggle:gen:pressed:true',
|
|
60
|
-
'switch:gen:checked:true',
|
|
61
|
-
'checkbox:gen:checked:true',
|
|
62
|
-
// #2261 — invalid dynamic CSS value kept (escaped) where the oracle
|
|
63
|
-
// drops the property.
|
|
64
|
-
'style-object-dynamic:gen:color:markup',
|
|
65
|
-
]),
|
|
53
|
+
skipDataPoints: new Set<string>(),
|
|
66
54
|
onRenderError: (err, id) => {
|
|
67
55
|
if (err instanceof BladeNotAvailableError) {
|
|
68
56
|
console.log(`Skipping [${id}]: ${err.message}`)
|
|
@@ -1581,11 +1581,15 @@ export class BladeAdapter extends BaseAdapter implements IRNodeEmitter<BladeRend
|
|
|
1581
1581
|
}
|
|
1582
1582
|
|
|
1583
1583
|
/**
|
|
1584
|
-
* Lower a `style={{ … }}` object literal to a
|
|
1585
|
-
*
|
|
1586
|
-
*
|
|
1587
|
-
*
|
|
1588
|
-
*
|
|
1584
|
+
* Lower a `style={{ … }}` object literal to a `$bf->style_object(...)`
|
|
1585
|
+
* call, e.g. `{ backgroundColor: color }` → `{!! $bf->style_object(
|
|
1586
|
+
* 'background-color', $color) !!}`. `style_object` is the single
|
|
1587
|
+
* oracle-matching sanitizer (ported from Hono's `hasUnsafeStyleValue`): it
|
|
1588
|
+
* drops any key:value pair whose value could break out of a CSS
|
|
1589
|
+
* declaration and HTML-escapes the rest, so the call is wrapped in `{!! !!}`
|
|
1590
|
+
* (not `{{ }}`) to avoid Blade's own auto-escaping double-encoding the
|
|
1591
|
+
* already-safe result (#2261). Returns null when the shape is unsupported
|
|
1592
|
+
* or any value can't be lowered (caller falls through to BF101). (#1322)
|
|
1589
1593
|
*/
|
|
1590
1594
|
private tryLowerStyleObject(expr: string): string | null {
|
|
1591
1595
|
const entries = parseStyleObjectEntries(expr)
|
|
@@ -1593,27 +1597,11 @@ export class BladeAdapter extends BaseAdapter implements IRNodeEmitter<BladeRend
|
|
|
1593
1597
|
for (const e of entries) {
|
|
1594
1598
|
if (e.kind === 'expr' && !isSupported(parseExpression(e.expr)).supported) return null
|
|
1595
1599
|
}
|
|
1596
|
-
|
|
1597
|
-
|
|
1598
|
-
|
|
1599
|
-
|
|
1600
|
-
return
|
|
1601
|
-
.map(e =>
|
|
1602
|
-
e.kind === 'literal'
|
|
1603
|
-
? `${this.escapeAttrText(e.cssKey)}:${this.escapeAttrText(e.value)}`
|
|
1604
|
-
: `${this.escapeAttrText(e.cssKey)}:{!! e($bf->string(${this.convertExpressionToBlade(e.expr)})) !!}`,
|
|
1605
|
-
)
|
|
1606
|
-
.join(';')
|
|
1607
|
-
}
|
|
1608
|
-
|
|
1609
|
-
/** HTML-attribute escape for static text inlined into a `"..."` attribute. */
|
|
1610
|
-
private escapeAttrText(s: string): string {
|
|
1611
|
-
return s
|
|
1612
|
-
.replace(/&/g, '&')
|
|
1613
|
-
.replace(/"/g, '"')
|
|
1614
|
-
.replace(/'/g, ''')
|
|
1615
|
-
.replace(/</g, '<')
|
|
1616
|
-
.replace(/>/g, '>')
|
|
1600
|
+
const args = entries.flatMap(e => [
|
|
1601
|
+
`'${escapeBladeSingleQuoted(e.cssKey)}'`,
|
|
1602
|
+
e.kind === 'literal' ? `'${escapeBladeSingleQuoted(e.value)}'` : this.convertExpressionToBlade(e.expr),
|
|
1603
|
+
])
|
|
1604
|
+
return `{!! $bf->style_object(${args.join(', ')}) !!}`
|
|
1617
1605
|
}
|
|
1618
1606
|
|
|
1619
1607
|
private renderAttributes(element: IRElement): string {
|
package/src/conformance-pins.ts
CHANGED
|
@@ -86,4 +86,10 @@ export const conformancePins: ConformancePins = {
|
|
|
86
86
|
// A dynamic/signal-derived value still refuses with BF101 — see the
|
|
87
87
|
// `dangerous-inner-html-dynamic` fixture/pin below (tracked: #2215).
|
|
88
88
|
'dangerous-inner-html-dynamic': [{ code: 'BF101', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2215' }],
|
|
89
|
+
// #2273: a method call on a prop typed as a built-in host rich type
|
|
90
|
+
// (Date, Map, …) has no catalogued lowering in any adapter — this is a
|
|
91
|
+
// compiler-level refusal (`checkRichTypeMethodCalls`, wired ahead of
|
|
92
|
+
// `adapter.generate()`), not an adapter-specific gap, so it is pinned
|
|
93
|
+
// identically across every adapter package including Hono.
|
|
94
|
+
'date-method-uncatalogued': [{ code: 'BF021', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2274' }],
|
|
89
95
|
}
|