@datalayer/core 1.0.24 → 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.
Files changed (364) hide show
  1. package/README.md +35 -24
  2. package/lib/api/constants.d.ts +3 -0
  3. package/lib/api/constants.js +3 -0
  4. package/lib/api/index.d.ts +0 -8
  5. package/lib/api/index.js +0 -8
  6. package/lib/cli-login.js +167 -0
  7. package/lib/client/base.d.ts +0 -3
  8. package/lib/client/base.js +0 -2
  9. package/lib/client/index.d.ts +10 -98
  10. package/lib/client/index.js +12 -21
  11. package/lib/components/avatars/UserAvatar.d.ts +16 -0
  12. package/lib/components/avatars/UserAvatar.js +47 -0
  13. package/lib/components/avatars/index.d.ts +1 -0
  14. package/lib/components/avatars/index.js +1 -0
  15. package/lib/components/billing/BillableAccountSelect.js +4 -0
  16. package/lib/components/billing/index.js +4 -0
  17. package/lib/components/checkout/StripeCheckout.js +48 -2
  18. package/lib/components/context/index.d.ts +0 -1
  19. package/lib/components/context/index.js +0 -1
  20. package/lib/components/display/DisplayHandle.d.ts +12 -0
  21. package/lib/components/display/DisplayHandle.js +11 -0
  22. package/lib/components/display/LiveRelativeTime.d.ts +1 -10
  23. package/lib/components/display/LiveRelativeTime.js +5 -16
  24. package/lib/components/display/index.d.ts +1 -0
  25. package/lib/components/display/index.js +1 -0
  26. package/lib/components/flashes/index.d.ts +0 -1
  27. package/lib/components/flashes/index.js +0 -1
  28. package/lib/components/index.d.ts +2 -0
  29. package/lib/components/index.js +2 -0
  30. package/lib/components/principal/Principal.d.ts +7 -0
  31. package/lib/components/principal/Principal.js +153 -16
  32. package/lib/components/principal/PrincipalAvatar.d.ts +1 -1
  33. package/lib/components/principal/PrincipalAvatar.js +4 -28
  34. package/lib/components/principal/PrincipalBadge.js +4 -4
  35. package/lib/components/principal/PrincipalDetailsOverlay.d.ts +4 -2
  36. package/lib/components/principal/PrincipalDetailsOverlay.js +27 -7
  37. package/lib/components/principal/PrincipalSwitcherMenu.js +76 -39
  38. package/lib/components/progress/index.d.ts +0 -1
  39. package/lib/components/progress/index.js +0 -1
  40. package/lib/components/sharing/ShareAccessComponent.d.ts +3 -2
  41. package/lib/components/sharing/ShareAccessComponent.js +180 -133
  42. package/lib/components/sharing/SharingEditor.js +4 -0
  43. package/lib/components/snippets/index.d.ts +1 -1
  44. package/lib/components/snippets/index.js +1 -1
  45. package/lib/components/students/StudentResultCircle.d.ts +21 -0
  46. package/lib/components/students/StudentResultCircle.js +59 -0
  47. package/lib/components/students/index.d.ts +1 -1
  48. package/lib/components/students/index.js +1 -1
  49. package/lib/components/time/LiveRelativeTime.d.ts +14 -0
  50. package/lib/components/time/LiveRelativeTime.js +43 -0
  51. package/lib/components/time/index.d.ts +1 -0
  52. package/lib/components/time/index.js +9 -0
  53. package/lib/components/timeline/Timeline.d.ts +20 -0
  54. package/lib/components/timeline/Timeline.js +90 -0
  55. package/lib/components/timeline/index.d.ts +1 -0
  56. package/lib/components/timeline/index.js +9 -0
  57. package/lib/components/tokens/index.d.ts +1 -1
  58. package/lib/components/tokens/index.js +1 -1
  59. package/lib/components/toolbars/index.d.ts +1 -3
  60. package/lib/components/toolbars/index.js +1 -3
  61. package/lib/hooks/cacheConverters.d.ts +21 -0
  62. package/lib/hooks/cacheConverters.js +110 -0
  63. package/lib/hooks/index.d.ts +0 -2
  64. package/lib/hooks/index.js +0 -2
  65. package/lib/hooks/useCache.d.ts +65 -36
  66. package/lib/hooks/useCache.js +424 -65
  67. package/lib/hooks/useDatalayer.js +3 -1
  68. package/lib/hooks/useIAM.js +1 -3
  69. package/lib/hooks/useLocationHandles.d.ts +3 -1
  70. package/lib/hooks/useLocationHandles.js +2 -1
  71. package/lib/hooks/usePrincipalStore.d.ts +2 -2
  72. package/lib/hooks/usePrincipalStore.js +97 -14
  73. package/lib/hooks/useProjectStore.d.ts +1 -1
  74. package/lib/hooks/useSelectedPrincipal.js +1 -1
  75. package/lib/hooks/useUser.js +19 -2
  76. package/lib/index.d.ts +1 -6
  77. package/lib/index.js +1 -13
  78. package/lib/main.js +3 -3
  79. package/lib/mocks/index.js +1 -1
  80. package/lib/mocks/models/index.d.ts +0 -1
  81. package/lib/mocks/models/index.js +0 -1
  82. package/lib/models/Datasource.d.ts +2 -2
  83. package/lib/models/IAM.d.ts +1 -1
  84. package/lib/models/IAMToken.d.ts +1 -1
  85. package/lib/models/School.d.ts +12 -3
  86. package/lib/models/Secret.d.ts +2 -2
  87. package/lib/models/Student.d.ts +13 -3
  88. package/lib/models/Usage.d.ts +11 -1
  89. package/lib/models/UserDTO.d.ts +2 -2
  90. package/lib/models/index.d.ts +0 -30
  91. package/lib/models/index.js +0 -30
  92. package/lib/routes/index.d.ts +1 -0
  93. package/lib/routes/index.js +1 -0
  94. package/lib/routes/publicPaths.d.ts +23 -0
  95. package/lib/routes/publicPaths.js +74 -0
  96. package/lib/state/State.d.ts +0 -12
  97. package/lib/state/State.js +0 -12
  98. package/lib/state/substates/CoreState.js +1 -1
  99. package/lib/state/substates/LayoutState.d.ts +12 -1
  100. package/lib/state/substates/index.d.ts +0 -7
  101. package/lib/state/substates/index.js +0 -7
  102. package/lib/utils/Date.d.ts +7 -0
  103. package/lib/utils/Date.js +43 -10
  104. package/lib/utils/Handles.js +3 -1
  105. package/lib/utils/index.d.ts +1 -1
  106. package/lib/utils/index.js +1 -1
  107. package/lib/views/api-keys/APIKeyEdit.d.ts +8 -0
  108. package/lib/views/{iam-tokens/IAMTokenEdit.js → api-keys/APIKeyEdit.js} +31 -31
  109. package/lib/views/api-keys/APIKeyNew.d.ts +8 -0
  110. package/lib/views/api-keys/APIKeyNew.js +143 -0
  111. package/lib/views/api-keys/APIKeys.d.ts +12 -0
  112. package/lib/views/api-keys/APIKeys.js +128 -0
  113. package/lib/views/api-keys/APIKeysStandalone.d.ts +2 -0
  114. package/lib/views/api-keys/APIKeysStandalone.js +117 -0
  115. package/lib/views/api-keys/index.d.ts +3 -0
  116. package/lib/{mocks/jupyter → views/api-keys}/index.js +3 -1
  117. package/lib/views/datasources/DatasourceDetail.d.ts +1 -1
  118. package/lib/views/datasources/DatasourceNew.d.ts +1 -1
  119. package/lib/views/datasources/Datasources.d.ts +1 -1
  120. package/lib/views/datasources/Datasources.js +12 -3
  121. package/lib/views/iam/SignInSimple.d.ts +37 -1
  122. package/lib/views/iam/SignInSimple.js +110 -12
  123. package/package.json +5 -3
  124. package/lib/App.css +0 -47
  125. package/lib/App.d.ts +0 -3
  126. package/lib/App.js +0 -21
  127. package/lib/api/runtimes/checkpoints.d.ts +0 -122
  128. package/lib/api/runtimes/checkpoints.js +0 -118
  129. package/lib/api/runtimes/environments.d.ts +0 -9
  130. package/lib/api/runtimes/environments.js +0 -29
  131. package/lib/api/runtimes/healthz.d.ts +0 -15
  132. package/lib/api/runtimes/healthz.js +0 -44
  133. package/lib/api/runtimes/index.d.ts +0 -12
  134. package/lib/api/runtimes/index.js +0 -16
  135. package/lib/api/runtimes/runtimes.d.ts +0 -138
  136. package/lib/api/runtimes/runtimes.js +0 -230
  137. package/lib/api/runtimes/snapshots.d.ts +0 -38
  138. package/lib/api/runtimes/snapshots.js +0 -82
  139. package/lib/api/spacer/documents.d.ts +0 -12
  140. package/lib/api/spacer/documents.js +0 -43
  141. package/lib/api/spacer/healthz.d.ts +0 -15
  142. package/lib/api/spacer/healthz.js +0 -44
  143. package/lib/api/spacer/index.d.ts +0 -15
  144. package/lib/api/spacer/index.js +0 -19
  145. package/lib/api/spacer/items.d.ts +0 -25
  146. package/lib/api/spacer/items.js +0 -55
  147. package/lib/api/spacer/lexicals.d.ts +0 -34
  148. package/lib/api/spacer/lexicals.js +0 -89
  149. package/lib/api/spacer/notebooks.d.ts +0 -34
  150. package/lib/api/spacer/notebooks.js +0 -89
  151. package/lib/api/spacer/spaces.d.ts +0 -84
  152. package/lib/api/spacer/spaces.js +0 -170
  153. package/lib/api/spacer/users.d.ts +0 -9
  154. package/lib/api/spacer/users.js +0 -29
  155. package/lib/client/mixins/RuntimesMixin.d.ts +0 -93
  156. package/lib/client/mixins/RuntimesMixin.js +0 -229
  157. package/lib/client/mixins/SpacerMixin.d.ts +0 -210
  158. package/lib/client/mixins/SpacerMixin.js +0 -615
  159. package/lib/client/utils/spacerUtils.d.ts +0 -18
  160. package/lib/client/utils/spacerUtils.js +0 -32
  161. package/lib/collaboration/DatalayerCollaboration.d.ts +0 -13
  162. package/lib/collaboration/DatalayerCollaboration.js +0 -28
  163. package/lib/collaboration/DatalayerCollaborationProvider.d.ts +0 -60
  164. package/lib/collaboration/DatalayerCollaborationProvider.js +0 -163
  165. package/lib/collaboration/index.d.ts +0 -2
  166. package/lib/collaboration/index.js +0 -6
  167. package/lib/components/context/SpaceSelect.d.ts +0 -2
  168. package/lib/components/context/SpaceSelect.js +0 -42
  169. package/lib/components/flashes/FlashDisclaimer.d.ts +0 -2
  170. package/lib/components/flashes/FlashDisclaimer.js +0 -17
  171. package/lib/components/icons/ArtifactIcon.d.ts +0 -10
  172. package/lib/components/icons/ArtifactIcon.js +0 -58
  173. package/lib/components/icons/index.d.ts +0 -1
  174. package/lib/components/icons/index.js +0 -5
  175. package/lib/components/nbgrader/NbGradesDetails.d.ts +0 -5
  176. package/lib/components/nbgrader/NbGradesDetails.js +0 -14
  177. package/lib/components/nbgrader/index.d.ts +0 -1
  178. package/lib/components/nbgrader/index.js +0 -5
  179. package/lib/components/progress/CreditsIndicator.d.ts +0 -33
  180. package/lib/components/progress/CreditsIndicator.js +0 -23
  181. package/lib/components/runtimes/RuntimeCellVariables.d.ts +0 -39
  182. package/lib/components/runtimes/RuntimeCellVariables.js +0 -172
  183. package/lib/components/runtimes/RuntimeCellVariablesDialog.d.ts +0 -37
  184. package/lib/components/runtimes/RuntimeCellVariablesDialog.js +0 -101
  185. package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +0 -57
  186. package/lib/components/runtimes/RuntimeLauncherDialog.js +0 -275
  187. package/lib/components/runtimes/RuntimePickerBase.d.ts +0 -69
  188. package/lib/components/runtimes/RuntimePickerBase.js +0 -122
  189. package/lib/components/runtimes/RuntimePickerCell.d.ts +0 -34
  190. package/lib/components/runtimes/RuntimePickerCell.js +0 -104
  191. package/lib/components/runtimes/RuntimePickerNotebook.d.ts +0 -42
  192. package/lib/components/runtimes/RuntimePickerNotebook.js +0 -232
  193. package/lib/components/runtimes/RuntimeReservationControl.d.ts +0 -47
  194. package/lib/components/runtimes/RuntimeReservationControl.js +0 -42
  195. package/lib/components/runtimes/RuntimeSimplePicker.d.ts +0 -38
  196. package/lib/components/runtimes/RuntimeSimplePicker.js +0 -155
  197. package/lib/components/runtimes/RuntimeTransfer.d.ts +0 -16
  198. package/lib/components/runtimes/RuntimeTransfer.js +0 -5
  199. package/lib/components/runtimes/RuntimeUtils.d.ts +0 -17
  200. package/lib/components/runtimes/RuntimeUtils.js +0 -178
  201. package/lib/components/runtimes/RuntimeVariables.d.ts +0 -38
  202. package/lib/components/runtimes/RuntimeVariables.js +0 -75
  203. package/lib/components/runtimes/index.d.ts +0 -11
  204. package/lib/components/runtimes/index.js +0 -15
  205. package/lib/components/snapshots/SandboxSnapshotMenu.d.ts +0 -33
  206. package/lib/components/snapshots/SandboxSnapshotMenu.js +0 -169
  207. package/lib/components/snapshots/index.d.ts +0 -1
  208. package/lib/components/snapshots/index.js +0 -5
  209. package/lib/components/snippets/SnippetDialog.d.ts +0 -42
  210. package/lib/components/snippets/SnippetDialog.js +0 -42
  211. package/lib/components/students/StudentItemStatus.d.ts +0 -7
  212. package/lib/components/students/StudentItemStatus.js +0 -66
  213. package/lib/components/tokens/SpaceVariantToken.d.ts +0 -5
  214. package/lib/components/tokens/SpaceVariantToken.js +0 -23
  215. package/lib/components/toolbars/AssignmentEditorToolbar.d.ts +0 -4
  216. package/lib/components/toolbars/AssignmentEditorToolbar.js +0 -18
  217. package/lib/components/toolbars/DocumentEditorToolbar.d.ts +0 -2
  218. package/lib/components/toolbars/DocumentEditorToolbar.js +0 -12
  219. package/lib/components/toolbars/NotebookEditorToolbar.d.ts +0 -29
  220. package/lib/components/toolbars/NotebookEditorToolbar.js +0 -30
  221. package/lib/examples/CellExample.d.ts +0 -6
  222. package/lib/examples/CellExample.js +0 -20
  223. package/lib/examples/NotebookExample.d.ts +0 -6
  224. package/lib/examples/NotebookExample.js +0 -19
  225. package/lib/examples/lexical-theme.css +0 -436
  226. package/lib/examples/notebooks/IPyWidgetsExample.ipynb.json +0 -101
  227. package/lib/examples/notebooks/IPyWidgetsExampleWithState.ipynb.json +0 -112
  228. package/lib/examples/notebooks/Lite.ipynb.json +0 -128
  229. package/lib/examples/notebooks/Matplotlib.ipynb.json +0 -137
  230. package/lib/examples/notebooks/NotebookExample1.ipynb.json +0 -126
  231. package/lib/examples/notebooks/NotebookExample2.ipynb.json +0 -48
  232. package/lib/examples/notebooks/NotebookOutputs.ipynb.json +0 -49
  233. package/lib/examples/notebooks/NotebookToCExample.ipynb.json +0 -102
  234. package/lib/examples/notebooks/PyGWalker.ipynb.json +0 -55
  235. package/lib/hooks/useCellOutputshot.d.ts +0 -4
  236. package/lib/hooks/useCellOutputshot.js +0 -25
  237. package/lib/hooks/useProjects.d.ts +0 -628
  238. package/lib/hooks/useProjects.js +0 -190
  239. package/lib/hooks/useRuntimes.d.ts +0 -5
  240. package/lib/hooks/useRuntimes.js +0 -34
  241. package/lib/mocks/models/CourseMock.d.ts +0 -6
  242. package/lib/mocks/models/CourseMock.js +0 -29
  243. package/lib/mocks/models/SpaceMock.d.ts +0 -6
  244. package/lib/mocks/models/SpaceMock.js +0 -25
  245. package/lib/models/Assignment.d.ts +0 -7
  246. package/lib/models/Assignment.js +0 -5
  247. package/lib/models/Cell.d.ts +0 -8
  248. package/lib/models/Cell.js +0 -5
  249. package/lib/models/CodeBlock.d.ts +0 -10
  250. package/lib/models/CodeBlock.js +0 -5
  251. package/lib/models/CodeSandboxSnapshot.d.ts +0 -92
  252. package/lib/models/CodeSandboxSnapshot.js +0 -13
  253. package/lib/models/CodeSandboxSnapshotDTO.d.ts +0 -173
  254. package/lib/models/CodeSandboxSnapshotDTO.js +0 -139
  255. package/lib/models/CodefeedBlocks.d.ts +0 -7
  256. package/lib/models/CodefeedBlocks.js +0 -5
  257. package/lib/models/Content.d.ts +0 -5
  258. package/lib/models/Content.js +0 -5
  259. package/lib/models/Course.d.ts +0 -17
  260. package/lib/models/Course.js +0 -5
  261. package/lib/models/Dataset.d.ts +0 -16
  262. package/lib/models/Dataset.js +0 -5
  263. package/lib/models/Document.d.ts +0 -8
  264. package/lib/models/Document.js +0 -5
  265. package/lib/models/Environment.d.ts +0 -86
  266. package/lib/models/Environment.js +0 -5
  267. package/lib/models/EnvironmentDTO.d.ts +0 -125
  268. package/lib/models/EnvironmentDTO.js +0 -88
  269. package/lib/models/Exercise.d.ts +0 -16
  270. package/lib/models/Exercise.js +0 -5
  271. package/lib/models/Item.d.ts +0 -20
  272. package/lib/models/Item.js +0 -5
  273. package/lib/models/ItemDTO.d.ts +0 -74
  274. package/lib/models/ItemDTO.js +0 -186
  275. package/lib/models/ItemType.d.ts +0 -2
  276. package/lib/models/ItemType.js +0 -5
  277. package/lib/models/Lesson.d.ts +0 -5
  278. package/lib/models/Lesson.js +0 -5
  279. package/lib/models/LexicalDTO.d.ts +0 -155
  280. package/lib/models/LexicalDTO.js +0 -157
  281. package/lib/models/Library.d.ts +0 -10
  282. package/lib/models/Library.js +0 -5
  283. package/lib/models/Notebook.d.ts +0 -11
  284. package/lib/models/Notebook.js +0 -5
  285. package/lib/models/NotebookDTO.d.ts +0 -96
  286. package/lib/models/NotebookDTO.js +0 -153
  287. package/lib/models/Page.d.ts +0 -41
  288. package/lib/models/Page.js +0 -25
  289. package/lib/models/PageTag.d.ts +0 -19
  290. package/lib/models/PageTag.js +0 -94
  291. package/lib/models/ProjectDTO.d.ts +0 -89
  292. package/lib/models/ProjectDTO.js +0 -131
  293. package/lib/models/Runtime.d.ts +0 -123
  294. package/lib/models/Runtime.js +0 -18
  295. package/lib/models/RuntimeDTO.d.ts +0 -191
  296. package/lib/models/RuntimeDTO.js +0 -204
  297. package/lib/models/Space.d.ts +0 -35
  298. package/lib/models/Space.js +0 -66
  299. package/lib/models/SpaceDTO.d.ts +0 -334
  300. package/lib/models/SpaceDTO.js +0 -244
  301. package/lib/models/SpaceItem.d.ts +0 -10
  302. package/lib/models/SpaceItem.js +0 -5
  303. package/lib/models/SpaceMember.d.ts +0 -6
  304. package/lib/models/SpaceMember.js +0 -5
  305. package/lib/models/StudentItem.d.ts +0 -21
  306. package/lib/models/StudentItem.js +0 -5
  307. package/lib/services/DatalayerServiceManager.d.ts +0 -22
  308. package/lib/services/DatalayerServiceManager.js +0 -69
  309. package/lib/services/index.d.ts +0 -4
  310. package/lib/services/index.js +0 -7
  311. package/lib/services/reconnectToRuntime.d.ts +0 -32
  312. package/lib/services/reconnectToRuntime.js +0 -59
  313. package/lib/state/substates/CellState.d.ts +0 -12
  314. package/lib/state/substates/CellState.js +0 -22
  315. package/lib/state/substates/DocumentState.d.ts +0 -10
  316. package/lib/state/substates/DocumentState.js +0 -14
  317. package/lib/state/substates/GradeState.d.ts +0 -10
  318. package/lib/state/substates/GradeState.js +0 -14
  319. package/lib/state/substates/JupyterLabState.d.ts +0 -16
  320. package/lib/state/substates/JupyterLabState.js +0 -17
  321. package/lib/state/substates/NbformatState.d.ts +0 -13
  322. package/lib/state/substates/NbformatState.js +0 -16
  323. package/lib/state/substates/RuntimesState.d.ts +0 -79
  324. package/lib/state/substates/RuntimesState.js +0 -180
  325. package/lib/state/substates/SpaceState.d.ts +0 -11
  326. package/lib/state/substates/SpaceState.js +0 -16
  327. package/lib/stateful/index.d.ts +0 -2
  328. package/lib/stateful/index.js +0 -6
  329. package/lib/stateful/jupyter/exec/Python.d.ts +0 -5
  330. package/lib/stateful/jupyter/exec/Python.js +0 -100
  331. package/lib/stateful/jupyter/exec/Snippets.d.ts +0 -105
  332. package/lib/stateful/jupyter/exec/Snippets.js +0 -101
  333. package/lib/stateful/jupyter/exec/index.d.ts +0 -2
  334. package/lib/stateful/jupyter/exec/index.js +0 -6
  335. package/lib/stateful/jupyter/index.d.ts +0 -2
  336. package/lib/stateful/jupyter/index.js +0 -6
  337. package/lib/stateful/jupyter/kernelsHandler.d.ts +0 -8
  338. package/lib/stateful/jupyter/kernelsHandler.js +0 -39
  339. package/lib/stateful/runtimes/actions.d.ts +0 -102
  340. package/lib/stateful/runtimes/actions.js +0 -249
  341. package/lib/stateful/runtimes/apis.d.ts +0 -273
  342. package/lib/stateful/runtimes/apis.js +0 -5
  343. package/lib/stateful/runtimes/index.d.ts +0 -5
  344. package/lib/stateful/runtimes/index.js +0 -9
  345. package/lib/stateful/runtimes/settings.d.ts +0 -15
  346. package/lib/stateful/runtimes/settings.js +0 -31
  347. package/lib/stateful/runtimes/snapshots.d.ts +0 -25
  348. package/lib/stateful/runtimes/snapshots.js +0 -150
  349. package/lib/stateful/runtimes/utils.d.ts +0 -7
  350. package/lib/stateful/runtimes/utils.js +0 -14
  351. package/lib/utils/Cells.d.ts +0 -2
  352. package/lib/utils/Cells.js +0 -28
  353. package/lib/views/iam-tokens/IAMTokenEdit.d.ts +0 -6
  354. package/lib/views/iam-tokens/IAMTokenNew.d.ts +0 -8
  355. package/lib/views/iam-tokens/IAMTokenNew.js +0 -118
  356. package/lib/views/iam-tokens/IAMTokens.d.ts +0 -12
  357. package/lib/views/iam-tokens/IAMTokens.js +0 -87
  358. package/lib/views/iam-tokens/Tokens.d.ts +0 -2
  359. package/lib/views/iam-tokens/Tokens.js +0 -85
  360. package/lib/views/iam-tokens/index.d.ts +0 -3
  361. package/lib/views/iam-tokens/index.js +0 -7
  362. /package/lib/{mocks/jupyter/index.d.ts → cli-login.d.ts} +0 -0
  363. /package/lib/utils/{logger.d.ts → Logger.d.ts} +0 -0
  364. /package/lib/utils/{logger.js → Logger.js} +0 -0
