@forge/manifest 3.5.0-next.0 → 3.5.0-next.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,23 @@
1
1
  # @forge/manifest
2
2
 
3
+ ## 3.5.0-next.3
4
+
5
+ ### Minor Changes
6
+
7
+ - d094c69: [CONFDEV-79785] Add manifest validation for confluence:globalSettings new, optional, useAsConfig property to ensure it's only designated once
8
+
9
+ ## 3.5.0-next.2
10
+
11
+ ### Patch Changes
12
+
13
+ - 02839be: Update manifest definitions
14
+
15
+ ## 3.5.0-next.1
16
+
17
+ ### Patch Changes
18
+
19
+ - a3bfe81: Update manifest definitions
20
+
3
21
  ## 3.5.0-next.0
4
22
 
5
23
  ### Minor Changes
@@ -1111,6 +1111,11 @@
1111
1111
  "displayConditions": {
1112
1112
  "type": "object"
1113
1113
  },
1114
+ "useAsConfig": {
1115
+ "type": "boolean",
1116
+ "default": false,
1117
+ "description": "A flag indicating whether this settings instance will be used as the app's configuration"
1118
+ },
1114
1119
  "key": {
1115
1120
  "$ref": "#/definitions/ModuleKeySchema"
1116
1121
  }
@@ -1158,6 +1163,11 @@
1158
1163
  "displayConditions": {
1159
1164
  "type": "object"
1160
1165
  },
1166
+ "useAsConfig": {
1167
+ "type": "boolean",
1168
+ "default": false,
1169
+ "description": "A flag indicating whether this settings instance will be used as the app's configuration"
1170
+ },
1161
1171
  "key": {
1162
1172
  "$ref": "#/definitions/ModuleKeySchema"
1163
1173
  }
@@ -2294,6 +2304,49 @@
2294
2304
  },
2295
2305
  "minItems": 1
2296
2306
  },
2307
+ "jira:issueAdjustment": {
2308
+ "type": "array",
2309
+ "items": {
2310
+ "type": "object",
2311
+ "properties": {
2312
+ "title": {
2313
+ "type": "string",
2314
+ "minLength": 1,
2315
+ "maxLength": 255
2316
+ },
2317
+ "resolver": {
2318
+ "additionalProperties": false,
2319
+ "type": "object",
2320
+ "properties": {
2321
+ "function": {
2322
+ "type": "string",
2323
+ "minLength": 1,
2324
+ "maxLength": 255,
2325
+ "pattern": "^[a-zA-Z0-9-_]+$"
2326
+ }
2327
+ },
2328
+ "required": [
2329
+ "function"
2330
+ ]
2331
+ },
2332
+ "resource": {
2333
+ "type": "string",
2334
+ "minLength": 1,
2335
+ "maxLength": 23,
2336
+ "pattern": "^[a-zA-Z0-9_\\-]+$"
2337
+ },
2338
+ "key": {
2339
+ "$ref": "#/definitions/ModuleKeySchema"
2340
+ }
2341
+ },
2342
+ "required": [
2343
+ "title",
2344
+ "resource",
2345
+ "key"
2346
+ ]
2347
+ },
2348
+ "minItems": 1
2349
+ },
2297
2350
  "jira:issueGlance": {
2298
2351
  "type": "array",
2299
2352
  "items": {
@@ -663,6 +663,10 @@ export interface Modules {
663
663
  displayConditions?: {
664
664
  [k: string]: unknown;
665
665
  };
666
+ /**
667
+ * A flag indicating whether this settings instance will be used as the app's configuration
668
+ */
669
+ useAsConfig?: boolean;
666
670
  key: ModuleKeySchema;
667
671
  [k: string]: unknown;
668
672
  }
@@ -676,6 +680,10 @@ export interface Modules {
676
680
  displayConditions?: {
677
681
  [k: string]: unknown;
678
682
  };
683
+ /**
684
+ * A flag indicating whether this settings instance will be used as the app's configuration
685
+ */
686
+ useAsConfig?: boolean;
679
687
  key: ModuleKeySchema;
680
688
  [k: string]: unknown;
681
689
  }
@@ -687,6 +695,10 @@ export interface Modules {
687
695
  displayConditions?: {
688
696
  [k: string]: unknown;
689
697
  };
698
+ /**
699
+ * A flag indicating whether this settings instance will be used as the app's configuration
700
+ */
701
+ useAsConfig?: boolean;
690
702
  key: ModuleKeySchema;
691
703
  [k: string]: unknown;
692
704
  }
@@ -700,6 +712,10 @@ export interface Modules {
700
712
  displayConditions?: {
701
713
  [k: string]: unknown;
702
714
  };
715
+ /**
716
+ * A flag indicating whether this settings instance will be used as the app's configuration
717
+ */
718
+ useAsConfig?: boolean;
703
719
  key: ModuleKeySchema;
704
720
  [k: string]: unknown;
705
721
  }
@@ -1321,6 +1337,26 @@ export interface Modules {
1321
1337
  }
1322
1338
  )[]
1323
1339
  ];
