@web3r/flowerkit
Version:
Tree-shakable JavaScript and TypeScript utility library for frontend/browser apps: DOM, events, arrays, objects, strings, date, JSON, and network helpers (ESM/CJS, SSR-friendly).
1 lines • 2.01 kB
Source Map (JSON)
{"version":3,"file":"index.cjs","sources":[""],"sourcesContent":["export type TGetAsyncMapArgs = Parameters<typeof getAsyncMap>;\r\n\r\nexport type TGetAsyncMapReturn = ReturnType<typeof getAsyncMap>;\r\n\r\n/**\r\n * Gets an aggregated result of async operation for each element of given Array\r\n * @template T,U\r\n * @param {Array<T>} arr source array\r\n * @param {(value: T, index: number, array: T[]) => Promise<U>|U} callback callback function (can be sync or async)\r\n * @returns {Promise<Array<U>>}\r\n * @throws {TypeError} getAsyncMap: arr must be an array\r\n * @throws {TypeError} getAsyncMap: callback must be a function\r\n * @see https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise/all\r\n * @example\r\n * // How to call API for each element of an array and return a result?\r\n * const myAPIFn = (item, index, arr) => Promise.resolve(\"success\" + item);\r\n * const array = [ 1, 2, 3 ];\r\n * const result = await getAsyncMap(array, myAPIFn);\r\n * console.log(result); // => [ \"success1\", \"success2, \"success3\" ]\r\n */\r\nexport const getAsyncMap = async <T, U>(\r\n arr: T[],\r\n callback: (value: T, index: number, array: T[]) => Promise<U> | U\r\n): Promise<U[]> => {\r\n\r\n if (!Array.isArray(arr)) {\r\n return Promise.reject(new TypeError(\"getAsyncMap: arr must be an array\"));\r\n }\r\n\r\n if (typeof callback !== \"function\") {\r\n return Promise.reject(new TypeError(\"getAsyncMap: callback must be a function\"));\r\n }\r\n\r\n\r\n return await Promise.all(arr.map((v, i, a) => Promise.resolve(callback(v, i, a))));\r\n};\r\n"],"names":["getAsyncMap","async","arr","callback","Array","isArray","Promise","reject","TypeError","all","map","v","i","a","resolve"],"mappings":";;;;;;;;;;;;;;;;GAoBO,MAAMA,YAAcC,MACzBC,IACAC,YAGA,IAAKC,MAAMC,QAAQH,KACjB,OAAOI,QAAQC,OAAO,IAAIC,UAAU,sCAGtC,UAAWL,WAAa,WACtB,OAAOG,QAAQC,OAAO,IAAIC,UAAU,6CAItC,aAAaF,QAAQG,IAAIP,IAAIQ,IAAI,CAACC,EAAGC,EAAGC,IAAMP,QAAQQ,QAAQX,SAASQ,EAAGC,EAAGC"}