@forge/manifest

13.6.0-next.313.6.0-next.4
out/validators/display-conditions-validator.js
~out/validators/display-conditions-validator.jsModified
+7−3
Index: package/out/validators/display-conditions-validator.js
===================================================================
--- package/out/validators/display-conditions-validator.js
+++ package/out/validators/display-conditions-validator.js
@@ -8,8 +8,9 @@
 const isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]';
 const errors = text_1.errors.modules.displayConditions;
 const pageLocation = (page, index) => typeof page?.route === 'string' ? `page "${page.route}"` : `page[${index}]`;
 const sectionLocation = (section, index) => typeof section?.header === 'string' ? `section "${section.header}"` : `section[${index}]`;
+const isJiraOrJsmModuleType = (moduleType) => moduleType.startsWith('jira:') || moduleType.startsWith('jiraServiceManagement:');
 class DisplayConditionsValidator {
     schema;
     validateSchema;
     moduleSchemas;
@@ -21,21 +22,24 @@
         const properties = this.schema.properties;
         this.moduleSchemas = properties.modules?.properties;
         this.supportedOperations = properties.operations?.items?.enum;
     }
-    flattenDisplayConditions(moduleKey, displayConditions, nesting = 0, location) {
+    flattenDisplayConditions(moduleType, moduleKey, displayConditions, nesting = 0, location) {
         if (nesting >= 10) {
             throw Error(errors.overcomplicated(moduleKey, location));
         }
         if (Array.isArray(displayConditions)) {
+            if (isJiraOrJsmModuleType(moduleType)) {
+                return displayConditions.flatMap((entry) => this.flattenDisplayConditions(moduleType, moduleKey, entry, nesting, location));
+            }
             return [displayConditions];
         }
         const result = [];
         const obj = {};
         const keys = Object.keys(displayConditions);
         for (let i = 0; i < keys.length; i += 1) {
             if (this.supportedOperations.includes(keys[i])) {
-                result.push(...this.flattenDisplayConditions(moduleKey, displayConditions[keys[i]], nesting + 1, location));
+                result.push(...this.flattenDisplayConditions(moduleType, moduleKey, displayConditions[keys[i]], nesting + 1, location));
             }
             else {
                 obj[keys[i]] = displayConditions[keys[i]];
             }
@@ -89,9 +93,9 @@
             return;
         }
         let flattened = [];
         try {
-            flattened = this.flattenDisplayConditions(moduleKey, displayConditions, 0, location);
+            flattened = this.flattenDisplayConditions(moduleType, moduleKey, displayConditions, 0, location);
         }
         catch (e) {
             reportError('n/a', e.message);
             return;