UNPKG

noodl-loader

Version:

Loader for noodl applications

35 lines (34 loc) 1.43 kB
import type { LiteralUnion } from 'type-fest'; import type NoodlLoader from '../loader'; import type y from 'yaml'; import type Asset from './asset'; import { ExtractType } from '../constants'; export type ExtractAssetPreset = 'config' | 'cadlEndpoint' | 'documents' | 'images' | 'pages' | 'scripts' | 'videos'; export interface ExtractFn<N = unknown> { (key: Parameters<y.visitorFn<N>>[0], node: Parameters<y.visitorFn<N>>[1], path: Parameters<y.visitorFn<N>>[2], options: ExtractFnOptions): ReturnType<y.visitorFn<N>> | { type: string; data?: any; }; } export interface ExtractFnOptions extends Partial<Pick<NoodlLoader, 'config' | 'cadlEndpoint'>> { assets: Asset[]; assetsUrl?: string; baseUrl?: string; control: { BREAK: symbol; REMOVE: symbol; SKIP: symbol; }; createAsset(propsOrType: LiteralUnion<ExtractType, string> | Asset | { type?: LiteralUnion<ExtractType, string>; id?: string; props?: Record<string, any>; }, props?: Asset | Record<string, any>): Asset; state: { assets: Asset[]; assetIds: string[]; } & Record<string, any>; } export type ExtractedAssetsArray = Asset[]; export type ExtractedAssetsObject = Record<string, Asset>; export type ExtractReturnValue<As extends 'array' | 'object' = 'array'> = As extends 'array' ? Asset[] : Record<string, Asset>;