@forge/cli
14.1.0-next.21-experimental-554d41714.1.0-next.19-experimental-fd0ebbc
out/service/version-service.js~
out/service/version-service.jsModified+17−13
Index: package/out/service/version-service.js
===================================================================
--- package/out/service/version-service.js
+++ package/out/service/version-service.js
@@ -79,9 +79,9 @@
filterOutEmpty(array) {
return array?.filter((entry) => entry !== null) || [];
}
getEgresses(egresses, remoteModules) {
- const remoteModuleUrls = this.filterOutEmpty(remoteModules).map((remote) => remote?.extensionData.baseUrl);
+ const remoteModuleUrls = this.filterOutEmpty(remoteModules).map((remote) => remote?.extensionData?.baseUrl);
const egressesWithoutRemoteModules = this.filterOutEmpty(egresses).map((entry) => {
if (entry.type === 'FETCH_BACKEND_SIDE') {
return {
...entry,
@@ -116,11 +116,11 @@
getConnectedKeys(migrationKeys) {
if (!migrationKeys) {
return [];
}
- return Object.keys(migrationKeys).map((key) => ({
- product: key,
- key: migrationKeys[key] || ''
+ return Object.entries(migrationKeys).map(([product, key]) => ({
+ product,
+ key: key || ''
}));
}
getFunctions(functionModules) {
const isOldFunctionsExtension = (extensionData) => {
@@ -131,8 +131,11 @@
};
const getRuntimeName = (identifier) => (identifier || 'sandbox').replace('provided.al2', 'sandbox').replace('provided', 'sandbox');
return this.filterOutEmpty(functionModules).map((entry) => {
const { key, extensionData } = entry;
+ if (!extensionData) {
+ throw new Error('Unknown function extension data format');
+ }
if (isOldFunctionsExtension(extensionData)) {
return {
key,
runtimeName: getRuntimeName(extensionData.runtime?.identifier),
@@ -164,17 +167,18 @@
}
async getAppVersionDetails(environmentKey, majorVersion) {
const { id: appId } = await this.getAppConfig();
const data = await this.versionDetailsClient.getVersionDetails(appId, environmentKey, majorVersion);
+ const permission = data.permissions?.[0];
const functionModules = data.modules?.filter((mod) => mod?.extensionData?.type === manifest_1.AllModuleTypes.CoreFunction);
const remoteModules = data.modules?.filter((mod) => mod?.extensionData?.type === manifest_1.AllModuleTypes.CoreRemote);
const allModules = this.getModulesGroupedByTypes(data.modules);
const appDetails = {
requiresLicense: data.requiresLicense,
- egresses: this.getEgresses(data.permissions?.[0].egress, remoteModules),
- analytics: this.getAnalytics(data.permissions?.[0].egress),
- scopes: data.permissions?.[0].scopes.map((scope) => scope.key).sort() || [],
- policies: this.getPolicies(data.permissions?.[0].securityPolicies),
+ egresses: this.getEgresses(permission?.egress, remoteModules),
+ analytics: this.getAnalytics(permission?.egress),
+ scopes: permission?.scopes.map((scope) => scope.key).sort() || [],
+ policies: this.getPolicies(permission?.securityPolicies),
connectKeys: this.getConnectedKeys(data.migrationKeys),
appVersion: (0, semver_1.major)(data.appVersion),
deploymentDateTime: data.deploymentDateTime,
environmentType: data.environmentType,
@@ -183,10 +187,10 @@
.filter((type) => !['function', 'remote', 'service'].includes(type))
.map((type) => ({ type, items: allModules[type] })),
remotes: this.filterOutEmpty(remoteModules).map((entry) => ({
key: entry.key || 'N/A',
- baseUrl: entry.extensionData.baseUrl,
- operations: entry.extensionData.operations || []
+ baseUrl: entry.extensionData?.baseUrl ?? 'N/A',
+ operations: entry.extensionData?.operations || []
})),
services: this.getServices(data.modules),
environment: (0, cli_shared_1.environmentToOption)(environmentKey)
};
@@ -205,14 +209,14 @@
}
getModulesGroupedByTypes(modules) {
const rawModules = this.filterOutEmpty(modules)
.filter((mod) => mod.extensionData && manifest_1.SUPPORTED_MODULES.includes(mod.extensionData.type))
- .filter((mod) => ![manifest_1.AllModuleTypes.CoreFunction, manifest_1.AllModuleTypes.CoreRemote, manifest_1.AllModuleTypes.CoreService].includes(mod.extensionData.type))
+ .filter((mod) => ![manifest_1.AllModuleTypes.CoreFunction, manifest_1.AllModuleTypes.CoreRemote, manifest_1.AllModuleTypes.CoreService].includes(mod.extensionData?.type))
.map((entry) => ({
key: entry.key,
- type: entry.extensionData.type,
+ type: entry.extensionData?.type,
properties: {
- ...this.removeInternalPropertiesFromObject(entry.extensionData)
+ ...this.removeInternalPropertiesFromObject(entry.extensionData ?? {})
}
}));
return rawModules.reduce((acc, entry) => {
const type = (0, manifest_1.cleanKey)(entry.type);