@forge/manifest

13.6.0-next.313.6.0-next.4
~

Modified (5 files)

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;
Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
 {
   "name": "@forge/manifest",
-  "version": "13.6.0-next.3",
+  "version": "13.6.0-next.4",
   "description": "Definitions and validations of the Forge manifest",
   "main": "out/index.js",
   "scripts": {
     "build": "yarn run compile",
Index: package/out/validators/display-conditions-validator.d.ts.map
===================================================================
--- package/out/validators/display-conditions-validator.d.ts.map
+++ package/out/validators/display-conditions-validator.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"display-conditions-validator.d.ts","sourceRoot":"","sources":["../../src/validators/display-conditions-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,cAAc,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGrG,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAiBpD,qBAAa,0BAA0B,CAAC,CAAC,CACvC,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAM7E,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2B;gBAElC,MAAM,EAAE,MAAM;IAoE3C,wBAAwB,CAAC,SAAS,EAAE,MAAM,EAAE,iBAAiB,EAAE,GAAG,EAAE,OAAO,SAAI,EAAE,QAAQ,CAAC,EAAE,MAAM,GAAG,GAAG;IA2BxG,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;IAanD,OAAO,CAAC,qCAAqC;IA0C7C,OAAO,CAAC,yBAAyB;IAuD3B,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;CA4ErD"}
\ No newline at end of file
+{"version":3,"file":"display-conditions-validator.d.ts","sourceRoot":"","sources":["../../src/validators/display-conditions-validator.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,cAAc,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAGrG,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAsBpD,qBAAa,0BAA0B,CAAC,CAAC,CACvC,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAM7E,OAAO,CAAC,QAAQ,CAAC,MAAM;IAJnC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAmB;IAClD,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAiB;IAC/C,OAAO,CAAC,QAAQ,CAAC,mBAAmB,CAA2B;gBAElC,MAAM,EAAE,MAAM;IAoE3C,wBAAwB,CACtB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,GAAG,EACtB,OAAO,SAAI,EACX,QAAQ,CAAC,EAAE,MAAM,GAChB,GAAG;IAqCN,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe;IAanD,OAAO,CAAC,qCAAqC;IA0C7C,OAAO,CAAC,yBAAyB;IAuD3B,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;CA4ErD"}
\ No newline at end of file
File too large for inline diff
Index: package/out/validators/display-conditions-validator.d.ts
===================================================================
--- package/out/validators/display-conditions-validator.d.ts
+++ package/out/validators/display-conditions-validator.d.ts
@@ -6,9 +6,9 @@
     private readonly validateSchema;
     private readonly moduleSchemas;
     private readonly supportedOperations;
     constructor(schema: object);
-    flattenDisplayConditions(moduleKey: string, displayConditions: any, nesting?: number, location?: string): any;
+    flattenDisplayConditions(moduleType: string, moduleKey: string, displayConditions: any, nesting?: number, location?: string): any;
     toValidationError(message: string): ValidationError;
     private collectNestedDisplayConditionsTargets;
     private validateDisplayConditions;
     validate(manifest: ManifestObject<ManifestSchema> | undefined): Promise<ManifestValidationResult<ManifestSchema>>;