in packages/aws-rfdk/lib/lambdas/nodejs/lib/version-provider/version-provider.ts [231:291]
private getRequestedUriVersion(
requestedVersion: string[],
indexedVersionInfo: any,
platform: Platform,
product: Product,
): IVersionedUris | undefined {
let versionMap = indexedVersionInfo;
const versionArray: string[] = [];
// iterate through all 4 major, minor, release and patch numbers,
// and get the matching version from the indexed version map.
for (let versionIndex = 0; versionIndex < 4; versionIndex++) {
let version: string;
if (requestedVersion[versionIndex + 1] == null) {
// version is not provided, get the max version.
const numberValues: number[] = (Object.keys(versionMap)).map((val: string) => {
return parseInt(val, 10);
});
version = (Math.max(...numberValues)).toString();
} else {
version = requestedVersion[versionIndex + 1];
}
if (versionMap[version] === undefined) {
throw new Error(`${product} version ${requestedVersion[0]} is not available on ${platform}`);
}
versionArray[versionIndex] = version;
versionMap = versionMap[version];
}
let uriIndex: IUris | undefined;
if ((platform in versionMap)) {
const platformVersionMap = versionMap[platform];
if (product == Product.deadline) {
uriIndex = {
bundle: platformVersionMap.bundle,
clientInstaller: platformVersionMap.clientInstaller,
repositoryInstaller: platformVersionMap.repositoryInstaller,
certificateInstaller: platformVersionMap.certificateInstaller,
};
} else { // Product.deadlineDocker
uriIndex = {
bundle: platformVersionMap,
};
}
}
if (uriIndex) {
return {
MajorVersion: versionArray[0],
MinorVersion: versionArray[1],
ReleaseVersion: versionArray[2],
PatchVersion: versionArray[3],
Uris: uriIndex,
};
} else {
return undefined;
}
}