@forge/resolver 1.6.16 → 1.7.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 +13 -0
- package/out/index.d.ts +15 -21
- package/out/index.d.ts.map +1 -1
- package/out/index.js +12 -29
- package/out/shared/index.d.ts +12 -0
- package/out/shared/index.d.ts.map +1 -0
- package/out/shared/index.js +2 -0
- package/package.json +7 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# @forge/resolver
|
|
2
2
|
|
|
3
|
+
## 1.7.0-next.1
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 1a5bad3: Typed interface for invoking resolvers
|
|
8
|
+
|
|
9
|
+
## 1.6.17-next.0
|
|
10
|
+
|
|
11
|
+
### Patch Changes
|
|
12
|
+
|
|
13
|
+
- Updated dependencies [518c490]
|
|
14
|
+
- @forge/api@6.1.0-next.0
|
|
15
|
+
|
|
3
16
|
## 1.6.16
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
package/out/index.d.ts
CHANGED
|
@@ -1,34 +1,28 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Context, DefArgument, DefResult, Definitions, Request } from './shared';
|
|
2
|
+
export { Request };
|
|
3
|
+
declare type InvokePayload<Argument> = {
|
|
2
4
|
call: {
|
|
3
5
|
functionKey: string;
|
|
4
|
-
payload?:
|
|
5
|
-
[key in number | string]: any;
|
|
6
|
-
};
|
|
6
|
+
payload?: Argument;
|
|
7
7
|
jobId?: string;
|
|
8
8
|
};
|
|
9
|
-
context:
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
}
|
|
13
|
-
export interface Request {
|
|
14
|
-
payload: {
|
|
15
|
-
[key in number | string]: any;
|
|
16
|
-
};
|
|
17
|
-
context: InvokePayload['context'];
|
|
18
|
-
}
|
|
19
|
-
interface ResponseObject {
|
|
9
|
+
context: Context;
|
|
10
|
+
};
|
|
11
|
+
export declare type Response = {
|
|
20
12
|
[key: string]: any;
|
|
21
|
-
}
|
|
22
|
-
export declare type Response =
|
|
23
|
-
|
|
24
|
-
declare type DefinitionsHandler = (payload: InvokePayload, backendRuntimePayload?: Request['payload']) => Promise<ReturnType<ResolverFunction>>;
|
|
13
|
+
} | string | void;
|
|
14
|
+
export declare type ResolverFunction<Argument = any, Result = Response> = (request: Request<Argument>) => Promise<Result> | Result;
|
|
15
|
+
declare type DefinitionsHandler = (payload: InvokePayload<unknown>, backendRuntimePayload?: Record<string, any>) => Promise<unknown>;
|
|
25
16
|
export default class Resolver {
|
|
26
17
|
private functions;
|
|
27
18
|
constructor();
|
|
28
|
-
define(functionKey: string, cb: ResolverFunction): this;
|
|
19
|
+
define(functionKey: string, cb: ResolverFunction<never, unknown>): this;
|
|
29
20
|
private getFunction;
|
|
30
21
|
private sanitizeObject;
|
|
31
22
|
getDefinitions(): DefinitionsHandler;
|
|
32
23
|
}
|
|
33
|
-
export {
|
|
24
|
+
export declare type Handlers<D extends Definitions> = {
|
|
25
|
+
[Def in keyof D & string]: ResolverFunction<DefArgument<D, Def>, DefResult<D, Def>>;
|
|
26
|
+
};
|
|
27
|
+
export declare function makeResolver<D extends Definitions>(handlers: Handlers<D>): DefinitionsHandler;
|
|
34
28
|
//# 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":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEtF,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,aAAK,aAAa,CAAC,QAAQ,IAAI;IAC7B,IAAI,EAAE;QACJ,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,CAAC,EAAE,QAAQ,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,oBAAY,QAAQ,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAAC;AAE9D,oBAAY,gBAAgB,CAAC,QAAQ,GAAG,GAAG,EAAE,MAAM,GAAG,QAAQ,IAAI,CAChE,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,KACvB,OAAO,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC;AAE9B,aAAK,kBAAkB,GAAG,CACxB,OAAO,EAAE,aAAa,CAAC,OAAO,CAAC,EAC/B,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KACxC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEtB,MAAM,CAAC,OAAO,OAAO,QAAQ;IAC3B,OAAO,CAAC,SAAS,CAAqD;;IAM/D,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,GAAG,IAAI;IAa9E,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,cAAc;IAIf,cAAc,IAAI,kBAAkB;CAyB5C;AAOD,oBAAY,QAAQ,CAAC,CAAC,SAAS,WAAW,IAAI;KAC3C,GAAG,IAAI,MAAM,CAAC,GAAG,MAAM,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;CACpF,CAAC;AAQF,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAM7F"}
|
package/out/index.js
CHANGED
|
@@ -1,34 +1,10 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
|
|
4
|
-
const isRequestPayload = (request) => {
|
|
5
|
-
return typeof request.payload === 'object' && request.payload.product && request.payload.fetchUrl;
|
|
6
|
-
};
|
|
7
|
-
const defaultFunctions = {
|
|
8
|
-
__request: async (request) => {
|
|
9
|
-
if (!isRequestPayload(request)) {
|
|
10
|
-
throw new Error('Invalid payload specified for request');
|
|
11
|
-
}
|
|
12
|
-
const { payload } = request;
|
|
13
|
-
const productApis = {
|
|
14
|
-
jira: (0, api_1.asUser)().requestJira,
|
|
15
|
-
confluence: (0, api_1.asUser)().requestConfluence
|
|
16
|
-
};
|
|
17
|
-
const response = await productApis[payload.product]((0, api_1.assumeTrustedRoute)(payload.fetchUrl), payload.fetchOptions);
|
|
18
|
-
let body = await response.text();
|
|
19
|
-
try {
|
|
20
|
-
body = JSON.parse(body);
|
|
21
|
-
}
|
|
22
|
-
catch (e) { }
|
|
23
|
-
return { ...response, body };
|
|
24
|
-
}
|
|
25
|
-
};
|
|
3
|
+
exports.makeResolver = void 0;
|
|
26
4
|
class Resolver {
|
|
27
5
|
functions;
|
|
28
6
|
constructor() {
|
|
29
|
-
this.functions = {
|
|
30
|
-
...defaultFunctions
|
|
31
|
-
};
|
|
7
|
+
this.functions = {};
|
|
32
8
|
}
|
|
33
9
|
define(functionKey, cb) {
|
|
34
10
|
if (!cb || typeof cb !== 'function') {
|
|
@@ -50,10 +26,10 @@ class Resolver {
|
|
|
50
26
|
return JSON.parse(JSON.stringify(object));
|
|
51
27
|
}
|
|
52
28
|
getDefinitions() {
|
|
53
|
-
|
|
29
|
+
return async ({ call: { functionKey, payload, jobId }, context }, backendRuntimePayload) => {
|
|
54
30
|
const cb = this.getFunction(functionKey);
|
|
55
31
|
const result = await cb({
|
|
56
|
-
payload:
|
|
32
|
+
payload: payload || {},
|
|
57
33
|
context: {
|
|
58
34
|
...context,
|
|
59
35
|
installContext: backendRuntimePayload?.installContext,
|
|
@@ -68,7 +44,14 @@ class Resolver {
|
|
|
68
44
|
}
|
|
69
45
|
return result;
|
|
70
46
|
};
|
|
71
|
-
return resolve;
|
|
72
47
|
}
|
|
73
48
|
}
|
|
74
49
|
exports.default = Resolver;
|
|
50
|
+
function makeResolver(handlers) {
|
|
51
|
+
const resolver = new Resolver();
|
|
52
|
+
for (const key of Object.keys(handlers)) {
|
|
53
|
+
resolver.define(key, handlers[key]);
|
|
54
|
+
}
|
|
55
|
+
return resolver.getDefinitions();
|
|
56
|
+
}
|
|
57
|
+
exports.makeResolver = makeResolver;
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export declare type Context = {
|
|
2
|
+
[key: string]: any;
|
|
3
|
+
};
|
|
4
|
+
export declare type Request<Argument = any> = {
|
|
5
|
+
payload: Argument;
|
|
6
|
+
context: Context;
|
|
7
|
+
};
|
|
8
|
+
export declare type Definitions = Record<string, (i: never) => unknown>;
|
|
9
|
+
export declare type DefArguments<D extends Definitions, Def extends keyof D & string> = Parameters<D[Def]> extends [] ? [] : [Parameters<D[Def]>[0]];
|
|
10
|
+
export declare type DefArgument<D extends Definitions, Def extends keyof D & string> = DefArguments<D, Def>[0];
|
|
11
|
+
export declare type DefResult<D extends Definitions, Def extends keyof D & string> = Awaited<ReturnType<D[Def]>>;
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAIA,oBAAY,OAAO,GAAG;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,oBAAY,OAAO,CAAC,QAAQ,GAAG,GAAG,IAAI;IACpC,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAIF,oBAAY,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC;AAIhE,oBAAY,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,SAAS,MAAM,CAAC,GAAG,MAAM,IAC1E,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAC/D,oBAAY,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,SAAS,MAAM,CAAC,GAAG,MAAM,IAAI,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvG,oBAAY,SAAS,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,SAAS,MAAM,CAAC,GAAG,MAAM,IAAI,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,19 +1,22 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/resolver",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.7.0-next.1",
|
|
4
4
|
"description": "Forge function resolver",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
7
7
|
"main": "out/index.js",
|
|
8
8
|
"types": "out/index.d.ts",
|
|
9
|
+
"exports": {
|
|
10
|
+
"./shared": {
|
|
11
|
+
"types": "./out/shared/index.d.ts",
|
|
12
|
+
"default": "./out/shared/index.js"
|
|
13
|
+
}
|
|
14
|
+
},
|
|
9
15
|
"scripts": {
|
|
10
16
|
"build": "yarn run clean && yarn run compile",
|
|
11
17
|
"clean": "rm -rf ./out && rm -f tsconfig.tsbuildinfo",
|
|
12
18
|
"compile": "tsc -b -v"
|
|
13
19
|
},
|
|
14
|
-
"dependencies": {
|
|
15
|
-
"@forge/api": "6.0.3"
|
|
16
|
-
},
|
|
17
20
|
"publishConfig": {
|
|
18
21
|
"registry": "https://packages.atlassian.com/api/npm/npm-public/"
|
|
19
22
|
}
|