@opendatalabs/connect 0.5.0 → 0.6.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.
Files changed (68) hide show
  1. package/README.md +149 -49
  2. package/dist/core/constants.d.ts +28 -2
  3. package/dist/core/constants.d.ts.map +1 -1
  4. package/dist/core/constants.js +23 -2
  5. package/dist/core/constants.js.map +1 -1
  6. package/dist/core/errors.d.ts +43 -2
  7. package/dist/core/errors.d.ts.map +1 -1
  8. package/dist/core/errors.js +39 -0
  9. package/dist/core/errors.js.map +1 -1
  10. package/dist/core/grants.d.ts +19 -0
  11. package/dist/core/grants.d.ts.map +1 -0
  12. package/dist/core/grants.js +31 -0
  13. package/dist/core/grants.js.map +1 -0
  14. package/dist/core/index.d.ts +3 -2
  15. package/dist/core/index.d.ts.map +1 -1
  16. package/dist/core/index.js +3 -2
  17. package/dist/core/index.js.map +1 -1
  18. package/dist/core/types.d.ts +61 -0
  19. package/dist/core/types.d.ts.map +1 -1
  20. package/dist/react/ConnectButton.d.ts +15 -0
  21. package/dist/react/ConnectButton.d.ts.map +1 -1
  22. package/dist/react/ConnectButton.js +8 -1
  23. package/dist/react/ConnectButton.js.map +1 -1
  24. package/dist/react/index.d.ts +1 -0
  25. package/dist/react/index.d.ts.map +1 -1
  26. package/dist/react/index.js +1 -0
  27. package/dist/react/index.js.map +1 -1
  28. package/dist/react/useVanaConnect.d.ts +33 -0
  29. package/dist/react/useVanaConnect.d.ts.map +1 -1
  30. package/dist/react/useVanaConnect.js +29 -3
  31. package/dist/react/useVanaConnect.js.map +1 -1
  32. package/dist/react/useVanaData.d.ts +67 -0
  33. package/dist/react/useVanaData.d.ts.map +1 -0
  34. package/dist/react/useVanaData.js +125 -0
  35. package/dist/react/useVanaData.js.map +1 -0
  36. package/dist/server/config.d.ts +36 -0
  37. package/dist/server/config.d.ts.map +1 -0
  38. package/dist/server/config.js +44 -0
  39. package/dist/server/config.js.map +1 -0
  40. package/dist/server/connect.d.ts +40 -1
  41. package/dist/server/connect.d.ts.map +1 -1
  42. package/dist/server/connect.js +46 -5
  43. package/dist/server/connect.js.map +1 -1
  44. package/dist/server/data-client.d.ts +17 -0
  45. package/dist/server/data-client.d.ts.map +1 -1
  46. package/dist/server/data-client.js +24 -7
  47. package/dist/server/data-client.js.map +1 -1
  48. package/dist/server/index.d.ts +2 -0
  49. package/dist/server/index.d.ts.map +1 -1
  50. package/dist/server/index.js +2 -0
  51. package/dist/server/index.js.map +1 -1
  52. package/dist/server/manifest-signer.d.ts +22 -0
  53. package/dist/server/manifest-signer.d.ts.map +1 -1
  54. package/dist/server/manifest-signer.js +22 -0
  55. package/dist/server/manifest-signer.js.map +1 -1
  56. package/dist/server/request-signer.d.ts +18 -0
  57. package/dist/server/request-signer.d.ts.map +1 -1
  58. package/dist/server/request-signer.js +6 -0
  59. package/dist/server/request-signer.js.map +1 -1
  60. package/dist/server/session-relay.d.ts +22 -0
  61. package/dist/server/session-relay.d.ts.map +1 -1
  62. package/dist/server/session-relay.js +12 -4
  63. package/dist/server/session-relay.js.map +1 -1
  64. package/dist/server/webhook.d.ts +11 -0
  65. package/dist/server/webhook.d.ts.map +1 -0
  66. package/dist/server/webhook.js +18 -0
  67. package/dist/server/webhook.js.map +1 -0
  68. package/package.json +2 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/server/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAUnE;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAKhC;IACC,IAAI,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC;QACvB,MAAM,IAAI,YAAY,CACpB,qDAAqD,EACrD,gBAAgB,CAAC,cAAc,CAChC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;QACxC,MAAM,IAAI,YAAY,CACpB,gCAAgC,EAChC,gBAAgB,CAAC,cAAc,CAChC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,YAAY,CACpB,0DAA0D,EAC1D,gBAAgB,CAAC,cAAc,CAChC,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,YAAY,CACpB,2DAA2D,EAC3D,gBAAgB,CAAC,cAAc,CAChC,CAAC;IACJ,CAAC;IAED,OAAO;QACL,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,WAAW,EAAE,MAAM,CAAC,WAAW;KAChC,CAAC;AACJ,CAAC"}
