@barefootjs/mojolicious 0.31.5 → 0.31.7

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.
@@ -1428,7 +1428,8 @@ ${whenTrue}
1428
1428
  message: `Loop array \`${arrayName}\` is a local computed value (\`${arrayConst.value}\`) that the Mojo adapter cannot bind as a template variable — only numeric/string-literal locals inline at their use site.`,
1429
1429
  loc: loop.loc ?? { file: this.componentName + ".tsx", start: { line: 1, column: 0 }, end: { line: 1, column: 0 } },
1430
1430
  suggestion: {
1431
- message: "Pre-compute the array server-side and pass it as a prop, or mark the loop position as @client-only so it runs in JS on the client."
1431
+ message: "Pre-compute the array server-side and pass it as a prop, or mark the loop position as @client-only so it runs in JS on the client.",
1432
+ escape: [{ kind: "prop-precompute" }, { kind: "client-directive" }]
1432
1433
  }
1433
1434
  });
1434
1435
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mojo-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/mojo-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mojo-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/mojo-adapter.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,OAAO,KAAK,EACV,WAAW,EAEX,MAAM,EACN,SAAS,EACT,MAAM,EACN,YAAY,EACZ,aAAa,EACb,MAAM,EACN,WAAW,EACX,UAAU,EACV,MAAM,EACN,aAAa,EACb,UAAU,EACV,OAAO,EAMP,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,aAAa,EAAE,MAAM,gBAAgB,CAAA;AA8BnD,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AACxD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAuCxD,qBAAa,WAAY,SAAQ,WAAY,YAAW,aAAa,CAAC,aAAa,CAAC;IAClF,IAAI,SAAgB;IACpB,SAAS,SAAa;IACtB,qBAAqB,UAAO;IAE5B;;;;;;;;;;;OAWG;IACH,kBAAkB,EAAE,yBAAyB,CAA0B;IAEvE,OAAO,CAAC,aAAa,CAAa;IAClC;;;;wCAIoC;IACpC,OAAO,CAAC,cAAc,CAAyB;IAC/C,OAAO,CAAC,OAAO,CAA8B;IAC7C,OAAO,CAAC,MAAM,CAAsB;IACpC;;;;;;OAMG;IACH,OAAO,CAAC,mBAAmB,CAAI;IAC/B;;;;;;OAMG;IACH,OAAO,CAAC,eAAe,CAAsB;IAC7C,OAAO,CAAC,WAAW,CAAyB;IAC5C,OAAO,CAAC,iBAAiB,CAAyB;IAClD;;;;;;OAMG;IACH,OAAO,CAAC,iBAAiB,CAAyB;IAClD;;;;;OAKG;IACH,OAAO,CAAC,gBAAgB,CAAyB;IACjD;;;;;;;OAOG;IACH,OAAO,CAAC,mBAAmB,CAAyB;IAEpD;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB,CAAwB;IACjD;;;;;;;;;OASG;IACH,OAAO,CAAC,kBAAkB,CAAiC;IAC3D;;;;;;OAMG;IACH,OAAO,CAAC,cAAc,CAAmC;IACzD;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,KAAK,CAAmC;IAChD;;;;;;;;;;;;;;;OAeG;IACH,OAAO,CAAC,qBAAqB,CAAyB;IAEtD,YAAY,OAAO,GAAE,kBAAuB,EAM3C;IAED,QAAQ,CAAC,EAAE,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,aAAa,CAsFzE;IAGD;;;;;OAKG;IACH;;;;;OAKG;IACH;;;;;OAKG;IACH,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAW3C;IAED;;;;OAIG;IACH,8BAA8B,CAC5B,IAAI,EAAE,MAAM,GACX;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAgBlD;IAED;;;;;;;;;;;;OAYG;IACH,OAAO,CAAC,mBAAmB;IAW3B,OAAO,CAAC,0BAA0B;IAQlC,OAAO,CAAC,wBAAwB;IAahC,OAAO,CAAC,2BAA2B;IA4CnC;;;;OAIG;IACH,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE/B;IAMD,WAAW,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,MAAM,CAE1F;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAI7B;IAED,cAAc,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CAEzC;IAED,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,MAAM,CAElG;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,MAAM,CAEpF;IAED,aAAa,CAAC,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,MAAM,CAE9F;IAED,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,MAAM,CAE5F;IAED,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7B;IAED,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,MAAM,CAElG;IAED,YAAY,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,MAAM,CAc5F;IAED,sEAAsE;IACtE,OAAO,CAAC,iBAAiB;IAkBzB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,CAAC,yBAAyB;IAoBjC;;;;;;;OAOG;IACH,OAAO,CAAC,6BAA6B;IAMrC,SAAS,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,KAAK,EAAE,UAAU,CAAC,aAAa,CAAC,GAAG,MAAM,CAEtF;IAMD,aAAa,CAAC,OAAO,EAAE,SAAS,GAAG,MAAM,CAsCxC;IAED;;;;;OAKG;IACH,OAAO,CAAC,wBAAwB;IA2BhC,gBAAgB,CAAC,IAAI,EAAE,YAAY,GAAG,MAAM,CA4B3C;IAMD,iBAAiB,CAAC,IAAI,EAAE,aAAa,GAAG,MAAM,CAsC7C;IAED,OAAO,CAAC,gBAAgB;IAOxB;;;OAGG;IACH,OAAO,CAAC,2BAA2B;IAcnC,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAqS/B;IAMD;;;;;;;;OAQG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CA0CpC;IAED,eAAe,CAAC,IAAI,EAAE,WAAW,GAAG,MAAM,CAmEzC;IAED,OAAO,CAAC,sBAAsB,CAAI;IAElC;+DAC2D;IAC3D,OAAO,CAAC,kBAAkB,CAAI;IAE9B,OAAO,CAAC,cAAc;IAYtB,OAAO,CAAC,iBAAiB;IA0BzB,OAAO,CAAC,cAAc;IAWtB,OAAO,CAAC,UAAU;IAIT,WAAW,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAgB1C;IAMD;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAyNlC;IAED;;;;;;;;;;;OAWG;IACH,OAAO,CAAC,mBAAmB;IAa3B,OAAO,CAAC,gBAAgB;IA0CxB,iBAAiB,CAAC,eAAe,EAAE,MAAM,GAAG,MAAM,CAIjD;IAED,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvC;IAED,gBAAgB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAEvC;IAMD;;;;;OAKG;IACH,OAAO,CAAC,oBAAoB;IAkC5B,OAAO,CAAC,iCAAiC;IAmCzC;;;;;;;OAOG;IACH,OAAO,CAAC,gCAAgC;IAmBxC;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,+BAA+B;IA8BvC;;;;;;;OAOG;IACH,OAAO,KAAK,OAAO,GAUlB;IAED;;;;;OAKG;IACH,OAAO,KAAK,SAAS,GAQpB;IAED,sEAAsE;IACtE,OAAO,KAAK,OAAO,GAElB;IAED,OAAO,CAAC,uBAAuB;IAgF/B;;;;;OAKG;IACH,OAAO,CAAC,sBAAsB;IAI9B;;;;OAIG;IACH;4EACwE;IACxE,OAAO,CAAC,kBAAkB;IAI1B,OAAO,CAAC,gBAAgB;IAcxB,iFAAiF;IACjF,OAAO,CAAC,2BAA2B;CAGpC;AAED,eAAO,MAAM,WAAW,aAAoB,CAAA"}
@@ -1,9 +1,10 @@
1
1
  /**
2
- * Per-fixture build-time contracts for shapes the Mojo adapter
3
- * intentionally refuses to lower. Owned by this module (not by the
4
- * shared fixtures) so adding a new adapter doesn't require touching any
5
- * cross-adapter file. Consumed by this package's own conformance test
6
- * (as `expectedDiagnostics`) and by `bf compat` (issue-URL attribution).
2
+ * Per-fixture build-time contracts for shapes this adapter intentionally
3
+ * refuses to lower. Declared per adapter, not on the shared fixtures, so
4
+ * adding a new adapter never touches a cross-adapter file. Per-fixture
5
+ * rationale lives on each fixture's docstring
6
+ * (`packages/adapter-tests/fixtures/<id>.ts`) and spec/callback-fidelity.md;
7
+ * comments below only mark where this adapter's set diverges from siblings.
7
8
  */
