hyperframes 0.7.23 → 0.7.25

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.
@@ -5,7 +5,7 @@
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
6
6
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
7
7
  <title>HyperFrames Studio</title>
8
- <script type="module" crossorigin src="/assets/index-B8XMgbWF.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-HBY-OdAh.js"></script>
9
9
  <link rel="stylesheet" crossorigin href="/assets/index-DmkOvZns.css">
10
10
  </head>
11
11
  <body>
@@ -22442,6 +22442,7 @@ function runResolverShadow(session, hfId, ops, sourceContent) {
22442
22442
  const mismatches = sdkResolverShadowCheck(session, hfId, ops, sourceContent);
22443
22443
  if (mismatches.length === 0) return;
22444
22444
  const isElementNotFound = mismatches.some((m) => m.kind === "element_not_found");
22445
+ const strictCount = isElementNotFound && sourceContent !== void 0 ? countHfIdInSource(sourceContent, hfId) : void 0;
22445
22446
  trackStudioEvent("sdk_resolver_shadow", {
22446
22447
  hfId,
22447
22448
  // sessionElementCount > 0 + element_not_found = runtime-only element;
@@ -22452,11 +22453,11 @@ function runResolverShadow(session, hfId, ops, sourceContent) {
22452
22453
  // instance; =1 = single static node the SDK parse dropped (foreign-content
22453
22454
  // exclusion / sub-comp inlining gap); =0 = the runtime-node filter above
22454
22455
  // uses a loose substring match (biased toward keeping signal) while this
22455
- // count uses a strict attribute match — an emitted event with count 0
22456
- // means hfId appeared in source as plain text (e.g. a class name, comment,
22457
- // or script string) but never as a data-hf-id attribute. Treat 0 as "not
22458
- // a genuine attribute occurrence," not as a contradiction.
22459
- ...isElementNotFound && sourceContent !== void 0 ? { sourceHfIdCount: countHfIdInSource(sourceContent, hfId) } : {},
22456
+ // count uses a strict attribute match — see sourceLooseMatchOnly below.
22457
+ ...strictCount !== void 0 ? { sourceHfIdCount: strictCount } : {},
22458
+ // Loose suppression check matched (kept this event) but the strict
22459
+ // attribute count came back 0 see the sourceHfIdCount comment above.
22460
+ ...strictCount === 0 ? { sourceLooseMatchOnly: true } : {},
22460
22461
  mismatchCount: mismatches.length,
22461
22462
  mismatches: JSON.stringify(redactMismatches(mismatches))
22462
22463
  });
@@ -22478,6 +22479,7 @@ async function recordResolverParity(session, hfId, opLabel, readSource) {
22478
22479
  }
22479
22480
  }
22480
22481
  if (source !== void 0 && !source.includes(hfId)) return;
22482
+ const strictCount = source !== void 0 ? countHfIdInSource(source, hfId) : void 0;
22481
22483
  trackStudioEvent("sdk_resolver_shadow", {
22482
22484
  hfId,
22483
22485
  opLabel,
@@ -22486,7 +22488,13 @@ async function recordResolverParity(session, hfId, opLabel, readSource) {
22486
22488
  // on an emitted (non-suppressed) event — the suppression check above is a
22487
22489
  // loose substring match (biased toward keeping signal); see the longer
22488
22490
  // comment on this field in runResolverShadow for the full explanation.
22489
- ...source !== void 0 ? { sourceHfIdCount: countHfIdInSource(source, hfId) } : {},
22491
+ ...strictCount !== void 0 ? { sourceHfIdCount: strictCount } : {},
22492
+ // Loose suppression check matched (kept this event) but the strict
22493
+ // attribute count came back 0 — hfId appeared as plain text (class name,
22494
+ // comment, script string) but never as a data-hf-id="..." attribute.
22495
+ // Lets telemetry consumers filter this cohort without parsing the
22496
+ // sourceHfIdCount comment above.
22497
+ ...strictCount === 0 ? { sourceLooseMatchOnly: true } : {},
22490
22498
  mismatchCount: 1,
22491
22499
  mismatches: JSON.stringify([
22492
22500
  { kind: "element_not_found", hfId }
@@ -22752,12 +22760,13 @@ function sdkGsapTweenPersist(targetPath, op, sdkSession, deps, options) {
22752
22760
  "addGsapTween",
22753
22761
  gsapSrc ? () => gsapSrc(targetPath) : void 0
22754
22762
  );
22755
- } else
22763
+ } else {
22756
22764
  recordAnimationResolverParity(
22757
22765
  sdkSession,
22758
22766
  op.animationId,
22759
22767
  op.kind === "set" ? "setGsapTween" : "removeGsapTween"
22760
22768
  );
22769
+ }
22761
22770
  if (!STUDIO_SDK_CUTOVER_ENABLED) return Promise.resolve(false);
22762
22771
  if (op.kind === "add" && sdkSession && !sdkSession.getElement(op.target))
22763
22772
  return Promise.resolve(false);
@@ -30014,7 +30023,8 @@ function useDomEditSession({
30014
30023
  // SDK persist), but the tripwire is decoupled from cutover — record whether
30015
30024
  // the SDK resolves each reordered element (the reorderElements op's targets).
30016
30025
  onReorderShadow: sdkSession ? (targets) => {
30017
- const reorderSrc = activeCompPath ? () => readProjectFile(activeCompPath) : void 0;
30026
+ let reorderSrcPromise;
30027
+ const reorderSrc = activeCompPath ? () => reorderSrcPromise ??= readProjectFile(activeCompPath) : void 0;
30018
30028
  for (const target of targets)
30019
30029
  void recordResolverParity(sdkSession, target, "reorderElements", reorderSrc);
30020
30030
  } : void 0