@datalayer/core 0.0.12 → 0.0.13

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 (237) hide show
  1. package/README.md +2 -2
  2. package/lib/api/DatalayerApi.d.ts +38 -26
  3. package/lib/api/DatalayerApi.js +35 -8
  4. package/lib/api/iam/authentication.d.ts +8 -7
  5. package/lib/api/iam/authentication.js +14 -15
  6. package/lib/api/iam/healthz.d.ts +3 -2
  7. package/lib/api/iam/healthz.js +5 -3
  8. package/lib/api/iam/index.d.ts +9 -4
  9. package/lib/api/iam/index.js +9 -4
  10. package/lib/api/iam/oauth2.d.ts +115 -0
  11. package/lib/api/iam/oauth2.js +309 -0
  12. package/lib/api/iam/profile.d.ts +8 -1
  13. package/lib/api/iam/profile.js +17 -2
  14. package/lib/api/iam/usage.d.ts +56 -0
  15. package/lib/api/iam/usage.js +39 -0
  16. package/lib/api/index.d.ts +6 -5
  17. package/lib/api/index.js +6 -5
  18. package/lib/api/runtimes/environments.js +3 -2
  19. package/lib/api/runtimes/healthz.d.ts +3 -13
  20. package/lib/api/runtimes/healthz.js +4 -3
  21. package/lib/api/runtimes/index.d.ts +3 -2
  22. package/lib/api/runtimes/index.js +3 -2
  23. package/lib/api/runtimes/runtimes.js +17 -6
  24. package/lib/api/runtimes/snapshots.js +3 -2
  25. package/lib/api/spacer/documents.d.ts +12 -0
  26. package/lib/api/spacer/documents.js +43 -0
  27. package/lib/api/spacer/healthz.d.ts +3 -13
  28. package/lib/api/spacer/healthz.js +4 -3
  29. package/lib/api/spacer/index.d.ts +4 -2
  30. package/lib/api/spacer/index.js +4 -2
  31. package/lib/api/spacer/items.d.ts +9 -1
  32. package/lib/api/spacer/items.js +17 -2
  33. package/lib/api/spacer/lexicals.js +3 -2
  34. package/lib/api/spacer/notebooks.js +3 -2
  35. package/lib/api/spacer/spaces.js +3 -2
  36. package/lib/api/spacer/users.js +3 -2
  37. package/lib/api/types/common.d.ts +64 -0
  38. package/lib/api/types/iam.d.ts +88 -65
  39. package/lib/api/types/index.d.ts +4 -2
  40. package/lib/api/types/index.js +4 -2
  41. package/lib/api/types/runtimes.d.ts +9 -39
  42. package/lib/api/types/spacer.d.ts +37 -65
  43. package/lib/api/utils/validation.d.ts +24 -1
  44. package/lib/api/utils/validation.js +62 -1
  45. package/lib/client/base.d.ts +75 -0
  46. package/lib/client/base.js +199 -0
  47. package/lib/client/constants.d.ts +22 -0
  48. package/lib/client/constants.js +22 -0
  49. package/lib/client/index.d.ts +108 -0
  50. package/lib/client/index.js +79 -0
  51. package/lib/client/mixins/IAMMixin.d.ts +54 -0
  52. package/lib/client/mixins/IAMMixin.js +181 -0
  53. package/lib/client/mixins/RuntimesMixin.d.ts +93 -0
  54. package/lib/client/mixins/RuntimesMixin.js +229 -0
  55. package/lib/client/mixins/SpacerMixin.d.ts +111 -0
  56. package/lib/client/mixins/SpacerMixin.js +340 -0
  57. package/lib/client/models/Credits.d.ts +91 -0
  58. package/lib/client/models/Credits.js +130 -0
  59. package/lib/client/models/Environment.d.ts +73 -0
  60. package/lib/client/models/Environment.js +88 -0
  61. package/lib/client/models/HealthCheck.d.ts +72 -0
  62. package/lib/client/models/HealthCheck.js +107 -0
  63. package/lib/client/models/Item.d.ts +69 -0
  64. package/lib/client/models/Item.js +191 -0
  65. package/lib/client/models/Lexical.d.ts +83 -0
  66. package/lib/client/models/Lexical.js +152 -0
  67. package/lib/client/models/Notebook.d.ts +87 -0
  68. package/lib/client/models/Notebook.js +153 -0
  69. package/lib/client/models/Runtime.d.ts +122 -0
  70. package/lib/client/models/Runtime.js +204 -0
  71. package/lib/client/models/Snapshot.d.ts +92 -0
  72. package/lib/client/models/Snapshot.js +139 -0
  73. package/lib/client/models/Space.d.ts +135 -0
  74. package/lib/client/models/Space.js +234 -0
  75. package/lib/client/models/User.d.ts +64 -0
  76. package/lib/client/models/User.js +83 -0
  77. package/lib/client/models/index.d.ts +26 -0
  78. package/lib/client/models/index.js +25 -0
  79. package/lib/client/utils/mixins.d.ts +12 -0
  80. package/lib/{sdk/client → client}/utils/mixins.js +0 -28
  81. package/lib/client/utils/spacerUtils.d.ts +18 -0
  82. package/lib/client/utils/spacerUtils.js +32 -0
  83. package/lib/collaboration/DatalayerCollaboration.d.ts +6 -1
  84. package/lib/collaboration/DatalayerCollaboration.js +2 -2
  85. package/lib/collaboration/DatalayerCollaborationProvider.d.ts +5 -0
  86. package/lib/collaboration/DatalayerCollaborationProvider.js +10 -9
  87. package/lib/components/progress/CreditsIndicator.d.ts +1 -1
  88. package/lib/components/runtimes/RuntimeCellVariablesDialog.js +1 -1
  89. package/lib/components/runtimes/RuntimeLauncherDialog.d.ts +1 -1
  90. package/lib/components/runtimes/RuntimePickerBase.d.ts +1 -1
  91. package/lib/components/runtimes/RuntimePickerBase.js +1 -1
  92. package/lib/components/runtimes/RuntimePickerCell.js +2 -2
  93. package/lib/components/runtimes/RuntimePickerNotebook.d.ts +1 -1
  94. package/lib/components/runtimes/RuntimePickerNotebook.js +1 -1
  95. package/lib/components/runtimes/RuntimeTransfer.d.ts +1 -1
  96. package/lib/components/runtimes/RuntimeUtils.d.ts +1 -1
  97. package/lib/components/snapshots/RuntimeSnapshotMenu.d.ts +1 -1
  98. package/lib/components/snapshots/RuntimeSnapshotMenu.js +27 -20
  99. package/lib/config/Configuration.d.ts +8 -0
  100. package/lib/hooks/useDatalayer.js +1 -1
  101. package/lib/hooks/useRuntimes.js +1 -1
  102. package/lib/hooks/useToast.js +1 -1
  103. package/lib/index.d.ts +2 -2
  104. package/lib/index.js +4 -2
  105. package/lib/sdk/index.d.ts +5 -4
  106. package/lib/sdk/index.js +6 -5
  107. package/lib/services/DatalayerServiceManager.js +1 -1
  108. package/lib/state/substates/CoreState.js +2 -0
  109. package/lib/state/substates/RuntimesState.d.ts +1 -1
  110. package/lib/state/substates/RuntimesState.js +1 -1
  111. package/lib/{sdk/stateful → stateful}/index.d.ts +1 -1
  112. package/lib/{sdk/stateful → stateful}/index.js +1 -1
  113. package/lib/{sdk/stateful → stateful}/jupyter/exec/Snippets.d.ts +1 -41
  114. package/lib/{sdk/stateful → stateful}/jupyter/exec/Snippets.js +1 -20
  115. package/lib/{sdk/stateful → stateful}/runtimes/actions.d.ts +3 -3
  116. package/lib/{sdk/stateful → stateful}/runtimes/actions.js +8 -8
  117. package/lib/{sdk/stateful → stateful}/runtimes/apis.d.ts +8 -8
  118. package/lib/stateful/runtimes/apis.js +5 -0
  119. package/package.json +12 -10
  120. package/lib/__tests__/hooks.test.d.ts +0 -1
  121. package/lib/__tests__/hooks.test.js +0 -19
  122. package/lib/__tests__/index.test.d.ts +0 -1
  123. package/lib/__tests__/index.test.js +0 -27
  124. package/lib/__tests__/integration.test.d.ts +0 -1
  125. package/lib/__tests__/integration.test.js +0 -57
  126. package/lib/__tests__/shared/cleanup-shared.d.ts +0 -4
  127. package/lib/__tests__/shared/cleanup-shared.js +0 -228
  128. package/lib/__tests__/shared/test-config.d.ts +0 -51
  129. package/lib/__tests__/shared/test-config.js +0 -110
  130. package/lib/__tests__/shared/test-constants.d.ts +0 -66
  131. package/lib/__tests__/shared/test-constants.js +0 -79
  132. package/lib/__tests__/utils.test.d.ts +0 -1
  133. package/lib/__tests__/utils.test.js +0 -59
  134. package/lib/api/__tests__/iam.authentication.integration.test.d.ts +0 -1
  135. package/lib/api/__tests__/iam.authentication.integration.test.js +0 -247
  136. package/lib/api/__tests__/iam.healthz.integration.test.d.ts +0 -1
  137. package/lib/api/__tests__/iam.healthz.integration.test.js +0 -63
  138. package/lib/api/__tests__/iam.profile.integration.test.d.ts +0 -1
  139. package/lib/api/__tests__/iam.profile.integration.test.js +0 -252
  140. package/lib/api/__tests__/runtimes.environments.integration.test.d.ts +0 -1
  141. package/lib/api/__tests__/runtimes.environments.integration.test.js +0 -122
  142. package/lib/api/__tests__/runtimes.healthz.integration.test.d.ts +0 -1
  143. package/lib/api/__tests__/runtimes.healthz.integration.test.js +0 -50
  144. package/lib/api/__tests__/runtimes.integration.test.d.ts +0 -1
  145. package/lib/api/__tests__/runtimes.integration.test.js +0 -369
  146. package/lib/api/__tests__/spacer.healthz.integration.test.d.ts +0 -1
  147. package/lib/api/__tests__/spacer.healthz.integration.test.js +0 -50
  148. package/lib/api/__tests__/spacer.integration.test.d.ts +0 -1
  149. package/lib/api/__tests__/spacer.integration.test.js +0 -519
  150. package/lib/api/iam/__tests__/authentication.unit.test.d.ts +0 -1
  151. package/lib/api/iam/__tests__/authentication.unit.test.js +0 -63
  152. package/lib/api/iam/__tests__/healthz.unit.test.d.ts +0 -1
  153. package/lib/api/iam/__tests__/healthz.unit.test.js +0 -60
  154. package/lib/api/iam/__tests__/profile.unit.test.d.ts +0 -1
  155. package/lib/api/iam/__tests__/profile.unit.test.js +0 -57
  156. package/lib/api/runtimes/__tests__/environments.unit.test.d.ts +0 -1
  157. package/lib/api/runtimes/__tests__/environments.unit.test.js +0 -77
  158. package/lib/api/runtimes/__tests__/healthz.unit.test.d.ts +0 -1
  159. package/lib/api/runtimes/__tests__/healthz.unit.test.js +0 -57
  160. package/lib/api/runtimes/__tests__/runtimes.unit.test.d.ts +0 -1
  161. package/lib/api/runtimes/__tests__/runtimes.unit.test.js +0 -139
  162. package/lib/api/runtimes/__tests__/snapshots.unit.test.d.ts +0 -1
  163. package/lib/api/runtimes/__tests__/snapshots.unit.test.js +0 -96
  164. package/lib/api/spacer/__tests__/healthz.unit.test.d.ts +0 -1
  165. package/lib/api/spacer/__tests__/healthz.unit.test.js +0 -57
  166. package/lib/api/spacer/__tests__/items.unit.test.d.ts +0 -1
  167. package/lib/api/spacer/__tests__/items.unit.test.js +0 -165
  168. package/lib/api/spacer/__tests__/lexicals.unit.test.d.ts +0 -1
  169. package/lib/api/spacer/__tests__/lexicals.unit.test.js +0 -323
  170. package/lib/api/spacer/__tests__/notebooks.unit.test.d.ts +0 -1
  171. package/lib/api/spacer/__tests__/notebooks.unit.test.js +0 -224
  172. package/lib/api/spacer/__tests__/users.unit.test.d.ts +0 -1
  173. package/lib/api/spacer/__tests__/users.unit.test.js +0 -132
  174. package/lib/api/utils/__tests__/validation.test.d.ts +0 -1
  175. package/lib/api/utils/__tests__/validation.test.js +0 -109
  176. package/lib/sdk/client/__tests__/sdk.health.integration.test.d.ts +0 -1
  177. package/lib/sdk/client/__tests__/sdk.health.integration.test.js +0 -110
  178. package/lib/sdk/client/__tests__/sdk.iam.integration.test.d.ts +0 -1
  179. package/lib/sdk/client/__tests__/sdk.iam.integration.test.js +0 -179
  180. package/lib/sdk/client/__tests__/sdk.models.integration.test.d.ts +0 -1
  181. package/lib/sdk/client/__tests__/sdk.models.integration.test.js +0 -376
  182. package/lib/sdk/client/__tests__/sdk.runtimes.integration.test.d.ts +0 -1
  183. package/lib/sdk/client/__tests__/sdk.runtimes.integration.test.js +0 -276
  184. package/lib/sdk/client/__tests__/sdk.spacer.integration.test.d.ts +0 -1
  185. package/lib/sdk/client/__tests__/sdk.spacer.integration.test.js +0 -361
  186. package/lib/sdk/client/base.d.ts +0 -88
  187. package/lib/sdk/client/base.js +0 -112
  188. package/lib/sdk/client/index.d.ts +0 -192
  189. package/lib/sdk/client/index.js +0 -128
  190. package/lib/sdk/client/mixins/HealthMixin.d.ts +0 -100
  191. package/lib/sdk/client/mixins/HealthMixin.js +0 -133
  192. package/lib/sdk/client/mixins/IAMMixin.d.ts +0 -59
  193. package/lib/sdk/client/mixins/IAMMixin.js +0 -83
  194. package/lib/sdk/client/mixins/RuntimesMixin.d.ts +0 -134
  195. package/lib/sdk/client/mixins/RuntimesMixin.js +0 -221
  196. package/lib/sdk/client/mixins/SpacerMixin.d.ts +0 -184
  197. package/lib/sdk/client/mixins/SpacerMixin.js +0 -278
  198. package/lib/sdk/client/models/Lexical.d.ts +0 -156
  199. package/lib/sdk/client/models/Lexical.js +0 -275
  200. package/lib/sdk/client/models/Notebook.d.ts +0 -174
  201. package/lib/sdk/client/models/Notebook.js +0 -311
  202. package/lib/sdk/client/models/Runtime.d.ts +0 -221
  203. package/lib/sdk/client/models/Runtime.js +0 -341
  204. package/lib/sdk/client/models/Snapshot.d.ts +0 -156
  205. package/lib/sdk/client/models/Snapshot.js +0 -244
  206. package/lib/sdk/client/models/Space.d.ts +0 -182
  207. package/lib/sdk/client/models/Space.js +0 -276
  208. package/lib/sdk/client/models/__tests__/Lexical.test.d.ts +0 -1
  209. package/lib/sdk/client/models/__tests__/Lexical.test.js +0 -288
  210. package/lib/sdk/client/models/__tests__/Notebook.test.d.ts +0 -1
  211. package/lib/sdk/client/models/__tests__/Notebook.test.js +0 -206
  212. package/lib/sdk/client/models/__tests__/Runtime.test.d.ts +0 -1
  213. package/lib/sdk/client/models/__tests__/Runtime.test.js +0 -133
  214. package/lib/sdk/client/models/__tests__/Snapshot.test.d.ts +0 -1
  215. package/lib/sdk/client/models/__tests__/Snapshot.test.js +0 -244
  216. package/lib/sdk/client/models/__tests__/Space.test.d.ts +0 -1
  217. package/lib/sdk/client/models/__tests__/Space.test.js +0 -334
  218. package/lib/sdk/client/models/index.d.ts +0 -30
  219. package/lib/sdk/client/models/index.js +0 -30
  220. package/lib/sdk/client/utils/mixins.d.ts +0 -42
  221. /package/lib/{sdk/stateful/runtimes/apis.js → api/types/common.js} +0 -0
  222. /package/lib/{sdk/stateful → stateful}/jupyter/exec/Python.d.ts +0 -0
  223. /package/lib/{sdk/stateful → stateful}/jupyter/exec/Python.js +0 -0
  224. /package/lib/{sdk/stateful → stateful}/jupyter/exec/index.d.ts +0 -0
  225. /package/lib/{sdk/stateful → stateful}/jupyter/exec/index.js +0 -0
  226. /package/lib/{sdk/stateful → stateful}/jupyter/index.d.ts +0 -0
  227. /package/lib/{sdk/stateful → stateful}/jupyter/index.js +0 -0
  228. /package/lib/{sdk/stateful → stateful}/jupyter/kernelsHandler.d.ts +0 -0
  229. /package/lib/{sdk/stateful → stateful}/jupyter/kernelsHandler.js +0 -0
  230. /package/lib/{sdk/stateful → stateful}/runtimes/index.d.ts +0 -0
  231. /package/lib/{sdk/stateful → stateful}/runtimes/index.js +0 -0
  232. /package/lib/{sdk/stateful → stateful}/runtimes/settings.d.ts +0 -0
  233. /package/lib/{sdk/stateful → stateful}/runtimes/settings.js +0 -0
  234. /package/lib/{sdk/stateful → stateful}/runtimes/snapshots.d.ts +0 -0
  235. /package/lib/{sdk/stateful → stateful}/runtimes/snapshots.js +0 -0
  236. /package/lib/{sdk/stateful → stateful}/runtimes/utils.d.ts +0 -0
  237. /package/lib/{sdk/stateful → stateful}/runtimes/utils.js +0 -0
