@opentdf/sdk 0.4.0-beta.4 → 0.4.0-beta.41

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 (217) hide show
  1. package/dist/cjs/src/access/access-fetch.js +2 -1
  2. package/dist/cjs/src/access/access-rpc.js +11 -5
  3. package/dist/cjs/src/access/constants.js +6 -0
  4. package/dist/cjs/src/access.js +39 -4
  5. package/dist/cjs/src/auth/oidc-clientcredentials-provider.js +4 -2
  6. package/dist/cjs/src/auth/oidc-externaljwt-provider.js +5 -3
  7. package/dist/cjs/src/auth/oidc-refreshtoken-provider.js +19 -3
  8. package/dist/cjs/src/auth/oidc.js +9 -8
  9. package/dist/cjs/src/auth/providers.js +7 -1
  10. package/dist/cjs/src/index.js +4 -2
  11. package/dist/cjs/src/nanoclients.js +4 -4
  12. package/dist/cjs/src/nanotdf/Client.js +10 -6
  13. package/dist/cjs/src/opentdf.js +103 -13
  14. package/dist/cjs/src/platform/authorization/v2/authorization_pb.js +112 -0
  15. package/dist/cjs/src/platform/buf/validate/validate_pb.js +114 -170
  16. package/dist/cjs/src/platform/common/common_pb.js +16 -5
  17. package/dist/cjs/src/platform/entity/entity_pb.js +51 -0
  18. package/dist/cjs/src/platform/entityresolution/entity_resolution_pb.js +1 -1
  19. package/dist/cjs/src/platform/entityresolution/v2/entity_resolution_pb.js +49 -0
  20. package/dist/cjs/src/platform/google/api/annotations_pb.js +1 -1
  21. package/dist/cjs/src/platform/google/api/http_pb.js +3 -3
  22. package/dist/cjs/src/platform/kas/kas_pb.js +2 -2
  23. package/dist/cjs/src/platform/policy/attributes/attributes_pb.js +12 -2
  24. package/dist/cjs/src/platform/policy/kasregistry/key_access_server_registry_pb.js +57 -4
  25. package/dist/cjs/src/platform/policy/keymanagement/key_management_pb.js +2 -2
  26. package/dist/cjs/src/platform/policy/namespaces/namespaces_pb.js +31 -4
  27. package/dist/cjs/src/platform/policy/objects_pb.js +116 -42
  28. package/dist/cjs/src/platform/policy/obligations/obligations_pb.js +159 -0
  29. package/dist/cjs/src/platform/policy/registeredresources/registered_resources_pb.js +20 -15
  30. package/dist/cjs/src/platform/policy/resourcemapping/resource_mapping_pb.js +2 -3
  31. package/dist/cjs/src/platform/policy/selectors_pb.js +1 -1
  32. package/dist/cjs/src/platform/policy/subjectmapping/subject_mapping_pb.js +2 -3
  33. package/dist/cjs/src/platform/policy/unsafe/unsafe_pb.js +2 -4
  34. package/dist/cjs/src/platform.js +20 -3
  35. package/dist/cjs/src/policy/api.js +27 -7
  36. package/dist/cjs/src/policy/granter.js +75 -48
  37. package/dist/cjs/src/seekable.js +32 -1
  38. package/dist/cjs/src/utils.js +85 -3
  39. package/dist/cjs/tdf3/src/assertions.js +39 -2
  40. package/dist/cjs/tdf3/src/client/DecoratedReadableStream.js +8 -1
  41. package/dist/cjs/tdf3/src/client/builders.js +13 -1
  42. package/dist/cjs/tdf3/src/client/index.js +213 -54
  43. package/dist/cjs/tdf3/src/client/validation.js +3 -3
  44. package/dist/cjs/tdf3/src/tdf.js +42 -9
  45. package/dist/cjs/tdf3/src/utils/unwrap.js +2 -2
  46. package/dist/types/src/access/access-fetch.d.ts +1 -0
  47. package/dist/types/src/access/access-fetch.d.ts.map +1 -1
  48. package/dist/types/src/access/access-rpc.d.ts +2 -1
  49. package/dist/types/src/access/access-rpc.d.ts.map +1 -1
  50. package/dist/types/src/access/constants.d.ts +3 -0
  51. package/dist/types/src/access/constants.d.ts.map +1 -0
  52. package/dist/types/src/access.d.ts +30 -1
  53. package/dist/types/src/access.d.ts.map +1 -1
  54. package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts +1 -1
  55. package/dist/types/src/auth/oidc-clientcredentials-provider.d.ts.map +1 -1
  56. package/dist/types/src/auth/oidc-externaljwt-provider.d.ts +1 -1
  57. package/dist/types/src/auth/oidc-externaljwt-provider.d.ts.map +1 -1
  58. package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts +15 -1
  59. package/dist/types/src/auth/oidc-refreshtoken-provider.d.ts.map +1 -1
  60. package/dist/types/src/auth/oidc.d.ts +4 -0
  61. package/dist/types/src/auth/oidc.d.ts.map +1 -1
  62. package/dist/types/src/auth/providers.d.ts.map +1 -1
  63. package/dist/types/src/index.d.ts +1 -0
  64. package/dist/types/src/index.d.ts.map +1 -1
  65. package/dist/types/src/nanotdf/Client.d.ts +8 -1
  66. package/dist/types/src/nanotdf/Client.d.ts.map +1 -1
  67. package/dist/types/src/opentdf.d.ts +137 -6
  68. package/dist/types/src/opentdf.d.ts.map +1 -1
  69. package/dist/types/src/platform/authorization/v2/authorization_pb.d.ts +439 -0
  70. package/dist/types/src/platform/authorization/v2/authorization_pb.d.ts.map +1 -0
  71. package/dist/types/src/platform/buf/validate/validate_pb.d.ts +495 -370
  72. package/dist/types/src/platform/buf/validate/validate_pb.d.ts.map +1 -1
  73. package/dist/types/src/platform/common/common_pb.d.ts +36 -0
  74. package/dist/types/src/platform/common/common_pb.d.ts.map +1 -1
  75. package/dist/types/src/platform/entity/entity_pb.d.ts +130 -0
  76. package/dist/types/src/platform/entity/entity_pb.d.ts.map +1 -0
  77. package/dist/types/src/platform/entityresolution/entity_resolution_pb.d.ts +4 -0
  78. package/dist/types/src/platform/entityresolution/entity_resolution_pb.d.ts.map +1 -1
  79. package/dist/types/src/platform/entityresolution/v2/entity_resolution_pb.d.ts +136 -0
  80. package/dist/types/src/platform/entityresolution/v2/entity_resolution_pb.d.ts.map +1 -0
  81. package/dist/types/src/platform/google/api/http_pb.d.ts.map +1 -1
  82. package/dist/types/src/platform/kas/kas_pb.d.ts +5 -0
  83. package/dist/types/src/platform/kas/kas_pb.d.ts.map +1 -1
  84. package/dist/types/src/platform/policy/attributes/attributes_pb.d.ts +44 -13
  85. package/dist/types/src/platform/policy/attributes/attributes_pb.d.ts.map +1 -1
  86. package/dist/types/src/platform/policy/kasregistry/key_access_server_registry_pb.d.ts +329 -24
  87. package/dist/types/src/platform/policy/kasregistry/key_access_server_registry_pb.d.ts.map +1 -1
  88. package/dist/types/src/platform/policy/keymanagement/key_management_pb.d.ts +20 -1
  89. package/dist/types/src/platform/policy/keymanagement/key_management_pb.d.ts.map +1 -1
  90. package/dist/types/src/platform/policy/namespaces/namespaces_pb.d.ts +143 -5
  91. package/dist/types/src/platform/policy/namespaces/namespaces_pb.d.ts.map +1 -1
  92. package/dist/types/src/platform/policy/objects_pb.d.ts +382 -33
  93. package/dist/types/src/platform/policy/objects_pb.d.ts.map +1 -1
  94. package/dist/types/src/platform/policy/obligations/obligations_pb.d.ts +670 -0
  95. package/dist/types/src/platform/policy/obligations/obligations_pb.d.ts.map +1 -0
  96. package/dist/types/src/platform/policy/registeredresources/registered_resources_pb.d.ts +67 -0
  97. package/dist/types/src/platform/policy/registeredresources/registered_resources_pb.d.ts.map +1 -1
  98. package/dist/types/src/platform/policy/resourcemapping/resource_mapping_pb.d.ts.map +1 -1
  99. package/dist/types/src/platform/policy/selectors_pb.d.ts +18 -0
  100. package/dist/types/src/platform/policy/selectors_pb.d.ts.map +1 -1
  101. package/dist/types/src/platform/policy/subjectmapping/subject_mapping_pb.d.ts.map +1 -1
  102. package/dist/types/src/platform/policy/unsafe/unsafe_pb.d.ts +18 -4
  103. package/dist/types/src/platform/policy/unsafe/unsafe_pb.d.ts.map +1 -1
  104. package/dist/types/src/platform.d.ts +21 -0
  105. package/dist/types/src/platform.d.ts.map +1 -1
  106. package/dist/types/src/policy/api.d.ts +2 -0
  107. package/dist/types/src/policy/api.d.ts.map +1 -1
  108. package/dist/types/src/policy/granter.d.ts +11 -6
  109. package/dist/types/src/policy/granter.d.ts.map +1 -1
  110. package/dist/types/src/seekable.d.ts +31 -0
  111. package/dist/types/src/seekable.d.ts.map +1 -1
  112. package/dist/types/src/utils.d.ts +61 -2
  113. package/dist/types/src/utils.d.ts.map +1 -1
  114. package/dist/types/tdf3/src/assertions.d.ts +4 -0
  115. package/dist/types/tdf3/src/assertions.d.ts.map +1 -1
  116. package/dist/types/tdf3/src/client/DecoratedReadableStream.d.ts +6 -0
  117. package/dist/types/tdf3/src/client/DecoratedReadableStream.d.ts.map +1 -1
  118. package/dist/types/tdf3/src/client/builders.d.ts +14 -0
  119. package/dist/types/tdf3/src/client/builders.d.ts.map +1 -1
  120. package/dist/types/tdf3/src/client/index.d.ts +25 -4
  121. package/dist/types/tdf3/src/client/index.d.ts.map +1 -1
  122. package/dist/types/tdf3/src/client/validation.d.ts +3 -3
  123. package/dist/types/tdf3/src/client/validation.d.ts.map +1 -1
  124. package/dist/types/tdf3/src/tdf.d.ts +3 -1
  125. package/dist/types/tdf3/src/tdf.d.ts.map +1 -1
  126. package/dist/types/tdf3/src/utils/unwrap.d.ts.map +1 -1
  127. package/dist/web/src/access/access-fetch.js +2 -1
  128. package/dist/web/src/access/access-rpc.js +11 -5
  129. package/dist/web/src/access/constants.js +3 -0
  130. package/dist/web/src/access.js +37 -3
  131. package/dist/web/src/auth/oidc-clientcredentials-provider.js +4 -2
  132. package/dist/web/src/auth/oidc-externaljwt-provider.js +5 -3
  133. package/dist/web/src/auth/oidc-refreshtoken-provider.js +19 -3
  134. package/dist/web/src/auth/oidc.js +9 -8
  135. package/dist/web/src/auth/providers.js +7 -1
  136. package/dist/web/src/index.js +2 -1
  137. package/dist/web/src/nanoclients.js +4 -4
  138. package/dist/web/src/nanotdf/Client.js +11 -7
  139. package/dist/web/src/opentdf.js +103 -13
  140. package/dist/web/src/platform/authorization/v2/authorization_pb.js +109 -0
  141. package/dist/web/src/platform/buf/validate/validate_pb.js +113 -169
  142. package/dist/web/src/platform/common/common_pb.js +15 -4
  143. package/dist/web/src/platform/entity/entity_pb.js +48 -0
  144. package/dist/web/src/platform/entityresolution/entity_resolution_pb.js +1 -1
  145. package/dist/web/src/platform/entityresolution/v2/entity_resolution_pb.js +46 -0
  146. package/dist/web/src/platform/google/api/annotations_pb.js +1 -1
  147. package/dist/web/src/platform/google/api/http_pb.js +3 -3
  148. package/dist/web/src/platform/kas/kas_pb.js +2 -2
  149. package/dist/web/src/platform/policy/attributes/attributes_pb.js +12 -2
  150. package/dist/web/src/platform/policy/kasregistry/key_access_server_registry_pb.js +55 -3
  151. package/dist/web/src/platform/policy/keymanagement/key_management_pb.js +2 -2
  152. package/dist/web/src/platform/policy/namespaces/namespaces_pb.js +30 -3
  153. package/dist/web/src/platform/policy/objects_pb.js +114 -41
  154. package/dist/web/src/platform/policy/obligations/obligations_pb.js +156 -0
  155. package/dist/web/src/platform/policy/registeredresources/registered_resources_pb.js +19 -14
  156. package/dist/web/src/platform/policy/resourcemapping/resource_mapping_pb.js +2 -3
  157. package/dist/web/src/platform/policy/selectors_pb.js +1 -1
  158. package/dist/web/src/platform/policy/subjectmapping/subject_mapping_pb.js +2 -3
  159. package/dist/web/src/platform/policy/unsafe/unsafe_pb.js +2 -4
  160. package/dist/web/src/platform.js +20 -3
  161. package/dist/web/src/policy/api.js +26 -7
  162. package/dist/web/src/policy/granter.js +75 -48
  163. package/dist/web/src/seekable.js +32 -1
  164. package/dist/web/src/utils.js +84 -3
  165. package/dist/web/tdf3/src/assertions.js +38 -2
  166. package/dist/web/tdf3/src/client/DecoratedReadableStream.js +8 -1
  167. package/dist/web/tdf3/src/client/builders.js +13 -1
  168. package/dist/web/tdf3/src/client/index.js +215 -57
  169. package/dist/web/tdf3/src/client/validation.js +3 -3
  170. package/dist/web/tdf3/src/tdf.js +42 -9
  171. package/dist/web/tdf3/src/utils/unwrap.js +2 -2
  172. package/package.json +7 -5
  173. package/src/access/access-fetch.ts +1 -0
  174. package/src/access/access-rpc.ts +13 -4
  175. package/src/access/constants.ts +2 -0
  176. package/src/access.ts +54 -2
  177. package/src/auth/oidc-clientcredentials-provider.ts +4 -0
  178. package/src/auth/oidc-externaljwt-provider.ts +5 -1
  179. package/src/auth/oidc-refreshtoken-provider.ts +19 -1
  180. package/src/auth/oidc.ts +12 -7
  181. package/src/auth/providers.ts +6 -0
  182. package/src/index.ts +1 -0
  183. package/src/nanoclients.ts +3 -3
  184. package/src/nanotdf/Client.ts +28 -6
  185. package/src/opentdf.ts +206 -73
  186. package/src/platform/authorization/v2/authorization_pb.ts +503 -0
  187. package/src/platform/buf/validate/validate_pb.ts +529 -401
  188. package/src/platform/common/common_pb.ts +48 -3
  189. package/src/platform/entity/entity_pb.ts +154 -0
  190. package/src/platform/entityresolution/entity_resolution_pb.ts +4 -0
  191. package/src/platform/entityresolution/v2/entity_resolution_pb.ts +170 -0
  192. package/src/platform/google/api/annotations_pb.ts +1 -1
  193. package/src/platform/google/api/http_pb.ts +2 -2
  194. package/src/platform/kas/kas_pb.ts +6 -1
  195. package/src/platform/policy/attributes/attributes_pb.ts +46 -16
  196. package/src/platform/policy/kasregistry/key_access_server_registry_pb.ts +371 -27
  197. package/src/platform/policy/keymanagement/key_management_pb.ts +24 -2
  198. package/src/platform/policy/namespaces/namespaces_pb.ts +163 -7
  199. package/src/platform/policy/objects_pb.ts +474 -59
  200. package/src/platform/policy/obligations/obligations_pb.ts +788 -0
  201. package/src/platform/policy/registeredresources/registered_resources_pb.ts +80 -13
  202. package/src/platform/policy/resourcemapping/resource_mapping_pb.ts +1 -2
  203. package/src/platform/policy/selectors_pb.ts +18 -0
  204. package/src/platform/policy/subjectmapping/subject_mapping_pb.ts +1 -2
  205. package/src/platform/policy/unsafe/unsafe_pb.ts +21 -6
  206. package/src/platform.ts +29 -5
  207. package/src/policy/api.ts +37 -6
  208. package/src/policy/granter.ts +82 -56
  209. package/src/seekable.ts +31 -0
  210. package/src/utils.ts +88 -2
  211. package/tdf3/src/assertions.ts +52 -1
  212. package/tdf3/src/client/DecoratedReadableStream.ts +9 -0
  213. package/tdf3/src/client/builders.ts +16 -0
  214. package/tdf3/src/client/index.ts +309 -73
  215. package/tdf3/src/client/validation.ts +2 -2
  216. package/tdf3/src/tdf.ts +53 -9
  217. package/tdf3/src/utils/unwrap.ts +2 -1
