@forge/manifest 0.0.0-experimental-e05f7a2 → 0.0.0-experimental-d18f8dd

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.
Files changed (43) hide show
  1. package/CHANGELOG.md +218 -1
  2. package/out/processor/full-validation-processor.d.ts.map +1 -1
  3. package/out/processor/full-validation-processor.js +3 -2
  4. package/out/schema/basic-manifest-schema.json +24 -7
  5. package/out/schema/basic-manifest.d.ts +13 -3
  6. package/out/schema/manifest-schema.json +7292 -932
  7. package/out/schema/manifest.d.ts +50131 -181
  8. package/out/scopes/shipyard-scopes.json +191 -0
  9. package/out/text/errors.d.ts +18 -1
  10. package/out/text/errors.d.ts.map +1 -1
  11. package/out/text/errors.js +18 -1
  12. package/out/types/index.d.ts +0 -1
  13. package/out/types/index.d.ts.map +1 -1
  14. package/out/types/index.js +0 -1
  15. package/out/types/module-types.d.ts +58 -1
  16. package/out/types/module-types.d.ts.map +1 -1
  17. package/out/types/module-types.js +57 -0
  18. package/out/utils/line-finder.d.ts +1 -1
  19. package/out/utils/line-finder.d.ts.map +1 -1
  20. package/out/utils/line-finder.js +25 -7
  21. package/out/utils/module-key-cleaner.d.ts.map +1 -1
  22. package/out/validators/connect-modules-validator.d.ts +7 -0
  23. package/out/validators/connect-modules-validator.d.ts.map +1 -0
  24. package/out/validators/connect-modules-validator.js +48 -0
  25. package/out/validators/connect-remote-validator.d.ts +7 -0
  26. package/out/validators/connect-remote-validator.d.ts.map +1 -0
  27. package/out/validators/connect-remote-validator.js +31 -0
  28. package/out/validators/index.d.ts +3 -0
  29. package/out/validators/index.d.ts.map +1 -1
  30. package/out/validators/index.js +3 -0
  31. package/out/validators/modules-validator.d.ts.map +1 -1
  32. package/out/validators/modules-validator.js +16 -0
  33. package/out/validators/permissions-validator.d.ts.map +1 -1
  34. package/out/validators/permissions-validator.js +3 -2
  35. package/out/validators/providers-validator.d.ts +1 -0
  36. package/out/validators/providers-validator.d.ts.map +1 -1
  37. package/out/validators/providers-validator.js +16 -0
  38. package/out/validators/schema-validator.d.ts.map +1 -1
  39. package/out/validators/schema-validator.js +5 -1
  40. package/package.json +2 -2
  41. package/out/types/scopes-types.d.ts +0 -2
  42. package/out/types/scopes-types.d.ts.map +0 -1
  43. package/out/types/scopes-types.js +0 -52