8
9
  import type { ConformancePins } from '@barefootjs/jsx';
9
10
  export declare const conformancePins: ConformancePins;
@@ -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,eAmL7B,CAAA"}
1
+ {"version":3,"file":"conformance-pins.d.ts","sourceRoot":"","sources":["../src/conformance-pins.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AAEtD,eAAO,MAAM,eAAe,EAAE,eAwC7B,CAAA"}
package/dist/index.js CHANGED
@@ -1428,7 +1428,8 @@ ${whenTrue}
1428
1428
  message: `Loop array \`${arrayName}\` is a local computed value (\`${arrayConst.value}\`) that the Mojo adapter cannot bind as a template variable — only numeric/string-literal locals inline at their use site.`,
1429
1429
  loc: loop.loc ?? { file: this.componentName + ".tsx", start: { line: 1, column: 0 }, end: { line: 1, column: 0 } },
1430
1430
  suggestion: {
1431
- message: "Pre-compute the array server-side and pass it as a prop, or mark the loop position as @client-only so it runs in JS on the client."
1431
+ message: "Pre-compute the array server-side and pass it as a prop, or mark the loop position as @client-only so it runs in JS on the client.",
1432
+ escape: [{ kind: "prop-precompute" }, { kind: "client-directive" }]
1432
1433
  }
1433
1434
  });
