@bugsplat/symbol-upload
Version:
Cross platform symbol upload tool
28 lines • 1.76 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.uploadSymbolFiles = uploadSymbolFiles;
const js_api_client_1 = require("@bugsplat/js-api-client");
const node_os_1 = require("node:os");
const pretty_bytes_1 = __importDefault(require("pretty-bytes"));
const workerpool_1 = require("workerpool");
const preload_1 = require("./preload");
const worker_1 = require("./worker");
const maxWorkers = (0, node_os_1.availableParallelism)();
const workerPool = (0, workerpool_1.pool)((0, preload_1.findCompressionWorkerPath)(), { maxWorkers });
async function uploadSymbolFiles(bugsplat, database, application, version, symbolFileInfos) {
console.log(`About to upload symbols for ${database}-${application}-${version}...`);
const startTime = new Date();
const symbolsApiClient = new js_api_client_1.SymbolsApiClient(bugsplat);
const versionsApiClient = new js_api_client_1.VersionsApiClient(bugsplat);
const workers = (0, worker_1.createWorkersFromSymbolFiles)(workerPool, maxWorkers, symbolFileInfos, [symbolsApiClient, versionsApiClient]);
const uploads = workers.map((worker) => worker.upload(database, application, version));
const stats = await Promise.all(uploads).then(stats => stats.flat());
const endTime = new Date();
const size = stats.reduce((acc, curr) => acc + curr.size, 0);
const seconds = (endTime.getTime() - startTime.getTime()) / 1000;
console.log(`Uploaded ${symbolFileInfos.length} symbols totaling ${(0, pretty_bytes_1.default)(size)} @ ${(0, pretty_bytes_1.default)(size / seconds)}/sec`);
}
//# sourceMappingURL=upload.js.map