@datalayer/core 1.1.60 → 1.2.10

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 (496) hide show
  1. package/README.md +41 -18
  2. package/lib/api/DatalayerApi.d.ts +42 -1
  3. package/lib/api/DatalayerApi.js +90 -3
  4. package/lib/api/constants.d.ts +19 -1
  5. package/lib/api/constants.js +19 -1
  6. package/lib/api/contents/attachments.d.ts +9 -0
  7. package/lib/api/contents/attachments.js +39 -0
  8. package/lib/api/contents/bridges.d.ts +22 -0
  9. package/lib/api/contents/bridges.js +79 -0
  10. package/lib/api/contents/capabilities.d.ts +11 -0
  11. package/lib/api/contents/capabilities.js +21 -0
  12. package/lib/api/contents/cloudStorage.d.ts +31 -0
  13. package/lib/api/contents/cloudStorage.js +89 -0
  14. package/lib/api/contents/dataservers.d.ts +37 -0
  15. package/lib/api/contents/dataservers.js +121 -0
  16. package/lib/api/contents/datasets.d.ts +63 -0
  17. package/lib/api/contents/datasets.js +82 -0
  18. package/lib/api/contents/datasources.d.ts +70 -0
  19. package/lib/api/contents/datasources.js +149 -0
  20. package/lib/api/contents/generated.d.ts +1070 -0
  21. package/lib/api/contents/index.d.ts +16 -0
  22. package/lib/api/contents/index.js +20 -0
  23. package/lib/api/contents/mcp.d.ts +46 -0
  24. package/lib/api/contents/mcp.js +157 -0
  25. package/lib/api/contents/objects.d.ts +31 -0
  26. package/lib/api/contents/objects.js +88 -0
  27. package/lib/api/contents/operations.d.ts +3 -0
  28. package/lib/api/contents/operations.js +19 -0
  29. package/lib/api/contents/runtimeMounts.d.ts +40 -0
  30. package/lib/api/contents/runtimeMounts.js +59 -0
  31. package/lib/api/contents/sandboxUid.d.ts +21 -0
  32. package/lib/api/contents/sandboxUid.js +27 -0
  33. package/lib/api/contents/sources.d.ts +19 -0
  34. package/lib/api/contents/sources.js +119 -0
  35. package/lib/api/contents/sync.d.ts +18 -0
  36. package/lib/api/contents/sync.js +69 -0
  37. package/lib/api/contents/transfers.d.ts +38 -0
  38. package/lib/api/contents/transfers.js +123 -0
  39. package/lib/api/evals/client.d.ts +402 -0
  40. package/lib/api/evals/client.js +359 -0
  41. package/lib/api/evals/index.d.ts +10 -0
  42. package/lib/api/evals/index.js +18 -0
  43. package/lib/api/evals/request.d.ts +43 -0
  44. package/lib/api/evals/request.js +67 -0
  45. package/lib/api/evals/status.d.ts +27 -0
  46. package/lib/api/evals/status.js +122 -0
  47. package/lib/api/evals/types.d.ts +1335 -0
  48. package/lib/api/evals/types.js +5 -0
  49. package/lib/api/iam/connectedAgents.d.ts +68 -0
  50. package/lib/api/iam/connectedAgents.js +87 -0
  51. package/lib/api/iam/identityProviders.d.ts +76 -0
  52. package/lib/api/iam/identityProviders.js +187 -0
  53. package/lib/api/iam/index.d.ts +3 -1
  54. package/lib/api/iam/index.js +3 -1
  55. package/lib/api/iam/mcpAlertRules.d.ts +51 -0
  56. package/lib/api/iam/mcpAlertRules.js +198 -0
  57. package/lib/api/iam/mcpAuditSettings.d.ts +46 -0
  58. package/lib/api/iam/mcpAuditSettings.js +120 -0
  59. package/lib/api/iam/mcpPolicy.d.ts +181 -0
  60. package/lib/api/iam/mcpPolicy.js +168 -0
  61. package/lib/api/iam/organizationTeams.d.ts +13 -0
  62. package/lib/api/iam/organizationTeams.js +43 -0
  63. package/lib/api/iam/profile.d.ts +17 -1
  64. package/lib/api/iam/profile.js +27 -0
  65. package/lib/api/iam/scimTokens.d.ts +79 -0
  66. package/lib/api/iam/scimTokens.js +141 -0
  67. package/lib/api/iam/secrets.js +9 -21
  68. package/lib/api/iam/serviceAgents.d.ts +68 -0
  69. package/lib/api/iam/serviceAgents.js +119 -0
  70. package/lib/api/iam/trials.d.ts +38 -0
  71. package/lib/api/iam/trials.js +66 -0
  72. package/lib/api/index.d.ts +8 -1
  73. package/lib/api/index.js +7 -1
  74. package/lib/api/mcp/activity.d.ts +37 -0
  75. package/lib/api/mcp/activity.js +26 -0
  76. package/lib/api/mcp/alerts.d.ts +25 -0
  77. package/lib/api/mcp/alerts.js +51 -0
  78. package/lib/api/mcp/audit.d.ts +29 -0
  79. package/lib/api/mcp/audit.js +55 -0
  80. package/lib/api/mcp/bindings.d.ts +18 -0
  81. package/lib/api/mcp/bindings.js +42 -0
  82. package/lib/api/mcp/forwarding.d.ts +25 -0
  83. package/lib/api/mcp/forwarding.js +46 -0
  84. package/lib/api/mcp/gateway.d.ts +16 -0
  85. package/lib/api/mcp/gateway.js +70 -0
  86. package/lib/api/mcp/generated.d.ts +22 -0
  87. package/lib/api/mcp/generated.js +213 -0
  88. package/lib/api/mcp/index.d.ts +17 -0
  89. package/lib/api/mcp/index.js +25 -0
  90. package/lib/api/mcp/observability.d.ts +141 -0
  91. package/lib/api/mcp/observability.js +267 -0
  92. package/lib/api/mcp/operations.d.ts +83 -0
  93. package/lib/api/mcp/operations.js +50 -0
  94. package/lib/api/mcp/organizations.d.ts +102 -0
  95. package/lib/api/mcp/organizations.js +46 -0
  96. package/lib/api/mcp/policy.d.ts +9 -0
  97. package/lib/api/mcp/policy.js +23 -0
  98. package/lib/api/mcp/tasks.d.ts +49 -0
  99. package/lib/api/mcp/tasks.js +147 -0
  100. package/lib/api/orchestration/client.d.ts +53 -0
  101. package/lib/api/orchestration/client.js +105 -0
  102. package/lib/api/orchestration/events.d.ts +88 -0
  103. package/lib/api/orchestration/events.js +245 -0
  104. package/lib/api/orchestration/generated.d.ts +693 -0
  105. package/lib/api/orchestration/generated.js +687 -0
  106. package/lib/api/orchestration/index.d.ts +30 -0
  107. package/lib/api/orchestration/index.js +34 -0
  108. package/lib/api/orchestration/lifecycle.d.ts +39 -0
  109. package/lib/api/orchestration/lifecycle.js +57 -0
  110. package/lib/api/orchestration/measures.d.ts +55 -0
  111. package/lib/api/orchestration/measures.js +99 -0
  112. package/lib/api/otel/dashboards.d.ts +56 -0
  113. package/lib/api/otel/dashboards.js +50 -0
  114. package/lib/api/otel/index.d.ts +1 -0
  115. package/lib/api/otel/index.js +1 -0
  116. package/lib/api/otel/metrics.d.ts +16 -0
  117. package/lib/api/otel/metrics.js +15 -0
  118. package/lib/api/scheduler/client.d.ts +32 -0
  119. package/lib/api/scheduler/client.js +42 -0
  120. package/lib/api/scheduler/index.d.ts +8 -0
  121. package/lib/api/scheduler/index.js +16 -0
  122. package/lib/api/scheduler/request.d.ts +28 -0
  123. package/lib/api/scheduler/request.js +50 -0
  124. package/lib/api/scheduler/types.d.ts +88 -0
  125. package/lib/api/scheduler/types.js +5 -0
  126. package/lib/api/spacer/comments.d.ts +97 -0
  127. package/lib/api/spacer/comments.js +45 -0
  128. package/lib/api/spacer/index.d.ts +9 -0
  129. package/lib/api/spacer/index.js +17 -0
  130. package/lib/api/spacer/notebooks.d.ts +33 -0
  131. package/lib/api/spacer/notebooks.js +39 -0
  132. package/lib/api/spacer/request.d.ts +25 -0
  133. package/lib/api/spacer/request.js +46 -0
  134. package/lib/api/spacer/spaces.d.ts +68 -0
  135. package/lib/api/spacer/spaces.js +45 -0
  136. package/lib/api/utils/validation.d.ts +4 -4
  137. package/lib/api/utils/validation.js +10 -7
  138. package/lib/client/auth/index.js +0 -5
  139. package/lib/client/auth/storage.js +0 -5
  140. package/lib/client/auth/strategies.js +0 -5
  141. package/lib/client/base.d.ts +6 -0
  142. package/lib/client/base.js +8 -0
  143. package/lib/client/constants.d.ts +1 -0
  144. package/lib/client/constants.js +1 -0
  145. package/lib/client/index.d.ts +0 -10
  146. package/lib/client/index.js +2 -2
  147. package/lib/client/mixins/ContentsMixin.d.ts +71 -0
  148. package/lib/client/mixins/ContentsMixin.js +157 -0
  149. package/lib/client/mixins/IAMMixin.d.ts +0 -31
  150. package/lib/client/mixins/IAMMixin.js +0 -58
  151. package/lib/components/animation/AnimatedText.d.ts +2 -44
  152. package/lib/components/animation/AnimatedText.js +6 -126
  153. package/lib/components/anonymous/AnonymousKeyExpired.d.ts +56 -0
  154. package/lib/components/anonymous/AnonymousKeyExpired.js +96 -0
  155. package/lib/components/anonymous/AnonymousKeyTimer.d.ts +63 -0
  156. package/lib/components/anonymous/AnonymousKeyTimer.js +140 -0
  157. package/lib/components/anonymous/index.d.ts +7 -0
  158. package/lib/components/anonymous/index.js +15 -0
  159. package/lib/components/auth/SigInAPIKey.d.ts +1 -0
  160. package/lib/components/auth/SigInAPIKey.js +0 -6
  161. package/lib/components/auth/SignIn.d.ts +1 -0
  162. package/lib/components/auth/SignIn.js +0 -4
  163. package/lib/components/auth/SignIn.stories.d.ts +2 -2
  164. package/lib/components/avatars/BoringAvatar.d.ts +1 -1
  165. package/lib/components/avatars/BoringAvatar.stories.d.ts +1 -1
  166. package/lib/components/avatars/DLAvatar.d.ts +1 -1
  167. package/lib/components/avatars/DLAvatar.js +0 -4
  168. package/lib/components/avatars/UserAvatar.d.ts +16 -1
  169. package/lib/components/avatars/UserAvatar.js +15 -13
  170. package/lib/components/avatars/UserProfileAvatar.d.ts +1 -1
  171. package/lib/components/banners/NoAutomationBanner.d.ts +1 -1
  172. package/lib/components/billing/BillingEntitySelect.d.ts +16 -0
  173. package/lib/components/billing/BillingEntitySelect.js +49 -27
  174. package/lib/components/billing/eligibility.d.ts +22 -0
  175. package/lib/components/billing/eligibility.js +27 -0
  176. package/lib/components/billing/index.d.ts +1 -0
  177. package/lib/components/billing/index.js +1 -4
  178. package/lib/components/buttons/DownloadCSVButton.d.ts +1 -1
  179. package/lib/components/buttons/DownloadJsonButton.d.ts +1 -1
  180. package/lib/components/buttons/LongActionButton.d.ts +1 -0
  181. package/lib/components/buttons/LongActionButton.js +0 -4
  182. package/lib/components/buttons/UploadButton.d.ts +1 -0
  183. package/lib/components/buttons/UploadButton.js +0 -4
  184. package/lib/components/checkout/StripeCheckout.d.ts +1 -1
  185. package/lib/components/collaboration/LiveEditorCollaborators.d.ts +36 -0
  186. package/lib/components/collaboration/LiveEditorCollaborators.js +88 -53
  187. package/lib/components/collaboration/index.js +0 -4
  188. package/lib/components/confetti/ConfettiSuccess.d.ts +1 -1
  189. package/lib/components/contents/ContentSourceCard.d.ts +8 -0
  190. package/lib/components/contents/ContentSourceCard.js +23 -0
  191. package/lib/components/contents/HomeFolderObjectsBrowser.d.ts +10 -0
  192. package/lib/components/contents/HomeFolderObjectsBrowser.js +148 -0
  193. package/lib/components/contents/index.d.ts +2 -0
  194. package/lib/components/contents/index.js +6 -0
  195. package/lib/components/context/OrganizationSelect.d.ts +1 -1
  196. package/lib/components/display/AvatarSkeleton.d.ts +1 -1
  197. package/lib/components/display/BusyDots.d.ts +1 -1
  198. package/lib/components/display/CenteredSpinner.d.ts +1 -1
  199. package/lib/components/display/CodePreview.d.ts +1 -1
  200. package/lib/components/display/DatalayerBox.d.ts +7 -3
  201. package/lib/components/display/DatalayerBox.js +7 -7
  202. package/lib/components/display/HorizontalCenter.d.ts +1 -1
  203. package/lib/components/display/JupyterDialog.d.ts +1 -0
  204. package/lib/components/display/JupyterDialog.js +1 -7
  205. package/lib/components/display/Markdown.d.ts +1 -0
  206. package/lib/components/display/NavLink.js +3 -2
  207. package/lib/components/display/NotebookSkeleton.d.ts +1 -1
  208. package/lib/components/display/Placeholder.d.ts +1 -1
  209. package/lib/components/display/ToTopBranded.d.ts +1 -1
  210. package/lib/components/echarts/EChartsReact.d.ts +1 -1
  211. package/lib/components/flashes/FlashClosable.d.ts +1 -0
  212. package/lib/components/flashes/FlashClosable.js +0 -4
  213. package/lib/components/flashes/FlashGuest.d.ts +1 -1
  214. package/lib/components/flashes/FlashSurveys.d.ts +1 -1
  215. package/lib/components/flashes/FlashUnauthorized.d.ts +1 -0
  216. package/lib/components/flashes/FlashUnauthorized.js +0 -6
  217. package/lib/components/flashes/surveys/Survey2025_1.d.ts +1 -1
  218. package/lib/components/iam/ExternalTokenSilentLogin.d.ts +1 -1
  219. package/lib/components/index.d.ts +2 -0
  220. package/lib/components/index.js +2 -0
  221. package/lib/components/labels/StatusLabels.d.ts +2 -9
  222. package/lib/components/labels/StatusLabels.js +2 -26
  223. package/lib/components/labels/VisibilityLabel.d.ts +1 -1
  224. package/lib/components/landings/StepBlock.d.ts +1 -1
  225. package/lib/components/mcp/ClientBadge.d.ts +41 -0
  226. package/lib/components/mcp/ClientBadge.js +33 -0
  227. package/lib/components/mcp/McpErrorBlankslate.d.ts +21 -0
  228. package/lib/components/mcp/McpErrorBlankslate.js +17 -0
  229. package/lib/components/mcp/ScopeList.d.ts +28 -0
  230. package/lib/components/mcp/ScopeList.js +14 -0
  231. package/lib/components/mcp/index.d.ts +10 -0
  232. package/lib/components/mcp/index.js +18 -0
  233. package/lib/components/navbar/NavigationVisbilityObserver.d.ts +2 -1
  234. package/lib/components/navbar/SubdomainNavBar.d.ts +10 -5
  235. package/lib/components/navbar/SubdomainNavBar.js +2 -1
  236. package/lib/components/notebooks/JupyterNotebook.d.ts +1 -1
  237. package/lib/components/notebooks/JupyterNotebookToolbar.d.ts +1 -1
  238. package/lib/components/principal/PrincipalAppearance.d.ts +22 -42
  239. package/lib/components/principal/PrincipalAppearance.js +232 -182
  240. package/lib/components/principal/PrincipalAvatar.d.ts +9 -1
  241. package/lib/components/principal/PrincipalAvatar.js +18 -10
  242. package/lib/components/principal/PrincipalBadge.d.ts +1 -1
  243. package/lib/components/principal/PrincipalBanner.d.ts +1 -1
  244. package/lib/components/principal/PrincipalDetailsOverlay.d.ts +38 -1
  245. package/lib/components/principal/PrincipalDetailsOverlay.js +64 -33
  246. package/lib/components/principal/PrincipalHoverCard.d.ts +31 -0
  247. package/lib/components/principal/PrincipalHoverCard.js +52 -0
  248. package/lib/components/principal/PrincipalSwitcherMenu.d.ts +1 -0
  249. package/lib/components/principal/PrincipalSwitcherMenu.js +5 -14
  250. package/lib/components/principal/index.d.ts +2 -1
  251. package/lib/components/principal/index.js +2 -1
  252. package/lib/components/progress/ConsumptionBar.d.ts +1 -0
  253. package/lib/components/progress/ConsumptionBar.js +0 -4
  254. package/lib/components/progress/ProgressRing.d.ts +1 -0
  255. package/lib/components/progress/SpinnerBar.d.ts +1 -1
  256. package/lib/components/progress/Timer.d.ts +1 -0
  257. package/lib/components/progress/Timer.js +0 -4
  258. package/lib/components/screencapture/Screencapture.js +46 -3
  259. package/lib/components/screencapture/ScreencaptureButton.d.ts +1 -1
  260. package/lib/components/sharing/ShareAccessComponent.d.ts +58 -3
  261. package/lib/components/sharing/ShareAccessComponent.js +143 -98
  262. package/lib/components/sharing/SharingEditor.d.ts +21 -0
  263. package/lib/components/sharing/SharingEditor.js +9 -28
  264. package/lib/components/sharing/index.d.ts +1 -0
  265. package/lib/components/sharing/index.js +1 -0
  266. package/lib/components/sharing/sandboxSharing.d.ts +26 -0
  267. package/lib/components/sharing/sandboxSharing.js +41 -0
  268. package/lib/components/spaces/SpaceDetailsOverlay.d.ts +39 -0
  269. package/lib/components/spaces/SpaceDetailsOverlay.js +80 -0
  270. package/lib/components/spaces/SpaceDisplay.d.ts +38 -0
  271. package/lib/components/spaces/SpaceDisplay.js +92 -0
  272. package/lib/components/spaces/index.d.ts +4 -0
  273. package/lib/components/spaces/index.js +7 -0
  274. package/lib/components/spaces/spaceDisplayModel.d.ts +93 -0
  275. package/lib/components/spaces/spaceDisplayModel.js +170 -0
  276. package/lib/components/sparklines/Sparklines.js +3 -4
  277. package/lib/components/sparklines/index.js +0 -4
  278. package/lib/components/storage/ContentsBrowser.d.ts +25 -1
  279. package/lib/components/storage/ContentsBrowser.js +145 -52
  280. package/lib/components/storage/ContentsBrowserMock.d.ts +3 -0
  281. package/lib/components/storage/ContentsBrowserMock.js +75 -0
  282. package/lib/components/storage/ContentsItems.d.ts +2 -1
  283. package/lib/components/storage/ContentsItems.js +0 -4
  284. package/lib/components/storage/ContentsTable.d.ts +50 -0
  285. package/lib/components/storage/ContentsTable.js +134 -0
  286. package/lib/components/storage/HomeFolderDrive.d.ts +71 -0
  287. package/lib/components/storage/HomeFolderDrive.js +248 -0
  288. package/lib/components/storage/index.d.ts +2 -0
  289. package/lib/components/storage/index.js +2 -0
  290. package/lib/components/students/StudentItemStatus.d.ts +1 -1
  291. package/lib/components/students/StudentResultCircle.d.ts +1 -1
  292. package/lib/components/subnav/SubNav.d.ts +5 -5
  293. package/lib/components/subnav/SubNav.js +11 -9
  294. package/lib/components/tables/DataTable.d.ts +1 -1
  295. package/lib/components/text-reveal/TextRevealAnimation.d.ts +2 -2
  296. package/lib/components/text-reveal/useTextRevealAnimationLines.d.ts +1 -1
  297. package/lib/components/time/LiveRelativeTime.d.ts +1 -0
  298. package/lib/components/time/LiveRelativeTime.js +0 -8
  299. package/lib/components/time/index.js +0 -4
  300. package/lib/components/timeline/Timeline.d.ts +1 -1
  301. package/lib/components/timeline/index.js +0 -4
  302. package/lib/components/users/PeerIndicator.d.ts +1 -0
  303. package/lib/components/users/PeerIndicator.js +0 -4
  304. package/lib/config/Configuration.d.ts +15 -17
  305. package/lib/config/Configuration.js +7 -0
  306. package/lib/hooks/cacheConverters.d.ts +0 -7
  307. package/lib/hooks/cacheConverters.js +0 -25
  308. package/lib/hooks/index.d.ts +3 -0
  309. package/lib/hooks/index.js +3 -0
  310. package/lib/hooks/layouts/LayoutBackdrop.d.ts +1 -1
  311. package/lib/hooks/layouts/LayoutScreencapture.d.ts +1 -1
  312. package/lib/hooks/useBackdrop.d.ts +1 -1
  313. package/lib/hooks/useBackdropJupyterLab.d.ts +3 -2
  314. package/lib/hooks/useBackdropJupyterLab.js +0 -4
  315. package/lib/hooks/useBillingEntityStore.js +3 -0
  316. package/lib/hooks/useCache.d.ts +478 -130
  317. package/lib/hooks/useCache.js +1580 -676
  318. package/lib/hooks/useContainsFocus.d.ts +1 -1
  319. package/lib/hooks/useContents.d.ts +334 -0
  320. package/lib/hooks/useContents.js +1033 -0
  321. package/lib/hooks/useFocusTrap.d.ts +4 -4
  322. package/lib/hooks/useFocusTrap.js +1 -1
  323. package/lib/hooks/useMcp.d.ts +315 -0
  324. package/lib/hooks/useMcp.js +891 -0
  325. package/lib/hooks/useMobile.js +0 -5
  326. package/lib/hooks/useNavigate.d.ts +41 -3
  327. package/lib/hooks/useNavigate.js +106 -52
  328. package/lib/hooks/usePrincipalCacheStore.js +3 -0
  329. package/lib/hooks/usePrincipalStore.js +3 -0
  330. package/lib/hooks/useProjectStore.d.ts +3 -3
  331. package/lib/hooks/useProjectStore.js +4 -4
  332. package/lib/hooks/useRef.d.ts +1 -1
  333. package/lib/hooks/useRef.js +3 -0
  334. package/lib/hooks/useScreencapture.d.ts +2 -1
  335. package/lib/hooks/useScreencapture.js +0 -4
  336. package/lib/hooks/useSpaceCacheStore.d.ts +50 -0
  337. package/lib/hooks/useSpaceCacheStore.js +85 -0
  338. package/lib/hooks/useToast.js +0 -4
  339. package/lib/hooks/useVisibilityObserver.d.ts +1 -1
  340. package/lib/index.d.ts +4 -1
  341. package/lib/index.js +3 -1
  342. package/lib/mocks/components/FlashMock.d.ts +1 -1
  343. package/lib/mocks/views/ActionMenuMock.d.ts +1 -1
  344. package/lib/mocks/views/ChartMock.d.ts +1 -1
  345. package/lib/mocks/views/DashboardMock.d.ts +1 -1
  346. package/lib/mocks/views/FormMock.d.ts +1 -1
  347. package/lib/mocks/views/TableMock.d.ts +1 -1
  348. package/lib/mocks/views/WipMock.d.ts +1 -1
  349. package/lib/models/Credits.d.ts +16 -0
  350. package/lib/models/Credits.js +22 -0
  351. package/lib/models/CreditsDTO.d.ts +6 -5
  352. package/lib/models/CreditsDTO.js +7 -5
  353. package/lib/models/McpAuditEvent.d.ts +52 -0
  354. package/lib/models/McpAuditEvent.js +5 -0
  355. package/lib/models/McpBinding.d.ts +57 -0
  356. package/lib/models/McpBinding.js +5 -0
  357. package/lib/models/McpPolicy.d.ts +77 -0
  358. package/lib/models/McpPolicy.js +5 -0
  359. package/lib/models/McpTask.d.ts +94 -0
  360. package/lib/models/McpTask.js +7 -0
  361. package/lib/models/Organization.d.ts +69 -0
  362. package/lib/models/Organization.js +96 -0
  363. package/lib/models/Secret.d.ts +1 -2
  364. package/lib/models/Secret.js +2 -18
  365. package/lib/models/StartedBy.d.ts +91 -0
  366. package/lib/models/StartedBy.js +117 -0
  367. package/lib/models/Team.d.ts +2 -0
  368. package/lib/models/Team.js +2 -0
  369. package/lib/models/User.d.ts +4 -0
  370. package/lib/models/User.js +3 -0
  371. package/lib/models/UserDTO.js +4 -2
  372. package/lib/models/UserSettings.d.ts +13 -0
  373. package/lib/models/UserSettings.js +9 -0
  374. package/lib/models/contents/__fixtures__/solr-codec.json +57 -0
  375. package/lib/models/contents/__fixtures__/v1-contracts.json +194 -0
  376. package/lib/models/contents/fieldCase.d.ts +8 -0
  377. package/lib/models/contents/fieldCase.js +37 -0
  378. package/lib/models/contents/index.d.ts +2 -0
  379. package/lib/models/contents/index.js +6 -0
  380. package/lib/models/contents/permissions.d.ts +16 -0
  381. package/lib/models/contents/permissions.js +34 -0
  382. package/lib/models/index.d.ts +5 -1
  383. package/lib/models/index.js +5 -1
  384. package/lib/navigation/components.js +2 -3
  385. package/lib/routes/publicPaths.js +4 -0
  386. package/lib/state/index.d.ts +1 -0
  387. package/lib/state/index.js +1 -0
  388. package/lib/state/sessionEnd.d.ts +55 -0
  389. package/lib/state/sessionEnd.js +162 -0
  390. package/lib/state/substates/CoreState.d.ts +15 -7
  391. package/lib/state/substates/CoreState.js +21 -17
  392. package/lib/state/substates/IAMState.d.ts +1 -1
  393. package/lib/state/substates/IAMState.js +12 -5
  394. package/lib/state/substates/LayoutState.js +12 -0
  395. package/lib/state/substates/ProfileState.d.ts +1 -0
  396. package/lib/state/substates/ProfileState.js +1 -4
  397. package/lib/state/substates/index.d.ts +0 -1
  398. package/lib/state/substates/index.js +0 -1
  399. package/lib/utils/Jwt.d.ts +26 -0
  400. package/lib/utils/Jwt.js +37 -0
  401. package/lib/utils/Lazy.d.ts +20 -0
  402. package/lib/utils/Lazy.js +32 -6
  403. package/lib/utils/Screencapture.js +3 -0
  404. package/lib/utils/WithSuspense.d.ts +11 -1
  405. package/lib/utils/WithSuspense.js +11 -1
  406. package/lib/views/api-keys/APIKeyEdit.d.ts +1 -1
  407. package/lib/views/api-keys/APIKeyNew.d.ts +1 -1
  408. package/lib/views/api-keys/APIKeys.d.ts +1 -1
  409. package/lib/views/api-keys/APIKeys.js +30 -4
  410. package/lib/views/api-keys/APIKeysStandalone.d.ts +5 -1
  411. package/lib/views/api-keys/APIKeysStandalone.js +2 -2
  412. package/lib/views/datasources/DatasourceDetail.d.ts +12 -5
  413. package/lib/views/datasources/DatasourceDetail.js +80 -110
  414. package/lib/views/datasources/DatasourceNew.d.ts +14 -8
  415. package/lib/views/datasources/DatasourceNew.js +129 -118
  416. package/lib/views/datasources/Datasources.d.ts +39 -7
  417. package/lib/views/datasources/Datasources.js +95 -40
  418. package/lib/views/datasources/DatasourcesMock.d.ts +3 -0
  419. package/lib/views/datasources/DatasourcesMock.js +57 -0
  420. package/lib/views/iam/SignInSimple.d.ts +12 -0
  421. package/lib/views/iam/SignInSimple.js +4 -4
  422. package/lib/views/index.d.ts +1 -0
  423. package/lib/views/index.js +1 -0
  424. package/lib/views/mcp/AdmittedClients.d.ts +44 -0
  425. package/lib/views/mcp/AdmittedClients.js +59 -0
  426. package/lib/views/mcp/AlertDestinations.d.ts +34 -0
  427. package/lib/views/mcp/AlertDestinations.js +75 -0
  428. package/lib/views/mcp/AlertRules.d.ts +32 -0
  429. package/lib/views/mcp/AlertRules.js +245 -0
  430. package/lib/views/mcp/ApprovalQueue.d.ts +66 -0
  431. package/lib/views/mcp/ApprovalQueue.js +95 -0
  432. package/lib/views/mcp/AuditLog.d.ts +42 -0
  433. package/lib/views/mcp/AuditLog.js +144 -0
  434. package/lib/views/mcp/ConnectedAgents.d.ts +34 -0
  435. package/lib/views/mcp/ConnectedAgents.js +135 -0
  436. package/lib/views/mcp/EnterpriseConsole.d.ts +74 -0
  437. package/lib/views/mcp/EnterpriseConsole.js +195 -0
  438. package/lib/views/mcp/IdentityProviders.d.ts +33 -0
  439. package/lib/views/mcp/IdentityProviders.js +299 -0
  440. package/lib/views/mcp/McpDashboard.d.ts +50 -0
  441. package/lib/views/mcp/McpDashboard.js +430 -0
  442. package/lib/views/mcp/McpHome.d.ts +92 -0
  443. package/lib/views/mcp/McpHome.js +153 -0
  444. package/lib/views/mcp/McpObservability.d.ts +79 -0
  445. package/lib/views/mcp/McpObservability.js +236 -0
  446. package/lib/views/mcp/NotebookRuns.d.ts +39 -0
  447. package/lib/views/mcp/NotebookRuns.js +44 -0
  448. package/lib/views/mcp/OrganizationPolicy.d.ts +45 -0
  449. package/lib/views/mcp/OrganizationPolicy.js +108 -0
  450. package/lib/views/mcp/OrganizationUsage.d.ts +69 -0
  451. package/lib/views/mcp/OrganizationUsage.js +113 -0
  452. package/lib/views/mcp/PersonalPolicy.d.ts +54 -0
  453. package/lib/views/mcp/PersonalPolicy.js +126 -0
  454. package/lib/views/mcp/Policies.d.ts +53 -0
  455. package/lib/views/mcp/Policies.js +210 -0
  456. package/lib/views/mcp/PolicyForm.d.ts +83 -0
  457. package/lib/views/mcp/PolicyForm.js +113 -0
  458. package/lib/views/mcp/PolicyHistory.d.ts +58 -0
  459. package/lib/views/mcp/PolicyHistory.js +75 -0
  460. package/lib/views/mcp/RunDetail.d.ts +87 -0
  461. package/lib/views/mcp/RunDetail.js +186 -0
  462. package/lib/views/mcp/ScimProvisioning.d.ts +54 -0
  463. package/lib/views/mcp/ScimProvisioning.js +173 -0
  464. package/lib/views/mcp/ServiceAgents.d.ts +46 -0
  465. package/lib/views/mcp/ServiceAgents.js +194 -0
  466. package/lib/views/mcp/TeamPolicies.d.ts +33 -0
  467. package/lib/views/mcp/TeamPolicies.js +159 -0
  468. package/lib/views/mcp/ToolAccess.d.ts +60 -0
  469. package/lib/views/mcp/ToolAccess.js +101 -0
  470. package/lib/views/mcp/TraceTimeline.d.ts +81 -0
  471. package/lib/views/mcp/TraceTimeline.js +132 -0
  472. package/lib/views/mcp/format.d.ts +25 -0
  473. package/lib/views/mcp/format.js +77 -0
  474. package/lib/views/mcp/index.d.ts +34 -0
  475. package/lib/views/mcp/index.js +42 -0
  476. package/lib/views/mcp/types.d.ts +66 -0
  477. package/lib/views/mcp/types.js +5 -0
  478. package/lib/views/otel/simpleAuthStore.js +3 -0
  479. package/lib/views/secrets/SecretEdit.d.ts +5 -1
  480. package/lib/views/secrets/SecretEdit.js +5 -4
  481. package/lib/views/secrets/SecretNew.d.ts +11 -1
  482. package/lib/views/secrets/SecretNew.js +7 -3
  483. package/lib/views/secrets/Secrets.d.ts +12 -1
  484. package/lib/views/secrets/Secrets.js +2 -2
  485. package/package.json +269 -260
  486. package/scripts/generate-contents-types.py +169 -0
  487. package/scripts/generate-mcp-types.py +233 -0
  488. package/scripts/generate-orchestration-types.py +920 -0
  489. package/lib/api/iam/datasources.d.ts +0 -86
  490. package/lib/api/iam/datasources.js +0 -185
  491. package/lib/components/toolbars/index.d.ts +0 -1
  492. package/lib/models/Datasource.d.ts +0 -181
  493. package/lib/models/Datasource.js +0 -154
  494. package/lib/state/substates/DatasourceState.d.ts +0 -11
  495. package/lib/state/substates/DatasourceState.js +0 -16
  496. /package/lib/{components/toolbars/index.js → api/contents/generated.js} +0 -0
