@hyperframes/core 0.8.142 → 0.8.143

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.
@@ -2,7 +2,7 @@
2
2
  * Timing Compiler
3
3
  *
4
4
  * Shared, pure HTML compilation that normalizes timing attributes.
5
- * Works in both Node.js and browser (regex-based, no DOM).
5
+ * Works in both Node.js and browser without a DOM.
6
6
  *
7
7
  * Guarantees every timed element gets:
8
8
  * - id on media elements when missing
@@ -17,6 +17,7 @@
17
17
  * Relative `data-start` (`intro`, `intro + 0.5`) is not numeric — leave
18
18
  * `data-end` off so extract can resolve the id-ref later.
19
19
  */
20
+ import { scanHtmlOpeningTags, decodeAuthoredAttribute } from "@hyperframes/parsers";
20
21
  import { parseNumeric } from "@hyperframes/parsers/composition-contract";
21
22
  import { parseStrictFiniteTimingNumber, readElementRateSpec, readMediaStart, } from "../runtime/playbackRate.js";
22
23
  // ffprobe precision can differ slightly across local and CI media stacks, so
@@ -36,104 +37,44 @@ export function shouldClampResolvedMediaDuration(tagName, declaredDuration, maxD
36
37
  return tagName === "audio" && shouldClampMediaDuration(declaredDuration, maxDuration);
37
38
  }
38
39
  // ── Helpers ──────────────────────────────────────────────────────────────
