@forge/manifest 12.5.0-next.3 → 12.5.0-next.5

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,17 @@
1
1
  # @forge/manifest
2
2
 
3
+ ## 12.5.0-next.5
4
+
5
+ ### Minor Changes
6
+
7
+ - 47a8b98: Added new `installationTarget` field on `app` in the manifest schema (`site` | `unit`).
8
+
9
+ ## 12.5.0-next.4
10
+
11
+ ### Patch Changes
12
+
13
+ - a02af38: Update manifest definitions
14
+
3
15
  ## 12.5.0-next.3
4
16
 
5
17
  ### Minor Changes
@@ -1 +1 @@
1
- {"version":3,"file":"basic-validation-processor.d.ts","sourceRoot":"","sources":["../../src/processor/basic-validation-processor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,qBAAa,wBAAyB,SAAQ,2BAA2B,CAAC,mBAAmB,CAAC;gBAChF,WAAW,EAAE,WAAW;CAUrC"}
1
+ {"version":3,"file":"basic-validation-processor.d.ts","sourceRoot":"","sources":["../../src/processor/basic-validation-processor.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,2BAA2B,EAAE,MAAM,iCAAiC,CAAC;AAC9E,OAAO,EAAE,mBAAmB,EAAE,MAAM,0BAA0B,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,qBAAa,wBAAyB,SAAQ,2BAA2B,CAAC,mBAAmB,CAAC;gBAChF,WAAW,EAAE,WAAW;CAWrC"}
@@ -15,7 +15,8 @@ class BasicValidationProcessor extends abstract_validation_processor_1.AbstractV
15
15
  new validators_1.SchemaValidator(BASIC_SCHEMA),
16
16
  new validators_1.EntityPropertyValidator(),
17
17
  new jql_function_validator_1.JqlFunctionValidator(),
18
- new runtime_version_validator_1.RuntimeVersionValidator(lintOptions)
18
+ new runtime_version_validator_1.RuntimeVersionValidator(lintOptions),
19
+ new validators_1.CompatibilityValidator()
19
20
  ]);
20
21
  }
21
22
  }
@@ -51,144 +51,58 @@
51
51
  "name"
52
52
  ]
53
53
  },
