@jupyterlite/services 0.7.4 → 0.7.5

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.
@@ -18,6 +18,92 @@ export const DRIVE_NAME = 'BrowserStorage';
18
18
  const N_CHECKPOINTS = 5;
19
19
  const encoder = new TextEncoder();
20
20
  const decoder = new TextDecoder('utf-8');
21
+ function base64ToBytes(content) {
22
+ const binary = atob(content);
23
+ return Uint8Array.from(binary, (char) => char.charCodeAt(0));
24
+ }
25
+ function bytesToBase64(bytes) {
26
+ let binary = '';
27
+ for (const byte of bytes) {
28
+ binary += String.fromCharCode(byte);
29
+ }
30
+ return btoa(binary);
31
+ }
32
+ /**
33
+ * Converts a contents model into JSON.
34
+ */
35
+ function convertToJSON(model) {
36
+ switch (model.format) {
37
+ case 'json': {
38
+ return model;
39
+ }
40
+ case 'text': {
41
+ return {
42
+ ...model,
43
+ content: JSON.parse(model.content),
44
+ format: 'json',
45
+ };
46
+ }
47
+ case 'base64': {
48
+ return {
49
+ ...model,
50
+ content: JSON.parse(decoder.decode(base64ToBytes(model.content))),
51
+ format: 'json',
52
+ };
53
+ }
54
+ }
55
+ throw new Error(`Invalid format ${model.format}`);
56
+ }
57
+ /**
58
+ * Converts a contents model into text.
59
+ */
60
+ function convertToText(model) {
61
+ switch (model.format) {
62
+ case 'json': {
63
+ return {
64
+ ...model,
65
+ content: JSON.stringify(model.content),
66
+ format: 'text',
67
+ };
68
+ }
69
+ case 'text': {
70
+ return model;
71
+ }
72
+ case 'base64': {
73
+ return {
74
+ ...model,
75
+ content: decoder.decode(base64ToBytes(model.content)),
76
+ format: 'text',
77
+ };
78
+ }
79
+ }
80
+ throw new Error(`Invalid format ${model.format}`);
81
+ }
82
+ /**
83
+ * Converts a contents model into base64.
84
+ */
85
+ function convertToBase64(model) {
86
+ switch (model.format) {
87
+ case 'json': {
88
+ return {
89
+ ...model,
90
+ content: bytesToBase64(encoder.encode(JSON.stringify(model.content))),
91
+ format: 'base64',
92
+ };
93
+ }
94
+ case 'text': {
95
+ return {
96
+ ...model,
97
+ content: bytesToBase64(encoder.encode(model.content)),
98
+ format: 'base64',
99
+ };
100
+ }
101
+ case 'base64': {
102
+ return model;
103
+ }
104
+ }
105
+ throw new Error(`Invalid format ${model.format}`);
106
+ }
21
107
  /**
22
108
  * A custom drive to store files in the browser storage.
23
109
  */
