@forge/runtime 5.3.2 → 5.4.0-next.1
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 +15 -0
- package/out/request.d.ts +32 -6
- package/out/request.d.ts.map +1 -1
- package/out/request.js +14 -5
- package/out/sandbox/invocation-request.d.ts +17 -2
- package/out/sandbox/invocation-request.d.ts.map +1 -1
- package/out/sandbox/invocation-request.js +52 -10
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,20 @@
|
|
|
1
1
|
# @forge/runtime
|
|
2
2
|
|
|
3
|
+
## 5.4.0-next.1
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- d36502b: This change extends existing methods on external auth providers. We are now providing account details including: externalAccountId, displayName, avatarUrl, granted scopes.
|
|
8
|
+
Moreover, if end user authenticates multiple accounts, it is possible to select what account to use.
|
|
9
|
+
|
|
10
|
+
## 5.3.3-next.0
|
|
11
|
+
|
|
12
|
+
### Patch Changes
|
|
13
|
+
|
|
14
|
+
- 32fa518: Bumping dependencies via Renovate:
|
|
15
|
+
|
|
16
|
+
- @types/node-fetch
|
|
17
|
+
|
|
3
18
|
## 5.3.2
|
|
4
19
|
|
|
5
20
|
### Patch Changes
|
package/out/request.d.ts
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
import * as t from 'io-ts';
|
|
2
|
+
declare const XisRequestTokenType: t.IntersectionC<[t.TypeC<{
|
|
3
|
+
id: t.StringC;
|
|
4
|
+
service: t.StringC;
|
|
5
|
+
token: t.StringC;
|
|
6
|
+
}>, t.PartialC<{
|
|
7
|
+
externalAccountId: t.StringC;
|
|
8
|
+
displayName: t.StringC;
|
|
9
|
+
avatarUrl: t.UnionC<[t.StringC, t.UndefinedC]>;
|
|
10
|
+
scopes: t.ArrayC<t.StringC>;
|
|
11
|
+
}>]>;
|
|
2
12
|
declare const MetadataType: t.IntersectionC<[t.TypeC<{
|
|
3
13
|
apiAuth: t.TypeC<{
|
|
4
14
|
env: t.StringC;
|
|
@@ -6,11 +16,16 @@ declare const MetadataType: t.IntersectionC<[t.TypeC<{
|
|
|
6
16
|
}>;
|
|
7
17
|
clientId: t.StringC;
|
|
8
18
|
contextAri: t.StringC;
|
|
9
|
-
tokens: t.ArrayC<t.TypeC<{
|
|
19
|
+
tokens: t.ArrayC<t.IntersectionC<[t.TypeC<{
|
|
10
20
|
id: t.StringC;
|
|
11
21
|
service: t.StringC;
|
|
12
22
|
token: t.StringC;
|
|
13
|
-
}
|
|
23
|
+
}>, t.PartialC<{
|
|
24
|
+
externalAccountId: t.StringC;
|
|
25
|
+
displayName: t.StringC;
|
|
26
|
+
avatarUrl: t.UnionC<[t.StringC, t.UndefinedC]>;
|
|
27
|
+
scopes: t.ArrayC<t.StringC>;
|
|
28
|
+
}>]>>;
|
|
14
29
|
appContext: t.TypeC<{
|
|
15
30
|
appId: t.StringC;
|
|
16
31
|
appVersion: t.StringC;
|
|
@@ -60,11 +75,16 @@ export declare const ExternalRequestBodyType: t.IntersectionC<[t.TypeC<{
|
|
|
60
75
|
}>;
|
|
61
76
|
clientId: t.StringC;
|
|
62
77
|
contextAri: t.StringC;
|
|
63
|
-
tokens: t.ArrayC<t.TypeC<{
|
|
78
|
+
tokens: t.ArrayC<t.IntersectionC<[t.TypeC<{
|
|
64
79
|
id: t.StringC;
|
|
65
80
|
service: t.StringC;
|
|
66
81
|
token: t.StringC;
|
|
67
|
-
}
|
|
82
|
+
}>, t.PartialC<{
|
|
83
|
+
externalAccountId: t.StringC;
|
|
84
|
+
displayName: t.StringC;
|
|
85
|
+
avatarUrl: t.UnionC<[t.StringC, t.UndefinedC]>;
|
|
86
|
+
scopes: t.ArrayC<t.StringC>;
|
|
87
|
+
}>]>>;
|
|
68
88
|
appContext: t.TypeC<{
|
|
69
89
|
appId: t.StringC;
|
|
70
90
|
appVersion: t.StringC;
|
|
@@ -119,11 +139,16 @@ export declare const InvocationType: t.TypeC<{
|
|
|
119
139
|
}>;
|
|
120
140
|
clientId: t.StringC;
|
|
121
141
|
contextAri: t.StringC;
|
|
122
|
-
tokens: t.ArrayC<t.TypeC<{
|
|
142
|
+
tokens: t.ArrayC<t.IntersectionC<[t.TypeC<{
|
|
123
143
|
id: t.StringC;
|
|
124
144
|
service: t.StringC;
|
|
125
145
|
token: t.StringC;
|
|
126
|
-
}
|
|
146
|
+
}>, t.PartialC<{
|
|
147
|
+
externalAccountId: t.StringC;
|
|
148
|
+
displayName: t.StringC;
|
|
149
|
+
avatarUrl: t.UnionC<[t.StringC, t.UndefinedC]>;
|
|
150
|
+
scopes: t.ArrayC<t.StringC>;
|
|
151
|
+
}>]>>;
|
|
127
152
|
appContext: t.TypeC<{
|
|
128
153
|
appId: t.StringC;
|
|
129
154
|
appVersion: t.StringC;
|
|
@@ -178,6 +203,7 @@ export declare const InvocationType: t.TypeC<{
|
|
|
178
203
|
export declare type ExternalRequestVariable = t.TypeOf<typeof VariableType>;
|
|
179
204
|
export declare type Invocation = t.TypeOf<typeof InvocationType>;
|
|
180
205
|
export declare type Metadata = t.TypeOf<typeof MetadataType>;
|
|
206
|
+
export declare type XisRequestToken = t.TypeOf<typeof XisRequestTokenType>;
|
|
181
207
|
export declare type ExternalRequestBody = t.TypeOf<typeof ExternalRequestBodyType>;
|
|
182
208
|
export {};
|
|
183
209
|
//# sourceMappingURL=request.d.ts.map
|
package/out/request.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAG3B,QAAA,MAAM,YAAY
|
|
1
|
+
{"version":3,"file":"request.d.ts","sourceRoot":"","sources":["../src/request.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,OAAO,CAAC;AAG3B,QAAA,MAAM,mBAAmB;;;;;;;;;IAYvB,CAAC;AAEH,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAiDhB,CAAC;AAEH,QAAA,MAAM,YAAY;;;;EAIhB,CAAC;AAIH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IASlC,CAAC;AAEH,eAAO,MAAM,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOzB,CAAC;AAEH,oBAAY,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AAEpE,oBAAY,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,cAAc,CAAC,CAAC;AACzD,oBAAY,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,YAAY,CAAC,CAAC;AACrD,oBAAY,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,mBAAmB,CAAC,CAAC;AACnE,oBAAY,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,uBAAuB,CAAC,CAAC"}
|
package/out/request.js
CHANGED
|
@@ -3,6 +3,19 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.InvocationType = exports.ExternalRequestBodyType = void 0;
|
|
4
4
|
const tslib_1 = require("tslib");
|
|
5
5
|
const t = tslib_1.__importStar(require("io-ts"));
|
|
6
|
+
const XisRequestTokenType = t.intersection([
|
|
7
|
+
t.type({
|
|
8
|
+
id: t.string,
|
|
9
|
+
service: t.string,
|
|
10
|
+
token: t.string
|
|
11
|
+
}),
|
|
12
|
+
t.partial({
|
|
13
|
+
externalAccountId: t.string,
|
|
14
|
+
displayName: t.string,
|
|
15
|
+
avatarUrl: t.union([t.string, t.undefined]),
|
|
16
|
+
scopes: t.array(t.string)
|
|
17
|
+
})
|
|
18
|
+
]);
|
|
6
19
|
const MetadataType = t.intersection([
|
|
7
20
|
t.type({
|
|
8
21
|
apiAuth: t.type({
|
|
@@ -11,11 +24,7 @@ const MetadataType = t.intersection([
|
|
|
11
24
|
}),
|
|
12
25
|
clientId: t.string,
|
|
13
26
|
contextAri: t.string,
|
|
14
|
-
tokens: t.array(
|
|
15
|
-
id: t.string,
|
|
16
|
-
service: t.string,
|
|
17
|
-
token: t.string
|
|
18
|
-
})),
|
|
27
|
+
tokens: t.array(XisRequestTokenType),
|
|
19
28
|
appContext: t.type({
|
|
20
29
|
appId: t.string,
|
|
21
30
|
appVersion: t.string,
|
|
@@ -5,6 +5,16 @@ export interface ServiceToken {
|
|
|
5
5
|
id: string;
|
|
6
6
|
service: string;
|
|
7
7
|
token: string;
|
|
8
|
+
externalAccountId: string;
|
|
9
|
+
displayName: string;
|
|
10
|
+
avatarUrl?: string;
|
|
11
|
+
scopes: string[];
|
|
12
|
+
}
|
|
13
|
+
export interface ExternalAuthAccount {
|
|
14
|
+
id: string;
|
|
15
|
+
displayName: string;
|
|
16
|
+
avatarUrl?: string;
|
|
17
|
+
scopes: string[];
|
|
8
18
|
}
|
|
9
19
|
export interface ProxyInformation {
|
|
10
20
|
token: string;
|
|
@@ -71,10 +81,15 @@ export declare class InvocationRequest implements BaseInvocationRequest {
|
|
|
71
81
|
getInvocationResourceOwner(): string;
|
|
72
82
|
getAppToken(): string | undefined;
|
|
73
83
|
getProxy(): ProxyInformation | undefined;
|
|
74
|
-
|
|
84
|
+
getTokenByTokenId(requestedServiceKey: string, tokenId?: string): ServiceToken | undefined;
|
|
85
|
+
getTokenByExternalAccount(requestedServiceKey: string, externalAccountIdToFilter?: string): ServiceToken | undefined;
|
|
86
|
+
private getTokensByServiceAndAccount;
|
|
87
|
+
private isSuperset;
|
|
88
|
+
getExternalAuthAccounts(serviceKey: string, externalAccountId?: string | undefined, scopes?: string[] | undefined): ExternalAuthAccount[];
|
|
75
89
|
getTokenIDsForService(serviceKey: string): string[];
|
|
76
|
-
getAllTokens(): ServiceToken[];
|
|
90
|
+
getAllTokens(serviceKey?: string): ServiceToken[];
|
|
77
91
|
getAtlassianTokenServiceKey(): string;
|
|
92
|
+
private pickTokenToUse;
|
|
78
93
|
getAtlassianServiceToken(): string | undefined;
|
|
79
94
|
getAppTokenKey(): string;
|
|
80
95
|
getThirdPartyTokenReferenceList(serviceKey: string): string[];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"invocation-request.d.ts","sourceRoot":"","sources":["../../src/sandbox/invocation-request.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,CAAC;AAClC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAGhE,OAAO,EAAE,mBAAmB,EAAE,uBAAuB,EAAE,UAAU,EAAE,QAAQ,
|
|
1
|
+
{"version":3,"file":"invocation-request.d.ts","sourceRoot":"","sources":["../../src/sandbox/invocation-request.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,19 @@ class XenInvocationRequestImpl {
|
|
|
9
9
|
constructor(request, invocationId) {
|
|
10
10
|
this.request = request;
|
|
11
11
|
this.invocationId = invocationId;
|
|
12
|
+
this.serviceTokens = [];
|
|
13
|
+
this.serviceTokens = this.buildServiceTokens(request._meta.tokens);
|
|
14
|
+
}
|
|
15
|
+
buildServiceTokens(tokens) {
|
|
16
|
+
return tokens.map((token) => ({
|
|
17
|
+
id: token.id,
|
|
18
|
+
service: token.service,
|
|
19
|
+
token: token.token,
|
|
20
|
+
externalAccountId: token.externalAccountId || '',
|
|
21
|
+
displayName: token.displayName || '',
|
|
22
|
+
avatarUrl: token.avatarUrl,
|
|
23
|
+
scopes: token.scopes || []
|
|
24
|
+
}));
|
|
12
25
|
}
|
|
13
26
|
getFeatureFlags() {
|
|
14
27
|
if (!this.featureFlags) {
|
|
@@ -68,7 +81,7 @@ class XenInvocationRequestImpl {
|
|
|
68
81
|
return (_a = this.request._meta) === null || _a === void 0 ? void 0 : _a.proxy;
|
|
69
82
|
}
|
|
70
83
|
getAllTokens() {
|
|
71
|
-
return this.
|
|
84
|
+
return this.serviceTokens;
|
|
72
85
|
}
|
|
73
86
|
getUserVariables() {
|
|
74
87
|
return this.request.variables;
|
|
@@ -163,23 +176,52 @@ class InvocationRequest {
|
|
|
163
176
|
getProxy() {
|
|
164
177
|
return this.xenInvocationRequest.getProxy();
|
|
165
178
|
}
|
|
166
|
-
|
|
167
|
-
|
|
179
|
+
getTokenByTokenId(requestedServiceKey, tokenId) {
|
|
180
|
+
const allTokens = this.getAllTokens(requestedServiceKey);
|
|
181
|
+
const filteredTokens = tokenId !== undefined ? allTokens.filter((token) => token.id == tokenId) : allTokens;
|
|
182
|
+
return this.pickTokenToUse(filteredTokens);
|
|
183
|
+
}
|
|
184
|
+
getTokenByExternalAccount(requestedServiceKey, externalAccountIdToFilter) {
|
|
185
|
+
const tokens = this.getTokensByServiceAndAccount(requestedServiceKey, externalAccountIdToFilter);
|
|
186
|
+
return this.pickTokenToUse(tokens);
|
|
187
|
+
}
|
|
188
|
+
getTokensByServiceAndAccount(requestedServiceKey, externalAccountIdToFilter) {
|
|
189
|
+
const tokens = this.getAllTokens(requestedServiceKey);
|
|
190
|
+
return externalAccountIdToFilter !== undefined
|
|
191
|
+
? tokens.filter(({ externalAccountId }) => externalAccountId === externalAccountIdToFilter)
|
|
192
|
+
: tokens;
|
|
193
|
+
}
|
|
194
|
+
isSuperset(superset, subset) {
|
|
195
|
+
return !subset || subset.every((scopeInSubset) => superset.includes(scopeInSubset));
|
|
196
|
+
}
|
|
197
|
+
getExternalAuthAccounts(serviceKey, externalAccountId, scopes) {
|
|
198
|
+
return this.getTokensByServiceAndAccount(serviceKey, externalAccountId)
|
|
199
|
+
.filter((serviceToken) => this.isSuperset(serviceToken.scopes, scopes))
|
|
200
|
+
.map((token) => ({
|
|
201
|
+
id: token.externalAccountId,
|
|
202
|
+
displayName: token.displayName,
|
|
203
|
+
avatarUrl: token.avatarUrl,
|
|
204
|
+
scopes: token.scopes
|
|
205
|
+
}));
|
|
168
206
|
}
|
|
169
207
|
getTokenIDsForService(serviceKey) {
|
|
170
|
-
return this.getAllTokens()
|
|
171
|
-
.filter(({ service }) => service === serviceKey)
|
|
172
|
-
.map((token) => token.id);
|
|
208
|
+
return this.getAllTokens(serviceKey).map((token) => token.id);
|
|
173
209
|
}
|
|
174
|
-
getAllTokens() {
|
|
175
|
-
return this.xenInvocationRequest
|
|
210
|
+
getAllTokens(serviceKey) {
|
|
211
|
+
return this.xenInvocationRequest
|
|
212
|
+
.getAllTokens()
|
|
213
|
+
.filter(({ service }) => serviceKey === undefined || service === serviceKey);
|
|
176
214
|
}
|
|
177
215
|
getAtlassianTokenServiceKey() {
|
|
178
216
|
return 'atlassian-token-service-key';
|
|
179
217
|
}
|
|
218
|
+
pickTokenToUse(serviceTokens) {
|
|
219
|
+
return serviceTokens ? serviceTokens[0] : undefined;
|
|
220
|
+
}
|
|
180
221
|
getAtlassianServiceToken() {
|
|
181
|
-
|
|
182
|
-
|
|
222
|
+
var _a;
|
|
223
|
+
const atlassianTokens = this.getAllTokens(this.getAtlassianTokenServiceKey());
|
|
224
|
+
return (_a = this.pickTokenToUse(atlassianTokens)) === null || _a === void 0 ? void 0 : _a.token;
|
|
183
225
|
}
|
|
184
226
|
getAppTokenKey() {
|
|
185
227
|
return '__atlassian-app-token';
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/runtime",
|
|
3
|
-
"version": "5.
|
|
3
|
+
"version": "5.4.0-next.1",
|
|
4
4
|
"description": "A Node.js runtime for Atlassian app functions",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "UNLICENSED",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"devDependencies": {
|
|
16
16
|
"@types/jest": "^29.5.11",
|
|
17
17
|
"@types/node": "14.18.63",
|
|
18
|
-
"@types/node-fetch": "^2.6.
|
|
18
|
+
"@types/node-fetch": "^2.6.11",
|
|
19
19
|
"@types/ws": "^7.4.7",
|
|
20
20
|
"jest": "^29.7.0",
|
|
21
21
|
"jest-junit": "^16.0.0",
|