hyperframes 0.8.24 → 0.8.26
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/cli.js +31 -6
- package/dist/fontLocalizeCli.js +2 -2
- package/dist/hyperframes-player.global.js +1 -1
- package/dist/studio/assets/{hyperframes-player-CTQCs_KG.js → hyperframes-player-C-CArn13.js} +1 -1
- package/dist/studio/assets/{index-okdE01ky.js → index-BIXyJgK5.js} +1 -1
- package/dist/studio/assets/{index-Bq3M0sjr.js → index-D5yni1t6.js} +218 -218
- package/dist/studio/assets/index-DnRfAiK2.css +1 -0
- package/dist/studio/assets/{index-9WJFcXTP.js → index-pfeP2Y63.js} +1 -1
- package/dist/studio/{chunk-6BT6DTB4.js → chunk-A7S5SGNA.js} +2 -2
- package/dist/studio/chunk-A7S5SGNA.js.map +1 -0
- package/dist/studio/{domEditingLayers-URA7BLWE.js → domEditingLayers-JMMVOGTO.js} +2 -2
- package/dist/studio/index.d.ts +4 -0
- package/dist/studio/index.html +2 -2
- package/dist/studio/index.js +6230 -5019
- package/dist/studio/index.js.map +1 -1
- package/package.json +1 -1
- package/dist/studio/assets/index-yGhfxxoL.css +0 -1
- package/dist/studio/chunk-6BT6DTB4.js.map +0 -1
- /package/dist/studio/{domEditingLayers-URA7BLWE.js.map → domEditingLayers-JMMVOGTO.js.map} +0 -0
package/dist/cli.js
CHANGED
|
@@ -50,7 +50,7 @@ var VERSION;
|
|
|
50
50
|
var init_version = __esm({
|
|
51
51
|
"src/version.ts"() {
|
|
52
52
|
"use strict";
|
|
53
|
-
VERSION = true ? "0.8.
|
|
53
|
+
VERSION = true ? "0.8.26" : "0.0.0-dev";
|
|
54
54
|
}
|
|
55
55
|
});
|
|
56
56
|
|
|
@@ -110075,6 +110075,7 @@ function collectProjectSignatureFiles(projectDir, dir, files) {
|
|
|
110075
110075
|
files.push({
|
|
110076
110076
|
file,
|
|
110077
110077
|
mtimeMs: stat3.mtimeMs,
|
|
110078
|
+
ctimeMs: stat3.ctimeMs,
|
|
110078
110079
|
size: stat3.size,
|
|
110079
110080
|
textContentEligible: isTextContentEligible(file, stat3.size)
|
|
110080
110081
|
});
|
|
@@ -110096,6 +110097,7 @@ function collectProjectSignatureManifestFiles(projectDir, files) {
|
|
|
110096
110097
|
files.push({
|
|
110097
110098
|
file,
|
|
110098
110099
|
mtimeMs: stat3.mtimeMs,
|
|
110100
|
+
ctimeMs: stat3.ctimeMs,
|
|
110099
110101
|
size: stat3.size,
|
|
110100
110102
|
textContentEligible: isTextContentEligible(file, stat3.size)
|
|
110101
110103
|
});
|
|
@@ -110111,6 +110113,8 @@ function createProjectFingerprint(projectDir, files) {
|
|
|
110111
110113
|
hash2.update("\0");
|
|
110112
110114
|
hash2.update(String(entry.mtimeMs));
|
|
110113
110115
|
hash2.update("\0");
|
|
110116
|
+
hash2.update(String(entry.ctimeMs));
|
|
110117
|
+
hash2.update("\0");
|
|
110114
110118
|
hash2.update(entry.textContentEligible ? "text" : "binary");
|
|
110115
110119
|
hash2.update("\0");
|
|
110116
110120
|
}
|
|
@@ -111123,6 +111127,9 @@ function validateGsapMutationRequest(c3, body) {
|
|
|
111123
111127
|
if (!body || typeof body !== "object" || !("type" in body) || !body.type) {
|
|
111124
111128
|
return c3.json({ error: "mutation type required" }, 400);
|
|
111125
111129
|
}
|
|
111130
|
+
if (containsRawGsapExpression(body)) {
|
|
111131
|
+
return c3.json({ error: "raw JavaScript expressions are not accepted" }, 400);
|
|
111132
|
+
}
|
|
111126
111133
|
const unsafeFields = findUnsafeMutationValues(body);
|
|
111127
111134
|
if (unsafeFields.length > 0) return rejectUnsafeMutationValues(c3, unsafeFields);
|
|
111128
111135
|
if (body.type === "shift-positions-batch" && (!("shifts" in body) || !Array.isArray(body.shifts))) {
|
|
@@ -111130,6 +111137,12 @@ function validateGsapMutationRequest(c3, body) {
|
|
|
111130
111137
|
}
|
|
111131
111138
|
return null;
|
|
111132
111139
|
}
|
|
111140
|
+
function containsRawGsapExpression(value) {
|
|
111141
|
+
if (typeof value === "string") return value.startsWith("__raw:");
|
|
111142
|
+
if (Array.isArray(value)) return value.some(containsRawGsapExpression);
|
|
111143
|
+
if (!value || typeof value !== "object") return false;
|
|
111144
|
+
return Object.values(value).some(containsRawGsapExpression);
|
|
111145
|
+
}
|
|
111133
111146
|
async function prepareGsapMutationScript(c3, res, firstMutation) {
|
|
111134
111147
|
const beforeHtml = readFileSync52(res.absPath, "utf-8");
|
|
111135
111148
|
let html = beforeHtml;
|
|
@@ -112428,27 +112441,32 @@ function registerFileRoutes(api, adapter2) {
|
|
|
112428
112441
|
parsed.body.operations
|
|
112429
112442
|
);
|
|
112430
112443
|
if (patched === originalContent) {
|
|
112444
|
+
const version22 = fileContentVersion(originalContent);
|
|
112445
|
+
c3.header("ETag", version22);
|
|
112431
112446
|
return c3.json({
|
|
112432
112447
|
ok: true,
|
|
112433
112448
|
changed: false,
|
|
112434
112449
|
matched,
|
|
112435
112450
|
content: originalContent,
|
|
112436
|
-
path: ctx.filePath
|
|
112451
|
+
path: ctx.filePath,
|
|
112452
|
+
version: version22
|
|
112437
112453
|
});
|
|
112438
112454
|
}
|
|
112439
|
-
const { backupPath } = writeMutationResult(
|
|
112455
|
+
const { backupPath, version: version2 } = writeMutationResult(
|
|
112440
112456
|
c3,
|
|
112441
112457
|
ctx.project.dir,
|
|
112442
112458
|
ctx.filePath,
|
|
112443
112459
|
ctx.absPath,
|
|
112444
112460
|
patched
|
|
112445
112461
|
);
|
|
112462
|
+
c3.header("ETag", version2);
|
|
112446
112463
|
return c3.json({
|
|
112447
112464
|
ok: true,
|
|
112448
112465
|
changed: true,
|
|
112449
112466
|
matched,
|
|
112450
112467
|
content: patched,
|
|
112451
112468
|
path: ctx.filePath,
|
|
112469
|
+
version: version2,
|
|
112452
112470
|
backupPath
|
|
112453
112471
|
});
|
|
112454
112472
|
});
|
|
@@ -113653,8 +113671,9 @@ function registerThumbnailRoutes(api, adapter2) {
|
|
|
113653
113671
|
if (!adapter2.generateThumbnail) {
|
|
113654
113672
|
return c3.json({ error: "Thumbnails not available" }, 501);
|
|
113655
113673
|
}
|
|
113656
|
-
const
|
|
113657
|
-
if (!
|
|
113674
|
+
const resolved2 = await resolveProjectAndSignature(adapter2, c3.req.param("id"));
|
|
113675
|
+
if (!resolved2) return c3.json({ error: "not found" }, 404);
|
|
113676
|
+
const { project, signature: projectSignature } = resolved2;
|
|
113658
113677
|
let compPath = decodeURIComponent(
|
|
113659
113678
|
c3.req.path.replace(`/projects/${project.id}/thumbnail/`, "").split("?")[0] ?? ""
|
|
113660
113679
|
);
|
|
@@ -113707,6 +113726,7 @@ function registerThumbnailRoutes(api, adapter2) {
|
|
|
113707
113726
|
const cacheDir = join112(project.dir, ".thumbnails");
|
|
113708
113727
|
const selectorKey = selector ? `_${selector.replace(/[^a-zA-Z0-9_-]+/g, "_").slice(0, 80)}_${selectorIndex ?? 0}` : "";
|
|
113709
113728
|
const urlVersionKey = urlVersion ? `_${urlVersion.replace(/[^a-zA-Z0-9_-]+/g, "_").slice(0, 32)}` : "";
|
|
113729
|
+
const projectSignatureKey = `_${createHash42("sha1").update(projectSignature).digest("hex").slice(0, 16)}`;
|
|
113710
113730
|
const outputScale = outputMode === "source" ? 1 : outputMode === "storyboard" ? Math.min(
|
|
113711
113731
|
1,
|
|
113712
113732
|
STORYBOARD_MAX_OUTPUT_DIMENSION / compW,
|
|
@@ -113714,7 +113734,7 @@ function registerThumbnailRoutes(api, adapter2) {
|
|
|
113714
113734
|
) : Math.min(1, THUMBNAIL_MAX_OUTPUT_WIDTH / compW, THUMBNAIL_MAX_OUTPUT_HEIGHT / compH);
|
|
113715
113735
|
const outputWidth = Math.max(1, Math.round(compW * outputScale));
|
|
113716
113736
|
const outputHeight = Math.max(1, Math.round(compH * outputScale));
|
|
113717
|
-
const cacheKey = `${THUMBNAIL_CACHE_VERSION}${urlVersionKey}${manualEditsKey}${motionKey}${sourceKey}_${format}_${outputMode}_${compPath.replace(/\//g, "_")}_${compW}x${compH}_${outputWidth}x${outputHeight}_${sourceMtime}_${seekTime.toFixed(2)}${selectorKey}.${format === "png" ? "png" : "jpg"}`;
|
|
113737
|
+
const cacheKey = `${THUMBNAIL_CACHE_VERSION}${urlVersionKey}${projectSignatureKey}${manualEditsKey}${motionKey}${sourceKey}_${format}_${outputMode}_${compPath.replace(/\//g, "_")}_${compW}x${compH}_${outputWidth}x${outputHeight}_${sourceMtime}_${seekTime.toFixed(2)}${selectorKey}.${format === "png" ? "png" : "jpg"}`;
|
|
113718
113738
|
const cachePath2 = join112(cacheDir, cacheKey);
|
|
113719
113739
|
if (!prunedCacheDirs.has(cacheDir)) {
|
|
113720
113740
|
prunedCacheDirs.add(cacheDir);
|
|
@@ -113748,6 +113768,11 @@ function registerThumbnailRoutes(api, adapter2) {
|
|
|
113748
113768
|
signal
|
|
113749
113769
|
});
|
|
113750
113770
|
if (!generated) return null;
|
|
113771
|
+
const afterGeneration = await resolveProjectAndSignature(adapter2, project.id);
|
|
113772
|
+
const freshSignature = createProjectSignature(project.dir);
|
|
113773
|
+
if (!afterGeneration || afterGeneration.project.dir !== project.dir || afterGeneration.signature !== projectSignature || freshSignature !== projectSignature) {
|
|
113774
|
+
return generated;
|
|
113775
|
+
}
|
|
113751
113776
|
if (!existsSync82(cacheDir)) mkdirSync52(cacheDir, { recursive: true });
|
|
113752
113777
|
writeThumbnailAtomically(cachePath2, generated);
|
|
113753
113778
|
return generated;
|
package/dist/fontLocalizeCli.js
CHANGED
|
@@ -97898,8 +97898,8 @@ async function runFontLocalize(io, localize) {
|
|
|
97898
97898
|
}
|
|
97899
97899
|
|
|
97900
97900
|
// src/version.ts
|
|
97901
|
-
var VERSION = true ? "0.8.
|
|
97902
|
-
var PRODUCER_VERSION = true ? "0.8.
|
|
97901
|
+
var VERSION = true ? "0.8.26" : "0.0.0-dev";
|
|
97902
|
+
var PRODUCER_VERSION = true ? "0.8.26" : "0.0.0-dev";
|
|
97903
97903
|
|
|
97904
97904
|
// src/fontLocalizeCli.ts
|
|
97905
97905
|
async function readStdin() {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var HyperframesPlayer=(()=>{var ee=Object.defineProperty;var et=Object.getOwnPropertyDescriptor;var tt=Object.getOwnPropertyNames;var it=Object.prototype.hasOwnProperty;var rt=(r,e)=>{for(var t in e)ee(r,t,{get:e[t],enumerable:!0})},nt=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of tt(e))!it.call(r,n)&&n!==t&&ee(r,n,{get:()=>e[n],enumerable:!(i=et(e,n))||i.enumerable});return r};var ot=r=>nt(ee({},"__esModule",{value:!0}),r);var Ht={};rt(Ht,{HyperframesPlayer:()=>K,SPEED_PRESETS:()=>re,formatSpeed:()=>O,formatTime:()=>q});function we(r){return r.hasRuntime||r.runtimeInjected?!1:!!(r.hasNestedCompositions||r.hasTimelines&&r.attempts>=5)}function P(r){return typeof r=="object"&&r!==null}function Ae(r){return P(r)&&typeof r.getDuration=="function"}function Ce(r){return P(r)&&typeof r.duration=="function"&&typeof r.time=="function"&&typeof r.seek=="function"&&typeof r.play=="function"&&typeof r.pause=="function"}var k="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.8.
|
|
1
|
+
"use strict";var HyperframesPlayer=(()=>{var ee=Object.defineProperty;var et=Object.getOwnPropertyDescriptor;var tt=Object.getOwnPropertyNames;var it=Object.prototype.hasOwnProperty;var rt=(r,e)=>{for(var t in e)ee(r,t,{get:e[t],enumerable:!0})},nt=(r,e,t,i)=>{if(e&&typeof e=="object"||typeof e=="function")for(let n of tt(e))!it.call(r,n)&&n!==t&&ee(r,n,{get:()=>e[n],enumerable:!(i=et(e,n))||i.enumerable});return r};var ot=r=>nt(ee({},"__esModule",{value:!0}),r);var Ht={};rt(Ht,{HyperframesPlayer:()=>K,SPEED_PRESETS:()=>re,formatSpeed:()=>O,formatTime:()=>q});function we(r){return r.hasRuntime||r.runtimeInjected?!1:!!(r.hasNestedCompositions||r.hasTimelines&&r.attempts>=5)}function P(r){return typeof r=="object"&&r!==null}function Ae(r){return P(r)&&typeof r.getDuration=="function"}function Ce(r){return P(r)&&typeof r.duration=="function"&&typeof r.time=="function"&&typeof r.seek=="function"&&typeof r.play=="function"&&typeof r.pause=="function"}var k="https://cdn.jsdelivr.net/npm/@hyperframes/core@0.8.26/dist/hyperframe.runtime.iife.js";function N(r){if(r===null)return null;let e=Number.parseInt(r,10);return Number.isFinite(e)&&e>0?e:null}function at(r){let e=r?.querySelector("[data-composition-id][data-width][data-height]")??r?.querySelector("[data-width][data-height]");if(!e)return null;let t=N(e.getAttribute("data-width")),i=N(e.getAttribute("data-height"));return t!==null&&i!==null?{width:t,height:i}:null}var W=class{constructor(e,t){this._iframe=e;this._callbacks=t}_iframe;_callbacks;_interval=null;_runtimeInjected=!1;get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._runtimeInjected=!1;let e=0;this._interval=setInterval(()=>{e++;try{let t=this._iframe.contentWindow;if(!t)return;let i=!!(t.__hf||t.__player),n=!!(t.__timelines&&Object.keys(t.__timelines).length>0),o=!!this._iframe.contentDocument?.querySelector("[data-composition-src]");if(we({hasRuntime:i,hasTimelines:n,hasNestedCompositions:o,runtimeInjected:this._runtimeInjected,attempts:e})){this._injectRuntime();return}if(this._runtimeInjected&&!i)return;let d=this._resolvePlaybackDurationAdapter(t);if(d&&d.getDuration()>0){this.stop();let s=at(this._iframe.contentDocument);this._callbacks.onReady({duration:d.getDuration(),adapter:d,compositionSize:s});return}}catch{}e>=40&&(this.stop(),this._callbacks.onError("Composition timeline not found after 8s"))},200)}stop(){this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{let e=this._iframe.contentWindow;return e?this._resolveDirectTimelineAdapterFromWindow(e):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(e){return this._resolveDirectTimelineAdapterFromWindow(e)}hasRuntimeBridge(e){return Reflect.get(e,"__hf")!==void 0||P(Reflect.get(e,"__player"))}_injectRuntime(){this._runtimeInjected=!0;try{let e=this._iframe.contentDocument;if(!e)return;let t=e.createElement("script");t.src=k,(e.head||e.documentElement).appendChild(t),this._callbacks.onRuntimeInjected?.()}catch{}}_resolveDirectTimelineAdapterFromWindow(e){if(this.hasRuntimeBridge(e))return null;let t=Reflect.get(e,"__timelines");if(!P(t))return null;let i=Object.keys(t);if(i.length===0)return null;let n=this._iframe.contentDocument?.querySelector("[data-composition-id]")?.getAttribute("data-composition-id"),o=n&&n in t?n:i[i.length-1],d=t[o];return Ce(d)?d:null}_resolvePlaybackDurationAdapter(e){let t=Reflect.get(e,"__player");if(Ae(t))return{kind:"runtime",getDuration:()=>t.getDuration()};let i=this._resolveDirectTimelineAdapterFromWindow(e);return i?{kind:"direct-timeline",timeline:i,getDuration:()=>i.duration()}:null}};var Re=`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
position: relative;
|
package/dist/studio/assets/{hyperframes-player-CTQCs_KG.js → hyperframes-player-C-CArn13.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
var ve=Object.defineProperty;var be=(n,i,e)=>i in n?ve(n,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[i]=e;var u=(n,i,e)=>be(n,typeof i!="symbol"?i+"":i,e);import{r as le,i as we,a as Ae}from"./index-
|
|
1
|
+
var ve=Object.defineProperty;var be=(n,i,e)=>i in n?ve(n,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):n[i]=e;var u=(n,i,e)=>be(n,typeof i!="symbol"?i+"":i,e);import{r as le,i as we,a as Ae}from"./index-D5yni1t6.js";function Ee(n){return n.hasRuntime||n.runtimeInjected?!1:!!(n.hasNestedCompositions||n.hasTimelines&&n.attempts>=5)}function V(n){return typeof n=="object"&&n!==null}function Ce(n){return V(n)&&typeof n.getDuration=="function"}function Te(n){return V(n)&&typeof n.duration=="function"&&typeof n.time=="function"&&typeof n.seek=="function"&&typeof n.play=="function"&&typeof n.pause=="function"}function Se(n){if(!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?(?:\+[0-9A-Za-z.-]+)?$/.test(n))throw new Error(`Invalid HyperFrames runtime version: ${n}`);return`https://cdn.jsdelivr.net/npm/@hyperframes/core@${n}/dist/hyperframe.runtime.iife.js`}const H=typeof __HYPERFRAMES_RUNTIME_CDN_URL__=="string"?__HYPERFRAMES_RUNTIME_CDN_URL__:Se("0.0.0-dev");function $(n){if(n===null)return null;const i=Number.parseInt(n,10);return Number.isFinite(i)&&i>0?i:null}function Re(n){const i=(n==null?void 0:n.querySelector("[data-composition-id][data-width][data-height]"))??(n==null?void 0:n.querySelector("[data-width][data-height]"));if(!i)return null;const e=$(i.getAttribute("data-width")),t=$(i.getAttribute("data-height"));return e!==null&&t!==null?{width:e,height:t}:null}class xe{constructor(i,e){u(this,"_interval",null);u(this,"_runtimeInjected",!1);this._iframe=i,this._callbacks=e}get runtimeInjected(){return this._runtimeInjected}start(){this.stop(),this._runtimeInjected=!1;let i=0;this._interval=setInterval(()=>{var e;i++;try{const t=this._iframe.contentWindow;if(!t)return;const r=!!(t.__hf||t.__player),s=!!(t.__timelines&&Object.keys(t.__timelines).length>0),o=!!((e=this._iframe.contentDocument)!=null&&e.querySelector("[data-composition-src]"));if(Ee({hasRuntime:r,hasTimelines:s,hasNestedCompositions:o,runtimeInjected:this._runtimeInjected,attempts:i})){this._injectRuntime();return}if(this._runtimeInjected&&!r)return;const d=this._resolvePlaybackDurationAdapter(t);if(d&&d.getDuration()>0){this.stop();const p=Re(this._iframe.contentDocument);this._callbacks.onReady({duration:d.getDuration(),adapter:d,compositionSize:p});return}}catch{}i>=40&&(this.stop(),this._callbacks.onError("Composition timeline not found after 8s"))},200)}stop(){this._interval!==null&&(clearInterval(this._interval),this._interval=null)}resolveDirectTimelineAdapter(){try{const i=this._iframe.contentWindow;return i?this._resolveDirectTimelineAdapterFromWindow(i):null}catch{return null}}resolveDirectTimelineAdapterFromWindow(i){return this._resolveDirectTimelineAdapterFromWindow(i)}hasRuntimeBridge(i){return Reflect.get(i,"__hf")!==void 0||V(Reflect.get(i,"__player"))}_injectRuntime(){var i,e;this._runtimeInjected=!0;try{const t=this._iframe.contentDocument;if(!t)return;const r=t.createElement("script");r.src=H,(t.head||t.documentElement).appendChild(r),(e=(i=this._callbacks).onRuntimeInjected)==null||e.call(i)}catch{}}_resolveDirectTimelineAdapterFromWindow(i){var d,p;if(this.hasRuntimeBridge(i))return null;const e=Reflect.get(i,"__timelines");if(!V(e))return null;const t=Object.keys(e);if(t.length===0)return null;const r=(p=(d=this._iframe.contentDocument)==null?void 0:d.querySelector("[data-composition-id]"))==null?void 0:p.getAttribute("data-composition-id"),s=r&&r in e?r:t[t.length-1],o=e[s];return Te(o)?o:null}_resolvePlaybackDurationAdapter(i){const e=Reflect.get(i,"__player");if(Ce(e))return{kind:"runtime",getDuration:()=>e.getDuration()};const t=this._resolveDirectTimelineAdapterFromWindow(i);return t?{kind:"direct-timeline",timeline:t,getDuration:()=>t.duration()}:null}}const Me=`
|
|
2
2
|
:host {
|
|
3
3
|
display: block;
|
|
4
4
|
position: relative;
|