@barefootjs/jinja 0.30.5 → 0.31.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/README.md +10 -6
- package/dist/adapter/expr/emitters.d.ts +1 -1
- package/dist/adapter/expr/emitters.d.ts.map +1 -1
- package/dist/adapter/index.js +19 -4
- package/dist/adapter/jinja-adapter.d.ts +4 -5
- package/dist/adapter/jinja-adapter.d.ts.map +1 -1
- package/dist/index.js +21 -7
- package/dist/render-divergences.d.ts.map +1 -1
- package/dist/vite.d.ts +38 -0
- package/dist/vite.d.ts.map +1 -0
- package/dist/vite.js +6742 -0
- package/package.json +22 -9
- package/python/barefootjs/runtime.py +33 -3
- package/src/__tests__/jinja-adapter-unit.test.ts +146 -0
- package/src/__tests__/vite.test.ts +125 -0
- package/src/adapter/expr/emitters.ts +33 -9
- package/src/adapter/jinja-adapter.ts +39 -10
- package/src/render-divergences.ts +13 -15
- package/src/vite.ts +215 -0
- package/dist/build.d.ts +0 -28
- package/dist/build.d.ts.map +0 -1
- package/dist/build.js +0 -189257
- package/src/build.ts +0 -37
package/README.md
CHANGED
|
@@ -48,16 +48,20 @@ satisfy, and the package's own tests under `python/tests/`.
|
|
|
48
48
|
## Usage
|
|
49
49
|
|
|
50
50
|
```ts
|
|
51
|
-
//
|
|
52
|
-
import {
|
|
51
|
+
// vite.config.ts
|
|
52
|
+
import { defineConfig } from 'vite'
|
|
53
|
+
import { barefoot } from '@barefootjs/jinja/vite'
|
|
53
54
|
|
|
54
|
-
export default
|
|
55
|
-
|
|
56
|
-
|
|
55
|
+
export default defineConfig({
|
|
56
|
+
plugins: barefoot({
|
|
57
|
+
components: ['./src/components'],
|
|
58
|
+
templates: './dist/templates',
|
|
59
|
+
}),
|
|
57
60
|
})
|
|
58
61
|
```
|
|
59
62
|
|
|
60
|
-
`
|
|
63
|
+
`vite build` then emits `.jinja` templates + client JS under `templates` /
|
|
64
|
+
Vite's own `build.outDir`. A
|
|
61
65
|
Python host renders a component by constructing a `jinja2.Environment`
|
|
62
66
|
(with `autoescape=True`, `undefined=jinja2.ChainableUndefined`,
|
|
63
67
|
`trim_blocks=True`, `lstrip_blocks=True` — see the adapter header comment
|
|
@@ -74,7 +74,7 @@ export declare class JinjaFilterEmitter implements ParsedExprEmitter {
|
|
|
74
74
|
private readonly localVarMap;
|
|
75
75
|
private readonly isStringName;
|
|
76
76
|
private readonly onUnsupported?;
|
|
77
|
-
constructor(param: string, localVarMap: Map<string, string>, isStringName?: (n: string) => boolean, onUnsupported?: (
|
|
77
|
+
constructor(param: string, localVarMap: Map<string, string>, isStringName?: (n: string) => boolean, onUnsupported?: (message: string, reason?: string) => void);
|
|
78
78
|
identifier(name: string): string;
|
|
79
79
|
literal(value: string | number | boolean | null, literalType: LiteralType): string;
|
|
80
80
|
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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;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;
|
|
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
|
@@ -188305,7 +188305,6 @@ class JinjaAdapter extends BaseAdapter {
|
|
|
188305
188305
|
name = "jinja";
|
|
188306
188306
|
extension = ".jinja";
|
|
188307
188307
|
templatesPerComponent = true;
|
|
188308
|
-
importMapInjection = "html-snippet";
|
|
188309
188308
|
templatePrimitives = JINJA_PRIMITIVE_EMIT_MAP;
|
|
188310
188309
|
componentName = "";
|
|
188311
188310
|
rootScopeNodes = new Set;
|
|
@@ -188352,7 +188351,7 @@ class JinjaAdapter extends BaseAdapter {
|
|
|
188352
188351
|
}
|
|
188353
188352
|
this.rootScopeNodes = collectRootScopeNodes(ir.root);
|
|
188354
188353
|
const templateBody = ir.root.type === "if-statement" ? this.renderIfStatement(ir.root) : this.renderNode(ir.root);
|
|
188355
|
-
const scriptReg = options?.skipScriptRegistration ? "" : this.generateScriptRegistrations(ir, options?.scriptBaseName);
|
|
188354
|
+
const scriptReg = options?.skipScriptRegistration ? "" : this.generateScriptRegistrations(ir, options?.scriptBaseName, options?.scriptAssets, options?.preloadAssets);
|
|
188356
188355
|
const ctxSeed = generateContextConsumerSeed(ir);
|
|
188357
188356
|
const memoSeed = generateDerivedMemoSeed(this.memoCtx, ir);
|
|
188358
188357
|
const template = `${scriptReg}${ctxSeed}${memoSeed}${templateBody}
|
|
@@ -188372,7 +188371,23 @@ class JinjaAdapter extends BaseAdapter {
|
|
|
188372
188371
|
extension: this.extension
|
|
188373
188372
|
};
|
|
188374
188373
|
}
|
|
188375
|
-
generateScriptRegistrations(ir, scriptBaseName) {
|
|
188374
|
+
generateScriptRegistrations(ir, scriptBaseName, scriptAssets, preloadAssets) {
|
|
188375
|
+
if (scriptAssets) {
|
|
188376
|
+
if (scriptAssets.length === 0)
|
|
188377
|
+
return "";
|
|
188378
|
+
const lines2 = [];
|
|
188379
|
+
if (preloadAssets && preloadAssets.length > 0) {
|
|
188380
|
+
preloadAssets.forEach((url, i2) => {
|
|
188381
|
+
lines2.push(`{% set _bf_pre${i2} = bf.register_preload('${url}') %}`);
|
|
188382
|
+
});
|
|
188383
|
+
}
|
|
188384
|
+
scriptAssets.forEach((url, i2) => {
|
|
188385
|
+
lines2.push(`{% set _bf_reg${i2} = bf.register_script('${url}') %}`);
|
|
188386
|
+
});
|
|
188387
|
+
lines2.push("");
|
|
188388
|
+
return lines2.join(`
|
|
188389
|
+
`);
|
|
188390
|
+
}
|
|
188376
188391
|
const hasInteractivity = hasClientInteractivity(ir);
|
|
188377
188392
|
if (!hasInteractivity)
|
|
188378
188393
|
return "";
|
|
@@ -188937,7 +188952,7 @@ ${name}="{{ bf.string(${val}) }}"
|
|
|
188937
188952
|
if (ternaryDict !== null) {
|
|
188938
188953
|
return `{{ bf.spread_attrs(${ternaryDict}) | safe }}`;
|
|
188939
188954
|
}
|
|
188940
|
-
if (/^[A-Za-z_$][\w$]*$/.test(trimmed)) {
|
|
188955
|
+
if (/^[A-Za-z_$][\w$]*$/.test(trimmed) && !this.loopBoundNames.has(trimmed)) {
|
|
188941
188956
|
const localConst = (this.localConstants ?? []).find((c) => c.name === trimmed && !c.isModule);
|
|
188942
188957
|
if (localConst?.value !== undefined) {
|
|
188943
188958
|
const initTrimmed = localConst.value.trim();
|
|
@@ -96,7 +96,6 @@ export declare class JinjaAdapter extends BaseAdapter implements IRNodeEmitter<J
|
|
|
96
96
|
name: string;
|
|
97
97
|
extension: string;
|
|
98
98
|
templatesPerComponent: boolean;
|
|
99
|
-
importMapInjection: 'html-snippet';
|
|
100
99
|
/**
|
|
101
100
|
* Identifier-path callees the Jinja runtime can render in template scope.
|
|
102
101
|
* The relocate pass consults this map to mark matching calls as
|
|
@@ -186,10 +185,10 @@ export declare class JinjaAdapter extends BaseAdapter implements IRNodeEmitter<J
|
|
|
186
185
|
* `staticLoopSourceBoundNames` above: that set is a whole-component
|
|
187
186
|
* union used only to guard static-const inlining (safe to over-suppress
|
|
188
187
|
* there — the fallback is just "don't inline"), whereas the boolean-prop
|
|
189
|
-
* and nullable-optional classification sites
|
|
190
|
-
*
|
|
191
|
-
*
|
|
192
|
-
* the loop too
|
|
188
|
+
* and nullable-optional classification sites (#2488) and `emitSpread`'s
|
|
189
|
+
* local-const fallback (#2489) need to know whether a name is loop-bound
|
|
190
|
+
* AT THIS POSITION, because for those the coarse fallback would silently
|
|
191
|
+
* mis-render a genuine occurrence of the same name outside the loop too.
|
|
193
192
|
*/
|
|
194
193
|
private loopBoundNames;
|
|
195
194
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jinja-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/jinja-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwFG;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,EAgChB,MAAM,iBAAiB,CAAA;AAKxB,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAkCpD,YAAY,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AAEzD,qBAAa,YAAa,SAAQ,WAAY,YAAW,aAAa,CAAC,cAAc,CAAC;IACpF,IAAI,SAAU;IACd,SAAS,SAAW;IACpB,qBAAqB,UAAO;
|
|
1
|
+
{"version":3,"file":"jinja-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/jinja-adapter.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -188305,7 +188305,6 @@ class JinjaAdapter extends BaseAdapter {
|
|
|
188305
188305
|
name = "jinja";
|
|
188306
188306
|
extension = ".jinja";
|
|
188307
188307
|
templatesPerComponent = true;
|
|
188308
|
-
importMapInjection = "html-snippet";
|
|
188309
188308
|
templatePrimitives = JINJA_PRIMITIVE_EMIT_MAP;
|
|
188310
188309
|
componentName = "";
|
|
188311
188310
|
rootScopeNodes = new Set;
|
|
@@ -188352,7 +188351,7 @@ class JinjaAdapter extends BaseAdapter {
|
|
|
188352
188351
|
}
|
|
188353
188352
|
this.rootScopeNodes = collectRootScopeNodes(ir.root);
|
|
188354
188353
|
const templateBody = ir.root.type === "if-statement" ? this.renderIfStatement(ir.root) : this.renderNode(ir.root);
|
|
188355
|
-
const scriptReg = options?.skipScriptRegistration ? "" : this.generateScriptRegistrations(ir, options?.scriptBaseName);
|
|
188354
|
+
const scriptReg = options?.skipScriptRegistration ? "" : this.generateScriptRegistrations(ir, options?.scriptBaseName, options?.scriptAssets, options?.preloadAssets);
|
|
188356
188355
|
const ctxSeed = generateContextConsumerSeed(ir);
|
|
188357
188356
|
const memoSeed = generateDerivedMemoSeed(this.memoCtx, ir);
|
|
188358
188357
|
const template = `${scriptReg}${ctxSeed}${memoSeed}${templateBody}
|
|
@@ -188372,7 +188371,23 @@ class JinjaAdapter extends BaseAdapter {
|
|
|
188372
188371
|
extension: this.extension
|
|
188373
188372
|
};
|
|
188374
188373
|
}
|
|
188375
|
-
generateScriptRegistrations(ir, scriptBaseName) {
|
|
188374
|
+
generateScriptRegistrations(ir, scriptBaseName, scriptAssets, preloadAssets) {
|
|
188375
|
+
if (scriptAssets) {
|
|
188376
|
+
if (scriptAssets.length === 0)
|
|
188377
|
+
return "";
|
|
188378
|
+
const lines2 = [];
|
|
188379
|
+
if (preloadAssets && preloadAssets.length > 0) {
|
|
188380
|
+
preloadAssets.forEach((url, i2) => {
|
|
188381
|
+
lines2.push(`{% set _bf_pre${i2} = bf.register_preload('${url}') %}`);
|
|
188382
|
+
});
|
|
188383
|
+
}
|
|
188384
|
+
scriptAssets.forEach((url, i2) => {
|
|
188385
|
+
lines2.push(`{% set _bf_reg${i2} = bf.register_script('${url}') %}`);
|
|
188386
|
+
});
|
|
188387
|
+
lines2.push("");
|
|
188388
|
+
return lines2.join(`
|
|
188389
|
+
`);
|
|
188390
|
+
}
|
|
188376
188391
|
const hasInteractivity = hasClientInteractivity(ir);
|
|
188377
188392
|
if (!hasInteractivity)
|
|
188378
188393
|
return "";
|
|
@@ -188937,7 +188952,7 @@ ${name}="{{ bf.string(${val}) }}"
|
|
|
188937
188952
|
if (ternaryDict !== null) {
|
|
188938
188953
|
return `{{ bf.spread_attrs(${ternaryDict}) | safe }}`;
|
|
188939
188954
|
}
|
|
188940
|
-
if (/^[A-Za-z_$][\w$]*$/.test(trimmed)) {
|
|
188955
|
+
if (/^[A-Za-z_$][\w$]*$/.test(trimmed) && !this.loopBoundNames.has(trimmed)) {
|
|
188941
188956
|
const localConst = (this.localConstants ?? []).find((c) => c.name === trimmed && !c.isModule);
|
|
188942
188957
|
if (localConst?.value !== undefined) {
|
|
188943
188958
|
const initTrimmed = localConst.value.trim();
|
|
@@ -189261,9 +189276,8 @@ var conformancePins = {
|
|
|
189261
189276
|
};
|
|
189262
189277
|
// src/render-divergences.ts
|
|
189263
189278
|
var renderDivergences = {
|
|
189264
|
-
"aliased-destructured-prop": "aliased destructured prop `{ n: count }` loses its rename — template vars, ssr-defaults, and the props bridge all key off the local name, so the prop is always undefined (https://github.com/piconic-ai/barefootjs/issues/
|
|
189265
|
-
"composite-row-child-aliased-prop": "same
|
|
189266
|
-
"loop-param-shadows-spread-const": "a .map() param shadowing an object const is resolved by `emitSpread` against `localConstants` with no loop-shadow check, so every row spreads the OUTER const instead of the row value (https://github.com/piconic-ai/barefootjs/issues/2489)"
|
|
189279
|
+
"aliased-destructured-prop": "aliased destructured prop `{ n: count }` loses its rename — template vars, ssr-defaults, and the props bridge all key off the local name, so the prop is always undefined (https://github.com/piconic-ai/barefootjs/issues/2524)",
|
|
189280
|
+
"composite-row-child-aliased-prop": "same defect as `aliased-destructured-prop` (#2524), inside a keyed `.map()` loop row: the nested child's renamed prop (`{ n: count }`) is always undefined, so both rows render an empty count (https://github.com/piconic-ai/barefootjs/issues/2524)"
|
|
189267
189281
|
};
|
|
189268
189282
|
export {
|
|
189269
189283
|
renderDivergences,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"render-divergences.d.ts","sourceRoot":"","sources":["../src/render-divergences.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,eAAO,MAAM,iBAAiB,EAAE,
|
|
1
|
+
{"version":3,"file":"render-divergences.d.ts","sourceRoot":"","sources":["../src/render-divergences.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,eAAO,MAAM,iBAAiB,EAAE,iBAsB/B,CAAA"}
|
package/dist/vite.d.ts
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import type { Plugin } from 'vite';
|
|
2
|
+
export interface JinjaViteOptions {
|
|
3
|
+
/** Source directories to scan for `.tsx` components, relative to the
|
|
4
|
+
* Vite project root (or absolute). */
|
|
5
|
+
components: string[];
|
|
6
|
+
/** Where compiled `.jinja` templates and `ssrDefaults` land — relative to
|
|
7
|
+
* the Vite project root (or absolute). This is a backend source
|
|
8
|
+
* directory Python reads, NOT `build.outDir` (Vite's client-asset
|
|
9
|
+
* output). */
|
|
10
|
+
templates: string;
|
|
11
|
+
/**
|
|
12
|
+
* Extra, non-component script entries whose Vite-resolved URL (dev:
|
|
13
|
+
* origin-based; production: content-hashed manifest path) should be
|
|
14
|
+
* exposed to the Python app as a generated JSON asset map — e.g. a
|
|
15
|
+
* hand-written client bootstrap script that isn't a `.tsx` component, so
|
|
16
|
+
* it never goes through core's discovery/`scriptAssets` machinery, but
|
|
17
|
+
* still needs a `<script src="...">` URL only knowable after bundling.
|
|
18
|
+
*
|
|
19
|
+
* Keyed by the identifier the resolved URL should appear under in the
|
|
20
|
+
* generated map; values are entry paths relative to the Vite project
|
|
21
|
+
* root. You must ALSO register the same path as a Rollup entry yourself
|
|
22
|
+
* via stock `build.rollupOptions.input` — this plugin never adds
|
|
23
|
+
* bundling configuration on your behalf; this option only resolves the
|
|
24
|
+
* URL Vite already bundled it to, it doesn't request the bundling.
|
|
25
|
+
*/
|
|
26
|
+
assets?: Record<string, string>;
|
|
27
|
+
/** Output path for the generated JSON asset map, relative to the Vite
|
|
28
|
+
* project root. Default: 'dist/bf-assets.json'. Ignored when `assets`
|
|
29
|
+
* is empty. Placed under `dist/` (already gitignored) rather than
|
|
30
|
+
* committed like Go's `bf_assets.go`: Python reads this file at REQUEST
|
|
31
|
+
* time, so — unlike Go, which must compile a static map into the
|
|
32
|
+
* binary — there is nothing to commit; a fresh copy is generated on
|
|
33
|
+
* every build (dev AND production) and never checked in. */
|
|
34
|
+
assetsOutputFile?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function barefoot(options: JinjaViteOptions): Plugin[];
|
|
37
|
+
export { barefoot as default };
|
|
38
|
+
//# sourceMappingURL=vite.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"vite.d.ts","sourceRoot":"","sources":["../src/vite.ts"],"names":[],"mappings":"AAoEA,OAAO,KAAK,EAAE,MAAM,EAAiC,MAAM,MAAM,CAAA;AAMjE,MAAM,WAAW,gBAAgB;IAC/B;0CACsC;IACtC,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB;;;kBAGc;IACd,SAAS,EAAE,MAAM,CAAA;IACjB;;;;;;;;;;;;;;OAcG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;IAC/B;;;;;;gEAM4D;IAC5D,gBAAgB,CAAC,EAAE,MAAM,CAAA;CAC1B;AAqED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,gBAAgB,GAAG,MAAM,EAAE,CAoC5D;AAED,OAAO,EAAE,QAAQ,IAAI,OAAO,EAAE,CAAA"}
|