@forge/resolver 1.7.1 → 1.8.0-experimental-04cc2b9
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 +18 -0
- package/LICENSE.txt +1 -1
- package/out/index.d.ts +40 -6
- package/out/index.d.ts.map +1 -1
- package/out/index.js +9 -2
- package/out/shared/index.d.ts +9 -6
- package/out/shared/index.d.ts.map +1 -1
- package/out/shared/index.js +3 -0
- package/package.json +12 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @forge/resolver
|
|
2
2
|
|
|
3
|
+
## 1.8.0-experimental-04cc2b9
|
|
4
|
+
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- d9ef926: Adds support for TypeScript 5
|
|
8
|
+
|
|
9
|
+
## 1.8.0
|
|
10
|
+
|
|
11
|
+
### Minor Changes
|
|
12
|
+
|
|
13
|
+
- 6b848cf: Added response and payload types and jsdoc to Resolver.define
|
|
14
|
+
|
|
15
|
+
## 1.8.0-next.0
|
|
16
|
+
|
|
17
|
+
### Minor Changes
|
|
18
|
+
|
|
19
|
+
- 6b848cf: Added response and payload types and jsdoc to Resolver.define
|
|
20
|
+
|
|
3
21
|
## 1.7.1
|
|
4
22
|
|
|
5
23
|
### Patch Changes
|
package/LICENSE.txt
CHANGED
package/out/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { Context, DefArgument, DefResult, Definitions, Request } from './shared';
|
|
2
2
|
export { Request };
|
|
3
|
-
|
|
3
|
+
type InvokePayload<Argument> = {
|
|
4
4
|
call: {
|
|
5
5
|
functionKey: string;
|
|
6
6
|
payload?: Argument;
|
|
@@ -8,21 +8,55 @@ declare type InvokePayload<Argument> = {
|
|
|
8
8
|
};
|
|
9
9
|
context: Context;
|
|
10
10
|
};
|
|
11
|
-
export
|
|
11
|
+
export type Response = {
|
|
12
12
|
[key: string]: any;
|
|
13
13
|
} | string | void;
|
|
14
|
-
export
|
|
15
|
-
|
|
14
|
+
export type ResolverFunction<Argument = any, Result = Response> = (request: Request<Argument>) => Promise<Result> | Result;
|
|
15
|
+
type DefinitionsHandler = (payload: InvokePayload<unknown>, backendRuntimePayload?: Record<string, any>) => Promise<unknown>;
|
|
16
16
|
export default class Resolver {
|
|
17
17
|
private functions;
|
|
18
18
|
constructor();
|
|
19
|
-
define(functionKey: string, cb: ResolverFunction<
|
|
19
|
+
define(functionKey: string, cb: ResolverFunction<any, any>): this;
|
|
20
|
+
/**
|
|
21
|
+
* Defines a resolver with explicit payload and return types.
|
|
22
|
+
*
|
|
23
|
+
* The first generic is the payload shape and the second generic is the return type.
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* type Payload = { name: string };
|
|
27
|
+
* type Response = { message: string };
|
|
28
|
+
* resolver.define<Payload, Response>('greet', ({ payload }) => ({
|
|
29
|
+
* message: `Hello ${payload.name}`
|
|
30
|
+
* }));
|
|
31
|
+
*/
|
|
32
|
+
define<Payload, Result = Response>(functionKey: string, cb: ResolverFunction<Payload, Result>): this;
|
|
33
|
+
/**
|
|
34
|
+
* Defines a resolver using the return-only generic form.
|
|
35
|
+
*
|
|
36
|
+
* The single type argument is the return type.
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* type Response = { message: string };
|
|
40
|
+
* resolver.define<Response>('greet', () => ({ message: 'ok' }));
|
|
41
|
+
*/
|
|
42
|
+
define<Result = Response>(functionKey: string, cb: ResolverFunction<any, Result>): this;
|
|
20
43
|
private getFunction;
|
|
21
44
|
private sanitizeObject;
|
|
22
45
|
getDefinitions(): DefinitionsHandler;
|
|
23
46
|
}
|
|
24
|
-
|
|
47
|
+
/**
|
|
48
|
+
* Given a type specialising Definitions shared between frontend and backend,
|
|
49
|
+
* Handlers will return a type for a record of resolver functions that are
|
|
50
|
+
* needed to implement this on the backend.
|
|
51
|
+
*/
|
|
52
|
+
export type Handlers<D extends Definitions> = {
|
|
25
53
|
[Def in keyof D & string]: ResolverFunction<DefArgument<D, Def>, DefResult<D, Def>>;
|
|
26
54
|
};
|
|
55
|
+
/**
|
|
56
|
+
* Creates resolver definitions corresponding to a given Definitions type.
|
|
57
|
+
*
|
|
58
|
+
* @param handlers Resolver functions implementing the definitions
|
|
59
|
+
* @returns Resolver definitions
|
|
60
|
+
*/
|
|
27
61
|
export declare function makeResolver<D extends Definitions>(handlers: Handlers<D>): DefinitionsHandler;
|
|
28
62
|
//# 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":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,WAAW,EAAE,OAAO,EAAE,MAAM,UAAU,CAAC;AAEtF,OAAO,EAAE,OAAO,EAAE,CAAC;AAEnB,
|
|
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,KAAK,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,MAAM,MAAM,QAAQ,GAAG;IAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAAC;AAE9D,MAAM,MAAM,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,KAAK,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,GAAG,EAAE,GAAG,CAAC,GAAG,IAAI;IAExE;;;;;;;;;;;OAWG;IACI,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,CAAC,GAAG,IAAI;IAE3G;;;;;;;;OAQG;IACI,MAAM,CAAC,MAAM,GAAG,QAAQ,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,EAAE,gBAAgB,CAAC,GAAG,EAAE,MAAM,CAAC,GAAG,IAAI;IAe9F,OAAO,CAAC,WAAW;IAOnB,OAAO,CAAC,cAAc;IAIf,cAAc,IAAI,kBAAkB;CAyB5C;AAED;;;;GAIG;AACH,MAAM,MAAM,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;AAEF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAM7F"}
|
package/out/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.makeResolver =
|
|
3
|
+
exports.makeResolver = makeResolver;
|
|
4
4
|
class Resolver {
|
|
5
5
|
functions;
|
|
6
6
|
constructor() {
|
|
@@ -13,6 +13,8 @@ class Resolver {
|
|
|
13
13
|
if (functionKey in this.functions) {
|
|
14
14
|
throw new Error(`Resolver definition '${functionKey}' already exists.`);
|
|
15
15
|
}
|
|
16
|
+
// Individual resolver functions are not type-checked inside the array. The
|
|
17
|
+
// types are only checked when adding them via makeResolver.
|
|
16
18
|
this.functions[functionKey] = cb;
|
|
17
19
|
return this;
|
|
18
20
|
}
|
|
@@ -47,6 +49,12 @@ class Resolver {
|
|
|
47
49
|
}
|
|
48
50
|
}
|
|
49
51
|
exports.default = Resolver;
|
|
52
|
+
/**
|
|
53
|
+
* Creates resolver definitions corresponding to a given Definitions type.
|
|
54
|
+
*
|
|
55
|
+
* @param handlers Resolver functions implementing the definitions
|
|
56
|
+
* @returns Resolver definitions
|
|
57
|
+
*/
|
|
50
58
|
function makeResolver(handlers) {
|
|
51
59
|
const resolver = new Resolver();
|
|
52
60
|
for (const key of Object.keys(handlers)) {
|
|
@@ -54,4 +62,3 @@ function makeResolver(handlers) {
|
|
|
54
62
|
}
|
|
55
63
|
return resolver.getDefinitions();
|
|
56
64
|
}
|
|
57
|
-
exports.makeResolver = makeResolver;
|
package/out/shared/index.d.ts
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Internal types shared between @forge/resolver and @forge/bridge.
|
|
3
|
+
*/
|
|
4
|
+
export type Context = {
|
|
2
5
|
[key: string]: any;
|
|
3
6
|
};
|
|
4
|
-
export
|
|
7
|
+
export type Request<Argument = any> = {
|
|
5
8
|
payload: Argument;
|
|
6
9
|
context: Context;
|
|
7
10
|
};
|
|
8
|
-
export
|
|
9
|
-
export
|
|
10
|
-
export
|
|
11
|
-
export
|
|
11
|
+
export type Definitions = Record<string, (i: never) => unknown>;
|
|
12
|
+
export type DefArguments<D extends Definitions, Def extends keyof D & string> = Parameters<D[Def]> extends [] ? [] : [Parameters<D[Def]>[0]];
|
|
13
|
+
export type DefArgument<D extends Definitions, Def extends keyof D & string> = DefArguments<D, Def>[0];
|
|
14
|
+
export type DefResult<D extends Definitions, Def extends keyof D & string> = Awaited<ReturnType<D[Def]>>;
|
|
12
15
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,MAAM,OAAO,GAAG;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,OAAO,CAAC,QAAQ,GAAG,GAAG,IAAI;IACpC,OAAO,EAAE,QAAQ,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB,CAAC;AAIF,MAAM,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC,EAAE,KAAK,KAAK,OAAO,CAAC,CAAC;AAIhE,MAAM,MAAM,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,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,WAAW,EAAE,GAAG,SAAS,MAAM,CAAC,GAAG,MAAM,IAAI,YAAY,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;AACvG,MAAM,MAAM,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/out/shared/index.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@forge/resolver",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0-experimental-04cc2b9",
|
|
4
4
|
"description": "Forge function resolver",
|
|
5
5
|
"author": "Atlassian",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE.txt",
|
|
@@ -23,5 +23,16 @@
|
|
|
23
23
|
},
|
|
24
24
|
"publishConfig": {
|
|
25
25
|
"registry": "https://packages.atlassian.com/api/npm/npm-public/"
|
|
26
|
+
},
|
|
27
|
+
"peerDependencies": {
|
|
28
|
+
"typescript": ">=5.0.0"
|
|
29
|
+
},
|
|
30
|
+
"peerDependenciesMeta": {
|
|
31
|
+
"typescript": {
|
|
32
|
+
"optional": true
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
"devDependencies": {
|
|
36
|
+
"typescript": "5.9.2"
|
|
26
37
|
}
|
|
27
38
|
}
|