@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;