@datalayer/core 1.0.25 → 1.1.41
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 +14 -26
- package/lib/api/index.d.ts +0 -9
- package/lib/api/index.js +0 -9
- package/lib/cli-login.js +167 -0
- package/lib/client/base.d.ts +0 -3
- package/lib/client/base.js +0 -2
- package/lib/client/index.d.ts +10 -98
- package/lib/client/index.js +12 -21
- package/lib/components/avatars/UserAvatar.d.ts +16 -0
- package/lib/components/avatars/UserAvatar.js +47 -0
- package/lib/components/avatars/index.d.ts +1 -0
- package/lib/components/avatars/index.js +1 -0
- package/lib/components/billing/BillableAccountSelect.js +4 -0
- package/lib/components/billing/index.js +4 -0
- package/lib/components/context/index.d.ts +0 -1
- package/lib/components/context/index.js +0 -1
- package/lib/components/display/DisplayHandle.d.ts +12 -0
- package/lib/components/display/DisplayHandle.js +11 -0
- package/lib/components/display/LiveRelativeTime.js +4 -0
- package/lib/components/display/index.d.ts +1 -0
- package/lib/components/display/index.js +1 -0
- package/lib/components/flashes/index.d.ts +0 -1
- package/lib/components/flashes/index.js +0 -1
- package/lib/components/index.d.ts +0 -1
- package/lib/components/index.js +0 -1
- package/lib/components/principal/Principal.d.ts +7 -0
- package/lib/components/principal/Principal.js +153 -16
- package/lib/components/principal/PrincipalAvatar.d.ts +1 -1
- package/lib/components/principal/PrincipalAvatar.js +4 -28
- package/lib/components/principal/PrincipalBadge.js +4 -4
- package/lib/components/principal/PrincipalDetailsOverlay.d.ts +4 -2
- package/lib/components/principal/PrincipalDetailsOverlay.js +27 -7
- package/lib/components/principal/PrincipalSwitcherMenu.js +76 -39
- package/lib/components/progress/index.d.ts +0 -1
- package/lib/components/progress/index.js +0 -1
- package/lib/components/sharing/ShareAccessComponent.d.ts +3 -2
- package/lib/components/sharing/ShareAccessComponent.js +180 -133
- package/lib/components/sharing/SharingEditor.js +4 -0
- package/lib/components/snippets/index.d.ts +1 -1
- package/lib/components/snippets/index.js +1 -1
- package/lib/components/students/StudentResultCircle.d.ts +21 -0
- package/lib/components/students/StudentResultCircle.js +59 -0
- package/lib/components/students/index.d.ts +1 -1
- package/lib/components/students/index.js +1 -1
- package/lib/components/time/LiveRelativeTime.js +4 -0
- package/lib/components/time/index.js +4 -0
- package/lib/components/timeline/index.js +4 -0
- package/lib/components/tokens/index.d.ts +1 -1
- package/lib/components/tokens/index.js +1 -1
- package/lib/components/toolbars/index.d.ts +1 -3
- package/lib/components/toolbars/index.js +1 -3
- package/lib/hooks/cacheConverters.d.ts +21 -0
- package/lib/hooks/cacheConverters.js +110 -0
- package/lib/hooks/index.d.ts +0 -2
- package/lib/hooks/index.js +0 -2
- package/lib/hooks/useCache.d.ts +64 -35
- package/lib/hooks/useCache.js +407 -52
- package/lib/hooks/useDatalayer.js +3 -1
- package/lib/hooks/useIAM.js +1 -3
- package/lib/hooks/useLocationHandles.d.ts +3 -1
- package/lib/hooks/useLocationHandles.js +2 -1
- package/lib/hooks/usePrincipalStore.d.ts +2 -2
- package/lib/hooks/usePrincipalStore.js +97 -14
- package/lib/hooks/useSelectedPrincipal.js +1 -1
- package/lib/hooks/useUser.js +19 -2
- package/lib/index.d.ts +1 -6
- package/lib/index.js +1 -13
- package/lib/main.js +3 -3
- package/lib/mocks/index.js +1 -1
- package/lib/mocks/models/index.d.ts +0 -1
- package/lib/mocks/models/index.js +0 -1
- package/lib/models/Datasource.d.ts +2 -2
- package/lib/models/IAM.d.ts +1 -1
- package/lib/models/School.d.ts +12 -3
- package/lib/models/Secret.d.ts +2 -2
- package/lib/models/Student.d.ts +13 -3
- package/lib/models/Usage.d.ts +11 -1
- package/lib/models/UserDTO.d.ts +2 -2
- package/lib/models/index.d.ts +0 -30
- package/lib/models/index.js +0 -30
- package/lib/routes/index.d.ts +1 -0
- package/lib/routes/index.js +1 -0
- package/lib/routes/publicPaths.d.ts +23 -0
- package/lib/routes/publicPaths.js +74 -0
- package/lib/state/State.d.ts +0 -12
- package/lib/state/State.js +0 -12
- package/lib/state/substates/LayoutState.d.ts +12 -1
- package/lib/state/substates/index.d.ts +0 -7
- package/lib/state/substates/index.js +0 -7
- package/lib/utils/Handles.js +3 -1
- package/lib/utils/index.d.ts +0 -1
- package/lib/utils/index.js +0 -1
- package/lib/views/api-keys/APIKeys.js +12 -3
- package/lib/views/datasources/DatasourceDetail.d.ts +1 -1
- package/lib/views/datasources/DatasourceNew.d.ts +1 -1
- package/lib/views/datasources/Datasources.d.ts +1 -1
- package/lib/views/datasources/Datasources.js +12 -3
- package/lib/views/iam/SignInSimple.d.ts +37 -1
- package/lib/views/iam/SignInSimple.js +110 -12
- package/package.json +5 -3
- package/lib/App.css +0 -47
- package/lib/App.d.ts +0 -3
- package/lib/App.js +0 -21
- package/lib/api/runtimes/checkpoints.d.ts +0 -122
- package/lib/api/runtimes/checkpoints.js +0 -118
- package/lib/api/runtimes/environments.d.ts +0 -9
- package/lib/api/runtimes/environments.js +0 -29
- package/lib/api/runtimes/healthz.d.ts +0 -15
- package/lib/api/runtimes/healthz.js +0 -44
- package/lib/api/runtimes/index.d.ts +0 -12
- package/lib/api/runtimes/index.js +0 -16
- package/lib/api/runtimes/runtimes.d.ts +0 -138
- package/lib/api/runtimes/runtimes.js +0 -230
- package/lib/api/runtimes/snapshots.d.ts +0 -38
- package/lib/api/runtimes/snapshots.js +0 -82
- package/lib/api/scheduler/index.d.ts +0 -6
- package/lib/api/scheduler/index.js +0 -10
- package/lib/api/scheduler/schedules.d.ts +0 -85
- package/lib/api/scheduler/schedules.js +0 -78
- package/lib/api/spacer/documents.d.ts +0 -12
- package/lib/api/spacer/documents.js +0 -43
- package/lib/api/spacer/healthz.d.ts +0 -15
- package/lib/api/spacer/healthz.js +0 -44
- package/lib/api/spacer/index.d.ts +0 -15
- package/lib/api/spacer/index.js +0 -19
- package/lib/api/spacer/items.d.ts +0 -25
- package/lib/api/spacer/items.js +0 -55
- package/lib/api/spacer/lexicals.d.ts +0 -34
- package/lib/api/spacer/lexicals.js +0 -89
- package/lib/api/spacer/notebooks.d.ts +0 -34
- package/lib/api/spacer/notebooks.js +0 -89
- package/lib/api/spacer/spaces.d.ts +0 -84
- package/lib/api/spacer/spaces.js +0 -170
- package/lib/api/spacer/users.d.ts +0 -9
- package/lib/api/spacer/users.js +0 -29
- package/lib/client/mixins/RuntimesMixin.d.ts +0 -93
- package/lib/client/mixins/RuntimesMixin.js +0 -229
- package/lib/client/mixins/SpacerMixin.d.ts +0 -210
- package/lib/client/mixins/SpacerMixin.js +0 -615
- package/lib/client/utils/spacerUtils.d.ts +0 -18
- package/lib/client/utils/spacerUtils.js +0 -32
- package/lib/collaboration/DatalayerCollaboration.d.ts +0 -13
- package/lib/collaboration/DatalayerCollaboration.js +0 -28
- package/lib/collaboration/DatalayerCollaborationProvider.d.ts +0 -60
- package/lib/collaboration/DatalayerCollaborationProvider.js +0 -163
- package/lib/collaboration/index.d.ts +0 -2
- package/lib/collaboration/index.js +0 -6
- package/lib/components/context/SpaceSelect.d.ts +0 -2
- package/lib/components/context/SpaceSelect.js +0 -42
- package/lib/components/flashes/FlashDisclaimer.d.ts +0 -2
- package/lib/components/flashes/FlashDisclaimer.js +0 -17
- package/lib/components/icons/ArtifactIcon.d.ts +0 -10
- package/lib/components/icons/ArtifactIcon.js +0 -58
- package/lib/components/icons/index.d.ts +0 -1
- package/lib/components/icons/index.js +0 -5
- package/lib/components/nbgrader/NbGradesDetails.d.ts +0 -5
- package/lib/components/nbgrader/NbGradesDetails.js +0 -14
- package/lib/components/nbgrader/index.d.ts +0 -1
- package/lib/components/nbgrader/index.js +0 -5
- package/lib/components/progress/CreditsIndicator.d.ts +0 -33
- package/lib/components/progress/CreditsIndicator.js +0 -23
- package/lib/components/runtimes/RuntimeCellVariables.d.ts +0 -39
- package/lib/components/runtimes/RuntimeCellVariables.js +0 -172
- package/lib/components/runtimes/RuntimeCellVariablesDialog.d.ts +0 -37
- package/lib/components/runtimes/RuntimeCellVariablesDialog.js +0 -101
- package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +0 -57
- package/lib/components/runtimes/RuntimeLauncherDialog.js +0 -275
- package/lib/components/runtimes/RuntimePickerBase.d.ts +0 -69
- package/lib/components/runtimes/RuntimePickerBase.js +0 -122
- package/lib/components/runtimes/RuntimePickerCell.d.ts +0 -34
- package/lib/components/runtimes/RuntimePickerCell.js +0 -104
- package/lib/components/runtimes/RuntimePickerNotebook.d.ts +0 -42
- package/lib/components/runtimes/RuntimePickerNotebook.js +0 -232
- package/lib/components/runtimes/RuntimeReservationControl.d.ts +0 -47
- package/lib/components/runtimes/RuntimeReservationControl.js +0 -42
- package/lib/components/runtimes/RuntimeSimplePicker.d.ts +0 -38
- package/lib/components/runtimes/RuntimeSimplePicker.js +0 -155
- package/lib/components/runtimes/RuntimeTransfer.d.ts +0 -16
- package/lib/components/runtimes/RuntimeTransfer.js +0 -5
- package/lib/components/runtimes/RuntimeUtils.d.ts +0 -17
- package/lib/components/runtimes/RuntimeUtils.js +0 -178
- package/lib/components/runtimes/RuntimeVariables.d.ts +0 -38
- package/lib/components/runtimes/RuntimeVariables.js +0 -75
- package/lib/components/runtimes/index.d.ts +0 -11
- package/lib/components/runtimes/index.js +0 -15
- package/lib/components/scheduler/ScheduleMenu.d.ts +0 -54
- package/lib/components/scheduler/ScheduleMenu.js +0 -154
- package/lib/components/scheduler/index.d.ts +0 -1
- package/lib/components/scheduler/index.js +0 -5
- package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +0 -33
- package/lib/components/snapshots/SandboxSnapshotMenu.js +0 -169
- package/lib/components/snapshots/index.d.ts +0 -1
- package/lib/components/snapshots/index.js +0 -5
- package/lib/components/snippets/SnippetDialog.d.ts +0 -42
- package/lib/components/snippets/SnippetDialog.js +0 -42
- package/lib/components/students/StudentItemStatus.d.ts +0 -7
- package/lib/components/students/StudentItemStatus.js +0 -66
- package/lib/components/tokens/SpaceVariantToken.d.ts +0 -5
- package/lib/components/tokens/SpaceVariantToken.js +0 -23
- package/lib/components/toolbars/AssignmentEditorToolbar.d.ts +0 -4
- package/lib/components/toolbars/AssignmentEditorToolbar.js +0 -18
- package/lib/components/toolbars/DocumentEditorToolbar.d.ts +0 -2
- package/lib/components/toolbars/DocumentEditorToolbar.js +0 -12
- package/lib/components/toolbars/NotebookEditorToolbar.d.ts +0 -29
- package/lib/components/toolbars/NotebookEditorToolbar.js +0 -30
- package/lib/examples/CellExample.d.ts +0 -6
- package/lib/examples/CellExample.js +0 -20
- package/lib/examples/NotebookExample.d.ts +0 -6
- package/lib/examples/NotebookExample.js +0 -19
- package/lib/examples/lexical-theme.css +0 -436
- package/lib/examples/notebooks/IPyWidgetsExample.ipynb.json +0 -101
- package/lib/examples/notebooks/IPyWidgetsExampleWithState.ipynb.json +0 -112
- package/lib/examples/notebooks/Lite.ipynb.json +0 -128
- package/lib/examples/notebooks/Matplotlib.ipynb.json +0 -137
- package/lib/examples/notebooks/NotebookExample1.ipynb.json +0 -126
- package/lib/examples/notebooks/NotebookExample2.ipynb.json +0 -48
- package/lib/examples/notebooks/NotebookOutputs.ipynb.json +0 -49
- package/lib/examples/notebooks/NotebookToCExample.ipynb.json +0 -102
- package/lib/examples/notebooks/PyGWalker.ipynb.json +0 -55
- package/lib/hooks/useCellOutputshot.d.ts +0 -4
- package/lib/hooks/useCellOutputshot.js +0 -25
- package/lib/hooks/useProjects.d.ts +0 -628
- package/lib/hooks/useProjects.js +0 -190
- package/lib/hooks/useRuntimes.d.ts +0 -5
- package/lib/hooks/useRuntimes.js +0 -34
- package/lib/mocks/jupyter/index.js +0 -5
- package/lib/mocks/models/CourseMock.d.ts +0 -6
- package/lib/mocks/models/CourseMock.js +0 -29
- package/lib/mocks/models/SpaceMock.d.ts +0 -6
- package/lib/mocks/models/SpaceMock.js +0 -25
- package/lib/models/Assignment.d.ts +0 -7
- package/lib/models/Assignment.js +0 -5
- package/lib/models/Cell.d.ts +0 -8
- package/lib/models/Cell.js +0 -5
- package/lib/models/CodeBlock.d.ts +0 -10
- package/lib/models/CodeBlock.js +0 -5
- package/lib/models/CodeSandboxSnapshot.d.ts +0 -92
- package/lib/models/CodeSandboxSnapshot.js +0 -13
- package/lib/models/CodeSandboxSnapshotDTO.d.ts +0 -173
- package/lib/models/CodeSandboxSnapshotDTO.js +0 -139
- package/lib/models/CodefeedBlocks.d.ts +0 -7
- package/lib/models/CodefeedBlocks.js +0 -5
- package/lib/models/Content.d.ts +0 -5
- package/lib/models/Content.js +0 -5
- package/lib/models/Course.d.ts +0 -17
- package/lib/models/Course.js +0 -5
- package/lib/models/Dataset.d.ts +0 -16
- package/lib/models/Dataset.js +0 -5
- package/lib/models/Document.d.ts +0 -8
- package/lib/models/Document.js +0 -5
- package/lib/models/Environment.d.ts +0 -86
- package/lib/models/Environment.js +0 -5
- package/lib/models/EnvironmentDTO.d.ts +0 -125
- package/lib/models/EnvironmentDTO.js +0 -88
- package/lib/models/Exercise.d.ts +0 -16
- package/lib/models/Exercise.js +0 -5
- package/lib/models/Item.d.ts +0 -20
- package/lib/models/Item.js +0 -5
- package/lib/models/ItemDTO.d.ts +0 -74
- package/lib/models/ItemDTO.js +0 -186
- package/lib/models/ItemType.d.ts +0 -2
- package/lib/models/ItemType.js +0 -5
- package/lib/models/Lesson.d.ts +0 -5
- package/lib/models/Lesson.js +0 -5
- package/lib/models/LexicalDTO.d.ts +0 -155
- package/lib/models/LexicalDTO.js +0 -157
- package/lib/models/Library.d.ts +0 -10
- package/lib/models/Library.js +0 -5
- package/lib/models/Notebook.d.ts +0 -11
- package/lib/models/Notebook.js +0 -5
- package/lib/models/NotebookDTO.d.ts +0 -96
- package/lib/models/NotebookDTO.js +0 -153
- package/lib/models/Page.d.ts +0 -41
- package/lib/models/Page.js +0 -25
- package/lib/models/PageTag.d.ts +0 -19
- package/lib/models/PageTag.js +0 -94
- package/lib/models/ProjectDTO.d.ts +0 -89
- package/lib/models/ProjectDTO.js +0 -131
- package/lib/models/Runtime.d.ts +0 -123
- package/lib/models/Runtime.js +0 -18
- package/lib/models/RuntimeDTO.d.ts +0 -191
- package/lib/models/RuntimeDTO.js +0 -204
- package/lib/models/Space.d.ts +0 -35
- package/lib/models/Space.js +0 -66
- package/lib/models/SpaceDTO.d.ts +0 -334
- package/lib/models/SpaceDTO.js +0 -244
- package/lib/models/SpaceItem.d.ts +0 -10
- package/lib/models/SpaceItem.js +0 -5
- package/lib/models/SpaceMember.d.ts +0 -6
- package/lib/models/SpaceMember.js +0 -5
- package/lib/models/StudentItem.d.ts +0 -21
- package/lib/models/StudentItem.js +0 -5
- package/lib/services/DatalayerServiceManager.d.ts +0 -22
- package/lib/services/DatalayerServiceManager.js +0 -69
- package/lib/services/index.d.ts +0 -4
- package/lib/services/index.js +0 -7
- package/lib/services/reconnectToRuntime.d.ts +0 -32
- package/lib/services/reconnectToRuntime.js +0 -59
- package/lib/state/substates/CellState.d.ts +0 -12
- package/lib/state/substates/CellState.js +0 -22
- package/lib/state/substates/DocumentState.d.ts +0 -10
- package/lib/state/substates/DocumentState.js +0 -14
- package/lib/state/substates/GradeState.d.ts +0 -10
- package/lib/state/substates/GradeState.js +0 -14
- package/lib/state/substates/JupyterLabState.d.ts +0 -16
- package/lib/state/substates/JupyterLabState.js +0 -17
- package/lib/state/substates/NbformatState.d.ts +0 -13
- package/lib/state/substates/NbformatState.js +0 -16
- package/lib/state/substates/RuntimesState.d.ts +0 -79
- package/lib/state/substates/RuntimesState.js +0 -180
- package/lib/state/substates/SpaceState.d.ts +0 -11
- package/lib/state/substates/SpaceState.js +0 -16
- package/lib/stateful/index.d.ts +0 -2
- package/lib/stateful/index.js +0 -6
- package/lib/stateful/jupyter/exec/Python.d.ts +0 -5
- package/lib/stateful/jupyter/exec/Python.js +0 -100
- package/lib/stateful/jupyter/exec/Snippets.d.ts +0 -105
- package/lib/stateful/jupyter/exec/Snippets.js +0 -101
- package/lib/stateful/jupyter/exec/index.d.ts +0 -2
- package/lib/stateful/jupyter/exec/index.js +0 -6
- package/lib/stateful/jupyter/index.d.ts +0 -2
- package/lib/stateful/jupyter/index.js +0 -6
- package/lib/stateful/jupyter/kernelsHandler.d.ts +0 -8
- package/lib/stateful/jupyter/kernelsHandler.js +0 -39
- package/lib/stateful/runtimes/actions.d.ts +0 -102
- package/lib/stateful/runtimes/actions.js +0 -249
- package/lib/stateful/runtimes/apis.d.ts +0 -273
- package/lib/stateful/runtimes/apis.js +0 -5
- package/lib/stateful/runtimes/index.d.ts +0 -5
- package/lib/stateful/runtimes/index.js +0 -9
- package/lib/stateful/runtimes/settings.d.ts +0 -15
- package/lib/stateful/runtimes/settings.js +0 -31
- package/lib/stateful/runtimes/snapshots.d.ts +0 -25
- package/lib/stateful/runtimes/snapshots.js +0 -150
- package/lib/stateful/runtimes/utils.d.ts +0 -7
- package/lib/stateful/runtimes/utils.js +0 -14
- package/lib/utils/Cells.d.ts +0 -2
- package/lib/utils/Cells.js +0 -28
- /package/lib/{mocks/jupyter/index.d.ts → cli-login.d.ts} +0 -0
|
@@ -1,69 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
import { ServerConnection, ServiceManager } from '@jupyterlab/services';
|
|
6
|
-
import { coreStore } from '../state/substates/CoreState.js';
|
|
7
|
-
import { DEFAULT_DATALAYER_CONFIG } from '../config/Configuration.js';
|
|
8
|
-
import { createRuntime } from '../stateful/runtimes/actions.js';
|
|
9
|
-
/**
|
|
10
|
-
* Creates a ServiceManager configured for Datalayer.
|
|
11
|
-
*
|
|
12
|
-
* This function requests a new kernel from Datalayer's platform and
|
|
13
|
-
* returns a configured ServiceManager that connects to the allocated
|
|
14
|
-
* Jupyter server instance.
|
|
15
|
-
*
|
|
16
|
-
* @param environmentName - The name of the Datalayer environment to use
|
|
17
|
-
* @param credits - The credit limit for this kernel session
|
|
18
|
-
* @returns A configured ServiceManager instance
|
|
19
|
-
* @throws Error if the kernel request fails or configuration is missing
|
|
20
|
-
*
|
|
21
|
-
* @example
|
|
22
|
-
* ```typescript
|
|
23
|
-
* const serviceManager = await createDatalayerServiceManager('ai-agents-env', 100);
|
|
24
|
-
* await serviceManager.ready;
|
|
25
|
-
* // Use the service manager with notebooks
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
|
-
export const createDatalayerServiceManager = async (environmentName, credits) => {
|
|
29
|
-
const { configuration } = coreStore.getState();
|
|
30
|
-
const token = configuration?.token || '';
|
|
31
|
-
// Use provided values or fall back to config or defaults
|
|
32
|
-
const actualEnvironmentName = environmentName ||
|
|
33
|
-
configuration?.cpuEnvironment ||
|
|
34
|
-
DEFAULT_DATALAYER_CONFIG.cpuEnvironment;
|
|
35
|
-
const actualCredits = credits ?? configuration?.credits ?? DEFAULT_DATALAYER_CONFIG.credits;
|
|
36
|
-
if (!token) {
|
|
37
|
-
throw new Error('Datalayer API token is required to create a service manager');
|
|
38
|
-
}
|
|
39
|
-
try {
|
|
40
|
-
// Use the existing createRuntime function which handles auth properly
|
|
41
|
-
const runtime = await createRuntime({
|
|
42
|
-
environmentName: actualEnvironmentName,
|
|
43
|
-
type: 'notebook',
|
|
44
|
-
givenName: `Jupyter React Kernel - ${new Date().toISOString()}`,
|
|
45
|
-
creditsLimit: actualCredits,
|
|
46
|
-
capabilities: [],
|
|
47
|
-
});
|
|
48
|
-
const serverSettings = ServerConnection.makeSettings({
|
|
49
|
-
baseUrl: runtime.ingress,
|
|
50
|
-
wsUrl: runtime.ingress.replace(/^http/, 'ws'),
|
|
51
|
-
token: runtime.token,
|
|
52
|
-
appendToken: true,
|
|
53
|
-
});
|
|
54
|
-
const serviceManager = new ServiceManager({ serverSettings });
|
|
55
|
-
console.log('Created Datalayer service manager:', {
|
|
56
|
-
environmentName: actualEnvironmentName,
|
|
57
|
-
credits: actualCredits,
|
|
58
|
-
reservationId: runtime.reservation_id,
|
|
59
|
-
podName: runtime.pod_name,
|
|
60
|
-
ingress: runtime.ingress,
|
|
61
|
-
});
|
|
62
|
-
return serviceManager;
|
|
63
|
-
}
|
|
64
|
-
catch (error) {
|
|
65
|
-
console.error('Error creating Datalayer service manager:', error);
|
|
66
|
-
throw error;
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
export default createDatalayerServiceManager;
|
package/lib/services/index.d.ts
DELETED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
export { createDatalayerServiceManager } from './DatalayerServiceManager';
|
|
2
|
-
export { reconnectToRuntime } from './reconnectToRuntime';
|
|
3
|
-
export type { RuntimeInfo } from './reconnectToRuntime';
|
|
4
|
-
export { default as DatalayerServiceManager } from './DatalayerServiceManager';
|
package/lib/services/index.js
DELETED
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
export { createDatalayerServiceManager } from './DatalayerServiceManager.js';
|
|
6
|
-
export { reconnectToRuntime } from './reconnectToRuntime.js';
|
|
7
|
-
export { default as DatalayerServiceManager } from './DatalayerServiceManager.js';
|
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
import { ServiceManager } from '@jupyterlab/services';
|
|
2
|
-
export interface RuntimeInfo {
|
|
3
|
-
runtimeId: string;
|
|
4
|
-
podName: string;
|
|
5
|
-
ingress: string;
|
|
6
|
-
token: string;
|
|
7
|
-
environmentName?: string;
|
|
8
|
-
}
|
|
9
|
-
/**
|
|
10
|
-
* Reconnects to an existing Datalayer runtime
|
|
11
|
-
*
|
|
12
|
-
* This function creates a ServiceManager that connects to an already
|
|
13
|
-
* allocated Jupyter server instance using stored runtime information.
|
|
14
|
-
*
|
|
15
|
-
* @param runtimeInfo - The stored runtime information
|
|
16
|
-
* @returns A configured ServiceManager instance
|
|
17
|
-
* @throws Error if the reconnection fails
|
|
18
|
-
*
|
|
19
|
-
* @example
|
|
20
|
-
* ```typescript
|
|
21
|
-
* const runtimeInfo = {
|
|
22
|
-
* runtimeId: 'abc123',
|
|
23
|
-
* podName: 'jupyter-pod-xyz',
|
|
24
|
-
* ingress: 'https://jupyter.example.com',
|
|
25
|
-
* token: 'secret-token'
|
|
26
|
-
* };
|
|
27
|
-
* const serviceManager = await reconnectToRuntime(runtimeInfo);
|
|
28
|
-
* await serviceManager.ready;
|
|
29
|
-
* ```
|
|
30
|
-
*/
|
|
31
|
-
export declare const reconnectToRuntime: (runtimeInfo: RuntimeInfo) => Promise<ServiceManager.IManager>;
|
|
32
|
-
export default reconnectToRuntime;
|
|
@@ -1,59 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
import { ServerConnection, ServiceManager } from '@jupyterlab/services';
|
|
6
|
-
/**
|
|
7
|
-
* Reconnects to an existing Datalayer runtime
|
|
8
|
-
*
|
|
9
|
-
* This function creates a ServiceManager that connects to an already
|
|
10
|
-
* allocated Jupyter server instance using stored runtime information.
|
|
11
|
-
*
|
|
12
|
-
* @param runtimeInfo - The stored runtime information
|
|
13
|
-
* @returns A configured ServiceManager instance
|
|
14
|
-
* @throws Error if the reconnection fails
|
|
15
|
-
*
|
|
16
|
-
* @example
|
|
17
|
-
* ```typescript
|
|
18
|
-
* const runtimeInfo = {
|
|
19
|
-
* runtimeId: 'abc123',
|
|
20
|
-
* podName: 'jupyter-pod-xyz',
|
|
21
|
-
* ingress: 'https://jupyter.example.com',
|
|
22
|
-
* token: 'secret-token'
|
|
23
|
-
* };
|
|
24
|
-
* const serviceManager = await reconnectToRuntime(runtimeInfo);
|
|
25
|
-
* await serviceManager.ready;
|
|
26
|
-
* ```
|
|
27
|
-
*/
|
|
28
|
-
export const reconnectToRuntime = async (runtimeInfo) => {
|
|
29
|
-
try {
|
|
30
|
-
const serverSettings = ServerConnection.makeSettings({
|
|
31
|
-
baseUrl: runtimeInfo.ingress,
|
|
32
|
-
wsUrl: runtimeInfo.ingress.replace(/^http/, 'ws'),
|
|
33
|
-
token: runtimeInfo.token,
|
|
34
|
-
appendToken: true,
|
|
35
|
-
});
|
|
36
|
-
const serviceManager = new ServiceManager({ serverSettings });
|
|
37
|
-
// Store runtime info on the serviceManager instance for access
|
|
38
|
-
serviceManager.__datalayerRuntime = {
|
|
39
|
-
environmentName: runtimeInfo.environmentName || 'unknown',
|
|
40
|
-
credits: 0,
|
|
41
|
-
reservationId: runtimeInfo.runtimeId,
|
|
42
|
-
podName: runtimeInfo.podName,
|
|
43
|
-
ingress: runtimeInfo.ingress,
|
|
44
|
-
token: runtimeInfo.token,
|
|
45
|
-
createdAt: new Date().toISOString(),
|
|
46
|
-
};
|
|
47
|
-
console.log('Reconnected to existing runtime:', {
|
|
48
|
-
runtimeId: runtimeInfo.runtimeId,
|
|
49
|
-
podName: runtimeInfo.podName,
|
|
50
|
-
ingress: runtimeInfo.ingress,
|
|
51
|
-
});
|
|
52
|
-
return serviceManager;
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
console.error('Error reconnecting to runtime:', error);
|
|
56
|
-
throw error;
|
|
57
|
-
}
|
|
58
|
-
};
|
|
59
|
-
export default reconnectToRuntime;
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { ICell } from '../../models';
|
|
2
|
-
export type ICellState = {
|
|
3
|
-
cell?: ICell;
|
|
4
|
-
};
|
|
5
|
-
export type CellState = ICellState & {
|
|
6
|
-
create: (cell: ICell) => void;
|
|
7
|
-
update: (cell: Partial<ICell>) => void;
|
|
8
|
-
};
|
|
9
|
-
export declare const cellStore: import("zustand").StoreApi<CellState>;
|
|
10
|
-
export declare function useCellStore(): CellState;
|
|
11
|
-
export declare function useCellStore<T>(selector: (state: CellState) => T): T;
|
|
12
|
-
export default useCellStore;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
import { createStore } from 'zustand/vanilla';
|
|
6
|
-
import { useStore } from 'zustand';
|
|
7
|
-
export const cellStore = createStore((set, get) => ({
|
|
8
|
-
cell: undefined,
|
|
9
|
-
create: (cell) => set((state) => ({ cell })),
|
|
10
|
-
update: (cell) => set((state) => ({
|
|
11
|
-
cell: cell
|
|
12
|
-
? {
|
|
13
|
-
...state.cell,
|
|
14
|
-
...cell,
|
|
15
|
-
}
|
|
16
|
-
: undefined,
|
|
17
|
-
})),
|
|
18
|
-
}));
|
|
19
|
-
export function useCellStore(selector) {
|
|
20
|
-
return useStore(cellStore, selector);
|
|
21
|
-
}
|
|
22
|
-
export default useCellStore;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export interface IDocumentState {
|
|
2
|
-
documentSaveRequest?: Date;
|
|
3
|
-
}
|
|
4
|
-
export type DocumentState = IDocumentState & {
|
|
5
|
-
save: (documentSaveRequest: Date) => void;
|
|
6
|
-
};
|
|
7
|
-
export declare const documentStore: import("zustand").StoreApi<DocumentState>;
|
|
8
|
-
export declare function useDocumentStore(): DocumentState;
|
|
9
|
-
export declare function useDocumentStore<T>(selector: (state: DocumentState) => T): T;
|
|
10
|
-
export default useDocumentStore;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
import { createStore } from 'zustand/vanilla';
|
|
6
|
-
import { useStore } from 'zustand';
|
|
7
|
-
export const documentStore = createStore((set, get) => ({
|
|
8
|
-
documentSaveRequest: undefined,
|
|
9
|
-
save: (documentSaveRequest) => set((state) => ({ documentSaveRequest })),
|
|
10
|
-
}));
|
|
11
|
-
export function useDocumentStore(selector) {
|
|
12
|
-
return useStore(documentStore, selector);
|
|
13
|
-
}
|
|
14
|
-
export default useDocumentStore;
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
export type IGradeState = {
|
|
2
|
-
gradeRequest?: Date;
|
|
3
|
-
};
|
|
4
|
-
export type GradeState = IGradeState & {
|
|
5
|
-
grade: (gradeRequest: Date) => void;
|
|
6
|
-
};
|
|
7
|
-
export declare const gradeStore: import("zustand").StoreApi<GradeState>;
|
|
8
|
-
export declare function useGradeStore(): GradeState;
|
|
9
|
-
export declare function useGradeStore<T>(selector: (state: GradeState) => T): T;
|
|
10
|
-
export default useGradeStore;
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
import { createStore } from 'zustand/vanilla';
|
|
6
|
-
import { useStore } from 'zustand';
|
|
7
|
-
export const gradeStore = createStore((set, get) => ({
|
|
8
|
-
gradeRequest: undefined,
|
|
9
|
-
grade: (gradeRequest) => set((state) => ({ gradeRequest })),
|
|
10
|
-
}));
|
|
11
|
-
export function useGradeStore(selector) {
|
|
12
|
-
return useStore(gradeStore, selector);
|
|
13
|
-
}
|
|
14
|
-
export default useGradeStore;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { JupyterLabAppAdapter } from '@datalayer/jupyter-react';
|
|
2
|
-
import { JupyterFrontEndPlugin } from '@jupyterlab/application';
|
|
3
|
-
export type Plugin = JupyterFrontEndPlugin<any, any, any> & {
|
|
4
|
-
service: any;
|
|
5
|
-
};
|
|
6
|
-
export type IJupyterLabState = {
|
|
7
|
-
jupyterLabAdapter?: JupyterLabAppAdapter;
|
|
8
|
-
};
|
|
9
|
-
export type JupyterLabState = IJupyterLabState & {
|
|
10
|
-
setJupyterLabAdapter: (jupyterLabAdapter?: JupyterLabAppAdapter) => void;
|
|
11
|
-
plugin: (id: string) => Plugin | undefined;
|
|
12
|
-
};
|
|
13
|
-
export declare const jupyterLabStore: import("zustand").StoreApi<JupyterLabState>;
|
|
14
|
-
export declare function useJupyterLabStore(): JupyterLabState;
|
|
15
|
-
export declare function useJupyterLabStore<T>(selector: (state: JupyterLabState) => T): T;
|
|
16
|
-
export default useJupyterLabStore;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
import { createStore } from 'zustand/vanilla';
|
|
6
|
-
import { useStore } from 'zustand';
|
|
7
|
-
export const jupyterLabStore = createStore((set, get) => ({
|
|
8
|
-
jupyterLabAdapter: undefined,
|
|
9
|
-
setJupyterLabAdapter: (jupyterLabAdapter) => set((state) => ({ jupyterLabAdapter })),
|
|
10
|
-
plugin: (id) => {
|
|
11
|
-
return get().jupyterLabAdapter?.plugin(id);
|
|
12
|
-
},
|
|
13
|
-
}));
|
|
14
|
-
export function useJupyterLabStore(selector) {
|
|
15
|
-
return useStore(jupyterLabStore, selector);
|
|
16
|
-
}
|
|
17
|
-
export default useJupyterLabStore;
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export type SaveRequest = {
|
|
2
|
-
counter: number;
|
|
3
|
-
};
|
|
4
|
-
export type INbformatState = {
|
|
5
|
-
saveRequest: SaveRequest;
|
|
6
|
-
};
|
|
7
|
-
export type NbformatState = INbformatState & {
|
|
8
|
-
save: (saveRequest: SaveRequest) => void;
|
|
9
|
-
};
|
|
10
|
-
export declare const nbformatStore: import("zustand").StoreApi<NbformatState>;
|
|
11
|
-
export declare function useNbformatStore(): NbformatState;
|
|
12
|
-
export declare function useNbformatStore<T>(selector: (state: NbformatState) => T): T;
|
|
13
|
-
export default useNbformatStore;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
import { createStore } from 'zustand/vanilla';
|
|
6
|
-
import { useStore } from 'zustand';
|
|
7
|
-
export const nbformatStore = createStore((set, get) => ({
|
|
8
|
-
saveRequest: {
|
|
9
|
-
counter: -1,
|
|
10
|
-
},
|
|
11
|
-
save: (saveRequest) => set((state) => ({ saveRequest })),
|
|
12
|
-
}));
|
|
13
|
-
export function useNbformatStore(selector) {
|
|
14
|
-
return useStore(nbformatStore, selector);
|
|
15
|
-
}
|
|
16
|
-
export default useNbformatStore;
|
|
@@ -1,79 +0,0 @@
|
|
|
1
|
-
import type { IMultiServiceManager } from '../../stateful/runtimes';
|
|
2
|
-
import type { IRuntimesConfiguration } from '../../config';
|
|
3
|
-
import type { IRuntimePod, ICodeSandboxSnapshot, IRuntimeModel } from '../../models';
|
|
4
|
-
/**
|
|
5
|
-
* Datalayer Runtimes state.
|
|
6
|
-
*/
|
|
7
|
-
export type RuntimesState = {
|
|
8
|
-
/**
|
|
9
|
-
* Runtimes configuration
|
|
10
|
-
*/
|
|
11
|
-
configuration: IRuntimesConfiguration;
|
|
12
|
-
setConfiguration: (config: IRuntimesConfiguration) => void;
|
|
13
|
-
/**
|
|
14
|
-
* Runtimes RUN URL.
|
|
15
|
-
*/
|
|
16
|
-
runtimesRunUrl: string;
|
|
17
|
-
tab: number;
|
|
18
|
-
getIntTab: () => number;
|
|
19
|
-
setTab: (tab: number) => void;
|
|
20
|
-
/**
|
|
21
|
-
* Runtime pods.
|
|
22
|
-
*/
|
|
23
|
-
runtimePods: IRuntimePod[];
|
|
24
|
-
/**
|
|
25
|
-
* Refresh the runtime pods.
|
|
26
|
-
*/
|
|
27
|
-
refreshRuntimePods: () => Promise<void>;
|
|
28
|
-
/**
|
|
29
|
-
* Cached runtime models.
|
|
30
|
-
*/
|
|
31
|
-
runtimeModels: readonly IRuntimeModel[];
|
|
32
|
-
/**
|
|
33
|
-
* Add a runtime model.
|
|
34
|
-
*/
|
|
35
|
-
addRuntimeModel: (model: IRuntimeModel) => void;
|
|
36
|
-
/**
|
|
37
|
-
* Remove a runtime model by ID.
|
|
38
|
-
*/
|
|
39
|
-
removeRuntimeModel: (id: string) => void;
|
|
40
|
-
/**
|
|
41
|
-
* Set the runtimes models list.
|
|
42
|
-
*/
|
|
43
|
-
setRuntimeModels: (models: readonly IRuntimeModel[]) => void;
|
|
44
|
-
/**
|
|
45
|
-
* Jupyter service manager.
|
|
46
|
-
*/
|
|
47
|
-
multiServiceManager?: IMultiServiceManager;
|
|
48
|
-
setMultiServiceManager: (multiServiceManager: IMultiServiceManager) => void;
|
|
49
|
-
showDisclaimer: boolean;
|
|
50
|
-
setShowDisclaimer: (showDisclaimer: boolean) => void;
|
|
51
|
-
/**
|
|
52
|
-
* Code Sandbox snapshots.
|
|
53
|
-
*/
|
|
54
|
-
runtimeSnapshots: readonly ICodeSandboxSnapshot[];
|
|
55
|
-
/**
|
|
56
|
-
* Add a code sandbox snapshot.
|
|
57
|
-
*/
|
|
58
|
-
addSandboxSnapshot: (snapshot: ICodeSandboxSnapshot) => void;
|
|
59
|
-
/**
|
|
60
|
-
* Remove a Code Sandbox Snapshot.
|
|
61
|
-
*/
|
|
62
|
-
removeSandboxSnapshot: (id: string) => void;
|
|
63
|
-
/**
|
|
64
|
-
* Set Code Sandbox Snapshots.
|
|
65
|
-
*/
|
|
66
|
-
setSandboxSnapshots: (snapshots: ICodeSandboxSnapshot[]) => void;
|
|
67
|
-
/**
|
|
68
|
-
* Package version.
|
|
69
|
-
*/
|
|
70
|
-
version: string;
|
|
71
|
-
setVersion: (version: string) => void;
|
|
72
|
-
};
|
|
73
|
-
/**
|
|
74
|
-
* Kernel store
|
|
75
|
-
*/
|
|
76
|
-
export declare const runtimesStore: import("zustand").StoreApi<RuntimesState>;
|
|
77
|
-
export declare function useRuntimesStore(): RuntimesState;
|
|
78
|
-
export declare function useRuntimesStore<T>(selector: (state: RuntimesState) => T): T;
|
|
79
|
-
export default useRuntimesStore;
|
|
@@ -1,180 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
import { useStore } from 'zustand';
|
|
6
|
-
import { createStore } from 'zustand/vanilla';
|
|
7
|
-
import { JSONExt } from '@lumino/coreutils';
|
|
8
|
-
import { Poll } from '@lumino/polling';
|
|
9
|
-
import { getRuntimes } from '../../stateful/runtimes/index.js';
|
|
10
|
-
import { coreStore } from './CoreState.js';
|
|
11
|
-
import { iamStore } from './IAMState.js';
|
|
12
|
-
/**
|
|
13
|
-
* Kernel store
|
|
14
|
-
*/
|
|
15
|
-
export const runtimesStore = createStore((set, get) => {
|
|
16
|
-
return {
|
|
17
|
-
configuration: {
|
|
18
|
-
maxNotebookRuntimes: 5,
|
|
19
|
-
maxCellRuntimes: 3,
|
|
20
|
-
},
|
|
21
|
-
setConfiguration: (configuration) => {
|
|
22
|
-
set(state => JSONExt.deepEqual(state.configuration, configuration)
|
|
23
|
-
? {}
|
|
24
|
-
: { configuration: { ...configuration } });
|
|
25
|
-
},
|
|
26
|
-
runtimesRunUrl: coreStore.getState().configuration?.runtimesRunUrl,
|
|
27
|
-
tab: 0.0,
|
|
28
|
-
getIntTab: () => Math.floor(get().tab),
|
|
29
|
-
setTab: (tab) => set(state => ({ tab })),
|
|
30
|
-
/**
|
|
31
|
-
* Remote runtime pods.
|
|
32
|
-
*/
|
|
33
|
-
runtimePods: [],
|
|
34
|
-
/**
|
|
35
|
-
* Refresh the runtime pods.
|
|
36
|
-
*/
|
|
37
|
-
refreshRuntimePods: async () => {
|
|
38
|
-
const servers = await getRuntimes();
|
|
39
|
-
// Update the state with the Remote Kernels.
|
|
40
|
-
if (!JSONExt.deepEqual(get().runtimePods, servers)) {
|
|
41
|
-
set({ runtimePods: [...servers] });
|
|
42
|
-
}
|
|
43
|
-
},
|
|
44
|
-
/**
|
|
45
|
-
* Cached runtime models.
|
|
46
|
-
*/
|
|
47
|
-
runtimeModels: [],
|
|
48
|
-
/**
|
|
49
|
-
* Add a runtime model
|
|
50
|
-
*/
|
|
51
|
-
addRuntimeModel: (model) => {
|
|
52
|
-
const kernels = get().runtimeModels;
|
|
53
|
-
// TODO
|
|
54
|
-
// We need to review the IRuntimeModel/IRuntimePod/Kernel.IModel and their id/uid handling.
|
|
55
|
-
// The id is the kernel id, which is no more always present for some reasons.
|
|
56
|
-
// So we need to also check the uid of the model.
|
|
57
|
-
const index = kernels.findIndex(m => (model.id === m.id || model.uid === m.uid) ?? -1);
|
|
58
|
-
if (index < 0) {
|
|
59
|
-
set({ runtimeModels: [...kernels, model] });
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
/**
|
|
63
|
-
* Remove a runtime model by ID.
|
|
64
|
-
*/
|
|
65
|
-
removeRuntimeModel: (id) => {
|
|
66
|
-
const kernels = [...get().runtimeModels];
|
|
67
|
-
const index = kernels?.findIndex(model => id === model.id) ?? -1;
|
|
68
|
-
if (index >= 0) {
|
|
69
|
-
kernels.splice(index, 1);
|
|
70
|
-
set({ runtimeModels: kernels });
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
setRuntimeModels: (models) => {
|
|
74
|
-
if (!JSONExt.deepEqual(get().runtimeModels, models)) {
|
|
75
|
-
set({ runtimeModels: [...models] });
|
|
76
|
-
}
|
|
77
|
-
},
|
|
78
|
-
multiServiceManager: undefined,
|
|
79
|
-
setMultiServiceManager: multiServiceManager => {
|
|
80
|
-
set(state => ({ multiServiceManager }));
|
|
81
|
-
},
|
|
82
|
-
showDisclaimer: false,
|
|
83
|
-
setShowDisclaimer: showDisclaimer => {
|
|
84
|
-
set(state => ({ showDisclaimer }));
|
|
85
|
-
},
|
|
86
|
-
/**
|
|
87
|
-
* Kernel Snapshots.
|
|
88
|
-
*/
|
|
89
|
-
runtimeSnapshots: [],
|
|
90
|
-
/**
|
|
91
|
-
* Add a Kernel Snapshot
|
|
92
|
-
*/
|
|
93
|
-
addSandboxSnapshot: (snapshot) => {
|
|
94
|
-
const snapshots = get().runtimeSnapshots;
|
|
95
|
-
const index = snapshots.findIndex(s => s.id === snapshot.id);
|
|
96
|
-
if (index < 0) {
|
|
97
|
-
const kernelSnapshots = [...snapshots, snapshot];
|
|
98
|
-
set({ runtimeSnapshots: kernelSnapshots });
|
|
99
|
-
}
|
|
100
|
-
else if (!JSONExt.deepEqual(snapshots[index], snapshot)) {
|
|
101
|
-
const kernelSnapshots = [...snapshots];
|
|
102
|
-
kernelSnapshots.splice(index, 1, snapshot);
|
|
103
|
-
set({ runtimeSnapshots: kernelSnapshots });
|
|
104
|
-
}
|
|
105
|
-
},
|
|
106
|
-
/**
|
|
107
|
-
* Remove a Kernel Snapshot.
|
|
108
|
-
*/
|
|
109
|
-
removeSandboxSnapshot: (id) => {
|
|
110
|
-
const snapshots = get().runtimeSnapshots;
|
|
111
|
-
const index = snapshots.findIndex(s => s.id === id);
|
|
112
|
-
if (index >= 0) {
|
|
113
|
-
const kernelSnapshots = [...snapshots];
|
|
114
|
-
kernelSnapshots.splice(index, 1);
|
|
115
|
-
set({ runtimeSnapshots: kernelSnapshots });
|
|
116
|
-
}
|
|
117
|
-
},
|
|
118
|
-
/**
|
|
119
|
-
* Set Kernel Snapshots.
|
|
120
|
-
*/
|
|
121
|
-
setSandboxSnapshots: (snapshots) => {
|
|
122
|
-
if (!JSONExt.deepEqual(get().runtimeSnapshots, snapshots)) {
|
|
123
|
-
set({ runtimeSnapshots: [...snapshots] });
|
|
124
|
-
}
|
|
125
|
-
},
|
|
126
|
-
version: '',
|
|
127
|
-
setVersion: version => {
|
|
128
|
-
if (version && !get().version) {
|
|
129
|
-
set(state => ({ version }));
|
|
130
|
-
}
|
|
131
|
-
},
|
|
132
|
-
};
|
|
133
|
-
});
|
|
134
|
-
// Poll remote kernels
|
|
135
|
-
const kernelsPoll = new Poll({
|
|
136
|
-
auto: true,
|
|
137
|
-
factory: () => runtimesStore.getState().refreshRuntimePods(),
|
|
138
|
-
frequency: {
|
|
139
|
-
interval: 61 * 1000,
|
|
140
|
-
backoff: true,
|
|
141
|
-
max: 300 * 1000,
|
|
142
|
-
},
|
|
143
|
-
name: '@datalayer/jupyter-kernels:KernelsManager#kernels',
|
|
144
|
-
standby: () => iamStore.getState().token || runtimesStore.getState().runtimesRunUrl
|
|
145
|
-
? 'when-hidden'
|
|
146
|
-
: true,
|
|
147
|
-
});
|
|
148
|
-
// Force refresh at expiration date if next tick is after it.
|
|
149
|
-
runtimesStore.subscribe((state, prevState) => {
|
|
150
|
-
if (!JSONExt.deepEqual(state.runtimePods, prevState.runtimePods)) {
|
|
151
|
-
const now = Date.now();
|
|
152
|
-
const minExpiredAt = Math.min(...state.runtimePods.map(kernel => kernel.expired_at ? parseFloat(kernel.expired_at) : Infinity)) * 1_000;
|
|
153
|
-
// Refresh 2 sec after the closest expiration time
|
|
154
|
-
// to let some times to the system to dispose the resources.
|
|
155
|
-
if (now + kernelsPoll.frequency.interval > minExpiredAt + 2_000) {
|
|
156
|
-
setTimeout(() => {
|
|
157
|
-
kernelsPoll.refresh();
|
|
158
|
-
}, minExpiredAt + 2_000 - now);
|
|
159
|
-
}
|
|
160
|
-
}
|
|
161
|
-
});
|
|
162
|
-
coreStore.subscribe((state, prevState) => {
|
|
163
|
-
if (state.configuration.runtimesRunUrl &&
|
|
164
|
-
state.configuration.runtimesRunUrl !==
|
|
165
|
-
prevState.configuration.runtimesRunUrl) {
|
|
166
|
-
const runtimesRunUrl = state.configuration.runtimesRunUrl;
|
|
167
|
-
console.log(`Updating runtimesRunUrl with new value ${runtimesRunUrl}`);
|
|
168
|
-
runtimesStore.setState({ runtimesRunUrl });
|
|
169
|
-
kernelsPoll
|
|
170
|
-
.refresh()
|
|
171
|
-
.then(() => kernelsPoll.tick)
|
|
172
|
-
.catch(reason => {
|
|
173
|
-
console.error('Failed to refresh kernel servers list following service URL changed.', reason);
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
});
|
|
177
|
-
export function useRuntimesStore(selector) {
|
|
178
|
-
return useStore(runtimesStore, selector);
|
|
179
|
-
}
|
|
180
|
-
export default useRuntimesStore;
|
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import { IBaseSpace } from '../../models';
|
|
2
|
-
export type ISpaceState = {
|
|
3
|
-
spaces: IBaseSpace[];
|
|
4
|
-
};
|
|
5
|
-
export type SpaceState = ISpaceState & {
|
|
6
|
-
updateSpaces: (spaces: IBaseSpace[]) => void;
|
|
7
|
-
};
|
|
8
|
-
export declare const spaceStore: import("zustand").StoreApi<SpaceState>;
|
|
9
|
-
export declare function useSpaceStore(): SpaceState;
|
|
10
|
-
export declare function useSpaceStore<T>(selector: (state: SpaceState) => T): T;
|
|
11
|
-
export default useSpaceStore;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
import { createStore } from 'zustand/vanilla';
|
|
6
|
-
import { useStore } from 'zustand';
|
|
7
|
-
export const spaceStore = createStore((set, get) => ({
|
|
8
|
-
spaces: [],
|
|
9
|
-
updateSpaces: (spaces) => set((state) => ({
|
|
10
|
-
spaces,
|
|
11
|
-
})),
|
|
12
|
-
}));
|
|
13
|
-
export function useSpaceStore(selector) {
|
|
14
|
-
return useStore(spaceStore, selector);
|
|
15
|
-
}
|
|
16
|
-
export default useSpaceStore;
|
package/lib/stateful/index.d.ts
DELETED
package/lib/stateful/index.js
DELETED
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
export declare function listVariables(): string;
|
|
2
|
-
export declare function saveVariables(variables: string[]): string;
|
|
3
|
-
export declare function loadVariables(variables: string): string;
|
|
4
|
-
export declare function changeCurrentWorkingDirectory(path: string): string;
|
|
5
|
-
export declare function getOutputCandidates(code: string): string[];
|