@aimee-blue/ab-service-kit
Version:
Aimee Blue Service Template
90 lines (72 loc) • 3.27 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.sendAllTimings = sendAllTimings;
exports.sendActions = exports.sendOne = void 0;
var _time = require("../time");
var PubSub = _interopRequireWildcard(require("../pubsub"));
var _app = require("../app");
var _rxjs = require("rxjs");
var _operators = require("rxjs/operators");
var _streams = require("./streams");
var _logging = require("../logging");
function _getRequireWildcardCache() { if (typeof WeakMap !== "function") return null; var cache = new WeakMap(); _getRequireWildcardCache = function () { return cache; }; return cache; }
function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
const sendOne = async params => {
const timestamp = await (0, _time.time)();
const version = await (0, _app.appVersion)();
const name = await (0, _app.appName)();
const data = {
event: params.event,
data: {
version,
appName: name,
...params.data
},
source: 'server',
timestamp,
...(params.traceKey && {
traceKey: params.traceKey
})
};
return PubSub.publish('profiler', data);
};
exports.sendOne = sendOne;
function optionalFilter(predicate) {
return stream => {
if (predicate) {
return stream.pipe((0, _operators.filter)(predicate));
} else {
return stream;
}
};
}
function defaultTransform(action, params) {
const {
filter: _,
transform: __,
...logParams
} = params || {};
return {
event: action.type,
data: action,
...logParams
};
}
const sendActions = (params, deps = {
sendOne
}) => input => input.pipe((0, _operators.publish)(shared => (0, _rxjs.merge)(shared, shared.pipe(optionalFilter(params && params.filter), (0, _operators.mergeMap)(action => (0, _rxjs.defer)(() => deps.sendOne((params && params.transform || defaultTransform)(action, params))).pipe((0, _operators.catchError)(err => {
var _params$logger;
((_params$logger = params === null || params === void 0 ? void 0 : params.logger) !== null && _params$logger !== void 0 ? _params$logger : (0, _logging.defaultBasicLogger)()).error('💥 An error when profiling actions', err);
return (0, _rxjs.empty)();
}))), (0, _operators.ignoreElements)()))));
exports.sendActions = sendActions;
function sendAllTimings() {
return (0, _streams.timesRegistered)().pipe((0, _operators.map)(timing => ({
type: `PROFILER/${timing.name.toUpperCase()}`,
timeTook: timing.time,
...timing.details
})), sendActions(), (0, _operators.ignoreElements)());
}
//# sourceMappingURL=send.js.map