UNPKG

next

Version:

The React Framework

63 lines (61 loc) 1.93 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _interop_require_default = require("@swc/helpers/_/_interop_require_default"); const _mitt = /*#__PURE__*/ _interop_require_default._(require("../../shared/lib/mitt")); class Span { constructor(name, options, onSpanEnd){ this.name = name; this.attributes = options.attributes ?? {}; this.startTime = options.startTime ?? Date.now(); this.onSpanEnd = onSpanEnd; this.state = { state: 'inprogress' }; } end(endTime) { if (this.state.state === 'ended') { throw Object.defineProperty(new Error('Span has already ended'), "__NEXT_ERROR_CODE", { value: "E17", enumerable: false, configurable: true }); } this.state = { state: 'ended', endTime: endTime ?? Date.now() }; this.onSpanEnd(this); } } class Tracer { startSpan(name, options) { return new Span(name, options, this.handleSpanEnd); } onSpanEnd(cb) { this._emitter.on('spanend', cb); return ()=>{ this._emitter.off('spanend', cb); }; } constructor(){ this._emitter = (0, _mitt.default)(); this.handleSpanEnd = (span)=>{ this._emitter.emit('spanend', span); }; } } const _default = new Tracer(); if ((typeof exports.default === 'function' || (typeof exports.default === 'object' && exports.default !== null)) && typeof exports.default.__esModule === 'undefined') { Object.defineProperty(exports.default, '__esModule', { value: true }); Object.assign(exports.default, exports); module.exports = exports.default; } //# sourceMappingURL=tracer.js.map