1340
+ 'jira:issueAdjustment'?: [
1341
+ {
1342
+ title: string;
1343
+ resolver?: {
1344
+ function: string;
1345
+ };
1346
+ resource: string;
1347
+ key: ModuleKeySchema;
1348
+ [k: string]: unknown;
1349
+ },
1350
+ ...{
1351
+ title: string;
1352
+ resolver?: {
1353
+ function: string;
1354
+ };
1355
+ resource: string;
1356
+ key: ModuleKeySchema;
1357
+ [k: string]: unknown;
1358
+ }[]
1359
+ ];
1324
1360
  'jira:issueGlance'?: [
1325
1361
  (
1326
1362
  | {
@@ -33,6 +33,11 @@ export declare const errors: {
33
33
  propertyNotAllowed: (moduleKey: string, propertyName: string) => string;
34
34
  typeMismatch: (moduleKey: string, propertyName: string, errorDetails: string) => string;
35
35
  };
36
+ confluence: {
37
+ globalSettingsValidator: {
38
+ multipleUseAsConfig: (keys: string[]) => string;
39
+ };
40
+ };
36
41
  jiraWorkflowValidator: {
37
42
  missingProperty: (key: string) => string;
38
43
  invalidProperty: (key: string) => string;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/text/errors.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;8BACS,MAAM,KAAG,MAAM;2BACpB,MAAM;yBAEN,MAAM,GAAG,SAAS,QAAQ,MAAM,EAAE,UAAU,MAAM,GAAG,SAAS,KAAG,MAAM;;uBAO3E,MAAM,EAAE,EAAE,GAAG,SAAS,KAAG,MAAM;4BAI1B,MAAM,EAAE,KAAG,MAAM;mCACV,MAAM,SAAS,MAAM,0CAA4B,MAAM;mDAIvC,MAAM,KAAG,MAAM;;;qCAI7B,MAAM,SAAS,MAAM,KAAG,MAAM;4CAEvB,MAAM,SAAS,MAAM,KAAG,MAAM;wCAElC,MAAM,SAAS,MAAM,EAAE,KAAG,MAAM;;;uCAMjC,MAAM,KAAG,MAAM;oCACpB,MAAM;iCAEP,MAAM,KAAG,MAAM;4CACJ,MAAM,KAAG,MAAM;;;gCAG3B,MAAM,KAAG,MAAM;6BACpB,MAAM;+BACJ,MAAM;iCACF,MAAM,KAAG,MAAM;yCACP,MAAM,eAAe,MAAM,KAAG,MAAM;yCAEpC,MAAM,eAAe,MAAM,KAAG,MAAM;6CAEhC,MAAM,KAAG,MAAM;;yCAGrB,MAAM,KAAG,MAAM;iCAEvB,MAAM,KAAG,MAAM;4CACJ,MAAM,gBAAgB,MAAM,KAAG,MAAM;sCAE3C,MAAM,gBAAgB,MAAM,gBAAgB,MAAM,KAAG,MAAM;;;mCAI9D,MAAM,KAAG,MAAM;mCAEf,MAAM,KAAG,MAAM;;;qCAIb,MAAM,KAAG,MAAM;;;0CAIV,MAAM,KAAG,MAAM;;;mCAItB,MAAM,EAAE,KAAG,MAAM;;;qCAIf,MAAM,KAAG,MAAM;2CAET,MAAM,KAAG,MAAM;;;oCAGtB,MAAM,KAAG,MAAM;;oCAEjB,MAAM,SAAS,MAAM,KAAG,MAAM;qCAI7B,MAAM,YAAY,MAAM,KAAG,MAAM;;;;;mCAQ/B,MAAM,OAAO,MAAM,KAAG,MAAM;iCAE9B,MAAM,OAAO,MAAM,KAAG,MAAM;oCAEzB,MAAM,OAAO,MAAM,KAAG,MAAM;gDAEhB,MAAM,KAAG,MAAM;uCAExB,MAAM,KAAG,MAAM;;;;;;;;kCAQpB,MAAM,UAAU,MAAM,KAAG,MAAM;gCAEjC,MAAM,KAAG,MAAM;2CAEJ,MAAM,eAAe,MAAM,KAAG,MAAM;;;uCAI1C,MAAM;uCAEJ,MAAM,KAAG,MAAM;qCAEnB,MAAM;;CAGpC,CAAC;AAEF,oBAAY,UAAU;IACpB,eAAe,2BAA2B;IAC1C,eAAe,wBAAwB;IACvC,WAAW,4BAA4B;IACvC,WAAW,+BAA+B;IAC1C,aAAa,8BAA8B;IAC3C,OAAO,0BAA0B;IACjC,cAAc,kCAAkC;IAChD,mBAAmB,0BAA0B;IAC7C,SAAS,4BAA4B;IACrC,SAAS,4BAA4B;IACrC,UAAU,wBAAwB;IAClC,GAAG,8BAA8B;CAClC"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/text/errors.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,MAAM;8BACS,MAAM,KAAG,MAAM;2BACpB,MAAM;yBAEN,MAAM,GAAG,SAAS,QAAQ,MAAM,EAAE,UAAU,MAAM,GAAG,SAAS,KAAG,MAAM;;uBAO3E,MAAM,EAAE,EAAE,GAAG,SAAS,KAAG,MAAM;4BAI1B,MAAM,EAAE,KAAG,MAAM;mCACV,MAAM,SAAS,MAAM,0CAA4B,MAAM;mDAIvC,MAAM,KAAG,MAAM;;;qCAI7B,MAAM,SAAS,MAAM,KAAG,MAAM;4CAEvB,MAAM,SAAS,MAAM,KAAG,MAAM;wCAElC,MAAM,SAAS,MAAM,EAAE,KAAG,MAAM;;;uCAMjC,MAAM,KAAG,MAAM;oCACpB,MAAM;iCAEP,MAAM,KAAG,MAAM;4CACJ,MAAM,KAAG,MAAM;;;gCAG3B,MAAM,KAAG,MAAM;6BACpB,MAAM;+BACJ,MAAM;iCACF,MAAM,KAAG,MAAM;yCACP,MAAM,eAAe,MAAM,KAAG,MAAM;yCAEpC,MAAM,eAAe,MAAM,KAAG,MAAM;6CAEhC,MAAM,KAAG,MAAM;;yCAGrB,MAAM,KAAG,MAAM;iCAEvB,MAAM,KAAG,MAAM;4CACJ,MAAM,gBAAgB,MAAM,KAAG,MAAM;sCAE3C,MAAM,gBAAgB,MAAM,gBAAgB,MAAM,KAAG,MAAM;;;;4CAKvD,MAAM,EAAE,KAAG,MAAM;;;;mCAOxB,MAAM,KAAG,MAAM;mCAEf,MAAM,KAAG,MAAM;;;qCAIb,MAAM,KAAG,MAAM;;;0CAIV,MAAM,KAAG,MAAM;;;mCAItB,MAAM,EAAE,KAAG,MAAM;;;qCAIf,MAAM,KAAG,MAAM;2CAET,MAAM,KAAG,MAAM;;;oCAGtB,MAAM,KAAG,MAAM;;oCAEjB,MAAM,SAAS,MAAM,KAAG,MAAM;qCAI7B,MAAM,YAAY,MAAM,KAAG,MAAM;;;;;mCAQ/B,MAAM,OAAO,MAAM,KAAG,MAAM;iCAE9B,MAAM,OAAO,MAAM,KAAG,MAAM;oCAEzB,MAAM,OAAO,MAAM,KAAG,MAAM;gDAEhB,MAAM,KAAG,MAAM;uCAExB,MAAM,KAAG,MAAM;;;;;;;;kCAQpB,MAAM,UAAU,MAAM,KAAG,MAAM;gCAEjC,MAAM,KAAG,MAAM;2CAEJ,MAAM,eAAe,MAAM,KAAG,MAAM;;;uCAI1C,MAAM;uCAEJ,MAAM,KAAG,MAAM;qCAEnB,MAAM;;CAGpC,CAAC;AAEF,oBAAY,UAAU;IACpB,eAAe,2BAA2B;IAC1C,eAAe,wBAAwB;IACvC,WAAW,4BAA4B;IACvC,WAAW,+BAA+B;IAC1C,aAAa,8BAA8B;IAC3C,OAAO,0BAA0B;IACjC,cAAc,kCAAkC;IAChD,mBAAmB,0BAA0B;IAC7C,SAAS,4BAA4B;IACrC,SAAS,4BAA4B;IACrC,UAAU,wBAAwB;IAClC,GAAG,8BAA8B;CAClC"}
@@ -45,6 +45,11 @@ exports.errors = {
45
45
  propertyNotAllowed: (moduleKey, propertyName) => `Display conditions of the "${moduleKey}" module are invalid. "${propertyName}" property is not allowed.`,
46
46
  typeMismatch: (moduleKey, propertyName, errorDetails) => `Display conditions of the "${moduleKey}" module are invalid. "${propertyName}" property ${errorDetails}.`
47
47
  },
48
+ confluence: {
49
+ globalSettingsValidator: {
50
+ multipleUseAsConfig: (keys) => `There can be only 1 ${types_1.AllModuleTypes.ConfluenceGlobalSettings} module which designates "useAsConfig": true. Modules containing designation: ${keys.join(', ')}`
51
+ }
52
+ },
48
53
  jiraWorkflowValidator: {
49
54
  missingProperty: (key) => `${types_1.AllModuleTypes.JiraWorkflowValidator} module '${key}' must have either a function or expression.`,
50
55
  invalidProperty: (key) => `${types_1.AllModuleTypes.JiraWorkflowValidator} module '${key}' can only have either a function or expression`
@@ -1 +1 @@
1
- {"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,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAK3D,qBAAa,gBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IACzF,OAAO,CAAC,oBAAoB,CAA0C;IAEtE,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,wBAAwB,CAAC,cAAc,CAAC;CA0OzG"}
1
+ {"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,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAM3D,qBAAa,gBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IACzF,OAAO,CAAC,oBAAoB,CAA0C;IAEtE,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,wBAAwB,CAAC,cAAc,CAAC;CA6OzG"}
@@ -6,7 +6,8 @@ const utils_1 = require("../utils");
6
6
  const text_1 = require("../text");
7
7
  const fs_1 = require("fs");
8
8
  const path_1 = require("path");
9
- const issue_adjustment_1 = require("./modules-validators/issue-adjustment");
9
+ const issue_adjustment_1 = require("./modules-validators/jira/issue-adjustment");
10
+ const global_settings_1 = require("./modules-validators/confluence/global-settings");
10
11
  class ModulesValidator {
11
12
  constructor() {
12
13
  this.functionHandlerRegex = /^([a-zA-Z0-9-_]+)\.([a-zA-Z0-9-_]+)$/;
@@ -128,6 +129,7 @@ class ModulesValidator {
128
129
  }
129
130
  });
130
131
  });
132
+ validationErrors.push(...global_settings_1.validateGlobalSettingsModule(modules, yamlContentByLine));
131
133
  }
132
134
  return {
133
135
  success: validationErrors.length === 0,
@@ -0,0 +1,5 @@
1
+ import { ValidationError } from '../../../types';
2
+ import { Modules } from '../../../schema/manifest';
3
+ declare const validateGlobalSettingsModule: (modules: Modules, yamlContentByLine?: string[] | undefined) => ValidationError[];
4
+ export { validateGlobalSettingsModule };
5
+ //# sourceMappingURL=global-settings.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"global-settings.d.ts","sourceRoot":"","sources":["../../../../src/validators/modules-validators/confluence/global-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAwBnD,QAAA,MAAM,4BAA4B,YAAa,OAAO,+CAAiC,eAAe,EASrG,CAAC;AAEF,OAAO,EAAE,4BAA4B,EAAE,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.validateGlobalSettingsModule = void 0;
4
+ const types_1 = require("../../../types");
5
+ const text_1 = require("../../../text");
6
+ const utils_1 = require("../../../utils");
7
+ const validateMultipleUseAsConfig = (globalSettingsModules, yamlContentByLine) => {
8
+ const validationErrors = [];
9
+ const globalSettingsModulesUsedAsConfig = globalSettingsModules.filter((module) => module.useAsConfig);
10
+ if (globalSettingsModulesUsedAsConfig.length > 1) {
11
+ const moduleKeys = globalSettingsModulesUsedAsConfig.map((module) => module.key);
12
+ validationErrors.push(Object.assign({ message: text_1.errors.modules.confluence.globalSettingsValidator.multipleUseAsConfig(moduleKeys), reference: text_1.References.Modules, level: 'error' }, utils_1.findPosition(moduleKeys[moduleKeys.length - 1], yamlContentByLine)));
13
+ }
14
+ return validationErrors;
15
+ };
16
+ const validateGlobalSettingsModule = (modules, yamlContentByLine) => {
17
+ const validationErrors = [];
18
+ const globalSettingsModules = modules[types_1.AllModuleTypes.ConfluenceGlobalSettings];
19
+ if (globalSettingsModules) {
20
+ validationErrors.push(...validateMultipleUseAsConfig(globalSettingsModules, yamlContentByLine));
21
+ }
22
+ return validationErrors;
23
+ };
24
+ exports.validateGlobalSettingsModule = validateGlobalSettingsModule;
@@ -0,0 +1,4 @@
1
+ import { ValidationError } from '../../../types';
2
+ import { Modules } from '../../../schema/manifest';
3
+ export declare function validateIssueAdjustmentModule(modules: Modules, yamlContentByLine?: string[]): ValidationError[];
4
+ //# sourceMappingURL=issue-adjustment.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"issue-adjustment.d.ts","sourceRoot":"","sources":["../../../../src/validators/modules-validators/jira/issue-adjustment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGjE,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAEnD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAe/G"}
@@ -1,9 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.validateIssueAdjustmentModule = void 0;
4
- const types_1 = require("../../types");
5
- const text_1 = require("../../text");
6
- const utils_1 = require("../../utils");
4
+ const types_1 = require("../../../types");
5
+ const text_1 = require("../../../text");
6
+ const utils_1 = require("../../../utils");
7
7
  function validateIssueAdjustmentModule(modules, yamlContentByLine) {
8
8
  const validationErrors = [];
9
9
  const moduleType = types_1.AllModuleTypes.JiraIssueAdjustment;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/manifest",
3
- "version": "3.5.0-next.0",
3
+ "version": "3.5.0-next.3",
4
4
  "description": "Definitions and validations of the Forge manifest",
5
5
  "main": "out/index.js",
6
6
  "scripts": {
@@ -1,4 +0,0 @@
1
- import { ValidationError } from '../../types';
2
- import { Modules } from '../../schema/manifest';
3
- export declare function validateIssueAdjustmentModule(modules: Modules, yamlContentByLine?: string[]): ValidationError[];
4
- //# sourceMappingURL=issue-adjustment.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"issue-adjustment.d.ts","sourceRoot":"","sources":["../../../src/validators/modules-validators/issue-adjustment.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,eAAe,EAAE,MAAM,aAAa,CAAC;AAG9D,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAEhD,wBAAgB,6BAA6B,CAAC,OAAO,EAAE,OAAO,EAAE,iBAAiB,CAAC,EAAE,MAAM,EAAE,GAAG,eAAe,EAAE,CAe/G"}