@@ -1,4 +1,43 @@
1
1
  import type { ConnectConfig, GetDataConfig, SessionInitResult } from "../core/types.js";
2
+ /**
3
+ * Creates a session on the Session Relay and returns the session ID and deep link URL.
4
+ *
5
+ * This is the entry point for the Vana Connect flow. The returned `deepLinkUrl`
6
+ * should be presented to the user to open the Vana Desktop App.
7
+ *
8
+ * @param config - Connection configuration including private key and scopes.
9
+ * @returns Session ID, deep link URL, and expiration timestamp.
10
+ * @throws {@link ConnectError} with code `SESSION_INIT_FAILED` if the relay rejects the request.
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const session = await connect({
15
+ * privateKey: process.env.VANA_PRIVATE_KEY as `0x${string}`,
16
+ * scopes: ["chatgpt.conversations"],
17
+ * });
18
+ * // session.sessionId, session.deepLinkUrl, session.expiresAt
19
+ * ```
20
+ */
2
21
  export declare function connect(config: ConnectConfig): Promise<SessionInitResult>;
3
- export declare function getData(config: GetDataConfig): Promise<Map<string, unknown>>;
22
+ /**
23
+ * Fetches user data from their Personal Server using a signed grant.
24
+ *
25
+ * Resolves the server URL via the Data Portability Gateway, then fetches
26
+ * data for each scope in the grant concurrently.
27
+ *
28
+ * @param config - Data fetch configuration including private key and grant.
29
+ * @returns A `Record` keyed by scope name with the fetched data as values.
30
+ * @throws {@link ConnectError} with code `SERVER_NOT_FOUND` if no server is registered.
31
+ * @throws {@link ConnectError} with code `DATA_FETCH_FAILED` if a scope fetch fails.
32
+ *
33
+ * @example
34
+ * ```typescript
35
+ * const data = await getData({
36
+ * privateKey: process.env.VANA_PRIVATE_KEY as `0x${string}`,
37
+ * grant,
38
+ * });
39
+ * const conversations = data["chatgpt.conversations"];
40
+ * ```
41
+ */
42
+ export declare function getData(config: GetDataConfig): Promise<Record<string, unknown>>;
4
43
  //# sourceMappingURL=connect.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/server/connect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAK1B,wBAAsB,OAAO,CAC3B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAe5B;AAED,wBAAsB,OAAO,CAC3B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA6B/B"}