@@ -221,32 +307,11 @@ export class BrowserStorageDrive {
221
307
  * @returns A promise which resolves with the created file content when the file is created.
222
308
  */
223
309
  async newUntitled(options) {
224
- var _a, _b, _c;
310
+ var _a, _b;
225
311
  const path = (_a = options === null || options === void 0 ? void 0 : options.path) !== null && _a !== void 0 ? _a : '';
226
312
  const type = (_b = options === null || options === void 0 ? void 0 : options.type) !== null && _b !== void 0 ? _b : 'notebook';
227
313
  const created = new Date().toISOString();
228
- let dirname = PathExt.dirname(path);
229
- const basename = PathExt.basename(path);
230
- const extname = PathExt.extname(path);
231
- const item = await this.get(dirname).catch(() => null);
232
- // handle the case of "Save As", where the path points to the new file
233
- // to create, e.g. subfolder/example-copy.ipynb
234
314
  let name = '';
235
- if (path && !extname && item) {
236
- // directory
237
- dirname = `${path}/`;
238
- name = '';
239
- }
240
- else if (dirname && basename) {
241
- // file in a subfolder
242
- dirname = `${dirname}/`;
243
- name = basename;
244
- }
245
- else {
246
- // file at the top level
247
- dirname = '';
248
- name = path;
249
- }
250
315
  let file;
251
316
  switch (type) {
252
317
  case 'directory': {
@@ -254,7 +319,7 @@ export class BrowserStorageDrive {
254
319
  name = `Untitled Folder${counter || ''}`;
255
320
  file = {
256
321
  name,
257
- path: `${dirname}${name}`,
322
+ path: PathExt.join(path, name),
258
323
  last_modified: created,
259
324
  created,
260
325
  format: 'json',
@@ -271,7 +336,7 @@ export class BrowserStorageDrive {
271
336
  name = name || `Untitled${counter || ''}.ipynb`;
272
337
  file = {
273
338
  name,
274
- path: `${dirname}${name}`,
339
+ path: PathExt.join(path, name),
275
340
  last_modified: created,
276
341
  created,
277
342
  format: 'json',
@@ -284,14 +349,20 @@ export class BrowserStorageDrive {
284
349
  break;
285
350
  }
286
351
  default: {
287
- let ext = (_c = options === null || options === void 0 ? void 0 : options.ext) !== null && _c !== void 0 ? _c : '.txt';
288
- if (!ext.startsWith('.')) {
352
+ let ext = options === null || options === void 0 ? void 0 : options.ext;
353
+ if (ext && !ext.startsWith('.')) {
289
354
  ext = `.${ext}`;
290
355
  }
291
356
  const counter = await this._incrementCounter('file');
292
- const mimetype = FILE.getType(ext) || MIME.OCTET_STREAM;
357
+ const mimetype = ext
358
+ ? FILE.getType(ext) || MIME.OCTET_STREAM
359
+ : MIME.OCTET_STREAM;
293
360
  let format;
294
- if (FILE.hasFormat(ext, 'text') || mimetype.indexOf('text') !== -1) {
361
+ if (!ext) {
362
+ format = 'base64';
363
+ ext = '';
364
+ }
365
+ else if (FILE.hasFormat(ext, 'text') || mimetype.indexOf('text') !== -1) {
295
366
  format = 'text';
296
367
  }
297
368
  else if (ext.indexOf('json') !== -1 || ext.indexOf('ipynb') !== -1) {
@@ -303,7 +374,7 @@ export class BrowserStorageDrive {
303
374
  name = name || `untitled${counter || ''}${ext}`;
304
375
  file = {
305
376
  name,
306
- path: `${dirname}${name}`,
377
+ path: PathExt.join(path, name),
307
378
  last_modified: created,
308
379
  created,
309
380
  format,
@@ -375,6 +446,7 @@ export class BrowserStorageDrive {
375
446
  * @returns A promise which resolves with the file content.
376
447
  */
377
448
  async get(path, options) {
449
+ var _a;
378
450
  const contentProvider = this.contentProviderRegistry.getProvider(options === null || options === void 0 ? void 0 : options.contentProviderId);
379
451
  // If a content provider is assigned, use the content provider's get
380
452
  if (contentProvider) {
@@ -393,14 +465,34 @@ export class BrowserStorageDrive {
393
465
  const storage = await this.storage;
394
466
  const item = await storage.getItem(path);
395
467
  const serverItem = await this._getServerContents(path, options);
396
- const model = (item || serverItem);
468
+ let model = (item || serverItem);
397
469
  if (!model) {
398
470
  throw Error(`Could not find content with path ${path}`);
399
471
  }
400
- if (!(options === null || options === void 0 ? void 0 : options.content)) {
472
+ if (options === null || options === void 0 ? void 0 : options.content) {
473
+ const requestedFormat = options.format;
474
+ if (requestedFormat && model.format !== requestedFormat) {
475
+ switch (requestedFormat) {
476
+ case 'json': {
477
+ model = convertToJSON(model);
478
+ break;
479
+ }
480
+ case 'text': {
481
+ model = convertToText(model);
482
+ break;
483
+ }
484
+ case 'base64': {
485
+ model = convertToBase64(model);
486
+ break;
487
+ }
488
+ }
489
+ }
490
+ }
491
+ else {
401
492
  return {
402
- size: 0,
403
493
  ...model,
494
+ size: 0,
495
+ format: (_a = options === null || options === void 0 ? void 0 : options.format) !== null && _a !== void 0 ? _a : model.format,
404
496
  content: null,
405
497
  };
406
498
  }
@@ -488,7 +580,7 @@ export class BrowserStorageDrive {
488
580
  * @returns A promise which resolves with the file content model when the file is saved.
489
581
  */
490
582
  async save(path, options = {}) {
491
- var _a;
583
+ var _a, _b, _c;
492
584
  const contentProvider = this.contentProviderRegistry.getProvider(options === null || options === void 0 ? void 0 : options.contentProviderId);
493
585
  let item = null;
494
586
  // If a content provider is assigned, use the content provider's save
@@ -504,63 +596,71 @@ export class BrowserStorageDrive {
504
596
  // Otherwise fallback to our default drive implementation
505
597
  path = decodeURIComponent(path);
506
598
  // process the file if coming from an upload
507
- const ext = PathExt.extname((_a = options.name) !== null && _a !== void 0 ? _a : '');
599
+ const name = (_a = options.name) !== null && _a !== void 0 ? _a : PathExt.basename(path);
600
+ const ext = PathExt.extname(name);
508
601
  const chunk = options.chunk;
602
+ const hasContent = Object.prototype.hasOwnProperty.call(options, 'content');
509
603
  // retrieve the content if it is a later chunk or the last one
510
604
  // the new content will then be appended to the existing one
511
605
  const appendChunk = chunk ? chunk > 1 || chunk === -1 : false;
512
- item = await this.get(path, { content: appendChunk }).catch(() => null);
513
- if (!item) {
514
- item = await this.newUntitled({ path, ext, type: 'file' });
515
- }
516
- if (!item) {
517
- throw Error(`Could not find file with path ${path}`);
606
+ item = await this.get(path, { content: appendChunk || !hasContent }).catch(() => null);
607
+ const now = new Date().toISOString();
608
+ let type = options.type || (item === null || item === void 0 ? void 0 : item.type) || 'file';
609
+ if (ext.toLowerCase() === '.ipynb') {
610
+ type = 'notebook';
518
611
  }
612
+ const format = options.format || (item === null || item === void 0 ? void 0 : item.format) || 'base64';
613
+ const mimetype = ext
614
+ ? FILE.getType(ext) || MIME.OCTET_STREAM
615
+ : (item === null || item === void 0 ? void 0 : item.mimetype) || MIME.OCTET_STREAM;
616
+ const content = hasContent ? (_b = options.content) !== null && _b !== void 0 ? _b : '' : (_c = item === null || item === void 0 ? void 0 : item.content) !== null && _c !== void 0 ? _c : '';
519
617
  // keep a reference to the original content
520
- const originalContent = item.content;
521
- const modified = new Date().toISOString();
522
- // override with the new values
523
- item = {
524
- ...item,
525
- ...options,
526
- last_modified: modified,
527
- };
528
- if (options.content && options.format === 'base64') {
529
- const lastChunk = chunk ? chunk === -1 : true;
530
- const contentBinaryString = this._handleUploadChunk(options.content, originalContent, appendChunk);
531
- if (ext === '.ipynb') {
532
- const content = lastChunk
533
- ? JSON.parse(decoder.decode(this._binaryStringToBytes(contentBinaryString)))
534
- : contentBinaryString;
535
- item = {
536
- ...item,
537
- content,
538
- format: 'json',
539
- type: 'notebook',
540
- size: contentBinaryString.length,
541
- };
542
- }
543
- else if (FILE.hasFormat(ext, 'json')) {
618
+ const originalContent = item === null || item === void 0 ? void 0 : item.content;
619
+ if (item) {
620
+ item = {
621
+ ...item,
622
+ last_modified: now,
623
+ format,
624
+ mimetype,
625
+ content,
626
+ writable: true,
627
+ type,
628
+ };
629
+ }
630
+ else {
631
+ item = {
632
+ name,
633
+ path,
634
+ last_modified: now,
635
+ created: now,
636
+ format,
637
+ mimetype,
638
+ content,
639
+ size: 0,
640
+ writable: true,
641
+ type,
642
+ };
643
+ }
644
+ if (chunk) {
645
+ const lastChunk = chunk === -1;
646
+ const contentBinaryString = this._handleUploadChunk(content, originalContent, appendChunk);
647
+ if (item.format === 'json') {
544
648
  const content = lastChunk
545
649
  ? JSON.parse(decoder.decode(this._binaryStringToBytes(contentBinaryString)))
546
650
  : contentBinaryString;
547
651
  item = {
548
652
  ...item,
549
653
  content,
550
- format: 'json',
551
- type: 'file',
552
654
  size: contentBinaryString.length,
553
655
  };
554
656
  }
555
- else if (FILE.hasFormat(ext, 'text')) {
657
+ else if (item.format === 'text') {
556
658
  const content = lastChunk
557
659
  ? decoder.decode(this._binaryStringToBytes(contentBinaryString))
558
660
  : contentBinaryString;
559
661
  item = {
560
662
  ...item,
561
663
  content,
562
- format: 'text',
563
- type: 'file',
564
664
  size: contentBinaryString.length,
565
665
  };
566
666
  }
@@ -569,15 +669,13 @@ export class BrowserStorageDrive {
569
669
  item = {
570
670
  ...item,
571
671
  content,
572
- format: 'base64',
573
- type: 'file',
574
672
  size: contentBinaryString.length,
575
673
  };
576
674
  }
577
675
  }
578
676
  // fixup content sizes if necessary
579
677
  if (item.content) {
580
- switch (options.format) {
678
+ switch (item.format) {
581
679
  case 'json': {
582
680
  item = { ...item, size: encoder.encode(JSON.stringify(item.content)).length };
583
681
  break;
@@ -586,8 +684,9 @@ export class BrowserStorageDrive {
586
684
  item = { ...item, size: encoder.encode(item.content).length };
587
685
  break;
588
686
  }
589
- // base64 save was already handled above
590
687
  case 'base64': {
688
+ const padding = (item.content.match(/=+$/) || [''])[0].length;
689
+ item = { ...item, size: (item.content.length * 3) / 4 - padding };
591
690
  break;
592
691
  }
593
692
  default: {
@@ -1 +1 @@
1
- {"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/contents/drive.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drive.js","sourceRoot":"","sources":["../../src/contents/drive.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyterlite/services",
3
- "version": "0.7.4",
3
+ "version": "0.7.5",
4
4
  "description": "JupyterLite - Services",
5
5
  "homepage": "https://github.com/jupyterlite/jupyterlite",
6
6
  "bugs": {
@@ -46,12 +46,12 @@
46
46
  "watch": "tsc -b --watch"
47
47
  },
48
48
  "dependencies": {
49
- "@jupyterlab/coreutils": "~6.5.6",
50
- "@jupyterlab/nbformat": "~4.5.6",
51
- "@jupyterlab/observables": "~5.5.6",
52
- "@jupyterlab/services": "~7.5.6",
53
- "@jupyterlab/settingregistry": "~4.5.6",
54
- "@jupyterlite/localforage": "^0.7.4",
49
+ "@jupyterlab/coreutils": "~6.5.7",
50
+ "@jupyterlab/nbformat": "~4.5.7",
51
+ "@jupyterlab/observables": "~5.5.7",
52
+ "@jupyterlab/services": "~7.5.7",
53
+ "@jupyterlab/settingregistry": "~4.5.7",
54
+ "@jupyterlite/localforage": "^0.7.5",
55
55
  "@lumino/algorithm": "^2.0.4",
56
56
  "@lumino/coreutils": "^2.2.2",
57
57
  "@lumino/disposable": "^2.1.5",
@@ -67,7 +67,7 @@
67
67
  "devDependencies": {
68
68
  "@babel/core": "^7.11.6",
69
69
  "@babel/preset-env": "^7.12.1",
70
- "@jupyterlab/testutils": "~4.5.6",
70
+ "@jupyterlab/testutils": "~4.5.7",
71
71
  "@types/jest": "^29.5.3",
72
72
  "@types/mime": "^2.0.3",
73
73
  "jest": "^29.6.2",
@@ -36,6 +36,100 @@ const N_CHECKPOINTS = 5;
36
36
  const encoder = new TextEncoder();
37
37
  const decoder = new TextDecoder('utf-8');
38
38
 
39
+ function base64ToBytes(content: string): Uint8Array {
40
+ const binary = atob(content);
41
+ return Uint8Array.from(binary, (char) => char.charCodeAt(0));
42
+ }
43
+
44
+ function bytesToBase64(bytes: Uint8Array): string {
45
+ let binary = '';
46
+ for (const byte of bytes) {
47
+ binary += String.fromCharCode(byte);
48
+ }
49
+ return btoa(binary);
50
+ }
51
+
52
+ /**
53
+ * Converts a contents model into JSON.
54
+ */
55
+ function convertToJSON(model: Contents.IModel): Contents.IModel {
56
+ switch (model.format) {
57
+ case 'json': {
58
+ return model;
59
+ }
60
+ case 'text': {
61
+ return {
62
+ ...model,
63
+ content: JSON.parse(model.content),
64
+ format: 'json',
65
+ };
66
+ }
67
+ case 'base64': {
68
+ return {
69
+ ...model,
70
+ content: JSON.parse(decoder.decode(base64ToBytes(model.content))),
71
+ format: 'json',
72
+ };
73
+ }
74
+ }
75
+
76
+ throw new Error(`Invalid format ${model.format}`);
77
+ }
78
+
79
+ /**
80
+ * Converts a contents model into text.
81
+ */
82
+ function convertToText(model: Contents.IModel): Contents.IModel {
83
+ switch (model.format) {
84
+ case 'json': {
85
+ return {
86
+ ...model,
87
+ content: JSON.stringify(model.content),
88
+ format: 'text',
89
+ };
90
+ }
91
+ case 'text': {
92
+ return model;
93
+ }
94
+ case 'base64': {
95
+ return {
96
+ ...model,
97
+ content: decoder.decode(base64ToBytes(model.content)),
98
+ format: 'text',
99
+ };
100
+ }
101
+ }
102
+
103
+ throw new Error(`Invalid format ${model.format}`);
104
+ }
105
+
106
+ /**
107
+ * Converts a contents model into base64.
108
+ */
109
+ function convertToBase64(model: Contents.IModel): Contents.IModel {
110
+ switch (model.format) {
111
+ case 'json': {
112
+ return {
113
+ ...model,
114
+ content: bytesToBase64(encoder.encode(JSON.stringify(model.content))),
115
+ format: 'base64',
116
+ };
117
+ }
118
+ case 'text': {
119
+ return {
120
+ ...model,
121
+ content: bytesToBase64(encoder.encode(model.content)),
122
+ format: 'base64',
123
+ };
124
+ }
125
+ case 'base64': {
126
+ return model;
127
+ }
128
+ }
129
+
130
+ throw new Error(`Invalid format ${model.format}`);
131
+ }
132
+
39
133
  /**
40
134
  * A custom drive to store files in the browser storage.
41
135
  */
@@ -258,27 +352,7 @@ export class BrowserStorageDrive implements Contents.IDrive {
258
352
  const type = options?.type ?? 'notebook';
259
353
  const created = new Date().toISOString();
260
354
 
261
- let dirname = PathExt.dirname(path);
262
- const basename = PathExt.basename(path);
263
- const extname = PathExt.extname(path);
264
- const item = await this.get(dirname).catch(() => null);
265
-
266
- // handle the case of "Save As", where the path points to the new file
267
- // to create, e.g. subfolder/example-copy.ipynb
268
355
  let name = '';
269
- if (path && !extname && item) {
270
- // directory
271
- dirname = `${path}/`;
272
- name = '';
273
- } else if (dirname && basename) {
274
- // file in a subfolder
275
- dirname = `${dirname}/`;
276
- name = basename;
277
- } else {
278
- // file at the top level
279
- dirname = '';
280
- name = path;
281
- }
282
356
 
283
357
  let file: IModel;
284
358
  switch (type) {
@@ -287,7 +361,7 @@ export class BrowserStorageDrive implements Contents.IDrive {
287
361
  name = `Untitled Folder${counter || ''}`;
288
362
  file = {
289
363
  name,
290
- path: `${dirname}${name}`,
364
+ path: PathExt.join(path, name),
291
365
  last_modified: created,
292
366
  created,
293
367
  format: 'json',
@@ -304,7 +378,7 @@ export class BrowserStorageDrive implements Contents.IDrive {
304
378
  name = name || `Untitled${counter || ''}.ipynb`;
305
379
  file = {
306
380
  name,
307
- path: `${dirname}${name}`,
381
+ path: PathExt.join(path, name),
308
382
  last_modified: created,
309
383
  created,
310
384
  format: 'json',
@@ -317,15 +391,20 @@ export class BrowserStorageDrive implements Contents.IDrive {
317
391
  break;
318
392
  }
319
393
  default: {
320
- let ext = options?.ext ?? '.txt';
321
- if (!ext.startsWith('.')) {
394
+ let ext = options?.ext;
395
+ if (ext && !ext.startsWith('.')) {
322
396
  ext = `.${ext}`;
323
397
  }
324
398
  const counter = await this._incrementCounter('file');
325
- const mimetype = FILE.getType(ext) || MIME.OCTET_STREAM;
399
+ const mimetype = ext
400
+ ? FILE.getType(ext) || MIME.OCTET_STREAM
401
+ : MIME.OCTET_STREAM;
326
402
 
327
403
  let format: Contents.FileFormat;
328
- if (FILE.hasFormat(ext, 'text') || mimetype.indexOf('text') !== -1) {
404
+ if (!ext) {
405
+ format = 'base64';
406
+ ext = '';
407
+ } else if (FILE.hasFormat(ext, 'text') || mimetype.indexOf('text') !== -1) {
329
408
  format = 'text';
330
409
  } else if (ext.indexOf('json') !== -1 || ext.indexOf('ipynb') !== -1) {
331
410
  format = 'json';
@@ -336,7 +415,7 @@ export class BrowserStorageDrive implements Contents.IDrive {
336
415
  name = name || `untitled${counter || ''}${ext}`;
337
416
  file = {
338
417
  name,
339
- path: `${dirname}${name}`,
418
+ path: PathExt.join(path, name),
340
419
  last_modified: created,
341
420
  created,
342
421
  format,
@@ -440,16 +519,35 @@ export class BrowserStorageDrive implements Contents.IDrive {
440
519
  const item = await storage.getItem(path);
441
520
  const serverItem = await this._getServerContents(path, options);
442
521
 
443
- const model = (item || serverItem) as IModel | null;
522
+ let model = (item || serverItem) as IModel | null;
444
523
 
445
524
  if (!model) {
446
525
  throw Error(`Could not find content with path ${path}`);
447
526
  }
448
527
 
449
- if (!options?.content) {
528
+ if (options?.content) {
529
+ const requestedFormat = options.format;
530
+ if (requestedFormat && model.format !== requestedFormat) {
531
+ switch (requestedFormat) {
532
+ case 'json': {
533
+ model = convertToJSON(model);
534
+ break;
535
+ }
536
+ case 'text': {
537
+ model = convertToText(model);
538
+ break;
539
+ }
540
+ case 'base64': {
541
+ model = convertToBase64(model);
542
+ break;
543
+ }
544
+ }
545
+ }
546
+ } else {
450
547
  return {
451
- size: 0,
452
548
  ...model,
549
+ size: 0,
550
+ format: options?.format ?? model.format,
453
551
  content: null,
454
552
  };
455
553
  }
@@ -574,73 +672,82 @@ export class BrowserStorageDrive implements Contents.IDrive {
574
672
  path = decodeURIComponent(path);
575
673
 
576
674
  // process the file if coming from an upload
577
- const ext = PathExt.extname(options.name ?? '');
675
+ const name = options.name ?? PathExt.basename(path);
676
+ const ext = PathExt.extname(name);
578
677
  const chunk = options.chunk;
678
+ const hasContent = Object.prototype.hasOwnProperty.call(options, 'content');
579
679
 
580
680
  // retrieve the content if it is a later chunk or the last one
581
681
  // the new content will then be appended to the existing one
582
682
  const appendChunk = chunk ? chunk > 1 || chunk === -1 : false;
583
- item = await this.get(path, { content: appendChunk }).catch(() => null);
584
-
585
- if (!item) {
586
- item = await this.newUntitled({ path, ext, type: 'file' });
587
- }
683
+ item = await this.get(path, { content: appendChunk || !hasContent }).catch(
684
+ () => null,
685
+ );
588
686
 
589
- if (!item) {
590
- throw Error(`Could not find file with path ${path}`);
687
+ const now = new Date().toISOString();
688
+ let type = options.type || item?.type || 'file';
689
+ if (ext.toLowerCase() === '.ipynb') {
690
+ type = 'notebook';
591
691
  }
692
+ const format = options.format || item?.format || 'base64';
693
+ const mimetype = ext
694
+ ? FILE.getType(ext) || MIME.OCTET_STREAM
695
+ : item?.mimetype || MIME.OCTET_STREAM;
696
+ const content = hasContent ? options.content ?? '' : item?.content ?? '';
592
697
 
593
698
  // keep a reference to the original content
594
- const originalContent = item.content;
595
-
596
- const modified = new Date().toISOString();
597
- // override with the new values
598
- item = {
599
- ...item,
600
- ...options,
601
- last_modified: modified,
602
- };
699
+ const originalContent = item?.content;
700
+
701
+ if (item) {
702
+ item = {
703
+ ...item,
704
+ last_modified: now,
705
+ format,
706
+ mimetype,
707
+ content,
708
+ writable: true,
709
+ type,
710
+ };
711
+ } else {
712
+ item = {
713
+ name,
714
+ path,
715
+ last_modified: now,
716
+ created: now,
717
+ format,
718
+ mimetype,
719
+ content,
720
+ size: 0,
721
+ writable: true,
722
+ type,
723
+ };
724
+ }
603
725
 
604
- if (options.content && options.format === 'base64') {
605
- const lastChunk = chunk ? chunk === -1 : true;
726
+ if (chunk) {
727
+ const lastChunk = chunk === -1;
606
728
 
607
729
  const contentBinaryString = this._handleUploadChunk(
608
- options.content,
730
+ content,
609
731
  originalContent,
610
732
  appendChunk,
611
733
  );
612
734
 
613
- if (ext === '.ipynb') {
735
+ if (item.format === 'json') {
614
736
  const content = lastChunk
615
737
  ? JSON.parse(decoder.decode(this._binaryStringToBytes(contentBinaryString)))
616
738
  : contentBinaryString;
617
739
  item = {
618
740
  ...item,
619
741
  content,
620
- format: 'json',
621
- type: 'notebook',
622
742
  size: contentBinaryString.length,
623
743
  };
624
- } else if (FILE.hasFormat(ext, 'json')) {
625
- const content = lastChunk
626
- ? JSON.parse(decoder.decode(this._binaryStringToBytes(contentBinaryString)))
627
- : contentBinaryString;
628
- item = {
629
- ...item,
630
- content,
631
- format: 'json',
632
- type: 'file',
633
- size: contentBinaryString.length,
634
- };
635
- } else if (FILE.hasFormat(ext, 'text')) {
744
+ } else if (item.format === 'text') {
636
745
  const content = lastChunk
637
746
  ? decoder.decode(this._binaryStringToBytes(contentBinaryString))
638
747
  : contentBinaryString;
639
748
  item = {
640
749
  ...item,
641
750
  content,
642
- format: 'text',
643
- type: 'file',
644
751
  size: contentBinaryString.length,
645
752
  };
646
753
  } else {
@@ -648,8 +755,6 @@ export class BrowserStorageDrive implements Contents.IDrive {
648
755
  item = {
649
756
  ...item,
650
757
  content,
651
- format: 'base64',
652
- type: 'file',
653
758
  size: contentBinaryString.length,
654
759
  };
655
760
  }
@@ -657,7 +762,7 @@ export class BrowserStorageDrive implements Contents.IDrive {
657
762
 
658
763
  // fixup content sizes if necessary
659
764
  if (item.content) {
660
- switch (options.format) {
765
+ switch (item.format) {
661
766
  case 'json': {
662
767
  item = { ...item, size: encoder.encode(JSON.stringify(item.content)).length };
663
768
  break;
@@ -666,8 +771,9 @@ export class BrowserStorageDrive implements Contents.IDrive {
666
771
  item = { ...item, size: encoder.encode(item.content).length };
667
772
  break;
668
773
  }
669
- // base64 save was already handled above
670
774
  case 'base64': {
775
+ const padding = (item.content.match(/=+$/) || [''])[0].length;
776
+ item = { ...item, size: (item.content.length * 3) / 4 - padding };
671
777
  break;
672
778
  }
673
779
  default: {