@jupyterlite/services 0.1.0 → 0.7.0-rc.1

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 +278 -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 +115 -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 +40 -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 +67 -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 +86 -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 +92 -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 +1032 -0
  66. package/src/contents/drivecontents.ts +254 -0
  67. package/src/contents/drivefs.ts +821 -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 +638 -0
  73. package/src/kernel/client.ts +483 -0
  74. package/src/kernel/index.ts +8 -0
  75. package/src/kernel/kernelspecclient.ts +65 -0
  76. package/src/kernel/kernelspecs.ts +105 -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 +106 -0
  81. package/src/nbconvert/tokens.ts +60 -0
  82. package/src/session/client.ts +252 -0
  83. package/src/session/index.ts +4 -0
  84. package/src/settings/index.ts +4 -0
  85. package/src/settings/settings.ts +237 -0
  86. package/style/index.css +6 -0
  87. package/style/index.js +6 -0
@@ -0,0 +1,375 @@
1
+ import { PageConfig, URLExt } from '@jupyterlab/coreutils';
2
+ import { ObservableMap } from '@jupyterlab/observables';
3
+ import { KernelAPI, KernelMessage, ServerConnection } from '@jupyterlab/services';
4
+ import { deserialize, serialize } from '@jupyterlab/services/lib/kernel/serialize';
5
+ import { supportedKernelWebSocketProtocols } from '@jupyterlab/services/lib/kernel/messages';
6
+ import { PromiseDelegate, UUID } from '@lumino/coreutils';
7
+ import { Signal } from '@lumino/signaling';
8
+ import { Mutex } from 'async-mutex';
9
+ import { Server as WebSocketServer } from 'mock-socket';
10
+ import { FALLBACK_KERNEL } from './tokens';
11
+ /**
12
+ * Use the default kernel wire protocol.
13
+ */
14
+ const KERNEL_WEBSOCKET_PROTOCOL = supportedKernelWebSocketProtocols.v1KernelWebsocketJupyterOrg;
15
+ /**
16
+ * A class to handle requests to /api/kernels
17
+ */
18
+ export class LiteKernelClient {
19
+ /**
20
+ * Construct a new Kernels
21
+ *
22
+ * @param options The instantiation options
23
+ */
24
+ constructor(options) {
25
+ var _a;
26
+ this._kernels = new ObservableMap();
27
+ this._clients = new ObservableMap();
28
+ this._mutexMap = new Map();
29
+ this._kernelClients = new ObservableMap();
30
+ this._changed = new Signal(this);
31
+ this._kernelSends = new ObservableMap();
32
+ this._cancelReason = new WeakMap();
33
+ const { kernelSpecs } = options;
34
+ this._kernelspecs = kernelSpecs;
35
+ this._serverSettings = (_a = options.serverSettings) !== null && _a !== void 0 ? _a : ServerConnection.makeSettings();
36
+ // Forward the changed signal from _kernels
37
+ this._kernels.changed.connect((_, args) => {
38
+ this._changed.emit(args);
39
+ });
40
+ }
41
+ /**
42
+ * The server settings for the kernel client.
43
+ */
44
+ get serverSettings() {
45
+ return this._serverSettings;
46
+ }
47
+ /**
48
+ * Signal emitted when the kernels map changes
49
+ */
50
+ get changed() {
51
+ return this._changed;
52
+ }
53
+ /**
54
+ * Start a new kernel.
55
+ *
56
+ * @param options The kernel start options.
57
+ */
58
+ async startNew(options) {
59
+ const { id, name, location } = options;
60
+ const kernelName = name !== null && name !== void 0 ? name : FALLBACK_KERNEL;
61
+ const factory = this._kernelspecs.factories.get(kernelName);
62
+ // bail if there is no factory associated with the requested kernel
63
+ if (!factory) {
64
+ throw Error(`No factory for kernel ${kernelName}`);
65
+ }
66
+ // create a synchronization mechanism to allow only one message
67
+ // to be processed at a time
68
+ const mutex = new Mutex();
69
+ // hook a new client to a kernel
70
+ const hook = (kernelId, clientId, socket) => {
71
+ var _a;
72
+ const kernel = this._kernels.get(kernelId);
73
+ if (!kernel) {
74
+ throw Error(`No kernel ${kernelId}`);
75
+ }
76
+ this._clients.set(clientId, socket);
77
+ this._mutexMap.set(kernelId, mutex);
78
+ (_a = this._kernelClients.get(kernelId)) === null || _a === void 0 ? void 0 : _a.add(clientId);
79
+ const processMsg = async (msg) => {
80
+ try {
81
+ await mutex.runExclusive(async () => {
82
+ await kernel.ready;
83
+ await kernel.handleMessage(msg);
84
+ });
85
+ }
86
+ catch (error) {
87
+ if (error instanceof Error &&
88
+ error.message.includes('request for lock canceled')) {
89
+ // expected to throw when mutex.cancel() is called below on cell execution error or on interrupt
90
+ const cancelReason = this._cancelReason.get(mutex);
91
+ if ((cancelReason === 'interrupt' ||
92
+ cancelReason === 'interrupt-subsequent') &&
93
+ msg.header.msg_type === 'execute_request') {
94
+ if (cancelReason === 'interrupt') {
95
+ // Change cancel reason so that only one cell includes the error.
96
+ // Needs to go before await for mutex.
97
+ this._cancelReason.set(mutex, 'interrupt-subsequent');
98
+ }
99
+ await mutex.waitForUnlock();
100
+ // Send interrupt error to all clients
101
+ const content = {
102
+ status: 'error',
103
+ ename: 'Kernel Interrupt',
104
+ evalue: 'Interrupted',
105
+ traceback: [],
106
+ };
107
+ const sendMessage = this._kernelSends.get(kernelId);
108
+ if (sendMessage === undefined) {
109
+ console.warn('Did not find kernel send method');
110
+ return;
111
+ }
112
+ if (cancelReason === 'interrupt') {
113
+ sendMessage(KernelMessage.createMessage({
114
+ channel: 'iopub',
115
+ session: clientId,
116
+ parentHeader: msg.header,
117
+ msgType: 'error',
118
+ content,
119
+ }));
120
+ }
121
+ sendMessage(KernelMessage.createMessage({
122
+ channel: 'shell',
123
+ session: clientId,
124
+ parentHeader: msg.header,
125
+ msgType: 'execute_reply',
126
+ content: {
127
+ ...content,
128
+ execution_count: 0,
129
+ },
130
+ metadata: {
131
+ cause: 'interrupt',
132
+ },
133
+ }));
134
+ sendMessage(KernelMessage.createMessage({
135
+ channel: 'iopub',
136
+ session: clientId,
137
+ parentHeader: msg.header,
138
+ msgType: 'status',
139
+ content: {
140
+ execution_state: 'idle',
141
+ },
142
+ }));
143
+ }
144
+ }
145
+ else {
146
+ throw error;
147
+ }
148
+ }
149
+ };
150
+ socket.on('message', async (message) => {
151
+ let msg;
152
+ if (message instanceof ArrayBuffer) {
153
+ message = new Uint8Array(message).buffer;
154
+ msg = deserialize(message, KERNEL_WEBSOCKET_PROTOCOL);
155
+ }
156
+ else if (typeof message === 'string') {
157
+ const encoder = new TextEncoder();
158
+ const encodedData = encoder.encode(message);
159
+ msg = deserialize(encodedData.buffer, KERNEL_WEBSOCKET_PROTOCOL);
160
+ }
161
+ else {
162
+ return;
163
+ }
164
+ if (msg.header.msg_type === 'input_reply') {
165
+ if (this._stdinPromise !== undefined) {
166
+ // Stdin handled by Service Worker.
167
+ this._stdinPromise.resolve(msg);
168
+ }
169
+ else {
170
+ // Stdin handled by SharedArrayBuffer which is like conventional message
171
+ // passing to kernel except we cannot use processMsg as the mutex is
172
+ // already held.
173
+ void kernel.handleMessage(msg);
174
+ }
175
+ }
176
+ else {
177
+ void processMsg(msg);
178
+ }
179
+ });
180
+ const removeClient = () => {
181
+ var _a;
182
+ this._clients.delete(clientId);
183
+ (_a = this._kernelClients.get(kernelId)) === null || _a === void 0 ? void 0 : _a.delete(clientId);
184
+ };
185
+ kernel.disposed.connect(removeClient);
186
+ socket.onclose = removeClient;
187
+ };
188
+ // ensure kernel id
189
+ const kernelId = id !== null && id !== void 0 ? id : UUID.uuid4();
190
+ // There is one server per kernel which handles multiple clients
191
+ const kernelUrl = URLExt.join(LiteKernelClient.WS_BASE_URL, KernelAPI.KERNEL_SERVICE_URL, encodeURIComponent(kernelId), 'channels');
192
+ const runningKernel = this._kernels.get(kernelId);
193
+ if (runningKernel) {
194
+ return {
195
+ id: runningKernel.id,
196
+ name: runningKernel.name,
197
+ };
198
+ }
199
+ // start the kernel
200
+ const sendMessage = (msg) => {
201
+ const clientId = msg.channel === 'stdin' ? msg.parent_header.session : msg.header.session;
202
+ const socket = this._clients.get(clientId);
203
+ if (!socket) {
204
+ console.warn(`Trying to send message on removed socket for kernel ${kernelId}`);
205
+ return;
206
+ }
207
+ const message = serialize(msg, KERNEL_WEBSOCKET_PROTOCOL);
208
+ // process iopub messages
209
+ if (msg.channel === 'iopub') {
210
+ const clients = this._kernelClients.get(kernelId);
211
+ clients === null || clients === void 0 ? void 0 : clients.forEach((id) => {
212
+ var _a;
213
+ (_a = this._clients.get(id)) === null || _a === void 0 ? void 0 : _a.send(message);
214
+ });
215
+ return;
216
+ }
217
+ // cancel the execution of other cells if there is an execute error
218
+ // to match the JupyterLab behavior
219
+ if (msg.header.msg_type === 'execute_reply') {
220
+ const executeReplyMsg = msg;
221
+ if (executeReplyMsg.content.status === 'error' &&
222
+ executeReplyMsg.metadata.cause !== 'interrupt') {
223
+ this._cancelReason.set(mutex, 'error');
224
+ mutex.cancel();
225
+ }
226
+ }
227
+ socket.send(message);
228
+ };
229
+ const kernel = await factory({
230
+ id: kernelId,
231
+ sendMessage,
232
+ name: kernelName,
233
+ location: location !== null && location !== void 0 ? location : '',
234
+ });
235
+ this._kernels.set(kernelId, kernel);
236
+ this._kernelClients.set(kernelId, new Set());
237
+ this._kernelSends.set(kernelId, sendMessage);
238
+ // create the websocket server for the kernel
239
+ const wsServer = new WebSocketServer(kernelUrl, {
240
+ mock: false,
241
+ selectProtocol: () => KERNEL_WEBSOCKET_PROTOCOL,
242
+ });
243
+ wsServer.on('connection', (socket) => {
244
+ var _a;
245
+ const url = new URL(socket.url);
246
+ const clientId = (_a = url.searchParams.get('session_id')) !== null && _a !== void 0 ? _a : '';
247
+ hook(kernelId, clientId, socket);
248
+ });
249
+ // clean up closed connection
250
+ wsServer.on('close', () => {
251
+ this._clients.keys().forEach((clientId) => {
252
+ var _a;
253
+ const socket = this._clients.get(clientId);
254
+ if ((socket === null || socket === void 0 ? void 0 : socket.readyState) === WebSocket.CLOSED) {
255
+ this._clients.delete(clientId);
256
+ (_a = this._kernelClients.get(kernelId)) === null || _a === void 0 ? void 0 : _a.delete(clientId);
257
+ }
258
+ });
259
+ });
260
+ // cleanup on kernel shutdown
261
+ kernel.disposed.connect(() => {
262
+ wsServer.close();
263
+ this._kernels.delete(kernelId);
264
+ this._kernelClients.delete(kernelId);
265
+ this._mutexMap.delete(kernelId);
266
+ this._kernelSends.delete(kernelId);
267
+ });
268
+ return {
269
+ id: kernel.id,
270
+ name: kernel.name,
271
+ };
272
+ }
273
+ /**
274
+ * Restart a kernel.
275
+ *
276
+ * @param kernelId The kernel id.
277
+ */
278
+ async restart(kernelId) {
279
+ const kernel = this._kernels.get(kernelId);
280
+ if (!kernel) {
281
+ throw Error(`Kernel ${kernelId} does not exist`);
282
+ }
283
+ const { id, name, location } = kernel;
284
+ kernel.dispose();
285
+ await this.startNew({ id, name, location });
286
+ }
287
+ /**
288
+ * Interrupt a kernel.
289
+ */
290
+ async interrupt(kernelId) {
291
+ const kernel = this._kernels.get(kernelId);
292
+ if (!kernel) {
293
+ throw Error(`Kernel ${kernelId} does not exist`);
294
+ }
295
+ // Wait for kernel to be ready
296
+ await kernel.ready;
297
+ // Cancel execution of following cells
298
+ const mutex = this._mutexMap.get(kernelId);
299
+ if (!mutex) {
300
+ console.warn('No mutex to cancel');
301
+ return;
302
+ }
303
+ this._cancelReason.set(mutex, 'interrupt');
304
+ mutex.cancel();
305
+ }
306
+ /**
307
+ * List the running kernels.
308
+ */
309
+ async listRunning() {
310
+ return [...this._kernels.values()].map((kernel) => ({
311
+ id: kernel.id,
312
+ name: kernel.name,
313
+ }));
314
+ }
315
+ /**
316
+ * Shut down a kernel.
317
+ *
318
+ * @param id The kernel id.
319
+ */
320
+ async shutdown(id) {
321
+ var _a;
322
+ (_a = this._kernels.delete(id)) === null || _a === void 0 ? void 0 : _a.dispose();
323
+ this._kernelClients.delete(id);
324
+ this._kernelSends.delete(id);
325
+ }
326
+ /**
327
+ * Shut down all kernels.
328
+ */
329
+ async shutdownAll() {
330
+ this._kernels.keys().forEach((id) => {
331
+ this.shutdown(id);
332
+ });
333
+ }
334
+ /**
335
+ * Get a kernel by id
336
+ */
337
+ async getModel(id) {
338
+ return this._kernels.get(id);
339
+ }
340
+ /**
341
+ * Handle stdin request received from Service Worker.
342
+ */
343
+ async handleStdin(inputRequest) {
344
+ this._stdinPromise = new PromiseDelegate();
345
+ const clientId = inputRequest.parent_header.session;
346
+ const kernelId = this._getClientKernel(clientId);
347
+ if (kernelId !== undefined) {
348
+ const sendMessage = this._kernelSends.get(kernelId);
349
+ if (sendMessage !== undefined) {
350
+ sendMessage(inputRequest);
351
+ }
352
+ }
353
+ // Promise is resolved by input reply message.
354
+ return this._stdinPromise.promise;
355
+ }
356
+ /**
357
+ * Get a kernel id corresponding to a client id.
358
+ */
359
+ _getClientKernel(clientId) {
360
+ // Walk the _kernelClients to find a match.
361
+ return this._kernelClients
362
+ .keys()
363
+ .find((kernelId) => this._kernelClients.get(kernelId).has(clientId));
364
+ }
365
+ }
366
+ /**
367
+ * A namespace for Kernels statics.
368
+ */
369
+ (function (LiteKernelClient) {
370
+ /**
371
+ * The base url for the Kernels manager
372
+ */
373
+ LiteKernelClient.WS_BASE_URL = PageConfig.getBaseUrl().replace(/^http/, 'ws');
374
+ })(LiteKernelClient || (LiteKernelClient = {}));
375
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/kernel/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './base';
2
+ export * from './kernelspecs';
3
+ export * from './kernelspecclient';
4
+ export * from './client';
5
+ export * from './tokens';
@@ -0,0 +1,8 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+ export * from './base';
4
+ export * from './kernelspecs';
5
+ export * from './kernelspecclient';
6
+ export * from './client';
7
+ export * from './tokens';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/kernel/index.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAE3D,cAAc,QAAQ,CAAC;AACvB,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC;AACnC,cAAc,UAAU,CAAC;AACzB,cAAc,UAAU,CAAC"}
@@ -0,0 +1,40 @@
1
+ import type { KernelSpec } from '@jupyterlab/services';
2
+ import { ServerConnection } from '@jupyterlab/services';
3
+ import type { IKernelSpecs } from './tokens';
4
+ /**
5
+ * An in-browser client for the kernel spec API.
6
+ */
7
+ export declare class LiteKernelSpecClient implements KernelSpec.IKernelSpecAPIClient {
8
+ /**
9
+ * Construct a new kernel spec client.
10
+ */
11
+ constructor(options: LiteKernelSpecClient.IOptions);
12
+ /**
13
+ * The server settings used by the client.
14
+ */
15
+ get serverSettings(): ServerConnection.ISettings;
16
+ /**
17
+ * Get the kernel specs.
18
+ */
19
+ get(): Promise<KernelSpec.ISpecModels>;
20
+ private _kernelspecs;
21
+ private _serverSettings;
22
+ }
23
+ /**
24
+ * A namespace for LiteKernelSpecClient statics.
25
+ */
26
+ export declare namespace LiteKernelSpecClient {
27
+ /**
28
+ * The options used to create a kernel spec client.
29
+ */
30
+ interface IOptions {
31
+ /**
32
+ * The in-browser kernel specs.
33
+ */
34
+ kernelSpecs: IKernelSpecs;
35
+ /**
36
+ * The server settings used by the client.
37
+ */
38
+ serverSettings?: ServerConnection.ISettings;
39
+ }
40
+ }
@@ -0,0 +1,37 @@
1
+ // Copyright (c) Jupyter Development Team.
2
+ // Distributed under the terms of the Modified BSD License.
3
+ import { ServerConnection } from '@jupyterlab/services';
4
+ /**
5
+ * Placeholder for the kernel specs.
6
+ */
7
+ const EMPTY_KERNELSPECS = {
8
+ default: '',
9
+ kernelspecs: {},
10
+ };
11
+ /**
12
+ * An in-browser client for the kernel spec API.
13
+ */
14
+ export class LiteKernelSpecClient {
15
+ /**
16
+ * Construct a new kernel spec client.
17
+ */
18
+ constructor(options) {
19
+ var _a;
20
+ this._kernelspecs = options.kernelSpecs;
21
+ this._serverSettings = (_a = options.serverSettings) !== null && _a !== void 0 ? _a : ServerConnection.makeSettings();
22
+ }
23
+ /**
24
+ * The server settings used by the client.
25
+ */
26
+ get serverSettings() {
27
+ return this._serverSettings;
28
+ }
29
+ /**
30
+ * Get the kernel specs.
31
+ */
32
+ async get() {
33
+ var _a;
34
+ return Promise.resolve((_a = this._kernelspecs.specs) !== null && _a !== void 0 ? _a : EMPTY_KERNELSPECS);
35
+ }
36
+ }
37
+ //# sourceMappingURL=kernelspecclient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernelspecclient.js","sourceRoot":"","sources":["../../src/kernel/kernelspecclient.ts"],"names":[],"mappings":"AAAA,0CAA0C;AAC1C,2DAA2D;AAG3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAIxD;;GAEG;AACH,MAAM,iBAAiB,GAA2B;IAChD,OAAO,EAAE,EAAE;IACX,WAAW,EAAE,EAAE;CAChB,CAAC;AAEF;;GAEG;AACH,MAAM,OAAO,oBAAoB;IAC/B;;OAEG;IACH,YAAY,OAAsC;;QAChD,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,WAAW,CAAC;QACxC,IAAI,CAAC,eAAe,GAAG,MAAA,OAAO,CAAC,cAAc,mCAAI,gBAAgB,CAAC,YAAY,EAAE,CAAC;IACnF,CAAC;IAED;;OAEG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC;IAC9B,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,GAAG;;QACP,OAAO,OAAO,CAAC,OAAO,CAAC,MAAA,IAAI,CAAC,YAAY,CAAC,KAAK,mCAAI,iBAAiB,CAAC,CAAC;IACvE,CAAC;CAIF"}
@@ -0,0 +1,59 @@
1
+ import type { KernelSpec } from '@jupyterlab/services';
2
+ import type { ISignal } from '@lumino/signaling';
3
+ import type { IKernel, IKernelSpecs } from './tokens';
4
+ /**
5
+ * A class to register in-browser kernel specs.
6
+ */
7
+ export declare class KernelSpecs implements IKernelSpecs {
8
+ /**
9
+ * Get the kernel specs.
10
+ */
11
+ get specs(): KernelSpec.ISpecModels | null;
12
+ /**
13
+ * Get the default kernel name.
14
+ */
15
+ get defaultKernelName(): string;
16
+ /**
17
+ * Get the kernel factories for the current kernels.
18
+ */
19
+ get factories(): KernelSpecs.KernelFactories;
20
+ /**
21
+ * Signal emitted when the specs change.
22
+ */
23
+ get changed(): ISignal<IKernelSpecs, KernelSpec.ISpecModels | null>;
24
+ /**
25
+ * Register a new kernel.
26
+ *
27
+ * @param options The options to register a new kernel.
28
+ */
29
+ register(options: KernelSpecs.IKernelOptions): void;
30
+ private _specs;
31
+ private _factories;
32
+ private _changed;
33
+ }
34
+ /**
35
+ * A namespace for KernelSpecs statics.
36
+ */
37
+ export declare namespace KernelSpecs {
38
+ /**
39
+ * Registration options for a new kernel.
40
+ */
41
+ interface IKernelOptions {
42
+ /**
43
+ * The kernel spec.
44
+ */
45
+ spec: KernelSpec.ISpecModel;
46
+ /**
47
+ * The factory function to instantiate a new kernel.
48
+ */
49
+ create: KernelFactory;
50
+ }
51
+ /**
52
+ * The type for a kernel factory function used to instantiate new kernels.
53
+ */
54
+ type KernelFactory = (options: IKernel.IOptions) => Promise<IKernel>;
55
+ /**
56
+ * The type for the record of kernel factory functions.
57
+ */
58
+ type KernelFactories = Map<string, KernelFactory>;
59
+ }
@@ -0,0 +1,62 @@
1
+ import { PageConfig } from '@jupyterlab/coreutils';
2
+ import { Signal } from '@lumino/signaling';
3
+ import { FALLBACK_KERNEL } from './tokens';
4
+ /**
5
+ * A class to register in-browser kernel specs.
6
+ */
7
+ export class KernelSpecs {
8
+ constructor() {
9
+ this._specs = new Map();
10
+ this._factories = new Map();
11
+ this._changed = new Signal(this);
12
+ }
13
+ /**
14
+ * Get the kernel specs.
15
+ */
16
+ get specs() {
17
+ if (this._specs.size === 0) {
18
+ return null;
19
+ }
20
+ return {
21
+ default: this.defaultKernelName,
22
+ kernelspecs: Object.fromEntries(this._specs),
23
+ };
24
+ }
25
+ /**
26
+ * Get the default kernel name.
27
+ */
28
+ get defaultKernelName() {
29
+ let defaultKernelName = PageConfig.getOption('defaultKernelName');
30
+ if (!defaultKernelName && this._specs.size) {
31
+ const keys = Array.from(this._specs.keys());
32
+ keys.sort();
33
+ defaultKernelName = keys[0];
34
+ }
35
+ return defaultKernelName || FALLBACK_KERNEL;
36
+ }
37
+ /**
38
+ * Get the kernel factories for the current kernels.
39
+ */
40
+ get factories() {
41
+ return this._factories;
42
+ }
43
+ /**
44
+ * Signal emitted when the specs change.
45
+ */
46
+ get changed() {
47
+ return this._changed;
48
+ }
49
+ /**
50
+ * Register a new kernel.
51
+ *
52
+ * @param options The options to register a new kernel.
53
+ */
54
+ register(options) {
55
+ const { spec, create } = options;
56
+ this._specs.set(spec.name, spec);
57
+ this._factories.set(spec.name, create);
58
+ // notify a new spec has been added
59
+ this._changed.emit(this.specs);
60
+ }
61
+ }
62
+ //# sourceMappingURL=kernelspecs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"kernelspecs.js","sourceRoot":"","sources":["../../src/kernel/kernelspecs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAKnD,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAG3C,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C;;GAEG;AACH,MAAM,OAAO,WAAW;IAAxB;QA0DU,WAAM,GAAG,IAAI,GAAG,EAAiC,CAAC;QAClD,eAAU,GAAG,IAAI,GAAG,EAAqC,CAAC;QAC1D,aAAQ,GAAG,IAAI,MAAM,CAAsC,IAAI,CAAC,CAAC;IAC3E,CAAC;IA5DC;;OAEG;IACH,IAAI,KAAK;QACP,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,iBAAiB;YAC/B,WAAW,EAAE,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC;SAC7C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,iBAAiB;QACnB,IAAI,iBAAiB,GAAG,UAAU,CAAC,SAAS,CAAC,mBAAmB,CAAC,CAAC;QAElE,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YAC3C,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;YAC5C,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,iBAAiB,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAC9B,CAAC;QAED,OAAO,iBAAiB,IAAI,eAAe,CAAC;IAC9C,CAAC;IAED;;OAEG;IACH,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,UAAU,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,IAAI,OAAO;QACT,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;OAIG;IACH,QAAQ,CAAC,OAAmC;QAC1C,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QACjC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;QACjC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAEvC,mCAAmC;QACnC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACjC,CAAC;CAKF"}