@party-stack/foundry-ontology 0.18.0 → 0.18.1

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 (253) hide show
  1. package/lib/adapter/convertLoadSubsetOptions.d.ts +2 -0
  2. package/lib/adapter/convertLoadSubsetOptions.d.ts.map +1 -1
  3. package/lib/adapter/convertLoadSubsetOptions.js +158 -191
  4. package/lib/adapter/convertLoadSubsetOptions.js.map +1 -1
  5. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts +17 -15
  6. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts.map +1 -1
  7. package/lib/adapter/createFoundryOntologyBackendAdapter.js +288 -400
  8. package/lib/adapter/createFoundryOntologyBackendAdapter.js.map +1 -1
  9. package/lib/adapter/foundryActionValidation.d.ts +17 -15
  10. package/lib/adapter/foundryActionValidation.d.ts.map +1 -1
  11. package/lib/adapter/foundryActionValidation.js +206 -305
  12. package/lib/adapter/foundryActionValidation.js.map +1 -1
  13. package/lib/adapter/foundryCodec.d.ts +10 -9
  14. package/lib/adapter/foundryCodec.d.ts.map +1 -1
  15. package/lib/adapter/foundryCodec.js +180 -287
  16. package/lib/adapter/foundryCodec.js.map +1 -1
  17. package/lib/adapter/foundryMediaId.d.ts +6 -4
  18. package/lib/adapter/foundryMediaId.d.ts.map +1 -1
  19. package/lib/adapter/foundryMediaId.js +31 -32
  20. package/lib/adapter/foundryMediaId.js.map +1 -1
  21. package/lib/adapter/index.d.ts +4 -4
  22. package/lib/adapter/index.js +4 -4
  23. package/lib/adapter/objectCollectionOptions.d.ts +17 -18
  24. package/lib/adapter/objectCollectionOptions.d.ts.map +1 -1
  25. package/lib/adapter/objectCollectionOptions.js +417 -538
  26. package/lib/adapter/objectCollectionOptions.js.map +1 -1
  27. package/lib/config/applyAttachmentConstraintOverrides.d.ts +6 -4
  28. package/lib/config/applyAttachmentConstraintOverrides.d.ts.map +1 -1
  29. package/lib/config/applyAttachmentConstraintOverrides.js +45 -49
  30. package/lib/config/applyAttachmentConstraintOverrides.js.map +1 -1
  31. package/lib/config/index.d.ts +17 -15
  32. package/lib/config/index.d.ts.map +1 -1
  33. package/lib/config/index.js +56 -81
  34. package/lib/config/index.js.map +1 -1
  35. package/lib/connection.d.ts +28 -26
  36. package/lib/connection.d.ts.map +1 -1
  37. package/lib/connection.js +183 -215
  38. package/lib/connection.js.map +1 -1
  39. package/lib/index.d.ts +9 -5
  40. package/lib/index.js +9 -5
  41. package/lib/installation/createFoundryBackendInstallation.d.ts +21 -20
  42. package/lib/installation/createFoundryBackendInstallation.d.ts.map +1 -1
  43. package/lib/installation/createFoundryBackendInstallation.js +52 -62
  44. package/lib/installation/createFoundryBackendInstallation.js.map +1 -1
  45. package/lib/installation/index.d.ts +2 -2
  46. package/lib/installation/index.js +2 -2
  47. package/lib/meta/actionTypeCollectionOptions.d.ts +8 -6
  48. package/lib/meta/actionTypeCollectionOptions.d.ts.map +1 -1
  49. package/lib/meta/actionTypeCollectionOptions.js +49 -49
  50. package/lib/meta/actionTypeCollectionOptions.js.map +1 -1
  51. package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts +3 -1
  52. package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts.map +1 -1
  53. package/lib/meta/convertActionTypeLoadSubsetOptions.js +69 -75
  54. package/lib/meta/convertActionTypeLoadSubsetOptions.js.map +1 -1
  55. package/lib/meta/convertMetaActionType.d.ts +7 -5
  56. package/lib/meta/convertMetaActionType.d.ts.map +1 -1
  57. package/lib/meta/convertMetaActionType.js +458 -581
  58. package/lib/meta/convertMetaActionType.js.map +1 -1
  59. package/lib/meta/convertMetaLinkType.d.ts +4 -2
  60. package/lib/meta/convertMetaLinkType.d.ts.map +1 -1
  61. package/lib/meta/convertMetaLinkType.js +37 -43
  62. package/lib/meta/convertMetaLinkType.js.map +1 -1
  63. package/lib/meta/convertMetaObjectType.d.ts +4 -2
  64. package/lib/meta/convertMetaObjectType.d.ts.map +1 -1
  65. package/lib/meta/convertMetaObjectType.js +34 -35
  66. package/lib/meta/convertMetaObjectType.js.map +1 -1
  67. package/lib/meta/convertMetaQueryFunctionType.d.ts +4 -2
  68. package/lib/meta/convertMetaQueryFunctionType.d.ts.map +1 -1
  69. package/lib/meta/convertMetaQueryFunctionType.js +113 -94
  70. package/lib/meta/convertMetaQueryFunctionType.js.map +1 -1
  71. package/lib/meta/convertMetaTypeDef.d.ts +4 -2
  72. package/lib/meta/convertMetaTypeDef.d.ts.map +1 -1
  73. package/lib/meta/convertMetaTypeDef.js +178 -176
  74. package/lib/meta/convertMetaTypeDef.js.map +1 -1
  75. package/lib/meta/convertMetaValueType.d.ts +4 -2
  76. package/lib/meta/convertMetaValueType.d.ts.map +1 -1
  77. package/lib/meta/convertMetaValueType.js +11 -7
  78. package/lib/meta/convertMetaValueType.js.map +1 -1
  79. package/lib/meta/convertOmsActionParameterMetadata.d.ts +4 -2
  80. package/lib/meta/convertOmsActionParameterMetadata.d.ts.map +1 -1
  81. package/lib/meta/convertOmsActionParameterMetadata.js +107 -163
  82. package/lib/meta/convertOmsActionParameterMetadata.js.map +1 -1
  83. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts +7 -5
  84. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts.map +1 -1
  85. package/lib/meta/createFoundryMetaOntologyBackendAdapter.js +39 -41
  86. package/lib/meta/createFoundryMetaOntologyBackendAdapter.js.map +1 -1
  87. package/lib/meta/entityCollectionOptions.d.ts +12 -11
  88. package/lib/meta/entityCollectionOptions.d.ts.map +1 -1
  89. package/lib/meta/entityCollectionOptions.js +59 -62
  90. package/lib/meta/entityCollectionOptions.js.map +1 -1
  91. package/lib/meta/foundryAttachmentMetadata.d.ts +2 -0
  92. package/lib/meta/foundryAttachmentMetadata.d.ts.map +1 -1
  93. package/lib/meta/foundryAttachmentMetadata.js +13 -14
  94. package/lib/meta/foundryAttachmentMetadata.js.map +1 -1
  95. package/lib/meta/index.d.ts +5 -5
  96. package/lib/meta/index.js +5 -5
  97. package/lib/meta/loadActionTypeOmsMetadata.d.ts +5 -4
  98. package/lib/meta/loadActionTypeOmsMetadata.d.ts.map +1 -1
  99. package/lib/meta/loadActionTypeOmsMetadata.js +102 -139
  100. package/lib/meta/loadActionTypeOmsMetadata.js.map +1 -1
  101. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts +7 -5
  102. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts.map +1 -1
  103. package/lib/meta/queryFunctionTypeCollectionOptions.js +47 -49
  104. package/lib/meta/queryFunctionTypeCollectionOptions.js.map +1 -1
  105. package/lib/stagedWrites.d.ts +26 -24
  106. package/lib/stagedWrites.d.ts.map +1 -1
  107. package/lib/stagedWrites.js +55 -66
  108. package/lib/stagedWrites.js.map +1 -1
  109. package/lib/users/createFoundryAdminOntologyRoute.d.ts +47 -17366
  110. package/lib/users/createFoundryAdminOntologyRoute.d.ts.map +1 -1
  111. package/lib/users/createFoundryAdminOntologyRoute.js +29 -37
  112. package/lib/users/createFoundryAdminOntologyRoute.js.map +1 -1
  113. package/lib/users/createFoundryUsersIntegration.d.ts +6 -4
  114. package/lib/users/createFoundryUsersIntegration.d.ts.map +1 -1
  115. package/lib/users/createFoundryUsersIntegration.js +28 -30
  116. package/lib/users/createFoundryUsersIntegration.js.map +1 -1
  117. package/lib/users/foundryUser.d.ts +4 -2
  118. package/lib/users/foundryUser.d.ts.map +1 -1
  119. package/lib/users/foundryUser.js +69 -74
  120. package/lib/users/foundryUser.js.map +1 -1
  121. package/lib/users/index.d.ts +5 -5
  122. package/lib/users/index.js +5 -5
  123. package/lib/users/userCollectionOptions.d.ts +13 -12
  124. package/lib/users/userCollectionOptions.d.ts.map +1 -1
  125. package/lib/users/userCollectionOptions.js +82 -100
  126. package/lib/users/userCollectionOptions.js.map +1 -1
  127. package/lib/utils/AsyncIterable.d.ts +2 -0
  128. package/lib/utils/AsyncIterable.d.ts.map +1 -1
  129. package/lib/utils/AsyncIterable.js +26 -34
  130. package/lib/utils/AsyncIterable.js.map +1 -1
  131. package/lib/utils/actionTypeName.d.ts +2 -0
  132. package/lib/utils/actionTypeName.d.ts.map +1 -1
  133. package/lib/utils/actionTypeName.js +9 -7
  134. package/lib/utils/actionTypeName.js.map +1 -1
  135. package/lib/utils/chunk.d.ts +2 -0
  136. package/lib/utils/chunk.d.ts.map +1 -1
  137. package/lib/utils/chunk.js +8 -6
  138. package/lib/utils/chunk.js.map +1 -1
  139. package/package.json +17 -23
  140. package/lib/adapter/convertLoadSubsetOptions.test.d.ts +0 -2
  141. package/lib/adapter/convertLoadSubsetOptions.test.d.ts.map +0 -1
  142. package/lib/adapter/convertLoadSubsetOptions.test.js +0 -213
  143. package/lib/adapter/convertLoadSubsetOptions.test.js.map +0 -1
  144. package/lib/adapter/createFoundryOntologyBackendAdapter.test.d.ts +0 -2
  145. package/lib/adapter/createFoundryOntologyBackendAdapter.test.d.ts.map +0 -1
  146. package/lib/adapter/createFoundryOntologyBackendAdapter.test.js +0 -628
  147. package/lib/adapter/createFoundryOntologyBackendAdapter.test.js.map +0 -1
  148. package/lib/adapter/foundryActionValidation.test.d.ts +0 -2
  149. package/lib/adapter/foundryActionValidation.test.d.ts.map +0 -1
  150. package/lib/adapter/foundryActionValidation.test.js +0 -243
  151. package/lib/adapter/foundryActionValidation.test.js.map +0 -1
  152. package/lib/adapter/foundryCodec.test.d.ts +0 -2
  153. package/lib/adapter/foundryCodec.test.d.ts.map +0 -1
  154. package/lib/adapter/foundryCodec.test.js +0 -137
  155. package/lib/adapter/foundryCodec.test.js.map +0 -1
  156. package/lib/adapter/foundryMediaId.test.d.ts +0 -2
  157. package/lib/adapter/foundryMediaId.test.d.ts.map +0 -1
  158. package/lib/adapter/foundryMediaId.test.js +0 -23
  159. package/lib/adapter/foundryMediaId.test.js.map +0 -1
  160. package/lib/adapter/index.d.ts.map +0 -1
  161. package/lib/adapter/index.js.map +0 -1
  162. package/lib/adapter/objectCollectionOptions.test.d.ts +0 -2
  163. package/lib/adapter/objectCollectionOptions.test.d.ts.map +0 -1
  164. package/lib/adapter/objectCollectionOptions.test.js +0 -1290
  165. package/lib/adapter/objectCollectionOptions.test.js.map +0 -1
  166. package/lib/config/connectionPull.test.d.ts +0 -2
  167. package/lib/config/connectionPull.test.d.ts.map +0 -1
  168. package/lib/config/connectionPull.test.js +0 -151
  169. package/lib/config/connectionPull.test.js.map +0 -1
  170. package/lib/config/index.test.d.ts +0 -2
  171. package/lib/config/index.test.d.ts.map +0 -1
  172. package/lib/config/index.test.js +0 -182
  173. package/lib/config/index.test.js.map +0 -1
  174. package/lib/connection.test.d.ts +0 -2
  175. package/lib/connection.test.d.ts.map +0 -1
  176. package/lib/connection.test.js +0 -162
  177. package/lib/connection.test.js.map +0 -1
  178. package/lib/index.d.ts.map +0 -1
  179. package/lib/index.js.map +0 -1
  180. package/lib/installation/createFoundryBackendInstallation.test.d.ts +0 -2
  181. package/lib/installation/createFoundryBackendInstallation.test.d.ts.map +0 -1
  182. package/lib/installation/createFoundryBackendInstallation.test.js +0 -83
  183. package/lib/installation/createFoundryBackendInstallation.test.js.map +0 -1
  184. package/lib/installation/index.d.ts.map +0 -1
  185. package/lib/installation/index.js.map +0 -1
  186. package/lib/meta/actionTypeCollectionOptions.test.d.ts +0 -2
  187. package/lib/meta/actionTypeCollectionOptions.test.d.ts.map +0 -1
  188. package/lib/meta/actionTypeCollectionOptions.test.js +0 -24
  189. package/lib/meta/actionTypeCollectionOptions.test.js.map +0 -1
  190. package/lib/meta/actionTypeIdQuery.test.d.ts +0 -2
  191. package/lib/meta/actionTypeIdQuery.test.d.ts.map +0 -1
  192. package/lib/meta/actionTypeIdQuery.test.js +0 -131
  193. package/lib/meta/actionTypeIdQuery.test.js.map +0 -1
  194. package/lib/meta/convertActionTypeLoadSubsetOptions.test.d.ts +0 -2
  195. package/lib/meta/convertActionTypeLoadSubsetOptions.test.d.ts.map +0 -1
  196. package/lib/meta/convertActionTypeLoadSubsetOptions.test.js +0 -138
  197. package/lib/meta/convertActionTypeLoadSubsetOptions.test.js.map +0 -1
  198. package/lib/meta/convertMetaActionType.test.d.ts +0 -2
  199. package/lib/meta/convertMetaActionType.test.d.ts.map +0 -1
  200. package/lib/meta/convertMetaActionType.test.js +0 -1565
  201. package/lib/meta/convertMetaActionType.test.js.map +0 -1
  202. package/lib/meta/convertMetaLinkType.test.d.ts +0 -2
  203. package/lib/meta/convertMetaLinkType.test.d.ts.map +0 -1
  204. package/lib/meta/convertMetaLinkType.test.js +0 -110
  205. package/lib/meta/convertMetaLinkType.test.js.map +0 -1
  206. package/lib/meta/convertMetaObjectType.test.d.ts +0 -2
  207. package/lib/meta/convertMetaObjectType.test.d.ts.map +0 -1
  208. package/lib/meta/convertMetaObjectType.test.js +0 -250
  209. package/lib/meta/convertMetaObjectType.test.js.map +0 -1
  210. package/lib/meta/convertMetaQueryFunctionType.test.d.ts +0 -2
  211. package/lib/meta/convertMetaQueryFunctionType.test.d.ts.map +0 -1
  212. package/lib/meta/convertMetaQueryFunctionType.test.js +0 -134
  213. package/lib/meta/convertMetaQueryFunctionType.test.js.map +0 -1
  214. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.d.ts +0 -2
  215. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.d.ts.map +0 -1
  216. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.js +0 -49
  217. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.js.map +0 -1
  218. package/lib/meta/entityCollectionOptions.test.d.ts +0 -2
  219. package/lib/meta/entityCollectionOptions.test.d.ts.map +0 -1
  220. package/lib/meta/entityCollectionOptions.test.js +0 -98
  221. package/lib/meta/entityCollectionOptions.test.js.map +0 -1
  222. package/lib/meta/index.d.ts.map +0 -1
  223. package/lib/meta/index.js.map +0 -1
  224. package/lib/meta/loadActionTypeOmsMetadata.test.d.ts +0 -2
  225. package/lib/meta/loadActionTypeOmsMetadata.test.d.ts.map +0 -1
  226. package/lib/meta/loadActionTypeOmsMetadata.test.js +0 -218
  227. package/lib/meta/loadActionTypeOmsMetadata.test.js.map +0 -1
  228. package/lib/stagedWrites.test.d.ts +0 -2
  229. package/lib/stagedWrites.test.d.ts.map +0 -1
  230. package/lib/stagedWrites.test.js +0 -71
  231. package/lib/stagedWrites.test.js.map +0 -1
  232. package/lib/users/createFoundryUsersIntegration.test.d.ts +0 -2
  233. package/lib/users/createFoundryUsersIntegration.test.d.ts.map +0 -1
  234. package/lib/users/createFoundryUsersIntegration.test.js +0 -32
  235. package/lib/users/createFoundryUsersIntegration.test.js.map +0 -1
  236. package/lib/users/foundryUser.test.d.ts +0 -2
  237. package/lib/users/foundryUser.test.d.ts.map +0 -1
  238. package/lib/users/foundryUser.test.js +0 -45
  239. package/lib/users/foundryUser.test.js.map +0 -1
  240. package/lib/users/index.d.ts.map +0 -1
  241. package/lib/users/index.js.map +0 -1
  242. package/lib/users/userCollectionOptions.test.d.ts +0 -2
  243. package/lib/users/userCollectionOptions.test.d.ts.map +0 -1
  244. package/lib/users/userCollectionOptions.test.js +0 -18
  245. package/lib/users/userCollectionOptions.test.js.map +0 -1
  246. package/lib/utils/AsyncIterable.test.d.ts +0 -2
  247. package/lib/utils/AsyncIterable.test.d.ts.map +0 -1
  248. package/lib/utils/AsyncIterable.test.js +0 -17
  249. package/lib/utils/AsyncIterable.test.js.map +0 -1
  250. package/lib/utils/actionTypeName.test.d.ts +0 -2
  251. package/lib/utils/actionTypeName.test.d.ts.map +0 -1
  252. package/lib/utils/actionTypeName.test.js +0 -30
  253. package/lib/utils/actionTypeName.test.js.map +0 -1
