hyperframes 0.8.151 → 0.8.153
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/{add-QKZZG7A2.js → add-D7GZM6ZS.js} +14 -14
- package/dist/{animatedGifPrep-YQDPYGOD.js → animatedGifPrep-IBLDIJXC.js} +9 -9
- package/dist/api.js +15 -15
- package/dist/{asset-3Q737Y4H.js → asset-ACZRQU2Z.js} +2 -2
- package/dist/{assetCataloger-BTHEBJJB.js → assetCataloger-Y3OELLLW.js} +4 -4
- package/dist/{auth-XL7EU3SO.js → auth-LFWML3XJ.js} +1 -1
- package/dist/{autoUpdate-PJFLTQ3U.js → autoUpdate-7IUGQXOV.js} +2 -2
- package/dist/{backgroundChecks-T5TIR5WK.js → backgroundChecks-XI364BNX.js} +3 -3
- package/dist/backgroundChecksWorker.js +3 -3
- package/dist/{batchRender-NFLVIDB4.js → batchRender-6TD4XSIP.js} +5 -5
- package/dist/{beats-JU4GZ26R.js → beats-FZGQ3HLR.js} +14 -14
- package/dist/{benchmark-7U2YWLTW.js → benchmark-3YEKSYMP.js} +10 -10
- package/dist/{browser-D57UPYDA.js → browser-R5PKLYZD.js} +3 -3
- package/dist/{bundleWithLocalizedFonts-26MXQOZG.js → bundleWithLocalizedFonts-QX5HV7LC.js} +2 -2
- package/dist/{capture-LT252COQ.js → capture-MTHXUEC2.js} +19 -19
- package/dist/{capture-47BV25G3.js → capture-R7QSBEPW.js} +2 -2
- package/dist/{catalog-BEZXOV4O.js → catalog-K2TRGCXO.js} +14 -14
- package/dist/{catch-up-KVV5X6BF.js → catch-up-WCSN4K4A.js} +4 -4
- package/dist/{check-6KQ433E6.js → check-N4EFKWC3.js} +294 -66
- package/dist/{checkBrowser-PRDR6XBY.js → checkBrowser-73SOMDG3.js} +75 -45
- package/dist/{chunk-IZPN423R.js → chunk-2F6LWCSF.js} +11 -6
- package/dist/{chunk-TCWMDCBX.js → chunk-2X3UJ4Q3.js} +2 -2
- package/dist/{chunk-YZTVHRJ2.js → chunk-2XEBNYG5.js} +1 -1
- package/dist/chunk-3DMR7RF6.js +24 -0
- package/dist/{chunk-APDLWWFG.js → chunk-3VGU2SH7.js} +1 -1
- package/dist/{chunk-OZ4K46OV.js → chunk-4IRCZWND.js} +2 -2
- package/dist/{chunk-4PKQEKAI.js → chunk-4OVLWS2K.js} +2 -2
- package/dist/{chunk-DHPFXAUF.js → chunk-57GN6KWT.js} +17 -3
- package/dist/{chunk-374QQGBQ.js → chunk-5CS4T6C6.js} +63 -12
- package/dist/{chunk-FLVI7FHU.js → chunk-5DD45SJZ.js} +1 -1
- package/dist/{chunk-BRF3O35X.js → chunk-5FS4HCHN.js} +109 -31
- package/dist/{chunk-DIOBKUBV.js → chunk-5OKZRXLT.js} +2 -2
- package/dist/{chunk-POEEDPJI.js → chunk-5ZGSN5YK.js} +1 -1
- package/dist/{chunk-FJWEYVEM.js → chunk-7FYFEXD2.js} +658 -198
- package/dist/{chunk-L3N7RJHS.js → chunk-7NKLNOHW.js} +3 -3
- package/dist/{chunk-O3DUX6P2.js → chunk-AA67UBB2.js} +4 -4
- package/dist/{chunk-IZ7L6V76.js → chunk-AUK5QCRH.js} +1 -1
- package/dist/{chunk-YEBKEWKB.js → chunk-BD3XH4A7.js} +1 -1
- package/dist/{chunk-XXPYZBZ3.js → chunk-C6TPGUWD.js} +2 -2
- package/dist/{chunk-ZD3RDNZI.js → chunk-CBMZYOWC.js} +1 -1
- package/dist/{chunk-ZGCRVM5M.js → chunk-DAKXCEE3.js} +4 -4
- package/dist/{chunk-AIJS74LG.js → chunk-FFDC5OWV.js} +8 -2
- package/dist/{chunk-DMKI64EZ.js → chunk-FSZAFCU7.js} +1 -1
- package/dist/{chunk-OSAH7S5M.js → chunk-FZC4UM4G.js} +1 -1
- package/dist/{chunk-QBYHNRHU.js → chunk-GV7I3ZSQ.js} +2 -2
- package/dist/{chunk-N3I6RAOR.js → chunk-GXPD7J53.js} +11 -11
- package/dist/{chunk-N4IXP3MY.js → chunk-HGAOO43L.js} +3 -3
- package/dist/{chunk-QF7AE3DB.js → chunk-J5LEAKUA.js} +1 -1
- package/dist/{chunk-PUIELIFA.js → chunk-JBUIS5DN.js} +1 -1
- package/dist/{chunk-KXX6NLOT.js → chunk-JQ57FAYN.js} +1 -1
- package/dist/{chunk-RRBKEHST.js → chunk-KFBEMIMD.js} +54 -6
- package/dist/{chunk-RYL6ZIJP.js → chunk-OIONMNWN.js} +18 -11
- package/dist/{chunk-KQGWP4KH.js → chunk-OSASJLU4.js} +1 -1
- package/dist/{chunk-3ZPFRDEJ.js → chunk-PVGDU7SE.js} +4 -4
- package/dist/{chunk-XGLNQDLN.js → chunk-PXOFFSO3.js} +1 -1
- package/dist/{chunk-IP73NMQT.js → chunk-QBFHVMOI.js} +10 -10
- package/dist/{chunk-IPDS2SWI.js → chunk-R6WCSVCE.js} +1 -1
- package/dist/{chunk-XYHBVSWD.js → chunk-RCWSM7IQ.js} +2 -2
- package/dist/{chunk-4YZYYP7V.js → chunk-SUVIGBHS.js} +3 -3
- package/dist/{chunk-L6RIMCMG.js → chunk-T2Y2WC5I.js} +3 -3
- package/dist/{chunk-QLGBNGXC.js → chunk-TCJM3KF2.js} +2 -2
- package/dist/{chunk-XKKBIFE5.js → chunk-TQUTAWUR.js} +7 -7
- package/dist/{chunk-HVXRYMGQ.js → chunk-TXWPPBIW.js} +1 -1
- package/dist/{chunk-2PSPARWP.js → chunk-TYXH3EKP.js} +4 -0
- package/dist/{chunk-FMNVTKX2.js → chunk-U3BCDVZO.js} +1 -1
- package/dist/{chunk-RJRGR5KF.js → chunk-UNOALNYO.js} +9 -9
- package/dist/{chunk-3SVC7SW4.js → chunk-V6UUZGP6.js} +7 -3
- package/dist/{chunk-LFNQDTSH.js → chunk-VYKPBRCB.js} +63 -12
- package/dist/{chunk-S22FKF6G.js → chunk-WNCGJFTZ.js} +2 -2
- package/dist/{chunk-XNDXENJQ.js → chunk-WQMTHPTK.js} +3 -3
- package/dist/{chunk-4LE27ST4.js → chunk-XQYLUY2F.js} +2 -2
- package/dist/chunk-XSEGMQYA.js +30 -0
- package/dist/{chunk-35PWWBGZ.js → chunk-YI6OBVWQ.js} +1 -1
- package/dist/{chunk-GNTVYF7E.js → chunk-YOEGUBBY.js} +5 -5
- package/dist/{chunk-FAIYEIZ4.js → chunk-YYMJEQ4D.js} +1 -1
- package/dist/{chunk-LKQS72D5.js → chunk-Z6CSYA7U.js} +1 -1
- package/dist/{chunk-XQKVEQNY.js → chunk-ZDEEHQ2Y.js} +2 -2
- package/dist/chunk-ZQMYD22O.js +215 -0
- package/dist/{clean-RLTHFTQA.js → clean-TLMZ6GVY.js} +52 -31
- package/dist/cli.js +53 -53
- package/dist/{cloud-Q5TGBTW3.js → cloud-XFIRM6YE.js} +4 -4
- package/dist/{cloudrun-4UZF74MV.js → cloudrun-OUGI5NN4.js} +6 -6
- package/dist/{compare-Q5UNR2V4.js → compare-OKSXYO3L.js} +30 -30
- package/dist/{compiler-ZXT27Z62.js → compiler-WHUQZITN.js} +6 -6
- package/dist/{component-H734P32V.js → component-3II4YXAD.js} +3 -3
- package/dist/{compositions-YEHDSTDR.js → compositions-RL75WQS6.js} +13 -13
- package/dist/{delete-LDBMPWRT.js → delete-4FM24SJ2.js} +2 -2
- package/dist/{deterministicFonts-C5JQLCTS.js → deterministicFonts-EOMDR6ZF.js} +3 -3
- package/dist/{dist-RGE4QASU.js → dist-2YYJYYPY.js} +3 -3
- package/dist/{dist-7JXLFD6U.js → dist-NUSNSGME.js} +4 -4
- package/dist/{doctor-XNJFIWJ7.js → doctor-Q5WYRIVP.js} +11 -11
- package/dist/{events-G6UFLNXR.js → events-CPZTSXAX.js} +2 -2
- package/dist/{events-UKCPUWMH.js → events-J5VJAKGT.js} +3 -3
- package/dist/{feedback-CK3KZ7DE.js → feedback-U64DIKAF.js} +8 -8
- package/dist/{figma-3D5C737B.js → figma-GUHWRHJO.js} +3 -3
- package/dist/fontLocalizeCli.js +12 -12
- package/dist/{get-QGTQUWFT.js → get-XDQJPF7G.js} +2 -2
- package/dist/{gpuPolicy-G5QAQDYF.js → gpuPolicy-7SIPG5BM.js} +9 -9
- package/dist/{grade-compare-XIHOM62P.js → grade-compare-WWW2F3NY.js} +30 -30
- package/dist/{gsapParserAcorn-VXZ3ZIF2.js → gsapParserAcorn-7NCK2LVT.js} +2 -2
- package/dist/{help-U5UBXT52.js → help-3UJYI7LC.js} +1 -1
- package/dist/{history-5J73QZSA.js → history-VQSM5L6N.js} +77 -205
- package/dist/hyperframe-runtime.js +4 -0
- package/dist/hyperframe.manifest.json +1 -1
- package/dist/hyperframe.runtime.iife.js +4 -0
- package/dist/hyperframes-player.global.js +1 -1
- package/dist/{info-RJHQQQUP.js → info-NMDUH7N5.js} +9 -9
- package/dist/{init-M6UQOYYC.js → init-D753VPPZ.js} +24 -24
- package/dist/{inspect-PRQWDBTP.js → inspect-KEE27DQN.js} +31 -31
- package/dist/{installer-ZL7UKYK5.js → installer-QCHUXV6E.js} +7 -7
- package/dist/{keyframes-VMUJYTCQ.js → keyframes-EP44YDZW.js} +227 -82
- package/dist/{lambda-ON42DRQD.js → lambda-Q5FTNY4J.js} +7 -7
- package/dist/{layout-QKBFVDVY.js → layout-LATG5CZV.js} +31 -31
- package/dist/{lint-ZQHHL2SV.js → lint-TQDQFJKW.js} +9 -9
- package/dist/{lintProject-3Z6OJCSO.js → lintProject-XQWXJYSC.js} +3 -3
- package/dist/{list-YBRKIWGF.js → list-O44ENRGS.js} +2 -2
- package/dist/{login-4B2YXGLB.js → login-EKFN5PZP.js} +4 -4
- package/dist/{media-treatment-5C5EJAAP.js → media-treatment-LPT4GYAE.js} +12 -12
- package/dist/{models-R7ZDWBJ6.js → models-CRYHY4KH.js} +12 -12
- package/dist/{motionShot-ZHESZNUL.js → motionShot-BS3DB666.js} +28 -15
- package/dist/{normalize-audio-EVWZVTBM.js → normalize-audio-7X445LLJ.js} +6 -6
- package/dist/{open-TV6HT4UT.js → open-JA7FN5F5.js} +4 -4
- package/dist/{parakeetRunner-YVVF4CG6.js → parakeetRunner-AFUTDANA.js} +12 -12
- package/dist/{pipeline-ETR5SEBS.js → pipeline-3TQHAQOJ.js} +9 -9
- package/dist/{play-C6WONRZV.js → play-UUJAXFCJ.js} +24 -24
- package/dist/{present-RANXTVPA.js → present-EBP6YMCJ.js} +20 -20
- package/dist/{preview-KF6UMBT2.js → preview-PVJDLZDU.js} +19 -19
- package/dist/{producer-CY2GXBWN.js → producer-HE23BPEU.js} +1 -1
- package/dist/{projectConfig-KPXCNMBM.js → projectConfig-EX35BZLA.js} +9 -9
- package/dist/{publication-Y36N4A7E.js → publication-OUGS3P7W.js} +4 -4
- package/dist/{publish-RCQJO35C.js → publish-UUFZR6QT.js} +12 -12
- package/dist/{remove-background-3ZMXVWLB.js → remove-background-P5M42CA5.js} +10 -10
- package/dist/{render-WUSTRMUD.js → render-AWFQGD4T.js} +5 -5
- package/dist/{render-PTNEFO5U.js → render-BJMONGDL.js} +10 -10
- package/dist/{render-FKVRCDT2.js → render-YSD2SRBL.js} +57 -22
- package/dist/{render-batch-AQHU2JWZ.js → render-batch-6UN3HT5A.js} +5 -5
- package/dist/renderSetupWorker.js +3 -3
- package/dist/{resolver-L5BDZJKU.js → resolver-O6ZENVYP.js} +6 -6
- package/dist/{sherpa-3S3ISG7G.js → sherpa-RWHRDO53.js} +11 -11
- package/dist/skills/hyperframes-cli/SKILL.md +3 -0
- package/dist/skills/hyperframes-cli/references/lint-validate-inspect.md +5 -1
- package/dist/{skills-X4WQEKNF.js → skills-KC6IGXDU.js} +5 -5
- package/dist/{skillsUpdateCheck-UYCVHDZ6.js → skillsUpdateCheck-7C4TD7EL.js} +3 -3
- package/dist/{snapshot-YEYHQEZQ.js → snapshot-SNZL5GPC.js} +118 -41
- package/dist/{src-OLBDPEG6.js → src-KKS6QEHB.js} +11 -11
- package/dist/{src-2NN2WB6X.js → src-YMUDUVXQ.js} +8 -8
- package/dist/{staticProjectServer-7H35NMWB.js → staticProjectServer-XOCIQ3FV.js} +20 -20
- package/dist/studio/assets/{hyperframes-player-DJt8E7k4.js → hyperframes-player-Cn6V2ZaK.js} +1 -1
- package/dist/studio/assets/{index-DgbLblGR.js → index-CEGNvZnK.js} +1 -1
- package/dist/studio/assets/{index-DWIHrAY2.js → index-CaaXbGyk.js} +1 -1
- package/dist/studio/assets/{index-BGks9KLI.js → index-Cwpnr4DV.js} +132 -132
- package/dist/studio/index.html +1 -1
- package/dist/{studio-api-HGM2A5I3.js → studio-api-NUNUZQ5I.js} +30 -16
- package/dist/{studioServer-M6XFL7N6.js → studioServer-FBY3YWZH.js} +43 -43
- package/dist/{synthesize-22B7L5GX.js → synthesize-W2M7QGDV.js} +6 -5
- package/dist/{telemetry-KVCZKVTE.js → telemetry-KNSTX3E2.js} +3 -3
- package/dist/{timeline-VYYKZR4V.js → timeline-6I5LGPP6.js} +20 -20
- package/dist/{tokens-B5NFFL55.js → tokens-MY4GOQ53.js} +2 -2
- package/dist/{transcribe-SBETOIWI.js → transcribe-56WECC4Y.js} +10 -10
- package/dist/{transcribe-WNFRYZAC.js → transcribe-ISCPZLQZ.js} +16 -16
- package/dist/{tts-QSAQZVEZ.js → tts-RE227GFP.js} +1 -1
- package/dist/{updateCheck-5MM2DFUC.js → updateCheck-FAG4T4AV.js} +2 -2
- package/dist/{upgrade-LWID54R3.js → upgrade-5QCPW55B.js} +2 -2
- package/dist/{urlDownloader-CVLNXFDG.js → urlDownloader-FGSJGUM7.js} +8 -8
- package/dist/{validate-V4CGQ6OF.js → validate-WC3FUSUF.js} +25 -25
- package/dist/{video-VJB2KRSS.js → video-DOFSWSSR.js} +9 -9
- package/package.json +1 -1
- package/dist/chunk-WBLXWOYK.js +0 -15
- package/dist/{screenshotCapture-TEUIWXWN.js → screenshotCapture-3JXXUZND.js} +3 -3
|
@@ -39,7 +39,7 @@ import {
|
|
|
39
39
|
stripEmbeddedRuntimeScripts,
|
|
40
40
|
styleElementsFor,
|
|
41
41
|
warnUnknownEnumValues
|
|
42
|
-
} from "./chunk-
|
|
42
|
+
} from "./chunk-GV7I3ZSQ.js";
|
|
43
43
|
import {
|
|
44
44
|
cssVariableName
|
|
45
45
|
} from "./chunk-VC76R6W2.js";
|
|
@@ -49,7 +49,7 @@ import {
|
|
|
49
49
|
} from "./chunk-OFQWTKPW.js";
|
|
50
50
|
import {
|
|
51
51
|
lintHyperframeHtml
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-YOEGUBBY.js";
|
|
53
53
|
import {
|
|
54
54
|
checkSubCompositionUsability,
|
|
55
55
|
resolveSubCompositionContent
|
|
@@ -72,7 +72,7 @@ import {
|
|
|
72
72
|
} from "./chunk-SDYDNHEE.js";
|
|
73
73
|
import {
|
|
74
74
|
parse
|
|
75
|
-
} from "./chunk-
|
|
75
|
+
} from "./chunk-TYXH3EKP.js";
|
|
76
76
|
|
|
77
77
|
// ../core/dist/compiler/htmlCompiler.js
|
|
78
78
|
import { resolve } from "path";
|
|
@@ -1036,12 +1036,16 @@ function wrapScopedCompositionScript(source, compositionId, errorLabel = "[Hyper
|
|
|
1036
1036
|
var __hfBaseHyperframes = window.__hyperframes;
|
|
1037
1037
|
var __hfScopedHyperframes = ${SCOPED_HYPERFRAMES_EXPRESSION};
|
|
1038
1038
|
var __hfRun = function() {
|
|
1039
|
+
var report = window.__hfScriptState;
|
|
1040
|
+
if (typeof report === "function") report("start", __hfCompositionSrc || "index.html");
|
|
1039
1041
|
try {
|
|
1040
1042
|
(function(document, gsap, window, __hyperframes) {
|
|
1041
1043
|
${source.replace(/<\/(script)/gi, "<\\/$1")}
|
|
1042
1044
|
}).call(window, __hfScopedDocument, __hfScopedGsap, __hfScopedWindow, __hfScopedHyperframes);
|
|
1043
1045
|
} catch (_err) {
|
|
1044
1046
|
console.error(__hfErrorLabel, __hfCompId, _err);
|
|
1047
|
+
} finally {
|
|
1048
|
+
if (typeof report === "function") report("finish", __hfCompositionSrc || "index.html");
|
|
1045
1049
|
}
|
|
1046
1050
|
};
|
|
1047
1051
|
// What the script started on the global gsap timeline, by any route, for a scene swap to revert.
|
|
@@ -15,8 +15,9 @@ import {
|
|
|
15
15
|
ancestor,
|
|
16
16
|
full,
|
|
17
17
|
parse,
|
|
18
|
+
parseExpressionAt,
|
|
18
19
|
simple
|
|
19
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-TYXH3EKP.js";
|
|
20
21
|
import {
|
|
21
22
|
__toESM
|
|
22
23
|
} from "./chunk-M2WBOQ2Q.js";
|
|
@@ -2195,19 +2196,19 @@ function collectIdentifierBindingIndex(ast) {
|
|
|
2195
2196
|
}
|
|
2196
2197
|
}
|
|
2197
2198
|
function addBinding(bindings, scopeNode, name, selector) {
|
|
2198
|
-
let scoped = bindings.get(scopeNode);
|
|
2199
|
+
let scoped = bindings.byScope.get(scopeNode);
|
|
2199
2200
|
if (!scoped) {
|
|
2200
2201
|
scoped = /* @__PURE__ */ new Map();
|
|
2201
|
-
bindings.set(scopeNode, scoped);
|
|
2202
|
+
bindings.byScope.set(scopeNode, scoped);
|
|
2202
2203
|
}
|
|
2203
2204
|
if (!scoped.has(name)) scoped.set(name, selector);
|
|
2204
2205
|
}
|
|
2205
2206
|
function lookupBindingFromAncestors(name, ancestors, bindings) {
|
|
2206
2207
|
for (const scopeNode of scopeChainFromAncestors(ancestors)) {
|
|
2207
|
-
const selector = bindings.get(scopeNode)?.get(name);
|
|
2208
|
+
const selector = bindings.byScope.get(scopeNode)?.get(name);
|
|
2208
2209
|
if (selector !== void 0) return selector;
|
|
2209
2210
|
}
|
|
2210
|
-
return bindings.get(null)?.get(name) ?? null;
|
|
2211
|
+
return bindings.byScope.get(null)?.get(name) ?? null;
|
|
2211
2212
|
}
|
|
2212
2213
|
function isFunctionNode2(node) {
|
|
2213
2214
|
return node?.type === "ArrowFunctionExpression" || node?.type === "FunctionExpression" || node?.type === "FunctionDeclaration";
|
|
@@ -2246,7 +2247,7 @@ function collectScopeBindings(ast) {
|
|
|
2246
2247
|
return bindings;
|
|
2247
2248
|
}
|
|
2248
2249
|
function collectTargetBindings(ast, scope, identifierBindings) {
|
|
2249
|
-
const bindings = /* @__PURE__ */ new Map();
|
|
2250
|
+
const bindings = { byScope: /* @__PURE__ */ new Map(), identifiers: identifierBindings };
|
|
2250
2251
|
ancestor(ast, {
|
|
2251
2252
|
VariableDeclarator(node, _, ancestors) {
|
|
2252
2253
|
const name = node.id?.name;
|
|
@@ -2327,7 +2328,18 @@ function resolveTargetSelector(node, ancestors, scope, bindings) {
|
|
|
2327
2328
|
return typeof node.value === "string" ? node.value : null;
|
|
2328
2329
|
}
|
|
2329
2330
|
if (node.type === "Identifier") {
|
|
2330
|
-
|
|
2331
|
+
const bound = lookupBindingFromAncestors(node.name, ancestors, bindings);
|
|
2332
|
+
if (bound) return bound;
|
|
2333
|
+
const declaration = findVisibleIdentifierDeclaration(
|
|
2334
|
+
node.name,
|
|
2335
|
+
ancestors,
|
|
2336
|
+
bindings.identifiers,
|
|
2337
|
+
node.start
|
|
2338
|
+
);
|
|
2339
|
+
if (declaration?.kind !== "const" || bindings.identifiers.reassignedDeclarations.has(declaration.node))
|
|
2340
|
+
return null;
|
|
2341
|
+
const literal = resolveNode(declaration.node.init, scope);
|
|
2342
|
+
return typeof literal === "string" ? literal : null;
|
|
2331
2343
|
}
|
|
2332
2344
|
if (node.type === "CallExpression") {
|
|
2333
2345
|
return selectorFromQueryCall(node, scope);
|
|
@@ -2352,7 +2364,7 @@ function describeProxyTarget(targetNode, varsNode, scope) {
|
|
|
2352
2364
|
const onUpdate = findPropertyNode(varsNode, "onUpdate");
|
|
2353
2365
|
const driven = onUpdate ? drivenDomChannel(onUpdate) : void 0;
|
|
2354
2366
|
if (driven) return `proxy \u2192 ${driven}`;
|
|
2355
|
-
return "dwell/hold";
|
|
2367
|
+
return objNode.properties.length === 0 && !onUpdate ? "dwell/hold" : "proxy (unresolved DOM association)";
|
|
2356
2368
|
}
|
|
2357
2369
|
function isStyleAssignmentTarget(left) {
|
|
2358
2370
|
return left?.type === "MemberExpression" && left.object?.type === "MemberExpression" && left.object.property?.name === "style" && !!left.property?.name;
|
|
@@ -2871,6 +2883,8 @@ function tweenCallToAnimation(call, scope, source, identifierBindings) {
|
|
|
2871
2883
|
duration,
|
|
2872
2884
|
ease
|
|
2873
2885
|
};
|
|
2886
|
+
if (["stagger", "repeat", "repeatDelay", "delay"].some((key) => findPropertyNode(call.varsArg, key)))
|
|
2887
|
+
anim.inspectionTiming = inspectionTiming(call.varsArg, scope);
|
|
2874
2888
|
if (targetIdentity) anim.targetIdentity = targetIdentity;
|
|
2875
2889
|
if (!hasPositionArg) anim.implicitPosition = true;
|
|
2876
2890
|
let group = classifyTweenPropertyGroup(properties);
|
|
@@ -2893,14 +2907,51 @@ function tweenCallToAnimation(call, scope, source, identifierBindings) {
|
|
|
2893
2907
|
if (provenance) anim.provenance = provenance;
|
|
2894
2908
|
return anim;
|
|
2895
2909
|
}
|
|
2910
|
+
function inspectionTiming(varsNode, scope) {
|
|
2911
|
+
const numeric2 = (key) => {
|
|
2912
|
+
const node2 = findPropertyNode(varsNode, key);
|
|
2913
|
+
if (!node2) return 0;
|
|
2914
|
+
const value = resolveNode(node2, scope);
|
|
2915
|
+
return typeof value === "number" && Number.isFinite(value) ? value : null;
|
|
2916
|
+
};
|
|
2917
|
+
const node = findPropertyNode(varsNode, "stagger");
|
|
2918
|
+
let stagger = { each: 0 };
|
|
2919
|
+
if (node) {
|
|
2920
|
+
const value = resolveNode(node, scope);
|
|
2921
|
+
stagger = typeof value === "number" ? { each: value } : null;
|
|
2922
|
+
if (node.type === "ObjectExpression" && !(node.properties ?? []).some(
|
|
2923
|
+
(p) => !["each", "amount", "from", "ease", "axis", "grid"].includes(propKeyName(p) ?? "")
|
|
2924
|
+
)) {
|
|
2925
|
+
const each = resolveNode(findPropertyNode(node, "each"), scope);
|
|
2926
|
+
const amount = resolveNode(findPropertyNode(node, "amount"), scope);
|
|
2927
|
+
if (!findPropertyNode(node, "grid") && !findPropertyNode(node, "axis")) {
|
|
2928
|
+
if (typeof amount === "number") stagger = { amount };
|
|
2929
|
+
else if (typeof each === "number") stagger = { each };
|
|
2930
|
+
}
|
|
2931
|
+
}
|
|
2932
|
+
}
|
|
2933
|
+
return {
|
|
2934
|
+
repeat: numeric2("repeat"),
|
|
2935
|
+
repeatDelay: numeric2("repeatDelay"),
|
|
2936
|
+
delay: numeric2("delay"),
|
|
2937
|
+
stagger
|
|
2938
|
+
};
|
|
2939
|
+
}
|
|
2896
2940
|
function staggerAmount(raw) {
|
|
2897
2941
|
if (typeof raw === "number") return raw;
|
|
2898
2942
|
if (typeof raw !== "string") return void 0;
|
|
2899
2943
|
const src = raw.startsWith("__raw:") ? raw.slice(6) : raw;
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
|
|
2944
|
+
try {
|
|
2945
|
+
const node = parseExpressionAt(src, 0, { ecmaVersion: "latest" });
|
|
2946
|
+
if (src.slice(node.end).trim()) return void 0;
|
|
2947
|
+
const value = resolveNode(
|
|
2948
|
+
node.type === "ObjectExpression" ? findPropertyNode(node, "each") : node,
|
|
2949
|
+
/* @__PURE__ */ new Map()
|
|
2950
|
+
);
|
|
2951
|
+
return typeof value === "number" && Number.isFinite(value) ? value : void 0;
|
|
2952
|
+
} catch {
|
|
2953
|
+
return void 0;
|
|
2954
|
+
}
|
|
2904
2955
|
}
|
|
2905
2956
|
function restValue(prop) {
|
|
2906
2957
|
return prop === "opacity" || prop.startsWith("scale") ? 1 : 0;
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
SDR_RGB_TO_BT709_FILTER,
|
|
21
21
|
SDR_RGB_TO_TAGGED_BT709_FILTER,
|
|
22
22
|
renderProvenanceArgs
|
|
23
|
-
} from "./chunk-
|
|
23
|
+
} from "./chunk-2F6LWCSF.js";
|
|
24
24
|
|
|
25
25
|
// src/background-removal/pipeline.ts
|
|
26
26
|
import { spawn } from "child_process";
|
|
@@ -270,7 +270,7 @@ function inferInputKind(inputPath) {
|
|
|
270
270
|
}
|
|
271
271
|
async function probeMedia(inputPath) {
|
|
272
272
|
const isImage = inferInputKind(inputPath) === "image";
|
|
273
|
-
const engine = await import("./src-
|
|
273
|
+
const engine = await import("./src-YMUDUVXQ.js");
|
|
274
274
|
const meta = await engine.extractMediaMetadata(inputPath);
|
|
275
275
|
if (isImage) {
|
|
276
276
|
return { width: meta.width, height: meta.height, fps: 0, frameCount: 1 };
|
|
@@ -14,14 +14,14 @@ import {
|
|
|
14
14
|
isAllowedHtmlAttribute,
|
|
15
15
|
isSafeAttributeValue,
|
|
16
16
|
sanitizeRichTextChildren
|
|
17
|
-
} from "./chunk-
|
|
17
|
+
} from "./chunk-ZDEEHQ2Y.js";
|
|
18
18
|
import {
|
|
19
19
|
decodedUrlPath,
|
|
20
20
|
removeElementWithGsapCascade
|
|
21
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-VYKPBRCB.js";
|
|
22
22
|
import {
|
|
23
23
|
require_dist
|
|
24
|
-
} from "./chunk-
|
|
24
|
+
} from "./chunk-YOEGUBBY.js";
|
|
25
25
|
import {
|
|
26
26
|
readClipTiming,
|
|
27
27
|
writeClipTiming
|
|
@@ -19,10 +19,10 @@ import {
|
|
|
19
19
|
import {
|
|
20
20
|
formatVariableValidationIssue,
|
|
21
21
|
validateVariables
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-ZDEEHQ2Y.js";
|
|
23
23
|
import {
|
|
24
24
|
extractCompositionMetadata
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-VYKPBRCB.js";
|
|
26
26
|
|
|
27
27
|
// src/utils/variables.ts
|
|
28
28
|
import { readFileSync } from "fs";
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { createRequire as __hf_createRequire } from "node:module";
|
|
2
|
+
import { fileURLToPath as __hf_fileURLToPath } from "node:url";
|
|
3
|
+
import { dirname as __hf_dirname } from "node:path";
|
|
4
|
+
var require = __hf_createRequire(import.meta.url);
|
|
5
|
+
var __filename = __hf_fileURLToPath(import.meta.url);
|
|
6
|
+
var __dirname = __hf_dirname(__filename);
|
|
7
|
+
|
|
8
|
+
// src/utils/checkSnapshotDirectory.ts
|
|
9
|
+
import { randomUUID } from "crypto";
|
|
10
|
+
import { join, resolve } from "path";
|
|
11
|
+
var runDirectories = /* @__PURE__ */ new Map();
|
|
12
|
+
function checkSnapshotDirectory(projectDir) {
|
|
13
|
+
const project = resolve(projectDir);
|
|
14
|
+
let directory = runDirectories.get(project);
|
|
15
|
+
if (!directory) {
|
|
16
|
+
directory = join(project, ".hyperframes", "artifacts", "snapshots", randomUUID());
|
|
17
|
+
runDirectories.set(project, directory);
|
|
18
|
+
}
|
|
19
|
+
return directory;
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
// src/utils/checkTypes.ts
|
|
23
|
+
function rectToBbox(rect) {
|
|
24
|
+
return { x: rect.left, y: rect.top, width: rect.width, height: rect.height };
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export {
|
|
28
|
+
checkSnapshotDirectory,
|
|
29
|
+
rectToBbox
|
|
30
|
+
};
|
|
@@ -25,7 +25,7 @@ import {
|
|
|
25
25
|
extractMediaSrcMutations,
|
|
26
26
|
isSafeMediaUrl,
|
|
27
27
|
resolveAliasDisplayName
|
|
28
|
-
} from "./chunk-
|
|
28
|
+
} from "./chunk-3VGU2SH7.js";
|
|
29
29
|
import {
|
|
30
30
|
findFfBinary
|
|
31
31
|
} from "./chunk-VAS6HQX3.js";
|
|
@@ -49,7 +49,7 @@ import {
|
|
|
49
49
|
import {
|
|
50
50
|
parse,
|
|
51
51
|
simple
|
|
52
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-TYXH3EKP.js";
|
|
53
53
|
import {
|
|
54
54
|
isSceneLikeCompositionId,
|
|
55
55
|
parseSlideshowManifest,
|
|
@@ -7437,18 +7437,18 @@ function deriveDurationFromClips(tags, rootTag) {
|
|
|
7437
7437
|
return resolveCompositionDuration({ authoredDurationSeconds: null, clipEndsSeconds: clipEnds });
|
|
7438
7438
|
}
|
|
7439
7439
|
async function loadParseGsapScript() {
|
|
7440
|
-
const mod = await import("./gsapParserAcorn-
|
|
7440
|
+
const mod = await import("./gsapParserAcorn-7NCK2LVT.js");
|
|
7441
7441
|
return mod.parseGsapScriptAcorn;
|
|
7442
7442
|
}
|
|
7443
7443
|
async function loadGsapScriptMotionPathFirstUseIndex() {
|
|
7444
|
-
const mod = await import("./gsapParserAcorn-
|
|
7444
|
+
const mod = await import("./gsapParserAcorn-7NCK2LVT.js");
|
|
7445
7445
|
return mod.gsapScriptMotionPathFirstUseIndex;
|
|
7446
7446
|
}
|
|
7447
7447
|
var SCENE_BOUNDARY_EPSILON_SECONDS = 0.05;
|
|
7448
7448
|
var UNRESOLVED_TARGET = "__unresolved__";
|
|
7449
7449
|
function targetHasNoStableIdentity(selector, identity) {
|
|
7450
7450
|
if (identity) return false;
|
|
7451
|
-
return selector === UNRESOLVED_TARGET || selector === "dwell/hold" || selector.startsWith("proxy
|
|
7451
|
+
return selector === UNRESOLVED_TARGET || selector === "dwell/hold" || selector.startsWith("proxy ");
|
|
7452
7452
|
}
|
|
7453
7453
|
function unwrapRaw(value) {
|
|
7454
7454
|
if (typeof value === "number") return value;
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
parseStrictFiniteTimingNumber,
|
|
10
10
|
resolveNaturalMediaTimelineDuration,
|
|
11
11
|
resolveTimedImageDurationSeconds
|
|
12
|
-
} from "./chunk-
|
|
12
|
+
} from "./chunk-GV7I3ZSQ.js";
|
|
13
13
|
import {
|
|
14
14
|
CANVAS_DIMENSIONS,
|
|
15
15
|
isCompositionElement,
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
isTextElement,
|
|
18
18
|
keyframesToGsapAnimations,
|
|
19
19
|
serializeGsapAnimations
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-VYKPBRCB.js";
|
|
21
21
|
import {
|
|
22
22
|
COMPOSITION_ATTRIBUTES,
|
|
23
23
|
parseStartExpression
|
|
@@ -0,0 +1,215 @@
|
|
|
1
|
+
import { createRequire as __hf_createRequire } from "node:module";
|
|
2
|
+
import { fileURLToPath as __hf_fileURLToPath } from "node:url";
|
|
3
|
+
import { dirname as __hf_dirname } from "node:path";
|
|
4
|
+
var require = __hf_createRequire(import.meta.url);
|
|
5
|
+
var __filename = __hf_fileURLToPath(import.meta.url);
|
|
6
|
+
var __dirname = __hf_dirname(__filename);
|
|
7
|
+
import {
|
|
8
|
+
DEFAULT_HISTORY_ROOT,
|
|
9
|
+
HistoryBusyError,
|
|
10
|
+
MAX_WINDOW_IDLE_MS,
|
|
11
|
+
openProjectHistory,
|
|
12
|
+
readProjectHistory
|
|
13
|
+
} from "./chunk-7FYFEXD2.js";
|
|
14
|
+
import {
|
|
15
|
+
resolveProject
|
|
16
|
+
} from "./chunk-JQ57FAYN.js";
|
|
17
|
+
import {
|
|
18
|
+
findPreviewServerForProject,
|
|
19
|
+
studioApiUrl
|
|
20
|
+
} from "./chunk-DQBY7FRR.js";
|
|
21
|
+
|
|
22
|
+
// src/utils/historyOwner.ts
|
|
23
|
+
import { randomUUID } from "crypto";
|
|
24
|
+
import { mkdirSync, readFileSync, renameSync, rmSync, writeFileSync } from "fs";
|
|
25
|
+
import { dirname, join, resolve } from "path";
|
|
26
|
+
var historyDeps = {
|
|
27
|
+
historyRoot: resolve(process.env.HYPERFRAMES_HISTORY_ROOT || DEFAULT_HISTORY_ROOT),
|
|
28
|
+
findServer: (projectDir) => findPreviewServerForProject(projectDir),
|
|
29
|
+
/** A turn with no write for this long has ended, through a preview or not. */
|
|
30
|
+
turnIdleMs: MAX_WINDOW_IDLE_MS,
|
|
31
|
+
ownerWaitMs: void 0,
|
|
32
|
+
now: () => Date.now()
|
|
33
|
+
};
|
|
34
|
+
var Refusal = class extends Error {
|
|
35
|
+
};
|
|
36
|
+
var turnFile = (dir) => join(dir, ".hyperframes", "history-turn.json");
|
|
37
|
+
function readTurn(dir) {
|
|
38
|
+
try {
|
|
39
|
+
const turn = JSON.parse(readFileSync(turnFile(dir), "utf-8"));
|
|
40
|
+
return typeof turn.lastWriteAt === "number" ? { ...turn, parts: turn.parts ?? [] } : null;
|
|
41
|
+
} catch {
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function writeTurn(dir, turn) {
|
|
46
|
+
if (!turn) return rmSync(turnFile(dir), { force: true });
|
|
47
|
+
mkdirSync(dirname(turnFile(dir)), { recursive: true });
|
|
48
|
+
writeFileSync(turnFile(dir), JSON.stringify(turn));
|
|
49
|
+
}
|
|
50
|
+
var lastTurnsFile = (dir) => join(dir, ".hyperframes", "history-turns.json");
|
|
51
|
+
function readLastTurns(dir) {
|
|
52
|
+
try {
|
|
53
|
+
const turns = JSON.parse(readFileSync(lastTurnsFile(dir), "utf-8"));
|
|
54
|
+
return turns && typeof turns === "object" ? turns : {};
|
|
55
|
+
} catch {
|
|
56
|
+
return {};
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
function lastTurnParts(dir, name) {
|
|
60
|
+
return readLastTurns(dir)[name] ?? null;
|
|
61
|
+
}
|
|
62
|
+
var samePart = (a, b) => a.who.kind === b.who.kind && a.who.name === b.who.name && a.label === b.label && a.startedAt === b.startedAt;
|
|
63
|
+
async function endTurn(owner, turn, dir) {
|
|
64
|
+
const entry = await owner.end(turn.id);
|
|
65
|
+
const cut = (await owner.list()).filter((other) => samePart(other, entry ?? turn));
|
|
66
|
+
const own = entry ? [entry.id] : [];
|
|
67
|
+
const parts = [.../* @__PURE__ */ new Set([...turn.parts, ...cut.map((part) => part.id), ...own])];
|
|
68
|
+
const draft = `${lastTurnsFile(dir)}.${process.pid}.tmp`;
|
|
69
|
+
mkdirSync(dirname(draft), { recursive: true });
|
|
70
|
+
writeFileSync(draft, JSON.stringify({ ...readLastTurns(dir), [turn.who.name]: parts }));
|
|
71
|
+
renameSync(draft, lastTurnsFile(dir));
|
|
72
|
+
writeTurn(dir, null);
|
|
73
|
+
return { entry, parts };
|
|
74
|
+
}
|
|
75
|
+
function previewOwner(route) {
|
|
76
|
+
const call = async (path, body, signal) => {
|
|
77
|
+
const init = {
|
|
78
|
+
...body && {
|
|
79
|
+
method: "POST",
|
|
80
|
+
headers: { "content-type": "application/json" },
|
|
81
|
+
body: JSON.stringify(body)
|
|
82
|
+
},
|
|
83
|
+
...signal && { signal }
|
|
84
|
+
};
|
|
85
|
+
const response = await fetch(route(path), init);
|
|
86
|
+
if (response.ok) return response;
|
|
87
|
+
const error = await response.json().catch(() => null);
|
|
88
|
+
throw new Refusal(error?.error ?? `The preview answered ${response.status}.`);
|
|
89
|
+
};
|
|
90
|
+
const json = async (path, body, signal) => (await call(path, body, signal)).json();
|
|
91
|
+
const list = async () => (await json("")).entries;
|
|
92
|
+
return {
|
|
93
|
+
via: "preview",
|
|
94
|
+
list,
|
|
95
|
+
peek: async (point) => (await json(`/peek/${encodeURIComponent(point)}`)).files,
|
|
96
|
+
blob: async (hash) => Buffer.from(await (await call(`/blob/${hash}`)).arrayBuffer()),
|
|
97
|
+
undo: (id, who, mode) => json("/undo", { entryId: id, who, mode }),
|
|
98
|
+
restore: (point, who) => json("/restore", { point, who }),
|
|
99
|
+
pin: async (id, pinned) => void await json("/pin", { entryId: id, pinned }),
|
|
100
|
+
begin: async (who, label, exclusive) => {
|
|
101
|
+
const opened = await json("/window", {
|
|
102
|
+
who,
|
|
103
|
+
label,
|
|
104
|
+
idleMs: historyDeps.turnIdleMs,
|
|
105
|
+
...exclusive && { exclusive: true }
|
|
106
|
+
});
|
|
107
|
+
return { id: opened.windowId, startedAt: opened.startedAt ?? historyDeps.now() };
|
|
108
|
+
},
|
|
109
|
+
// A preview restarted since begin committed the window on its way down.
|
|
110
|
+
end: (id) => json(`/window/${id}/close`, {}).then((closed) => closed.entry).catch(async () => (await list()).find((entry) => entry.id === id) ?? null),
|
|
111
|
+
checkpoint: async () => void await json("/checkpoint", {}, AbortSignal.timeout(5e3)),
|
|
112
|
+
close: async () => {
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
async function directOwner(projectDir) {
|
|
117
|
+
let turn = null;
|
|
118
|
+
const history = await openProjectHistory({
|
|
119
|
+
projectDir,
|
|
120
|
+
historyRoot: historyDeps.historyRoot,
|
|
121
|
+
now: () => historyDeps.now(),
|
|
122
|
+
pruneGoneProjectsBudgetMs: 1e3,
|
|
123
|
+
ownerWaitMs: historyDeps.ownerWaitMs,
|
|
124
|
+
closedWindowAfterOwnership: () => {
|
|
125
|
+
turn = readTurn(projectDir);
|
|
126
|
+
return turn ? {
|
|
127
|
+
id: turn.id,
|
|
128
|
+
who: turn.who,
|
|
129
|
+
label: turn.label,
|
|
130
|
+
startedAt: turn.startedAt,
|
|
131
|
+
lastWriteAt: turn.lastWriteAt,
|
|
132
|
+
idleMs: historyDeps.turnIdleMs
|
|
133
|
+
} : void 0;
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
return {
|
|
137
|
+
turn,
|
|
138
|
+
owner: {
|
|
139
|
+
via: "direct",
|
|
140
|
+
list: async () => history.list(),
|
|
141
|
+
peek: async (point) => history.peek(point),
|
|
142
|
+
blob: (hash) => history.readBlob(hash),
|
|
143
|
+
undo: (id, who, mode) => history.undo(id, { who, ...mode && { mode } }),
|
|
144
|
+
restore: (point, who) => history.restore(point, who),
|
|
145
|
+
pin: async (id, pinned) => history.pin(id, pinned),
|
|
146
|
+
// Opening filed every earlier write; the turn's own writes are filed to it when the next open passes it.
|
|
147
|
+
begin: async () => ({ id: randomUUID(), startedAt: historyDeps.now() }),
|
|
148
|
+
end: async (id) => history.list().find((entry) => entry.id === id) ?? null,
|
|
149
|
+
checkpoint: () => history.checkpoint(),
|
|
150
|
+
close: () => history.close()
|
|
151
|
+
}
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
async function connect(projectDir) {
|
|
155
|
+
const server = await historyDeps.findServer(projectDir);
|
|
156
|
+
if (server) {
|
|
157
|
+
const route = (path) => studioApiUrl(server, `history${path}`);
|
|
158
|
+
const status = await fetch(route("")).then(
|
|
159
|
+
(response) => response.status,
|
|
160
|
+
() => 404
|
|
161
|
+
);
|
|
162
|
+
if (status !== 404) return { owner: previewOwner(route), turn: readTurn(projectDir) };
|
|
163
|
+
}
|
|
164
|
+
return directOwner(projectDir);
|
|
165
|
+
}
|
|
166
|
+
async function withOwner(dir, task) {
|
|
167
|
+
const { dir: projectDir } = resolveProject(dir);
|
|
168
|
+
const { owner, turn } = await connect(projectDir);
|
|
169
|
+
try {
|
|
170
|
+
return await task(owner, turn, projectDir);
|
|
171
|
+
} finally {
|
|
172
|
+
try {
|
|
173
|
+
if (owner.via === "direct" && turn) {
|
|
174
|
+
const kept = (await owner.list()).find((entry) => entry.id === turn.id);
|
|
175
|
+
if (readTurn(projectDir)?.id === turn.id) {
|
|
176
|
+
const lastWriteAt = kept ? kept.endedAt : turn.lastWriteAt;
|
|
177
|
+
const parts = kept ? [...turn.parts, kept.id] : turn.parts;
|
|
178
|
+
writeTurn(projectDir, { ...turn, via: "direct", id: randomUUID(), lastWriteAt, parts });
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
} finally {
|
|
182
|
+
await owner.close();
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
async function withReader(dir, task) {
|
|
187
|
+
try {
|
|
188
|
+
return await withOwner(dir, (owner) => task(owner));
|
|
189
|
+
} catch (error) {
|
|
190
|
+
if (!(error instanceof HistoryBusyError)) throw error;
|
|
191
|
+
}
|
|
192
|
+
const view = readProjectHistory({
|
|
193
|
+
projectDir: resolveProject(dir).dir,
|
|
194
|
+
historyRoot: historyDeps.historyRoot
|
|
195
|
+
});
|
|
196
|
+
return task({
|
|
197
|
+
via: "direct",
|
|
198
|
+
list: async () => view.list(),
|
|
199
|
+
peek: async (point) => view.peek(point),
|
|
200
|
+
// The owner may have pruned a blob since its log was read.
|
|
201
|
+
blob: (hash) => view.readBlob(hash).catch((error) => {
|
|
202
|
+
throw error.code === "ENOENT" ? new Refusal("That point is no longer kept") : error;
|
|
203
|
+
})
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export {
|
|
208
|
+
historyDeps,
|
|
209
|
+
Refusal,
|
|
210
|
+
writeTurn,
|
|
211
|
+
lastTurnParts,
|
|
212
|
+
endTurn,
|
|
213
|
+
withOwner,
|
|
214
|
+
withReader
|
|
215
|
+
};
|