UNPKG

@dot-event/version

Version:

dot-event package version operation

57 lines (47 loc) 1.34 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.phase = phase; var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); function phase(events, desc) { const id = camel(desc); if (!events.get(`phase.${id}`)) { events.set(`phase.${id}`, () => ({ count: 0, title: desc })); } return waitForAll.bind(desc); } function waitForAll(_x) { return _waitForAll.apply(this, arguments); } function _waitForAll() { _waitForAll = (0, _asyncToGenerator2.default)(function* ({ events }) { const id = camel(this); const { taskCount } = events.get("task"); yield events.set(`phase.${id}`, ({ get }) => ({ count: (get(`phase.${id}.count`) || 0) + 1, title: this })); const ok = events.get(`phase.${id}.count`) === taskCount; if (ok) { yield events.emit(`${id}.ready`); } else { yield events.onceEmitted(`emit.${id}.ready`); } }); return _waitForAll.apply(this, arguments); } function camel(str) { return str.replace(/(?:^\w|[A-Z]|\b\w)/g, (ltr, idx) => idx === 0 ? ltr.toLowerCase() : ltr.toUpperCase()).replace(/\s+/g, ""); } //# sourceMappingURL=phase.js.map