dx-package-api
Version:
API to work with salesforce dx packages metadata
42 lines • 2.06 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
const apimpl_1 = require("./apimpl");
class DxPackageMetadataCachingApiImpl {
constructor(connection) {
this.packageVersions = new Map();
this.packageVersionIdToDependenciesIds = new Map();
this.dxPackageMetadataApi = new apimpl_1.DxPackageMetadataApiImpl(connection);
}
async getPackage2VersionById(subscriberPackageVersionId) {
if (!this.packageVersions.has(subscriberPackageVersionId)) {
this.packageVersions.set(subscriberPackageVersionId, await this.dxPackageMetadataApi.getPackage2VersionById(subscriberPackageVersionId));
}
return this.packageVersions.get(subscriberPackageVersionId);
}
async getDependencies(subscriberPackageVersionId) {
const result = [];
if (!this.packageVersionIdToDependenciesIds.has(subscriberPackageVersionId)) {
this.packageVersionIdToDependenciesIds.set(subscriberPackageVersionId, await this.dxPackageMetadataApi.getDependenciesIds(subscriberPackageVersionId));
}
const ids = this.packageVersionIdToDependenciesIds.get(subscriberPackageVersionId);
if (ids.length === 0)
return result;
const missingPackageIds = [];
ids.forEach(id => {
if (!this.packageVersions.has(id))
missingPackageIds.push("'" + id + "'");
else
result.push(this.packageVersions.get(id));
});
if (missingPackageIds.length === 0)
return result;
const packageVersions = await this.dxPackageMetadataApi.getPackage2VersionByIds(missingPackageIds);
packageVersions.forEach(packageVersion => {
result.push(packageVersion);
this.packageVersions.set(packageVersion.SubscriberPackageVersionId, packageVersion);
});
return result;
}
}
exports.DxPackageMetadataCachingApiImpl = DxPackageMetadataCachingApiImpl;
//# sourceMappingURL=cachingapi.js.map