@@ -1,275 +0,0 @@
1
- /*
2
- * Copyright (c) 2023-2025 Datalayer, Inc.
3
- * Distributed under the terms of the Modified BSD License.
4
- */
5
- import { lexicals } from '../../../api/spacer';
6
- import { items } from '../../../api/spacer';
7
- /**
8
- * Lexical domain model that wraps API responses with convenient methods.
9
- *
10
- * Provides a rich, object-oriented interface for managing Lexical documents
11
- * with automatic data refresh and lifecycle operations.
12
- *
13
- * @example
14
- * ```typescript
15
- * const formData = new FormData();
16
- * formData.append('spaceId', 'space-123');
17
- * formData.append('name', 'Project Documentation');
18
- * const lexical = await sdk.createLexical(formData);
19
- *
20
- * // Static properties - instant access
21
- * console.log(lexical.id);
22
- * console.log(lexical.spaceId);
23
- *
24
- * // Dynamic data - always fresh from API
25
- * const currentName = await lexical.getName();
26
- * const content = await lexical.getContent();
27
- *
28
- * // Update document
29
- * const updated = await lexical.update({ name: 'Updated Documentation' });
30
- * ```
31
- */
32
- export class Lexical {
33
- _data;
34
- _sdk;
35
- _deleted = false;
36
- _freshData = null;
37
- _lastFetch = 0;
38
- _cacheTimeout = 5000; // 5 seconds cache timeout
39
- /**
40
- * Create a Lexical instance.
41
- *
42
- * @param data - Raw lexical data from API
43
- * @param sdk - DatalayerSDK instance for making API calls
44
- */
45
- constructor(data, sdk) {
46
- this._data = data;
47
- this._sdk = sdk;
48
- }
49
- // ========================================================================
50
- // Deletion State
51
- // ========================================================================
52
- /**
53
- * Check if this lexical document has been deleted.
54
- */
55
- get isDeleted() {
56
- return this._deleted;
57
- }
58
- // ========================================================================
59
- // Helper Methods
60
- // ========================================================================
61
- /**
62
- * Check if this lexical document has been deleted and throw error if so.
63
- * @throws Error if the document has been deleted
64
- */
65
- _checkDeleted() {
66
- if (this._deleted) {
67
- throw new Error(`Lexical ${this._data.id} has been deleted and no longer exists`);
68
- }
69
- }
70
- /**
71
- * Get fresh data from API with caching to avoid redundant calls.
72
- * @returns Current LexicalData from API or cache
73
- */
74
- async _getFreshData() {
75
- this._checkDeleted();
76
- const now = Date.now();
77
- if (this._freshData && now - this._lastFetch < this._cacheTimeout) {
78
- // Return cached data if recent enough
79
- return this._freshData;
80
- }
81
- // Fetch fresh data from API
82
- const token = this._sdk.getToken();
83
- const spacerRunUrl = this._sdk.getSpacerRunUrl();
84
- const response = await lexicals.getLexical(token, this.uid, spacerRunUrl);
85
- if (response.document) {
86
- this._freshData = response.document;
87
- this._data = response.document; // Keep internal data up to date
88
- this._lastFetch = now;
89
- return this._freshData;
90
- }
91
- return this._data; // Fallback to existing data
92
- }
93
- // ========================================================================
94
- // Static Properties (set at creation, never change)
95
- // ========================================================================
96
- /**
97
- * Lexical document ID.
98
- */
99
- get id() {
100
- this._checkDeleted();
101
- return this._data.id;
102
- }
103
- /**
104
- * Unique identifier for the document.
105
- */
106
- get uid() {
107
- this._checkDeleted();
108
- return this._data.uid;
109
- }
110
- /**
111
- * Parent space ID.
112
- */
113
- get spaceId() {
114
- this._checkDeleted();
115
- // Try the direct field first (if API provides it)
116
- if (this._data.space_id) {
117
- return this._data.space_id;
118
- }
119
- // Extract from s3_path_s if available: "datalayer.app/SPACE_ID/documents/..."
120
- const s3Path = this._data.s3_path_s;
121
- if (s3Path && typeof s3Path === 'string') {
122
- const match = s3Path.match(/^datalayer\.app\/([^/]+)\//);
123
- if (match) {
124
- return match[1];
125
- }
126
- }
127
- // Fallback to empty string if no space ID can be determined
128
- return '';
129
- }
130
- /**
131
- * Owner user ID.
132
- */
133
- get ownerId() {
134
- this._checkDeleted();
135
- return this._data.owner_id || this._data.creator_uid || '';
136
- }
137
- /**
138
- * When the document was created.
139
- */
140
- get createdAt() {
141
- this._checkDeleted();
142
- const dateStr = this._data.creation_ts_dt || this._data.created_at;
143
- if (!dateStr) {
144
- throw new Error('No creation timestamp available for lexical document');
145
- }
146
- return new Date(dateStr);
147
- }
148
- // ========================================================================
149
- // Dynamic Methods (always fetch fresh data and update internal state)
150
- // ========================================================================
151
- /**
152
- * Get the current name of the document.
153
- *
154
- * This method fetches fresh data from the API (with caching) and updates
155
- * the internal data to keep everything in sync.
156
- *
157
- * @returns Promise resolving to current document name
158
- * @throws Error if the document has been deleted
159
- */
160
- async getName() {
161
- const freshData = await this._getFreshData();
162
- return freshData.name_t || freshData.name || '';
163
- }
164
- /**
165
- * Get the document content.
166
- *
167
- * @returns Promise resolving to document content
168
- */
169
- async getContent() {
170
- const freshData = await this._getFreshData();
171
- // Try to parse model_s if content is not available
172
- if (!freshData.content && freshData.model_s) {
173
- try {
174
- return JSON.parse(freshData.model_s);
175
- }
176
- catch {
177
- // Fall back to raw model_s if parsing fails
178
- return freshData.model_s;
179
- }
180
- }
181
- return freshData.content;
182
- }
183
- /**
184
- * Get when the document was last updated.
185
- *
186
- * @returns Promise resolving to last update time
187
- */
188
- async getUpdatedAt() {
189
- const freshData = await this._getFreshData();
190
- const dateStr = freshData.last_update_ts_dt ||
191
- freshData.updated_at ||
192
- freshData.creation_ts_dt ||
193
- freshData.created_at;
194
- if (!dateStr) {
195
- throw new Error('No timestamp available for lexical document');
196
- }
197
- return new Date(dateStr);
198
- }
199
- // ========================================================================
200
- // Action Methods
201
- // ========================================================================
202
- /**
203
- * Update the document name and/or description.
204
- *
205
- * @param data - Update data containing name and/or description
206
- * @returns Promise resolving to updated Lexical instance
207
- *
208
- * @example
209
- * ```typescript
210
- * const updated = await lexical.update({
211
- * name: 'Updated Documentation',
212
- * description: 'Updated document description'
213
- * });
214
- * ```
215
- */
216
- async update(data) {
217
- this._checkDeleted();
218
- const token = this._sdk.getToken();
219
- const spacerRunUrl = this._sdk.getSpacerRunUrl();
220
- const response = await lexicals.updateLexical(token, this.uid, data, spacerRunUrl);
221
- return new Lexical(response.document, this._sdk);
222
- }
223
- /**
224
- * Delete this document permanently.
225
- *
226
- * After deletion, this object will be marked as deleted and subsequent
227
- * calls to dynamic methods will throw errors.
228
- *
229
- * @example
230
- * ```typescript
231
- * await lexical.delete();
232
- * console.log('Document deleted');
233
- * // lexical.getName() will now throw an error
234
- * ```
235
- */
236
- async delete() {
237
- this._checkDeleted();
238
- const token = this._sdk.getToken();
239
- const spacerRunUrl = this._sdk.getSpacerRunUrl();
240
- await items.deleteItem(token, this.uid, spacerRunUrl);
241
- this._deleted = true;
242
- }
243
- // ========================================================================
244
- // Utility Methods
245
- // ========================================================================
246
- /**
247
- * Get raw document data object with latest information.
248
- *
249
- * This method ensures the returned data includes the most recent information
250
- * by refreshing from the API before returning.
251
- *
252
- * @returns Promise resolving to raw document data
253
- *
254
- * @example
255
- * ```typescript
256
- * const latestData = await lexical.toJSON();
257
- * console.log('Current name:', latestData.name);
258
- * ```
259
- */
260
- async toJSON() {
261
- this._checkDeleted();
262
- await this.getName(); // This updates internal data
263
- return this._data;
264
- }
265
- /**
266
- * String representation of the document.
267
- *
268
- * @returns String representation for logging/debugging
269
- */
270
- toString() {
271
- this._checkDeleted();
272
- const name = this._data.name_t || this._data.name || 'Unnamed';
273
- return `Lexical(${this.id}, ${name})`;
274
- }
275
- }
@@ -1,174 +0,0 @@
1
- /**
2
- * @module sdk/client/models/Notebook
3
- * @description Notebook domain model for the Datalayer SDK.
4
- *
5
- * This model provides a rich, object-oriented interface for working with
6
- * Jupyter notebooks, including content management and lifecycle operations.
7
- */
8
- import type { Notebook as NotebookData, UpdateNotebookRequest } from '../../../api/types/spacer';
9
- import type { DatalayerSDK } from '../index';
10
- /**
11
- * Notebook domain model that wraps API responses with convenient methods.
12
- *
13
- * Provides a rich, object-oriented interface for managing Jupyter notebooks
14
- * with automatic data refresh and lifecycle operations.
15
- *
16
- * @example
17
- * ```typescript
18
- * const formData = new FormData();
19
- * formData.append('spaceId', 'space-123');
20
- * formData.append('name', 'Data Analysis');
21
- * const notebook = await sdk.createNotebook(formData);
22
- *
23
- * // Static properties - instant access
24
- * console.log(notebook.id);
25
- * console.log(notebook.spaceId);
26
- *
27
- * // Dynamic data - always fresh from API
28
- * const currentName = await notebook.getName();
29
- * const content = await notebook.getContent();
30
- *
31
- * // Update notebook
32
- * const updated = await notebook.update({ name: 'New Analysis' });
33
- * ```
34
- */
35
- export declare class Notebook {
36
- protected _data: NotebookData;
37
- private _sdk;
38
- private _deleted;
39
- private _freshData;
40
- private _lastFetch;
41
- private _cacheTimeout;
42
- /**
43
- * Create a Notebook instance.
44
- *
45
- * @param data - Raw notebook data from API
46
- * @param sdk - DatalayerSDK instance for making API calls
47
- */
48
- constructor(data: NotebookData, sdk: DatalayerSDK);
49
- /**
50
- * Check if this notebook has been deleted.
51
- */
52
- get isDeleted(): boolean;
53
- /**
54
- * Check if this notebook has been deleted and throw error if so.
55
- * @throws Error if the notebook has been deleted
56
- */
57
- private _checkDeleted;
58
- /**
59
- * Get fresh data from API with caching to avoid redundant calls.
60
- * @returns Current NotebookData from API or cache
61
- */
62
- private _getFreshData;
63
- /**
64
- * Notebook ID.
65
- */
66
- get id(): string;
67
- /**
68
- * Unique identifier for the notebook.
69
- */
70
- get uid(): string;
71
- /**
72
- * File path within the space.
73
- */
74
- get path(): string;
75
- /**
76
- * Parent space ID.
77
- */
78
- get spaceId(): string;
79
- /**
80
- * Owner user ID.
81
- */
82
- get ownerId(): string;
83
- /**
84
- * When the notebook was created.
85
- */
86
- get createdAt(): Date;
87
- /**
88
- * Version number.
89
- */
90
- get version(): number;
91
- /**
92
- * Notebook metadata.
93
- */
94
- get metadata(): Record<string, any>;
95
- /**
96
- * Get the current name of the notebook.
97
- *
98
- * This method fetches fresh data from the API (with caching) and updates
99
- * the internal data to keep everything in sync.
100
- *
101
- * @returns Promise resolving to current notebook name
102
- * @throws Error if the notebook has been deleted
103
- */
104
- getName(): Promise<string>;
105
- /**
106
- * Get the notebook content (cells, etc.).
107
- *
108
- * @returns Promise resolving to notebook content
109
- */
110
- getContent(): Promise<any>;
111
- /**
112
- * Get the kernel specification.
113
- *
114
- * @returns Promise resolving to kernel spec
115
- */
116
- getKernelSpec(): Promise<any>;
117
- /**
118
- * Get when the notebook was last updated.
119
- *
120
- * @returns Promise resolving to last update time
121
- */
122
- getUpdatedAt(): Promise<Date>;
123
- /**
124
- * Update the notebook name and/or description.
125
- *
126
- * @param data - Update data containing name and/or description
127
- * @returns Promise resolving to updated Notebook instance
128
- *
129
- * @example
130
- * ```typescript
131
- * const updated = await notebook.update({
132
- * name: 'Advanced Analysis',
133
- * description: 'Updated analysis notebook'
134
- * });
135
- * ```
136
- */
137
- update(data: UpdateNotebookRequest): Promise<Notebook>;
138
- /**
139
- * Delete this notebook permanently.
140
- *
141
- * After deletion, this object will be marked as deleted and subsequent
142
- * calls to dynamic methods will throw errors.
143
- *
144
- * @example
145
- * ```typescript
146
- * await notebook.delete();
147
- * console.log('Notebook deleted');
148
- * // notebook.getName() will now throw an error
149
- * ```
150
- */
151
- delete(): Promise<void>;
152
- /**
153
- * Get raw notebook data object with latest information.
154
- *
155
- * This method ensures the returned data includes the most recent information
156
- * by refreshing from the API before returning.
157
- *
158
- * @returns Promise resolving to raw notebook data
159
- *
160
- * @example
161
- * ```typescript
162
- * const latestData = await notebook.toJSON();
163
- * console.log('Current name:', latestData.name);
164
- * ```
165
- */
166
- toJSON(): Promise<NotebookData>;
167
- /**
168
- * String representation of the notebook.
169
- *
170
- * @returns String representation for logging/debugging
171
- */
172
- toString(): string;
173
- }
174
- export type { NotebookData };