@opendatalabs/vana-sdk 3.19.0 → 3.20.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 (39) hide show
  1. package/README.md +82 -15
  2. package/dist/auth/web3-signed-builder.cjs +3 -0
  3. package/dist/auth/web3-signed-builder.cjs.map +1 -1
  4. package/dist/auth/web3-signed-builder.d.ts +14 -0
  5. package/dist/auth/web3-signed-builder.js +3 -0
  6. package/dist/auth/web3-signed-builder.js.map +1 -1
  7. package/dist/direct/controller.cjs +3 -2
  8. package/dist/direct/controller.cjs.map +1 -1
  9. package/dist/direct/controller.d.ts +19 -2
  10. package/dist/direct/controller.js +3 -2
  11. package/dist/direct/controller.js.map +1 -1
  12. package/dist/errors.cjs +13 -0
  13. package/dist/errors.cjs.map +1 -1
  14. package/dist/errors.d.ts +21 -2
  15. package/dist/errors.js +12 -0
  16. package/dist/errors.js.map +1 -1
  17. package/dist/index.browser.js +69 -25
  18. package/dist/index.browser.js.map +2 -2
  19. package/dist/index.node.cjs +70 -25
  20. package/dist/index.node.cjs.map +2 -2
  21. package/dist/index.node.js +69 -25
  22. package/dist/index.node.js.map +2 -2
  23. package/dist/protocol/derivative-questions.cjs +42 -25
  24. package/dist/protocol/derivative-questions.cjs.map +1 -1
  25. package/dist/protocol/derivative-questions.d.ts +51 -10
  26. package/dist/protocol/derivative-questions.js +47 -26
  27. package/dist/protocol/derivative-questions.js.map +1 -1
  28. package/dist/protocol/write-request.cjs +14 -0
  29. package/dist/protocol/write-request.cjs.map +1 -1
  30. package/dist/protocol/write-request.d.ts +12 -0
  31. package/dist/protocol/write-request.js +13 -0
  32. package/dist/protocol/write-request.js.map +1 -1
  33. package/dist/server.cjs +28 -2
  34. package/dist/server.cjs.map +1 -1
  35. package/dist/server.d.ts +2 -0
  36. package/dist/server.js +29 -1
  37. package/dist/server.js.map +1 -1
  38. package/dist/tests/mock-personal-server.d.ts +9 -6
  39. package/package.json +1 -1
