@barefootjs/hono 0.33.6 → 0.35.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.
@@ -1 +1 @@
1
- {"version":3,"file":"hono-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/hono-adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hono-adapter.d.ts","sourceRoot":"","sources":["../../src/adapter/hono-adapter.ts"],"names":[],"mappings":"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"}
@@ -94,7 +94,7 @@ export default ${this.componentName}` : "";
94
94
  generateImports(ir, componentCode) {
95
95
  const lines = [];
96
96
  const utilImports = [];
97
- for (const util of ["bfComment", "bfText", "bfTextEnd", "serializeHydrationProps"]) {
97
+ for (const util of ["bfComment", "escapeCommentKey", "bfText", "bfTextEnd", "serializeHydrationProps"]) {
98
98
  if (new RegExp(`\\b${util}\\b`).test(componentCode)) {
99
99
  utilImports.push(util);
100
100
  }
@@ -465,7 +465,7 @@ export default ${this.componentName}` : "";
465
465
  if (loop.bodyIsMultiRoot) {
466
466
  safeChildren = `<>{bfComment('loop-i')}${children}</>`;
467
467
  } else if (loop.bodyIsItemConditional && loop.key) {
468
- safeChildren = `<>{bfComment('loop-i:' + String(${loop.key}))}${children}</>`;
468
+ safeChildren = `<>{bfComment('loop-i:' + escapeCommentKey(${loop.key}))}${children}</>`;
469
469
  }
470
470
  let chainedArray = applyHonoLoopChain(loop);
471
471
  const iterMethod = loop.method ?? "map";