package/lib/connection.js CHANGED
@@ -1,227 +1,195 @@
1
- import { withHttpAuthenticationErrorHandling, withHttpRetryHandling, } from "@party-stack/connections";
1
+ import { withHttpAuthenticationErrorHandling, withHttpRetryHandling } from "@party-stack/connections";
2
2
  import { unauthenticated } from "@party-stack/errors";
3
3
  import { createFoundryFetch, createFoundryWebSocket, getTokenDetails } from "@party-stack/foundry-client";
4
- import { createClientCredentialsOAuthClient, createPublicOAuthClient, } from "@party-stack/oauth";
4
+ import { createClientCredentialsOAuthClient, createPublicOAuthClient } from "@party-stack/oauth";
5
+ //#region src/connection.ts
5
6
  const DEFAULT_SCOPES = [
6
- "api:use-ontologies-read",
7
- "api:use-ontologies-write",
8
- "api:use-mediasets-read",
9
- "api:use-mediasets-write",
10
- "ontology:view-unredacted-action-type",
11
- "ontology:view-object-type",
7
+ "api:use-ontologies-read",
8
+ "api:use-ontologies-write",
9
+ "api:use-mediasets-read",
10
+ "api:use-mediasets-write",
11
+ "ontology:view-unredacted-action-type",
12
+ "ontology:view-object-type"
12
13
  ];
