mirror of
https://github.com/heygen-com/hyperframes.git
synced 2026-09-06 01:52:05 +00:00
Add client-side validation for the new config.variables field (introduced in PR 9.1) and a 256 KiB cap on the full Step Functions Standard execution input. Both checks throw a typed InvalidConfigError BEFORE the SDK calls StartExecution — catching the obvious mistakes locally instead of as a States.DataLimitExceeded 50 ms into the execution. validateVariablesPayload walks the variables tree and rejects: - functions, Symbols, BigInts, non-finite numbers - undefined leaves (silently dropped by JSON.stringify — would surprise the caller when their value doesn't show up in the render) - non-plain objects (Date, Map, class instances) — Date's toJSON does round-trip as a string, but the composition gets a string, not a Date, so explicit reject is clearer validateStepFunctionsInputSize measures the actual UTF-8 byte length of JSON.stringify(input) against the 256 KiB cap. We use Standard workflows (per the plan §6.2 / §15.2) for execution-history visibility, so the cap is 256 KiB (Express would be 32 KiB). The error message names the actual byte count, the cap, and points at the templates-on-lambda#working-with-large-variables section so users know to URL-reference media assets instead of inlining them. Both helpers are exported from @hyperframes/aws-lambda/sdk so adapters that build custom Step Functions inputs (batch verbs, future Temporal ports) can reuse the same gates. Phase 9 PR 9.2 of the distributed rendering plan.
34 lines
1.2 KiB
TypeScript
34 lines
1.2 KiB
TypeScript
/**
|
|
* SDK subpath export — `@hyperframes/aws-lambda/sdk`.
|
|
*
|
|
* Pulled into its own subpath so consumers that only drive Lambda renders
|
|
* (CLI, CI scripts, adopter tooling) don't pay the cost of importing
|
|
* `./handler.js`, which transitively pulls `@sparticuz/chromium` +
|
|
* `puppeteer-core` into the module graph. The SDK files here are
|
|
* AWS-SDK only — safe to load in any Node environment.
|
|
*/
|
|
|
|
export { deploySite, type DeploySiteOptions, type SiteHandle } from "./deploySite.js";
|
|
export { renderToLambda, type RenderHandle, type RenderToLambdaOptions } from "./renderToLambda.js";
|
|
export {
|
|
getRenderProgress,
|
|
type GetRenderProgressOptions,
|
|
type RenderError,
|
|
type RenderProgress,
|
|
type RenderStatus,
|
|
} from "./getRenderProgress.js";
|
|
export {
|
|
type BilledLambdaInvocation,
|
|
computeRenderCost,
|
|
type RenderCost,
|
|
} from "./costAccounting.js";
|
|
export {
|
|
InvalidConfigError,
|
|
MAX_STEP_FUNCTIONS_INPUT_BYTES,
|
|
validateDistributedRenderConfig,
|
|
validateStepFunctionsInputSize,
|
|
validateVariablesPayload,
|
|
} from "./validateConfig.js";
|
|
export type { SerializableDistributedRenderConfig } from "../events.js";
|
|
export type { DistributedFormat } from "../formatExtension.js";
|