dx-package-api
Version:
API to work with salesforce dx packages metadata
92 lines • 4.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
class DxPackageMetadataApiImpl {
constructor(connection) {
this.connection = connection;
this.PACKAGE_VERSION_QUERY = 'SELECT Id, SubscriberPackageVersionId, Package2.Name, Package2.NamespacePrefix' +
',Tag, Branch, MajorVersion, MinorVersion, PatchVersion, BuildNumber' +
',IsReleased, IsPasswordProtected ' +
'FROM Package2Version ';
this.PACKAGE_VERSION_WHERE_BY_IDS = ' where SubscriberPackageVersionId in (%s) ';
this.PACKAGE_VERSION_WHERE_BY_VERSION = " WHERE Package2Id='%i' AND MajorVersion=%m AND MinorVersion=%n AND PatchVersion=%p AND BuildNumber=%b";
this.PACKAGE_VERSION_DEPENDENCIES_QUERY = "SELECT Dependencies FROM SubscriberPackageVersion WHERE Id = '%s'";
this.MAX_BUILD_NUMBER_QUERY = 'SELECT max(buildNumber) latestBuildNumber FROM Package2Version' +
" WHERE Package2Id='%i' AND MajorVersion=%m AND MinorVersion=%n AND PatchVersion=%p";
}
async getMaxBuildNumber(package2Id, majorVersion, minorVersion, patchVersion) {
let maxBuildVersion = -1;
const query = this.MAX_BUILD_NUMBER_QUERY.replace('%i', package2Id)
.replace('%m', majorVersion)
.replace('%n', minorVersion)
.replace('%p', patchVersion);
await this.connection.tooling.query(query).then(maxBuildVersionQueryResult => {
maxBuildVersionQueryResult.records.some(maxBuildVersionElement => {
// tslint:disable-next-line: no-string-literal
maxBuildVersion = maxBuildVersionElement['latestBuildNumber'];
return true;
});
});
return maxBuildVersion;
}
async getPackage2VersionById(subscriberPackageVersionId) {
const query = (this.PACKAGE_VERSION_QUERY + this.PACKAGE_VERSION_WHERE_BY_IDS).replace('%s', subscriberPackageVersionId.includes("'") ? subscriberPackageVersionId : "'" + subscriberPackageVersionId + "'");
let result = null;
await this.connection.tooling.query(query).then(packageQueryResult => {
packageQueryResult.records.forEach(packageVersion => {
result = packageVersion;
return true;
});
});
return result;
}
async getPackage2VersionByVersion(package2Id, majorVersion, minorVersion, patchVersion, buildNumber) {
const query = (this.PACKAGE_VERSION_QUERY + this.PACKAGE_VERSION_WHERE_BY_VERSION)
.replace('%i', package2Id)
.replace('%m', majorVersion)
.replace('%n', minorVersion)
.replace('%p', patchVersion)
.replace('%b', buildNumber);
let result = null;
await this.connection.tooling.query(query).then(packageQueryResult => {
packageQueryResult.records.forEach(packageVersion => {
result = packageVersion;
return true;
});
});
return result;
}
async getPackage2VersionByIds(subscriberPackageVersionIds) {
const result = [];
if (subscriberPackageVersionIds.length === 0)
return result;
const versions = [];
subscriberPackageVersionIds.forEach(version => {
const outgoingVersion = version.includes("'") ? version : "'" + version + "'";
versions.push(outgoingVersion);
});
const packageWhereClause = this.PACKAGE_VERSION_WHERE_BY_IDS.replace('%s', versions.join(','));
const query = this.PACKAGE_VERSION_QUERY + packageWhereClause;
await this.connection.tooling.query(query).then(packageQueryResult => {
packageQueryResult.records.forEach(packageVersion => {
result.push(packageVersion);
});
});
return result;
}
async getDependenciesIds(subscriberPackageVersionId) {
const result = [];
const query = this.PACKAGE_VERSION_DEPENDENCIES_QUERY.replace('%s', subscriberPackageVersionId);
await this.connection.tooling.query(query).then(subscriberPackageVersion => {
subscriberPackageVersion.records.forEach(packageVersion => {
if (packageVersion.Dependencies) {
packageVersion.Dependencies.ids.forEach(id => {
result.push(id.subscriberPackageVersionId);
});
}
});
});
return result;
}
}
exports.DxPackageMetadataApiImpl = DxPackageMetadataApiImpl;
//# sourceMappingURL=apimpl.js.map