.
This commit is contained in:
+2
@@ -0,0 +1,2 @@
|
||||
import type { Span } from './tracer';
|
||||
export default function reportToSocket(span: Span): void;
|
||||
+35
@@ -0,0 +1,35 @@
|
||||
"use strict";
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
Object.defineProperty(exports, "default", {
|
||||
enumerable: true,
|
||||
get: function() {
|
||||
return reportToSocket;
|
||||
}
|
||||
});
|
||||
const _websocket = require("../dev/hot-reloader/pages/websocket");
|
||||
function reportToSocket(span) {
|
||||
if (span.state.state !== 'ended') {
|
||||
throw Object.defineProperty(new Error('Expected span to be ended'), "__NEXT_ERROR_CODE", {
|
||||
value: "E302",
|
||||
enumerable: false,
|
||||
configurable: true
|
||||
});
|
||||
}
|
||||
(0, _websocket.sendMessage)(JSON.stringify({
|
||||
event: 'span-end',
|
||||
startTime: span.startTime,
|
||||
endTime: span.state.endTime,
|
||||
spanName: span.name,
|
||||
attributes: span.attributes
|
||||
}));
|
||||
}
|
||||
|
||||
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=report-to-socket.js.map
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../src/client/tracing/report-to-socket.ts"],"sourcesContent":["import { sendMessage } from '../dev/hot-reloader/pages/websocket'\nimport type { Span } from './tracer'\n\nexport default function reportToSocket(span: Span) {\n if (span.state.state !== 'ended') {\n throw new Error('Expected span to be ended')\n }\n\n sendMessage(\n JSON.stringify({\n event: 'span-end',\n startTime: span.startTime,\n endTime: span.state.endTime,\n spanName: span.name,\n attributes: span.attributes,\n })\n )\n}\n"],"names":["reportToSocket","span","state","Error","sendMessage","JSON","stringify","event","startTime","endTime","spanName","name","attributes"],"mappings":";;;;+BAGA;;;eAAwBA;;;2BAHI;AAGb,SAASA,eAAeC,IAAU;IAC/C,IAAIA,KAAKC,KAAK,CAACA,KAAK,KAAK,SAAS;QAChC,MAAM,qBAAsC,CAAtC,IAAIC,MAAM,8BAAV,qBAAA;mBAAA;wBAAA;0BAAA;QAAqC;IAC7C;IAEAC,IAAAA,sBAAW,EACTC,KAAKC,SAAS,CAAC;QACbC,OAAO;QACPC,WAAWP,KAAKO,SAAS;QACzBC,SAASR,KAAKC,KAAK,CAACO,OAAO;QAC3BC,UAAUT,KAAKU,IAAI;QACnBC,YAAYX,KAAKW,UAAU;IAC7B;AAEJ","ignoreList":[0]}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
import type { MittEmitter } from '../../shared/lib/mitt';
|
||||
export type SpanOptions = {
|
||||
startTime?: number;
|
||||
attributes?: Record<string, unknown>;
|
||||
};
|
||||
export type SpanState = {
|
||||
state: 'inprogress';
|
||||
} | {
|
||||
state: 'ended';
|
||||
endTime: number;
|
||||
};
|
||||
interface ISpan {
|
||||
name: string;
|
||||
startTime: number;
|
||||
attributes: Record<string, unknown>;
|
||||
state: SpanState;
|
||||
end(endTime?: number): void;
|
||||
}
|
||||
declare class Span implements ISpan {
|
||||
name: string;
|
||||
startTime: number;
|
||||
onSpanEnd: (span: Span) => void;
|
||||
state: SpanState;
|
||||
attributes: Record<string, unknown>;
|
||||
constructor(name: string, options: SpanOptions, onSpanEnd: (span: Span) => void);
|
||||
end(endTime?: number): void;
|
||||
}
|
||||
declare class Tracer {
|
||||
_emitter: MittEmitter<string>;
|
||||
private handleSpanEnd;
|
||||
startSpan(name: string, options: SpanOptions): Span;
|
||||
onSpanEnd(cb: (span: ISpan) => void): () => void;
|
||||
}
|
||||
export type { ISpan as Span };
|
||||
declare const _default: Tracer;
|
||||
export default _default;
|
||||
+63
@@ -0,0 +1,63 @@
|
||||
"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
|
||||
+1
@@ -0,0 +1 @@
|
||||
{"version":3,"sources":["../../../src/client/tracing/tracer.ts"],"sourcesContent":["import mitt from '../../shared/lib/mitt'\nimport type { MittEmitter } from '../../shared/lib/mitt'\n\nexport type SpanOptions = {\n startTime?: number\n attributes?: Record<string, unknown>\n}\n\nexport type SpanState =\n | {\n state: 'inprogress'\n }\n | {\n state: 'ended'\n endTime: number\n }\n\ninterface ISpan {\n name: string\n startTime: number\n attributes: Record<string, unknown>\n state: SpanState\n end(endTime?: number): void\n}\n\nclass Span implements ISpan {\n name: string\n startTime: number\n onSpanEnd: (span: Span) => void\n state: SpanState\n attributes: Record<string, unknown>\n\n constructor(\n name: string,\n options: SpanOptions,\n onSpanEnd: (span: Span) => void\n ) {\n this.name = name\n this.attributes = options.attributes ?? {}\n this.startTime = options.startTime ?? Date.now()\n this.onSpanEnd = onSpanEnd\n this.state = { state: 'inprogress' }\n }\n\n end(endTime?: number) {\n if (this.state.state === 'ended') {\n throw new Error('Span has already ended')\n }\n\n this.state = {\n state: 'ended',\n endTime: endTime ?? Date.now(),\n }\n\n this.onSpanEnd(this)\n }\n}\n\nclass Tracer {\n _emitter: MittEmitter<string> = mitt()\n\n private handleSpanEnd = (span: Span) => {\n this._emitter.emit('spanend', span)\n }\n\n startSpan(name: string, options: SpanOptions) {\n return new Span(name, options, this.handleSpanEnd)\n }\n\n onSpanEnd(cb: (span: ISpan) => void): () => void {\n this._emitter.on('spanend', cb)\n return () => {\n this._emitter.off('spanend', cb)\n }\n }\n}\n\nexport type { ISpan as Span }\nexport default new Tracer()\n"],"names":["Span","constructor","name","options","onSpanEnd","attributes","startTime","Date","now","state","end","endTime","Error","Tracer","startSpan","handleSpanEnd","cb","_emitter","on","off","mitt","span","emit"],"mappings":";;;;+BA8EA;;;eAAA;;;;+DA9EiB;AAyBjB,MAAMA;IAOJC,YACEC,IAAY,EACZC,OAAoB,EACpBC,SAA+B,CAC/B;QACA,IAAI,CAACF,IAAI,GAAGA;QACZ,IAAI,CAACG,UAAU,GAAGF,QAAQE,UAAU,IAAI,CAAC;QACzC,IAAI,CAACC,SAAS,GAAGH,QAAQG,SAAS,IAAIC,KAAKC,GAAG;QAC9C,IAAI,CAACJ,SAAS,GAAGA;QACjB,IAAI,CAACK,KAAK,GAAG;YAAEA,OAAO;QAAa;IACrC;IAEAC,IAAIC,OAAgB,EAAE;QACpB,IAAI,IAAI,CAACF,KAAK,CAACA,KAAK,KAAK,SAAS;YAChC,MAAM,qBAAmC,CAAnC,IAAIG,MAAM,2BAAV,qBAAA;uBAAA;4BAAA;8BAAA;YAAkC;QAC1C;QAEA,IAAI,CAACH,KAAK,GAAG;YACXA,OAAO;YACPE,SAASA,WAAWJ,KAAKC,GAAG;QAC9B;QAEA,IAAI,CAACJ,SAAS,CAAC,IAAI;IACrB;AACF;AAEA,MAAMS;IAOJC,UAAUZ,IAAY,EAAEC,OAAoB,EAAE;QAC5C,OAAO,IAAIH,KAAKE,MAAMC,SAAS,IAAI,CAACY,aAAa;IACnD;IAEAX,UAAUY,EAAyB,EAAc;QAC/C,IAAI,CAACC,QAAQ,CAACC,EAAE,CAAC,WAAWF;QAC5B,OAAO;YACL,IAAI,CAACC,QAAQ,CAACE,GAAG,CAAC,WAAWH;QAC/B;IACF;;aAfAC,WAAgCG,IAAAA,aAAI;aAE5BL,gBAAgB,CAACM;YACvB,IAAI,CAACJ,QAAQ,CAACK,IAAI,CAAC,WAAWD;QAChC;;AAYF;MAGA,WAAe,IAAIR","ignoreList":[0]}
|
||||
Reference in New Issue
Block a user