1
+ {"version":3,"file":"connect.d.ts","sourceRoot":"","sources":["../../src/server/connect.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EACb,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAK1B;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAsB,OAAO,CAC3B,MAAM,EAAE,aAAa,GACpB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA8BlC"}
@@ -1,14 +1,34 @@
1
- import { SESSION_RELAY_URL, GATEWAY_URL } from "../core/constants.js";
1
+ import { getEnvConfig } from "../core/constants.js";
2
2
  import { createRequestSigner } from "./request-signer.js";
3
3
  import { createSessionRelay } from "./session-relay.js";
4
4
  import { createDataClient } from "./data-client.js";
5
+ /**
6
+ * Creates a session on the Session Relay and returns the session ID and deep link URL.
7
+ *
8
+ * This is the entry point for the Vana Connect flow. The returned `deepLinkUrl`
9
+ * should be presented to the user to open the Vana Desktop App.
10
+ *
11
+ * @param config - Connection configuration including private key and scopes.
12
+ * @returns Session ID, deep link URL, and expiration timestamp.
13
+ * @throws {@link ConnectError} with code `SESSION_INIT_FAILED` if the relay rejects the request.
14
+ *
15
+ * @example
16
+ * ```typescript
17
+ * const session = await connect({
18
+ * privateKey: process.env.VANA_PRIVATE_KEY as `0x${string}`,
19
+ * scopes: ["chatgpt.conversations"],
20
+ * });
21
+ * // session.sessionId, session.deepLinkUrl, session.expiresAt
22
+ * ```
23
+ */
5
24
  export async function connect(config) {
25
+ const { sessionRelayUrl } = getEnvConfig(config.environment);
6
26
  const signer = createRequestSigner({ privateKey: config.privateKey });
7
27
  const granteeAddress = signer.address;
8
28
  const relay = createSessionRelay({
9
29
  privateKey: config.privateKey,
10
30
  granteeAddress,
11
- sessionRelayUrl: SESSION_RELAY_URL,
31
+ sessionRelayUrl,
12
32
  });
13
33
  return relay.initSession({
14
34
  scopes: config.scopes,
@@ -16,11 +36,32 @@ export async function connect(config) {
16
36
  appUserId: config.appUserId,
17
37
  });
18
38
  }
39
+ /**
40
+ * Fetches user data from their Personal Server using a signed grant.
41
+ *
42
+ * Resolves the server URL via the Data Portability Gateway, then fetches
43
+ * data for each scope in the grant concurrently.
44
+ *
45
+ * @param config - Data fetch configuration including private key and grant.
46
+ * @returns A `Record` keyed by scope name with the fetched data as values.
47
+ * @throws {@link ConnectError} with code `SERVER_NOT_FOUND` if no server is registered.
48
+ * @throws {@link ConnectError} with code `DATA_FETCH_FAILED` if a scope fetch fails.
49
+ *
50
+ * @example
51
+ * ```typescript
52
+ * const data = await getData({
53
+ * privateKey: process.env.VANA_PRIVATE_KEY as `0x${string}`,
54
+ * grant,
55
+ * });
56
+ * const conversations = data["chatgpt.conversations"];
57
+ * ```
58
+ */
19
59
  export async function getData(config) {
60
+ const { gatewayUrl } = getEnvConfig(config.environment);
20
61
  const { grant } = config;
21
62
  const dataClient = createDataClient({
22
63
  privateKey: config.privateKey,
23
- gatewayUrl: GATEWAY_URL,
64
+ gatewayUrl,
24
65
  });
25
66
  const serverUrl = await dataClient.resolveServerUrl(grant.serverAddress ?? grant.userAddress);
26
67
  const results = await Promise.all(grant.scopes.map(async (scope) => {
@@ -31,9 +72,9 @@ export async function getData(config) {
31
72
  });
32
73
  return [scope, result];
33
74
  }));
34
- const data = new Map();
75
+ const data = {};
35
76
  for (const [scope, result] of results) {
36
- data.set(scope, result);
77
+ data[scope] = result;
37
78
  }
38
79
  return data;
39
80
  }
@@ -1 +1 @@
1
- {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/server/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAMtE,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAqB;IAErB,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;IAEtC,MAAM,KAAK,GAAG,kBAAkB,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc;QACd,eAAe,EAAE,iBAAiB;KACnC,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,WAAW,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAqB;IAErB,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEzB,MAAM,UAAU,GAAG,gBAAgB,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU,EAAE,WAAW;KACxB,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,gBAAgB,CACjD,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,WAAW,CACzC,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC;YACxC,SAAS;YACT,KAAK;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,EAAE,MAAM,CAAU,CAAC;IAClC,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,IAAI,GAAG,IAAI,GAAG,EAAmB,CAAC;IACxC,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"connect.js","sourceRoot":"","sources":["../../src/server/connect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAMpD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAqB;IAErB,MAAM,EAAE,eAAe,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,mBAAmB,CAAC,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACtE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC;IAEtC,MAAM,KAAK,GAAG,kBAAkB,CAAC;QAC/B,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,cAAc;QACd,eAAe;KAChB,CAAC,CAAC;IAEH,OAAO,KAAK,CAAC,WAAW,CAAC;QACvB,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,MAAqB;IAErB,MAAM,EAAE,UAAU,EAAE,GAAG,YAAY,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IACxD,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,CAAC;IAEzB,MAAM,UAAU,GAAG,gBAAgB,CAAC;QAClC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,UAAU;KACX,CAAC,CAAC;IAEH,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,gBAAgB,CACjD,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,WAAW,CACzC,CAAC;IAEF,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,CAC/B,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC/B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,SAAS,CAAC;YACxC,SAAS;YACT,KAAK;YACL,OAAO,EAAE,KAAK,CAAC,OAAO;SACvB,CAAC,CAAC;QACH,OAAO,CAAC,KAAK,EAAE,MAAM,CAAU,CAAC;IAClC,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,IAAI,GAA4B,EAAE,CAAC;IACzC,KAAK,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;IACvB,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,14 +1,31 @@
1
1
  import type { DataClientConfig, DataFetchParams } from "../core/types.js";
2
+ /**
3
+ * Low-level client for the Data Portability Gateway and Personal Servers.
4
+ *
5
+ * @see {@link createDataClient} to create an instance.
6
+ */
2
7
  export interface DataClient {
8
+ /** Resolves a user's Personal Server URL via the gateway. */
3
9
  resolveServerUrl(userAddress: string): Promise<string>;
10
+ /** Fetches data for a single scope from a Personal Server. */
4
11
  fetchData(params: DataFetchParams): Promise<unknown>;
12
+ /** Lists available scopes on a Personal Server. */
5
13
  listScopes(params: {
6
14
  serverUrl: string;
7
15
  }): Promise<unknown>;
16
+ /** Lists available versions for a scope on a Personal Server. */
8
17
  listVersions(params: {
9
18
  serverUrl: string;
10
19
  scope: string;
11
20
  }): Promise<unknown>;
12
21
  }
22
+ /**
23
+ * Creates a low-level Data Gateway / Personal Server client.
24
+ *
25
+ * Prefer the high-level {@link getData} function for most use cases.
26
+ *
27
+ * @param config - Data client configuration.
28
+ * @returns A {@link DataClient} instance.
29
+ */
13
30
  export declare function createDataClient(config: DataClientConfig): DataClient;
14
31
  //# sourceMappingURL=data-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"data-client.d.ts","sourceRoot":"","sources":["../../src/server/data-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAG1E,MAAM,WAAW,UAAU;IACzB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,UAAU,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,YAAY,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9E;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CAiHrE"}
1
+ {"version":3,"file":"data-client.d.ts","sourceRoot":"","sources":["../../src/server/data-client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAG1E;;;;GAIG;AACH,MAAM,WAAW,UAAU;IACzB,6DAA6D;IAC7D,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,8DAA8D;IAC9D,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrD,mDAAmD;IACnD,UAAU,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC5D,iEAAiE;IACjE,YAAY,CAAC,MAAM,EAAE;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC9E;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,UAAU,CA0HrE"}
@@ -1,5 +1,13 @@
1
- import { ConnectError } from "../core/errors.js";
1
+ import { ConnectError, ConnectErrorCode } from "../core/errors.js";
2
2
  import { createRequestSigner } from "./request-signer.js";
3
+ /**
4
+ * Creates a low-level Data Gateway / Personal Server client.
5
+ *
6
+ * Prefer the high-level {@link getData} function for most use cases.
7
+ *
8
+ * @param config - Data client configuration.
9
+ * @returns A {@link DataClient} instance.
10
+ */
3
11
  export function createDataClient(config) {
4
12
  const gatewayBase = config.gatewayUrl.replace(/\/+$/, "");
5
13
  const signer = createRequestSigner({ privateKey: config.privateKey });
@@ -7,10 +15,10 @@ export function createDataClient(config) {
7
15
  async resolveServerUrl(userAddress) {
8
16
  const res = await fetch(`${gatewayBase}/v1/servers/${userAddress}`);
9
17
  if (res.status === 404) {
10
- throw new ConnectError(`No server registered for ${userAddress}`, "SERVER_NOT_FOUND", 404);
18
+ throw new ConnectError(`No server registered for ${userAddress}`, ConnectErrorCode.SERVER_NOT_FOUND, 404);
11
19
  }
12
20
  if (!res.ok) {
13
- throw new ConnectError(`Gateway error: ${res.status}`, "GATEWAY_ERROR", res.status);
21
+ throw new ConnectError(`Gateway error: ${res.status}`, ConnectErrorCode.GATEWAY_ERROR, res.status);
14
22
  }
15
23
  const envelope = (await res.json());
16
24
  return envelope.data.serverUrl;
@@ -30,11 +38,20 @@ export function createDataClient(config) {
30
38
  uri,
31
39
  grantId: params.grantId,
32
40
  });
33
- const res = await fetch(`${base}${uri}`, {
41
+ const url = `${base}${uri}`;
42
+ const res = await fetch(url, {
34
43
  headers: { Authorization: authHeader },
35
44
  });
36
45
  if (!res.ok) {
37
- throw new ConnectError(`Data fetch failed: ${res.status}`, "DATA_FETCH_FAILED", res.status);
46
+ const body = await res.text().catch(() => "(unreadable)");
47
+ console.error("[data-client] fetchData failed", {
48
+ status: res.status,
49
+ url,
50
+ scope: params.scope,
51
+ grantId: params.grantId,
52
+ body,
53
+ });
54
+ throw new ConnectError(`Data fetch failed: ${res.status}`, ConnectErrorCode.DATA_FETCH_FAILED, res.status);
38
55
  }
39
56
  return res.json();
40
57
  },
@@ -50,7 +67,7 @@ export function createDataClient(config) {
50
67
  headers: { Authorization: authHeader },
51
68
  });
52
69
  if (!res.ok) {
53
- throw new ConnectError(`List scopes failed: ${res.status}`, "LIST_SCOPES_FAILED", res.status);
70
+ throw new ConnectError(`List scopes failed: ${res.status}`, ConnectErrorCode.LIST_SCOPES_FAILED, res.status);
54
71
  }
55
72
  return res.json();
56
73
  },
@@ -66,7 +83,7 @@ export function createDataClient(config) {
66
83
  headers: { Authorization: authHeader },
67
84
  });
68
85
  if (!res.ok) {
69
- throw new ConnectError(`List versions failed: ${res.status}`, "LIST_VERSIONS_FAILED", res.status);
86
+ throw new ConnectError(`List versions failed: ${res.status}`, ConnectErrorCode.LIST_VERSIONS_FAILED, res.status);
70
87
  }
71
88
  return res.json();
72
89
  },
@@ -1 +1 @@
1
- {"version":3,"file":"data-client.js","sourceRoot":"","sources":["../../src/server/data-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"data-client.js","sourceRoot":"","sources":["../../src/server/data-client.ts"],"names":[],"mappings":"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"}
@@ -3,4 +3,6 @@ export { createSessionRelay, type SessionRelay } from "./session-relay.js";
3
3
  export { createDataClient, type DataClient } from "./data-client.js";
4
4
  export { connect, getData } from "./connect.js";
5
5
  export { signVanaManifest } from "./manifest-signer.js";
6
+ export { createVanaConfig, type VanaConfig } from "./config.js";
7
+ export { verifyWebhook } from "./webhook.js";
6
8
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,KAAK,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,KAAK,UAAU,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -3,4 +3,6 @@ export { createSessionRelay } from "./session-relay.js";
3
3
  export { createDataClient } from "./data-client.js";
4
4
  export { connect, getData } from "./connect.js";
5
5
  export { signVanaManifest } from "./manifest-signer.js";
6
+ export { createVanaConfig } from "./config.js";
7
+ export { verifyWebhook } from "./webhook.js";
6
8
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAsB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAqB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAsB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAqB,MAAM,oBAAoB,CAAC;AAC3E,OAAO,EAAE,gBAAgB,EAAmB,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAmB,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC"}
@@ -1,3 +1,25 @@
1
1
  import type { VanaManifestConfig, VanaManifestBlock } from "../core/types.js";
2
+ /**
3
+ * Signs a web app manifest block for Vana Desktop App identity verification.
4
+ *
5
+ * Include the returned block under the `vana` key in your web app manifest JSON,
6
+ * and make sure your HTML has `<link rel="manifest" href="/manifest.json">`.
7
+ *
8
+ * @param config - Manifest configuration including private key and app URLs.
9
+ * @returns A signed {@link VanaManifestBlock}.
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const vanaBlock = await signVanaManifest({
14
+ * privateKey: process.env.VANA_PRIVATE_KEY as `0x${string}`,
15
+ * appUrl: "https://yourapp.com",
16
+ * privacyPolicyUrl: "https://yourapp.com/privacy",
17
+ * termsUrl: "https://yourapp.com/terms",
18
+ * supportUrl: "https://yourapp.com/support",
19
+ * webhookUrl: "https://yourapp.com/api/webhook",
20
+ * });
21
+ * const manifest = { name: "Your App", vana: vanaBlock };
22
+ * ```
23
+ */
2
24
  export declare function signVanaManifest(config: VanaManifestConfig): Promise<VanaManifestBlock>;
3
25
  //# sourceMappingURL=manifest-signer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-signer.d.ts","sourceRoot":"","sources":["../../src/server/manifest-signer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAa9E,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B"}
1
+ {"version":3,"file":"manifest-signer.d.ts","sourceRoot":"","sources":["../../src/server/manifest-signer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAa9E;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,kBAAkB,GACzB,OAAO,CAAC,iBAAiB,CAAC,CAgB5B"}
@@ -12,6 +12,28 @@ function canonicalizeJson(obj) {
12
12
  }
13
13
  return sorted;
14
14
  }
15
+ /**
16
+ * Signs a web app manifest block for Vana Desktop App identity verification.
17
+ *
18
+ * Include the returned block under the `vana` key in your web app manifest JSON,
19
+ * and make sure your HTML has `<link rel="manifest" href="/manifest.json">`.
20
+ *
21
+ * @param config - Manifest configuration including private key and app URLs.
22
+ * @returns A signed {@link VanaManifestBlock}.
23
+ *
24
+ * @example
25
+ * ```typescript
26
+ * const vanaBlock = await signVanaManifest({
27
+ * privateKey: process.env.VANA_PRIVATE_KEY as `0x${string}`,
28
+ * appUrl: "https://yourapp.com",
29
+ * privacyPolicyUrl: "https://yourapp.com/privacy",
30
+ * termsUrl: "https://yourapp.com/terms",
31
+ * supportUrl: "https://yourapp.com/support",
32
+ * webhookUrl: "https://yourapp.com/api/webhook",
33
+ * });
34
+ * const manifest = { name: "Your App", vana: vanaBlock };
35
+ * ```
36
+ */
15
37
  export async function signVanaManifest(config) {
16
38
  const account = privateKeyToAccount(config.privateKey);
17
39
  const block = {
@@ -1 +1 @@
1
- {"version":3,"file":"manifest-signer.js","sourceRoot":"","sources":["../../src/server/manifest-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGpD,SAAS,gBAAgB,CAAC,GAAY;IACpC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACzD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAA8B,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACrE,IAAI,GAAG,KAAK,WAAW;YAAE,SAAS;QAClC,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAE,GAA+B,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAA0B;IAE1B,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAG;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;IAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEzD,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"manifest-signer.js","sourceRoot":"","sources":["../../src/server/manifest-signer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAGpD,SAAS,gBAAgB,CAAC,GAAY;IACpC,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,GAAG,CAAC;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IACzD,MAAM,MAAM,GAA4B,EAAE,CAAC;IAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,GAA8B,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;QACrE,IAAI,GAAG,KAAK,WAAW;YAAE,SAAS;QAClC,MAAM,CAAC,GAAG,CAAC,GAAG,gBAAgB,CAAE,GAA+B,CAAC,GAAG,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAA0B;IAE1B,MAAM,OAAO,GAAG,mBAAmB,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAEvD,MAAM,KAAK,GAAG;QACZ,MAAM,EAAE,MAAM,CAAC,MAAM;QACrB,gBAAgB,EAAE,MAAM,CAAC,gBAAgB;QACzC,UAAU,EAAE,MAAM,CAAC,UAAU;QAC7B,QAAQ,EAAE,MAAM,CAAC,QAAQ;QACzB,UAAU,EAAE,MAAM,CAAC,UAAU;KAC9B,CAAC;IAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC1C,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,WAAW,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;IAEzD,OAAO,EAAE,GAAG,KAAK,EAAE,SAAS,EAAE,CAAC;AACjC,CAAC"}
@@ -1,5 +1,16 @@
1
1
  import type { RequestSignerConfig } from "../core/types.js";
2
+ /**
3
+ * Generates `Web3Signed` authorization headers for protocol requests.
4
+ *
5
+ * @see {@link createRequestSigner} to create an instance.
6
+ */
2
7
  export interface RequestSigner {
8
+ /**
9
+ * Signs a request and returns the `Authorization` header value.
10
+ *
11
+ * @param params - Request metadata (audience, method, URI, optional body and grantId).
12
+ * @returns A `Web3Signed <payload>.<signature>` header string.
13
+ */
3
14
  signRequest(params: {
4
15
  aud: string;
5
16
  method: string;
@@ -7,7 +18,14 @@ export interface RequestSigner {
7
18
  body?: string;
8
19
  grantId?: string;
9
20
  }): Promise<string>;
21
+ /** The wallet address derived from the private key. */
10
22
  readonly address: `0x${string}`;
11
23
  }
24
+ /**
25
+ * Creates a request signer that generates `Web3Signed` authorization headers.
26
+ *
27
+ * @param config - Configuration containing the builder's private key.
28
+ * @returns A {@link RequestSigner} instance.
29
+ */
12
30
  export declare function createRequestSigner(config: RequestSignerConfig): RequestSigner;
13
31
  //# sourceMappingURL=request-signer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"request-signer.d.ts","sourceRoot":"","sources":["../../src/server/request-signer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AA+B5D,MAAM,WAAW,aAAa;IAC5B,WAAW,CAAC,MAAM,EAAE;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,QAAQ,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;CACjC;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,GAC1B,aAAa,CAsCf"}
1
+ {"version":3,"file":"request-signer.d.ts","sourceRoot":"","sources":["../../src/server/request-signer.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AA+B5D;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;;OAKG;IACH,WAAW,CAAC,MAAM,EAAE;QAClB,GAAG,EAAE,MAAM,CAAC;QACZ,MAAM,EAAE,MAAM,CAAC;QACf,GAAG,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACpB,uDAAuD;IACvD,QAAQ,CAAC,OAAO,EAAE,KAAK,MAAM,EAAE,CAAC;CACjC;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,mBAAmB,GAC1B,aAAa,CAsCf"}
@@ -29,6 +29,12 @@ function computeBodyHash(body) {
29
29
  const canonicalStr = JSON.stringify(canonical);
30
30
  return createHash("sha256").update(canonicalStr).digest("hex");
31
31
  }
32
+ /**
33
+ * Creates a request signer that generates `Web3Signed` authorization headers.
34
+ *
35
+ * @param config - Configuration containing the builder's private key.
36
+ * @returns A {@link RequestSigner} instance.
37
+ */
32
38
  export function createRequestSigner(config) {
33
39
  const account = privateKeyToAccount(config.privateKey);
34
40
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"request-signer.js","sourceRoot":"","sources":["../../src/server/request-signer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"request-signer.js","sourceRoot":"","sources":["../../src/server/request-signer.ts"],"names":[],"mappings":"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"}
@@ -1,11 +1,33 @@
1
1
  import type { SessionRelayConfig, SessionInitParams, SessionInitResult, SessionPollResult } from "../core/types.js";
2
+ /**
3
+ * Low-level client for the Session Relay service.
4
+ *
5
+ * @see {@link createSessionRelay} to create an instance.
6
+ */
2
7
  export interface SessionRelay {
8
+ /** Creates a new session and returns the session ID and deep link URL. */
3
9
  initSession(params: SessionInitParams): Promise<SessionInitResult>;
10
+ /** Polls the session status once. */
4
11
  pollSession(sessionId: string): Promise<SessionPollResult>;
12
+ /**
13
+ * Polls until the session reaches a terminal state (`approved`, `denied`, or `expired`).
14
+ *
15
+ * @param sessionId - The session to poll.
16
+ * @param opts - Optional polling interval (default 2 s) and timeout (default 15 min).
17
+ * @throws {@link ConnectError} with code `POLL_TIMEOUT` if the timeout is exceeded.
18
+ */
5
19
  pollUntilComplete(sessionId: string, opts?: {
6
20
  interval?: number;
7
21
  timeout?: number;
8
22
  }): Promise<SessionPollResult>;
9
23
  }
24
+ /**
25
+ * Creates a low-level Session Relay client.
26
+ *
27
+ * Prefer the high-level {@link connect} function for most use cases.
28
+ *
29
+ * @param config - Session Relay configuration.
30
+ * @returns A {@link SessionRelay} instance.
31
+ */
10
32
  export declare function createSessionRelay(config: SessionRelayConfig): SessionRelay;
11
33
  //# sourceMappingURL=session-relay.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"session-relay.d.ts","sourceRoot":"","sources":["../../src/server/session-relay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAG1B,MAAM,WAAW,YAAY;IAC3B,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnE,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3D,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7C,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAyF3E"}
1
+ {"version":3,"file":"session-relay.d.ts","sourceRoot":"","sources":["../../src/server/session-relay.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,kBAAkB,EAClB,iBAAiB,EACjB,iBAAiB,EACjB,iBAAiB,EAClB,MAAM,kBAAkB,CAAC;AAG1B;;;;GAIG;AACH,MAAM,WAAW,YAAY;IAC3B,0EAA0E;IAC1E,WAAW,CAAC,MAAM,EAAE,iBAAiB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnE,qCAAqC;IACrC,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAC;IAC3D;;;;;;OAMG;IACH,iBAAiB,CACf,SAAS,EAAE,MAAM,EACjB,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7C,OAAO,CAAC,iBAAiB,CAAC,CAAC;CAC/B;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CA4F3E"}
@@ -1,5 +1,13 @@
1
- import { ConnectError } from "../core/errors.js";
1
+ import { ConnectError, ConnectErrorCode } from "../core/errors.js";
2
2
  import { createRequestSigner } from "./request-signer.js";
3
+ /**
4
+ * Creates a low-level Session Relay client.
5
+ *
6
+ * Prefer the high-level {@link connect} function for most use cases.
7
+ *
8
+ * @param config - Session Relay configuration.
9
+ * @returns A {@link SessionRelay} instance.
10
+ */
3
11
  export function createSessionRelay(config) {
4
12
  const baseUrl = config.sessionRelayUrl.replace(/\/+$/, "");
5
13
  const signer = createRequestSigner({ privateKey: config.privateKey });
@@ -33,7 +41,7 @@ export function createSessionRelay(config) {
33
41
  .message
34
42
  : `Session init failed: ${res.status}`;
35
43
  throw new ConnectError(errorMsg, errorBody.error
36
- ?.errorCode ?? "SESSION_INIT_FAILED", res.status);
44
+ ?.errorCode ?? ConnectErrorCode.SESSION_INIT_FAILED, res.status);
37
45
  }
38
46
  return (await res.json());
39
47
  },
@@ -42,7 +50,7 @@ export function createSessionRelay(config) {
42
50
  if (!res.ok) {
43
51
  const errorBody = await res.json().catch(() => ({}));
44
52
  throw new ConnectError(`Poll failed: ${res.status}`, errorBody.error
45
- ?.errorCode ?? "POLL_FAILED", res.status);
53
+ ?.errorCode ?? ConnectErrorCode.POLL_FAILED, res.status);
46
54
  }
47
55
  return (await res.json());
48
56
  },
@@ -59,7 +67,7 @@ export function createSessionRelay(config) {
59
67
  }
60
68
  await new Promise((resolve) => setTimeout(resolve, interval));
61
69
  }
62
- throw new ConnectError("Polling timed out", "POLL_TIMEOUT");
70
+ throw new ConnectError("Polling timed out", ConnectErrorCode.POLL_TIMEOUT);
63
71
  },
64
72
  };
65
73
  }
@@ -1 +1 @@
1
- {"version":3,"file":"session-relay.js","sourceRoot":"","sources":["../../src/server/session-relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-relay.js","sourceRoot":"","sources":["../../src/server/session-relay.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Verifies a webhook payload signature.
3
+ *
4
+ * @param payload - The raw request body as a string or Buffer.
5
+ * @param signature - The signature from the webhook request header.
6
+ * @param secret - The shared secret used to verify the signature.
7
+ * @returns The verified payload.
8
+ * @throws {@link ConnectError} with code `WEBHOOK_INVALID` — this function is not yet implemented.
9
+ */
10
+ export declare function verifyWebhook(payload: string | Buffer, signature: string, secret: string): unknown;
11
+ //# sourceMappingURL=webhook.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.d.ts","sourceRoot":"","sources":["../../src/server/webhook.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,OAAO,EAAE,MAAM,GAAG,MAAM,EACxB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,GACb,OAAO,CAUT"}
@@ -0,0 +1,18 @@
1
+ import { ConnectError, ConnectErrorCode } from "../core/errors.js";
2
+ /**
3
+ * Verifies a webhook payload signature.
4
+ *
5
+ * @param payload - The raw request body as a string or Buffer.
6
+ * @param signature - The signature from the webhook request header.
7
+ * @param secret - The shared secret used to verify the signature.
8
+ * @returns The verified payload.
9
+ * @throws {@link ConnectError} with code `WEBHOOK_INVALID` — this function is not yet implemented.
10
+ */
11
+ export function verifyWebhook(payload, signature, secret) {
12
+ void payload;
13
+ void signature;
14
+ void secret;
15
+ // TODO: Implement when Data Portability Protocol webhook signing spec is available
16
+ throw new ConnectError("verifyWebhook() is not yet implemented. Webhook signing scheme is pending protocol specification.", ConnectErrorCode.WEBHOOK_INVALID);
17
+ }
18
+ //# sourceMappingURL=webhook.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"webhook.js","sourceRoot":"","sources":["../../src/server/webhook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAEnE;;;;;;;;GAQG;AACH,MAAM,UAAU,aAAa,CAC3B,OAAwB,EACxB,SAAiB,EACjB,MAAc;IAEd,KAAK,OAAO,CAAC;IACb,KAAK,SAAS,CAAC;IACf,KAAK,MAAM,CAAC;IAEZ,mFAAmF;IACnF,MAAM,IAAI,YAAY,CACpB,mGAAmG,EACnG,gBAAgB,CAAC,eAAe,CACjC,CAAC;AACJ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendatalabs/connect",
3
- "version": "0.5.0",
3
+ "version": "0.6.0",
4
4
  "description": "SDK for integrating Vana Data Portability 'Connect data' flows",
5
5
  "license": "MIT",
6
6
  "repository": {
@@ -12,6 +12,7 @@
12
12
  "url": "https://github.com/vana-com/vana-connect/issues"
13
13
  },
14
14
  "type": "module",
15
+ "sideEffects": false,
15
16
  "publishConfig": {
16
17
  "access": "public"
17
18
  },
@@ -69,9 +70,6 @@
69
70
  "peerDependenciesMeta": {
70
71
  "react": {
71
72
  "optional": true
72
- },
73
- "viem": {
74
- "optional": true
75
73
  }
76
74
  },
77
75
  "devDependencies": {