UNPKG

squint-cli

Version:

Squint makes visual reviews of web app releases easy

63 lines (62 loc) 1.95 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.union = exports.mkdirp = exports.evalJs = exports.promiseEachSeries = void 0; const fs_1 = __importDefault(require("fs")); const lodash_1 = __importDefault(require("lodash")); // https://github.com/sindresorhus/p-each-series/blob/main/license // Copyright (c) Sindre Sorhus <sindresorhus@gmail.com> (https://sindresorhus.com) const PROMISE_EACH_SERIES_STOP = Symbol('promiseEachSeries.stop'); async function promiseEachSeries(iterable, iterator) { let index = 0; for (const value of iterable) { // eslint-disable-next-line no-await-in-loop const returnValue = await iterator(await value, index++); if (returnValue === PROMISE_EACH_SERIES_STOP) { break; } } return iterable; } exports.promiseEachSeries = promiseEachSeries; // lodash is in scope for evaluated code function evalJs(code, ...args) { let result; const codeToEval = `(() => { return ${code}; })()`; try { const afterEval = eval(codeToEval); if (lodash_1.default.isFunction(afterEval)) { result = afterEval(...args); } else { result = afterEval; } } catch (e) { console.error(`Unable to \`eval\` code: ${e.message}`); console.error('Evaluated code:'); console.error(codeToEval); throw e; } return result; } exports.evalJs = evalJs; async function mkdirp(dir) { try { await fs_1.default.promises.mkdir(dir, { recursive: true }); } catch (e) { // ignore } } exports.mkdirp = mkdirp; function union(setA, setB) { const _union = new Set(setA); for (const elem of setB) { _union.add(elem); } return _union; } exports.union = union;