@hyperframes/core 0.8.66 → 0.8.68
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.
|
@@ -1,18 +1,2 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Sanitize a figma-exported SVG before it touches disk (design spec §5).
|
|
3
|
-
*
|
|
4
|
-
* Threat model: figma-SHAPED exports, hardened against the cheap adversarial
|
|
5
|
-
* variants (nesting, unquoted attrs, scheme smuggling). This is a lexical
|
|
6
|
-
* pass, not a general-purpose HTML sanitizer — content from arbitrary
|
|
7
|
-
* untrusted sources should go through a real sanitizer (DOMPurify) instead.
|
|
8
|
-
* Strips:
|
|
9
|
-
* - <script> elements (with content) and <style> blocks (@import exfil)
|
|
10
|
-
* - <foreignObject> subtrees (arbitrary embedded HTML)
|
|
11
|
-
* - on* event-handler attributes (quoted and unquoted)
|
|
12
|
-
* - href/xlink:href values unless local fragment (#id) or data:image/
|
|
13
|
-
*
|
|
14
|
-
* Keeps local fragment refs (#id) and data:image embeds, which figma uses
|
|
15
|
-
* for clip paths and embedded rasters.
|
|
16
|
-
*/
|
|
17
1
|
export declare function sanitizeSvg(svg: string): string;
|
|
18
2
|
//# sourceMappingURL=sanitizeSvg.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizeSvg.d.ts","sourceRoot":"","sources":["../../src/figma/sanitizeSvg.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"sanitizeSvg.d.ts","sourceRoot":"","sources":["../../src/figma/sanitizeSvg.ts"],"names":[],"mappings":"AAqWA,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAoB/C"}
|
|
@@ -1,52 +1,369 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
-
* Threat model: figma-SHAPED exports, hardened against the cheap adversarial
|
|
5
|
-
* variants (nesting, unquoted attrs, scheme smuggling). This is a lexical
|
|
6
|
-
* pass, not a general-purpose HTML sanitizer — content from arbitrary
|
|
7
|
-
* untrusted sources should go through a real sanitizer (DOMPurify) instead.
|
|
8
|
-
* Strips:
|
|
9
|
-
* - <script> elements (with content) and <style> blocks (@import exfil)
|
|
10
|
-
* - <foreignObject> subtrees (arbitrary embedded HTML)
|
|
11
|
-
* - on* event-handler attributes (quoted and unquoted)
|
|
12
|
-
* - href/xlink:href values unless local fragment (#id) or data:image/
|
|
13
|
-
*
|
|
14
|
-
* Keeps local fragment refs (#id) and data:image embeds, which figma uses
|
|
15
|
-
* for clip paths and embedded rasters.
|
|
1
|
+
/** Sanitize a figma-exported SVG before it touches disk (design spec §5). DOM-walk allowlist
|
|
2
|
+
* (linkedom): unknown elements and attributes are dropped by default rather than pattern-matched
|
|
3
|
+
* as dangerous, so a new SVG feature can't reopen a class of bug the way regex denylisting did.
|
|
16
4
|
*/
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
5
|
+
import { DOMParser } from "linkedom";
|
|
6
|
+
const SAFE_ELEMENTS = new Set([
|
|
7
|
+
"svg",
|
|
8
|
+
"g",
|
|
9
|
+
"defs",
|
|
10
|
+
"symbol",
|
|
11
|
+
"use",
|
|
12
|
+
"image",
|
|
13
|
+
"a",
|
|
14
|
+
"switch",
|
|
15
|
+
"rect",
|
|
16
|
+
"circle",
|
|
17
|
+
"ellipse",
|
|
18
|
+
"line",
|
|
19
|
+
"polyline",
|
|
20
|
+
"polygon",
|
|
21
|
+
"path",
|
|
22
|
+
"text",
|
|
23
|
+
"tspan",
|
|
24
|
+
"textPath",
|
|
25
|
+
"linearGradient",
|
|
26
|
+
"radialGradient",
|
|
27
|
+
"stop",
|
|
28
|
+
"pattern",
|
|
29
|
+
"mask",
|
|
30
|
+
"clipPath",
|
|
31
|
+
"marker",
|
|
32
|
+
"filter",
|
|
33
|
+
"feBlend",
|
|
34
|
+
"feColorMatrix",
|
|
35
|
+
"feComponentTransfer",
|
|
36
|
+
"feComposite",
|
|
37
|
+
"feConvolveMatrix",
|
|
38
|
+
"feDiffuseLighting",
|
|
39
|
+
"feDisplacementMap",
|
|
40
|
+
"feDistantLight",
|
|
41
|
+
"feDropShadow",
|
|
42
|
+
"feFlood",
|
|
43
|
+
"feFuncA",
|
|
44
|
+
"feFuncB",
|
|
45
|
+
"feFuncG",
|
|
46
|
+
"feFuncR",
|
|
47
|
+
"feGaussianBlur",
|
|
48
|
+
"feImage",
|
|
49
|
+
"feMerge",
|
|
50
|
+
"feMergeNode",
|
|
51
|
+
"feMorphology",
|
|
52
|
+
"feOffset",
|
|
53
|
+
"fePointLight",
|
|
54
|
+
"feSpecularLighting",
|
|
55
|
+
"feSpotLight",
|
|
56
|
+
"feTile",
|
|
57
|
+
"feTurbulence",
|
|
58
|
+
"title",
|
|
59
|
+
"desc",
|
|
60
|
+
"metadata",
|
|
61
|
+
"style",
|
|
62
|
+
]);
|
|
63
|
+
// Local names only — a namespace prefix (xlink:href, x:href, ...) is stripped before this
|
|
64
|
+
// lookup, so it doesn't matter which prefix an attacker aliases onto a real or fake namespace.
|
|
65
|
+
const SAFE_ATTRIBUTES = new Set([
|
|
66
|
+
"id",
|
|
67
|
+
"class",
|
|
68
|
+
"style",
|
|
69
|
+
"transform",
|
|
70
|
+
"viewBox",
|
|
71
|
+
"width",
|
|
72
|
+
"height",
|
|
73
|
+
"x",
|
|
74
|
+
"y",
|
|
75
|
+
"x1",
|
|
76
|
+
"y1",
|
|
77
|
+
"x2",
|
|
78
|
+
"y2",
|
|
79
|
+
"cx",
|
|
80
|
+
"cy",
|
|
81
|
+
"r",
|
|
82
|
+
"rx",
|
|
83
|
+
"ry",
|
|
84
|
+
"fx",
|
|
85
|
+
"fy",
|
|
86
|
+
"points",
|
|
87
|
+
"d",
|
|
88
|
+
"offset",
|
|
89
|
+
"enable-background",
|
|
90
|
+
"gradientUnits",
|
|
91
|
+
"gradientTransform",
|
|
92
|
+
"spreadMethod",
|
|
93
|
+
"patternUnits",
|
|
94
|
+
"patternContentUnits",
|
|
95
|
+
"patternTransform",
|
|
96
|
+
"maskUnits",
|
|
97
|
+
"maskContentUnits",
|
|
98
|
+
"clipPathUnits",
|
|
99
|
+
"clip-rule",
|
|
100
|
+
"filterUnits",
|
|
101
|
+
"primitiveUnits",
|
|
102
|
+
"preserveAspectRatio",
|
|
103
|
+
"space",
|
|
104
|
+
"lang",
|
|
105
|
+
"role",
|
|
106
|
+
"focusable",
|
|
107
|
+
"tabindex",
|
|
108
|
+
"version",
|
|
109
|
+
"baseProfile",
|
|
110
|
+
"fill",
|
|
111
|
+
"fill-opacity",
|
|
112
|
+
"fill-rule",
|
|
113
|
+
"stroke",
|
|
114
|
+
"stroke-width",
|
|
115
|
+
"stroke-opacity",
|
|
116
|
+
"stroke-linecap",
|
|
117
|
+
"stroke-linejoin",
|
|
118
|
+
"stroke-miterlimit",
|
|
119
|
+
"stroke-dasharray",
|
|
120
|
+
"stroke-dashoffset",
|
|
121
|
+
"opacity",
|
|
122
|
+
"color",
|
|
123
|
+
"stop-color",
|
|
124
|
+
"stop-opacity",
|
|
125
|
+
"font-family",
|
|
126
|
+
"font-size",
|
|
127
|
+
"font-weight",
|
|
128
|
+
"font-style",
|
|
129
|
+
"text-anchor",
|
|
130
|
+
"dominant-baseline",
|
|
131
|
+
"alignment-baseline",
|
|
132
|
+
"letter-spacing",
|
|
133
|
+
"word-spacing",
|
|
134
|
+
"text-decoration",
|
|
135
|
+
"clip-path",
|
|
136
|
+
"mask",
|
|
137
|
+
"filter",
|
|
138
|
+
"marker-start",
|
|
139
|
+
"marker-mid",
|
|
140
|
+
"marker-end",
|
|
141
|
+
"marker",
|
|
142
|
+
"cursor",
|
|
143
|
+
"pointer-events",
|
|
144
|
+
"visibility",
|
|
145
|
+
"display",
|
|
146
|
+
"overflow",
|
|
147
|
+
"vector-effect",
|
|
148
|
+
"paint-order",
|
|
149
|
+
"color-interpolation",
|
|
150
|
+
"color-interpolation-filters",
|
|
151
|
+
"isolation",
|
|
152
|
+
"mix-blend-mode",
|
|
153
|
+
"startOffset",
|
|
154
|
+
"method",
|
|
155
|
+
"spacing",
|
|
156
|
+
"side",
|
|
157
|
+
"textLength",
|
|
158
|
+
"lengthAdjust",
|
|
159
|
+
"in",
|
|
160
|
+
"in2",
|
|
161
|
+
"result",
|
|
162
|
+
"mode",
|
|
163
|
+
"type",
|
|
164
|
+
"values",
|
|
165
|
+
"dx",
|
|
166
|
+
"dy",
|
|
167
|
+
"stdDeviation",
|
|
168
|
+
"edgeMode",
|
|
169
|
+
"k1",
|
|
170
|
+
"k2",
|
|
171
|
+
"k3",
|
|
172
|
+
"k4",
|
|
173
|
+
"operator",
|
|
174
|
+
"radius",
|
|
175
|
+
"scale",
|
|
176
|
+
"xChannelSelector",
|
|
177
|
+
"yChannelSelector",
|
|
178
|
+
"baseFrequency",
|
|
179
|
+
"numOctaves",
|
|
180
|
+
"seed",
|
|
181
|
+
"stitchTiles",
|
|
182
|
+
"tableValues",
|
|
183
|
+
"slope",
|
|
184
|
+
"intercept",
|
|
185
|
+
"amplitude",
|
|
186
|
+
"exponent",
|
|
187
|
+
"order",
|
|
188
|
+
"divisor",
|
|
189
|
+
"bias",
|
|
190
|
+
"targetX",
|
|
191
|
+
"targetY",
|
|
192
|
+
"kernelMatrix",
|
|
193
|
+
"preserveAlpha",
|
|
194
|
+
"kernelUnitLength",
|
|
195
|
+
"surfaceScale",
|
|
196
|
+
"diffuseConstant",
|
|
197
|
+
"specularConstant",
|
|
198
|
+
"specularExponent",
|
|
199
|
+
"lighting-color",
|
|
200
|
+
"flood-color",
|
|
201
|
+
"flood-opacity",
|
|
202
|
+
"azimuth",
|
|
203
|
+
"elevation",
|
|
204
|
+
"pointsAtX",
|
|
205
|
+
"pointsAtY",
|
|
206
|
+
"pointsAtZ",
|
|
207
|
+
"limitingConeAngle",
|
|
208
|
+
]);
|
|
209
|
+
function localName(name) {
|
|
210
|
+
const i = name.lastIndexOf(":");
|
|
211
|
+
return i === -1 ? name : name.slice(i + 1);
|
|
212
|
+
}
|
|
213
|
+
/** href/xlink:href (any prefix): a same-document fragment always, `data:image/` only off `<a>`
|
|
214
|
+
* (an `<a>` navigates the top-level document on click; `<use>`/`<image>`/`<feImage>` only fetch
|
|
215
|
+
* it as an inert image resource). */
|
|
216
|
+
function isAllowedHref(value, tagLocalName) {
|
|
217
|
+
const v = value.trim();
|
|
218
|
+
if (v.startsWith("#"))
|
|
219
|
+
return true;
|
|
220
|
+
return /^data:image\//i.test(v) && tagLocalName.toLowerCase() !== "a";
|
|
221
|
+
}
|
|
222
|
+
/** CSS loads a resource only through a function (`url()`, `image-set()`, `src()`, ...) or
|
|
223
|
+
* `@import`, so CSS text passes only if every function is on this compute-only list, every
|
|
224
|
+
* `url()` is a same-document fragment, and there is no `@import`. `""` is a bare `(...)` group. */
|
|
225
|
+
const SAFE_CSS_FUNCTIONS = new Set([
|
|
226
|
+
"",
|
|
227
|
+
"url",
|
|
228
|
+
"rgb",
|
|
229
|
+
"rgba",
|
|
230
|
+
"hsl",
|
|
231
|
+
"hsla",
|
|
232
|
+
"hwb",
|
|
233
|
+
"lab",
|
|
234
|
+
"lch",
|
|
235
|
+
"oklab",
|
|
236
|
+
"oklch",
|
|
237
|
+
"color",
|
|
238
|
+
"color-mix",
|
|
239
|
+
"var",
|
|
240
|
+
"calc",
|
|
241
|
+
"min",
|
|
242
|
+
"max",
|
|
243
|
+
"clamp",
|
|
244
|
+
"matrix",
|
|
245
|
+
"matrix3d",
|
|
246
|
+
"translate",
|
|
247
|
+
"translatex",
|
|
248
|
+
"translatey",
|
|
249
|
+
"translatez",
|
|
250
|
+
"translate3d",
|
|
251
|
+
"scale",
|
|
252
|
+
"scalex",
|
|
253
|
+
"scaley",
|
|
254
|
+
"scalez",
|
|
255
|
+
"scale3d",
|
|
256
|
+
"rotate",
|
|
257
|
+
"rotatex",
|
|
258
|
+
"rotatey",
|
|
259
|
+
"rotatez",
|
|
260
|
+
"rotate3d",
|
|
261
|
+
"skew",
|
|
262
|
+
"skewx",
|
|
263
|
+
"skewy",
|
|
264
|
+
"perspective",
|
|
265
|
+
"cubic-bezier",
|
|
266
|
+
"steps",
|
|
267
|
+
"blur",
|
|
268
|
+
"brightness",
|
|
269
|
+
"contrast",
|
|
270
|
+
"drop-shadow",
|
|
271
|
+
"grayscale",
|
|
272
|
+
"hue-rotate",
|
|
273
|
+
"invert",
|
|
274
|
+
"opacity",
|
|
275
|
+
"saturate",
|
|
276
|
+
"sepia",
|
|
277
|
+
]);
|
|
278
|
+
function decodeCssEscape(hex, char) {
|
|
279
|
+
if (hex === undefined)
|
|
280
|
+
return char ?? "";
|
|
281
|
+
const cp = parseInt(hex, 16);
|
|
282
|
+
const invalid = cp === 0 || cp > 0x10ffff || (cp >= 0xd800 && cp <= 0xdfff);
|
|
283
|
+
return invalid ? "�" : String.fromCodePoint(cp);
|
|
284
|
+
}
|
|
285
|
+
// A browser reads `\75 rl(` as `url(`, so every check runs on escape-decoded, lowercased text.
|
|
286
|
+
// Comments stay in: CSS never lets one join a function name or `@import`, only split tokens.
|
|
287
|
+
function canonicalCss(text) {
|
|
288
|
+
return text
|
|
289
|
+
.replace(/\\([0-9a-f]{1,6})[ \t\n\r\f]?|\\([\s\S])/gi, (_, hex, char) => decodeCssEscape(hex, char))
|
|
290
|
+
.toLowerCase();
|
|
291
|
+
}
|
|
292
|
+
// The scans below are single-pass indexOf loops, not regexes: the input is attacker-controlled
|
|
293
|
+
// and a backtracking regex here stalled the CLI for seconds on a few KB of padding.
|
|
294
|
+
function isCssNameChar(c) {
|
|
295
|
+
return c !== undefined && /[-\w]/.test(c);
|
|
296
|
+
}
|
|
297
|
+
function functionNameBefore(css, paren) {
|
|
298
|
+
let start = paren;
|
|
299
|
+
while (isCssNameChar(css[start - 1]))
|
|
300
|
+
start--;
|
|
301
|
+
return css.slice(start, paren);
|
|
302
|
+
}
|
|
303
|
+
function everyFunctionIsSafe(css) {
|
|
304
|
+
for (let at = css.indexOf("("); at !== -1; at = css.indexOf("(", at + 1)) {
|
|
305
|
+
if (!SAFE_CSS_FUNCTIONS.has(functionNameBefore(css, at)))
|
|
306
|
+
return false;
|
|
307
|
+
}
|
|
308
|
+
return true;
|
|
309
|
+
}
|
|
310
|
+
// A value holding "(" is rejected, so no second url( can hide inside the one being checked.
|
|
311
|
+
function isLocalUrlValue(raw) {
|
|
312
|
+
const value = raw.trim().replace(/^['"]/, "");
|
|
313
|
+
return value.startsWith("#") && !value.includes("(");
|
|
314
|
+
}
|
|
315
|
+
function everyUrlIsLocalFragment(css) {
|
|
316
|
+
for (let at = css.indexOf("url("); at !== -1;) {
|
|
317
|
+
const close = css.indexOf(")", at + 4);
|
|
318
|
+
if (close === -1 || !isLocalUrlValue(css.slice(at + 4, close)))
|
|
319
|
+
return false;
|
|
320
|
+
at = css.indexOf("url(", close + 1);
|
|
321
|
+
}
|
|
322
|
+
return true;
|
|
323
|
+
}
|
|
324
|
+
function isSafeCss(text) {
|
|
325
|
+
const css = canonicalCss(text);
|
|
326
|
+
return !css.includes("@import") && everyFunctionIsSafe(css) && everyUrlIsLocalFragment(css);
|
|
327
|
+
}
|
|
328
|
+
function isXmlnsAttribute(name) {
|
|
329
|
+
return name === "xmlns" || name.startsWith("xmlns:");
|
|
330
|
+
}
|
|
331
|
+
// aria-*/data-* are inert key/value pairs everywhere else; still CSS-checked below,
|
|
332
|
+
// defensively, rather than trusted just because no browser reads CSS from them today.
|
|
333
|
+
function isKnownAttribute(local) {
|
|
334
|
+
return SAFE_ATTRIBUTES.has(local) || local.startsWith("aria-") || local.startsWith("data-");
|
|
335
|
+
}
|
|
336
|
+
// Every kept value goes through isSafeCss (style= and presentation attributes are CSS); a
|
|
337
|
+
// non-CSS value that merely looks like a call, e.g. id="XRP-(XRP)", is dropped: fails closed.
|
|
338
|
+
function isSafeAttribute(tagLocalName, name, value) {
|
|
339
|
+
if (isXmlnsAttribute(name))
|
|
340
|
+
return true;
|
|
341
|
+
const local = localName(name);
|
|
342
|
+
if (local === "href")
|
|
343
|
+
return isAllowedHref(value, tagLocalName);
|
|
344
|
+
return isKnownAttribute(local) && isSafeCss(value);
|
|
26
345
|
}
|
|
27
346
|
export function sanitizeSvg(svg) {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
const v = value.trim().toLowerCase();
|
|
50
|
-
return v.startsWith("#") || v.startsWith("data:image/");
|
|
347
|
+
const doc = new DOMParser().parseFromString(svg, "image/svg+xml");
|
|
348
|
+
const root = doc.documentElement;
|
|
349
|
+
if (!root)
|
|
350
|
+
return "";
|
|
351
|
+
for (const el of [...doc.querySelectorAll("*")]) {
|
|
352
|
+
if (!el.isConnected)
|
|
353
|
+
continue;
|
|
354
|
+
if (!SAFE_ELEMENTS.has(el.tagName)) {
|
|
355
|
+
el.remove();
|
|
356
|
+
continue;
|
|
357
|
+
}
|
|
358
|
+
if (el.tagName === "style" && !isSafeCss(el.textContent)) {
|
|
359
|
+
el.remove();
|
|
360
|
+
continue;
|
|
361
|
+
}
|
|
362
|
+
for (const attr of [...el.attributes]) {
|
|
363
|
+
if (!isSafeAttribute(el.tagName, attr.name, attr.value))
|
|
364
|
+
el.removeAttribute(attr.name);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
return root.isConnected ? root.outerHTML : "";
|
|
51
368
|
}
|
|
52
369
|
//# sourceMappingURL=sanitizeSvg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sanitizeSvg.js","sourceRoot":"","sources":["../../src/figma/sanitizeSvg.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"sanitizeSvg.js","sourceRoot":"","sources":["../../src/figma/sanitizeSvg.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC;IAC5B,KAAK;IACL,GAAG;IACH,MAAM;IACN,QAAQ;IACR,KAAK;IACL,OAAO;IACP,GAAG;IACH,QAAQ;IACR,MAAM;IACN,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,SAAS;IACT,MAAM;IACN,MAAM;IACN,OAAO;IACP,UAAU;IACV,gBAAgB;IAChB,gBAAgB;IAChB,MAAM;IACN,SAAS;IACT,MAAM;IACN,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,eAAe;IACf,qBAAqB;IACrB,aAAa;IACb,kBAAkB;IAClB,mBAAmB;IACnB,mBAAmB;IACnB,gBAAgB;IAChB,cAAc;IACd,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,SAAS;IACT,gBAAgB;IAChB,SAAS;IACT,SAAS;IACT,aAAa;IACb,cAAc;IACd,UAAU;IACV,cAAc;IACd,oBAAoB;IACpB,aAAa;IACb,QAAQ;IACR,cAAc;IACd,OAAO;IACP,MAAM;IACN,UAAU;IACV,OAAO;CACR,CAAC,CAAC;AAEH,0FAA0F;AAC1F,+FAA+F;AAC/F,MAAM,eAAe,GAAG,IAAI,GAAG,CAAC;IAC9B,IAAI;IACJ,OAAO;IACP,OAAO;IACP,WAAW;IACX,SAAS;IACT,OAAO;IACP,QAAQ;IACR,GAAG;IACH,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,GAAG;IACH,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,QAAQ;IACR,GAAG;IACH,QAAQ;IACR,mBAAmB;IACnB,eAAe;IACf,mBAAmB;IACnB,cAAc;IACd,cAAc;IACd,qBAAqB;IACrB,kBAAkB;IAClB,WAAW;IACX,kBAAkB;IAClB,eAAe;IACf,WAAW;IACX,aAAa;IACb,gBAAgB;IAChB,qBAAqB;IACrB,OAAO;IACP,MAAM;IACN,MAAM;IACN,WAAW;IACX,UAAU;IACV,SAAS;IACT,aAAa;IACb,MAAM;IACN,cAAc;IACd,WAAW;IACX,QAAQ;IACR,cAAc;IACd,gBAAgB;IAChB,gBAAgB;IAChB,iBAAiB;IACjB,mBAAmB;IACnB,kBAAkB;IAClB,mBAAmB;IACnB,SAAS;IACT,OAAO;IACP,YAAY;IACZ,cAAc;IACd,aAAa;IACb,WAAW;IACX,aAAa;IACb,YAAY;IACZ,aAAa;IACb,mBAAmB;IACnB,oBAAoB;IACpB,gBAAgB;IAChB,cAAc;IACd,iBAAiB;IACjB,WAAW;IACX,MAAM;IACN,QAAQ;IACR,cAAc;IACd,YAAY;IACZ,YAAY;IACZ,QAAQ;IACR,QAAQ;IACR,gBAAgB;IAChB,YAAY;IACZ,SAAS;IACT,UAAU;IACV,eAAe;IACf,aAAa;IACb,qBAAqB;IACrB,6BAA6B;IAC7B,WAAW;IACX,gBAAgB;IAChB,aAAa;IACb,QAAQ;IACR,SAAS;IACT,MAAM;IACN,YAAY;IACZ,cAAc;IACd,IAAI;IACJ,KAAK;IACL,QAAQ;IACR,MAAM;IACN,MAAM;IACN,QAAQ;IACR,IAAI;IACJ,IAAI;IACJ,cAAc;IACd,UAAU;IACV,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,IAAI;IACJ,UAAU;IACV,QAAQ;IACR,OAAO;IACP,kBAAkB;IAClB,kBAAkB;IAClB,eAAe;IACf,YAAY;IACZ,MAAM;IACN,aAAa;IACb,aAAa;IACb,OAAO;IACP,WAAW;IACX,WAAW;IACX,UAAU;IACV,OAAO;IACP,SAAS;IACT,MAAM;IACN,SAAS;IACT,SAAS;IACT,cAAc;IACd,eAAe;IACf,kBAAkB;IAClB,cAAc;IACd,iBAAiB;IACjB,kBAAkB;IAClB,kBAAkB;IAClB,gBAAgB;IAChB,aAAa;IACb,eAAe;IACf,SAAS;IACT,WAAW;IACX,WAAW;IACX,WAAW;IACX,WAAW;IACX,mBAAmB;CACpB,CAAC,CAAC;AAEH,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,CAAC,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAChC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED;;qCAEqC;AACrC,SAAS,aAAa,CAAC,KAAa,EAAE,YAAoB;IACxD,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,YAAY,CAAC,WAAW,EAAE,KAAK,GAAG,CAAC;AACxE,CAAC;AAED;;mGAEmG;AACnG,MAAM,kBAAkB,GAAG,IAAI,GAAG,CAAC;IACjC,EAAE;IACF,KAAK;IACL,KAAK;IACL,MAAM;IACN,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,KAAK;IACL,OAAO;IACP,OAAO;IACP,OAAO;IACP,WAAW;IACX,KAAK;IACL,MAAM;IACN,KAAK;IACL,KAAK;IACL,OAAO;IACP,QAAQ;IACR,UAAU;IACV,WAAW;IACX,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,aAAa;IACb,OAAO;IACP,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,SAAS;IACT,QAAQ;IACR,SAAS;IACT,SAAS;IACT,SAAS;IACT,UAAU;IACV,MAAM;IACN,OAAO;IACP,OAAO;IACP,aAAa;IACb,cAAc;IACd,OAAO;IACP,MAAM;IACN,YAAY;IACZ,UAAU;IACV,aAAa;IACb,WAAW;IACX,YAAY;IACZ,QAAQ;IACR,SAAS;IACT,UAAU;IACV,OAAO;CACR,CAAC,CAAC;AAEH,SAAS,eAAe,CAAC,GAAuB,EAAE,IAAwB;IACxE,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,IAAI,EAAE,CAAC;IACzC,MAAM,EAAE,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC7B,MAAM,OAAO,GAAG,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,QAAQ,IAAI,CAAC,EAAE,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,CAAC,CAAC;IAC5E,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC;AAClD,CAAC;AAED,+FAA+F;AAC/F,6FAA6F;AAC7F,SAAS,YAAY,CAAC,IAAY;IAChC,OAAO,IAAI;SACR,OAAO,CAAC,4CAA4C,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,CACtE,eAAe,CAAC,GAAG,EAAE,IAAI,CAAC,CAC3B;SACA,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,+FAA+F;AAC/F,oFAAoF;AACpF,SAAS,aAAa,CAAC,CAAqB;IAC1C,OAAO,CAAC,KAAK,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC5C,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW,EAAE,KAAa;IACpD,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAAE,KAAK,EAAE,CAAC;IAC9C,OAAO,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;AACjC,CAAC;AAED,SAAS,mBAAmB,CAAC,GAAW;IACtC,KAAK,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC;QACzE,IAAI,CAAC,kBAAkB,CAAC,GAAG,CAAC,kBAAkB,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;IACzE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,4FAA4F;AAC5F,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;IAC9C,OAAO,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,uBAAuB,CAAC,GAAW;IAC1C,KAAK,IAAI,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,GAAI,CAAC;QAC/C,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,KAAK,KAAK,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC7E,EAAE,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,GAAG,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,SAAS,CAAC,IAAY;IAC7B,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,uBAAuB,CAAC,GAAG,CAAC,CAAC;AAC9F,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAY;IACpC,OAAO,IAAI,KAAK,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;AACvD,CAAC;AAED,oFAAoF;AACpF,sFAAsF;AACtF,SAAS,gBAAgB,CAAC,KAAa;IACrC,OAAO,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAC9F,CAAC;AAED,0FAA0F;AAC1F,8FAA8F;AAC9F,SAAS,eAAe,CAAC,YAAoB,EAAE,IAAY,EAAE,KAAa;IACxE,IAAI,gBAAgB,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACxC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;IAC9B,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC;IAChE,OAAO,gBAAgB,CAAC,KAAK,CAAC,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;AACrD,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,MAAM,GAAG,GAAG,IAAI,SAAS,EAAE,CAAC,eAAe,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;IAClE,MAAM,IAAI,GAAG,GAAG,CAAC,eAAe,CAAC;IACjC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAErB,KAAK,MAAM,EAAE,IAAI,CAAC,GAAG,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;QAChD,IAAI,CAAC,EAAE,CAAC,WAAW;YAAE,SAAS;QAC9B,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;YACnC,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,IAAI,EAAE,CAAC,OAAO,KAAK,OAAO,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,WAAW,CAAC,EAAE,CAAC;YACzD,EAAE,CAAC,MAAM,EAAE,CAAC;YACZ,SAAS;QACX,CAAC;QACD,KAAK,MAAM,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC;gBAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzF,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC;AAChD,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hyperframes/core",
|
|
3
|
-
"version": "0.8.
|
|
3
|
+
"version": "0.8.68",
|
|
4
4
|
"description": "",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
@@ -306,9 +306,9 @@
|
|
|
306
306
|
"bpm-detective": "^2.0.5",
|
|
307
307
|
"linkedom": "^0.18.12",
|
|
308
308
|
"postcss": "^8.5.8",
|
|
309
|
-
"@hyperframes/lint": "0.8.
|
|
310
|
-
"@hyperframes/parsers": "0.8.
|
|
311
|
-
"@hyperframes/studio-server": "0.8.
|
|
309
|
+
"@hyperframes/lint": "0.8.68",
|
|
310
|
+
"@hyperframes/parsers": "0.8.68",
|
|
311
|
+
"@hyperframes/studio-server": "0.8.68"
|
|
312
312
|
},
|
|
313
313
|
"devDependencies": {
|
|
314
314
|
"@types/jsdom": "^28.0.0",
|