13
14
  function activeState(expiresAt, refreshable) {
14
- return expiresAt === undefined
15
- ? { status: "active" }
16
- : {
17
- status: "active",
18
- expiration: {
19
- expiresAt,
20
- refreshable,
21
- },
22
- };
15
+ return expiresAt === void 0 ? { status: "active" } : {
16
+ status: "active",
17
+ expiration: {
18
+ expiresAt,
19
+ refreshable
20
+ }
21
+ };
23
22
  }
24
23
  function createFoundryEgressWrapper(options) {
25
- return (handlers) => {
26
- const fetch = createFoundryFetch({
27
- baseUrl: options.baseUrl,
28
- tokenProvider: options.tokenProvider,
29
- fetch: (input, init) => handlers.fetch(new Request(input, init)),
30
- });
31
- const createWebSocket = createFoundryWebSocket({
32
- baseUrl: options.baseUrl,
33
- tokenProvider: options.tokenProvider,
34
- createWebSocket: (url, protocols) => handlers.createWebSocket(url, protocols),
35
- });
36
- return withHttpAuthenticationErrorHandling(withHttpRetryHandling({
37
- fetch: (request) => fetch(request),
38
- createWebSocket,
39
- }));
40
- };
24
+ return (handlers) => {
25
+ const fetch = createFoundryFetch({
26
+ baseUrl: options.baseUrl,
27
+ tokenProvider: options.tokenProvider,
28
+ fetch: (input, init) => handlers.fetch(new Request(input, init))
29
+ });
30
+ const createWebSocket = createFoundryWebSocket({
31
+ baseUrl: options.baseUrl,
32
+ tokenProvider: options.tokenProvider,
33
+ createWebSocket: (url, protocols) => handlers.createWebSocket(url, protocols)
34
+ });
35
+ return withHttpAuthenticationErrorHandling(withHttpRetryHandling({
36
+ fetch: (request) => fetch(request),
37
+ createWebSocket
38
+ }));
39
+ };
41
40
  }
