UNPKG

dynamodb-toolbox

Version:

Lightweight and type-safe query builder for DynamoDB and TypeScript.

155 lines (154 loc) 5.31 kB
import type { AtLeastOnce, SchemaRequiredProp } from '../../../schema/index.js'; import type { JSONStringifierDTO } from '../../../transformers/jsonStringify.js'; import type { PipeDTO } from '../../../transformers/pipe.js'; import type { PrefixerDTO } from '../../../transformers/prefix.js'; import type { SuffixerDTO } from '../../../transformers/suffix.js'; interface CustomTransformerDTO { transformerId: 'custom'; } export type TransformerDTO = CustomTransformerDTO | JSONStringifierDTO | PrefixerDTO | SuffixerDTO | PipeDTO<TransformerDTO[]>; type DefaulterDTO = { defaulterId: 'value'; value: unknown; } | { defaulterId: 'custom'; }; interface SchemaDefaultsDTO { keyDefault?: DefaulterDTO; putDefault?: DefaulterDTO; updateDefault?: DefaulterDTO; } type LinkDTO = { linkerId: 'custom'; }; interface SchemaLinksDTO { keyLink?: LinkDTO; putLink?: LinkDTO; updateLink?: LinkDTO; } interface SchemaPropsDTO extends SchemaDefaultsDTO, SchemaLinksDTO { required?: SchemaRequiredProp; hidden?: boolean; key?: boolean; savedAs?: string; } export type AnySchemaTransformerDTO = CustomTransformerDTO | JSONStringifierDTO | PipeDTO<TransformerDTO[]>; export interface AnySchemaDTO extends SchemaPropsDTO { type: 'any'; transform?: AnySchemaTransformerDTO; } export type NullSchemaTransformerDTO = CustomTransformerDTO | PipeDTO<TransformerDTO[]>; export interface NullSchemaDTO extends SchemaPropsDTO { type: 'null'; transform?: NullSchemaTransformerDTO; } export type BooleanSchemaTransformerDTO = CustomTransformerDTO | PipeDTO<TransformerDTO[]>; export interface BooleanSchemaDTO extends SchemaPropsDTO { type: 'boolean'; enum?: boolean[]; transform?: BooleanSchemaTransformerDTO; } export type NumberSchemaTransformerDTO = CustomTransformerDTO | PipeDTO<TransformerDTO[]>; export interface NumberSchemaDTO extends SchemaPropsDTO { type: 'number'; big?: boolean; enum?: (number | string)[]; transform?: NumberSchemaTransformerDTO; } export type StringSchemaTransformerDTO = CustomTransformerDTO | PrefixerDTO | SuffixerDTO | PipeDTO<TransformerDTO[]>; export interface StringSchemaDTO extends SchemaPropsDTO { type: 'string'; enum?: string[]; transform?: StringSchemaTransformerDTO; } export type BinarySchemaTransformerDTO = CustomTransformerDTO | PipeDTO<TransformerDTO[]>; export interface BinarySchemaDTO extends SchemaPropsDTO { type: 'binary'; enum?: string[]; transform?: BinarySchemaTransformerDTO; } export type PrimitiveSchemaDTO = NullSchemaDTO | BooleanSchemaDTO | NumberSchemaDTO | StringSchemaDTO | BinarySchemaDTO; export interface SetSchemaDTO extends SchemaPropsDTO { type: 'set'; elements: (NumberSchemaDTO | StringSchemaDTO | BinarySchemaDTO) & { required?: AtLeastOnce; hidden?: false; savedAs?: undefined; keyDefault?: undefined; putDefault?: undefined; updateDefault?: undefined; keyLink?: undefined; putLink?: undefined; updateLink?: undefined; }; } export interface ListSchemaDTO extends SchemaPropsDTO { type: 'list'; elements: ISchemaDTO & { required?: AtLeastOnce; hidden?: false; savedAs?: undefined; keyDefault?: undefined; putDefault?: undefined; updateDefault?: undefined; keyLink?: undefined; putLink?: undefined; updateLink?: undefined; }; } export interface MapSchemaDTO extends SchemaPropsDTO { type: 'map'; attributes: { [name: string]: ISchemaDTO; }; } export interface RecordSchemaDTO extends SchemaPropsDTO { type: 'record'; keys: StringSchemaDTO & { required?: AtLeastOnce; hidden?: false; key?: false; savedAs?: undefined; keyDefault?: undefined; putDefault?: undefined; updateDefault?: undefined; keyLink?: undefined; putLink?: undefined; updateLink?: undefined; }; elements: ISchemaDTO & { required?: AtLeastOnce; hidden?: false; key?: false; savedAs?: undefined; keyDefault?: undefined; putDefault?: undefined; updateDefault?: undefined; keyLink?: undefined; putLink?: undefined; updateLink?: undefined; }; } export interface AnyOfSchemaDTO extends SchemaPropsDTO { type: 'anyOf'; elements: (ISchemaDTO & { required?: AtLeastOnce; hidden?: false; savedAs?: undefined; keyDefault?: undefined; putDefault?: undefined; updateDefault?: undefined; keyLink?: undefined; putLink?: undefined; updateLink?: undefined; })[]; discriminator?: string; } export interface ItemSchemaDTO extends SchemaPropsDTO { type: 'item'; attributes: { [name: string]: AnySchemaDTO | NullSchemaDTO | BooleanSchemaDTO | NumberSchemaDTO | StringSchemaDTO | BinarySchemaDTO | SetSchemaDTO | ListSchemaDTO | MapSchemaDTO | RecordSchemaDTO | AnyOfSchemaDTO; }; } export type ISchemaDTO = AnySchemaDTO | NullSchemaDTO | BooleanSchemaDTO | NumberSchemaDTO | StringSchemaDTO | BinarySchemaDTO | SetSchemaDTO | ListSchemaDTO | MapSchemaDTO | RecordSchemaDTO | AnyOfSchemaDTO | ItemSchemaDTO; export {};