create project

This commit is contained in:
ismailsosic
2022-12-27 12:05:56 +01:00
parent 2a33a2d3de
commit cd2143287c
16035 changed files with 2489703 additions and 0 deletions

View File

@@ -0,0 +1,13 @@
import { SpanId } from '../shared';
declare type Reporter = {
flushAll: () => Promise<void> | void;
report: (spanName: string, duration: number, timestamp: number, id: SpanId, parentId?: SpanId, attrs?: Object, startTime?: number) => void;
};
declare class MultiReporter implements Reporter {
private reporters;
constructor(reporters: Reporter[]);
flushAll(): Promise<void>;
report(spanName: string, duration: number, timestamp: number, id: SpanId, parentId?: SpanId, attrs?: Object, startTime?: number): void;
}
export declare const reporter: MultiReporter;
export {};

View File

@@ -0,0 +1,31 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.reporter = void 0;
var _toTelemetry = _interopRequireDefault(require("./to-telemetry"));
var _toJson = _interopRequireDefault(require("./to-json"));
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
class MultiReporter {
reporters = [];
constructor(reporters){
this.reporters = reporters;
}
async flushAll() {
await Promise.all(this.reporters.map((reporter1)=>reporter1.flushAll()));
}
report(spanName, duration, timestamp, id, parentId, attrs, startTime) {
this.reporters.forEach((reporter2)=>reporter2.report(spanName, duration, timestamp, id, parentId, attrs, startTime));
}
}
const reporter = new MultiReporter([
_toJson.default,
_toTelemetry.default
]);
exports.reporter = reporter;
//# sourceMappingURL=index.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../trace/report/index.ts"],"names":["MultiReporter","reporters","constructor","flushAll","Promise","all","map","reporter","report","spanName","duration","timestamp","id","parentId","attrs","startTime","forEach","reportToJson","reportToTelemetry"],"mappings":"AAAA;;;;;AAC8B,IAAA,YAAgB,kCAAhB,gBAAgB,EAAA;AACrB,IAAA,OAAW,kCAAX,WAAW,EAAA;;;;;;AAepC,MAAMA,aAAa;IACjB,AAAQC,SAAS,GAAe,EAAE,CAAA;IAElCC,YAAYD,SAAqB,CAAE;QACjC,IAAI,CAACA,SAAS,GAAGA,SAAS;KAC3B;IAED,MAAME,QAAQ,GAAG;QACf,MAAMC,OAAO,CAACC,GAAG,CAAC,IAAI,CAACJ,SAAS,CAACK,GAAG,CAAC,CAACC,SAAQ,GAAKA,SAAQ,CAACJ,QAAQ,EAAE,CAAC,CAAC;KACzE;IAEDK,MAAM,CACJC,QAAgB,EAChBC,QAAgB,EAChBC,SAAiB,EACjBC,EAAU,EACVC,QAAiB,EACjBC,KAAc,EACdC,SAAkB,EAClB;QACA,IAAI,CAACd,SAAS,CAACe,OAAO,CAAC,CAACT,SAAQ,GAC9BA,SAAQ,CAACC,MAAM,CACbC,QAAQ,EACRC,QAAQ,EACRC,SAAS,EACTC,EAAE,EACFC,QAAQ,EACRC,KAAK,EACLC,SAAS,CACV,CACF;KACF;CACF;AAGM,MAAMR,QAAQ,GAAG,IAAIP,aAAa,CAAC;IAACiB,OAAY,QAAA;IAAEC,YAAiB,QAAA;CAAC,CAAC;QAA/DX,QAAQ,GAARA,QAAQ"}

View File