39
- function getAttr(tag, attr) {
40
- // `(?<![\w-])` anchors the attribute name to a fresh start. Without it,
41
- // `getAttr(tag, "id")` matches the trailing `id="…"` inside `data-hf-id="…"`
42
- // (and "src" inside `data-src`, etc.) and returns a phantom value. That bug
43
- // made compileTag believe a Studio-stamped `data-hf-id`-only element already
44
- // had an `id`, so it skipped its `hf-video-N` injection — leaving the element
45
- // with no real `el.id`, which the render pipeline keys off of (blank wash).
46
- const match = tag.match(new RegExp(`(?<![\\w-])${attr}=(?:"([^"]+)"|'([^']+)')`));
47
- return match ? (match[1] ?? match[2] ?? null) : null;
40
+ function sourceAttribute(tag, name) {
41
+ return scanHtmlOpeningTags(tag)[0]?.attributes.find((attr) => attr.name === name);
42
+ }
43
+ function getAttr(tag, name) {
44
+ return tagAttrReader(tag).getAttribute(name);
48
45
  }
49
- /** An attribute reader over tag source that decodes the entities the DOM would, for JSON-valued attributes. */
50
46
  function tagAttrReader(tag) {
47
+ const attributes = scanHtmlOpeningTags(tag)[0]?.attributes ?? [];
51
48
  return {
52
49
  getAttribute: (name) => {
53
- const raw = getAttr(tag, name);
54
- return raw && name === "data-automation"
55
- ? raw
56
- .replace(/&quot;/g, '"')
57
- .replace(/&#39;/g, "'")
58
- .replace(/&lt;/g, "<")
59
- .replace(/&gt;/g, ">")
60
- .replace(/&amp;/g, "&")
61
- : raw;
50
+ const attr = attributes.find((attr) => attr.name === name);
51
+ return attr?.kind === "value" ? decodeAuthoredAttribute(attr.value) : null;
62
52
  },
63
53
  };
64
54
  }
65
- function hasAttr(tag, attr) {
66
- return new RegExp(`\\s${attr}(?:\\s|=|>|/)`).test(tag);
55
+ function hasAttr(tag, name) {
56
+ return sourceAttribute(tag, name) !== undefined;
67
57
  }
68
58
  function injectAttr(tag, attr, value) {
69
59
  return tag.replace(/>$/, ` ${attr}="${value}">`);
70
60
  }
71
- function setAttr(tag, attr, value) {
72
- if (!hasAttr(tag, attr))
73
- return injectAttr(tag, attr, value);
74
- return tag.replace(new RegExp(`(${attr}=["'])[^"']*(["'])`), `$1${value}$2`);
61
+ function setAttr(tag, name, value) {
62
+ const attr = sourceAttribute(tag, name);
63
+ if (!attr)
64
+ return injectAttr(tag, name, value);
65
+ return tag.slice(0, attr.start) + `${name}="${value}"` + tag.slice(attr.end);
75
66
  }
76
- // Real media/timing elements never live inside comments, <script>, or <style>.
77
- // The tag regexes below aren't comment-aware, so a comment that merely mentions
78
- // `<video>`/`<audio>` gets rewritten as if it were a real element (issue #1938).
79
- // Mask those inert regions with placeholders (no `<`, so the tag regexes skip
80
- // them) before scanning, then restore them verbatim.
81
- // The NUL delimiters must stay as \u0000 escapes: raw 0x00 bytes make this file
82
- // binary to git and are corrupted by Bun's transpiler when bundled (issue #2139).
83
- function maskInertRegions(html) {
84
- const stash = [];
85
- const parts = [];
86
- const opening = /<!--|<script\b|<style\b/gi;
87
- const closings = new Map([
88
- ["<!--", /--!?>/g],
89
- ["<script", /<\/script\s*>/gi],
90
- ["<style", /<\/style\s*>/gi],
91
- ]);
92
- let cursor = 0;
93
- let match;
94
- while ((match = opening.exec(html)) !== null) {
95
- const kind = match[0].toLowerCase();
96
- const closing = closings.get(kind);
97
- if (!closing)
98
- continue;
99
- closing.lastIndex = opening.lastIndex;
100
- const end = closing.exec(html) ? closing.lastIndex : -1;
101
- if (end < 0) {
102
- // No later opener of this kind can close either. Search each unmatched
103
- // suffix only once, while still allowing other kinds of inert regions.
104
- closings.delete(kind);
105
- continue;
67
+ function* iterateOpeningTags(html, names) {
68
+ for (const span of scanHtmlOpeningTags(html)) {
69
+ if (span.closed && names.includes(span.name)) {
70
+ yield { tag: html.slice(span.start, span.end), index: span.start, end: span.end };
106
71
  }
107
- const token = `\u0000HFMASK${stash.length}\u0000`;
108
- parts.push(html.slice(cursor, match.index), token);
109
- stash.push(html.slice(match.index, end));
110
- cursor = end;
111
- opening.lastIndex = cursor;
112
72
  }
113
- parts.push(html.slice(cursor));
114
- const masked = parts.join("");
115
- const restore = (s) =>
116
- // oxlint-disable-next-line no-control-regex -- NUL cannot appear in HTML, which is what makes it a safe mask delimiter
117
- s.replace(/\u0000HFMASK(\d+)\u0000/g, (_, i) => stash[Number(i)] ?? "");
118
- return { masked, restore };
119
73
  }
120
- // ── Core compilation ─────────────────────────────────────────────────────
121
- function* iterateOpeningTags(html, prefix) {
122
- let match;
123
- while ((match = prefix.exec(html)) !== null) {
124
- const closing = html.indexOf(">", prefix.lastIndex);
125
- // Without a closer, no later prefix can form a complete tag either.
126
- if (closing < 0)
127
- break;
128
- const end = closing + 1;
129
- yield { tag: html.slice(match.index, end), index: match.index, end };
130
- prefix.lastIndex = end;
131
- }
132
- }
133
- function replaceOpeningTags(html, prefix, replace) {
74
+ function replaceOpeningTags(html, names, replace) {
134
75
  const parts = [];
135
76
  let cursor = 0;
136
- for (const { tag, index, end } of iterateOpeningTags(html, prefix)) {
77
+ for (const { tag, index, end } of iterateOpeningTags(html, names)) {
137
78
  parts.push(html.slice(cursor, index), replace(tag));
138
79
  cursor = end;
139
80
  }
@@ -141,40 +82,26 @@ function replaceOpeningTags(html, prefix, replace) {
141
82
  return parts.join("");
142
83
  }
143
84
  function replaceIdTags(html, id, replace) {
144
- const idPattern = new RegExp(`id=["']${escapeRegex(id)}["']`, "gi");
145
- const lastClosing = html.lastIndexOf(">");
146
85
  const parts = [];
147
86
  let cursor = 0;
148
- let candidate = idPattern.exec(html);
149
- for (const { index, end } of iterateOpeningTags(html, /</g)) {
150
- if (index < cursor)
87
+ for (const span of scanHtmlOpeningTags(html)) {
88
+ if (!span.closed)
151
89
  continue;
152
- let targetEnd = -1;
153
- while (candidate && candidate.index < end) {
154
- const candidateEnd = candidate.index + candidate[0].length;
155
- if (candidate.index > index && candidateEnd <= lastClosing)
156
- targetEnd = candidateEnd;
157
- // Preserve the old greedy prefix's last matching ID, including overlaps.
158
- idPattern.lastIndex = candidate.index + 1;
159
- candidate = idPattern.exec(html);
160
- }
161
- if (targetEnd < 0)
90
+ const tag = html.slice(span.start, span.end);
91
+ const attr = span.attributes.find((attr) => attr.name === "id");
92
+ if (attr?.kind !== "value" || decodeAuthoredAttribute(attr.value) !== id)
162
93
  continue;
163
- // An authored ID can itself contain '>', so its closer may follow the
164
- // initial span. The lastClosing check guarantees a closing delimiter.
165
- const closing = html.indexOf(">", targetEnd) + 1;
166
- parts.push(html.slice(cursor, index), replace(html.slice(index, closing)));
167
- cursor = closing;
94
+ parts.push(html.slice(cursor, span.start), replace(tag));
95
+ cursor = span.end;
168
96
  }
169
97
  parts.push(html.slice(cursor));
170
98
  return parts.join("");
171
99
  }
172
- function compileTag(tag, isVideo, generateId) {
100
+ function withDefaultTimingAttrs(tag, tagName, generateId) {
173
101
  let result = tag;
174
- let unresolved = null;
175
102
  let id = getAttr(result, "id");
176
103
  if (!id) {
177
- id = `${isVideo ? "hf-video" : "hf-audio"}-${generateId()}`;
104
+ id = `hf-${tagName}-${generateId()}`;
178
105
  result = injectAttr(result, "id", id);
179
106
  }
180
107
  let startStr = getAttr(result, "data-start");
@@ -183,7 +110,19 @@ function compileTag(tag, isVideo, generateId) {
183
110
  result = injectAttr(result, "data-hf-auto-start", "");
184
111
  startStr = "0";
185
112
  }
186
- const start = parseNumeric(startStr);
113
+ return { tag: result, id, start: parseNumeric(startStr) };
114
+ }
115
+ function withVideoAudioFlag(tag, isVideo) {
116
+ if (!isVideo || hasAttr(tag, "data-has-audio"))
117
+ return tag;
118
+ return injectAttr(tag, "data-has-audio", hasAttr(tag, "muted") ? "false" : "true");
119
+ }
120
+ function compileTag(tag, isVideo, generateId) {
121
+ const tagName = isVideo ? "video" : "audio";
122
+ const defaults = withDefaultTimingAttrs(tag, tagName, generateId);
123
+ let result = defaults.tag;
124
+ let unresolved = null;
125
+ const { id, start } = defaults;
187
126
  const attrReader = tagAttrReader(result);
188
127
  const mediaStart = readMediaStart(attrReader);
189
128
  const playbackRate = readElementRateSpec(attrReader);
@@ -196,11 +135,11 @@ function compileTag(tag, isVideo, generateId) {
196
135
  result = injectAttr(result, "data-end", String(start + duration));
197
136
  }
198
137
  }
199
- else if (id) {
138
+ else {
200
139
  // No data-duration: mark as unresolved so caller can provide it
201
140
  unresolved = {
202
141
  id,
203
- tagName: isVideo ? "video" : "audio",
142
+ tagName,
204
143
  src: getAttr(result, "src") ?? undefined,
205
144
  start: start ?? 0,
206
145
  mediaStart,
@@ -208,12 +147,7 @@ function compileTag(tag, isVideo, generateId) {
208
147
  };
209
148
  }
210
149
  }
211
- // 2. Add data-has-audio to <video> elements. Muted videos are visual-only by
212
- // contract; audible media should be represented by either an unmuted video
213
- // with data-has-audio="true" or a separate <audio> element.
214
- if (isVideo && !hasAttr(result, "data-has-audio")) {
215
- result = injectAttr(result, "data-has-audio", hasAttr(result, "muted") ? "false" : "true");
216
- }
150
+ result = withVideoAudioFlag(result, isVideo);
217
151
  return { tag: result, unresolved };
218
152
  }
219
153
  /**
@@ -230,17 +164,15 @@ export function compileTimingAttrs(html) {
230
164
  const unresolved = [];
231
165
  let nextVideoId = 0;
232
166
  let nextAudioId = 0;
233
- const { masked, restore } = maskInertRegions(html);
234
- html = masked;
235
167
  // Process <video ...> tags
236
- html = replaceOpeningTags(html, /<video/gi, (match) => {
168
+ html = replaceOpeningTags(html, ["video"], (match) => {
237
169
  const { tag, unresolved: u } = compileTag(match, true, () => nextVideoId++);
238
170
  if (u)
239
171
  unresolved.push(u);
240
172
  return tag;
241
173
  });
242
174
  // Process <audio ...> tags
243
- html = replaceOpeningTags(html, /<audio/gi, (match) => {
175
+ html = replaceOpeningTags(html, ["audio"], (match) => {
244
176
  const { tag, unresolved: u } = compileTag(match, false, () => nextAudioId++);
245
177
  if (u)
246
178
  unresolved.push(u);
@@ -248,7 +180,7 @@ export function compileTimingAttrs(html) {
248
180
  });
249
181
  // Identify unresolved timed elements (divs with data-start but no data-end/data-duration)
250
182
  // These are typically compositions whose duration depends on GSAP timelines
251
- for (const { tag: match } of iterateOpeningTags(html, /<(?:div|section)/gi)) {
183
+ for (const { tag: match } of iterateOpeningTags(html, ["div", "section"])) {
252
184
  if (!hasAttr(match, "data-start"))
253
185
  continue;
254
186
  if (hasAttr(match, "data-end") || hasAttr(match, "data-duration"))
@@ -267,7 +199,7 @@ export function compileTimingAttrs(html) {
267
199
  });
268
200
  }
269
201
  }
270
- return { html: restore(html), unresolved };
202
+ return { html, unresolved };
271
203
  }
272
204
  /**
273
205
  * Inject resolved durations into compiled HTML.
@@ -297,17 +229,13 @@ export function injectDurations(html, resolutions) {
297
229
  }
298
230
  return html;
299
231
  }
300
- function escapeRegex(str) {
301
- return str.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
302
- }
303
232
  /**
304
233
  * Extract video/audio elements that already have data-duration set.
305
234
  * Used by callers to validate declared durations against actual source durations.
306
235
  */
307
236
  export function extractResolvedMedia(html) {
308
237
  const resolved = [];
309
- html = maskInertRegions(html).masked;
310
- for (const { tag } of iterateOpeningTags(html, /<(?:video|audio)/gi)) {
238
+ for (const { tag } of iterateOpeningTags(html, ["video", "audio"])) {
311
239
  const id = getAttr(tag, "id");
312
240
  const durationStr = getAttr(tag, "data-duration");
313
241
  if (!id || durationStr === null)
@@ -340,10 +268,11 @@ export function clampDurations(html, clamps) {
340
268
  for (const { id, duration } of clamps) {
341
269
  html = replaceIdTags(html, id, (tag) => {
342
270
  // Replace data-duration value
343
- tag = tag.replace(/data-duration=["'][^"']*["']/, `data-duration="${duration}"`);
271
+ if (hasAttr(tag, "data-duration"))
272
+ tag = setAttr(tag, "data-duration", String(duration));
344
273
  const start = parseNumeric(getAttr(tag, "data-start"));
345
- if (start != null) {
346
- tag = tag.replace(/data-end=["'][^"']*["']/, `data-end="${start + duration}"`);
274
+ if (start != null && hasAttr(tag, "data-end")) {
275
+ tag = setAttr(tag, "data-end", String(start + duration));
347
276
  }
348
277
  return tag;
349
278
  });
@@ -1 +1 @@
1
- {"version":3,"file":"timingCompiler.js","sourceRoot":"","sources":["../../src/compiler/timingCompiler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"timingCompiler.js","sourceRoot":"","sources":["../../src/compiler/timingCompiler.ts"],"names":[],"mappings":"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"}