@jupyterlite/session 0.4.5 → 0.5.0-alpha.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.
- package/lib/sessions.d.ts +2 -1
- package/lib/sessions.js +39 -8
- package/lib/sessions.js.map +1 -1
- package/package.json +5 -5
- package/src/sessions.ts +38 -8
package/lib/sessions.d.ts
CHANGED
|
@@ -22,7 +22,7 @@ export declare class Sessions implements ISessions {
|
|
|
22
22
|
*/
|
|
23
23
|
list(): Promise<Session.IModel[]>;
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
25
|
+
* Patch an existing session.
|
|
26
26
|
* This can be used to rename a session.
|
|
27
27
|
*
|
|
28
28
|
* - path updates session to track renamed paths
|
|
@@ -50,6 +50,7 @@ export declare class Sessions implements ISessions {
|
|
|
50
50
|
private _handleKernelShutdown;
|
|
51
51
|
private _kernels;
|
|
52
52
|
private _sessions;
|
|
53
|
+
private _pendingRestarts;
|
|
53
54
|
}
|
|
54
55
|
/**
|
|
55
56
|
* A namespace for sessions statics.
|
package/lib/sessions.js
CHANGED
|
@@ -11,9 +11,45 @@ export class Sessions {
|
|
|
11
11
|
* @param options The instantiation options for a Sessions.
|
|
12
12
|
*/
|
|
13
13
|
constructor(options) {
|
|
14
|
-
// TODO: offload to a database
|
|
15
14
|
this._sessions = [];
|
|
15
|
+
this._pendingRestarts = new Set();
|
|
16
16
|
this._kernels = options.kernels;
|
|
17
|
+
// Listen for kernel removals
|
|
18
|
+
this._kernels.changed.connect((_, args) => {
|
|
19
|
+
var _a, _b;
|
|
20
|
+
switch (args.type) {
|
|
21
|
+
case 'remove': {
|
|
22
|
+
const kernelId = (_a = args.oldValue) === null || _a === void 0 ? void 0 : _a.id;
|
|
23
|
+
if (!kernelId) {
|
|
24
|
+
return;
|
|
25
|
+
}
|
|
26
|
+
// find the session associated with the kernel
|
|
27
|
+
const session = this._sessions.find((s) => { var _a; return ((_a = s.kernel) === null || _a === void 0 ? void 0 : _a.id) === kernelId; });
|
|
28
|
+
if (!session) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
// Track the kernel ID for restart detection
|
|
32
|
+
this._pendingRestarts.add(kernelId);
|
|
33
|
+
setTimeout(async () => {
|
|
34
|
+
// If after a short delay the kernel hasn't been re-added, it was terminated
|
|
35
|
+
if (this._pendingRestarts.has(kernelId)) {
|
|
36
|
+
this._pendingRestarts.delete(kernelId);
|
|
37
|
+
await this.shutdown(session.id);
|
|
38
|
+
}
|
|
39
|
+
}, 100);
|
|
40
|
+
break;
|
|
41
|
+
}
|
|
42
|
+
case 'add': {
|
|
43
|
+
// If this was a restart, remove it from pending
|
|
44
|
+
const kernelId = (_b = args.newValue) === null || _b === void 0 ? void 0 : _b.id;
|
|
45
|
+
if (!kernelId) {
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
this._pendingRestarts.delete(kernelId);
|
|
49
|
+
break;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
});
|
|
17
53
|
}
|
|
18
54
|
/**
|
|
19
55
|
* Get a session by id.
|
|
@@ -34,7 +70,7 @@ export class Sessions {
|
|
|
34
70
|
return this._sessions;
|
|
35
71
|
}
|
|
36
72
|
/**
|
|
37
|
-
*
|
|
73
|
+
* Patch an existing session.
|
|
38
74
|
* This can be used to rename a session.
|
|
39
75
|
*
|
|
40
76
|
* - path updates session to track renamed paths
|
|
@@ -143,12 +179,7 @@ export class Sessions {
|
|
|
143
179
|
* Handle kernel shutdown
|
|
144
180
|
*/
|
|
145
181
|
async _handleKernelShutdown({ kernelId, sessionId, }) {
|
|
146
|
-
|
|
147
|
-
if (runningKernel) {
|
|
148
|
-
runningKernel.disposed.connect(() => {
|
|
149
|
-
this.shutdown(sessionId);
|
|
150
|
-
});
|
|
151
|
-
}
|
|
182
|
+
// No need to handle kernel shutdown here anymore since we're using the changed signal
|
|
152
183
|
}
|
|
153
184
|
}
|
|
154
185
|
//# sourceMappingURL=sessions.js.map
|
package/lib/sessions.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAIhD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE7C,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAIzC;;GAEG;AACH,MAAM,OAAO,QAAQ;IACnB;;;;OAIG;IACH,YAAY,OAA0B;
|
|
1
|
+
{"version":3,"file":"sessions.js","sourceRoot":"","sources":["../src/sessions.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jupyterlite/session",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0-alpha.1",
|
|
4
4
|
"description": "JupyterLite - Session",
|
|
5
5
|
"homepage": "https://github.com/jupyterlite/jupyterlite",
|
|
6
6
|
"bugs": {
|
|
@@ -43,16 +43,16 @@
|
|
|
43
43
|
"watch": "tsc -b --watch"
|
|
44
44
|
},
|
|
45
45
|
"dependencies": {
|
|
46
|
-
"@jupyterlab/coreutils": "~6.
|
|
47
|
-
"@jupyterlab/services": "~7.
|
|
48
|
-
"@jupyterlite/kernel": "^0.
|
|
46
|
+
"@jupyterlab/coreutils": "~6.3.3",
|
|
47
|
+
"@jupyterlab/services": "~7.3.3",
|
|
48
|
+
"@jupyterlite/kernel": "^0.5.0-alpha.1",
|
|
49
49
|
"@lumino/algorithm": "^2.0.2",
|
|
50
50
|
"@lumino/coreutils": "^2.2.0"
|
|
51
51
|
},
|
|
52
52
|
"devDependencies": {
|
|
53
53
|
"@babel/core": "^7.11.6",
|
|
54
54
|
"@babel/preset-env": "^7.12.1",
|
|
55
|
-
"@jupyterlab/testutils": "~4.
|
|
55
|
+
"@jupyterlab/testutils": "~4.3.3",
|
|
56
56
|
"@types/jest": "^29.5.3",
|
|
57
57
|
"jest": "^29.6.2",
|
|
58
58
|
"rimraf": "~5.0.1",
|
package/src/sessions.ts
CHANGED
|
@@ -21,6 +21,41 @@ export class Sessions implements ISessions {
|
|
|
21
21
|
*/
|
|
22
22
|
constructor(options: Sessions.IOptions) {
|
|
23
23
|
this._kernels = options.kernels;
|
|
24
|
+
// Listen for kernel removals
|
|
25
|
+
this._kernels.changed.connect((_, args) => {
|
|
26
|
+
switch (args.type) {
|
|
27
|
+
case 'remove': {
|
|
28
|
+
const kernelId = args.oldValue?.id;
|
|
29
|
+
if (!kernelId) {
|
|
30
|
+
return;
|
|
31
|
+
}
|
|
32
|
+
// find the session associated with the kernel
|
|
33
|
+
const session = this._sessions.find((s) => s.kernel?.id === kernelId);
|
|
34
|
+
if (!session) {
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
// Track the kernel ID for restart detection
|
|
38
|
+
this._pendingRestarts.add(kernelId);
|
|
39
|
+
setTimeout(async () => {
|
|
40
|
+
// If after a short delay the kernel hasn't been re-added, it was terminated
|
|
41
|
+
if (this._pendingRestarts.has(kernelId)) {
|
|
42
|
+
this._pendingRestarts.delete(kernelId);
|
|
43
|
+
await this.shutdown(session.id);
|
|
44
|
+
}
|
|
45
|
+
}, 100);
|
|
46
|
+
break;
|
|
47
|
+
}
|
|
48
|
+
case 'add': {
|
|
49
|
+
// If this was a restart, remove it from pending
|
|
50
|
+
const kernelId = args.newValue?.id;
|
|
51
|
+
if (!kernelId) {
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
this._pendingRestarts.delete(kernelId);
|
|
55
|
+
break;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
});
|
|
24
59
|
}
|
|
25
60
|
|
|
26
61
|
/**
|
|
@@ -44,7 +79,7 @@ export class Sessions implements ISessions {
|
|
|
44
79
|
}
|
|
45
80
|
|
|
46
81
|
/**
|
|
47
|
-
*
|
|
82
|
+
* Patch an existing session.
|
|
48
83
|
* This can be used to rename a session.
|
|
49
84
|
*
|
|
50
85
|
* - path updates session to track renamed paths
|
|
@@ -167,17 +202,12 @@ export class Sessions implements ISessions {
|
|
|
167
202
|
kernelId: string;
|
|
168
203
|
sessionId: string;
|
|
169
204
|
}): Promise<void> {
|
|
170
|
-
|
|
171
|
-
if (runningKernel) {
|
|
172
|
-
runningKernel.disposed.connect(() => {
|
|
173
|
-
this.shutdown(sessionId);
|
|
174
|
-
});
|
|
175
|
-
}
|
|
205
|
+
// No need to handle kernel shutdown here anymore since we're using the changed signal
|
|
176
206
|
}
|
|
177
207
|
|
|
178
208
|
private _kernels: IKernels;
|
|
179
|
-
// TODO: offload to a database
|
|
180
209
|
private _sessions: Session.IModel[] = [];
|
|
210
|
+
private _pendingRestarts = new Set<string>();
|
|
181
211
|
}
|
|
182
212
|
|
|
183
213
|
/**
|