@salesforce/packaging
Version:
Packaging library for the Salesforce packaging platform
125 lines • 6.41 kB
JavaScript
;
/*
* Copyright (c) 2020, salesforce.com, inc.
* All rights reserved.
* Licensed under the BSD 3-Clause license.
* For full license text, see LICENSE.txt file in the repo root or https://opensource.org/licenses/BSD-3-Clause
*/
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getQuery = getQuery;
exports.list = list;
exports.byId = byId;
const node_util_1 = __importDefault(require("node:util"));
const core_1 = require("@salesforce/core");
const interfaces_1 = require("../interfaces");
const packageUtils_1 = require("../utils/packageUtils");
core_1.Messages.importMessagesDirectory(__dirname);
const messages = core_1.Messages.loadMessages('@salesforce/packaging', 'package_version_create');
function getQuery(connection) {
const QUERY = 'SELECT Id, Status, Package2Id, Package2.Name, Package2VersionId, Package2Version.SubscriberPackageVersionId, Package2Version.HasPassedCodeCoverageCheck,Package2Version.CodeCoverage, Tag, Branch, ' +
'Package2Version.MajorVersion, Package2Version.MinorVersion, Package2Version.PatchVersion, Package2Version.BuildNumber, ' +
'CreatedDate, Package2Version.HasMetadataRemoved, CreatedById, IsConversionRequest, Package2Version.ConvertedFromVersionId ' +
(Number(connection.version) > 60.0 ? ', AsyncValidation ' : '') +
(Number(connection.version) > 63.0
? ', Package2Version.TotalNumberOfMetadataFiles, Package2Version.TotalSizeOfMetadataFiles '
: '') +
'FROM Package2VersionCreateRequest ' +
'%s' + // WHERE, if applicable
'ORDER BY CreatedDate desc';
return QUERY;
}
function formatDate(date) {
const pad = (num) => (num < 10 ? `0${num}` : `${num}`);
return `${date.getFullYear()}-${pad(date.getMonth() + 1)}-${pad(date.getDate())} ${pad(date.getHours())}:${pad(date.getMinutes())}`;
}
async function list(connection, options) {
try {
const whereClause = constructWhere(options);
return await query(node_util_1.default.format(getQuery(connection), whereClause), connection);
}
catch (err) {
if (err instanceof Error) {
throw (0, packageUtils_1.applyErrorAction)((0, packageUtils_1.massageErrorMessage)(err));
}
throw err;
}
}
async function byId(packageVersionCreateRequestId, connection) {
const results = await query(node_util_1.default.format(getQuery(connection), `WHERE Id = '${packageVersionCreateRequestId}' `), connection);
if (results && results.length === 1 && results[0].Status === interfaces_1.PackagingSObjects.Package2VersionStatus.error) {
results[0].Error = await queryForErrors(packageVersionCreateRequestId, connection);
}
return results;
}
// eslint-disable-next-line @typescript-eslint/no-shadow
async function query(query, connection) {
const queryResult = await connection.autoFetchQuery(query, { tooling: true });
return (queryResult.records ? queryResult.records : []).map((record) => ({
Id: record.Id,
Status: record.Status,
Package2Id: record.Package2Id,
Package2Name: record.Package2 != null ? record.Package2.Name : null,
Package2VersionId: record.Package2VersionId,
SubscriberPackageVersionId: record.Package2Version != null ? record.Package2Version.SubscriberPackageVersionId : null,
Tag: record.Tag,
Branch: record.Branch,
Error: [],
CreatedDate: formatDate(new Date(record.CreatedDate)),
HasMetadataRemoved: record.Package2Version != null ? record.Package2Version.HasMetadataRemoved : null,
CodeCoverage: record.Package2Version?.CodeCoverage != null
? record.Package2Version.CodeCoverage.apexCodeCoveragePercentage
: null,
VersionNumber: record.Package2Version != null
? `${record.Package2Version.MajorVersion}.${record.Package2Version.MinorVersion}.${record.Package2Version.PatchVersion}.${record.Package2Version.BuildNumber}`
: null,
HasPassedCodeCoverageCheck: record.Package2Version != null ? record.Package2Version.HasPassedCodeCoverageCheck : null,
CreatedBy: record.CreatedById,
ConvertedFromVersionId: convertedFromVersionMessage(record.Status, record.Package2Version?.ConvertedFromVersionId),
TotalNumberOfMetadataFiles: record.Package2Version != null ? record.Package2Version.TotalNumberOfMetadataFiles : null,
TotalSizeOfMetadataFiles: record.Package2Version != null ? record.Package2Version.TotalSizeOfMetadataFiles : null,
}));
}
function convertedFromVersionMessage(status, convertedFromVersionId) {
switch (status) {
case 'Success':
return convertedFromVersionId;
case 'Queued':
return messages.getMessage('IdUnavailableWhenQueued');
case 'InProgress':
return messages.getMessage('IdUnavailableWhenInProgress');
case 'Error':
return messages.getMessage('IdUnavailableWhenError');
default:
return messages.getMessage('IdUnavailableWhenInProgress');
}
}
async function queryForErrors(packageVersionCreateRequestId, connection) {
const queryResult = await connection.tooling.query(`SELECT Message FROM Package2VersionCreateRequestError WHERE ParentRequest.Id = '${packageVersionCreateRequestId}'`);
return queryResult.records ? queryResult.records.map((record) => record.Message) : [];
}
function constructWhere(options) {
const where = [];
if (options?.id) {
where.push(`Id = '${options.id}'`);
}
// filter on created date, days ago: 0 for today, etc
if (options?.createdlastdays !== undefined) {
if (options.createdlastdays < 0) {
throw messages.createError('invalidDaysNumber', ['createdlastdays', options.createdlastdays]);
}
where.push(`CreatedDate = LAST_N_DAYS:${options.createdlastdays}`);
}
// filter on errors
if (options?.status) {
where.push(`Status = '${options.status.toLowerCase()}'`);
}
// show only conversions
if (options?.showConversionsOnly) {
where.push('IsConversionRequest = true ');
}
return where.length > 0 ? `WHERE ${where.join(' AND ')}` : '';
}
//# sourceMappingURL=packageVersionCreateRequest.js.map