@party-stack/foundry-ontology 0.18.0 → 0.19.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (254) hide show
  1. package/README.md +19 -0
  2. package/lib/adapter/convertLoadSubsetOptions.d.ts +2 -0
  3. package/lib/adapter/convertLoadSubsetOptions.d.ts.map +1 -1
  4. package/lib/adapter/convertLoadSubsetOptions.js +158 -191
  5. package/lib/adapter/convertLoadSubsetOptions.js.map +1 -1
  6. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts +17 -15
  7. package/lib/adapter/createFoundryOntologyBackendAdapter.d.ts.map +1 -1
  8. package/lib/adapter/createFoundryOntologyBackendAdapter.js +288 -400
  9. package/lib/adapter/createFoundryOntologyBackendAdapter.js.map +1 -1
  10. package/lib/adapter/foundryActionValidation.d.ts +17 -15
  11. package/lib/adapter/foundryActionValidation.d.ts.map +1 -1
  12. package/lib/adapter/foundryActionValidation.js +206 -305
  13. package/lib/adapter/foundryActionValidation.js.map +1 -1
  14. package/lib/adapter/foundryCodec.d.ts +10 -8
  15. package/lib/adapter/foundryCodec.d.ts.map +1 -1
  16. package/lib/adapter/foundryCodec.js +180 -287
  17. package/lib/adapter/foundryCodec.js.map +1 -1
  18. package/lib/adapter/foundryMediaId.d.ts +6 -4
  19. package/lib/adapter/foundryMediaId.d.ts.map +1 -1
  20. package/lib/adapter/foundryMediaId.js +31 -32
  21. package/lib/adapter/foundryMediaId.js.map +1 -1
  22. package/lib/adapter/index.d.ts +4 -4
  23. package/lib/adapter/index.js +4 -4
  24. package/lib/adapter/objectCollectionOptions.d.ts +18 -17
  25. package/lib/adapter/objectCollectionOptions.d.ts.map +1 -1
  26. package/lib/adapter/objectCollectionOptions.js +451 -538
  27. package/lib/adapter/objectCollectionOptions.js.map +1 -1
  28. package/lib/config/applyAttachmentConstraintOverrides.d.ts +6 -4
  29. package/lib/config/applyAttachmentConstraintOverrides.d.ts.map +1 -1
  30. package/lib/config/applyAttachmentConstraintOverrides.js +45 -49
  31. package/lib/config/applyAttachmentConstraintOverrides.js.map +1 -1
  32. package/lib/config/index.d.ts +17 -15
  33. package/lib/config/index.d.ts.map +1 -1
  34. package/lib/config/index.js +56 -81
  35. package/lib/config/index.js.map +1 -1
  36. package/lib/connection.d.ts +28 -26
  37. package/lib/connection.d.ts.map +1 -1
  38. package/lib/connection.js +183 -215
  39. package/lib/connection.js.map +1 -1
  40. package/lib/index.d.ts +9 -5
  41. package/lib/index.js +9 -5
  42. package/lib/installation/createFoundryBackendInstallation.d.ts +21 -20
  43. package/lib/installation/createFoundryBackendInstallation.d.ts.map +1 -1
  44. package/lib/installation/createFoundryBackendInstallation.js +52 -62
  45. package/lib/installation/createFoundryBackendInstallation.js.map +1 -1
  46. package/lib/installation/index.d.ts +2 -2
  47. package/lib/installation/index.js +1 -2
  48. package/lib/meta/actionTypeCollectionOptions.d.ts +8 -6
  49. package/lib/meta/actionTypeCollectionOptions.d.ts.map +1 -1
  50. package/lib/meta/actionTypeCollectionOptions.js +49 -49
  51. package/lib/meta/actionTypeCollectionOptions.js.map +1 -1
  52. package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts +3 -1
  53. package/lib/meta/convertActionTypeLoadSubsetOptions.d.ts.map +1 -1
  54. package/lib/meta/convertActionTypeLoadSubsetOptions.js +69 -75
  55. package/lib/meta/convertActionTypeLoadSubsetOptions.js.map +1 -1
  56. package/lib/meta/convertMetaActionType.d.ts +7 -5
  57. package/lib/meta/convertMetaActionType.d.ts.map +1 -1
  58. package/lib/meta/convertMetaActionType.js +458 -581
  59. package/lib/meta/convertMetaActionType.js.map +1 -1
  60. package/lib/meta/convertMetaLinkType.d.ts +4 -2
  61. package/lib/meta/convertMetaLinkType.d.ts.map +1 -1
  62. package/lib/meta/convertMetaLinkType.js +37 -43
  63. package/lib/meta/convertMetaLinkType.js.map +1 -1
  64. package/lib/meta/convertMetaObjectType.d.ts +4 -2
  65. package/lib/meta/convertMetaObjectType.d.ts.map +1 -1
  66. package/lib/meta/convertMetaObjectType.js +34 -35
  67. package/lib/meta/convertMetaObjectType.js.map +1 -1
  68. package/lib/meta/convertMetaQueryFunctionType.d.ts +4 -2
  69. package/lib/meta/convertMetaQueryFunctionType.d.ts.map +1 -1
  70. package/lib/meta/convertMetaQueryFunctionType.js +113 -94
  71. package/lib/meta/convertMetaQueryFunctionType.js.map +1 -1
  72. package/lib/meta/convertMetaTypeDef.d.ts +4 -2
  73. package/lib/meta/convertMetaTypeDef.d.ts.map +1 -1
  74. package/lib/meta/convertMetaTypeDef.js +178 -176
  75. package/lib/meta/convertMetaTypeDef.js.map +1 -1
  76. package/lib/meta/convertMetaValueType.d.ts +4 -2
  77. package/lib/meta/convertMetaValueType.d.ts.map +1 -1
  78. package/lib/meta/convertMetaValueType.js +11 -7
  79. package/lib/meta/convertMetaValueType.js.map +1 -1
  80. package/lib/meta/convertOmsActionParameterMetadata.d.ts +4 -2
  81. package/lib/meta/convertOmsActionParameterMetadata.d.ts.map +1 -1
  82. package/lib/meta/convertOmsActionParameterMetadata.js +107 -163
  83. package/lib/meta/convertOmsActionParameterMetadata.js.map +1 -1
  84. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts +7 -5
  85. package/lib/meta/createFoundryMetaOntologyBackendAdapter.d.ts.map +1 -1
  86. package/lib/meta/createFoundryMetaOntologyBackendAdapter.js +39 -41
  87. package/lib/meta/createFoundryMetaOntologyBackendAdapter.js.map +1 -1
  88. package/lib/meta/entityCollectionOptions.d.ts +12 -10
  89. package/lib/meta/entityCollectionOptions.d.ts.map +1 -1
  90. package/lib/meta/entityCollectionOptions.js +59 -62
  91. package/lib/meta/entityCollectionOptions.js.map +1 -1
  92. package/lib/meta/foundryAttachmentMetadata.d.ts +2 -0
  93. package/lib/meta/foundryAttachmentMetadata.d.ts.map +1 -1
  94. package/lib/meta/foundryAttachmentMetadata.js +13 -14
  95. package/lib/meta/foundryAttachmentMetadata.js.map +1 -1
  96. package/lib/meta/index.d.ts +5 -5
  97. package/lib/meta/index.js +5 -5
  98. package/lib/meta/loadActionTypeOmsMetadata.d.ts +5 -3
  99. package/lib/meta/loadActionTypeOmsMetadata.d.ts.map +1 -1
  100. package/lib/meta/loadActionTypeOmsMetadata.js +102 -139
  101. package/lib/meta/loadActionTypeOmsMetadata.js.map +1 -1
  102. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts +7 -5
  103. package/lib/meta/queryFunctionTypeCollectionOptions.d.ts.map +1 -1
  104. package/lib/meta/queryFunctionTypeCollectionOptions.js +47 -49
  105. package/lib/meta/queryFunctionTypeCollectionOptions.js.map +1 -1
  106. package/lib/stagedWrites.d.ts +26 -24
  107. package/lib/stagedWrites.d.ts.map +1 -1
  108. package/lib/stagedWrites.js +55 -66
  109. package/lib/stagedWrites.js.map +1 -1
  110. package/lib/users/createFoundryAdminOntologyRoute.d.ts +47 -17366
  111. package/lib/users/createFoundryAdminOntologyRoute.d.ts.map +1 -1
  112. package/lib/users/createFoundryAdminOntologyRoute.js +29 -37
  113. package/lib/users/createFoundryAdminOntologyRoute.js.map +1 -1
  114. package/lib/users/createFoundryUsersIntegration.d.ts +6 -4
  115. package/lib/users/createFoundryUsersIntegration.d.ts.map +1 -1
  116. package/lib/users/createFoundryUsersIntegration.js +28 -30
  117. package/lib/users/createFoundryUsersIntegration.js.map +1 -1
  118. package/lib/users/foundryUser.d.ts +4 -2
  119. package/lib/users/foundryUser.d.ts.map +1 -1
  120. package/lib/users/foundryUser.js +69 -74
  121. package/lib/users/foundryUser.js.map +1 -1
  122. package/lib/users/index.d.ts +5 -5
  123. package/lib/users/index.js +5 -5
  124. package/lib/users/userCollectionOptions.d.ts +13 -11
  125. package/lib/users/userCollectionOptions.d.ts.map +1 -1
  126. package/lib/users/userCollectionOptions.js +82 -100
  127. package/lib/users/userCollectionOptions.js.map +1 -1
  128. package/lib/utils/AsyncIterable.d.ts +2 -0
  129. package/lib/utils/AsyncIterable.d.ts.map +1 -1
  130. package/lib/utils/AsyncIterable.js +26 -34
  131. package/lib/utils/AsyncIterable.js.map +1 -1
  132. package/lib/utils/actionTypeName.d.ts +2 -0
  133. package/lib/utils/actionTypeName.d.ts.map +1 -1
  134. package/lib/utils/actionTypeName.js +9 -7
  135. package/lib/utils/actionTypeName.js.map +1 -1
  136. package/lib/utils/chunk.d.ts +2 -0
  137. package/lib/utils/chunk.d.ts.map +1 -1
  138. package/lib/utils/chunk.js +8 -6
  139. package/lib/utils/chunk.js.map +1 -1
  140. package/package.json +21 -27
  141. package/lib/adapter/convertLoadSubsetOptions.test.d.ts +0 -2
  142. package/lib/adapter/convertLoadSubsetOptions.test.d.ts.map +0 -1
  143. package/lib/adapter/convertLoadSubsetOptions.test.js +0 -213
  144. package/lib/adapter/convertLoadSubsetOptions.test.js.map +0 -1
  145. package/lib/adapter/createFoundryOntologyBackendAdapter.test.d.ts +0 -2
  146. package/lib/adapter/createFoundryOntologyBackendAdapter.test.d.ts.map +0 -1
  147. package/lib/adapter/createFoundryOntologyBackendAdapter.test.js +0 -628
  148. package/lib/adapter/createFoundryOntologyBackendAdapter.test.js.map +0 -1
  149. package/lib/adapter/foundryActionValidation.test.d.ts +0 -2
  150. package/lib/adapter/foundryActionValidation.test.d.ts.map +0 -1
  151. package/lib/adapter/foundryActionValidation.test.js +0 -243
  152. package/lib/adapter/foundryActionValidation.test.js.map +0 -1
  153. package/lib/adapter/foundryCodec.test.d.ts +0 -2
  154. package/lib/adapter/foundryCodec.test.d.ts.map +0 -1
  155. package/lib/adapter/foundryCodec.test.js +0 -137
  156. package/lib/adapter/foundryCodec.test.js.map +0 -1
  157. package/lib/adapter/foundryMediaId.test.d.ts +0 -2
  158. package/lib/adapter/foundryMediaId.test.d.ts.map +0 -1
  159. package/lib/adapter/foundryMediaId.test.js +0 -23
  160. package/lib/adapter/foundryMediaId.test.js.map +0 -1
  161. package/lib/adapter/index.d.ts.map +0 -1
  162. package/lib/adapter/index.js.map +0 -1
  163. package/lib/adapter/objectCollectionOptions.test.d.ts +0 -2
  164. package/lib/adapter/objectCollectionOptions.test.d.ts.map +0 -1
  165. package/lib/adapter/objectCollectionOptions.test.js +0 -1290
  166. package/lib/adapter/objectCollectionOptions.test.js.map +0 -1
  167. package/lib/config/connectionPull.test.d.ts +0 -2
  168. package/lib/config/connectionPull.test.d.ts.map +0 -1
  169. package/lib/config/connectionPull.test.js +0 -151
  170. package/lib/config/connectionPull.test.js.map +0 -1
  171. package/lib/config/index.test.d.ts +0 -2
  172. package/lib/config/index.test.d.ts.map +0 -1
  173. package/lib/config/index.test.js +0 -182
  174. package/lib/config/index.test.js.map +0 -1
  175. package/lib/connection.test.d.ts +0 -2
  176. package/lib/connection.test.d.ts.map +0 -1
  177. package/lib/connection.test.js +0 -162
  178. package/lib/connection.test.js.map +0 -1
  179. package/lib/index.d.ts.map +0 -1
  180. package/lib/index.js.map +0 -1
  181. package/lib/installation/createFoundryBackendInstallation.test.d.ts +0 -2
  182. package/lib/installation/createFoundryBackendInstallation.test.d.ts.map +0 -1
  183. package/lib/installation/createFoundryBackendInstallation.test.js +0 -83
  184. package/lib/installation/createFoundryBackendInstallation.test.js.map +0 -1
  185. package/lib/installation/index.d.ts.map +0 -1
  186. package/lib/installation/index.js.map +0 -1
  187. package/lib/meta/actionTypeCollectionOptions.test.d.ts +0 -2
  188. package/lib/meta/actionTypeCollectionOptions.test.d.ts.map +0 -1
  189. package/lib/meta/actionTypeCollectionOptions.test.js +0 -24
  190. package/lib/meta/actionTypeCollectionOptions.test.js.map +0 -1
  191. package/lib/meta/actionTypeIdQuery.test.d.ts +0 -2
  192. package/lib/meta/actionTypeIdQuery.test.d.ts.map +0 -1
  193. package/lib/meta/actionTypeIdQuery.test.js +0 -131
  194. package/lib/meta/actionTypeIdQuery.test.js.map +0 -1
  195. package/lib/meta/convertActionTypeLoadSubsetOptions.test.d.ts +0 -2
  196. package/lib/meta/convertActionTypeLoadSubsetOptions.test.d.ts.map +0 -1
  197. package/lib/meta/convertActionTypeLoadSubsetOptions.test.js +0 -138
  198. package/lib/meta/convertActionTypeLoadSubsetOptions.test.js.map +0 -1
  199. package/lib/meta/convertMetaActionType.test.d.ts +0 -2
  200. package/lib/meta/convertMetaActionType.test.d.ts.map +0 -1
  201. package/lib/meta/convertMetaActionType.test.js +0 -1565
  202. package/lib/meta/convertMetaActionType.test.js.map +0 -1
  203. package/lib/meta/convertMetaLinkType.test.d.ts +0 -2
  204. package/lib/meta/convertMetaLinkType.test.d.ts.map +0 -1
  205. package/lib/meta/convertMetaLinkType.test.js +0 -110
  206. package/lib/meta/convertMetaLinkType.test.js.map +0 -1
  207. package/lib/meta/convertMetaObjectType.test.d.ts +0 -2
  208. package/lib/meta/convertMetaObjectType.test.d.ts.map +0 -1
  209. package/lib/meta/convertMetaObjectType.test.js +0 -250
  210. package/lib/meta/convertMetaObjectType.test.js.map +0 -1
  211. package/lib/meta/convertMetaQueryFunctionType.test.d.ts +0 -2
  212. package/lib/meta/convertMetaQueryFunctionType.test.d.ts.map +0 -1
  213. package/lib/meta/convertMetaQueryFunctionType.test.js +0 -134
  214. package/lib/meta/convertMetaQueryFunctionType.test.js.map +0 -1
  215. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.d.ts +0 -2
  216. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.d.ts.map +0 -1
  217. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.js +0 -49
  218. package/lib/meta/createFoundryMetaOntologyBackendAdapter.test.js.map +0 -1
  219. package/lib/meta/entityCollectionOptions.test.d.ts +0 -2
  220. package/lib/meta/entityCollectionOptions.test.d.ts.map +0 -1
  221. package/lib/meta/entityCollectionOptions.test.js +0 -98
  222. package/lib/meta/entityCollectionOptions.test.js.map +0 -1
  223. package/lib/meta/index.d.ts.map +0 -1
  224. package/lib/meta/index.js.map +0 -1
  225. package/lib/meta/loadActionTypeOmsMetadata.test.d.ts +0 -2
  226. package/lib/meta/loadActionTypeOmsMetadata.test.d.ts.map +0 -1
  227. package/lib/meta/loadActionTypeOmsMetadata.test.js +0 -218
  228. package/lib/meta/loadActionTypeOmsMetadata.test.js.map +0 -1
  229. package/lib/stagedWrites.test.d.ts +0 -2
  230. package/lib/stagedWrites.test.d.ts.map +0 -1
  231. package/lib/stagedWrites.test.js +0 -71
  232. package/lib/stagedWrites.test.js.map +0 -1
  233. package/lib/users/createFoundryUsersIntegration.test.d.ts +0 -2
  234. package/lib/users/createFoundryUsersIntegration.test.d.ts.map +0 -1
  235. package/lib/users/createFoundryUsersIntegration.test.js +0 -32
  236. package/lib/users/createFoundryUsersIntegration.test.js.map +0 -1
  237. package/lib/users/foundryUser.test.d.ts +0 -2
  238. package/lib/users/foundryUser.test.d.ts.map +0 -1
  239. package/lib/users/foundryUser.test.js +0 -45
  240. package/lib/users/foundryUser.test.js.map +0 -1
  241. package/lib/users/index.d.ts.map +0 -1
  242. package/lib/users/index.js.map +0 -1
  243. package/lib/users/userCollectionOptions.test.d.ts +0 -2
  244. package/lib/users/userCollectionOptions.test.d.ts.map +0 -1
  245. package/lib/users/userCollectionOptions.test.js +0 -18
  246. package/lib/users/userCollectionOptions.test.js.map +0 -1
  247. package/lib/utils/AsyncIterable.test.d.ts +0 -2
  248. package/lib/utils/AsyncIterable.test.d.ts.map +0 -1
  249. package/lib/utils/AsyncIterable.test.js +0 -17
  250. package/lib/utils/AsyncIterable.test.js.map +0 -1
  251. package/lib/utils/actionTypeName.test.d.ts +0 -2
  252. package/lib/utils/actionTypeName.test.d.ts.map +0 -1
  253. package/lib/utils/actionTypeName.test.js +0 -30
  254. 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":"AAAA,OAAO,EAQH,mCAAmC,EACnC,qBAAqB,GACxB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAC1G,OAAO,EACH,kCAAkC,EAClC,uBAAuB,GAI1B,MAAM,oBAAoB,CAAC;AAqC5B,MAAM,cAAc,GAAG;IACnB,yBAAyB;IACzB,0BAA0B;IAC1B,wBAAwB;IACxB,yBAAyB;IACzB,sCAAsC;IACtC,2BAA2B;CAC9B,CAAC;AAEF,SAAS,WAAW,CAAC,SAA6B,EAAE,WAAoB;IACpE,OAAO,SAAS,KAAK,SAAS;QAC1B,CAAC,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE;QACtB,CAAC,CAAC;YACI,MAAM,EAAE,QAAQ;YAChB,UAAU,EAAE;gBACR,SAAS;gBACT,WAAW;aACd;SACJ,CAAC;AACZ,CAAC;AAED,SAAS,0BAA0B,CAAC,OAGnC;IACG,OAAO,CAAC,QAAQ,EAAE,EAAE;QAChB,MAAM,KAAK,GAAG,kBAAkB,CAAC;YAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,KAAK,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;SACnE,CAAC,CAAC;QACH,MAAM,eAAe,GAAG,sBAAsB,CAAC;YAC3C,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,eAAe,EAAE,CAAC,GAAG,EAAE,SAAS,EAAE,EAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,GAAG,EAAE,SAAS,CAAC;SAChF,CAAC,CAAC;QACH,OAAO,mCAAmC,CACtC,qBAAqB,CAAC;YAClB,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC;YAClC,eAAe;SAClB,CAAC,CACL,CAAC;IACN,CAAC,CAAC;AACN,CAAC;AAED,KAAK,UAAU,sCAAsC,CACjD,OAA8C,EAC9C,OAAwC;IAExC,IAAI,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IACzC,MAAM,WAAW,GAAkC,OAAO,CAAC,KAAK;QAC5D,CAAC,CAAC,MAAM,uBAAuB,CAAC;YAC1B,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ;YAChC,WAAW,EAAE,OAAO,CAAC,KAAK,CAAC,WAAW;YACtC,MAAM,EAAE,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC;YACrF,mBAAmB,EAAE;gBACjB,MAAM,EAAE,IAAI,GAAG,CACX,YAAY,EACZ,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,CAC1E,CAAC,QAAQ,EAAE;gBACZ,qBAAqB,EAAE,IAAI,GAAG,CAC1B,gCAAgC,EAChC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,CAC1E,CAAC,QAAQ,EAAE;gBACZ,aAAa,EAAE,IAAI,GAAG,CAClB,4BAA4B,EAC5B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,CAC1E,CAAC,QAAQ,EAAE;gBACZ,kBAAkB,EAAE,IAAI,GAAG,CACvB,mCAAmC,EACnC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,CAC1E,CAAC,QAAQ,EAAE;aACf;YACD,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;YAC1B,yBAAyB,EAAE,OAAO,CAAC,KAAK,CAAC,yBAAyB;YAClE,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM;SAC1D,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAChB,MAAM,sBAAsB,GAEV,OAAO,CAAC,iBAAiB;QACvC,CAAC,CAAC,kCAAkC,CAAC;YAC/B,QAAQ,EACJ,OAAO,CAAC,iBAAiB,CAAC,QAAQ;YACtC,YAAY,EACR,OAAO,CAAC,iBAAiB,CAAC,YAAY;YAC1C,aAAa,EAAE,IAAI,GAAG,CAClB,4BAA4B,EAC5B,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACzB,CAAC,CAAC,OAAO,CAAC,OAAO;gBACjB,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,CAC9B,CAAC,QAAQ,EAAE;YACZ,uBAAuB,EACnB,qBAAqB;YACzB,kBAAkB,EAAE,IAAI,GAAG,CACvB,mCAAmC,EACnC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;gBACzB,CAAC,CAAC,OAAO,CAAC,OAAO;gBACjB,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,CAC9B,CAAC,QAAQ,EAAE;YACZ,MAAM,EACF,OAAO,CAAC,iBAAiB,CAAC,MAAM;gBAChC,cAAc;YAClB,KAAK,EACD,OAAO,CAAC,iBAAiB,CAAC,KAAK;YACnC,aAAa,EAAE,CAAC,KAAK,EAAE,EAAE,CACrB,OAAO,CAAC,iBAAiB;gBACrB,EAAE,MAAM;gBACZ,eAAe,CAAC,KAAK,CAAC,CAAC,MAAM;SACpC,CAAC;QACJ,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,kBAAkB,GAAG,CAAC,SAAkB,EAAyB,EAAE;QACrE,MAAM,KAAK,GAAG,SAAS,IAAI,OAAO,CAAC,KAAK,CAAC;QACzC,IAAI,CAAC,KAAK,EAAE,CAAC;YACT,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;QACzE,CAAC;QACD,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACrD,MAAM,UAAU,GAAyB;YACrC,MAAM;YACN,KAAK,EAAE,WAAW,CAAC,SAAS,EAAE,KAAK,CAAC;SACvC,CAAC;QACF,MAAM,OAAO,GAAsB;YAC/B,UAAU;gBACN,IAAI,KAAK,KAAK,OAAO,CAAC,KAAK,EAAE,CAAC;oBAC1B,WAAW,GAAG,KAAK,CAAC;gBACxB,CAAC;gBACD,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;YAC7B,CAAC;YACD,MAAM,EAAE,0BAA0B,CAAC;gBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,aAAa,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC;aAC9C,CAAC;SACL,CAAC;QACF,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,8BAA8B,GAAG,KAAK,EACxC,KAAmC,EACnC,YAAY,GAAG,KAAK,EACU,EAAE;QAChC,MAAM,YAAY,GAAG,YAAY;YAC7B,CAAC,CAAC,MAAM,KAAK,CAAC,OAAO,EAAE;YACvB,CAAC,CAAC,MAAM,KAAK,CAAC,UAAU,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACnC,MAAM,UAAU,GAAyB;YACrC,MAAM;YACN,KAAK,EAAE,WAAW,CACd,YAAY,CAAC,UAAU,EAAE,SAAS,EAClC,IAAI,CACP;SACJ,CAAC;QACF,MAAM,OAAO,GAAsB;YAC/B,OAAO,EAAE,GAAG,EAAE,CACV,8BAA8B,CAC1B,KAAK,EACL,IAAI,CACP;YACL,UAAU,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,EAAE;YAChC,MAAM,EAAE,0BAA0B,CAAC;gBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,aAAa,EAAE,GAAG,EAAE,CAChB,KAAK,CAAC,cAAc,EAAE;aAC7B,CAAC;SACL,CAAC;QACF,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACnC,CAAC,CAAC;IAEF,MAAM,mBAAmB,GAAG,CAAC,YAA0B,EAAyB,EAAE;QAC9E,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,CAAC;QACnC,MAAM,UAAU,GAAyB;YACrC,MAAM;YACN,KAAK,EAAE,WAAW,CACd,YAAY,CAAC,UAAU,EAAE,SAAS,EAClC,YAAY,CAAC,UAAU,EAAE,WAAW,IAAI,KAAK,CAChD;SACJ,CAAC;QACF,MAAM,OAAO,GAAsB;YAC/B,KAAK,CAAC,OAAO;gBACT,IAAI,CAAC,WAAW,EAAE,CAAC;oBACf,MAAM,eAAe,CAAC,yCAAyC,CAAC,CAAC;gBACrE,CAAC;gBACD,OAAO,mBAAmB,CAAC,MAAM,WAAW,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;YAClE,CAAC;YACD,KAAK,CAAC,UAAU;gBACZ,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YACtC,CAAC;YACD,MAAM,EAAE,0BAA0B,CAAC;gBAC/B,OAAO,EAAE,OAAO,CAAC,OAAO;gBACxB,aAAa,EAAE,GAAG,EAAE;oBAChB,IAAI,CAAC,WAAW,EAAE,CAAC;wBACf,MAAM,eAAe,CAAC,yCAAyC,CAAC,CAAC;oBACrE,CAAC;oBACD,OAAO,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;gBAC9C,CAAC;aACJ,CAAC;SACL,CAAC;QACF,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,CAAC;IACnC,CAAC,CAAC;IAEF,OAAO;QACH,IAAI,EAAE,SAAS;QACf,0BAA0B,CAAC,UAAU;YACjC,OAAO;gBACH,KAAK,CAAC,qBAAqB,CAAC,GAAG;oBAC3B,IAAI,CAAC,WAAW;wBAAE,OAAO;oBACzB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;oBACxD,IAAI,CAAC,OAAO;wBAAE,OAAO;oBACrB,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;oBACvD,MAAM,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;oBAC5C,OAAO,iBAAiB,CAAC,UAAU,CAAC;gBACxC,CAAC;gBACD,MAAM,EAAE;oBACJ,KAAK,CAAC,KAAK,CAAC,qBAAqB,GAAG,EAAE;wBAClC,IAAI,CAAC,WAAW,EAAE,CAAC;4BACf,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;wBAC/D,CAAC;wBACD,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC;4BACrC,mBAAmB,EAAE,qBAAqB,CAAC,mBAAmB;yBACjE,CAAC,CAAC;wBACH,MAAM,iBAAiB,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;wBACvD,MAAM,UAAU,CAAC,OAAO,CAAC,iBAAiB,CAAC,CAAC;wBAC5C,OAAO,iBAAiB,CAAC,UAAU,CAAC;oBACxC,CAAC;oBACD,KAAK,CAAC,iBAAiB;wBACnB,IAAI,CAAC,sBAAsB,EAAE,CAAC;4BAC1B,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;wBACtE,CAAC;wBACD,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;4BAChC,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;wBAC3E,CAAC;wBACD,MAAM,OAAO,GACT,MAAM,8BAA8B,CAChC,sBAAsB,CACzB,CAAC;wBACN,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAClC,OAAO,OAAO,CAAC,UAAU,CAAC;oBAC9B,CAAC;oBACD,KAAK,CAAC,QAAQ,CAAC,qBAAqB,GAAG,EAAE;wBACrC,MAAM,OAAO,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;wBAChE,IAAI,qBAAqB,CAAC,KAAK,KAAK,SAAS,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;4BAC7D,WAAW,GAAG,IAAI,CAAC;wBACvB,CAAC;wBACD,MAAM,UAAU,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;wBAClC,OAAO,OAAO,CAAC,UAAU,CAAC;oBAC9B,CAAC;iBACJ;aACJ,CAAC;QACN,CAAC;QACD,KAAK,CAAC,kBAAkB;YACpB,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiC,CAAC;YAC1D,IAAI,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;gBAC/B,MAAM,OAAO,GAAG,kBAAkB,EAAE,CAAC;gBACrC,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrD,CAAC;YACD,IAAI,WAAW,EAAE,CAAC;gBACd,KAAK,MAAM,YAAY,IAAI,MAAM,WAAW,CAAC,eAAe,EAAE,EAAE,CAAC;oBAC7D,MAAM,OAAO,GAAG,mBAAmB,CAAC,YAAY,CAAC,CAAC;oBAClD,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;YACD,IACI,sBAAsB;gBACtB,OAAO,MAAM,KAAK,WAAW,EAC/B,CAAC;gBACC,MAAM,OAAO,GACT,MAAM,8BAA8B,CAChC,sBAAsB,CACzB,CAAC;gBACN,QAAQ,CAAC,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YACrD,CAAC;YACD,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAClC,CAAC;QACD,KAAK,CAAC,OAAO;YACT,MAAM,WAAW,EAAE,OAAO,EAAE,CAAC;YAC7B,sBAAsB,EAAE,OAAO,EAAE,CAAC;QACtC,CAAC;KACJ,CAAC;AACN,CAAC;AAED,MAAM,UAAU,8BAA8B,CAC1C,OAA8C;IAE9C,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,sCAAsC,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;AACjF,CAAC"}
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":"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"}
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"}