@jupyterlite/services 0.7.3 → 0.7.4

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.
@@ -1,6 +1,6 @@
1
1
  import { PathExt } from '@jupyterlab/coreutils';
2
2
  import { BLOCK_SIZE } from './drivefs';
3
- import { DIR_MODE, FILE_MODE } from './emscripten';
3
+ import { isDirMode, DIR_MODE, FILE_MODE } from './emscripten';
4
4
  /**
5
5
  * Class for processing a drive request from the DriveFS.
6
6
  */
@@ -73,12 +73,17 @@ export class DriveContentsProcessor {
73
73
  return response;
74
74
  }
75
75
  async mknod(request) {
76
- const model = await this.contentsManager.newUntitled({
77
- path: PathExt.dirname(request.path),
78
- type: request.data.mode === DIR_MODE ? 'directory' : 'file',
79
- ext: PathExt.extname(request.path),
80
- });
81
- await this.contentsManager.rename(model.path, request.path);
76
+ // Contents API does not permit creating folders with given name. We can only create untitled folder then rename.
77
+ if (isDirMode(request.data.mode)) {
78
+ const model = await this.contentsManager.newUntitled({
79
+ path: PathExt.dirname(request.path),
80
+ type: 'directory',
81
+ ext: PathExt.extname(request.path),
82
+ });
83
+ await this.contentsManager.rename(model.path, request.path);
84
+ return null;
85
+ }
86
+ await this.contentsManager.save(request.path, { type: 'file' });
82
87
  return null;
83
88
  }
