@backtrace/sourcemap-tools
Version:
Backtrace-JavaScript sourcemap tools
70 lines • 6.45 kB
JavaScript
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.processAndUploadAssetsCommand = processAndUploadAssetsCommand;
const path_1 = __importDefault(require("path"));
const DebugIdGenerator_1 = require("../DebugIdGenerator");
const SourceProcessor_1 = require("../SourceProcessor");
const SymbolUploader_1 = require("../SymbolUploader");
const common_1 = require("../helpers/common");
const flow_1 = require("../helpers/flow");
const Result_1 = require("../models/Result");
const archiveSourceMaps_1 = require("./archiveSourceMaps");
const loadSourceMaps_1 = require("./loadSourceMaps");
const processAsset_1 = require("./processAsset");
const uploadArchive_1 = require("./uploadArchive");
const writeAsset_1 = require("./writeAsset");
function processAndUploadAssetsCommand(pluginOptions, options) {
const sourceProcessor = new SourceProcessor_1.SourceProcessor(new DebugIdGenerator_1.DebugIdGenerator());
const sourceMapUploader = (pluginOptions === null || pluginOptions === void 0 ? void 0 : pluginOptions.uploadUrl)
? new SymbolUploader_1.SymbolUploader(pluginOptions.uploadUrl, pluginOptions.uploadOptions)
: undefined;
const processCommand = (0, processAsset_1.processAsset)(sourceProcessor);
const uploadCommand = sourceMapUploader ? (0, uploadArchive_1.uploadArchive)(sourceMapUploader) : undefined;
return function processAndUploadAssets(assets) {
return __awaiter(this, void 0, void 0, function* () {
var _a;
(options === null || options === void 0 ? void 0 : options.beforeAll) && options.beforeAll(assets);
const assetResults = yield Promise.all(assets.map((asset) => (0, flow_1.pipe)(asset, (options === null || options === void 0 ? void 0 : options.beforeProcess) ? (0, common_1.inspect)(options.beforeProcess) : common_1.pass, processCommand, Result_1.R.map((options === null || options === void 0 ? void 0 : options.afterProcess) ? (0, common_1.inspect)(options.afterProcess) : common_1.pass), Result_1.R.map((options === null || options === void 0 ? void 0 : options.beforeWrite) ? (0, common_1.inspect)(options.beforeWrite) : common_1.pass), Result_1.R.map(writeAsset_1.writeAsset), Result_1.R.map((options === null || options === void 0 ? void 0 : options.afterWrite) ? (0, common_1.inspect)(options.afterWrite) : common_1.pass), Result_1.R.map((options === null || options === void 0 ? void 0 : options.assetFinished) ? (0, common_1.inspect)(options.assetFinished) : common_1.pass), Result_1.R.mapErr((options === null || options === void 0 ? void 0 : options.assetError) ? (0, common_1.inspect)(options.assetError) : common_1.pass))));
const assetsResult = Result_1.R.flatMap(assetResults);
if (assetsResult.isErr()) {
const result = { assetResults };
(options === null || options === void 0 ? void 0 : options.afterAll) && options.afterAll(result);
return result;
}
if (!uploadCommand) {
const result = { assetResults };
(options === null || options === void 0 ? void 0 : options.afterAll) && options.afterAll(result);
return result;
}
const sourceMapAssets = assetsResult.data.map((r) => ({
name: path_1.default.basename(r.result.sourceMapPath),
path: r.result.sourceMapPath,
}));
const includeSources = (_a = pluginOptions === null || pluginOptions === void 0 ? void 0 : pluginOptions.uploadOptions) === null || _a === void 0 ? void 0 : _a.includeSources;
const uploadResult = yield (0, flow_1.pipe)(sourceMapAssets, (0, flow_1.flow)((0, common_1.mapAsync)((0, flow_1.flow)((options === null || options === void 0 ? void 0 : options.beforeLoad) ? (0, common_1.inspect)(options === null || options === void 0 ? void 0 : options.beforeLoad) : common_1.pass, loadSourceMaps_1.loadSourceMap, Result_1.R.map((options === null || options === void 0 ? void 0 : options.afterLoad) ? (0, common_1.inspect)(options === null || options === void 0 ? void 0 : options.afterLoad) : common_1.pass), Result_1.R.map(includeSources ? common_1.pass : loadSourceMaps_1.stripSourcesContent))), Result_1.R.flatMap), Result_1.R.map((options === null || options === void 0 ? void 0 : options.beforeUpload) ? (0, common_1.inspect)(options.beforeUpload) : common_1.pass), Result_1.R.map((0, archiveSourceMaps_1.createArchive)(sourceProcessor)), Result_1.R.map((_a) => __awaiter(this, [_a], void 0, function* ({ assets, archive }) {
// We first create the upload request, which pipes the archive to itself
const promise = uploadCommand(archive);
// Next we finalize the archive, which causes the assets to be written to the archive, and consequently to the request
yield (0, archiveSourceMaps_1.finalizeArchive)({ assets, archive });
// Finally, we return the upload request promise
return promise;
})), Result_1.R.map((options === null || options === void 0 ? void 0 : options.afterUpload) ? (0, common_1.inspect)(options.afterUpload) : common_1.pass), Result_1.R.mapErr((options === null || options === void 0 ? void 0 : options.uploadError) ? (0, common_1.inspect)(options.uploadError) : common_1.pass));
const result = { assetResults, uploadResult };
(options === null || options === void 0 ? void 0 : options.afterAll) && options.afterAll(result);
return result;
});
};
}
//# sourceMappingURL=processAndUploadAssetsCommand.js.map
;