dynamodb-toolbox
Version:
Lightweight and type-safe query builder for DynamoDB and TypeScript.
16 lines (15 loc) • 1.96 kB
TypeScript
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;