UNPKG

@dossierhq/core

Version:

The core Dossier library used by clients and server alike, used to interact with schema and entities directly, as well as remotely through a client.

21 lines (20 loc) 2.64 kB
import { type ErrorType, type Result } from '../ErrorResult.js'; import type { PublishedSchema } from '../schema/PublishedSchema.js'; import type { Schema } from '../schema/Schema.js'; import type { Component, EntityLike, RichTextNode } from '../Types.js'; import { type ContentValuePath } from './ContentPath.js'; export declare const IDENTITY_TRANSFORMER: ContentTransformer<Schema | PublishedSchema, typeof ErrorType.BadRequest>; export interface ContentTransformer<TSchema extends Schema | PublishedSchema, TError extends ErrorType> { transformField: (schema: TSchema, path: ContentValuePath, fieldSpec: TSchema['spec']['entityTypes' | 'componentTypes'][number]['fields'][number], value: unknown) => Result<unknown, TError>; transformFieldItem: (schema: TSchema, path: ContentValuePath, fieldSpec: TSchema['spec']['entityTypes' | 'componentTypes'][number]['fields'][number], value: unknown) => Result<unknown, TError>; transformRichTextNode: (schema: TSchema, path: ContentValuePath, fieldSpec: TSchema['spec']['entityTypes' | 'componentTypes'][number]['fields'][number], node: Readonly<RichTextNode>) => Result<Readonly<RichTextNode | null>, TError>; } export interface ContentTransformerEntityFieldsOptions extends ContentTransformerOptions { excludeOmittedEntityFields?: boolean; } export interface ContentTransformerOptions { keepExtraFields?: boolean; } export declare function transformEntityFields<TSchema extends Schema | PublishedSchema, TEntity extends EntityLike<string, object>, TError extends ErrorType>(schema: TSchema, path: ContentValuePath, entity: Readonly<TEntity>, transformer: ContentTransformer<TSchema, TError>, options?: ContentTransformerEntityFieldsOptions): Result<TEntity['fields'], TError | typeof ErrorType.BadRequest | typeof ErrorType.Generic>; export declare function transformComponent<TSchema extends Schema | PublishedSchema, TComponent extends Component<string, object>, TError extends ErrorType>(schema: TSchema, path: ContentValuePath, component: Readonly<TComponent>, transformer: ContentTransformer<TSchema, TError>, options?: ContentTransformerOptions): Result<TComponent, TError | typeof ErrorType.BadRequest | typeof ErrorType.Generic>; export declare function transformContentField<TSchema extends Schema | PublishedSchema, TError extends ErrorType>(schema: TSchema, path: ContentValuePath, fieldSpec: TSchema['spec']['entityTypes' | 'componentTypes'][number]['fields'][number], originalValue: unknown, transformer: ContentTransformer<TSchema, TError>, options?: ContentTransformerOptions): Result<unknown, TError | typeof ErrorType.BadRequest | typeof ErrorType.Generic>;