@jupyterlite/services 0.1.0 → 0.7.0-rc.0

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 (87) hide show
  1. package/lib/contents/drive.d.ts +277 -0
  2. package/lib/contents/drive.js +888 -0
  3. package/lib/contents/drive.js.map +1 -0
  4. package/lib/contents/drivecontents.d.ts +92 -0
  5. package/lib/contents/drivecontents.js +132 -0
  6. package/lib/contents/drivecontents.js.map +1 -0
  7. package/lib/contents/drivefs.d.ts +245 -0
  8. package/lib/contents/drivefs.js +481 -0
  9. package/lib/contents/drivefs.js.map +1 -0
  10. package/lib/contents/emscripten.d.ts +96 -0
  11. package/lib/contents/emscripten.js +10 -0
  12. package/lib/contents/emscripten.js.map +1 -0
  13. package/lib/contents/index.d.ts +5 -0
  14. package/lib/contents/index.js +8 -0
  15. package/lib/contents/index.js.map +1 -0
  16. package/lib/contents/tokens.d.ts +21 -0
  17. package/lib/contents/tokens.js +55 -0
  18. package/lib/contents/tokens.js.map +1 -0
  19. package/lib/index.d.ts +9 -0
  20. package/lib/index.js +12 -0
  21. package/lib/index.js.map +1 -0
  22. package/lib/kernel/base.d.ts +245 -0
  23. package/lib/kernel/base.js +457 -0
  24. package/lib/kernel/base.js.map +1 -0
  25. package/lib/kernel/client.d.ts +114 -0
  26. package/lib/kernel/client.js +375 -0
  27. package/lib/kernel/client.js.map +1 -0
  28. package/lib/kernel/index.d.ts +5 -0
  29. package/lib/kernel/index.js +8 -0
  30. package/lib/kernel/index.js.map +1 -0
  31. package/lib/kernel/kernelspecclient.d.ts +39 -0
  32. package/lib/kernel/kernelspecclient.js +37 -0
  33. package/lib/kernel/kernelspecclient.js.map +1 -0
  34. package/lib/kernel/kernelspecs.d.ts +59 -0
  35. package/lib/kernel/kernelspecs.js +62 -0
  36. package/lib/kernel/kernelspecs.js.map +1 -0
  37. package/lib/kernel/tokens.d.ts +163 -0
  38. package/lib/kernel/tokens.js +20 -0
  39. package/lib/kernel/tokens.js.map +1 -0
  40. package/lib/nbconvert/exporters.d.ts +80 -0
  41. package/lib/nbconvert/exporters.js +154 -0
  42. package/lib/nbconvert/exporters.js.map +1 -0
  43. package/lib/nbconvert/index.d.ts +3 -0
  44. package/lib/nbconvert/index.js +6 -0
  45. package/lib/nbconvert/index.js.map +1 -0
  46. package/lib/nbconvert/manager.d.ts +66 -0
  47. package/lib/nbconvert/manager.js +77 -0
  48. package/lib/nbconvert/manager.js.map +1 -0
  49. package/lib/nbconvert/tokens.d.ts +49 -0
  50. package/lib/nbconvert/tokens.js +8 -0
  51. package/lib/nbconvert/tokens.js.map +1 -0
  52. package/lib/session/client.d.ts +85 -0
  53. package/lib/session/client.js +200 -0
  54. package/lib/session/client.js.map +1 -0
  55. package/lib/session/index.d.ts +1 -0
  56. package/lib/session/index.js +4 -0
  57. package/lib/session/index.js.map +1 -0
  58. package/lib/settings/index.d.ts +1 -0
  59. package/lib/settings/index.js +4 -0
  60. package/lib/settings/index.js.map +1 -0
  61. package/lib/settings/settings.d.ts +91 -0
  62. package/lib/settings/settings.js +185 -0
  63. package/lib/settings/settings.js.map +1 -0
  64. package/package.json +67 -8
  65. package/src/contents/drive.ts +1030 -0
  66. package/src/contents/drivecontents.ts +253 -0
  67. package/src/contents/drivefs.ts +824 -0
  68. package/src/contents/emscripten.ts +148 -0
  69. package/src/contents/index.ts +8 -0
  70. package/src/contents/tokens.ts +61 -0
  71. package/src/index.ts +13 -0
  72. package/src/kernel/base.ts +637 -0
  73. package/src/kernel/client.ts +483 -0
  74. package/src/kernel/index.ts +8 -0
  75. package/src/kernel/kernelspecclient.ts +64 -0
  76. package/src/kernel/kernelspecs.ts +103 -0
  77. package/src/kernel/tokens.ts +222 -0
  78. package/src/nbconvert/exporters.ts +177 -0
  79. package/src/nbconvert/index.ts +6 -0
  80. package/src/nbconvert/manager.ts +105 -0
  81. package/src/nbconvert/tokens.ts +60 -0
  82. package/src/session/client.ts +251 -0
  83. package/src/session/index.ts +4 -0
  84. package/src/settings/index.ts +4 -0
  85. package/src/settings/settings.ts +236 -0
  86. package/style/index.css +6 -0
  87. package/style/index.js +6 -0
