UNPKG

ut-tools

Version:

Build and Release management automation package.

42 lines (32 loc) 1.15 kB
import Iterator from '../../codegen/iterator.mjs'; import parse from '../../parser/index.mjs'; import AggregateError from '../../runtime/errors/aggregate-error.mjs'; 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 = parse(expression); if (unsafe === false && Iterator.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(erroredExpressions.map(pickException), `Error parsing ${erroredExpressions.map(pickExpression).join(', ')}`); } return { erroredExpressions: erroredExpressions.map(pickExpression), mappedExpressions }; } export { parseExpressions as default };