@@ -0,0 +1,119 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { requestDatalayerAPI, requestDatalayerAPIWithResponse, } from '../DatalayerApi.js';
6
+ import { API_BASE_PATHS, DEFAULT_SERVICE_URLS } from '../constants.js';
7
+ import { contentsToCamelCase, contentsToSnakeCase } from '../../models/contents/index.js';
8
+ const convertRequest = (value) => contentsToSnakeCase(value);
9
+ const convertResponse = (value) => contentsToCamelCase(value);
10
+ const sourceUrl = (baseUrl, suffix = '') => `${baseUrl}${API_BASE_PATHS.CONTENTS}/sources${suffix}`;
11
+ const requiredEtag = (headers) => {
12
+ const etag = headers.etag ?? headers.ETag;
13
+ if (!etag) {
14
+ throw new Error('Contents response did not include an ETag');
15
+ }
16
+ return etag;
17
+ };
18
+ export const listSources = async (token, options = {}, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => {
19
+ const parameters = new URLSearchParams();
20
+ parameters.set('limit', String(options.limit ?? 50));
21
+ if (options.kind) {
22
+ parameters.set('kind', options.kind);
23
+ }
24
+ if (options.spaceUid) {
25
+ parameters.set('space_uid', options.spaceUid);
26
+ }
27
+ if (options.cursor) {
28
+ parameters.set('cursor', options.cursor);
29
+ }
30
+ const value = await requestDatalayerAPI({
31
+ url: `${sourceUrl(baseUrl)}?${parameters.toString()}`,
32
+ method: 'GET',
33
+ token,
34
+ });
35
+ return convertResponse(value);
36
+ };
37
+ export const createSource = async (token, source, idempotencyKey, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => {
38
+ const response = await requestDatalayerAPIWithResponse({
39
+ url: sourceUrl(baseUrl),
40
+ method: 'POST',
41
+ token,
42
+ headers: { 'Idempotency-Key': idempotencyKey },
43
+ body: convertRequest(source),
44
+ });
45
+ return {
46
+ value: convertResponse(response.data),
47
+ etag: requiredEtag(response.headers),
48
+ };
49
+ };
50
+ export const getSource = async (token, sourceUid, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => {
51
+ const response = await requestDatalayerAPIWithResponse({
52
+ url: sourceUrl(baseUrl, `/${encodeURIComponent(sourceUid)}`),
53
+ method: 'GET',
54
+ token,
55
+ });
56
+ return {
57
+ value: convertResponse(response.data),
58
+ etag: requiredEtag(response.headers),
59
+ };
60
+ };
61
+ export const getHomeFolder = async (token, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => {
62
+ const response = await requestDatalayerAPIWithResponse({
63
+ url: sourceUrl(baseUrl, '/home-folder'),
64
+ method: 'GET',
65
+ token,
66
+ });
67
+ return {
68
+ value: convertResponse(response.data),
69
+ etag: requiredEtag(response.headers),
70
+ };
71
+ };
72
+ export const updateSource = async (token, sourceUid, update, etag, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => {
73
+ const response = await requestDatalayerAPIWithResponse({
74
+ url: sourceUrl(baseUrl, `/${encodeURIComponent(sourceUid)}`),
75
+ method: 'PATCH',
76
+ token,
77
+ headers: { 'If-Match': etag },
78
+ body: convertRequest(update),
79
+ });
80
+ return {
81
+ value: convertResponse(response.data),
82
+ etag: requiredEtag(response.headers),
83
+ };
84
+ };
85
+ export const archiveSource = async (token, sourceUid, etag, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => {
86
+ const response = await requestDatalayerAPIWithResponse({
87
+ url: sourceUrl(baseUrl, `/${encodeURIComponent(sourceUid)}`),
88
+ method: 'DELETE',
89
+ token,
90
+ headers: { 'If-Match': etag },
91
+ });
92
+ return {
93
+ value: convertResponse(response.data),
94
+ etag: requiredEtag(response.headers),
95
+ };
96
+ };
97
+ export const getSourcePermissions = async (token, sourceUid, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
98
+ url: sourceUrl(baseUrl, `/${encodeURIComponent(sourceUid)}/permissions`),
99
+ method: 'GET',
100
+ token,
101
+ }));
102
+ export const getSourceSharing = async (token, sourceUid, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
103
+ url: sourceUrl(baseUrl, `/${encodeURIComponent(sourceUid)}/sharing`),
104
+ method: 'GET',
105
+ token,
106
+ }));
107
+ export const replaceSourceSharing = async (token, sourceUid, sharing, etag, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => {
108
+ const response = await requestDatalayerAPIWithResponse({
109
+ url: sourceUrl(baseUrl, `/${encodeURIComponent(sourceUid)}/sharing`),
110
+ method: 'PUT',
111
+ token,
112
+ headers: { 'If-Match': etag },
113
+ body: convertRequest(sharing),
114
+ });
115
+ return {
116
+ value: convertResponse(response.data),
117
+ etag: requiredEtag(response.headers),
118
+ };
119
+ };
@@ -0,0 +1,18 @@
1
+ import type { ConflictResolution, SyncConflictList, SyncCreate, SyncReconcile, SyncReport, SyncSessionList, SyncSessionView } from './generated';
2
+ /** Open a synchronization session; the answer carries the first plan. */
3
+ export declare const createSyncSession: (token: string, request: SyncCreate, idempotencyKey: string, baseUrl?: string) => Promise<SyncSessionView>;
4
+ export declare const getSyncSession: (token: string, sessionUid: string, baseUrl?: string) => Promise<SyncSessionView>;
5
+ export declare const listSyncSessions: (token: string, options?: {
6
+ active?: boolean;
7
+ cursor?: string;
8
+ limit?: number;
9
+ }, baseUrl?: string) => Promise<SyncSessionList>;
10
+ /** A fresh local manifest; a fresh plan. A watch pass and a reconnect both. */
11
+ export declare const reconcileSyncSession: (token: string, sessionUid: string, request: SyncReconcile, baseUrl?: string) => Promise<SyncSessionView>;
12
+ export declare const heartbeatSyncSession: (token: string, sessionUid: string, baseUrl?: string) => Promise<SyncSessionView>;
13
+ export declare const reportSyncSession: (token: string, sessionUid: string, request: SyncReport, baseUrl?: string) => Promise<SyncSessionView>;
14
+ export declare const cancelSyncSession: (token: string, sessionUid: string, baseUrl?: string) => Promise<SyncSessionView>;
15
+ export declare const listSyncConflicts: (token: string, sessionUid: string, options?: {
16
+ openOnly?: boolean;
17
+ }, baseUrl?: string) => Promise<SyncConflictList>;
18
+ export declare const resolveSyncConflict: (token: string, sessionUid: string, conflictUid: string, request: ConflictResolution, baseUrl?: string) => Promise<SyncSessionView>;
@@ -0,0 +1,69 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { requestDatalayerAPI } from '../DatalayerApi.js';
6
+ import { API_BASE_PATHS, DEFAULT_SERVICE_URLS } from '../constants.js';
7
+ import { contentsToCamelCase, contentsToSnakeCase } from '../../models/contents/index.js';
8
+ const convertResponse = (value) => contentsToCamelCase(value);
9
+ const convertRequest = (value) => contentsToSnakeCase(value);
10
+ const syncUrl = (baseUrl, suffix = '') => `${baseUrl}${API_BASE_PATHS.CONTENTS}/sync${suffix}`;
11
+ /** Open a synchronization session; the answer carries the first plan. */
12
+ export const createSyncSession = async (token, request, idempotencyKey, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
13
+ url: syncUrl(baseUrl),
14
+ method: 'POST',
15
+ token,
16
+ headers: { 'Idempotency-Key': idempotencyKey },
17
+ body: convertRequest(request),
18
+ }));
19
+ export const getSyncSession = async (token, sessionUid, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
20
+ url: syncUrl(baseUrl, `/${encodeURIComponent(sessionUid)}`),
21
+ method: 'GET',
22
+ token,
23
+ }));
24
+ export const listSyncSessions = async (token, options = {}, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => {
25
+ const parameters = new URLSearchParams();
26
+ parameters.set('active', String(options.active ?? false));
27
+ parameters.set('limit', String(options.limit ?? 50));
28
+ if (options.cursor)
29
+ parameters.set('cursor', options.cursor);
30
+ return convertResponse(await requestDatalayerAPI({
31
+ url: `${syncUrl(baseUrl)}?${parameters.toString()}`,
32
+ method: 'GET',
33
+ token,
34
+ }));
35
+ };
36
+ /** A fresh local manifest; a fresh plan. A watch pass and a reconnect both. */
37
+ export const reconcileSyncSession = async (token, sessionUid, request, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
38
+ url: syncUrl(baseUrl, `/${encodeURIComponent(sessionUid)}/reconcile`),
39
+ method: 'POST',
40
+ token,
41
+ body: convertRequest(request),
42
+ }));
43
+ export const heartbeatSyncSession = async (token, sessionUid, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
44
+ url: syncUrl(baseUrl, `/${encodeURIComponent(sessionUid)}/heartbeat`),
45
+ method: 'POST',
46
+ token,
47
+ }));
48
+ export const reportSyncSession = async (token, sessionUid, request, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
49
+ url: syncUrl(baseUrl, `/${encodeURIComponent(sessionUid)}/report`),
50
+ method: 'POST',
51
+ token,
52
+ body: convertRequest(request),
53
+ }));
54
+ export const cancelSyncSession = async (token, sessionUid, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
55
+ url: syncUrl(baseUrl, `/${encodeURIComponent(sessionUid)}`),
56
+ method: 'DELETE',
57
+ token,
58
+ }));
59
+ export const listSyncConflicts = async (token, sessionUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
60
+ url: syncUrl(baseUrl, `/${encodeURIComponent(sessionUid)}/conflicts?open_only=${String(options.openOnly ?? false)}`),
61
+ method: 'GET',
62
+ token,
63
+ }));
64
+ export const resolveSyncConflict = async (token, sessionUid, conflictUid, request, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
65
+ url: syncUrl(baseUrl, `/${encodeURIComponent(sessionUid)}/conflicts/${encodeURIComponent(conflictUid)}/resolve`),
66
+ method: 'POST',
67
+ token,
68
+ body: convertRequest(request),
69
+ }));
@@ -0,0 +1,38 @@
1
+ import type { TransferCreate, TransferList, TransferView } from './generated';
2
+ export declare const createTransfer: (token: string, request: TransferCreate, idempotencyKey: string, baseUrl?: string) => Promise<TransferView>;
3
+ export declare const getTransfer: (token: string, transferUid: string, baseUrl?: string) => Promise<TransferView>;
4
+ export declare const listTransfers: (token: string, options?: {
5
+ active?: boolean;
6
+ cursor?: string;
7
+ limit?: number;
8
+ }, baseUrl?: string) => Promise<TransferList>;
9
+ export declare const uploadTransferPart: (token: string, transferUid: string, partNumber: number, content: Uint8Array, checksum: string, baseUrl?: string) => Promise<TransferView>;
10
+ export declare const completeTransfer: (token: string, transferUid: string, baseUrl?: string) => Promise<TransferView>;
11
+ export declare const cancelTransfer: (token: string, transferUid: string, baseUrl?: string) => Promise<TransferView>;
12
+ export type DownloadedObject = {
13
+ data: ArrayBuffer;
14
+ status: number;
15
+ headers: Record<string, string>;
16
+ };
17
+ export declare const downloadHomeFolderObject: (token: string, objectUid: string, options?: {
18
+ versionUid?: string;
19
+ range?: string;
20
+ }, baseUrl?: string) => Promise<DownloadedObject>;
21
+ export type UploadProgress = {
22
+ transferUid: string;
23
+ uploadedBytes: number;
24
+ totalBytes: number;
25
+ };
26
+ export type UploadOptions = {
27
+ idempotencyKey: string;
28
+ mediaType?: string;
29
+ overwrite?: 'reject' | 'replace' | 'new-version';
30
+ chunkSize?: number;
31
+ onProgress?: (progress: UploadProgress) => void;
32
+ };
33
+ /** Create or resume a checksummed multipart upload into the Home Folder and atomically finalize it. */
34
+ export declare const uploadHomeFolderFile: (token: string, path: string, content: Blob | Uint8Array | ArrayBuffer, options: UploadOptions, baseUrl?: string) => Promise<TransferView>;
35
+ /** Capture a file into a Dataset: the same transfer, landing as a version a revision can pin. */
36
+ export declare const uploadDatasetFile: (token: string, datasetUid: string, path: string, content: Blob | Uint8Array | ArrayBuffer, options: UploadOptions, baseUrl?: string) => Promise<TransferView>;
37
+ /** Create or resume a checksummed multipart upload to any destination the service accepts. */
38
+ export declare const uploadFile: (token: string, destinationUri: string, content: Blob | Uint8Array | ArrayBuffer, options: UploadOptions, baseUrl?: string) => Promise<TransferView>;
@@ -0,0 +1,123 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ import { requestDatalayerAPI, requestDatalayerAPIWithResponse, } from '../DatalayerApi.js';
6
+ import { API_BASE_PATHS, DEFAULT_SERVICE_URLS } from '../constants.js';
7
+ import { contentsToCamelCase, contentsToSnakeCase } from '../../models/contents/index.js';
8
+ const convertResponse = (value) => contentsToCamelCase(value);
9
+ const transferUrl = (baseUrl, suffix = '') => `${baseUrl}${API_BASE_PATHS.CONTENTS}/transfers${suffix}`;
10
+ export const createTransfer = async (token, request, idempotencyKey, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
11
+ url: transferUrl(baseUrl),
12
+ method: 'POST',
13
+ token,
14
+ headers: { 'Idempotency-Key': idempotencyKey },
15
+ body: contentsToSnakeCase(request),
16
+ }));
17
+ export const getTransfer = async (token, transferUid, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
18
+ url: transferUrl(baseUrl, `/${encodeURIComponent(transferUid)}`),
19
+ method: 'GET',
20
+ token,
21
+ }));
22
+ export const listTransfers = async (token, options = {}, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => {
23
+ const parameters = new URLSearchParams();
24
+ parameters.set('active', String(options.active ?? false));
25
+ parameters.set('limit', String(options.limit ?? 50));
26
+ if (options.cursor)
27
+ parameters.set('cursor', options.cursor);
28
+ return convertResponse(await requestDatalayerAPI({
29
+ url: `${transferUrl(baseUrl)}?${parameters.toString()}`,
30
+ method: 'GET',
31
+ token,
32
+ }));
33
+ };
34
+ export const uploadTransferPart = async (token, transferUid, partNumber, content, checksum, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
35
+ url: transferUrl(baseUrl, `/${encodeURIComponent(transferUid)}/parts/${partNumber}`),
36
+ method: 'PUT',
37
+ token,
38
+ headers: {
39
+ 'Content-Type': 'application/octet-stream',
40
+ 'Content-SHA256': checksum,
41
+ },
42
+ body: content,
43
+ }));
44
+ export const completeTransfer = async (token, transferUid, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
45
+ url: transferUrl(baseUrl, `/${encodeURIComponent(transferUid)}/complete`),
46
+ method: 'POST',
47
+ token,
48
+ }));
49
+ export const cancelTransfer = async (token, transferUid, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => convertResponse(await requestDatalayerAPI({
50
+ url: transferUrl(baseUrl, `/${encodeURIComponent(transferUid)}`),
51
+ method: 'DELETE',
52
+ token,
53
+ }));
54
+ export const downloadHomeFolderObject = async (token, objectUid, options = {}, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => {
55
+ const parameters = new URLSearchParams();
56
+ if (options.versionUid)
57
+ parameters.set('version_uid', options.versionUid);
58
+ const query = parameters.size ? `?${parameters.toString()}` : '';
59
+ const response = await requestDatalayerAPIWithResponse({
60
+ url: `${baseUrl}${API_BASE_PATHS.CONTENTS}/sources/home-folder/objects/${encodeURIComponent(objectUid)}/download${query}`,
61
+ method: 'GET',
62
+ token,
63
+ headers: options.range ? { Range: options.range } : {},
64
+ responseType: 'arraybuffer',
65
+ });
66
+ return {
67
+ data: response.data,
68
+ status: response.status,
69
+ headers: response.headers,
70
+ };
71
+ };
72
+ const bytes = async (content) => {
73
+ if (content instanceof Uint8Array)
74
+ return content;
75
+ if (content instanceof ArrayBuffer)
76
+ return new Uint8Array(content);
77
+ return new Uint8Array(await content.arrayBuffer());
78
+ };
79
+ const sha256 = async (content) => {
80
+ const copy = new Uint8Array(content.byteLength);
81
+ copy.set(content);
82
+ const digest = await crypto.subtle.digest('SHA-256', copy.buffer);
83
+ return Array.from(new Uint8Array(digest), value => value.toString(16).padStart(2, '0')).join('');
84
+ };
85
+ /** Create or resume a checksummed multipart upload into the Home Folder and atomically finalize it. */
86
+ export const uploadHomeFolderFile = async (token, path, content, options, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => uploadFile(token, `home-folder:///${path.replace(/^\/+/, '')}`, content, options, baseUrl);
87
+ /** Capture a file into a Dataset: the same transfer, landing as a version a revision can pin. */
88
+ export const uploadDatasetFile = async (token, datasetUid, path, content, options, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => uploadFile(token, `dataset://${datasetUid}/${path.replace(/^\/+/, '')}`, content, options, baseUrl);
89
+ /** Create or resume a checksummed multipart upload to any destination the service accepts. */
90
+ export const uploadFile = async (token, destinationUri, content, options, baseUrl = DEFAULT_SERVICE_URLS.CONTENTS) => {
91
+ const payload = await bytes(content);
92
+ const checksum = await sha256(payload);
93
+ const transfer = await createTransfer(token, {
94
+ destinationUri,
95
+ size: payload.byteLength,
96
+ checksum,
97
+ mediaType: options.mediaType ?? 'application/octet-stream',
98
+ overwrite: options.overwrite ?? 'reject',
99
+ }, options.idempotencyKey, baseUrl);
100
+ // Resuming: the parts already verified fix the part size. Cutting the file
101
+ // differently would number the bytes differently, and a "verified" part
102
+ // would then be the wrong bytes.
103
+ const chunkSize = transfer.parts?.length
104
+ ? transfer.parts[0].size
105
+ : Math.max(256 * 1024, options.chunkSize ?? 8 * 1024 * 1024);
106
+ const verified = new Set((transfer.parts ?? []).map(part => part.number));
107
+ let uploadedBytes = (transfer.parts ?? []).reduce((total, part) => total + part.size, 0);
108
+ for (let offset = 0, number = 0; offset < payload.byteLength; number += 1) {
109
+ const end = Math.min(offset + chunkSize, payload.byteLength);
110
+ const part = payload.slice(offset, end);
111
+ if (!verified.has(number)) {
112
+ await uploadTransferPart(token, transfer.uid, number, part, await sha256(part), baseUrl);
113
+ uploadedBytes += part.byteLength;
114
+ options.onProgress?.({
115
+ transferUid: transfer.uid,
116
+ uploadedBytes,
117
+ totalBytes: payload.byteLength,
118
+ });
119
+ }
120
+ offset = end;
121
+ }
122
+ return completeTransfer(token, transfer.uid, baseUrl);
123
+ };