@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.
- package/dist/compiler/staticGuard.js +1 -1
- package/dist/compiler/staticGuard.js.map +1 -1
- package/dist/core.types.d.ts +2 -369
- package/dist/core.types.d.ts.map +1 -1
- package/dist/core.types.js +1 -84
- package/dist/core.types.js.map +1 -1
- package/dist/generators/hyperframes.d.ts +1 -1
- package/dist/generators/hyperframes.d.ts.map +1 -1
- package/dist/generators/hyperframes.js +1 -1
- package/dist/generators/hyperframes.js.map +1 -1
- package/dist/index.d.ts +5 -7
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -4
- package/dist/index.js.map +1 -1
- package/dist/lint/index.d.ts +2 -2
- package/dist/lint/index.d.ts.map +1 -1
- package/dist/lint/index.js +2 -1
- package/dist/lint/index.js.map +1 -1
- package/dist/parsers/gsapConstants.d.ts +2 -12
- package/dist/parsers/gsapConstants.d.ts.map +1 -1
- package/dist/parsers/gsapConstants.js +2 -110
- package/dist/parsers/gsapConstants.js.map +1 -1
- package/dist/parsers/gsapParserAcorn.d.ts +2 -48
- package/dist/parsers/gsapParserAcorn.d.ts.map +1 -1
- package/dist/parsers/gsapParserAcorn.js +2 -1057
- package/dist/parsers/gsapParserAcorn.js.map +1 -1
- package/dist/parsers/gsapParserExports.d.ts +2 -20
- package/dist/parsers/gsapParserExports.d.ts.map +1 -1
- package/dist/parsers/gsapParserExports.js +2 -8
- package/dist/parsers/gsapParserExports.js.map +1 -1
- package/dist/parsers/gsapWriterAcorn.d.ts +2 -90
- package/dist/parsers/gsapWriterAcorn.d.ts.map +1 -1
- package/dist/parsers/gsapWriterAcorn.js +2 -2016
- package/dist/parsers/gsapWriterAcorn.js.map +1 -1
- package/dist/parsers/hfIds.d.ts +2 -16
- package/dist/parsers/hfIds.d.ts.map +1 -1
- package/dist/parsers/hfIds.js +2 -127
- package/dist/parsers/hfIds.js.map +1 -1
- package/dist/parsers/springEase.d.ts +2 -28
- package/dist/parsers/springEase.d.ts.map +1 -1
- package/dist/parsers/springEase.js +2 -69
- package/dist/parsers/springEase.js.map +1 -1
- package/dist/slideshow/index.d.ts +1 -0
- package/dist/slideshow/index.d.ts.map +1 -1
- package/dist/slideshow/index.js +1 -0
- package/dist/slideshow/index.js.map +1 -1
- package/dist/studio-api/helpers/draftMarkers.d.ts +2 -10
- package/dist/studio-api/helpers/draftMarkers.d.ts.map +1 -1
- package/dist/studio-api/helpers/draftMarkers.js +2 -10
- package/dist/studio-api/helpers/draftMarkers.js.map +1 -1
- package/dist/studio-api/helpers/finiteMutation.d.ts +2 -10
- package/dist/studio-api/helpers/finiteMutation.d.ts.map +1 -1
- package/dist/studio-api/helpers/finiteMutation.js +2 -20
- package/dist/studio-api/helpers/finiteMutation.js.map +1 -1
- package/dist/studio-api/helpers/manualEditsRenderScript.d.ts +2 -12
- package/dist/studio-api/helpers/manualEditsRenderScript.d.ts.map +1 -1
- package/dist/studio-api/helpers/manualEditsRenderScript.js +2 -632
- package/dist/studio-api/helpers/manualEditsRenderScript.js.map +1 -1
- package/dist/studio-api/helpers/screenshotClip.d.ts +2 -7
- package/dist/studio-api/helpers/screenshotClip.d.ts.map +1 -1
- package/dist/studio-api/helpers/screenshotClip.js +2 -21
- package/dist/studio-api/helpers/screenshotClip.js.map +1 -1
- package/dist/studio-api/helpers/studioMotionRenderScript.d.ts +2 -8
- package/dist/studio-api/helpers/studioMotionRenderScript.d.ts.map +1 -1
- package/dist/studio-api/helpers/studioMotionRenderScript.js +2 -207
- package/dist/studio-api/helpers/studioMotionRenderScript.js.map +1 -1
- package/dist/studio-api/index.d.ts +2 -9
- package/dist/studio-api/index.d.ts.map +1 -1
- package/dist/studio-api/index.js +2 -8
- package/dist/studio-api/index.js.map +1 -1
- package/package.json +16 -18
- package/dist/generated/runtime-inline.js +0 -11
- package/dist/hyperframe.manifest.json +0 -22
- package/dist/hyperframe.runtime.mjs +0 -325
- package/dist/lint/context.d.ts +0 -17
- package/dist/lint/context.d.ts.map +0 -1
- package/dist/lint/context.js +0 -37
- package/dist/lint/context.js.map +0 -1
- package/dist/lint/hyperframeLinter.d.ts +0 -14
- package/dist/lint/hyperframeLinter.d.ts.map +0 -1
- package/dist/lint/hyperframeLinter.js +0 -132
- package/dist/lint/hyperframeLinter.js.map +0 -1
- package/dist/lint/rules/adapters.d.ts +0 -3
- package/dist/lint/rules/adapters.d.ts.map +0 -1
- package/dist/lint/rules/adapters.js +0 -40
- package/dist/lint/rules/adapters.js.map +0 -1
- package/dist/lint/rules/captions.d.ts +0 -3
- package/dist/lint/rules/captions.d.ts.map +0 -1
- package/dist/lint/rules/captions.js +0 -242
- package/dist/lint/rules/captions.js.map +0 -1
- package/dist/lint/rules/composition.d.ts +0 -5
- package/dist/lint/rules/composition.d.ts.map +0 -1
- package/dist/lint/rules/composition.js +0 -694
- package/dist/lint/rules/composition.js.map +0 -1
- package/dist/lint/rules/core.d.ts +0 -3
- package/dist/lint/rules/core.d.ts.map +0 -1
- package/dist/lint/rules/core.js +0 -432
- package/dist/lint/rules/core.js.map +0 -1
- package/dist/lint/rules/fonts.d.ts +0 -3
- package/dist/lint/rules/fonts.d.ts.map +0 -1
- package/dist/lint/rules/fonts.js +0 -205
- package/dist/lint/rules/fonts.js.map +0 -1
- package/dist/lint/rules/gsap.d.ts +0 -4
- package/dist/lint/rules/gsap.d.ts.map +0 -1
- package/dist/lint/rules/gsap.js +0 -1039
- package/dist/lint/rules/gsap.js.map +0 -1
- package/dist/lint/rules/media.d.ts +0 -3
- package/dist/lint/rules/media.d.ts.map +0 -1
- package/dist/lint/rules/media.js +0 -491
- package/dist/lint/rules/media.js.map +0 -1
- package/dist/lint/rules/slideshow.d.ts +0 -4
- package/dist/lint/rules/slideshow.d.ts.map +0 -1
- package/dist/lint/rules/slideshow.js +0 -74
- package/dist/lint/rules/slideshow.js.map +0 -1
- package/dist/lint/rules/textures.d.ts +0 -3
- package/dist/lint/rules/textures.d.ts.map +0 -1
- package/dist/lint/rules/textures.js +0 -192
- package/dist/lint/rules/textures.js.map +0 -1
- package/dist/lint/types.d.ts +0 -36
- package/dist/lint/types.d.ts.map +0 -1
- package/dist/lint/types.js +0 -2
- package/dist/lint/types.js.map +0 -1
- package/dist/lint/utils.d.ts +0 -55
- package/dist/lint/utils.d.ts.map +0 -1
- package/dist/lint/utils.js +0 -264
- package/dist/lint/utils.js.map +0 -1
- package/dist/parsers/gsapInline.d.ts +0 -47
- package/dist/parsers/gsapInline.d.ts.map +0 -1
- package/dist/parsers/gsapInline.js +0 -513
- package/dist/parsers/gsapInline.js.map +0 -1
- package/dist/parsers/gsapParser.d.ts +0 -158
- package/dist/parsers/gsapParser.d.ts.map +0 -1
- package/dist/parsers/gsapParser.js +0 -2634
- package/dist/parsers/gsapParser.js.map +0 -1
- package/dist/parsers/gsapParser.test-helpers.d.ts +0 -49
- package/dist/parsers/gsapParser.test-helpers.d.ts.map +0 -1
- package/dist/parsers/gsapParser.test-helpers.js +0 -97
- package/dist/parsers/gsapParser.test-helpers.js.map +0 -1
- package/dist/parsers/gsapSerialize.d.ts +0 -191
- package/dist/parsers/gsapSerialize.d.ts.map +0 -1
- package/dist/parsers/gsapSerialize.js +0 -410
- package/dist/parsers/gsapSerialize.js.map +0 -1
- package/dist/parsers/gsapUnroll.d.ts +0 -7
- package/dist/parsers/gsapUnroll.d.ts.map +0 -1
- package/dist/parsers/gsapUnroll.js +0 -137
- package/dist/parsers/gsapUnroll.js.map +0 -1
- package/dist/parsers/htmlParser.d.ts +0 -27
- package/dist/parsers/htmlParser.d.ts.map +0 -1
- package/dist/parsers/htmlParser.js +0 -731
- package/dist/parsers/htmlParser.js.map +0 -1
- package/dist/studio-api/createStudioApi.d.ts +0 -10
- package/dist/studio-api/createStudioApi.d.ts.map +0 -1
- package/dist/studio-api/createStudioApi.js +0 -32
- package/dist/studio-api/createStudioApi.js.map +0 -1
- package/dist/studio-api/helpers/backupJournal.d.ts +0 -9
- package/dist/studio-api/helpers/backupJournal.d.ts.map +0 -1
- package/dist/studio-api/helpers/backupJournal.js +0 -81
- package/dist/studio-api/helpers/backupJournal.js.map +0 -1
- package/dist/studio-api/helpers/hfIdPersist.d.ts +0 -11
- package/dist/studio-api/helpers/hfIdPersist.d.ts.map +0 -1
- package/dist/studio-api/helpers/hfIdPersist.js +0 -39
- package/dist/studio-api/helpers/hfIdPersist.js.map +0 -1
- package/dist/studio-api/helpers/mediaValidation.d.ts +0 -20
- package/dist/studio-api/helpers/mediaValidation.d.ts.map +0 -1
- package/dist/studio-api/helpers/mediaValidation.js +0 -56
- package/dist/studio-api/helpers/mediaValidation.js.map +0 -1
- package/dist/studio-api/helpers/mime.d.ts +0 -4
- package/dist/studio-api/helpers/mime.d.ts.map +0 -1
- package/dist/studio-api/helpers/mime.js +0 -39
- package/dist/studio-api/helpers/mime.js.map +0 -1
- package/dist/studio-api/helpers/previewAdapter.d.ts +0 -43
- package/dist/studio-api/helpers/previewAdapter.d.ts.map +0 -1
- package/dist/studio-api/helpers/previewAdapter.js +0 -118
- package/dist/studio-api/helpers/previewAdapter.js.map +0 -1
- package/dist/studio-api/helpers/projectSignature.d.ts +0 -5
- package/dist/studio-api/helpers/projectSignature.d.ts.map +0 -1
- package/dist/studio-api/helpers/projectSignature.js +0 -154
- package/dist/studio-api/helpers/projectSignature.js.map +0 -1
- package/dist/studio-api/helpers/safePath.d.ts +0 -12
- package/dist/studio-api/helpers/safePath.d.ts.map +0 -1
- package/dist/studio-api/helpers/safePath.js +0 -38
- package/dist/studio-api/helpers/safePath.js.map +0 -1
- package/dist/studio-api/helpers/sourceMutation.d.ts +0 -28
- package/dist/studio-api/helpers/sourceMutation.d.ts.map +0 -1
- package/dist/studio-api/helpers/sourceMutation.js +0 -339
- package/dist/studio-api/helpers/sourceMutation.js.map +0 -1
- package/dist/studio-api/helpers/subComposition.d.ts +0 -20
- package/dist/studio-api/helpers/subComposition.d.ts.map +0 -1
- package/dist/studio-api/helpers/subComposition.js +0 -289
- package/dist/studio-api/helpers/subComposition.js.map +0 -1
- package/dist/studio-api/helpers/waveform.d.ts +0 -4
- package/dist/studio-api/helpers/waveform.d.ts.map +0 -1
- package/dist/studio-api/helpers/waveform.js +0 -80
- package/dist/studio-api/helpers/waveform.js.map +0 -1
- package/dist/studio-api/routes/files.d.ts +0 -4
- package/dist/studio-api/routes/files.d.ts.map +0 -1
- package/dist/studio-api/routes/files.js +0 -1200
- package/dist/studio-api/routes/files.js.map +0 -1
- package/dist/studio-api/routes/fonts.d.ts +0 -3
- package/dist/studio-api/routes/fonts.d.ts.map +0 -1
- package/dist/studio-api/routes/fonts.js +0 -157
- package/dist/studio-api/routes/fonts.js.map +0 -1
- package/dist/studio-api/routes/lint.d.ts +0 -4
- package/dist/studio-api/routes/lint.d.ts.map +0 -1
- package/dist/studio-api/routes/lint.js +0 -29
- package/dist/studio-api/routes/lint.js.map +0 -1
- package/dist/studio-api/routes/preview.d.ts +0 -4
- package/dist/studio-api/routes/preview.d.ts.map +0 -1
- package/dist/studio-api/routes/preview.js +0 -331
- package/dist/studio-api/routes/preview.js.map +0 -1
- package/dist/studio-api/routes/projects.d.ts +0 -4
- package/dist/studio-api/routes/projects.d.ts.map +0 -1
- package/dist/studio-api/routes/projects.js +0 -45
- package/dist/studio-api/routes/projects.js.map +0 -1
- package/dist/studio-api/routes/registry.d.ts +0 -4
- package/dist/studio-api/routes/registry.d.ts.map +0 -1
- package/dist/studio-api/routes/registry.js +0 -31
- package/dist/studio-api/routes/registry.js.map +0 -1
- package/dist/studio-api/routes/render.d.ts +0 -4
- package/dist/studio-api/routes/render.d.ts.map +0 -1
- package/dist/studio-api/routes/render.js +0 -269
- package/dist/studio-api/routes/render.js.map +0 -1
- package/dist/studio-api/routes/storyboard.d.ts +0 -4
- package/dist/studio-api/routes/storyboard.d.ts.map +0 -1
- package/dist/studio-api/routes/storyboard.js +0 -65
- package/dist/studio-api/routes/storyboard.js.map +0 -1
- package/dist/studio-api/routes/thumbnail.d.ts +0 -4
- package/dist/studio-api/routes/thumbnail.d.ts.map +0 -1
- package/dist/studio-api/routes/thumbnail.js +0 -107
- package/dist/studio-api/routes/thumbnail.js.map +0 -1
- package/dist/studio-api/routes/waveform.d.ts +0 -4
- package/dist/studio-api/routes/waveform.d.ts.map +0 -1
- package/dist/studio-api/routes/waveform.js +0 -41
- package/dist/studio-api/routes/waveform.js.map +0 -1
- package/dist/studio-api/types.d.ts +0 -120
- package/dist/studio-api/types.d.ts.map +0 -1
- package/dist/studio-api/types.js +0 -2
- package/dist/studio-api/types.js.map +0 -1
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
import { readAttr } from "../utils.js";
|
|
2
|
-
import { parseSlideshowManifest, resolveSlideshow } from "../../slideshow/parseSlideshow.js";
|
|
3
|
-
import { isSceneLikeCompositionId } from "../../slideshow/sceneId.js";
|
|
4
|
-
function parseTiming(raw) {
|
|
5
|
-
const startStr = readAttr(raw, "data-start");
|
|
6
|
-
if (startStr === null)
|
|
7
|
-
return null;
|
|
8
|
-
const start = Number(startStr);
|
|
9
|
-
if (!Number.isFinite(start))
|
|
10
|
-
return null;
|
|
11
|
-
const durationStr = readAttr(raw, "data-duration");
|
|
12
|
-
if (durationStr !== null) {
|
|
13
|
-
const duration = Number(durationStr);
|
|
14
|
-
if (Number.isFinite(duration))
|
|
15
|
-
return { start, duration };
|
|
16
|
-
}
|
|
17
|
-
const endStr = readAttr(raw, "data-end") ?? readAttr(raw, "data-hf-authored-end");
|
|
18
|
-
if (endStr !== null) {
|
|
19
|
-
const end = Number(endStr);
|
|
20
|
-
if (Number.isFinite(end) && end > start)
|
|
21
|
-
return { start, duration: end - start };
|
|
22
|
-
}
|
|
23
|
-
return null;
|
|
24
|
-
}
|
|
25
|
-
function collectCompositionIdScenes(ctx, seen, out) {
|
|
26
|
-
for (const tag of ctx.tags) {
|
|
27
|
-
const compositionId = readAttr(tag.raw, "data-composition-id");
|
|
28
|
-
if (!compositionId || !isSceneLikeCompositionId(compositionId) || seen.has(compositionId))
|
|
29
|
-
continue;
|
|
30
|
-
const timing = parseTiming(tag.raw);
|
|
31
|
-
if (!timing || timing.duration <= 0)
|
|
32
|
-
continue;
|
|
33
|
-
seen.add(compositionId);
|
|
34
|
-
out.push({ id: compositionId, ...timing });
|
|
35
|
-
}
|
|
36
|
-
}
|
|
37
|
-
function extractScenesFromClips(ctx) {
|
|
38
|
-
const seen = new Set();
|
|
39
|
-
const scenes = [];
|
|
40
|
-
collectCompositionIdScenes(ctx, seen, scenes);
|
|
41
|
-
return scenes;
|
|
42
|
-
}
|
|
43
|
-
export const slideshowRules = [
|
|
44
|
-
(ctx) => {
|
|
45
|
-
const findings = [];
|
|
46
|
-
let manifest;
|
|
47
|
-
try {
|
|
48
|
-
manifest = parseSlideshowManifest(ctx.source);
|
|
49
|
-
}
|
|
50
|
-
catch (e) {
|
|
51
|
-
findings.push({
|
|
52
|
-
code: "slideshow_invalid",
|
|
53
|
-
severity: "error",
|
|
54
|
-
message: `Slideshow island contains invalid JSON or structure: ${e instanceof Error ? e.message : String(e)}`,
|
|
55
|
-
fixHint: 'Ensure the <script type="application/hyperframes-slideshow+json"> block contains valid JSON matching the SlideshowManifest schema.',
|
|
56
|
-
});
|
|
57
|
-
return findings;
|
|
58
|
-
}
|
|
59
|
-
if (!manifest)
|
|
60
|
-
return findings;
|
|
61
|
-
const scenes = extractScenesFromClips(ctx);
|
|
62
|
-
const { errors } = resolveSlideshow(manifest, scenes);
|
|
63
|
-
for (const error of errors) {
|
|
64
|
-
findings.push({
|
|
65
|
-
code: "slideshow_unresolved_ref",
|
|
66
|
-
severity: "error",
|
|
67
|
-
message: `Slideshow manifest error: ${error}`,
|
|
68
|
-
fixHint: "Ensure every sceneId in the slideshow island matches the data-composition-id of a scene element in the composition, or provide explicit startTime/endTime.",
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
return findings;
|
|
72
|
-
},
|
|
73
|
-
];
|
|
74
|
-
//# sourceMappingURL=slideshow.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slideshow.js","sourceRoot":"","sources":["../../../src/lint/rules/slideshow.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"textures.d.ts","sourceRoot":"","sources":["../../../src/lint/rules/textures.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,qBAAqB,EAAW,MAAM,YAAY,CAAC;AAkI9E,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,CAAC,GAAG,EAAE,WAAW,KAAK,qBAAqB,EAAE,CA8F7E,CAAC"}
|
|
@@ -1,192 +0,0 @@
|
|
|
1
|
-
import postcss from "postcss";
|
|
2
|
-
import { readAttr, truncateSnippet } from "../utils.js";
|
|
3
|
-
const TEXTURE_BASE_CLASS = "hf-texture-text";
|
|
4
|
-
const TEXTURE_CLASS_PREFIX = "hf-texture-";
|
|
5
|
-
function classNames(tag) {
|
|
6
|
-
return (readAttr(tag.raw, "class") ?? "").split(/\s+/).filter(Boolean);
|
|
7
|
-
}
|
|
8
|
-
function isTextureMaterialClass(className) {
|
|
9
|
-
return className.startsWith(TEXTURE_CLASS_PREFIX) && className !== TEXTURE_BASE_CLASS;
|
|
10
|
-
}
|
|
11
|
-
function hasInlineMaskImage(tag) {
|
|
12
|
-
const style = readAttr(tag.raw, "style") ?? "";
|
|
13
|
-
return /\b(?:-webkit-)?mask-image\s*:/i.test(style);
|
|
14
|
-
}
|
|
15
|
-
function hasInlineDropShadow(tag) {
|
|
16
|
-
const style = readAttr(tag.raw, "style") ?? "";
|
|
17
|
-
return /\bfilter\s*:\s*[^;]*\bdrop-shadow\s*\(/i.test(style);
|
|
18
|
-
}
|
|
19
|
-
function classNamesInSelector(selector) {
|
|
20
|
-
const classes = new Set();
|
|
21
|
-
const pattern = /\.([A-Za-z_][\w-]*)/g;
|
|
22
|
-
let match;
|
|
23
|
-
while ((match = pattern.exec(selector)) !== null) {
|
|
24
|
-
const className = match[1];
|
|
25
|
-
if (!className)
|
|
26
|
-
continue;
|
|
27
|
-
classes.add(className);
|
|
28
|
-
}
|
|
29
|
-
return [...classes];
|
|
30
|
-
}
|
|
31
|
-
function textureClassesInSelector(selector) {
|
|
32
|
-
return classNamesInSelector(selector).filter(isTextureMaterialClass);
|
|
33
|
-
}
|
|
34
|
-
function simpleSelectorMatchesTag(selector, tag, tagClasses) {
|
|
35
|
-
const trimmed = selector.trim();
|
|
36
|
-
const simpleSelectorPattern = /^(?:[A-Za-z][\w-]*)?(?:\.[A-Za-z_][\w-]*)+$/;
|
|
37
|
-
if (!simpleSelectorPattern.test(trimmed))
|
|
38
|
-
return false;
|
|
39
|
-
const typeMatch = /^([A-Za-z][\w-]*)/.exec(trimmed);
|
|
40
|
-
if (typeMatch && typeMatch[1].toLowerCase() !== tag.name)
|
|
41
|
-
return false;
|
|
42
|
-
const selectorClasses = classNamesInSelector(trimmed);
|
|
43
|
-
return (selectorClasses.length > 0 &&
|
|
44
|
-
selectorClasses.every((className) => tagClasses.includes(className)));
|
|
45
|
-
}
|
|
46
|
-
function collectTextureCss(styles) {
|
|
47
|
-
const definedTextureClasses = new Set();
|
|
48
|
-
const dropShadowRules = [];
|
|
49
|
-
const roots = [];
|
|
50
|
-
for (const style of styles) {
|
|
51
|
-
let root;
|
|
52
|
-
try {
|
|
53
|
-
root = postcss.parse(style.content);
|
|
54
|
-
}
|
|
55
|
-
catch {
|
|
56
|
-
continue;
|
|
57
|
-
}
|
|
58
|
-
roots.push(root);
|
|
59
|
-
// fallow-ignore-next-line complexity
|
|
60
|
-
root.walkRules((rule) => {
|
|
61
|
-
const selectors = rule.selectors ?? [];
|
|
62
|
-
let hasMaskImage = false;
|
|
63
|
-
for (const node of rule.nodes ?? []) {
|
|
64
|
-
if (node.type !== "decl")
|
|
65
|
-
continue;
|
|
66
|
-
const prop = node.prop.toLowerCase();
|
|
67
|
-
if (prop === "mask-image" || prop === "-webkit-mask-image")
|
|
68
|
-
hasMaskImage = true;
|
|
69
|
-
}
|
|
70
|
-
if (hasMaskImage) {
|
|
71
|
-
for (const selector of selectors) {
|
|
72
|
-
for (const className of textureClassesInSelector(selector)) {
|
|
73
|
-
definedTextureClasses.add(className);
|
|
74
|
-
}
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
for (const root of roots) {
|
|
80
|
-
// fallow-ignore-next-line complexity
|
|
81
|
-
root.walkRules((rule) => {
|
|
82
|
-
const selectors = rule.selectors ?? [];
|
|
83
|
-
let hasDropShadow = false;
|
|
84
|
-
for (const node of rule.nodes ?? []) {
|
|
85
|
-
if (node.type !== "decl")
|
|
86
|
-
continue;
|
|
87
|
-
if (node.prop.toLowerCase() === "filter" && /\bdrop-shadow\s*\(/i.test(node.value)) {
|
|
88
|
-
hasDropShadow = true;
|
|
89
|
-
}
|
|
90
|
-
}
|
|
91
|
-
if (hasDropShadow) {
|
|
92
|
-
for (const selector of selectors) {
|
|
93
|
-
const targetsBaseClass = /\.hf-texture-text\b/.test(selector);
|
|
94
|
-
const targetsDefinedTextureClass = textureClassesInSelector(selector).some((className) => definedTextureClasses.has(className));
|
|
95
|
-
dropShadowRules.push({
|
|
96
|
-
selector,
|
|
97
|
-
directlyTargetsTexture: targetsBaseClass || targetsDefinedTextureClass,
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
return { definedTextureClasses, dropShadowRules };
|
|
104
|
-
}
|
|
105
|
-
// fallow-ignore-next-line complexity
|
|
106
|
-
export const textureRules = [
|
|
107
|
-
({ tags, styles }) => {
|
|
108
|
-
const findings = [];
|
|
109
|
-
const { definedTextureClasses, dropShadowRules } = collectTextureCss(styles);
|
|
110
|
-
for (const { selector, directlyTargetsTexture } of dropShadowRules) {
|
|
111
|
-
if (!directlyTargetsTexture)
|
|
112
|
-
continue;
|
|
113
|
-
findings.push({
|
|
114
|
-
code: "texture_drop_shadow_on_text",
|
|
115
|
-
severity: "warning",
|
|
116
|
-
message: "Drop shadow is applied directly to textured text.",
|
|
117
|
-
selector,
|
|
118
|
-
fixHint: "Wrap the textured text and apply `filter: drop-shadow(...)` to the wrapper, not the `hf-texture-text` element.",
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
for (const tag of tags) {
|
|
122
|
-
if (tag.name === "style" || tag.name === "script")
|
|
123
|
-
continue;
|
|
124
|
-
const classes = classNames(tag);
|
|
125
|
-
if (classes.length === 0)
|
|
126
|
-
continue;
|
|
127
|
-
const hasBaseClass = classes.includes(TEXTURE_BASE_CLASS);
|
|
128
|
-
const textureClasses = classes.filter(isTextureMaterialClass);
|
|
129
|
-
if (textureClasses.length > 0 && !hasBaseClass) {
|
|
130
|
-
findings.push({
|
|
131
|
-
code: "texture_class_missing_base",
|
|
132
|
-
severity: "warning",
|
|
133
|
-
message: `Texture material class \`${textureClasses[0]}\` is used without \`${TEXTURE_BASE_CLASS}\`.`,
|
|
134
|
-
elementId: readAttr(tag.raw, "id") || undefined,
|
|
135
|
-
fixHint: `Add \`${TEXTURE_BASE_CLASS}\` alongside the material class, for example \`class="${TEXTURE_BASE_CLASS} ${textureClasses[0]}"\`.`,
|
|
136
|
-
snippet: truncateSnippet(tag.raw),
|
|
137
|
-
});
|
|
138
|
-
}
|
|
139
|
-
if (hasBaseClass && textureClasses.length === 0 && !hasInlineMaskImage(tag)) {
|
|
140
|
-
findings.push({
|
|
141
|
-
code: "texture_text_missing_mask",
|
|
142
|
-
severity: "warning",
|
|
143
|
-
message: `\`${TEXTURE_BASE_CLASS}\` is used without a texture material class or custom mask image.`,
|
|
144
|
-
elementId: readAttr(tag.raw, "id") || undefined,
|
|
145
|
-
fixHint: "Add a material class such as `hf-texture-lava`, or set `mask-image` and `-webkit-mask-image` on the element.",
|
|
146
|
-
snippet: truncateSnippet(tag.raw),
|
|
147
|
-
});
|
|
148
|
-
}
|
|
149
|
-
for (const textureClass of textureClasses) {
|
|
150
|
-
if (definedTextureClasses.has(textureClass))
|
|
151
|
-
continue;
|
|
152
|
-
findings.push({
|
|
153
|
-
code: "texture_class_unknown",
|
|
154
|
-
severity: "error",
|
|
155
|
-
message: `Texture material class \`${textureClass}\` is not defined by local CSS.`,
|
|
156
|
-
elementId: readAttr(tag.raw, "id") || undefined,
|
|
157
|
-
fixHint: "Paste the Texture Mask Text component `<style>...</style>` block into the composition, or fix the texture class typo.",
|
|
158
|
-
snippet: truncateSnippet(tag.raw),
|
|
159
|
-
});
|
|
160
|
-
}
|
|
161
|
-
if (hasBaseClass) {
|
|
162
|
-
for (const rule of dropShadowRules) {
|
|
163
|
-
if (rule.directlyTargetsTexture)
|
|
164
|
-
continue;
|
|
165
|
-
if (!simpleSelectorMatchesTag(rule.selector, tag, classes))
|
|
166
|
-
continue;
|
|
167
|
-
findings.push({
|
|
168
|
-
code: "texture_drop_shadow_on_text",
|
|
169
|
-
severity: "warning",
|
|
170
|
-
message: "Drop shadow is applied directly to textured text.",
|
|
171
|
-
selector: rule.selector,
|
|
172
|
-
elementId: readAttr(tag.raw, "id") || undefined,
|
|
173
|
-
fixHint: "Wrap the textured text and apply `filter: drop-shadow(...)` to the wrapper, not the `hf-texture-text` element.",
|
|
174
|
-
snippet: truncateSnippet(tag.raw),
|
|
175
|
-
});
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
if (hasBaseClass && hasInlineDropShadow(tag)) {
|
|
179
|
-
findings.push({
|
|
180
|
-
code: "texture_drop_shadow_on_text",
|
|
181
|
-
severity: "warning",
|
|
182
|
-
message: "Drop shadow is applied directly to textured text.",
|
|
183
|
-
elementId: readAttr(tag.raw, "id") || undefined,
|
|
184
|
-
fixHint: "Wrap the textured text and apply `filter: drop-shadow(...)` to the wrapper, not the `hf-texture-text` element.",
|
|
185
|
-
snippet: truncateSnippet(tag.raw),
|
|
186
|
-
});
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
return findings;
|
|
190
|
-
},
|
|
191
|
-
];
|
|
192
|
-
//# sourceMappingURL=textures.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"textures.js","sourceRoot":"","sources":["../../../src/lint/rules/textures.ts"],"names":[],"mappings":"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"}
|
package/dist/lint/types.d.ts
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
export type HyperframeLintSeverity = "error" | "warning" | "info";
|
|
2
|
-
export type HyperframeLintFinding = {
|
|
3
|
-
code: string;
|
|
4
|
-
severity: HyperframeLintSeverity;
|
|
5
|
-
message: string;
|
|
6
|
-
file?: string;
|
|
7
|
-
selector?: string;
|
|
8
|
-
elementId?: string;
|
|
9
|
-
fixHint?: string;
|
|
10
|
-
snippet?: string;
|
|
11
|
-
};
|
|
12
|
-
export type HyperframeLintResult = {
|
|
13
|
-
ok: boolean;
|
|
14
|
-
errorCount: number;
|
|
15
|
-
warningCount: number;
|
|
16
|
-
infoCount: number;
|
|
17
|
-
findings: HyperframeLintFinding[];
|
|
18
|
-
};
|
|
19
|
-
export type HyperframeLinterOptions = {
|
|
20
|
-
filePath?: string;
|
|
21
|
-
isSubComposition?: boolean;
|
|
22
|
-
externalStyles?: Array<{
|
|
23
|
-
href: string;
|
|
24
|
-
content: string;
|
|
25
|
-
}>;
|
|
26
|
-
/**
|
|
27
|
-
* Set to `true` when linting compositions destined for distributed / Lambda
|
|
28
|
-
* rendering, where system-font capture (`allowSystemFontCapture`) is
|
|
29
|
-
* disabled. When `true`, the `system_font_will_alias` rule is elevated from
|
|
30
|
-
* `"info"` to `"warning"` because the alias substitution will NOT happen at
|
|
31
|
-
* render time — the font will silently fall back to whatever the OS provides.
|
|
32
|
-
*/
|
|
33
|
-
distributed?: boolean;
|
|
34
|
-
};
|
|
35
|
-
export type LintRule<TContext> = (ctx: TContext) => HyperframeLintFinding[] | Promise<HyperframeLintFinding[]>;
|
|
36
|
-
//# sourceMappingURL=types.d.ts.map
|
package/dist/lint/types.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/lint/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,sBAAsB,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAElE,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,sBAAsB,CAAC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,OAAO,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC1D;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB,CAAC;AAIF,MAAM,MAAM,QAAQ,CAAC,QAAQ,IAAI,CAC/B,GAAG,EAAE,QAAQ,KACV,qBAAqB,EAAE,GAAG,OAAO,CAAC,qBAAqB,EAAE,CAAC,CAAC"}
|
package/dist/lint/types.js
DELETED
package/dist/lint/types.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/lint/types.ts"],"names":[],"mappings":""}
|
package/dist/lint/utils.d.ts
DELETED
|
@@ -1,55 +0,0 @@
|
|
|
1
|
-
export type OpenTag = {
|
|
2
|
-
raw: string;
|
|
3
|
-
name: string;
|
|
4
|
-
attrs: string;
|
|
5
|
-
index: number;
|
|
6
|
-
};
|
|
7
|
-
export type ExtractedBlock = {
|
|
8
|
-
attrs: string;
|
|
9
|
-
content: string;
|
|
10
|
-
raw: string;
|
|
11
|
-
index: number;
|
|
12
|
-
};
|
|
13
|
-
export declare const STYLE_BLOCK_PATTERN: RegExp;
|
|
14
|
-
export declare const SCRIPT_BLOCK_PATTERN: RegExp;
|
|
15
|
-
export declare const TIMELINE_REGISTRY_INIT_PATTERN: RegExp;
|
|
16
|
-
export declare const TIMELINE_REGISTRY_ASSIGN_PATTERN: RegExp;
|
|
17
|
-
export declare const WINDOW_TIMELINE_ASSIGN_PATTERN: RegExp;
|
|
18
|
-
export declare const INVALID_SCRIPT_CLOSE_PATTERN: RegExp;
|
|
19
|
-
export declare function extractOpenTags(source: string): OpenTag[];
|
|
20
|
-
export declare function extractBlocks(source: string, pattern: RegExp): ExtractedBlock[];
|
|
21
|
-
/**
|
|
22
|
-
* Find the `<html>` open tag in the source. Distinct from `findRootTag`,
|
|
23
|
-
* which returns the first element inside `<body>` — the latter is "the
|
|
24
|
-
* composition's visible root", whereas `<html>` is where document-level
|
|
25
|
-
* metadata like `data-composition-variables` lives.
|
|
26
|
-
*/
|
|
27
|
-
export declare function findHtmlTag(source: string): OpenTag | null;
|
|
28
|
-
export declare function findRootTag(source: string): OpenTag | null;
|
|
29
|
-
export declare function readAttr(tagSource: string, attr: string): string | null;
|
|
30
|
-
/**
|
|
31
|
-
* Read an attribute that may legitimately contain the opposite quote
|
|
32
|
-
* character. `readAttr` truncates `data-variable-values='{"title":"Hello"}'`
|
|
33
|
-
* at the first internal `"` because its `[^"']+` class excludes both quote
|
|
34
|
-
* types. This variant alternates: a double-quoted value never contains an
|
|
35
|
-
* unescaped `"`, and a single-quoted value never contains an unescaped `'`,
|
|
36
|
-
* so each branch can use a quote-specific class.
|
|
37
|
-
*
|
|
38
|
-
* Use for attributes whose values are JSON or otherwise carry the opposite
|
|
39
|
-
* quote character. Existing single-token attributes (`id`, `class`, etc.)
|
|
40
|
-
* stick with `readAttr` for consistency with the rest of the lint code.
|
|
41
|
-
*/
|
|
42
|
-
export declare function readJsonAttr(tagSource: string, attr: string): string | null;
|
|
43
|
-
export declare function collectCompositionIds(tags: OpenTag[]): Set<string>;
|
|
44
|
-
export declare function extractCompositionIdsFromCss(css: string): string[];
|
|
45
|
-
export declare function extractTimelineRegistryKeys(source: string): string[];
|
|
46
|
-
export declare function getInlineScriptSyntaxError(source: string): string | null;
|
|
47
|
-
export declare function stripJsComments(source: string): string;
|
|
48
|
-
export declare function stripHtmlComments(source: string): string;
|
|
49
|
-
export declare function extractScriptTextsAndSrcs(scripts: ExtractedBlock[]): {
|
|
50
|
-
texts: string[];
|
|
51
|
-
srcs: string[];
|
|
52
|
-
};
|
|
53
|
-
export declare function isMediaTag(tagName: string): boolean;
|
|
54
|
-
export declare function truncateSnippet(value: string, maxLength?: number): string | undefined;
|
|
55
|
-
//# sourceMappingURL=utils.d.ts.map
|
package/dist/lint/utils.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/lint/utils.ts"],"names":[],"mappings":"AAGA,MAAM,MAAM,OAAO,GAAG;IACpB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAGF,eAAO,MAAM,mBAAmB,QAA0C,CAAC;AAC3E,eAAO,MAAM,oBAAoB,QAA4C,CAAC;AAE9E,eAAO,MAAM,8BAA8B,QACuF,CAAC;AACnI,eAAO,MAAM,gCAAgC,QACgB,CAAC;AAC9D,eAAO,MAAM,8BAA8B,QAC4D,CAAC;AACxG,eAAO,MAAM,4BAA4B,QAA+C,CAAC;AAKzF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,EAAE,CAezD;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,cAAc,EAAE,CAa/E;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CAS1D;AAED,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,IAAI,CA4B1D;AAED,wBAAgB,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAKvE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAM3E;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC,MAAM,CAAC,CAOlE;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,EAAE,CAWlE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAYpE;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUxE;AAGD,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CA8DtD;AAuBD,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAOxD;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,cAAc,EAAE,GAAG;IACpE,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB,CAIA;AAED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAEnD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,SAAM,GAAG,MAAM,GAAG,SAAS,CAKlF"}
|