118 lines
4.2 KiB
JavaScript
118 lines
4.2 KiB
JavaScript
"use strict";
|
|
var __defProp = Object.defineProperty;
|
|
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
var __export = (target, all) => {
|
|
for (var name in all)
|
|
__defProp(target, name, { get: all[name], enumerable: true });
|
|
};
|
|
var __copyProps = (to, from, except, desc) => {
|
|
if (from && typeof from === "object" || typeof from === "function") {
|
|
for (let key of __getOwnPropNames(from))
|
|
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
}
|
|
return to;
|
|
};
|
|
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
var tracing_exports = {};
|
|
__export(tracing_exports, {
|
|
Tracing: () => Tracing
|
|
});
|
|
module.exports = __toCommonJS(tracing_exports);
|
|
var import_artifact = require("./artifact");
|
|
var import_channelOwner = require("./channelOwner");
|
|
class Tracing extends import_channelOwner.ChannelOwner {
|
|
constructor(parent, type, guid, initializer) {
|
|
super(parent, type, guid, initializer);
|
|
this._includeSources = false;
|
|
this._isTracing = false;
|
|
}
|
|
static from(channel) {
|
|
return channel._object;
|
|
}
|
|
async start(options = {}) {
|
|
await this._wrapApiCall(async () => {
|
|
this._includeSources = !!options.sources;
|
|
await this._channel.tracingStart({
|
|
name: options.name,
|
|
snapshots: options.snapshots,
|
|
screenshots: options.screenshots,
|
|
live: options._live
|
|
});
|
|
const { traceName } = await this._channel.tracingStartChunk({ name: options.name, title: options.title });
|
|
await this._startCollectingStacks(traceName);
|
|
});
|
|
}
|
|
async startChunk(options = {}) {
|
|
await this._wrapApiCall(async () => {
|
|
const { traceName } = await this._channel.tracingStartChunk(options);
|
|
await this._startCollectingStacks(traceName);
|
|
});
|
|
}
|
|
async group(name, options = {}) {
|
|
await this._channel.tracingGroup({ name, location: options.location });
|
|
}
|
|
async groupEnd() {
|
|
await this._channel.tracingGroupEnd();
|
|
}
|
|
async _startCollectingStacks(traceName) {
|
|
if (!this._isTracing) {
|
|
this._isTracing = true;
|
|
this._connection.setIsTracing(true);
|
|
}
|
|
const result = await this._connection.localUtils()?.tracingStarted({ tracesDir: this._tracesDir, traceName });
|
|
this._stacksId = result?.stacksId;
|
|
}
|
|
async stopChunk(options = {}) {
|
|
await this._wrapApiCall(async () => {
|
|
await this._doStopChunk(options.path);
|
|
});
|
|
}
|
|
async stop(options = {}) {
|
|
await this._wrapApiCall(async () => {
|
|
await this._doStopChunk(options.path);
|
|
await this._channel.tracingStop();
|
|
});
|
|
}
|
|
async _doStopChunk(filePath) {
|
|
this._resetStackCounter();
|
|
if (!filePath) {
|
|
await this._channel.tracingStopChunk({ mode: "discard" });
|
|
if (this._stacksId)
|
|
await this._connection.localUtils().traceDiscarded({ stacksId: this._stacksId });
|
|
return;
|
|
}
|
|
const localUtils = this._connection.localUtils();
|
|
if (!localUtils)
|
|
throw new Error("Cannot save trace in thin clients");
|
|
const isLocal = !this._connection.isRemote();
|
|
if (isLocal) {
|
|
const result2 = await this._channel.tracingStopChunk({ mode: "entries" });
|
|
await localUtils.zip({ zipFile: filePath, entries: result2.entries, mode: "write", stacksId: this._stacksId, includeSources: this._includeSources });
|
|
return;
|
|
}
|
|
const result = await this._channel.tracingStopChunk({ mode: "archive" });
|
|
if (!result.artifact) {
|
|
if (this._stacksId)
|
|
await localUtils.traceDiscarded({ stacksId: this._stacksId });
|
|
return;
|
|
}
|
|
const artifact = import_artifact.Artifact.from(result.artifact);
|
|
await artifact.saveAs(filePath);
|
|
await artifact.delete();
|
|
await localUtils.zip({ zipFile: filePath, entries: [], mode: "append", stacksId: this._stacksId, includeSources: this._includeSources });
|
|
}
|
|
_resetStackCounter() {
|
|
if (this._isTracing) {
|
|
this._isTracing = false;
|
|
this._connection.setIsTracing(false);
|
|
}
|
|
}
|
|
}
|
|
// Annotate the CommonJS export names for ESM import in node:
|
|
0 && (module.exports = {
|
|
Tracing
|
|
});
|