import { AnyNode, ObjectNode, ValueNode, ArrayNode, MemberNode, NumberNode, StringNode } from '@humanwhocodes/momoa'; import { Key, ParentTitle, AnyTitle, NodeValueType, BooleanTitle, CollectionTitle, ElementTitle, AttributeTitle, IntegerBooleanTitle, NumberTitle, StringTitle } 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. */ type EntityRecord = Record>>; type Requried = boolean; interface EntityMap { known: EntityRecord; required: EntityRecord; } type EntityType = NodeValueType | 'constant' | 'integer-boolean' | 'missing'; interface Entity { 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; } 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'; } 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[]; } type NoKeyEntityMap = Record; declare const objectEntity: NoKeyEntityMap; declare const arrayEntity: NoKeyEntityMap; declare const getNoKeyEntity: (node: ArrayNode | ObjectNode, parentTitle: ParentTitle) => NoKeyEntity; declare const stringEntity: EntityMap; declare const stringConstantEntity: EntityMap; declare const numberEntity: EntityMap; declare const numberConstantEntity: EntityMap; declare const nullEntity: EntityMap; declare const integerBooleanEntity: EntityMap; declare const booleanEntity: EntityMap; declare const collectionEntity: EntityMap; declare const elementEntity: EntityMap; declare const getEntityData: (key: Key, parentTitle: ParentTitle, entity: EntityMap, type: EntityType) => Entity; declare const getCollectionData: (key: Key, parentTitle: ParentTitle) => Entity; declare const getElementData: (key: Key, parentTitle: ParentTitle) => Entity; declare const getNumberConstantEntity: (key: Key, member: NumberNode, parentTitle: ParentTitle) => Entity; declare const getStringConstantEntity: (key: Key, member: StringNode, parentTitle: ParentTitle) => Entity; declare const getAttributeData: (key: Key, member: MemberNode, parentTitle: ParentTitle) => Entity; 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 };