@knapsack/app
Version:
Build Design Systems on top of knapsack, by Basalt
50 lines (37 loc) • 1.56 kB
JavaScript
;
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.emitPatternsDataReady = emitPatternsDataReady;
Object.defineProperty(exports, "EVENTS", {
enumerable: true,
get: function () {
return _constants.EVENTS;
}
});
exports.knapsackEvents = void 0;
var _events = require("events");
var _util = _interopRequireDefault(require("util"));
var _debounce = _interopRequireDefault(require("debounce"));
var log = _interopRequireWildcard(require("../cli/log"));
var _constants = require("../lib/constants");
class KnapsackEventEmitter extends _events.EventEmitter {}
const knapsackEvents = new KnapsackEventEmitter();
exports.knapsackEvents = knapsackEvents;
const debouncedEmit = (0, _debounce.default)((eventName, eventData) => {
knapsackEvents.emit(eventName, eventData);
}, 100); // @todo use this format for event types: `CustomEvent<KsRendererClientManifest>`
function emitPatternsDataReady(patterns) {
debouncedEmit(_constants.EVENTS.PATTERNS_DATA_READY, patterns);
}
Object.keys(_constants.EVENTS).forEach(event => {
const eventName = _constants.EVENTS[event]; // each event should emit either nothing or a single object, no more
knapsackEvents.on(eventName, info => {
log.verbose(`event fired: ${eventName}`, null, 'events');
log.silly('', _util.default.inspect(info, {
depth: 3
}), 'events');
});
});