@@ -0,0 +1,191 @@
1
+ [
2
+ "access-email-addresses:connect-jira",
3
+ "act-as-user:connect-jira",
4
+ "admin:connect-jira",
5
+ "delete:connect-jira",
6
+ "delete:content:confluence",
7
+ "delete:space:confluence",
8
+ "manage:confluence-configuration",
9
+ "manage:jira-configuration",
10
+ "manage:jira-data-provider",
11
+ "manage:jira-project",
12
+ "manage:jira-webhook",
13
+ "project-admin:connect-jira",
14
+ "read:account",
15
+ "read:component:compass",
16
+ "read:confluence-content.all",
17
+ "read:confluence-content.permission",
18
+ "read:confluence-content.summary",
19
+ "read:confluence-groups",
20
+ "read:confluence-props",
21
+ "read:confluence-space.summary",
22
+ "read:confluence-user",
23
+ "read:connect-jira",
24
+ "read:event:compass",
25
+ "read:jira-user",
26
+ "read:jira-work",
27
+ "read:me",
28
+ "read:scorecard:compass",
29
+ "readonly:analytics.content:confluence",
30
+ "readonly:attachment:confluence",
31
+ "readonly:audit-log:confluence",
32
+ "readonly:audit-log:jira",
33
+ "readonly:avatar:jira",
34
+ "readonly:board-scope.admin:jira-software",
35
+ "readonly:board-scope:jira-software",
36
+ "readonly:build:jira-software",
37
+ "readonly:configuration:confluence",
38
+ "readonly:configuration:jira",
39
+ "readonly:content.attachment:confluence",
40
+ "readonly:content.comment:confluence",
41
+ "readonly:content.inlinetask:confluence",
42
+ "readonly:content.label:confluence",
43
+ "readonly:content.permission:confluence",
44
+ "readonly:content.property:confluence",
45
+ "readonly:content.restriction:confluence",
46
+ "readonly:content.summary:confluence",
47
+ "readonly:content.template:confluence",
48
+ "readonly:content.watcher:confluence",
49
+ "readonly:content:confluence",
50
+ "readonly:dashboard.property:jira",
51
+ "readonly:dashboard:jira",
52
+ "readonly:deployment:jira-software",
53
+ "readonly:epic:jira-software",
54
+ "readonly:feature-flag:jira-software",
55
+ "readonly:field-configuration-scheme:jira",
56
+ "readonly:field:jira",
57
+ "readonly:filter:jira",
58
+ "readonly:group:confluence",
59
+ "readonly:group:jira",
60
+ "readonly:information:jira",
61
+ "readonly:instance:jira",
62
+ "readonly:issue-link-type:jira",
63
+ "readonly:issue-security-scheme:jira",
64
+ "readonly:issue-type-scheme:jira",
65
+ "readonly:issue-type-screen-scheme:jira",
66
+ "readonly:issue-type.property:jira",
67
+ "readonly:issue-type:jira",
68
+ "readonly:issue.attachment:jira",
69
+ "readonly:issue.comment.property:jira",
70
+ "readonly:issue.comment:jira",
71
+ "readonly:issue.link:jira",
72
+ "readonly:issue.property:jira",
73
+ "readonly:issue.remote-link:jira",
74
+ "readonly:issue.time-tracking:jira",
75
+ "readonly:issue.watchers:jira",
76
+ "readonly:issue.workflow:jira",
77
+ "readonly:issue.worklog.property:jira",
78
+ "readonly:issue.worklog:jira",
79
+ "readonly:issue:jira",
80
+ "readonly:issue:jira-software",
81
+ "readonly:label:jira",
82
+ "readonly:notification-scheme:jira",
83
+ "readonly:permissions:jira",
84
+ "readonly:priority:jira",
85
+ "readonly:project-category:jira",
86
+ "readonly:project.components:jira",
87
+ "readonly:project.permissions:jira",
88
+ "readonly:project.property:jira",
89
+ "readonly:project.version:jira",
90
+ "readonly:project:jira",
91
+ "readonly:relation:confluence",
92
+ "readonly:remote-link:jira-software",
93
+ "readonly:resolution:jira",
94
+ "readonly:role:jira",
95
+ "readonly:screen:jira",
96
+ "readonly:source-code:jira-software",
97
+ "readonly:space.permission:confluence",
98
+ "readonly:space.property:confluence",
99
+ "readonly:space.setting:confluence",
100
+ "readonly:space:confluence",
101
+ "readonly:sprint:jira-software",
102
+ "readonly:status:jira",
103
+ "readonly:user-group:jira",
104
+ "readonly:user.property:jira",
105
+ "readonly:user:confluence",
106
+ "readonly:user:jira",
107
+ "readonly:webhook:jira",
108
+ "readonly:workflow.property:jira",
109
+ "readonly:workflow:jira",
110
+ "search:confluence",
111
+ "search:issue:jira",
112
+ "search:jira",
113
+ "search:user:jira",
114
+ "send:notification:jira",
115
+ "storage:app",
116
+ "write:component:compass",
117
+ "write:confluence-content",
118
+ "write:confluence-file",
119
+ "write:confluence-groups",
120
+ "write:confluence-props",
121
+ "write:confluence-space",
122
+ "write:connect-jira",
123
+ "write:event:compass",
124
+ "write:jira-work",
125
+ "write:scorecard:compass",
126
+ "writeonly:attachment:confluence",
127
+ "writeonly:audit-log:confluence",
128
+ "writeonly:avatar:jira",
129
+ "writeonly:board-scope.admin:jira-software",
130
+ "writeonly:board-scope:jira-software",
131
+ "writeonly:build:jira-software",
132
+ "writeonly:configuration:confluence",
133
+ "writeonly:content.inlinetask:confluence",
134
+ "writeonly:content.label:confluence",
135
+ "writeonly:content.property:confluence",
136
+ "writeonly:content.restriction:confluence",
137
+ "writeonly:content.template:confluence",
138
+ "writeonly:content.watcher:confluence",
139
+ "writeonly:content:confluence",
140
+ "writeonly:dashboard.property:jira",
141
+ "writeonly:dashboard:jira",
142
+ "writeonly:deployment:jira-software",
143
+ "writeonly:epic:jira-software",
144
+ "writeonly:feature-flag:jira-software",
145
+ "writeonly:field-configuration-scheme:jira",
146
+ "writeonly:field:jira",
147
+ "writeonly:filter:jira",
148
+ "writeonly:group:confluence",
149
+ "writeonly:group:jira",
150
+ "writeonly:issue-link-type:jira",
151
+ "writeonly:issue-type-scheme:jira",
152
+ "writeonly:issue-type-screen-scheme:jira",
153
+ "writeonly:issue-type.property:jira",
154
+ "writeonly:issue-type:jira",
155
+ "writeonly:issue.attachment:jira",
156
+ "writeonly:issue.comment.property:jira",
157
+ "writeonly:issue.comment:jira",
158
+ "writeonly:issue.link:jira",
159
+ "writeonly:issue.property:jira",
160
+ "writeonly:issue.remote-link:jira",
161
+ "writeonly:issue.time-tracking:jira",
162
+ "writeonly:issue.watchers:jira",
163
+ "writeonly:issue.workflow:jira",
164
+ "writeonly:issue.worklog.property:jira",
165
+ "writeonly:issue.worklog:jira",
166
+ "writeonly:issue:jira",
167
+ "writeonly:issue:jira-software",
168
+ "writeonly:permissions:jira",
169
+ "writeonly:project-category:jira",
170
+ "writeonly:project.components:jira",
171
+ "writeonly:project.permissions:jira",
172
+ "writeonly:project.property:jira",
173
+ "writeonly:project.version:jira",
174
+ "writeonly:project:jira",
175
+ "writeonly:relation:confluence",
176
+ "writeonly:remote-link:jira-software",
177
+ "writeonly:role:jira",
178
+ "writeonly:screen:jira",
179
+ "writeonly:source-code:jira-software",
180
+ "writeonly:space.permission:confluence",
181
+ "writeonly:space.property:confluence",
182
+ "writeonly:space.setting:confluence",
183
+ "writeonly:space:confluence",
184
+ "writeonly:sprint:jira-software",
185
+ "writeonly:user-group:jira",
186
+ "writeonly:user.property:jira",
187
+ "writeonly:user:jira",
188
+ "writeonly:webhook:jira",
189
+ "writeonly:workflow.property:jira",
190
+ "writeonly:workflow:jira"
191
+ ]
@@ -12,6 +12,12 @@ export declare const errors: {
12
12
  invalidPermission: (element: string, value: string) => string;
13
13
  missingPermissionFromScope: (scope: string, event: string) => string;
14
14
  };
