@forge/manifest
13.7.0-next.013.7.0-next.1
out/validators/modules-validators/dashboards/validate-dashboard-modules.js+
out/validators/modules-validators/dashboards/validate-dashboard-modules.jsNew file+55
Index: package/out/validators/modules-validators/dashboards/validate-dashboard-modules.js
===================================================================
--- package/out/validators/modules-validators/dashboards/validate-dashboard-modules.js
+++ package/out/validators/modules-validators/dashboards/validate-dashboard-modules.js
@@ -0,0 +1,55 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.validateDashboardModules = void 0;
+const text_1 = require("../../../text");
+const types_1 = require("../../../types");
+const utils_1 = require("../../../utils");
+const DASHBOARD_MODULE_ALLOWED_PROPERTIES = [
+ {
+ moduleType: types_1.AllModuleTypes.DashboardsWidget,
+ allowedProperties: new Set([
+ 'key',
+ 'title',
+ 'description',
+ 'thumbnail',
+ 'resource',
+ 'render',
+ 'edit',
+ 'resolver',
+ 'aiContext'
+ ])
+ },
+ {
+ moduleType: types_1.AllModuleTypes.DashboardsFilter,
+ allowedProperties: new Set(['key', 'title', 'icon', 'function', 'resource', 'render', 'edit', 'resolver'])
+ },
+ {
+ moduleType: types_1.AllModuleTypes.DashboardsBackgroundScript,
+ allowedProperties: new Set(['key', 'resource', 'render', 'resolver'])
+ }
+];
+const isRecord = (value) => typeof value === 'object' && value !== null && !Array.isArray(value);
+const buildAdditionalPropertyError = (moduleType, additionalProperty, moduleKey, yamlContentByLine) => ({
+ message: text_1.errors.schemaError(undefined, [moduleType], text_1.errors.schema.additionalProperties(additionalProperty)),
+ reference: text_1.References.Modules,
+ level: 'error',
+ ...(0, utils_1.findPosition)(additionalProperty, yamlContentByLine ?? [], moduleKey)
+});
+const validateAllowedProperties = (moduleType, module, allowedProperties, moduleKey, yamlContentByLine) => Object.keys(module)
+ .filter((property) => !allowedProperties.has(property))
+ .map((property) => buildAdditionalPropertyError(moduleType, property, moduleKey, yamlContentByLine));
+const validateDashboardModules = (modules, yamlContentByLine) => {
+ const validationErrors = [];
+ DASHBOARD_MODULE_ALLOWED_PROPERTIES.forEach(({ moduleType, allowedProperties }) => {
+ const dashboardModules = modules[moduleType];
+ if (!Array.isArray(dashboardModules)) {
+ return;
+ }
+ dashboardModules.filter(isRecord).forEach((module) => {
+ const moduleKey = typeof module.key === 'string' ? module.key : undefined;
+ validationErrors.push(...validateAllowedProperties(moduleType, module, allowedProperties, moduleKey, yamlContentByLine));
+ });
+ });
+ return validationErrors;
+};
+exports.validateDashboardModules = validateDashboardModules;