castage
Version:
A type-safe library for dynamic object casting and ensuring type consistency in JavaScript/TypeScript.
38 lines (37 loc) • 11.2 kB
TypeScript
import type { Caster } from './types';
/**
* Combines multiple casters into a single caster that applies all of them.
* The resulting caster will validate and transform a value using each of the provided casters,
* and merge the results into a single object.
*
* @template T - A tuple of object types that the casters will handle.
* @param {...{ [K in keyof T]: Caster<T[K]> }} casters - An array of casters to be combined.
* @returns {Caster<UnionToIntersection<T[number]>>} A caster that applies all provided casters and merges their results.
*/
export declare const allOf: {
<T>(caster: Caster<T>): Caster<T>;
<T1, T2>(caster1: Caster<T1>, caster2: Caster<T2>): Caster<T1 & T2>;
<T1, T2, T3>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>): Caster<T1 & T2 & T3>;
<T1, T2, T3, T4>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>): Caster<T1 & T2 & T3 & T4>;
<T1, T2, T3, T4, T5>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>): Caster<T1 & T2 & T3 & T4 & T5>;
<T1, T2, T3, T4, T5, T6>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>): Caster<T1 & T2 & T3 & T4 & T5 & T6>;
<T1, T2, T3, T4, T5, T6, T7>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7>;
<T1, T2, T3, T4, T5, T6, T7, T8>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>, caster13: Caster<T13>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>, caster13: Caster<T13>, caster14: Caster<T14>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>, caster13: Caster<T13>, caster14: Caster<T14>, caster15: Caster<T15>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14 & T15>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>, caster13: Caster<T13>, caster14: Caster<T14>, caster15: Caster<T15>, caster16: Caster<T16>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14 & T15 & T16>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>, caster13: Caster<T13>, caster14: Caster<T14>, caster15: Caster<T15>, caster16: Caster<T16>, caster17: Caster<T17>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14 & T15 & T16 & T17>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>, caster13: Caster<T13>, caster14: Caster<T14>, caster15: Caster<T15>, caster16: Caster<T16>, caster17: Caster<T17>, caster18: Caster<T18>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14 & T15 & T16 & T17 & T18>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>, caster13: Caster<T13>, caster14: Caster<T14>, caster15: Caster<T15>, caster16: Caster<T16>, caster17: Caster<T17>, caster18: Caster<T18>, caster19: Caster<T19>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14 & T15 & T16 & T17 & T18 & T19>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>, caster13: Caster<T13>, caster14: Caster<T14>, caster15: Caster<T15>, caster16: Caster<T16>, caster17: Caster<T17>, caster18: Caster<T18>, caster19: Caster<T19>, caster20: Caster<T20>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14 & T15 & T16 & T17 & T18 & T19 & T20>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>, caster13: Caster<T13>, caster14: Caster<T14>, caster15: Caster<T15>, caster16: Caster<T16>, caster17: Caster<T17>, caster18: Caster<T18>, caster19: Caster<T19>, caster20: Caster<T20>, caster21: Caster<T21>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14 & T15 & T16 & T17 & T18 & T19 & T20 & T21>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>, caster13: Caster<T13>, caster14: Caster<T14>, caster15: Caster<T15>, caster16: Caster<T16>, caster17: Caster<T17>, caster18: Caster<T18>, caster19: Caster<T19>, caster20: Caster<T20>, caster21: Caster<T21>, caster22: Caster<T22>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14 & T15 & T16 & T17 & T18 & T19 & T20 & T21 & T22>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>, caster13: Caster<T13>, caster14: Caster<T14>, caster15: Caster<T15>, caster16: Caster<T16>, caster17: Caster<T17>, caster18: Caster<T18>, caster19: Caster<T19>, caster20: Caster<T20>, caster21: Caster<T21>, caster22: Caster<T22>, caster23: Caster<T23>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14 & T15 & T16 & T17 & T18 & T19 & T20 & T21 & T22 & T23>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>, caster13: Caster<T13>, caster14: Caster<T14>, caster15: Caster<T15>, caster16: Caster<T16>, caster17: Caster<T17>, caster18: Caster<T18>, caster19: Caster<T19>, caster20: Caster<T20>, caster21: Caster<T21>, caster22: Caster<T22>, caster23: Caster<T23>, caster24: Caster<T24>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14 & T15 & T16 & T17 & T18 & T19 & T20 & T21 & T22 & T23 & T24>;
<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, T17, T18, T19, T20, T21, T22, T23, T24, T25>(caster1: Caster<T1>, caster2: Caster<T2>, caster3: Caster<T3>, caster4: Caster<T4>, caster5: Caster<T5>, caster6: Caster<T6>, caster7: Caster<T7>, caster8: Caster<T8>, caster9: Caster<T9>, caster10: Caster<T10>, caster11: Caster<T11>, caster12: Caster<T12>, caster13: Caster<T13>, caster14: Caster<T14>, caster15: Caster<T15>, caster16: Caster<T16>, caster17: Caster<T17>, caster18: Caster<T18>, caster19: Caster<T19>, caster20: Caster<T20>, caster21: Caster<T21>, caster22: Caster<T22>, caster23: Caster<T23>, caster24: Caster<T24>, caster25: Caster<T25>): Caster<T1 & T2 & T3 & T4 & T5 & T6 & T7 & T8 & T9 & T10 & T11 & T12 & T13 & T14 & T15 & T16 & T17 & T18 & T19 & T20 & T21 & T22 & T23 & T24 & T25>;
};