ut-tools
Version:
Build and Release management automation package.
46 lines (34 loc) • 1.27 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var iterator = require('../../codegen/iterator.js');
var index = require('../../parser/index.js');
var aggregateError = require('../../runtime/errors/aggregate-error.js');
function pickException([, ex]) {
return ex;
}
function pickExpression([expression]) {
return expression;
}
function parseExpressions(expressions, unsafe, hasFallback) {
const mappedExpressions = [];
const erroredExpressions = [];
for (const expression of new Set(expressions)) {
try {
const parsed = index['default'](expression);
if (unsafe === false && iterator['default'].analyze(parsed).bailed) {
throw SyntaxError('Unsafe expressions are ignored, but no fallback was specified');
}
mappedExpressions.push([expression, parsed]);
} catch (e) {
erroredExpressions.push([expression, e]);
}
}
if (!hasFallback && erroredExpressions.length > 0) {
throw new aggregateError['default'](erroredExpressions.map(pickException), `Error parsing ${erroredExpressions.map(pickExpression).join(', ')}`);
}
return {
erroredExpressions: erroredExpressions.map(pickExpression),
mappedExpressions
};
}
exports['default'] = parseExpressions;