AtlasJson
Defined in: packages/three-flatland/src/sprites/atlas.types.gen.ts:15
Sidecar JSON for a sprite atlas image. STRICT superset of TexturePacker’s JSON-Hash format AND Aseprite’s JSON export — every file emitted by either validates here. The root keys are frames + meta only (matching TP/Aseprite); all our additions live under meta because meta is the open extension bucket (additionalProperties: true). Aseprite’s meta.frameTags / meta.layers / meta.slices validate as-is; we add meta.animations (richer than frameTags — explicit fps, arbitrary frame-name selection, per-frame events) without conflicting with the Aseprite shape. Tool-specific extensions (our meta.app / meta.version / meta.sources / meta.normal) ride along the same way. meta requires at least one of sources or image: our atlas tool emits sources (multiple encodings — png, webp, avif, ktx2 — each a format + URI), while raw TexturePacker/Aseprite exports carry the legacy single-file meta.image string. Readers prefer sources when present and fall back to image.
Properties
Section titled “Properties”$schema?
Section titled “$schema?”
optional$schema?:string
Defined in: packages/three-flatland/src/sprites/atlas.types.gen.ts:16
frames
Section titled “frames”frames:
object
Defined in: packages/three-flatland/src/sprites/atlas.types.gen.ts:23
Index Signature
Section titled “Index Signature”[k: string]: Frame
meta:
MetaBase&object
Defined in: packages/three-flatland/src/sprites/atlas.types.gen.ts:20
Requires at least one of sources or image (see $defs/MetaBase). The anyOf sits alongside a $ref rather than inline on MetaBase itself — nesting a bare combinator next to properties collapses object-property codegen (json-schema-to-typescript) to an index signature, which would erase every typed meta.* field including animations.