@forge/resolver 1.7.1-next.0-experimental-ab371ba → 1.8.0-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 CHANGED
@@ -1,6 +1,12 @@
1
1
  # @forge/resolver
2
2
 
3
- ## 1.7.1-next.0-experimental-ab371ba
3
+ ## 1.8.0-next.0
4
+
5
+ ### Minor Changes
6
+
7
+ - 6b848cf: Added response and payload types and jsdoc to Resolver.define
8
+
9
+ ## 1.7.1
4
10
 
5
11
  ### Patch Changes
6
12
 
package/LICENSE.txt CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2025 Atlassian
1
+ Copyright (c) 2026 Atlassian
2
2
  Permission is hereby granted to use this software in accordance with the terms
3
3
  and conditions outlined in the Atlassian Developer Terms, which can be found
4
4
  at the following URL:
package/out/index.d.ts CHANGED
@@ -16,13 +16,47 @@ declare type DefinitionsHandler = (payload: InvokePayload<unknown>, backendRunti
16
16
  export default class Resolver {
17
17
  private functions;
18
18
  constructor();
19
- define(functionKey: string, cb: ResolverFunction<never, unknown>): this;
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
  }
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
+ */
24
52
  export declare 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
@@ -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,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"}
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,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,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;AAEF;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,CAAC,SAAS,WAAW,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAC,GAAG,kBAAkB,CAM7F"}
package/out/index.js CHANGED
@@ -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)) {
@@ -1,3 +1,6 @@
1
+ /**
2
+ * Internal types shared between @forge/resolver and @forge/bridge.
3
+ */
1
4
  export declare type Context = {
2
5
  [key: string]: any;
3
6
  };
@@ -1 +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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shared/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,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"}
@@ -1,2 +1,5 @@
1
1
  "use strict";
2
+ /**
3
+ * Internal types shared between @forge/resolver and @forge/bridge.
4
+ */
2
5
  Object.defineProperty(exports, "__esModule", { value: true });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@forge/resolver",
3
- "version": "1.7.1-next.0-experimental-ab371ba",
3
+ "version": "1.8.0-next.0",
4
4
  "description": "Forge function resolver",
5
5
  "author": "Atlassian",
6
6
  "license": "SEE LICENSE IN LICENSE.txt",