@orchestrator/core
Version:
> Core package of Orchestrator library.
54 lines • 6.02 kB
JavaScript
/**
* @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==