@forge/manifest
12.9.012.9.0-experimental-04cc2b9
out/validators/modules-validators/bitbucket/validateWorkspacePageProperties.js+
out/validators/modules-validators/bitbucket/validateWorkspacePageProperties.jsNew file+51
Index: package/out/validators/modules-validators/bitbucket/validateWorkspacePageProperties.js
===================================================================
--- package/out/validators/modules-validators/bitbucket/validateWorkspacePageProperties.js
+++ package/out/validators/modules-validators/bitbucket/validateWorkspacePageProperties.js
@@ -0,0 +1,51 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.validateWorkspacePageProperties = void 0;
+const text_1 = require("../../../text");
+const types_1 = require("../../../types");
+const utils_1 = require("../../../utils");
+const constants_1 = require("../constants");
+const BITBUCKET_MODULE_TYPES = Object.values(types_1.AllModuleTypes).filter((moduleType) => moduleType.startsWith('bitbucket:'));
+const hasProperty = (module, property) => {
+ return typeof module === 'object' && module !== null && Object.prototype.hasOwnProperty.call(module, property);
+};
+const validateSingleAllowedProperty = (modules, moduleType, property, yamlContentByLine) => {
+ const modulesWithPropertySetToTrue = (modules[moduleType] || []).filter((module) => module[property]);
+ if (modulesWithPropertySetToTrue.length <= 1) {
+ return [];
+ }
+ const moduleKeys = modulesWithPropertySetToTrue.map((module) => module.key);
+ return modulesWithPropertySetToTrue.map((module) => {
+ return {
+ message: text_1.errors.modules.bitbucket.singleEntryOfModuleWithProperty(moduleType, property, moduleKeys),
+ reference: text_1.References.Modules,
+ level: 'error',
+ ...(0, utils_1.findPosition)(module.key, yamlContentByLine)
+ };
+ });
+};
+const validatePropertyNotAllowedForModules = (modules, property, allowedModuleType, yamlContentByLine) => {
+ const validationErrors = [];
+ BITBUCKET_MODULE_TYPES.filter((moduleType) => moduleType !== allowedModuleType).forEach((moduleType) => {
+ (modules[moduleType] || [])
+ .filter((module) => hasProperty(module, property))
+ .forEach((module) => {
+ validationErrors.push({
+ message: text_1.errors.modules.bitbucket.propertyOnlyAllowedForModule(property, moduleType, allowedModuleType),
+ reference: text_1.References.Modules,
+ level: 'error',
+ ...(0, utils_1.findPosition)(module.key, yamlContentByLine)
+ });
+ });
+ });
+ return validationErrors;
+};
+const validateWorkspacePageProperties = (modules, yamlContentByLine) => {
+ return [
+ ...validateSingleAllowedProperty(modules, types_1.AllModuleTypes.BitbucketWorkspaceSettingsMenuPage, constants_1.USE_AS_CONFIG, yamlContentByLine),
+ ...validateSingleAllowedProperty(modules, types_1.AllModuleTypes.BitbucketWorkspaceGlobalPage, constants_1.USE_AS_GET_STARTED, yamlContentByLine),
+ ...validatePropertyNotAllowedForModules(modules, constants_1.USE_AS_CONFIG, types_1.AllModuleTypes.BitbucketWorkspaceSettingsMenuPage, yamlContentByLine),
+ ...validatePropertyNotAllowedForModules(modules, constants_1.USE_AS_GET_STARTED, types_1.AllModuleTypes.BitbucketWorkspaceGlobalPage, yamlContentByLine)
+ ];
+};
+exports.validateWorkspacePageProperties = validateWorkspacePageProperties;