{"version":3,"file":"composition.utils-CTlfu0pR.cjs","names":["k: K","actual: T","obj: T","withId: T","serializable: Serializable<Serialized>","key: EnsureNotUnion<K>"],"sources":["../src/shared/composition.utils.ts"],"sourcesContent":["import type { EnsureNotUnion, IsUnion } from \"./type.utils.ts\";\n\nexport const extractProp =\n  <T, K extends keyof T = keyof T>(k: K) =>\n  (actual: T): T[K] =>\n    actual[k];\n\n/* Create extractor for picking a subset of an object of type T. Not mean to be used as standalone */\nexport const extractProps =\n  <T, K extends (keyof T)[]>(...keys: K) =>\n  (obj: T): { [key in K[number]]: T[key] } => {\n    const result = {} as { [key in K[number]]: T[key] };\n\n    for (const key of keys) {\n      result[key] = obj[key];\n    }\n    return result;\n  };\n\nexport const extractId = <Id, T extends { id: Id }>(withId: T): T[\"id\"] =>\n  withId.id;\n\ninterface Serializable<R> {\n  serialize(): R;\n}\n\nexport const toSerialized = <Serialized>(\n  serializable: Serializable<Serialized>,\n): Serialized => serializable.serialize();\n\ntype WithKey<K extends string, T> = IsUnion<K> extends true\n  ? never\n  : { [P in K]: T };\n\nexport const nestWithKey =\n  <K extends string, T>(key: EnsureNotUnion<K>) =>\n  (obj: T): WithKey<K, T> => {\n    type WK = WithKey<K, T>;\n    return { [key]: obj } as WK;\n  };\n"],"mappings":";;;AAEA,MAAa,cACX,CAAiCA,MACjC,CAACC,WACC,OAAO;AAGX,MAAa,eACX,CAA2B,GAAG,SAC9B,CAACC,QAA2C;CAC1C,MAAM,SAAS,CAAE;AAEjB,MAAK,MAAM,OAAO,KAChB,QAAO,OAAO,IAAI;AAEpB,QAAO;AACR;AAEH,MAAa,YAAY,CAA2BC,WAClD,OAAO;AAMT,MAAa,eAAe,CAC1BC,iBACe,aAAa,WAAW;AAMzC,MAAa,cACX,CAAsBC,QACtB,CAACH,QAA0B;AAEzB,QAAO,GAAG,MAAM,IAAK;AACtB"}