@diskd-ai/sdk 5.1.2

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 (299) hide show
  1. package/LICENSE +190 -0
  2. package/README.md +1036 -0
  3. package/dist/agentHub/StreamProtocolFetcher.d.ts +55 -0
  4. package/dist/agentHub/StreamProtocolFetcher.d.ts.map +1 -0
  5. package/dist/agentHub/StreamProtocolFetcher.js +176 -0
  6. package/dist/agentHub/StreamProtocolFetcher.js.map +1 -0
  7. package/dist/agentHub/StreamProtocolHandler.d.ts +18 -0
  8. package/dist/agentHub/StreamProtocolHandler.d.ts.map +1 -0
  9. package/dist/agentHub/StreamProtocolHandler.js +63 -0
  10. package/dist/agentHub/StreamProtocolHandler.js.map +1 -0
  11. package/dist/agentHub/agentHub.d.ts +30 -0
  12. package/dist/agentHub/agentHub.d.ts.map +1 -0
  13. package/dist/agentHub/agentHub.js +200 -0
  14. package/dist/agentHub/agentHub.js.map +1 -0
  15. package/dist/agentHub/agentHubTypes.d.ts +110 -0
  16. package/dist/agentHub/agentHubTypes.d.ts.map +1 -0
  17. package/dist/agentHub/agentHubTypes.js +8 -0
  18. package/dist/agentHub/agentHubTypes.js.map +1 -0
  19. package/dist/agentHub/streamProtocolMap.d.ts +328 -0
  20. package/dist/agentHub/streamProtocolMap.d.ts.map +1 -0
  21. package/dist/agentHub/streamProtocolMap.js +8 -0
  22. package/dist/agentHub/streamProtocolMap.js.map +1 -0
  23. package/dist/auth/createApiKeyAuth.d.ts +11 -0
  24. package/dist/auth/createApiKeyAuth.d.ts.map +1 -0
  25. package/dist/auth/createApiKeyAuth.js +31 -0
  26. package/dist/auth/createApiKeyAuth.js.map +1 -0
  27. package/dist/auth/createAuth.d.ts +3 -0
  28. package/dist/auth/createAuth.d.ts.map +1 -0
  29. package/dist/auth/createAuth.js +128 -0
  30. package/dist/auth/createAuth.js.map +1 -0
  31. package/dist/auth/createAuthBrowser.d.ts +3 -0
  32. package/dist/auth/createAuthBrowser.d.ts.map +1 -0
  33. package/dist/auth/createAuthBrowser.js +104 -0
  34. package/dist/auth/createAuthBrowser.js.map +1 -0
  35. package/dist/auth/jwtClaims.d.ts +3 -0
  36. package/dist/auth/jwtClaims.d.ts.map +1 -0
  37. package/dist/auth/jwtClaims.js +23 -0
  38. package/dist/auth/jwtClaims.js.map +1 -0
  39. package/dist/auth/keyfile.d.ts +10 -0
  40. package/dist/auth/keyfile.d.ts.map +1 -0
  41. package/dist/auth/keyfile.js +28 -0
  42. package/dist/auth/keyfile.js.map +1 -0
  43. package/dist/auth/oidcDiscovery.d.ts +9 -0
  44. package/dist/auth/oidcDiscovery.d.ts.map +1 -0
  45. package/dist/auth/oidcDiscovery.js +27 -0
  46. package/dist/auth/oidcDiscovery.js.map +1 -0
  47. package/dist/auth/pkce.d.ts +4 -0
  48. package/dist/auth/pkce.d.ts.map +1 -0
  49. package/dist/auth/pkce.js +43 -0
  50. package/dist/auth/pkce.js.map +1 -0
  51. package/dist/auth/sessionStorage.d.ts +8 -0
  52. package/dist/auth/sessionStorage.d.ts.map +1 -0
  53. package/dist/auth/sessionStorage.js +8 -0
  54. package/dist/auth/sessionStorage.js.map +1 -0
  55. package/dist/auth/tokenRequests.d.ts +15 -0
  56. package/dist/auth/tokenRequests.d.ts.map +1 -0
  57. package/dist/auth/tokenRequests.js +89 -0
  58. package/dist/auth/tokenRequests.js.map +1 -0
  59. package/dist/auth/types.d.ts +35 -0
  60. package/dist/auth/types.d.ts.map +1 -0
  61. package/dist/auth/types.js +2 -0
  62. package/dist/auth/types.js.map +1 -0
  63. package/dist/auth/urlRuntime.d.ts +7 -0
  64. package/dist/auth/urlRuntime.d.ts.map +1 -0
  65. package/dist/auth/urlRuntime.js +17 -0
  66. package/dist/auth/urlRuntime.js.map +1 -0
  67. package/dist/browser/index.d.ts +8 -0
  68. package/dist/browser/index.d.ts.map +1 -0
  69. package/dist/browser/index.js +3 -0
  70. package/dist/browser/index.js.map +1 -0
  71. package/dist/calendar/calendar.d.ts +21 -0
  72. package/dist/calendar/calendar.d.ts.map +1 -0
  73. package/dist/calendar/calendar.js +105 -0
  74. package/dist/calendar/calendar.js.map +1 -0
  75. package/dist/calendar/calendarTypes.d.ts +191 -0
  76. package/dist/calendar/calendarTypes.d.ts.map +1 -0
  77. package/dist/calendar/calendarTypes.js +4 -0
  78. package/dist/calendar/calendarTypes.js.map +1 -0
  79. package/dist/contacts/contacts.d.ts +10 -0
  80. package/dist/contacts/contacts.d.ts.map +1 -0
  81. package/dist/contacts/contacts.js +86 -0
  82. package/dist/contacts/contacts.js.map +1 -0
  83. package/dist/contacts/contactsTypes.d.ts +81 -0
  84. package/dist/contacts/contactsTypes.d.ts.map +1 -0
  85. package/dist/contacts/contactsTypes.js +4 -0
  86. package/dist/contacts/contactsTypes.js.map +1 -0
  87. package/dist/drive/DriveRepository.d.ts +88 -0
  88. package/dist/drive/DriveRepository.d.ts.map +1 -0
  89. package/dist/drive/DriveRepository.js +156 -0
  90. package/dist/drive/DriveRepository.js.map +1 -0
  91. package/dist/drive/crontab.d.ts +7 -0
  92. package/dist/drive/crontab.d.ts.map +1 -0
  93. package/dist/drive/crontab.js +374 -0
  94. package/dist/drive/crontab.js.map +1 -0
  95. package/dist/drive/crontabTypes.d.ts +136 -0
  96. package/dist/drive/crontabTypes.d.ts.map +1 -0
  97. package/dist/drive/crontabTypes.js +2 -0
  98. package/dist/drive/crontabTypes.js.map +1 -0
  99. package/dist/drive/drive.d.ts +8 -0
  100. package/dist/drive/drive.d.ts.map +1 -0
  101. package/dist/drive/drive.js +711 -0
  102. package/dist/drive/drive.js.map +1 -0
  103. package/dist/drive/driveDb.d.ts +6 -0
  104. package/dist/drive/driveDb.d.ts.map +1 -0
  105. package/dist/drive/driveDb.js +220 -0
  106. package/dist/drive/driveDb.js.map +1 -0
  107. package/dist/drive/driveDbTypes.d.ts +138 -0
  108. package/dist/drive/driveDbTypes.d.ts.map +1 -0
  109. package/dist/drive/driveDbTypes.js +5 -0
  110. package/dist/drive/driveDbTypes.js.map +1 -0
  111. package/dist/drive/driveTypes.d.ts +322 -0
  112. package/dist/drive/driveTypes.d.ts.map +1 -0
  113. package/dist/drive/driveTypes.js +5 -0
  114. package/dist/drive/driveTypes.js.map +1 -0
  115. package/dist/drive/rpc.d.ts +14 -0
  116. package/dist/drive/rpc.d.ts.map +1 -0
  117. package/dist/drive/rpc.js +48 -0
  118. package/dist/drive/rpc.js.map +1 -0
  119. package/dist/drive/session.d.ts +7 -0
  120. package/dist/drive/session.d.ts.map +1 -0
  121. package/dist/drive/session.js +450 -0
  122. package/dist/drive/session.js.map +1 -0
  123. package/dist/drive/sessionBuilder.d.ts +33 -0
  124. package/dist/drive/sessionBuilder.d.ts.map +1 -0
  125. package/dist/drive/sessionBuilder.js +77 -0
  126. package/dist/drive/sessionBuilder.js.map +1 -0
  127. package/dist/drive/sessionObject.d.ts +57 -0
  128. package/dist/drive/sessionObject.d.ts.map +1 -0
  129. package/dist/drive/sessionObject.js +191 -0
  130. package/dist/drive/sessionObject.js.map +1 -0
  131. package/dist/drive/sessionTypes.d.ts +182 -0
  132. package/dist/drive/sessionTypes.d.ts.map +1 -0
  133. package/dist/drive/sessionTypes.js +2 -0
  134. package/dist/drive/sessionTypes.js.map +1 -0
  135. package/dist/drive/typeorm/DriveDriver.d.ts +27 -0
  136. package/dist/drive/typeorm/DriveDriver.d.ts.map +1 -0
  137. package/dist/drive/typeorm/DriveDriver.js +86 -0
  138. package/dist/drive/typeorm/DriveDriver.js.map +1 -0
  139. package/dist/drive/typeorm/DriveQueryRunner.d.ts +15 -0
  140. package/dist/drive/typeorm/DriveQueryRunner.d.ts.map +1 -0
  141. package/dist/drive/typeorm/DriveQueryRunner.js +76 -0
  142. package/dist/drive/typeorm/DriveQueryRunner.js.map +1 -0
  143. package/dist/drive/typeorm/createDriveDataSource.d.ts +3 -0
  144. package/dist/drive/typeorm/createDriveDataSource.d.ts.map +1 -0
  145. package/dist/drive/typeorm/createDriveDataSource.js +36 -0
  146. package/dist/drive/typeorm/createDriveDataSource.js.map +1 -0
  147. package/dist/drive/typeorm/datasourceTypes.d.ts +56 -0
  148. package/dist/drive/typeorm/datasourceTypes.d.ts.map +1 -0
  149. package/dist/drive/typeorm/datasourceTypes.js +5 -0
  150. package/dist/drive/typeorm/datasourceTypes.js.map +1 -0
  151. package/dist/drive/types.d.ts +48 -0
  152. package/dist/drive/types.d.ts.map +1 -0
  153. package/dist/drive/types.js +2 -0
  154. package/dist/drive/types.js.map +1 -0
  155. package/dist/env/apiKey.d.ts +2 -0
  156. package/dist/env/apiKey.d.ts.map +1 -0
  157. package/dist/env/apiKey.js +11 -0
  158. package/dist/env/apiKey.js.map +1 -0
  159. package/dist/env/baseUrl.d.ts +3 -0
  160. package/dist/env/baseUrl.d.ts.map +1 -0
  161. package/dist/env/baseUrl.js +31 -0
  162. package/dist/env/baseUrl.js.map +1 -0
  163. package/dist/inbox/inboxTypes.d.ts +34 -0
  164. package/dist/inbox/inboxTypes.d.ts.map +1 -0
  165. package/dist/inbox/inboxTypes.js +5 -0
  166. package/dist/inbox/inboxTypes.js.map +1 -0
  167. package/dist/index.d.ts +56 -0
  168. package/dist/index.d.ts.map +1 -0
  169. package/dist/index.js +43 -0
  170. package/dist/index.js.map +1 -0
  171. package/dist/llmRouter/llmRouter.d.ts +23 -0
  172. package/dist/llmRouter/llmRouter.d.ts.map +1 -0
  173. package/dist/llmRouter/llmRouter.js +566 -0
  174. package/dist/llmRouter/llmRouter.js.map +1 -0
  175. package/dist/llmRouter/llmRouterTypes.d.ts +350 -0
  176. package/dist/llmRouter/llmRouterTypes.d.ts.map +1 -0
  177. package/dist/llmRouter/llmRouterTypes.js +5 -0
  178. package/dist/llmRouter/llmRouterTypes.js.map +1 -0
  179. package/dist/mcpHub/mcpHub.d.ts +23 -0
  180. package/dist/mcpHub/mcpHub.d.ts.map +1 -0
  181. package/dist/mcpHub/mcpHub.js +223 -0
  182. package/dist/mcpHub/mcpHub.js.map +1 -0
  183. package/dist/mcpHub/mcpHubTypes.d.ts +228 -0
  184. package/dist/mcpHub/mcpHubTypes.d.ts.map +1 -0
  185. package/dist/mcpHub/mcpHubTypes.js +5 -0
  186. package/dist/mcpHub/mcpHubTypes.js.map +1 -0
  187. package/dist/mcpTools/mcpTools.d.ts +31 -0
  188. package/dist/mcpTools/mcpTools.d.ts.map +1 -0
  189. package/dist/mcpTools/mcpTools.js +144 -0
  190. package/dist/mcpTools/mcpTools.js.map +1 -0
  191. package/dist/mcpTools/mcpToolsTypes.d.ts +45 -0
  192. package/dist/mcpTools/mcpToolsTypes.d.ts.map +1 -0
  193. package/dist/mcpTools/mcpToolsTypes.js +5 -0
  194. package/dist/mcpTools/mcpToolsTypes.js.map +1 -0
  195. package/dist/messagesStore/messagesStore.d.ts +22 -0
  196. package/dist/messagesStore/messagesStore.d.ts.map +1 -0
  197. package/dist/messagesStore/messagesStore.js +402 -0
  198. package/dist/messagesStore/messagesStore.js.map +1 -0
  199. package/dist/messagesStore/messagesStoreTypes.d.ts +327 -0
  200. package/dist/messagesStore/messagesStoreTypes.d.ts.map +1 -0
  201. package/dist/messagesStore/messagesStoreTypes.js +11 -0
  202. package/dist/messagesStore/messagesStoreTypes.js.map +1 -0
  203. package/dist/node/fastDns.d.ts +2 -0
  204. package/dist/node/fastDns.d.ts.map +1 -0
  205. package/dist/node/fastDns.js +119 -0
  206. package/dist/node/fastDns.js.map +1 -0
  207. package/dist/operatives/operatives.d.ts +22 -0
  208. package/dist/operatives/operatives.d.ts.map +1 -0
  209. package/dist/operatives/operatives.js +199 -0
  210. package/dist/operatives/operatives.js.map +1 -0
  211. package/dist/operatives/operativesTypes.d.ts +141 -0
  212. package/dist/operatives/operativesTypes.d.ts.map +1 -0
  213. package/dist/operatives/operativesTypes.js +6 -0
  214. package/dist/operatives/operativesTypes.js.map +1 -0
  215. package/dist/platformEvents/platformEvents.d.ts +14 -0
  216. package/dist/platformEvents/platformEvents.d.ts.map +1 -0
  217. package/dist/platformEvents/platformEvents.js +70 -0
  218. package/dist/platformEvents/platformEvents.js.map +1 -0
  219. package/dist/platformEvents/platformEventsTypes.d.ts +31 -0
  220. package/dist/platformEvents/platformEventsTypes.d.ts.map +1 -0
  221. package/dist/platformEvents/platformEventsTypes.js +8 -0
  222. package/dist/platformEvents/platformEventsTypes.js.map +1 -0
  223. package/dist/projects/projects.d.ts +19 -0
  224. package/dist/projects/projects.d.ts.map +1 -0
  225. package/dist/projects/projects.js +52 -0
  226. package/dist/projects/projects.js.map +1 -0
  227. package/dist/projects/projectsTypes.d.ts +47 -0
  228. package/dist/projects/projectsTypes.d.ts.map +1 -0
  229. package/dist/projects/projectsTypes.js +4 -0
  230. package/dist/projects/projectsTypes.js.map +1 -0
  231. package/dist/routineRuns/routineRuns.d.ts +19 -0
  232. package/dist/routineRuns/routineRuns.d.ts.map +1 -0
  233. package/dist/routineRuns/routineRuns.js +47 -0
  234. package/dist/routineRuns/routineRuns.js.map +1 -0
  235. package/dist/routineRuns/routineRunsTypes.d.ts +39 -0
  236. package/dist/routineRuns/routineRunsTypes.d.ts.map +1 -0
  237. package/dist/routineRuns/routineRunsTypes.js +4 -0
  238. package/dist/routineRuns/routineRunsTypes.js.map +1 -0
  239. package/dist/routines/routines.d.ts +19 -0
  240. package/dist/routines/routines.d.ts.map +1 -0
  241. package/dist/routines/routines.js +77 -0
  242. package/dist/routines/routines.js.map +1 -0
  243. package/dist/routines/routinesTypes.d.ts +106 -0
  244. package/dist/routines/routinesTypes.d.ts.map +1 -0
  245. package/dist/routines/routinesTypes.js +4 -0
  246. package/dist/routines/routinesTypes.js.map +1 -0
  247. package/dist/sdk/diskd.d.ts +3 -0
  248. package/dist/sdk/diskd.d.ts.map +1 -0
  249. package/dist/sdk/diskd.js +126 -0
  250. package/dist/sdk/diskd.js.map +1 -0
  251. package/dist/sdk/http.d.ts +13 -0
  252. package/dist/sdk/http.d.ts.map +1 -0
  253. package/dist/sdk/http.js +80 -0
  254. package/dist/sdk/http.js.map +1 -0
  255. package/dist/sdk/types.d.ts +115 -0
  256. package/dist/sdk/types.d.ts.map +1 -0
  257. package/dist/sdk/types.js +2 -0
  258. package/dist/sdk/types.js.map +1 -0
  259. package/dist/testing/auth.d.ts +8 -0
  260. package/dist/testing/auth.d.ts.map +1 -0
  261. package/dist/testing/auth.js +14 -0
  262. package/dist/testing/auth.js.map +1 -0
  263. package/dist/testing/fetchMock.d.ts +17 -0
  264. package/dist/testing/fetchMock.d.ts.map +1 -0
  265. package/dist/testing/fetchMock.js +46 -0
  266. package/dist/testing/fetchMock.js.map +1 -0
  267. package/dist/testing/index.d.ts +11 -0
  268. package/dist/testing/index.d.ts.map +1 -0
  269. package/dist/testing/index.js +11 -0
  270. package/dist/testing/index.js.map +1 -0
  271. package/dist/testing/integration.d.ts +33 -0
  272. package/dist/testing/integration.d.ts.map +1 -0
  273. package/dist/testing/integration.js +32 -0
  274. package/dist/testing/integration.js.map +1 -0
  275. package/dist/testing/jsonRpc.d.ts +9 -0
  276. package/dist/testing/jsonRpc.d.ts.map +1 -0
  277. package/dist/testing/jsonRpc.js +24 -0
  278. package/dist/testing/jsonRpc.js.map +1 -0
  279. package/dist/testing/rpcMock.d.ts +16 -0
  280. package/dist/testing/rpcMock.d.ts.map +1 -0
  281. package/dist/testing/rpcMock.js +28 -0
  282. package/dist/testing/rpcMock.js.map +1 -0
  283. package/dist/tgUserbot/tgUserbot.d.ts +23 -0
  284. package/dist/tgUserbot/tgUserbot.d.ts.map +1 -0
  285. package/dist/tgUserbot/tgUserbot.js +314 -0
  286. package/dist/tgUserbot/tgUserbot.js.map +1 -0
  287. package/dist/tgUserbot/tgUserbotTypes.d.ts +124 -0
  288. package/dist/tgUserbot/tgUserbotTypes.d.ts.map +1 -0
  289. package/dist/tgUserbot/tgUserbotTypes.js +5 -0
  290. package/dist/tgUserbot/tgUserbotTypes.js.map +1 -0
  291. package/dist/webNavigator/webNavigator.d.ts +22 -0
  292. package/dist/webNavigator/webNavigator.d.ts.map +1 -0
  293. package/dist/webNavigator/webNavigator.js +46 -0
  294. package/dist/webNavigator/webNavigator.js.map +1 -0
  295. package/dist/webNavigator/webNavigatorTypes.d.ts +133 -0
  296. package/dist/webNavigator/webNavigatorTypes.d.ts.map +1 -0
  297. package/dist/webNavigator/webNavigatorTypes.js +5 -0
  298. package/dist/webNavigator/webNavigatorTypes.js.map +1 -0
  299. package/package.json +90 -0
