reports/frontend/node_modules/es-toolkit/dist/compat/function/rearg.js
jtricerolph 1c411e402e Add settings page for managing forecasting API key and URL via UI
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-07-20 14:37:36 +00:00

26 lines
1.1 KiB
JavaScript

const require_flatten = require("../array/flatten.js");
//#region src/compat/function/rearg.ts
/**
* Creates a function that invokes `func` with arguments arranged according to the specified `indices`
* where the argument value at the first index is provided as the first argument,
* the argument value at the second index is provided as the second argument, and so on.
*
* @param func The function to rearrange arguments for.
* @param indices The arranged argument indices.
* @returns Returns the new function.
*
* @example
* const greet = (greeting: string, name: string) => `${greeting}, ${name}!`;
* const rearrangedGreet = rearg(greet, 1, 0);
* console.log(rearrangedGreet('World', 'Hello')); // Output: "Hello, World!"
*/
function rearg(func, ...indices) {
const flattenIndices = require_flatten.flatten(indices);
return function(...args) {
const reorderedArgs = flattenIndices.map((i) => args[i]).slice(0, args.length);
for (let i = reorderedArgs.length; i < args.length; i++) reorderedArgs.push(args[i]);
return func.apply(this, reorderedArgs);
};
}
//#endregion
exports.rearg = rearg;