package/dist/server.cjs CHANGED
@@ -24,10 +24,13 @@ __export(server_exports, {
24
24
  DirectConfigError: () => import_errors.DirectConfigError,
25
25
  DirectOpType: () => import_types.DirectOpType,
26
26
  GRANT_OP_TYPE: () => import_escrow_payment.GRANT_OP_TYPE,
27
+ InvalidScopeEntryError: () => import_scope_actions.InvalidScopeEntryError,
27
28
  PRODUCTION_ENDPOINTS: () => import_endpoints.PRODUCTION_ENDPOINTS,
28
29
  PaymentRequiredError: () => import_errors.PaymentRequiredError,
29
30
  PersonalServerReadError: () => import_errors.PersonalServerReadError,
31
+ SCOPE_ACTIONS: () => import_scope_actions.SCOPE_ACTIONS,
30
32
  ScopeNotApprovedError: () => import_errors.ScopeNotApprovedError,
33
+ ScopeSchema: () => import_scopes.ScopeSchema,
31
34
  authorizeEscrowPayment: () => import_escrow_payment.authorizeEscrowPayment,
32
35
  authorizeGrantPayment: () => import_escrow_payment.authorizeGrantPayment,
33
36
  buildApprovalUrl: () => import_access_request_client.buildApprovalUrl,
@@ -38,12 +41,21 @@ __export(server_exports, {
38
41
  createDefaultNonceSource: () => import_escrow_payment.createDefaultNonceSource,
39
42
  createDirectDataController: () => import_controller.createDirectDataController,
40
43
  dataPathForScope: () => import_personal_server_read.dataPathForScope,
44
+ formatScopeEntry: () => import_scope_actions.formatScopeEntry,
41
45
  getDirectEndpoints: () => import_endpoints.getDirectEndpoints,
46
+ grantPermissions: () => import_scope_actions.grantPermissions,
47
+ hasAction: () => import_scope_actions.hasAction,
42
48
  parsePersonalServerPaymentRequired: () => import_personal_server_read.parsePersonalServerPaymentRequired,
49
+ parseScope: () => import_scopes.parseScope,
50
+ parseScopeEntry: () => import_scope_actions.parseScopeEntry,
43
51
  paymentResponseMetadataFromHeader: () => import_escrow_payment.paymentResponseMetadataFromHeader,
52
+ permissionsToScopes: () => import_scope_actions.permissionsToScopes,
44
53
  readPersonalServerData: () => import_personal_server_read.readPersonalServerData,
54
+ scopeCoveredByGrant: () => import_scopes.scopeCoveredByGrant,
55
+ scopeMatchesPattern: () => import_scopes.scopeMatchesPattern,
45
56
  toDirectFeeBreakdown: () => import_escrow_payment.toDirectFeeBreakdown,
46
- toDirectPaymentReceipt: () => import_escrow_payment.toDirectPaymentReceipt
57
+ toDirectPaymentReceipt: () => import_escrow_payment.toDirectPaymentReceipt,
58
+ tryGrantPermissions: () => import_scope_actions.tryGrantPermissions
47
59
  });
48
60
  module.exports = __toCommonJS(server_exports);
49
61
  var import_controller = require("./direct/controller");
@@ -51,6 +63,8 @@ var import_access_request_client = require("./direct/access-request-client");
51
63
  var import_personal_server_read = require("./direct/personal-server-read");
52
64
  var import_escrow_payment = require("./direct/escrow-payment");
53
65
  var import_endpoints = require("./direct/endpoints");
66
+ var import_scopes = require("./protocol/scopes");
67
+ var import_scope_actions = require("./protocol/scope-actions");
54
68
  var import_errors = require("./direct/errors");
55
69
  var import_types = require("./direct/types");
56
70
  // Annotate the CommonJS export names for ESM import in node:
@@ -61,10 +75,13 @@ var import_types = require("./direct/types");
61
75
  DirectConfigError,
62
76
  DirectOpType,
63
77
  GRANT_OP_TYPE,
78
+ InvalidScopeEntryError,
64
79
  PRODUCTION_ENDPOINTS,
65
80
  PaymentRequiredError,
66
81
  PersonalServerReadError,
82
+ SCOPE_ACTIONS,
67
83
  ScopeNotApprovedError,
84
+ ScopeSchema,
68
85
  authorizeEscrowPayment,
69
86
  authorizeGrantPayment,
70
87
  buildApprovalUrl,
@@ -75,11 +92,20 @@ var import_types = require("./direct/types");
75
92
  createDefaultNonceSource,
76
93
  createDirectDataController,
77
94
  dataPathForScope,
95
+ formatScopeEntry,
78
96
  getDirectEndpoints,
97
+ grantPermissions,
98
+ hasAction,
79
99
  parsePersonalServerPaymentRequired,
100
+ parseScope,
101
+ parseScopeEntry,
80
102
  paymentResponseMetadataFromHeader,
103
+ permissionsToScopes,
81
104
  readPersonalServerData,
105
+ scopeCoveredByGrant,
106
+ scopeMatchesPattern,
82
107
  toDirectFeeBreakdown,
83
- toDirectPaymentReceipt
108
+ toDirectPaymentReceipt,
109
+ tryGrantPermissions
84
110
  });
