{"version":3,"file":"join-CRbZSTkA.cjs","names":[],"sources":["../src/functions/join/join.ts"],"sourcesContent":["import type { NonFunction } from '../../types/_internal';\n\n/**\n * Same as `Array.prototype.join`, but allows specifying a non-`string` separator.\n * @param elements The elements to join.\n * @param separator The separator to use.\n * @returns An array with the elements joined by the separator.\n */\n// biome-ignore lint/suspicious/noExplicitAny: only used as generic constraints\nexport function join<T extends NonFunction<any>, U extends NonFunction<any>>(\n  elements: readonly NonNullable<T>[],\n  separator: U | ((index: number) => U)\n): Array<symbol | U | NonNullable<T>> {\n  const emptySeparator = Symbol('emptySeparator');\n\n  const separatorFunction =\n    typeof separator === 'function'\n      ? (separator as (index: number) => NonNullable<U>)\n      : () => separator;\n\n  return elements\n    .flatMap((element, index, array) => [\n      element,\n      index < array.length - 1 ? separatorFunction(index) : emptySeparator,\n    ])\n    .filter((item) => item !== emptySeparator);\n}\n"],"mappings":";;;;;;;;AASA,SAAgB,KACd,UACA,WACoC;CACpC,MAAM,iBAAiB,OAAO,iBAAiB;CAE/C,MAAM,oBACJ,OAAO,cAAc,aAChB,kBACK;AAEZ,QAAO,SACJ,SAAS,SAAS,OAAO,UAAU,CAClC,SACA,QAAQ,MAAM,SAAS,IAAI,kBAAkB,MAAM,GAAG,eACvD,CAAC,CACD,QAAQ,SAAS,SAAS,eAAe"}