@dxos/context 0.8.4-main.a4bbb77 → 0.8.4-main.ae835ea

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,59 +12,6 @@ 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
- }
68
15
  function _ts_decorate(decorators, target, key, desc) {
69
16
  var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
70
17
  if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
@@ -83,25 +30,41 @@ var DEFAULT_ERROR_HANDLER = (error, ctx) => {
83
30
  };
84
31
  var CONTEXT_FLAG_IS_DISPOSED = 1 << 0;
85
32
  var CONTEXT_FLAG_LEAK_DETECTED = 1 << 1;
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;
96
33
  var Context = class _Context {
97
34
  static default() {
98
35
  return new _Context();
99
36
  }
37
+ #disposeCallbacks = [];
38
+ #name = void 0;
39
+ #parent = void 0;
40
+ #attributes;
41
+ #onError;
42
+ #flags = 0;
43
+ #disposePromise = void 0;
44
+ maxSafeDisposeCallbacks = MAX_SAFE_DISPOSE_CALLBACKS;
45
+ constructor(params = {}, callMeta) {
46
+ this.#name = getContextName(params, callMeta);
47
+ this.#parent = params.parent;
48
+ this.#attributes = params.attributes ?? {};
49
+ this.#onError = params.onError ?? DEFAULT_ERROR_HANDLER;
50
+ }
51
+ get #isDisposed() {
52
+ return !!(this.#flags & CONTEXT_FLAG_IS_DISPOSED);
53
+ }
54
+ set #isDisposed(value) {
55
+ this.#flags = value ? this.#flags | CONTEXT_FLAG_IS_DISPOSED : this.#flags & ~CONTEXT_FLAG_IS_DISPOSED;
56
+ }
57
+ get #leakDetected() {
58
+ return !!(this.#flags & CONTEXT_FLAG_LEAK_DETECTED);
59
+ }
60
+ set #leakDetected(value) {
61
+ this.#flags = value ? this.#flags | CONTEXT_FLAG_LEAK_DETECTED : this.#flags & ~CONTEXT_FLAG_LEAK_DETECTED;
62
+ }
100
63
  get disposed() {
101
- return _class_private_field_get(this, _isDisposed);
64
+ return this.#isDisposed;
102
65
  }
103
66
  get disposeCallbacksLength() {
104
- return _class_private_field_get(this, _disposeCallbacks).length;
67
+ return this.#disposeCallbacks.length;
105
68
  }
106
69
  /**
107
70
  * Schedules a callback to run when the context is disposed.
@@ -113,13 +76,13 @@ var Context = class _Context {
113
76
  * @returns A function that can be used to remove the callback from the dispose list.
114
77
  */
