@forge/manifest
12.5.0-next.412.5.0-next.5
out/validators/compatibility-validator.js~
out/validators/compatibility-validator.jsModified+16−1
Index: package/out/validators/compatibility-validator.js
===================================================================
--- package/out/validators/compatibility-validator.js
+++ package/out/validators/compatibility-validator.js
@@ -12,10 +12,25 @@
manifestObject: manifest
};
}
const validationErrors = [];
+ const app = manifest.typedContent.app;
const modules = manifest.typedContent.modules || {};
- const compatibility = manifest.typedContent.app?.compatibility || {};
+ const compatibility = app?.compatibility || {};
+ const installationTarget = app?.installationTarget;
+ const shouldCheckRequiredContext = installationTarget === undefined || installationTarget === 'site';
+ if (shouldCheckRequiredContext) {
+ const hasCompatibilityKeys = Object.keys(compatibility).length > 0;
+ const requiredContexts = Object.keys(compatibility).filter((key) => compatibility[key]?.required === true);
+ if (hasCompatibilityKeys && requiredContexts.length !== 1) {
+ validationErrors.push({
+ message: text_1.errors.app.compatibility.oneRequiredContext(),
+ reference: text_2.References.SchemaError,
+ level: 'error',
+ ...(0, utils_1.findPosition)('compatibility', manifest.yamlContentByLine)
+ });
+ }
+ }
const isJiraPrimary = compatibility.jira?.required === true;
const isConfluencePrimary = compatibility.confluence?.required === true;
const moduleKeys = Object.keys(modules);
if (isJiraPrimary && moduleKeys.some((key) => key === 'confluence:fullPage')) {