@@ -0,0 +1,481 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+ import { UUID } from '@lumino/coreutils';
4
+ import { DIR_MODE, SEEK_CUR, SEEK_END, instanceOfStream, } from './emscripten';
5
+ export const DRIVE_SEPARATOR = ':';
6
+ export const BLOCK_SIZE = 4096;
7
+ const encoder = new TextEncoder();
8
+ const decoder = new TextDecoder('utf-8');
9
+ // Mapping flag -> do we need to overwrite the file upon closing it
10
+ const flagNeedsWrite = {
11
+ 0 /*O_RDONLY*/: false,
12
+ 1 /*O_WRONLY*/: true,
13
+ 2 /*O_RDWR*/: true,
14
+ 64 /*O_CREAT*/: true,
15
+ 65 /*O_WRONLY|O_CREAT*/: true,
16
+ 66 /*O_RDWR|O_CREAT*/: true,
17
+ 129 /*O_WRONLY|O_EXCL*/: true,
18
+ 193 /*O_WRONLY|O_CREAT|O_EXCL*/: true,
19
+ 514 /*O_RDWR|O_TRUNC*/: true,
20
+ 577 /*O_WRONLY|O_CREAT|O_TRUNC*/: true,
21
+ 578 /*O_CREAT|O_RDWR|O_TRUNC*/: true,
22
+ 705 /*O_WRONLY|O_CREAT|O_EXCL|O_TRUNC*/: true,
23
+ 706 /*O_RDWR|O_CREAT|O_EXCL|O_TRUNC*/: true,
24
+ 1024 /*O_APPEND*/: true,
25
+ 1025 /*O_WRONLY|O_APPEND*/: true,
26
+ 1026 /*O_RDWR|O_APPEND*/: true,
27
+ 1089 /*O_WRONLY|O_CREAT|O_APPEND*/: true,
28
+ 1090 /*O_RDWR|O_CREAT|O_APPEND*/: true,
29
+ 1153 /*O_WRONLY|O_EXCL|O_APPEND*/: true,
30
+ 1154 /*O_RDWR|O_EXCL|O_APPEND*/: true,
31
+ 1217 /*O_WRONLY|O_CREAT|O_EXCL|O_APPEND*/: true,
32
+ 1218 /*O_RDWR|O_CREAT|O_EXCL|O_APPEND*/: true,
33
+ 4096 /*O_RDONLY|O_DSYNC*/: true,
34
+ 4098 /*O_RDWR|O_DSYNC*/: true,
35
+ };
36
+ export class DriveFSEmscriptenStreamOps {
37
+ constructor(fs) {
38
+ this.fs = fs;
39
+ }
40
+ open(stream) {
41
+ var _a;
42
+ const path = this.fs.realPath(stream.node);
43
+ if (this.fs.FS.isFile(stream.node.mode)) {
44
+ try {
45
+ const file = this.fs.API.get(path);
46
+ stream.file = file;
47
+ }
48
+ catch (e) {
49
+ // If we're opening a file for writing and the file does not exist, create it! Otherwise, throw the proper error
50
+ // We need to do this because the current thread is thinking a file exist (isFile returns true)
51
+ // whilst it was actually deleted in the main thread
52
+ // if writing
53
+ const flags = (_a = stream.flags) !== null && _a !== void 0 ? _a : stream.shared.flags;
54
+ let parsedFlags = typeof flags === 'string' ? parseInt(flags, 10) : flags;
55
+ parsedFlags &= 0x1fff;
56
+ let needsWrite = true;
57
+ if (parsedFlags in flagNeedsWrite) {
58
+ needsWrite = flagNeedsWrite[parsedFlags];
59
+ }
60
+ if (needsWrite) {
61
+ stream.node = this.fs.node_ops.mknod(stream.node.parent, stream.node.name, stream.node.mode, 0);
62
+ const file = this.fs.API.get(path);
63
+ stream.file = file;
64
+ }
65
+ else {
66
+ throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES['ENOENT']);
67
+ }
68
+ }
69
+ }
70
+ }
71
+ close(stream) {
72
+ var _a;
73
+ if (!this.fs.FS.isFile(stream.node.mode) || !stream.file) {
74
+ return;
75
+ }
76
+ const path = this.fs.realPath(stream.node);
77
+ const flags = (_a = stream.flags) !== null && _a !== void 0 ? _a : stream.shared.flags;
78
+ let parsedFlags = typeof flags === 'string' ? parseInt(flags, 10) : flags;
79
+ parsedFlags &= 0x1fff;
80
+ let needsWrite = true;
81
+ if (parsedFlags in flagNeedsWrite) {
82
+ needsWrite = flagNeedsWrite[parsedFlags];
83
+ }
84
+ if (needsWrite) {
85
+ this.fs.API.put(path, stream.file);
86
+ }
87
+ stream.file = undefined;
88
+ }
89
+ read(stream, buffer, offset, length, position) {
90
+ if (length <= 0 ||
91
+ stream.file === undefined ||
92
+ position >= (stream.file.data.length || 0)) {
93
+ return 0;
94
+ }
95
+ const size = Math.min(stream.file.data.length - position, length);
96
+ buffer.set(stream.file.data.subarray(position, position + size), offset);
97
+ return size;
98
+ }
99
+ write(stream, buffer, offset, length, position) {
100
+ var _a;
101
+ if (length <= 0 || stream.file === undefined) {
102
+ return 0;
103
+ }
104
+ const now = Date.now();
105
+ stream.node.timestamp = now;
106
+ stream.node.atime = now;
107
+ stream.node.mtime = now;
108
+ stream.node.ctime = now;
109
+ if (position + length > (((_a = stream.file) === null || _a === void 0 ? void 0 : _a.data.length) || 0)) {
110
+ const oldData = stream.file.data ? stream.file.data : new Uint8Array();
111
+ stream.file.data = new Uint8Array(position + length);
112
+ stream.file.data.set(oldData);
113
+ }
114
+ stream.file.data.set(buffer.subarray(offset, offset + length), position);
115
+ return length;
116
+ }
117
+ llseek(stream, offset, whence) {
118
+ var _a;
119
+ let position = offset;
120
+ if (whence === SEEK_CUR) {
121
+ position += (_a = stream.position) !== null && _a !== void 0 ? _a : stream.shared.position;
122
+ }
123
+ else if (whence === SEEK_END) {
124
+ if (this.fs.FS.isFile(stream.node.mode)) {
125
+ if (stream.file !== undefined) {
126
+ position += stream.file.data.length;
127
+ }
128
+ else {
129
+ throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES.EPERM);
130
+ }
131
+ }
132
+ }
133
+ if (position < 0) {
134
+ throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES.EINVAL);
135
+ }
136
+ return position;
137
+ }
138
+ }
139
+ export class DriveFSEmscriptenNodeOps {
140
+ constructor(fs) {
141
+ this.node = (nodeOrStream) => {
142
+ if (instanceOfStream(nodeOrStream)) {
143
+ return nodeOrStream.node;
144
+ }
145
+ return nodeOrStream;
146
+ };
147
+ this.getattr = (value) => {
148
+ const node = this.node(value);
149
+ return {
150
+ ...this.fs.API.getattr(this.fs.realPath(node)),
151
+ mode: node.mode,
152
+ ino: node.id,
153
+ };
154
+ };
155
+ this.setattr = (value, attr) => {
156
+ const node = this.node(value);
157
+ for (const [key, value] of Object.entries(attr)) {
158
+ switch (key) {
159
+ case 'mode':
160
+ node.mode = value;
161
+ break;
162
+ case 'timestamp':
163
+ node.timestamp = value;
164
+ break;
165
+ case 'atime':
166
+ node.atime = value;
167
+ break;
168
+ case 'mtime':
169
+ node.mtime = value;
170
+ break;
171
+ case 'ctime':
172
+ node.ctime = value;
173
+ break;
174
+ case 'size': {
175
+ const size = value;
176
+ const path = this.fs.realPath(node);
177
+ if (this.fs.FS.isFile(node.mode) && size >= 0) {
178
+ let file;
179
+ try {
180
+ file = this.fs.API.get(path);
181
+ }
182
+ catch (e) {
183
+ // TODO: Should do anything here? Should we create the file?
184
+ break;
185
+ }
186
+ const oldData = file.data ? file.data : new Uint8Array();
187
+ if (size !== oldData.length) {
188
+ if (size < oldData.length) {
189
+ file.data = file.data.slice(0, size);
190
+ }
191
+ else {
192
+ file.data = new Uint8Array(size);
193
+ file.data.set(oldData);
194
+ }
195
+ this.fs.API.put(path, file);
196
+ }
197
+ }
198
+ else {
199
+ console.warn('setattr size of', size, 'on', node, 'not yet implemented');
200
+ }
201
+ break;
202
+ }
203
+ case 'dontFollow':
204
+ // Ignore for now
205
+ break;
206
+ default:
207
+ console.warn('setattr', key, 'of', value, 'on', node, 'not yet implemented');
208
+ break;
209
+ }
210
+ }
211
+ };
212
+ this.lookup = (parent, name) => {
213
+ const node = this.node(parent);
214
+ const path = this.fs.PATH.join2(this.fs.realPath(node), name);
215
+ const result = this.fs.API.lookup(path);
216
+ if (!result.ok) {
217
+ throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES['ENOENT']);
218
+ }
219
+ return this.fs.createNode(node, name, result.mode, 0);
220
+ };
221
+ this.mknod = (parent, name, mode, dev) => {
222
+ const node = this.node(parent);
223
+ const path = this.fs.PATH.join2(this.fs.realPath(node), name);
224
+ this.fs.API.mknod(path, mode);
225
+ return this.fs.createNode(node, name, mode, dev);
226
+ };
227
+ this.rename = (value, newDir, newName) => {
228
+ const oldNode = this.node(value);
229
+ const newDirNode = this.node(newDir);
230
+ this.fs.API.rename(oldNode.parent
231
+ ? this.fs.PATH.join2(this.fs.realPath(oldNode.parent), oldNode.name)
232
+ : oldNode.name, this.fs.PATH.join2(this.fs.realPath(newDirNode), newName));
233
+ // Updating the in-memory node
234
+ oldNode.name = newName;
235
+ oldNode.parent = newDirNode;
236
+ };
237
+ this.unlink = (parent, name) => {
238
+ return this.fs.API.rmdir(this.fs.PATH.join2(this.fs.realPath(this.node(parent)), name));
239
+ };
240
+ this.rmdir = (parent, name) => {
241
+ return this.fs.API.rmdir(this.fs.PATH.join2(this.fs.realPath(this.node(parent)), name));
242
+ };
243
+ this.readdir = (value) => {
244
+ return this.fs.API.readdir(this.fs.realPath(this.node(value)));
245
+ };
246
+ this.symlink = (parent, newName, oldPath) => {
247
+ throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES['EPERM']);
248
+ };
249
+ this.readlink = (node) => {
250
+ throw new this.fs.FS.ErrnoError(this.fs.ERRNO_CODES['EINVAL']);
251
+ };
252
+ this.fs = fs;
253
+ }
254
+ }
255
+ /**
256
+ * ContentsAPI base class
257
+ */
258
+ export class ContentsAPI {
259
+ constructor(options) {
260
+ this._driveName = options.driveName;
261
+ this._mountpoint = options.mountpoint;
262
+ this.FS = options.FS;
263
+ this.ERRNO_CODES = options.ERRNO_CODES;
264
+ }
265
+ lookup(path) {
266
+ return this.request({ method: 'lookup', path: this.normalizePath(path) });
267
+ }
268
+ getmode(path) {
269
+ return this.request({ method: 'getmode', path: this.normalizePath(path) });
270
+ }
271
+ mknod(path, mode) {
272
+ return this.request({
273
+ method: 'mknod',
274
+ path: this.normalizePath(path),
275
+ data: { mode },
276
+ });
277
+ }
278
+ rename(oldPath, newPath) {
279
+ return this.request({
280
+ method: 'rename',
281
+ path: this.normalizePath(oldPath),
282
+ data: { newPath: this.normalizePath(newPath) },
283
+ });
284
+ }
285
+ readdir(path) {
286
+ const dirlist = this.request({
287
+ method: 'readdir',
288
+ path: this.normalizePath(path),
289
+ });
290
+ dirlist.push('.');
291
+ dirlist.push('..');
292
+ return dirlist;
293
+ }
294
+ rmdir(path) {
295
+ return this.request({ method: 'rmdir', path: this.normalizePath(path) });
296
+ }
297
+ get(path) {
298
+ const response = this.request({
299
+ method: 'get',
300
+ path: this.normalizePath(path),
301
+ });
302
+ if (!response) {
303
+ throw new this.FS.ErrnoError(this.ERRNO_CODES['ENOENT']);
304
+ }
305
+ const serializedContent = response.content;
306
+ const format = response.format;
307
+ switch (format) {
308
+ case 'json':
309
+ case 'text':
310
+ return {
311
+ data: encoder.encode(serializedContent),
312
+ format,
313
+ };
314
+ case 'base64': {
315
+ const binString = atob(serializedContent);
316
+ const len = binString.length;
317
+ const data = new Uint8Array(len);
318
+ for (let i = 0; i < len; i++) {
319
+ data[i] = binString.charCodeAt(i);
320
+ }
321
+ return {
322
+ data,
323
+ format,
324
+ };
325
+ }
326
+ default:
327
+ throw new this.FS.ErrnoError(this.ERRNO_CODES['ENOENT']);
328
+ }
329
+ }
330
+ put(path, value) {
331
+ switch (value.format) {
332
+ case 'json':
333
+ case 'text':
334
+ return this.request({
335
+ method: 'put',
336
+ path: this.normalizePath(path),
337
+ data: {
338
+ format: value.format,
339
+ data: decoder.decode(value.data),
340
+ },
341
+ });
342
+ case 'base64': {
343
+ let binary = '';
344
+ for (let i = 0; i < value.data.byteLength; i++) {
345
+ binary += String.fromCharCode(value.data[i]);
346
+ }
347
+ return this.request({
348
+ method: 'put',
349
+ path: this.normalizePath(path),
350
+ data: {
351
+ format: value.format,
352
+ data: btoa(binary),
353
+ },
354
+ });
355
+ }
356
+ }
357
+ }
358
+ getattr(path) {
359
+ const stats = this.request({
360
+ method: 'getattr',
361
+ path: this.normalizePath(path),
362
+ });
363
+ // Emscripten 4.0.9+ (used by Pyodide 0.28+) requires all three timestamps
364
+ // to be valid Date objects with .getTime() method (see https://github.com/emscripten-core/emscripten/pull/22998).
365
+ // Fallback to epoch if any timestamp is missing/null/undefined.
366
+ const defaultDate = new Date(0);
367
+ stats.atime = stats.atime ? new Date(stats.atime) : defaultDate;
368
+ stats.mtime = stats.mtime ? new Date(stats.mtime) : defaultDate;
369
+ stats.ctime = stats.ctime ? new Date(stats.ctime) : defaultDate;
370
+ // ensure a non-undefined size (0 isn't great, though)
371
+ stats.size = stats.size || 0;
372
+ return stats;
373
+ }
374
+ /**
375
+ * Normalize a Path by making it compliant for the content manager
376
+ *
377
+ * @param path: the path relatively to the Emscripten drive
378
+ */
379
+ normalizePath(path) {
380
+ // Remove mountpoint prefix
381
+ if (path.startsWith(this._mountpoint)) {
382
+ path = path.slice(this._mountpoint.length);
383
+ }
384
+ // Add JupyterLab drive name
385
+ if (this._driveName) {
386
+ path = `${this._driveName}${DRIVE_SEPARATOR}${path}`;
387
+ }
388
+ return path;
389
+ }
390
+ }
391
+ /**
392
+ * An Emscripten-compatible synchronous Contents API using the service worker.
393
+ */
394
+ export class ServiceWorkerContentsAPI extends ContentsAPI {
395
+ /**
396
+ * Construct a new ServiceWorkerContentsAPI.
397
+ */
398
+ constructor(options) {
399
+ super(options);
400
+ this._baseUrl = options.baseUrl;
401
+ this._browsingContextId = options.browsingContextId || '';
402
+ }
403
+ request(data) {
404
+ const xhr = new XMLHttpRequest();
405
+ xhr.open('POST', encodeURI(this.endpoint), false);
406
+ // Generate unique request ID for correlation
407
+ const requestId = UUID.uuid4();
408
+ // Add the origin browsing context ID and request ID to the request
409
+ const requestWithMetadata = {
410
+ data: { ...data, requestId },
411
+ browsingContextId: this._browsingContextId,
412
+ requestId,
413
+ };
414
+ try {
415
+ xhr.send(JSON.stringify(requestWithMetadata));
416
+ }
417
+ catch (e) {
418
+ console.error(e);
419
+ }
420
+ if (xhr.status >= 400) {
421
+ throw new this.FS.ErrnoError(this.ERRNO_CODES['EINVAL']);
422
+ }
423
+ return JSON.parse(xhr.responseText);
424
+ }
425
+ /**
426
+ * Get the api/drive endpoint
427
+ */
428
+ get endpoint() {
429
+ return `${this._baseUrl}api/drive`;
430
+ }
431
+ }
432
+ export class DriveFS {
433
+ constructor(options) {
434
+ this.FS = options.FS;
435
+ this.PATH = options.PATH;
436
+ this.ERRNO_CODES = options.ERRNO_CODES;
437
+ this.API = this.createAPI(options);
438
+ this.driveName = options.driveName;
439
+ this.node_ops = new DriveFSEmscriptenNodeOps(this);
440
+ this.stream_ops = new DriveFSEmscriptenStreamOps(this);
441
+ }
442
+ /**
443
+ * Create the ContentsAPI.
444
+ *
445
+ * This is supposed to be overwritten if needed.
446
+ */
447
+ createAPI(options) {
448
+ if (!options.browsingContextId || !options.baseUrl) {
449
+ throw new Error('Cannot create service-worker API without current browsingContextId');
450
+ }
451
+ return new ServiceWorkerContentsAPI(options);
452
+ }
453
+ mount(mount) {
454
+ return this.createNode(null, mount.mountpoint, DIR_MODE | 511, 0);
455
+ }
456
+ createNode(parent, name, mode, dev) {
457
+ const FS = this.FS;
458
+ if (!FS.isDir(mode) && !FS.isFile(mode)) {
459
+ throw new FS.ErrnoError(this.ERRNO_CODES['EINVAL']);
460
+ }
461
+ const node = FS.createNode(parent, name, mode, dev);
462
+ node.node_ops = this.node_ops;
463
+ node.stream_ops = this.stream_ops;
464
+ return node;
465
+ }
466
+ getMode(path) {
467
+ return this.API.getmode(path);
468
+ }
469
+ realPath(node) {
470
+ const parts = [];
471
+ let currentNode = node;
472
+ parts.push(currentNode.name);
473
+ while (currentNode.parent !== currentNode) {
474
+ currentNode = currentNode.parent;
475
+ parts.push(currentNode.name);
476
+ }
477
+ parts.reverse();
478
+ return this.PATH.join.apply(null, parts);
479
+ }
480
+ }
481
+ //# sourceMappingURL=drivefs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"drivefs.js","sourceRoot":"","sources":["../../src/contents/drivefs.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ /**
2
+ * Types for Emscripten primitives.
3
+ *
4
+ * Ideally, much more of these would be taken from `@types/emscripten`.
5
+ */
6
+ type EmscriptenFS = typeof FS;
7
+ export declare const DIR_MODE = 16895;
8
+ export declare const FILE_MODE = 33206;
9
+ export declare const SEEK_CUR = 1;
10
+ export declare const SEEK_END = 2;
11
+ export interface IStats {
12
+ dev: number;
13
+ ino?: number;
14
+ mode?: number;
15
+ nlink: number;
16
+ uid: number;
17
+ gid: number;
18
+ rdev: number;
19
+ size: number;
20
+ blksize: number;
21
+ blocks: number;
22
+ atime: Date | string;
23
+ mtime: Date | string;
24
+ ctime: Date | string;
25
+ timestamp?: number;
26
+ }
27
+ export interface IEmscriptenFSNode {
28
+ id: number;
29
+ name: string;
30
+ mode: number;
31
+ parent: IEmscriptenFSNode;
32
+ mount: {
33
+ opts: {
34
+ root: string;
35
+ };
36
+ };
37
+ stream_ops: IEmscriptenStreamOps;
38
+ node_ops: IEmscriptenNodeOps;
39
+ timestamp: number;
40
+ atime: number;
41
+ mtime: number;
42
+ ctime: number;
43
+ }
44
+ export interface IEmscriptenStream {
45
+ node: IEmscriptenFSNode;
46
+ nfd: any;
47
+ flags?: number;
48
+ position?: number;
49
+ shared: {
50
+ flags: number;
51
+ position: number;
52
+ };
53
+ }
54
+ export declare function instanceOfStream(nodeOrStream: IEmscriptenFSNode | IEmscriptenStream): nodeOrStream is IEmscriptenStream;
55
+ export interface IEmscriptenNodeOps {
56
+ getattr(node: IEmscriptenFSNode | IEmscriptenStream): IStats;
57
+ setattr(node: IEmscriptenFSNode | IEmscriptenStream, attr: IStats): void;
58
+ lookup(parent: IEmscriptenFSNode | IEmscriptenStream, name: string): IEmscriptenFSNode;
59
+ mknod(parent: IEmscriptenFSNode | IEmscriptenStream, name: string, mode: number, dev: number): IEmscriptenFSNode;
60
+ rename(oldNode: IEmscriptenFSNode | IEmscriptenStream, newDir: IEmscriptenFSNode | IEmscriptenStream, newName: string): void;
61
+ unlink(parent: IEmscriptenFSNode | IEmscriptenStream, name: string): void;
62
+ rmdir(parent: IEmscriptenFSNode | IEmscriptenStream, name: string): void;
63
+ readdir(node: IEmscriptenFSNode | IEmscriptenStream): string[];
64
+ symlink(parent: IEmscriptenFSNode | IEmscriptenStream, newName: string, oldPath: string): void;
65
+ readlink(node: IEmscriptenFSNode | IEmscriptenStream): string;
66
+ }
67
+ export interface IEmscriptenStreamOps {
68
+ open(stream: IEmscriptenStream): void;
69
+ close(stream: IEmscriptenStream): void;
70
+ read(stream: IEmscriptenStream, buffer: Uint8Array, offset: number, length: number, position: number): number;
71
+ write(stream: IEmscriptenStream, buffer: Uint8Array, offset: number, length: number, position: number): number;
72
+ llseek(stream: IEmscriptenStream, offset: number, whence: number): number;
73
+ }
74
+ /**
75
+ * The emscripten filesystem module API.
76
+ */
77
+ export type FS = EmscriptenFS & {
78
+ ErrnoError: any;
79
+ createNode: (parent: IEmscriptenFSNode | null, name: string, mode: number, dev: number) => IEmscriptenFSNode;
80
+ };
81
+ /**
82
+ * The emscripten filesystem error codes.
83
+ */
84
+ export type ERRNO_CODES = any;
85
+ /**
86
+ * The emscripten FS Path API.
87
+ */
88
+ export type PATH = {
89
+ basename: (path: string) => string;
90
+ dirname: (path: string) => string;
91
+ join: (...parts: string[]) => string;
92
+ join2: (l: string, r: string) => string;
93
+ normalize: (path: string) => string;
94
+ splitPath: (filename: string) => string;
95
+ };
96
+ export {};
@@ -0,0 +1,10 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+ export const DIR_MODE = 16895; // 040777
4
+ export const FILE_MODE = 33206; // 100666
5
+ export const SEEK_CUR = 1;
6
+ export const SEEK_END = 2;
7
+ export function instanceOfStream(nodeOrStream) {
8
+ return 'node' in nodeOrStream;
9
+ }
10
+ //# sourceMappingURL=emscripten.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"emscripten.js","sourceRoot":"","sources":["../../src/contents/emscripten.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAgB3D,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,SAAS;AACxC,MAAM,CAAC,MAAM,SAAS,GAAG,KAAK,CAAC,CAAC,SAAS;AACzC,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC;AAC1B,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC;AA4C1B,MAAM,UAAU,gBAAgB,CAC9B,YAAmD;IAEnD,OAAO,MAAM,IAAI,YAAY,CAAC;AAChC,CAAC"}
@@ -0,0 +1,5 @@
1
+ export * from './drive';
2
+ export * from './drivefs';
3
+ export * from './tokens';
4
+ export * from './emscripten';
5
+ export * from './drivecontents';
@@ -0,0 +1,8 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+ export * from './drive';
4
+ export * from './drivefs';
5
+ export * from './tokens';
6
+ export * from './emscripten';
7
+ export * from './drivecontents';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/contents/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAE3D,cAAc,SAAS,CAAC;AACxB,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Commonly-used mimetypes
3
+ */
4
+ export declare namespace MIME {
5
+ const JSON = "application/json";
6
+ const PLAIN_TEXT = "text/plain";
7
+ const OCTET_STREAM = "octet/stream";
8
+ }
9
+ /**
10
+ * A namespace for file constructs.
11
+ */
12
+ export declare namespace FILE {
13
+ /**
14
+ * Get a mimetype (or fallback).
15
+ */
16
+ function getType(ext: string, defaultType?: string | null): string;
17
+ /**
18
+ * Determine whether the given extension matches a given fileFormat.
19
+ */
20
+ function hasFormat(ext: string, fileFormat: 'base64' | 'text' | 'json'): boolean;
21
+ }