@@ -57,4 +57,5 @@ export declare function createPortal(_children: unknown, _container?: unknown, _
57
57
  export declare function isSSRPortal(_element: unknown): boolean;
58
58
  export declare function findSiblingSlot(_el: unknown, _slotSelector: string): null;
59
59
  export declare function cleanupPortalPlaceholder(_portalId: string): void;
60
+ export declare function trackPosition(_update: () => void): () => void;
60
61
  //# sourceMappingURL=client-shim.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client-shim.d.ts","sourceRoot":"","sources":["../src/client-shim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,UAAU,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,MAAM,EACN,MAAM,EAMN,kBAAkB,EAIlB,SAAS,EAGT,UAAU,GACX,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EACV,OAAO,EACP,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,UAAU,EACV,MAAM,EACN,cAAc,EACd,aAAa,EACb,UAAU,EACV,WAAW,EACX,eAAe,GAChB,MAAM,oBAAoB,CAAA;AAQ3B;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC,CAO/E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAKlD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAErE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EACjB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,OAAO,GAChB,OAAO,CAGT;AAYD,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,KAAK,CAEnD;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,CAEjD;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EACrC,OAAO,EAAE,MAAM,CAAC,EAChB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,GAClC,KAAK,CAEP;AACD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,KAAK,CAEnD;AACD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,KAAK,CAE7D;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAEpE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,CAE7C;AACD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,CAE/C;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEzC;AACD,wBAAgB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEvC;AAMD,wBAAgB,YAAY,CAC1B,SAAS,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,OAAO,EACpB,QAAQ,CAAC,EAAE,OAAO,GACjB,KAAK,CAEP;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAEzE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEhE"}
1
+ {"version":3,"file":"client-shim.d.ts","sourceRoot":"","sources":["../src/client-shim.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,UAAU,CAAA;AACtD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAEjD,OAAO,EACL,aAAa,EACb,UAAU,EACV,YAAY,EACZ,MAAM,EACN,MAAM,EAMN,kBAAkB,EAIlB,SAAS,EAGT,UAAU,GACX,MAAM,oBAAoB,CAAA;AAE3B,YAAY,EACV,OAAO,EACP,QAAQ,EACR,MAAM,EACN,IAAI,EACJ,SAAS,EACT,QAAQ,EACR,UAAU,EACV,MAAM,EACN,cAAc,EACd,aAAa,EACb,UAAU,EACV,WAAW,EACX,eAAe,GAChB,MAAM,oBAAoB,CAAA;AAQ3B;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,CAAC,CAAC,GAAG,SAAS,CAAC,CAO/E;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAKlD;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAErE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EACjC,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,EACjB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,OAAO,GAChB,OAAO,CAGT;AAYD,wBAAgB,YAAY,CAAC,CAAC,EAAE,QAAQ,CAAC,EAAE,CAAC,GAAG,KAAK,CAEnD;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,KAAK,CAEjD;AACD,wBAAgB,cAAc,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,EACrC,OAAO,EAAE,MAAM,CAAC,EAChB,GAAG,CAAC,EAAE,CAAC,GAAG,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,GAClC,KAAK,CAEP;AACD,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,KAAK,CAEnD;AACD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,KAAK,CAE7D;AACD,wBAAgB,UAAU,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,CAEpE;AAED,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,CAE7C;AACD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,IAAI,GAAG,IAAI,CAE/C;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEzC;AACD,wBAAgB,KAAK,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAEvC;AAMD,wBAAgB,YAAY,CAC1B,SAAS,EAAE,OAAO,EAClB,UAAU,CAAC,EAAE,OAAO,EACpB,QAAQ,CAAC,EAAE,OAAO,GACjB,KAAK,CAEP;AAED,wBAAgB,WAAW,CAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAEtD;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,CAEzE;AAED,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAEhE;AAMD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI,CAI7D"}
@@ -70,10 +70,14 @@ function findSiblingSlot(_el, _slotSelector) {
70
70
  return null;
71
71
  }
72
72
  function cleanupPortalPlaceholder(_portalId) {}
73
+ function trackPosition(_update) {
74
+ return () => {};
75
+ }
73
76
  export {
74
77
  useContext,
75
78
  unwrap,
76
79
  untrack,
80
+ trackPosition,
77
81
  splitProps,
78
82
  queryHref,
79
83
  provideContextSSR,
package/dist/index.js CHANGED
@@ -94,7 +94,7 @@ export default ${this.componentName}` : "";
94
94
  generateImports(ir, componentCode) {
95
95
  const lines = [];
96
96
  const utilImports = [];
97
- for (const util of ["bfComment", "bfText", "bfTextEnd", "serializeHydrationProps"]) {
97
+ for (const util of ["bfComment", "escapeCommentKey", "bfText", "bfTextEnd", "serializeHydrationProps"]) {
98
98
  if (new RegExp(`\\b${util}\\b`).test(componentCode)) {
99
99
  utilImports.push(util);
100
100
  }
@@ -465,7 +465,7 @@ export default ${this.componentName}` : "";
465
465
  if (loop.bodyIsMultiRoot) {
466
466
  safeChildren = `<>{bfComment('loop-i')}${children}</>`;
467
467
  } else if (loop.bodyIsItemConditional && loop.key) {
468
- safeChildren = `<>{bfComment('loop-i:' + String(${loop.key}))}${children}</>`;
468
+ safeChildren = `<>{bfComment('loop-i:' + escapeCommentKey(${loop.key}))}${children}</>`;
469
469
  }
470
470
  let chainedArray = applyHonoLoopChain(loop);
471
471
  const iterMethod = loop.method ?? "map";
package/dist/utils.d.ts CHANGED
@@ -3,6 +3,22 @@
3
3
  * Same signature as Go template bfComment function.
4
4
  */
5
5
  export declare function bfComment(key: string): import("hono/utils/html").HtmlEscapedString;
6
+ /**
7
+ * Neutralize a value for splicing into `bfComment`'s HTML comment content
8
+ * (#2795 follow-up). `comment`/`bfComment` itself is `<!--bf-${text}-->`
9
+ * with no escaping — fine for every OTHER caller (`cond-start:s0`,
10
+ * `loop:l0`, ...), whose text is entirely compiler-generated marker IDs,
11
+ * but the whole-item-conditional loop's `loop-i:<key>` anchor
12
+ * (`hono-adapter.ts`'s `bodyIsItemConditional` branch) carries a
13
+ * user-controlled key. Standard HTML escaping doesn't help inside a
14
+ * comment — only the literal sequence `-->` terminates it early, and
15
+ * `&`/`<`/`>`/`"`/`'` are not special there. The key's exact text doesn't
16
+ * need to round-trip (the client's `mapArrayAnchored` matches items
17
+ * positionally and by its own JS-computed key, never by re-parsing the
18
+ * anchor `Comment.nodeValue`), so replacing every `-` with the
19
+ * visually-similar U+2010 is sufficient and needs no decoding.
20
+ */
21
+ export declare function escapeCommentKey(value: unknown): string;
6
22
  /**
7
23
  * Output opening comment marker for reactive text expressions.
8
24
  * Renders <!--bf:slotId-->
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,+CAEpC;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,+CAEpC;AAED;;;GAGG;AACH,wBAAgB,SAAS,gDAExB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAsCjH"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,+CAEpC;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGvD;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,MAAM,EAAE,MAAM,+CAEpC;AAED;;;GAGG;AACH,wBAAgB,SAAS,gDAExB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAsCjH"}
package/dist/utils.js CHANGED
@@ -3,6 +3,11 @@ import { raw } from "hono/html";
3
3
  function bfComment(key) {
4
4
  return raw(`<!--bf-${key}-->`);
5
5
  }
6
+ function escapeCommentKey(value) {
7
+ if (value == null)
8
+ return "";
9
+ return String(value).replace(/-/g, "‐");
10
+ }
6
11
  function bfText(slotId) {
7
12
  return raw(`<!--bf:${slotId}-->`);
8
13
  }
@@ -25,6 +30,7 @@ function serializeHydrationProps(props, componentName) {
25
30
  }
26
31
  export {
27
32
  serializeHydrationProps,
33
+ escapeCommentKey,
28
34
  bfTextEnd,
29
35
  bfText,
30
36
  bfComment
package/dist/vite.js CHANGED
@@ -12,6 +12,18 @@ import ts10 from "typescript";
12
12
 
13
13
  // ../jsx/src/expression-parser.ts
14
14
  import ts from "typescript";
15
+
16
+ // ../jsx/src/lowering-registry.ts
17
+ var plugins = [];
18
+ function registerLoweringPlugin(plugin) {
19
+ const existing = plugins.findIndex((p) => p.name === plugin.name);
20
+ if (existing >= 0)
21
+ plugins[existing] = plugin;
22
+ else
23
+ plugins.push(plugin);
24
+ }
25
+
26
+ // ../jsx/src/expression-parser.ts
15
27
  var UNSUPPORTED_METHODS = new Set([
16
28
  "filter",
17
29
  "map",
@@ -358,6 +370,12 @@ class BindingScope {
358
370
  }
359
371
  }
360
372
 
373
+ // ../jsx/src/ir-to-client-js/safe-html.ts
374
+ function safeHtml(expr) {
375
+ return expr;
376
+ }
377
+ var EMPTY_MARKUP = safeHtml("''");
378
+
361
379
  // ../jsx/src/ir-to-client-js/html-template.ts
362
380
  var VOID_ELEMENTS = new Set([
363
381
  "area",
@@ -644,6 +662,7 @@ var CLIENT_EXPORTS = new Set([
644
662
  "isSSRPortal",
645
663
  "findSiblingSlot",
646
664
  "cleanupPortalPlaceholder",
665
+ "trackPosition",
647
666
  "createSearchParams",
648
667
  "queryHref",
649
668
  "formatDate",
@@ -704,7 +723,8 @@ var BROWSER_ONLY_CLIENT_APIS = new Set([
704
723
  "createPortal",
705
724
  "isSSRPortal",
706
725
  "findSiblingSlot",
707
- "cleanupPortalPlaceholder"
726
+ "cleanupPortalPlaceholder",
727
+ "trackPosition"
708
728
  ]);
709
729
  var REACTIVE_PRIMITIVES = new Set([
710
730
  "createSignal",
@@ -1289,18 +1309,6 @@ import ts16 from "typescript";
1289
1309
 
1290
1310
  // ../jsx/src/relocate.ts
1291
1311
  import ts18 from "typescript";
1292
-
1293
- // ../jsx/src/lowering-registry.ts
1294
- var plugins = [];
1295
- function registerLoweringPlugin(plugin) {
1296
- const existing = plugins.findIndex((p) => p.name === plugin.name);
1297
- if (existing >= 0)
1298
- plugins[existing] = plugin;
1299
- else
1300
- plugins.push(plugin);
1301
- }
1302
-
1303
- // ../jsx/src/relocate.ts
1304
1312
  var REGISTRY_SAFE_BINDING_KINDS = new Set([
1305
1313
  "global",
1306
1314
  "module-import",
@@ -2498,7 +2506,7 @@ export default ${this.componentName}` : "";
2498
2506
  generateImports(ir, componentCode) {
2499
2507
  const lines = [];
2500
2508
  const utilImports = [];
2501
- for (const util of ["bfComment", "bfText", "bfTextEnd", "serializeHydrationProps"]) {
2509
+ for (const util of ["bfComment", "escapeCommentKey", "bfText", "bfTextEnd", "serializeHydrationProps"]) {
2502
2510
  if (new RegExp(`\\b${util}\\b`).test(componentCode)) {
2503
2511
  utilImports.push(util);
2504
2512
  }
@@ -2869,7 +2877,7 @@ export default ${this.componentName}` : "";
2869
2877
  if (loop.bodyIsMultiRoot) {
2870
2878
  safeChildren = `<>{bfComment('loop-i')}${children}</>`;
2871
2879
  } else if (loop.bodyIsItemConditional && loop.key) {
2872
- safeChildren = `<>{bfComment('loop-i:' + String(${loop.key}))}${children}</>`;
2880
+ safeChildren = `<>{bfComment('loop-i:' + escapeCommentKey(${loop.key}))}${children}</>`;
2873
2881
  }
2874
2882
  let chainedArray = applyHonoLoopChain(loop);
2875
2883
  const iterMethod = loop.method ?? "map";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@barefootjs/hono",
3
- "version": "0.33.6",
3
+ "version": "0.35.0",
4
4
  "description": "Hono integration for BarefootJS",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -122,7 +122,7 @@
122
122
  },
123
123
  "devDependencies": {
124
124
  "@barefootjs/adapter-tests": "0.1.0",
125
- "@barefootjs/vite": "0.33.6",
125
+ "@barefootjs/vite": "0.35.0",
126
126
  "@types/jsdom": "^27.0.0",
127
127
  "hono": "^4.6.0",
128
128
  "jsdom": "^27.3.0",
@@ -271,7 +271,7 @@ export class HonoAdapter extends JsxAdapter implements IRNodeEmitter<HonoRenderC
271
271
  // Only import bfComment/bfText/bfTextEnd/serializeHydrationProps utilities
272
272
  // that are actually used
273
273
  const utilImports: string[] = []
274
- for (const util of ['bfComment', 'bfText', 'bfTextEnd', 'serializeHydrationProps']) {
274
+ for (const util of ['bfComment', 'escapeCommentKey', 'bfText', 'bfTextEnd', 'serializeHydrationProps']) {
275
275
  if (new RegExp(`\\b${util}\\b`).test(componentCode)) {
276
276
  utilImports.push(util)
277
277
  }
@@ -1035,8 +1035,10 @@ export class HonoAdapter extends JsxAdapter implements IRNodeEmitter<HonoRenderC
1035
1035
  // renders nothing), carrying the key so the client's
1036
1036
  // `mapArrayAnchored` can hydrate every SSR-rendered item by its anchor.
1037
1037
  // `bfComment(k)` emits `<!--bf-${k}-->`, so the `loop-i:` argument
1038
- // yields `<!--bf-loop-i:KEY-->`.
1039
- safeChildren = `<>{bfComment('loop-i:' + String(${loop.key}))}${children}</>`
1038
+ // yields `<!--bf-loop-i:KEY-->`. `escapeCommentKey` (#2795 follow-up)
1039
+ // neutralizes `-` so a key can't spell `-->` and close the comment
1040
+ // early — see its docstring in `utils.ts`.
1041
+ safeChildren = `<>{bfComment('loop-i:' + escapeCommentKey(${loop.key}))}${children}</>`
1040
1042
  }
1041
1043
  // Apply chained `.sort()` / `.filter()` extracted to
1042
1044
  // `loop.sortComparator` / `loop.filterPredicate` (#1448 Tier B).
@@ -183,3 +183,13 @@ export function findSiblingSlot(_el: unknown, _slotSelector: string): null {
183
183
  export function cleanupPortalPlaceholder(_portalId: string): void {
184
184
  // no-op
185
185
  }
186
+
187
+ // ---------------------------------------------------------------------------
188
+ // Floating-element positioning — geometry exists only in the browser
189
+ // ---------------------------------------------------------------------------
190
+
191
+ export function trackPosition(_update: () => void): () => void {
192
+ return () => {
193
+ // no-op
194
+ }
195
+ }
package/src/utils.ts CHANGED
@@ -8,6 +8,26 @@ export function bfComment(key: string) {
8
8
  return raw(`<!--bf-${key}-->`)
9
9
  }
10
10
 
11
+ /**
12
+ * Neutralize a value for splicing into `bfComment`'s HTML comment content
13
+ * (#2795 follow-up). `comment`/`bfComment` itself is `<!--bf-${text}-->`
14
+ * with no escaping — fine for every OTHER caller (`cond-start:s0`,
15
+ * `loop:l0`, ...), whose text is entirely compiler-generated marker IDs,
16
+ * but the whole-item-conditional loop's `loop-i:<key>` anchor
17
+ * (`hono-adapter.ts`'s `bodyIsItemConditional` branch) carries a
18
+ * user-controlled key. Standard HTML escaping doesn't help inside a
19
+ * comment — only the literal sequence `-->` terminates it early, and
20
+ * `&`/`<`/`>`/`"`/`'` are not special there. The key's exact text doesn't
21
+ * need to round-trip (the client's `mapArrayAnchored` matches items
22
+ * positionally and by its own JS-computed key, never by re-parsing the
23
+ * anchor `Comment.nodeValue`), so replacing every `-` with the
24
+ * visually-similar U+2010 is sufficient and needs no decoding.
25
+ */
26
+ export function escapeCommentKey(value: unknown): string {
27
+ if (value == null) return ''
28
+ return String(value).replace(/-/g, '‐')
29
+ }
30
+
11
31
  /**
12
32
  * Output opening comment marker for reactive text expressions.
13
33
  * Renders <!--bf:slotId-->