84
89
  async getattr(request) {
@@ -1 +1 @@
1
- {"version":3,"file":"drivecontents.js","sourceRoot":"","sources":["../../src/contents/drivecontents.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"drivecontents.js","sourceRoot":"","sources":["../../src/contents/drivecontents.ts"],"names":[],"mappings":"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"}
@@ -3,11 +3,15 @@
3
3
  *
4
4
  * Ideally, much more of these would be taken from `@types/emscripten`.
5
5
  */
6
- type EmscriptenFS = typeof FS;
6
+ type EmscriptenFS = typeof globalThis extends {
7
+ FS: infer T;
8
+ } ? T : Record<string, any>;
7
9
  export declare const DIR_MODE = 16895;
8
10
  export declare const FILE_MODE = 33206;
9
11
  export declare const SEEK_CUR = 1;
10
12
  export declare const SEEK_END = 2;
13
+ export declare function isDirMode(mode: number): boolean;
14
+ export declare function isFileMode(mode: number): boolean;
11
15
  export interface IStats {
12
16
  dev: number;
13
17
  ino?: number;
@@ -1,9 +1,20 @@
1
1
  // Copyright (c) Jupyter Development Team.
2
2
  // Distributed under the terms of the Modified BSD License.
3
+ // Those constants are standard that is very unlikely to change
4
+ // https://github.com/bminor/glibc/blob/04e750e75b73957cf1c791535a3f4319534a52fc/bits/stat.h#L66
5
+ const S_IFMT = 0o170000;
6
+ const S_IFDIR = 0o040000;
7
+ const S_IFREG = 0o100000;
3
8
  export const DIR_MODE = 16895; // 040777
4
9
  export const FILE_MODE = 33206; // 100666
5
10
  export const SEEK_CUR = 1;
6
11
  export const SEEK_END = 2;
12
+ export function isDirMode(mode) {
13
+ return (mode & S_IFMT) === S_IFDIR;
14
+ }
15
+ export function isFileMode(mode) {
16
+ return (mode & S_IFMT) === S_IFREG;
17
+ }
7
18
  export function instanceOfStream(nodeOrStream) {
8
19
  return 'node' in nodeOrStream;
9
20
  }
@@ -1 +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"}
1
+ {"version":3,"file":"emscripten.js","sourceRoot":"","sources":["../../src/contents/emscripten.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAgB3D,+DAA+D;AAC/D,gGAAgG;AAChG,MAAM,MAAM,GAAG,QAAQ,CAAC;AACxB,MAAM,OAAO,GAAG,QAAQ,CAAC;AACzB,MAAM,OAAO,GAAG,QAAQ,CAAC;AAEzB,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;AAE1B,MAAM,UAAU,SAAS,CAAC,IAAY;IACpC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,OAAO,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,IAAY;IACrC,OAAO,CAAC,IAAI,GAAG,MAAM,CAAC,KAAK,OAAO,CAAC;AACrC,CAAC;AA4CD,MAAM,UAAU,gBAAgB,CAC9B,YAAmD;IAEnD,OAAO,MAAM,IAAI,YAAY,CAAC;AAChC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jupyterlite/services",
3
- "version": "0.7.3",
3
+ "version": "0.7.4",
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.5",
50
- "@jupyterlab/nbformat": "~4.5.5",
51
- "@jupyterlab/observables": "~5.5.5",
52
- "@jupyterlab/services": "~7.5.5",
53
- "@jupyterlab/settingregistry": "~4.5.5",
54
- "@jupyterlite/localforage": "^0.7.3",
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",
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.5",
70
+ "@jupyterlab/testutils": "~4.5.6",
71
71
  "@types/jest": "^29.5.3",
72
72
  "@types/mime": "^2.0.3",
73
73
  "jest": "^29.6.2",
@@ -2,7 +2,7 @@ import { PathExt } from '@jupyterlab/coreutils';
2
2
  import type { Contents } from '@jupyterlab/services';
3
3
  import type { TDriveMethod, TDriveRequest, TDriveResponse } from './drivefs';
4
4
  import { BLOCK_SIZE } from './drivefs';
5
- import { DIR_MODE, FILE_MODE } from './emscripten';
5
+ import { isDirMode, DIR_MODE, FILE_MODE } from './emscripten';
6
6
 
7
7
  export interface IDriveContentsProcessor {
8
8
  /**
@@ -176,12 +176,18 @@ export class DriveContentsProcessor implements IDriveContentsProcessor {
176
176
  }
177
177
 
178
178
  async mknod(request: TDriveRequest<'mknod'>): Promise<TDriveResponse<'mknod'>> {
179
- const model = await this.contentsManager.newUntitled({
180
- path: PathExt.dirname(request.path),
181
- type: request.data.mode === DIR_MODE ? 'directory' : 'file',
182
- ext: PathExt.extname(request.path),
183
- });
184
- await this.contentsManager.rename(model.path, request.path);
179
+ // Contents API does not permit creating folders with given name. We can only create untitled folder then rename.
180
+ if (isDirMode(request.data.mode)) {
181
+ const model = await this.contentsManager.newUntitled({
182
+ path: PathExt.dirname(request.path),
183
+ type: 'directory',
184
+ ext: PathExt.extname(request.path),
185
+ });
186
+ await this.contentsManager.rename(model.path, request.path);
187
+ return null;
188
+ }
189
+
190
+ await this.contentsManager.save(request.path, { type: 'file' });
185
191
  return null;
186
192
  }
187
193
 
@@ -13,13 +13,27 @@
13
13
  * Ideally, much more of these would be taken from `@types/emscripten`.
14
14
  */
15
15
 
16
- type EmscriptenFS = typeof FS;
16
+ type EmscriptenFS = typeof globalThis extends { FS: infer T } ? T : Record<string, any>;
17
+
18
+ // Those constants are standard that is very unlikely to change
19
+ // https://github.com/bminor/glibc/blob/04e750e75b73957cf1c791535a3f4319534a52fc/bits/stat.h#L66
20
+ const S_IFMT = 0o170000;
21
+ const S_IFDIR = 0o040000;
22
+ const S_IFREG = 0o100000;
17
23
 
18
24
  export const DIR_MODE = 16895; // 040777
19
25
  export const FILE_MODE = 33206; // 100666
20
26
  export const SEEK_CUR = 1;
21
27
  export const SEEK_END = 2;
22
28
 
29
+ export function isDirMode(mode: number): boolean {
30
+ return (mode & S_IFMT) === S_IFDIR;
31
+ }
32
+
33
+ export function isFileMode(mode: number): boolean {
34
+ return (mode & S_IFMT) === S_IFREG;
35
+ }
36
+
23
37
  export interface IStats {
24
38
  dev: number;
25
39
  ino?: number;