From 2e4559d80511c204a6a0bb268f9cb7bc9adbb309 Mon Sep 17 00:00:00 2001 From: ztimson Date: Tue, 6 May 2025 16:09:24 -0400 Subject: [PATCH] Added async function runner --- package.json | 2 +- src/misc.ts | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/package.json b/package.json index de8d9bf..e268dfa 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@ztimson/utils", - "version": "0.24.0", + "version": "0.24.1", "description": "Utility library", "author": "Zak Timson", "license": "MIT", diff --git a/src/misc.ts b/src/misc.ts index 650884f..43a8d7c 100644 --- a/src/misc.ts +++ b/src/misc.ts @@ -1,6 +1,17 @@ import {PathEvent} from './path-events.ts'; import {md5} from './string'; +/** + * Run a stringified function with arguments asynchronously + * @param {object} args Map of key/value arguments + * @param {string} fn Function as string + * @return {Promise} Function string response + */ +export function asyncFunction(args: object, fn: string): Promise { + const keys = Object.keys(args); + return new Function(...keys, `return (async (${keys.join(',')}) => { ${fn} })(${keys.join(',')})`)(...keys.map(k => (args)[k])); +} + /** * Get profile image from Gravatar *