UNPKG

dynamodb-toolbox

Version:

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

16 lines (15 loc) 1.96 kB
import type { AnyOfSchema, AnySchema, ItemSchema, ListSchema, MapSchema, PrimitiveSchema, RecordSchema, Schema, SetSchema, TupleSchema } from '../../../../schema/index.js'; import type { FormattedAnyOfJSONSchema } from './anyOf.js'; import type { FormattedItemJSONSchema } from './item.js'; import type { FormattedListJSONSchema } from './list.js'; import type { FormattedMapJSONSchema } from './map.js'; import type { FormattedPrimitiveJSONSchema } from './primitive.js'; import type { FormattedRecordJSONSchema } from './record.js'; import type { FormattedSetJSONSchema } from './set.js'; import type { FormattedTupleJSONSchema } from './tuple.js'; export declare const getFormattedValueJSONSchema: <SCHEMA extends Schema>(schema: SCHEMA) => FormattedValueJSONSchema<SCHEMA>; export type FormattedValueJSONSchema<SCHEMA extends Schema> = Schema extends SCHEMA ? Record<string, unknown> : (SCHEMA extends AnySchema ? {} : never) | (SCHEMA extends PrimitiveSchema ? FormattedPrimitiveJSONSchema<SCHEMA> : never) | (SCHEMA extends SetSchema ? FormattedSetJSONSchema<SCHEMA> : never) | (SCHEMA extends ListSchema ? FormattedListJSONSchema<SCHEMA> : never) | (SCHEMA extends TupleSchema ? FormattedTupleJSONSchema<SCHEMA> : never) | (SCHEMA extends MapSchema ? FormattedMapJSONSchema<SCHEMA> : never) | (SCHEMA extends RecordSchema ? FormattedRecordJSONSchema<SCHEMA> : never) | (SCHEMA extends AnyOfSchema ? FormattedAnyOfJSONSchema<SCHEMA> : never) | (SCHEMA extends ItemSchema ? FormattedItemJSONSchema<SCHEMA> : never); export type FormattedValueJSONSchemaRec<SCHEMAS extends Schema[], RESULTS extends unknown[] = []> = number extends SCHEMAS['length'] ? FormattedValueJSONSchema<SCHEMAS[number]>[] : SCHEMAS extends [infer SCHEMAS_HEAD, ...infer SCHEMAS_TAIL] ? SCHEMAS_HEAD extends Schema ? SCHEMAS_TAIL extends Schema[] ? FormattedValueJSONSchemaRec<SCHEMAS_TAIL, [ ...RESULTS, FormattedValueJSONSchema<SCHEMAS_HEAD> ]> : never : never : RESULTS;