@@ -5,6 +5,7 @@ import { createConnectTransport } from '@connectrpc/connect-web';
5
5
  import { createClient } from '@connectrpc/connect';
6
6
  import { WellKnownService } from './platform/wellknownconfiguration/wellknown_configuration_pb.js';
7
7
  import { AuthorizationService } from './platform/authorization/authorization_pb.js';
8
+ import { AuthorizationService as AuthorizationServiceV2 } from './platform/authorization/v2/authorization_pb.js';
8
9
  import { EntityResolutionService } from './platform/entityresolution/entity_resolution_pb.js';
9
10
  import { AccessService } from './platform/kas/kas_pb.js';
10
11
  import { ActionService } from './platform/policy/actions/actions_pb.js';
@@ -23,7 +24,20 @@ import { UnsafeService } from './platform/policy/unsafe/unsafe_pb.js';
23
24
  *
24
25
  * This client supports authentication via an `AuthProvider` or custom interceptors, which can
25
26
  * be used to add authentication headers or other custom logic to outgoing requests.
27
+ * @example
28
+ * ```
29
+ * import { AuthProviders, OpenTDF } from '@opentdf/sdk';
30
+ * import { PlatformClient } from '@opentdf/sdk/platform';
26
31
  *
32
+ * const authProvider: AuthProvider = await AuthProviders.refreshAuthProvider({...});
33
+ * const platform = new PlatformClient({
34
+ * authProvider,
35
+ * platformUrl: 'https://platform.example.com',
36
+ * });
37
+ *
38
+ * const wellKnownResponse = await platform.v1.wellknown.getWellKnownConfiguration({});
39
+ * console.log('Well-known configuration:', wellKnownResponse.configuration);
40
+ * ```
27
41
  */
