@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
TypeScript
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>;