@forge/api 6.1.1 → 6.1.2-next.0
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 +12 -0
- package/out/api/errors.d.ts +4 -0
- package/out/api/errors.d.ts.map +1 -1
- package/out/api/errors.js +16 -2
- package/out/api/permissions.d.ts +24 -0
- package/out/api/permissions.d.ts.map +1 -0
- package/out/api/permissions.js +139 -0
- package/out/api/runtime.d.ts +24 -0
- package/out/api/runtime.d.ts.map +1 -1
- package/out/api/runtime.js +102 -3
- package/out/index.d.ts +1 -0
- package/out/index.d.ts.map +1 -1
- package/out/index.js +3 -1
- package/package.json +5 -3
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# @forge/api
|
|
2
2
|
|
|
3
|
+
## 6.1.2-next.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 504cd62: Added backend SDK for permission handling
|
|
8
|
+
- Updated dependencies [f59b4d7]
|
|
9
|
+
- Updated dependencies [504cd62]
|
|
10
|
+
- Updated dependencies [6e2892c]
|
|
11
|
+
- Updated dependencies [de0f1c1]
|
|
12
|
+
- Updated dependencies [bda8688]
|
|
13
|
+
- @forge/manifest@10.6.0-next.3
|
|
14
|
+
|
|
3
15
|
## 6.1.1
|
|
4
16
|
|
|
5
17
|
### Patch Changes
|
package/out/api/errors.d.ts
CHANGED
|
@@ -5,6 +5,7 @@ export declare const NEEDS_AUTHENTICATION_ERR = "NEEDS_AUTHENTICATION_ERR";
|
|
|
5
5
|
export declare const INVALID_REMOTE_ERR = "INVALID_REMOTE_ERR";
|
|
6
6
|
export declare const INVALID_CONTAINER_SERVICE_ERR = "INVALID_CONTAINER_SERVICE_ERR";
|
|
7
7
|
export declare const PROXY_ERR = "PROXY_ERR";
|
|
8
|
+
export declare const API_NOT_READY_ERR = "API_NOT_READY_ERR";
|
|
8
9
|
export declare function isForgePlatformError(err: Error): boolean;
|
|
9
10
|
export declare function isHostedCodeError(err: Error | string): boolean;
|
|
10
11
|
export declare function isExpectedError(err: Error): boolean;
|
|
@@ -52,4 +53,7 @@ export declare class ProxyRequestError extends HttpError {
|
|
|
52
53
|
errorCode: string;
|
|
53
54
|
constructor(status: number, errorCode: string);
|
|
54
55
|
}
|
|
56
|
+
export declare class ApiNotReadyError extends Error {
|
|
57
|
+
constructor(message?: string);
|
|
58
|
+
}
|
|
55
59
|
//# sourceMappingURL=errors.d.ts.map
|
package/out/api/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/api/errors.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,SAAS,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/api/errors.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,YAAY,iBAAiB,CAAC;AAC3C,eAAO,MAAM,4BAA4B,iCAAiC,CAAC;AAC3E,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,wBAAwB,6BAA6B,CAAC;AACnE,eAAO,MAAM,kBAAkB,uBAAuB,CAAC;AACvD,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAC7E,eAAO,MAAM,SAAS,cAAc,CAAC;AACrC,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,KAAK,WAQ9C;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,KAAK,GAAG,MAAM,WAIpD;AAKD,wBAAgB,eAAe,CAAC,GAAG,EAAE,KAAK,GAAG,OAAO,CAEnD;AAED,qBAAa,SAAU,SAAQ,KAAK;IAClC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;gBACf,OAAO,EAAE,MAAM;CAG5B;AAED,qBAAa,UAAW,SAAQ,KAAK;gBACvB,KAAK,EAAE,MAAM;CAK1B;AAED,qBAAa,eAAgB,SAAQ,SAAS;gBAChC,OAAO,EAAE,MAAM;CAM5B;AAED,qBAAa,+BAAgC,SAAQ,eAAe;gBACtD,SAAS,EAAE,MAAM;CAK9B;AAED,qBAAa,8BAA+B,SAAQ,eAAe;gBACrD,SAAS,EAAE,MAAM;CAG9B;AAED,qBAAa,6BAA8B,SAAQ,eAAe;gBACpD,gBAAgB,EAAE,MAAM,EAAE,iBAAiB,EAAE,MAAM;CAGhE;AAED,qBAAa,8BAA+B,SAAQ,eAAe;gBACrD,SAAS,EAAE,MAAM;CAG9B;AAED,MAAM,WAAW,+BAA+B;IAI9C,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAKlB,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED,qBAAa,wBAAyB,SAAQ,SAAS;aAGnC,UAAU,EAAE,MAAM;aAClB,OAAO,CAAC;gBAFxB,KAAK,EAAE,MAAM,EACG,UAAU,EAAE,MAAM,EAClB,OAAO,CAAC,6CAAiC;CAO5D;AAED,qBAAa,kBAAmB,SAAQ,SAAS;aAG7B,SAAS,EAAE,MAAM;gBADjC,KAAK,EAAE,MAAM,EACG,SAAS,EAAE,MAAM;CAMpC;AAED,qBAAa,4BAA6B,SAAQ,SAAS;aAGvC,UAAU,EAAE,MAAM;gBADlC,KAAK,EAAE,MAAM,EACG,UAAU,EAAE,MAAM;CAMrC;AAED,qBAAa,iBAAkB,SAAQ,SAAS;IAErC,MAAM,EAAE,MAAM;IACd,SAAS,EAAE,MAAM;gBADjB,MAAM,EAAE,MAAM,EACd,SAAS,EAAE,MAAM;CAK3B;AAED,qBAAa,gBAAiB,SAAQ,KAAK;gBAC7B,OAAO,SAAsC;CAI1D"}
|
package/out/api/errors.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProxyRequestError = exports.InvalidContainerServiceError = exports.InvalidRemoteError = exports.NeedsAuthenticationError = exports.InvalidWorkspaceRequestedError = exports.RequestProductNotAllowedError = exports.ProductEndpointNotAllowedError = exports.ExternalEndpointNotAllowedError = exports.NotAllowedError = exports.FetchError = exports.HttpError = exports.isExpectedError = exports.isHostedCodeError = exports.isForgePlatformError = exports.PROXY_ERR = exports.INVALID_CONTAINER_SERVICE_ERR = exports.INVALID_REMOTE_ERR = exports.NEEDS_AUTHENTICATION_ERR = exports.FUNCTION_FETCH_ERR = exports.REQUEST_EGRESS_ALLOWLIST_ERR = exports.FUNCTION_ERR = void 0;
|
|
3
|
+
exports.ApiNotReadyError = exports.ProxyRequestError = exports.InvalidContainerServiceError = exports.InvalidRemoteError = exports.NeedsAuthenticationError = exports.InvalidWorkspaceRequestedError = exports.RequestProductNotAllowedError = exports.ProductEndpointNotAllowedError = exports.ExternalEndpointNotAllowedError = exports.NotAllowedError = exports.FetchError = exports.HttpError = exports.isExpectedError = exports.isHostedCodeError = exports.isForgePlatformError = exports.API_NOT_READY_ERR = exports.PROXY_ERR = exports.INVALID_CONTAINER_SERVICE_ERR = exports.INVALID_REMOTE_ERR = exports.NEEDS_AUTHENTICATION_ERR = exports.FUNCTION_FETCH_ERR = exports.REQUEST_EGRESS_ALLOWLIST_ERR = exports.FUNCTION_ERR = void 0;
|
|
4
4
|
exports.FUNCTION_ERR = 'FUNCTION_ERR';
|
|
5
5
|
exports.REQUEST_EGRESS_ALLOWLIST_ERR = 'REQUEST_EGRESS_ALLOWLIST_ERR';
|
|
6
6
|
exports.FUNCTION_FETCH_ERR = 'FUNCTION_FETCH_ERR';
|
|
@@ -8,8 +8,15 @@ exports.NEEDS_AUTHENTICATION_ERR = 'NEEDS_AUTHENTICATION_ERR';
|
|
|
8
8
|
exports.INVALID_REMOTE_ERR = 'INVALID_REMOTE_ERR';
|
|
9
9
|
exports.INVALID_CONTAINER_SERVICE_ERR = 'INVALID_CONTAINER_SERVICE_ERR';
|
|
10
10
|
exports.PROXY_ERR = 'PROXY_ERR';
|
|
11
|
+
exports.API_NOT_READY_ERR = 'API_NOT_READY_ERR';
|
|
11
12
|
function isForgePlatformError(err) {
|
|
12
|
-
return [
|
|
13
|
+
return [
|
|
14
|
+
exports.REQUEST_EGRESS_ALLOWLIST_ERR,
|
|
15
|
+
exports.FUNCTION_FETCH_ERR,
|
|
16
|
+
exports.NEEDS_AUTHENTICATION_ERR,
|
|
17
|
+
exports.PROXY_ERR,
|
|
18
|
+
exports.API_NOT_READY_ERR
|
|
19
|
+
].includes(err.name);
|
|
13
20
|
}
|
|
14
21
|
exports.isForgePlatformError = isForgePlatformError;
|
|
15
22
|
function isHostedCodeError(err) {
|
|
@@ -112,3 +119,10 @@ class ProxyRequestError extends HttpError {
|
|
|
112
119
|
}
|
|
113
120
|
}
|
|
114
121
|
exports.ProxyRequestError = ProxyRequestError;
|
|
122
|
+
class ApiNotReadyError extends Error {
|
|
123
|
+
constructor(message = 'Forge API currently not available') {
|
|
124
|
+
super(message);
|
|
125
|
+
this.name = exports.API_NOT_READY_ERR;
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.ApiNotReadyError = ApiNotReadyError;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { PermissionRequirements, MissingPermissions } from './runtime';
|
|
2
|
+
import { External } from '@forge/manifest';
|
|
3
|
+
export declare function extractUrlString(url: string | {
|
|
4
|
+
address: string;
|
|
5
|
+
} | {
|
|
6
|
+
remote: string;
|
|
7
|
+
}): string;
|
|
8
|
+
export type { PermissionRequirements };
|
|
9
|
+
export type { MissingPermissions };
|
|
10
|
+
export interface PermissionResult {
|
|
11
|
+
granted: boolean;
|
|
12
|
+
missing?: MissingPermissions;
|
|
13
|
+
}
|
|
14
|
+
export declare const hasPermission: (requirements: Partial<PermissionRequirements>) => PermissionResult;
|
|
15
|
+
export declare const hasScope: (scope: string) => boolean;
|
|
16
|
+
export declare const canFetchFrom: (type: 'backend' | 'client', url: string) => boolean;
|
|
17
|
+
export declare const canLoadResource: (type: Exclude<keyof External, 'fetch'>, url: string) => boolean;
|
|
18
|
+
export declare const permissions: {
|
|
19
|
+
hasPermission: (requirements: Partial<PermissionRequirements>) => PermissionResult;
|
|
20
|
+
hasScope: (scope: string) => boolean;
|
|
21
|
+
canFetchFrom: (type: 'backend' | 'client', url: string) => boolean;
|
|
22
|
+
canLoadResource: (type: Exclude<keyof External, 'fetch'>, url: string) => boolean;
|
|
23
|
+
};
|
|
24
|
+
//# sourceMappingURL=permissions.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"permissions.d.ts","sourceRoot":"","sources":["../../src/api/permissions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,sBAAsB,EAAE,kBAAkB,EAAgB,MAAM,WAAW,CAAC;AAGpG,OAAO,EAAU,QAAQ,EAAS,MAAM,iBAAiB,CAAC;AAK1D,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAQ/F;AAeD,YAAY,EAAE,sBAAsB,EAAE,CAAC;AAKvC,YAAY,EAAE,kBAAkB,EAAE,CAAC;AAOnC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,kBAAkB,CAAC;CAC9B;AAkID,eAAO,MAAM,aAAa,iBAAkB,QAAQ,sBAAsB,CAAC,KAAG,gBAE7E,CAAC;AA8DF,eAAO,MAAM,QAAQ,UAAW,MAAM,KAAG,OAKxC,CAAC;AAyBF,eAAO,MAAM,YAAY,SAAU,SAAS,GAAG,QAAQ,OAAO,MAAM,KAAG,OAKtE,CAAC;AAyBF,eAAO,MAAM,eAAe,SAAU,QAAQ,MAAM,QAAQ,EAAE,OAAO,CAAC,OAAO,MAAM,KAAG,OAKrF,CAAC;AAKF,eAAO,MAAM,WAAW;kCAtIoB,QAAQ,sBAAsB,CAAC,KAAG,gBAAgB;sBAgE9D,MAAM,KAAG,OAAO;yBA8Bb,SAAS,GAAG,QAAQ,OAAO,MAAM,KAAG,OAAO;4BA8BxC,QAAQ,MAAM,QAAQ,EAAE,OAAO,CAAC,OAAO,MAAM,KAAG,OAAO;CAe5F,CAAC"}
|
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.permissions = exports.canLoadResource = exports.canFetchFrom = exports.hasScope = exports.hasPermission = exports.extractUrlString = void 0;
|
|
4
|
+
const runtime_1 = require("./runtime");
|
|
5
|
+
const errors_1 = require("./errors");
|
|
6
|
+
const minimatch_1 = require("minimatch");
|
|
7
|
+
function extractUrlString(url) {
|
|
8
|
+
if (typeof url === 'string') {
|
|
9
|
+
return url;
|
|
10
|
+
}
|
|
11
|
+
if ('address' in url) {
|
|
12
|
+
return url.address;
|
|
13
|
+
}
|
|
14
|
+
return url.remote;
|
|
15
|
+
}
|
|
16
|
+
exports.extractUrlString = extractUrlString;
|
|
17
|
+
function wrapInSyncMetrics(options, cb) {
|
|
18
|
+
const metrics = (0, runtime_1.__getRuntime)().metrics;
|
|
19
|
+
metrics.counter(options.name, options.tags).incr();
|
|
20
|
+
return cb();
|
|
21
|
+
}
|
|
22
|
+
const getMissingScopes = (requiredScopes, currentlyGrantedScopes) => {
|
|
23
|
+
if (!requiredScopes) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
if (Array.isArray(requiredScopes) && requiredScopes.length > 0) {
|
|
27
|
+
const currentGrantedScopes = Array.isArray(currentlyGrantedScopes) ? currentlyGrantedScopes : [];
|
|
28
|
+
const missingScopes = requiredScopes.filter((scope) => !currentGrantedScopes.includes(scope));
|
|
29
|
+
if (missingScopes.length > 0) {
|
|
30
|
+
return missingScopes;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return undefined;
|
|
34
|
+
};
|
|
35
|
+
const getMissingUrls = (requiredUrls, currentlyGrantedUrls) => {
|
|
36
|
+
const missingUrls = requiredUrls.filter((requiredUrl) => {
|
|
37
|
+
const isUrlAlreadyGranted = currentlyGrantedUrls.some((currentGrantedUrl) => (0, minimatch_1.minimatch)(extractUrlString(requiredUrl), extractUrlString(currentGrantedUrl)));
|
|
38
|
+
return !isUrlAlreadyGranted;
|
|
39
|
+
});
|
|
40
|
+
return missingUrls;
|
|
41
|
+
};
|
|
42
|
+
const getMissingFetchPermissions = (requiredFetch, currentlyGrantedFetch) => {
|
|
43
|
+
if (!requiredFetch) {
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
const missingFetch = {};
|
|
47
|
+
Object.keys(requiredFetch).forEach((fetchType) => {
|
|
48
|
+
const requiredUrls = requiredFetch[fetchType];
|
|
49
|
+
if (!requiredUrls || !Array.isArray(requiredUrls) || requiredUrls.length === 0)
|
|
50
|
+
return;
|
|
51
|
+
const missingUrls = getMissingUrls(requiredUrls, currentlyGrantedFetch?.[fetchType] ?? []);
|
|
52
|
+
if (missingUrls.length) {
|
|
53
|
+
missingFetch[fetchType] = missingUrls.map(extractUrlString);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
return Object.keys(missingFetch).length ? missingFetch : undefined;
|
|
57
|
+
};
|
|
58
|
+
const getMissingExternalPermissions = (requiredExternal, currentGrantedExternal) => {
|
|
59
|
+
let missingExternal = undefined;
|
|
60
|
+
Object.keys(requiredExternal).forEach((type) => {
|
|
61
|
+
if (type === 'fetch') {
|
|
62
|
+
const missingFetchPerms = getMissingFetchPermissions(requiredExternal.fetch, currentGrantedExternal.fetch);
|
|
63
|
+
if (missingFetchPerms) {
|
|
64
|
+
if (!missingExternal) {
|
|
65
|
+
missingExternal = {};
|
|
66
|
+
}
|
|
67
|
+
missingExternal.fetch = missingFetchPerms;
|
|
68
|
+
}
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const externalUrls = requiredExternal[type];
|
|
72
|
+
if (!externalUrls || !Array.isArray(externalUrls) || externalUrls.length === 0) {
|
|
73
|
+
return;
|
|
74
|
+
}
|
|
75
|
+
const missingUrls = getMissingUrls(externalUrls, currentGrantedExternal[type] || []);
|
|
76
|
+
if (missingUrls.length > 0) {
|
|
77
|
+
if (!missingExternal) {
|
|
78
|
+
missingExternal = {};
|
|
79
|
+
}
|
|
80
|
+
missingExternal[type] = missingUrls.map(extractUrlString);
|
|
81
|
+
}
|
|
82
|
+
});
|
|
83
|
+
return missingExternal;
|
|
84
|
+
};
|
|
85
|
+
const hasPermission = (requirements) => {
|
|
86
|
+
return wrapInSyncMetrics({ name: 'api.permissions.hasPermission' }, () => hasPermissionWithoutMetrics(requirements));
|
|
87
|
+
};
|
|
88
|
+
exports.hasPermission = hasPermission;
|
|
89
|
+
const hasPermissionWithoutMetrics = (requirements) => {
|
|
90
|
+
const appContext = (0, runtime_1.getAppContext)();
|
|
91
|
+
const currentlyGrantedPermissions = appContext.permissions;
|
|
92
|
+
const arePermissionsAvailable = !!(currentlyGrantedPermissions && typeof currentlyGrantedPermissions === 'object');
|
|
93
|
+
if (!arePermissionsAvailable) {
|
|
94
|
+
throw new errors_1.ApiNotReadyError('This feature is not available yet');
|
|
95
|
+
}
|
|
96
|
+
const missingPermissions = {};
|
|
97
|
+
let hasMissingPermissions = false;
|
|
98
|
+
const missingScopes = getMissingScopes(requirements.scopes, currentlyGrantedPermissions.scopes);
|
|
99
|
+
if (missingScopes) {
|
|
100
|
+
missingPermissions.scopes = missingScopes;
|
|
101
|
+
hasMissingPermissions = true;
|
|
102
|
+
}
|
|
103
|
+
if (requirements.external) {
|
|
104
|
+
const { external: requiredExternal } = requirements;
|
|
105
|
+
const currentlyGrantedExternal = currentlyGrantedPermissions.external || {};
|
|
106
|
+
const missingExternalPerms = getMissingExternalPermissions(requiredExternal, currentlyGrantedExternal);
|
|
107
|
+
if (missingExternalPerms) {
|
|
108
|
+
missingPermissions.external = {
|
|
109
|
+
...missingPermissions.external,
|
|
110
|
+
...missingExternalPerms
|
|
111
|
+
};
|
|
112
|
+
hasMissingPermissions = true;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
granted: !hasMissingPermissions,
|
|
117
|
+
...(hasMissingPermissions && {
|
|
118
|
+
missing: new runtime_1.MissingPermissions(missingPermissions.scopes, missingPermissions.external)
|
|
119
|
+
})
|
|
120
|
+
};
|
|
121
|
+
};
|
|
122
|
+
const hasScope = (scope) => {
|
|
123
|
+
return wrapInSyncMetrics({ name: 'api.permissions.hasScope' }, () => hasPermissionWithoutMetrics({ scopes: [scope] }).granted);
|
|
124
|
+
};
|
|
125
|
+
exports.hasScope = hasScope;
|
|
126
|
+
const canFetchFrom = (type, url) => {
|
|
127
|
+
return wrapInSyncMetrics({ name: 'api.permissions.canFetchFrom' }, () => hasPermissionWithoutMetrics({ external: { fetch: { [type]: [url] } } }).granted);
|
|
128
|
+
};
|
|
129
|
+
exports.canFetchFrom = canFetchFrom;
|
|
130
|
+
const canLoadResource = (type, url) => {
|
|
131
|
+
return wrapInSyncMetrics({ name: 'api.permissions.canLoadResource' }, () => hasPermissionWithoutMetrics({ external: { [type]: [url] } }).granted);
|
|
132
|
+
};
|
|
133
|
+
exports.canLoadResource = canLoadResource;
|
|
134
|
+
exports.permissions = {
|
|
135
|
+
hasPermission: exports.hasPermission,
|
|
136
|
+
hasScope: exports.hasScope,
|
|
137
|
+
canFetchFrom: exports.canFetchFrom,
|
|
138
|
+
canLoadResource: exports.canLoadResource
|
|
139
|
+
};
|
package/out/api/runtime.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { AppAri, EnvironmentAri, InstallationAri } from './ari';
|
|
2
|
+
import { Permissions as ManifestPermissions, External as ManifestExternal, Scopes as ManifestScopes } from '@forge/manifest';
|
|
2
3
|
interface Timer {
|
|
3
4
|
stop(tags?: Record<string, string>): void;
|
|
4
5
|
}
|
|
@@ -64,6 +65,27 @@ export interface Installation {
|
|
|
64
65
|
export interface Realtime {
|
|
65
66
|
contextToken?: string;
|
|
66
67
|
}
|
|
68
|
+
export declare type External = ManifestExternal;
|
|
69
|
+
export declare abstract class Permissions implements ManifestPermissions {
|
|
70
|
+
abstract scopes?: ManifestScopes;
|
|
71
|
+
abstract external?: ManifestExternal;
|
|
72
|
+
format(): string;
|
|
73
|
+
}
|
|
74
|
+
export declare class RuntimePermissions extends Permissions {
|
|
75
|
+
scopes: ManifestScopes;
|
|
76
|
+
external: ManifestExternal;
|
|
77
|
+
constructor(scopes: ManifestScopes, external: ManifestExternal);
|
|
78
|
+
}
|
|
79
|
+
export declare class PermissionRequirements extends Permissions {
|
|
80
|
+
scopes?: ManifestScopes | undefined;
|
|
81
|
+
external?: ManifestExternal | undefined;
|
|
82
|
+
constructor(scopes?: ManifestScopes | undefined, external?: ManifestExternal | undefined);
|
|
83
|
+
}
|
|
84
|
+
export declare class MissingPermissions extends Permissions {
|
|
85
|
+
scopes?: ManifestScopes | undefined;
|
|
86
|
+
external?: ManifestExternal | undefined;
|
|
87
|
+
constructor(scopes?: ManifestScopes | undefined, external?: ManifestExternal | undefined);
|
|
88
|
+
}
|
|
67
89
|
export declare type ForgeRuntime = {
|
|
68
90
|
proxy: ProxyInfo;
|
|
69
91
|
contextAri: string;
|
|
@@ -85,6 +107,7 @@ export declare type ForgeRuntime = {
|
|
|
85
107
|
moduleKey: string;
|
|
86
108
|
license?: License;
|
|
87
109
|
installation?: Installation;
|
|
110
|
+
permissions?: Permissions;
|
|
88
111
|
};
|
|
89
112
|
aaid?: string;
|
|
90
113
|
lambdaContext: {
|
|
@@ -119,6 +142,7 @@ export declare type AppContext = {
|
|
|
119
142
|
moduleKey: string;
|
|
120
143
|
license?: License;
|
|
121
144
|
installation?: Installation;
|
|
145
|
+
permissions?: Permissions;
|
|
122
146
|
};
|
|
123
147
|
export declare function __getRuntime(): ForgeRuntime;
|
|
124
148
|
export declare function getAppContext(): AppContext;
|
package/out/api/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/api/runtime.ts"],"names":[],"mappings":"AACA,OAAO,EAAoD,MAAM,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/api/runtime.ts"],"names":[],"mappings":"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"}
|
package/out/api/runtime.js
CHANGED
|
@@ -1,8 +1,106 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.bindInvocationContext = exports.wrapInMetrics = exports.getAppContext = exports.__getRuntime = void 0;
|
|
3
|
+
exports.bindInvocationContext = exports.wrapInMetrics = exports.getAppContext = exports.__getRuntime = exports.MissingPermissions = exports.PermissionRequirements = exports.RuntimePermissions = exports.Permissions = void 0;
|
|
4
4
|
const errors_1 = require("./errors");
|
|
5
5
|
const ari_1 = require("./ari");
|
|
6
|
+
const extractUrlString = (item) => {
|
|
7
|
+
if (typeof item === 'string') {
|
|
8
|
+
return item;
|
|
9
|
+
}
|
|
10
|
+
else if ('address' in item) {
|
|
11
|
+
return item.address;
|
|
12
|
+
}
|
|
13
|
+
else {
|
|
14
|
+
return item.remote;
|
|
15
|
+
}
|
|
16
|
+
};
|
|
17
|
+
const formatScopesSection = (scopes) => {
|
|
18
|
+
if (scopes && Array.isArray(scopes) && scopes.length > 0) {
|
|
19
|
+
return `Scopes: ${scopes.join(', ')}`;
|
|
20
|
+
}
|
|
21
|
+
return null;
|
|
22
|
+
};
|
|
23
|
+
const formatExternalSection = (external) => {
|
|
24
|
+
if (!external) {
|
|
25
|
+
return null;
|
|
26
|
+
}
|
|
27
|
+
const externalParts = [];
|
|
28
|
+
Object.keys(external).forEach((type) => {
|
|
29
|
+
if (type === 'fetch') {
|
|
30
|
+
const fetchParts = getFetchPermissions(external.fetch);
|
|
31
|
+
externalParts.push(...fetchParts);
|
|
32
|
+
}
|
|
33
|
+
else {
|
|
34
|
+
const externalUrls = external[type];
|
|
35
|
+
if (externalUrls && Array.isArray(externalUrls) && externalUrls.length > 0) {
|
|
36
|
+
const capitalizedType = type.charAt(0).toUpperCase() + type.slice(1);
|
|
37
|
+
const urlList = externalUrls.map(extractUrlString).join(', ');
|
|
38
|
+
externalParts.push(`${capitalizedType}: ${urlList}`);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
return externalParts.length > 0 ? `External: ${externalParts.join('; ')}` : null;
|
|
43
|
+
};
|
|
44
|
+
const getFetchPermissions = (fetch) => {
|
|
45
|
+
if (!fetch) {
|
|
46
|
+
return [];
|
|
47
|
+
}
|
|
48
|
+
const fetchParts = [];
|
|
49
|
+
Object.keys(fetch).forEach((fetchType) => {
|
|
50
|
+
const urls = fetch[fetchType];
|
|
51
|
+
if (urls && urls.length > 0) {
|
|
52
|
+
const urlList = urls.map(extractUrlString).join(', ');
|
|
53
|
+
const capitalizedType = fetchType.charAt(0).toUpperCase() + fetchType.slice(1);
|
|
54
|
+
fetchParts.push(`Fetch ${capitalizedType}: ${urlList}`);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
return fetchParts;
|
|
58
|
+
};
|
|
59
|
+
class Permissions {
|
|
60
|
+
format() {
|
|
61
|
+
const parts = [];
|
|
62
|
+
const scopesSection = formatScopesSection(this.scopes);
|
|
63
|
+
if (scopesSection) {
|
|
64
|
+
parts.push(scopesSection);
|
|
65
|
+
}
|
|
66
|
+
const externalSection = formatExternalSection(this.external);
|
|
67
|
+
if (externalSection) {
|
|
68
|
+
parts.push(externalSection);
|
|
69
|
+
}
|
|
70
|
+
return parts.length > 0 ? parts.join('; ') : 'No permissions specified';
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
exports.Permissions = Permissions;
|
|
74
|
+
class RuntimePermissions extends Permissions {
|
|
75
|
+
scopes;
|
|
76
|
+
external;
|
|
77
|
+
constructor(scopes, external) {
|
|
78
|
+
super();
|
|
79
|
+
this.scopes = scopes;
|
|
80
|
+
this.external = external;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
exports.RuntimePermissions = RuntimePermissions;
|
|
84
|
+
class PermissionRequirements extends Permissions {
|
|
85
|
+
scopes;
|
|
86
|
+
external;
|
|
87
|
+
constructor(scopes, external) {
|
|
88
|
+
super();
|
|
89
|
+
this.scopes = scopes;
|
|
90
|
+
this.external = external;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
exports.PermissionRequirements = PermissionRequirements;
|
|
94
|
+
class MissingPermissions extends Permissions {
|
|
95
|
+
scopes;
|
|
96
|
+
external;
|
|
97
|
+
constructor(scopes, external) {
|
|
98
|
+
super();
|
|
99
|
+
this.scopes = scopes;
|
|
100
|
+
this.external = external;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
exports.MissingPermissions = MissingPermissions;
|
|
6
104
|
function __getRuntime() {
|
|
7
105
|
const runtime = global.__forge_runtime__;
|
|
8
106
|
if (!runtime) {
|
|
@@ -13,7 +111,7 @@ function __getRuntime() {
|
|
|
13
111
|
exports.__getRuntime = __getRuntime;
|
|
14
112
|
function getAppContext() {
|
|
15
113
|
const runtime = __getRuntime();
|
|
16
|
-
const { appId, appVersion, environmentId, environmentType, invocationId, installationId, moduleKey, license, installation } = runtime.appContext;
|
|
114
|
+
const { appId, appVersion, environmentId, environmentType, invocationId, installationId, moduleKey, license, installation, permissions } = runtime.appContext;
|
|
17
115
|
const invocationRemainingTimeInMillis = runtime.lambdaContext.getRemainingTimeInMillis ??
|
|
18
116
|
(() => {
|
|
19
117
|
throw new Error('Lambda remaining time is not available. If tunnelling, update Forge CLI to the latest version.');
|
|
@@ -28,7 +126,8 @@ function getAppContext() {
|
|
|
28
126
|
invocationRemainingTimeInMillis,
|
|
29
127
|
moduleKey,
|
|
30
128
|
license,
|
|
31
|
-
installation
|
|
129
|
+
installation,
|
|
130
|
+
permissions: new RuntimePermissions(permissions?.scopes || [], permissions?.external || {})
|
|
32
131
|
};
|
|
33
132
|
}
|
|
34
133
|
exports.getAppContext = getAppContext;
|
package/out/index.d.ts
CHANGED
|
@@ -106,4 +106,5 @@ export { route, assumeTrustedRoute, routeFromAbsolute, Route } from './safeUrl';
|
|
|
106
106
|
export { ForgeRuntime, AppContext, getAppContext, __getRuntime, bindInvocationContext } from './api/runtime';
|
|
107
107
|
export { NeedsAuthenticationError, NeedsAuthenticationErrorOptions, ProxyRequestError, FetchError, ExternalEndpointNotAllowedError, ProductEndpointNotAllowedError, RequestProductNotAllowedError, NotAllowedError, InvalidWorkspaceRequestedError, HttpError, FUNCTION_ERR, isForgePlatformError, isHostedCodeError, isExpectedError } from './api/errors';
|
|
108
108
|
export { i18n, type TranslationFunction } from './api/i18n';
|
|
109
|
+
export { permissions } from './api/permissions';
|
|
109
110
|
//# sourceMappingURL=index.d.ts.map
|
package/out/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/out/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.i18n = exports.isExpectedError = exports.isHostedCodeError = exports.isForgePlatformError = exports.FUNCTION_ERR = exports.HttpError = exports.InvalidWorkspaceRequestedError = exports.NotAllowedError = exports.RequestProductNotAllowedError = exports.ProductEndpointNotAllowedError = exports.ExternalEndpointNotAllowedError = exports.FetchError = exports.ProxyRequestError = exports.NeedsAuthenticationError = exports.bindInvocationContext = exports.__getRuntime = exports.getAppContext = exports.routeFromAbsolute = exports.assumeTrustedRoute = exports.route = exports.SortOrder = exports.FilterConditions = exports.WhereConditions = exports.startsWith = exports.createRequestStargateAsApp = exports.__fetchProduct = exports.__requestAtlassianAsUser = exports.__requestAtlassianAsApp = exports.webTrigger = exports.storage = exports.invokeService = exports.invokeRemote = exports.requestBitbucket = exports.requestConfluence = exports.requestJira = exports.fetch = exports.authorize = exports.asApp = exports.asUser = exports.privacy = void 0;
|
|
3
|
+
exports.permissions = exports.i18n = exports.isExpectedError = exports.isHostedCodeError = exports.isForgePlatformError = exports.FUNCTION_ERR = exports.HttpError = exports.InvalidWorkspaceRequestedError = exports.NotAllowedError = exports.RequestProductNotAllowedError = exports.ProductEndpointNotAllowedError = exports.ExternalEndpointNotAllowedError = exports.FetchError = exports.ProxyRequestError = exports.NeedsAuthenticationError = exports.bindInvocationContext = exports.__getRuntime = exports.getAppContext = exports.routeFromAbsolute = exports.assumeTrustedRoute = exports.route = exports.SortOrder = exports.FilterConditions = exports.WhereConditions = exports.startsWith = exports.createRequestStargateAsApp = exports.__fetchProduct = exports.__requestAtlassianAsUser = exports.__requestAtlassianAsApp = exports.webTrigger = exports.storage = exports.invokeService = exports.invokeRemote = exports.requestBitbucket = exports.requestConfluence = exports.requestJira = exports.fetch = exports.authorize = exports.asApp = exports.asUser = exports.privacy = void 0;
|
|
4
4
|
const storage_1 = require("@forge/storage");
|
|
5
5
|
const authorization_1 = require("./authorization");
|
|
6
6
|
Object.defineProperty(exports, "authorize", { enumerable: true, get: function () { return authorization_1.authorize; } });
|
|
@@ -70,3 +70,5 @@ Object.defineProperty(exports, "isHostedCodeError", { enumerable: true, get: fun
|
|
|
70
70
|
Object.defineProperty(exports, "isExpectedError", { enumerable: true, get: function () { return errors_1.isExpectedError; } });
|
|
71
71
|
var i18n_1 = require("./api/i18n");
|
|
72
72
|
Object.defineProperty(exports, "i18n", { enumerable: true, get: function () { return i18n_1.i18n; } });
|
|
73
|
+
var permissions_1 = require("./api/permissions");
|
|
74
|
+
Object.defineProperty(exports, "permissions", { enumerable: true, get: function () { return permissions_1.permissions; } });
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/api",
|
|
3
|
-
"version": "6.1.
|
|
3
|
+
"version": "6.1.2-next.0",
|
|
4
4
|
"description": "Forge API methods",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
"@atlassian/ari": "^2.199.0",
|
|
17
17
|
"@atlassian/in-memory-metrics": "0.1.0",
|
|
18
18
|
"@atlassian/metrics-interface": "4.0.0",
|
|
19
|
-
"@forge/runtime": "6.0.
|
|
19
|
+
"@forge/runtime": "6.0.4-next.0",
|
|
20
20
|
"@types/node": "20.19.1",
|
|
21
21
|
"@types/node-fetch": "^2.6.12",
|
|
22
22
|
"expect-type": "^0.17.3",
|
|
@@ -28,8 +28,10 @@
|
|
|
28
28
|
"@forge/auth": "0.0.8",
|
|
29
29
|
"@forge/egress": "2.0.3",
|
|
30
30
|
"@forge/i18n": "0.0.7",
|
|
31
|
+
"@forge/manifest": "^10.6.0-next.3",
|
|
31
32
|
"@forge/storage": "2.0.2",
|
|
32
|
-
"headers-utils": "^3.0.2"
|
|
33
|
+
"headers-utils": "^3.0.2",
|
|
34
|
+
"minimatch": "^9.0.5"
|
|
33
35
|
},
|
|
34
36
|
"publishConfig": {
|
|
35
37
|
"registry": "https://packages.atlassian.com/api/npm/npm-public/"
|