@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,148 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ // Types and implementation inspired from https://github.com/jvilk/BrowserFS
5
+ // LICENSE: https://github.com/jvilk/BrowserFS/blob/8977a704ea469d05daf857e4818bef1f4f498326/LICENSE
6
+ // And from https://github.com/gzuidhof/starboard-notebook
7
+
8
+ // LICENSE: https://github.com/gzuidhof/starboard-notebook/blob/cd8d3fc30af4bd29cdd8f6b8c207df8138f5d5dd/LICENSE
9
+
10
+ /**
11
+ * Types for Emscripten primitives.
12
+ *
13
+ * Ideally, much more of these would be taken from `@types/emscripten`.
14
+ */
15
+
16
+ type EmscriptenFS = typeof FS;
17
+
18
+ export const DIR_MODE = 16895; // 040777
19
+ export const FILE_MODE = 33206; // 100666
20
+ export const SEEK_CUR = 1;
21
+ export const SEEK_END = 2;
22
+
23
+ export interface IStats {
24
+ dev: number;
25
+ ino?: number;
26
+ mode?: number;
27
+ nlink: number;
28
+ uid: number;
29
+ gid: number;
30
+ rdev: number;
31
+ size: number;
32
+ blksize: number;
33
+ blocks: number;
34
+ atime: Date | string;
35
+ mtime: Date | string;
36
+ ctime: Date | string;
37
+ timestamp?: number;
38
+ }
39
+
40
+ export interface IEmscriptenFSNode {
41
+ id: number;
42
+ name: string;
43
+ mode: number;
44
+ parent: IEmscriptenFSNode;
45
+ mount: { opts: { root: string } };
46
+ stream_ops: IEmscriptenStreamOps;
47
+ node_ops: IEmscriptenNodeOps;
48
+ timestamp: number;
49
+ atime: number;
50
+ mtime: number;
51
+ ctime: number;
52
+ }
53
+
54
+ export interface IEmscriptenStream {
55
+ node: IEmscriptenFSNode;
56
+ nfd: any;
57
+ flags?: number;
58
+ position?: number;
59
+ shared: {
60
+ flags: number;
61
+ position: number;
62
+ };
63
+ }
64
+
65
+ export function instanceOfStream(
66
+ nodeOrStream: IEmscriptenFSNode | IEmscriptenStream,
67
+ ): nodeOrStream is IEmscriptenStream {
68
+ return 'node' in nodeOrStream;
69
+ }
70
+
71
+ export interface IEmscriptenNodeOps {
72
+ getattr(node: IEmscriptenFSNode | IEmscriptenStream): IStats;
73
+ setattr(node: IEmscriptenFSNode | IEmscriptenStream, attr: IStats): void;
74
+ lookup(
75
+ parent: IEmscriptenFSNode | IEmscriptenStream,
76
+ name: string,
77
+ ): IEmscriptenFSNode;
78
+ mknod(
79
+ parent: IEmscriptenFSNode | IEmscriptenStream,
80
+ name: string,
81
+ mode: number,
82
+ dev: number,
83
+ ): IEmscriptenFSNode;
84
+ rename(
85
+ oldNode: IEmscriptenFSNode | IEmscriptenStream,
86
+ newDir: IEmscriptenFSNode | IEmscriptenStream,
87
+ newName: string,
88
+ ): void;
89
+ unlink(parent: IEmscriptenFSNode | IEmscriptenStream, name: string): void;
90
+ rmdir(parent: IEmscriptenFSNode | IEmscriptenStream, name: string): void;
91
+ readdir(node: IEmscriptenFSNode | IEmscriptenStream): string[];
92
+ symlink(
93
+ parent: IEmscriptenFSNode | IEmscriptenStream,
94
+ newName: string,
95
+ oldPath: string,
96
+ ): void;
97
+ readlink(node: IEmscriptenFSNode | IEmscriptenStream): string;
98
+ }
99
+
100
+ export interface IEmscriptenStreamOps {
101
+ open(stream: IEmscriptenStream): void;
102
+ close(stream: IEmscriptenStream): void;
103
+ read(
104
+ stream: IEmscriptenStream,
105
+ buffer: Uint8Array,
106
+ offset: number,
107
+ length: number,
108
+ position: number,
109
+ ): number;
110
+ write(
111
+ stream: IEmscriptenStream,
112
+ buffer: Uint8Array,
113
+ offset: number,
114
+ length: number,
115
+ position: number,
116
+ ): number;
117
+ llseek(stream: IEmscriptenStream, offset: number, whence: number): number;
118
+ }
119
+
120
+ /**
121
+ * The emscripten filesystem module API.
122
+ */
123
+ export type FS = EmscriptenFS & {
124
+ ErrnoError: any;
125
+ createNode: (
126
+ parent: IEmscriptenFSNode | null,
127
+ name: string,
128
+ mode: number,
129
+ dev: number,
130
+ ) => IEmscriptenFSNode;
131
+ };
132
+
133
+ /**
134
+ * The emscripten filesystem error codes.
135
+ */
136
+ export type ERRNO_CODES = any;
137
+
138
+ /**
139
+ * The emscripten FS Path API.
140
+ */
141
+ export type PATH = {
142
+ basename: (path: string) => string;
143
+ dirname: (path: string) => string;
144
+ join: (...parts: string[]) => string;
145
+ join2: (l: string, r: string) => string;
146
+ normalize: (path: string) => string;
147
+ splitPath: (filename: string) => string;
148
+ };
@@ -0,0 +1,8 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ export * from './drive';
5
+ export * from './drivefs';
6
+ export * from './tokens';
7
+ export * from './emscripten';
8
+ export * from './drivecontents';
@@ -0,0 +1,61 @@
1
+ import { IRenderMime } from '@jupyterlab/rendermime-interfaces';
2
+ import { PageConfig } from '@jupyterlab/coreutils';
3
+ import mime from 'mime';
4
+
5
+ /**
6
+ * Commonly-used mimetypes
7
+ */
8
+ export namespace MIME {
9
+ export const JSON = 'application/json';
10
+ export const PLAIN_TEXT = 'text/plain';
11
+ export const OCTET_STREAM = 'octet/stream';
12
+ }
13
+
14
+ /**
15
+ * A namespace for file constructs.
16
+ */
17
+ export namespace FILE {
18
+ /**
19
+ * Build-time configured file types.
20
+ */
21
+ const TYPES: Record<string, Partial<IRenderMime.IFileType>> = JSON.parse(
22
+ PageConfig.getOption('fileTypes') || '{}',
23
+ );
24
+
25
+ /**
26
+ * Get a mimetype (or fallback).
27
+ */
28
+ export function getType(ext: string, defaultType: string | null = null): string {
29
+ ext = ext.toLowerCase();
30
+ for (const fileType of Object.values(TYPES)) {
31
+ for (const fileExt of fileType.extensions || []) {
32
+ if (fileExt === ext && fileType.mimeTypes && fileType.mimeTypes.length) {
33
+ return fileType.mimeTypes[0];
34
+ }
35
+ }
36
+ }
37
+
38
+ return mime.getType(ext) || defaultType || MIME.OCTET_STREAM;
39
+ }
40
+
41
+ /**
42
+ * Determine whether the given extension matches a given fileFormat.
43
+ */
44
+ export function hasFormat(
45
+ ext: string,
46
+ fileFormat: 'base64' | 'text' | 'json',
47
+ ): boolean {
48
+ ext = ext.toLowerCase();
49
+ for (const fileType of Object.values(TYPES)) {
50
+ if (fileType.fileFormat !== fileFormat) {
51
+ continue;
52
+ }
53
+ for (const fileExt of fileType.extensions || []) {
54
+ if (fileExt === ext) {
55
+ return true;
56
+ }
57
+ }
58
+ }
59
+ return false;
60
+ }
61
+ }
package/src/index.ts ADDED
@@ -0,0 +1,13 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+
4
+ /**
5
+ * @packageDocumentation
6
+ * @module @jupyterlite/services
7
+ */
8
+
9
+ export * from './contents';
10
+ export * from './kernel';
11
+ export * from './nbconvert';
12
+ export * from './session';
13
+ export * from './settings';