@jupyterlite/session 0.5.0-alpha.0 → 0.5.0-alpha.2

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 CHANGED
@@ -22,7 +22,7 @@ export declare class Sessions implements ISessions {
22
22
  */
23
23
  list(): Promise<Session.IModel[]>;
24
24
  /**
25
- * Path an existing session.
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
- * Path an existing session.
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
- const runningKernel = await this._kernels.get(kernelId);
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
@@ -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;QA6JtC,8BAA8B;QACtB,cAAS,GAAqB,EAAE,CAAC;QA7JvC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAClC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,GAAG,CAAC,EAAU;QAClB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;SACxC;QACD,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK,CAAC,OAAuB;QACjC,MAAM,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC;QAC3C,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QAC3D,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;SACxC;QACD,MAAM,OAAO,GAAG;YACd,GAAG,OAAO;YACV,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,OAAO,CAAC,IAAI;YAC1B,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,OAAO,CAAC,IAAI;SAC3B,CAAC;QAEF,IAAI,MAAM,EAAE;YACV,wCAAwC;YACxC,IAAI,MAAM,CAAC,EAAE,EAAE;gBACb,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CACjC,CAAC,OAAO,EAAE,EAAE,WAAC,OAAA,CAAA,MAAA,OAAO,CAAC,MAAM,0CAAE,EAAE,OAAK,MAAM,aAAN,MAAM,uBAAN,MAAM,CAAE,EAAE,CAAA,CAAA,EAAA,CAC/C,CAAC;gBACF,IAAI,OAAO,EAAE;oBACX,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;iBACjC;aACF;iBAAM,IAAI,MAAM,CAAC,IAAI,EAAE;gBACtB,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;oBAC7C,EAAE,EAAE,IAAI,CAAC,KAAK,EAAE;oBAChB,IAAI,EAAE,MAAM,CAAC,IAAI;oBACjB,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;iBACxC,CAAC,CAAC;gBAEH,IAAI,SAAS,EAAE;oBACb,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;iBAC5B;gBAED,0CAA0C;gBAC1C,KAAK,IAAI,CAAC,qBAAqB,CAAC;oBAC9B,QAAQ,EAAE,SAAS,CAAC,EAAE;oBACtB,SAAS,EAAE,OAAO,CAAC,EAAE;iBACtB,CAAC,CAAC;aACJ;SACF;QAED,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,GAAG,OAAO,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,QAAQ,CAAC,OAAuB;;QACpC,MAAM,EAAE,IAAI,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QAC5D,IAAI,OAAO,EAAE;YACX,OAAO,OAAO,CAAC;SAChB;QACD,MAAM,UAAU,GAAG,MAAA,MAAA,OAAO,CAAC,MAAM,0CAAE,IAAI,mCAAI,EAAE,CAAC;QAC9C,MAAM,EAAE,GAAG,MAAA,OAAO,CAAC,EAAE,mCAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACtC,MAAM,UAAU,GAAG,MAAA,OAAO,CAAC,IAAI,mCAAI,OAAO,CAAC,IAAI,CAAC;QAChD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC/E,MAAM,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;QAC1C,MAAM,SAAS,GAAG,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,kDAAkD;QAClD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC;QACnF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;YAC1C,EAAE;YACF,IAAI,EAAE,UAAU;YAChB,QAAQ;SACT,CAAC,CAAC;QACH,MAAM,OAAO,GAAmB;YAC9B,EAAE;YACF,IAAI;YACJ,IAAI,EAAE,IAAI,aAAJ,IAAI,cAAJ,IAAI,GAAI,IAAI;YAClB,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE;gBACN,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB;SACF,CAAC;QACF,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE7B,0CAA0C;QAC1C,KAAK,IAAI,CAAC,qBAAqB,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,CAAC;QAEzE,OAAO,OAAO,CAAC;IACjB,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,QAAQ,CAAC,EAAU;;QACvB,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,IAAI,CAAC,OAAO,EAAE;YACZ,MAAM,KAAK,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;SACxC;QACD,MAAM,QAAQ,GAAG,MAAA,OAAO,CAAC,MAAM,0CAAE,EAAE,CAAC;QACpC,IAAI,QAAQ,EAAE;YACZ,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;SACxC;QACD,QAAQ,CAAC,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAClD,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,qBAAqB,CAAC,EAClC,QAAQ,EACR,SAAS,GAIV;QACC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QACxD,IAAI,aAAa,EAAE;YACjB,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,EAAE;gBAClC,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC;YAC3B,CAAC,CAAC,CAAC;SACJ;IACH,CAAC;CAKF"}
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.5.0-alpha.0",
3
+ "version": "0.5.0-alpha.2",
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.3.3",
47
- "@jupyterlab/services": "~7.3.3",
48
- "@jupyterlite/kernel": "^0.5.0-alpha.0",
46
+ "@jupyterlab/coreutils": "~6.3.4",
47
+ "@jupyterlab/services": "~7.3.4",
48
+ "@jupyterlite/kernel": "^0.5.0-alpha.2",
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.3.3",
55
+ "@jupyterlab/testutils": "~4.3.4",
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
- * Path an existing session.
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
- const runningKernel = await this._kernels.get(kernelId);
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
  /**