Files
hyperframes/packages/core/package.json
T
Miguel Ángel e282ff15cc fix(audio): raise the authoring gain ceiling and carry it through the probes (#3333)
* fix(audio): raise the authoring gain ceiling and carry it through the probes

Builds on #3328, which made the preview graph apply author gain and user volume
exactly once each. That ownership is now correct but everything is still clamped
to 1.0, so a clip authored above unity cannot be heard or rendered.

`HTMLMediaElement.volume` is spec-clamped to [0,1], so both timeline probes lost
a clip's authored gain the moment it also carried a fade: the probe seeded the
element at the clamped value and every sample read back at or below 0 dB, and
the mixer prefers probed keyframes over the static volume. Both probes now
shadow the accessor for their own duration and forward the clamped value to the
native setter, so the authored gain survives while nothing outside the probe
ever sees an illegal volume.

Measured on one 6 s composition, first 4 s: unity -32.8 LUFS, boosted-with-fade
-32.8 before and -27.0 after — +5.8 dB, exactly the gain the clip was authored
at.

One ceiling, defined once in `audioGain.ts` and reachable from both sides: the
render mixer imports it, and the page-serialized probe takes it as a parameter
rather than re-literalling it. User volume stays spec-clamped — it is a fader,
not a gain.

Also holds the percent volume slider above unity in both property panels. That
control tops out at 100%, so one touch would cap a boosted clip and drop up to
12 dB that now genuinely renders; the dB fader that can represent these levels
replaces it in the next PR.

* fix(audio): carry a static above-unity gain onto the preview gain node

Review follow-up.

`setElementVolume` receives the clip's author gain and clamped it to [0,1],
so a static `data-volume` above unity was capped on the WebAudio preview path
while the render honoured it — the exact preview/render divergence this
ceiling exists to close. Automation lanes hid it: they schedule ramps onto the
param directly and never pass through here. The master volume beside it stays
spec-clamped, because a user fader is not a gain.

Verified by mutation: restoring the [0,1] clamp reds the new case.

Also scope the leveller's rationale to this rung — `VOLUME_RANGE` still stops
at unity until the dB fader lands, so "both now span the same range" was
premature — and say why the GSAP-tracking fallback is unity-capped: it reads
back through `el.volume`, which the spec pins to [0,1], so it cannot observe an
above-unity value however wide the clamp gets.

* fix(audio): restore the live test files this branch overwrote, and uncap preview

Review blocker: three files were wholesale copies from the abandoned #3304
branch laid over a two-day-newer base, so they silently reverted work that had
landed in between. CI could not see it — deleted tests do not fail.

- `audioMixer.test.ts` was byte-identical to #3304's head: 1186 lines against a
  base of 1353. Gone with it were the `data-playback-start` fallthrough cases
  from #3322 — merged 54 minutes before this branch's own merge base — and all
  retiming coverage (`playbackRate` 7 to 0, `atempo` 5 to 0), the strict
  literal-timing table, and the zero-window cases.
- `mediaVolumeEnvelope.test.ts` dropped the trailing-garbage duration case and
  the plateau-retention case.
- `packages/core/package.json` rolled the package version back 0.8.3 to 0.7.109.

All three are restored from `main` with only this PR's additions re-applied on
top, and the subpath export is regenerated by the repo's own script rather than
hand-edited.

Also closes the preview/render split the same review raised. Two clamps had to
go, not one: `setElementVolume` capped the author gain at the transport, and
the first-tick branch in `syncRuntimeMedia` trusted `el.volume` — which is
spec-bound to [0,1] and so cannot represent a boost, opening a boosted clip at
0 dB for one tick before the steady-state branch took over. Both pinned by
tests, both verified by mutation.
2026-08-18 20:07:42 -04:00

679 lines
24 KiB
JSON

{
"name": "@hyperframes/core",
"version": "0.8.3",
"description": "",
"repository": {
"type": "git",
"url": "https://github.com/heygen-com/hyperframes",
"directory": "packages/core"
},
"files": [
"dist/**/*.js",
"dist/**/*.d.ts",
"dist/**/*.d.ts.map",
"dist/**/*.js.map",
"!dist/hyperframe.runtime.mjs",
"docs",
"schemas",
"README.md"
],
"type": "module",
"main": "./src/index.ts",
"types": "./src/index.ts",
"exports": {
".": {
"bun": "./src/index.ts",
"node": "./dist/index.js",
"import": "./src/index.ts",
"types": "./src/index.ts"
},
"./package.json": "./package.json",
"./canary": {
"bun": "./src/canary.ts",
"node": "./dist/canary.js",
"import": "./src/canary.ts",
"types": "./src/canary.ts"
},
"./canary-registry": {
"bun": "./src/canaryRegistry.ts",
"node": "./dist/canaryRegistry.js",
"import": "./src/canaryRegistry.ts",
"types": "./src/canaryRegistry.ts"
},
"./beats": {
"bun": "./src/beats/index.ts",
"node": "./dist/beats/index.js",
"import": "./src/beats/index.ts",
"types": "./src/beats/index.ts"
},
"./html-attr-safety": {
"bun": "./src/utils/htmlAttrSafety.ts",
"node": "./dist/utils/htmlAttrSafety.js",
"import": "./src/utils/htmlAttrSafety.ts",
"types": "./src/utils/htmlAttrSafety.ts"
},
"./rich-text-sanitize": {
"bun": "./src/utils/richTextSanitize.ts",
"node": "./dist/utils/richTextSanitize.js",
"import": "./src/utils/richTextSanitize.ts",
"types": "./src/utils/richTextSanitize.ts"
},
"./composition-contract": {
"bun": "./src/compositionContract.ts",
"node": "./dist/compositionContract.js",
"import": "./src/compositionContract.ts",
"types": "./src/compositionContract.ts"
},
"./editing": {
"bun": "./src/editing/affordances.ts",
"node": "./dist/editing/affordances.js",
"import": "./src/editing/affordances.ts",
"types": "./src/editing/affordances.ts"
},
"./editing/draft-markers": {
"bun": "./src/editing/draftMarkers.ts",
"node": "./dist/editing/draftMarkers.js",
"import": "./src/editing/draftMarkers.ts",
"types": "./src/editing/draftMarkers.ts"
},
"./variables": {
"bun": "./src/variables.ts",
"node": "./dist/variables.js",
"import": "./src/variables.ts",
"types": "./src/variables.ts"
},
"./slideshow": {
"bun": "./src/slideshow/index.ts",
"node": "./dist/slideshow/index.js",
"import": "./src/slideshow/index.ts",
"types": "./src/slideshow/index.ts"
},
"./generators": {
"bun": "./src/generators/hyperframes.ts",
"node": "./dist/generators/hyperframes.js",
"import": "./src/generators/hyperframes.ts",
"types": "./src/generators/hyperframes.ts"
},
"./lint": {
"bun": "./src/lint/index.ts",
"node": "./dist/lint/index.js",
"import": "./src/lint/index.ts",
"types": "./src/lint/index.ts"
},
"./compiler": {
"bun": "./src/compiler/index.ts",
"node": "./dist/compiler/index.js",
"import": "./src/compiler/index.ts",
"types": "./src/compiler/index.ts"
},
"./audio-fx": {
"bun": "./src/audioFx.ts",
"node": "./dist/audioFx.js",
"import": "./src/audioFx.ts",
"types": "./src/audioFx.ts"
},
"./audio-fx-copy": {
"bun": "./src/audioFxCopy.ts",
"node": "./dist/audioFxCopy.js",
"import": "./src/audioFxCopy.ts",
"types": "./src/audioFxCopy.ts"
},
"./audio-fx-profiles": {
"bun": "./src/audioFxProfiles.ts",
"node": "./dist/audioFxProfiles.js",
"import": "./src/audioFxProfiles.ts",
"types": "./src/audioFxProfiles.ts"
},
"./audio-fx-jobs": {
"bun": "./src/audioFxJobs.ts",
"node": "./dist/audioFxJobs.js",
"import": "./src/audioFxJobs.ts",
"types": "./src/audioFxJobs.ts"
},
"./audio-fx-eq": {
"bun": "./src/audioFxEq.ts",
"node": "./dist/audioFxEq.js",
"import": "./src/audioFxEq.ts",
"types": "./src/audioFxEq.ts"
},
"./audio-leveller": {
"bun": "./src/audioLeveller.ts",
"node": "./dist/audioLeveller.js",
"import": "./src/audioLeveller.ts",
"types": "./src/audioLeveller.ts"
},
"./audio-fx-presets": {
"bun": "./src/audioFxPresets.ts",
"node": "./dist/audioFxPresets.js",
"import": "./src/audioFxPresets.ts",
"types": "./src/audioFxPresets.ts"
},
"./audio-fx-tail": {
"bun": "./src/audio/audioFxTail.ts",
"node": "./dist/audio/audioFxTail.js",
"import": "./src/audio/audioFxTail.ts",
"types": "./src/audio/audioFxTail.ts"
},
"./audio-fx-runtime": {
"bun": "./src/generated/audio-fx-runtime-inline.ts",
"node": "./dist/generated/audio-fx-runtime-inline.js",
"import": "./src/generated/audio-fx-runtime-inline.ts",
"types": "./src/generated/audio-fx-runtime-inline.ts"
},
"./audio-carve": {
"bun": "./src/audioCarve.ts",
"node": "./dist/audioCarve.js",
"import": "./src/audioCarve.ts",
"types": "./src/audioCarve.ts"
},
"./audio-automation": {
"bun": "./src/audioAutomation.ts",
"node": "./dist/audioAutomation.js",
"import": "./src/audioAutomation.ts",
"types": "./src/audioAutomation.ts"
},
"./audio-gain": {
"bun": "./src/audioGain.ts",
"node": "./dist/audioGain.js",
"import": "./src/audioGain.ts",
"types": "./src/audioGain.ts"
},
"./color-grading": {
"bun": "./src/colorGrading.ts",
"node": "./dist/colorGrading.js",
"import": "./src/colorGrading.ts",
"types": "./src/colorGrading.ts"
},
"./color-luts": {
"bun": "./src/colorLuts.ts",
"node": "./dist/colorLuts.js",
"import": "./src/colorLuts.ts",
"types": "./src/colorLuts.ts"
},
"./media-grade-analyzer": {
"bun": "./src/mediaGradeAnalyzer.ts",
"node": "./dist/mediaGradeAnalyzer.js",
"import": "./src/mediaGradeAnalyzer.ts",
"types": "./src/mediaGradeAnalyzer.ts"
},
"./storyboard": {
"bun": "./src/storyboard/index.ts",
"node": "./dist/storyboard/index.js",
"import": "./src/storyboard/index.ts",
"types": "./src/storyboard/index.ts"
},
"./runtime": "./dist/hyperframe.runtime.iife.js",
"./runtime/clipTree": {
"bun": "./src/runtime/clipTree.ts",
"node": "./dist/runtime/clipTree.js",
"import": "./src/runtime/clipTree.ts",
"types": "./src/runtime/clipTree.ts"
},
"./runtime/custom-ease": {
"bun": "./src/runtime/customEase.ts",
"node": "./dist/runtime/customEase.js",
"import": "./src/runtime/customEase.ts",
"types": "./src/runtime/customEase.ts"
},
"./runtime/start-expression": {
"bun": "./src/runtime/startExpression.ts",
"node": "./dist/runtime/startExpression.js",
"import": "./src/runtime/startExpression.ts",
"types": "./src/runtime/startExpression.ts"
},
"./runtime/start-resolver": {
"bun": "./src/runtime/startResolver.ts",
"node": "./dist/runtime/startResolver.js",
"import": "./src/runtime/startResolver.ts",
"types": "./src/runtime/startResolver.ts"
},
"./runtime/protocol": {
"bun": "./src/runtime/protocol.ts",
"node": "./dist/runtime/protocol.js",
"import": "./src/runtime/protocol.ts",
"types": "./src/runtime/protocol.ts"
},
"./runtime/stacking-context": {
"bun": "./src/runtime/stackingContext.ts",
"node": "./dist/runtime/stackingContext.js",
"import": "./src/runtime/stackingContext.ts",
"types": "./src/runtime/stackingContext.ts"
},
"./compiler/html-document": {
"bun": "./src/compiler/htmlDocument.ts",
"node": "./dist/compiler/htmlDocument.js",
"import": "./src/compiler/htmlDocument.ts",
"types": "./src/compiler/htmlDocument.ts"
},
"./runtime/position-edits": {
"bun": "./src/runtime/positionEdits.ts",
"node": "./dist/runtime/positionEdits.js",
"import": "./src/runtime/positionEdits.ts",
"types": "./src/runtime/positionEdits.ts"
},
"./runtime/position-edits-render": {
"bun": "./src/generated/position-edits-render-inline.ts",
"node": "./dist/generated/position-edits-render-inline.js",
"import": "./src/generated/position-edits-render-inline.ts",
"types": "./src/generated/position-edits-render-inline.ts"
},
"./runtime/lottie-readiness": {
"bun": "./src/lottieReadiness.ts",
"node": "./dist/lottieReadiness.js",
"import": "./src/lottieReadiness.ts",
"types": "./src/lottieReadiness.ts"
},
"./studio-api": {
"bun": "./src/studio-api/index.ts",
"node": "./dist/studio-api/index.js",
"import": "./src/studio-api/index.ts",
"types": "./src/studio-api/index.ts"
},
"./studio-api/screenshot-clip": {
"bun": "./src/studio-api/helpers/screenshotClip.ts",
"node": "./dist/studio-api/helpers/screenshotClip.js",
"import": "./src/studio-api/helpers/screenshotClip.ts",
"types": "./src/studio-api/helpers/screenshotClip.ts"
},
"./studio-api/manual-edits-render-script": {
"bun": "./src/studio-api/helpers/manualEditsRenderScript.ts",
"node": "./dist/studio-api/helpers/manualEditsRenderScript.js",
"import": "./src/studio-api/helpers/manualEditsRenderScript.ts",
"types": "./src/studio-api/helpers/manualEditsRenderScript.ts"
},
"./studio-api/studio-motion-render-script": {
"bun": "./src/studio-api/helpers/studioMotionRenderScript.ts",
"node": "./dist/studio-api/helpers/studioMotionRenderScript.js",
"import": "./src/studio-api/helpers/studioMotionRenderScript.ts",
"types": "./src/studio-api/helpers/studioMotionRenderScript.ts"
},
"./studio-api/draft-markers": {
"bun": "./src/studio-api/helpers/draftMarkers.ts",
"node": "./dist/studio-api/helpers/draftMarkers.js",
"import": "./src/studio-api/helpers/draftMarkers.ts",
"types": "./src/studio-api/helpers/draftMarkers.ts"
},
"./studio-api/finite-mutation": {
"bun": "./src/studio-api/helpers/finiteMutation.ts",
"node": "./dist/studio-api/helpers/finiteMutation.js",
"import": "./src/studio-api/helpers/finiteMutation.ts",
"types": "./src/studio-api/helpers/finiteMutation.ts"
},
"./text": {
"bun": "./src/text/index.ts",
"node": "./dist/text/index.js",
"import": "./src/text/index.ts",
"types": "./src/text/index.ts"
},
"./registry": {
"bun": "./src/registry/index.ts",
"node": "./dist/registry/index.js",
"import": "./src/registry/index.ts",
"types": "./src/registry/index.ts"
},
"./media-volume-envelope": {
"bun": "./src/runtime/mediaVolumeEnvelope.ts",
"node": "./dist/runtime/mediaVolumeEnvelope.js",
"import": "./src/runtime/mediaVolumeEnvelope.ts",
"types": "./src/runtime/mediaVolumeEnvelope.ts"
},
"./hf-ids": {
"bun": "./src/parsers/hfIds.ts",
"node": "./dist/parsers/hfIds.js",
"import": "./src/parsers/hfIds.ts",
"types": "./src/parsers/hfIds.ts"
},
"./gsap-parser": {
"bun": "./src/parsers/gsapParserExports.ts",
"node": "./dist/parsers/gsapParserExports.js",
"import": "./src/parsers/gsapParserExports.ts",
"types": "./src/parsers/gsapParserExports.ts"
},
"./gsap-parser-acorn": {
"bun": "./src/parsers/gsapParserAcorn.ts",
"node": "./dist/parsers/gsapParserAcorn.js",
"import": "./src/parsers/gsapParserAcorn.ts",
"types": "./src/parsers/gsapParserAcorn.ts"
},
"./gsap-writer-acorn": {
"bun": "./src/parsers/gsapWriterAcorn.ts",
"node": "./dist/parsers/gsapWriterAcorn.js",
"import": "./src/parsers/gsapWriterAcorn.ts",
"types": "./src/parsers/gsapWriterAcorn.ts"
},
"./gsap-constants": {
"bun": "./src/parsers/gsapConstants.ts",
"node": "./dist/parsers/gsapConstants.js",
"import": "./src/parsers/gsapConstants.ts",
"types": "./src/parsers/gsapConstants.ts"
},
"./spring-ease": {
"bun": "./src/parsers/springEase.ts",
"node": "./dist/parsers/springEase.js",
"import": "./src/parsers/springEase.ts",
"types": "./src/parsers/springEase.ts"
},
"./wiggle-ease": {
"bun": "./src/runtime/wiggleEase.ts",
"node": "./dist/runtime/wiggleEase.js",
"import": "./src/runtime/wiggleEase.ts",
"types": "./src/runtime/wiggleEase.ts"
},
"./fonts/aliases": {
"bun": "./src/fonts/aliases.ts",
"node": "./dist/fonts/aliases.js",
"import": "./src/fonts/aliases.ts",
"types": "./src/fonts/aliases.ts"
},
"./fonts/system-locator": {
"bun": "./src/fonts/systemFontLocator.ts",
"node": "./dist/fonts/systemFontLocator.js",
"import": "./src/fonts/systemFontLocator.ts",
"types": "./src/fonts/systemFontLocator.ts"
},
"./figma": {
"bun": "./src/figma/index.ts",
"node": "./dist/figma/index.js",
"import": "./src/figma/index.ts",
"types": "./src/figma/index.ts"
},
"./schemas/registry.json": "./schemas/registry.json",
"./schemas/registry-item.json": "./schemas/registry-item.json"
},
"publishConfig": {
"access": "public",
"exports": {
".": {
"import": "./dist/index.js",
"types": "./dist/index.d.ts"
},
"./package.json": "./package.json",
"./canary": {
"import": "./dist/canary.js",
"types": "./dist/canary.d.ts"
},
"./canary-registry": {
"import": "./dist/canaryRegistry.js",
"types": "./dist/canaryRegistry.d.ts"
},
"./beats": {
"import": "./dist/beats/index.js",
"types": "./dist/beats/index.d.ts"
},
"./html-attr-safety": {
"import": "./dist/utils/htmlAttrSafety.js",
"types": "./dist/utils/htmlAttrSafety.d.ts"
},
"./rich-text-sanitize": {
"import": "./dist/utils/richTextSanitize.js",
"types": "./dist/utils/richTextSanitize.d.ts"
},
"./composition-contract": {
"import": "./dist/compositionContract.js",
"types": "./dist/compositionContract.d.ts"
},
"./editing": {
"import": "./dist/editing/affordances.js",
"types": "./dist/editing/affordances.d.ts"
},
"./editing/draft-markers": {
"import": "./dist/editing/draftMarkers.js",
"types": "./dist/editing/draftMarkers.d.ts"
},
"./variables": {
"import": "./dist/variables.js",
"types": "./dist/variables.d.ts"
},
"./slideshow": {
"import": "./dist/slideshow/index.js",
"types": "./dist/slideshow/index.d.ts"
},
"./generators": {
"import": "./dist/generators/hyperframes.js",
"types": "./dist/generators/hyperframes.d.ts"
},
"./lint": {
"import": "./dist/lint/index.js",
"types": "./dist/lint/index.d.ts"
},
"./compiler": {
"import": "./dist/compiler/index.js",
"types": "./dist/compiler/index.d.ts"
},
"./audio-fx": {
"import": "./dist/audioFx.js",
"types": "./dist/audioFx.d.ts"
},
"./audio-fx-copy": {
"import": "./dist/audioFxCopy.js",
"types": "./dist/audioFxCopy.d.ts"
},
"./audio-fx-profiles": {
"import": "./dist/audioFxProfiles.js",
"types": "./dist/audioFxProfiles.d.ts"
},
"./audio-fx-jobs": {
"import": "./dist/audioFxJobs.js",
"types": "./dist/audioFxJobs.d.ts"
},
"./audio-fx-eq": {
"import": "./dist/audioFxEq.js",
"types": "./dist/audioFxEq.d.ts"
},
"./audio-leveller": {
"import": "./dist/audioLeveller.js",
"types": "./dist/audioLeveller.d.ts"
},
"./audio-fx-presets": {
"import": "./dist/audioFxPresets.js",
"types": "./dist/audioFxPresets.d.ts"
},
"./audio-fx-tail": {
"import": "./dist/audio/audioFxTail.js",
"types": "./dist/audio/audioFxTail.d.ts"
},
"./audio-fx-runtime": {
"import": "./dist/generated/audio-fx-runtime-inline.js",
"types": "./dist/generated/audio-fx-runtime-inline.d.ts"
},
"./audio-carve": {
"import": "./dist/audioCarve.js",
"types": "./dist/audioCarve.d.ts"
},
"./audio-automation": {
"import": "./dist/audioAutomation.js",
"types": "./dist/audioAutomation.d.ts"
},
"./audio-gain": {
"import": "./dist/audioGain.js",
"types": "./dist/audioGain.d.ts"
},
"./color-grading": {
"import": "./dist/colorGrading.js",
"types": "./dist/colorGrading.d.ts"
},
"./color-luts": {
"import": "./dist/colorLuts.js",
"types": "./dist/colorLuts.d.ts"
},
"./media-grade-analyzer": {
"import": "./dist/mediaGradeAnalyzer.js",
"types": "./dist/mediaGradeAnalyzer.d.ts"
},
"./storyboard": {
"import": "./dist/storyboard/index.js",
"types": "./dist/storyboard/index.d.ts"
},
"./runtime": "./dist/hyperframe.runtime.iife.js",
"./runtime/clipTree": {
"import": "./dist/runtime/clipTree.js",
"types": "./dist/runtime/clipTree.d.ts"
},
"./runtime/custom-ease": {
"import": "./dist/runtime/customEase.js",
"types": "./dist/runtime/customEase.d.ts"
},
"./runtime/start-expression": {
"import": "./dist/runtime/startExpression.js",
"types": "./dist/runtime/startExpression.d.ts"
},
"./runtime/start-resolver": {
"import": "./dist/runtime/startResolver.js",
"types": "./dist/runtime/startResolver.d.ts"
},
"./runtime/protocol": {
"import": "./dist/runtime/protocol.js",
"types": "./dist/runtime/protocol.d.ts"
},
"./runtime/stacking-context": {
"import": "./dist/runtime/stackingContext.js",
"types": "./dist/runtime/stackingContext.d.ts"
},
"./compiler/html-document": {
"import": "./dist/compiler/htmlDocument.js",
"types": "./dist/compiler/htmlDocument.d.ts"
},
"./runtime/position-edits": {
"import": "./dist/runtime/positionEdits.js",
"types": "./dist/runtime/positionEdits.d.ts"
},
"./runtime/position-edits-render": {
"import": "./dist/generated/position-edits-render-inline.js",
"types": "./dist/generated/position-edits-render-inline.d.ts"
},
"./runtime/lottie-readiness": {
"import": "./dist/lottieReadiness.js",
"types": "./dist/lottieReadiness.d.ts"
},
"./studio-api": {
"import": "./dist/studio-api/index.js",
"types": "./dist/studio-api/index.d.ts"
},
"./studio-api/screenshot-clip": {
"import": "./dist/studio-api/helpers/screenshotClip.js",
"types": "./dist/studio-api/helpers/screenshotClip.d.ts"
},
"./studio-api/manual-edits-render-script": {
"import": "./dist/studio-api/helpers/manualEditsRenderScript.js",
"types": "./dist/studio-api/helpers/manualEditsRenderScript.d.ts"
},
"./studio-api/studio-motion-render-script": {
"import": "./dist/studio-api/helpers/studioMotionRenderScript.js",
"types": "./dist/studio-api/helpers/studioMotionRenderScript.d.ts"
},
"./studio-api/draft-markers": {
"import": "./dist/studio-api/helpers/draftMarkers.js",
"types": "./dist/studio-api/helpers/draftMarkers.d.ts"
},
"./studio-api/finite-mutation": {
"import": "./dist/studio-api/helpers/finiteMutation.js",
"types": "./dist/studio-api/helpers/finiteMutation.d.ts"
},
"./text": {
"import": "./dist/text/index.js",
"types": "./dist/text/index.d.ts"
},
"./registry": {
"import": "./dist/registry/index.js",
"types": "./dist/registry/index.d.ts"
},
"./media-volume-envelope": {
"import": "./dist/runtime/mediaVolumeEnvelope.js",
"types": "./dist/runtime/mediaVolumeEnvelope.d.ts"
},
"./hf-ids": {
"import": "./dist/parsers/hfIds.js",
"types": "./dist/parsers/hfIds.d.ts"
},
"./gsap-parser": {
"import": "./dist/parsers/gsapParserExports.js",
"types": "./dist/parsers/gsapParserExports.d.ts"
},
"./gsap-parser-acorn": {
"import": "./dist/parsers/gsapParserAcorn.js",
"types": "./dist/parsers/gsapParserAcorn.d.ts"
},
"./gsap-writer-acorn": {
"import": "./dist/parsers/gsapWriterAcorn.js",
"types": "./dist/parsers/gsapWriterAcorn.d.ts"
},
"./gsap-constants": {
"import": "./dist/parsers/gsapConstants.js",
"types": "./dist/parsers/gsapConstants.d.ts"
},
"./spring-ease": {
"import": "./dist/parsers/springEase.js",
"types": "./dist/parsers/springEase.d.ts"
},
"./wiggle-ease": {
"import": "./dist/runtime/wiggleEase.js",
"types": "./dist/runtime/wiggleEase.d.ts"
},
"./fonts/aliases": {
"import": "./dist/fonts/aliases.js",
"types": "./dist/fonts/aliases.d.ts"
},
"./fonts/system-locator": {
"import": "./dist/fonts/systemFontLocator.js",
"types": "./dist/fonts/systemFontLocator.d.ts"
},
"./figma": {
"import": "./dist/figma/index.js",
"types": "./dist/figma/index.d.ts"
},
"./schemas/registry.json": "./schemas/registry.json",
"./schemas/registry-item.json": "./schemas/registry-item.json"
},
"main": "./dist/index.js",
"types": "./dist/index.d.ts"
},
"scripts": {
"build": "bun run build:hyperframes-runtime && bun run build:position-edits-render && bun run build:audio-fx-runtime && tsc && tsx scripts/rewrite-esm-extensions.ts",
"test": "bun run check:position-edits-render && bun run build:audio-fx-runtime && vitest run",
"test:watch": "vitest",
"test:coverage": "vitest run --coverage",
"test:runtime-coverage": "vitest run --coverage src/runtime",
"typecheck": "tsc --noEmit && bun run typecheck:runtime",
"typecheck:runtime": "tsc --noEmit -p tsconfig.runtime.json",
"lint:runtime-preview-guards": "bun scripts/lint-runtime-preview-guards.ts",
"build:audio-fx-runtime": "tsx scripts/build-audio-fx-runtime.ts",
"build:hyperframes-runtime": "tsx scripts/build-hyperframes-runtime-artifact.ts",
"build:position-edits-render": "tsx scripts/build-position-edits-render.ts",
"check:position-edits-render": "bun run build:position-edits-render && git diff --exit-code -- src/generated/position-edits-render-inline.ts",
"build:hyperframes-runtime:modular": "SANDBOX_RUNTIME_VARIANT=modular tsx scripts/build-hyperframes-runtime-artifact.ts",
"build:hyperframe-runtime": "tsx scripts/build-hyperframes-runtime-artifact.ts",
"test:hyperframe-runtime-contract": "tsx scripts/test-hyperframe-runtime-contract.ts",
"test:hyperframe-runtime-behavior": "tsx scripts/test-hyperframe-runtime-behavior.ts",
"test:hyperframe-runtime-seek": "tsx scripts/test-hyperframe-runtime-seek.ts",
"test:hyperframe-runtime-duration-guards": "tsx scripts/test-hyperframe-runtime-duration-guards.ts",
"test:hyperframe-runtime-parity": "tsx scripts/test-hyperframe-runtime-parity.ts",
"test:hyperframe-runtime-security": "tsx scripts/test-hyperframe-runtime-security.ts",
"test:hyperframe-linter": "bun scripts/test-hyperframe-linter.ts",
"test:hyperframe-runtime-ci": "bun run typecheck:runtime && bun run lint:runtime-preview-guards && bun run build:hyperframes-runtime && bun run test:hyperframe-runtime-contract && bun run test:hyperframe-runtime-behavior && bun run test:hyperframe-runtime-seek && bun run test:hyperframe-runtime-duration-guards && bun run test:hyperframe-runtime-parity && bun run test:hyperframe-runtime-security && bun run test:runtime-coverage && bun run test:hyperframe-linter",
"check:hyperframe-html": "bun scripts/check-hyperframe-static.ts",
"debug:timeline": "tsx scripts/debug-timeline.ts",
"prepublishOnly": "echo skip"
},
"dependencies": {
"@chenglou/pretext": "^0.0.5",
"@hyperframes/lint": "workspace:*",
"@hyperframes/parsers": "workspace:*",
"@hyperframes/studio-server": "workspace:*",
"bpm-detective": "^2.0.5",
"linkedom": "^0.18.12",
"postcss": "^8.5.8"
},
"devDependencies": {
"@types/jsdom": "^28.0.0",
"@types/node": "^25.0.10",
"@vitest/coverage-v8": "^3.2.4",
"jsdom": "^29.0.0",
"tsx": "^4.21.0",
"typescript": "^5.0.0",
"vitest": "^3.2.4"
},
"optionalDependencies": {
"esbuild": "^0.25.12"
}
}