15
+ connectModules: {
16
+ invalidConnectModule: (module: string) => string;
17
+ missingConnectModule: () => string;
18
+ duplicateKeyFound: (key: string) => string;
19
+ duplicatateLifecycleFound: (module: string) => string;
20
+ };
15
21
  modules: {
16
22
  invalidModule: (module: string) => string;
17
23
  missingModule: () => string;
@@ -32,6 +38,9 @@ export declare const errors: {
32
38
  fullPage: {
33
39
  children: (moduleType: string) => string;
34
40
  };
41
+ customFields: {
42
+ searchAlias: (aliases: string[]) => string;
43
+ };
35
44
  function: {
36
45
  invalidKeyLength: (key: string) => string;
37
46
  handler: {
@@ -54,6 +63,11 @@ export declare const errors: {
54
63
  providers: {
55
64
  missingRemote: (provider: string, remote: string) => string;
56
65
  missingEgress: (remote: string) => string;
66
+ missingProfileFunction: (provider: string, functionKey: string) => string;
67
+ };
68
+ app: {
69
+ missingAppConnectRemote: () => string;
70
+ missingRemoteForConnect: (key: string) => string;
57
71
  };
58
72
  };
59
73
  export declare enum References {
@@ -63,8 +77,11 @@ export declare enum References {
63
77
  Permissions = "valid-permissions-required",
64
78
  MissingScopes = "permission-scope-required",
65
79
  Modules = "valid-module-required",
80
+ ConnectModules = "valid-connect-module-required",
81
+ DuplicateModuleKeys = "duplicate-module-keys",
66
82
  Resources = "valid-resource-required",
67
83
  Providers = "valid-provider-required",
68
- Deprecated = "deprecated-property"
84
+ Deprecated = "deprecated-property",
85
+ App = "valid-app-config-required"
69
86
  }
70
87
  //# sourceMappingURL=errors.d.ts.map
@@ -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;;;gCAI1C,MAAM,KAAG,MAAM;6BACpB,MAAM;+BACJ,MAAM;iCACF,MAAM,KAAG,MAAM;yCACP,MAAM,eAAe,MAAM,KAAG,MAAM;yCAEpC,MAAM,eAAe,MAAM,KAAG,MAAM;;yCAGtC,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;;;mCAIf,MAAM,KAAG,MAAM;;;oCAId,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;uCAEzB,MAAM,KAAG,MAAM;;;;;;;;kCAQpB,MAAM,UAAU,MAAM,KAAG,MAAM;gCAEjC,MAAM,KAAG,MAAM;;CAG1C,CAAC;AAEF,oBAAY,UAAU;IACpB,eAAe,2BAA2B;IAC1C,eAAe,wBAAwB;IACvC,WAAW,4BAA4B;IACvC,WAAW,+BAA+B;IAC1C,aAAa,8BAA8B;IAC3C,OAAO,0BAA0B;IACjC,SAAS,4BAA4B;IACrC,SAAS,4BAA4B;IACrC,UAAU,wBAAwB;CACnC"}
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;;;uCAInC,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;;yCAGtC,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;;;mCAIf,MAAM,KAAG,MAAM;;;mCAIf,MAAM,EAAE,KAAG,MAAM;;;oCAIhB,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;uCAEzB,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;;CAGjD,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"}
@@ -24,6 +24,12 @@ exports.errors = {
24
24
  invalidPermission: (element, value) => `Invalid '${element}' permission in the manifest.yml file - '${value}'. Learn more about permissions at: http://go.atlassian.com/forge-permissions.`,
25
25
  missingPermissionFromScope: (scope, event) => `Trigger event: '${event}' requires '${scope}' scope`
26
26
  },
27
+ connectModules: {
28
+ invalidConnectModule: (module) => `invalid value '${module}' in connectModules`,
29
+ missingConnectModule: () => `document must have at least 1 valid connect module when 'connectModules' is declared`,
30
+ duplicateKeyFound: (key) => `found duplicate connect module key '${key}'`,
31
+ duplicatateLifecycleFound: (module) => `'${module}' should contain only one element`
32
+ },
27
33
  modules: {
28
34
  invalidModule: (module) => `invalid value '${module}' in modules`,
29
35
  missingModule: () => 'document must have at least 1 module',
@@ -44,6 +50,9 @@ exports.errors = {
44
50
  fullPage: {
45
51
  children: (moduleType) => `Only a single entry of the ${moduleType} module can be defined in the manifest`
46
52
  },
53
+ customFields: {
54
+ searchAlias: (aliases) => `Search alias should be always unique per field. Found duplicates: ${aliases.join(', ')}.`
55
+ },
47
56
  function: {
48
57
  invalidKeyLength: (key) => `The function key exceeds 23 characters: ‘${key}’.`,
49
58
  handler: {
@@ -65,7 +74,12 @@ exports.errors = {
65
74
  },
66
75
  providers: {
67
76
  missingRemote: (provider, remote) => `missing remote '${remote}' is being referenced by '${provider}' in providers`,
68
- missingEgress: (remote) => `missing egress permissions for remote '${remote}'. Please add the remote to permissions.fetch`
77
+ missingEgress: (remote) => `missing egress permissions for remote '${remote}'. Please add the remote to permissions.fetch`,
78
+ missingProfileFunction: (provider, functionKey) => `missing function '${functionKey}' is being referenced by '${provider}' in providers`
79
+ },
80
+ app: {
81
+ missingAppConnectRemote: () => `missing app.connect.remote. app.connect.remote is required if connectModules are present.`,
82
+ missingRemoteForConnect: (key) => `no remote found with key '${key}' matching app.connect.remote value.`
69
83
  }
70
84
  };
71
85
  var References;
@@ -76,7 +90,10 @@ var References;
76
90
  References["Permissions"] = "valid-permissions-required";
77
91
  References["MissingScopes"] = "permission-scope-required";
78
92
  References["Modules"] = "valid-module-required";
93
+ References["ConnectModules"] = "valid-connect-module-required";
94
+ References["DuplicateModuleKeys"] = "duplicate-module-keys";
79
95
  References["Resources"] = "valid-resource-required";
80
96
  References["Providers"] = "valid-provider-required";
81
97
  References["Deprecated"] = "deprecated-property";
98
+ References["App"] = "valid-app-config-required";
82
99
  })(References = exports.References || (exports.References = {}));
@@ -1,6 +1,5 @@
1
1
  export * from './errors';
2
2
  export * from './module-types';
3
3
  export * from './constants';
4
- export * from './scopes-types';
5
4
  export * from './validation-types';
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,UAAU,CAAC;AACzB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,aAAa,CAAC;AAC5B,cAAc,oBAAoB,CAAC"}
@@ -4,5 +4,4 @@ const tslib_1 = require("tslib");
4
4
  tslib_1.__exportStar(require("./errors"), exports);
5
5
  tslib_1.__exportStar(require("./module-types"), exports);
6
6
  tslib_1.__exportStar(require("./constants"), exports);
7
- tslib_1.__exportStar(require("./scopes-types"), exports);
8
7
  tslib_1.__exportStar(require("./validation-types"), exports);
@@ -2,6 +2,7 @@ export declare enum AllModuleTypes {
2
2
  CoreFunction = "core:function",
3
3
  CoreTrigger = "core:trigger",
4
4
  CoreWebTrigger = "core:webtrigger",
5
+ CoreConsumer = "core:consumer",
5
6
  CoreScheduledTrigger = "core:scheduledTrigger",
6
7
  XenMacro = "xen:macro",
7
8
  ConfluenceContentAction = "confluence:contentAction",
@@ -19,7 +20,63 @@ export declare enum AllModuleTypes {
19
20
  JiraIssueGlance = "jira:issueGlance",
20
21
  JiraIssuePanel = "jira:issuePanel",
21
22
  JiraAdminPage = "jira:adminPage",
22
- JiraProjectPage = "jira:projectPage"
23
+ JiraProjectPage = "jira:projectPage",
24
+ JiraDashboardGadget = "jira:dashboardGadget",
25
+ CompassAdminPage = "compass:adminPage",
26
+ CompassComponentPage = "compass:componentPage",
27
+ ConnectJiraAdminPages = "connect-jira:adminPages",
28
+ ConnectJiraJiraBackgroundScripts = "connect-jira:jiraBackgroundScripts",
29
+ ConnectJiraGeneralPages = "connect-jira:generalPages",
30
+ ConnectJiraJiraDashboardItems = "connect-jira:jiraDashboardItems",
31
+ ConnectJiraJiraGlobalPermissions = "connect-jira:jiraGlobalPermissions",
32
+ ConnectJiraJiraIssueFields = "connect-jira:jiraIssueFields",
33
+ ConnectJiraJiraIssueGlances = "connect-jira:jiraIssueGlances",
34
+ ConnectJiraJiraProjectAdminTabPanels = "connect-jira:jiraProjectAdminTabPanels",
35
+ ConnectJiraJiraProjectTabPanels = "connect-jira:jiraProjectTabPanels",
36
+ ConnectJiraJiraWorkflowConditions = "connect-jira:jiraWorkflowConditions",
37
+ ConnectJiraJiraWorkflowPostFunctions = "connect-jira:jiraWorkflowPostFunctions",
38
+ ConnectJiraKeyboardShortcuts = "connect-jira:keyboardShortcuts",
39
+ ConnectJiraWebItems = "connect-jira:webItems",
40
+ ConnectJiraLifecycle = "connect-jira:lifecycle",
41
+ ConnectConfluenceAdminPages = "connect-confluence:adminPages",
42
+ ConnectConfluenceBlueprints = "connect-confluence:blueprints",
43
+ ConnectConfluenceConfigurePage = "connect-confluence:configurePage",
44
+ ConnectConfluenceConfluenceContentProperties = "connect-confluence:confluenceContentProperties",
45
+ ConnectConfluenceConfluenceThemes = "connect-confluence:confluenceThemes",
46
+ ConnectConfluenceContentBylineItems = "connect-confluence:contentBylineItems",
47
+ ConnectConfluenceCustomContent = "connect-confluence:customContent",
48
+ ConnectConfluenceDialogs = "connect-confluence:dialogs",
49
+ ConnectConfluenceDynamicContentMacros = "connect-confluence:dynamicContentMacros",
50
+ ConnectConfluenceGeneralPages = "connect-confluence:generalPages",
51
+ ConnectConfluenceKeyboardShortcuts = "connect-confluence:keyboardShortcuts",
52
+ ConnectConfluencePostInstallPage = "connect-confluence:postInstallPage",
53
+ ConnectConfluenceSpaceToolsTabs = "connect-confluence:spaceToolsTabs",
54
+ ConnectConfluenceStaticContentMacros = "connect-confluence:staticContentMacros",
55
+ ConnectConfluenceWebItems = "connect-confluence:webItems",
56
+ ConnectConfluenceWebPanels = "connect-confluence:webPanels",
57
+ ConnectConfluenceWebSections = "connect-confluence:webSections",
58
+ ConnectConfluenceWebhooks = "connect-confluence:webhooks",
59
+ ConnectJiraConfigurePage = "connect-jira:configurePage",
60
+ ConnectJiraDialogs = "connect-jira:dialogs",
61
+ ConnectJiraJiraBuildInfoProvider = "connect-jira:jiraBuildInfoProvider",
62
+ ConnectJiraJiraDeploymentInfoProvider = "connect-jira:jiraDeploymentInfoProvider",
63
+ ConnectJiraJiraDevelopmentTool = "connect-jira:jiraDevelopmentTool",
64
+ ConnectJiraJiraEntityProperties = "connect-jira:jiraEntityProperties",
65
+ ConnectJiraJiraFeatureFlagInfoProvider = "connect-jira:jiraFeatureFlagInfoProvider",
66
+ ConnectJiraJiraIssueContents = "connect-jira:jiraIssueContents",
67
+ ConnectJiraJiraIssueTabPanels = "connect-jira:jiraIssueTabPanels",
68
+ ConnectJiraJiraIssueTypes = "connect-jira:jiraIssueTypes",
69
+ ConnectJiraJiraProjectPages = "connect-jira:jiraProjectPages",
70
+ ConnectJiraJiraProjectPermissions = "connect-jira:jiraProjectPermissions",
71
+ ConnectJiraJiraReports = "connect-jira:jiraReports",
72
+ ConnectJiraJiraSearchRequestViews = "connect-jira:jiraSearchRequestViews",
73
+ ConnectJiraJiraTimeTrackingProviders = "connect-jira:jiraTimeTrackingProviders",
74
+ ConnectJiraJiraWorkflowValidators = "connect-jira:jiraWorkflowValidators",
75
+ ConnectJiraPostInstallPage = "connect-jira:postInstallPage",
76
+ ConnectJiraWebPanels = "connect-jira:webPanels",
77
+ ConnectJiraWebSections = "connect-jira:webSections",
78
+ ConnectJiraWebhooks = "connect-jira:webhooks",
79
+ ConnectConfluenceLifecycle = "connect-confluence:lifecycle"
23
80
  }
24
81
  export declare const SUPPORTED_MODULES: AllModuleTypes[];
25
82
  export declare const SUPPORTED_PRODUCTS_ONLY: string[];
@@ -1 +1 @@
1
- {"version":3,"file":"module-types.d.ts","sourceRoot":"","sources":["../../src/types/module-types.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc;IACxB,YAAY,kBAAkB;IAC9B,WAAW,iBAAiB;IAC5B,cAAc,oBAAoB;IAClC,oBAAoB,0BAA0B;IAC9C,QAAQ,cAAc;IACtB,uBAAuB,6BAA6B;IACpD,2BAA2B,iCAAiC;IAC5D,qBAAqB,2BAA2B;IAChD,wBAAwB,8BAA8B;IACtD,sBAAsB,4BAA4B;IAClD,mBAAmB,yBAAyB;IAC5C,uBAAuB,6BAA6B;IACpD,qBAAqB,2BAA2B;IAChD,eAAe,qBAAqB;IACpC,mBAAmB,yBAAyB;IAC5C,eAAe,qBAAqB;IACpC,iBAAiB,uBAAuB;IACxC,eAAe,qBAAqB;IACpC,cAAc,oBAAoB;IAClC,aAAa,mBAAmB;IAChC,eAAe,qBAAqB;CACrC;AAED,eAAO,MAAM,iBAAiB,kBAAgC,CAAC;AAE/D,eAAO,MAAM,uBAAuB,UAAwE,CAAC"}
1
+ {"version":3,"file":"module-types.d.ts","sourceRoot":"","sources":["../../src/types/module-types.ts"],"names":[],"mappings":"AAAA,oBAAY,cAAc;IACxB,YAAY,kBAAkB;IAC9B,WAAW,iBAAiB;IAC5B,cAAc,oBAAoB;IAClC,YAAY,kBAAkB;IAC9B,oBAAoB,0BAA0B;IAC9C,QAAQ,cAAc;IACtB,uBAAuB,6BAA6B;IACpD,2BAA2B,iCAAiC;IAC5D,qBAAqB,2BAA2B;IAChD,wBAAwB,8BAA8B;IACtD,sBAAsB,4BAA4B;IAClD,mBAAmB,yBAAyB;IAC5C,uBAAuB,6BAA6B;IACpD,qBAAqB,2BAA2B;IAChD,eAAe,qBAAqB;IACpC,mBAAmB,yBAAyB;IAC5C,eAAe,qBAAqB;IACpC,iBAAiB,uBAAuB;IACxC,eAAe,qBAAqB;IACpC,cAAc,oBAAoB;IAClC,aAAa,mBAAmB;IAChC,eAAe,qBAAqB;IACpC,mBAAmB,yBAAyB;IAC5C,gBAAgB,sBAAsB;IACtC,oBAAoB,0BAA0B;IAE9C,qBAAqB,4BAA4B;IACjD,gCAAgC,uCAAuC;IACvE,uBAAuB,8BAA8B;IACrD,6BAA6B,oCAAoC;IACjE,gCAAgC,uCAAuC;IACvE,0BAA0B,iCAAiC;IAC3D,2BAA2B,kCAAkC;IAC7D,oCAAoC,2CAA2C;IAC/E,+BAA+B,sCAAsC;IACrE,iCAAiC,wCAAwC;IACzE,oCAAoC,2CAA2C;IAC/E,4BAA4B,mCAAmC;IAC/D,mBAAmB,0BAA0B;IAC7C,oBAAoB,2BAA2B;IAC/C,2BAA2B,kCAAkC;IAC7D,2BAA2B,kCAAkC;IAC7D,8BAA8B,qCAAqC;IACnE,4CAA4C,mDAAmD;IAC/F,iCAAiC,wCAAwC;IACzE,mCAAmC,0CAA0C;IAC7E,8BAA8B,qCAAqC;IACnE,wBAAwB,+BAA+B;IACvD,qCAAqC,4CAA4C;IACjF,6BAA6B,oCAAoC;IACjE,kCAAkC,yCAAyC;IAC3E,gCAAgC,uCAAuC;IACvE,+BAA+B,sCAAsC;IACrE,oCAAoC,2CAA2C;IAC/E,yBAAyB,gCAAgC;IACzD,0BAA0B,iCAAiC;IAC3D,4BAA4B,mCAAmC;IAC/D,yBAAyB,gCAAgC;IACzD,wBAAwB,+BAA+B;IACvD,kBAAkB,yBAAyB;IAC3C,gCAAgC,uCAAuC;IACvE,qCAAqC,4CAA4C;IACjF,8BAA8B,qCAAqC;IACnE,+BAA+B,sCAAsC;IACrE,sCAAsC,6CAA6C;IACnF,4BAA4B,mCAAmC;IAC/D,6BAA6B,oCAAoC;IACjE,yBAAyB,gCAAgC;IACzD,2BAA2B,kCAAkC;IAC7D,iCAAiC,wCAAwC;IACzE,sBAAsB,6BAA6B;IACnD,iCAAiC,wCAAwC;IACzE,oCAAoC,2CAA2C;IAC/E,iCAAiC,wCAAwC;IACzE,0BAA0B,iCAAiC;IAC3D,oBAAoB,2BAA2B;IAC/C,sBAAsB,6BAA6B;IACnD,mBAAmB,0BAA0B;IAC7C,0BAA0B,iCAAiC;CAC5D;AAED,eAAO,MAAM,iBAAiB,kBAAgC,CAAC;AAE/D,eAAO,MAAM,uBAAuB,UAAwE,CAAC"}
@@ -6,6 +6,7 @@ var AllModuleTypes;
6
6
  AllModuleTypes["CoreFunction"] = "core:function";
7
7
  AllModuleTypes["CoreTrigger"] = "core:trigger";
8
8
  AllModuleTypes["CoreWebTrigger"] = "core:webtrigger";
9
+ AllModuleTypes["CoreConsumer"] = "core:consumer";
9
10
  AllModuleTypes["CoreScheduledTrigger"] = "core:scheduledTrigger";
10
11
  AllModuleTypes["XenMacro"] = "xen:macro";
11
12
  AllModuleTypes["ConfluenceContentAction"] = "confluence:contentAction";
@@ -24,6 +25,62 @@ var AllModuleTypes;
24
25
  AllModuleTypes["JiraIssuePanel"] = "jira:issuePanel";
25
26
  AllModuleTypes["JiraAdminPage"] = "jira:adminPage";
26
27
  AllModuleTypes["JiraProjectPage"] = "jira:projectPage";
28
+ AllModuleTypes["JiraDashboardGadget"] = "jira:dashboardGadget";
29
+ AllModuleTypes["CompassAdminPage"] = "compass:adminPage";
30
+ AllModuleTypes["CompassComponentPage"] = "compass:componentPage";
31
+ AllModuleTypes["ConnectJiraAdminPages"] = "connect-jira:adminPages";
32
+ AllModuleTypes["ConnectJiraJiraBackgroundScripts"] = "connect-jira:jiraBackgroundScripts";
33
+ AllModuleTypes["ConnectJiraGeneralPages"] = "connect-jira:generalPages";
34
+ AllModuleTypes["ConnectJiraJiraDashboardItems"] = "connect-jira:jiraDashboardItems";
35
+ AllModuleTypes["ConnectJiraJiraGlobalPermissions"] = "connect-jira:jiraGlobalPermissions";
36
+ AllModuleTypes["ConnectJiraJiraIssueFields"] = "connect-jira:jiraIssueFields";
37
+ AllModuleTypes["ConnectJiraJiraIssueGlances"] = "connect-jira:jiraIssueGlances";
38
+ AllModuleTypes["ConnectJiraJiraProjectAdminTabPanels"] = "connect-jira:jiraProjectAdminTabPanels";
39
+ AllModuleTypes["ConnectJiraJiraProjectTabPanels"] = "connect-jira:jiraProjectTabPanels";
40
+ AllModuleTypes["ConnectJiraJiraWorkflowConditions"] = "connect-jira:jiraWorkflowConditions";
41
+ AllModuleTypes["ConnectJiraJiraWorkflowPostFunctions"] = "connect-jira:jiraWorkflowPostFunctions";
42
+ AllModuleTypes["ConnectJiraKeyboardShortcuts"] = "connect-jira:keyboardShortcuts";
43
+ AllModuleTypes["ConnectJiraWebItems"] = "connect-jira:webItems";
44
+ AllModuleTypes["ConnectJiraLifecycle"] = "connect-jira:lifecycle";
45
+ AllModuleTypes["ConnectConfluenceAdminPages"] = "connect-confluence:adminPages";
46
+ AllModuleTypes["ConnectConfluenceBlueprints"] = "connect-confluence:blueprints";
47
+ AllModuleTypes["ConnectConfluenceConfigurePage"] = "connect-confluence:configurePage";
48
+ AllModuleTypes["ConnectConfluenceConfluenceContentProperties"] = "connect-confluence:confluenceContentProperties";
49
+ AllModuleTypes["ConnectConfluenceConfluenceThemes"] = "connect-confluence:confluenceThemes";
50
+ AllModuleTypes["ConnectConfluenceContentBylineItems"] = "connect-confluence:contentBylineItems";
51
+ AllModuleTypes["ConnectConfluenceCustomContent"] = "connect-confluence:customContent";
52
+ AllModuleTypes["ConnectConfluenceDialogs"] = "connect-confluence:dialogs";
53
+ AllModuleTypes["ConnectConfluenceDynamicContentMacros"] = "connect-confluence:dynamicContentMacros";
54
+ AllModuleTypes["ConnectConfluenceGeneralPages"] = "connect-confluence:generalPages";
55
+ AllModuleTypes["ConnectConfluenceKeyboardShortcuts"] = "connect-confluence:keyboardShortcuts";
56
+ AllModuleTypes["ConnectConfluencePostInstallPage"] = "connect-confluence:postInstallPage";
57
+ AllModuleTypes["ConnectConfluenceSpaceToolsTabs"] = "connect-confluence:spaceToolsTabs";
58
+ AllModuleTypes["ConnectConfluenceStaticContentMacros"] = "connect-confluence:staticContentMacros";
59
+ AllModuleTypes["ConnectConfluenceWebItems"] = "connect-confluence:webItems";
60
+ AllModuleTypes["ConnectConfluenceWebPanels"] = "connect-confluence:webPanels";
61
+ AllModuleTypes["ConnectConfluenceWebSections"] = "connect-confluence:webSections";
62
+ AllModuleTypes["ConnectConfluenceWebhooks"] = "connect-confluence:webhooks";
63
+ AllModuleTypes["ConnectJiraConfigurePage"] = "connect-jira:configurePage";
64
+ AllModuleTypes["ConnectJiraDialogs"] = "connect-jira:dialogs";
65
+ AllModuleTypes["ConnectJiraJiraBuildInfoProvider"] = "connect-jira:jiraBuildInfoProvider";
66
+ AllModuleTypes["ConnectJiraJiraDeploymentInfoProvider"] = "connect-jira:jiraDeploymentInfoProvider";
67
+ AllModuleTypes["ConnectJiraJiraDevelopmentTool"] = "connect-jira:jiraDevelopmentTool";
68
+ AllModuleTypes["ConnectJiraJiraEntityProperties"] = "connect-jira:jiraEntityProperties";
69
+ AllModuleTypes["ConnectJiraJiraFeatureFlagInfoProvider"] = "connect-jira:jiraFeatureFlagInfoProvider";
70
+ AllModuleTypes["ConnectJiraJiraIssueContents"] = "connect-jira:jiraIssueContents";
71
+ AllModuleTypes["ConnectJiraJiraIssueTabPanels"] = "connect-jira:jiraIssueTabPanels";
72
+ AllModuleTypes["ConnectJiraJiraIssueTypes"] = "connect-jira:jiraIssueTypes";
73
+ AllModuleTypes["ConnectJiraJiraProjectPages"] = "connect-jira:jiraProjectPages";
74
+ AllModuleTypes["ConnectJiraJiraProjectPermissions"] = "connect-jira:jiraProjectPermissions";
75
+ AllModuleTypes["ConnectJiraJiraReports"] = "connect-jira:jiraReports";
76
+ AllModuleTypes["ConnectJiraJiraSearchRequestViews"] = "connect-jira:jiraSearchRequestViews";
77
+ AllModuleTypes["ConnectJiraJiraTimeTrackingProviders"] = "connect-jira:jiraTimeTrackingProviders";
78
+ AllModuleTypes["ConnectJiraJiraWorkflowValidators"] = "connect-jira:jiraWorkflowValidators";
79
+ AllModuleTypes["ConnectJiraPostInstallPage"] = "connect-jira:postInstallPage";
80
+ AllModuleTypes["ConnectJiraWebPanels"] = "connect-jira:webPanels";
81
+ AllModuleTypes["ConnectJiraWebSections"] = "connect-jira:webSections";
82
+ AllModuleTypes["ConnectJiraWebhooks"] = "connect-jira:webhooks";
83
+ AllModuleTypes["ConnectConfluenceLifecycle"] = "connect-confluence:lifecycle";
27
84
  })(AllModuleTypes = exports.AllModuleTypes || (exports.AllModuleTypes = {}));
28
85
  exports.SUPPORTED_MODULES = Object.values(AllModuleTypes);
29
86
  exports.SUPPORTED_PRODUCTS_ONLY = [...new Set(exports.SUPPORTED_MODULES.map((module) => module.split(':')[0]))];
@@ -2,6 +2,6 @@ interface Position {
2
2
  line: number;
3
3
  column: number;
4
4
  }
5
- export declare const findPosition: (substring: string, contentByLine: string[] | undefined) => Position;
5
+ export declare const findPosition: (substring: string, contentByLine: string[] | undefined, section?: string | undefined) => Position;
6
6
  export {};
7
7
  //# sourceMappingURL=line-finder.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"line-finder.d.ts","sourceRoot":"","sources":["../../src/utils/line-finder.ts"],"names":[],"mappings":"AAAA,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,eAAO,MAAM,YAAY,cAAe,MAAM,iBAAiB,MAAM,EAAE,GAAG,SAAS,KAAG,QAwBrF,CAAC"}
1
+ {"version":3,"file":"line-finder.d.ts","sourceRoot":"","sources":["../../src/utils/line-finder.ts"],"names":[],"mappings":"AAAA,UAAU,QAAQ;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB;AAqBD,eAAO,MAAM,YAAY,cAAe,MAAM,iBAAiB,MAAM,EAAE,GAAG,SAAS,mCAAqB,QA6BvG,CAAC"}
@@ -1,17 +1,35 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.findPosition = void 0;
4
- exports.findPosition = (substring, contentByLine) => {
4
+ const defaultPosition = {
5
+ line: 1,
6
+ column: 0
7
+ };
8
+ const locateTargetInLines = (target, lines) => {
9
+ let lineNumber = -1;
10
+ for (let index = 0; index < lines.length; index++) {
11
+ const found = lines[index].indexOf(target);
12
+ if (found !== -1) {
13
+ lineNumber = index + 1;
14
+ break;
15
+ }
16
+ }
17
+ return lineNumber;
18
+ };
19
+ exports.findPosition = (substring, contentByLine, section) => {
5
20
  let lineNumber = 1;
6
21
  let columnNumber = 0;
22
+ let sectionLineNumber = 0;
7
23
  if (!contentByLine) {
8
- return {
9
- line: lineNumber,
10
- column: columnNumber
11
- };
24
+ return defaultPosition;
25
+ }
26
+ if (section) {
27
+ sectionLineNumber = locateTargetInLines(section, contentByLine);
28
+ if (sectionLineNumber == -1) {
29
+ return defaultPosition;
30
+ }
12
31
  }
13
- let index;
14
- for (index = 0; index < contentByLine.length; index++) {
32
+ for (let index = sectionLineNumber; index < contentByLine.length; index++) {
15
33
  const found = contentByLine[index].indexOf(substring);
16
34
  if (found != -1) {
17
35
  lineNumber = index + 1;
@@ -1 +1 @@
1
- {"version":3,"file":"module-key-cleaner.d.ts","sourceRoot":"","sources":["../../src/utils/module-key-cleaner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,eAAO,MAAM,QAAQ,QAAS,MAAM,WAAoC,CAAC;AAEzE,eAAO,MAAM,eAAe,6CACoF,CAAC"}
1
+ {"version":3,"file":"module-key-cleaner.d.ts","sourceRoot":"","sources":["../../src/utils/module-key-cleaner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAG7C,eAAO,MAAM,QAAQ,QAAS,MAAM,KAAG,MAAyC,CAAC;AAEjF,eAAO,MAAM,eAAe,qCAAwB,MAAM,EACsD,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { ManifestObject, ManifestValidationResult } from '../types';
2
+ import { ManifestSchema } from '../schema/manifest';
3
+ import { ValidatorInterface } from './validator-interface';
4
+ export declare class ConnectModulesValidator implements ValidatorInterface<ManifestObject<ManifestSchema> | undefined, ManifestSchema> {
5
+ validate(manifest: ManifestObject<ManifestSchema> | undefined): ManifestValidationResult<ManifestSchema>;
6
+ }
7
+ //# sourceMappingURL=connect-modules-validator.d.ts.map
@@ -0,0 +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;IACzF,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,wBAAwB,CAAC,cAAc,CAAC;CA0EzG"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectModulesValidator = void 0;
4
+ const types_1 = require("../types");
5
+ const utils_1 = require("../utils");
6
+ const text_1 = require("../text");
7
+ class ConnectModulesValidator {
8
+ validate(manifest) {
9
+ if (!manifest || !manifest.typedContent || !manifest.filePath) {
10
+ return {
11
+ success: false,
12
+ manifestObject: manifest
13
+ };
14
+ }
15
+ const validationErrors = [];
16
+ if (manifest.typedContent.connectModules) {
17
+ const { typedContent: { connectModules }, yamlContentByLine } = manifest;
18
+ const connectModuleNames = Object.keys(connectModules);
19
+ const validconnectModuleNames = types_1.SUPPORTED_MODULES.filter((moduleName) => moduleName.startsWith('connect-')).map((name) => name.replace(/connect-/g, ''));
20
+ connectModuleNames
21
+ .filter((name) => !validconnectModuleNames.includes(name))
22
+ .forEach((invalidName) => {
23
+ validationErrors.push(Object.assign({ message: text_1.errors.connectModules.invalidConnectModule(invalidName), reference: text_1.References.ConnectModules, level: 'error' }, utils_1.findPosition(invalidName, yamlContentByLine, 'connectModules')));
24
+ });
25
+ const modules = connectModuleNames.map((moduleName) => connectModules[moduleName]);
26
+ const moduleKeys = [].concat(...modules).map((item) => item.key);
27
+ const duplicateKeys = [...new Set(moduleKeys.filter((item, index) => moduleKeys.indexOf(item) != index))];
28
+ duplicateKeys.forEach((duplicateKey) => {
29
+ validationErrors.push(Object.assign({ message: text_1.errors.connectModules.duplicateKeyFound(duplicateKey), reference: text_1.References.ConnectModules, level: 'error' }, utils_1.findPosition(duplicateKey, yamlContentByLine)));
30
+ });
31
+ const lifecycleModules = connectModuleNames.filter((m) => m.endsWith(':lifecycle'));
32
+ if (lifecycleModules) {
33
+ lifecycleModules.forEach((lifecycle) => {
34
+ const lifecycleModule = connectModules[lifecycle];
35
+ if (Array.isArray(lifecycleModule) && lifecycleModule.length > 1) {
36
+ validationErrors.push(Object.assign({ message: text_1.errors.connectModules.duplicatateLifecycleFound(lifecycle), reference: text_1.References.ConnectModules, level: 'error' }, utils_1.findPosition(lifecycle, yamlContentByLine)));
37
+ }
38
+ });
39
+ }
40
+ }
41
+ return {
42
+ success: validationErrors.length === 0,
43
+ manifestObject: manifest,
44
+ errors: validationErrors
45
+ };
46
+ }
47
+ }
48
+ exports.ConnectModulesValidator = ConnectModulesValidator;
@@ -0,0 +1,7 @@
1
+ import { ValidatorInterface } from './validator-interface';
2
+ import { ManifestObject, ManifestValidationResult } from '../types';
3
+ import { ManifestSchema } from '../schema/manifest';
4
+ export declare class ConnectRemoteValidator implements ValidatorInterface<ManifestObject<ManifestSchema> | undefined, ManifestSchema> {
5
+ validate(manifest: ManifestObject<ManifestSchema> | undefined): ManifestValidationResult<ManifestSchema>;
6
+ }
7
+ //# sourceMappingURL=connect-remote-validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"connect-remote-validator.d.ts","sourceRoot":"","sources":["../../src/validators/connect-remote-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,qBAAa,sBACX,YAAW,kBAAkB,CAAC,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,EAAE,cAAc,CAAC;IACzF,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC,cAAc,CAAC,GAAG,SAAS,GAAG,wBAAwB,CAAC,cAAc,CAAC;CAwCzG"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ConnectRemoteValidator = void 0;
4
+ const text_1 = require("../text");
5
+ const utils_1 = require("../utils");
6
+ class ConnectRemoteValidator {
7
+ validate(manifest) {
8
+ var _a, _b, _c, _d, _e;
9
+ if (!((_a = manifest === null || manifest === void 0 ? void 0 : manifest.typedContent) === null || _a === void 0 ? void 0 : _a.app)) {
10
+ return {
11
+ success: false,
12
+ manifestObject: manifest
13
+ };
14
+ }
15
+ const app = manifest.typedContent.app;
16
+ const validationErrors = [];
17
+ if (manifest.typedContent.connectModules && !((_b = app.connect) === null || _b === void 0 ? void 0 : _b.remote)) {
18
+ validationErrors.push(Object.assign({ message: text_1.errors.app.missingAppConnectRemote(), reference: text_1.References.App, level: 'error' }, utils_1.findPosition('connect', manifest.yamlContentByLine)));
19
+ }
20
+ if (manifest.typedContent.connectModules && ((_c = app === null || app === void 0 ? void 0 : app.connect) === null || _c === void 0 ? void 0 : _c.remote) &&
21
+ !((_d = manifest.typedContent.remotes) === null || _d === void 0 ? void 0 : _d.find((remote) => { var _a; return remote.key === ((_a = app === null || app === void 0 ? void 0 : app.connect) === null || _a === void 0 ? void 0 : _a.remote); }))) {
22
+ validationErrors.push(Object.assign({ message: text_1.errors.app.missingRemoteForConnect(((_e = app === null || app === void 0 ? void 0 : app.connect) === null || _e === void 0 ? void 0 : _e.remote) || 'undefined'), reference: text_1.References.App, level: 'error' }, utils_1.findPosition('connect', manifest.yamlContentByLine)));
23
+ }
24
+ return {
25
+ success: validationErrors.length === 0,
26
+ manifestObject: manifest,
27
+ errors: validationErrors
28
+ };
29
+ }
30
+ }
31
+ exports.ConnectRemoteValidator = ConnectRemoteValidator;