@dxos/context 0.8.4-main.c1de068 → 0.8.4-main.dedc0f3

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.
@@ -12,6 +12,59 @@ var ContextDisposedError = class extends Error {
12
12
  };
13
13
 
14
14
  // src/context.ts
15
+ function _check_private_redeclaration(obj, privateCollection) {
16
+ if (privateCollection.has(obj)) {
17
+ throw new TypeError("Cannot initialize the same private elements twice on an object");
18
+ }
19
+ }
20
+ function _class_apply_descriptor_get(receiver, descriptor) {
21
+ if (descriptor.get) {
22
+ return descriptor.get.call(receiver);
23
+ }
24
+ return descriptor.value;
25
+ }
26
+ function _class_apply_descriptor_set(receiver, descriptor, value) {
27
+ if (descriptor.set) {
28
+ descriptor.set.call(receiver, value);
29
+ } else {
30
+ if (!descriptor.writable) {
31
+ throw new TypeError("attempted to set read only private field");
32
+ }
33
+ descriptor.value = value;
34
+ }
35
+ }
36
+ function _class_extract_field_descriptor(receiver, privateMap, action) {
37
+ if (!privateMap.has(receiver)) {
38
+ throw new TypeError("attempted to " + action + " private field on non-instance");
39
+ }
40
+ return privateMap.get(receiver);
41
+ }
42
+ function _class_private_field_get(receiver, privateMap) {
43
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "get");
44
+ return _class_apply_descriptor_get(receiver, descriptor);
45
+ }
46
+ function _class_private_field_init(obj, privateMap, value) {
47
+ _check_private_redeclaration(obj, privateMap);
48
+ privateMap.set(obj, value);
49
+ }
50
+ function _class_private_field_set(receiver, privateMap, value) {
51
+ var descriptor = _class_extract_field_descriptor(receiver, privateMap, "set");
52
+ _class_apply_descriptor_set(receiver, descriptor, value);
53
+ return value;
54
+ }
55
+ function _define_property(obj, key, value) {
56
+ if (key in obj) {
57
+ Object.defineProperty(obj, key, {
58
+ value,
59
+ enumerable: true,
60
+ configurable: true,
61
+ writable: true
62
+ });
63
+ } else {
64
+ obj[key] = value;
65
+ }
66
+ return obj;
67
+ }
15
68
  function _ts_decorate(decorators, target, key, desc) {
16
69
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
17
70
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -30,49 +83,25 @@ var DEFAULT_ERROR_HANDLER = (error, ctx) => {
30
83
  };
31
84
  var CONTEXT_FLAG_IS_DISPOSED = 1 << 0;
32
85
  var CONTEXT_FLAG_LEAK_DETECTED = 1 << 1;
33
- var _a, _b;
86
+ var _disposeCallbacks = /* @__PURE__ */ new WeakMap();
87
+ var _name = /* @__PURE__ */ new WeakMap();
88
+ var _parent = /* @__PURE__ */ new WeakMap();
89
+ var _attributes = /* @__PURE__ */ new WeakMap();
90
+ var _onError = /* @__PURE__ */ new WeakMap();
91
+ var _flags = /* @__PURE__ */ new WeakMap();
92
+ var _disposePromise = /* @__PURE__ */ new WeakMap();
93
+ var _isDisposed = /* @__PURE__ */ new WeakMap();
94
+ var _leakDetected = /* @__PURE__ */ new WeakMap();
95
+ var _inspect_custom = inspect.custom;
34
96
  var Context = class _Context {
35
- constructor(params = {}, callMeta) {
36
- this.#disposeCallbacks = [];
37
- this.#name = void 0;
38
- this.#parent = void 0;
39
- this.#flags = 0;
40
- this.#disposePromise = void 0;
41
- this.maxSafeDisposeCallbacks = MAX_SAFE_DISPOSE_CALLBACKS;
42
- this[_b] = "Context";
43
- this[_a] = () => this.toString();
44
- this.#name = getContextName(params, callMeta);
45
- this.#parent = params.parent;
46
- this.#attributes = params.attributes ?? {};
47
- this.#onError = params.onError ?? DEFAULT_ERROR_HANDLER;
48
- }
49
97
  static default() {
50
98
  return new _Context();
51
99
  }
52
- #disposeCallbacks;
53
- #name;
54
- #parent;
55
- #attributes;
56
- #onError;
57
- #flags;
58
- #disposePromise;
59
- get #isDisposed() {
60
- return !!(this.#flags & CONTEXT_FLAG_IS_DISPOSED);
61
- }
62
- set #isDisposed(value) {
63
- this.#flags = value ? this.#flags | CONTEXT_FLAG_IS_DISPOSED : this.#flags & ~CONTEXT_FLAG_IS_DISPOSED;
64
- }
65
- get #leakDetected() {
66
- return !!(this.#flags & CONTEXT_FLAG_LEAK_DETECTED);
67
- }
68
- set #leakDetected(value) {
69
- this.#flags = value ? this.#flags | CONTEXT_FLAG_LEAK_DETECTED : this.#flags & ~CONTEXT_FLAG_LEAK_DETECTED;
70
- }
71
100
  get disposed() {
72
- return this.#isDisposed;
101
+ return _class_private_field_get(this, _isDisposed);
73
102
  }
74
103
  get disposeCallbacksLength() {
75
- return this.#disposeCallbacks.length;
104
+ return _class_private_field_get(this, _disposeCallbacks).length;
76
105
  }
