UNPKG

@strapi/utils

Version:

Shared utilities for the Strapi packages

89 lines 3.13 kB
import { AnyAttribute, Attribute, ComponentAttribute, DynamicZoneAttribute, Model, RelationalAttribute } from '../types'; export interface Path { raw: string | null; attribute: string | null; } export interface Parent { attribute?: Attribute; key: string | null; path: Path; schema: Model; } export interface TraverseOptions { schema: Model; path?: Path; parent?: Parent; getModel(uid: string): Model; } export interface VisitorOptions { data: unknown; value: unknown; schema: Model; key: string; attribute?: AnyAttribute; path: Path; parent?: Parent; getModel(uid: string): Model; } export type Traverse = (visitor: Visitor, options: TraverseOptions, data: unknown) => Promise<unknown>; export interface Visitor { (visitorOptions: VisitorOptions, opts: Pick<TransformUtils, 'set' | 'remove'>): void; } interface Interceptor<T = unknown> { predicate(data: unknown): data is T; handler(visitor: Visitor, options: TraverseOptions, data: T, recurseOptions: { recurse: Traverse; }): void; } interface ParseUtils<T> { transform(data: T): unknown; remove(key: string, data: T): unknown; set(key: string, value: unknown, data: T): unknown; keys(data: T): string[]; get(key: string, data: T): unknown; } interface Parser<T = unknown> { predicate(data: unknown): data is T; parser(data: T): ParseUtils<T>; } interface Ignore { (ctx: Context): boolean; } interface AttributeHandler<AttributeType = Attribute> { predicate(ctx: Context<AttributeType>): boolean; handler(ctx: Context<AttributeType>, opts: Pick<TransformUtils, 'set' | 'recurse'>): void; } interface CommonHandler<AttributeType = Attribute> { predicate(ctx: Context<AttributeType>): boolean; handler(ctx: Context<AttributeType>, opts: Pick<TransformUtils, 'set' | 'recurse'>): void; } export interface TransformUtils { remove(key: string): void; set(key: string, value: unknown): void; recurse: Traverse; } interface Context<AttributeType = Attribute> { key: string; value: unknown; attribute: AttributeType; schema: Model; path: Path; data: unknown; visitor: Visitor; parent?: Parent; getModel(uid: string): Model; } declare const _default: () => { traverse: Traverse; intercept<T>(predicate: Interceptor<T>['predicate'], handler: Interceptor<T>['handler']): any; parse<T_1>(predicate: (data: unknown) => data is T_1, parser: (data: T_1) => ParseUtils<T_1>): any; ignore(predicate: Ignore): any; on(predicate: CommonHandler['predicate'], handler: CommonHandler['handler']): any; onAttribute(predicate: AttributeHandler['predicate'], handler: AttributeHandler['handler']): any; onRelation(handler: AttributeHandler<RelationalAttribute>['handler']): any; onMedia(handler: AttributeHandler<RelationalAttribute>['handler']): any; onComponent(handler: AttributeHandler<ComponentAttribute>['handler']): any; onDynamicZone(handler: AttributeHandler<DynamicZoneAttribute>['handler']): any; }; export default _default; //# sourceMappingURL=factory.d.ts.map