85
111
  //# sourceMappingURL=server.cjs.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server.ts"],"sourcesContent":["/**\n * Server entry point for the Vana SDK direct Data Portability flow.\n *\n * @remarks\n * Exposes {@link createDirectDataController} and its supporting types/errors.\n * This is a Node/server entry point — it owns the app private key and must never\n * be imported into browser code.\n *\n * @example\n * ```typescript\n * import { createDirectDataController } from \"@opendatalabs/vana-sdk/server\";\n *\n * export const vana = createDirectDataController({\n * env: process.env.VANA_ENV === \"dev\" ? \"dev\" : \"production\",\n * appPrivateKey: process.env.VANA_APP_PRIVATE_KEY!,\n * app: { id: \"notes-lens\", name: \"Notes Lens\", homepageUrl: process.env.VANA_APP_URL! },\n * source: \"icloud_notes\",\n * scopes: [\"icloud_notes.notes\"],\n * });\n * ```\n *\n * @category Direct\n * @module server\n */\n\nexport {\n createDirectDataController,\n type DirectDataController,\n type DirectDataControllerConfig,\n type DirectEscrowConfig,\n} from \"./direct/controller\";\n\n// Lower-level building blocks (advanced use / custom transports).\nexport {\n createDefaultAccessRequestClient,\n buildApprovalUrl,\n type DefaultAccessRequestClientOptions,\n type FetchLike,\n} from \"./direct/access-request-client\";\nexport {\n buildPersonalServerDataReadRequest,\n readPersonalServerData,\n parsePersonalServerPaymentRequired,\n dataPathForScope,\n type PersonalServerDataReadRequest,\n type PersonalServerReadResult,\n type PersonalServerFetch,\n type PersonalServerTransportRetryOptions,\n type FetchResponseLike,\n} from \"./direct/personal-server-read\";\n// Escrow-backed payment (built on protocol/escrow).\nexport {\n authorizeEscrowPayment,\n authorizeGrantPayment,\n buildEscrowPaymentHeader,\n buildGrantPaymentHeader,\n paymentResponseMetadataFromHeader,\n toDirectPaymentReceipt,\n toDirectFeeBreakdown,\n createDefaultNonceSource,\n DATA_ACCESS_OP_TYPE,\n GRANT_OP_TYPE,\n type EscrowPaymentConfig,\n type EscrowPaymentHeaderConfig,\n type SignTypedDataFn,\n type PaymentNonceSource,\n} from \"./direct/escrow-payment\";\nexport {\n getDirectEndpoints,\n PRODUCTION_ENDPOINTS,\n DEV_ENDPOINTS,\n} from \"./direct/endpoints\";\n\n// Errors\nexport {\n DirectConfigError,\n AccessNotApprovedError,\n ScopeNotApprovedError,\n PersonalServerReadError,\n PaymentRequiredError,\n} from \"./direct/errors\";\n\n// Shared types\nexport type {\n DirectEnv,\n DirectNetwork,\n DirectAppConfig,\n ForegroundDelivery,\n AppIdentity,\n DirectServiceEndpoints,\n AccessRequest,\n AccessRequestStatus,\n AccessRequestStatusValue,\n ApprovedDataResult,\n MultiScopeDataResult,\n AccessRequestClient,\n DirectOpTypeValue,\n PersonalServerDataAccessPaymentOperation,\n PersonalServerGrantPaymentOperation,\n PersonalServerPaymentOperation,\n PersonalServerPaymentRequired,\n DirectPaymentReceipt,\n DirectPaymentResponseMetadata,\n DirectFeeBreakdown,\n} from \"./direct/types\";\n\n// Op-type vocabulary constant.\nexport { DirectOpType } from \"./direct/types\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBA,wBAKO;AAGP,mCAKO;AACP,kCAUO;AAEP,4BAeO;AACP,uBAIO;AAGP,oBAMO;AA2BP,mBAA6B;","names":[]}
