@barefootjs/blade 0.19.1 → 0.21.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.map +1 -1
- package/dist/adapter/index.js +1 -1
- package/dist/build.js +1 -1
- package/dist/conformance-pins.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/package.json +3 -3
- package/php/src/BladeBackend.php +3 -3
- package/php/tests/test_render.php +15 -0
- package/src/__tests__/blade-adapter-unit.test.ts +39 -0
- package/src/__tests__/blade-adapter.test.ts +1 -7
- package/src/adapter/blade-adapter.ts +4 -1
- package/src/conformance-pins.ts +6 -0
|
@@ -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
|
@@ -188798,7 +188798,7 @@ ${alternate}
|
|
|
188798
188798
|
renderFragment(fragment) {
|
|
188799
188799
|
const children = this.renderChildren(fragment.children);
|
|
188800
188800
|
if (fragment.needsScopeComment) {
|
|
188801
|
-
return `{!! $bf->scope_comment() !!}${children}`;
|
|
188801
|
+
return `{!! $bf->scope_comment() !!}${children}{!! $bf->scope_comment_end() !!}`;
|
|
188802
188802
|
}
|
|
188803
188803
|
return children;
|
|
188804
188804
|
}
|
package/dist/build.js
CHANGED
|
@@ -188798,7 +188798,7 @@ ${alternate}
|
|
|
188798
188798
|
renderFragment(fragment) {
|
|
188799
188799
|
const children = this.renderChildren(fragment.children);
|
|
188800
188800
|
if (fragment.needsScopeComment) {
|
|
188801
|
-
return `{!! $bf->scope_comment() !!}${children}`;
|
|
188801
|
+
return `{!! $bf->scope_comment() !!}${children}{!! $bf->scope_comment_end() !!}`;
|
|
188802
188802
|
}
|
|
188803
188803
|
return children;
|
|
188804
188804
|
}
|
|
@@ -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
|
@@ -188798,7 +188798,7 @@ ${alternate}
|
|
|
188798
188798
|
renderFragment(fragment) {
|
|
188799
188799
|
const children = this.renderChildren(fragment.children);
|
|
188800
188800
|
if (fragment.needsScopeComment) {
|
|
188801
|
-
return `{!! $bf->scope_comment() !!}${children}`;
|
|
188801
|
+
return `{!! $bf->scope_comment() !!}${children}{!! $bf->scope_comment_end() !!}`;
|
|
188802
188802
|
}
|
|
188803
188803
|
return children;
|
|
188804
188804
|
}
|
|
@@ -189185,7 +189185,8 @@ var conformancePins = {
|
|
|
189185
189185
|
"filter-nested-find-predicate": [
|
|
189186
189186
|
{ code: "BF101", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2038" }
|
|
189187
189187
|
],
|
|
189188
|
-
"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" }]
|
|
189189
189190
|
};
|
|
189190
189191
|
// src/render-divergences.ts
|
|
189191
189192
|
var renderDivergences = {};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@barefootjs/blade",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.21.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.21.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.21.0",
|
|
65
65
|
"typescript": "^5.0.0"
|
|
66
66
|
}
|
|
67
67
|
}
|
package/php/src/BladeBackend.php
CHANGED
|
@@ -53,9 +53,9 @@ use Illuminate\View\FileViewFinder;
|
|
|
53
53
|
* `{!! !!}` needed at THAT call site; call sites that receive an ordinary
|
|
54
54
|
* PHP string this runtime does NOT wrap (e.g. `hydration_attrs()`,
|
|
55
55
|
* `text_start()`/`text_end()`, `comment()`, `scope_comment()`,
|
|
56
|
-
* `render_child()`'s return value) must use the
|
|
57
|
-
* raw-echo form instead (mirrors Twig's explicit
|
|
58
|
-
* same call sites). `ENT_QUOTES` emits NAMED entity forms
|
|
56
|
+
* `scope_comment_end()`, `render_child()`'s return value) must use the
|
|
57
|
+
* compiler's `{!! ... !!}` raw-echo form instead (mirrors Twig's explicit
|
|
58
|
+
* `| raw` filter at those same call sites). `ENT_QUOTES` emits NAMED entity forms
|
|
59
59
|
* (`"`/`'`), same byte-form difference as Twig's default escaper
|
|
60
60
|
* relative to Perl/Go/markupsafe's numeric forms (`"`/`'`) -- the
|
|
61
61
|
* adapter-tests harness's `normalizeHTML` canonicalizes entity forms before
|
|
@@ -90,6 +90,21 @@ bf_test('spread_attrs renders raw with sorted keys', function () use ($backend,
|
|
|
90
90
|
bf_assert(str_contains($out, '<span class="c" id="n">'), "got: {$out}");
|
|
91
91
|
});
|
|
92
92
|
|
|
93
|
+
// Fragment-rooted scope comment pair (#2289): `renderFragment`'s Blade
|
|
94
|
+
// output shape -- begin marker, children, end marker -- rendered through
|
|
95
|
+
// real Blade so the `{!! ... !!}` raw-echo form is exercised, not just the
|
|
96
|
+
// underlying PHP methods (see the runtime-level pin in
|
|
97
|
+
// packages/adapter-php/tests/test_scope_comment.php).
|
|
98
|
+
file_put_contents($tmpDir . '/frag.blade.php', '{!! $bf->scope_comment() !!}<span>A</span><span>{{ $count }}</span>{!! $bf->scope_comment_end() !!}');
|
|
99
|
+
|
|
100
|
+
bf_test('fragment scope: begin/end markers pair with the same scope id', function () use ($backend, $tmpDir) {
|
|
101
|
+
$fragBf = new BarefootJS(null, ['backend' => $backend]);
|
|
102
|
+
$fragBf->_scope_id('FragmentDemo_test');
|
|
103
|
+
$out = $backend->render_named('frag', $fragBf, ['count' => 3]);
|
|
104
|
+
bf_assert(str_starts_with($out, '<!--bf-scope:FragmentDemo_test-->'), "expected leading begin marker, got: {$out}");
|
|
105
|
+
bf_assert(str_ends_with($out, '<!--bf-/scope:FragmentDemo_test-->'), "expected trailing end marker, got: {$out}");
|
|
106
|
+
});
|
|
107
|
+
|
|
93
108
|
bf_test('backend unit operations', function () use ($backend) {
|
|
94
109
|
bf_assert_eq($backend->materialize('plain'), 'plain');
|
|
95
110
|
bf_assert_eq($backend->materialize(fn () => 'lazy'), 'lazy');
|
|
@@ -531,3 +531,42 @@ function Widget({ rows }: { rows: { x: string }[] }) {
|
|
|
531
531
|
// `filter-nested-find-predicate` (BF101 via `expectedDiagnostics`) and
|
|
532
532
|
// `filter-nested-callback-predicate-client` (the `/* @client */` suppression
|
|
533
533
|
// twin, which must render clean).
|
|
534
|
+
|
|
535
|
+
// A fragment-rooted component (top-level `<>...</>` return) has no single
|
|
536
|
+
// wrapping element to bound the client's scope query, so `renderFragment`
|
|
537
|
+
// brackets its children with a comment-based scope marker pair instead of
|
|
538
|
+
// element attributes. Without the end marker, a range query anchored on the
|
|
539
|
+
// begin marker has no lower bound and leaks onto later siblings owned by
|
|
540
|
+
// the parent (#2289). Mirrors the hono/xslate/jinja/twig/mojo/go/erb
|
|
541
|
+
// adapters' fix — see `wrapWithScopeComment` in
|
|
542
|
+
// packages/adapter-hono/src/adapter/hono-adapter.ts.
|
|
543
|
+
describe('BladeAdapter - fragment-root scope comment end marker (#2289)', () => {
|
|
544
|
+
test('renderFragment brackets a multi-root fragment with paired begin/end scope_comment calls', () => {
|
|
545
|
+
const { template } = compileAndGenerate(`
|
|
546
|
+
export function ChildFragment() {
|
|
547
|
+
return <><button>add</button><p>hint</p></>
|
|
548
|
+
}
|
|
549
|
+
`)
|
|
550
|
+
expect(template).toContain('{!! $bf->scope_comment() !!}')
|
|
551
|
+
expect(template).toContain('{!! $bf->scope_comment_end() !!}')
|
|
552
|
+
// Begin marker precedes the children; end marker follows the fragment's
|
|
553
|
+
// last top-level node -- both read the same `$bf->_scope_id()` at
|
|
554
|
+
// render time, so the emitted scope ids are identical by construction.
|
|
555
|
+
const beginIdx = template.indexOf('$bf->scope_comment() !!')
|
|
556
|
+
const buttonIdx = template.indexOf('<button>')
|
|
557
|
+
const pIdx = template.indexOf('<p>')
|
|
558
|
+
const endIdx = template.indexOf('$bf->scope_comment_end() !!')
|
|
559
|
+
expect(beginIdx).toBeLessThan(buttonIdx)
|
|
560
|
+
expect(buttonIdx).toBeLessThan(pIdx)
|
|
561
|
+
expect(pIdx).toBeLessThan(endIdx)
|
|
562
|
+
})
|
|
563
|
+
|
|
564
|
+
test('a non-fragment (single element) root does NOT get scope_comment_end (element attrs bound the scope instead)', () => {
|
|
565
|
+
const { template } = compileAndGenerate(`
|
|
566
|
+
export function Child() {
|
|
567
|
+
return <div>hi</div>
|
|
568
|
+
}
|
|
569
|
+
`)
|
|
570
|
+
expect(template).not.toContain('scope_comment')
|
|
571
|
+
})
|
|
572
|
+
})
|
|
@@ -50,13 +50,7 @@ runAdapterConformanceTests({
|
|
|
50
50
|
// Same `/* @client */` keyed-map elision (data-table).
|
|
51
51
|
'data-table',
|
|
52
52
|
]),
|
|
53
|
-
skipDataPoints: new Set<string>(
|
|
54
|
-
// #2260 — controlled boolean props: the SSR seed evaluates only the
|
|
55
|
-
// static fallback of `props.X ?? internal()` chains.
|
|
56
|
-
'toggle:gen:pressed:true',
|
|
57
|
-
'switch:gen:checked:true',
|
|
58
|
-
'checkbox:gen:checked:true',
|
|
59
|
-
]),
|
|
53
|
+
skipDataPoints: new Set<string>(),
|
|
60
54
|
onRenderError: (err, id) => {
|
|
61
55
|
if (err instanceof BladeNotAvailableError) {
|
|
62
56
|
console.log(`Skipping [${id}]: ${err.message}`)
|
|
@@ -1384,7 +1384,10 @@ export class BladeAdapter extends BaseAdapter implements IRNodeEmitter<BladeRend
|
|
|
1384
1384
|
private renderFragment(fragment: IRFragment): string {
|
|
1385
1385
|
const children = this.renderChildren(fragment.children)
|
|
1386
1386
|
if (fragment.needsScopeComment) {
|
|
1387
|
-
|
|
1387
|
+
// End marker bounds the scope's sibling range — without it, queries
|
|
1388
|
+
// from the fragment scope leak onto later siblings owned by the
|
|
1389
|
+
// parent (#2289).
|
|
1390
|
+
return `{!! $bf->scope_comment() !!}${children}{!! $bf->scope_comment_end() !!}`
|
|
1388
1391
|
}
|
|
1389
1392
|
return children
|
|
1390
1393
|
}
|
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
|
}
|