77
106
  /**
78
107
  * Schedules a callback to run when the context is disposed.
@@ -84,13 +113,13 @@ var Context = class _Context {
84
113
  * @returns A function that can be used to remove the callback from the dispose list.
85
114
  */
86
115
  onDispose(callback) {
87
- if (this.#isDisposed) {
116
+ if (_class_private_field_get(this, _isDisposed)) {
88
117
  void (async () => {
89
118
  try {
90
119
  await callback();
91
120
  } catch (error) {
92
121
  log.catch(error, {
93
- context: this.#name
122
+ context: _class_private_field_get(this, _name)
94
123
  }, {
95
124
  F: __dxlog_file,
96
125
  L: 119,
@@ -100,14 +129,14 @@ var Context = class _Context {
100
129
  }
101
130
  })();
102
131
  }
103
- this.#disposeCallbacks.push(callback);
104
- if (this.#disposeCallbacks.length > this.maxSafeDisposeCallbacks && !this.#leakDetected) {
105
- this.#leakDetected = true;
132
+ _class_private_field_get(this, _disposeCallbacks).push(callback);
133
+ if (_class_private_field_get(this, _disposeCallbacks).length > this.maxSafeDisposeCallbacks && !_class_private_field_get(this, _leakDetected)) {
134
+ _class_private_field_set(this, _leakDetected, true);
106
135
  const callSite = new StackTrace().getStackArray(1)[0].trim();
107
136
  log.warn("Context has a large number of dispose callbacks (this might be a memory leak).", {
108
- context: this.#name,
137
+ context: _class_private_field_get(this, _name),
109
138
  callSite,
110
- count: this.#disposeCallbacks.length
139
+ count: _class_private_field_get(this, _disposeCallbacks).length
111
140
  }, {
112
141
  F: __dxlog_file,
113
142
  L: 128,
@@ -116,9 +145,9 @@ var Context = class _Context {
116
145
  });
117
146
  }
118
147
  return () => {
119
- const index = this.#disposeCallbacks.indexOf(callback);
148
+ const index = _class_private_field_get(this, _disposeCallbacks).indexOf(callback);
120
149
  if (index !== -1) {
121
- this.#disposeCallbacks.splice(index, 1);
150
+ _class_private_field_get(this, _disposeCallbacks).splice(index, 1);
122
151
  }
123
152
  };
124
153
  }
@@ -131,20 +160,20 @@ var Context = class _Context {
131
160
  * @returns true if there were no errors during the dispose process.
132
161
  */
133
162
  async dispose(throwOnError = false) {
134
- if (this.#disposePromise) {
135
- return this.#disposePromise;
163
+ if (_class_private_field_get(this, _disposePromise)) {
164
+ return _class_private_field_get(this, _disposePromise);
136
165
  }
137
- this.#isDisposed = true;
166
+ _class_private_field_set(this, _isDisposed, true);
138
167
  let resolveDispose;
139
168
  const promise = new Promise((resolve) => {
140
169
  resolveDispose = resolve;
141
170
  });
142
- this.#disposePromise = promise;
143
- const callbacks = Array.from(this.#disposeCallbacks).reverse();
144
- this.#disposeCallbacks.length = 0;
171
+ _class_private_field_set(this, _disposePromise, promise);
172
+ const callbacks = Array.from(_class_private_field_get(this, _disposeCallbacks)).reverse();
173
+ _class_private_field_get(this, _disposeCallbacks).length = 0;
145
174
  if (DEBUG_LOG_DISPOSE) {
146
175
  log("disposing", {
147
- context: this.#name,
176
+ context: _class_private_field_get(this, _name),
148
177
  count: callbacks.length
149
178
  }, {
150
179
  F: __dxlog_file,
@@ -166,7 +195,7 @@ var Context = class _Context {
166
195
  errors.push(err);
167
196
  } else {
168
197
  log.catch(err, {
169
- context: this.#name,
198
+ context: _class_private_field_get(this, _name),
170
199
  callback: i,
171
200
  count: callbacks.length
172
201
  }, {
@@ -184,7 +213,7 @@ var Context = class _Context {
184
213
  resolveDispose(clean);
185
214
  if (DEBUG_LOG_DISPOSE) {
186
215
  log("disposed", {
187
- context: this.#name
216
+ context: _class_private_field_get(this, _name)
188
217
  }, {
189
218
  F: __dxlog_file,
190
219
  L: 199,
@@ -200,11 +229,11 @@ var Context = class _Context {
200
229
  * IF the error handler is not set, the error will dispose the context and cause an unhandled rejection.
201
230
  */
202
231
  raise(error) {
203
- if (this.#isDisposed) {
232
+ if (_class_private_field_get(this, _isDisposed)) {
204
233
  return;
205
234
  }
206
235
  try {
207
- this.#onError(error, this);
236
+ _class_private_field_get(this, _onError).call(this, error, this);
208
237
  } catch (err) {
209
238
  void Promise.reject(err);
210
239
  }
@@ -230,21 +259,78 @@ var Context = class _Context {
230
259
  return newCtx;
231
260
  }
232
261
  getAttribute(key) {
233
- if (key in this.#attributes) {
234
- return this.#attributes[key];
262
+ if (key in _class_private_field_get(this, _attributes)) {
263
+ return _class_private_field_get(this, _attributes)[key];
235
264
  }
236
- if (this.#parent) {
237
- return this.#parent.getAttribute(key);
265
+ if (_class_private_field_get(this, _parent)) {
266
+ return _class_private_field_get(this, _parent).getAttribute(key);
238
267
  }
239
268
  return void 0;
240
269
  }
241
270
  toString() {
242
- return `Context(${this.#isDisposed ? "disposed" : "active"})`;
271
+ return `Context(${_class_private_field_get(this, _isDisposed) ? "disposed" : "active"})`;
243
272
  }
244
- async [(_b = Symbol.toStringTag, _a = inspect.custom, Symbol.asyncDispose)]() {
273
+ async [Symbol.asyncDispose]() {
245
274
  await this.dispose();
246
275
  }
276
+ constructor(params = {}, callMeta) {
277
+ _class_private_field_init(this, _isDisposed, {
278
+ get: get_isDisposed,
279
+ set: set_isDisposed
280
+ });
281
+ _class_private_field_init(this, _leakDetected, {
282
+ get: get_leakDetected,
283
+ set: set_leakDetected
284
+ });
285
+ _class_private_field_init(this, _disposeCallbacks, {
286
+ writable: true,
287
+ value: []
288
+ });
289
+ _class_private_field_init(this, _name, {
290
+ writable: true,
291
+ value: void 0
292
+ });
293
+ _class_private_field_init(this, _parent, {
294
+ writable: true,
295
+ value: void 0
296
+ });
297
+ _class_private_field_init(this, _attributes, {
298
+ writable: true,
299
+ value: void 0
300
+ });
301
+ _class_private_field_init(this, _onError, {
302
+ writable: true,
303
+ value: void 0
304
+ });
305
+ _class_private_field_init(this, _flags, {
306
+ writable: true,
307
+ value: 0
308
+ });
309
+ _class_private_field_init(this, _disposePromise, {
310
+ writable: true,
311
+ value: void 0
312
+ });
313
+ _define_property(this, "maxSafeDisposeCallbacks", MAX_SAFE_DISPOSE_CALLBACKS);
314
+ _define_property(this, Symbol.toStringTag, "Context");
315
+ _define_property(this, _inspect_custom, () => this.toString());
316
+ _class_private_field_set(this, _name, getContextName(params, callMeta));
317
+ _class_private_field_set(this, _parent, params.parent);
318
+ _class_private_field_set(this, _attributes, params.attributes ?? {});
319
+ _class_private_field_set(this, _onError, params.onError ?? DEFAULT_ERROR_HANDLER);
320
+ }
247
321
  };
322
+ function get_isDisposed() {
323
+ return !!(_class_private_field_get(this, _flags) & CONTEXT_FLAG_IS_DISPOSED);
324
+ }
325
+ function set_isDisposed(value) {
326
+ _class_private_field_set(this, _flags, value ? _class_private_field_get(this, _flags) | CONTEXT_FLAG_IS_DISPOSED : _class_private_field_get(this, _flags) & ~CONTEXT_FLAG_IS_DISPOSED);
327
+ }
328
+ function get_leakDetected() {
329
+ return !!(_class_private_field_get(this, _flags) & CONTEXT_FLAG_LEAK_DETECTED);
330
+ }
331
+ function set_leakDetected(value) {
332
+ _class_private_field_set(this, _flags, value ? _class_private_field_get(this, _flags) | CONTEXT_FLAG_LEAK_DETECTED : _class_private_field_get(this, _flags) & ~CONTEXT_FLAG_LEAK_DETECTED);
333
+ }
248
334
  Context = _ts_decorate([
249
335
  safeInstanceof("Context")
250
336
  ], Context);
@@ -275,6 +361,56 @@ var cancelWithContext = (ctx, promise) => {
275
361
 
276
362
  // src/resource.ts
277
363
  import { throwUnhandledError } from "@dxos/util";
364
+ function _check_private_redeclaration2(obj, privateCollection) {
365
+ if (privateCollection.has(obj)) {
366
+ throw new TypeError("Cannot initialize the same private elements twice on an object");
367
+ }
368
+ }
369
+ function _class_apply_descriptor_get2(receiver, descriptor) {
370
+ if (descriptor.get) {
371
+ return descriptor.get.call(receiver);
372
+ }
373
+ return descriptor.value;
374
+ }
375
+ function _class_apply_descriptor_set2(receiver, descriptor, value) {
376
+ if (descriptor.set) {
377
+ descriptor.set.call(receiver, value);
378
+ } else {
379
+ if (!descriptor.writable) {
380
+ throw new TypeError("attempted to set read only private field");
381
+ }
382
+ descriptor.value = value;
383
+ }
384
+ }
385
+ function _class_extract_field_descriptor2(receiver, privateMap, action) {
386
+ if (!privateMap.has(receiver)) {
387
+ throw new TypeError("attempted to " + action + " private field on non-instance");
388
+ }
389
+ return privateMap.get(receiver);
390
+ }
391
+ function _class_private_field_get2(receiver, privateMap) {
392
+ var descriptor = _class_extract_field_descriptor2(receiver, privateMap, "get");
393
+ return _class_apply_descriptor_get2(receiver, descriptor);
394
+ }
395
+ function _class_private_field_init2(obj, privateMap, value) {
396
+ _check_private_redeclaration2(obj, privateMap);
397
+ privateMap.set(obj, value);
398
+ }
399
+ function _class_private_field_set2(receiver, privateMap, value) {
400
+ var descriptor = _class_extract_field_descriptor2(receiver, privateMap, "set");
401
+ _class_apply_descriptor_set2(receiver, descriptor, value);
402
+ return value;
403
+ }
404
+ function _class_private_method_get(receiver, privateSet, fn) {
405
+ if (!privateSet.has(receiver)) {
406
+ throw new TypeError("attempted to get private field on non-instance");
407
+ }
408
+ return fn;
409
+ }
410
+ function _class_private_method_init(obj, privateSet) {
411
+ _check_private_redeclaration2(obj, privateSet);
412
+ privateSet.add(obj);
413
+ }
278
414
  var LifecycleState = /* @__PURE__ */ function(LifecycleState2) {
279
415
  LifecycleState2["CLOSED"] = "CLOSED";
280
416
  LifecycleState2["OPEN"] = "OPEN";
@@ -282,32 +418,25 @@ var LifecycleState = /* @__PURE__ */ function(LifecycleState2) {
282
418
  return LifecycleState2;
283
419
  }({});
284
420
  var CLOSE_RESOURCE_ON_UNHANDLED_ERROR = false;
421
+ var _lifecycleState = /* @__PURE__ */ new WeakMap();
422
+ var _openPromise = /* @__PURE__ */ new WeakMap();
423
+ var _closePromise = /* @__PURE__ */ new WeakMap();
424
+ var _internalCtx = /* @__PURE__ */ new WeakMap();
425
+ var _parentCtx = /* @__PURE__ */ new WeakMap();
426
+ var _name2 = /* @__PURE__ */ new WeakMap();
427
+ var _open = /* @__PURE__ */ new WeakSet();
428
+ var _close = /* @__PURE__ */ new WeakSet();
429
+ var _createContext = /* @__PURE__ */ new WeakSet();
430
+ var _createParentContext = /* @__PURE__ */ new WeakSet();
285
431
  var Resource = class {
286
- #lifecycleState = "CLOSED";
287
- #openPromise = null;
288
- #closePromise = null;
289
- /**
290
- * Managed internally by the resource.
291
- * Recreated on close.
292
- * Errors are propagated to the `_catch` method and the parent context.
293
- */
294
- #internalCtx = this.#createContext();
295
- /**
296
- * Context that is used to bubble up errors that are not handled by the resource.
297
- * Provided in the open method.
298
- */
299
- #parentCtx = this.#createParentContext();
300
- get #name() {
301
- return Object.getPrototypeOf(this).constructor.name;
302
- }
303
432
  get isOpen() {
304
- return this.#lifecycleState === "OPEN" && this.#closePromise == null;
433
+ return _class_private_field_get2(this, _lifecycleState) === "OPEN" && _class_private_field_get2(this, _closePromise) == null;
305
434
  }
306
435
  get _lifecycleState() {
307
- return this.#lifecycleState;
436
+ return _class_private_field_get2(this, _lifecycleState);
308
437
  }
309
438
  get _ctx() {
310
- return this.#internalCtx;
439
+ return _class_private_field_get2(this, _internalCtx);
311
440
  }
312
441
  /**
313
442
  * To be overridden by subclasses.
@@ -341,15 +470,15 @@ var Resource = class {
341
470
  * @param ctx - Context to use for opening the resource. This context will receive errors that are not handled in `_catch`.
342
471
  */
343
472
  async open(ctx) {
344
- switch (this.#lifecycleState) {
473
+ switch (_class_private_field_get2(this, _lifecycleState)) {
345
474
  case "OPEN":
346
475
  return this;
347
476
  case "ERROR":
348
- throw new Error(`Invalid state: ${this.#lifecycleState}`);
477
+ throw new Error(`Invalid state: ${_class_private_field_get2(this, _lifecycleState)}`);
349
478
  default:
350
479
  }
351
- await this.#closePromise;
352
- await (this.#openPromise ??= this.#open(ctx));
480
+ await _class_private_field_get2(this, _closePromise);
481
+ await _class_private_field_set2(this, _openPromise, _class_private_field_get2(this, _openPromise) ?? _class_private_method_get(this, _open, open).call(this, ctx));
353
482
  return this;
354
483
  }
355
484
  /**
@@ -357,65 +486,98 @@ var Resource = class {
357
486
  * If the resource is already closed, it does nothing.
358
487
  */
359
488
  async close(ctx) {
360
- if (this.#lifecycleState === "CLOSED") {
489
+ if (_class_private_field_get2(this, _lifecycleState) === "CLOSED") {
361
490
  return this;
362
491
  }
363
- await this.#openPromise;
364
- await (this.#closePromise ??= this.#close(ctx));
492
+ await _class_private_field_get2(this, _openPromise);
493
+ await _class_private_field_set2(this, _closePromise, _class_private_field_get2(this, _closePromise) ?? _class_private_method_get(this, _close, close).call(this, ctx));
365
494
  return this;
366
495
  }
367
496
  /**
368
497
  * Waits until the resource is open.
369
498
  */
370
499
  async waitUntilOpen() {
371
- switch (this.#lifecycleState) {
500
+ switch (_class_private_field_get2(this, _lifecycleState)) {
372
501
  case "OPEN":
373
502
  return;
374
503
  case "ERROR":
375
- throw new Error(`Invalid state: ${this.#lifecycleState}`);
504
+ throw new Error(`Invalid state: ${_class_private_field_get2(this, _lifecycleState)}`);
376
505
  }
377
- if (!this.#openPromise) {
506
+ if (!_class_private_field_get2(this, _openPromise)) {
378
507
  throw new Error("Resource is not being opened");
379
508
  }
380
- await this.#openPromise;
509
+ await _class_private_field_get2(this, _openPromise);
381
510
  }
382
511
  async [Symbol.asyncDispose]() {
383
512
  await this.close();
384
513
  }
385
- async #open(ctx) {
386
- this.#closePromise = null;
387
- this.#parentCtx = ctx?.derive({
388
- name: this.#name
389
- }) ?? this.#createParentContext();
390
- await this._open(this.#parentCtx);
391
- this.#lifecycleState = "OPEN";
392
- }
393
- async #close(ctx = Context.default()) {
394
- this.#openPromise = null;
395
- await this.#internalCtx.dispose();
396
- await this._close(ctx);
397
- this.#internalCtx = this.#createContext();
398
- this.#lifecycleState = "CLOSED";
399
- }
400
- #createContext() {
401
- return new Context({
402
- name: this.#name,
403
- onError: (error) => queueMicrotask(async () => {
404
- try {
405
- await this._catch(error);
406
- } catch (err) {
407
- this.#lifecycleState = "ERROR";
408
- this.#parentCtx.raise(err);
409
- }
410
- })
514
+ constructor() {
515
+ _class_private_field_init2(this, _name2, {
516
+ get: get_name,
517
+ set: void 0
411
518
  });
412
- }
413
- #createParentContext() {
414
- return new Context({
415
- name: this.#name
519
+ _class_private_method_init(this, _open);
520
+ _class_private_method_init(this, _close);
521
+ _class_private_method_init(this, _createContext);
522
+ _class_private_method_init(this, _createParentContext);
523
+ _class_private_field_init2(this, _lifecycleState, {
524
+ writable: true,
525
+ value: "CLOSED"
526
+ });
527
+ _class_private_field_init2(this, _openPromise, {
528
+ writable: true,
529
+ value: null
530
+ });
531
+ _class_private_field_init2(this, _closePromise, {
532
+ writable: true,
533
+ value: null
534
+ });
535
+ _class_private_field_init2(this, _internalCtx, {
536
+ writable: true,
537
+ value: _class_private_method_get(this, _createContext, createContext).call(this)
538
+ });
539
+ _class_private_field_init2(this, _parentCtx, {
540
+ writable: true,
541
+ value: _class_private_method_get(this, _createParentContext, createParentContext).call(this)
416
542
  });
417
543
  }
418
544
  };
545
+ function get_name() {
546
+ return Object.getPrototypeOf(this).constructor.name;
547
+ }
548
+ async function open(ctx) {
549
+ _class_private_field_set2(this, _closePromise, null);
550
+ _class_private_field_set2(this, _parentCtx, ctx?.derive({
551
+ name: _class_private_field_get2(this, _name2)
552
+ }) ?? _class_private_method_get(this, _createParentContext, createParentContext).call(this));
553
+ await this._open(_class_private_field_get2(this, _parentCtx));
554
+ _class_private_field_set2(this, _lifecycleState, "OPEN");
555
+ }
556
+ async function close(ctx = Context.default()) {
557
+ _class_private_field_set2(this, _openPromise, null);
558
+ await _class_private_field_get2(this, _internalCtx).dispose();
559
+ await this._close(ctx);
560
+ _class_private_field_set2(this, _internalCtx, _class_private_method_get(this, _createContext, createContext).call(this));
561
+ _class_private_field_set2(this, _lifecycleState, "CLOSED");
562
+ }
563
+ function createContext() {
564
+ return new Context({
565
+ name: _class_private_field_get2(this, _name2),
566
+ onError: (error) => queueMicrotask(async () => {
567
+ try {
568
+ await this._catch(error);
569
+ } catch (err) {
570
+ _class_private_field_set2(this, _lifecycleState, "ERROR");
571
+ _class_private_field_get2(this, _parentCtx).raise(err);
572
+ }
573
+ })
574
+ });
575
+ }
576
+ function createParentContext() {
577
+ return new Context({
578
+ name: _class_private_field_get2(this, _name2)
579
+ });
580
+ }
419
581
  var openInContext = async (ctx, resource) => {
420
582
  await resource.open?.(ctx);
421
583
  ctx.onDispose(() => resource.close?.());
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/context.ts", "../../../src/context-disposed-error.ts", "../../../src/promise-utils.ts", "../../../src/resource.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2022 DXOS.org\n//\n\nimport { inspect } from 'node:util';\n\nimport { StackTrace } from '@dxos/debug';\nimport { type CallMetadata, log } from '@dxos/log';\nimport { safeInstanceof } from '@dxos/util';\n\nimport { ContextDisposedError } from './context-disposed-error';\n\nexport type ContextErrorHandler = (error: Error, ctx: Context) => void;\n\nexport type DisposeCallback = () => any | Promise<any>;\n\nexport type CreateContextParams = {\n name?: string;\n parent?: Context;\n attributes?: Record<string, any>;\n onError?: ContextErrorHandler;\n};\n\nconst DEBUG_LOG_DISPOSE = false;\n\n/**\n * Maximum number of dispose callbacks before we start logging warnings.\n */\nconst MAX_SAFE_DISPOSE_CALLBACKS = 300;\n\nconst DEFAULT_ERROR_HANDLER: ContextErrorHandler = (error, ctx) => {\n if (error instanceof ContextDisposedError) {\n return;\n }\n\n void ctx.dispose();\n\n // Will generate an unhandled rejection.\n throw error;\n};\n\ntype ContextFlags = number;\n\nconst CONTEXT_FLAG_IS_DISPOSED: ContextFlags = 1 << 0;\n\n/**\n * Whether the dispose callback leak was detected.\n */\nconst CONTEXT_FLAG_LEAK_DETECTED: ContextFlags = 1 << 1;\n\n/**\n * NOTE: Context is not reusable after it is disposed.\n */\n@safeInstanceof('Context')\nexport class Context {\n static default(): Context {\n return new Context();\n }\n\n readonly #disposeCallbacks: DisposeCallback[] = [];\n\n readonly #name?: string = undefined;\n readonly #parent?: Context = undefined;\n readonly #attributes: Record<string, any>;\n readonly #onError: ContextErrorHandler;\n\n #flags: ContextFlags = 0;\n #disposePromise?: Promise<boolean> = undefined;\n\n public maxSafeDisposeCallbacks = MAX_SAFE_DISPOSE_CALLBACKS;\n\n constructor(params: CreateContextParams = {}, callMeta?: Partial<CallMetadata>) {\n this.#name = getContextName(params, callMeta);\n this.#parent = params.parent;\n this.#attributes = params.attributes ?? {};\n this.#onError = params.onError ?? DEFAULT_ERROR_HANDLER;\n }\n\n get #isDisposed() {\n return !!(this.#flags & CONTEXT_FLAG_IS_DISPOSED);\n }\n\n set #isDisposed(value: boolean) {\n this.#flags = value ? this.#flags | CONTEXT_FLAG_IS_DISPOSED : this.#flags & ~CONTEXT_FLAG_IS_DISPOSED;\n }\n\n get #leakDetected() {\n return !!(this.#flags & CONTEXT_FLAG_LEAK_DETECTED);\n }\n\n set #leakDetected(value: boolean) {\n this.#flags = value ? this.#flags | CONTEXT_FLAG_LEAK_DETECTED : this.#flags & ~CONTEXT_FLAG_LEAK_DETECTED;\n }\n\n get disposed() {\n return this.#isDisposed;\n }\n\n get disposeCallbacksLength() {\n return this.#disposeCallbacks.length;\n }\n\n /**\n * Schedules a callback to run when the context is disposed.\n * May be async, in this case the disposer might choose to wait for all resource to released.\n * Throwing an error inside the callback will result in the error being logged, but not re-thrown.\n *\n * NOTE: Will call the callback immediately if the context is already disposed.\n *\n * @returns A function that can be used to remove the callback from the dispose list.\n */\n onDispose(callback: DisposeCallback): () => void {\n if (this.#isDisposed) {\n // Call the callback immediately if the context is already disposed.\n void (async () => {\n try {\n await callback();\n } catch (error: any) {\n log.catch(error, { context: this.#name });\n }\n })();\n }\n\n this.#disposeCallbacks.push(callback);\n if (this.#disposeCallbacks.length > this.maxSafeDisposeCallbacks && !this.#leakDetected) {\n this.#leakDetected = true;\n const callSite = new StackTrace().getStackArray(1)[0].trim();\n log.warn('Context has a large number of dispose callbacks (this might be a memory leak).', {\n context: this.#name,\n callSite,\n count: this.#disposeCallbacks.length,\n });\n }\n\n // Remove handler.\n return () => {\n const index = this.#disposeCallbacks.indexOf(callback);\n if (index !== -1) {\n this.#disposeCallbacks.splice(index, 1);\n }\n };\n }\n\n /**\n * Runs all dispose callbacks.\n * Callbacks are run in the reverse order they were added.\n * This function never throws.\n * It is safe to ignore the returned promise if the caller does not wish to wait for callbacks to complete.\n * Disposing context means that onDispose will throw an error and any errors raised will be logged and not propagated.\n * @returns true if there were no errors during the dispose process.\n */\n async dispose(throwOnError = false): Promise<boolean> {\n if (this.#disposePromise) {\n return this.#disposePromise;\n }\n\n // TODO(burdon): Probably should not be set until the dispose is complete, but causes tests to fail if moved.\n this.#isDisposed = true;\n\n // Set the promise before running the callbacks.\n let resolveDispose!: (value: boolean) => void;\n const promise = new Promise<boolean>((resolve) => {\n resolveDispose = resolve;\n });\n this.#disposePromise = promise;\n\n // Process last first.\n // Clone the array so that any mutations to the original array don't affect the dispose process.\n const callbacks = Array.from(this.#disposeCallbacks).reverse();\n this.#disposeCallbacks.length = 0;\n\n if (DEBUG_LOG_DISPOSE) {\n log('disposing', { context: this.#name, count: callbacks.length });\n }\n\n let i = 0;\n let clean = true;\n const errors: Error[] = [];\n for (const callback of callbacks) {\n try {\n await callback();\n i++;\n } catch (err: any) {\n clean = false;\n if (throwOnError) {\n errors.push(err);\n } else {\n log.catch(err, { context: this.#name, callback: i, count: callbacks.length });\n }\n }\n }\n\n if (errors.length > 0) {\n throw new AggregateError(errors);\n }\n\n resolveDispose(clean);\n if (DEBUG_LOG_DISPOSE) {\n log('disposed', { context: this.#name });\n }\n\n return clean;\n }\n\n /**\n * Raise the error inside the context.\n * The error will be propagated to the error handler.\n * IF the error handler is not set, the error will dispose the context and cause an unhandled rejection.\n */\n raise(error: Error): void {\n if (this.#isDisposed) {\n // TODO(dmaretskyi): Don't log those.\n // log.warn('Error in disposed context', error);\n return;\n }\n\n try {\n this.#onError(error, this);\n } catch (err) {\n // Generate an unhandled rejection and stop the error propagation.\n void Promise.reject(err);\n }\n }\n\n derive({ onError, attributes }: CreateContextParams = {}): Context {\n const newCtx = new Context({\n // TODO(dmaretskyi): Optimize to not require allocating a new closure for every context.\n onError: async (error) => {\n if (!onError) {\n this.raise(error);\n } else {\n try {\n await onError(error, this);\n } catch {\n this.raise(error);\n }\n }\n },\n attributes,\n });\n\n const clearDispose = this.onDispose(() => newCtx.dispose());\n newCtx.onDispose(clearDispose);\n return newCtx;\n }\n\n getAttribute(key: string): any {\n if (key in this.#attributes) {\n return this.#attributes[key];\n }\n if (this.#parent) {\n return this.#parent.getAttribute(key);\n }\n\n return undefined;\n }\n\n [Symbol.toStringTag] = 'Context';\n [inspect.custom] = () => this.toString();\n\n toString(): string {\n return `Context(${this.#isDisposed ? 'disposed' : 'active'})`;\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n await this.dispose();\n }\n}\n\nconst getContextName = (params: CreateContextParams, callMeta?: Partial<CallMetadata>): string | undefined => {\n if (params.name) {\n return params.name;\n }\n if (callMeta?.F?.length) {\n const pathSegments = callMeta?.F.split('/');\n return `${pathSegments[pathSegments.length - 1]}#${callMeta?.L ?? 0}`;\n }\n return undefined;\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nexport class ContextDisposedError extends Error {\n constructor() {\n super('Context disposed.');\n }\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { type Context } from './context';\nimport { ContextDisposedError } from './context-disposed-error';\n\n/**\n * @returns A promise that rejects when the context is disposed.\n */\n// TODO(dmaretskyi): Memory leak.\nexport const rejectOnDispose = (ctx: Context, error = new ContextDisposedError()): Promise<never> =>\n new Promise((resolve, reject) => {\n ctx.onDispose(() => reject(error));\n });\n\n/**\n * Rejects the promise if the context is disposed.\n */\nexport const cancelWithContext = <T>(ctx: Context, promise: Promise<T>): Promise<T> => {\n let clearDispose: () => void;\n return Promise.race([\n promise,\n new Promise<never>((resolve, reject) => {\n // Will be called before .finally() handlers.\n clearDispose = ctx.onDispose(() => reject(new ContextDisposedError()));\n }),\n ]).finally(() => clearDispose?.());\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { throwUnhandledError } from '@dxos/util';\n\nimport { Context } from './context';\n\nexport enum LifecycleState {\n CLOSED = 'CLOSED',\n OPEN = 'OPEN',\n ERROR = 'ERROR',\n}\n\nexport interface Lifecycle {\n open?(ctx?: Context): Promise<any> | any;\n close?(): Promise<any> | any;\n}\n\n// Feature flag to be enabled later.\nconst CLOSE_RESOURCE_ON_UNHANDLED_ERROR = false;\n\n/**\n * Base class for resources that need to be opened and closed.\n */\nexport abstract class Resource implements Lifecycle {\n #lifecycleState = LifecycleState.CLOSED;\n #openPromise: Promise<void> | null = null;\n #closePromise: Promise<void> | null = null;\n\n /**\n * Managed internally by the resource.\n * Recreated on close.\n * Errors are propagated to the `_catch` method and the parent context.\n */\n #internalCtx: Context = this.#createContext();\n\n /**\n * Context that is used to bubble up errors that are not handled by the resource.\n * Provided in the open method.\n */\n #parentCtx: Context = this.#createParentContext();\n\n get #name() {\n return Object.getPrototypeOf(this).constructor.name;\n }\n\n get isOpen() {\n return this.#lifecycleState === LifecycleState.OPEN && this.#closePromise == null;\n }\n\n protected get _lifecycleState() {\n return this.#lifecycleState;\n }\n\n protected get _ctx() {\n return this.#internalCtx;\n }\n\n /**\n * To be overridden by subclasses.\n */\n protected async _open(ctx: Context): Promise<void> {}\n\n /**\n * To be overridden by subclasses.\n */\n protected async _close(ctx: Context): Promise<void> {}\n\n /**\n * Error handler for errors that are caught by the context.\n * By default, errors are bubbled up to the parent context which is passed to the open method.\n */\n protected async _catch(err: Error): Promise<void> {\n if (CLOSE_RESOURCE_ON_UNHANDLED_ERROR) {\n try {\n await this.close();\n } catch (doubleErr: any) {\n throwUnhandledError(doubleErr);\n }\n }\n throw err;\n }\n\n /**\n * Opens the resource.\n * If the resource is already open, it does nothing.\n * If the resource is in an error state, it throws an error.\n * If the resource is closed, it waits for it to close and then opens it.\n * @param ctx - Context to use for opening the resource. This context will receive errors that are not handled in `_catch`.\n */\n async open(ctx?: Context): Promise<this> {\n switch (this.#lifecycleState) {\n case LifecycleState.OPEN:\n return this;\n case LifecycleState.ERROR:\n throw new Error(`Invalid state: ${this.#lifecycleState}`);\n default:\n }\n\n await this.#closePromise;\n await (this.#openPromise ??= this.#open(ctx));\n\n return this;\n }\n\n /**\n * Closes the resource.\n * If the resource is already closed, it does nothing.\n */\n async close(ctx?: Context): Promise<this> {\n if (this.#lifecycleState === LifecycleState.CLOSED) {\n return this;\n }\n await this.#openPromise;\n await (this.#closePromise ??= this.#close(ctx));\n\n return this;\n }\n\n /**\n * Waits until the resource is open.\n */\n async waitUntilOpen(): Promise<void> {\n switch (this.#lifecycleState) {\n case LifecycleState.OPEN:\n return;\n case LifecycleState.ERROR:\n throw new Error(`Invalid state: ${this.#lifecycleState}`);\n }\n\n if (!this.#openPromise) {\n throw new Error('Resource is not being opened');\n }\n await this.#openPromise;\n }\n\n async [Symbol.asyncDispose](): Promise<void> {\n await this.close();\n }\n\n async #open(ctx?: Context): Promise<void> {\n this.#closePromise = null;\n this.#parentCtx = ctx?.derive({ name: this.#name }) ?? this.#createParentContext();\n await this._open(this.#parentCtx);\n this.#lifecycleState = LifecycleState.OPEN;\n }\n\n async #close(ctx = Context.default()): Promise<void> {\n this.#openPromise = null;\n await this.#internalCtx.dispose();\n await this._close(ctx);\n this.#internalCtx = this.#createContext();\n this.#lifecycleState = LifecycleState.CLOSED;\n }\n\n #createContext(): Context {\n return new Context({\n name: this.#name,\n onError: (error) =>\n queueMicrotask(async () => {\n try {\n await this._catch(error);\n } catch (err: any) {\n this.#lifecycleState = LifecycleState.ERROR;\n this.#parentCtx.raise(err);\n }\n }),\n });\n }\n\n #createParentContext(): Context {\n return new Context({ name: this.#name });\n }\n}\n\nexport const openInContext = async <T extends Lifecycle>(ctx: Context, resource: T): Promise<T> => {\n await resource.open?.(ctx);\n ctx.onDispose(() => resource.close?.());\n return resource;\n};\n"],
5
- "mappings": "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",
6
- "names": ["inspect", "StackTrace", "log", "safeInstanceof", "ContextDisposedError", "Error", "DEBUG_LOG_DISPOSE", "MAX_SAFE_DISPOSE_CALLBACKS", "DEFAULT_ERROR_HANDLER", "error", "ctx", "ContextDisposedError", "dispose", "CONTEXT_FLAG_IS_DISPOSED", "CONTEXT_FLAG_LEAK_DETECTED", "Context", "params", "callMeta", "undefined", "maxSafeDisposeCallbacks", "Symbol", "inspect", "toString", "getContextName", "parent", "attributes", "onError", "default", "value", "disposed", "disposeCallbacksLength", "length", "onDispose", "callback", "log", "catch", "context", "push", "callSite", "StackTrace", "getStackArray", "trim", "warn", "count", "index", "indexOf", "splice", "throwOnError", "resolveDispose", "promise", "Promise", "resolve", "callbacks", "Array", "from", "reverse", "i", "clean", "errors", "err", "AggregateError", "raise", "reject", "derive", "newCtx", "clearDispose", "getAttribute", "key", "toStringTag", "custom", "asyncDispose", "name", "F", "pathSegments", "split", "L", "rejectOnDispose", "ctx", "error", "ContextDisposedError", "Promise", "resolve", "reject", "onDispose", "cancelWithContext", "promise", "clearDispose", "race", "finally", "throwUnhandledError", "LifecycleState", "CLOSE_RESOURCE_ON_UNHANDLED_ERROR", "Resource", "Object", "getPrototypeOf", "name", "isOpen", "_lifecycleState", "_ctx", "_open", "ctx", "_close", "_catch", "err", "close", "doubleErr", "throwUnhandledError", "open", "Error", "waitUntilOpen", "Symbol", "asyncDispose", "derive", "Context", "default", "dispose", "onError", "error", "queueMicrotask", "raise", "openInContext", "resource", "onDispose"]
5
+ "mappings": "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",
6
+ "names": ["inspect", "StackTrace", "log", "safeInstanceof", "ContextDisposedError", "Error", "DEBUG_LOG_DISPOSE", "MAX_SAFE_DISPOSE_CALLBACKS", "DEFAULT_ERROR_HANDLER", "error", "ctx", "ContextDisposedError", "dispose", "CONTEXT_FLAG_IS_DISPOSED", "CONTEXT_FLAG_LEAK_DETECTED", "inspect", "custom", "Context", "default", "disposed", "disposeCallbacksLength", "length", "onDispose", "callback", "log", "catch", "context", "push", "maxSafeDisposeCallbacks", "callSite", "StackTrace", "getStackArray", "trim", "warn", "count", "index", "indexOf", "splice", "throwOnError", "resolveDispose", "promise", "Promise", "resolve", "callbacks", "Array", "from", "reverse", "i", "clean", "errors", "err", "AggregateError", "raise", "reject", "derive", "onError", "attributes", "newCtx", "clearDispose", "getAttribute", "key", "undefined", "toString", "Symbol", "asyncDispose", "params", "callMeta", "toStringTag", "getContextName", "parent", "value", "name", "F", "pathSegments", "split", "L", "rejectOnDispose", "ctx", "error", "ContextDisposedError", "Promise", "resolve", "reject", "onDispose", "cancelWithContext", "promise", "clearDispose", "race", "finally", "throwUnhandledError", "LifecycleState", "CLOSE_RESOURCE_ON_UNHANDLED_ERROR", "_name", "Resource", "isOpen", "_class_private_field_get", "_lifecycleState", "_ctx", "_open", "ctx", "_close", "_catch", "err", "close", "doubleErr", "throwUnhandledError", "open", "Error", "_class_private_field_set", "waitUntilOpen", "Symbol", "asyncDispose", "_class_private_field_init", "Object", "getPrototypeOf", "name", "derive", "Context", "default", "dispose", "onError", "error", "queueMicrotask", "raise", "openInContext", "resource", "onDispose"]
7
7
  }