115
78
  onDispose(callback) {
116
- if (_class_private_field_get(this, _isDisposed)) {
79
+ if (this.#isDisposed) {
117
80
  void (async () => {
118
81
  try {
119
82
  await callback();
120
83
  } catch (error) {
121
84
  log.catch(error, {
122
- context: _class_private_field_get(this, _name)
85
+ context: this.#name
123
86
  }, {
124
87
  F: __dxlog_file,
125
88
  L: 119,
@@ -129,14 +92,14 @@ var Context = class _Context {
129
92
  }
130
93
  })();
131
94
  }
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);
95
+ this.#disposeCallbacks.push(callback);
96
+ if (this.#disposeCallbacks.length > this.maxSafeDisposeCallbacks && !this.#leakDetected) {
97
+ this.#leakDetected = true;
135
98
  const callSite = new StackTrace().getStackArray(1)[0].trim();
136
99
  log.warn("Context has a large number of dispose callbacks (this might be a memory leak).", {
137
- context: _class_private_field_get(this, _name),
100
+ context: this.#name,
138
101
  callSite,
139
- count: _class_private_field_get(this, _disposeCallbacks).length
102
+ count: this.#disposeCallbacks.length
140
103
  }, {
141
104
  F: __dxlog_file,
142
105
  L: 128,
@@ -145,9 +108,9 @@ var Context = class _Context {
145
108
  });
146
109
  }
147
110
  return () => {
148
- const index = _class_private_field_get(this, _disposeCallbacks).indexOf(callback);
111
+ const index = this.#disposeCallbacks.indexOf(callback);
149
112
  if (index !== -1) {
150
- _class_private_field_get(this, _disposeCallbacks).splice(index, 1);
113
+ this.#disposeCallbacks.splice(index, 1);
151
114
  }
152
115
  };
153
116
  }
@@ -160,20 +123,20 @@ var Context = class _Context {
160
123
  * @returns true if there were no errors during the dispose process.
161
124
  */
162
125
  async dispose(throwOnError = false) {
163
- if (_class_private_field_get(this, _disposePromise)) {
164
- return _class_private_field_get(this, _disposePromise);
126
+ if (this.#disposePromise) {
127
+ return this.#disposePromise;
165
128
  }
166
- _class_private_field_set(this, _isDisposed, true);
129
+ this.#isDisposed = true;
167
130
  let resolveDispose;
168
131
  const promise = new Promise((resolve) => {
169
132
  resolveDispose = resolve;
170
133
  });
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;
134
+ this.#disposePromise = promise;
135
+ const callbacks = Array.from(this.#disposeCallbacks).reverse();
136
+ this.#disposeCallbacks.length = 0;
174
137
  if (DEBUG_LOG_DISPOSE) {
175
138
  log("disposing", {
176
- context: _class_private_field_get(this, _name),
139
+ context: this.#name,
177
140
  count: callbacks.length
178
141
  }, {
179
142
  F: __dxlog_file,
@@ -195,7 +158,7 @@ var Context = class _Context {
195
158
  errors.push(err);
196
159
  } else {
197
160
  log.catch(err, {
198
- context: _class_private_field_get(this, _name),
161
+ context: this.#name,
199
162
  callback: i,
200
163
  count: callbacks.length
201
164
  }, {
@@ -213,7 +176,7 @@ var Context = class _Context {
213
176
  resolveDispose(clean);
214
177
  if (DEBUG_LOG_DISPOSE) {
215
178
  log("disposed", {
216
- context: _class_private_field_get(this, _name)
179
+ context: this.#name
217
180
  }, {
218
181
  F: __dxlog_file,
219
182
  L: 199,
@@ -229,11 +192,11 @@ var Context = class _Context {
229
192
  * IF the error handler is not set, the error will dispose the context and cause an unhandled rejection.
230
193
  */
231
194
  raise(error) {
232
- if (_class_private_field_get(this, _isDisposed)) {
195
+ if (this.#isDisposed) {
233
196
  return;
234
197
  }
235
198
  try {
236
- _class_private_field_get(this, _onError).call(this, error, this);
199
+ this.#onError(error, this);
237
200
  } catch (err) {
238
201
  void Promise.reject(err);
239
202
  }
@@ -259,78 +222,23 @@ var Context = class _Context {
259
222
  return newCtx;
260
223
  }
261
224
  getAttribute(key) {
262
- if (key in _class_private_field_get(this, _attributes)) {
263
- return _class_private_field_get(this, _attributes)[key];
225
+ if (key in this.#attributes) {
226
+ return this.#attributes[key];
264
227
  }
265
- if (_class_private_field_get(this, _parent)) {
266
- return _class_private_field_get(this, _parent).getAttribute(key);
228
+ if (this.#parent) {
229
+ return this.#parent.getAttribute(key);
267
230
  }
268
231
  return void 0;
269
232
  }
233
+ [Symbol.toStringTag] = "Context";
234
+ [inspect.custom] = () => this.toString();
270
235
  toString() {
271
- return `Context(${_class_private_field_get(this, _isDisposed) ? "disposed" : "active"})`;
236
+ return `Context(${this.#isDisposed ? "disposed" : "active"})`;
272
237
  }
273
238
  async [Symbol.asyncDispose]() {
274
239
  await this.dispose();
275
240
  }
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
- }
321
241
  };
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
- }
334
242
  Context = _ts_decorate([
335
243
  safeInstanceof("Context")
336
244
  ], Context);
@@ -361,56 +269,6 @@ var cancelWithContext = (ctx, promise) => {
361
269
 
362
270
  // src/resource.ts
363
271
  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
- }
414
272
  var LifecycleState = /* @__PURE__ */ (function(LifecycleState2) {
415
273
  LifecycleState2["CLOSED"] = "CLOSED";
416
274
  LifecycleState2["OPEN"] = "OPEN";
@@ -418,35 +276,42 @@ var LifecycleState = /* @__PURE__ */ (function(LifecycleState2) {
418
276
  return LifecycleState2;
419
277
  })({});
420
278
  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();
431
279
  var Resource = class {
280
+ #lifecycleState = "CLOSED";
281
+ #openPromise = null;
282
+ #closePromise = null;
283
+ /**
284
+ * Managed internally by the resource.
285
+ * Recreated on close.
286
+ * Errors are propagated to the `_catch` method and the parent context.
287
+ */
288
+ #internalCtx = this.#createContext();
289
+ /**
290
+ * Context that is used to bubble up errors that are not handled by the resource.
291
+ * Provided in the open method.
292
+ */
293
+ #parentCtx = this.#createParentContext();
294
+ get #name() {
295
+ return Object.getPrototypeOf(this).constructor.name;
296
+ }
432
297
  get isOpen() {
433
- return _class_private_field_get2(this, _lifecycleState) === "OPEN" && _class_private_field_get2(this, _closePromise) == null;
298
+ return this.#lifecycleState === "OPEN" && this.#closePromise == null;
434
299
  }
435
300
  get _lifecycleState() {
436
- return _class_private_field_get2(this, _lifecycleState);
301
+ return this.#lifecycleState;
437
302
  }
438
303
  get _ctx() {
439
- return _class_private_field_get2(this, _internalCtx);
304
+ return this.#internalCtx;
440
305
  }
441
306
  /**
442
307
  * To be overridden by subclasses.
443
308
  */
444
- async _open(ctx) {
309
+ async _open(_ctx) {
445
310
  }
446
311
  /**
447
312
  * To be overridden by subclasses.
448
313
  */
449
- async _close(ctx) {
314
+ async _close(_ctx) {
450
315
  }
451
316
  /**
452
317
  * Error handler for errors that are caught by the context.
@@ -463,6 +328,17 @@ var Resource = class {
463
328
  throw err;
464
329
  }
465
330
  /**
331
+ * Calls the provided function, opening and closing the resource.
332
+ */
333
+ async use(fn) {
334
+ try {
335
+ await this.open();
336
+ return await fn(this);
337
+ } finally {
338
+ await this.close();
339
+ }
340
+ }
341
+ /**
466
342
  * Opens the resource.
467
343
  * If the resource is already open, it does nothing.
468
344
  * If the resource is in an error state, it throws an error.
@@ -470,15 +346,15 @@ var Resource = class {
470
346
  * @param ctx - Context to use for opening the resource. This context will receive errors that are not handled in `_catch`.
471
347
  */
472
348
  async open(ctx) {
473
- switch (_class_private_field_get2(this, _lifecycleState)) {
349
+ switch (this.#lifecycleState) {
474
350
  case "OPEN":
475
351
  return this;
476
352
  case "ERROR":
477
- throw new Error(`Invalid state: ${_class_private_field_get2(this, _lifecycleState)}`);
353
+ throw new Error(`Invalid state: ${this.#lifecycleState}`);
478
354
  default:
479
355
  }
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));
356
+ await this.#closePromise;
357
+ await (this.#openPromise ??= this.#open(ctx));
482
358
  return this;
483
359
  }
484
360
  /**
@@ -486,98 +362,65 @@ var Resource = class {
486
362
  * If the resource is already closed, it does nothing.
487
363
  */
488
364
  async close(ctx) {
489
- if (_class_private_field_get2(this, _lifecycleState) === "CLOSED") {
365
+ if (this.#lifecycleState === "CLOSED") {
490
366
  return this;
491
367
  }
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));
368
+ await this.#openPromise;
369
+ await (this.#closePromise ??= this.#close(ctx));
494
370
  return this;
495
371
  }
496
372
  /**
497
373
  * Waits until the resource is open.
498
374
  */
499
375
  async waitUntilOpen() {
500
- switch (_class_private_field_get2(this, _lifecycleState)) {
376
+ switch (this.#lifecycleState) {
501
377
  case "OPEN":
502
378
  return;
503
379
  case "ERROR":
504
- throw new Error(`Invalid state: ${_class_private_field_get2(this, _lifecycleState)}`);
380
+ throw new Error(`Invalid state: ${this.#lifecycleState}`);
505
381
  }
506
- if (!_class_private_field_get2(this, _openPromise)) {
382
+ if (!this.#openPromise) {
507
383
  throw new Error("Resource is not being opened");
508
384
  }
509
- await _class_private_field_get2(this, _openPromise);
385
+ await this.#openPromise;
510
386
  }
511
387
  async [Symbol.asyncDispose]() {
512
388
  await this.close();
513
389
  }
514
- constructor() {
515
- _class_private_field_init2(this, _name2, {
516
- get: get_name,
517
- set: void 0
518
- });
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)
390
+ async #open(ctx) {
391
+ this.#closePromise = null;
392
+ this.#parentCtx = ctx?.derive({
393
+ name: this.#name
394
+ }) ?? this.#createParentContext();
395
+ await this._open(this.#parentCtx);
396
+ this.#lifecycleState = "OPEN";
397
+ }
398
+ async #close(ctx = Context.default()) {
399
+ this.#openPromise = null;
400
+ await this.#internalCtx.dispose();
401
+ await this._close(ctx);
402
+ this.#internalCtx = this.#createContext();
403
+ this.#lifecycleState = "CLOSED";
404
+ }
405
+ #createContext() {
406
+ return new Context({
407
+ name: this.#name,
408
+ onError: (error) => queueMicrotask(async () => {
409
+ try {
410
+ await this._catch(error);
411
+ } catch (err) {
412
+ this.#lifecycleState = "ERROR";
413
+ this.#parentCtx.raise(err);
414
+ }
415
+ })
538
416
  });
539
- _class_private_field_init2(this, _parentCtx, {
540
- writable: true,
541
- value: _class_private_method_get(this, _createParentContext, createParentContext).call(this)
417
+ }
418
+ #createParentContext() {
419
+ return new Context({
420
+ name: this.#name
542
421
  });
543
422
  }
544
423
  };
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
- }
581
424
  var openInContext = async (ctx, resource) => {
582
425
  await resource.open?.(ctx);
583
426
  ctx.onDispose(() => resource.close?.());