{"version":3,"sources":["../../src/functions/createKnownTypeGuard/createKnownTypeGuard.ts","../../src/functions/intersection/intersection.ts"],"names":[],"mappings":";AAkBO,SAAS,qBAGd,QAA0B;AAC1B,QAAM,YAAY,IAAI,IAAa,MAAM;AACzC,SAAO,SAAS,cAAc,GAA+C;AAC3E,WAAO,UAAU,IAAI,CAAC;AAAA,EACxB;AACF;;;ACrBO,SAAS,aACd,QACA,QACW;AACX,QAAM,eAAe,qBAAqB,MAAM;AAChD,SAAO,OAAO,OAAO,CAAC,UAAU,aAAa,KAAK,CAAC;AACrD","sourcesContent":["/**\n * Creates a type guard that checks if the given type is assignable to the given type.\n *\n * @param values The values to check against.\n * @template {TCheckedValue} The type to check against, `unknown` by default. Pass in if you want to have a narrowed type for the type predicate (e.g. `string`).\n * @returns A type guard that checks if the given type is assignable to the given type.\n *\n * @example\n * ```ts\n * const VALID_VALUES = ['foo', 'bar'] as const;\n * const isValidValue = createKnownTypeGuard(VALID_VALUES);\n *\n * const value: unknown = '...';\n * if (isValidValue(value)) {\n *   // ✅ value is of type `'foo' | 'bar'`\n * }\n * ```\n */\nexport function createKnownTypeGuard<\n  TValue,\n  TCheckedValue extends TValue | unknown = unknown\n>(values: Iterable<TValue>) {\n  const setValues = new Set<unknown>(values);\n  return function guardFunction(v: TCheckedValue): v is TCheckedValue & TValue {\n    return setValues.has(v);\n  };\n}\n","import { createKnownTypeGuard } from '../createKnownTypeGuard';\n\n/**\n * Gets the intersection between two arrays.\n */\nexport function intersection<T, S extends T>(\n  array1: readonly T[],\n  array2: readonly S[]\n): (T & S)[] {\n  const isArray2Item = createKnownTypeGuard(array2);\n  return array1.filter((value) => isArray2Item(value)) as (T & S)[];\n}\n"]}