@@ -0,0 +1,25 @@
declare const localEndpoint: {
serviceName: string;
ipv4: string;
port: number;
};
declare type Event = {
traceId: string;
parentId?: number;
name: string;
id: number;
timestamp: number;
duration: number;
localEndpoint?: typeof localEndpoint;
tags?: Object;
startTime?: number;
};
export declare function batcher(reportEvents: (evts: Event[]) => Promise<void>): {
flushAll: () => Promise<void>;
report: (event: Event) => void;
};
declare const _default: {
flushAll: () => Promise<void> | undefined;
report: (name: string, duration: number, timestamp: number, id: number, parentId?: number | undefined, attrs?: Object | undefined, startTime?: number | undefined) => void;
};
export default _default;

View File

@@ -0,0 +1,152 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.batcher = batcher;
exports.default = void 0;
var _crypto = require("crypto");
var _shared = require("../shared");
var _fs = _interopRequireDefault(require("fs"));
var _path = _interopRequireDefault(require("path"));
var _constants = require("../../shared/lib/constants");
function _interopRequireDefault(obj) {
return obj && obj.__esModule ? obj : {
default: obj
};
}
const localEndpoint = {
serviceName: "nextjs",
ipv4: "127.0.0.1",
port: 9411
};
function batcher(reportEvents) {
const events = [];
// Promise queue to ensure events are always sent on flushAll
const queue = new Set();
return {
flushAll: async ()=>{
await Promise.all(queue);
if (events.length > 0) {
await reportEvents(events);
events.length = 0;
}
},
report: (event)=>{
events.push(event);
if (events.length > 100) {
const evts = events.slice();
events.length = 0;
const report = reportEvents(evts);
queue.add(report);
report.then(()=>queue.delete(report));
}
}
};
}
let writeStream;
let traceId;
let batch;
const writeStreamOptions = {
flags: "a",
encoding: "utf8"
};
class RotatingWriteStream {
constructor(file, sizeLimit){
this.file = file;
this.size = 0;
this.sizeLimit = sizeLimit;
this.createWriteStream();
}
createWriteStream() {
this.writeStream = _fs.default.createWriteStream(this.file, writeStreamOptions);
}
// Recreate the file
async rotate() {
await this.end();
try {
_fs.default.unlinkSync(this.file);
} catch (err) {
// It's fine if the file does not exist yet
if (err.code !== "ENOENT") {
throw err;
}
}
this.size = 0;
this.createWriteStream();
this.rotatePromise = undefined;
}
async write(data) {
if (this.rotatePromise) await this.rotatePromise;
this.size += data.length;
if (this.size > this.sizeLimit) {
await (this.rotatePromise = this.rotate());
}
if (!this.writeStream.write(data, "utf8")) {
if (this.drainPromise === undefined) {
this.drainPromise = new Promise((resolve, _reject)=>{
this.writeStream.once("drain", ()=>{
this.drainPromise = undefined;
resolve();
});
});
}
await this.drainPromise;
}
}
end() {
return new Promise((resolve)=>{
this.writeStream.end(resolve);
});
}
}
const reportToLocalHost = (name, duration, timestamp, id, parentId, attrs, startTime)=>{
const distDir = _shared.traceGlobals.get("distDir");
const phase = _shared.traceGlobals.get("phase");
if (!distDir || !phase) {
return;
}
if (!traceId) {
traceId = process.env.TRACE_ID || (0, _crypto).randomBytes(8).toString("hex");
}
if (!batch) {
batch = batcher(async (events)=>{
if (!writeStream) {
await _fs.default.promises.mkdir(distDir, {
recursive: true
});
const file = _path.default.join(distDir, "trace");
writeStream = new RotatingWriteStream(file, // Development is limited to 50MB, production is unlimited
phase === _constants.PHASE_DEVELOPMENT_SERVER ? 52428800 : Infinity);
}
const eventsJson = JSON.stringify(events);
try {
await writeStream.write(eventsJson + "\n");
} catch (err) {
console.log(err);
}
});
}
batch.report({
traceId,
parentId,
name,
id,
timestamp,
duration,
tags: attrs,
startTime
});
};
var _default = {
flushAll: ()=>batch ? batch.flushAll().then(()=>{
const phase = _shared.traceGlobals.get("phase");
// Only end writeStream when manually flushing in production
if (phase !== _constants.PHASE_DEVELOPMENT_SERVER) {
writeStream.end();
}
}) : undefined,
report: reportToLocalHost
};
exports.default = _default;
//# sourceMappingURL=to-json.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../trace/report/to-json.ts"],"names":["batcher","localEndpoint","serviceName","ipv4","port","reportEvents","events","queue","Set","flushAll","Promise","all","length","report","event","push","evts","slice","add","then","delete","writeStream","traceId","batch","writeStreamOptions","flags","encoding","RotatingWriteStream","constructor","file","sizeLimit","size","createWriteStream","fs","rotate","end","unlinkSync","err","code","rotatePromise","undefined","write","data","drainPromise","resolve","_reject","once","reportToLocalHost","name","duration","timestamp","id","parentId","attrs","startTime","distDir","traceGlobals","get","phase","process","env","TRACE_ID","randomBytes","toString","promises","mkdir","recursive","path","join","PHASE_DEVELOPMENT_SERVER","Infinity","eventsJson","JSON","stringify","console","log","tags"],"mappings":"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"}

