@hyperframes/core 0.7.14 → 0.7.15

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.
Files changed (238) hide show
  1. package/dist/compiler/staticGuard.js +1 -1
  2. package/dist/compiler/staticGuard.js.map +1 -1
  3. package/dist/core.types.d.ts +2 -369
  4. package/dist/core.types.d.ts.map +1 -1
  5. package/dist/core.types.js +1 -84
  6. package/dist/core.types.js.map +1 -1
  7. package/dist/generators/hyperframes.d.ts +1 -1
  8. package/dist/generators/hyperframes.d.ts.map +1 -1
  9. package/dist/generators/hyperframes.js +1 -1
  10. package/dist/generators/hyperframes.js.map +1 -1
  11. package/dist/index.d.ts +5 -7
  12. package/dist/index.d.ts.map +1 -1
  13. package/dist/index.js +7 -4
  14. package/dist/index.js.map +1 -1
  15. package/dist/lint/index.d.ts +2 -2
  16. package/dist/lint/index.d.ts.map +1 -1
  17. package/dist/lint/index.js +2 -1
  18. package/dist/lint/index.js.map +1 -1
  19. package/dist/parsers/gsapConstants.d.ts +2 -12
  20. package/dist/parsers/gsapConstants.d.ts.map +1 -1
  21. package/dist/parsers/gsapConstants.js +2 -110
  22. package/dist/parsers/gsapConstants.js.map +1 -1
  23. package/dist/parsers/gsapParserAcorn.d.ts +2 -48
  24. package/dist/parsers/gsapParserAcorn.d.ts.map +1 -1
  25. package/dist/parsers/gsapParserAcorn.js +2 -1057
  26. package/dist/parsers/gsapParserAcorn.js.map +1 -1
  27. package/dist/parsers/gsapParserExports.d.ts +2 -20
  28. package/dist/parsers/gsapParserExports.d.ts.map +1 -1
  29. package/dist/parsers/gsapParserExports.js +2 -8
  30. package/dist/parsers/gsapParserExports.js.map +1 -1
  31. package/dist/parsers/gsapWriterAcorn.d.ts +2 -90
  32. package/dist/parsers/gsapWriterAcorn.d.ts.map +1 -1
  33. package/dist/parsers/gsapWriterAcorn.js +2 -2016
  34. package/dist/parsers/gsapWriterAcorn.js.map +1 -1
  35. package/dist/parsers/hfIds.d.ts +2 -16
  36. package/dist/parsers/hfIds.d.ts.map +1 -1
  37. package/dist/parsers/hfIds.js +2 -127
  38. package/dist/parsers/hfIds.js.map +1 -1
  39. package/dist/parsers/springEase.d.ts +2 -28
  40. package/dist/parsers/springEase.d.ts.map +1 -1
  41. package/dist/parsers/springEase.js +2 -69
  42. package/dist/parsers/springEase.js.map +1 -1
  43. package/dist/slideshow/index.d.ts +1 -0
  44. package/dist/slideshow/index.d.ts.map +1 -1
  45. package/dist/slideshow/index.js +1 -0
  46. package/dist/slideshow/index.js.map +1 -1
  47. package/dist/studio-api/helpers/draftMarkers.d.ts +2 -10
  48. package/dist/studio-api/helpers/draftMarkers.d.ts.map +1 -1
  49. package/dist/studio-api/helpers/draftMarkers.js +2 -10
  50. package/dist/studio-api/helpers/draftMarkers.js.map +1 -1
  51. package/dist/studio-api/helpers/finiteMutation.d.ts +2 -10
  52. package/dist/studio-api/helpers/finiteMutation.d.ts.map +1 -1
  53. package/dist/studio-api/helpers/finiteMutation.js +2 -20
  54. package/dist/studio-api/helpers/finiteMutation.js.map +1 -1
  55. package/dist/studio-api/helpers/manualEditsRenderScript.d.ts +2 -12
  56. package/dist/studio-api/helpers/manualEditsRenderScript.d.ts.map +1 -1
  57. package/dist/studio-api/helpers/manualEditsRenderScript.js +2 -632
  58. package/dist/studio-api/helpers/manualEditsRenderScript.js.map +1 -1
  59. package/dist/studio-api/helpers/screenshotClip.d.ts +2 -7
  60. package/dist/studio-api/helpers/screenshotClip.d.ts.map +1 -1
  61. package/dist/studio-api/helpers/screenshotClip.js +2 -21
  62. package/dist/studio-api/helpers/screenshotClip.js.map +1 -1
  63. package/dist/studio-api/helpers/studioMotionRenderScript.d.ts +2 -8
  64. package/dist/studio-api/helpers/studioMotionRenderScript.d.ts.map +1 -1
  65. package/dist/studio-api/helpers/studioMotionRenderScript.js +2 -207
  66. package/dist/studio-api/helpers/studioMotionRenderScript.js.map +1 -1
  67. package/dist/studio-api/index.d.ts +2 -9
  68. package/dist/studio-api/index.d.ts.map +1 -1
  69. package/dist/studio-api/index.js +2 -8
  70. package/dist/studio-api/index.js.map +1 -1
  71. package/package.json +16 -18
  72. package/dist/generated/runtime-inline.js +0 -11
  73. package/dist/hyperframe.manifest.json +0 -22
  74. package/dist/hyperframe.runtime.mjs +0 -325
  75. package/dist/lint/context.d.ts +0 -17
  76. package/dist/lint/context.d.ts.map +0 -1
  77. package/dist/lint/context.js +0 -37
  78. package/dist/lint/context.js.map +0 -1
  79. package/dist/lint/hyperframeLinter.d.ts +0 -14
  80. package/dist/lint/hyperframeLinter.d.ts.map +0 -1
  81. package/dist/lint/hyperframeLinter.js +0 -132
  82. package/dist/lint/hyperframeLinter.js.map +0 -1
  83. package/dist/lint/rules/adapters.d.ts +0 -3
  84. package/dist/lint/rules/adapters.d.ts.map +0 -1
  85. package/dist/lint/rules/adapters.js +0 -40
  86. package/dist/lint/rules/adapters.js.map +0 -1
  87. package/dist/lint/rules/captions.d.ts +0 -3
  88. package/dist/lint/rules/captions.d.ts.map +0 -1
  89. package/dist/lint/rules/captions.js +0 -242
  90. package/dist/lint/rules/captions.js.map +0 -1
  91. package/dist/lint/rules/composition.d.ts +0 -5
  92. package/dist/lint/rules/composition.d.ts.map +0 -1
  93. package/dist/lint/rules/composition.js +0 -694
  94. package/dist/lint/rules/composition.js.map +0 -1
  95. package/dist/lint/rules/core.d.ts +0 -3
  96. package/dist/lint/rules/core.d.ts.map +0 -1
  97. package/dist/lint/rules/core.js +0 -432
  98. package/dist/lint/rules/core.js.map +0 -1
  99. package/dist/lint/rules/fonts.d.ts +0 -3
  100. package/dist/lint/rules/fonts.d.ts.map +0 -1
  101. package/dist/lint/rules/fonts.js +0 -205
  102. package/dist/lint/rules/fonts.js.map +0 -1
  103. package/dist/lint/rules/gsap.d.ts +0 -4
  104. package/dist/lint/rules/gsap.d.ts.map +0 -1
  105. package/dist/lint/rules/gsap.js +0 -1039
  106. package/dist/lint/rules/gsap.js.map +0 -1
  107. package/dist/lint/rules/media.d.ts +0 -3
  108. package/dist/lint/rules/media.d.ts.map +0 -1
  109. package/dist/lint/rules/media.js +0 -491
  110. package/dist/lint/rules/media.js.map +0 -1
  111. package/dist/lint/rules/slideshow.d.ts +0 -4
  112. package/dist/lint/rules/slideshow.d.ts.map +0 -1
  113. package/dist/lint/rules/slideshow.js +0 -74
  114. package/dist/lint/rules/slideshow.js.map +0 -1
  115. package/dist/lint/rules/textures.d.ts +0 -3
  116. package/dist/lint/rules/textures.d.ts.map +0 -1
  117. package/dist/lint/rules/textures.js +0 -192
  118. package/dist/lint/rules/textures.js.map +0 -1
  119. package/dist/lint/types.d.ts +0 -36
  120. package/dist/lint/types.d.ts.map +0 -1
  121. package/dist/lint/types.js +0 -2
  122. package/dist/lint/types.js.map +0 -1
  123. package/dist/lint/utils.d.ts +0 -55
  124. package/dist/lint/utils.d.ts.map +0 -1
  125. package/dist/lint/utils.js +0 -264
  126. package/dist/lint/utils.js.map +0 -1
  127. package/dist/parsers/gsapInline.d.ts +0 -47
  128. package/dist/parsers/gsapInline.d.ts.map +0 -1
  129. package/dist/parsers/gsapInline.js +0 -513
  130. package/dist/parsers/gsapInline.js.map +0 -1
  131. package/dist/parsers/gsapParser.d.ts +0 -158
  132. package/dist/parsers/gsapParser.d.ts.map +0 -1
  133. package/dist/parsers/gsapParser.js +0 -2634
  134. package/dist/parsers/gsapParser.js.map +0 -1
  135. package/dist/parsers/gsapParser.test-helpers.d.ts +0 -49
  136. package/dist/parsers/gsapParser.test-helpers.d.ts.map +0 -1
  137. package/dist/parsers/gsapParser.test-helpers.js +0 -97
  138. package/dist/parsers/gsapParser.test-helpers.js.map +0 -1
  139. package/dist/parsers/gsapSerialize.d.ts +0 -191
  140. package/dist/parsers/gsapSerialize.d.ts.map +0 -1
  141. package/dist/parsers/gsapSerialize.js +0 -410
  142. package/dist/parsers/gsapSerialize.js.map +0 -1
  143. package/dist/parsers/gsapUnroll.d.ts +0 -7
  144. package/dist/parsers/gsapUnroll.d.ts.map +0 -1
  145. package/dist/parsers/gsapUnroll.js +0 -137
  146. package/dist/parsers/gsapUnroll.js.map +0 -1
  147. package/dist/parsers/htmlParser.d.ts +0 -27
  148. package/dist/parsers/htmlParser.d.ts.map +0 -1
  149. package/dist/parsers/htmlParser.js +0 -731
  150. package/dist/parsers/htmlParser.js.map +0 -1
  151. package/dist/studio-api/createStudioApi.d.ts +0 -10
  152. package/dist/studio-api/createStudioApi.d.ts.map +0 -1
  153. package/dist/studio-api/createStudioApi.js +0 -32
  154. package/dist/studio-api/createStudioApi.js.map +0 -1
  155. package/dist/studio-api/helpers/backupJournal.d.ts +0 -9
  156. package/dist/studio-api/helpers/backupJournal.d.ts.map +0 -1
  157. package/dist/studio-api/helpers/backupJournal.js +0 -81
  158. package/dist/studio-api/helpers/backupJournal.js.map +0 -1
  159. package/dist/studio-api/helpers/hfIdPersist.d.ts +0 -11
  160. package/dist/studio-api/helpers/hfIdPersist.d.ts.map +0 -1
  161. package/dist/studio-api/helpers/hfIdPersist.js +0 -39
  162. package/dist/studio-api/helpers/hfIdPersist.js.map +0 -1
  163. package/dist/studio-api/helpers/mediaValidation.d.ts +0 -20
  164. package/dist/studio-api/helpers/mediaValidation.d.ts.map +0 -1
  165. package/dist/studio-api/helpers/mediaValidation.js +0 -56
  166. package/dist/studio-api/helpers/mediaValidation.js.map +0 -1
  167. package/dist/studio-api/helpers/mime.d.ts +0 -4
  168. package/dist/studio-api/helpers/mime.d.ts.map +0 -1
  169. package/dist/studio-api/helpers/mime.js +0 -39
  170. package/dist/studio-api/helpers/mime.js.map +0 -1
  171. package/dist/studio-api/helpers/previewAdapter.d.ts +0 -43
  172. package/dist/studio-api/helpers/previewAdapter.d.ts.map +0 -1
  173. package/dist/studio-api/helpers/previewAdapter.js +0 -118
  174. package/dist/studio-api/helpers/previewAdapter.js.map +0 -1
  175. package/dist/studio-api/helpers/projectSignature.d.ts +0 -5
  176. package/dist/studio-api/helpers/projectSignature.d.ts.map +0 -1
  177. package/dist/studio-api/helpers/projectSignature.js +0 -154
  178. package/dist/studio-api/helpers/projectSignature.js.map +0 -1
  179. package/dist/studio-api/helpers/safePath.d.ts +0 -12
  180. package/dist/studio-api/helpers/safePath.d.ts.map +0 -1
  181. package/dist/studio-api/helpers/safePath.js +0 -38
  182. package/dist/studio-api/helpers/safePath.js.map +0 -1
  183. package/dist/studio-api/helpers/sourceMutation.d.ts +0 -28
  184. package/dist/studio-api/helpers/sourceMutation.d.ts.map +0 -1
  185. package/dist/studio-api/helpers/sourceMutation.js +0 -339
  186. package/dist/studio-api/helpers/sourceMutation.js.map +0 -1
  187. package/dist/studio-api/helpers/subComposition.d.ts +0 -20
  188. package/dist/studio-api/helpers/subComposition.d.ts.map +0 -1
  189. package/dist/studio-api/helpers/subComposition.js +0 -289
  190. package/dist/studio-api/helpers/subComposition.js.map +0 -1
  191. package/dist/studio-api/helpers/waveform.d.ts +0 -4
  192. package/dist/studio-api/helpers/waveform.d.ts.map +0 -1
  193. package/dist/studio-api/helpers/waveform.js +0 -80
  194. package/dist/studio-api/helpers/waveform.js.map +0 -1
  195. package/dist/studio-api/routes/files.d.ts +0 -4
  196. package/dist/studio-api/routes/files.d.ts.map +0 -1
  197. package/dist/studio-api/routes/files.js +0 -1200
  198. package/dist/studio-api/routes/files.js.map +0 -1
  199. package/dist/studio-api/routes/fonts.d.ts +0 -3
  200. package/dist/studio-api/routes/fonts.d.ts.map +0 -1
  201. package/dist/studio-api/routes/fonts.js +0 -157
  202. package/dist/studio-api/routes/fonts.js.map +0 -1
  203. package/dist/studio-api/routes/lint.d.ts +0 -4
  204. package/dist/studio-api/routes/lint.d.ts.map +0 -1
  205. package/dist/studio-api/routes/lint.js +0 -29
  206. package/dist/studio-api/routes/lint.js.map +0 -1
  207. package/dist/studio-api/routes/preview.d.ts +0 -4
  208. package/dist/studio-api/routes/preview.d.ts.map +0 -1
  209. package/dist/studio-api/routes/preview.js +0 -331
  210. package/dist/studio-api/routes/preview.js.map +0 -1
  211. package/dist/studio-api/routes/projects.d.ts +0 -4
  212. package/dist/studio-api/routes/projects.d.ts.map +0 -1
  213. package/dist/studio-api/routes/projects.js +0 -45
  214. package/dist/studio-api/routes/projects.js.map +0 -1
  215. package/dist/studio-api/routes/registry.d.ts +0 -4
  216. package/dist/studio-api/routes/registry.d.ts.map +0 -1
  217. package/dist/studio-api/routes/registry.js +0 -31
  218. package/dist/studio-api/routes/registry.js.map +0 -1
  219. package/dist/studio-api/routes/render.d.ts +0 -4
  220. package/dist/studio-api/routes/render.d.ts.map +0 -1
  221. package/dist/studio-api/routes/render.js +0 -269
  222. package/dist/studio-api/routes/render.js.map +0 -1
  223. package/dist/studio-api/routes/storyboard.d.ts +0 -4
  224. package/dist/studio-api/routes/storyboard.d.ts.map +0 -1
  225. package/dist/studio-api/routes/storyboard.js +0 -65
  226. package/dist/studio-api/routes/storyboard.js.map +0 -1
  227. package/dist/studio-api/routes/thumbnail.d.ts +0 -4
  228. package/dist/studio-api/routes/thumbnail.d.ts.map +0 -1
  229. package/dist/studio-api/routes/thumbnail.js +0 -107
  230. package/dist/studio-api/routes/thumbnail.js.map +0 -1
  231. package/dist/studio-api/routes/waveform.d.ts +0 -4
  232. package/dist/studio-api/routes/waveform.d.ts.map +0 -1
  233. package/dist/studio-api/routes/waveform.js +0 -41
  234. package/dist/studio-api/routes/waveform.js.map +0 -1
  235. package/dist/studio-api/types.d.ts +0 -120
  236. package/dist/studio-api/types.d.ts.map +0 -1
  237. package/dist/studio-api/types.js +0 -2
  238. package/dist/studio-api/types.js.map +0 -1