@@ -0,0 +1,128 @@
1
+ import { extractWorkspaceId } from './jwtClaims.js';
2
+ import { readKeyfileFromPath } from './keyfile.js';
3
+ import { fetchOidcDiscovery } from './oidcDiscovery.js';
4
+ import { createPkceChallenge, createPkceState, createPkceVerifier } from './pkce.js';
5
+ import { getSessionStorage } from './sessionStorage.js';
6
+ import { requestAuthorizationCodeToken, requestClientCredentialsToken } from './tokenRequests.js';
7
+ import { getLocation, replaceUrlWithoutSearchParams } from './urlRuntime.js';
8
+ const hasKeyfilePath = (params) => 'keyfilePath' in params;
9
+ const storageKeys = {
10
+ verifier: 'diskd_pkce_verifier',
11
+ state: 'diskd_pkce_state',
12
+ };
13
+ export const createAuth = async (params) => {
14
+ let token = null;
15
+ let discovery = null;
16
+ const ensureDiscovery = async (issuer) => {
17
+ if (discovery)
18
+ return discovery;
19
+ const loaded = await fetchOidcDiscovery(issuer);
20
+ discovery = {
21
+ authorization_endpoint: loaded.authorization_endpoint,
22
+ token_endpoint: loaded.token_endpoint,
23
+ };
24
+ return discovery;
25
+ };
26
+ const signOut = () => {
27
+ token = null;
28
+ };
29
+ if (hasKeyfilePath(params)) {
30
+ const keyfile = await readKeyfileFromPath(params.keyfilePath);
31
+ // Set APIS_BASE_URL from credentials if not already set
32
+ if (keyfile.apisUrl && !process.env.APIS_BASE_URL) {
33
+ process.env.APIS_BASE_URL = keyfile.apisUrl;
34
+ }
35
+ const getAccessToken = async () => {
36
+ if (token)
37
+ return token.accessToken;
38
+ const disc = await ensureDiscovery(keyfile.issuer);
39
+ const accessToken = await requestClientCredentialsToken({
40
+ tokenEndpoint: disc.token_endpoint,
41
+ clientId: keyfile.clientId,
42
+ clientSecret: keyfile.clientSecret,
43
+ audience: keyfile.audience,
44
+ scopes: params.scopes,
45
+ });
46
+ token = { accessToken };
47
+ return accessToken;
48
+ };
49
+ return {
50
+ signIn: async () => {
51
+ await getAccessToken();
52
+ },
53
+ signOut,
54
+ handleRedirectCallback: async () => { },
55
+ getAccessToken,
56
+ getToken: () => token,
57
+ getWorkspaceId: async () => extractWorkspaceId(await getAccessToken()),
58
+ };
59
+ }
60
+ const pkce = params;
61
+ const signIn = async () => {
62
+ const disc = await ensureDiscovery(pkce.issuer);
63
+ const verifier = createPkceVerifier();
64
+ const challenge = await createPkceChallenge(verifier);
65
+ const state = createPkceState();
66
+ const storage = getSessionStorage();
67
+ storage.setItem(storageKeys.verifier, verifier);
68
+ storage.setItem(storageKeys.state, state);
69
+ const qs = new URLSearchParams({
70
+ client_id: pkce.clientId,
71
+ response_type: 'code',
72
+ scope: pkce.scopes.join(' '),
73
+ audience: pkce.audience,
74
+ redirect_uri: pkce.redirectUri,
75
+ code_challenge: challenge,
76
+ code_challenge_method: 'S256',
77
+ state,
78
+ });
79
+ const locationObj = getLocation();
80
+ locationObj.href = `${disc.authorization_endpoint}?${qs.toString()}`;
81
+ };
82
+ const handleRedirectCallback = async () => {
83
+ const locationObj = getLocation();
84
+ const current = new URL(locationObj.href);
85
+ const code = current.searchParams.get('code');
86
+ const state = current.searchParams.get('state');
87
+ const error = current.searchParams.get('error');
88
+ if (error) {
89
+ replaceUrlWithoutSearchParams();
90
+ throw new Error(error);
91
+ }
92
+ if (!code || !state)
93
+ return;
94
+ const disc = await ensureDiscovery(pkce.issuer);
95
+ const storage = getSessionStorage();
96
+ const expectedState = storage.getItem(storageKeys.state) ?? '';
97
+ const verifier = storage.getItem(storageKeys.verifier) ?? '';
98
+ if (!verifier || !expectedState || state !== expectedState) {
99
+ throw new Error('Invalid PKCE state');
100
+ }
101
+ storage.removeItem(storageKeys.state);
102
+ storage.removeItem(storageKeys.verifier);
103
+ const accessToken = await requestAuthorizationCodeToken({
104
+ tokenEndpoint: disc.token_endpoint,
105
+ clientId: pkce.clientId,
106
+ redirectUri: pkce.redirectUri,
107
+ code,
108
+ verifier,
109
+ });
110
+ token = { accessToken };
111
+ replaceUrlWithoutSearchParams();
112
+ };
113
+ const getAccessToken = async () => {
114
+ if (!token) {
115
+ throw new Error('No access token available. Call signIn() and handleRedirectCallback() first.');
116
+ }
117
+ return token.accessToken;
118
+ };
119
+ return {
120
+ signIn,
121
+ signOut,
122
+ handleRedirectCallback,
123
+ getAccessToken,
124
+ getToken: () => token,
125
+ getWorkspaceId: async () => extractWorkspaceId(await getAccessToken()),
126
+ };
127
+ };
128
+ //# sourceMappingURL=createAuth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAuth.js","sourceRoot":"","sources":["../../src/auth/createAuth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { AuthModule, SdkCreateParams } from './types.js';
2
+ export declare const createAuth: (params: SdkCreateParams) => Promise<AuthModule>;
3
+ //# sourceMappingURL=createAuthBrowser.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAuthBrowser.d.ts","sourceRoot":"","sources":["../../src/auth/createAuthBrowser.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,UAAU,EAAa,eAAe,EAAE,MAAM,YAAY,CAAC;AAYzE,eAAO,MAAM,UAAU,GAAU,QAAQ,eAAe,KAAG,OAAO,CAAC,UAAU,CA8G5E,CAAC"}
@@ -0,0 +1,104 @@
1
+ import { fetchOidcDiscovery } from './oidcDiscovery.js';
2
+ import { createPkceChallenge, createPkceState, createPkceVerifier } from './pkce.js';
3
+ import { getSessionStorage } from './sessionStorage.js';
4
+ import { requestAuthorizationCodeToken } from './tokenRequests.js';
5
+ import { getLocation, replaceUrlWithoutSearchParams } from './urlRuntime.js';
6
+ const hasKeyfilePath = (params) => 'keyfilePath' in params;
7
+ const storageKeys = {
8
+ verifier: 'diskd_pkce_verifier',
9
+ state: 'diskd_pkce_state',
10
+ };
11
+ export const createAuth = async (params) => {
12
+ if (hasKeyfilePath(params)) {
13
+ throw new Error('keyfilePath auth is not supported in browser builds');
14
+ }
15
+ const pkce = params;
16
+ let token = null;
17
+ let discovery = null;
18
+ const ensureDiscovery = async () => {
19
+ if (discovery)
20
+ return discovery;
21
+ const loaded = await fetchOidcDiscovery(pkce.issuer);
22
+ discovery = {
23
+ authorization_endpoint: loaded.authorization_endpoint,
24
+ token_endpoint: loaded.token_endpoint,
25
+ };
26
+ return discovery;
27
+ };
28
+ const signIn = async () => {
29
+ const disc = await ensureDiscovery();
30
+ const verifier = createPkceVerifier();
31
+ const challenge = await createPkceChallenge(verifier);
32
+ const state = createPkceState();
33
+ const storage = getSessionStorage();
34
+ storage.setItem(storageKeys.verifier, verifier);
35
+ storage.setItem(storageKeys.state, state);
36
+ const qs = new URLSearchParams({
37
+ client_id: pkce.clientId,
38
+ response_type: 'code',
39
+ scope: pkce.scopes.join(' '),
40
+ audience: pkce.audience,
41
+ redirect_uri: pkce.redirectUri,
42
+ code_challenge: challenge,
43
+ code_challenge_method: 'S256',
44
+ state,
45
+ });
46
+ const locationObj = getLocation();
47
+ locationObj.href = `${disc.authorization_endpoint}?${qs.toString()}`;
48
+ };
49
+ const handleRedirectCallback = async () => {
50
+ const locationObj = getLocation();
51
+ const current = new URL(locationObj.href);
52
+ const code = current.searchParams.get('code');
53
+ const state = current.searchParams.get('state');
54
+ const error = current.searchParams.get('error');
55
+ if (error) {
56
+ replaceUrlWithoutSearchParams();
57
+ throw new Error(error);
58
+ }
59
+ if (!code || !state)
60
+ return;
61
+ const disc = await ensureDiscovery();
62
+ const storage = getSessionStorage();
63
+ const expectedState = storage.getItem(storageKeys.state) ?? '';
64
+ const verifier = storage.getItem(storageKeys.verifier) ?? '';
65
+ if (!verifier || !expectedState || state !== expectedState) {
66
+ throw new Error('Invalid PKCE state');
67
+ }
68
+ storage.removeItem(storageKeys.state);
69
+ storage.removeItem(storageKeys.verifier);
70
+ const accessToken = await requestAuthorizationCodeToken({
71
+ tokenEndpoint: disc.token_endpoint,
72
+ clientId: pkce.clientId,
73
+ redirectUri: pkce.redirectUri,
74
+ code,
75
+ verifier,
76
+ });
77
+ token = { accessToken };
78
+ replaceUrlWithoutSearchParams();
79
+ };
80
+ const getAccessToken = async () => {
81
+ if (!token) {
82
+ throw new Error('No access token available. Call signIn() and handleRedirectCallback() first.');
83
+ }
84
+ return token.accessToken;
85
+ };
86
+ return {
87
+ signIn,
88
+ signOut: () => {
89
+ token = null;
90
+ },
91
+ handleRedirectCallback,
92
+ getAccessToken,
93
+ getToken: () => token,
94
+ getWorkspaceId: async () => {
95
+ const t = await getAccessToken();
96
+ const parts = t.split('.');
97
+ if (parts.length !== 3)
98
+ throw new Error('Invalid JWT');
99
+ const payload = JSON.parse(atob(parts[1].replace(/-/g, '+').replace(/_/g, '/')));
100
+ return payload?.ext?.workspace_id ?? payload?.workspace_id ?? payload?.sub ?? '';
101
+ },
102
+ };
103
+ };
104
+ //# sourceMappingURL=createAuthBrowser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAuthBrowser.js","sourceRoot":"","sources":["../../src/auth/createAuthBrowser.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,6BAA6B,EAAE,MAAM,oBAAoB,CAAC;AAEnE,OAAO,EAAE,WAAW,EAAE,6BAA6B,EAAE,MAAM,iBAAiB,CAAC;AAE7E,MAAM,cAAc,GAAG,CACrB,MAAuB,EACsC,EAAE,CAAC,aAAa,IAAI,MAAM,CAAC;AAE1F,MAAM,WAAW,GAAG;IAClB,QAAQ,EAAE,qBAAqB;IAC/B,KAAK,EAAE,kBAAkB;CACjB,CAAC;AAEX,MAAM,CAAC,MAAM,UAAU,GAAG,KAAK,EAAE,MAAuB,EAAuB,EAAE;IAC/E,IAAI,cAAc,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IACzE,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,CAAC;IAEpB,IAAI,KAAK,GAAqB,IAAI,CAAC;IACnC,IAAI,SAAS,GAGF,IAAI,CAAC;IAEhB,MAAM,eAAe,GAAG,KAAK,IAAI,EAAE;QACjC,IAAI,SAAS;YAAE,OAAO,SAAS,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrD,SAAS,GAAG;YACV,sBAAsB,EAAE,MAAM,CAAC,sBAAsB;YACrD,cAAc,EAAE,MAAM,CAAC,cAAc;SACtC,CAAC;QACF,OAAO,SAAS,CAAC;IACnB,CAAC,CAAC;IAEF,MAAM,MAAM,GAAG,KAAK,IAAmB,EAAE;QACvC,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,kBAAkB,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QACtD,MAAM,KAAK,GAAG,eAAe,EAAE,CAAC;QAEhC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QAChD,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;QAE1C,MAAM,EAAE,GAAG,IAAI,eAAe,CAAC;YAC7B,SAAS,EAAE,IAAI,CAAC,QAAQ;YACxB,aAAa,EAAE,MAAM;YACrB,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;YAC5B,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,YAAY,EAAE,IAAI,CAAC,WAAW;YAC9B,cAAc,EAAE,SAAS;YACzB,qBAAqB,EAAE,MAAM;YAC7B,KAAK;SACN,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,WAAW,EAAE,CAAC;QAClC,WAAW,CAAC,IAAI,GAAG,GAAG,IAAI,CAAC,sBAAsB,IAAI,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC;IACvE,CAAC,CAAC;IAEF,MAAM,sBAAsB,GAAG,KAAK,IAAmB,EAAE;QACvD,MAAM,WAAW,GAAG,WAAW,EAAE,CAAC;QAClC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QAC9C,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEhD,IAAI,KAAK,EAAE,CAAC;YACV,6BAA6B,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;QAED,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QAE5B,MAAM,IAAI,GAAG,MAAM,eAAe,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,iBAAiB,EAAE,CAAC;QACpC,MAAM,aAAa,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAE7D,IAAI,CAAC,QAAQ,IAAI,CAAC,aAAa,IAAI,KAAK,KAAK,aAAa,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;QAEzC,MAAM,WAAW,GAAG,MAAM,6BAA6B,CAAC;YACtD,aAAa,EAAE,IAAI,CAAC,cAAc;YAClC,QAAQ,EAAE,IAAI,CAAC,QAAQ;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,IAAI;YACJ,QAAQ;SACT,CAAC,CAAC;QACH,KAAK,GAAG,EAAE,WAAW,EAAE,CAAC;QACxB,6BAA6B,EAAE,CAAC;IAClC,CAAC,CAAC;IAEF,MAAM,cAAc,GAAG,KAAK,IAAqB,EAAE;QACjD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QACD,OAAO,KAAK,CAAC,WAAW,CAAC;IAC3B,CAAC,CAAC;IAEF,OAAO;QACL,MAAM;QACN,OAAO,EAAE,GAAG,EAAE;YACZ,KAAK,GAAG,IAAI,CAAC;QACf,CAAC;QACD,sBAAsB;QACtB,cAAc;QACd,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;QACrB,cAAc,EAAE,KAAK,IAAI,EAAE;YACzB,MAAM,CAAC,GAAG,MAAM,cAAc,EAAE,CAAC;YACjC,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;YACvD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC;YACjF,OAAO,OAAO,EAAE,GAAG,EAAE,YAAY,IAAI,OAAO,EAAE,YAAY,IAAI,OAAO,EAAE,GAAG,IAAI,EAAE,CAAC;QACnF,CAAC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ /** Decode JWT payload without signature verification (claims extraction only). */
2
+ export declare const extractWorkspaceId: (accessToken: string) => string;
3
+ //# sourceMappingURL=jwtClaims.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwtClaims.d.ts","sourceRoot":"","sources":["../../src/auth/jwtClaims.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,eAAO,MAAM,kBAAkB,GAAI,aAAa,MAAM,KAAG,MAwBxD,CAAC"}
@@ -0,0 +1,23 @@
1
+ /** Decode JWT payload without signature verification (claims extraction only). */
2
+ export const extractWorkspaceId = (accessToken) => {
3
+ const parts = accessToken.split('.');
4
+ if (parts.length !== 3) {
5
+ throw new Error('Invalid JWT: expected 3 parts');
6
+ }
7
+ const payload = parts[1];
8
+ const padded = payload + '='.repeat((4 - (payload.length % 4)) % 4);
9
+ const decoded = Buffer.from(padded, 'base64url').toString('utf-8');
10
+ const claims = JSON.parse(decoded);
11
+ // ext.workspace_id (Hydra token hook) > workspace_id (top-level) > sub (client_id = workspace_id)
12
+ const ext = typeof claims.ext === 'object' && claims.ext !== null
13
+ ? claims.ext
14
+ : {};
15
+ const workspaceId = (typeof ext.workspace_id === 'string' && ext.workspace_id) ||
16
+ (typeof claims.workspace_id === 'string' && claims.workspace_id) ||
17
+ (typeof claims.sub === 'string' && claims.sub);
18
+ if (!workspaceId) {
19
+ throw new Error('JWT has no workspace_id claim');
20
+ }
21
+ return workspaceId;
22
+ };
23
+ //# sourceMappingURL=jwtClaims.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jwtClaims.js","sourceRoot":"","sources":["../../src/auth/jwtClaims.ts"],"names":[],"mappings":"AAAA,kFAAkF;AAClF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,WAAmB,EAAU,EAAE;IAChE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACzB,MAAM,MAAM,GAAG,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACpE,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACnE,MAAM,MAAM,GAA4B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAE5D,kGAAkG;IAClG,MAAM,GAAG,GACP,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,KAAK,IAAI;QACnD,CAAC,CAAE,MAAM,CAAC,GAA+B;QACzC,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,WAAW,GACf,CAAC,OAAO,GAAG,CAAC,YAAY,KAAK,QAAQ,IAAI,GAAG,CAAC,YAAY,CAAC;QAC1D,CAAC,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,YAAY,CAAC;QAChE,CAAC,OAAO,MAAM,CAAC,GAAG,KAAK,QAAQ,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC;IAEjD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC"}
@@ -0,0 +1,10 @@
1
+ type KeyfileJson = {
2
+ readonly issuer: string;
3
+ readonly clientId: string;
4
+ readonly clientSecret: string;
5
+ readonly audience: string;
6
+ readonly apisUrl?: string;
7
+ };
8
+ export declare const readKeyfileFromPath: (keyfilePath: string) => Promise<KeyfileJson>;
9
+ export {};
10
+ //# sourceMappingURL=keyfile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyfile.d.ts","sourceRoot":"","sources":["../../src/auth/keyfile.ts"],"names":[],"mappings":"AAAA,KAAK,WAAW,GAAG;IACjB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;CAC3B,CAAC;AAqBF,eAAO,MAAM,mBAAmB,GAAU,aAAa,MAAM,KAAG,OAAO,CAAC,WAAW,CAclF,CAAC"}
@@ -0,0 +1,28 @@
1
+ const isObject = (value) => typeof value === 'object' && value !== null;
2
+ const readRequiredString = (obj, key) => {
3
+ const value = obj[key];
4
+ if (typeof value !== 'string' || value.length === 0) {
5
+ throw new Error(`Invalid credentials.json: '${key}' must be a non-empty string`);
6
+ }
7
+ return value;
8
+ };
9
+ const readOptionalString = (obj, key) => {
10
+ const value = obj[key];
11
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
12
+ };
13
+ export const readKeyfileFromPath = async (keyfilePath) => {
14
+ const fs = await import('node:fs/promises');
15
+ const rawText = await fs.readFile(keyfilePath, 'utf-8');
16
+ const data = JSON.parse(rawText);
17
+ if (!isObject(data)) {
18
+ throw new Error('Invalid credentials.json: expected object');
19
+ }
20
+ return {
21
+ issuer: readRequiredString(data, 'issuer'),
22
+ clientId: readRequiredString(data, 'clientId'),
23
+ clientSecret: readRequiredString(data, 'clientSecret'),
24
+ audience: readRequiredString(data, 'audience'),
25
+ apisUrl: readOptionalString(data, 'apisUrl'),
26
+ };
27
+ };
28
+ //# sourceMappingURL=keyfile.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"keyfile.js","sourceRoot":"","sources":["../../src/auth/keyfile.ts"],"names":[],"mappings":"AAQA,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAgD,EAAE,CAChF,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAE9C,MAAM,kBAAkB,GAAG,CAAC,GAAwC,EAAE,GAAW,EAAU,EAAE;IAC3F,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,8BAA8B,GAAG,8BAA8B,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CACzB,GAAwC,EACxC,GAAW,EACS,EAAE;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,WAAmB,EAAwB,EAAE;IACrF,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC;IACxD,MAAM,IAAI,GAAY,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO;QACL,MAAM,EAAE,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC1C,QAAQ,EAAE,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC;QAC9C,YAAY,EAAE,kBAAkB,CAAC,IAAI,EAAE,cAAc,CAAC;QACtD,QAAQ,EAAE,kBAAkB,CAAC,IAAI,EAAE,UAAU,CAAC;QAC9C,OAAO,EAAE,kBAAkB,CAAC,IAAI,EAAE,SAAS,CAAC;KAC7C,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,9 @@
1
+ type OidcDiscoveryDocument = {
2
+ readonly issuer: string;
3
+ readonly authorization_endpoint: string;
4
+ readonly token_endpoint: string;
5
+ readonly userinfo_endpoint?: string;
6
+ };
7
+ export declare const fetchOidcDiscovery: (issuer: string) => Promise<OidcDiscoveryDocument>;
8
+ export {};
9
+ //# sourceMappingURL=oidcDiscovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oidcDiscovery.d.ts","sourceRoot":"","sources":["../../src/auth/oidcDiscovery.ts"],"names":[],"mappings":"AAAA,KAAK,qBAAqB,GAAG;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,sBAAsB,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,MAAM,CAAC;CACrC,CAAC;AAqBF,eAAO,MAAM,kBAAkB,GAAU,QAAQ,MAAM,KAAG,OAAO,CAAC,qBAAqB,CAatF,CAAC"}
@@ -0,0 +1,27 @@
1
+ const isObject = (value) => typeof value === 'object' && value !== null;
2
+ const readRequiredString = (obj, key) => {
3
+ const value = obj[key];
4
+ if (typeof value !== 'string' || value.length === 0) {
5
+ throw new Error(`Invalid discovery document: '${key}' must be a non-empty string`);
6
+ }
7
+ return value;
8
+ };
9
+ const readOptionalString = (obj, key) => {
10
+ const value = obj[key];
11
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
12
+ };
13
+ export const fetchOidcDiscovery = async (issuer) => {
14
+ const url = `${issuer.replace(/\/+$/, '')}/.well-known/openid-configuration`;
15
+ const response = await fetch(url);
16
+ const data = await response.json();
17
+ if (!isObject(data)) {
18
+ throw new Error('Invalid discovery document: expected object');
19
+ }
20
+ return {
21
+ issuer: readRequiredString(data, 'issuer'),
22
+ authorization_endpoint: readRequiredString(data, 'authorization_endpoint'),
23
+ token_endpoint: readRequiredString(data, 'token_endpoint'),
24
+ userinfo_endpoint: readOptionalString(data, 'userinfo_endpoint'),
25
+ };
26
+ };
27
+ //# sourceMappingURL=oidcDiscovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"oidcDiscovery.js","sourceRoot":"","sources":["../../src/auth/oidcDiscovery.ts"],"names":[],"mappings":"AAOA,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAgD,EAAE,CAChF,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAE9C,MAAM,kBAAkB,GAAG,CAAC,GAAwC,EAAE,GAAW,EAAU,EAAE;IAC3F,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,8BAA8B,CAAC,CAAC;IACrF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CACzB,GAAwC,EACxC,GAAW,EACS,EAAE;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EAAE,MAAc,EAAkC,EAAE;IACzF,MAAM,GAAG,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,mCAAmC,CAAC;IAC7E,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,CAAC;IAClC,MAAM,IAAI,GAAY,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,OAAO;QACL,MAAM,EAAE,kBAAkB,CAAC,IAAI,EAAE,QAAQ,CAAC;QAC1C,sBAAsB,EAAE,kBAAkB,CAAC,IAAI,EAAE,wBAAwB,CAAC;QAC1E,cAAc,EAAE,kBAAkB,CAAC,IAAI,EAAE,gBAAgB,CAAC;QAC1D,iBAAiB,EAAE,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,CAAC;KACjE,CAAC;AACJ,CAAC,CAAC"}
@@ -0,0 +1,4 @@
1
+ export declare const createPkceVerifier: () => string;
2
+ export declare const createPkceState: () => string;
3
+ export declare const createPkceChallenge: (verifier: string) => Promise<string>;
4
+ //# sourceMappingURL=pkce.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pkce.d.ts","sourceRoot":"","sources":["../../src/auth/pkce.ts"],"names":[],"mappings":"AAsCA,eAAO,MAAM,kBAAkB,QAAO,MAKrC,CAAC;AAEF,eAAO,MAAM,eAAe,QAAO,MAKlC,CAAC;AAEF,eAAO,MAAM,mBAAmB,GAAU,UAAU,MAAM,KAAG,OAAO,CAAC,MAAM,CAI1E,CAAC"}
@@ -0,0 +1,43 @@
1
+ const getCrypto = () => {
2
+ const cryptoObj = globalThis.crypto;
3
+ if (!cryptoObj || typeof cryptoObj !== 'object') {
4
+ throw new Error('Web Crypto is unavailable');
5
+ }
6
+ const cryptoLike = cryptoObj;
7
+ if (typeof cryptoLike.getRandomValues !== 'function' || !cryptoLike.subtle) {
8
+ throw new Error('Web Crypto is unavailable');
9
+ }
10
+ return cryptoLike;
11
+ };
12
+ const toBase64Url = (bytes) => {
13
+ const base64 = (() => {
14
+ if (typeof Buffer !== 'undefined') {
15
+ return Buffer.from(bytes).toString('base64');
16
+ }
17
+ const btoaFn = globalThis.btoa;
18
+ if (!btoaFn) {
19
+ throw new Error('btoa is unavailable');
20
+ }
21
+ return btoaFn(String.fromCharCode(...bytes));
22
+ })();
23
+ return base64.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/g, '');
24
+ };
25
+ const utf8Encode = (value) => new TextEncoder().encode(value);
26
+ export const createPkceVerifier = () => {
27
+ const cryptoLike = getCrypto();
28
+ const bytes = new Uint8Array(32);
29
+ cryptoLike.getRandomValues(bytes);
30
+ return toBase64Url(bytes);
31
+ };
32
+ export const createPkceState = () => {
33
+ const cryptoLike = getCrypto();
34
+ const bytes = new Uint8Array(16);
35
+ cryptoLike.getRandomValues(bytes);
36
+ return toBase64Url(bytes);
37
+ };
38
+ export const createPkceChallenge = async (verifier) => {
39
+ const cryptoLike = getCrypto();
40
+ const digest = await cryptoLike.subtle.digest('SHA-256', utf8Encode(verifier));
41
+ return toBase64Url(new Uint8Array(digest));
42
+ };
43
+ //# sourceMappingURL=pkce.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pkce.js","sourceRoot":"","sources":["../../src/auth/pkce.ts"],"names":[],"mappings":"AAUA,MAAM,SAAS,GAAG,GAAkB,EAAE;IACpC,MAAM,SAAS,GAAI,UAAmC,CAAC,MAAM,CAAC;IAC9D,IAAI,CAAC,SAAS,IAAI,OAAO,SAAS,KAAK,QAAQ,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,UAAU,GAAG,SAAmC,CAAC;IACvD,IAAI,OAAO,UAAU,CAAC,eAAe,KAAK,UAAU,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,OAAO,UAA2B,CAAC;AACrC,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,KAAiB,EAAU,EAAE;IAChD,MAAM,MAAM,GAAG,CAAC,GAAG,EAAE;QACnB,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAC/C,CAAC;QACD,MAAM,MAAM,GAAI,UAAkD,CAAC,IAAI,CAAC;QACxE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;QACzC,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAC5E,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,KAAa,EAAc,EAAE,CAAC,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAElF,MAAM,CAAC,MAAM,kBAAkB,GAAG,GAAW,EAAE;IAC7C,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,GAAW,EAAE;IAC1C,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,EAAE,CAAC,CAAC;IACjC,UAAU,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO,WAAW,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,KAAK,EAAE,QAAgB,EAAmB,EAAE;IAC7E,MAAM,UAAU,GAAG,SAAS,EAAE,CAAC;IAC/B,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC/E,OAAO,WAAW,CAAC,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC"}
@@ -0,0 +1,8 @@
1
+ type SessionStorageLike = {
2
+ readonly getItem: (key: string) => string | null;
3
+ readonly setItem: (key: string, value: string) => void;
4
+ readonly removeItem: (key: string) => void;
5
+ };
6
+ export declare const getSessionStorage: () => SessionStorageLike;
7
+ export {};
8
+ //# sourceMappingURL=sessionStorage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStorage.d.ts","sourceRoot":"","sources":["../../src/auth/sessionStorage.ts"],"names":[],"mappings":"AAAA,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,CAAC;IACjD,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IACvD,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;CAC5C,CAAC;AAEF,eAAO,MAAM,iBAAiB,QAAO,kBAMpC,CAAC"}
@@ -0,0 +1,8 @@
1
+ export const getSessionStorage = () => {
2
+ const storage = globalThis.sessionStorage;
3
+ if (!storage) {
4
+ throw new Error('sessionStorage is unavailable');
5
+ }
6
+ return storage;
7
+ };
8
+ //# sourceMappingURL=sessionStorage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sessionStorage.js","sourceRoot":"","sources":["../../src/auth/sessionStorage.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,iBAAiB,GAAG,GAAuB,EAAE;IACxD,MAAM,OAAO,GAAI,UAAsD,CAAC,cAAc,CAAC;IACvF,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC;IACnD,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC"}
@@ -0,0 +1,15 @@
1
+ export declare const requestClientCredentialsToken: (params: {
2
+ readonly tokenEndpoint: string;
3
+ readonly clientId: string;
4
+ readonly clientSecret: string;
5
+ readonly audience: string;
6
+ readonly scopes: readonly string[];
7
+ }) => Promise<string>;
8
+ export declare const requestAuthorizationCodeToken: (params: {
9
+ readonly tokenEndpoint: string;
10
+ readonly clientId: string;
11
+ readonly redirectUri: string;
12
+ readonly code: string;
13
+ readonly verifier: string;
14
+ }) => Promise<string>;
15
+ //# sourceMappingURL=tokenRequests.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenRequests.d.ts","sourceRoot":"","sources":["../../src/auth/tokenRequests.ts"],"names":[],"mappings":"AAmDA,eAAO,MAAM,6BAA6B,GAAU,QAAQ;IAC1D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;CACpC,KAAG,OAAO,CAAC,MAAM,CAwBjB,CAAC;AAEF,eAAO,MAAM,6BAA6B,GAAU,QAAQ;IAC1D,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;CAC3B,KAAG,OAAO,CAAC,MAAM,CAqBjB,CAAC"}
@@ -0,0 +1,89 @@
1
+ const isObject = (value) => typeof value === 'object' && value !== null;
2
+ const readOptionalString = (obj, key) => {
3
+ const value = obj[key];
4
+ return typeof value === 'string' && value.length > 0 ? value : undefined;
5
+ };
6
+ const readJsonResponse = async (response) => {
7
+ const text = await response.text();
8
+ if (text.length === 0)
9
+ return null;
10
+ try {
11
+ return JSON.parse(text);
12
+ }
13
+ catch {
14
+ return text;
15
+ }
16
+ };
17
+ const describeOAuthError = (data) => {
18
+ if (!isObject(data))
19
+ return undefined;
20
+ const error = readOptionalString(data, 'error');
21
+ if (!error)
22
+ return undefined;
23
+ const description = readOptionalString(data, 'error_description');
24
+ return description ? `${error}: ${description}` : error;
25
+ };
26
+ const encodeBase64 = (raw) => {
27
+ if (typeof Buffer !== 'undefined') {
28
+ return Buffer.from(raw).toString('base64');
29
+ }
30
+ const btoaFn = globalThis.btoa;
31
+ if (!btoaFn) {
32
+ throw new Error('btoa is unavailable');
33
+ }
34
+ return btoaFn(raw);
35
+ };
36
+ const readAccessToken = (raw) => {
37
+ if (!isObject(raw)) {
38
+ throw new Error('Invalid token response: expected object');
39
+ }
40
+ const token = readOptionalString(raw, 'access_token');
41
+ if (!token) {
42
+ throw new Error('Invalid token response: access_token is required');
43
+ }
44
+ return token;
45
+ };
46
+ export const requestClientCredentialsToken = async (params) => {
47
+ const body = new URLSearchParams({
48
+ grant_type: 'client_credentials',
49
+ client_id: params.clientId,
50
+ scope: params.scopes.join(' '),
51
+ audience: params.audience,
52
+ });
53
+ const basic = encodeBase64(`${params.clientId}:${params.clientSecret}`);
54
+ const response = await fetch(params.tokenEndpoint, {
55
+ method: 'POST',
56
+ headers: {
57
+ Authorization: `Basic ${basic}`,
58
+ 'Content-Type': 'application/x-www-form-urlencoded',
59
+ },
60
+ body,
61
+ });
62
+ const data = await readJsonResponse(response);
63
+ if (!response.ok) {
64
+ const detail = describeOAuthError(data);
65
+ throw new Error(`Token request failed: HTTP ${response.status}${detail ? ` (${detail})` : ''}`);
66
+ }
67
+ return readAccessToken(data);
68
+ };
69
+ export const requestAuthorizationCodeToken = async (params) => {
70
+ const body = new URLSearchParams({
71
+ grant_type: 'authorization_code',
72
+ client_id: params.clientId,
73
+ redirect_uri: params.redirectUri,
74
+ code: params.code,
75
+ code_verifier: params.verifier,
76
+ });
77
+ const response = await fetch(params.tokenEndpoint, {
78
+ method: 'POST',
79
+ headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
80
+ body,
81
+ });
82
+ const data = await readJsonResponse(response);
83
+ if (!response.ok) {
84
+ const detail = describeOAuthError(data);
85
+ throw new Error(`Token request failed: HTTP ${response.status}${detail ? ` (${detail})` : ''}`);
86
+ }
87
+ return readAccessToken(data);
88
+ };
89
+ //# sourceMappingURL=tokenRequests.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tokenRequests.js","sourceRoot":"","sources":["../../src/auth/tokenRequests.ts"],"names":[],"mappings":"AAAA,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAgD,EAAE,CAChF,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AAE9C,MAAM,kBAAkB,GAAG,CACzB,GAAwC,EACxC,GAAW,EACS,EAAE;IACtB,MAAM,KAAK,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IACvB,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3E,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,EAAE,QAAkB,EAAoB,EAAE;IACtE,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;IACrC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,IAAa,EAAsB,EAAE;IAC/D,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAC;IACtC,MAAM,KAAK,GAAG,kBAAkB,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,WAAW,GAAG,kBAAkB,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAClE,OAAO,WAAW,CAAC,CAAC,CAAC,GAAG,KAAK,KAAK,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;AAC1D,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,GAAW,EAAU,EAAE;IAC3C,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;QAClC,OAAO,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAC7C,CAAC;IACD,MAAM,MAAM,GAAI,UAAkD,CAAC,IAAI,CAAC;IACxE,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACzC,CAAC;IACD,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,GAAY,EAAU,EAAE;IAC/C,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;IAC7D,CAAC;IACD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;IACtD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACtE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAAE,MAMnD,EAAmB,EAAE;IACpB,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;QAC/B,UAAU,EAAE,oBAAoB;QAChC,SAAS,EAAE,MAAM,CAAC,QAAQ;QAC1B,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;QAC9B,QAAQ,EAAE,MAAM,CAAC,QAAQ;KAC1B,CAAC,CAAC;IAEH,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;IACxE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE;QACjD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,aAAa,EAAE,SAAS,KAAK,EAAE;YAC/B,cAAc,EAAE,mCAAmC;SACpD;QACD,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,IAAI,GAAY,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,KAAK,EAAE,MAMnD,EAAmB,EAAE;IACpB,MAAM,IAAI,GAAG,IAAI,eAAe,CAAC;QAC/B,UAAU,EAAE,oBAAoB;QAChC,SAAS,EAAE,MAAM,CAAC,QAAQ;QAC1B,YAAY,EAAE,MAAM,CAAC,WAAW;QAChC,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,aAAa,EAAE,MAAM,CAAC,QAAQ;KAC/B,CAAC,CAAC;IAEH,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,aAAa,EAAE;QACjD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,cAAc,EAAE,mCAAmC,EAAE;QAChE,IAAI;KACL,CAAC,CAAC;IAEH,MAAM,IAAI,GAAY,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACvD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,8BAA8B,QAAQ,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAClG,CAAC;IACD,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAC/B,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ export type SdkCreateParams = {
2
+ readonly issuer: string;
3
+ readonly clientId: string;
4
+ readonly redirectUri: string;
5
+ readonly scopes: readonly string[];
6
+ readonly audience: string;
7
+ } | {
8
+ readonly scopes: readonly string[];
9
+ readonly keyfilePath: string;
10
+ };
11
+ export type ApiKeyAuthParams = {
12
+ readonly workspaceId: string;
13
+ readonly orgId?: string;
14
+ readonly userId?: string;
15
+ };
16
+ export type AuthToken = {
17
+ readonly accessToken: string;
18
+ };
19
+ export type AuthModule = {
20
+ readonly signIn: () => Promise<void>;
21
+ readonly signOut: () => void;
22
+ readonly handleRedirectCallback: () => Promise<void>;
23
+ readonly getAccessToken: () => Promise<string>;
24
+ readonly getToken: () => AuthToken | null;
25
+ /** Returns the workspace ID from the auth context.
26
+ * OAuth: decoded from the JWT `ext.workspace_id` or `sub` claim.
27
+ * API key: from the `workspaceId` constructor param. */
28
+ readonly getWorkspaceId: () => Promise<string>;
29
+ /** Returns all auth-related headers for RPC calls.
30
+ * OAuth: { Authorization: 'Bearer ...' }
31
+ * API key: { 'X-Api-Key': APIS_API_KEY, 'X-Workspace-Id': '...', ... }
32
+ * When absent, falls back to Bearer token from getAccessToken(). */
33
+ readonly getRequestHeaders?: () => Promise<Readonly<Record<string, string>>>;
34
+ };
35
+ //# sourceMappingURL=types.d.ts.map