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