@@ -1,513 +0,0 @@
1
- /** Node keys that are metadata, not child AST to traverse/substitute. */
2
- const SKIP_KEYS = new Set(["type", "start", "end", "loc", "range", "__hfProvenance", "__hfOrder"]);
3
- const FUNCTION_TYPES = new Set([
4
- "ArrowFunctionExpression",
5
- "FunctionExpression",
6
- "FunctionDeclaration",
7
- ]);
8
- const GSAP_METHODS = new Set(["set", "to", "from", "fromTo"]);
9
- // Bounds on synthetic expansion (recursion + iteration runaway guards).
10
- const MAX_DEPTH = 8;
11
- const MAX_ITERS = 512;
12
- function isFunctionNode(node) {
13
- return !!node && FUNCTION_TYPES.has(node.type);
14
- }
15
- function isNode(x) {
16
- return !!x && typeof x === "object" && typeof x.type === "string";
17
- }
18
- /**
19
- * Apply `fn` to each child AST node, writing back its return value. Skips
20
- * metadata keys and key/member slots that must not be treated as values.
21
- * The one place array-vs-single child traversal lives, so walkers stay flat.
22
- */
23
- function transformChildren(node, fn) {
24
- for (const key of Object.keys(node)) {
25
- if (SKIP_KEYS.has(key) || isNonValueIdentifierSlot(node, key))
26
- continue;
27
- const child = node[key];
28
- if (Array.isArray(child)) {
29
- for (let i = 0; i < child.length; i++)
30
- child[i] = fn(child[i]);
31
- }
32
- else {
33
- node[key] = fn(child);
34
- }
35
- }
36
- }
37
- /** Deep structural clone preserving `start`/`end`/`loc` (needed for source slicing). */
38
- export function cloneNode(node) {
39
- return structuredClone(node);
40
- }
41
- // ponytail: Identifier + default + rest only. Destructured bindings (`{x}`, `[x]`)
42
- // aren't inlined (U2 inlines Identifier-param helpers / loop vars only), so a
43
- // destructuring shadow is a double-rare miss that just falls back. Add the
44
- // pattern cases here if that ever bites.
45
- function collectPatternNames(pattern, out) {
46
- if (pattern?.type === "Identifier")
47
- out.add(pattern.name);
48
- else if (pattern?.type === "AssignmentPattern")
49
- collectPatternNames(pattern.left, out);
50
- else if (pattern?.type === "RestElement")
51
- collectPatternNames(pattern.argument, out);
52
- }
53
- /** Every identifier name bound anywhere inside the subtree (fn params, declared vars, catch params). */
54
- function collectBoundNames(root) {
55
- const names = new Set();
56
- const visit = (node) => {
57
- if (!isNode(node))
58
- return node;
59
- if (isFunctionNode(node))
60
- for (const p of node.params ?? [])
61
- collectPatternNames(p, names);
62
- else if (node.type === "VariableDeclarator")
63
- collectPatternNames(node.id, names);
64
- else if (node.type === "CatchClause")
65
- collectPatternNames(node.param, names);
66
- transformChildren(node, visit);
67
- return node;
68
- };
69
- visit(root);
70
- return names;
71
- }
72
- /** A child in key/property position that must not be treated as a value identifier. */
73
- function isNonValueIdentifierSlot(node, key) {
74
- if (node.computed)
75
- return false;
76
- return ((node.type === "MemberExpression" && key === "property") ||
77
- (node.type === "Property" && key === "key"));
78
- }
79
- /**
80
- * Substitute bound identifiers in an already-cloned subtree, returning the
81
- * (possibly replaced) root. Names shadowed anywhere inside (nested function
82
- * params, declared vars) are dropped up front rather than tracked per scope —
83
- * worst case we under-substitute and the caller falls back to current behavior.
84
- * Never substitutes identifiers in key/member positions. Mutates the passed
85
- * clone in place — callers pass `cloneNode(...)`.
86
- */
87
- export function substituteParams(node, bindings) {
88
- const shadowed = collectBoundNames(node);
89
- let effective = bindings;
90
- if (shadowed.size > 0) {
91
- effective = new Map(bindings);
92
- for (const name of shadowed)
93
- effective.delete(name);
94
- }
95
- if (effective.size === 0)
96
- return node;
97
- return replace(node, effective);
98
- }
99
- function replace(node, bindings) {
100
- if (!isNode(node))
101
- return node;
102
- if (node.type === "Identifier" && bindings.has(node.name)) {
103
- return cloneNode(bindings.get(node.name));
104
- }
105
- transformChildren(node, (child) => replace(child, bindings));
106
- return node;
107
- }
108
- /** Tag a node (typically a `tl.*` CallExpression) with its construction provenance. */
109
- export function tagProvenance(node, provenance) {
110
- if (node && typeof node === "object")
111
- node.__hfProvenance = provenance;
112
- return node;
113
- }
114
- /** Read a provenance tag previously set by `tagProvenance`, if any. */
115
- export function readProvenance(node) {
116
- return node?.__hfProvenance;
117
- }
118
- /** Synthesize a numeric `Literal` node (for loop indices, which have no source node). */
119
- export function numericLiteral(value) {
120
- return { type: "Literal", value, raw: String(value) };
121
- }
122
- function walkNodes(node, fn) {
123
- if (!isNode(node))
124
- return;
125
- fn(node);
126
- for (const key of Object.keys(node)) {
127
- if (SKIP_KEYS.has(key))
128
- continue;
129
- const child = node[key];
130
- if (Array.isArray(child))
131
- for (const c of child)
132
- walkNodes(c, fn);
133
- else
134
- walkNodes(child, fn);
135
- }
136
- }
137
- /** The identifier a (possibly chained) call's member expression is rooted at. */
138
- function timelineRootName(call) {
139
- let obj = call.callee?.object;
140
- while (obj?.type === "CallExpression")
141
- obj = obj.callee?.object;
142
- return obj?.type === "Identifier" ? obj.name : null;
143
- }
144
- function isTimelineRooted(call, timelineVar) {
145
- if (timelineRootName(call) !== timelineVar)
146
- return false;
147
- return (call.callee?.property?.type === "Identifier" && GSAP_METHODS.has(call.callee.property.name));
148
- }
149
- function containsTimelineCall(node, timelineVar) {
150
- let found = false;
151
- walkNodes(node, (n) => {
152
- if (n.type === "CallExpression" && isTimelineRooted(n, timelineVar))
153
- found = true;
154
- });
155
- return found;
156
- }
157
- function rangeOf(node) {
158
- return typeof node.start === "number" && typeof node.end === "number"
159
- ? [node.start, node.end]
160
- : undefined;
161
- }
162
- /** Plain identifier params + block body (shape we can inline). Timeline content checked separately. */
163
- function isShapeEligible(fn) {
164
- return (isFunctionNode(fn) &&
165
- fn.body?.type === "BlockStatement" &&
166
- !(fn.params ?? []).some((p) => p.type !== "Identifier"));
167
- }
168
- /** True if the subtree calls any function named in `names`. */
169
- function callsAny(node, names) {
170
- let hit = false;
171
- walkNodes(node, (n) => {
172
- if (n.type === "CallExpression" &&
173
- n.callee?.type === "Identifier" &&
174
- names.has(n.callee.name)) {
175
- hit = true;
176
- }
177
- });
178
- return hit;
179
- }
180
- /** `[name, fnNode]` if a single-declarator `const f = fn` is an inlinable-shaped helper. */
181
- function varDeclHelper(stmt) {
182
- if (stmt.declarations?.length !== 1)
183
- return null;
184
- const d = stmt.declarations[0];
185
- return d.id?.type === "Identifier" && isShapeEligible(d.init) ? [d.id.name, d.init] : null;
186
- }
187
- /** `[name, fnNode]` if `stmt` declares an inlinable-shaped helper, else null. */
188
- function helperFromStatement(stmt) {
189
- if (stmt.type === "FunctionDeclaration") {
190
- return stmt.id && isShapeEligible(stmt) ? [stmt.id.name, stmt] : null;
191
- }
192
- if (stmt.type === "VariableDeclaration")
193
- return varDeclHelper(stmt);
194
- return null;
195
- }
196
- /** Top-level functions whose shape we can inline (Identifier params + block body). */
197
- function gatherHelperCandidates(program) {
198
- const candidates = new Map();
199
- for (const stmt of program.body ?? []) {
200
- const helper = helperFromStatement(stmt);
201
- if (helper)
202
- candidates.set(helper[0], helper[1]);
203
- }
204
- return candidates;
205
- }
206
- /** Names that build the timeline directly or by calling another builder (transitive closure). */
207
- function timelineBuildingNames(candidates, timelineVar) {
208
- const building = new Set();
209
- for (const [name, fn] of candidates) {
210
- if (containsTimelineCall(fn.body, timelineVar))
211
- building.add(name);
212
- }
213
- for (let changed = true; changed;) {
214
- changed = false;
215
- for (const [name, fn] of candidates) {
216
- if (!building.has(name) && callsAny(fn.body, building)) {
217
- building.add(name);
218
- changed = true;
219
- }
220
- }
221
- }
222
- return building;
223
- }
224
- function bump(counts, key) {
225
- counts.set(key, (counts.get(key) ?? 0) + 1);
226
- }
227
- /**
228
- * Keep only candidates safe to drop: every reference to the name is its
229
- * declaration or a statement-level call. (1 decl id + 1 callee id per
230
- * statement-level call ⇒ total occurrences with no stray uses.)
231
- */
232
- function safelyDroppable(program, candidates) {
233
- const names = new Set(candidates.keys());
234
- const totalIds = new Map();
235
- const stmtCalls = new Map();
236
- walkNodes(program, (n) => {
237
- if (n.type === "Identifier" && names.has(n.name))
238
- bump(totalIds, n.name);
239
- const e = n.type === "ExpressionStatement" ? n.expression : undefined;
240
- if (e?.type === "CallExpression" &&
241
- e.callee?.type === "Identifier" &&
242
- names.has(e.callee.name)) {
243
- bump(stmtCalls, e.callee.name);
244
- }
245
- });
246
- const safe = new Map();
247
- for (const [name, fn] of candidates) {
248
- if ((totalIds.get(name) ?? 0) === 1 + (stmtCalls.get(name) ?? 0))
249
- safe.set(name, fn);
250
- }
251
- return safe;
252
- }
253
- /** Top-level timeline-building helpers that are safe to inline-and-drop. */
254
- function collectInlinableHelpers(program, timelineVar) {
255
- const candidates = gatherHelperCandidates(program);
256
- if (candidates.size === 0)
257
- return candidates;
258
- const building = timelineBuildingNames(candidates, timelineVar);
259
- for (const name of [...candidates.keys()])
260
- if (!building.has(name))
261
- candidates.delete(name);
262
- if (candidates.size === 0)
263
- return candidates;
264
- return safelyDroppable(program, candidates);
265
- }
266
- function isHelperDecl(stmt, helpers) {
267
- if (stmt.type === "FunctionDeclaration")
268
- return !!stmt.id && helpers.get(stmt.id.name) === stmt;
269
- if (stmt.type === "VariableDeclaration" && stmt.declarations?.length === 1) {
270
- const d = stmt.declarations[0];
271
- return d.id?.type === "Identifier" && helpers.get(d.id.name) === d.init;
272
- }
273
- return false;
274
- }
275
- function bodyStatements(node) {
276
- if (node?.type === "BlockStatement")
277
- return node.body ?? [];
278
- return node ? [{ type: "ExpressionStatement", expression: node }] : [];
279
- }
280
- /** Tag this body's direct timeline tweens with provenance + a monotonic expansion-order stamp. */
281
- function tagTimelineCalls(stmts, prov, ctx) {
282
- for (const stmt of stmts) {
283
- walkNodes(stmt, (n) => {
284
- if (n.type === "CallExpression" && isTimelineRooted(n, ctx.timelineVar)) {
285
- tagProvenance(n, { ...prov });
286
- n.__hfOrder = ctx.order.n++;
287
- }
288
- });
289
- }
290
- }
291
- /** Clone a body as one scope, substitute the bindings, tag provenance, recurse. */
292
- function expandBody(bodyStmts, bindings, prov, ctx) {
293
- const block = substituteParams(cloneNode({ type: "BlockStatement", body: bodyStmts }), bindings);
294
- tagTimelineCalls(block.body, prov, ctx);
295
- return expandStatements(block.body, { ...ctx, depth: ctx.depth + 1 });
296
- }
297
- function inlineHelper(call, ctx) {
298
- const fn = ctx.helpers.get(call.callee.name);
299
- const bindings = new Map();
300
- (fn.params ?? []).forEach((p, i) => {
301
- const arg = call.arguments?.[i];
302
- if (arg)
303
- bindings.set(p.name, arg);
304
- });
305
- const prov = {
306
- kind: "helper",
307
- fn: call.callee.name,
308
- callSite: ++ctx.site.n,
309
- sourceRange: rangeOf(call),
310
- };
311
- return expandBody(fn.body.body, bindings, prov, ctx);
312
- }
313
- function assignStep(update, resolve) {
314
- if (update.operator === "+=")
315
- return asNum(resolve(update.right));
316
- if (update.operator === "-=") {
317
- const s = asNum(resolve(update.right));
318
- return s === undefined ? undefined : -s;
319
- }
320
- // `i = i + S` — the step is the right operand of the addition.
321
- if (update.operator === "=" && update.right?.type === "BinaryExpression") {
322
- return asNum(resolve(update.right.right));
323
- }
324
- return undefined;
325
- }
326
- /** The loop variable a `for` update clause mutates (`i++` or `i += S`), or null. */
327
- function updatedVarName(update) {
328
- if (update?.type === "UpdateExpression")
329
- return update.argument?.name ?? null;
330
- if (update?.type === "AssignmentExpression")
331
- return update.left?.name ?? null;
332
- return null;
333
- }
334
- function loopStep(update, varName, resolve) {
335
- if (updatedVarName(update) !== varName)
336
- return undefined;
337
- if (update.type === "UpdateExpression")
338
- return update.operator === "++" ? 1 : -1;
339
- return assignStep(update, resolve);
340
- }
341
- function asNum(v) {
342
- return typeof v === "number" && Number.isFinite(v) ? v : undefined;
343
- }
344
- function loopSatisfied(op, x, end) {
345
- if (op === "<")
346
- return x < end;
347
- if (op === "<=")
348
- return x <= end;
349
- if (op === ">")
350
- return x > end;
351
- if (op === ">=")
352
- return x >= end;
353
- return false;
354
- }
355
- /** The single `let v = <init>` of a for-loop init clause, or null. */
356
- function forInitVar(init) {
357
- if (init?.type !== "VariableDeclaration" || init.declarations?.length !== 1)
358
- return null;
359
- const d = init.declarations[0];
360
- return d.id?.type === "Identifier" ? { name: d.id.name, initExpr: d.init } : null;
361
- }
362
- /** Parse `for (let v = A; v <op> B; v += S)` into resolved bounds, or null if not statically bounded. */
363
- function parseForHeader(stmt, resolve) {
364
- const iv = forInitVar(stmt.init);
365
- const test = stmt.test;
366
- if (!iv || test?.type !== "BinaryExpression" || test.left?.name !== iv.name)
367
- return null;
368
- const start = asNum(resolve(iv.initExpr));
369
- const end = asNum(resolve(test.right));
370
- const step = loopStep(stmt.update, iv.name, resolve);
371
- if (start === undefined || end === undefined || !step)
372
- return null;
373
- return { v: iv.name, start, end, op: test.operator, step };
374
- }
375
- function unrollFor(stmt, ctx) {
376
- const h = parseForHeader(stmt, ctx.resolve);
377
- if (!h)
378
- return null;
379
- const body = bodyStatements(stmt.body);
380
- const out = [];
381
- const site = ++ctx.site.n;
382
- let iteration = 0;
383
- for (let x = h.start; loopSatisfied(h.op, x, h.end); x += h.step) {
384
- if (iteration >= MAX_ITERS)
385
- return null;
386
- const prov = {
387
- kind: "loop",
388
- callSite: site,
389
- iteration,
390
- sourceRange: rangeOf(stmt),
391
- };
392
- out.push(...expandBody(body, new Map([[h.v, numericLiteral(x)]]), prov, ctx));
393
- iteration++;
394
- }
395
- return out;
396
- }
397
- function forOfVarName(left) {
398
- if (left?.type === "VariableDeclaration") {
399
- const id = left.declarations?.[0]?.id;
400
- return id?.type === "Identifier" ? id.name : null;
401
- }
402
- return left?.type === "Identifier" ? left.name : null;
403
- }
404
- /** Expand `for (const el of [literal array]) {...}` and `[literal array].forEach((el, i) => {...})`. */
405
- function unrollOverArray(elements, body, elName, idxName, range, ctx) {
406
- const out = [];
407
- const site = ++ctx.site.n;
408
- elements.forEach((el, i) => {
409
- if (!el)
410
- return;
411
- const bindings = new Map();
412
- if (elName)
413
- bindings.set(elName, el);
414
- if (idxName)
415
- bindings.set(idxName, numericLiteral(i));
416
- const prov = { kind: "loop", callSite: site, iteration: i, sourceRange: range };
417
- out.push(...expandBody(body, bindings, prov, ctx));
418
- });
419
- return out;
420
- }
421
- function unrollForOf(stmt, ctx) {
422
- if (stmt.right?.type !== "ArrayExpression")
423
- return null;
424
- const elName = forOfVarName(stmt.left);
425
- if (!elName)
426
- return null;
427
- return unrollOverArray(stmt.right.elements ?? [], bodyStatements(stmt.body), elName, null, rangeOf(stmt), ctx);
428
- }
429
- /** The (element, index) param names of a callback, or null if either is non-Identifier. */
430
- function callbackParamNames(cb) {
431
- const names = [];
432
- for (const p of [cb.params?.[0], cb.params?.[1]]) {
433
- if (!p)
434
- names.push(null);
435
- else if (p.type !== "Identifier")
436
- return null;
437
- else
438
- names.push(p.name);
439
- }
440
- return { el: names[0], idx: names[1] };
441
- }
442
- /** True for `[arrayLiteral].forEach` member callees. */
443
- function isForEachCall(callee) {
444
- return (callee?.type === "MemberExpression" &&
445
- callee.property?.name === "forEach" &&
446
- callee.object?.type === "ArrayExpression");
447
- }
448
- /** The element array + callback of `[...].forEach(cb)`, or null. */
449
- function forEachTarget(call) {
450
- if (!isForEachCall(call.callee))
451
- return null;
452
- const cb = call.arguments?.[0];
453
- return isFunctionNode(cb) ? { elements: call.callee.object.elements ?? [], cb } : null;
454
- }
455
- function unrollForEach(call, ctx) {
456
- const target = forEachTarget(call);
457
- if (!target)
458
- return null;
459
- const params = callbackParamNames(target.cb);
460
- if (!params)
461
- return null;
462
- return unrollOverArray(target.elements, bodyStatements(target.cb.body), params.el, params.idx, rangeOf(call), ctx);
463
- }
464
- function expandCall(call, ctx) {
465
- if (call.callee?.type === "Identifier" && ctx.helpers.has(call.callee.name)) {
466
- return inlineHelper(call, ctx);
467
- }
468
- return unrollForEach(call, ctx);
469
- }
470
- function expandStatement(stmt, ctx) {
471
- if (ctx.depth >= MAX_DEPTH)
472
- return null;
473
- if (stmt.type === "ForStatement")
474
- return unrollFor(stmt, ctx);
475
- if (stmt.type === "ForOfStatement")
476
- return unrollForOf(stmt, ctx);
477
- if (stmt.type === "ExpressionStatement" && stmt.expression?.type === "CallExpression") {
478
- return expandCall(stmt.expression, ctx);
479
- }
480
- return null;
481
- }
482
- function expandStatements(stmts, ctx) {
483
- const out = [];
484
- for (const stmt of stmts) {
485
- const expanded = expandStatement(stmt, ctx);
486
- if (expanded)
487
- out.push(...expanded);
488
- else
489
- out.push(stmt);
490
- }
491
- return out;
492
- }
493
- /**
494
- * Rewrite the Program body so helper invocations and bounded loops that build
495
- * the timeline are expanded into concrete per-call / per-iteration `tl.*`
496
- * statements, each tagged with provenance. Mutates `ast` in place (caller owns
497
- * the freshly-parsed tree). Constructs it can't statically resolve are left
498
- * untouched, so the parser falls back to current behavior for them.
499
- */
500
- export function inlineComputedTimelines(ast, timelineVar, resolve) {
501
- const helpers = collectInlinableHelpers(ast, timelineVar);
502
- const ctx = {
503
- helpers,
504
- timelineVar,
505
- resolve,
506
- depth: 0,
507
- site: { n: 0 },
508
- order: { n: 0 },
509
- };
510
- const body = (ast.body ?? []).filter((stmt) => !isHelperDecl(stmt, helpers));
511
- ast.body = expandStatements(body, ctx);
512
- }
513
- //# sourceMappingURL=gsapInline.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gsapInline.js","sourceRoot":"","sources":["../../src/parsers/gsapInline.ts"],"names":[],"mappings":"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"}