28
42
  export class PlatformClient {
29
43
  constructor(options) {
@@ -52,6 +66,9 @@ export class PlatformClient {
52
66
  unsafe: createClient(UnsafeService, transport),
53
67
  wellknown: createClient(WellKnownService, transport),
54
68
  };
69
+ this.v2 = {
70
+ authorization: createClient(AuthorizationServiceV2, transport),
71
+ };
55
72
  }
56
73
  }
57
74
  /**
@@ -62,8 +79,6 @@ export class PlatformClient {
62
79
  * that returns an object containing authentication headers. These headers are then
63
80
  * added to the request before it is sent to the server.
64
81
  *
65
- * @param authProvider - An instance of `AuthProvider` used to generate authentication credentials.
66
- * @returns An `Interceptor` function that modifies requests to include authentication headers.
67
82
  */
68
83
  function createAuthInterceptor(authProvider) {
69
84
  const authInterceptor = (next) => async (req) => {
@@ -73,7 +88,9 @@ function createAuthInterceptor(authProvider) {
73
88
  const token = await authProvider.withCreds({
74
89
  url: pathOnly,
75
90
  method: 'POST',
91
+ // Start with any headers Connect already has
76
92
  headers: {
93
+ ...Object.fromEntries(req.header.entries()),
77
94
  'Content-Type': 'application/json',
78
95
  },
79
96
  });
@@ -84,4 +101,4 @@ function createAuthInterceptor(authProvider) {
84
101
  };
85
102
  return authInterceptor;
86
103
  }
87
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGxhdGZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sS0FBSyxrQkFBa0IsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEtBQUssZUFBZSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR2pFLE9BQU8sRUFBVSxZQUFZLEVBQWUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQXlCdEU7Ozs7Ozs7Ozs7R0FVRztBQUNILE1BQU0sT0FBTyxjQUFjO0lBR3pCLFlBQVksT0FBOEI7UUFDeEMsTUFBTSxZQUFZLEdBQWtCLEVBQUUsQ0FBQztRQUV2QyxJQUFJLE9BQU8sQ0FBQyxZQUFZLEVBQUUs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
104
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGxhdGZvcm0uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcGxhdGZvcm0udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsK0JBQStCO0FBQy9CLE9BQU8sS0FBSyxrQkFBa0IsTUFBTSx5QkFBeUIsQ0FBQztBQUM5RCxPQUFPLEtBQUssZUFBZSxNQUFNLHFCQUFxQixDQUFDO0FBRXZELE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHlCQUF5QixDQUFDO0FBR2pFLE9BQU8sRUFBVSxZQUFZLEVBQWUsTUFBTSxxQkFBcUIsQ0FBQztBQUN4RSxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsTUFBTSxpRUFBaUUsQ0FBQztBQUNuRyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSw4Q0FBOEMsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLElBQUksc0JBQXNCLEVBQUUsTUFBTSxpREFBaUQsQ0FBQztBQUNqSCxPQUFPLEVBQUUsdUJBQXVCLEVBQUUsTUFBTSxxREFBcUQsQ0FBQztBQUM5RixPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDekQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHlDQUF5QyxDQUFDO0FBQ3hFLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2xGLE9BQU8sRUFBRSw4QkFBOEIsRUFBRSxNQUFNLGdFQUFnRSxDQUFDO0FBQ2hILE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLCtDQUErQyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLDBEQUEwRCxDQUFDO0FBQ2xHLE9BQU8sRUFBRSxxQkFBcUIsRUFBRSxNQUFNLHdEQUF3RCxDQUFDO0FBQy9GLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQTZCdEU7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0dBdUJHO0FBRUgsTUFBTSxPQUFPLGNBQWM7SUFJekIsWUFB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
@@ -9,12 +9,6 @@ export async function attributeFQNsAsValues(platformUrl, authProvider, ...fqns)
9
9
  try {
10
10
  response = await platform.v1.attributes.getAttributeValuesByFqns({
11
11
  fqns,
12
- withValue: {
13
- withKeyAccessGrants: true,
14
- withAttribute: {
15
- withKeyAccessGrants: true,
16
- },
17
- },
18
12
  });
19
13
  }
20
14
  catch (e) {
@@ -34,4 +28,29 @@ export async function attributeFQNsAsValues(platformUrl, authProvider, ...fqns)
34
28
  }
35
29
  return values;
36
30
  }
37
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BvbGljeS9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU1QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBSWhELDJGQUEyRjtBQUMzRixNQUFNLENBQUMsS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxXQUFtQixFQUNuQixZQUEwQixFQUMxQixHQUFHLElBQWM7SUFFakIsV0FBVyxHQUFHLDZCQUE2QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFbkUsSUFBSSxRQUEwQyxDQUFDO0lBQy9DLElBQUksQ0FBQztRQUNILFFBQVEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDO1lBQy9ELElBQUk7WUFDSixTQUFTLEVBQUU7Z0JBQ1QsbUJBQW1CLEVBQUUsSUFBSTtnQkFDekIsYUFBYSxFQUFFO29CQUNiLG1CQUFtQixFQUFFLElBQUk7aUJBQzFCO2FBQ0Y7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxZQUFZLENBQ3BCLElBQUksV0FBVyxnQ0FBZ0Msc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDM0UsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFDM0IsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztRQUNwRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLEdBQUcsK0JBQStCLENBQUMsQ0FBQztZQUNqRixTQUFTO1FBQ1gsQ0FBQztRQUNELElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDL0MsS0FBSyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIn0=
31
+ // Get root certificates from a namespace
32
+ export async function getRootCertsFromNamespace(platformUrl, authProvider, namespaceId, fqn) {
33
+ platformUrl = getPlatformUrlFromKasEndpoint(platformUrl);
34
+ // Ensure at least one identifier is provided to avoid guaranteed API failure
35
+ if (!namespaceId && !fqn) {
36
+ throw new Error('Either namespaceId or fqn must be provided');
37
+ }
38
+ const platform = new PlatformClient({ authProvider, platformUrl });
39
+ let response;
40
+ try {
41
+ response = await platform.v1.namespace.getNamespace({
42
+ id: '', // deprecated field, but required
43
+ identifier: namespaceId
44
+ ? { case: 'namespaceId', value: namespaceId }
45
+ : { case: 'fqn', value: fqn },
46
+ });
47
+ }
48
+ catch (e) {
49
+ throw new NetworkError(`[${platformUrl}] [GetNamespace] ${extractRpcErrorMessage(e)}`);
50
+ }
51
+ if (!response.namespace) {
52
+ throw new NetworkError(`[${platformUrl}] [GetNamespace] Namespace not found`);
53
+ }
54
+ return response.namespace.rootCerts || [];
55
+ }
56
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXBpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL3BvbGljeS9hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGNBQWMsQ0FBQztBQUU1QyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsNkJBQTZCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDcEYsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBTWhELDJGQUEyRjtBQUMzRixNQUFNLENBQUMsS0FBSyxVQUFVLHFCQUFxQixDQUN6QyxXQUFtQixFQUNuQixZQUEwQixFQUMxQixHQUFHLElBQWM7SUFFakIsV0FBVyxHQUFHLDZCQUE2QixDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3pELE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFbkUsSUFBSSxRQUEwQyxDQUFDO0lBQy9DLElBQUksQ0FBQztRQUNILFFBQVEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLENBQUMsVUFBVSxDQUFDLHdCQUF3QixDQUFDO1lBQy9ELElBQUk7U0FDTCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQztRQUNYLE1BQU0sSUFBSSxZQUFZLENBQ3BCLElBQUksV0FBVyxnQ0FBZ0Msc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDM0UsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLE1BQU0sR0FBWSxFQUFFLENBQUM7SUFDM0IsS0FBSyxNQUFNLENBQUMsR0FBRyxFQUFFLEVBQUUsQ0FBQyxJQUFJLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLGtCQUFrQixDQUFDLEVBQUUsQ0FBQztRQUNwRSxNQUFNLEtBQUssR0FBRyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNYLE9BQU8sQ0FBQyxHQUFHLENBQUMsaUNBQWlDLEdBQUcsK0JBQStCLENBQUMsQ0FBQztZQUNqRixTQUFTO1FBQ1gsQ0FBQztRQUNELElBQUksS0FBSyxJQUFJLEVBQUUsQ0FBQyxTQUFTLElBQUksQ0FBQyxLQUFLLEVBQUUsU0FBUyxFQUFFLENBQUM7WUFDL0MsS0FBSyxDQUFDLFNBQVMsR0FBRyxFQUFFLENBQUMsU0FBUyxDQUFDO1FBQ2pDLENBQUM7UUFFRCxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQ3JCLENBQUM7SUFDRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDO0FBRUQseUNBQXlDO0FBQ3pDLE1BQU0sQ0FBQyxLQUFLLFVBQVUseUJBQXlCLENBQzdDLFdBQW1CLEVBQ25CLFlBQTJCLEVBQzNCLFdBQW9CLEVBQ3BCLEdBQVk7SUFFWixXQUFXLEdBQUcsNkJBQTZCLENBQUMsV0FBVyxDQUFDLENBQUM7SUFFekQsNkVBQTZFO0lBQzdFLElBQUksQ0FBQyxXQUFXLElBQUksQ0FBQyxHQUFHLEVBQUUsQ0FBQztRQUN6QixNQUFNLElBQUksS0FBSyxDQUFDLDRDQUE0QyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVELE1BQU0sUUFBUSxHQUFHLElBQUksY0FBYyxDQUFDLEVBQUUsWUFBWSxFQUFFLFdBQVcsRUFBRSxDQUFDLENBQUM7SUFFbkUsSUFBSSxRQUE4QixDQUFDO0lBQ25DLElBQUksQ0FBQztRQUNILFFBQVEsR0FBRyxNQUFNLFFBQVEsQ0FBQyxFQUFFLENBQUMsU0FBUyxDQUFDLFlBQVksQ0FBQztZQUNsRCxFQUFFLEVBQUUsRUFBRSxFQUFFLGlDQUFpQztZQUN6QyxVQUFVLEVBQUUsV0FBVztnQkFDckIsQ0FBQyxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxLQUFLLEVBQUUsV0FBVyxFQUFFO2dCQUM3QyxDQUFDLENBQUMsRUFBRSxJQUFJLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRSxHQUFJLEVBQUU7U0FDakMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUM7UUFDWCxNQUFNLElBQUksWUFBWSxDQUFDLElBQUksV0FBVyxvQkFBb0Isc0JBQXNCLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFFRCxJQUFJLENBQUMsUUFBUSxDQUFDLFNBQVMsRUFBRSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxZQUFZLENBQUMsSUFBSSxXQUFXLHNDQUFzQyxDQUFDLENBQUM7SUFDaEYsQ0FBQztJQUVELE9BQU8sUUFBUSxDQUFDLFNBQVMsQ0FBQyxTQUFTLElBQUksRUFBRSxDQUFDO0FBQzVDLENBQUMifQ==
@@ -15,50 +15,47 @@ export function booleanOperatorFor(rule) {
15
15
  }
16
16
  export function plan(dataAttrs) {
17
17
  // KASes by value
18
- const grants = {};
19
- // KAS detail by KAS url
20
- const kasInfo = {};
21
- // Attribute definitions in use
22
- const prefixes = new Set();
18
+ const granters = Object.create(null);
23
19
  // Values grouped by normalized attribute prefix
24
- const allClauses = {};
25
- // Values by normalized FQN
26
- const allValues = {};
27
- const addGrants = (val, gs) => {
20
+ const allClauses = Object.create(null);
21
+ const addGrants = (valueFQN, gs) => {
22
+ if (!(valueFQN in granters)) {
23
+ granters[valueFQN] = new Set();
24
+ }
28
25
  if (!gs?.length) {
29
- if (!(val in grants)) {
30
- grants[val] = new Set();
31
- }
32
26
  return false;
33
27
  }
34
28
  for (const g of gs) {
35
- if (val in grants) {
36
- grants[val].add(g.uri);
37
- }
38
- else {
39
- grants[val] = new Set([g.uri]);
40
- }
41
- kasInfo[g.uri] = g;
29
+ granters[valueFQN].add(g);
42
30
  }
43
31
  return true;
44
32
  };
45
33
  for (const v of dataAttrs) {
46
- const { attribute, fqn } = v;
34
+ const { attribute, fqn, kasKeys } = v;
47
35
  if (!attribute) {
48
36
  throw new ConfigurationError(`attribute not defined for [${fqn}]`);
49
37
  }
50
38
  const valFqn = fqn.toLowerCase();
51
39
  const attrFqn = attribute.fqn.toLowerCase();
52
- if (!prefixes.has(attrFqn)) {
53
- prefixes.add(attrFqn);
40
+ if (!(attrFqn in allClauses)) {
54
41
  allClauses[attrFqn] = {
55
42
  def: attribute,
56
43
  values: [],
57
44
  };
58
45
  }
59
46
  allClauses[attrFqn].values.push(valFqn);
60
- allValues[valFqn] = v;
61
- if (!addGrants(valFqn, v.grants)) {
47
+ const validKasKeys = kasKeys
48
+ .map((kasKey) => {
49
+ if (!kasKey.publicKey) {
50
+ return null;
51
+ }
52
+ return Object.assign({ kasUri: kasKey.kasUri }, kasKey.publicKey);
53
+ })
54
+ .filter((kasKey) => kasKey !== null);
55
+ if (validKasKeys.length) {
56
+ addGrants(valFqn, validKasKeys);
57
+ }
58
+ else if (!addGrants(valFqn, v.grants)) {
62
59
  if (!addGrants(valFqn, attribute.grants)) {
63
60
  addGrants(valFqn, attribute.namespace?.grants);
64
61
  }
@@ -66,61 +63,81 @@ export function plan(dataAttrs) {
66
63
  }
67
64
  const kcs = [];
68
65
  for (const attrClause of Object.values(allClauses)) {
69
- const ccv = [];
70
- for (const term of attrClause.values) {
71
- const grantsForTerm = Array.from(grants[term] || []);
72
- if (grantsForTerm?.length) {
73
- ccv.push({
66
+ // Create wrapper clauses for each value, [(ANY_OF Value-1), (ANY_OF Value-2)]
67
+ const individualValueClauses = [];
68
+ for (const attrValue of attrClause.values) {
69
+ const grantersForAttr = granters[attrValue] || new Set();
70
+ if (grantersForAttr.size) {
71
+ individualValueClauses.push({
74
72
  op: 'anyOf',
75
- kases: grantsForTerm,
73
+ granters: Array.from(grantersForAttr.values()),
76
74
  });
77
75
  }
78
76
  }
77
+ // Use proper boolean operation with wrapped values.
79
78
  const op = booleanOperatorFor(attrClause.def?.rule);
80
79
  kcs.push({
81
80
  op,
82
- children: ccv,
81
+ children: individualValueClauses,
83
82
  });
84
83
  }
85
- return simplify(kcs, kasInfo);
84
+ return simplify(kcs);
86
85
  }
87
- function simplify(clauses, kasInfo) {
86
+ function simplify(clauses) {
88
87
  const conjunction = {};
89
- function keyFor(kases) {
90
- const k = Array.from(new Set([kases])).sort();
91
- return k.join('|');
88
+ function keyFor(granters) {
89
+ const keyParts = granters
90
+ .map((keyHolder) => {
91
+ const keyParts = [];
92
+ if ('kid' in keyHolder) {
93
+ keyParts.push(keyHolder.kasUri);
94
+ keyParts.push(keyHolder.kid);
95
+ }
96
+ else {
97
+ keyParts.push(keyHolder.uri);
98
+ keyParts.push('');
99
+ }
100
+ return [keyHolder, keyParts.join('/')];
101
+ })
102
+ .sort(([, sortKeyA], [, sortKeyB]) => {
103
+ return sortKeyA.localeCompare(sortKeyB);
104
+ })
105
+ .map(([, sortKey]) => {
106
+ return sortKey;
107
+ });
108
+ return keyParts.join(':');
92
109
  }
93
110
  for (const { op, children } of clauses) {
94
111
  if (!children) {
95
112
  continue;
96
113
  }
97
114
  if (op === 'anyOf') {
98
- const anyKids = [];
115
+ const granters = [];
99
116
  for (const bc of children) {
100
117
  if (bc.op != 'anyOf') {
101
118
  throw new Error('internal: autoconfigure inversion in disjunction');
102
119
  }
103
- if (!bc.kases?.length) {
120
+ if (!bc.granters.length) {
104
121
  continue;
105
122
  }
106
- anyKids.push(...bc.kases);
123
+ granters.push(...bc.granters);
107
124
  }
108
- if (!anyKids?.length) {
125
+ if (!granters.length) {
109
126
  continue;
110
127
  }
111
- const k = keyFor(anyKids);
112
- conjunction[k] = anyKids;
128
+ const k = keyFor(granters);
129
+ conjunction[k] = granters;
113
130
  }
114
131
  else {
115
132
  for (const bc of children) {
116
133
  if (bc.op != 'anyOf') {
117
- throw new Error('insternal: autoconfigure inversion in conjunction');
134
+ throw new Error('internal: autoconfigure inversion in conjunction');
118
135
  }
119
- if (!bc.kases?.length) {
136
+ if (!bc.granters.length) {
120
137
  continue;
121
138
  }
122
- const k = keyFor(bc.kases);
123
- conjunction[k] = bc.kases;
139
+ const k = keyFor(bc.granters);
140
+ conjunction[k] = bc.granters;
124
141
  }
125
142
  }
126
143
  }
@@ -133,9 +150,19 @@ function simplify(clauses, kasInfo) {
133
150
  i += 1;
134
151
  const sid = '' + i;
135
152
  for (const kas of conjunction[k]) {
136
- t.push({ sid, kas: kasInfo[kas] });
153
+ if ('kid' in kas) {
154
+ t.push({ sid, kas: kas, kid: kas.kid });
155
+ }
156
+ else if (kas.publicKey && kas.publicKey.publicKey.case === 'cached') {
157
+ kas.publicKey.publicKey.value.keys.forEach((key) => {
158
+ t.push({ sid, kas: kas, kid: key.kid });
159
+ });
160
+ }
161
+ else {
162
+ t.push({ sid, kas: kas });
163
+ }
137
164
  }
138
165
  }
139
166
  return t;
140
167
  }
141
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhbnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wb2xpY3kvZ3JhbnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFhLGlCQUFpQixFQUEwQixNQUFNLGlCQUFpQixDQUFDO0FBb0N2RixNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBd0I7SUFDekQsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssaUJBQWlCLENBQUMsV0FBVyxDQUFDO1FBQ25DLEtBQUssaUJBQWlCLENBQUMsTUFBTTtZQUMzQixPQUFPLE9BQU8sQ0FBQztRQUNqQixLQUFLLGlCQUFpQixDQUFDLE1BQU07WUFDM0IsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxpQkFBaUIsQ0FBQyxTQUFTO1lBQzlCLE9BQU8sV0FBVyxDQUFDO1FBQ3JCO1lBQ0UsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFFRCxNQUFNLFVBQVUsSUFBSSxDQUFDLFNBQWtCO0lBQ3JDLGlCQUFpQjtJQUNqQixNQUFNLE1BQU0sR0FBZ0MsRUFBRSxDQUFDO0lBQy9DLHdCQUF3QjtJQUN4QixNQUFNLE9BQU8sR0FBb0MsRUFBRSxDQUFDO0lBQ3BELCtCQUErQjtJQUMvQixNQUFNLFFBQVEsR0FBZ0IsSUFBSSxHQUFHLEVBQUUsQ0FBQztJQUN4QyxnREFBZ0Q7SUFDaEQsTUFBTSxVQUFVLEdBQW9DLEVBQUUsQ0FBQztJQUN2RCwyQkFBMkI7SUFDM0IsTUFBTSxTQUFTLEdBQTBCLEVBQUUsQ0FBQztJQUU1QyxNQUFNLFNBQVMsR0FBRyxDQUFDLEdBQVcsRUFBRSxFQUFzQixFQUFXLEVBQUU7UUFDakUsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsQ0FBQyxHQUFHLElBQUksTUFBTSxDQUFDLEVBQUUs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
168
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3JhbnRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9wb2xpY3kvZ3JhbnRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFDbEQsT0FBTyxFQUFhLGlCQUFpQixFQUEwQixNQUFNLGlCQUFpQixDQUFDO0FBd0N2RixNQUFNLFVBQVUsa0JBQWtCLENBQUMsSUFBd0I7SUFDekQsUUFBUSxJQUFJLEVBQUUsQ0FBQztRQUNiLEtBQUssaUJBQWlCLENBQUMsV0FBVyxDQUFDO1FBQ25DLEtBQUssaUJBQWlCLENBQUMsTUFBTTtZQUMzQixPQUFPLE9BQU8sQ0FBQztRQUNqQixLQUFLLGlCQUFpQixDQUFDLE1BQU07WUFDM0IsT0FBTyxPQUFPLENBQUM7UUFDakIsS0FBSyxpQkFBaUIsQ0FBQyxTQUFTO1lBQzlCLE9BQU8sV0FBVyxDQUFDO1FBQ3JCO1lBQ0UsT0FBTyxPQUFPLENBQUM7SUFDbkIsQ0FBQztBQUNILENBQUM7QUFHRCxNQUFNLFVBQVUsSUFBSSxDQUFDLFNBQWtCO0lBQ3JDLGlCQUFpQjtJQUNqQixNQUFNLFFBQVEsR0FBcUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUN2RSxnREFBZ0Q7SUFDaEQsTUFBTSxVQUFVLEdBQW9DLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUM7SUFFeEUsTUFBTSxTQUFTLEdBQUcsQ0FBQyxRQUFnQixFQUFFLEVBQWdCLEVBQVcsRUFBRTtRQUNoRSxJQUFJLENBQUMsQ0FBQyxRQUFRLElBQUksUUFBUSxDQUFDLEVBQUUsQ0FBQztZQUM1QixRQUFRLENBQUMsUUFBUSxDQUFDLEdBQUcsSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNqQyxDQUFDO1FBQ0QsSUFBSSxDQUFDLEVBQUUsRUFBRSxNQUFNLEVBQUUsQ0FBQztZQUNoQixPQUFPLEtBQUssQ0FBQztRQUNmLENB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
@@ -13,11 +13,29 @@ export const fromBrowserFile = (fileRef) => {
13
13
  return new Uint8Array(arrayBuffer);
14
14
  };
15
15
  };
16
+ /**
17
+ * Creates a seekable object from a buffer.
18
+ * @param source A Uint8Array to read from.
19
+ * If byteStart and byteEnd are not provided, reads the entire array.
20
+ * If byteStart is provided, reads from that index to the end of the array.
21
+ * If byteEnd is provided, reads from byteStart to byteEnd (exclusive).
22
+ * If both byteStart and byteEnd are provided, reads from byteStart to byteEnd (exclusive).
23
+ * @returns A promise that resolves to a Uint8Array containing the requested data.
24
+ */
16
25
  export const fromBuffer = (source) => {
17
26
  return (byteStart, byteEnd) => {
18
27
  return Promise.resolve(source.slice(byteStart, byteEnd));
19
28
  };
20
29
  };
30
+ /**
31
+ * Creates a seekable object from a string.
32
+ * @param source A string to read from.
33
+ * If byteStart and byteEnd are not provided, reads the entire string.
34
+ * If byteStart is provided, reads from that index to the end of the string.
35
+ * If byteEnd is provided, reads from byteStart to byteEnd (exclusive).
36
+ * If both byteStart and byteEnd are provided, reads from byteStart to byteEnd (exclusive).
37
+ * @returns A promise that resolves to a Uint8Array containing the requested data.
38
+ */
21
39
  export const fromString = (source) => {
22
40
  return fromBuffer(new TextEncoder().encode(source));
23
41
  };
@@ -82,6 +100,12 @@ export const fromUrl = async (location) => {
82
100
  return await getRemoteChunk(location, rangeHeader);
83
101
  };
84
102
  };
103
+ /**
104
+ * Creates a seekable object from a source.
105
+ * @param source A Source object containing the type and location of the data.
106
+ * @returns A promise that resolves to a Chunker function.
107
+ * @throws ConfigurationError if the source type is not supported or the location is invalid.
108
+ */
85
109
  export const fromSource = async ({ type, location }) => {
86
110
  switch (type) {
87
111
  case 'buffer':
@@ -110,6 +134,13 @@ export const fromSource = async ({ type, location }) => {
110
134
  throw new ConfigurationError(`Data source type not defined, or not supported: ${type}}`);
111
135
  }
112
136
  };
137
+ /**
138
+ * Converts a Source object to a ReadableStream.
139
+ * @param source A Source object containing the type and location of the data.
140
+ * Converts the source to a ReadableStream of Uint8Array.
141
+ * This is useful for streaming data from various sources like files, remote URLs, or chunkers.
142
+ * @returns A ReadableStream of Uint8Array.
143
+ */
113
144
  export async function sourceToStream(source) {
114
145
  switch (source.type) {
115
146
  case 'stream':
@@ -145,4 +176,4 @@ export async function sourceToStream(source) {
145
176
  }
146
177
  // Deprected name, prefer `fromSource`
147
178
  export const fromDataSource = fromSource;
148
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vla2FibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Vla2FibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQW9CakY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBYSxFQUFXLEVBQUU7SUFDeEQsT0FBTyxLQUFLLEVBQUUsU0FBa0IsRUFBRSxPQUFnQixFQUF1QixFQUFFO1FBQ3pFLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRSxPQUFPLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQWtCLEVBQVcsRUFBRTtJQUN4RCxPQUFPLENBQUMsU0FBa0IsRUFBRSxPQUFnQixFQUFFLEVBQUU7UUFDOUMsT0FBTyxPQUFPLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxDQUFDLENBQUM7SUFDM0QsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDO0FBRUYsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBYyxFQUFXLEVBQUU7SUFDcEQsT0FBTyxVQUFVLENBQUMsSUFBSSxXQUFXLEVBQUUsQ0FB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
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vla2FibGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvc2Vla2FibGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGtCQUFrQixFQUFFLGdCQUFnQixFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQW9CakY7OztHQUdHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsT0FBYSxFQUFXLEVBQUU7SUFDeEQsT0FBTyxLQUFLLEVBQUUsU0FBa0IsRUFBRSxPQUFnQixFQUF1QixFQUFFO1FBQ3pFLElBQUksU0FBUyxLQUFLLFNBQVMsRUFBRSxDQUFDO1lBQzVCLE9BQU8sSUFBSSxVQUFVLENBQUMsTUFBTSxPQUFPLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNyRCxDQUFDO1FBQ0QsTUFBTSxTQUFTLEdBQUcsT0FBTyxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUM7UUFDcEQsTUFBTSxXQUFXLEdBQUcsTUFBTSxJQUFJLFFBQVEsQ0FBQyxTQUFTLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQztRQUNoRSxPQUFPLElBQUksVUFBVSxDQUFDLFdBQVcsQ0FBQyxDQUFDO0lBQ3JDLENBQUMsQ0FBQztBQUNKLENBQUMsQ0FBQztBQUVGOzs7Ozs7OztHQVFHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sVUFBVSxHQUFHLENBQUMsTUFBa0IsRUFBVyxFQUFFO0lBQ3hELE9BQU8sQ0FBQyxTQUFrQixFQUFFLE9BQWdCLEVBQUUsRUFBRTtRQUM5QyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxTQUFTLEVBQUUsT0FBTyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDLENBQUM7QUFDSixDQUFDLENBQUM7QUFFRjs7Ozs7Ozs7R0FRRztBQUNILE1BQU0sQ0FBQyxNQUFNLFVBQVUsR0FBRyxDQUFDLE1BQWMsRUFBVyxFQUFFO0lBQ3BE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
@@ -3,6 +3,7 @@ import { base64 } from './encodings/index.js';
3
3
  import { pemCertToCrypto, pemPublicToCrypto } from './nanotdf-crypto/pemPublicToCrypto.js';
4
4
  import { ConfigurationError } from './errors.js';
5
5
  import { ConnectError } from '@connectrpc/connect';
6
+ const REQUIRED_OBLIGATIONS_METADATA_KEY = 'X-Required-Obligations';
6
7
  /**
7
8
  * Check to see if the given URL is 'secure'. This assumes:
8
9
  *
@@ -32,15 +33,32 @@ export function validateSecureUrl(url) {
32
33
  }
33
34
  return true;
34
35
  }
36
+ /**
37
+ * Pads a URL with a trailing slash if it does not already have one.
38
+ * This is useful for ensuring that URLs are in a consistent format.
39
+ * @param u The URL to pad.
40
+ * @returns The padded URL.
41
+ */
35
42
  export function padSlashToUrl(u) {
36
43
  if (u.endsWith('/')) {
37
44
  return u;
38
45
  }
39
46
  return `${u}/`;
40
47
  }
48
+ /**
49
+ * Checks if the current environment is a browser.
50
+ * This is useful for determining if certain APIs or features are available.
51
+ * @returns true if running in a browser, false otherwise.
52
+ */
41
53
  export function isBrowser() {
42
54
  return typeof window !== 'undefined'; // eslint-disable-line
43
55
  }
56
+ /**
57
+ * Removes trailing characters from a string.
58
+ * @param str The string to trim.
59
+ * @param suffix The suffix to remove (default is a single space).
60
+ * @returns The trimmed string.
61
+ */
44
62
  export const rstrip = (str, suffix = ' ') => {
45
63
  while (str && suffix && str.endsWith(suffix)) {
46
64
  str = str.slice(0, -suffix.length);
@@ -81,6 +99,15 @@ export const estimateSkewFromHeaders = (headers, dateNowBefore) => {
81
99
  const deltaAfter = serverUnixTime - localUnixTimeAfter;
82
100
  return Math.round((deltaBefore + deltaAfter) / 2);
83
101
  };
102
+ /**
103
+ * Adds new lines to a string every 64 characters.
104
+ * @param str A string to add new lines to.
105
+ * This function takes a string and adds new lines every 64 characters.
106
+ * If the string is empty or undefined, it returns the original string.
107
+ * This is useful for formatting long strings, such as public keys or certificates,
108
+ * to ensure they are properly formatted for PEM encoding.
109
+ * @returns The formatted string with new lines added.
110
+ */
84
111
  export function addNewLines(str) {
85
112
  if (!str) {
86
113
  return str;
@@ -93,6 +120,11 @@ export function addNewLines(str) {
93
120
  }
94
121
  return finalString;
95
122
  }
123
+ /**
124
+ * Creates a PEM-encoded string from a public key.
125
+ * @param publicKey The public key to convert.
126
+ * @returns A promise that resolves to a PEM-encoded string.
127
+ */
96
128
  export async function cryptoPublicToPem(publicKey) {
97
129
  if (publicKey.type !== 'public') {
98
130
  throw new ConfigurationError('incorrect key type');
@@ -102,6 +134,11 @@ export async function cryptoPublicToPem(publicKey) {
102
134
  const pem = addNewLines(b64);
103
135
  return `-----BEGIN PUBLIC KEY-----\r\n${pem}-----END PUBLIC KEY-----`;
104
136
  }
137
+ /**
138
+ * Converts a PEM-encoded public key to a CryptoKey.
139
+ * @param pem The PEM-encoded public key.
140
+ * @returns A promise that resolves to a CryptoKey.
141
+ */
105
142
  export async function pemToCryptoPublicKey(pem) {
106
143
  if (/-----BEGIN PUBLIC KEY-----/.test(pem)) {
107
144
  return pemPublicToCrypto(pem);
@@ -114,6 +151,15 @@ export async function pemToCryptoPublicKey(pem) {
114
151
  // - When converting between PEM and CryptoKey formats for user provided session keys (e.g. for DPoP)
115
152
  throw new TypeError(`unsupported pem type [${pem}]`);
116
153
  }
154
+ /**
155
+ * Extracts the PEM-encoded public key from a key string.
156
+ * @param keyString A string containing a public key or certificate.
157
+ * This function extracts the PEM-encoded public key from a given key string.
158
+ * If the key string contains a certificate, it imports the certificate and exports
159
+ * the public key in PEM format. If the key string is already in PEM format, it returns
160
+ * the key string as is.
161
+ * @returns A promise that resolves to a PEM-encoded public key.
162
+ */
117
163
  export async function extractPemFromKeyString(keyString) {
118
164
  let pem = keyString;
119
165
  // Skip the public key extraction if we find that the KAS url provides a
@@ -126,6 +172,12 @@ export async function extractPemFromKeyString(keyString) {
126
172
  }
127
173
  /**
128
174
  * Extracts the error message from an RPC catch error.
175
+ * @param error An error object, typically from a network request.
176
+ * This function extracts the error message from a ConnectError or a generic Error.
177
+ * If the error is a ConnectError or a standard Error, it returns the message.
178
+ * If the error is of an unknown type, it returns a default message indicating
179
+ * that an unknown network error occurred.
180
+ * @returns The extracted error message.
129
181
  */
130
182
  export function extractRpcErrorMessage(error) {
131
183
  if (error instanceof ConnectError || error instanceof Error) {
@@ -135,8 +187,11 @@ export function extractRpcErrorMessage(error) {
135
187
  }
136
188
  /**
137
189
  * Converts a KAS endpoint URL to a platform URL.
138
- * If the KAS endpoint ends with '/kas', it returns the host url
139
- * Otherwise, it returns the original KAS endpoint.
190
+ * @param endpoint The KAS endpoint URL to extract the platform URL from.
191
+ * This function extracts the base URL from a KAS endpoint URL.
192
+ * It removes any trailing slashes and specific path segments related to rewrap or kas.
193
+ * This is useful for obtaining the base URL for further API requests.
194
+ * @returns The base URL of the platform.
140
195
  */
141
196
  export function getPlatformUrlFromKasEndpoint(endpoint) {
142
197
  let result = endpoint || '';
@@ -151,4 +206,30 @@ export function getPlatformUrlFromKasEndpoint(endpoint) {
151
206
  }
152
207
  return result;
153
208
  }
154
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFDakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5EOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFDSCxNQUFNLFVBQVUsaUJBQWlCLENBQUMsR0FBVztJQUMzQyxNQUFNLFVBQVUsR0FBRyxTQUFTLENBQUM7SUFDN0IsSUFBSSx3REFBd0QsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUN2RSxPQUFPLENBQUMsSUFBSSxDQUFDLDhCQUE4QixHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ3JELENBQUM7U0FBTSxJQUNMLHNEQUFzRCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUM7UUFDaEUseURBQXlELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUNuRSxDQUFDO1FBQ0QsT0FBTyxDQUFDLElBQUksQ0FBQywyQkFBMkIsR0FBRyxHQUFHLENBQUMsQ0FBQztJQUNsRCxDQUFDO1NBQU0sSUFBSSxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNqQyxPQUFPLENBQUMsS0FBSyxDQUFDLHNFQUFzRSxHQUFHLEdBQUcsQ0FBQyxDQUFDO1FBQzVGLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNELE9BQU8sSUFBSSxDQUFDO0FBQ2QsQ0FBQztBQUVELE1BQU0sVUFBVSxhQUFhLENBQUMsQ0FBUztJQUNy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
209
+ /**
210
+ * Retrieves the fully qualified Obligations (values) that must be fulfilled from a rewrap response.
211
+ */
212
+ export function getRequiredObligationFQNs(response) {
213
+ const requiredObligations = new Set();
214
+ // Loop through response key access object results, checking proto values/types for a metadata key
215
+ // that matches the expected KAS-provided fulfillable obligations list.
216
+ for (const resp of response.responses) {
217
+ for (const result of resp.results) {
218
+ if (!result.metadata.hasOwnProperty(REQUIRED_OBLIGATIONS_METADATA_KEY)) {
219
+ continue;
220
+ }
221
+ const value = result.metadata[REQUIRED_OBLIGATIONS_METADATA_KEY];
222
+ if (value?.kind.case !== 'listValue') {
223
+ continue;
224
+ }
225
+ const obligations = value.kind.value.values;
226
+ for (const obligation of obligations) {
227
+ if (obligation.kind.case === 'stringValue') {
228
+ requiredObligations.add(obligation.kind.value.toLowerCase());
229
+ }
230
+ }
231
+ }
232
+ }
233
+ return [...requiredObligations.values()];
234
+ }
235
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxVQUFVLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFOUMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzlDLE9BQU8sRUFBRSxlQUFlLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSx1Q0FBdUMsQ0FBQztBQUMzRixPQUFPLEVBQUUsa0JBQWtCLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRW5ELE1BQU0saUNBQWlDLEdBQUcsd0JBQXdCLENBQUM7QUFFbkU7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUNILE1BQU0sVUFBVSxpQkFBaUIsQ0FBQyxHQUFXO0lBQzNDLE1BQU0sVUFBVSxHQUFHLFNBQVMsQ0FBQztJQUM3QixJQUFJLHdEQUF3RCxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ3ZFLE9BQU8sQ0FBQyxJQUFJLENBQUMsOEJBQThCLEdBQUcsR0FBRyxDQUFDLENBQUM7SUFDckQsQ0FBQztTQUFNLElBQ0wsc0RBQXNELENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQztRQUNoRSx5REFBeUQsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQ25FLENBQUM7UUFDRCxPQUFPLENBQUMsSUFBSSxDQUFDLDJCQUEyQixHQUFHLEdBQUcsQ0FBQyxDQUFDO0lBQ2xELENBQUM7U0FBTSxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQ2pDLE9BQU8sQ0FBQyxLQUFLLENBQUMsc0VBQXNFLEdBQUcsR0FBRyxDQUFDLENBQUM7UUFDNUYsT0FBTyxLQUFLLENBQUM7SUFDZixDQUFDO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFD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