@hyperframes/core 0.2.1 → 0.2.2-alpha.3
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.
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +5 -5
- package/dist/hyperframe.runtime.mjs +5 -5
- package/dist/lint/rules/captions.d.ts.map +1 -1
- package/dist/lint/rules/captions.js +43 -0
- package/dist/lint/rules/captions.js.map +1 -1
- package/dist/lint/rules/composition.d.ts.map +1 -1
- package/dist/lint/rules/composition.js +95 -0
- package/dist/lint/rules/composition.js.map +1 -1
- package/dist/lint/rules/core.d.ts.map +1 -1
- package/dist/lint/rules/core.js +47 -0
- package/dist/lint/rules/core.js.map +1 -1
- package/package.json +1 -1
|
@@ -99,5 +99,100 @@ export const compositionRules = [
|
|
|
99
99
|
}
|
|
100
100
|
return findings;
|
|
101
101
|
},
|
|
102
|
+
// timed_element_missing_clip_class
|
|
103
|
+
({ tags }) => {
|
|
104
|
+
const findings = [];
|
|
105
|
+
const skipTags = new Set(["audio", "video", "script", "style", "template"]);
|
|
106
|
+
for (const tag of tags) {
|
|
107
|
+
if (skipTags.has(tag.name))
|
|
108
|
+
continue;
|
|
109
|
+
// Skip composition hosts
|
|
110
|
+
if (readAttr(tag.raw, "data-composition-id"))
|
|
111
|
+
continue;
|
|
112
|
+
if (readAttr(tag.raw, "data-composition-src"))
|
|
113
|
+
continue;
|
|
114
|
+
const hasStart = readAttr(tag.raw, "data-start") !== null;
|
|
115
|
+
const hasDuration = readAttr(tag.raw, "data-duration") !== null;
|
|
116
|
+
const hasTrackIndex = readAttr(tag.raw, "data-track-index") !== null;
|
|
117
|
+
if (!hasStart && !hasDuration && !hasTrackIndex)
|
|
118
|
+
continue;
|
|
119
|
+
const classAttr = readAttr(tag.raw, "class") || "";
|
|
120
|
+
const hasClip = classAttr.split(/\s+/).includes("clip");
|
|
121
|
+
if (hasClip)
|
|
122
|
+
continue;
|
|
123
|
+
const elementId = readAttr(tag.raw, "id") || undefined;
|
|
124
|
+
findings.push({
|
|
125
|
+
code: "timed_element_missing_clip_class",
|
|
126
|
+
severity: "warning",
|
|
127
|
+
message: `<${tag.name}${elementId ? ` id="${elementId}"` : ""}> has timing attributes but no class="clip". The element will be visible for the entire composition instead of only during its scheduled time range.`,
|
|
128
|
+
elementId,
|
|
129
|
+
fixHint: 'Add class="clip" to the element. The HyperFrames runtime uses .clip to control visibility based on data-start/data-duration.',
|
|
130
|
+
snippet: truncateSnippet(tag.raw),
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
return findings;
|
|
134
|
+
},
|
|
135
|
+
// overlapping_clips_same_track
|
|
136
|
+
({ tags }) => {
|
|
137
|
+
const findings = [];
|
|
138
|
+
const trackMap = new Map();
|
|
139
|
+
for (const tag of tags) {
|
|
140
|
+
const startStr = readAttr(tag.raw, "data-start");
|
|
141
|
+
const durationStr = readAttr(tag.raw, "data-duration");
|
|
142
|
+
const trackStr = readAttr(tag.raw, "data-track-index");
|
|
143
|
+
if (!startStr || !durationStr || !trackStr)
|
|
144
|
+
continue;
|
|
145
|
+
const start = Number(startStr);
|
|
146
|
+
const duration = Number(durationStr);
|
|
147
|
+
const track = trackStr;
|
|
148
|
+
// Skip non-numeric (relative timing references like "intro-comp")
|
|
149
|
+
if (Number.isNaN(start) || Number.isNaN(duration))
|
|
150
|
+
continue;
|
|
151
|
+
const clips = trackMap.get(track) || [];
|
|
152
|
+
clips.push({
|
|
153
|
+
start,
|
|
154
|
+
end: start + duration,
|
|
155
|
+
elementId: readAttr(tag.raw, "id") || undefined,
|
|
156
|
+
snippet: truncateSnippet(tag.raw) || "",
|
|
157
|
+
});
|
|
158
|
+
trackMap.set(track, clips);
|
|
159
|
+
}
|
|
160
|
+
for (const [track, clips] of trackMap) {
|
|
161
|
+
clips.sort((a, b) => a.start - b.start);
|
|
162
|
+
for (let i = 0; i < clips.length - 1; i++) {
|
|
163
|
+
const current = clips[i];
|
|
164
|
+
const next = clips[i + 1];
|
|
165
|
+
if (!current || !next)
|
|
166
|
+
continue;
|
|
167
|
+
if (current.end > next.start) {
|
|
168
|
+
findings.push({
|
|
169
|
+
code: "overlapping_clips_same_track",
|
|
170
|
+
severity: "error",
|
|
171
|
+
message: `Track ${track}: clip ending at ${current.end}s overlaps with clip starting at ${next.start}s. Overlapping clips on the same track cause rendering conflicts.`,
|
|
172
|
+
fixHint: "Adjust data-start or data-duration so clips on the same track do not overlap, or move one clip to a different data-track-index.",
|
|
173
|
+
});
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
return findings;
|
|
178
|
+
},
|
|
179
|
+
// requestanimationframe_in_composition
|
|
180
|
+
({ scripts }) => {
|
|
181
|
+
const findings = [];
|
|
182
|
+
for (const script of scripts) {
|
|
183
|
+
// Strip comments to avoid false positives
|
|
184
|
+
const stripped = script.content.replace(/\/\/.*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, "");
|
|
185
|
+
if (/requestAnimationFrame\s*\(/.test(stripped)) {
|
|
186
|
+
findings.push({
|
|
187
|
+
code: "requestanimationframe_in_composition",
|
|
188
|
+
severity: "warning",
|
|
189
|
+
message: "`requestAnimationFrame` runs on wall-clock time, not the GSAP timeline. It will not sync with frame capture and may cause flickering or missed frames during rendering.",
|
|
190
|
+
fixHint: "Use GSAP tweens or onUpdate callbacks instead of requestAnimationFrame for animation logic.",
|
|
191
|
+
snippet: truncateSnippet(script.content),
|
|
192
|
+
});
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
return findings;
|
|
196
|
+
},
|
|
102
197
|
];
|
|
103
198
|
//# sourceMappingURL=composition.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"composition.js","sourceRoot":"","sources":["../../../src/lint/rules/composition.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"composition.js","sourceRoot":"","sources":["../../../src/lint/rules/composition.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAErD,MAAM,CAAC,MAAM,gBAAgB,GAAyD;IACpF,0CAA0C;IAC1C,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QACX,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,KAAK,OAAO;gBAAE,SAAS;YACpF,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC;gBAAE,SAAS;YAC/C,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,qBAAqB,CAAC;gBAAE,SAAS;YACvD,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,sBAAsB,CAAC;gBAAE,SAAS;YACxD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YACnD,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxD,MAAM,cAAc,GAClB,0BAA0B,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACnF,IAAI,CAAC,OAAO,IAAI,CAAC,cAAc,EAAE,CAAC;gBAChC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC;gBACvD,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,yCAAyC;oBAC/C,QAAQ,EAAE,MAAM;oBAChB,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,yKAAyK;oBACtO,SAAS;oBACT,OAAO,EACL,qHAAqH;oBACvH,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;iBAClC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,8CAA8C;IAC9C,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QACX,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,EAAE,CAAC;gBAC9E,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC;gBACvD,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,uBAAuB;oBAC7B,QAAQ,EAAE,SAAS;oBACnB,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,gDAAgD;oBAC7G,SAAS;oBACT,OAAO,EAAE,+EAA+E;oBACxF,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;iBAClC,CAAC,CAAC;YACL,CAAC;YACD,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,EAAE,CAAC;gBACzE,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC;gBACvD,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,qBAAqB;oBAC3B,QAAQ,EAAE,SAAS;oBACnB,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,0EAA0E;oBACvI,SAAS;oBACT,OAAO,EACL,wGAAwG;oBAC1G,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;iBAClC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,4BAA4B;IAC5B,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QACd,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,8BAA8B,GAClC,yEAAyE,CAAC;YAC5E,IAAI,OAA+B,CAAC;YACpC,OAAO,CAAC,OAAO,GAAG,8BAA8B,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;gBAChF,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,2BAA2B;oBACjC,QAAQ,EAAE,OAAO;oBACjB,OAAO,EACL,qEAAqE;wBACrE,iFAAiF;oBACnF,OAAO,EACL,iJAAiJ;oBACnJ,OAAO,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;iBACrC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,6BAA6B;IAC7B,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE;QACb,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,MAAM,gBAAgB,GAAG,yDAAyD,CAAC;QACnF,IAAI,KAA6B,CAAC;QAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,OAAO,CAAC,KAAK,GAAG,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YACxD,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAC3B,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,4BAA4B;gBAClC,QAAQ,EAAE,MAAM;gBAChB,OAAO,EAAE,oDAAoD,GAAG,0RAA0R;gBAC1V,OAAO,EACL,mKAAmK;gBACrK,OAAO,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACzC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,mCAAmC;IACnC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QACX,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;QAC5E,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC;gBAAE,SAAS;YACrC,yBAAyB;YACzB,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,qBAAqB,CAAC;gBAAE,SAAS;YACvD,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,sBAAsB,CAAC;gBAAE,SAAS;YAExD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;YAC1D,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,KAAK,IAAI,CAAC;YAChE,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,KAAK,IAAI,CAAC;YACrE,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,IAAI,CAAC,aAAa;gBAAE,SAAS;YAE1D,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC;YACnD,MAAM,OAAO,GAAG,SAAS,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YACxD,IAAI,OAAO;gBAAE,SAAS;YAEtB,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,SAAS,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC;gBACZ,IAAI,EAAE,kCAAkC;gBACxC,QAAQ,EAAE,SAAS;gBACnB,OAAO,EAAE,IAAI,GAAG,CAAC,IAAI,GAAG,SAAS,CAAC,CAAC,CAAC,QAAQ,SAAS,GAAG,CAAC,CAAC,CAAC,EAAE,sJAAsJ;gBACnN,SAAS;gBACT,OAAO,EACL,8HAA8H;gBAChI,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC;aAClC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,+BAA+B;IAC/B,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;QACX,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAG7C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAsB,CAAC;QAE/C,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,YAAY,CAAC,CAAC;YACjD,MAAM,WAAW,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;YACvD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,kBAAkB,CAAC,CAAC;YACvD,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,IAAI,CAAC,QAAQ;gBAAE,SAAS;YAErD,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,QAAQ,CAAC;YAEvB,kEAAkE;YAClE,IAAI,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;gBAAE,SAAS;YAE5D,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC;gBACT,KAAK;gBACL,GAAG,EAAE,KAAK,GAAG,QAAQ;gBACrB,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,SAAS;gBAC/C,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE;aACxC,CAAC,CAAC;YACH,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAC7B,CAAC;QAED,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;YACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC1C,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;gBACzB,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;gBAC1B,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI;oBAAE,SAAS;gBAChC,IAAI,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC,KAAK,EAAE,CAAC;oBAC7B,QAAQ,CAAC,IAAI,CAAC;wBACZ,IAAI,EAAE,8BAA8B;wBACpC,QAAQ,EAAE,OAAO;wBACjB,OAAO,EAAE,SAAS,KAAK,oBAAoB,OAAO,CAAC,GAAG,oCAAoC,IAAI,CAAC,KAAK,mEAAmE;wBACvK,OAAO,EACL,iIAAiI;qBACpI,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,QAAQ,CAAC;IAClB,CAAC;IAED,uCAAuC;IACvC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE;QACd,MAAM,QAAQ,GAA4B,EAAE,CAAC;QAC7C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,0CAA0C;YAC1C,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;YAC1F,IAAI,4BAA4B,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAChD,QAAQ,CAAC,IAAI,CAAC;oBACZ,IAAI,EAAE,sCAAsC;oBAC5C,QAAQ,EAAE,SAAS;oBACnB,OAAO,EACL,yKAAyK;oBAC3K,OAAO,EACL,6FAA6F;oBAC/F,OAAO,EAAE,eAAe,CAAC,MAAM,CAAC,OAAO,CAAC;iBACzC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QACD,OAAO,QAAQ,CAAC;IAClB,CAAC;CACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAWrE,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,qBAAqB,EAAE,
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/core.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AAWrE,eAAO,MAAM,SAAS,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,qBAAqB,EAAE,CA8M1E,CAAC"}
|
package/dist/lint/rules/core.js
CHANGED
|
@@ -151,5 +151,52 @@ export const coreRules = [
|
|
|
151
151
|
}
|
|
152
152
|
return findings;
|
|
153
153
|
},
|
|
154
|
+
// non_deterministic_code
|
|
155
|
+
({ scripts }) => {
|
|
156
|
+
const findings = [];
|
|
157
|
+
const patterns = [
|
|
158
|
+
{
|
|
159
|
+
pattern: /Math\.random\s*\(/,
|
|
160
|
+
label: "Math.random()",
|
|
161
|
+
hint: "Use a seeded PRNG (e.g. a simple mulberry32) so renders are deterministic across frames.",
|
|
162
|
+
},
|
|
163
|
+
{
|
|
164
|
+
pattern: /Date\.now\s*\(/,
|
|
165
|
+
label: "Date.now()",
|
|
166
|
+
hint: "Remove time-dependent code. Use GSAP timeline position instead of wall-clock time.",
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
pattern: /new\s+Date\s*\(/,
|
|
170
|
+
label: "new Date()",
|
|
171
|
+
hint: "Remove time-dependent code. Use GSAP timeline position instead of wall-clock time.",
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
pattern: /performance\.now\s*\(/,
|
|
175
|
+
label: "performance.now()",
|
|
176
|
+
hint: "Remove time-dependent code. Use GSAP timeline position instead of wall-clock time.",
|
|
177
|
+
},
|
|
178
|
+
{
|
|
179
|
+
pattern: /crypto\.getRandomValues\s*\(/,
|
|
180
|
+
label: "crypto.getRandomValues()",
|
|
181
|
+
hint: "Remove time-dependent code. Use a seeded PRNG for deterministic renders.",
|
|
182
|
+
},
|
|
183
|
+
];
|
|
184
|
+
for (const script of scripts) {
|
|
185
|
+
// Strip comments to avoid false positives
|
|
186
|
+
const stripped = script.content.replace(/\/\/.*$/gm, "").replace(/\/\*[\s\S]*?\*\//g, "");
|
|
187
|
+
for (const { pattern, label, hint } of patterns) {
|
|
188
|
+
if (pattern.test(stripped)) {
|
|
189
|
+
findings.push({
|
|
190
|
+
code: "non_deterministic_code",
|
|
191
|
+
severity: "error",
|
|
192
|
+
message: `Script contains \`${label}\` which produces non-deterministic output. Renders may differ between frames or runs.`,
|
|
193
|
+
fixHint: hint,
|
|
194
|
+
snippet: truncateSnippet(script.content),
|
|
195
|
+
});
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
return findings;
|
|
200
|
+
},
|
|
154
201
|
];
|
|
155
202
|
//# sourceMappingURL=core.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/lint/rules/core.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/lint/rules/core.ts"],"names":[],"mappings":"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"}
|