42
41
  async function createFoundryConnectionAdapterInstance(options, context) {
43
- let tokenActive = Boolean(options.token);
44
- const publicOauth = options.oauth
45
- ? await createPublicOAuthClient({
46
- clientId: options.oauth.clientId,
47
- redirectUrl: options.oauth.redirectUrl,
48
- scopes: [...new Set(["offline_access", ...(options.oauth.scopes ?? DEFAULT_SCOPES)])],
49
- authorizationServer: {
50
- issuer: new URL("multipass/", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
51
- authorizationEndpoint: new URL("multipass/api/oauth2/authorize", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
52
- tokenEndpoint: new URL("multipass/api/oauth2/token", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
53
- revocationEndpoint: new URL("multipass/api/oauth2/revoke_token", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
54
- },
55
- runtime: context.runtime,
56
- fetch: options.oauth.fetch,
57
- dangerouslyPersistSecrets: options.oauth.dangerouslyPersistSecrets,
58
- resolveUserId: (token) => getTokenDetails(token).userId,
59
- })
60
- : undefined;
61
- const clientCredentialsOauth = options.clientCredentials
62
- ? createClientCredentialsOAuthClient({
63
- clientId: options.clientCredentials.clientId,
64
- clientSecret: options.clientCredentials.clientSecret,
65
- tokenEndpoint: new URL("multipass/api/oauth2/token", options.baseUrl.endsWith("/")
66
- ? options.baseUrl
67
- : `${options.baseUrl}/`).toString(),
68
- tokenEndpointAuthMethod: "client_secret_basic",
69
- revocationEndpoint: new URL("multipass/api/oauth2/revoke_token", options.baseUrl.endsWith("/")
70
- ? options.baseUrl
71
- : `${options.baseUrl}/`).toString(),
72
- scopes: options.clientCredentials.scopes ??
73
- DEFAULT_SCOPES,
74
- fetch: options.clientCredentials.fetch,
75
- resolveUserId: (token) => options.clientCredentials
76
- ?.userId ??
77
- getTokenDetails(token).userId,
78
- })
79
- : undefined;
80
- const createTokenSession = (candidate) => {
81
- const token = candidate ?? options.token;
82
- if (!token) {
83
- throw new Error("Foundry API token connections are not configured.");
84
- }
85
- const { userId, expiresAt } = getTokenDetails(token);
86
- const connection = {
87
- userId,
88
- state: activeState(expiresAt, false),
89
- };
90
- const session = {
91
- disconnect() {
92
- if (token === options.token) {
93
- tokenActive = false;
94
- }
95
- return Promise.resolve();
96
- },
97
- egress: createFoundryEgressWrapper({
98
- baseUrl: options.baseUrl,
99
- tokenProvider: () => Promise.resolve(token),
100
- }),
101
- };
102
- return { connection, session };
103
- };
104
- const createClientCredentialsSession = async (oauth, forceRefresh = false) => {
105
- const oauthSession = forceRefresh
106
- ? await oauth.refresh()
107
- : await oauth.getSession();
108
- const userId = oauthSession.userId;
109
- const connection = {
110
- userId,
111
- state: activeState(oauthSession.expiration?.expiresAt, true),
112
- };
113
- const session = {
114
- refresh: () => createClientCredentialsSession(oauth, true),
115
- disconnect: () => oauth.revoke(),
116
- egress: createFoundryEgressWrapper({
117
- baseUrl: options.baseUrl,
118
- tokenProvider: () => oauth.getAccessToken(),
119
- }),
120
- };
121
- return { connection, session };
122
- };
123
- const createPublicSession = (oauthSession) => {
124
- const userId = oauthSession.userId;
125
- const connection = {
126
- userId,
127
- state: activeState(oauthSession.expiration?.expiresAt, oauthSession.expiration?.refreshable ?? false),
128
- };
129
- const session = {
130
- async refresh() {
131
- if (!publicOauth) {
132
- throw unauthenticated("Foundry public OAuth is not configured.");
133
- }
134
- return createPublicSession(await publicOauth.refresh(userId));
135
- },
136
- async disconnect() {
137
- await publicOauth?.revoke(userId);
138
- },
139
- egress: createFoundryEgressWrapper({
140
- baseUrl: options.baseUrl,
141
- tokenProvider: () => {
142
- if (!publicOauth) {
143
- throw unauthenticated("Foundry public OAuth is not configured.");
144
- }
145
- return publicOauth.getAccessToken(userId);
146
- },
147
- }),
148
- };
149
- return { connection, session };
150
- };
151
- return {
152
- name: "foundry",
153
- createAuthenticationClient(controller) {
154
- return {
155
- async completeOAuthRedirect(url) {
156
- if (!publicOauth)
157
- return;
158
- const session = await publicOauth.completeRedirect(url);
159
- if (!session)
160
- return;
161
- const connectionSession = createPublicSession(session);
162
- await controller.connect(connectionSession);
163
- return connectionSession.connection;
164
- },
165
- signIn: {
166
- async oauth(authenticationOptions = {}) {
167
- if (!publicOauth) {
168
- throw new Error("Foundry public OAuth is not configured.");
169
- }
170
- const session = await publicOauth.signIn({
171
- browserPresentation: authenticationOptions.browserPresentation,
172
- });
173
- const connectionSession = createPublicSession(session);
174
- await controller.connect(connectionSession);
175
- return connectionSession.connection;
176
- },
177
- async clientCredentials() {
178
- if (!clientCredentialsOauth) {
179
- throw new Error("Foundry client credentials are not configured.");
180
- }
181
- if (typeof window !== "undefined") {
182
- throw new Error("Foundry client credentials cannot run in a browser.");
183
- }
184
- const session = await createClientCredentialsSession(clientCredentialsOauth);
185
- await controller.connect(session);
186
- return session.connection;
187
- },
188
- async apiToken(authenticationOptions = {}) {
189
- const session = createTokenSession(authenticationOptions.token);
190
- if (authenticationOptions.token === undefined && options.token) {
191
- tokenActive = true;
192
- }
193
- await controller.connect(session);
194
- return session.connection;
195
- },
196
- },
197
- };
198
- },
199
- async restoreConnections() {
200
- const restored = new Map();
201
- if (tokenActive && options.token) {
202
- const session = createTokenSession();
203
- restored.set(session.connection.userId, session);
204
- }
205
- if (publicOauth) {
206
- for (const oauthSession of await publicOauth.restoreSessions()) {
207
- const session = createPublicSession(oauthSession);
208
- restored.set(session.connection.userId, session);
209
- }
210
- }
211
- if (clientCredentialsOauth &&
212
- typeof window === "undefined") {
213
- const session = await createClientCredentialsSession(clientCredentialsOauth);
214
- restored.set(session.connection.userId, session);
215
- }
216
- return [...restored.values()];
217
- },
218
- async cleanup() {
219
- await publicOauth?.cleanup();
220
- clientCredentialsOauth?.cleanup();
221
- },
222
- };
42
+ let tokenActive = Boolean(options.token);
43
+ const publicOauth = options.oauth ? await createPublicOAuthClient({
44
+ clientId: options.oauth.clientId,
45
+ redirectUrl: options.oauth.redirectUrl,
46
+ scopes: [.../* @__PURE__ */ new Set(["offline_access", ...options.oauth.scopes ?? DEFAULT_SCOPES])],
47
+ authorizationServer: {
48
+ issuer: new URL("multipass/", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
49
+ authorizationEndpoint: new URL("multipass/api/oauth2/authorize", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
50
+ tokenEndpoint: new URL("multipass/api/oauth2/token", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
51
+ revocationEndpoint: new URL("multipass/api/oauth2/revoke_token", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString()
52
+ },
53
+ runtime: context.runtime,
54
+ fetch: options.oauth.fetch,
55
+ dangerouslyPersistSecrets: options.oauth.dangerouslyPersistSecrets,
56
+ resolveUserId: (token) => getTokenDetails(token).userId
57
+ }) : void 0;
58
+ const clientCredentialsOauth = options.clientCredentials ? createClientCredentialsOAuthClient({
59
+ clientId: options.clientCredentials.clientId,
60
+ clientSecret: options.clientCredentials.clientSecret,
61
+ tokenEndpoint: new URL("multipass/api/oauth2/token", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
62
+ tokenEndpointAuthMethod: "client_secret_basic",
63
+ revocationEndpoint: new URL("multipass/api/oauth2/revoke_token", options.baseUrl.endsWith("/") ? options.baseUrl : `${options.baseUrl}/`).toString(),
64
+ scopes: options.clientCredentials.scopes ?? DEFAULT_SCOPES,
65
+ fetch: options.clientCredentials.fetch,
66
+ resolveUserId: (token) => options.clientCredentials?.userId ?? getTokenDetails(token).userId
67
+ }) : void 0;
68
+ const createTokenSession = (candidate) => {
69
+ const token = candidate ?? options.token;
70
+ if (!token) throw new Error("Foundry API token connections are not configured.");
71
+ const { userId, expiresAt } = getTokenDetails(token);
72
+ return {
73
+ connection: {
74
+ userId,
75
+ state: activeState(expiresAt, false)
76
+ },
77
+ session: {
78
+ disconnect() {
79
+ if (token === options.token) tokenActive = false;
80
+ return Promise.resolve();
81
+ },
82
+ egress: createFoundryEgressWrapper({
83
+ baseUrl: options.baseUrl,
84
+ tokenProvider: () => Promise.resolve(token)
85
+ })
86
+ }
87
+ };
88
+ };
89
+ const createClientCredentialsSession = async (oauth, forceRefresh = false) => {
90
+ const oauthSession = forceRefresh ? await oauth.refresh() : await oauth.getSession();
91
+ return {
92
+ connection: {
93
+ userId: oauthSession.userId,
94
+ state: activeState(oauthSession.expiration?.expiresAt, true)
95
+ },
96
+ session: {
97
+ refresh: () => createClientCredentialsSession(oauth, true),
98
+ disconnect: () => oauth.revoke(),
99
+ egress: createFoundryEgressWrapper({
100
+ baseUrl: options.baseUrl,
101
+ tokenProvider: () => oauth.getAccessToken()
102
+ })
103
+ }
104
+ };
105
+ };
106
+ const createPublicSession = (oauthSession) => {
107
+ const userId = oauthSession.userId;
108
+ return {
109
+ connection: {
110
+ userId,
111
+ state: activeState(oauthSession.expiration?.expiresAt, oauthSession.expiration?.refreshable ?? false)
112
+ },
113
+ session: {
114
+ async refresh() {
115
+ if (!publicOauth) throw unauthenticated("Foundry public OAuth is not configured.");
116
+ return createPublicSession(await publicOauth.refresh(userId));
117
+ },
118
+ async disconnect() {
119
+ await publicOauth?.revoke(userId);
120
+ },
121
+ egress: createFoundryEgressWrapper({
122
+ baseUrl: options.baseUrl,
123
+ tokenProvider: () => {
124
+ if (!publicOauth) throw unauthenticated("Foundry public OAuth is not configured.");
125
+ return publicOauth.getAccessToken(userId);
126
+ }
127
+ })
128
+ }
129
+ };
130
+ };
131
+ return {
132
+ name: "foundry",
133
+ createAuthenticationClient(controller) {
134
+ return {
135
+ async completeOAuthRedirect(url) {
136
+ if (!publicOauth) return;
137
+ const session = await publicOauth.completeRedirect(url);
138
+ if (!session) return;
139
+ const connectionSession = createPublicSession(session);
140
+ await controller.connect(connectionSession);
141
+ return connectionSession.connection;
142
+ },
143
+ signIn: {
144
+ async oauth(authenticationOptions = {}) {
145
+ if (!publicOauth) throw new Error("Foundry public OAuth is not configured.");
146
+ const session = await publicOauth.signIn({ browserPresentation: authenticationOptions.browserPresentation });
147
+ const connectionSession = createPublicSession(session);
148
+ await controller.connect(connectionSession);
149
+ return connectionSession.connection;
150
+ },
151
+ async clientCredentials() {
152
+ if (!clientCredentialsOauth) throw new Error("Foundry client credentials are not configured.");
153
+ if (typeof window !== "undefined") throw new Error("Foundry client credentials cannot run in a browser.");
154
+ const session = await createClientCredentialsSession(clientCredentialsOauth);
155
+ await controller.connect(session);
156
+ return session.connection;
157
+ },
158
+ async apiToken(authenticationOptions = {}) {
159
+ const session = createTokenSession(authenticationOptions.token);
160
+ if (authenticationOptions.token === void 0 && options.token) tokenActive = true;
161
+ await controller.connect(session);
162
+ return session.connection;
163
+ }
164
+ }
165
+ };
166
+ },
167
+ async restoreConnections() {
168
+ const restored = /* @__PURE__ */ new Map();
169
+ if (tokenActive && options.token) {
170
+ const session = createTokenSession();
171
+ restored.set(session.connection.userId, session);
172
+ }
173
+ if (publicOauth) for (const oauthSession of await publicOauth.restoreSessions()) {
174
+ const session = createPublicSession(oauthSession);
175
+ restored.set(session.connection.userId, session);
176
+ }
177
+ if (clientCredentialsOauth && typeof window === "undefined") {
178
+ const session = await createClientCredentialsSession(clientCredentialsOauth);
179
+ restored.set(session.connection.userId, session);
180
+ }
181
+ return [...restored.values()];
182
+ },
183
+ async cleanup() {
184
+ await publicOauth?.cleanup();
185
+ clientCredentialsOauth?.cleanup();
186
+ }
187
+ };
223
188
  }
224
- export function createFoundryConnectionAdapter(options) {
225
- return (context) => createFoundryConnectionAdapterInstance(options, context);
189
+ function createFoundryConnectionAdapter(options) {
190
+ return (context) => createFoundryConnectionAdapterInstance(options, context);
226
191
  }
192
+ //#endregion
193
+ export { createFoundryConnectionAdapter };
194
+
227
195
  //# sourceMappingURL=connection.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","names":[],"sources":["../src/connection.ts"],"sourcesContent":["import {\n type BackendConnectionAdapter,\n type BackendConnectionAdapterContext,\n type BackendConnectionAdapterProvider,\n type Connection,\n type ConnectionEgressHandlers,\n type ConnectionSession,\n type EstablishedConnection,\n withHttpAuthenticationErrorHandling,\n withHttpRetryHandling,\n} from \"@party-stack/connections\";\nimport { unauthenticated } from \"@party-stack/errors\";\nimport { createFoundryFetch, createFoundryWebSocket, getTokenDetails } from \"@party-stack/foundry-client\";\nimport {\n createClientCredentialsOAuthClient,\n createPublicOAuthClient,\n type ClientCredentialsOAuthClient,\n type OAuthSession,\n type PublicOAuthClient,\n} from \"@party-stack/oauth\";\nimport type { BrowserAuthenticationPresentation } from \"@party-stack/runtime\";\n\nexport interface FoundryOAuthConnectionOptions {\n clientId: string;\n redirectUrl: string;\n scopes?: string[];\n fetch?: typeof globalThis.fetch;\n dangerouslyPersistSecrets?: boolean;\n}\n\nexport interface FoundryClientCredentialsConnectionOptions {\n clientId: string;\n clientSecret: string;\n userId?: string;\n scopes?: string[];\n fetch?: typeof globalThis.fetch;\n}\n\nexport interface CreateFoundryConnectionAdapterOptions {\n baseUrl: string;\n oauth?: FoundryOAuthConnectionOptions;\n clientCredentials?: FoundryClientCredentialsConnectionOptions;\n token?: string;\n}\n\nexport interface FoundryAuthenticationClient {\n completeOAuthRedirect(url: string): Promise<Connection<\"active\"> | undefined>;\n signIn: {\n oauth(options?: {\n browserPresentation?: BrowserAuthenticationPresentation;\n }): Promise<Connection<\"active\">>;\n clientCredentials(): Promise<Connection<\"active\">>;\n apiToken(options?: { token?: string }): Promise<Connection<\"active\">>;\n };\n}\n\nconst DEFAULT_SCOPES = [\n \"api:use-ontologies-read\",\n \"api:use-ontologies-write\",\n \"api:use-mediasets-read\",\n \"api:use-mediasets-write\",\n \"ontology:view-unredacted-action-type\",\n \"ontology:view-object-type\",\n];\n\nfunction activeState(expiresAt: number | undefined, refreshable: boolean): Connection<\"active\">[\"state\"] {\n return expiresAt === undefined\n ? { status: \"active\" }\n : {\n status: \"active\",\n expiration: {\n expiresAt,\n refreshable,\n },\n };\n}\n\nfunction createFoundryEgressWrapper(options: {\n baseUrl: string;\n tokenProvider: () => Promise<string>;\n}): (handlers: ConnectionEgressHandlers) => ConnectionEgressHandlers {\n return (handlers) => {\n const fetch = createFoundryFetch({\n baseUrl: options.baseUrl,\n tokenProvider: options.tokenProvider,\n fetch: (input, init) => handlers.fetch(new Request(input, init)),\n });\n const createWebSocket = createFoundryWebSocket({\n baseUrl: options.baseUrl,\n tokenProvider: options.tokenProvider,\n createWebSocket: (url, protocols) => handlers.createWebSocket(url, protocols),\n });\n return withHttpAuthenticationErrorHandling(\n withHttpRetryHandling({\n fetch: (request) => fetch(request),\n createWebSocket,\n })\n );\n };\n}\n\nasync function createFoundryConnectionAdapterInstance(\n options: CreateFoundryConnectionAdapterOptions,\n context: BackendConnectionAdapterContext\n): Promise<BackendConnectionAdapter<FoundryAuthenticationClient>> {\n let tokenActive = Boolean(options.token);\n const publicOauth: PublicOAuthClient | undefined = options.oauth\n ? await createPublicOAuthClient({\n clientId: options.oauth.clientId,\n redirectUrl: options.oauth.redirectUrl,\n scopes: [...new Set([\"offline_access\", ...(options.oauth.scopes ?? DEFAULT_SCOPES)])],\n authorizationServer: {\n issuer: new URL(\n \"multipass/\",\n options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`\n ).toString(),\n authorizationEndpoint: new URL(\n \"multipass/api/oauth2/authorize\",\n options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`\n ).toString(),\n tokenEndpoint: new URL(\n \"multipass/api/oauth2/token\",\n options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`\n ).toString(),\n revocationEndpoint: new URL(\n \"multipass/api/oauth2/revoke_token\",\n options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`\n ).toString(),\n },\n runtime: context.runtime,\n fetch: options.oauth.fetch,\n dangerouslyPersistSecrets: options.oauth.dangerouslyPersistSecrets,\n resolveUserId: (token) => getTokenDetails(token).userId,\n })\n : undefined;\n const clientCredentialsOauth: ClientCredentialsOAuthClient | undefined = options.clientCredentials\n ? createClientCredentialsOAuthClient({\n clientId: options.clientCredentials.clientId,\n clientSecret: options.clientCredentials.clientSecret,\n tokenEndpoint: new URL(\n \"multipass/api/oauth2/token\",\n options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`\n ).toString(),\n tokenEndpointAuthMethod: \"client_secret_basic\",\n revocationEndpoint: new URL(\n \"multipass/api/oauth2/revoke_token\",\n options.baseUrl.endsWith(\"/\") ? options.baseUrl : `${options.baseUrl}/`\n ).toString(),\n scopes: options.clientCredentials.scopes ?? DEFAULT_SCOPES,\n fetch: options.clientCredentials.fetch,\n resolveUserId: (token) => options.clientCredentials?.userId ?? getTokenDetails(token).userId,\n })\n : undefined;\n\n const createTokenSession = (candidate?: string): EstablishedConnection => {\n const token = candidate ?? options.token;\n if (!token) {\n throw new Error(\"Foundry API token connections are not configured.\");\n }\n const { userId, expiresAt } = getTokenDetails(token);\n const connection: Connection<\"active\"> = {\n userId,\n state: activeState(expiresAt, false),\n };\n const session: ConnectionSession = {\n disconnect() {\n if (token === options.token) {\n tokenActive = false;\n }\n return Promise.resolve();\n },\n egress: createFoundryEgressWrapper({\n baseUrl: options.baseUrl,\n tokenProvider: () => Promise.resolve(token),\n }),\n };\n return { connection, session };\n };\n\n const createClientCredentialsSession = async (\n oauth: ClientCredentialsOAuthClient,\n forceRefresh = false\n ): Promise<EstablishedConnection> => {\n const oauthSession = forceRefresh ? await oauth.refresh() : await oauth.getSession();\n const userId = oauthSession.userId;\n const connection: Connection<\"active\"> = {\n userId,\n state: activeState(oauthSession.expiration?.expiresAt, true),\n };\n const session: ConnectionSession = {\n refresh: () => createClientCredentialsSession(oauth, true),\n disconnect: () => oauth.revoke(),\n egress: createFoundryEgressWrapper({\n baseUrl: options.baseUrl,\n tokenProvider: () => oauth.getAccessToken(),\n }),\n };\n return { connection, session };\n };\n\n const createPublicSession = (oauthSession: OAuthSession): EstablishedConnection => {\n const userId = oauthSession.userId;\n const connection: Connection<\"active\"> = {\n userId,\n state: activeState(\n oauthSession.expiration?.expiresAt,\n oauthSession.expiration?.refreshable ?? false\n ),\n };\n const session: ConnectionSession = {\n async refresh() {\n if (!publicOauth) {\n throw unauthenticated(\"Foundry public OAuth is not configured.\");\n }\n return createPublicSession(await publicOauth.refresh(userId));\n },\n async disconnect() {\n await publicOauth?.revoke(userId);\n },\n egress: createFoundryEgressWrapper({\n baseUrl: options.baseUrl,\n tokenProvider: () => {\n if (!publicOauth) {\n throw unauthenticated(\"Foundry public OAuth is not configured.\");\n }\n return publicOauth.getAccessToken(userId);\n },\n }),\n };\n return { connection, session };\n };\n\n return {\n name: \"foundry\",\n createAuthenticationClient(controller) {\n return {\n async completeOAuthRedirect(url) {\n if (!publicOauth) return;\n const session = await publicOauth.completeRedirect(url);\n if (!session) return;\n const connectionSession = createPublicSession(session);\n await controller.connect(connectionSession);\n return connectionSession.connection;\n },\n signIn: {\n async oauth(authenticationOptions = {}) {\n if (!publicOauth) {\n throw new Error(\"Foundry public OAuth is not configured.\");\n }\n const session = await publicOauth.signIn({\n browserPresentation: authenticationOptions.browserPresentation,\n });\n const connectionSession = createPublicSession(session);\n await controller.connect(connectionSession);\n return connectionSession.connection;\n },\n async clientCredentials() {\n if (!clientCredentialsOauth) {\n throw new Error(\"Foundry client credentials are not configured.\");\n }\n if (typeof window !== \"undefined\") {\n throw new Error(\"Foundry client credentials cannot run in a browser.\");\n }\n const session = await createClientCredentialsSession(clientCredentialsOauth);\n await controller.connect(session);\n return session.connection;\n },\n async apiToken(authenticationOptions = {}) {\n const session = createTokenSession(authenticationOptions.token);\n if (authenticationOptions.token === undefined && options.token) {\n tokenActive = true;\n }\n await controller.connect(session);\n return session.connection;\n },\n },\n };\n },\n async restoreConnections() {\n const restored = new Map<string, EstablishedConnection>();\n if (tokenActive && options.token) {\n const session = createTokenSession();\n restored.set(session.connection.userId, session);\n }\n if (publicOauth) {\n for (const oauthSession of await publicOauth.restoreSessions()) {\n const session = createPublicSession(oauthSession);\n restored.set(session.connection.userId, session);\n }\n }\n if (clientCredentialsOauth && typeof window === \"undefined\") {\n const session = await createClientCredentialsSession(clientCredentialsOauth);\n restored.set(session.connection.userId, session);\n }\n return [...restored.values()];\n },\n async cleanup() {\n await publicOauth?.cleanup();\n clientCredentialsOauth?.cleanup();\n },\n };\n}\n\nexport function createFoundryConnectionAdapter(\n options: CreateFoundryConnectionAdapterOptions\n): BackendConnectionAdapterProvider<FoundryAuthenticationClient> {\n return (context) => createFoundryConnectionAdapterInstance(options, context);\n}\n"],"mappings":";;;;;AAwDA,MAAM,iBAAiB;CACnB;CACA;CACA;CACA;CACA;CACA;AACJ;AAEA,SAAS,YAAY,WAA+B,aAAqD;CACrG,OAAO,cAAc,KAAA,IACf,EAAE,QAAQ,SAAS,IACnB;EACI,QAAQ;EACR,YAAY;GACR;GACA;EACJ;CACJ;AACV;AAEA,SAAS,2BAA2B,SAGiC;CACjE,QAAQ,aAAa;EACjB,MAAM,QAAQ,mBAAmB;GAC7B,SAAS,QAAQ;GACjB,eAAe,QAAQ;GACvB,QAAQ,OAAO,SAAS,SAAS,MAAM,IAAI,QAAQ,OAAO,IAAI,CAAC;EACnE,CAAC;EACD,MAAM,kBAAkB,uBAAuB;GAC3C,SAAS,QAAQ;GACjB,eAAe,QAAQ;GACvB,kBAAkB,KAAK,cAAc,SAAS,gBAAgB,KAAK,SAAS;EAChF,CAAC;EACD,OAAO,oCACH,sBAAsB;GAClB,QAAQ,YAAY,MAAM,OAAO;GACjC;EACJ,CAAC,CACL;CACJ;AACJ;AAEA,eAAe,uCACX,SACA,SAC8D;CAC9D,IAAI,cAAc,QAAQ,QAAQ,KAAK;CACvC,MAAM,cAA6C,QAAQ,QACrD,MAAM,wBAAwB;EAC1B,UAAU,QAAQ,MAAM;EACxB,aAAa,QAAQ,MAAM;EAC3B,QAAQ,CAAC,mBAAG,IAAI,IAAI,CAAC,kBAAkB,GAAI,QAAQ,MAAM,UAAU,cAAe,CAAC,CAAC;EACpF,qBAAqB;GACjB,QAAQ,IAAI,IACR,cACA,QAAQ,QAAQ,SAAS,GAAG,IAAI,QAAQ,UAAU,GAAG,QAAQ,QAAQ,EACzE,CAAC,CAAC,SAAS;GACX,uBAAuB,IAAI,IACvB,kCACA,QAAQ,QAAQ,SAAS,GAAG,IAAI,QAAQ,UAAU,GAAG,QAAQ,QAAQ,EACzE,CAAC,CAAC,SAAS;GACX,eAAe,IAAI,IACf,8BACA,QAAQ,QAAQ,SAAS,GAAG,IAAI,QAAQ,UAAU,GAAG,QAAQ,QAAQ,EACzE,CAAC,CAAC,SAAS;GACX,oBAAoB,IAAI,IACpB,qCACA,QAAQ,QAAQ,SAAS,GAAG,IAAI,QAAQ,UAAU,GAAG,QAAQ,QAAQ,EACzE,CAAC,CAAC,SAAS;EACf;EACA,SAAS,QAAQ;EACjB,OAAO,QAAQ,MAAM;EACrB,2BAA2B,QAAQ,MAAM;EACzC,gBAAgB,UAAU,gBAAgB,KAAK,CAAC,CAAC;CACrD,CAAC,IACD,KAAA;CACN,MAAM,yBAAmE,QAAQ,oBAC3E,mCAAmC;EAC/B,UAAU,QAAQ,kBAAkB;EACpC,cAAc,QAAQ,kBAAkB;EACxC,eAAe,IAAI,IACf,8BACA,QAAQ,QAAQ,SAAS,GAAG,IAAI,QAAQ,UAAU,GAAG,QAAQ,QAAQ,EACzE,CAAC,CAAC,SAAS;EACX,yBAAyB;EACzB,oBAAoB,IAAI,IACpB,qCACA,QAAQ,QAAQ,SAAS,GAAG,IAAI,QAAQ,UAAU,GAAG,QAAQ,QAAQ,EACzE,CAAC,CAAC,SAAS;EACX,QAAQ,QAAQ,kBAAkB,UAAU;EAC5C,OAAO,QAAQ,kBAAkB;EACjC,gBAAgB,UAAU,QAAQ,mBAAmB,UAAU,gBAAgB,KAAK,CAAC,CAAC;CAC1F,CAAC,IACD,KAAA;CAEN,MAAM,sBAAsB,cAA8C;EACtE,MAAM,QAAQ,aAAa,QAAQ;EACnC,IAAI,CAAC,OACD,MAAM,IAAI,MAAM,mDAAmD;EAEvE,MAAM,EAAE,QAAQ,cAAc,gBAAgB,KAAK;EAiBnD,OAAO;GAAE,YAAA;IAfL;IACA,OAAO,YAAY,WAAW,KAAK;GAcrB;GAAG,SAAA;IAXjB,aAAa;KACT,IAAI,UAAU,QAAQ,OAClB,cAAc;KAElB,OAAO,QAAQ,QAAQ;IAC3B;IACA,QAAQ,2BAA2B;KAC/B,SAAS,QAAQ;KACjB,qBAAqB,QAAQ,QAAQ,KAAK;IAC9C,CAAC;GAEsB;EAAE;CACjC;CAEA,MAAM,iCAAiC,OACnC,OACA,eAAe,UACkB;EACjC,MAAM,eAAe,eAAe,MAAM,MAAM,QAAQ,IAAI,MAAM,MAAM,WAAW;EAcnF,OAAO;GAAE,YAAA;IAXL,QAFW,aAAa;IAGxB,OAAO,YAAY,aAAa,YAAY,WAAW,IAAI;GAU7C;GAAG,SAAA;IAPjB,eAAe,+BAA+B,OAAO,IAAI;IACzD,kBAAkB,MAAM,OAAO;IAC/B,QAAQ,2BAA2B;KAC/B,SAAS,QAAQ;KACjB,qBAAqB,MAAM,eAAe;IAC9C,CAAC;GAEsB;EAAE;CACjC;CAEA,MAAM,uBAAuB,iBAAsD;EAC/E,MAAM,SAAS,aAAa;EA4B5B,OAAO;GAAE,YAAA;IA1BL;IACA,OAAO,YACH,aAAa,YAAY,WACzB,aAAa,YAAY,eAAe,KAC5C;GAsBc;GAAG,SAAA;IAnBjB,MAAM,UAAU;KACZ,IAAI,CAAC,aACD,MAAM,gBAAgB,yCAAyC;KAEnE,OAAO,oBAAoB,MAAM,YAAY,QAAQ,MAAM,CAAC;IAChE;IACA,MAAM,aAAa;KACf,MAAM,aAAa,OAAO,MAAM;IACpC;IACA,QAAQ,2BAA2B;KAC/B,SAAS,QAAQ;KACjB,qBAAqB;MACjB,IAAI,CAAC,aACD,MAAM,gBAAgB,yCAAyC;MAEnE,OAAO,YAAY,eAAe,MAAM;KAC5C;IACJ,CAAC;GAEsB;EAAE;CACjC;CAEA,OAAO;EACH,MAAM;EACN,2BAA2B,YAAY;GACnC,OAAO;IACH,MAAM,sBAAsB,KAAK;KAC7B,IAAI,CAAC,aAAa;KAClB,MAAM,UAAU,MAAM,YAAY,iBAAiB,GAAG;KACtD,IAAI,CAAC,SAAS;KACd,MAAM,oBAAoB,oBAAoB,OAAO;KACrD,MAAM,WAAW,QAAQ,iBAAiB;KAC1C,OAAO,kBAAkB;IAC7B;IACA,QAAQ;KACJ,MAAM,MAAM,wBAAwB,CAAC,GAAG;MACpC,IAAI,CAAC,aACD,MAAM,IAAI,MAAM,yCAAyC;MAE7D,MAAM,UAAU,MAAM,YAAY,OAAO,EACrC,qBAAqB,sBAAsB,oBAC/C,CAAC;MACD,MAAM,oBAAoB,oBAAoB,OAAO;MACrD,MAAM,WAAW,QAAQ,iBAAiB;MAC1C,OAAO,kBAAkB;KAC7B;KACA,MAAM,oBAAoB;MACtB,IAAI,CAAC,wBACD,MAAM,IAAI,MAAM,gDAAgD;MAEpE,IAAI,OAAO,WAAW,aAClB,MAAM,IAAI,MAAM,qDAAqD;MAEzE,MAAM,UAAU,MAAM,+BAA+B,sBAAsB;MAC3E,MAAM,WAAW,QAAQ,OAAO;MAChC,OAAO,QAAQ;KACnB;KACA,MAAM,SAAS,wBAAwB,CAAC,GAAG;MACvC,MAAM,UAAU,mBAAmB,sBAAsB,KAAK;MAC9D,IAAI,sBAAsB,UAAU,KAAA,KAAa,QAAQ,OACrD,cAAc;MAElB,MAAM,WAAW,QAAQ,OAAO;MAChC,OAAO,QAAQ;KACnB;IACJ;GACJ;EACJ;EACA,MAAM,qBAAqB;GACvB,MAAM,2BAAW,IAAI,IAAmC;GACxD,IAAI,eAAe,QAAQ,OAAO;IAC9B,MAAM,UAAU,mBAAmB;IACnC,SAAS,IAAI,QAAQ,WAAW,QAAQ,OAAO;GACnD;GACA,IAAI,aACA,KAAK,MAAM,gBAAgB,MAAM,YAAY,gBAAgB,GAAG;IAC5D,MAAM,UAAU,oBAAoB,YAAY;IAChD,SAAS,IAAI,QAAQ,WAAW,QAAQ,OAAO;GACnD;GAEJ,IAAI,0BAA0B,OAAO,WAAW,aAAa;IACzD,MAAM,UAAU,MAAM,+BAA+B,sBAAsB;IAC3E,SAAS,IAAI,QAAQ,WAAW,QAAQ,OAAO;GACnD;GACA,OAAO,CAAC,GAAG,SAAS,OAAO,CAAC;EAChC;EACA,MAAM,UAAU;GACZ,MAAM,aAAa,QAAQ;GAC3B,wBAAwB,QAAQ;EACpC;CACJ;AACJ;AAEA,SAAgB,+BACZ,SAC6D;CAC7D,QAAQ,YAAY,uCAAuC,SAAS,OAAO;AAC/E"}
package/lib/index.d.ts CHANGED
@@ -1,6 +1,10 @@
1
+ import { CreateFoundryOntologyBackendAdapterOptions, CreateFoundryOntologyBackendOptions, FoundryUsersIntegration, createFoundryOntologyBackend, createFoundryOntologyBackendAdapter, isFoundryNotFoundError } from "./adapter/createFoundryOntologyBackendAdapter.js";
2
+ import { FoundryCodec, FoundryObjectDecoder, createFoundryCodec, createFoundryObjectDecoder } from "./adapter/foundryCodec.js";
3
+ import { ObjectCollectionConfig, ObjectCollectionOpts, ObjectCollectionUtils, objectCollectionOptions } from "./adapter/objectCollectionOptions.js";
4
+ import "./adapter/index.js";
5
+ import { CreateFoundryConnectionAdapterOptions, FoundryAuthenticationClient, FoundryClientCredentialsConnectionOptions, FoundryOAuthConnectionOptions, createFoundryConnectionAdapter } from "./connection.js";
6
+ import { CreateFoundryBackendInstallationOptions, FoundryConnectionOptions, FoundryOntologyRoute, createFoundryBackendInstallation, createFoundryOntologyRoute } from "./installation/createFoundryBackendInstallation.js";
7
+ import "./installation/index.js";
8
+ import { CreateFoundryStagedWriteMutatorTxOptions, FoundryStagedWriteClient, createFoundryStagedWriteMutatorTx, runFoundryOntologyMutator } from "./stagedWrites.js";
1
9
  export * from "@party-stack/foundry-client";
2
- export * from "./adapter";
3
- export * from "./connection.js";
4
- export * from "./installation/index.js";
5
- export * from "./stagedWrites.js";
6
- //# sourceMappingURL=index.d.ts.map
10
+ export { type CreateFoundryBackendInstallationOptions, CreateFoundryConnectionAdapterOptions, CreateFoundryOntologyBackendAdapterOptions, CreateFoundryOntologyBackendOptions, CreateFoundryStagedWriteMutatorTxOptions, FoundryAuthenticationClient, FoundryClientCredentialsConnectionOptions, FoundryCodec, type FoundryConnectionOptions, FoundryOAuthConnectionOptions, FoundryObjectDecoder, type FoundryOntologyRoute, FoundryStagedWriteClient, FoundryUsersIntegration, ObjectCollectionConfig, ObjectCollectionOpts, ObjectCollectionUtils, createFoundryBackendInstallation, createFoundryCodec, createFoundryConnectionAdapter, createFoundryObjectDecoder, createFoundryOntologyBackend, createFoundryOntologyBackendAdapter, createFoundryOntologyRoute, createFoundryStagedWriteMutatorTx, isFoundryNotFoundError, objectCollectionOptions, runFoundryOntologyMutator };
package/lib/index.js CHANGED
@@ -1,6 +1,10 @@
1
+ import { createFoundryConnectionAdapter } from "./connection.js";
2
+ import { objectCollectionOptions } from "./adapter/objectCollectionOptions.js";
3
+ import { createFoundryCodec, createFoundryObjectDecoder } from "./adapter/foundryCodec.js";
4
+ import { createFoundryOntologyBackend, createFoundryOntologyBackendAdapter, isFoundryNotFoundError } from "./adapter/createFoundryOntologyBackendAdapter.js";
5
+ import "./adapter/index.js";
6
+ import { createFoundryBackendInstallation, createFoundryOntologyRoute } from "./installation/createFoundryBackendInstallation.js";
7
+ import "./installation/index.js";
8
+ import { createFoundryStagedWriteMutatorTx, runFoundryOntologyMutator } from "./stagedWrites.js";
1
9
  export * from "@party-stack/foundry-client";
2
- export * from "./adapter";
3
- export * from "./connection.js";
4
- export * from "./installation/index.js";
5
- export * from "./stagedWrites.js";
6
- //# sourceMappingURL=index.js.map
10
+ export { createFoundryBackendInstallation, createFoundryCodec, createFoundryConnectionAdapter, createFoundryObjectDecoder, createFoundryOntologyBackend, createFoundryOntologyBackendAdapter, createFoundryOntologyRoute, createFoundryStagedWriteMutatorTx, isFoundryNotFoundError, objectCollectionOptions, runFoundryOntologyMutator };
@@ -1,28 +1,29 @@
1
- import { type LiveOntologyWrites, type OntologyBackendInstallation, type OntologyRoute } from "@party-stack/ontology";
2
- import type { BackendConnectionAdapterProvider } from "@party-stack/connections";
3
- import type { OntologyIR } from "@party-stack/ontology";
4
- import type { RuntimeAdapterProvider } from "@party-stack/runtime";
5
- import { type FoundryUsersIntegration } from "../adapter/createFoundryOntologyBackendAdapter.js";
6
- import { type CreateFoundryConnectionAdapterOptions, type FoundryAuthenticationClient } from "../connection.js";
1
+ import { FoundryUsersIntegration } from "../adapter/createFoundryOntologyBackendAdapter.js";
2
+ import { CreateFoundryConnectionAdapterOptions, FoundryAuthenticationClient } from "../connection.js";
3
+ import { BackendConnectionAdapterProvider } from "@party-stack/connections";
4
+ import { LiveOntologyWrites, OntologyBackendInstallation, OntologyIR, OntologyRoute } from "@party-stack/ontology";
5
+ import { RuntimeAdapterProvider } from "@party-stack/runtime";
6
+ //#region src/installation/createFoundryBackendInstallation.d.ts
7
7
  export type FoundryConnectionOptions = Omit<CreateFoundryConnectionAdapterOptions, "baseUrl">;
8
8
  export type FoundryOntologyRoute = (baseUrl: string) => OntologyRoute;
9
9
  export interface CreateFoundryBackendInstallationOptions<AuthenticationClient extends object = FoundryAuthenticationClient> {
10
- installationId?: string;
11
- baseUrl: string;
12
- runtime: RuntimeAdapterProvider;
13
- connections: FoundryConnectionOptions | BackendConnectionAdapterProvider<AuthenticationClient>;
14
- routes: readonly FoundryOntologyRoute[];
15
- createContext?: (userId: string, ontologyId: string) => Record<string, unknown>;
10
+ installationId?: string;
11
+ baseUrl: string;
12
+ runtime: RuntimeAdapterProvider;
13
+ connections: FoundryConnectionOptions | BackendConnectionAdapterProvider<AuthenticationClient>;
14
+ routes: readonly FoundryOntologyRoute[];
15
+ createContext?: (userId: string, ontologyId: string) => Record<string, unknown>;
16
16
  }
17
17
  export declare function createFoundryOntologyRoute(options: {
18
- ontologyId: string;
19
- ir?: OntologyIR;
20
- users?: FoundryUsersIntegration | ((userId: string) => FoundryUsersIntegration);
21
- live?: boolean;
22
- persistObjects?: boolean;
23
- writes?: LiveOntologyWrites;
24
- /** Metadata polling interval in milliseconds, or false to disable. Only applies when IR is omitted. */
25
- metaRefetchInterval?: number | false;
18
+ ontologyId: string;
19
+ ir?: OntologyIR;
20
+ users?: FoundryUsersIntegration | ((userId: string) => FoundryUsersIntegration);
21
+ live?: boolean;
22
+ persistObjects?: boolean;
23
+ writes?: LiveOntologyWrites;
24
+ /** Metadata polling interval in milliseconds, or false to disable. Only applies when IR is omitted. */
25
+ metaRefetchInterval?: number | false;
26
26
  }): FoundryOntologyRoute;
27
27
  export declare function createFoundryBackendInstallation<AuthenticationClient extends object = FoundryAuthenticationClient>(options: CreateFoundryBackendInstallationOptions<AuthenticationClient>): Promise<OntologyBackendInstallation<AuthenticationClient>>;
28
+ //#endregion
28
29
  //# sourceMappingURL=createFoundryBackendInstallation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"createFoundryBackendInstallation.d.ts","sourceRoot":"","sources":["../../src/installation/createFoundryBackendInstallation.ts"],"names":[],"mappings":"AACA,OAAO,EAGH,KAAK,kBAAkB,EACvB,KAAK,2BAA2B,EAGhC,KAAK,aAAa,EACrB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,gCAAgC,EAAoB,MAAM,0BAA0B,CAAC;AACnG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAEH,KAAK,uBAAuB,EAC/B,MAAM,mDAAmD,CAAC;AAC3D,OAAO,EAEH,KAAK,qCAAqC,EAC1C,KAAK,2BAA2B,EACnC,MAAM,kBAAkB,CAAC;AAG1B,MAAM,MAAM,wBAAwB,GAAG,IAAI,CAAC,qCAAqC,EAAE,SAAS,CAAC,CAAC;AAC9F,MAAM,MAAM,oBAAoB,GAAG,CAAC,OAAO,EAAE,MAAM,KAAK,aAAa,CAAC;AAEtE,MAAM,WAAW,uCAAuC,CACpD,oBAAoB,SAAS,MAAM,GAAG,2BAA2B;IAEjE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,sBAAsB,CAAC;IAChC,WAAW,EAAE,wBAAwB,GAAG,gCAAgC,CAAC,oBAAoB,CAAC,CAAC;IAC/F,MAAM,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACxC,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,KAAK,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnF;AA6BD,wBAAgB,0BAA0B,CAAC,OAAO,EAAE;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB,EAAE,CAAC,EAAE,UAAU,CAAC;IAChB,KAAK,CAAC,EAAE,uBAAuB,GAAG,CAAC,CAAC,MAAM,EAAE,MAAM,KAAK,uBAAuB,CAAC,CAAC;IAChF,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,uGAAuG;IACvG,mBAAmB,CAAC,EAAE,MAAM,GAAG,KAAK,CAAC;CACxC,GAAG,oBAAoB,CA6BvB;AAED,wBAAgB,gCAAgC,CAC5C,oBAAoB,SAAS,MAAM,GAAG,2BAA2B,EAEjE,OAAO,EAAE,uCAAuC,CAAC,oBAAoB,CAAC,GACvE,OAAO,CAAC,2BAA2B,CAAC,oBAAoB,CAAC,CAAC,CAe5D"}
1
+ {"version":3,"file":"createFoundryBackendInstallation.d.ts","names":[],"sources":["../../src/installation/createFoundryBackendInstallation.ts"],"mappings":";;;;;;YAwBY,2BAA2B,KAAK;YAChC,wBAAwB,oBAAoB;iBAEvC,wCACb,sCAAsC;EAEtC;EACA;EACA,SAAS;EACT,aAAa,2BAA2B,iCAAiC;EACzE,iBAAiB;EACjB,iBAAiB,gBAAgB,uBAAuB;;wBA8B5C,2BAA2B;EACvC;EACA,KAAK;EACL,QAAQ,4BAA4B,mBAAmB;EACvD;EACA;EACA,SAAS;;EAET;IACA;wBA+BY,iCACZ,sCAAsC,6BAEtC,SAAS,wCAAwC,wBAClD,QAAQ,4BAA4B"}