{"version":3,"sources":["../src/functions/split.ts","../src/functions/pick.ts","../src/functions/omit.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 { 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","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"],"mappings":";;;;AAOA,IAAMA,QAAQ,wBACVC,QACAC,SAAAA;AAEA,QAAMC,SAAsC,CAAC;AAC7C,QAAMC,UAAuC,CAAC;AAE9C,aAAWC,OAAOJ,QAAQ;AACtB,QAAIC,KAAKI,SAASD,GAAAA,GAAM;AACpBF,aAAOE,GAAAA,IAAOJ,OAAOI,GAAAA;IACzB,OAAO;AACFD,cAAuBC,GAAAA,IAAOJ,OAAOI,GAAAA;IAC1C;EACJ;AAEA,SAAO;IACHF;IACAC;EACJ;AACJ,GAnBc;;;ACoBd,IAAMG,OAAO,wBACTC,QACAC,SAAAA;AAEA,SAAOC,MAAMF,QAAQC,IAAAA,EAAME;AAC/B,GALa;;;ACKb,IAAMC,OAAO,wBACTC,QACAC,SAAAA;AAEA,SAAOC,MAAMF,QAAQC,IAAAA,EAAME;AAC/B,GALa;","names":["split","object","keys","within","without","key","includes","pick","object","keys","split","within","omit","object","keys","split","without"]}