npm package diff
Package: @forge/manifest
Versions: 7.6.1-next.1 - 7.7.0-next.2
Added:package/out/validators/modules-validators/jira/validate-custom-field.js
Added:package/out/validators/modules-validators/jira/validate-full-page.js
Added:package/out/validators/modules-validators/jira/validate-trigger.js
Added:package/out/validators/modules-validators/rovo/validate-unreferenced-actions.js
Added:package/out/validators/modules-validators/jira/validate-workflow.js
Added:package/out/validators/modules-validators/jira/validate-custom-field.d.ts.map
Added:package/out/validators/modules-validators/jira/validate-full-page.d.ts.map
Added:package/out/validators/modules-validators/jira/validate-trigger.d.ts.map
Added:package/out/validators/modules-validators/rovo/validate-unreferenced-actions.d.ts.map
Added:package/out/validators/modules-validators/jira/validate-workflow.d.ts.map
Added:package/out/validators/modules-validators/jira/validate-custom-field.d.ts
Added:package/out/validators/modules-validators/jira/validate-full-page.d.ts
Added:package/out/validators/modules-validators/jira/validate-trigger.d.ts
Added:package/out/validators/modules-validators/rovo/validate-unreferenced-actions.d.ts
Added:package/out/validators/modules-validators/jira/validate-workflow.d.ts
Modified:package/out/validators/connect-modules-validator.js
Index: package/out/validators/connect-modules-validator.js
===================================================================
--- package/out/validators/connect-modules-validator.js
+++ package/out/validators/connect-modules-validator.js
@@ -26,26 +26,15 @@
level: 'error',
...(0, utils_1.findPosition)(invalidName, yamlContentByLine, 'connectModules')
});
});
- const modules = connectModuleNames.map((moduleName) => connectModules[moduleName]);
- const moduleKeys = [].concat(...modules).map((item) => item.key);
- const duplicateKeys = [...new Set(moduleKeys.filter((item, index) => moduleKeys.indexOf(item) != index))];
- duplicateKeys.forEach((duplicateKey) => {
- validationErrors.push({
- message: text_1.errors.connectModules.duplicateKeyFound(duplicateKey),
- reference: text_1.References.ConnectModules,
- level: 'error',
- ...(0, utils_1.findPosition)(duplicateKey, yamlContentByLine)
- });
- });
const lifecycleModules = connectModuleNames.filter((m) => m.endsWith(':lifecycle'));
if (lifecycleModules) {
lifecycleModules.forEach((lifecycle) => {
const lifecycleModule = connectModules[lifecycle];
if (Array.isArray(lifecycleModule) && lifecycleModule.length > 1) {
validationErrors.push({
- message: text_1.errors.connectModules.duplicatateLifecycleFound(lifecycle),
+ message: text_1.errors.connectModules.duplicateLifecycleFound(lifecycle),
reference: text_1.References.ConnectModules,
level: 'error',
...(0, utils_1.findPosition)(lifecycle, yamlContentByLine)
});
Modified:package/out/text/errors.js
Index: package/out/text/errors.js
===================================================================
--- package/out/text/errors.js
+++ package/out/text/errors.js
@@ -32,11 +32,9 @@
deprecatedPermission: (element, value) => `There are deprecated scopes '${element}' in the manifest.yml file: '${value.join(', ')}'. You need to update this app to use new scopes and remove the deprecated scopes. Learn more at: https://go.atlassian.com/forge-permissions.`
},
connectModules: {
invalidConnectModule: (module) => `invalid value '${module}' in connectModules`,
- missingConnectModule: () => `document must have at least 1 valid connect module when 'connectModules' is declared`,
- duplicateKeyFound: (key) => `found duplicate connect module key '${key}'`,
- duplicatateLifecycleFound: (module) => `'${module}' should contain only one element`
+ duplicateLifecycleFound: (module) => `'${module}' should contain only one element`
},
modules: {
invalidModule: (module) => `invalid value '${module}' in modules`,
missingModule: () => 'document must have at least 1 module',
@@ -121,9 +119,10 @@
remote: {
missingModuleRemoteStorageInScopeEUD: (key) => `missing storage.inScopeEUD in ${key} module. storage.inScopeEUD is required if storage is present in operations.`
},
rovo: {
- incorrectAgentActionReference: (module, moduleKey) => `${module} references undefined action module with key '${moduleKey}'.`
+ incorrectAgentActionReference: (module, moduleKey) => `${module} references undefined action module with key '${moduleKey}'.`,
+ unreferencedAction: (action) => `Action '${action}' is not referenced by any Rovo agent.`
}
},
resources: {
missingResource: (folder, key) => `missing resource '${folder}' is being referenced by '${key}' in resources`,
@@ -190,9 +189,8 @@
References["Permissions"] = "valid-permissions-required";
References["MissingScopes"] = "permission-scope-required";
References["Modules"] = "valid-module-required";
References["ConnectModules"] = "valid-connect-module-required";
- References["DuplicateModuleKeys"] = "duplicate-module-keys";
References["Resources"] = "valid-resource-required";
References["Providers"] = "valid-provider-required";
References["Deprecated"] = "deprecated-property";
References["App"] = "valid-app-config-required";
Modified:package/out/validators/modules-validators/rovo/index.js
Index: package/out/validators/modules-validators/rovo/index.js
===================================================================
--- package/out/validators/modules-validators/rovo/index.js
+++ package/out/validators/modules-validators/rovo/index.js
@@ -1,10 +1,12 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.validateRovoModules = void 0;
const validate_rovo_agent_actions_1 = require("./validate-rovo-agent-actions");
+const validate_unreferenced_actions_1 = require("./validate-unreferenced-actions");
const validateRovoModules = (modules, yamlContentByLine) => {
const validationErrors = [];
validationErrors.push(...(0, validate_rovo_agent_actions_1.validateRovoAgentActions)(modules, yamlContentByLine));
+ validationErrors.push(...(0, validate_unreferenced_actions_1.validateUnreferencedActions)(modules, yamlContentByLine));
return validationErrors;
};
exports.validateRovoModules = validateRovoModules;
Modified:package/out/validators/modules-validator.js
Index: package/out/validators/modules-validator.js
===================================================================
--- package/out/validators/modules-validator.js
+++ package/out/validators/modules-validator.js
@@ -8,189 +8,34 @@
const path_1 = require("path");
const ui_modifications_1 = require("./modules-validators/jira/ui-modifications");
const confluence_1 = require("./modules-validators/confluence");
const validate_full_admin_page_1 = require("./modules-validators/jira/validate-full-admin-page");
-const validate_subpages_in_module_1 = require("./modules-validators/jira/validate-subpages-in-module");
const remote_1 = require("./modules-validators/remote");
const validateModuleScopes_1 = require("./modules-validators/validateModuleScopes");
const bitbucket_1 = require("./modules-validators/bitbucket");
const rovo_1 = require("./modules-validators/rovo");
+const validate_workflow_1 = require("./modules-validators/jira/validate-workflow");
+const validate_full_page_1 = require("./modules-validators/jira/validate-full-page");
+const validate_custom_field_1 = require("./modules-validators/jira/validate-custom-field");
+const validate_trigger_1 = require("./modules-validators/jira/validate-trigger");
class ModulesValidator {
functionHandlerRegex = /^([a-zA-Z0-9-_]+)\.([a-zA-Z0-9-_]+)$/;
async validate(manifest) {
- if (!manifest || !manifest.typedContent || !manifest.filePath) {
+ if (!manifest?.typedContent || !manifest.filePath) {
return {
success: false,
manifestObject: manifest
};
}
- const validationErrors = [];
- this.connectModuleValidation(manifest, validationErrors);
+ let validationErrors = [...this.connectModuleValidation(manifest)];
if (manifest.typedContent.modules) {
- const { typedContent: { modules, remotes, permissions }, yamlContentByLine, filePath } = manifest;
- const { function: _function, endpoint: _endpoint } = modules;
- this.checkUnsupportedModules(manifest.typedContent.modules, validationErrors, yamlContentByLine);
- _function?.forEach((f) => {
- if (f.key.length > 23) {
- validationErrors.push({
- message: text_1.errors.modules.function.invalidKeyLength(f.key),
- reference: text_1.References.Modules,
- level: 'error',
- ...(0, utils_1.findPosition)(f.key, yamlContentByLine)
- });
- }
- });
- if (Object.keys(modules).filter((moduleKey) => this.isNotFunctionOrEndpoint(moduleKey)).length < 1) {
- validationErrors.push({
- message: text_1.errors.modules.missingModule(),
- reference: text_1.References.Modules,
- level: 'error',
- ...(0, utils_1.findPosition)('app', yamlContentByLine)
- });
- }
- const validModules = Object.keys(modules).filter((moduleKey) => this.isNotFunctionOrEndpoint(moduleKey));
- validModules.forEach((moduleKey) => {
- modules[moduleKey]?.forEach((module) => {
- (0, utils_1.findInvalidFunctionReferences)(module, _function).forEach((functionKey) => {
- validationErrors.push({
- message: text_1.errors.modules.wrongFunctionReference(moduleKey, functionKey),
- reference: text_1.References.Modules,
- level: 'error',
- ...(0, utils_1.findPosition)(moduleKey, yamlContentByLine)
- });
- });
- (0, utils_1.findInvalidEndpointReferences)(module, _endpoint).forEach((endpointKey) => {
- validationErrors.push({
- message: text_1.errors.modules.wrongEndpointReference(moduleKey, endpointKey),
- reference: text_1.References.Modules,
- level: 'error',
- ...(0, utils_1.findPosition)(moduleKey, yamlContentByLine)
- });
- });
- });
- });
- this.endpointValidations(_endpoint, validationErrors, yamlContentByLine, remotes, permissions?.scopes || [], modules);
- const moduleKeys = [];
- Object.keys(modules).forEach((moduleKey) => {
- modules[moduleKey]?.forEach((module) => moduleKeys.push(module.key));
- });
- const duplicateKeys = [...new Set(moduleKeys.filter((item, index) => moduleKeys.indexOf(item) != index))];
- duplicateKeys.forEach((duplicateKey) => {
- validationErrors.push({
- message: text_1.errors.modules.duplicateKeyFound(duplicateKey),
- reference: text_1.References.Modules,
- level: 'error',
- ...(0, utils_1.findPosition)(duplicateKey, yamlContentByLine)
- });
- });
- _function?.forEach((func) => {
- if (!this.functionHandlerRegex.test(func.handler)) {
- validationErrors.push({
- message: text_1.errors.modules.function.handler.invalidRegex(func.handler, this.functionHandlerRegex),
- reference: text_1.References.Modules,
- level: 'error',
- ...(0, utils_1.findPosition)(func.handler, yamlContentByLine)
- });
- }
- else {
- const matches = this.functionHandlerRegex.exec(func.handler);
- const fileName = matches ? matches[1] : undefined;
- const _checkFileExists = (fileName) => {
- return (['tsx', 'jsx', 'ts', 'js'].find((ext) => (0, fs_1.existsSync)((0, path_1.resolve)((0, path_1.dirname)(filePath), 'src', `${fileName}.${ext}`))) !== undefined);
- };
- if (!_checkFileExists(fileName)) {
- validationErrors.push({
- message: text_1.errors.modules.function.handler.fileNotExists(func.handler, fileName),
- reference: text_1.References.Modules,
- level: 'error',
- ...(0, utils_1.findPosition)(func.handler, yamlContentByLine)
- });
- }
- }
- });
- modules[types_1.AllModuleTypes.JiraWorkflowValidator]?.forEach((module) => {
- if (!module.expression && !module.function) {
- validationErrors.push({
- message: text_1.errors.modules.jiraWorkflowValidator.missingProperty(module.key),
- reference: text_1.References.Modules,
- level: 'error',
- ...(0, utils_1.findPosition)(module.key, yamlContentByLine)
- });
- }
- if (module.expression && module.function) {
- validationErrors.push({
- message: text_1.errors.modules.jiraWorkflowValidator.invalidProperty(module.key),
- reference: text_1.References.Modules,
- level: 'error',
- ...(0, utils_1.findPosition)(module.key, yamlContentByLine)
- });
- }
- });
- modules[types_1.AllModuleTypes.JiraWorkflowCondition]?.forEach((module) => {
- if (!(module.expression && module.expression.trim())) {
- validationErrors.push({
- message: text_1.errors.modules.jiraWorkflowCondition.missingExpression(module.key),
- reference: text_1.References.Modules,
- level: 'error',
- ...(0, utils_1.findPosition)(module.key, yamlContentByLine)
- });
- }
- });
- validationErrors.push(...(0, ui_modifications_1.validateUiModificationsModule)(modules, yamlContentByLine));
- validationErrors.push(...(0, validate_full_admin_page_1.validateFullAdminPage)(modules, yamlContentByLine));
- [types_1.AllModuleTypes.JiraProjectPage, types_1.AllModuleTypes.JiraProjectSettingsPage, types_1.AllModuleTypes.JiraGlobalPage].forEach((moduleType) => {
- const moduleArray = modules[moduleType];
- if (moduleArray && moduleArray.length > 1) {
- validationErrors.push({
- message: text_1.errors.modules.singleEntryOfTheModule(moduleType),
- reference: text_1.References.Modules,
- level: 'error',
- ...(0, utils_1.findPosition)(moduleArray[1].key, yamlContentByLine)
- });
- }
- if (moduleArray && moduleArray.length === 1) {
- validationErrors.push(...(0, validate_subpages_in_module_1.validateSubpagesInModule)(modules, moduleType, yamlContentByLine));
- }
- });
- [types_1.AllModuleTypes.JiraCustomField, types_1.AllModuleTypes.JiraCustomFieldType].forEach((moduleType) => {
- modules[moduleType]?.forEach((module) => {
- if (!module || module.type !== 'object' || !module.schema)
- return;
- const getAliases = (properties = {}) => Object.values(properties)
- .map((v) => [v.searchAlias, ...getAliases(v.properties)])
- .reduce((acc, val) => acc.concat(val), [])
- .filter(Boolean);
- const aliases = getAliases(module.schema.properties);
- const duplicates = Array.from(new Set(aliases.filter((item, index) => aliases.indexOf(item) != index)));
- if (duplicates.length) {
- validationErrors.push({
- message: text_1.errors.modules.customFields.searchAlias(duplicates),
- reference: text_1.References.Modules,
- level: 'error',
- ...(0, utils_1.findPosition)(module.key, yamlContentByLine)
- });
- }
- });
- });
- validationErrors.push(...(0, confluence_1.validateConfluenceModules)(modules, yamlContentByLine));
- validationErrors.push(...(0, bitbucket_1.validateBitbucketModules)(modules, yamlContentByLine));
- modules?.trigger?.forEach((module) => {
- if (module.filter) {
- const onlyJiraEvents = module.events.every((e) => e.includes('jira'));
- if (!onlyJiraEvents) {
- validationErrors.push({
- message: text_1.errors.modules.trigger.filteringWorksOnlyWithJiraEvents(),
- reference: text_1.References.Modules,
- level: 'error',
- ...(0, utils_1.findPosition)(module.key, yamlContentByLine)
- });
- }
- }
- });
- validationErrors.push(...(0, remote_1.validateRemoteModules)(modules, yamlContentByLine));
- validationErrors.push(...(0, validateModuleScopes_1.validateModuleScopes)(modules, yamlContentByLine, permissions));
- validationErrors.push(...(0, rovo_1.validateRovoModules)(modules, yamlContentByLine));
+ const { typedContent: { modules, connectModules, remotes, permissions }, yamlContentByLine, filePath } = manifest;
+ validationErrors = validationErrors.concat(this.checkUnsupportedModules(manifest.typedContent.modules, yamlContentByLine), this.functionKeyLength(modules, yamlContentByLine), this.minimumModuleCountValidation(modules, yamlContentByLine), this.functionKeyDefinedValidation(modules, yamlContentByLine), this.endpointValidations(modules, yamlContentByLine, remotes, permissions?.scopes || []), this.duplicateModuleKeyValidation(modules, connectModules || {}, yamlContentByLine), this.functionHandlerValidation(modules, yamlContentByLine, filePath), (0, validate_workflow_1.validateJiraWorkflowValidator)(modules, yamlContentByLine), (0, validate_workflow_1.validateJiraWorkflowCondition)(modules, yamlContentByLine), (0, ui_modifications_1.validateUiModificationsModule)(modules, yamlContentByLine), (0, validate_full_admin_page_1.validateJiraFullAdminPage)(modules, yamlContentByLine), (0, validate_full_page_1.validateJiraFullPage)(modules, yamlContentByLine), (0, validate_custom_field_1.validateJiraCustomField)(modules, yamlContentByLine), (0, confluence_1.validateConfluenceModules)(modules, yamlContentByLine), (0, bitbucket_1.validateBitbucketModules)(modules, yamlContentByLine), (0, validate_trigger_1.validateJiraTriggers)(modules, yamlContentByLine), (0, remote_1.validateRemoteModules)(modules, yamlContentByLine), (0, validateModuleScopes_1.validateModuleScopes)(modules, yamlContentByLine, permissions), (0, rovo_1.validateRovoModules)(modules, yamlContentByLine));
}
+ else {
+ const { typedContent: { connectModules }, yamlContentByLine } = manifest;
+ validationErrors = validationErrors.concat(this.duplicateModuleKeyValidation({}, connectModules || {}, yamlContentByLine));
+ }
return {
success: validationErrors.length === 0,
manifestObject: manifest,
errors: validationErrors
@@ -198,9 +43,36 @@
}
isNotFunctionOrEndpoint(moduleKey) {
return moduleKey !== (0, utils_1.cleanKey)(types_1.AllModuleTypes.CoreFunction) && moduleKey !== (0, utils_1.cleanKey)(types_1.AllModuleTypes.CoreEndpoint);
}
- checkUnsupportedModules(modules, validationErrors, yamlContentByLine) {
+ functionKeyLength(modules, yamlContentByLine) {
+ const validationErrors = [];
+ modules.function?.forEach((f) => {
+ if (f.key.length > 23) {
+ validationErrors.push({
+ message: text_1.errors.modules.function.invalidKeyLength(f.key),
+ reference: text_1.References.Modules,
+ level: 'error',
+ ...(0, utils_1.findPosition)(f.key, yamlContentByLine)
+ });
+ }
+ });
+ return validationErrors;
+ }
+ minimumModuleCountValidation(modules, yamlContentByLine) {
+ const validationErrors = [];
+ if (Object.keys(modules).filter((moduleKey) => this.isNotFunctionOrEndpoint(moduleKey)).length < 1) {
+ validationErrors.push({
+ message: text_1.errors.modules.missingModule(),
+ reference: text_1.References.Modules,
+ level: 'error',
+ ...(0, utils_1.findPosition)('app', yamlContentByLine)
+ });
+ }
+ return validationErrors;
+ }
+ checkUnsupportedModules(modules, yamlContentByLine) {
+ const validationErrors = [];
Object.keys(modules)
.filter((key) => !types_1.SUPPORTED_MODULES.map((key) => (0, utils_1.cleanKey)(key)).includes(key))
.forEach((invalidKey) => {
validationErrors.push({
@@ -209,10 +81,12 @@
level: 'error',
...(0, utils_1.findPosition)(invalidKey, yamlContentByLine)
});
});
+ return validationErrors;
}
- connectModuleValidation(manifest, validationErrors) {
+ connectModuleValidation(manifest) {
+ const validationErrors = [];
if (!manifest.typedContent?.modules && !manifest.typedContent?.connectModules) {
validationErrors.push({
message: text_1.errors.schemaError(undefined, [], text_1.errors.schema.oneOf([['modules'], ['connectModules']])),
reference: text_1.References.SchemaError,
@@ -220,15 +94,43 @@
line: 1,
column: 0
});
}
+ return validationErrors;
}
- endpointValidations(_endpoint, validationErrors, yamlContentByLine, remotes, scopes, modules) {
+ functionKeyDefinedValidation(modules, yamlContentByLine) {
+ const validationErrors = [];
+ const validModules = Object.keys(modules).filter((moduleKey) => this.isNotFunctionOrEndpoint(moduleKey));
+ validModules.forEach((moduleKey) => {
+ modules[moduleKey]?.forEach((module) => {
+ (0, utils_1.findInvalidFunctionReferences)(module, modules.function).forEach((functionKey) => {
+ validationErrors.push({
+ message: text_1.errors.modules.wrongFunctionReference(moduleKey, functionKey),
+ reference: text_1.References.Modules,
+ level: 'error',
+ ...(0, utils_1.findPosition)(moduleKey, yamlContentByLine)
+ });
+ });
+ (0, utils_1.findInvalidEndpointReferences)(module, modules.endpoint).forEach((endpointKey) => {
+ validationErrors.push({
+ message: text_1.errors.modules.wrongEndpointReference(moduleKey, endpointKey),
+ reference: text_1.References.Modules,
+ level: 'error',
+ ...(0, utils_1.findPosition)(moduleKey, yamlContentByLine)
+ });
+ });
+ });
+ });
+ return validationErrors;
+ }
+ endpointValidations(modules, yamlContentByLine, remotes, scopes) {
+ const validationErrors = [];
const SYSTEM_TOKEN_SCOPE = 'read:app-system-token';
const USER_TOKEN_SCOPE = 'read:app-user-token';
const _checkRemoteExists = (remoteKey) => {
return remotes?.find((remote) => remote.key === remoteKey) !== undefined;
};
+ const { endpoint: _endpoint } = modules;
const eventModulesWithEndpoint = modules?.trigger?.filter((trigger) => trigger.endpoint != null) || [];
eventModulesWithEndpoint.forEach((event) => {
const endpointModule = _endpoint?.find((remoteEndpoint) => remoteEndpoint.key === event.endpoint);
if (endpointModule) {
@@ -305,7 +207,58 @@
...(0, utils_1.findPosition)('scopes', yamlContentByLine)
});
}
});
+ return validationErrors;
}
+ duplicateModuleKeyValidation(modules, connectModules, yamlContentByLine) {
+ const validationErrors = [];
+ const moduleKeys = [];
+ [modules, connectModules].forEach((modules) => {
+ Object.values(modules).forEach((moduleList) => {
+ if (Array.isArray(moduleList)) {
+ moduleList.forEach((module) => moduleKeys.push(module.key));
+ }
+ });
+ });
+ const duplicateKeys = [...new Set(moduleKeys.filter((item, index) => moduleKeys.indexOf(item) != index))];
+ duplicateKeys.forEach((duplicateKey) => {
+ validationErrors.push({
+ message: text_1.errors.modules.duplicateKeyFound(duplicateKey),
+ reference: text_1.References.Modules,
+ level: 'error',
+ ...(0, utils_1.findPosition)(duplicateKey, yamlContentByLine)
+ });
+ });
+ return validationErrors;
+ }
+ functionHandlerValidation(modules, yamlContentByLine, filePath) {
+ const validationErrors = [];
+ modules.function?.forEach((func) => {
+ if (!this.functionHandlerRegex.test(func.handler)) {
+ validationErrors.push({
+ message: text_1.errors.modules.function.handler.invalidRegex(func.handler, this.functionHandlerRegex),
+ reference: text_1.References.Modules,
+ level: 'error',
+ ...(0, utils_1.findPosition)(func.handler, yamlContentByLine)
+ });
+ }
+ else {
+ const matches = this.functionHandlerRegex.exec(func.handler);
+ const fileName = matches ? matches[1] : undefined;
+ const _checkFileExists = (fileName) => {
+ return (['tsx', 'jsx', 'ts', 'js'].find((ext) => (0, fs_1.existsSync)((0, path_1.resolve)((0, path_1.dirname)(filePath), 'src', `${fileName}.${ext}`))) !== undefined);
+ };
+ if (!_checkFileExists(fileName)) {
+ validationErrors.push({
+ message: text_1.errors.modules.function.handler.fileNotExists(func.handler, fileName),
+ reference: text_1.References.Modules,
+ level: 'error',
+ ...(0, utils_1.findPosition)(func.handler, yamlContentByLine)
+ });
+ }
+ }
+ });
+ return validationErrors;
+ }
}
exports.ModulesValidator = ModulesValidator;
Modified:package/out/validators/modules-validators/jira/validate-full-admin-page.js
Index: package/out/validators/modules-validators/jira/validate-full-admin-page.js
===================================================================
--- package/out/validators/modules-validators/jira/validate-full-admin-page.js
+++ package/out/validators/modules-validators/jira/validate-full-admin-page.js
@@ -1,7 +1,7 @@
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
-exports.validateFullAdminPage = void 0;
+exports.validateJiraFullAdminPage = void 0;
const types_1 = require("../../../types");
const text_1 = require("../../../text");
const utils_1 = require("../../../utils");
const validate_subpages_in_module_1 = require("./validate-subpages-in-module");
@@ -33,9 +33,9 @@
}
}
return validationErrors;
};
-const validateFullAdminPage = (modules, yamlContentByLine) => {
+const validateJiraFullAdminPage = (modules, yamlContentByLine) => {
const validationErrors = [];
const moduleArray = modules[jiraAdminPageType];
const adminPageModules = moduleArray?.filter((module) => !module?.useAsGetStarted && !module?.useAsConfig);
const getStartedModules = moduleArray?.filter((module) => module?.useAsGetStarted);
@@ -50,5 +50,5 @@
validationErrors.push(...validateSeparateAdminPageModule('config', modules, configModules, text_1.errors.modules.singleEntryOfModuleWithConfigureParam(jiraAdminPageType), yamlContentByLine));
}
return validationErrors;
};
-exports.validateFullAdminPage = validateFullAdminPage;
+exports.validateJiraFullAdminPage = validateJiraFullAdminPage;
Modified:package/out/schema/manifest-schema.json
too-big
Modified:package/package.json
Index: package/package.json
===================================================================
--- package/package.json
+++ package/package.json
@@ -1,7 +1,7 @@
{
"name": "@forge/manifest",
- "version": "7.6.1-next.1",
+ "version": "7.7.0-next.2",
"description": "Definitions and validations of the Forge manifest",
"main": "out/index.js",
"scripts": {
"build": "yarn run compile",
Modified:package/out/validators/connect-modules-validator.d.ts.map
Index: package/out/validators/connect-modules-validator.d.ts.map
===================================================================
--- package/out/validators/connect-modules-validator.d.ts.map
+++ package/out/validators/connect-modules-validator.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"connect-modules-validator.d.ts","sourceRoot":"","sources":["../../src/validators/connect-modules-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AAGxG,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,qBAAa,uBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAEnF,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;CA0ErD"}
\ No newline at end of file
+{"version":3,"file":"connect-modules-validator.d.ts","sourceRoot":"","sources":["../../src/validators/connect-modules-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AAGxG,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,qBAAa,uBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAEnF,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;CA0DrD"}
\ No newline at end of file
Modified:package/out/text/errors.d.ts.map
Index: package/out/text/errors.d.ts.map
===================================================================
--- package/out/text/errors.d.ts.map
+++ package/out/text/errors.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/text/errors.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
+{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/text/errors.ts"],"names":[],"mappings":"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"}
\ No newline at end of file
Modified:package/out/validators/modules-validators/rovo/index.d.ts.map
Index: package/out/validators/modules-validators/rovo/index.d.ts.map
===================================================================
--- package/out/validators/modules-validators/rovo/index.d.ts.map
+++ package/out/validators/modules-validators/rovo/index.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/validators/modules-validators/rovo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGnD,eAAO,MAAM,mBAAmB,YAAa,OAAO,sBAAsB,MAAM,EAAE,KAAG,eAAe,EAMnG,CAAC"}
\ No newline at end of file
+{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/validators/modules-validators/rovo/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAInD,eAAO,MAAM,mBAAmB,YAAa,OAAO,sBAAsB,MAAM,EAAE,KAAG,eAAe,EAOnG,CAAC"}
\ No newline at end of file
Modified:package/out/validators/modules-validator.d.ts.map
Index: package/out/validators/modules-validator.d.ts.map
===================================================================
--- package/out/validators/modules-validator.d.ts.map
+++ package/out/validators/modules-validator.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"modules-validator.d.ts","sourceRoot":"","sources":["../../src/validators/modules-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,wBAAwB,EAIzB,MAAM,UAAU,CAAC;AAGlB,OAAO,EAAE,cAAc,EAAoB,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAY3D,qBAAa,gBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAEzF,OAAO,CAAC,oBAAoB,CAA0C;IAEhE,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAgPpD,OAAO,CAAC,uBAAuB;IAI/B,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,uBAAuB;IAY/B,OAAO,CAAC,mBAAmB;CAsG5B"}
\ No newline at end of file
+{"version":3,"file":"modules-validator.d.ts","sourceRoot":"","sources":["../../src/validators/modules-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,cAAc,EAAE,wBAAwB,EAAsC,MAAM,UAAU,CAAC;AAGxH,OAAO,EAAkB,cAAc,EAAqC,MAAM,oBAAoB,CAAC;AACvG,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAkB3D,qBAAa,gBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IAEzF,OAAO,CAAC,oBAAoB,CAA0C;IAEhE,QAAQ,CACZ,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GACnD,OAAO,CAAC,wBAAwB,CAAC,cAAc,CAAC,CAAC;IAyDpD,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,iBAAiB;IAkBzB,OAAO,CAAC,4BAA4B;IAapC,OAAO,CAAC,uBAAuB;IAe/B,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,4BAA4B;IA0BpC,OAAO,CAAC,mBAAmB;IA2G3B,OAAO,CAAC,4BAA4B;IA2BpC,OAAO,CAAC,yBAAyB;CAkClC"}
\ No newline at end of file
Modified:package/out/validators/modules-validators/jira/validate-full-admin-page.d.ts.map
Index: package/out/validators/modules-validators/jira/validate-full-admin-page.d.ts.map
===================================================================
--- package/out/validators/modules-validators/jira/validate-full-admin-page.d.ts.map
+++ package/out/validators/modules-validators/jira/validate-full-admin-page.d.ts.map
@@ -1,1 +1,1 @@
-{"version":3,"file":"validate-full-admin-page.d.ts","sourceRoot":"","sources":["../../../../src/validators/modules-validators/jira/validate-full-admin-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AA+CnD,eAAO,MAAM,qBAAqB,YAAa,OAAO,sBAAsB,MAAM,EAAE,KAAG,eAAe,EA4CrG,CAAC"}
\ No newline at end of file
+{"version":3,"file":"validate-full-admin-page.d.ts","sourceRoot":"","sources":["../../../../src/validators/modules-validators/jira/validate-full-admin-page.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AA+CnD,eAAO,MAAM,yBAAyB,YAAa,OAAO,sBAAsB,MAAM,EAAE,KAAG,eAAe,EA4CzG,CAAC"}
\ No newline at end of file
Modified:package/CHANGELOG.md
Index: package/CHANGELOG.md
===================================================================
--- package/CHANGELOG.md
+++ package/CHANGELOG.md
@@ -1,6 +1,18 @@
# @forge/manifest
+## 7.7.0-next.2
+
+### Minor Changes
+
+- c113f86: Show warning if action is not referenced by any agent
+- 9a546fd: Lint unique module key across Connect and Forge modules
+
+### Patch Changes
+
+- c6377ba: Update unit test in manifest validator
+- bf0fab6: Update manifest definitions
+
## 7.6.1-next.1
### Patch Changes
Modified:package/out/text/errors.d.ts
Index: package/out/text/errors.d.ts
===================================================================
--- package/out/text/errors.d.ts
+++ package/out/text/errors.d.ts
@@ -19,11 +19,9 @@
deprecatedPermission: (element: string, value: string[]) => string;
};
connectModules: {
invalidConnectModule: (module: string) => string;
- missingConnectModule: () => string;
- duplicateKeyFound: (key: string) => string;
- duplicatateLifecycleFound: (module: string) => string;
+ duplicateLifecycleFound: (module: string) => string;
};
modules: {
invalidModule: (module: string) => string;
missingModule: () => string;
@@ -109,8 +107,9 @@
missingModuleRemoteStorageInScopeEUD: (key: string) => string;
};
rovo: {
incorrectAgentActionReference: (module: string, moduleKey: string) => string;
+ unreferencedAction: (action: string) => string;
};
};
resources: {
missingResource: (folder: string, key: string) => string;
@@ -176,9 +175,8 @@
Permissions = "valid-permissions-required",
MissingScopes = "permission-scope-required",
Modules = "valid-module-required",
ConnectModules = "valid-connect-module-required",
- DuplicateModuleKeys = "duplicate-module-keys",
Resources = "valid-resource-required",
Providers = "valid-provider-required",
Deprecated = "deprecated-property",
App = "valid-app-config-required",
Modified:package/out/schema/manifest.d.ts
too-big
Modified:package/out/validators/modules-validator.d.ts
Index: package/out/validators/modules-validator.d.ts
===================================================================
--- package/out/validators/modules-validator.d.ts
+++ package/out/validators/modules-validator.d.ts
@@ -4,9 +4,14 @@
export declare class ModulesValidator implements ValidatorInterface<ManifestObject<ManifestSchema> | undefined, ManifestSchema> {
private functionHandlerRegex;
validate(manifest: ManifestObject<ManifestSchema> | undefined): Promise<ManifestValidationResult<ManifestSchema>>;
private isNotFunctionOrEndpoint;
+ private functionKeyLength;
+ private minimumModuleCountValidation;
private checkUnsupportedModules;
private connectModuleValidation;
+ private functionKeyDefinedValidation;
private endpointValidations;
+ private duplicateModuleKeyValidation;
+ private functionHandlerValidation;
}
//# sourceMappingURL=modules-validator.d.ts.map
\ No newline at end of file
Modified:package/out/validators/modules-validators/jira/validate-full-admin-page.d.ts
Index: package/out/validators/modules-validators/jira/validate-full-admin-page.d.ts
===================================================================
--- package/out/validators/modules-validators/jira/validate-full-admin-page.d.ts
+++ package/out/validators/modules-validators/jira/validate-full-admin-page.d.ts
@@ -1,4 +1,4 @@
import { ValidationError } from '../../../types';
import { Modules } from '../../../schema/manifest';
-export declare const validateFullAdminPage: (modules: Modules, yamlContentByLine?: string[]) => ValidationError[];
+export declare const validateJiraFullAdminPage: (modules: Modules, yamlContentByLine?: string[]) => ValidationError[];
//# sourceMappingURL=validate-full-admin-page.d.ts.map
\ No newline at end of file