@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
package/lib/api/spacer/spaces.js
DELETED
|
@@ -1,170 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Workspace spaces API functions for the Datalayer platform.
|
|
7
|
-
*
|
|
8
|
-
* Provides function for creating workspace spaces.
|
|
9
|
-
*
|
|
10
|
-
* @module api/spacer/spaces
|
|
11
|
-
*/
|
|
12
|
-
import { requestDatalayerAPI } from '../DatalayerApi.js';
|
|
13
|
-
import { API_BASE_PATHS, DEFAULT_SERVICE_URLS } from '../constants.js';
|
|
14
|
-
import { validateToken } from '../utils/validation.js';
|
|
15
|
-
/**
|
|
16
|
-
* Create a new workspace space.
|
|
17
|
-
* @param token - Authentication token
|
|
18
|
-
* @param data - Space creation configuration
|
|
19
|
-
* @param baseUrl - Base URL for the API
|
|
20
|
-
* @returns Promise resolving to the created space response
|
|
21
|
-
*/
|
|
22
|
-
export const createSpace = async (token, data, baseUrl = DEFAULT_SERVICE_URLS.SPACER) => {
|
|
23
|
-
validateToken(token);
|
|
24
|
-
return requestDatalayerAPI({
|
|
25
|
-
url: `${baseUrl}${API_BASE_PATHS.SPACER}/spaces`,
|
|
26
|
-
method: 'POST',
|
|
27
|
-
token,
|
|
28
|
-
body: data,
|
|
29
|
-
});
|
|
30
|
-
};
|
|
31
|
-
/**
|
|
32
|
-
* Get a space by UID.
|
|
33
|
-
* @param token - Authentication token
|
|
34
|
-
* @param uid - Space UID
|
|
35
|
-
* @param baseUrl - Base URL for the API
|
|
36
|
-
* @returns Promise resolving to the space response
|
|
37
|
-
*/
|
|
38
|
-
export const getSpace = async (token, uid, baseUrl = DEFAULT_SERVICE_URLS.SPACER) => {
|
|
39
|
-
validateToken(token);
|
|
40
|
-
return requestDatalayerAPI({
|
|
41
|
-
url: `${baseUrl}${API_BASE_PATHS.SPACER}/spaces/${uid}`,
|
|
42
|
-
method: 'GET',
|
|
43
|
-
token,
|
|
44
|
-
});
|
|
45
|
-
};
|
|
46
|
-
/**
|
|
47
|
-
* Update a space (owner updating their own space).
|
|
48
|
-
* @param token - Authentication token
|
|
49
|
-
* @param uid - Space UID
|
|
50
|
-
* @param data - Update data (supports arbitrary Solr fields)
|
|
51
|
-
* @param baseUrl - Base URL for the API
|
|
52
|
-
* @returns Promise resolving to the updated space response
|
|
53
|
-
*/
|
|
54
|
-
export const updateSpace = async (token, uid, data, baseUrl = DEFAULT_SERVICE_URLS.SPACER) => {
|
|
55
|
-
validateToken(token);
|
|
56
|
-
return requestDatalayerAPI({
|
|
57
|
-
url: `${baseUrl}${API_BASE_PATHS.SPACER}/spaces/${uid}`,
|
|
58
|
-
method: 'PUT',
|
|
59
|
-
token,
|
|
60
|
-
body: data,
|
|
61
|
-
});
|
|
62
|
-
};
|
|
63
|
-
/**
|
|
64
|
-
* Update a user-specific space (e.g., org admin managing another user's space).
|
|
65
|
-
* @param token - Authentication token
|
|
66
|
-
* @param uid - Space UID
|
|
67
|
-
* @param userId - User ID
|
|
68
|
-
* @param data - Update data (supports arbitrary Solr fields)
|
|
69
|
-
* @param baseUrl - Base URL for the API
|
|
70
|
-
* @returns Promise resolving to the updated space response
|
|
71
|
-
*/
|
|
72
|
-
export const updateUserSpace = async (token, uid, userId, data, baseUrl = DEFAULT_SERVICE_URLS.SPACER) => {
|
|
73
|
-
validateToken(token);
|
|
74
|
-
return requestDatalayerAPI({
|
|
75
|
-
url: `${baseUrl}${API_BASE_PATHS.SPACER}/spaces/${uid}/users/${userId}`,
|
|
76
|
-
method: 'PUT',
|
|
77
|
-
token,
|
|
78
|
-
body: data,
|
|
79
|
-
});
|
|
80
|
-
};
|
|
81
|
-
/**
|
|
82
|
-
* Delete a space and all its contents.
|
|
83
|
-
* @param token - Authentication token
|
|
84
|
-
* @param uid - Space UID
|
|
85
|
-
* @param baseUrl - Base URL for the API
|
|
86
|
-
* @returns Promise resolving to the delete response
|
|
87
|
-
*/
|
|
88
|
-
export const deleteSpace = async (token, uid, baseUrl = DEFAULT_SERVICE_URLS.SPACER) => {
|
|
89
|
-
validateToken(token);
|
|
90
|
-
return requestDatalayerAPI({
|
|
91
|
-
url: `${baseUrl}${API_BASE_PATHS.SPACER}/spaces/${uid}`,
|
|
92
|
-
method: 'DELETE',
|
|
93
|
-
token,
|
|
94
|
-
});
|
|
95
|
-
};
|
|
96
|
-
/**
|
|
97
|
-
* Get default items (notebook UID and document UID) for a space.
|
|
98
|
-
* @param token - Authentication token
|
|
99
|
-
* @param uid - Space UID
|
|
100
|
-
* @param baseUrl - Base URL for the API
|
|
101
|
-
* @returns Promise resolving to the default items response
|
|
102
|
-
*/
|
|
103
|
-
export const getSpaceDefaultItems = async (token, uid, baseUrl = DEFAULT_SERVICE_URLS.SPACER) => {
|
|
104
|
-
validateToken(token);
|
|
105
|
-
return requestDatalayerAPI({
|
|
106
|
-
url: `${baseUrl}${API_BASE_PATHS.SPACER}/spaces/${uid}/default-items`,
|
|
107
|
-
method: 'GET',
|
|
108
|
-
token,
|
|
109
|
-
});
|
|
110
|
-
};
|
|
111
|
-
/**
|
|
112
|
-
* Get spaces by type (e.g., 'project', 'workspace', 'course').
|
|
113
|
-
* @param token - Authentication token
|
|
114
|
-
* @param type - Space type to filter by
|
|
115
|
-
* @param baseUrl - Base URL for the API
|
|
116
|
-
* @returns Promise resolving to the spaces response
|
|
117
|
-
*/
|
|
118
|
-
export const getSpacesByType = async (token, type, baseUrl = DEFAULT_SERVICE_URLS.SPACER) => {
|
|
119
|
-
validateToken(token);
|
|
120
|
-
return requestDatalayerAPI({
|
|
121
|
-
url: `${baseUrl}${API_BASE_PATHS.SPACER}/spaces/types/${type}`,
|
|
122
|
-
method: 'GET',
|
|
123
|
-
token,
|
|
124
|
-
});
|
|
125
|
-
};
|
|
126
|
-
/**
|
|
127
|
-
* Make a space public.
|
|
128
|
-
* @param token - Authentication token
|
|
129
|
-
* @param uid - Space UID
|
|
130
|
-
* @param baseUrl - Base URL for the API
|
|
131
|
-
* @returns Promise resolving to the updated space response
|
|
132
|
-
*/
|
|
133
|
-
export const makeSpacePublic = async (token, uid, baseUrl = DEFAULT_SERVICE_URLS.SPACER) => {
|
|
134
|
-
validateToken(token);
|
|
135
|
-
return requestDatalayerAPI({
|
|
136
|
-
url: `${baseUrl}${API_BASE_PATHS.SPACER}/spaces/${uid}/public`,
|
|
137
|
-
method: 'PUT',
|
|
138
|
-
token,
|
|
139
|
-
});
|
|
140
|
-
};
|
|
141
|
-
/**
|
|
142
|
-
* Make a space private.
|
|
143
|
-
* @param token - Authentication token
|
|
144
|
-
* @param uid - Space UID
|
|
145
|
-
* @param baseUrl - Base URL for the API
|
|
146
|
-
* @returns Promise resolving to the updated space response
|
|
147
|
-
*/
|
|
148
|
-
export const makeSpacePrivate = async (token, uid, baseUrl = DEFAULT_SERVICE_URLS.SPACER) => {
|
|
149
|
-
validateToken(token);
|
|
150
|
-
return requestDatalayerAPI({
|
|
151
|
-
url: `${baseUrl}${API_BASE_PATHS.SPACER}/spaces/${uid}/private`,
|
|
152
|
-
method: 'PUT',
|
|
153
|
-
token,
|
|
154
|
-
});
|
|
155
|
-
};
|
|
156
|
-
/**
|
|
157
|
-
* Export a space and its contents.
|
|
158
|
-
* @param token - Authentication token
|
|
159
|
-
* @param uid - Space UID
|
|
160
|
-
* @param baseUrl - Base URL for the API
|
|
161
|
-
* @returns Promise resolving to the export data
|
|
162
|
-
*/
|
|
163
|
-
export const exportSpace = async (token, uid, baseUrl = DEFAULT_SERVICE_URLS.SPACER) => {
|
|
164
|
-
validateToken(token);
|
|
165
|
-
return requestDatalayerAPI({
|
|
166
|
-
url: `${baseUrl}${API_BASE_PATHS.SPACER}/spaces/${uid}/export`,
|
|
167
|
-
method: 'GET',
|
|
168
|
-
token,
|
|
169
|
-
});
|
|
170
|
-
};
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { SpacesForUserResponse } from '../../models/SpaceDTO';
|
|
2
|
-
/**
|
|
3
|
-
* Get all spaces for the current authenticated user.
|
|
4
|
-
* @param token - Authentication token
|
|
5
|
-
* @param baseUrl - Base URL for the API (defaults to production Spacer URL)
|
|
6
|
-
* @returns Promise resolving to the user's spaces
|
|
7
|
-
* @throws {Error} If authentication token is missing or invalid
|
|
8
|
-
*/
|
|
9
|
-
export declare const getMySpaces: (token: string, baseUrl?: string) => Promise<SpacesForUserResponse>;
|
package/lib/api/spacer/users.js
DELETED
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* User-related Spacer API functions for the Datalayer platform.
|
|
7
|
-
*
|
|
8
|
-
* Provides functions for user-specific operations in the Spacer service.
|
|
9
|
-
*
|
|
10
|
-
* @module api/spacer/users
|
|
11
|
-
*/
|
|
12
|
-
import { requestDatalayerAPI } from '../DatalayerApi.js';
|
|
13
|
-
import { API_BASE_PATHS, DEFAULT_SERVICE_URLS } from '../constants.js';
|
|
14
|
-
import { validateToken } from '../utils/validation.js';
|
|
15
|
-
/**
|
|
16
|
-
* Get all spaces for the current authenticated user.
|
|
17
|
-
* @param token - Authentication token
|
|
18
|
-
* @param baseUrl - Base URL for the API (defaults to production Spacer URL)
|
|
19
|
-
* @returns Promise resolving to the user's spaces
|
|
20
|
-
* @throws {Error} If authentication token is missing or invalid
|
|
21
|
-
*/
|
|
22
|
-
export const getMySpaces = async (token, baseUrl = DEFAULT_SERVICE_URLS.SPACER) => {
|
|
23
|
-
validateToken(token);
|
|
24
|
-
return requestDatalayerAPI({
|
|
25
|
-
url: `${baseUrl}${API_BASE_PATHS.SPACER}/spaces/users/me`,
|
|
26
|
-
method: 'GET',
|
|
27
|
-
token,
|
|
28
|
-
});
|
|
29
|
-
};
|
|
@@ -1,93 +0,0 @@
|
|
|
1
|
-
import type { Constructor } from '../utils/mixins';
|
|
2
|
-
import { EnvironmentDTO } from '../../models/EnvironmentDTO';
|
|
3
|
-
import { RuntimeDTO } from '../../models/RuntimeDTO';
|
|
4
|
-
import { CodeSandboxSnapshotDTO } from '../../models/CodeSandboxSnapshotDTO';
|
|
5
|
-
import { HealthCheck } from '../../models/HealthCheck';
|
|
6
|
-
/** Options for ensuring a runtime is available. */
|
|
7
|
-
export interface EnsureRuntimeOptions {
|
|
8
|
-
/** Name of the environment to use */
|
|
9
|
-
environmentName?: string;
|
|
10
|
-
/** Maximum credits to allocate */
|
|
11
|
-
creditsLimit?: number;
|
|
12
|
-
/** Whether to wait for runtime to be ready */
|
|
13
|
-
waitForReady?: boolean;
|
|
14
|
-
/** Maximum time to wait for ready state (ms) */
|
|
15
|
-
maxWaitTime?: number;
|
|
16
|
-
/** Whether to reuse existing suitable runtime */
|
|
17
|
-
reuseExisting?: boolean;
|
|
18
|
-
/** Snapshot ID to create runtime from */
|
|
19
|
-
snapshotId?: string;
|
|
20
|
-
}
|
|
21
|
-
/** Runtimes mixin providing computational environment and runtime management. */
|
|
22
|
-
export declare function RuntimesMixin<TBase extends Constructor>(Base: TBase): {
|
|
23
|
-
new (...args: any[]): {
|
|
24
|
-
_extractRuntimePodName(runtimePodNameOrInstance: string | RuntimeDTO): string;
|
|
25
|
-
_extractSnapshotId(snapshotIdOrInstance: string | CodeSandboxSnapshotDTO): string;
|
|
26
|
-
/**
|
|
27
|
-
* List all available computational environments.
|
|
28
|
-
* @returns Array of Environment model instances
|
|
29
|
-
*/
|
|
30
|
-
listEnvironments(): Promise<EnvironmentDTO[]>;
|
|
31
|
-
/**
|
|
32
|
-
* Create a new computational runtime.
|
|
33
|
-
* @param environmentName - Name of the environment to use
|
|
34
|
-
* @param type - Type of runtime
|
|
35
|
-
* @param givenName - User-friendly name for the runtime
|
|
36
|
-
* @param creditsLimit - Credits limit
|
|
37
|
-
* @returns Created runtime
|
|
38
|
-
*/
|
|
39
|
-
createRuntime(environmentName: string, type: "notebook" | "terminal" | "job", givenName: string, minutesLimit: number, fromSnapshotId?: string): Promise<RuntimeDTO>;
|
|
40
|
-
/**
|
|
41
|
-
* List all runtimes.
|
|
42
|
-
* @returns Array of runtimes
|
|
43
|
-
*/
|
|
44
|
-
listRuntimes(): Promise<RuntimeDTO[]>;
|
|
45
|
-
/**
|
|
46
|
-
* Get details for a specific runtime by pod name.
|
|
47
|
-
* @param podName - Runtime pod name
|
|
48
|
-
* @returns Runtime details
|
|
49
|
-
*/
|
|
50
|
-
getRuntime(podName: string): Promise<RuntimeDTO>;
|
|
51
|
-
/**
|
|
52
|
-
* Delete a runtime permanently.
|
|
53
|
-
* @param podName - Runtime pod name
|
|
54
|
-
*/
|
|
55
|
-
deleteRuntime(podName: string): Promise<void>;
|
|
56
|
-
/**
|
|
57
|
-
* Terminate all runtimes.
|
|
58
|
-
* Lists all runtimes and deletes them in parallel.
|
|
59
|
-
* @returns Array of results for each deletion (fulfilled or rejected)
|
|
60
|
-
*/
|
|
61
|
-
terminateAllRuntimes(): Promise<PromiseSettledResult<void>[]>;
|
|
62
|
-
/**
|
|
63
|
-
* Create a snapshot of a runtime.
|
|
64
|
-
* @param podName - Pod name of the runtime to snapshot
|
|
65
|
-
* @param name - Name for the snapshot
|
|
66
|
-
* @param description - Description of the snapshot
|
|
67
|
-
* @param stop - Whether to stop the runtime after creating snapshot (defaults to false)
|
|
68
|
-
* @returns Created snapshot
|
|
69
|
-
*/
|
|
70
|
-
createSnapshot(podName: string, name: string, description: string, stop?: boolean): Promise<CodeSandboxSnapshotDTO>;
|
|
71
|
-
/**
|
|
72
|
-
* List all code sandbox snapshots.
|
|
73
|
-
* @returns Array of snapshots
|
|
74
|
-
*/
|
|
75
|
-
listSnapshots(): Promise<CodeSandboxSnapshotDTO[]>;
|
|
76
|
-
/**
|
|
77
|
-
* Get details for a specific snapshot by ID.
|
|
78
|
-
* @param id - Snapshot ID
|
|
79
|
-
* @returns Snapshot details
|
|
80
|
-
*/
|
|
81
|
-
getSnapshot(id: string): Promise<CodeSandboxSnapshotDTO>;
|
|
82
|
-
/**
|
|
83
|
-
* Delete a snapshot permanently.
|
|
84
|
-
* @param id - Snapshot ID
|
|
85
|
-
*/
|
|
86
|
-
deleteSnapshot(id: string): Promise<void>;
|
|
87
|
-
/**
|
|
88
|
-
* Check the health status of the Runtimes service.
|
|
89
|
-
* @returns Health check result with status and response time
|
|
90
|
-
*/
|
|
91
|
-
checkRuntimesHealth(): Promise<HealthCheck>;
|
|
92
|
-
};
|
|
93
|
-
} & TBase;
|
|
@@ -1,229 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* Copyright (c) 2023-2025 Datalayer, Inc.
|
|
3
|
-
* Distributed under the terms of the Modified BSD License.
|
|
4
|
-
*/
|
|
5
|
-
/**
|
|
6
|
-
* Runtimes mixin for managing computational environments and runtime instances.
|
|
7
|
-
* @module client/mixins/RuntimesMixin
|
|
8
|
-
*/
|
|
9
|
-
import * as environments from '../../api/runtimes/environments.js';
|
|
10
|
-
import * as runtimes from '../../api/runtimes/runtimes.js';
|
|
11
|
-
import * as snapshots from '../../api/runtimes/snapshots.js';
|
|
12
|
-
import { EnvironmentDTO } from '../../models/EnvironmentDTO.js';
|
|
13
|
-
import { RuntimeDTO } from '../../models/RuntimeDTO.js';
|
|
14
|
-
import { CodeSandboxSnapshotDTO } from '../../models/CodeSandboxSnapshotDTO.js';
|
|
15
|
-
import { HealthCheck } from '../../models/HealthCheck.js';
|
|
16
|
-
/** Runtimes mixin providing computational environment and runtime management. */
|
|
17
|
-
export function RuntimesMixin(Base) {
|
|
18
|
-
return class extends Base {
|
|
19
|
-
// ========================================================================
|
|
20
|
-
// Helper Functions
|
|
21
|
-
// ========================================================================
|
|
22
|
-
_extractRuntimePodName(runtimePodNameOrInstance) {
|
|
23
|
-
return typeof runtimePodNameOrInstance === 'string'
|
|
24
|
-
? runtimePodNameOrInstance
|
|
25
|
-
: runtimePodNameOrInstance.podName;
|
|
26
|
-
}
|
|
27
|
-
_extractSnapshotId(snapshotIdOrInstance) {
|
|
28
|
-
return typeof snapshotIdOrInstance === 'string'
|
|
29
|
-
? snapshotIdOrInstance
|
|
30
|
-
: snapshotIdOrInstance.uid;
|
|
31
|
-
}
|
|
32
|
-
// ========================================================================
|
|
33
|
-
// Environments
|
|
34
|
-
// ========================================================================
|
|
35
|
-
/**
|
|
36
|
-
* List all available computational environments.
|
|
37
|
-
* @returns Array of Environment model instances
|
|
38
|
-
*/
|
|
39
|
-
async listEnvironments() {
|
|
40
|
-
const token = this.getToken();
|
|
41
|
-
const runtimesRunUrl = this.getRuntimesRunUrl();
|
|
42
|
-
const response = await environments.listEnvironments(token, runtimesRunUrl);
|
|
43
|
-
// Save for later use after first call
|
|
44
|
-
this.environments = response.environments.map(env => new EnvironmentDTO(env, this));
|
|
45
|
-
return this.environments;
|
|
46
|
-
}
|
|
47
|
-
// ========================================================================
|
|
48
|
-
// Runtimes
|
|
49
|
-
// ========================================================================
|
|
50
|
-
/**
|
|
51
|
-
* Create a new computational runtime.
|
|
52
|
-
* @param environmentName - Name of the environment to use
|
|
53
|
-
* @param type - Type of runtime
|
|
54
|
-
* @param givenName - User-friendly name for the runtime
|
|
55
|
-
* @param creditsLimit - Credits limit
|
|
56
|
-
* @returns Created runtime
|
|
57
|
-
*/
|
|
58
|
-
async createRuntime(environmentName, type, givenName, minutesLimit, fromSnapshotId) {
|
|
59
|
-
if (!this.environments) {
|
|
60
|
-
await this.listEnvironments();
|
|
61
|
-
}
|
|
62
|
-
if (this.environments) {
|
|
63
|
-
const env = this.environments.find((e) => e.name === environmentName);
|
|
64
|
-
if (!env) {
|
|
65
|
-
throw new Error(`Environment "${environmentName}" not found. Available environments: ${this.environments.map((e) => e.name).join(', ')}`);
|
|
66
|
-
}
|
|
67
|
-
else {
|
|
68
|
-
const token = this.getToken();
|
|
69
|
-
const runtimesRunUrl = this.getRuntimesRunUrl();
|
|
70
|
-
const creditsLimit = this.calculateCreditsFromMinutes(minutesLimit, env.burningRate);
|
|
71
|
-
const data = {
|
|
72
|
-
environment_name: environmentName,
|
|
73
|
-
type,
|
|
74
|
-
given_name: givenName,
|
|
75
|
-
credits_limit: creditsLimit,
|
|
76
|
-
from: fromSnapshotId,
|
|
77
|
-
};
|
|
78
|
-
const response = await runtimes.createRuntime(token, data, runtimesRunUrl);
|
|
79
|
-
return new RuntimeDTO(response.runtime, this);
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
throw new Error('Environments not loaded');
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
/**
|
|
87
|
-
* List all runtimes.
|
|
88
|
-
* @returns Array of runtimes
|
|
89
|
-
*/
|
|
90
|
-
async listRuntimes() {
|
|
91
|
-
const token = this.getToken();
|
|
92
|
-
const runtimesRunUrl = this.getRuntimesRunUrl();
|
|
93
|
-
const response = await runtimes.listRuntimes(token, runtimesRunUrl);
|
|
94
|
-
return response.runtimes.map(r => new RuntimeDTO(r, this));
|
|
95
|
-
}
|
|
96
|
-
/**
|
|
97
|
-
* Get details for a specific runtime by pod name.
|
|
98
|
-
* @param podName - Runtime pod name
|
|
99
|
-
* @returns Runtime details
|
|
100
|
-
*/
|
|
101
|
-
async getRuntime(podName) {
|
|
102
|
-
const token = this.getToken();
|
|
103
|
-
const runtimesRunUrl = this.getRuntimesRunUrl();
|
|
104
|
-
const runtimeData = await runtimes.getRuntime(token, podName, runtimesRunUrl);
|
|
105
|
-
return new RuntimeDTO(runtimeData, this);
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Delete a runtime permanently.
|
|
109
|
-
* @param podName - Runtime pod name
|
|
110
|
-
*/
|
|
111
|
-
async deleteRuntime(podName) {
|
|
112
|
-
const token = this.getToken();
|
|
113
|
-
const runtimesRunUrl = this.getRuntimesRunUrl();
|
|
114
|
-
await runtimes.deleteRuntime(token, podName, runtimesRunUrl);
|
|
115
|
-
}
|
|
116
|
-
/**
|
|
117
|
-
* Terminate all runtimes.
|
|
118
|
-
* Lists all runtimes and deletes them in parallel.
|
|
119
|
-
* @returns Array of results for each deletion (fulfilled or rejected)
|
|
120
|
-
*/
|
|
121
|
-
async terminateAllRuntimes() {
|
|
122
|
-
const token = this.getToken();
|
|
123
|
-
const runtimesRunUrl = this.getRuntimesRunUrl();
|
|
124
|
-
// List all runtimes
|
|
125
|
-
const response = await runtimes.listRuntimes(token, runtimesRunUrl);
|
|
126
|
-
// Delete all runtimes in parallel
|
|
127
|
-
const deletePromises = response.runtimes.map(runtime => runtimes.deleteRuntime(token, runtime.pod_name, runtimesRunUrl));
|
|
128
|
-
return Promise.allSettled(deletePromises);
|
|
129
|
-
}
|
|
130
|
-
// ========================================================================
|
|
131
|
-
// Snapshots
|
|
132
|
-
// ========================================================================
|
|
133
|
-
/**
|
|
134
|
-
* Create a snapshot of a runtime.
|
|
135
|
-
* @param podName - Pod name of the runtime to snapshot
|
|
136
|
-
* @param name - Name for the snapshot
|
|
137
|
-
* @param description - Description of the snapshot
|
|
138
|
-
* @param stop - Whether to stop the runtime after creating snapshot (defaults to false)
|
|
139
|
-
* @returns Created snapshot
|
|
140
|
-
*/
|
|
141
|
-
async createSnapshot(podName, name, description, stop = false) {
|
|
142
|
-
const token = this.getToken();
|
|
143
|
-
const runtimesRunUrl = this.getRuntimesRunUrl();
|
|
144
|
-
const data = {
|
|
145
|
-
pod_name: podName,
|
|
146
|
-
name,
|
|
147
|
-
description,
|
|
148
|
-
stop,
|
|
149
|
-
};
|
|
150
|
-
const response = await snapshots.createSnapshot(token, data, runtimesRunUrl);
|
|
151
|
-
return new CodeSandboxSnapshotDTO(response.snapshot, this);
|
|
152
|
-
}
|
|
153
|
-
/**
|
|
154
|
-
* List all code sandbox snapshots.
|
|
155
|
-
* @returns Array of snapshots
|
|
156
|
-
*/
|
|
157
|
-
async listSnapshots() {
|
|
158
|
-
const token = this.getToken();
|
|
159
|
-
const runtimesRunUrl = this.getRuntimesRunUrl();
|
|
160
|
-
const response = await snapshots.listSnapshots(token, runtimesRunUrl);
|
|
161
|
-
return response.snapshots.map(s => new CodeSandboxSnapshotDTO(s, this));
|
|
162
|
-
}
|
|
163
|
-
/**
|
|
164
|
-
* Get details for a specific snapshot by ID.
|
|
165
|
-
* @param id - Snapshot ID
|
|
166
|
-
* @returns Snapshot details
|
|
167
|
-
*/
|
|
168
|
-
async getSnapshot(id) {
|
|
169
|
-
const token = this.getToken();
|
|
170
|
-
const runtimesRunUrl = this.getRuntimesRunUrl();
|
|
171
|
-
const response = await snapshots.getSnapshot(token, id, runtimesRunUrl);
|
|
172
|
-
return new CodeSandboxSnapshotDTO(response.snapshot, this);
|
|
173
|
-
}
|
|
174
|
-
/**
|
|
175
|
-
* Delete a snapshot permanently.
|
|
176
|
-
* @param id - Snapshot ID
|
|
177
|
-
*/
|
|
178
|
-
async deleteSnapshot(id) {
|
|
179
|
-
const token = this.getToken();
|
|
180
|
-
const runtimesRunUrl = this.getRuntimesRunUrl();
|
|
181
|
-
await snapshots.deleteSnapshot(token, id, runtimesRunUrl);
|
|
182
|
-
}
|
|
183
|
-
// ========================================================================
|
|
184
|
-
// Service Health Checks
|
|
185
|
-
// ========================================================================
|
|
186
|
-
/**
|
|
187
|
-
* Check the health status of the Runtimes service.
|
|
188
|
-
* @returns Health check result with status and response time
|
|
189
|
-
*/
|
|
190
|
-
async checkRuntimesHealth() {
|
|
191
|
-
const startTime = Date.now();
|
|
192
|
-
const errors = [];
|
|
193
|
-
let status = 'unknown';
|
|
194
|
-
let healthy = false;
|
|
195
|
-
try {
|
|
196
|
-
// Test basic connectivity by listing environments (lightweight operation)
|
|
197
|
-
const environments = await this.listEnvironments();
|
|
198
|
-
const responseTime = Date.now() - startTime;
|
|
199
|
-
if (Array.isArray(environments)) {
|
|
200
|
-
healthy = true;
|
|
201
|
-
status = 'operational';
|
|
202
|
-
}
|
|
203
|
-
else {
|
|
204
|
-
status = 'degraded';
|
|
205
|
-
errors.push('Unexpected response format from environments endpoint');
|
|
206
|
-
}
|
|
207
|
-
return new HealthCheck({
|
|
208
|
-
healthy,
|
|
209
|
-
status,
|
|
210
|
-
responseTime,
|
|
211
|
-
errors,
|
|
212
|
-
timestamp: new Date(),
|
|
213
|
-
}, this);
|
|
214
|
-
}
|
|
215
|
-
catch (error) {
|
|
216
|
-
const responseTime = Date.now() - startTime;
|
|
217
|
-
status = 'down';
|
|
218
|
-
errors.push(`Service unreachable: ${error}`);
|
|
219
|
-
return new HealthCheck({
|
|
220
|
-
healthy: false,
|
|
221
|
-
status,
|
|
222
|
-
responseTime,
|
|
223
|
-
errors,
|
|
224
|
-
timestamp: new Date(),
|
|
225
|
-
}, this);
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
};
|
|
229
|
-
}
|