UNPKG

@lottiefiles/relottie-parse

Version:
114 lines (110 loc) 4.87 kB
import { AnyNode, ObjectNode, ValueNode, ArrayNode, NumberNode, StringNode, MemberNode } from '@humanwhocodes/momoa'; import { AnyTitle, Key, ParentTitle, NodeValueType, StringTitle, NumberTitle, AttributeTitle, IntegerBooleanTitle, BooleanTitle, CollectionTitle, ElementTitle } from '@lottiefiles/last'; import { MomoaPrimitive } from './helpers.js'; import 'vfile'; import './options.js'; import './parse.js'; import './slots.js'; import './unified-relottie-parse.js'; import 'unified'; import './stack.js'; /** * Copyright 2024 Design Barn Inc. */ declare type EntityRecord<T extends AnyTitle> = Record<Key, Partial<Record<ParentTitle, T>>>; declare type Requried = boolean; interface EntityMap<T extends AnyTitle> { known: EntityRecord<T>; required: EntityRecord<T>; } declare type EntityType = NodeValueType | 'constant' | 'integer-boolean' | 'missing'; interface Entity<T = AnyTitle> { parentTitle: ParentTitle; required: Requried; title: T; type: EntityType; } interface ParentTitleConstant { /** * constants default value will be used if 'values' are not defined */ defaultValue: string | number; /** * constructs a final parentTitle from values[defaultValue] */ prefix?: string; /** * depedants values pairs of Node's value and title */ values: Record<ParentTitleConstant['defaultValue'], string>; } interface DependentBase { /** * Node's key */ key: Key; /** * parentTitle dependent info for the parent node's title */ parentTitle: ParentTitle | ParentTitleConstant; /** * Dependent node's title */ title: AnyTitle; /** * Dependent node's type */ type: AnyNode['type'] | 'Constant'; } interface DependentPrimitive extends DependentBase { parentTitle: ParentTitle; type: MomoaPrimitive['type'] | ObjectNode['type']; } interface DependentObject extends DependentBase { parentTitle: ParentTitle; type: ObjectNode['type']; } interface DependentArray extends DependentBase { /** * if present the "childType" will be checked as well */ childType?: ValueNode['type']; parentTitle: ParentTitle; type: ArrayNode['type']; } interface DependentConstant extends DependentBase { parentTitle: ParentTitleConstant; type: 'Constant'; } declare type Dependent = DependentPrimitive | DependentConstant | DependentArray | DependentObject; interface NoKeyEntity { /** * defaultTitle will be used if couldn't find title in "dependent" */ defaultTitle: ParentTitle; /** * if dependent is undefined, the "defaultTitle" will be used */ dependents?: Dependent[]; } declare type NoKeyEntityMap = Record<ParentTitle | string, NoKeyEntity>; declare const objectEntity: NoKeyEntityMap; declare const arrayEntity: NoKeyEntityMap; declare const getNoKeyEntity: (node: ArrayNode | ObjectNode, parentTitle: ParentTitle) => NoKeyEntity; declare const stringEntity: EntityMap<StringTitle>; declare const stringConstantEntity: EntityMap<StringTitle>; declare const numberEntity: EntityMap<NumberTitle>; declare const numberConstantEntity: EntityMap<NumberTitle>; declare const nullEntity: EntityMap<AttributeTitle>; declare const integerBooleanEntity: EntityMap<IntegerBooleanTitle>; declare const booleanEntity: EntityMap<BooleanTitle>; declare const collectionEntity: EntityMap<CollectionTitle>; declare const elementEntity: EntityMap<ElementTitle>; declare const getEntityData: <T extends AnyTitle>(key: Key, parentTitle: ParentTitle, entity: EntityMap<T>, type: EntityType) => Entity<T>; declare const getCollectionData: (key: Key, parentTitle: ParentTitle) => Entity<CollectionTitle>; declare const getElementData: (key: Key, parentTitle: ParentTitle) => Entity<ElementTitle>; declare const getNumberConstantEntity: (key: Key, member: NumberNode, parentTitle: ParentTitle) => Entity<AttributeTitle>; declare const getStringConstantEntity: (key: Key, member: StringNode, parentTitle: ParentTitle) => Entity<AttributeTitle>; declare const getAttributeData: (key: Key, member: MemberNode, parentTitle: ParentTitle) => Entity<AttributeTitle>; declare const getMemberEntity: (key: Key, member: MemberNode, parentTitle: ParentTitle) => Entity; export { type Dependent, type DependentArray, type DependentBase, type DependentConstant, type DependentObject, type DependentPrimitive, type Entity, type EntityMap, type EntityRecord, type EntityType, type NoKeyEntity, type NoKeyEntityMap, type ParentTitleConstant, type Requried, arrayEntity, booleanEntity, collectionEntity, elementEntity, getAttributeData, getCollectionData, getElementData, getEntityData, getMemberEntity, getNoKeyEntity, getNumberConstantEntity, getStringConstantEntity, integerBooleanEntity, nullEntity, numberConstantEntity, numberEntity, objectEntity, stringConstantEntity, stringEntity };