@@ -1,186 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the Modified BSD License.
4
- */
5
- import * as items from '../api/spacer/items.js';
6
- /**
7
- * Abstract base class for all Datalayer content items.
8
- * Provides common functionality for content management including lifecycle tracking.
9
- *
10
- * @template TData - Raw data type from API
11
- * @template TUpdateRequest - Update request type for API
12
- */
13
- export class ItemDTO {
14
- _data;
15
- _client;
16
- _deleted = false;
17
- /**
18
- * Create an Item instance.
19
- * @param data - Item data from API
20
- * @param client - Client instance
21
- */
22
- constructor(data, client) {
23
- this._data = data;
24
- this._client = client;
25
- }
26
- // ========================================================================
27
- // Deletion State Management
28
- // ========================================================================
29
- /** Check if this item has been deleted. */
30
- get isDeleted() {
31
- return this._deleted;
32
- }
33
- /**
34
- * Check if this item has been deleted and throw error if so.
35
- * @throws Error if deleted
36
- */
37
- _checkDeleted() {
38
- if (this._deleted) {
39
- throw new Error(`${this.constructor.name} ${this._data.id} has been deleted and no longer exists`);
40
- }
41
- }
42
- // ========================================================================
43
- // Static Properties (set at creation, never change)
44
- // ========================================================================
45
- /** Item ID. */
46
- get id() {
47
- this._checkDeleted();
48
- return this._data.id;
49
- }
50
- /** Unique identifier for the item. */
51
- get uid() {
52
- this._checkDeleted();
53
- return this._data.uid;
54
- }
55
- /** Parent space ID. */
56
- get spaceId() {
57
- this._checkDeleted();
58
- // Try the direct field first (if API provides it)
59
- if (this._data.space_id) {
60
- return this._data.space_id;
61
- }
62
- // Extract from s3_path_s if available: "datalayer.ai/SPACE_ID/..."
63
- const s3Path = this._data.s3_path_s;
64
- if (s3Path && typeof s3Path === 'string') {
65
- const match = s3Path.match(/^datalayer\.app\/([^/]+)\//);
66
- if (match) {
67
- return match[1];
68
- }
69
- }
70
- // Fallback to empty string if no space ID can be determined
71
- return '';
72
- }
73
- /** Owner user ID. */
74
- get ownerId() {
75
- this._checkDeleted();
76
- return (this._data.owner_id || this._data.creator_uid || '');
77
- }
78
- /** When the item was created. */
79
- get createdAt() {
80
- this._checkDeleted();
81
- const dateStr = this._data.creation_ts_dt || this._data.created_at;
82
- if (!dateStr) {
83
- throw new Error(`No creation timestamp available for ${this.constructor.name.toLowerCase()}`);
84
- }
85
- return new Date(dateStr);
86
- }
87
- /** The cached update time. */
88
- get updatedAt() {
89
- this._checkDeleted();
90
- const dateStr = this._data.last_update_ts_dt ||
91
- this._data.updated_at ||
92
- this._data.creation_ts_dt ||
93
- this._data.created_at;
94
- if (!dateStr) {
95
- throw new Error(`No update timestamp available for ${this.constructor.name.toLowerCase()}`);
96
- }
97
- return new Date(dateStr);
98
- }
99
- // ========================================================================
100
- // Action Methods
101
- // ========================================================================
102
- /**
103
- * Delete this item permanently.
104
- * After deletion, all subsequent method calls will throw errors.
105
- */
106
- async delete() {
107
- this._checkDeleted();
108
- const token = this._client.getToken();
109
- const spacerRunUrl = this._client.getSpacerRunUrl();
110
- await items.deleteItem(token, this.uid, spacerRunUrl);
111
- this._deleted = true;
112
- }
113
- /** Get the document content from API. */
114
- async getContent() {
115
- this._checkDeleted();
116
- // First try: CDN URL (fastest)
117
- const cdnUrl = this._data.cdn_url_s;
118
- if (cdnUrl) {
119
- try {
120
- const response = await fetch(cdnUrl);
121
- if (!response.ok) {
122
- throw new Error('Failed to fetch content from CDN');
123
- }
124
- const data = await response.json();
125
- if (data.content !== undefined && data.content !== null) {
126
- return data.content;
127
- }
128
- }
129
- catch (error) {
130
- console.error('Error fetching content from CDN:', error);
131
- }
132
- }
133
- // Second try: Check if content is already loaded
134
- const cachedContent = this.content;
135
- if (cachedContent !== undefined && cachedContent !== null) {
136
- return cachedContent;
137
- }
138
- // Third try: Fetch full item details from API
139
- try {
140
- const token = this._client.getToken();
141
- const spacerRunUrl = this._client.getSpacerRunUrl();
142
- const response = await items.getItem(token, this.uid, spacerRunUrl);
143
- // Update internal data with full item details
144
- if (response.success && response.item) {
145
- this._data = response.item;
146
- const freshContent = this.content;
147
- if (freshContent !== undefined && freshContent !== null) {
148
- return freshContent;
149
- }
150
- }
151
- }
152
- catch (error) {
153
- console.error('Error fetching full item details:', error);
154
- }
155
- throw new Error(`Content is not available for item ${this.uid}. The item may not have been fully loaded or the content is not yet available.`);
156
- }
157
- // ========================================================================
158
- // Utility Methods
159
- // ========================================================================
160
- /** Get raw item data object. */
161
- rawData() {
162
- this._checkDeleted();
163
- return this._data;
164
- }
165
- /** String representation of the item. */
166
- toString() {
167
- this._checkDeleted();
168
- const name = this.name || 'Unnamed';
169
- return `${this.constructor.name}(${this.id}, ${name})`;
170
- }
171
- // ========================================================================
172
- // Protected Helper Methods
173
- // ========================================================================
174
- /** Get Client token for API calls. */
175
- _getToken() {
176
- return this._client.getToken();
177
- }
178
- /** Get spacer API URL for API calls. */
179
- _getSpacerRunUrl() {
180
- return this._client.getSpacerRunUrl();
181
- }
182
- /** Update internal data after API call. */
183
- _updateData(newData) {
184
- this._data = newData;
185
- }
186
- }
@@ -1,2 +0,0 @@
1
- export type IItemType = 'assignment' | 'authoring' | 'cell' | 'content' | 'credits' | 'dataset' | 'datasource' | 'document' | 'documentation' | 'environment' | 'exercise' | 'growth' | 'home' | 'invite' | 'lesson' | 'library' | 'mail' | 'management' | 'notebook' | 'onboarding' | 'organization' | 'page' | 'runtime' | 'runtime-snapshot' | 'settings' | 'share' | 'space' | 'storage' | 'success' | 'support' | 'tag' | 'team' | 'usage' | 'user' | 'undefined';
2
- export default IItemType;
@@ -1,5 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the Modified BSD License.
4
- */
5
- export {};
@@ -1,5 +0,0 @@
1
- import { IBaseNotebook } from './Notebook';
2
- export type ILesson = IBaseNotebook & {
3
- type: 'lesson';
4
- };
5
- export default ILesson;
@@ -1,5 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the Modified BSD License.
4
- */
5
- export {};
@@ -1,155 +0,0 @@
1
- import type { DatalayerClient } from '../index';
2
- import { ItemDTO } from './ItemDTO';
3
- /**
4
- * Represents a Lexical document (rich text editor)
5
- * @interface Lexical
6
- */
7
- export interface LexicalData {
8
- id: string;
9
- uid: string;
10
- name?: string;
11
- name_t?: string;
12
- content?: any;
13
- space_id?: string;
14
- owner_id?: string;
15
- creator_uid?: string;
16
- creator_handle_s?: string;
17
- created_at?: string;
18
- creation_ts_dt?: string;
19
- updated_at?: string;
20
- last_update_ts_dt?: string;
21
- cdn_url_s: string;
22
- type_s?: string;
23
- public_b?: boolean;
24
- description_t?: string;
25
- document_name_s?: string;
26
- document_extension_s: string;
27
- document_format_s?: string;
28
- content_length_i?: number;
29
- content_type_s?: string;
30
- mime_type_s?: string;
31
- s3_path_s?: string;
32
- s3_url_s?: string;
33
- model_s?: string;
34
- }
35
- /**
36
- * Request payload for creating a Lexical document
37
- * @interface CreateLexicalRequest
38
- */
39
- export interface CreateLexicalRequest {
40
- spaceId: string;
41
- documentType: string;
42
- name: string;
43
- description: string;
44
- file?: File | Blob;
45
- }
46
- /**
47
- * Response from creating a Lexical document
48
- * @interface CreateLexicalResponse
49
- */
50
- export interface CreateLexicalResponse {
51
- success: boolean;
52
- message: string;
53
- document?: LexicalData;
54
- }
55
- /**
56
- * Response from getting a Lexical document
57
- * @interface GetLexicalResponse
58
- */
59
- export interface GetLexicalResponse {
60
- success: boolean;
61
- message: string;
62
- document?: LexicalData;
63
- }
64
- /**
65
- * Request payload for updating a Lexical document
66
- * @interface UpdateLexicalRequest
67
- */
68
- export interface UpdateLexicalRequest {
69
- name?: string;
70
- description?: string;
71
- }
72
- /**
73
- * Response from updating a Lexical document
74
- * @interface UpdateLexicalResponse
75
- */
76
- export interface UpdateLexicalResponse {
77
- success: boolean;
78
- message: string;
79
- document: LexicalData;
80
- }
81
- /**
82
- * Stable public interface for Lexical data.
83
- * This is the contract that Client consumers can rely on.
84
- * The raw API may change, but this interface remains stable.
85
- */
86
- export interface LexicalJSON {
87
- /** Unique identifier for the lexical document */
88
- uid: string;
89
- /** Unique identifier for the lexical document */
90
- id: string;
91
- /** Name of the lexical document */
92
- name: string;
93
- /** Description of the lexical document */
94
- description: string;
95
- /** Type of lexical document */
96
- type: string;
97
- /** File extension of the lexical document */
98
- extension: string;
99
- /** ISO 8601 timestamp when the document was created */
100
- createdAt: string;
101
- /** ISO 8601 timestamp when the document was last updated */
102
- updatedAt: string;
103
- /** CDN URL for accessing the document */
104
- cdnUrl: string;
105
- }
106
- /**
107
- * Lexical domain model that extends the base Item class.
108
- * Provides lexical document functionality for managing rich text documents.
109
- *
110
- * @example
111
- * ```typescript
112
- * const lexical = await client.createLexical(formData);
113
- * await lexical.update({ name: 'Updated Documentation' });
114
- * ```
115
- */
116
- export declare class LexicalDTO extends ItemDTO<LexicalData> {
117
- /**
118
- * Create a Lexical instance.
119
- *
120
- * @param data - Lexical data from API
121
- * @param client - Client instance
122
- */
123
- constructor(data: LexicalData, client: DatalayerClient);
124
- /** Document type identifier. */
125
- get type(): string;
126
- /** The cached name of the document. */
127
- get name(): string;
128
- /** Get the current name of the document from API. */
129
- getName(): Promise<string>;
130
- /** The cached content. */
131
- get content(): any;
132
- /** Description of the lexical document. */
133
- get description(): string;
134
- /** Get the document extension. */
135
- get extension(): string;
136
- /** Get when the document was last updated from API. */
137
- getUpdatedAt(): Promise<Date>;
138
- /** Update the document. */
139
- update(name?: string, description?: string): Promise<this>;
140
- /**
141
- * Get lexical document data in camelCase format.
142
- * Returns only the core fields that consumers need.
143
- * This provides a stable interface regardless of API changes.
144
- *
145
- * @returns Core lexical data with camelCase properties
146
- */
147
- toJSON(): LexicalJSON;
148
- /**
149
- * Get the raw lexical data exactly as received from the API.
150
- * This preserves the original snake_case naming from the API response.
151
- *
152
- * @returns Raw lexical data from API
153
- */
154
- rawData(): LexicalData;
155
- }
@@ -1,157 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the Modified BSD License.
4
- */
5
- /**
6
- * Lexical domain model for the Datalayer Client.
7
- *
8
- * @module models/LexicalDTO
9
- */
10
- import * as lexicals from '../api/spacer/lexicals.js';
11
- import { ItemTypes } from '../client/index.js';
12
- import { ItemDTO } from './ItemDTO.js';
13
- import { validateJSON } from '../api/utils/validation.js';
14
- /**
15
- * Lexical domain model that extends the base Item class.
16
- * Provides lexical document functionality for managing rich text documents.
17
- *
18
- * @example
19
- * ```typescript
20
- * const lexical = await client.createLexical(formData);
21
- * await lexical.update({ name: 'Updated Documentation' });
22
- * ```
23
- */
24
- export class LexicalDTO extends ItemDTO {
25
- /**
26
- * Create a Lexical instance.
27
- *
28
- * @param data - Lexical data from API
29
- * @param client - Client instance
30
- */
31
- constructor(data, client) {
32
- super(data, client);
33
- }
34
- // ========================================================================
35
- // Abstract Method Implementations
36
- // ========================================================================
37
- /** Document type identifier. */
38
- get type() {
39
- this._checkDeleted();
40
- return ItemTypes.LEXICAL;
41
- }
42
- /** The cached name of the document. */
43
- get name() {
44
- this._checkDeleted();
45
- return this._data.name_t || this._data.name || '';
46
- }
47
- /** Get the current name of the document from API. */
48
- async getName() {
49
- this._checkDeleted();
50
- const token = this._getToken();
51
- const spacerRunUrl = this._getSpacerRunUrl();
52
- const response = await lexicals.getLexical(token, this.uid, spacerRunUrl);
53
- if (response.document) {
54
- this._updateData(response.document);
55
- return response.document.name_t || response.document.name || '';
56
- }
57
- return this.name;
58
- }
59
- /** The cached content. */
60
- get content() {
61
- this._checkDeleted();
62
- if (!this._data.content && this._data.model_s) {
63
- try {
64
- return JSON.parse(this._data.model_s);
65
- }
66
- catch {
67
- return this._data.model_s;
68
- }
69
- }
70
- return this._data.content;
71
- }
72
- /** Description of the lexical document. */
73
- get description() {
74
- this._checkDeleted();
75
- return this._data.description_t || '';
76
- }
77
- /** Get the document extension. */
78
- get extension() {
79
- this._checkDeleted();
80
- const ext = this._data.document_extension_s;
81
- return ext ? (ext.startsWith('.') ? ext : `.${ext}`) : '.lexical';
82
- }
83
- /** Get when the document was last updated from API. */
84
- async getUpdatedAt() {
85
- this._checkDeleted();
86
- const token = this._getToken();
87
- const spacerRunUrl = this._getSpacerRunUrl();
88
- const response = await lexicals.getLexical(token, this.uid, spacerRunUrl);
89
- if (response.document) {
90
- this._updateData(response.document);
91
- const dateStr = response.document.last_update_ts_dt ||
92
- response.document.updated_at ||
93
- response.document.creation_ts_dt ||
94
- response.document.created_at;
95
- if (!dateStr) {
96
- throw new Error('No timestamp available for lexical document');
97
- }
98
- return new Date(dateStr);
99
- }
100
- const dateStr = this._data.last_update_ts_dt ||
101
- this._data.updated_at ||
102
- this._data.creation_ts_dt ||
103
- this._data.created_at;
104
- if (!dateStr) {
105
- throw new Error('No timestamp available for lexical document');
106
- }
107
- return new Date(dateStr);
108
- }
109
- /** Update the document. */
110
- async update(name, description) {
111
- // FIXME: check if both are needed, and use the existing values if only one provided
112
- this._checkDeleted();
113
- const token = this._getToken();
114
- const spacerRunUrl = this._getSpacerRunUrl();
115
- const updateData = {};
116
- if (name !== undefined)
117
- updateData.name = name;
118
- if (description !== undefined)
119
- updateData.description = description;
120
- const response = await lexicals.updateLexical(token, this.uid, updateData, spacerRunUrl);
121
- this._updateData(response.document);
122
- return this;
123
- }
124
- /**
125
- * Get lexical document data in camelCase format.
126
- * Returns only the core fields that consumers need.
127
- * This provides a stable interface regardless of API changes.
128
- *
129
- * @returns Core lexical data with camelCase properties
130
- */
131
- toJSON() {
132
- this._checkDeleted();
133
- const obj = {
134
- uid: this.uid,
135
- id: this.id,
136
- name: this.name,
137
- description: this.description,
138
- type: this.type,
139
- extension: this.extension,
140
- createdAt: this.createdAt.toDateString(),
141
- updatedAt: this.updatedAt.toDateString(),
142
- cdnUrl: this._data.cdn_url_s,
143
- };
144
- validateJSON(obj, 'Lexical');
145
- return obj;
146
- }
147
- /**
148
- * Get the raw lexical data exactly as received from the API.
149
- * This preserves the original snake_case naming from the API response.
150
- *
151
- * @returns Raw lexical data from API
152
- */
153
- rawData() {
154
- this._checkDeleted();
155
- return this._data;
156
- }
157
- }
@@ -1,10 +0,0 @@
1
- import { IExercise } from './Exercise';
2
- import { IDataset } from './Dataset';
3
- export type LibraryType = 'public' | 'private';
4
- export type Library = {
5
- id: string;
6
- type: LibraryType;
7
- exercises: Array<IExercise>;
8
- datasets: Array<IDataset>;
9
- };
10
- export default Library;
@@ -1,5 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the Modified BSD License.
4
- */
5
- export {};
@@ -1,11 +0,0 @@
1
- import { INotebookContent } from '@jupyterlab/nbformat';
2
- import { IItem } from './Item';
3
- import { IDataset } from './Dataset';
4
- export type IBaseNotebook = IItem & {
5
- nbformat?: INotebookContent;
6
- datasets: Array<IDataset>;
7
- };
8
- export type INotebook = IBaseNotebook & {
9
- type: 'notebook';
10
- };
11
- export default INotebook;
@@ -1,5 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the Modified BSD License.
4
- */
5
- export {};
@@ -1,96 +0,0 @@
1
- import type { DatalayerClient } from '../index';
2
- import { ItemDTO } from './ItemDTO';
3
- /**
4
- * Represents a Jupyter notebook document
5
- * @interface NotebookData
6
- */
7
- export interface NotebookData {
8
- id: string;
9
- uid: string;
10
- name_t: string;
11
- description_t: string;
12
- type_s: string;
13
- notebook_extension_s: string;
14
- s3_path_s: string;
15
- s3_url_s: string;
16
- cdn_url_s: string;
17
- }
18
- /**
19
- * Stable public interface for Notebook data.
20
- * This is the contract that Client consumers can rely on.
21
- * The raw API may change, but this interface remains stable.
22
- */
23
- export interface NotebookJSON {
24
- /** uuid of the notebook */
25
- id: string;
26
- /** ulid for of the notebook */
27
- uid: string;
28
- /** Name of the notebook */
29
- name: string;
30
- /** Description of the notebook */
31
- description: string;
32
- /** Type of notebook */
33
- type: string;
34
- /** File extension of the notebook */
35
- extension: string;
36
- /** CDN URL for accessing the notebook */
37
- cdnUrl: string;
38
- }
39
- /**
40
- * Notebook domain model that extends the base Item class.
41
- * Provides notebook-specific functionality for managing Jupyter notebooks.
42
- *
43
- * @example
44
- * ```typescript
45
- * const notebook = await client.createNotebook(formData);
46
- * const kernelSpec = await notebook.getKernelSpec();
47
- * ```
48
- */
49
- export declare class NotebookDTO extends ItemDTO<NotebookData> {
50
- /**
51
- * Create a Notebook instance.
52
- *
53
- * @param data - Notebook data from API
54
- * @param client - Client instance
55
- */
56
- constructor(data: NotebookData, client: DatalayerClient);
57
- /** Document type identifier. */
58
- get type(): string;
59
- /** The cached name of the notebook. */
60
- get name(): string;
61
- /** The cached content. */
62
- get content(): any;
63
- /** Get the current name from API. */
64
- getName(): Promise<string>;
65
- /** Get when the notebook was last updated from API. */
66
- getUpdatedAt(): Promise<Date>;
67
- /** Update the notebook. */
68
- update(name?: string, description?: string): Promise<this>;
69
- /** File path within the space. */
70
- get path(): string;
71
- /** Version number. */
72
- get version(): number;
73
- /** Notebook metadata. */
74
- get metadata(): Record<string, any>;
75
- /** Kernel specification (cached). */
76
- get kernelSpec(): any;
77
- /** Description of the notebook. */
78
- get description(): string;
79
- /** Get the notebook extension. */
80
- get extension(): string;
81
- /**
82
- * Get notebook data in camelCase format.
83
- * Returns only the core fields that consumers need.
84
- * This provides a stable interface regardless of API changes.
85
- *
86
- * @returns Core notebook data with camelCase properties
87
- */
88
- toJSON(): NotebookJSON;
89
- /**
90
- * Get the raw notebook data exactly as received from the API.
91
- * This preserves the original snake_case naming from the API response.
92
- *
93
- * @returns Raw notebook data from API
94
- */
95
- rawData(): NotebookData;
96
- }