@datalayer/core 0.0.2 → 0.0.4

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 (474) hide show
  1. package/README.md +124 -2
  2. package/lib/App.css +47 -0
  3. package/lib/App.js +14 -2
  4. package/lib/__tests__/index.test.js +7 -6
  5. package/lib/api/{RunApi.d.ts → DatalayerApi.d.ts} +4 -4
  6. package/lib/api/{RunApi.js → DatalayerApi.js} +6 -11
  7. package/lib/api/index.d.ts +3 -2
  8. package/lib/api/index.js +3 -7
  9. package/lib/api/{runtimes → jupyter}/exec/Python.js +0 -5
  10. package/lib/api/{runtimes → jupyter}/exec/Snippets.js +0 -5
  11. package/lib/api/{runtimes → jupyter}/exec/index.js +0 -5
  12. package/lib/api/jupyter/index.d.ts +2 -0
  13. package/lib/api/jupyter/index.js +6 -0
  14. package/lib/api/{runtimes → jupyter}/kernelsHandler.d.ts +1 -1
  15. package/lib/api/{runtimes → jupyter}/kernelsHandler.js +1 -6
  16. package/lib/api/runtimes/actions.d.ts +102 -0
  17. package/lib/api/runtimes/{runtimesApi.js → actions.js} +47 -53
  18. package/lib/api/runtimes/{runtimesApi.d.ts → apis.d.ts} +8 -105
  19. package/lib/api/runtimes/apis.js +5 -0
  20. package/lib/api/runtimes/index.d.ts +2 -4
  21. package/lib/api/runtimes/index.js +2 -9
  22. package/lib/api/runtimes/settings.js +3 -8
  23. package/lib/api/runtimes/snapshots.d.ts +1 -1
  24. package/lib/api/runtimes/snapshots.js +8 -13
  25. package/lib/api/runtimes/utils.js +1 -9
  26. package/lib/assets/react.svg +1 -0
  27. package/lib/collaboration/DatalayerCollaboration.d.ts +9 -0
  28. package/lib/collaboration/DatalayerCollaboration.js +28 -0
  29. package/lib/collaboration/DatalayerCollaborationProvider.d.ts +54 -0
  30. package/lib/collaboration/DatalayerCollaborationProvider.js +162 -0
  31. package/lib/collaboration/index.d.ts +2 -0
  32. package/lib/collaboration/index.js +6 -0
  33. package/lib/components/avatars/BoringAvatar.d.ts +2 -3
  34. package/lib/components/avatars/BoringAvatar.js +14 -9
  35. package/lib/components/avatars/BoringAvatar.stories.d.ts +27 -0
  36. package/lib/components/avatars/BoringAvatar.stories.js +23 -0
  37. package/lib/components/avatars/UserProfileAvatar.js +2 -14
  38. package/lib/components/avatars/index.js +0 -5
  39. package/lib/components/banners/NoAutomationBanner.js +4 -9
  40. package/lib/components/banners/index.js +0 -5
  41. package/lib/components/buttons/DownloadCSVButton.d.ts +1 -1
  42. package/lib/components/buttons/DownloadCSVButton.js +1 -6
  43. package/lib/components/buttons/DownloadJsonButton.d.ts +1 -1
  44. package/lib/components/buttons/DownloadJsonButton.js +0 -5
  45. package/lib/components/buttons/LongActionButton.js +0 -5
  46. package/lib/components/buttons/UploadButton.js +1 -6
  47. package/lib/components/buttons/index.js +0 -5
  48. package/lib/components/checkout/StripeCheckout.d.ts +1 -1
  49. package/lib/components/checkout/StripeCheckout.js +6 -11
  50. package/lib/components/checkout/index.js +0 -5
  51. package/lib/components/confetti/ConfettiSuccess.js +1 -6
  52. package/lib/components/confetti/index.js +0 -5
  53. package/lib/components/context/OrganizationSelect.js +5 -10
  54. package/lib/components/context/SpaceSelect.js +7 -12
  55. package/lib/components/context/index.js +0 -5
  56. package/lib/components/display/AvatarSkeleton.js +1 -6
  57. package/lib/components/display/CenteredSpinner.js +4 -9
  58. package/lib/components/display/CodePreview.js +4 -9
  59. package/lib/components/display/DatalayerBox.js +13 -19
  60. package/lib/components/display/HorizontalCenter.d.ts +1 -1
  61. package/lib/components/display/HorizontalCenter.js +1 -1
  62. package/lib/components/display/JupyterDialog.js +17 -20
  63. package/lib/components/display/NavLink.d.ts +4 -2
  64. package/lib/components/display/NavLink.js +6 -9
  65. package/lib/components/display/NotebookSkeleton.js +2 -7
  66. package/lib/components/display/Placeholder.js +1 -6
  67. package/lib/components/display/ToTopBranded.js +1 -6
  68. package/lib/components/display/VisuallyHidden.js +0 -5
  69. package/lib/components/display/index.js +0 -5
  70. package/lib/components/echarts/EChartsReact.d.ts +1 -1
  71. package/lib/components/echarts/EChartsReact.js +7 -7
  72. package/lib/components/echarts/index.js +0 -5
  73. package/lib/components/flashes/FlashClosable.js +11 -16
  74. package/lib/components/flashes/FlashDisclaimer.js +2 -8
  75. package/lib/components/flashes/FlashGuest.js +3 -9
  76. package/lib/components/flashes/FlashSurveys.js +3 -9
  77. package/lib/components/flashes/FlashUnauthorized.js +2 -7
  78. package/lib/components/flashes/index.js +0 -5
  79. package/lib/components/flashes/surveys/Survey2025_1.d.ts +1 -1
  80. package/lib/components/flashes/surveys/Survey2025_1.js +62 -90
  81. package/lib/components/flashes/surveys/index.js +0 -5
  82. package/lib/components/iam/ExternalTokenSilentLogin.js +6 -9
  83. package/lib/components/iam/index.js +0 -5
  84. package/lib/components/icons/ArtifactIcon.d.ts +2 -2
  85. package/lib/components/icons/ArtifactIcon.js +39 -44
  86. package/lib/components/icons/index.js +0 -5
  87. package/lib/components/index.js +1 -6
  88. package/lib/components/labels/VisibilityLabel.js +2 -10
  89. package/lib/components/labels/index.js +0 -5
  90. package/lib/components/landings/StepBlock.d.ts +1 -1
  91. package/lib/components/landings/StepBlock.js +1 -6
  92. package/lib/components/landings/index.js +0 -5
  93. package/lib/components/navbar/NavigationVisbilityObserver.js +2 -7
  94. package/lib/components/navbar/SubdomainNavBar.js +46 -29
  95. package/lib/components/navbar/SubdomainNavBar.module.css +737 -0
  96. package/lib/components/navbar/index.js +0 -5
  97. package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
  98. package/lib/components/nbgrader/NbGradesDetails.js +5 -13
  99. package/lib/components/nbgrader/index.js +0 -5
  100. package/lib/components/notebooks/JupyterNotebook.js +5 -10
  101. package/lib/components/notebooks/JupyterNotebookToolbar.js +3 -8
  102. package/lib/components/notebooks/index.js +0 -5
  103. package/lib/components/primer/Helper.d.ts +1 -1
  104. package/lib/components/primer/Helper.js +5 -3
  105. package/lib/components/primer/Portals.d.ts +1 -1
  106. package/lib/components/primer/Portals.js +2 -7
  107. package/lib/components/primer/Styles.js +1 -6
  108. package/lib/components/primer/index.js +0 -5
  109. package/lib/components/progress/ConsumptionBar.js +2 -7
  110. package/lib/components/progress/CreditsIndicator.d.ts +1 -1
  111. package/lib/components/progress/CreditsIndicator.js +4 -13
  112. package/lib/components/progress/ProgressBar.js +0 -5
  113. package/lib/components/progress/ProgressRing.js +2 -2
  114. package/lib/components/progress/Timer.js +0 -5
  115. package/lib/components/progress/index.js +0 -5
  116. package/lib/components/runtimes/RuntimeCellVariables.js +9 -14
  117. package/lib/components/runtimes/RuntimeCellVariablesDialog.js +7 -12
  118. package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +1 -2
  119. package/lib/components/runtimes/RuntimeLauncherDialog.js +32 -40
  120. package/lib/components/runtimes/RuntimePickerBase.d.ts +1 -1
  121. package/lib/components/runtimes/RuntimePickerBase.js +42 -36
  122. package/lib/components/runtimes/RuntimePickerCell.js +9 -17
  123. package/lib/components/runtimes/RuntimePickerNotebook.d.ts +1 -2
  124. package/lib/components/runtimes/RuntimePickerNotebook.js +45 -50
  125. package/lib/components/runtimes/RuntimeReservationControl.js +10 -20
  126. package/lib/components/runtimes/RuntimeSimplePicker.d.ts +1 -1
  127. package/lib/components/runtimes/RuntimeSimplePicker.js +44 -52
  128. package/lib/components/runtimes/RuntimeUtils.d.ts +1 -1
  129. package/lib/components/runtimes/RuntimeUtils.js +22 -17
  130. package/lib/components/runtimes/RuntimeVariables.js +7 -12
  131. package/lib/components/runtimes/index.js +0 -5
  132. package/lib/components/screenshot/ScreenCapture.js +10 -19
  133. package/lib/components/screenshot/ScreenCaptureButton.d.ts +1 -1
  134. package/lib/components/screenshot/ScreenCaptureButton.js +14 -8
  135. package/lib/components/screenshot/index.js +0 -5
  136. package/lib/components/snapshots/RuntimeSnapshotMenu.js +19 -22
  137. package/lib/components/snapshots/index.js +0 -5
  138. package/lib/components/snippets/SnippetDialog.js +5 -10
  139. package/lib/components/snippets/index.js +0 -5
  140. package/lib/components/storage/ContentsBrowser.js +75 -63
  141. package/lib/components/storage/ContentsItems.js +10 -13
  142. package/lib/components/storage/index.js +0 -5
  143. package/lib/components/students/StudentItemStatus.d.ts +1 -1
  144. package/lib/components/students/StudentItemStatus.js +38 -21
  145. package/lib/components/students/index.js +0 -5
  146. package/lib/components/subnav/SubNav.d.ts +3 -3
  147. package/lib/components/subnav/SubNav.js +34 -24
  148. package/lib/components/subnav/SubNav.module.css +717 -0
  149. package/lib/components/subnav/index.js +0 -5
  150. package/lib/components/tables/DataTable.js +1 -9
  151. package/lib/components/tables/index.js +0 -5
  152. package/lib/components/text-reveal/TextRevealAnimation.js +7 -8
  153. package/lib/components/text-reveal/TextRevealAnimation.module.css +45 -0
  154. package/lib/components/text-reveal/index.js +0 -5
  155. package/lib/components/text-reveal/useTextRevealAnimationLines.js +0 -5
  156. package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
  157. package/lib/components/tokens/SpaceVariantToken.js +5 -10
  158. package/lib/components/tokens/index.js +0 -5
  159. package/lib/components/toolbars/AssignmentEditorToolbar.js +1 -8
  160. package/lib/components/toolbars/DocumentEditorToolbar.js +0 -5
  161. package/lib/components/toolbars/NotebookEditorToolbar.d.ts +1 -1
  162. package/lib/components/toolbars/NotebookEditorToolbar.js +0 -5
  163. package/lib/components/toolbars/index.js +0 -5
  164. package/lib/components/users/PeerIndicator.d.ts +1 -1
  165. package/lib/components/users/PeerIndicator.js +5 -10
  166. package/lib/components/users/index.js +0 -5
  167. package/lib/config/Configuration.d.ts +48 -0
  168. package/lib/config/Configuration.js +42 -5
  169. package/lib/config/index.js +0 -5
  170. package/lib/config/integrations/Loom.js +3 -8
  171. package/lib/config/integrations/index.js +0 -5
  172. package/lib/examples/CellExample.d.ts +6 -0
  173. package/lib/examples/CellExample.js +55 -0
  174. package/lib/examples/DatalayerNotebookExample.d.ts +16 -0
  175. package/lib/examples/DatalayerNotebookExample.js +75 -0
  176. package/lib/examples/NativeNavigationExample.d.ts +8 -0
  177. package/lib/examples/NativeNavigationExample.js +97 -0
  178. package/lib/examples/NotebookExample.d.ts +6 -0
  179. package/lib/examples/NotebookExample.js +24 -0
  180. package/lib/examples/NotebookMutationsKernel.d.ts +2 -0
  181. package/lib/examples/NotebookMutationsKernel.js +115 -0
  182. package/lib/examples/NotebookMutationsServiceManager.d.ts +2 -0
  183. package/lib/examples/NotebookMutationsServiceManager.js +107 -0
  184. package/lib/examples/ReactRouterExample.d.ts +6 -0
  185. package/lib/examples/ReactRouterExample.js +175 -0
  186. package/lib/examples/example-selector.d.ts +22 -0
  187. package/lib/examples/example-selector.js +45 -0
  188. package/lib/examples/index.d.ts +2 -0
  189. package/lib/examples/index.js +6 -0
  190. package/lib/examples/main.js +153 -0
  191. package/lib/examples/notebooks/IPyWidgetsExample.ipynb.json +101 -0
  192. package/lib/examples/notebooks/IPyWidgetsExampleWithState.ipynb.json +112 -0
  193. package/lib/examples/notebooks/Lite.ipynb.json +128 -0
  194. package/lib/examples/notebooks/Matplotlib.ipynb.json +137 -0
  195. package/lib/examples/notebooks/NotebookExample1.ipynb.json +126 -0
  196. package/lib/examples/notebooks/NotebookExample2.ipynb.json +48 -0
  197. package/lib/examples/notebooks/NotebookOutputs.ipynb.json +49 -0
  198. package/lib/examples/notebooks/NotebookToCExample.ipynb.json +102 -0
  199. package/lib/examples/notebooks/OutputIPyWidgetsExample.d.ts +145 -0
  200. package/lib/examples/notebooks/OutputIPyWidgetsExample.js +153 -0
  201. package/lib/examples/notebooks/PyGWalker.ipynb.json +55 -0
  202. package/lib/hooks/assets/OutputshotPlaceholders.d.ts +10 -10
  203. package/lib/hooks/assets/OutputshotPlaceholders.js +9 -14
  204. package/lib/hooks/assets/index.js +0 -5
  205. package/lib/hooks/index.d.ts +29 -28
  206. package/lib/hooks/index.js +29 -33
  207. package/lib/hooks/layouts/LayoutBackdrop.js +3 -11
  208. package/lib/hooks/layouts/LayoutScreenshot.css +58 -0
  209. package/lib/hooks/layouts/LayoutScreenshot.d.ts +1 -0
  210. package/lib/hooks/layouts/LayoutScreenshot.js +7 -11
  211. package/lib/hooks/layouts/index.js +0 -5
  212. package/lib/hooks/useAIAgents.d.ts +1 -1
  213. package/lib/hooks/useAIAgents.js +13 -18
  214. package/lib/hooks/useAuthorization.js +4 -10
  215. package/lib/hooks/useBackdrop.js +7 -12
  216. package/lib/hooks/useBackdropJupyterLab.d.ts +1 -1
  217. package/lib/hooks/useBackdropJupyterLab.js +4 -9
  218. package/lib/hooks/useCache.d.ts +8 -4
  219. package/lib/hooks/useCache.js +410 -361
  220. package/lib/hooks/useCellOutputshot.js +3 -11
  221. package/lib/hooks/useContainsFocus.js +2 -6
  222. package/lib/hooks/useDatalayer.d.ts +21 -0
  223. package/lib/hooks/{useRun.js → useDatalayer.js} +16 -18
  224. package/lib/hooks/useError.d.ts +1 -1
  225. package/lib/hooks/useError.js +2 -7
  226. package/lib/hooks/useExternalScript.js +4 -9
  227. package/lib/hooks/useFocusTrap.d.ts +1 -1
  228. package/lib/hooks/useFocusTrap.js +3 -7
  229. package/lib/hooks/useIAM.js +6 -12
  230. package/lib/hooks/useId.js +6 -11
  231. package/lib/hooks/useIsomorphicLayoutEffect.js +0 -5
  232. package/lib/hooks/useJupyterLabTheme.js +3 -6
  233. package/lib/hooks/useKeyboardEscape.js +0 -5
  234. package/lib/hooks/useLocation.d.ts +22 -0
  235. package/lib/hooks/useLocation.js +149 -0
  236. package/lib/hooks/useLocationHandles.d.ts +2 -2
  237. package/lib/hooks/useLocationHandles.js +6 -9
  238. package/lib/hooks/useNavigate.d.ts +5 -1
  239. package/lib/hooks/useNavigate.js +62 -12
  240. package/lib/hooks/useNotebookAIAgent.js +3 -6
  241. package/lib/hooks/useOnClickOutside.js +0 -5
  242. package/lib/hooks/useParams.d.ts +5 -0
  243. package/lib/hooks/useParams.js +152 -0
  244. package/lib/hooks/useRef.js +0 -5
  245. package/lib/hooks/useRuntimes.js +2 -7
  246. package/lib/hooks/useScreenshot.js +5 -10
  247. package/lib/hooks/useToast.js +21 -21
  248. package/lib/hooks/useUpload.js +9 -14
  249. package/lib/hooks/useUser.js +1 -1
  250. package/lib/hooks/useVisibilityObserver.js +0 -5
  251. package/lib/hooks/useWindowSize.js +0 -6
  252. package/lib/i18n/Labels.js +0 -5
  253. package/lib/i18n/index.js +0 -5
  254. package/lib/index.css +73 -0
  255. package/lib/index.d.ts +6 -3
  256. package/lib/index.js +7 -3
  257. package/lib/main.js +1 -2
  258. package/lib/mocks/components/FlashMock.js +4 -9
  259. package/lib/mocks/components/index.js +0 -5
  260. package/lib/mocks/hooks/index.d.ts +1 -1
  261. package/lib/mocks/hooks/index.js +1 -6
  262. package/lib/mocks/hooks/rests/index.js +0 -5
  263. package/lib/mocks/hooks/rests/rests.js +15 -23
  264. package/lib/mocks/hooks/useDatalayerMock.d.ts +6 -0
  265. package/lib/mocks/hooks/{useRunMock.js → useDatalayerMock.js} +9 -14
  266. package/lib/mocks/index.js +0 -5
  267. package/lib/mocks/jupyter/index.js +1 -6
  268. package/lib/mocks/models/CodeBlockMock.js +1 -6
  269. package/lib/mocks/models/CodelineMock.js +1 -6
  270. package/lib/mocks/models/CourseMock.d.ts +1 -1
  271. package/lib/mocks/models/CourseMock.js +10 -15
  272. package/lib/mocks/models/InviteMock.d.ts +1 -1
  273. package/lib/mocks/models/InviteMock.js +21 -11
  274. package/lib/mocks/models/JupyterLabUserMock.js +2 -2
  275. package/lib/mocks/models/OrganisationMock.d.ts +1 -1
  276. package/lib/mocks/models/OrganisationMock.js +11 -7
  277. package/lib/mocks/models/SchoolMock.d.ts +1 -1
  278. package/lib/mocks/models/SchoolMock.js +6 -6
  279. package/lib/mocks/models/SpaceMock.d.ts +1 -1
  280. package/lib/mocks/models/SpaceMock.js +9 -14
  281. package/lib/mocks/models/TeamMock.d.ts +1 -1
  282. package/lib/mocks/models/TeamMock.js +6 -6
  283. package/lib/mocks/models/UserMock.d.ts +1 -1
  284. package/lib/mocks/models/UserMock.js +4 -11
  285. package/lib/mocks/models/index.js +0 -5
  286. package/lib/mocks/views/ActionMenuMock.js +1 -6
  287. package/lib/mocks/views/ChartMock.js +3 -8
  288. package/lib/mocks/views/ChartMockOptions.js +24 -29
  289. package/lib/mocks/views/DashboardMock.js +74 -79
  290. package/lib/mocks/views/FormMock.js +1 -6
  291. package/lib/mocks/views/TableMock.js +1 -6
  292. package/lib/mocks/views/WipMock.js +0 -5
  293. package/lib/mocks/views/index.js +0 -5
  294. package/lib/models/Account.d.ts +2 -2
  295. package/lib/models/Assignment.d.ts +2 -2
  296. package/lib/models/Cell.d.ts +1 -1
  297. package/lib/models/CodeBlock.d.ts +1 -1
  298. package/lib/models/CodefeedBlocks.d.ts +2 -2
  299. package/lib/models/Contact.d.ts +1 -1
  300. package/lib/models/Contact.js +14 -19
  301. package/lib/models/ContactEvent.js +0 -5
  302. package/lib/models/ContactIAMProvider.js +2 -2
  303. package/lib/models/Course.d.ts +7 -7
  304. package/lib/models/Credits.js +0 -5
  305. package/lib/models/Dataset.d.ts +2 -2
  306. package/lib/models/Datasource.js +0 -5
  307. package/lib/models/Dean.d.ts +1 -1
  308. package/lib/models/Document.d.ts +1 -1
  309. package/lib/models/Environment.d.ts +2 -2
  310. package/lib/models/Errors.js +0 -5
  311. package/lib/models/Exercise.d.ts +1 -1
  312. package/lib/models/GrowthKPI.js +0 -5
  313. package/lib/models/IAMProviderLinked.js +1 -1
  314. package/lib/models/IAMProviderUsers.js +0 -5
  315. package/lib/models/IAMToken.js +0 -5
  316. package/lib/models/Inbound.js +0 -5
  317. package/lib/models/Instructor.d.ts +1 -1
  318. package/lib/models/Invite.d.ts +2 -2
  319. package/lib/models/Invite.js +1 -1
  320. package/lib/models/Item.d.ts +5 -5
  321. package/lib/models/LandingRoles.js +18 -23
  322. package/lib/models/Lesson.d.ts +1 -1
  323. package/lib/models/Member.d.ts +1 -1
  324. package/lib/models/Notebook.d.ts +1 -1
  325. package/lib/models/Organization.d.ts +4 -4
  326. package/lib/models/Organization.js +2 -7
  327. package/lib/models/OrganizationMember.d.ts +2 -2
  328. package/lib/models/Outbound.js +7 -12
  329. package/lib/models/Page.js +4 -2
  330. package/lib/models/PageTag.d.ts +2 -2
  331. package/lib/models/PageTag.js +56 -9
  332. package/lib/models/Profile.d.ts +1 -1
  333. package/lib/models/RolesOrganization.d.ts +1 -1
  334. package/lib/models/RolesOrganization.js +4 -17
  335. package/lib/models/RolesPlatform.d.ts +1 -1
  336. package/lib/models/RolesPlatform.js +12 -39
  337. package/lib/models/RolesTeam.d.ts +1 -1
  338. package/lib/models/RolesTeam.js +3 -15
  339. package/lib/models/Runtime.d.ts +59 -1
  340. package/lib/models/Runtime.js +11 -9
  341. package/lib/models/RuntimeSnapshot.js +1 -1
  342. package/lib/models/School.d.ts +4 -4
  343. package/lib/models/Secret.js +0 -5
  344. package/lib/models/Space.d.ts +5 -5
  345. package/lib/models/Space.js +3 -3
  346. package/lib/models/SpaceItem.d.ts +8 -8
  347. package/lib/models/SpaceMember.d.ts +2 -2
  348. package/lib/models/Student.d.ts +2 -2
  349. package/lib/models/StudentItem.d.ts +3 -3
  350. package/lib/models/Survey.js +0 -5
  351. package/lib/models/Team.d.ts +3 -3
  352. package/lib/models/Team.js +2 -7
  353. package/lib/models/TeamMember.d.ts +2 -2
  354. package/lib/models/URN.js +1 -6
  355. package/lib/models/User.d.ts +2 -2
  356. package/lib/models/User.js +7 -10
  357. package/lib/models/UserEvent.js +0 -5
  358. package/lib/models/UserOnboarding.d.ts +1 -1
  359. package/lib/models/UserOnboarding.js +7 -12
  360. package/lib/models/UserSettings.js +2 -7
  361. package/lib/models/index.d.ts +2 -2
  362. package/lib/models/index.js +2 -7
  363. package/lib/navigation/adapters/native.d.ts +11 -0
  364. package/lib/navigation/adapters/native.js +48 -0
  365. package/lib/navigation/adapters/nextjs.d.ts +9 -0
  366. package/lib/navigation/adapters/nextjs.js +35 -0
  367. package/lib/navigation/adapters/react-router.d.ts +4 -0
  368. package/lib/navigation/adapters/react-router.js +12 -0
  369. package/lib/navigation/components.d.ts +20 -0
  370. package/lib/navigation/components.js +36 -0
  371. package/lib/navigation/index.d.ts +4 -0
  372. package/lib/navigation/index.js +12 -0
  373. package/lib/routes/Routes.js +0 -5
  374. package/lib/routes/index.d.ts +1 -1
  375. package/lib/routes/index.js +1 -6
  376. package/lib/services/DatalayerServiceManager.d.ts +22 -0
  377. package/lib/services/DatalayerServiceManager.js +79 -0
  378. package/lib/services/index.d.ts +4 -0
  379. package/lib/services/index.js +7 -0
  380. package/lib/services/reconnectToRuntime.d.ts +32 -0
  381. package/lib/services/reconnectToRuntime.js +59 -0
  382. package/lib/state/State.d.ts +1 -1
  383. package/lib/state/State.js +1 -6
  384. package/lib/state/index.d.ts +1 -1
  385. package/lib/state/index.js +1 -6
  386. package/lib/state/storage/IAMStorage.js +14 -7
  387. package/lib/state/storage/index.d.ts +1 -1
  388. package/lib/state/storage/index.js +1 -6
  389. package/lib/state/substates/AIAgentState.js +4 -7
  390. package/lib/state/substates/CellState.js +6 -10
  391. package/lib/state/substates/CoreState.d.ts +1 -1
  392. package/lib/state/substates/CoreState.js +23 -20
  393. package/lib/state/substates/DatasourceState.js +1 -6
  394. package/lib/state/substates/DocumentState.js +0 -5
  395. package/lib/state/substates/GradeState.js +0 -5
  396. package/lib/state/substates/IAMState.d.ts +5 -1
  397. package/lib/state/substates/IAMState.js +88 -72
  398. package/lib/state/substates/JupyterLabState.js +1 -6
  399. package/lib/state/substates/LayoutState.d.ts +2 -2
  400. package/lib/state/substates/LayoutState.js +41 -28
  401. package/lib/state/substates/NbformatState.js +0 -5
  402. package/lib/state/substates/OrganizationState.js +1 -6
  403. package/lib/state/substates/RuntimesState.d.ts +2 -2
  404. package/lib/state/substates/RuntimesState.js +6 -10
  405. package/lib/state/substates/SpaceState.js +1 -6
  406. package/lib/state/substates/SurveysState.js +7 -12
  407. package/lib/state/substates/TeamState.js +1 -6
  408. package/lib/state/substates/index.js +0 -5
  409. package/lib/stories/assets/accessibility.png +0 -0
  410. package/lib/stories/assets/accessibility.svg +1 -0
  411. package/lib/stories/assets/addon-library.png +0 -0
  412. package/lib/stories/assets/assets.png +0 -0
  413. package/lib/stories/assets/context.png +0 -0
  414. package/lib/stories/assets/discord.svg +1 -0
  415. package/lib/stories/assets/docs.png +0 -0
  416. package/lib/stories/assets/figma-plugin.png +0 -0
  417. package/lib/stories/assets/github.svg +1 -0
  418. package/lib/stories/assets/share.png +0 -0
  419. package/lib/stories/assets/styling.png +0 -0
  420. package/lib/stories/assets/testing.png +0 -0
  421. package/lib/stories/assets/theming.png +0 -0
  422. package/lib/stories/assets/tutorials.svg +1 -0
  423. package/lib/stories/assets/youtube.svg +1 -0
  424. package/lib/stories/button.css +35 -0
  425. package/lib/stories/header.css +37 -0
  426. package/lib/stories/page.css +73 -0
  427. package/lib/test-setup.js +73 -1
  428. package/lib/theme/DatalayerTheme.js +1 -6
  429. package/lib/theme/DatalayerThemeProvider.js +17 -19
  430. package/lib/theme/Palette.js +1 -6
  431. package/lib/theme/index.js +0 -5
  432. package/lib/utils/Array.js +0 -5
  433. package/lib/utils/Avatar.js +2 -7
  434. package/lib/utils/Browser.js +6 -11
  435. package/lib/utils/Cells.d.ts +1 -1
  436. package/lib/utils/Cookie.js +1 -6
  437. package/lib/utils/Date.js +5 -10
  438. package/lib/utils/Download.js +5 -8
  439. package/lib/utils/DownloadFile.js +4 -7
  440. package/lib/utils/Env.js +2 -6
  441. package/lib/utils/File.js +0 -5
  442. package/lib/utils/Ids.js +0 -5
  443. package/lib/utils/Jupyter.js +0 -5
  444. package/lib/utils/Lazy.d.ts +1 -1
  445. package/lib/utils/Lazy.js +2 -8
  446. package/lib/utils/Name.js +10 -13
  447. package/lib/utils/Notebook.d.ts +1 -1
  448. package/lib/utils/Notebook.js +3 -3
  449. package/lib/utils/Number.js +13 -14
  450. package/lib/utils/Plots.d.ts +1 -1
  451. package/lib/utils/Plots.js +5 -5
  452. package/lib/utils/Random.js +0 -5
  453. package/lib/utils/Screenshot.js +1 -6
  454. package/lib/utils/Scroll.js +3 -7
  455. package/lib/utils/Sleep.js +1 -6
  456. package/lib/utils/Snapshot.js +2 -7
  457. package/lib/utils/String.js +2 -7
  458. package/lib/utils/Uri.js +2 -7
  459. package/lib/utils/Validator.js +0 -5
  460. package/lib/utils/WithSuspense.js +3 -11
  461. package/lib/utils/index.js +0 -5
  462. package/package.json +96 -30
  463. package/style/animation/Animation.module.css +174 -0
  464. package/style/base.css +64 -0
  465. package/style/index.css +6 -0
  466. package/lib/__tests__/App.test.js +0 -17
  467. package/lib/api/runtimes/models.d.ts +0 -59
  468. package/lib/api/runtimes/models.js +0 -11
  469. package/lib/hooks/useRun.d.ts +0 -21
  470. package/lib/mocks/hooks/useRunMock.d.ts +0 -6
  471. /package/lib/api/{runtimes → jupyter}/exec/Python.d.ts +0 -0
  472. /package/lib/api/{runtimes → jupyter}/exec/Snippets.d.ts +0 -0
  473. /package/lib/api/{runtimes → jupyter}/exec/index.d.ts +0 -0
  474. /package/lib/{__tests__/App.test.d.ts → examples/main.d.ts} +0 -0