54
+ "installationTarget": {
55
+ "type": "string",
56
+ "enum": [
57
+ "site",
58
+ "unit"
59
+ ],
60
+ "description": "The target of the app installation."
61
+ },
54
62
  "compatibility": {
55
63
  "type": "object",
56
64
  "title": "compatibility",
57
- "description": "The app compatibility configuration. If not set, app is not a cross-context app.",
58
- "oneOf": [
59
- {
60
- "required": [
61
- "confluence"
62
- ],
63
- "additionalProperties": false,
65
+ "description": "The app compatibility configuration. If not set, app is not a cross-context or global app.",
66
+ "additionalProperties": false,
67
+ "minProperties": 1,
68
+ "properties": {
69
+ "confluence": {
70
+ "type": "object",
64
71
  "properties": {
65
- "confluence": {
66
- "type": "object",
67
- "required": [
68
- "required"
69
- ],
70
- "properties": {
71
- "required": {
72
- "enum": [
73
- true
74
- ]
75
- }
76
- },
77
- "additionalProperties": false
78
- },
79
- "jira": {
80
- "type": "object",
81
- "properties": {
82
- "required": {
83
- "enum": [
84
- false
85
- ]
86
- }
87
- },
88
- "additionalProperties": false
89
- },
90
- "compass": {
91
- "type": "object",
92
- "properties": {
93
- "required": {
94
- "enum": [
95
- false
96
- ]
97
- }
98
- },
99
- "additionalProperties": false
72
+ "required": {
73
+ "enum": [
74
+ true,
75
+ false
76
+ ]
100
77
  }
101
- }
78
+ },
79
+ "additionalProperties": false
102
80
  },
103
- {
104
- "required": [
105
- "jira"
106
- ],
107
- "additionalProperties": false,
81
+ "jira": {
82
+ "type": "object",
108
83
  "properties": {
109
- "confluence": {
110
- "type": "object",
111
- "properties": {
112
- "required": {
113
- "enum": [
114
- false
115
- ]
116
- }
117
- },
118
- "additionalProperties": false
119
- },
120
- "jira": {
121
- "type": "object",
122
- "required": [
123
- "required"
124
- ],
125
- "properties": {
126
- "required": {
127
- "enum": [
128
- true
129
- ]
130
- }
131
- },
132
- "additionalProperties": false
133
- },
134
- "compass": {
135
- "type": "object",
136
- "properties": {
137
- "required": {
138
- "enum": [
139
- false
140
- ]
141
- }
142
- },
143
- "additionalProperties": false
84
+ "required": {
85
+ "enum": [
86
+ true,
87
+ false
88
+ ]
144
89
  }
145
- }
90
+ },
91
+ "additionalProperties": false
146
92
  },
147
- {
148
- "required": [
149
- "compass"
150
- ],
151
- "additionalProperties": false,
93
+ "compass": {
94
+ "type": "object",
152
95
  "properties": {
153
- "confluence": {
154
- "type": "object",
155
- "properties": {
156
- "required": {
157
- "enum": [
158
- false
159
- ]
160
- }
161
- },
162
- "additionalProperties": false
163
- },
164
- "jira": {
165
- "type": "object",
166
- "properties": {
167
- "required": {
168
- "enum": [
169
- false
170
- ]
171
- }
172
- },
173
- "additionalProperties": false
174
- },
175
- "compass": {
176
- "type": "object",
177
- "required": [
178
- "required"
179
- ],
180
- "properties": {
181
- "required": {
182
- "enum": [
183
- true
184
- ]
185
- }
186
- },
187
- "additionalProperties": false
96
+ "required": {
97
+ "enum": [
98
+ true,
99
+ false
100
+ ]
188
101
  }
189
- }
102
+ },
103
+ "additionalProperties": false
190
104
  }
191
- ]
105
+ }
192
106
  },
193
107
  "access": {
194
108
  "additionalProperties": false,
@@ -25,43 +25,6 @@ export type Architecture = 'x86_64' | 'arm64';
25
25
  * The default amount of memory available to all functions at runtime. Increasing the function memory also increases its CPU allocation. You can configure memory between 128 MB and 1024 MB in 1-MB increments. The default value is 512 MB.
26
26
  */
27
27
  export type MemoryMB = number;
28
- /**
29
- * The app compatibility configuration. If not set, app is not a cross-context app.
30
- */
31
- export type Compatibility =
32
- | {
33
- confluence: {
34
- required: true;
35
- };
36
- jira?: {
37
- required?: false;
38
- };
39
- compass?: {
40
- required?: false;
41
- };
42
- }
43
- | {
44
- confluence?: {
45
- required?: false;
46
- };
47
- jira: {
48
- required: true;
49
- };
50
- compass?: {
51
- required?: false;
52
- };
53
- }
54
- | {
55
- confluence?: {
56
- required?: false;
57
- };
58
- jira?: {
59
- required?: false;
60
- };
61
- compass: {
62
- required: true;
63
- };
64
- };
65
28
  /**
66
29
  * Whether to enable user access control for this app. Default value of false.
67
30
  */
@@ -95,6 +58,10 @@ export interface App {
95
58
  description?: Description;
96
59
  id: Id;
97
60
  runtime: Runtime;
61
+ /**
62
+ * The target of the app installation.
63
+ */
64
+ installationTarget?: 'site' | 'unit';
98
65
  compatibility?: Compatibility;
99
66
  access?: Access;
100
67
  licensing?: Licensing;
@@ -212,6 +179,20 @@ export interface Runtime {
212
179
  architecture?: Architecture;
213
180
  memoryMB?: MemoryMB;
214
181
  }
182
+ /**
183
+ * The app compatibility configuration. If not set, app is not a cross-context or global app.
184
+ */
185
+ export interface Compatibility {
186
+ confluence?: {
187
+ required?: true | false;
188
+ };
189
+ jira?: {
190
+ required?: true | false;
191
+ };
192
+ compass?: {
193
+ required?: true | false;
194
+ };
195
+ }
215
196
  /**
216
197
  * Options related to app access control
217
198
  */
@@ -51,144 +51,58 @@
51
51
  "name"
52
52
  ]
53
53
  },
54
+ "installationTarget": {
55
+ "type": "string",
56
+ "enum": [
57
+ "site",
58
+ "unit"
59
+ ],
60
+ "description": "The target of the app installation."
61
+ },
54
62
  "compatibility": {
55
63
  "type": "object",
56
64
  "title": "compatibility",
57
- "description": "The app compatibility configuration. If not set, app is not a cross-context app.",
58
- "oneOf": [
59
- {
60
- "required": [
61
- "confluence"
62
- ],
63
- "additionalProperties": false,
65
+ "description": "The app compatibility configuration. If not set, app is not a cross-context or global app.",
66
+ "additionalProperties": false,
67
+ "minProperties": 1,
68
+ "properties": {
69
+ "confluence": {
70
+ "type": "object",
64
71
  "properties": {
65
- "confluence": {
66
- "type": "object",
67
- "required": [
68
- "required"
69
- ],
70
- "properties": {
71
- "required": {
72
- "enum": [
73
- true
74
- ]
75
- }
76
- },
77
- "additionalProperties": false
78
- },
79
- "jira": {
80
- "type": "object",
81
- "properties": {
82
- "required": {
83
- "enum": [
84
- false
85
- ]
86
- }
87
- },
88
- "additionalProperties": false
89
- },
90
- "compass": {
91
- "type": "object",
92
- "properties": {
93
- "required": {
94
- "enum": [
95
- false
96
- ]
97
- }
98
- },
99
- "additionalProperties": false
72
+ "required": {
73
+ "enum": [
74
+ true,
75
+ false
76
+ ]
100
77
  }
101
- }
78
+ },
79
+ "additionalProperties": false
102
80
  },
103
- {
104
- "required": [
105
- "jira"
106
- ],
107
- "additionalProperties": false,
81
+ "jira": {
82
+ "type": "object",
108
83
  "properties": {
109
- "confluence": {
110
- "type": "object",
111
- "properties": {
112
- "required": {
113
- "enum": [
114
- false
115
- ]
116
- }
117
- },
118
- "additionalProperties": false
119
- },
120
- "jira": {
121
- "type": "object",
122
- "required": [
123
- "required"
124
- ],
125
- "properties": {
126
- "required": {
127
- "enum": [
128
- true
129
- ]
130
- }
131
- },
132
- "additionalProperties": false
133
- },
134
- "compass": {
135
- "type": "object",
136
- "properties": {
137
- "required": {
138
- "enum": [
139
- false
140
- ]
141
- }
142
- },
143
- "additionalProperties": false
84
+ "required": {
85
+ "enum": [
86
+ true,
87
+ false
88
+ ]
144
89
  }
145
- }
90
+ },
91
+ "additionalProperties": false
146
92
  },
147
- {
148
- "required": [
149
- "compass"
150
- ],
151
- "additionalProperties": false,
93
+ "compass": {
94
+ "type": "object",
152
95
  "properties": {
153
- "confluence": {
154
- "type": "object",
155
- "properties": {
156
- "required": {
157
- "enum": [
158
- false
159
- ]
160
- }
161
- },
162
- "additionalProperties": false
163
- },
164
- "jira": {
165
- "type": "object",
166
- "properties": {
167
- "required": {
168
- "enum": [
169
- false
170
- ]
171
- }
172
- },
173
- "additionalProperties": false
174
- },
175
- "compass": {
176
- "type": "object",
177
- "required": [
178
- "required"
179
- ],
180
- "properties": {
181
- "required": {
182
- "enum": [
183
- true
184
- ]
185
- }
186
- },
187
- "additionalProperties": false
96
+ "required": {
97
+ "enum": [
98
+ true,
99
+ false
100
+ ]
188
101
  }
189
- }
102
+ },
103
+ "additionalProperties": false
190
104
  }
191
- ]
105
+ }
192
106
  },
193
107
  "access": {
194
108
  "additionalProperties": false,
@@ -2007,6 +1921,45 @@
2007
1921
  },
2008
1922
  "minItems": 1
2009
1923
  },
1924
+ "connectToForgeMigration": {
1925
+ "type": "array",
1926
+ "items": {
1927
+ "$schema": "http://json-schema.org/draft-07/schema#",
1928
+ "additionalProperties": false,
1929
+ "type": "object",
1930
+ "properties": {
1931
+ "migrationGuideUrl": {
1932
+ "description": "The URL of the migration guide hosted by the app developer.",
1933
+ "type": "string",
1934
+ "pattern": "^https://",
1935
+ "maxLength": 2048
1936
+ },
1937
+ "willMigrateToForgeBeforeEOS": {
1938
+ "description": "Whether the app developer has committed to moving to fully Forge.",
1939
+ "type": "string",
1940
+ "enum": [
1941
+ "YES",
1942
+ "NO",
1943
+ "UNDECIDED"
1944
+ ]
1945
+ },
1946
+ "key": {
1947
+ "$ref": "#/definitions/ModuleKeySchema"
1948
+ }
1949
+ },
1950
+ "required": [
1951
+ "migrationGuideUrl",
1952
+ "willMigrateToForgeBeforeEOS",
1953
+ "key"
1954
+ ],
1955
+ "not": {
1956
+ "required": [
1957
+ "unlicensedAccess"
1958
+ ]
1959
+ }
1960
+ },
1961
+ "minItems": 1
1962
+ },
2010
1963
  "macro": {
2011
1964
  "type": "array",
2012
1965
  "items": {
@@ -9764,7 +9717,12 @@
9764
9717
  "resource",
9765
9718
  "title",
9766
9719
  "key"
9767
- ]
9720
+ ],
9721
+ "not": {
9722
+ "required": [
9723
+ "unlicensedAccess"
9724
+ ]
9725
+ }
9768
9726
  },
9769
9727
  "minItems": 1
9770
9728
  },
@@ -25,43 +25,6 @@ export type Architecture = 'x86_64' | 'arm64';
25
25
  * The default amount of memory available to all functions at runtime. Increasing the function memory also increases its CPU allocation. You can configure memory between 128 MB and 1024 MB in 1-MB increments. The default value is 512 MB.
26
26
  */
27
27
  export type MemoryMB = number;
28
- /**
29
- * The app compatibility configuration. If not set, app is not a cross-context app.
30
- */
31
- export type Compatibility =
32
- | {
33
- confluence: {
34
- required: true;
35
- };
36
- jira?: {
37
- required?: false;
38
- };
39
- compass?: {
40
- required?: false;
41
- };
42
- }
43
- | {
44
- confluence?: {
45
- required?: false;
46
- };
47
- jira: {
48
- required: true;
49
- };
50
- compass?: {
51
- required?: false;
52
- };
53
- }
54
- | {
55
- confluence?: {
56
- required?: false;
57
- };
58
- jira?: {
59
- required?: false;
60
- };
61
- compass: {
62
- required: true;
63
- };
64
- };
65
28
  /**
66
29
  * Whether to enable user access control for this app. Default value of false.
67
30
  */
@@ -840,6 +803,10 @@ export interface App {
840
803
  description?: Description;
841
804
  id: Id;
842
805
  runtime: Runtime;
806
+ /**
807
+ * The target of the app installation.
808
+ */
809
+ installationTarget?: 'site' | 'unit';
843
810
  compatibility?: Compatibility;
844
811
  access?: Access;
845
812
  licensing?: Licensing;
@@ -957,6 +924,20 @@ export interface Runtime {
957
924
  architecture?: Architecture;
958
925
  memoryMB?: MemoryMB;
959
926
  }
927
+ /**
928
+ * The app compatibility configuration. If not set, app is not a cross-context or global app.
929
+ */
930
+ export interface Compatibility {
931
+ confluence?: {
932
+ required?: true | false;
933
+ };
934
+ jira?: {
935
+ required?: true | false;
936
+ };
937
+ compass?: {
938
+ required?: true | false;
939
+ };
940
+ }
960
941
  /**
961
942
  * Options related to app access control
962
943
  */
@@ -12414,6 +12395,30 @@ export interface Modules {
12414
12395
  key: ModuleKeySchema;
12415
12396
  }[]
12416
12397
  ];
12398
+ connectToForgeMigration?: [
12399
+ {
12400
+ /**
12401
+ * The URL of the migration guide hosted by the app developer.
12402
+ */
12403
+ migrationGuideUrl: string;
12404
+ /**
12405
+ * Whether the app developer has committed to moving to fully Forge.
12406
+ */
12407
+ willMigrateToForgeBeforeEOS: 'YES' | 'NO' | 'UNDECIDED';
12408
+ key: ModuleKeySchema;
12409
+ },
12410
+ ...{
12411
+ /**
12412
+ * The URL of the migration guide hosted by the app developer.
12413
+ */
12414
+ migrationGuideUrl: string;
12415
+ /**
12416
+ * Whether the app developer has committed to moving to fully Forge.
12417
+ */
12418
+ willMigrateToForgeBeforeEOS: 'YES' | 'NO' | 'UNDECIDED';
12419
+ key: ModuleKeySchema;
12420
+ }[]
12421
+ ];
12417
12422
  macro?: [
12418
12423
  (
12419
12424
  | {
@@ -227,6 +227,7 @@ export declare const errors: {
227
227
  compatibility: {
228
228
  invalidConfluenceModuleInJira: () => string;
229
229
  invalidJiraModuleInConfluence: () => string;
230
+ oneRequiredContext: () => string;
230
231
  };
231
232
  };
232
233
  translations: {
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/text/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/text/errors.ts"],"names":[],"mappings":"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"}
@@ -240,7 +240,8 @@ exports.errors = {
240
240
  },
241
241
  compatibility: {
242
242
  invalidConfluenceModuleInJira: () => 'Using the module `confluence:fullPage` is invalid when the required product is Jira. Full page modules must match the required product. Use `jira:fullPage` as the module type, or change the required product to Confluence in your manifest.yml compatibility settings.',
243
- invalidJiraModuleInConfluence: () => 'Using the module `jira:fullPage` is invalid when the required product is Confluence. Full page modules must match the required product. Use `confluence:fullPage` as the module type, or change the required product to Jira in your manifest.yml compatibility settings.'
243
+ invalidJiraModuleInConfluence: () => 'Using the module `jira:fullPage` is invalid when the required product is Confluence. Full page modules must match the required product. Use `confluence:fullPage` as the module type, or change the required product to Jira in your manifest.yml compatibility settings.',
244
+ oneRequiredContext: () => 'One context (Jira, Confluence, or Compass) must have `required:true` in app.compatibility.'
244
245
  }
245
246
  },
246
247
  translations: {
@@ -1 +1 @@
1
- {"version":3,"file":"compatibility-validator.d.ts","sourceRoot":"","sources":["../../src/validators/compatibility-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAK3D,qBAAa,sBAAuB,YAAW,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC;IAC/F,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;CA2ClG"}
1
+ {"version":3,"file":"compatibility-validator.d.ts","sourceRoot":"","sources":["../../src/validators/compatibility-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAK3D,qBAAa,sBAAuB,YAAW,kBAAkB,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS,EAAE,GAAG,CAAC;IAC/F,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,GAAG,CAAC,GAAG,SAAS,GAAG,OAAO,CAAC,wBAAwB,CAAC,GAAG,CAAC,CAAC;CA6DlG"}
@@ -13,8 +13,23 @@ class CompatibilityValidator {
13
13
  };
14
14
  }
15
15
  const validationErrors = [];
16
+ const app = manifest.typedContent.app;
16
17
  const modules = manifest.typedContent.modules || {};
17
- const compatibility = manifest.typedContent.app?.compatibility || {};
18
+ const compatibility = app?.compatibility || {};
19
+ const installationTarget = app?.installationTarget;
20
+ const shouldCheckRequiredContext = installationTarget === undefined || installationTarget === 'site';
21
+ if (shouldCheckRequiredContext) {
22
+ const hasCompatibilityKeys = Object.keys(compatibility).length > 0;
23
+ const requiredContexts = Object.keys(compatibility).filter((key) => compatibility[key]?.required === true);
24
+ if (hasCompatibilityKeys && requiredContexts.length !== 1) {
25
+ validationErrors.push({
26
+ message: text_1.errors.app.compatibility.oneRequiredContext(),
27
+ reference: text_2.References.SchemaError,
28
+ level: 'error',
29
+ ...(0, utils_1.findPosition)('compatibility', manifest.yamlContentByLine)
30
+ });
31
+ }
32
+ }
18
33
  const isJiraPrimary = compatibility.jira?.required === true;
19
34
  const isConfluencePrimary = compatibility.confluence?.required === true;
20
35
  const moduleKeys = Object.keys(modules);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/manifest",
3
- "version": "12.5.0-next.3",
3
+ "version": "12.5.0-next.5",
4
4
  "description": "Definitions and validations of the Forge manifest",
5
5
  "main": "out/index.js",
6
6
  "scripts": {