1434
1435
  }
@@ -1911,15 +1912,22 @@ var conformancePins = {
1911
1912
  "tag-cloud": [{ code: "BF021", severity: "error" }],
1912
1913
  "preamble-cells": [{ code: "BF021", severity: "error" }],
1913
1914
  "static-array-from-props": [
1914
- { code: "BF101", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2321" }
1915
+ {
1916
+ code: "BF101",
1917
+ severity: "error",
1918
+ issue: "https://github.com/piconic-ai/barefootjs/issues/2321"
1919
+ }
1915
1920
  ],
1916
1921
  "static-array-from-props-with-component": [
1917
- { code: "BF101", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2321" }
1918
- ],
1919
- "filter-nested-find-predicate": [
1920
- { code: "BF101", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2320" }
1922
+ {
1923
+ code: "BF101",
1924
+ severity: "error",
1925
+ issue: "https://github.com/piconic-ai/barefootjs/issues/2321"
1926
+ }
1921
1927
  ],
1922
- "date-method-uncatalogued": [{ code: "BF021", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2356" }]
1928
+ "filter-nested-find-predicate": [{ code: "BF101", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2320" }],
1929
+ "date-method-uncatalogued": [{ code: "BF021", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2356" }],
1930
+ "rich-prop-client-read": [{ code: "BF049", severity: "error", issue: "https://github.com/piconic-ai/barefootjs/issues/2648" }]
1923
1931
  };
1924
1932
  // src/render-divergences.ts
1925
1933
  var renderDivergences = {};
@@ -1,15 +1,10 @@
1
1
  /**
2
- * Render-level divergences against the shared conformance corpus
3
- * (Priority-12 edge-case sweep, #2168): fixtures that COMPILE clean on
4
- * this adapter but whose rendered output diverges from the Hono
5
- * reference on real Mojolicious.
6
- *
7
- * Consumed by this package's conformance test (its `skipJsx` set is
8
- * derived from these keys, so the skip list and this declaration can't
9
- * drift) and by `packages/compat`, which publishes the entries in the
10
- * fixture-divergences section of `ui/compat.lock.json` — surfaced on
11
- * the docs compatibility-matrix page. Graduating an entry means fixing
12
- * the adapter (or the shared compiler layer) and deleting the line.
2
+ * Fixtures that compile clean on this adapter but render divergent from the
3
+ * Hono reference on real Mojolicious. The conformance `skipJsx` set and
4
+ * `packages/compat`'s published fixture-divergences both derive from this
5
+ * one object, so the skip list and the declaration can't drift. Keep the
6
+ * file even when the set is empty — the next divergence lands here, not in
7
+ * a re-created file.
13
8
  */
14
9
  import type { RenderDivergences } from '@barefootjs/jsx';
15
10
  export declare const renderDivergences: 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,iBAM/B,CAAA"}
1
+ {"version":3,"file":"render-divergences.d.ts","sourceRoot":"","sources":["../src/render-divergences.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AAExD,eAAO,MAAM,iBAAiB,EAAE,iBAC/B,CAAA"}
package/dist/vite.js CHANGED
@@ -2258,6 +2258,7 @@ var ErrorCodes = {
2258
2258
  COMPONENT_REQUIRED_PROP_MISSING: "BF046",
2259
2259
  JSX_BRANCH_LOCAL_IN_CALLBACK: "BF047",
2260
2260
  SIBLING_COMPONENT_NOT_COMPILED: "BF048",
2261
+ RICH_TYPE_PROP_NOT_HYDRATABLE: "BF049",
2261
2262
  SHARED_PROGRAM_REQUIRED: "BF050",
2262
2263
  WRONG_PACKAGE_IMPORT: "BF051",
2263
2264
  BUILTIN_REQUIRES_IMPORT: "BF054",
@@ -2288,6 +2289,7 @@ var errorMessages = {
2288
2289
  [ErrorCodes.COMPONENT_REQUIRED_PROP_MISSING]: "Built-in component is missing a required prop.",
2289
2290
  [ErrorCodes.JSX_BRANCH_LOCAL_IN_CALLBACK]: "JSX-typed local declared inside an `if`-block cannot be referenced from a callback body (ref / event handler). " + "Render it as a child instead: `<div ref={...}>{local}</div>`.",
2290
2291
  [ErrorCodes.SIBLING_COMPONENT_NOT_COMPILED]: "Referenced component did not compile to a template, so this reference would throw " + "`ReferenceError` at render time. Multi-return JSX dispatch (a `switch` or `if`/`else` " + "chain across multiple JSX-returning branches) cannot compile as a component in a " + `'use client' file. Extract it to a separate non-"use client" file (where it is preserved ` + "verbatim, see #932), or rewrite it as a single-return ternary/conditional chain so the " + "component pipeline can compile it.",
2292
+ [ErrorCodes.RICH_TYPE_PROP_NOT_HYDRATABLE]: "Rich-typed prop cannot cross the bf-p hydration boundary as JSON.",
2291
2293
  [ErrorCodes.SHARED_PROGRAM_REQUIRED]: "Shared ts.Program required for type-based reactivity classification. This source imports a Reactive<T>-branded library (e.g. @barefootjs/form) whose getters cannot be classified by regex alone. Pass `options.program` (built via `createProgramForCorpus`) so the analyzer can resolve the brand through the TypeChecker.",
2292
2294
  [ErrorCodes.WRONG_PACKAGE_IMPORT]: "Import from wrong package.",
2293
2295
  [ErrorCodes.BUILTIN_REQUIRES_IMPORT]: "Built-in <Async> / <Region> must be imported from '@barefootjs/client'. " + "The compiler recognises these tags by their import (not by tag name), " + "so an unimported tag with this name is treated as an undeclared component.",
@@ -2321,6 +2323,8 @@ var HOST_RICH_TYPE_NAMES = new Set([
2321
2323
  "BigInt",
2322
2324
  "Function"
2323
2325
  ]);
2326
+ var JSON_REVIVABLE_RICH_TYPE_NAMES = new Set(["Date", "URL"]);
2327
+ var JSON_UNSAFE_RICH_TYPE_NAMES = new Set([...HOST_RICH_TYPE_NAMES].filter((n) => !JSON_REVIVABLE_RICH_TYPE_NAMES.has(n)));
2324
2328
  function baseTypeName(raw) {
2325
2329
  const idx = raw.indexOf("<");
2326
2330
  return (idx === -1 ? raw : raw.slice(0, idx)).trim();
@@ -6483,7 +6487,8 @@ ${whenTrue}
6483
6487
  message: `Loop array \`${arrayName}\` is a local computed value (\`${arrayConst.value}\`) that the Mojo adapter cannot bind as a template variable — only numeric/string-literal locals inline at their use site.`,
6484
6488
  loc: loop.loc ?? { file: this.componentName + ".tsx", start: { line: 1, column: 0 }, end: { line: 1, column: 0 } },
6485
6489
  suggestion: {
6486
- message: "Pre-compute the array server-side and pass it as a prop, or mark the loop position as @client-only so it runs in JS on the client."
6490
+ message: "Pre-compute the array server-side and pass it as a prop, or mark the loop position as @client-only so it runs in JS on the client.",
6491
+ escape: [{ kind: "prop-precompute" }, { kind: "client-directive" }]
6487
6492
  }
6488
6493
  });
6489
6494
  }
@@ -1,5 +1,5 @@
1
1
  package BarefootJS::Backend::Mojo;
2
- our $VERSION = "0.31.4";
2
+ our $VERSION = "0.31.6";
3
3
  use Mojo::Base -base, -signatures;
4
4
 
5
5
  use Mojo::ByteStream qw(b);
@@ -1,5 +1,5 @@
1
1
  package Mojolicious::Plugin::BarefootJS::DevReload;
2
- our $VERSION = "0.31.4";
2
+ our $VERSION = "0.31.6";
3
3
  use Mojo::Base 'Mojolicious::Plugin', -signatures;
4
4
 
5
5
  =head1 NAME
@@ -1,5 +1,5 @@
1
1
  package Mojolicious::Plugin::BarefootJS;
2
- our $VERSION = "0.31.4";
2
+ our $VERSION = "0.31.6";
3
3
  use Mojo::Base 'Mojolicious::Plugin', -signatures;
4
4
 
5
5
  use Mojo::File qw(path);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@barefootjs/mojolicious",
3
- "version": "0.31.5",
3
+ "version": "0.31.7",
4
4
  "description": "Mojolicious EP template adapter for BarefootJS - generates .html.ep files from IR",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -52,7 +52,7 @@
52
52
  "directory": "packages/adapter-mojolicious"
53
53
  },
54
54
  "dependencies": {
55
- "@barefootjs/shared": "0.31.5"
55
+ "@barefootjs/shared": "0.31.7"
56
56
  },
57
57
  "peerDependencies": {
58
58
  "@barefootjs/jsx": ">=0.2.0",
@@ -70,9 +70,9 @@
70
70
  },
71
71
  "devDependencies": {
72
72
  "@barefootjs/adapter-tests": "0.1.0",
73
- "@barefootjs/jsx": "0.31.5",
74
- "@barefootjs/vite": "0.31.5",
75
- "@barefootjs/client": "0.31.5",
73
+ "@barefootjs/jsx": "0.31.7",
74
+ "@barefootjs/vite": "0.31.7",
75
+ "@barefootjs/client": "0.31.7",
76
76
  "vite": "^6.0.0"
77
77
  }
78
78
  }
@@ -928,6 +928,7 @@ export class MojoAdapter extends BaseAdapter implements IRNodeEmitter<MojoRender
928
928
  suggestion: {
929
929
  message:
930
930
  'Pre-compute the array server-side and pass it as a prop, or mark the loop position as @client-only so it runs in JS on the client.',
931
+ escape: [{ kind: 'prop-precompute' }, { kind: 'client-directive' }],
931
932
  },
932
933
  })
933
934
  }
@@ -1,190 +1,52 @@
1
1
  /**
2
- * Per-fixture build-time contracts for shapes the Mojo adapter
3
- * intentionally refuses to lower. Owned by this module (not by the
4
- * shared fixtures) so adding a new adapter doesn't require touching any
5
- * cross-adapter file. Consumed by this package's own conformance test
6
- * (as `expectedDiagnostics`) and by `bf compat` (issue-URL attribution).
2
+ * Per-fixture build-time contracts for shapes this adapter intentionally
3
+ * refuses to lower. Declared per adapter, not on the shared fixtures, so
4
+ * adding a new adapter never touches a cross-adapter file. Per-fixture
5
+ * rationale lives on each fixture's docstring
6
+ * (`packages/adapter-tests/fixtures/<id>.ts`) and spec/callback-fidelity.md;
7
+ * comments below only mark where this adapter's set diverges from siblings.
7
8
  */
8
9
 
9
10
  import type { ConformancePins } from '@barefootjs/jsx'
10
11
 
11
12
  export const conformancePins: ConformancePins = {
12
- // Off-subset filter predicate (`typeof`) the compiler can't lower; a
13
- // JS-runtime target runs it, a DSL adapter surfaces BF021 + `/* @client */`.
14
- // See spec/callback-fidelity.md.
15
13
  'filter-typeof-predicate': [{ code: 'BF021', severity: 'error' }],
16
14
  'map-array-builder-body': [{ code: 'BF021', severity: 'error' }],
17
15
  'map-array-builder-escaping': [{ code: 'BF021', severity: 'error' }],
18
- // `.fill(value)` mutates the receiver in place — no template lowering
19
- // on any DSL adapter; a JS-runtime target runs it, a DSL adapter
20
- // surfaces BF101 + `/* @client */`. See spec/callback-fidelity.md.
21
16
  'fill-unsupported': [{ code: 'BF101', severity: 'error' }],
22
- // Off-subset `.find()` / `.some()` / `.every()` predicate (`typeof`) the
23
- // compiler can't lower; a JS-runtime target runs it, a DSL adapter
24
- // surfaces BF101 + `/* @client */`. See spec/callback-fidelity.md.
25
17
  'find-typeof-predicate': [{ code: 'BF101', severity: 'error' }],
26
18
  'some-typeof-predicate': [{ code: 'BF101', severity: 'error' }],
27
19
  'every-typeof-predicate': [{ code: 'BF101', severity: 'error' }],
28
- // Off-subset `.reduce()` / `.reduceRight()` body / `.flatMap()`
29
- // projection (`typeof`) the compiler can't lower; a JS-runtime target
30
- // runs it, a DSL adapter surfaces BF101 + `/* @client */`.
31
- // See spec/callback-fidelity.md.
32
20
  'reduce-typeof-body': [{ code: 'BF101', severity: 'error' }],
33
21
  'reduce-right-typeof-body': [{ code: 'BF101', severity: 'error' }],
34
22
  'flatmap-typeof-projection': [{ code: 'BF101', severity: 'error' }],
35
- // JSX-returning `.flatMap()` body carried as structured segments i.e.
36
- // one with STATEMENTS (early returns, consts): a JS runtime executes it
37
- // verbatim; a DSL template runtime can't, so it refuses with BF021 +
38
- // `/* @client */` (pre-gate this emitted an empty loop body — silent
39
- // divergence). A pure PROJECTION body (`flatMap(it => it.tags.map(...))`,
40
- // e.g. the `flatmap-expression-body` fixture) is NOT pinned: it lowers to
41
- // neutral nested-loop IR this adapter templatizes natively.
42
- // See spec/callback-fidelity.md.
23
+ // A pure PROJECTION flatMap body (`flatmap-expression-body`) is NOT pinned
24
+ // it lowers to neutral nested-loop IR this adapter templatizes natively;
25
+ // only the statement-carrying body refuses.
43
26
  'tag-cloud': [{ code: 'BF021', severity: 'error' }],
44
- // A keyed `.map()` row body whose preamble builds a JSX leaf from item
45
- // state (`cells.push(<td>{stateLabel}</td>)`) embedded as `{cells}` — the
46
- // Stage 3 array-builder carrier, jsRuntime-only: a JS runtime runs it
47
- // verbatim (and patches the region on same-key updates, #2389), a DSL
48
- // adapter refuses with BF021 + `/* @client */`. See spec/callback-fidelity.md.
49
27
  'preamble-cells': [{ code: 'BF021', severity: 'error' }],
50
- // `todo-app` / `todo-app-ssr` no longer pinned (#2205) the conformance
51
- // harness now passes `siblingTemplatesRegistered: true` for fixtures with
52
- // sibling `components`, matching `bf build`'s real semantics, so the
53
- // BF103 loop-body cross-template check no longer fires spuriously. (Both
54
- // fixtures are still skipped on this adapter via `render-divergences.ts`
55
- // — #2209 — for an unrelated signal-seeding gap.)
56
- // `static-array-children` no longer pinned (#2208) — `items`'s
57
- // array-literal initializer is now recognized as fully-static
58
- // (`resolveStaticLoopSource`) and inlined as a native Perl
59
- // arrayref/hashref literal in the loop-bound expression, the same way a
60
- // module-scope const's value is already seeded.
61
- // `([emoji, users]) => ...` / `([id, t]) => ...` are plain array-index
62
- // (tuple) destructures, no rest — #2087 Phase B's `segments`-walking
63
- // accessor lowers both to `$__bf_item->[0]` / `$__bf_item->[1]` `my`
64
- // locals like any other fixed binding, so BF104 no longer fires for
65
- // either fixture. Each now hits a DIFFERENT, pre-existing, orthogonal
66
- // gap instead: the loop array (`entries`) is a function-scope local
67
- // const with a computed initializer
68
- // (`Object.entries(props.x ?? {}).filter(...)`) that the adapter can't
69
- // bind as a template variable — see the dedicated `arrayConst` BF101
70
- // check in `renderLoop`. This was always true; it was simply
71
- // unreachable before because BF104 refused the destructure shape first.
28
+ // Refused for the COMPUTED loop array (`const entries = Object.entries(...)
29
+ // .filter(...)`), not the destructure param (that lowers, #2087) — loud
30
+ // BF101 instead of silently iterating an unbound name zero times.
72
31
  'static-array-from-props': [
73
- { code: 'BF101', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2321' },
32
+ {
33
+ code: 'BF101',
34
+ severity: 'error',
35
+ issue: 'https://github.com/piconic-ai/barefootjs/issues/2321',
36
+ },
74
37
  ],
75
- // The BF101 above fires; BF104 no longer does (see above), and BF103
76
- // (sibling-imported `<Tag>` child component in the loop body) no longer
77
- // does either now that the conformance harness passes
78
- // `siblingTemplatesRegistered: true` (#2205).
38
+ // No BF103 pin: the harness registers sibling templates (#2205).
79
39
  'static-array-from-props-with-component': [
80
- { code: 'BF101', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2321' },
40
+ {
41
+ code: 'BF101',
42
+ severity: 'error',
43
+ issue: 'https://github.com/piconic-ai/barefootjs/issues/2321',
44
+ },
81
45
  ],
82
- // #1310 / #2087: rest destructure in .map() callback. All four shapes
83
- // now lower via #2087 Phase B's `segments`-walking accessor:
84
- // - object-rest read via member access (`rest-destructure-object-in-map`):
85
- // `bf->omit($__bf_item, [...exclude keys...])`, `$rest->{flag}` reads
86
- // the residual hashref.
87
- // - object-rest spread onto the root element
88
- // (`rest-destructure-object-spread-in-map`): same `bf->omit(...)`
89
- // residual, forwarded via the existing `bf->spread_attrs($rest)` path.
90
- // - array-rest (`rest-destructure-array-in-map`): `bf->slice($__bf_item,
91
- // N, undef)` — the same runtime helper `.slice()` JS-method calls use.
92
- // - nested rest inside an object pattern (`rest-destructure-nested-in-map`):
93
- // the parent-prefix accessor (`$__bf_item->{cells}`) feeds the same
94
- // `bf->slice(...)` call.
95
- // None of these are pinned here anymore.
96
- // `style-3-signals` / `style-object-dynamic` no longer pinned — a
97
- // `style={{ … }}` object literal now lowers to a CSS string with dynamic
98
- // values interpolated (`background-color:<%= $color %>;padding:8px`) via
99
- // `tryLowerStyleObject` (#1322).
100
- // (`tagged-template-classname` graduated by #2092 — the tag resolves
101
- // through the interleave-tag catalogue and desugars to an untagged
102
- // template literal, so it lowers like any other className template.)
103
- // #2038: a filter predicate containing a nested `.find(...)` callback.
104
- // `find*` returns an element, not a boolean — there is no inline grep
105
- // form, and the emitter used to degrade the call to its receiver.
106
- // The nested `.some` sibling (`filter-nested-callback-predicate`) is
107
- // NOT pinned: Mojo lowers it to a real inline Perl `grep` and must
108
- // render to Hono parity instead.
109
- // Faithful lowering tracked: https://github.com/piconic-ai/barefootjs/issues/2320 (successor to #2038)
110
- 'filter-nested-find-predicate': [
111
- { code: 'BF101', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2320' },
112
- ],
113
- // #1467 demo-corpus context providers (`radio-group`, `accordion`,
114
- // `dialog`, `popover`, `select`, `dropdown-menu`, `combobox`,
115
- // `command`) are no longer pinned — an object-literal provider value
116
- // (`{ open: () => props.open ?? false, onOpenChange: (v) => {…} }`)
117
- // lowers to a Perl hashref via `parseProviderObjectLiteral` (#1897):
118
- // getter members snapshot their body's SSR value, handler /
119
- // function-shaped members lower to `undef`. The command demo's
120
- // `ref={(el) => {…}}` function prop on an imported component is
121
- // skipped at SSR like `on*` handlers.
122
- //
123
- // #1467 Phase 2e: `data-table` is no longer pinned here either — it
124
- // compiles clean (`selected()[index]` → `index-access`,
125
- // `.toFixed(2)` → `bf->to_fixed`, `/* @client */` memo SSR-folded)
126
- // and renders to Hono parity on real Mojolicious. The keyed-loop
127
- // scope-ID divergence (#1896) was fixed by the body-children
128
- // `inLoop` reset (loop-item children get `_bf_slot`); data-table is
129
- // off `skipJsx` entirely and only kept in `skipMarkerConformance`
130
- // below for the shared `/* @client */` keyed-map slot-id elision
131
- // contract (same as `todo-app`), not a render or BF101 gap.
132
- // #1443: `[a, b].filter(Boolean).join(' ')` (the registry Slot's
133
- // shape) now lowers to `bf->join([grep { $_ } @{[$a, $b]}], ' ')`.
134
- // No BF101 expected — pinned positively via the
135
- // `branch-local-filter-join` template-output test below.
136
- //
137
- // #1448 Tier A — JS Array / String methods that the Mojo adapter
138
- // hasn't lowered yet. Each row drops once the corresponding
139
- // method PR lands. Hono / CSR pass these out of the box (they
140
- // evaluate JS at runtime) so the pin only applies here.
141
- //
142
- // `array-includes` / `string-includes` no longer pinned — both
143
- // shapes lower via the shared `array-method` IR + `bf->includes`
144
- // runtime dispatch (#1448 Tier A first PR).
145
- // `array-indexOf` / `array-lastIndexOf` no longer pinned —
146
- // value-equality `bf->index_of` / `bf->last_index_of` helpers
147
- // handle the shape (#1448 Tier A second PR).
148
- // `array-at` no longer pinned — `bf->at` (Mojo) / `bf_at` (Go)
149
- // handle the negative-index lookup (#1448 Tier A third PR).
150
- // `array-concat` no longer pinned — `bf->concat` (Mojo) /
151
- // `bf_concat` (Go) merge two arrays into a new array
152
- // (#1448 Tier A fourth PR).
153
- // `array-slice` no longer pinned — `bf->slice` (Mojo) /
154
- // `bf_slice` (Go) carve out a sub-range with JS-compat
155
- // negative-index / out-of-bounds clamping (#1448 Tier A
156
- // fifth PR).
157
- // `array-reverse` / `array-toReversed` no longer pinned —
158
- // both share the `bf->reverse` / `bf_reverse` helper since
159
- // SSR templates render a snapshot and the JS mutate-vs-new
160
- // distinction has no template-level meaning (#1448 Tier A
161
- // sixth PR).
162
- // `string-toLowerCase` / `string-toUpperCase` no longer pinned —
163
- // Perl's native `lc` / `uc` (Mojo) and pre-existing
164
- // `bf_lower` / `bf_upper` (Go) handle the JS method names
165
- // (#1448 Tier A seventh + eighth PRs).
166
- // `string-trim` no longer pinned — pre-existing `bf_trim`
167
- // (Go) and new `bf->trim` helper (Mojo) handle the strip
168
- // (#1448 Tier A ninth PR, closing out Tier A).
169
- // `.find` / `.findIndex` / `.findLast` / `.findLastIndex` are no longer
170
- // pinned — the Mojo `callbackMethod` predicate arm now lowers them to the
171
- // runtime `bf->find` / `find_index` / `find_last` / `find_last_index` helpers
172
- // (per-element coderef predicate), matching Xslate. `.join` was never
173
- // pinned (handled by `renderArrayMethod`'s `case 'join'`).
174
- // `array-map-function-reference` no longer pinned — a bare-identifier
175
- // `.map(format)` callback now resolves one hop to its declaration
176
- // (`resolveCallbackMethodFunctionReferences`, #2206), the same mechanism
177
- // #2090 established for `.sort(fnref)`.
178
- // `dangerous-inner-html` no longer pinned — a compile-time string-literal
179
- // `dangerouslySetInnerHTML={{ __html: '...' }}` is spliced directly into
180
- // the template as trusted raw text (`resolveDangerousInnerHtml`, #2207).
181
- // A dynamic/signal-derived value now lowers through Mojo EP's `<%== %>` raw
182
- // output (#2319) — `dangerous-inner-html-dynamic` is no longer pinned and
183
- // renders to Hono parity, same as the static case.
184
- // #2273: a method call on a prop typed as a built-in host rich type
185
- // (Date, Map, …) has no catalogued lowering in any adapter — this is a
186
- // compiler-level refusal (`checkRichTypeMethodCalls`, wired ahead of
187
- // `adapter.generate()`), not an adapter-specific gap, so it is pinned
188
- // identically across every adapter package including Hono.
46
+ // Only `.find` is pinned `find*` returns an element, not a boolean, so
47
+ // there's no inline predicate form; the nested-`.some` sibling lowers to a
48
+ // real inline Perl `grep` and must render to Hono parity instead.
49
+ 'filter-nested-find-predicate': [{ code: 'BF101', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2320' }],
189
50
  'date-method-uncatalogued': [{ code: 'BF021', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2356' }],
51
+ 'rich-prop-client-read': [{ code: 'BF049', severity: 'error', issue: 'https://github.com/piconic-ai/barefootjs/issues/2648' }],
190
52
  }
@@ -1,23 +1,13 @@
1
1
  /**
2
- * Render-level divergences against the shared conformance corpus
3
- * (Priority-12 edge-case sweep, #2168): fixtures that COMPILE clean on
4
- * this adapter but whose rendered output diverges from the Hono
5
- * reference on real Mojolicious.
6
- *
7
- * Consumed by this package's conformance test (its `skipJsx` set is
8
- * derived from these keys, so the skip list and this declaration can't
9
- * drift) and by `packages/compat`, which publishes the entries in the
10
- * fixture-divergences section of `ui/compat.lock.json` — surfaced on
11
- * the docs compatibility-matrix page. Graduating an entry means fixing
12
- * the adapter (or the shared compiler layer) and deleting the line.
2
+ * Fixtures that compile clean on this adapter but render divergent from the
3
+ * Hono reference on real Mojolicious. The conformance `skipJsx` set and
4
+ * `packages/compat`'s published fixture-divergences both derive from this
5
+ * one object, so the skip list and the declaration can't drift. Keep the
6
+ * file even when the set is empty — the next divergence lands here, not in
7
+ * a re-created file.
13
8
  */
14
9
 
15
10
  import type { RenderDivergences } from '@barefootjs/jsx'
16
11
 
17
12
  export const renderDivergences: RenderDivergences = {
18
- // `todo-app` / `todo-app-ssr` no longer diverge (#2209) — the shared
19
- // `evaluateSignalInit` (`@barefootjs/jsx`, sandboxed real-JS evaluation
20
- // instead of a fixed regex-shape catalogue) now correctly seeds `todos`
21
- // from `(props.initialTodos ?? []).map(t => ({ ...t, editing: false }))`.
22
-
23
13
  }