@forge/manifest 2.1.0 → 2.2.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 +39 -0
- package/out/schema/manifest-schema.json +331 -294
- package/out/schema/manifest.d.ts +316 -298
- package/out/scopes/shipyard-scopes.json +191 -0
- package/out/text/errors.d.ts +4 -0
- package/out/text/errors.d.ts.map +1 -1
- package/out/text/errors.js +5 -1
- package/out/types/index.d.ts +0 -1
- package/out/types/index.d.ts.map +1 -1
- package/out/types/index.js +0 -1
- package/out/validators/modules-validator.d.ts.map +1 -1
- package/out/validators/modules-validator.js +16 -0
- package/out/validators/permissions-validator.d.ts.map +1 -1
- package/out/validators/permissions-validator.js +3 -2
- package/out/validators/providers-validator.d.ts +1 -0
- package/out/validators/providers-validator.d.ts.map +1 -1
- package/out/validators/providers-validator.js +16 -0
- package/package.json +1 -1
- package/out/types/scopes-types.d.ts +0 -2
- package/out/types/scopes-types.d.ts.map +0 -1
- package/out/types/scopes-types.js +0 -200
|
@@ -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
|
+
]
|
package/out/text/errors.d.ts
CHANGED
|
@@ -38,6 +38,9 @@ export declare const errors: {
|
|
|
38
38
|
fullPage: {
|
|
39
39
|
children: (moduleType: string) => string;
|
|
40
40
|
};
|
|
41
|
+
customFields: {
|
|
42
|
+
searchAlias: (aliases: string[]) => string;
|
|
43
|
+
};
|
|
41
44
|
function: {
|
|
42
45
|
invalidKeyLength: (key: string) => string;
|
|
43
46
|
handler: {
|
|
@@ -60,6 +63,7 @@ export declare const errors: {
|
|
|
60
63
|
providers: {
|
|
61
64
|
missingRemote: (provider: string, remote: string) => string;
|
|
62
65
|
missingEgress: (remote: string) => string;
|
|
66
|
+
missingProfileFunction: (provider: string, functionKey: string) => string;
|
|
63
67
|
};
|
|
64
68
|
app: {
|
|
65
69
|
missingAppConnectRemote: () => string;
|
package/out/text/errors.d.ts.map
CHANGED
|
@@ -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;;;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;;;
|
|
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"}
|
package/out/text/errors.js
CHANGED
|
@@ -50,6 +50,9 @@ exports.errors = {
|
|
|
50
50
|
fullPage: {
|
|
51
51
|
children: (moduleType) => `Only a single entry of the ${moduleType} module can be defined in the manifest`
|
|
52
52
|
},
|
|
53
|
+
customFields: {
|
|
54
|
+
searchAlias: (aliases) => `Search alias should be always unique per field. Found duplicates: ${aliases.join(', ')}.`
|
|
55
|
+
},
|
|
53
56
|
function: {
|
|
54
57
|
invalidKeyLength: (key) => `The function key exceeds 23 characters: ‘${key}’.`,
|
|
55
58
|
handler: {
|
|
@@ -71,7 +74,8 @@ exports.errors = {
|
|
|
71
74
|
},
|
|
72
75
|
providers: {
|
|
73
76
|
missingRemote: (provider, remote) => `missing remote '${remote}' is being referenced by '${provider}' in providers`,
|
|
74
|
-
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`
|
|
75
79
|
},
|
|
76
80
|
app: {
|
|
77
81
|
missingAppConnectRemote: () => `missing app.connect.remote. app.connect.remote is required if connectModules are present.`,
|
package/out/types/index.d.ts
CHANGED
package/out/types/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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"}
|
package/out/types/index.js
CHANGED
|
@@ -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);
|
|
@@ -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;
|
|
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;CAgMzG"}
|
|
@@ -92,6 +92,22 @@ class ModulesValidator {
|
|
|
92
92
|
validationErrors.push(Object.assign({ message: text_1.errors.modules.fullPage.children(moduleType), reference: text_1.References.Modules, level: 'error' }, utils_1.findPosition(module[1].key, yamlContentByLine)));
|
|
93
93
|
}
|
|
94
94
|
});
|
|
95
|
+
[types_1.AllModuleTypes.JiraCustomField, types_1.AllModuleTypes.JiraCustomFieldType].forEach((moduleType) => {
|
|
96
|
+
var _a;
|
|
97
|
+
(_a = modules[moduleType]) === null || _a === void 0 ? void 0 : _a.forEach((module) => {
|
|
98
|
+
if (!module || module.type !== 'object' || !module.schema)
|
|
99
|
+
return;
|
|
100
|
+
const getAliases = (properties = {}) => Object.values(properties)
|
|
101
|
+
.map((v) => [v.searchAlias, ...getAliases(v.properties)])
|
|
102
|
+
.reduce((acc, val) => acc.concat(val), [])
|
|
103
|
+
.filter(Boolean);
|
|
104
|
+
const aliases = getAliases(module.schema.properties);
|
|
105
|
+
const duplicates = Array.from(new Set(aliases.filter((item, index) => aliases.indexOf(item) != index)));
|
|
106
|
+
if (duplicates.length) {
|
|
107
|
+
validationErrors.push(Object.assign({ message: text_1.errors.modules.customFields.searchAlias(duplicates), reference: text_1.References.Modules, level: 'error' }, utils_1.findPosition(module.key, yamlContentByLine)));
|
|
108
|
+
}
|
|
109
|
+
});
|
|
110
|
+
});
|
|
95
111
|
}
|
|
96
112
|
return {
|
|
97
113
|
success: validationErrors.length === 0,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"permissions-validator.d.ts","sourceRoot":"","sources":["../../src/validators/permissions-validator.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"permissions-validator.d.ts","sourceRoot":"","sources":["../../src/validators/permissions-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AAGrF,OAAO,EAAE,cAAc,EAAU,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAK3D,qBAAa,oBACX,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;CAwHzG"}
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.PermissionsValidator = void 0;
|
|
4
|
-
const
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
5
|
const utils_1 = require("../utils");
|
|
6
6
|
const text_1 = require("../text");
|
|
7
7
|
const egress_types_1 = require("../types/egress-types");
|
|
8
8
|
const url_1 = require("url");
|
|
9
|
+
const shipyard_scopes_json_1 = tslib_1.__importDefault(require("../scopes/shipyard-scopes.json"));
|
|
9
10
|
class PermissionsValidator {
|
|
10
11
|
validate(manifest) {
|
|
11
12
|
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q, _r, _s, _t, _u, _v, _w;
|
|
@@ -53,7 +54,7 @@ class PermissionsValidator {
|
|
|
53
54
|
return false;
|
|
54
55
|
}
|
|
55
56
|
}
|
|
56
|
-
const invalidScope = (_a = manifest.typedContent.permissions.scopes) === null || _a === void 0 ? void 0 : _a.find((key) => !
|
|
57
|
+
const invalidScope = (_a = manifest.typedContent.permissions.scopes) === null || _a === void 0 ? void 0 : _a.find((key) => !shipyard_scopes_json_1.default.includes(key));
|
|
57
58
|
if (invalidScope) {
|
|
58
59
|
addValidationError('scopes', invalidScope, manifest);
|
|
59
60
|
}
|
|
@@ -3,5 +3,6 @@ import { ManifestSchema } from '../schema/manifest';
|
|
|
3
3
|
import { ValidatorInterface } from './validator-interface';
|
|
4
4
|
export declare class ProvidersValidator implements ValidatorInterface<ManifestObject<ManifestSchema> | undefined, ManifestSchema> {
|
|
5
5
|
validate(manifest: ManifestObject<ManifestSchema> | undefined): ManifestValidationResult<ManifestSchema>;
|
|
6
|
+
private isValidProfileRetrieverFunction;
|
|
6
7
|
}
|
|
7
8
|
//# sourceMappingURL=providers-validator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providers-validator.d.ts","sourceRoot":"","sources":["../../src/validators/providers-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AAGrF,OAAO,
|
|
1
|
+
{"version":3,"file":"providers-validator.d.ts","sourceRoot":"","sources":["../../src/validators/providers-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,wBAAwB,EAAmB,MAAM,UAAU,CAAC;AAGrF,OAAO,EAA8C,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAChG,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,qBAAa,kBACX,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;IA+ExG,OAAO,CAAC,+BAA+B;CAiBxC"}
|
|
@@ -46,10 +46,26 @@ class ProvidersValidator {
|
|
|
46
46
|
});
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
|
+
auth === null || auth === void 0 ? void 0 : auth.forEach((provider) => {
|
|
50
|
+
const message = this.isValidProfileRetrieverFunction(provider, manifest);
|
|
51
|
+
if (message) {
|
|
52
|
+
validationErrors.push(message);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
49
55
|
return {
|
|
50
56
|
success: validationErrors.length === 0,
|
|
51
57
|
errors: validationErrors
|
|
52
58
|
};
|
|
53
59
|
}
|
|
60
|
+
isValidProfileRetrieverFunction(provider, manifest) {
|
|
61
|
+
var _a, _b, _c;
|
|
62
|
+
if ('actions' in provider && 'function' in provider.actions.retrieveProfile) {
|
|
63
|
+
const { function: functionKey } = provider.actions.retrieveProfile;
|
|
64
|
+
const hasFunction = (_c = (_b = (_a = manifest.typedContent) === null || _a === void 0 ? void 0 : _a.modules) === null || _b === void 0 ? void 0 : _b.function) === null || _c === void 0 ? void 0 : _c.find((func) => func.key === functionKey);
|
|
65
|
+
if (!hasFunction) {
|
|
66
|
+
return Object.assign({ message: text_1.errors.providers.missingProfileFunction(provider.key, functionKey), reference: text_1.References.Providers, level: 'error' }, utils_1.findPosition(functionKey, manifest.yamlContentByLine));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
54
70
|
}
|
|
55
71
|
exports.ProvidersValidator = ProvidersValidator;
|
package/package.json
CHANGED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"scopes-types.d.ts","sourceRoot":"","sources":["../../src/types/scopes-types.ts"],"names":[],"mappings":"AAyMA,eAAO,MAAM,UAAU,UAStB,CAAC"}
|
|
@@ -1,200 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ALL_SCOPES = void 0;
|
|
4
|
-
const FORGE_SCOPES = ['storage:app'];
|
|
5
|
-
const IDENTITY_SCOPES = ['read:me', 'report:personal-data'];
|
|
6
|
-
const COMPASS_SCOPES = [
|
|
7
|
-
'read:component:compass',
|
|
8
|
-
'write:component:compass',
|
|
9
|
-
'read:scorecard:compass',
|
|
10
|
-
'write:scorecard:compass',
|
|
11
|
-
'read:event:compass',
|
|
12
|
-
'write:event:compass'
|
|
13
|
-
];
|
|
14
|
-
const CONNECT_SCOPES = [
|
|
15
|
-
'read:connect-jira',
|
|
16
|
-
'write:connect-jira',
|
|
17
|
-
'delete:connect-jira',
|
|
18
|
-
'admin:connect-jira',
|
|
19
|
-
'project-admin:connect-jira',
|
|
20
|
-
'act-as-user:connect-jira',
|
|
21
|
-
'access-email-addresses:connect-jira',
|
|
22
|
-
'read:connect-confluence',
|
|
23
|
-
'write:connect-confluence',
|
|
24
|
-
'delete:connect-confluence',
|
|
25
|
-
'admin:connect-confluence',
|
|
26
|
-
'space-admin:connect-confluence',
|
|
27
|
-
'act-as-user:connect-confluence',
|
|
28
|
-
'access-email-addresses:connect-confluence'
|
|
29
|
-
];
|
|
30
|
-
const CONFLUENCE_SCOPES = [
|
|
31
|
-
'readonly:audit-log:confluence',
|
|
32
|
-
'writeonly:audit-log:confluence',
|
|
33
|
-
'readonly:content:confluence',
|
|
34
|
-
'writeonly:content:confluence',
|
|
35
|
-
'delete:content:confluence',
|
|
36
|
-
'readonly:attachment:confluence',
|
|
37
|
-
'writeonly:attachment:confluence',
|
|
38
|
-
'readonly:content.comment:confluence',
|
|
39
|
-
'readonly:content.inlinetask:confluence',
|
|
40
|
-
'writeonly:content.inlinetask:confluence',
|
|
41
|
-
'readonly:content.label:confluence',
|
|
42
|
-
'writeonly:content.label:confluence',
|
|
43
|
-
'readonly:content.permission:confluence',
|
|
44
|
-
'readonly:content.property:confluence',
|
|
45
|
-
'writeonly:content.property:confluence',
|
|
46
|
-
'readonly:content.restriction:confluence',
|
|
47
|
-
'writeonly:content.restriction:confluence',
|
|
48
|
-
'readonly:content.summary:confluence',
|
|
49
|
-
'readonly:content.template:confluence',
|
|
50
|
-
'writeonly:content.template:confluence',
|
|
51
|
-
'readonly:content.watcher:confluence',
|
|
52
|
-
'writeonly:content.watcher:confluence',
|
|
53
|
-
'readonly:group:confluence',
|
|
54
|
-
'writeonly:group:confluence',
|
|
55
|
-
'readonly:relation:confluence',
|
|
56
|
-
'writeonly:relation:confluence',
|
|
57
|
-
'readonly:user:confluence',
|
|
58
|
-
'readonly:configuration:confluence',
|
|
59
|
-
'writeonly:configuration:confluence',
|
|
60
|
-
'readonly:space:confluence',
|
|
61
|
-
'writeonly:space:confluence',
|
|
62
|
-
'delete:space:confluence',
|
|
63
|
-
'readonly:space.permission:confluence',
|
|
64
|
-
'writeonly:space.permission:confluence',
|
|
65
|
-
'readonly:space.property:confluence',
|
|
66
|
-
'writeonly:space.property:confluence',
|
|
67
|
-
'readonly:space.setting:confluence',
|
|
68
|
-
'writeonly:space.setting:confluence',
|
|
69
|
-
'readonly:analytics.content:confluence'
|
|
70
|
-
];
|
|
71
|
-
const JIRA_SCOPES = [
|
|
72
|
-
'readonly:information:jira',
|
|
73
|
-
'readonly:audit-log:jira',
|
|
74
|
-
'readonly:avatar:jira',
|
|
75
|
-
'writeonly:avatar:jira',
|
|
76
|
-
'readonly:dashboard:jira',
|
|
77
|
-
'writeonly:dashboard:jira',
|
|
78
|
-
'readonly:dashboard.property:jira',
|
|
79
|
-
'writeonly:dashboard.property:jira',
|
|
80
|
-
'readonly:filter:jira',
|
|
81
|
-
'writeonly:filter:jira',
|
|
82
|
-
'readonly:user-group:jira',
|
|
83
|
-
'writeonly:user-group:jira',
|
|
84
|
-
'readonly:group:jira',
|
|
85
|
-
'writeonly:group:jira',
|
|
86
|
-
'readonly:instance:jira',
|
|
87
|
-
'readonly:issue:jira',
|
|
88
|
-
'writeonly:issue:jira',
|
|
89
|
-
'send:notification:jira',
|
|
90
|
-
'readonly:issue.workflow:jira',
|
|
91
|
-
'writeonly:issue.workflow:jira',
|
|
92
|
-
'readonly:issue.attachment:jira',
|
|
93
|
-
'writeonly:issue.attachment:jira',
|
|
94
|
-
'readonly:issue.comment:jira',
|
|
95
|
-
'writeonly:issue.comment:jira',
|
|
96
|
-
'readonly:issue.comment.property:jira',
|
|
97
|
-
'writeonly:issue.comment.property:jira',
|
|
98
|
-
'readonly:field:jira',
|
|
99
|
-
'writeonly:field:jira',
|
|
100
|
-
'readonly:field-configuration-scheme:jira',
|
|
101
|
-
'writeonly:field-configuration-scheme:jira',
|
|
102
|
-
'readonly:issue.link:jira',
|
|
103
|
-
'writeonly:issue.link:jira',
|
|
104
|
-
'readonly:issue-link-type:jira',
|
|
105
|
-
'writeonly:issue.link:jira',
|
|
106
|
-
'readonly:issue-link-type:jira',
|
|
107
|
-
'writeonly:issue-link-type:jira',
|
|
108
|
-
'readonly:notification-scheme:jira',
|
|
109
|
-
'readonly:priority:jira',
|
|
110
|
-
'readonly:issue.property:jira',
|
|
111
|
-
'writeonly:issue.property:jira',
|
|
112
|
-
'readonly:issue.remote-link:jira',
|
|
113
|
-
'writeonly:issue.remote-link:jira',
|
|
114
|
-
'readonly:resolution:jira',
|
|
115
|
-
'search:issue:jira',
|
|
116
|
-
'readonly:issue-security-scheme:jira',
|
|
117
|
-
'readonly:issue-type:jira',
|
|
118
|
-
'writeonly:issue-type:jira',
|
|
119
|
-
'readonly:issue-type-scheme:jira',
|
|
120
|
-
'writeonly:issue-type-scheme:jira',
|
|
121
|
-
'readonly:issue-type-screen-scheme:jira',
|
|
122
|
-
'writeonly:issue-type-screen-scheme:jira',
|
|
123
|
-
'readonly:issue-type.property:jira',
|
|
124
|
-
'writeonly:issue-type.property:jira',
|
|
125
|
-
'readonly:issue.watchers:jira',
|
|
126
|
-
'writeonly:issue.watchers:jira',
|
|
127
|
-
'readonly:issue.worklog:jira',
|
|
128
|
-
'writeonly:issue.worklog:jira',
|
|
129
|
-
'readonly:issue.worklog.property:jira',
|
|
130
|
-
'writeonly:issue.worklog.property:jira',
|
|
131
|
-
'search:jira',
|
|
132
|
-
'readonly:configuration:jira',
|
|
133
|
-
'readonly:user:jira',
|
|
134
|
-
'writeonly:user:jira',
|
|
135
|
-
'readonly:label:jira',
|
|
136
|
-
'readonly:permissions:jira',
|
|
137
|
-
'writeonly:permissions:jira',
|
|
138
|
-
'readonly:project:jira',
|
|
139
|
-
'writeonly:project:jira',
|
|
140
|
-
'readonly:project-category:jira',
|
|
141
|
-
'writeonly:project-category:jira',
|
|
142
|
-
'readonly:project.components:jira',
|
|
143
|
-
'writeonly:project.components:jira',
|
|
144
|
-
'readonly:project.permissions:jira',
|
|
145
|
-
'writeonly:project.permissions:jira',
|
|
146
|
-
'readonly:project.property:jira',
|
|
147
|
-
'writeonly:project.property:jira',
|
|
148
|
-
'readonly:role:jira',
|
|
149
|
-
'writeonly:role:jira',
|
|
150
|
-
'readonly:project.version:jira',
|
|
151
|
-
'writeonly:project.version:jira',
|
|
152
|
-
'readonly:screen:jira',
|
|
153
|
-
'writeonly:screen:jira',
|
|
154
|
-
'readonly:issue.time-tracking:jira',
|
|
155
|
-
'writeonly:issue.time-tracking:jira',
|
|
156
|
-
'readonly:user.property:jira',
|
|
157
|
-
'writeonly:user.property:jira',
|
|
158
|
-
'search:user:jira',
|
|
159
|
-
'readonly:webhook:jira',
|
|
160
|
-
'writeonly:webhook:jira',
|
|
161
|
-
'readonly:workflow:jira',
|
|
162
|
-
'writeonly:workflow:jira',
|
|
163
|
-
'readonly:status:jira',
|
|
164
|
-
'readonly:workflow.property:jira',
|
|
165
|
-
'writeonly:workflow.property:jira'
|
|
166
|
-
];
|
|
167
|
-
const DEPRECATED_CONFLUENCE_SCOPES = [
|
|
168
|
-
'manage:confluence-configuration',
|
|
169
|
-
'read:confluence-content.all',
|
|
170
|
-
'read:confluence-content.permission',
|
|
171
|
-
'read:confluence-content.summary',
|
|
172
|
-
'read:confluence-space.summary',
|
|
173
|
-
'read:confluence-props',
|
|
174
|
-
'search:confluence',
|
|
175
|
-
'write:confluence-content',
|
|
176
|
-
'write:confluence-file',
|
|
177
|
-
'write:confluence-props',
|
|
178
|
-
'write:confluence-space',
|
|
179
|
-
'read:confluence-groups',
|
|
180
|
-
'write:confluence-groups',
|
|
181
|
-
'read:confluence-user'
|
|
182
|
-
];
|
|
183
|
-
const DEPRECATED_JIRA_SCOPES = [
|
|
184
|
-
'read:jira-user',
|
|
185
|
-
'read:jira-work',
|
|
186
|
-
'manage:jira-configuration',
|
|
187
|
-
'manage:jira-data-provider',
|
|
188
|
-
'manage:jira-project',
|
|
189
|
-
'write:jira-work'
|
|
190
|
-
];
|
|
191
|
-
exports.ALL_SCOPES = [
|
|
192
|
-
...IDENTITY_SCOPES,
|
|
193
|
-
...FORGE_SCOPES,
|
|
194
|
-
...DEPRECATED_CONFLUENCE_SCOPES,
|
|
195
|
-
...DEPRECATED_JIRA_SCOPES,
|
|
196
|
-
...CONFLUENCE_SCOPES,
|
|
197
|
-
...JIRA_SCOPES,
|
|
198
|
-
...COMPASS_SCOPES,
|
|
199
|
-
...CONNECT_SCOPES
|
|
200
|
-
];
|