Files
hyperframes/packages/core/src/index.ts
T
Vance IngallsandClaude Opus 5 e79ab3ab31 fix(core,producer): redact bare relative paths and the known input path
The generic scrub still missed a relative path with no `./` prefix:
`customer/acme-secret/video.mp4` and `assets/bgm.mp3` reached telemetry
completely unredacted, because the absolute rule needs a leading slash and
the `./` rule needs the dot. Adds a rule for them that still leaves `N/A`,
`24/1` and `48000/1001` alone.

Shape matching is a net with holes by construction, so audioPadTrim now
also redacts the exact path it put in the argv, plus its basename, before
the generic scrub runs. It built the argv, so it does not have to guess.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-04 02:23:35 -07:00

348 lines
9.5 KiB
TypeScript

// Types
export type {
ExecutionMode,
Orientation,
Asset,
TimelineElement,
TimelineElementBase,
TimelineMediaElement,
TimelineTextElement,
TimelineCompositionElement,
TimelineElementType,
MediaElementType,
CanvasResolution,
Fps,
FpsInput,
FpsParseResult,
MediaFile,
CompositionAPI,
PlayerAPI,
AddElementData,
ValidationResult,
CompositionAsset,
Keyframe,
KeyframeProperties,
ElementKeyframes,
StageZoom,
StageZoomKeyframe,
CompositionVariableType,
CompositionVariableBase,
StringVariable,
NumberVariable,
ColorVariable,
BooleanVariable,
EnumVariable,
CompositionVariable,
CompositionSpec,
WaveformData,
OutputResolutionCompatibility,
OutputResolutionIssueKind,
} from "./core.types";
export type {
SlideshowManifest,
SlideRef,
SlideHotspot,
SlideSequence,
ResolvedSlide,
ResolvedSlideSequence,
ResolvedSlideshow,
} from "./slideshow/index.js";
export { parseSlideshowManifest, resolveSlideshow } from "./slideshow/index.js";
export {
CANVAS_DIMENSIONS,
VALID_CANVAS_RESOLUTIONS,
normalizeResolutionFlag,
isAspectAgnosticResolutionAlias,
resolveResolutionFlagPair,
checkOutputResolutionCompatibility,
suggestMatchingPreset,
parseFps,
parseFpsWithDefault,
toFps,
fpsToNumber,
fpsToFfmpegArg,
TIMELINE_COLORS,
DEFAULT_DURATIONS,
COMPOSITION_VARIABLE_TYPES,
isTextElement,
isMediaElement,
isCompositionElement,
getDefaultStageZoom,
} from "./core.types";
// Templates
export { generateBaseHtml, getStageStyles } from "./templates/base";
export {
GSAP_CDN,
BASE_STYLES,
ELEMENT_BASE_STYLES,
MEDIA_STYLES,
TEXT_STYLES,
ZOOM_CONTAINER_STYLES,
} from "./templates/constants";
// Parsers — GSAP helpers. The AST parser (parseGsapScriptAcorn and write ops)
// is browser-safe; mutation helpers are in gsapWriterAcorn.
export type { GsapAnimation, GsapMethod, ParsedGsap } from "@hyperframes/parsers";
export {
serializeGsapAnimations,
getAnimationsForElementId,
validateCompositionGsap,
keyframesToGsapAnimations,
gsapAnimationsToKeyframes,
} from "@hyperframes/parsers";
export type { ParsedHtml, CompositionMetadata } from "@hyperframes/parsers";
export {
parseHtml,
updateElementInHtml,
addElementToHtml,
removeElementFromHtml,
validateCompositionHtml,
extractCompositionMetadata,
} from "@hyperframes/parsers";
// Generators
export type { SerializeOptions } from "./generators/hyperframes";
export {
generateHyperframesHtml,
generateGsapTimelineScript,
generateHyperframesStyles,
} from "./generators/hyperframes";
// Compiler (timing only — browser-safe, no linkedom/esbuild)
export type {
UnresolvedElement,
ResolvedDuration,
ResolvedMediaElement,
CompilationResult,
} from "./compiler/timingCompiler";
// Timing resolver — shared pure resolver for word-anchored elastic timing (WS-C).
export type {
WordTiming,
ElementAnchor,
AuthoredTiming,
ResolvedTiming,
ResolveTimingsInput,
ResolveTimingsResult,
} from "./compiler/timingResolver";
export { resolveTimings } from "./compiler/timingResolver";
export {
compileTimingAttrs,
injectDurations,
extractResolvedMedia,
clampDurations,
shouldClampMediaDuration,
shouldClampResolvedMediaDuration,
MEDIA_DURATION_CLAMP_EPSILON_SECONDS,
} from "./compiler/timingCompiler";
// Lint moved to @hyperframes/lint. Import lint APIs from @hyperframes/lint
// directly, or via the back-compat stub at @hyperframes/core/lint. Not
// re-exported here — doing so would cycle core's main entry through the lint
// package (which imports core utilities back).
export {
rewriteAssetPaths,
rewriteAssetPath,
rewriteCssAssetUrls,
rewriteInlineStyleAssetUrls,
} from "./compiler/rewriteSubCompPaths";
export { CSS_URL_RE, isNonRelativeUrl, isPathInside } from "./compiler/assetPaths";
export {
checkSubCompositionUsability,
type ParsableDocumentLike,
type SubCompositionValidity,
type SubCompositionValidityReason,
} from "./compiler/subCompositionValidity";
export { RUNTIME_BOOTSTRAP_ATTR, stripEmbeddedRuntimeScripts } from "./compiler/htmlDocument";
export { queryByAttr } from "./utils/cssSelector";
export { decodeUrlPathVariants } from "./utils/urlPath";
export { parseAnimatedGifMetadata, type AnimatedGifMetadata } from "./media/gif";
export {
HF_COLOR_GRADING_ATTR,
HF_COLOR_GRADING_ADJUST_KEYS,
HF_COLOR_GRADING_ACTIVE_EFFECT_KEYS,
HF_COLOR_GRADING_ANIMATABLE_PROPERTIES,
HF_COLOR_GRADING_CANVAS_ID_PREFIX,
HF_COLOR_GRADING_COLOR_SPACE,
HF_COLOR_GRADING_CURVE_KEYS,
HF_COLOR_GRADING_DETAIL_KEYS,
HF_COLOR_GRADING_EFFECT_APPLY_DEFAULTS,
HF_COLOR_GRADING_EFFECT_KEYS,
HF_COLOR_GRADING_EFFECT_PRESETS,
HF_COLOR_GRADING_GRADE_PRESETS,
HF_COLOR_GRADING_HUE_CURVE_KEYS,
HF_COLOR_GRADING_LUT_KEYS,
HF_COLOR_GRADING_PALETTES,
HF_COLOR_GRADING_PRESETS,
HF_COLOR_GRADING_TOP_LEVEL_KEYS,
HF_COLOR_GRADING_WHEEL_KEYS,
getHfColorGradingCapabilities,
hasHfColorGradingAuthoredValues,
isHfColorGradingActive,
normalizeHfColorGrading,
normalizeHfColorGradingWithVariables,
resolveHfColorGradingVariables,
serializeHfColorGrading,
type HfColorGrading,
type HfColorGradingAdjust,
type HfColorGradingAdjustKey,
type HfColorGradingAnimatablePath,
type HfColorGradingActiveEffectKey,
type HfColorGradingDetailKey,
type HfColorGradingDetails,
type HfColorGradingEffectKey,
type HfColorGradingEffects,
type HfColorGradingLutRef,
type HfColorGradingPreset,
type HfColorGradingPresetId,
type HfColorGradingTarget,
type HfColorGradingVariableMap,
type HfColorGradingCapabilities,
type HfColorGradingCurveKey,
type HfColorGradingCurves,
type HfColorGradingHueCurveKey,
type HfColorGradingHueCurves,
type HfColorGradingHueRange,
type HfColorGradingSecondary,
type HfColorGradingSecondaryCorrection,
type HfColorGradingSoftRange,
type HfColorGradingTonalWheel,
type HfColorGradingWheelKey,
type HfColorGradingWheels,
type HfColorCurvePoint,
type HfHueCurvePoint,
type NormalizedHfColorGrading,
type NormalizedHfColorGradingCurves,
type NormalizedHfColorGradingHueCurves,
type NormalizedHfColorGradingSecondary,
type NormalizedHfColorGradingWheels,
type ResolvedHfColorGrading,
} from "./colorGrading";
export { parseCubeLut, CubeLutParseError, type ParseCubeLutOptions } from "./colorLuts";
// Inline scripts
export {
HYPERFRAME_RUNTIME_ARTIFACTS,
HYPERFRAME_RUNTIME_CONTRACT,
loadHyperframeRuntimeSource,
type HyperframeRuntimeContract,
} from "./inline-scripts/hyperframe";
export {
HYPERFRAME_RUNTIME_GLOBALS,
HYPERFRAME_BRIDGE_SOURCES,
HYPERFRAME_CONTROL_ACTIONS,
type HyperframeControlAction,
} from "./inline-scripts/runtimeContract";
export { getHyperframeRuntimeScript } from "./generated/runtime-inline";
export {
buildHyperframesRuntimeScript,
type HyperframesRuntimeBuildOptions,
} from "./inline-scripts/hyperframesRuntime.engine";
export {
MEDIA_VISUAL_STYLE_PROPERTIES,
copyMediaVisualStyles,
quantizeTimeToFrame,
type MediaVisualStyleProperty,
} from "./inline-scripts/parityContract";
export { redactKnownPaths, redactTelemetryString } from "./telemetryRedaction";
export { isSafePath, resolveWithinProject } from "./safePath";
export type {
HyperframePickerApi,
HyperframePickerBoundingBox,
HyperframePickerElementInfo,
} from "./inline-scripts/pickerApi";
// Frame adapters
export type { FrameAdapter, FrameAdapterContext } from "./adapters/types";
export type { GSAPTimelineLike, CreateGSAPFrameAdapterOptions } from "./adapters/gsap";
export { createGSAPFrameAdapter } from "./adapters/gsap";
// Text measurement
export { fitTextFontSize } from "./text/index.js";
export type { FitTextOptions, FitTextResult } from "./text/index.js";
export { formatRenderOutputTimestamp } from "./utils/renderOutputTimestamp.js";
// Runtime helpers (composition-side)
export { getVariables } from "./runtime/getVariables.js";
export {
parseStartExpression,
parseNumeric,
type ReferenceExpression,
} from "./runtime/startExpression.js";
export {
COMPOSITION_CONTRACT_VERSION,
COMPOSITION_ATTRIBUTES,
CANONICAL_AUTHORED_TIMING_ATTRIBUTES,
DERIVED_TIMING_ATTRIBUTES,
LEGACY_TIMING_ATTRIBUTES,
readClipTiming,
writeClipTiming,
ClipTimingWriteError,
type ClipTiming,
type ClipTimingDiagnostic,
type ClipTimingDiagnosticCode,
type ClipTimingUpdate,
} from "./compositionContract.js";
// Also exposed via the ./runtime/start-resolver subpath. This root re-export
// additionally makes tsc EMIT dist/runtime/startResolver.js: src/runtime is
// excluded from the tsconfig include set, so runtime files only reach dist
// when an included module imports them — without this line the subpath's
// publishConfig entry points at a file the pack doesn't contain
// (verify:packed-manifests catches exactly that).
export { createRuntimeStartTimeResolver } from "./runtime/startResolver.js";
// Variable validation (CLI / tooling-side)
export {
validateVariables,
formatVariableValidationIssue,
type VariableValidationIssue,
} from "./runtime/validateVariables.js";
// Registry
export type {
ItemType,
FileType,
FileTarget,
RegistryItemDimensions,
RegistryItemPreview,
RegistryItem,
ExampleItem,
BlockItem,
ComponentItem,
RegistryManifestEntry,
RegistryManifest,
} from "./registry/index.js";
export {
ITEM_TYPES,
FILE_TYPES,
ITEM_TYPE_DIRS,
isExampleItem,
isBlockItem,
isComponentItem,
} from "./registry/index.js";
export {
canaryBucket,
evaluateCanary,
parseCanaryOverride,
type CanaryDecision,
type CanaryInput,
type CanaryReason,
} from "./canary.js";
export {
CANARIES,
canaryEnvVar,
findCanary,
overdueCanaries,
type CanaryDefinition,
} from "./canaryRegistry.js";