UNPKG

@orchestrator/core

Version:
54 lines 6.02 kB
/** * @internal */ export function execRegex(regex, val) { const arr = []; let group; while ((group = regex.exec(val)) !== null) { if (group.index === regex.lastIndex) { regex.lastIndex++; } arr.push(...group); } return !arr.length ? null : arr; } /** * @internal */ export function parseFunction(fnStr) { const fnRegex = /^function\s*(?:[A-z0-9]+)?\s*\(([\w\W]*?)\)\s*\{([\w\W]*)\}$/gm; const arrowFnRegex = /^\(?([\w\W]*?)\)?\s*=>\s*\{([\w\W]*)\}$/gm; const returnArrowFnRegex = /^\(?([\w\W]*?)\)?\s*=>\s*([^}{]*)$/gm; fnStr = fnStr.trim(); const fnInfo = execRegex(fnRegex, fnStr) || execRegex(arrowFnRegex, fnStr) || execRegex(returnArrowFnRegex, fnStr); if (!fnInfo || fnInfo.length < 2) { return null; } const _args = fnInfo.length > 2 ? fnInfo[1] || '' : ''; const args = _args .split(',') .map(arg => arg.trim()) .filter(arg => !!arg); const isReturnFunction = returnArrowFnRegex.test(fnStr); const _body = fnInfo[fnInfo.length - 1]; if (!_body && isReturnFunction) { return null; } const body = isReturnFunction ? `return ${_body}` : _body || ''; return { args, body }; } /** * @internal */ export function isArgOptional(argExpr) { return /^[^=]+\s*=.+/.test(argExpr); } /** * @internal */ export function getArgName(argExpr) { return argExpr.match(/^([^=\s]+)(?:\s*=.+)?/)[1]; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL2xpYnMvY29yZS9zcmMvbGliL3V0aWwudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFDSCxNQUFNLFVBQVUsU0FBUyxDQUFDLEtBQWEsRUFBRSxHQUFXO0lBQ2xELE1BQU0sR0FBRyxHQUFHLEVBQUUsQ0FBQztJQUNmLElBQUksS0FBc0IsQ0FBQztJQUUzQixPQUFPLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUU7UUFDekMsSUFBSSxLQUFLLENBQUMsS0FBSyxLQUFLLEtBQUssQ0FBQyxTQUFTLEVBQUU7WUFDbkMsS0FBSyxDQUFDLFNBQVMsRUFBRSxDQUFDO1NBQ25CO1FBRUQsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLEtBQUssQ0FBQyxDQUFDO0tBQ3BCO0lBRUQsT0FBTyxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDO0FBQ2xDLENBQUM7QUFFRDs7R0FFRztBQUNILE1BQU0sVUFBVSxhQUFhLENBQUMsS0FBYTtJQUN6QyxNQUFNLE9BQU8sR0FBRyxnRUFBZ0UsQ0FBQztJQUNqRixNQUFNLFlBQVksR0FBRywyQ0FBMkMsQ0FBQztJQUNqRSxNQUFNLGtCQUFrQixHQUFHLHNDQUFzQyxDQUFDO0lBRWxFLEtBQUssR0FBRyxLQUFLLENBQUMsSUFBSSxFQUFFLENBQUM7SUFFckIsTUFBTSxNQUFNLEdBQ1YsU0FBUyxDQUFDLE9BQU8sRUFBRSxLQUFLLENBQUM7UUFDekIsU0FBUyxDQUFDLFlBQVksRUFBRSxLQUFLLENBQUM7UUFDOUIsU0FBUyxDQUFDLGtCQUFrQixFQUFFLEtBQUssQ0FBQyxDQUFDO0lBRXZDLElBQUksQ0FBQyxNQUFNLElBQUksTUFBTSxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUU7UUFDaEMsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7SUFDdkQsTUFBTSxJQUFJLEdBQUcsS0FBSztTQUNmLEtBQUssQ0FBQyxHQUFHLENBQUM7U0FDVixHQUFHLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLENBQUM7U0FDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXhCLE1BQU0sZ0JBQWdCLEdBQUcsa0JBQWtCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3hELE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRXhDLElBQUksQ0FBQyxLQUFLLElBQUksZ0JBQWdCLEVBQUU7UUFDOUIsT0FBTyxJQUFJLENBQUM7S0FDYjtJQUVELE1BQU0sSUFBSSxHQUFHLGdCQUFnQixDQUFDLENBQUMsQ0FBQyxVQUFVLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLElBQUksRUFBRSxDQUFDO0lBRWhFLE9BQU8sRUFBRSxJQUFJLEVBQUUsSUFBSSxFQUFFLENBQUM7QUFDeEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsTUFBTSxVQUFVLGFBQWEsQ0FBQyxPQUFlO0lBQzNDLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztBQUN0QyxDQUFDO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFVBQVUsVUFBVSxDQUFDLE9BQWU7SUFDeEMsT0FBTyxPQUFPLENBQUMsS0FBSyxDQUFDLHVCQUF1QixDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbkQsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGludGVybmFsXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBleGVjUmVnZXgocmVnZXg6IFJlZ0V4cCwgdmFsOiBzdHJpbmcpOiBzdHJpbmdbXSB7XG4gIGNvbnN0IGFyciA9IFtdO1xuICBsZXQgZ3JvdXA6IFJlZ0V4cEV4ZWNBcnJheTtcblxuICB3aGlsZSAoKGdyb3VwID0gcmVnZXguZXhlYyh2YWwpKSAhPT0gbnVsbCkge1xuICAgIGlmIChncm91cC5pbmRleCA9PT0gcmVnZXgubGFzdEluZGV4KSB7XG4gICAgICByZWdleC5sYXN0SW5kZXgrKztcbiAgICB9XG5cbiAgICBhcnIucHVzaCguLi5ncm91cCk7XG4gIH1cblxuICByZXR1cm4gIWFyci5sZW5ndGggPyBudWxsIDogYXJyO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VGdW5jdGlvbihmblN0cjogc3RyaW5nKSB7XG4gIGNvbnN0IGZuUmVnZXggPSAvXmZ1bmN0aW9uXFxzKig/OltBLXowLTldKyk/XFxzKlxcKChbXFx3XFxXXSo/KVxcKVxccypcXHsoW1xcd1xcV10qKVxcfSQvZ207XG4gIGNvbnN0IGFycm93Rm5SZWdleCA9IC9eXFwoPyhbXFx3XFxXXSo/KVxcKT9cXHMqPT5cXHMqXFx7KFtcXHdcXFddKilcXH0kL2dtO1xuICBjb25zdCByZXR1cm5BcnJvd0ZuUmVnZXggPSAvXlxcKD8oW1xcd1xcV10qPylcXCk/XFxzKj0+XFxzKihbXn17XSopJC9nbTtcblxuICBmblN0ciA9IGZuU3RyLnRyaW0oKTtcblxuICBjb25zdCBmbkluZm8gPVxuICAgIGV4ZWNSZWdleChmblJlZ2V4LCBmblN0cikgfHxcbiAgICBleGVjUmVnZXgoYXJyb3dGblJlZ2V4LCBmblN0cikgfHxcbiAgICBleGVjUmVnZXgocmV0dXJuQXJyb3dGblJlZ2V4LCBmblN0cik7XG5cbiAgaWYgKCFmbkluZm8gfHwgZm5JbmZvLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IF9hcmdzID0gZm5JbmZvLmxlbmd0aCA+IDIgPyBmbkluZm9bMV0gfHwgJycgOiAnJztcbiAgY29uc3QgYXJncyA9IF9hcmdzXG4gICAgLnNwbGl0KCcsJylcbiAgICAubWFwKGFyZyA9PiBhcmcudHJpbSgpKVxuICAgIC5maWx0ZXIoYXJnID0+ICEhYXJnKTtcblxuICBjb25zdCBpc1JldHVybkZ1bmN0aW9uID0gcmV0dXJuQXJyb3dGblJlZ2V4LnRlc3QoZm5TdHIpO1xuICBjb25zdCBfYm9keSA9IGZuSW5mb1tmbkluZm8ubGVuZ3RoIC0gMV07XG5cbiAgaWYgKCFfYm9keSAmJiBpc1JldHVybkZ1bmN0aW9uKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cblxuICBjb25zdCBib2R5ID0gaXNSZXR1cm5GdW5jdGlvbiA/IGByZXR1cm4gJHtfYm9keX1gIDogX2JvZHkgfHwgJyc7XG5cbiAgcmV0dXJuIHsgYXJncywgYm9keSB9O1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNBcmdPcHRpb25hbChhcmdFeHByOiBzdHJpbmcpOiBib29sZWFuIHtcbiAgcmV0dXJuIC9eW149XStcXHMqPS4rLy50ZXN0KGFyZ0V4cHIpO1xufVxuXG4vKipcbiAqIEBpbnRlcm5hbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0QXJnTmFtZShhcmdFeHByOiBzdHJpbmcpOiBzdHJpbmcge1xuICByZXR1cm4gYXJnRXhwci5tYXRjaCgvXihbXj1cXHNdKykoPzpcXHMqPS4rKT8vKVsxXTtcbn1cbiJdfQ==