View File

@@ -0,0 +1,5 @@
declare const _default: {
flushAll: () => void;
report: (spanName: string, duration: number) => void;
};
export default _default;

View File

@@ -0,0 +1,32 @@
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _shared = require("../shared");
const TRACE_EVENT_ACCESSLIST = new Map(Object.entries({
"webpack-invalidated": "WEBPACK_INVALIDATED"
}));
const reportToTelemetry = (spanName, duration)=>{
const eventName = TRACE_EVENT_ACCESSLIST.get(spanName);
if (!eventName) {
return;
}
const telemetry = _shared.traceGlobals.get("telemetry");
if (!telemetry) {
return;
}
telemetry.record({
eventName,
payload: {
durationInMicroseconds: duration
}
});
};
var _default = {
flushAll: ()=>{},
report: reportToTelemetry
};
exports.default = _default;
//# sourceMappingURL=to-telemetry.js.map

View File

@@ -0,0 +1 @@
{"version":3,"sources":["../../../trace/report/to-telemetry.ts"],"names":["TRACE_EVENT_ACCESSLIST","Map","Object","entries","reportToTelemetry","spanName","duration","eventName","get","telemetry","traceGlobals","record","payload","durationInMicroseconds","flushAll","report"],"mappings":"AAAA;;;;;AAA6B,IAAA,OAAW,WAAX,WAAW,CAAA;AAExC,MAAMA,sBAAsB,GAAG,IAAIC,GAAG,CACpCC,MAAM,CAACC,OAAO,CAAC;IACb,qBAAqB,EAAE,qBAAqB;CAC7C,CAAC,CACH;AAED,MAAMC,iBAAiB,GAAG,CAACC,QAAgB,EAAEC,QAAgB,GAAK;IAChE,MAAMC,SAAS,GAAGP,sBAAsB,CAACQ,GAAG,CAACH,QAAQ,CAAC;IACtD,IAAI,CAACE,SAAS,EAAE;QACd,OAAM;KACP;IACD,MAAME,SAAS,GAAGC,OAAY,aAAA,CAACF,GAAG,CAAC,WAAW,CAAC;IAC/C,IAAI,CAACC,SAAS,EAAE;QACd,OAAM;KACP;IAEDA,SAAS,CAACE,MAAM,CAAC;QACfJ,SAAS;QACTK,OAAO,EAAE;YACPC,sBAAsB,EAAEP,QAAQ;SACjC;KACF,CAAC;CACH;eAEc;IACbQ,QAAQ,EAAE,IAAM,EAAE;IAClBC,MAAM,EAAEX,iBAAiB;CAC1B"}