ddl-manager
Version:
store postgres procedures and triggers in files
169 lines • 8.33 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.createTimelineFile = void 0;
const fs_1 = __importDefault(require("fs"));
const path_1 = __importDefault(require("path"));
const utils_1 = require("./utils");
function createTimelineFile(params) {
const timeline = createTimeline(params);
const timelineFileName = generateTimelineFileName(params.name);
const timelineFilePath = path_1.default.join(params.outputPath, timelineFileName);
let json = JSON.stringify(timeline);
console.log(`saving report to ${timelineFilePath}`);
fs_1.default.writeFileSync(timelineFilePath, json);
}
exports.createTimelineFile = createTimelineFile;
function createTimeline(params) {
const { rootCalls } = params;
console.log("creating timeline report");
const nodes = [{
callFrame: {
codeType: "other",
functionName: "(root)",
scriptId: 0
},
"id": 1
}];
const samples = [];
const timeDeltas = [];
let firstCall = rootCalls[0];
let lastCall = rootCalls[rootCalls.length - 1];
let total_time = (lastCall.end_time - firstCall.start_time) * 1000; // to micro seconds
calls2timeline({
calls: rootCalls,
nodes,
samples,
timeDeltas,
parentStart: firstCall.start_time,
parentId: 1
});
return { "traceEvents": [
{ "args": { "name": "swapper" }, "cat": "__metadata", "name": "thread_name", "ph": "M", "pid": 0, "tid": 0, "ts": 0 },
{ "args": { "name": "CrRendererMain" }, "cat": "__metadata", "name": "thread_name", "ph": "M", "pid": 31577, "tid": 1, "ts": 0 },
{ "args": { "name": "ThreadPoolServiceThread" }, "cat": "__metadata", "name": "thread_name", "ph": "M", "pid": 31577, "tid": 2, "ts": 0 },
{ "args": { "name": "CrBrowserMain" }, "cat": "__metadata", "name": "thread_name", "ph": "M", "pid": 5310, "tid": 5310, "ts": 0 },
{ "args": { "name": "Chrome_IOThread" }, "cat": "__metadata", "name": "thread_name", "ph": "M", "pid": 5310, "tid": 5328, "ts": 0 },
{ "args": { "name": "CrGpuMain" }, "cat": "__metadata", "name": "thread_name", "ph": "M", "pid": 5344, "tid": 5344, "ts": 0 },
{ "args": { "name": "ThreadPoolServiceThread" }, "cat": "__metadata", "name": "thread_name", "ph": "M", "pid": 5344, "tid": 5424, "ts": 0 },
{ "args": { "name": "VizCompositorThread" }, "cat": "__metadata", "name": "thread_name", "ph": "M", "pid": 5344, "tid": 5428, "ts": 0 },
{ "args": { "name": "Chrome_ChildIOThread" }, "cat": "__metadata", "name": "thread_name", "ph": "M", "pid": 31577, "tid": 4, "ts": 0 },
{ "args": { "name": "v8:ProfEvntProc" }, "cat": "__metadata", "name": "thread_name", "ph": "M", "pid": 31577, "tid": 22, "ts": 0 },
{ "args": { "name": "ThreadPoolForegroundWorker" }, "cat": "__metadata", "name": "thread_name", "ph": "M", "pid": 31577, "tid": 3, "ts": 0 },
{ "args": { "name": "ThreadPoolForegroundWorker" }, "cat": "__metadata", "name": "thread_name", "ph": "M", "pid": 5310, "tid": 5325, "ts": 0 },
{ "args": { "name": "ThreadPoolForegroundWorker" }, "cat": "__metadata", "name": "thread_name", "ph": "M", "pid": 5344, "tid": 5425, "ts": 0 },
{ "args": { "name": "Renderer" }, "cat": "__metadata", "name": "process_name", "ph": "M", "pid": 31577, "tid": 0, "ts": 0 },
{ "args": { "name": "Browser" }, "cat": "__metadata", "name": "process_name", "ph": "M", "pid": 5310, "tid": 0, "ts": 0 },
{ "args": { "name": "GPU Process" }, "cat": "__metadata", "name": "process_name", "ph": "M", "pid": 5344, "tid": 0, "ts": 0 },
{ "args": { "uptime": "198" }, "cat": "__metadata", "name": "process_uptime_seconds", "ph": "M", "pid": 31577, "tid": 0, "ts": 0 },
{ "args": { "uptime": "12287" }, "cat": "__metadata", "name": "process_uptime_seconds", "ph": "M", "pid": 5310, "tid": 0, "ts": 0 },
{ "args": { "uptime": "12287" }, "cat": "__metadata", "name": "process_uptime_seconds", "ph": "M", "pid": 5344, "tid": 0, "ts": 0 },
{ "args": { "data": { "frameTreeNodeId": 224, "frames": [{ "frame": "3D5D20F86E81F62ADC8CFC7C151E0D88", "name": "", "processId": 31577, "url": "root" }], "persistentIds": true } },
"cat": "disabled-by-default-devtools.timeline", "name": "TracingStartedInBrowser", "ph": "I", "pid": 5310, "s": "t", "tid": 5310, "ts": 0, "tts": 0 },
{ "args": { "data": { "type": params.name + ".sql" } }, "cat": "devtools.timeline",
"dur": total_time,
"name": "EventDispatch", "ph": "X", "pid": 31577, "tdur": 0, "tid": 1, "ts": 0, "tts": 0, "selfTime": 0 },
{
"args": {
"data": {
"frame": "3D5D20F86E81F62ADC8CFC7C151E0D88",
"columnNumber": 17,
"functionName": "root",
"lineNumber": 1,
"scriptId": "-101",
"url": "root"
}
},
"cat": "devtools.timeline",
"dur": 8394,
"name": "FunctionCall",
"ph": "X",
"pid": 31577,
"tdur": total_time,
"tid": 1,
"ts": 1,
"tts": 0,
"selfTime": 0
},
{
"args": {
"data": {
"startTime": 3
}
},
"cat": "disabled-by-default-v8.cpu_profiler",
"id": "0x5",
"name": "Profile",
"ph": "P",
"pid": 31577,
"tid": 1,
"ts": 1,
"tts": 0
},
{
"args": {
"data": {
"cpuProfile": {
"nodes": nodes,
"samples": samples
},
"timeDeltas": timeDeltas
}
},
"cat": "disabled-by-default-v8.cpu_profiler",
"id": "0x5",
"name": "ProfileChunk",
"ph": "P",
"pid": 31577,
"tid": 22,
"ts": 2,
"tts": 0
},
{ "args": { "data": { "type": "end timeline" } }, "cat": "devtools.timeline",
"dur": 1,
"name": "EventDispatch", "ph": "X", "pid": 31577, "tdur": 0, "tid": 1, "ts": total_time, "tts": 0, "selfTime": 0 }
],
"metadata": {
"source": "DevTools",
"startTime": "2024-03-18T15:43:05.251Z",
"cpuThrottling": 1,
"networkThrottling": "No throttling",
"hardwareConcurrency": 20,
"dataOrigin": "TraceEvents"
} };
}
function calls2timeline(params) {
const { calls, nodes, samples, timeDeltas, parentStart, parentId } = params;
if (!calls.length) {
return;
}
let prevEnd = parentStart;
for (let i = 0, n = calls.length; i < n; i++) {
const call = calls[i];
const sample = call.toSample();
nodes.push(sample);
let delta = call.start_time - prevEnd;
samples.push(sample.id);
timeDeltas.push(delta * 1000); // ms to microSeconds
calls2timeline({
calls: call.children,
nodes,
samples,
timeDeltas,
parentStart: call.start_time,
parentId: sample.id
});
delta = call.end_time - call.getLastChildEndTime();
samples.push(parentId);
timeDeltas.push(delta * 1000); // ms to microSeconds
prevEnd = call.end_time;
}
}
function generateTimelineFileName(name) {
const now = new Date();
const timestamp = utils_1.date2timestamp(now);
return `timeline-${name}-${timestamp}.json`;
}
//# sourceMappingURL=createTimelineFile.js.map