{"version":3,"file":"index.mjs","names":["within: Partial<Pick<T, K[number]>>","without: Partial<Omit<T, K[number]>>"],"sources":["../src/functions/split.ts","../src/functions/omit.ts","../src/functions/pick.ts"],"sourcesContent":["import type { Omit } from \"#/@types/omit\";\n\ntype SplitResult<T extends object, K extends (keyof T)[]> = {\n    within: Pick<T, K[number]>;\n    without: Omit<T, K[number]>;\n};\n\nconst split = <T extends object, K extends (keyof T)[]>(\n    object: T,\n    keys: K,\n): SplitResult<T, K> => {\n    const within: Partial<Pick<T, K[number]>> = {};\n    const without: Partial<Omit<T, K[number]>> = {};\n\n    for (const key in object) {\n        if (keys.includes(key)) {\n            within[key] = object[key];\n        } else {\n            (without as Partial<T>)[key] = object[key];\n        }\n    }\n\n    return {\n        within: within as Pick<T, K[number]>,\n        without: without as unknown as Omit<T, K[number]>,\n    };\n};\n\nexport type { SplitResult };\nexport { split };\n","import type { Omit } from \"#/@types/omit\";\n\nimport { split } from \"#/functions/split\";\n\n/**\n * Construct an object with the properties of `object`\n * except for those in `keys`.\n *\n * ### Example\n *\n * ```ts\n * import type { Omit } from \"ts-vista\";\n *\n * import { omit } from \"ts-vista\";\n *\n * type Keys = {\n *     a: number;\n *     b: number;\n *     c: number;\n * };\n *\n * type Keys2 = Omit<Keys, \"a\" | \"b\">;\n *\n * const keys: Keys = {\n *     a: 1,\n *     b: 2,\n *     c: 3,\n * };\n *\n * const keys2: Keys2 = omit(keys, [\"a\", \"b\"]);\n * ```\n */\nconst omit = <T extends object, K extends (keyof T)[]>(\n    object: T,\n    keys: K,\n): Omit<T, K[number]> => {\n    return split(object, keys).without;\n};\n\nexport { omit };\n","import { split } from \"#/functions/split\";\n\n/**\n * From `object`, pick a set of properties whose keys are in `keys`.\n *\n * ### Example\n *\n * ```ts\n * import { pick } from \"ts-vista\";\n *\n * type Keys = {\n *     a: number;\n *     b: number;\n *     c: number;\n * };\n *\n * type Keys2 = Pick<Keys, \"a\" | \"b\">;\n *\n * const keys: Keys = {\n *     a: 1,\n *     b: 2,\n *     c: 3,\n * };\n *\n * const keys2: Keys2 = pick(keys, [\"a\", \"b\"]);\n * ```\n */\nconst pick = <T extends object, K extends (keyof T)[]>(\n    object: T,\n    keys: K,\n): Pick<T, K[number]> => {\n    return split(object, keys).within;\n};\n\nexport { pick };\n"],"mappings":"AAOA,MAAM,SACF,QACA,SACoB;CACpB,MAAMA,SAAsC,EAAE;CAC9C,MAAMC,UAAuC,EAAE;AAE/C,MAAK,MAAM,OAAO,OACd,KAAI,KAAK,SAAS,IAAI,CAClB,QAAO,OAAO,OAAO;KAErB,CAAC,QAAuB,OAAO,OAAO;AAI9C,QAAO;EACK;EACC;EACZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACOL,MAAM,QACF,QACA,SACqB;AACrB,QAAO,MAAM,QAAQ,KAAK,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACT/B,MAAM,QACF,QACA,SACqB;AACrB,QAAO,MAAM,QAAQ,KAAK,CAAC"}