@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.
- package/README.md +124 -2
- package/lib/App.css +47 -0
- package/lib/App.js +14 -2
- package/lib/__tests__/index.test.js +7 -6
- package/lib/api/{RunApi.d.ts → DatalayerApi.d.ts} +4 -4
- package/lib/api/{RunApi.js → DatalayerApi.js} +6 -11
- package/lib/api/index.d.ts +3 -2
- package/lib/api/index.js +3 -7
- package/lib/api/{runtimes → jupyter}/exec/Python.js +0 -5
- package/lib/api/{runtimes → jupyter}/exec/Snippets.js +0 -5
- package/lib/api/{runtimes → jupyter}/exec/index.js +0 -5
- package/lib/api/jupyter/index.d.ts +2 -0
- package/lib/api/jupyter/index.js +6 -0
- package/lib/api/{runtimes → jupyter}/kernelsHandler.d.ts +1 -1
- package/lib/api/{runtimes → jupyter}/kernelsHandler.js +1 -6
- package/lib/api/runtimes/actions.d.ts +102 -0
- package/lib/api/runtimes/{runtimesApi.js → actions.js} +47 -53
- package/lib/api/runtimes/{runtimesApi.d.ts → apis.d.ts} +8 -105
- package/lib/api/runtimes/apis.js +5 -0
- package/lib/api/runtimes/index.d.ts +2 -4
- package/lib/api/runtimes/index.js +2 -9
- package/lib/api/runtimes/settings.js +3 -8
- package/lib/api/runtimes/snapshots.d.ts +1 -1
- package/lib/api/runtimes/snapshots.js +8 -13
- package/lib/api/runtimes/utils.js +1 -9
- package/lib/assets/react.svg +1 -0
- package/lib/collaboration/DatalayerCollaboration.d.ts +9 -0
- package/lib/collaboration/DatalayerCollaboration.js +28 -0
- package/lib/collaboration/DatalayerCollaborationProvider.d.ts +54 -0
- package/lib/collaboration/DatalayerCollaborationProvider.js +162 -0
- package/lib/collaboration/index.d.ts +2 -0
- package/lib/collaboration/index.js +6 -0
- package/lib/components/avatars/BoringAvatar.d.ts +2 -3
- package/lib/components/avatars/BoringAvatar.js +14 -9
- package/lib/components/avatars/BoringAvatar.stories.d.ts +27 -0
- package/lib/components/avatars/BoringAvatar.stories.js +23 -0
- package/lib/components/avatars/UserProfileAvatar.js +2 -14
- package/lib/components/avatars/index.js +0 -5
- package/lib/components/banners/NoAutomationBanner.js +4 -9
- package/lib/components/banners/index.js +0 -5
- package/lib/components/buttons/DownloadCSVButton.d.ts +1 -1
- package/lib/components/buttons/DownloadCSVButton.js +1 -6
- package/lib/components/buttons/DownloadJsonButton.d.ts +1 -1
- package/lib/components/buttons/DownloadJsonButton.js +0 -5
- package/lib/components/buttons/LongActionButton.js +0 -5
- package/lib/components/buttons/UploadButton.js +1 -6
- package/lib/components/buttons/index.js +0 -5
- package/lib/components/checkout/StripeCheckout.d.ts +1 -1
- package/lib/components/checkout/StripeCheckout.js +6 -11
- package/lib/components/checkout/index.js +0 -5
- package/lib/components/confetti/ConfettiSuccess.js +1 -6
- package/lib/components/confetti/index.js +0 -5
- package/lib/components/context/OrganizationSelect.js +5 -10
- package/lib/components/context/SpaceSelect.js +7 -12
- package/lib/components/context/index.js +0 -5
- package/lib/components/display/AvatarSkeleton.js +1 -6
- package/lib/components/display/CenteredSpinner.js +4 -9
- package/lib/components/display/CodePreview.js +4 -9
- package/lib/components/display/DatalayerBox.js +13 -19
- package/lib/components/display/HorizontalCenter.d.ts +1 -1
- package/lib/components/display/HorizontalCenter.js +1 -1
- package/lib/components/display/JupyterDialog.js +17 -20
- package/lib/components/display/NavLink.d.ts +4 -2
- package/lib/components/display/NavLink.js +6 -9
- package/lib/components/display/NotebookSkeleton.js +2 -7
- package/lib/components/display/Placeholder.js +1 -6
- package/lib/components/display/ToTopBranded.js +1 -6
- package/lib/components/display/VisuallyHidden.js +0 -5
- package/lib/components/display/index.js +0 -5
- package/lib/components/echarts/EChartsReact.d.ts +1 -1
- package/lib/components/echarts/EChartsReact.js +7 -7
- package/lib/components/echarts/index.js +0 -5
- package/lib/components/flashes/FlashClosable.js +11 -16
- package/lib/components/flashes/FlashDisclaimer.js +2 -8
- package/lib/components/flashes/FlashGuest.js +3 -9
- package/lib/components/flashes/FlashSurveys.js +3 -9
- package/lib/components/flashes/FlashUnauthorized.js +2 -7
- package/lib/components/flashes/index.js +0 -5
- package/lib/components/flashes/surveys/Survey2025_1.d.ts +1 -1
- package/lib/components/flashes/surveys/Survey2025_1.js +62 -90
- package/lib/components/flashes/surveys/index.js +0 -5
- package/lib/components/iam/ExternalTokenSilentLogin.js +6 -9
- package/lib/components/iam/index.js +0 -5
- package/lib/components/icons/ArtifactIcon.d.ts +2 -2
- package/lib/components/icons/ArtifactIcon.js +39 -44
- package/lib/components/icons/index.js +0 -5
- package/lib/components/index.js +1 -6
- package/lib/components/labels/VisibilityLabel.js +2 -10
- package/lib/components/labels/index.js +0 -5
- package/lib/components/landings/StepBlock.d.ts +1 -1
- package/lib/components/landings/StepBlock.js +1 -6
- package/lib/components/landings/index.js +0 -5
- package/lib/components/navbar/NavigationVisbilityObserver.js +2 -7
- package/lib/components/navbar/SubdomainNavBar.js +46 -29
- package/lib/components/navbar/SubdomainNavBar.module.css +737 -0
- package/lib/components/navbar/index.js +0 -5
- package/lib/components/nbgrader/NbGradesDetails.d.ts +1 -1
- package/lib/components/nbgrader/NbGradesDetails.js +5 -13
- package/lib/components/nbgrader/index.js +0 -5
- package/lib/components/notebooks/JupyterNotebook.js +5 -10
- package/lib/components/notebooks/JupyterNotebookToolbar.js +3 -8
- package/lib/components/notebooks/index.js +0 -5
- package/lib/components/primer/Helper.d.ts +1 -1
- package/lib/components/primer/Helper.js +5 -3
- package/lib/components/primer/Portals.d.ts +1 -1
- package/lib/components/primer/Portals.js +2 -7
- package/lib/components/primer/Styles.js +1 -6
- package/lib/components/primer/index.js +0 -5
- package/lib/components/progress/ConsumptionBar.js +2 -7
- package/lib/components/progress/CreditsIndicator.d.ts +1 -1
- package/lib/components/progress/CreditsIndicator.js +4 -13
- package/lib/components/progress/ProgressBar.js +0 -5
- package/lib/components/progress/ProgressRing.js +2 -2
- package/lib/components/progress/Timer.js +0 -5
- package/lib/components/progress/index.js +0 -5
- package/lib/components/runtimes/RuntimeCellVariables.js +9 -14
- package/lib/components/runtimes/RuntimeCellVariablesDialog.js +7 -12
- package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +1 -2
- package/lib/components/runtimes/RuntimeLauncherDialog.js +32 -40
- package/lib/components/runtimes/RuntimePickerBase.d.ts +1 -1
- package/lib/components/runtimes/RuntimePickerBase.js +42 -36
- package/lib/components/runtimes/RuntimePickerCell.js +9 -17
- package/lib/components/runtimes/RuntimePickerNotebook.d.ts +1 -2
- package/lib/components/runtimes/RuntimePickerNotebook.js +45 -50
- package/lib/components/runtimes/RuntimeReservationControl.js +10 -20
- package/lib/components/runtimes/RuntimeSimplePicker.d.ts +1 -1
- package/lib/components/runtimes/RuntimeSimplePicker.js +44 -52
- package/lib/components/runtimes/RuntimeUtils.d.ts +1 -1
- package/lib/components/runtimes/RuntimeUtils.js +22 -17
- package/lib/components/runtimes/RuntimeVariables.js +7 -12
- package/lib/components/runtimes/index.js +0 -5
- package/lib/components/screenshot/ScreenCapture.js +10 -19
- package/lib/components/screenshot/ScreenCaptureButton.d.ts +1 -1
- package/lib/components/screenshot/ScreenCaptureButton.js +14 -8
- package/lib/components/screenshot/index.js +0 -5
- package/lib/components/snapshots/RuntimeSnapshotMenu.js +19 -22
- package/lib/components/snapshots/index.js +0 -5
- package/lib/components/snippets/SnippetDialog.js +5 -10
- package/lib/components/snippets/index.js +0 -5
- package/lib/components/storage/ContentsBrowser.js +75 -63
- package/lib/components/storage/ContentsItems.js +10 -13
- package/lib/components/storage/index.js +0 -5
- package/lib/components/students/StudentItemStatus.d.ts +1 -1
- package/lib/components/students/StudentItemStatus.js +38 -21
- package/lib/components/students/index.js +0 -5
- package/lib/components/subnav/SubNav.d.ts +3 -3
- package/lib/components/subnav/SubNav.js +34 -24
- package/lib/components/subnav/SubNav.module.css +717 -0
- package/lib/components/subnav/index.js +0 -5
- package/lib/components/tables/DataTable.js +1 -9
- package/lib/components/tables/index.js +0 -5
- package/lib/components/text-reveal/TextRevealAnimation.js +7 -8
- package/lib/components/text-reveal/TextRevealAnimation.module.css +45 -0
- package/lib/components/text-reveal/index.js +0 -5
- package/lib/components/text-reveal/useTextRevealAnimationLines.js +0 -5
- package/lib/components/tokens/SpaceVariantToken.d.ts +1 -1
- package/lib/components/tokens/SpaceVariantToken.js +5 -10
- package/lib/components/tokens/index.js +0 -5
- package/lib/components/toolbars/AssignmentEditorToolbar.js +1 -8
- package/lib/components/toolbars/DocumentEditorToolbar.js +0 -5
- package/lib/components/toolbars/NotebookEditorToolbar.d.ts +1 -1
- package/lib/components/toolbars/NotebookEditorToolbar.js +0 -5
- package/lib/components/toolbars/index.js +0 -5
- package/lib/components/users/PeerIndicator.d.ts +1 -1
- package/lib/components/users/PeerIndicator.js +5 -10
- package/lib/components/users/index.js +0 -5
- package/lib/config/Configuration.d.ts +48 -0
- package/lib/config/Configuration.js +42 -5
- package/lib/config/index.js +0 -5
- package/lib/config/integrations/Loom.js +3 -8
- package/lib/config/integrations/index.js +0 -5
- package/lib/examples/CellExample.d.ts +6 -0
- package/lib/examples/CellExample.js +55 -0
- package/lib/examples/DatalayerNotebookExample.d.ts +16 -0
- package/lib/examples/DatalayerNotebookExample.js +75 -0
- package/lib/examples/NativeNavigationExample.d.ts +8 -0
- package/lib/examples/NativeNavigationExample.js +97 -0
- package/lib/examples/NotebookExample.d.ts +6 -0
- package/lib/examples/NotebookExample.js +24 -0
- package/lib/examples/NotebookMutationsKernel.d.ts +2 -0
- package/lib/examples/NotebookMutationsKernel.js +115 -0
- package/lib/examples/NotebookMutationsServiceManager.d.ts +2 -0
- package/lib/examples/NotebookMutationsServiceManager.js +107 -0
- package/lib/examples/ReactRouterExample.d.ts +6 -0
- package/lib/examples/ReactRouterExample.js +175 -0
- package/lib/examples/example-selector.d.ts +22 -0
- package/lib/examples/example-selector.js +45 -0
- package/lib/examples/index.d.ts +2 -0
- package/lib/examples/index.js +6 -0
- package/lib/examples/main.js +153 -0
- package/lib/examples/notebooks/IPyWidgetsExample.ipynb.json +101 -0
- package/lib/examples/notebooks/IPyWidgetsExampleWithState.ipynb.json +112 -0
- package/lib/examples/notebooks/Lite.ipynb.json +128 -0
- package/lib/examples/notebooks/Matplotlib.ipynb.json +137 -0
- package/lib/examples/notebooks/NotebookExample1.ipynb.json +126 -0
- package/lib/examples/notebooks/NotebookExample2.ipynb.json +48 -0
- package/lib/examples/notebooks/NotebookOutputs.ipynb.json +49 -0
- package/lib/examples/notebooks/NotebookToCExample.ipynb.json +102 -0
- package/lib/examples/notebooks/OutputIPyWidgetsExample.d.ts +145 -0
- package/lib/examples/notebooks/OutputIPyWidgetsExample.js +153 -0
- package/lib/examples/notebooks/PyGWalker.ipynb.json +55 -0
- package/lib/hooks/assets/OutputshotPlaceholders.d.ts +10 -10
- package/lib/hooks/assets/OutputshotPlaceholders.js +9 -14
- package/lib/hooks/assets/index.js +0 -5
- package/lib/hooks/index.d.ts +29 -28
- package/lib/hooks/index.js +29 -33
- package/lib/hooks/layouts/LayoutBackdrop.js +3 -11
- package/lib/hooks/layouts/LayoutScreenshot.css +58 -0
- package/lib/hooks/layouts/LayoutScreenshot.d.ts +1 -0
- package/lib/hooks/layouts/LayoutScreenshot.js +7 -11
- package/lib/hooks/layouts/index.js +0 -5
- package/lib/hooks/useAIAgents.d.ts +1 -1
- package/lib/hooks/useAIAgents.js +13 -18
- package/lib/hooks/useAuthorization.js +4 -10
- package/lib/hooks/useBackdrop.js +7 -12
- package/lib/hooks/useBackdropJupyterLab.d.ts +1 -1
- package/lib/hooks/useBackdropJupyterLab.js +4 -9
- package/lib/hooks/useCache.d.ts +8 -4
- package/lib/hooks/useCache.js +410 -361
- package/lib/hooks/useCellOutputshot.js +3 -11
- package/lib/hooks/useContainsFocus.js +2 -6
- package/lib/hooks/useDatalayer.d.ts +21 -0
- package/lib/hooks/{useRun.js → useDatalayer.js} +16 -18
- package/lib/hooks/useError.d.ts +1 -1
- package/lib/hooks/useError.js +2 -7
- package/lib/hooks/useExternalScript.js +4 -9
- package/lib/hooks/useFocusTrap.d.ts +1 -1
- package/lib/hooks/useFocusTrap.js +3 -7
- package/lib/hooks/useIAM.js +6 -12
- package/lib/hooks/useId.js +6 -11
- package/lib/hooks/useIsomorphicLayoutEffect.js +0 -5
- package/lib/hooks/useJupyterLabTheme.js +3 -6
- package/lib/hooks/useKeyboardEscape.js +0 -5
- package/lib/hooks/useLocation.d.ts +22 -0
- package/lib/hooks/useLocation.js +149 -0
- package/lib/hooks/useLocationHandles.d.ts +2 -2
- package/lib/hooks/useLocationHandles.js +6 -9
- package/lib/hooks/useNavigate.d.ts +5 -1
- package/lib/hooks/useNavigate.js +62 -12
- package/lib/hooks/useNotebookAIAgent.js +3 -6
- package/lib/hooks/useOnClickOutside.js +0 -5
- package/lib/hooks/useParams.d.ts +5 -0
- package/lib/hooks/useParams.js +152 -0
- package/lib/hooks/useRef.js +0 -5
- package/lib/hooks/useRuntimes.js +2 -7
- package/lib/hooks/useScreenshot.js +5 -10
- package/lib/hooks/useToast.js +21 -21
- package/lib/hooks/useUpload.js +9 -14
- package/lib/hooks/useUser.js +1 -1
- package/lib/hooks/useVisibilityObserver.js +0 -5
- package/lib/hooks/useWindowSize.js +0 -6
- package/lib/i18n/Labels.js +0 -5
- package/lib/i18n/index.js +0 -5
- package/lib/index.css +73 -0
- package/lib/index.d.ts +6 -3
- package/lib/index.js +7 -3
- package/lib/main.js +1 -2
- package/lib/mocks/components/FlashMock.js +4 -9
- package/lib/mocks/components/index.js +0 -5
- package/lib/mocks/hooks/index.d.ts +1 -1
- package/lib/mocks/hooks/index.js +1 -6
- package/lib/mocks/hooks/rests/index.js +0 -5
- package/lib/mocks/hooks/rests/rests.js +15 -23
- package/lib/mocks/hooks/useDatalayerMock.d.ts +6 -0
- package/lib/mocks/hooks/{useRunMock.js → useDatalayerMock.js} +9 -14
- package/lib/mocks/index.js +0 -5
- package/lib/mocks/jupyter/index.js +1 -6
- package/lib/mocks/models/CodeBlockMock.js +1 -6
- package/lib/mocks/models/CodelineMock.js +1 -6
- package/lib/mocks/models/CourseMock.d.ts +1 -1
- package/lib/mocks/models/CourseMock.js +10 -15
- package/lib/mocks/models/InviteMock.d.ts +1 -1
- package/lib/mocks/models/InviteMock.js +21 -11
- package/lib/mocks/models/JupyterLabUserMock.js +2 -2
- package/lib/mocks/models/OrganisationMock.d.ts +1 -1
- package/lib/mocks/models/OrganisationMock.js +11 -7
- package/lib/mocks/models/SchoolMock.d.ts +1 -1
- package/lib/mocks/models/SchoolMock.js +6 -6
- package/lib/mocks/models/SpaceMock.d.ts +1 -1
- package/lib/mocks/models/SpaceMock.js +9 -14
- package/lib/mocks/models/TeamMock.d.ts +1 -1
- package/lib/mocks/models/TeamMock.js +6 -6
- package/lib/mocks/models/UserMock.d.ts +1 -1
- package/lib/mocks/models/UserMock.js +4 -11
- package/lib/mocks/models/index.js +0 -5
- package/lib/mocks/views/ActionMenuMock.js +1 -6
- package/lib/mocks/views/ChartMock.js +3 -8
- package/lib/mocks/views/ChartMockOptions.js +24 -29
- package/lib/mocks/views/DashboardMock.js +74 -79
- package/lib/mocks/views/FormMock.js +1 -6
- package/lib/mocks/views/TableMock.js +1 -6
- package/lib/mocks/views/WipMock.js +0 -5
- package/lib/mocks/views/index.js +0 -5
- package/lib/models/Account.d.ts +2 -2
- package/lib/models/Assignment.d.ts +2 -2
- package/lib/models/Cell.d.ts +1 -1
- package/lib/models/CodeBlock.d.ts +1 -1
- package/lib/models/CodefeedBlocks.d.ts +2 -2
- package/lib/models/Contact.d.ts +1 -1
- package/lib/models/Contact.js +14 -19
- package/lib/models/ContactEvent.js +0 -5
- package/lib/models/ContactIAMProvider.js +2 -2
- package/lib/models/Course.d.ts +7 -7
- package/lib/models/Credits.js +0 -5
- package/lib/models/Dataset.d.ts +2 -2
- package/lib/models/Datasource.js +0 -5
- package/lib/models/Dean.d.ts +1 -1
- package/lib/models/Document.d.ts +1 -1
- package/lib/models/Environment.d.ts +2 -2
- package/lib/models/Errors.js +0 -5
- package/lib/models/Exercise.d.ts +1 -1
- package/lib/models/GrowthKPI.js +0 -5
- package/lib/models/IAMProviderLinked.js +1 -1
- package/lib/models/IAMProviderUsers.js +0 -5
- package/lib/models/IAMToken.js +0 -5
- package/lib/models/Inbound.js +0 -5
- package/lib/models/Instructor.d.ts +1 -1
- package/lib/models/Invite.d.ts +2 -2
- package/lib/models/Invite.js +1 -1
- package/lib/models/Item.d.ts +5 -5
- package/lib/models/LandingRoles.js +18 -23
- package/lib/models/Lesson.d.ts +1 -1
- package/lib/models/Member.d.ts +1 -1
- package/lib/models/Notebook.d.ts +1 -1
- package/lib/models/Organization.d.ts +4 -4
- package/lib/models/Organization.js +2 -7
- package/lib/models/OrganizationMember.d.ts +2 -2
- package/lib/models/Outbound.js +7 -12
- package/lib/models/Page.js +4 -2
- package/lib/models/PageTag.d.ts +2 -2
- package/lib/models/PageTag.js +56 -9
- package/lib/models/Profile.d.ts +1 -1
- package/lib/models/RolesOrganization.d.ts +1 -1
- package/lib/models/RolesOrganization.js +4 -17
- package/lib/models/RolesPlatform.d.ts +1 -1
- package/lib/models/RolesPlatform.js +12 -39
- package/lib/models/RolesTeam.d.ts +1 -1
- package/lib/models/RolesTeam.js +3 -15
- package/lib/models/Runtime.d.ts +59 -1
- package/lib/models/Runtime.js +11 -9
- package/lib/models/RuntimeSnapshot.js +1 -1
- package/lib/models/School.d.ts +4 -4
- package/lib/models/Secret.js +0 -5
- package/lib/models/Space.d.ts +5 -5
- package/lib/models/Space.js +3 -3
- package/lib/models/SpaceItem.d.ts +8 -8
- package/lib/models/SpaceMember.d.ts +2 -2
- package/lib/models/Student.d.ts +2 -2
- package/lib/models/StudentItem.d.ts +3 -3
- package/lib/models/Survey.js +0 -5
- package/lib/models/Team.d.ts +3 -3
- package/lib/models/Team.js +2 -7
- package/lib/models/TeamMember.d.ts +2 -2
- package/lib/models/URN.js +1 -6
- package/lib/models/User.d.ts +2 -2
- package/lib/models/User.js +7 -10
- package/lib/models/UserEvent.js +0 -5
- package/lib/models/UserOnboarding.d.ts +1 -1
- package/lib/models/UserOnboarding.js +7 -12
- package/lib/models/UserSettings.js +2 -7
- package/lib/models/index.d.ts +2 -2
- package/lib/models/index.js +2 -7
- package/lib/navigation/adapters/native.d.ts +11 -0
- package/lib/navigation/adapters/native.js +48 -0
- package/lib/navigation/adapters/nextjs.d.ts +9 -0
- package/lib/navigation/adapters/nextjs.js +35 -0
- package/lib/navigation/adapters/react-router.d.ts +4 -0
- package/lib/navigation/adapters/react-router.js +12 -0
- package/lib/navigation/components.d.ts +20 -0
- package/lib/navigation/components.js +36 -0
- package/lib/navigation/index.d.ts +4 -0
- package/lib/navigation/index.js +12 -0
- package/lib/routes/Routes.js +0 -5
- package/lib/routes/index.d.ts +1 -1
- package/lib/routes/index.js +1 -6
- package/lib/services/DatalayerServiceManager.d.ts +22 -0
- package/lib/services/DatalayerServiceManager.js +79 -0
- package/lib/services/index.d.ts +4 -0
- package/lib/services/index.js +7 -0
- package/lib/services/reconnectToRuntime.d.ts +32 -0
- package/lib/services/reconnectToRuntime.js +59 -0
- package/lib/state/State.d.ts +1 -1
- package/lib/state/State.js +1 -6
- package/lib/state/index.d.ts +1 -1
- package/lib/state/index.js +1 -6
- package/lib/state/storage/IAMStorage.js +14 -7
- package/lib/state/storage/index.d.ts +1 -1
- package/lib/state/storage/index.js +1 -6
- package/lib/state/substates/AIAgentState.js +4 -7
- package/lib/state/substates/CellState.js +6 -10
- package/lib/state/substates/CoreState.d.ts +1 -1
- package/lib/state/substates/CoreState.js +23 -20
- package/lib/state/substates/DatasourceState.js +1 -6
- package/lib/state/substates/DocumentState.js +0 -5
- package/lib/state/substates/GradeState.js +0 -5
- package/lib/state/substates/IAMState.d.ts +5 -1
- package/lib/state/substates/IAMState.js +88 -72
- package/lib/state/substates/JupyterLabState.js +1 -6
- package/lib/state/substates/LayoutState.d.ts +2 -2
- package/lib/state/substates/LayoutState.js +41 -28
- package/lib/state/substates/NbformatState.js +0 -5
- package/lib/state/substates/OrganizationState.js +1 -6
- package/lib/state/substates/RuntimesState.d.ts +2 -2
- package/lib/state/substates/RuntimesState.js +6 -10
- package/lib/state/substates/SpaceState.js +1 -6
- package/lib/state/substates/SurveysState.js +7 -12
- package/lib/state/substates/TeamState.js +1 -6
- package/lib/state/substates/index.js +0 -5
- package/lib/stories/assets/accessibility.png +0 -0
- package/lib/stories/assets/accessibility.svg +1 -0
- package/lib/stories/assets/addon-library.png +0 -0
- package/lib/stories/assets/assets.png +0 -0
- package/lib/stories/assets/context.png +0 -0
- package/lib/stories/assets/discord.svg +1 -0
- package/lib/stories/assets/docs.png +0 -0
- package/lib/stories/assets/figma-plugin.png +0 -0
- package/lib/stories/assets/github.svg +1 -0
- package/lib/stories/assets/share.png +0 -0
- package/lib/stories/assets/styling.png +0 -0
- package/lib/stories/assets/testing.png +0 -0
- package/lib/stories/assets/theming.png +0 -0
- package/lib/stories/assets/tutorials.svg +1 -0
- package/lib/stories/assets/youtube.svg +1 -0
- package/lib/stories/button.css +35 -0
- package/lib/stories/header.css +37 -0
- package/lib/stories/page.css +73 -0
- package/lib/test-setup.js +73 -1
- package/lib/theme/DatalayerTheme.js +1 -6
- package/lib/theme/DatalayerThemeProvider.js +17 -19
- package/lib/theme/Palette.js +1 -6
- package/lib/theme/index.js +0 -5
- package/lib/utils/Array.js +0 -5
- package/lib/utils/Avatar.js +2 -7
- package/lib/utils/Browser.js +6 -11
- package/lib/utils/Cells.d.ts +1 -1
- package/lib/utils/Cookie.js +1 -6
- package/lib/utils/Date.js +5 -10
- package/lib/utils/Download.js +5 -8
- package/lib/utils/DownloadFile.js +4 -7
- package/lib/utils/Env.js +2 -6
- package/lib/utils/File.js +0 -5
- package/lib/utils/Ids.js +0 -5
- package/lib/utils/Jupyter.js +0 -5
- package/lib/utils/Lazy.d.ts +1 -1
- package/lib/utils/Lazy.js +2 -8
- package/lib/utils/Name.js +10 -13
- package/lib/utils/Notebook.d.ts +1 -1
- package/lib/utils/Notebook.js +3 -3
- package/lib/utils/Number.js +13 -14
- package/lib/utils/Plots.d.ts +1 -1
- package/lib/utils/Plots.js +5 -5
- package/lib/utils/Random.js +0 -5
- package/lib/utils/Screenshot.js +1 -6
- package/lib/utils/Scroll.js +3 -7
- package/lib/utils/Sleep.js +1 -6
- package/lib/utils/Snapshot.js +2 -7
- package/lib/utils/String.js +2 -7
- package/lib/utils/Uri.js +2 -7
- package/lib/utils/Validator.js +0 -5
- package/lib/utils/WithSuspense.js +3 -11
- package/lib/utils/index.js +0 -5
- package/package.json +96 -30
- package/style/animation/Animation.module.css +174 -0
- package/style/base.css +64 -0
- package/style/index.css +6 -0
- package/lib/__tests__/App.test.js +0 -17
- package/lib/api/runtimes/models.d.ts +0 -59
- package/lib/api/runtimes/models.js +0 -11
- package/lib/hooks/useRun.d.ts +0 -21
- package/lib/mocks/hooks/useRunMock.d.ts +0 -6
- /package/lib/api/{runtimes → jupyter}/exec/Python.d.ts +0 -0
- /package/lib/api/{runtimes → jupyter}/exec/Snippets.d.ts +0 -0
- /package/lib/api/{runtimes → jupyter}/exec/index.d.ts +0 -0
- /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
|
-
*
|
|
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 {
|
|
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
|
|
16
|
+
* Get available Environments.
|
|
22
17
|
*/
|
|
23
18
|
export async function getEnvironments() {
|
|
24
|
-
const data = await
|
|
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
|
|
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
|
|
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
|
-
*
|
|
66
|
+
* Get the Runtimes.
|
|
72
67
|
*/
|
|
73
68
|
export async function getRuntimes() {
|
|
74
|
-
const data = await
|
|
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
|
-
*
|
|
81
|
+
* Delete a Runtime
|
|
87
82
|
*/
|
|
88
83
|
export async function deleteRuntime(options) {
|
|
89
84
|
const externalToken = iamStore.getState().externalToken;
|
|
90
|
-
await
|
|
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
|
|
99
|
+
* Snapshot a Runtime.
|
|
106
100
|
*/
|
|
107
101
|
export async function snapshotRuntime(options) {
|
|
108
|
-
const data = await
|
|
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
|
|
119
|
+
* Get Runtime Snapshots.
|
|
126
120
|
*/
|
|
127
121
|
export async function getRuntimeSnapshots() {
|
|
128
|
-
const data = await
|
|
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
|
|
133
|
+
* Load a Runtime Snapshot within a kernel.
|
|
140
134
|
*/
|
|
141
135
|
export async function loadRuntimeSnapshot(options) {
|
|
142
|
-
const data = await
|
|
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
|
|
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
|
|
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
|
|
176
|
+
* Delete a Runtime Snapshot.
|
|
183
177
|
*/
|
|
184
178
|
export async function deleteRuntimeSnapshot(id) {
|
|
185
|
-
await
|
|
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
|
|
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
|
|
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
|
|
210
|
+
* Update Runtime Snapshot metadata.
|
|
217
211
|
*/
|
|
218
212
|
export async function updateRuntimeSnapshot(id, metadata) {
|
|
219
213
|
if (metadata.name || metadata.description) {
|
|
220
|
-
await
|
|
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
|
|
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
|
|
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():
|
|
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>;
|
|
@@ -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
|
-
*
|
|
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
|
-
|
|
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;
|