@@ -2,28 +2,23 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  /**
11
- * Datalayer Jupyter API interface.
6
+ * Runtimes APIs.
12
7
  */
13
8
  import { URLExt } from '@jupyterlab/coreutils';
14
9
  import { PromiseDelegate } from '@lumino/coreutils';
15
10
  import { Upload } from 'tus-js-client';
16
- import { requestRunAPI } from '..';
11
+ import { requestDatalayerAPI, } from '..';
17
12
  import { asRuntimeSnapshot } from '../../models';
18
13
  import { iamStore, runtimesStore } from '../../state';
19
14
  import { sleep } from '../../utils';
20
15
  /**
21
- * Get available environments.
16
+ * Get available Environments.
22
17
  */
23
18
  export async function getEnvironments() {
24
- const data = await requestRunAPI({
19
+ const data = await requestDatalayerAPI({
25
20
  url: URLExt.join(runtimesStore.getState().runtimesRunUrl, 'api/runtimes/v1/environments'),
26
- token: iamStore.getState().token
21
+ token: iamStore.getState().token,
27
22
  });
28
23
  if (!data.success) {
29
24
  console.error('Failed to fetch available environments.', data);
@@ -32,7 +27,7 @@ export async function getEnvironments() {
32
27
  return data.environments ?? [];
33
28
  }
34
29
  /**
35
- * Create a Kernel.
30
+ * Create a Runtime.
36
31
  */
37
32
  export async function createRuntime(options) {
38
33
  const { externalToken, token } = iamStore.getState();
@@ -40,7 +35,7 @@ export async function createRuntime(options) {
40
35
  environment_name: options.environmentName,
41
36
  type: options.type ?? 'notebook',
42
37
  given_name: options.givenName,
43
- credits_limit: options.creditsLimit
38
+ credits_limit: options.creditsLimit,
44
39
  };
45
40
  if (options.capabilities) {
46
41
  body['capabilities'] = options.capabilities;
@@ -48,17 +43,17 @@ export async function createRuntime(options) {
48
43
  if (options.snapshot) {
49
44
  body['from'] = options.snapshot;
50
45
  }
51
- const data = await requestRunAPI({
46
+ const data = await requestDatalayerAPI({
52
47
  url: URLExt.join(runtimesStore.getState().runtimesRunUrl, `api/runtimes/v1/runtimes`),
53
48
  method: 'POST',
54
49
  body,
55
50
  token: token,
56
51
  // externalToken may be needed for addons (like credits...).
57
- headers: externalToken ?
58
- {
59
- 'X-External-Token': externalToken
52
+ headers: externalToken
53
+ ? {
54
+ 'X-External-Token': externalToken,
60
55
  }
61
- : undefined
56
+ : undefined,
62
57
  });
63
58
  if (!data.success || !data.runtime) {
64
59
  const msg = `Failed to create a kernel for the environment ${options.environmentName}.`;
@@ -68,12 +63,12 @@ export async function createRuntime(options) {
68
63
  return data.runtime;
69
64
  }
70
65
  /**
71
- * List Runtimes
66
+ * Get the Runtimes.
72
67
  */
73
68
  export async function getRuntimes() {
74
- const data = await requestRunAPI({
69
+ const data = await requestDatalayerAPI({
75
70
  url: URLExt.join(runtimesStore.getState().runtimesRunUrl, 'api/runtimes/v1/runtimes'),
76
- token: iamStore.getState().token
71
+ token: iamStore.getState().token,
77
72
  });
78
73
  if (!data.success) {
79
74
  const msg = 'Failed to list the running kernels.';
@@ -83,38 +78,37 @@ export async function getRuntimes() {
83
78
  return data.runtimes ?? [];
84
79
  }
85
80
  /**
86
- * Remove a Kernel
81
+ * Delete a Runtime
87
82
  */
88
83
  export async function deleteRuntime(options) {
89
84
  const externalToken = iamStore.getState().externalToken;
90
- await requestRunAPI({
85
+ await requestDatalayerAPI({
91
86
  url: URLExt.join(runtimesStore.getState().runtimesRunUrl, `api/runtimes/v1/runtimes/${options.id}`) +
92
87
  URLExt.objectToQueryString(options.reason ? { reason: options.reason } : {}),
93
88
  method: 'DELETE',
94
89
  token: iamStore.getState().token,
95
90
  // externalToken may be needed for addons (like credits...).
96
- headers: externalToken ?
97
- {
98
- 'X-External-Token': externalToken
91
+ headers: externalToken
92
+ ? {
93
+ 'X-External-Token': externalToken,
99
94
  }
100
- :
101
- undefined
95
+ : undefined,
102
96
  });
103
97
  }
104
98
  /**
105
- * Snapshot a Kernel.
99
+ * Snapshot a Runtime.
106
100
  */
107
101
  export async function snapshotRuntime(options) {
108
- const data = await requestRunAPI({
102
+ const data = await requestDatalayerAPI({
109
103
  url: URLExt.join(runtimesStore.getState().runtimesRunUrl, 'api/runtimes/v1/runtime-snapshots'),
110
104
  method: 'POST',
111
105
  body: {
112
106
  pod_name: options.id,
113
107
  name: options.name,
114
108
  description: options.description,
115
- stop: options.stop
109
+ stop: options.stop,
116
110
  },
117
- token: iamStore.getState().token
111
+ token: iamStore.getState().token,
118
112
  });
119
113
  if (!data.success || !data.snapshot) {
120
114
  throw new Error(`Failed to pause the kernel snapshot ${options.id} - ${data}`);
@@ -122,12 +116,12 @@ export async function snapshotRuntime(options) {
122
116
  return asRuntimeSnapshot(data.snapshot);
123
117
  }
124
118
  /**
125
- * Get Kernel Snapshots.
119
+ * Get Runtime Snapshots.
126
120
  */
127
121
  export async function getRuntimeSnapshots() {
128
- const data = await requestRunAPI({
122
+ const data = await requestDatalayerAPI({
129
123
  url: URLExt.join(runtimesStore.getState().runtimesRunUrl, 'api/runtimes/v1/runtime-snapshots'),
130
- token: iamStore.getState().token
124
+ token: iamStore.getState().token,
131
125
  });
132
126
  if (!data.success) {
133
127
  console.error('Failed to fetch kernel snapshots.', data);
@@ -136,23 +130,23 @@ export async function getRuntimeSnapshots() {
136
130
  return (data.snapshots ?? []).map(asRuntimeSnapshot);
137
131
  }
138
132
  /**
139
- * Load a kernel snapshot within a kernel.
133
+ * Load a Runtime Snapshot within a kernel.
140
134
  */
141
135
  export async function loadRuntimeSnapshot(options) {
142
- const data = await requestRunAPI({
136
+ const data = await requestDatalayerAPI({
143
137
  url: URLExt.join(runtimesStore.getState().runtimesRunUrl, 'api/runtimes/v1/runtimes', options.id),
144
138
  method: 'PUT',
145
139
  body: {
146
- from: options.from
140
+ from: options.from,
147
141
  },
148
- token: iamStore.getState().token
142
+ token: iamStore.getState().token,
149
143
  });
150
144
  if (!data.success) {
151
145
  throw new Error(`Failed to load the kernel snapshot; ${data.message}`);
152
146
  }
153
147
  }
154
148
  /**
155
- * Returns the runtime snapshot download URL.
149
+ * Returns the Runtime Snapshot download URL.
156
150
  *
157
151
  * @param id Snapshot UID to download
158
152
  * @returns The download URL
@@ -161,11 +155,11 @@ export function createRuntimeSnapshotDownloadURL(id) {
161
155
  return (URLExt.join(runtimesStore.getState().runtimesRunUrl, `api/runtimes/v1/runtime-snapshots/${id}`) +
162
156
  URLExt.objectToQueryString({
163
157
  download: '1',
164
- token: iamStore.getState().token ?? ''
158
+ token: iamStore.getState().token ?? '',
165
159
  }));
166
160
  }
167
161
  /**
168
- * Export runtime snapshot.
162
+ * Export a Runtime Snapshot.
169
163
  *
170
164
  * @param id Runtime snapshot UID to download
171
165
  */
@@ -179,23 +173,23 @@ export function exportRuntimeSnapshot(id) {
179
173
  document.body.removeChild(element);
180
174
  }
181
175
  /**
182
- * Delete runtime snapshot.
176
+ * Delete a Runtime Snapshot.
183
177
  */
184
178
  export async function deleteRuntimeSnapshot(id) {
185
- await requestRunAPI({
179
+ await requestDatalayerAPI({
186
180
  url: URLExt.join(runtimesStore.getState().runtimesRunUrl, `api/runtimes/v1/runtime-snapshots/${id}`),
187
181
  method: 'DELETE',
188
- token: iamStore.getState().token
182
+ token: iamStore.getState().token,
189
183
  });
190
- // Poll runtime snapshot state upto its deletion
184
+ // Poll Runtime Snapshot state up-to its deletion
191
185
  try {
192
186
  let sleepTimeout = 1000;
193
187
  while (true) {
194
188
  await sleep(sleepTimeout);
195
189
  sleepTimeout *= 2;
196
- const response = await requestRunAPI({
190
+ const response = await requestDatalayerAPI({
197
191
  url: URLExt.join(runtimesStore.getState().runtimesRunUrl, `api/runtimes/v1/runtime-snapshots/${id}`),
198
- token: iamStore.getState().token
192
+ token: iamStore.getState().token,
199
193
  });
200
194
  if (response.success === false) {
201
195
  throw new Error(response.message);
@@ -213,26 +207,26 @@ export async function deleteRuntimeSnapshot(id) {
213
207
  }
214
208
  }
215
209
  /**
216
- * Update runtime snapshot metadata.
210
+ * Update Runtime Snapshot metadata.
217
211
  */
218
212
  export async function updateRuntimeSnapshot(id, metadata) {
219
213
  if (metadata.name || metadata.description) {
220
- await requestRunAPI({
214
+ await requestDatalayerAPI({
221
215
  url: URLExt.join(runtimesStore.getState().runtimesRunUrl, `api/runtimes/v1/runtime-snapshots/${id}`),
222
216
  method: 'PATCH',
223
217
  body: { ...metadata },
224
- token: iamStore.getState().token
218
+ token: iamStore.getState().token,
225
219
  });
226
220
  }
227
221
  }
228
222
  /**
229
- * Upload a runtime snapshot.
223
+ * Upload a Runtime Snapshot.
230
224
  *
231
225
  * Note: The promise will be rejected if the runtime state is empty.
232
226
  */
233
227
  export async function uploadRuntimeSnapshot(options) {
234
228
  if (options.file.size === 0) {
235
- return Promise.reject('Empty runtime snapshot');
229
+ return Promise.reject('Empty Runtime Snapshot.');
236
230
  }
237
231
  const tracker = new PromiseDelegate();
238
232
  // Create a new tus upload.
@@ -255,7 +249,7 @@ export async function uploadRuntimeSnapshot(options) {
255
249
  // Callback for once the upload is completed.
256
250
  onSuccess: () => {
257
251
  tracker.resolve();
258
- }
252
+ },
259
253
  });
260
254
  // Check if there are any previous uploads to continue then start the upload.
261
255
  const previousUploads = await upload.findPreviousUploads();
@@ -1,15 +1,18 @@
1
+ /**
2
+ * Runtimes APIs.
3
+ */
1
4
  import { ISessionContext } from '@jupyterlab/apputils';
2
5
  import { ServiceManager, Kernel, ServerConnection } from '@jupyterlab/services';
3
6
  import { IDisposable } from '@lumino/disposable';
4
7
  import { ISignal } from '@lumino/signaling';
5
- import type { IRuntimeSnapshot, IRuntimeCapabilities } from '../../models';
6
- import { IDatalayerEnvironment, IRuntimePod, IRuntimeType } from '../../models';
7
- import type { IRuntimeModel, RuntimeLocation } from './models';
8
+ import type { IRuntimeSnapshot, IRuntimeCapabilities, IRuntimeModel, IDatalayerEnvironment, IRuntimeType, IRuntimeLocation } from '../../models';
8
9
  /**
9
- *
10
+ * Abstract interface for the Datalayer session context.
11
+ * It extends the JupyterLab session context
12
+ * to include the runtime location.
10
13
  */
11
14
  export interface IDatalayerSessionContext extends ISessionContext {
12
- get location(): RuntimeLocation;
15
+ get location(): IRuntimeLocation;
13
16
  }
14
17
  /**
15
18
  * Runtime creation options
@@ -268,103 +271,3 @@ export interface IMultiServiceManager extends ServiceManager.IManager {
268
271
  */
269
272
  readonly remoteChanged: ISignal<ServiceManager.IManager, IRemoteServicesManager | undefined>;
270
273
  }
271
- /**
272
- * Get available environments.
273
- */
274
- export declare function getEnvironments(): Promise<IDatalayerEnvironment[]>;
275
- /**
276
- * Create a Kernel.
277
- */
278
- export declare function createRuntime(options: IRuntimeOptions): Promise<IRuntimePod>;
279
- /**
280
- * List Runtimes
281
- */
282
- export declare function getRuntimes(): Promise<IRuntimePod[]>;
283
- /**
284
- * Remove a Kernel
285
- */
286
- export declare function deleteRuntime(options: {
287
- /**
288
- * Kernel ID
289
- */
290
- id: string;
291
- /**
292
- * Deletion reason
293
- */
294
- reason?: string;
295
- }): Promise<void>;
296
- /**
297
- * Snapshot a Kernel.
298
- */
299
- export declare function snapshotRuntime(options: {
300
- /**
301
- * Kernel ID.
302
- */
303
- id: string;
304
- /**
305
- * Snapshot name.
306
- */
307
- name?: string;
308
- /**
309
- * Snapshot description.
310
- */
311
- description?: string;
312
- /**
313
- * Whether to stop the kernel after the snapshot completion or not.
314
- */
315
- stop?: boolean;
316
- }): Promise<IRuntimeSnapshot>;
317
- /**
318
- * Get Kernel Snapshots.
319
- */
320
- export declare function getRuntimeSnapshots(): Promise<IRuntimeSnapshot[]>;
321
- /**
322
- * Load a kernel snapshot within a kernel.
323
- */
324
- export declare function loadRuntimeSnapshot(options: {
325
- /**
326
- * Kernel ID
327
- */
328
- id: string;
329
- /**
330
- * Snapshot UID
331
- */
332
- from: string;
333
- }): Promise<void>;
334
- /**
335
- * Returns the runtime snapshot download URL.
336
- *
337
- * @param id Snapshot UID to download
338
- * @returns The download URL
339
- */
340
- export declare function createRuntimeSnapshotDownloadURL(id: string): string;
341
- /**
342
- * Export runtime snapshot.
343
- *
344
- * @param id Runtime snapshot UID to download
345
- */
346
- export declare function exportRuntimeSnapshot(id: string): void;
347
- /**
348
- * Delete runtime snapshot.
349
- */
350
- export declare function deleteRuntimeSnapshot(id: string): Promise<void>;
351
- /**
352
- * Update runtime snapshot metadata.
353
- */
354
- export declare function updateRuntimeSnapshot(id: string, metadata: {
355
- name?: string;
356
- description?: string;
357
- }): Promise<void>;
358
- /**
359
- * Upload a runtime snapshot.
360
- *
361
- * Note: The promise will be rejected if the runtime state is empty.
362
- */
363
- export declare function uploadRuntimeSnapshot(options: {
364
- file: File | Blob;
365
- metadata: {
366
- filename: string;
367
- [key: string]: string;
368
- };
369
- onProgress?: (bytesUploaded: number, bytesTotal: number) => void;
370
- }): Promise<void>;
@@ -0,0 +1,5 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ export {};
@@ -1,7 +1,5 @@
1
- export * from './exec';
2
- export * from './kernelsHandler';
3
- export * from './models';
4
- export * from './runtimesApi';
1
+ export * from './actions';
2
+ export * from './apis';
5
3
  export * from './settings';
6
4
  export * from './snapshots';
7
5
  export * from './utils';
@@ -2,15 +2,8 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
- export * from './exec';
11
- export * from './kernelsHandler';
12
- export * from './models';
13
- export * from './runtimesApi';
5
+ export * from './actions';
6
+ export * from './apis';
14
7
  export * from './settings';
15
8
  export * from './snapshots';
16
9
  export * from './utils';
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  import { ServerConnection } from '@jupyterlab/services';
11
6
  /**
12
7
  * Create a settings object given a subset of options.
@@ -26,11 +21,11 @@ export function makeDatalayerSettings(baseUrl, token, wsUrl) {
26
21
  init: {
27
22
  mode: 'cors',
28
23
  credentials: 'include',
29
- cache: 'no-store'
30
- }
24
+ cache: 'no-store',
25
+ },
31
26
  });
32
27
  return serverSettings;
33
28
  }
34
29
  export default {
35
- makeDatalayerSettings
30
+ makeDatalayerSettings,
36
31
  };
@@ -18,7 +18,7 @@ export declare function createRuntimeSnapshot(props: Props): Promise<void>;
18
18
  *
19
19
  * Note: You should use this only for browser kernels.
20
20
  */
21
- export declare function loadBrowserRuntimeSnapshot({ connection, id }: {
21
+ export declare function loadBrowserRuntimeSnapshot({ connection, id, }: {
22
22
  connection: Kernel.IKernelConnection;
23
23
  id: string;
24
24
  }): Promise<void>;
@@ -2,11 +2,6 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
5
  import { KernelExecutor } from '@datalayer/jupyter-react';
11
6
  import { createRuntimeSnapshotDownloadURL, uploadRuntimeSnapshot } from '.';
12
7
  /**
@@ -16,18 +11,18 @@ import { createRuntimeSnapshotDownloadURL, uploadRuntimeSnapshot } from '.';
16
11
  */
17
12
  export async function createRuntimeSnapshot(props) {
18
13
  const { connection, metadata, onUploadProgress } = props;
19
- const dump = await new KernelExecutor({ connection })
20
- .execute(GET_RUNTIME_SNAPSHOT_SNIPPET, {
21
- storeHistory: false
14
+ const dump = await new KernelExecutor({ connection }).execute(GET_RUNTIME_SNAPSHOT_SNIPPET, {
15
+ storeHistory: false,
22
16
  });
23
- const serializedData = (dump.get(0)?.data['application/vnd.jupyter.stdout'] ?? '');
17
+ const serializedData = (dump.get(0)?.data['application/vnd.jupyter.stdout'] ??
18
+ '');
24
19
  // Convert the data to blob.
25
20
  const bytes = base64ToBytes(serializedData);
26
21
  const file = new Blob([bytes.buffer]);
27
22
  return uploadRuntimeSnapshot({
28
23
  file,
29
24
  metadata,
30
- onProgress: onUploadProgress
25
+ onProgress: onUploadProgress,
31
26
  });
32
27
  }
33
28
  function base64ToBytes(base64) {
@@ -41,16 +36,16 @@ function base64ToBytes(base64) {
41
36
  *
42
37
  * Note: You should use this only for browser kernels.
43
38
  */
44
- export async function loadBrowserRuntimeSnapshot({ connection, id }) {
39
+ export async function loadBrowserRuntimeSnapshot({ connection, id, }) {
45
40
  const downloadURL = createRuntimeSnapshotDownloadURL(id);
46
41
  const response = await fetch(downloadURL);
47
42
  const buffer = await response.arrayBuffer();
48
43
  const base64 = bytesToBase64(new Uint8Array(buffer));
49
44
  await new KernelExecutor({
50
- connection
45
+ connection,
51
46
  }).execute(getLoadRuntimeSnapshotSnippet(base64), {
52
47
  storeHistory: false,
53
- silent: true
48
+ silent: true,
54
49
  });
55
50
  }
56
51
  function bytesToBase64(bytes) {
@@ -2,15 +2,7 @@
2
2
  * Copyright (c) 2023-2025 Datalayer, Inc.
3
3
  * Distributed under the terms of the Modified BSD License.
4
4
  */
5
- /*
6
- * Copyright (c) 2021-2024 Datalayer, Inc.
7
- *
8
- * Datalayer License
9
- */
10
- const NON_REMOTE_LOCATION = [
11
- 'browser',
12
- 'local',
13
- ];
5
+ const NON_REMOTE_LOCATION = ['browser', 'local'];
14
6
  /**
15
7
  * Check whether the location is remote or not.
16
8
  *
@@ -0,0 +1 @@
1
+ <svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="iconify iconify--logos" width="35.93" height="32" preserveAspectRatio="xMidYMid meet" viewBox="0 0 256 228"><path fill="#00D8FF" d="M210.483 73.824a171.49 171.49 0 0 0-8.24-2.597c.465-1.9.893-3.777 1.273-5.621c6.238-30.281 2.16-54.676-11.769-62.708c-13.355-7.7-35.196.329-57.254 19.526a171.23 171.23 0 0 0-6.375 5.848a155.866 155.866 0 0 0-4.241-3.917C100.759 3.829 77.587-4.822 63.673 3.233C50.33 10.957 46.379 33.89 51.995 62.588a170.974 170.974 0 0 0 1.892 8.48c-3.28.932-6.445 1.924-9.474 2.98C17.309 83.498 0 98.307 0 113.668c0 15.865 18.582 31.778 46.812 41.427a145.52 145.52 0 0 0 6.921 2.165a167.467 167.467 0 0 0-2.01 9.138c-5.354 28.2-1.173 50.591 12.134 58.266c13.744 7.926 36.812-.22 59.273-19.855a145.567 145.567 0 0 0 5.342-4.923a168.064 168.064 0 0 0 6.92 6.314c21.758 18.722 43.246 26.282 56.54 18.586c13.731-7.949 18.194-32.003 12.4-61.268a145.016 145.016 0 0 0-1.535-6.842c1.62-.48 3.21-.974 4.76-1.488c29.348-9.723 48.443-25.443 48.443-41.52c0-15.417-17.868-30.326-45.517-39.844Zm-6.365 70.984c-1.4.463-2.836.91-4.3 1.345c-3.24-10.257-7.612-21.163-12.963-32.432c5.106-11 9.31-21.767 12.459-31.957c2.619.758 5.16 1.557 7.61 2.4c23.69 8.156 38.14 20.213 38.14 29.504c0 9.896-15.606 22.743-40.946 31.14Zm-10.514 20.834c2.562 12.94 2.927 24.64 1.23 33.787c-1.524 8.219-4.59 13.698-8.382 15.893c-8.067 4.67-25.32-1.4-43.927-17.412a156.726 156.726 0 0 1-6.437-5.87c7.214-7.889 14.423-17.06 21.459-27.246c12.376-1.098 24.068-2.894 34.671-5.345a134.17 134.17 0 0 1 1.386 6.193ZM87.276 214.515c-7.882 2.783-14.16 2.863-17.955.675c-8.075-4.657-11.432-22.636-6.853-46.752a156.923 156.923 0 0 1 1.869-8.499c10.486 2.32 22.093 3.988 34.498 4.994c7.084 9.967 14.501 19.128 21.976 27.15a134.668 134.668 0 0 1-4.877 4.492c-9.933 8.682-19.886 14.842-28.658 17.94ZM50.35 144.747c-12.483-4.267-22.792-9.812-29.858-15.863c-6.35-5.437-9.555-10.836-9.555-15.216c0-9.322 13.897-21.212 37.076-29.293c2.813-.98 5.757-1.905 8.812-2.773c3.204 10.42 7.406 21.315 12.477 32.332c-5.137 11.18-9.399 22.249-12.634 32.792a134.718 134.718 0 0 1-6.318-1.979Zm12.378-84.26c-4.811-24.587-1.616-43.134 6.425-47.789c8.564-4.958 27.502 2.111 47.463 19.835a144.318 144.318 0 0 1 3.841 3.545c-7.438 7.987-14.787 17.08-21.808 26.988c-12.04 1.116-23.565 2.908-34.161 5.309a160.342 160.342 0 0 1-1.76-7.887Zm110.427 27.268a347.8 347.8 0 0 0-7.785-12.803c8.168 1.033 15.994 2.404 23.343 4.08c-2.206 7.072-4.956 14.465-8.193 22.045a381.151 381.151 0 0 0-7.365-13.322Zm-45.032-43.861c5.044 5.465 10.096 11.566 15.065 18.186a322.04 322.04 0 0 0-30.257-.006c4.974-6.559 10.069-12.652 15.192-18.18ZM82.802 87.83a323.167 323.167 0 0 0-7.227 13.238c-3.184-7.553-5.909-14.98-8.134-22.152c7.304-1.634 15.093-2.97 23.209-3.984a321.524 321.524 0 0 0-7.848 12.897Zm8.081 65.352c-8.385-.936-16.291-2.203-23.593-3.793c2.26-7.3 5.045-14.885 8.298-22.6a321.187 321.187 0 0 0 7.257 13.246c2.594 4.48 5.28 8.868 8.038 13.147Zm37.542 31.03c-5.184-5.592-10.354-11.779-15.403-18.433c4.902.192 9.899.29 14.978.29c5.218 0 10.376-.117 15.453-.343c-4.985 6.774-10.018 12.97-15.028 18.486Zm52.198-57.817c3.422 7.8 6.306 15.345 8.596 22.52c-7.422 1.694-15.436 3.058-23.88 4.071a382.417 382.417 0 0 0 7.859-13.026a347.403 347.403 0 0 0 7.425-13.565Zm-16.898 8.101a358.557 358.557 0 0 1-12.281 19.815a329.4 329.4 0 0 1-23.444.823c-7.967 0-15.716-.248-23.178-.732a310.202 310.202 0 0 1-12.513-19.846h.001a307.41 307.41 0 0 1-10.923-20.627a310.278 310.278 0 0 1 10.89-20.637l-.001.001a307.318 307.318 0 0 1 12.413-19.761c7.613-.576 15.42-.876 23.31-.876H128c7.926 0 15.743.303 23.354.883a329.357 329.357 0 0 1 12.335 19.695a358.489 358.489 0 0 1 11.036 20.54a329.472 329.472 0 0 1-11 20.722Zm22.56-122.124c8.572 4.944 11.906 24.881 6.52 51.026c-.344 1.668-.73 3.367-1.15 5.09c-10.622-2.452-22.155-4.275-34.23-5.408c-7.034-10.017-14.323-19.124-21.64-27.008a160.789 160.789 0 0 1 5.888-5.4c18.9-16.447 36.564-22.941 44.612-18.3ZM128 90.808c12.625 0 22.86 10.235 22.86 22.86s-10.235 22.86-22.86 22.86s-22.86-10.235-22.86-22.86s10.235-22.86 22.86-22.86Z"></path></svg>
@@ -0,0 +1,9 @@
1
+ type IFetchSessionId = {
2
+ url: string;
3
+ token?: string;
4
+ };
5
+ /**
6
+ * Fetch the session ID of a collaborative documents from Datalayer.
7
+ */
8
+ export declare function requestDatalayerCollaborationSessionId({ url, token, }: IFetchSessionId): Promise<string>;
9
+ export {};
@@ -0,0 +1,28 @@
1
+ /*
2
+ * Copyright (c) 2023-2025 Datalayer, Inc.
3
+ * Distributed under the terms of the Modified BSD License.
4
+ */
5
+ /**
6
+ * Fetch the session ID of a collaborative documents from Datalayer.
7
+ */
8
+ export async function requestDatalayerCollaborationSessionId({ url, token, }) {
9
+ const headers = {
10
+ Accept: 'application/json',
11
+ };
12
+ if (token) {
13
+ headers['Authorization'] = `Bearer ${token}`;
14
+ }
15
+ const response = await fetch(url, {
16
+ method: 'GET',
17
+ headers,
18
+ credentials: token ? 'include' : 'omit',
19
+ mode: 'cors',
20
+ cache: 'no-store',
21
+ });
22
+ if (response.ok) {
23
+ const content = await response.json();
24
+ return content['sessionId'];
25
+ }
26
+ console.error('Failed to fetch session ID.', response);
27
+ throw new Error('Failed to fetch session ID.');
28
+ }
@@ -0,0 +1,54 @@
1
+ import { YNotebook } from '@jupyter/ydoc';
2
+ import { WebsocketProvider } from 'y-websocket';
3
+ import type { ICollaborationProvider, ICollaborationProviderEvents } from '@datalayer/jupyter-react';
4
+ declare enum CollaborationStatus {
5
+ Disconnected = "disconnected",
6
+ Connecting = "connecting",
7
+ Connected = "connected",
8
+ Error = "error"
9
+ }
10
+ /**
11
+ * Configuration for Datalayer collaboration provider
12
+ */
13
+ export interface IDatalayerCollaborationConfig {
14
+ /**
15
+ * Base URL for the Datalayer server (optional, uses config from store if not provided)
16
+ */
17
+ runUrl?: string;
18
+ /**
19
+ * Authentication token (optional, uses config from store if not provided)
20
+ */
21
+ token?: string;
22
+ }
23
+ /**
24
+ * Datalayer collaboration provider
25
+ *
26
+ * This provider connects to Datalayer's collaboration service using WebSockets.
27
+ */
28
+ export declare class DatalayerCollaborationProvider implements ICollaborationProvider {
29
+ readonly type = "datalayer";
30
+ private _status;
31
+ private _provider;
32
+ private _sharedModel;
33
+ private _statusChanged;
34
+ private _errorOccurred;
35
+ private _syncStateChanged;
36
+ private _isDisposed;
37
+ private _config;
38
+ private _onSync;
39
+ private _onConnectionClose;
40
+ constructor(config: IDatalayerCollaborationConfig);
41
+ get status(): CollaborationStatus;
42
+ get isConnected(): boolean;
43
+ get isDisposed(): boolean;
44
+ get events(): ICollaborationProviderEvents;
45
+ private setStatus;
46
+ connect(sharedModel: YNotebook, documentId: string, options?: Record<string, any>): Promise<void>;
47
+ disconnect(): void;
48
+ getProvider(): WebsocketProvider | null;
49
+ getSharedModel(): YNotebook | null;
50
+ handleConnectionClose(event: CloseEvent): void;
51
+ handleSync(isSynced: boolean): void;
52
+ dispose(): void;
53
+ }
54
+ export default DatalayerCollaborationProvider;