1
+ {"version":3,"sources":["../src/server.ts"],"sourcesContent":["/**\n * Server entry point for the Vana SDK direct Data Portability flow.\n *\n * @remarks\n * Exposes {@link createDirectDataController} and its supporting types/errors.\n * This is a Node/server entry point — it owns the app private key and must never\n * be imported into browser code.\n *\n * @example\n * ```typescript\n * import { createDirectDataController } from \"@opendatalabs/vana-sdk/server\";\n *\n * export const vana = createDirectDataController({\n * env: process.env.VANA_ENV === \"dev\" ? \"dev\" : \"production\",\n * appPrivateKey: process.env.VANA_APP_PRIVATE_KEY!,\n * app: { id: \"notes-lens\", name: \"Notes Lens\", homepageUrl: process.env.VANA_APP_URL! },\n * source: \"icloud_notes\",\n * scopes: [\"icloud_notes.notes\"],\n * });\n * ```\n *\n * @category Direct\n * @module server\n */\n\nexport {\n createDirectDataController,\n type DirectDataController,\n type DirectDataControllerConfig,\n type DirectEscrowConfig,\n} from \"./direct/controller\";\n\n// Lower-level building blocks (advanced use / custom transports).\nexport {\n createDefaultAccessRequestClient,\n buildApprovalUrl,\n type DefaultAccessRequestClientOptions,\n type FetchLike,\n} from \"./direct/access-request-client\";\nexport {\n buildPersonalServerDataReadRequest,\n readPersonalServerData,\n parsePersonalServerPaymentRequired,\n dataPathForScope,\n type PersonalServerDataReadRequest,\n type PersonalServerReadResult,\n type PersonalServerFetch,\n type PersonalServerTransportRetryOptions,\n type FetchResponseLike,\n} from \"./direct/personal-server-read\";\n// Escrow-backed payment (built on protocol/escrow).\nexport {\n authorizeEscrowPayment,\n authorizeGrantPayment,\n buildEscrowPaymentHeader,\n buildGrantPaymentHeader,\n paymentResponseMetadataFromHeader,\n toDirectPaymentReceipt,\n toDirectFeeBreakdown,\n createDefaultNonceSource,\n DATA_ACCESS_OP_TYPE,\n GRANT_OP_TYPE,\n type EscrowPaymentConfig,\n type EscrowPaymentHeaderConfig,\n type SignTypedDataFn,\n type PaymentNonceSource,\n} from \"./direct/escrow-payment\";\nexport {\n getDirectEndpoints,\n PRODUCTION_ENDPOINTS,\n DEV_ENDPOINTS,\n} from \"./direct/endpoints\";\n// Grant scope entries: the `[operation:]scope` vocabulary the controller's\n// `scopes` are written in, so a backend can build and read them without\n// reaching for a platform entry point.\nexport {\n ScopeSchema,\n parseScope,\n scopeMatchesPattern,\n scopeCoveredByGrant,\n type Scope,\n type ParsedScope,\n} from \"./protocol/scopes\";\nexport {\n SCOPE_ACTIONS,\n InvalidScopeEntryError,\n parseScopeEntry,\n formatScopeEntry,\n grantPermissions,\n permissionsToScopes,\n tryGrantPermissions,\n hasAction,\n type ScopeAction,\n type ParsedScopeEntry,\n type GrantPermission,\n} from \"./protocol/scope-actions\";\n\n// Errors\nexport {\n DirectConfigError,\n AccessNotApprovedError,\n ScopeNotApprovedError,\n PersonalServerReadError,\n PaymentRequiredError,\n} from \"./direct/errors\";\n\n// Shared types\nexport type {\n DirectEnv,\n DirectNetwork,\n DirectAppConfig,\n ForegroundDelivery,\n AppIdentity,\n DirectServiceEndpoints,\n AccessRequest,\n AccessRequestStatus,\n AccessRequestStatusValue,\n ApprovedDataResult,\n MultiScopeDataResult,\n AccessRequestClient,\n DirectOpTypeValue,\n PersonalServerDataAccessPaymentOperation,\n PersonalServerGrantPaymentOperation,\n PersonalServerPaymentOperation,\n PersonalServerPaymentRequired,\n DirectPaymentReceipt,\n DirectPaymentResponseMetadata,\n DirectFeeBreakdown,\n} from \"./direct/types\";\n\n// Op-type vocabulary constant.\nexport { DirectOpType } from \"./direct/types\";\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAyBA,wBAKO;AAGP,mCAKO;AACP,kCAUO;AAEP,4BAeO;AACP,uBAIO;AAIP,oBAOO;AACP,2BAYO;AAGP,oBAMO;AA2BP,mBAA6B;","names":[]}
package/dist/server.d.ts CHANGED
@@ -27,6 +27,8 @@ export { createDefaultAccessRequestClient, buildApprovalUrl, type DefaultAccessR
27
27
  export { buildPersonalServerDataReadRequest, readPersonalServerData, parsePersonalServerPaymentRequired, dataPathForScope, type PersonalServerDataReadRequest, type PersonalServerReadResult, type PersonalServerFetch, type PersonalServerTransportRetryOptions, type FetchResponseLike, } from "./direct/personal-server-read.js";
28
28
  export { authorizeEscrowPayment, authorizeGrantPayment, buildEscrowPaymentHeader, buildGrantPaymentHeader, paymentResponseMetadataFromHeader, toDirectPaymentReceipt, toDirectFeeBreakdown, createDefaultNonceSource, DATA_ACCESS_OP_TYPE, GRANT_OP_TYPE, type EscrowPaymentConfig, type EscrowPaymentHeaderConfig, type SignTypedDataFn, type PaymentNonceSource, } from "./direct/escrow-payment.js";
29
29
  export { getDirectEndpoints, PRODUCTION_ENDPOINTS, DEV_ENDPOINTS, } from "./direct/endpoints.js";
30
+ export { ScopeSchema, parseScope, scopeMatchesPattern, scopeCoveredByGrant, type Scope, type ParsedScope, } from "./protocol/scopes.js";
31
+ export { SCOPE_ACTIONS, InvalidScopeEntryError, parseScopeEntry, formatScopeEntry, grantPermissions, permissionsToScopes, tryGrantPermissions, hasAction, type ScopeAction, type ParsedScopeEntry, type GrantPermission, } from "./protocol/scope-actions.js";
30
32
  export { DirectConfigError, AccessNotApprovedError, ScopeNotApprovedError, PersonalServerReadError, PaymentRequiredError, } from "./direct/errors.js";
31
33
  export type { DirectEnv, DirectNetwork, DirectAppConfig, ForegroundDelivery, AppIdentity, DirectServiceEndpoints, AccessRequest, AccessRequestStatus, AccessRequestStatusValue, ApprovedDataResult, MultiScopeDataResult, AccessRequestClient, DirectOpTypeValue, PersonalServerDataAccessPaymentOperation, PersonalServerGrantPaymentOperation, PersonalServerPaymentOperation, PersonalServerPaymentRequired, DirectPaymentReceipt, DirectPaymentResponseMetadata, DirectFeeBreakdown, } from "./direct/types.js";
32
34
  export { DirectOpType } from "./direct/types.js";
package/dist/server.js CHANGED
@@ -28,6 +28,22 @@ import {
28
28
  PRODUCTION_ENDPOINTS,
29
29
  DEV_ENDPOINTS
30
30
  } from "./direct/endpoints.js";
31
+ import {
32
+ ScopeSchema,
33
+ parseScope,
34
+ scopeMatchesPattern,
35
+ scopeCoveredByGrant
36
+ } from "./protocol/scopes.js";
37
+ import {
38
+ SCOPE_ACTIONS,
39
+ InvalidScopeEntryError,
40
+ parseScopeEntry,
41
+ formatScopeEntry,
42
+ grantPermissions,
43
+ permissionsToScopes,
44
+ tryGrantPermissions,
45
+ hasAction
46
+ } from "./protocol/scope-actions.js";
31
47
  import {
32
48
  DirectConfigError,
33
49
  AccessNotApprovedError,
@@ -43,10 +59,13 @@ export {
43
59
  DirectConfigError,
44
60
  DirectOpType,
45
61
  GRANT_OP_TYPE,
62
+ InvalidScopeEntryError,
46
63
  PRODUCTION_ENDPOINTS,
47
64
  PaymentRequiredError,
48
65
  PersonalServerReadError,
66
+ SCOPE_ACTIONS,
49
67
  ScopeNotApprovedError,
68
+ ScopeSchema,
50
69
  authorizeEscrowPayment,
51
70
  authorizeGrantPayment,
52
71
  buildApprovalUrl,
@@ -57,11 +76,20 @@ export {
57
76
  createDefaultNonceSource,
58
77
  createDirectDataController,
59
78
  dataPathForScope,
79
+ formatScopeEntry,
60
80
  getDirectEndpoints,
81
+ grantPermissions,
82
+ hasAction,
61
83
  parsePersonalServerPaymentRequired,
84
+ parseScope,
85
+ parseScopeEntry,
62
86
  paymentResponseMetadataFromHeader,
87
+ permissionsToScopes,
63
88
  readPersonalServerData,
89
+ scopeCoveredByGrant,
90
+ scopeMatchesPattern,
64
91
  toDirectFeeBreakdown,
65
- toDirectPaymentReceipt
92
+ toDirectPaymentReceipt,
93
+ tryGrantPermissions
66
94
  };
67
95
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/server.ts"],"sourcesContent":["/**\n * Server entry point for the Vana SDK direct Data Portability flow.\n *\n * @remarks\n * Exposes {@link createDirectDataController} and its supporting types/errors.\n * This is a Node/server entry point — it owns the app private key and must never\n * be imported into browser code.\n *\n * @example\n * ```typescript\n * import { createDirectDataController } from \"@opendatalabs/vana-sdk/server\";\n *\n * export const vana = createDirectDataController({\n * env: process.env.VANA_ENV === \"dev\" ? \"dev\" : \"production\",\n * appPrivateKey: process.env.VANA_APP_PRIVATE_KEY!,\n * app: { id: \"notes-lens\", name: \"Notes Lens\", homepageUrl: process.env.VANA_APP_URL! },\n * source: \"icloud_notes\",\n * scopes: [\"icloud_notes.notes\"],\n * });\n * ```\n *\n * @category Direct\n * @module server\n */\n\nexport {\n createDirectDataController,\n type DirectDataController,\n type DirectDataControllerConfig,\n type DirectEscrowConfig,\n} from \"./direct/controller\";\n\n// Lower-level building blocks (advanced use / custom transports).\nexport {\n createDefaultAccessRequestClient,\n buildApprovalUrl,\n type DefaultAccessRequestClientOptions,\n type FetchLike,\n} from \"./direct/access-request-client\";\nexport {\n buildPersonalServerDataReadRequest,\n readPersonalServerData,\n parsePersonalServerPaymentRequired,\n dataPathForScope,\n type PersonalServerDataReadRequest,\n type PersonalServerReadResult,\n type PersonalServerFetch,\n type PersonalServerTransportRetryOptions,\n type FetchResponseLike,\n} from \"./direct/personal-server-read\";\n// Escrow-backed payment (built on protocol/escrow).\nexport {\n authorizeEscrowPayment,\n authorizeGrantPayment,\n buildEscrowPaymentHeader,\n buildGrantPaymentHeader,\n paymentResponseMetadataFromHeader,\n toDirectPaymentReceipt,\n toDirectFeeBreakdown,\n createDefaultNonceSource,\n DATA_ACCESS_OP_TYPE,\n GRANT_OP_TYPE,\n type EscrowPaymentConfig,\n type EscrowPaymentHeaderConfig,\n type SignTypedDataFn,\n type PaymentNonceSource,\n} from \"./direct/escrow-payment\";\nexport {\n getDirectEndpoints,\n PRODUCTION_ENDPOINTS,\n DEV_ENDPOINTS,\n} from \"./direct/endpoints\";\n\n// Errors\nexport {\n DirectConfigError,\n AccessNotApprovedError,\n ScopeNotApprovedError,\n PersonalServerReadError,\n PaymentRequiredError,\n} from \"./direct/errors\";\n\n// Shared types\nexport type {\n DirectEnv,\n DirectNetwork,\n DirectAppConfig,\n ForegroundDelivery,\n AppIdentity,\n DirectServiceEndpoints,\n AccessRequest,\n AccessRequestStatus,\n AccessRequestStatusValue,\n ApprovedDataResult,\n MultiScopeDataResult,\n AccessRequestClient,\n DirectOpTypeValue,\n PersonalServerDataAccessPaymentOperation,\n PersonalServerGrantPaymentOperation,\n PersonalServerPaymentOperation,\n PersonalServerPaymentRequired,\n DirectPaymentReceipt,\n DirectPaymentResponseMetadata,\n DirectFeeBreakdown,\n} from \"./direct/types\";\n\n// Op-type vocabulary constant.\nexport { DirectOpType } from \"./direct/types\";\n"],"mappings":"AAyBA;AAAA,EACE;AAAA,OAIK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAMK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA2BP,SAAS,oBAAoB;","names":[]}
1
+ {"version":3,"sources":["../src/server.ts"],"sourcesContent":["/**\n * Server entry point for the Vana SDK direct Data Portability flow.\n *\n * @remarks\n * Exposes {@link createDirectDataController} and its supporting types/errors.\n * This is a Node/server entry point — it owns the app private key and must never\n * be imported into browser code.\n *\n * @example\n * ```typescript\n * import { createDirectDataController } from \"@opendatalabs/vana-sdk/server\";\n *\n * export const vana = createDirectDataController({\n * env: process.env.VANA_ENV === \"dev\" ? \"dev\" : \"production\",\n * appPrivateKey: process.env.VANA_APP_PRIVATE_KEY!,\n * app: { id: \"notes-lens\", name: \"Notes Lens\", homepageUrl: process.env.VANA_APP_URL! },\n * source: \"icloud_notes\",\n * scopes: [\"icloud_notes.notes\"],\n * });\n * ```\n *\n * @category Direct\n * @module server\n */\n\nexport {\n createDirectDataController,\n type DirectDataController,\n type DirectDataControllerConfig,\n type DirectEscrowConfig,\n} from \"./direct/controller\";\n\n// Lower-level building blocks (advanced use / custom transports).\nexport {\n createDefaultAccessRequestClient,\n buildApprovalUrl,\n type DefaultAccessRequestClientOptions,\n type FetchLike,\n} from \"./direct/access-request-client\";\nexport {\n buildPersonalServerDataReadRequest,\n readPersonalServerData,\n parsePersonalServerPaymentRequired,\n dataPathForScope,\n type PersonalServerDataReadRequest,\n type PersonalServerReadResult,\n type PersonalServerFetch,\n type PersonalServerTransportRetryOptions,\n type FetchResponseLike,\n} from \"./direct/personal-server-read\";\n// Escrow-backed payment (built on protocol/escrow).\nexport {\n authorizeEscrowPayment,\n authorizeGrantPayment,\n buildEscrowPaymentHeader,\n buildGrantPaymentHeader,\n paymentResponseMetadataFromHeader,\n toDirectPaymentReceipt,\n toDirectFeeBreakdown,\n createDefaultNonceSource,\n DATA_ACCESS_OP_TYPE,\n GRANT_OP_TYPE,\n type EscrowPaymentConfig,\n type EscrowPaymentHeaderConfig,\n type SignTypedDataFn,\n type PaymentNonceSource,\n} from \"./direct/escrow-payment\";\nexport {\n getDirectEndpoints,\n PRODUCTION_ENDPOINTS,\n DEV_ENDPOINTS,\n} from \"./direct/endpoints\";\n// Grant scope entries: the `[operation:]scope` vocabulary the controller's\n// `scopes` are written in, so a backend can build and read them without\n// reaching for a platform entry point.\nexport {\n ScopeSchema,\n parseScope,\n scopeMatchesPattern,\n scopeCoveredByGrant,\n type Scope,\n type ParsedScope,\n} from \"./protocol/scopes\";\nexport {\n SCOPE_ACTIONS,\n InvalidScopeEntryError,\n parseScopeEntry,\n formatScopeEntry,\n grantPermissions,\n permissionsToScopes,\n tryGrantPermissions,\n hasAction,\n type ScopeAction,\n type ParsedScopeEntry,\n type GrantPermission,\n} from \"./protocol/scope-actions\";\n\n// Errors\nexport {\n DirectConfigError,\n AccessNotApprovedError,\n ScopeNotApprovedError,\n PersonalServerReadError,\n PaymentRequiredError,\n} from \"./direct/errors\";\n\n// Shared types\nexport type {\n DirectEnv,\n DirectNetwork,\n DirectAppConfig,\n ForegroundDelivery,\n AppIdentity,\n DirectServiceEndpoints,\n AccessRequest,\n AccessRequestStatus,\n AccessRequestStatusValue,\n ApprovedDataResult,\n MultiScopeDataResult,\n AccessRequestClient,\n DirectOpTypeValue,\n PersonalServerDataAccessPaymentOperation,\n PersonalServerGrantPaymentOperation,\n PersonalServerPaymentOperation,\n PersonalServerPaymentRequired,\n DirectPaymentReceipt,\n DirectPaymentResponseMetadata,\n DirectFeeBreakdown,\n} from \"./direct/types\";\n\n// Op-type vocabulary constant.\nexport { DirectOpType } from \"./direct/types\";\n"],"mappings":"AAyBA;AAAA,EACE;AAAA,OAIK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAMK;AAEP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAKK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAIP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAIK;AAGP;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AA2BP,SAAS,oBAAoB;","names":[]}
@@ -15,12 +15,15 @@
15
15
  * the metadata object's field (binary), validated per
16
16
  * docs/derivative-data-api.md and mirrored to `$lineage`
17
17
  * - derivative questions (`/v1/derivatives/questions`): the same builder
18
- * credential as a write (bearer + X-Vana-Write-Signature over the
19
- * request PATH, query string excluded, as the server verifies it),
20
- * authorized against `write:<derivedScope>`, compact JSON bodies, the
21
- * consent rule (every source scope read-granted to the builder), the
22
- * cycle guard, and the 404 a builder gets for a question it did not
23
- * register
18
+ * credential as a write (bearer + X-Vana-Write-Signature over the whole
19
+ * request TARGET, query string INCLUDED and compared in canonical form),
20
+ * the optional `nonce` claim as the replay key when present, authorized
21
+ * against `write:<derivedScope>`, compact JSON bodies, the consent rule
22
+ * (every source scope read-granted to the builder), the cycle guard, the
23
+ * 404 for a question this builder did not register AND for an unknown id
24
+ * presented with a live write session, and the 400
25
+ * `DERIVATIVE_DERIVED_SCOPE_REQUIRED` for a builder list with no
26
+ * `?derivedScope=`
24
27
  * - lineage reads on both the Personal Server and the gateway: Web3Signed
25
28
  * over the bare path (`/lineage[/:version]`, the version is a path
26
29
  * segment, any query is 400), grant view from the signed `grantId` claim
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@opendatalabs/vana-sdk",
3
- "version": "3.19.0",
3
+ "version": "3.20.0",
4
4
  "description": "A TypeScript library for interacting with Vana Network smart contracts.",
5
5
  "publishConfig": {
6
6
  "access": "public"