@adviser/cement 0.2.2 → 0.2.3

Sign up to get free protection for your applications and to get access to all the features.
package/index.cjs CHANGED
@@ -38,7 +38,6 @@ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot
38
38
  var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
39
39
  var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
40
40
  var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
41
- var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
42
41
  var __await = function(promise, isYieldStar) {
43
42
  this[0] = promise;
44
43
  this[1] = isYieldStar;
@@ -75,6 +74,7 @@ var __yieldStar = (value) => {
75
74
  // src/index.ts
76
75
  var src_exports = {};
77
76
  __export(src_exports, {
77
+ BrowserEnvActions: () => BrowserEnvActions,
78
78
  EnvImpl: () => EnvImpl,
79
79
  Future: () => Future,
80
80
  IDMode: () => IDMode,
@@ -85,6 +85,7 @@ __export(src_exports, {
85
85
  Level: () => Level,
86
86
  LevelHandlerImpl: () => LevelHandlerImpl,
87
87
  LogCollector: () => LogCollector,
88
+ LogValue: () => LogValue,
88
89
  LogWriter: () => LogWriter,
89
90
  LoggerImpl: () => LoggerImpl,
90
91
  MockLogger: () => MockLogger,
@@ -101,7 +102,9 @@ __export(src_exports, {
101
102
  Time: () => Time,
102
103
  TimeMode: () => TimeMode,
103
104
  TimeUnits: () => TimeUnits,
104
- envImpl: () => envImpl
105
+ envFactory: () => envFactory,
106
+ logValue: () => logValue,
107
+ removeSelfRef: () => removeSelfRef
105
108
  });
106
109
  module.exports = __toCommonJS(src_exports);
107
110
 
@@ -113,6 +116,46 @@ var Level = /* @__PURE__ */ ((Level2) => {
113
116
  Level2["ERROR"] = "error";
114
117
  return Level2;
115
118
  })(Level || {});
119
+ var LogValue = class {
120
+ constructor(fn) {
121
+ this.fn = fn;
122
+ }
123
+ value() {
124
+ return this.fn();
125
+ }
126
+ toJSON() {
127
+ return this.value();
128
+ }
129
+ };
130
+ function removeSelfRef() {
131
+ const cache = /* @__PURE__ */ new Set();
132
+ return function(key, value) {
133
+ if (typeof value === "object" && value !== null) {
134
+ if (cache.has(value)) return "...";
135
+ cache.add(value);
136
+ }
137
+ return value;
138
+ };
139
+ }
140
+ function logValue(val) {
141
+ switch (typeof val) {
142
+ case "function":
143
+ return new LogValue(val);
144
+ case "string":
145
+ return new LogValue(() => val.toString());
146
+ case "number":
147
+ return new LogValue(() => val);
148
+ case "boolean":
149
+ return new LogValue(() => val);
150
+ case "object":
151
+ return new LogValue(() => JSON.parse(JSON.stringify(val, removeSelfRef())));
152
+ default:
153
+ if (!val) {
154
+ return new LogValue(() => "--Falsy--");
155
+ }
156
+ throw new Error(`Invalid type:${typeof val}`);
157
+ }
158
+ }
116
159
  function IsLogger(obj) {
117
160
  return typeof obj === "object" && [
118
161
  "Module",
@@ -356,170 +399,339 @@ var WrapperSysAbstraction = class {
356
399
  }
357
400
  };
358
401
 
402
+ // src/future.ts
403
+ var _promise, _resolveFn, _rejectFn;
404
+ var Future = class {
405
+ constructor() {
406
+ __privateAdd(this, _promise);
407
+ __privateAdd(this, _resolveFn, () => {
408
+ throw new Error("This Promise is not working as expected.");
409
+ });
410
+ __privateAdd(this, _rejectFn, () => {
411
+ throw new Error("This Promise is not working as expected.");
412
+ });
413
+ __privateSet(this, _promise, new Promise((resolve, reject) => {
414
+ __privateSet(this, _resolveFn, resolve);
415
+ __privateSet(this, _rejectFn, reject);
416
+ }));
417
+ }
418
+ async asPromise() {
419
+ return __privateGet(this, _promise);
420
+ }
421
+ resolve(value) {
422
+ __privateGet(this, _resolveFn).call(this, value);
423
+ }
424
+ reject(reason) {
425
+ __privateGet(this, _rejectFn).call(this, reason);
426
+ }
427
+ };
428
+ _promise = new WeakMap();
429
+ _resolveFn = new WeakMap();
430
+ _rejectFn = new WeakMap();
431
+
432
+ // src/resolve-once.ts
433
+ var ResolveSeq = class {
434
+ constructor(ctx) {
435
+ this._seqFutures = [];
436
+ this.ctx = ctx;
437
+ }
438
+ reset() {
439
+ }
440
+ async _step(item) {
441
+ if (!item) {
442
+ return;
443
+ }
444
+ item.fn(this.ctx).then((value) => item.future.resolve(value)).catch((e) => item.future.reject(e)).finally(() => this._step(this._seqFutures.shift()));
445
+ }
446
+ async add(fn) {
447
+ const future = new Future();
448
+ this._seqFutures.push({ future, fn });
449
+ this._step(this._seqFutures.shift());
450
+ return future.asPromise();
451
+ }
452
+ };
453
+ var ResolveOnce = class {
454
+ constructor(ctx) {
455
+ this._onceDone = false;
456
+ this._onceFutures = [];
457
+ this._onceOk = false;
458
+ this._isPromise = false;
459
+ this.ctx = ctx;
460
+ }
461
+ get ready() {
462
+ return this._onceDone;
463
+ }
464
+ reset() {
465
+ this._onceDone = false;
466
+ this._onceOk = false;
467
+ this._onceValue = void 0;
468
+ this._onceError = void 0;
469
+ this._onceFutures.length = 0;
470
+ }
471
+ // T extends Option<infer U> ? U : T
472
+ once(fn) {
473
+ if (this._onceDone) {
474
+ if (this._onceError) {
475
+ if (this._isPromise) {
476
+ return Promise.reject(this._onceError);
477
+ } else {
478
+ throw this._onceError;
479
+ }
480
+ }
481
+ if (this._onceOk) {
482
+ if (this._isPromise) {
483
+ return Promise.resolve(this._onceValue);
484
+ } else {
485
+ return this._onceValue;
486
+ }
487
+ }
488
+ throw new Error("ResolveOnce.once impossible");
489
+ }
490
+ const future = new Future();
491
+ this._onceFutures.push(future);
492
+ if (this._onceFutures.length === 1) {
493
+ const okFn = (value) => {
494
+ this._onceValue = value;
495
+ this._onceOk = true;
496
+ this._onceDone = true;
497
+ if (this._isPromise) {
498
+ this._onceFutures.forEach((f) => f.resolve(this._onceValue));
499
+ }
500
+ this._onceFutures.length = 0;
501
+ };
502
+ const catchFn = (e) => {
503
+ this._onceError = e;
504
+ this._onceOk = false;
505
+ this._onceValue = void 0;
506
+ this._onceDone = true;
507
+ if (this._isPromise) {
508
+ this._onceFutures.forEach((f) => f.reject(this._onceError));
509
+ }
510
+ this._onceFutures.length = 0;
511
+ };
512
+ try {
513
+ const ret = fn(this.ctx);
514
+ if (typeof ret.then === "function") {
515
+ this._isPromise = true;
516
+ ret.then(okFn).catch(catchFn);
517
+ } else {
518
+ okFn(ret);
519
+ }
520
+ } catch (e) {
521
+ catchFn(e);
522
+ }
523
+ }
524
+ if (this._isPromise) {
525
+ return future.asPromise();
526
+ } else {
527
+ return this.once(fn);
528
+ }
529
+ }
530
+ };
531
+ var Keyed = class {
532
+ constructor(factory) {
533
+ this._map = /* @__PURE__ */ new Map();
534
+ this.factory = factory;
535
+ }
536
+ async asyncGet(key) {
537
+ return this.get(await key());
538
+ }
539
+ get(key) {
540
+ if (typeof key === "function") {
541
+ key = key();
542
+ }
543
+ let keyed = this._map.get(key);
544
+ if (!keyed) {
545
+ keyed = this.factory(key);
546
+ this._map.set(key, keyed);
547
+ }
548
+ return keyed;
549
+ }
550
+ reset() {
551
+ this._map.forEach((keyed) => keyed.reset());
552
+ this._map.clear();
553
+ }
554
+ };
555
+ var KeyedResolvOnce = class extends Keyed {
556
+ constructor() {
557
+ super((key) => new ResolveOnce(key));
558
+ }
559
+ };
560
+ var KeyedResolvSeq = class extends Keyed {
561
+ constructor() {
562
+ super((key) => new ResolveSeq(key));
563
+ }
564
+ };
565
+
359
566
  // src/sys_env.ts
360
- var _node, _env;
567
+ var _node;
361
568
  var NodeEnvActions = class {
362
569
  // eslint-disable-next-line @typescript-eslint/no-useless-constructor, @typescript-eslint/no-unused-vars
363
570
  constructor(opts) {
364
571
  __privateAdd(this, _node, globalThis);
365
- __privateAdd(this, _env, this.use() ? process.env : {});
572
+ this._env = this.active() ? __privateGet(this, _node).process.env : {};
366
573
  }
367
- use() {
574
+ register(env) {
575
+ return env;
576
+ }
577
+ active() {
368
578
  return typeof __privateGet(this, _node) === "object" && typeof __privateGet(this, _node).process === "object" && typeof __privateGet(this, _node).process.env === "object";
369
579
  }
370
580
  keys() {
371
- return Object.keys(__privateGet(this, _env));
581
+ return Object.keys(this._env);
372
582
  }
373
583
  get(key) {
374
- return __privateGet(this, _env)[key];
584
+ return this._env[key];
375
585
  }
376
586
  set(key, value) {
377
587
  if (value) {
378
- __privateGet(this, _env)[key] = value;
588
+ this._env[key] = value;
379
589
  }
380
590
  }
381
- del(key) {
382
- delete __privateGet(this, _env)[key];
591
+ delete(key) {
592
+ delete this._env[key];
383
593
  }
384
594
  };
385
595
  _node = new WeakMap();
386
- _env = new WeakMap();
387
- var _deno, _env2;
596
+ var _deno;
388
597
  var DenoEnvActions = class {
389
- constructor(opts, env) {
598
+ // eslint-disable-next-line @typescript-eslint/no-useless-constructor, @typescript-eslint/no-unused-vars
599
+ constructor(opts) {
390
600
  __privateAdd(this, _deno, globalThis);
391
- __privateAdd(this, _env2);
392
- if (env) {
393
- __privateSet(this, _env2, env);
394
- } else {
395
- __privateSet(this, _env2, this.use() ? __privateGet(this, _deno).Deno.env : /* @__PURE__ */ new Map());
396
- }
397
601
  }
398
- use() {
602
+ get _env() {
603
+ return __privateGet(this, _deno).Deno.env;
604
+ }
605
+ register(env) {
606
+ return env;
607
+ }
608
+ active() {
399
609
  return typeof __privateGet(this, _deno) === "object" && typeof __privateGet(this, _deno).Deno === "object" && typeof __privateGet(this, _deno).Deno.env === "object";
400
610
  }
401
611
  keys() {
402
- return Array.from(__privateGet(this, _env2).keys());
612
+ return Array.from(this._env.keys());
403
613
  }
404
614
  get(key) {
405
- return __privateGet(this, _env2).get(key);
615
+ return this._env.get(key);
406
616
  }
407
617
  set(key, value) {
408
618
  if (value) {
409
- __privateGet(this, _env2).set(key, value);
619
+ this._env.set(key, value);
410
620
  }
411
621
  }
412
- del(key) {
413
- __privateGet(this, _env2).delete(key);
622
+ delete(key) {
623
+ this._env.delete(key);
414
624
  }
415
625
  };
416
626
  _deno = new WeakMap();
417
- _env2 = new WeakMap();
418
- var BrowserEnvActions = class _BrowserEnvActions extends DenoEnvActions {
419
- static globalBEA(sym) {
420
- const browser = globalThis;
421
- if (typeof browser === "object" && typeof browser[sym] === "object") {
422
- return { map: browser[sym]._map, finalize: () => browser[sym]._map };
627
+ var BrowserEnvActions = class {
628
+ constructor(opts) {
629
+ this.env = /* @__PURE__ */ new Map();
630
+ this.opts = opts;
631
+ }
632
+ get(key) {
633
+ return this.env.get(key);
634
+ }
635
+ set(key, value) {
636
+ if (value) {
637
+ this.env.set(key, value);
423
638
  }
424
- const map = /* @__PURE__ */ new Map();
425
- return {
426
- map,
427
- finalize: (bea) => {
428
- browser[sym] = bea;
429
- return map;
430
- }
431
- };
432
639
  }
433
- constructor(opts) {
434
- const { map, finalize } = _BrowserEnvActions.globalBEA(Symbol.for(opts.symbol || "CP_ENV"));
435
- super(opts, map);
436
- this._map = finalize(this);
640
+ delete(key) {
641
+ this.env.delete(key);
642
+ }
643
+ keys() {
644
+ return Array.from(this.env.keys());
437
645
  }
438
- use() {
646
+ active() {
439
647
  return true;
440
648
  }
649
+ register(env) {
650
+ const sym = Symbol.for(this.opts.symbol || "CP_ENV");
651
+ const browser = globalThis;
652
+ browser[sym] = env;
653
+ return env;
654
+ }
441
655
  };
656
+ var _envFactory = new ResolveOnce();
442
657
  function envFactory(opts = {}) {
443
- const found = [new NodeEnvActions(opts), new DenoEnvActions(opts), new BrowserEnvActions(opts)].find((env) => env.use());
444
- if (!found) {
445
- throw new Error("SysContainer:envFactory: no env available");
446
- }
447
- return found;
658
+ return _envFactory.once(() => {
659
+ const found = [new NodeEnvActions(opts), new DenoEnvActions(opts), new BrowserEnvActions(opts)].find((env) => env.active());
660
+ if (!found) {
661
+ throw new Error("SysContainer:envFactory: no env available");
662
+ }
663
+ const ret = new EnvImpl(found, opts);
664
+ found.register(ret);
665
+ return ret;
666
+ });
448
667
  }
449
- var _envImpl, _EnvImpl_instances, updatePresets_fn, applyOnSet_fn, _onSet;
450
668
  var EnvImpl = class {
451
- constructor(opts = {}) {
452
- __privateAdd(this, _EnvImpl_instances);
453
- __privateAdd(this, _envImpl);
454
- __privateAdd(this, _onSet, []);
455
- __privateSet(this, _envImpl, envFactory(opts));
456
- __privateMethod(this, _EnvImpl_instances, updatePresets_fn).call(this, opts.presetEnv);
669
+ constructor(map, opts = {}) {
670
+ this._onSet = [];
671
+ this._map = map;
672
+ this._updatePresets(opts.presetEnv);
673
+ }
674
+ _updatePresets(presetEnv) {
675
+ if (!presetEnv) {
676
+ return;
677
+ }
678
+ for (const [key, value] of presetEnv) {
679
+ this._map.set(key, value);
680
+ }
681
+ }
682
+ _applyOnSet(onSet, key, value) {
683
+ onSet.forEach((item) => {
684
+ let keys = [];
685
+ if (key) {
686
+ keys = [key];
687
+ } else {
688
+ keys = this._map.keys();
689
+ }
690
+ keys.filter((k) => {
691
+ if (item.filter.size === 0) {
692
+ return true;
693
+ }
694
+ if (item.filter.has(k)) {
695
+ return true;
696
+ }
697
+ return false;
698
+ }).forEach((k) => {
699
+ let v;
700
+ if (!key && !value) {
701
+ v = this._map.get(k);
702
+ } else if (key && !value) {
703
+ v = void 0;
704
+ } else {
705
+ v = value;
706
+ }
707
+ item.fn(k, v);
708
+ });
709
+ });
457
710
  }
458
711
  keys() {
459
- return __privateGet(this, _envImpl).keys();
712
+ return this._map.keys();
460
713
  }
461
714
  // filter is not set all sets passed
462
715
  onSet(fn, ...filter) {
463
716
  const item = { filter: new Set(filter), fn };
464
- __privateGet(this, _onSet).push(item);
465
- __privateMethod(this, _EnvImpl_instances, applyOnSet_fn).call(this, [item]);
717
+ this._onSet.push(item);
718
+ this._applyOnSet([item]);
466
719
  }
467
720
  get(key) {
468
- return __privateGet(this, _envImpl).get(key);
721
+ return this._map.get(key);
469
722
  }
470
723
  set(key, value) {
471
724
  if (!value) {
472
725
  return;
473
726
  }
474
- __privateGet(this, _envImpl).set(key, value);
475
- __privateMethod(this, _EnvImpl_instances, applyOnSet_fn).call(this, __privateGet(this, _onSet), key, value);
476
- }
477
- del(key) {
478
- __privateGet(this, _envImpl).del(key);
479
- __privateMethod(this, _EnvImpl_instances, applyOnSet_fn).call(this, __privateGet(this, _onSet), key);
480
- }
481
- };
482
- _envImpl = new WeakMap();
483
- _EnvImpl_instances = new WeakSet();
484
- updatePresets_fn = function(presetEnv) {
485
- if (!presetEnv) {
486
- return;
727
+ this._map.set(key, value);
728
+ this._applyOnSet(this._onSet, key, value);
487
729
  }
488
- for (const [key, value] of presetEnv) {
489
- __privateGet(this, _envImpl).set(key, value);
730
+ delete(key) {
731
+ this._map.delete(key);
732
+ this._applyOnSet(this._onSet, key);
490
733
  }
491
734
  };
492
- applyOnSet_fn = function(onSet, key, value) {
493
- onSet.forEach((item) => {
494
- let keys = [];
495
- if (key) {
496
- keys = [key];
497
- } else {
498
- keys = __privateGet(this, _envImpl).keys();
499
- }
500
- keys.filter((k) => {
501
- if (item.filter.size === 0) {
502
- return true;
503
- }
504
- if (item.filter.has(k)) {
505
- return true;
506
- }
507
- return false;
508
- }).forEach((k) => {
509
- let v;
510
- if (!key && !value) {
511
- v = __privateGet(this, _envImpl).get(k);
512
- } else if (key && !value) {
513
- v = void 0;
514
- } else {
515
- v = value;
516
- }
517
- item.fn(k, v);
518
- });
519
- });
520
- };
521
- _onSet = new WeakMap();
522
- var envImpl = new EnvImpl();
523
735
 
524
736
  // src/web/web_sys_abstraction.ts
525
737
  var WebFileService = class {
@@ -569,7 +781,7 @@ var WebFileService = class {
569
781
  };
570
782
  var WebSystemService = class {
571
783
  Env() {
572
- return envImpl;
784
+ return envFactory();
573
785
  }
574
786
  Args() {
575
787
  throw new Error("Args-Method not implemented.");
@@ -596,43 +808,6 @@ function WebSysAbstraction(param) {
596
808
 
597
809
  // src/logger_impl.ts
598
810
  var encoder = new TextEncoder();
599
- var LogValue = class {
600
- constructor(fn) {
601
- this.fn = fn;
602
- }
603
- value() {
604
- return this.fn();
605
- }
606
- };
607
- function resolveLogValue(val) {
608
- const ret = {};
609
- Object.keys(val).forEach((key) => {
610
- const v = val[key];
611
- if (v instanceof LogValue) {
612
- ret[key] = v.value();
613
- }
614
- });
615
- return ret;
616
- }
617
- function logValue(val) {
618
- switch (typeof val) {
619
- case "function":
620
- return new LogValue(val);
621
- case "string":
622
- return new LogValue(() => val.toString());
623
- case "number":
624
- return new LogValue(() => val);
625
- case "boolean":
626
- return new LogValue(() => val);
627
- case "object":
628
- return new LogValue(() => JSON.stringify(val));
629
- default:
630
- if (!val) {
631
- return new LogValue(() => "--Falsy--");
632
- }
633
- throw new Error(`Invalid type:${typeof val}`);
634
- }
635
- }
636
811
  var LevelHandlerImpl = class {
637
812
  constructor() {
638
813
  this._globalLevels = /* @__PURE__ */ new Set(["info" /* INFO */, "error" /* ERROR */, "warn" /* WARN */]);
@@ -928,7 +1103,7 @@ var LoggerImpl = class _LoggerImpl {
928
1103
  _attributes: attr
929
1104
  });
930
1105
  }
931
- return JSON.stringify(resolveLogValue(attr));
1106
+ return JSON.stringify(attr, removeSelfRef());
932
1107
  }
933
1108
  Msg(...args) {
934
1109
  const fnError = this._resetAttributes(() => {
@@ -936,7 +1111,7 @@ var LoggerImpl = class _LoggerImpl {
936
1111
  const doWrite = this._levelHandler.isEnabled((_a = this._attributes["level"]) == null ? void 0 : _a.value(), (_b = this._attributes["module"]) == null ? void 0 : _b.value());
937
1112
  let fnRet = () => this._produceError(__spreadValues({}, this._attributes), ...args);
938
1113
  if (doWrite) {
939
- const str = this._produceError(__spreadValues({}, this._attributes), ...args);
1114
+ const str = fnRet();
940
1115
  const encoded = encoder.encode(str + "\n");
941
1116
  this._logWriter.write(encoded);
942
1117
  fnRet = () => str;
@@ -1248,142 +1423,9 @@ var None = class extends Option {
1248
1423
  throw new Error("None.unwrap");
1249
1424
  }
1250
1425
  };
1251
-
1252
- // src/future.ts
1253
- var _promise, _resolveFn, _rejectFn;
1254
- var Future = class {
1255
- constructor() {
1256
- __privateAdd(this, _promise);
1257
- __privateAdd(this, _resolveFn, () => {
1258
- throw new Error("This Promise is not working as expected.");
1259
- });
1260
- __privateAdd(this, _rejectFn, () => {
1261
- throw new Error("This Promise is not working as expected.");
1262
- });
1263
- __privateSet(this, _promise, new Promise((resolve, reject) => {
1264
- __privateSet(this, _resolveFn, resolve);
1265
- __privateSet(this, _rejectFn, reject);
1266
- }));
1267
- }
1268
- async asPromise() {
1269
- return __privateGet(this, _promise);
1270
- }
1271
- resolve(value) {
1272
- __privateGet(this, _resolveFn).call(this, value);
1273
- }
1274
- reject(reason) {
1275
- __privateGet(this, _rejectFn).call(this, reason);
1276
- }
1277
- };
1278
- _promise = new WeakMap();
1279
- _resolveFn = new WeakMap();
1280
- _rejectFn = new WeakMap();
1281
-
1282
- // src/resolve-once.ts
1283
- var ResolveSeq = class {
1284
- constructor(ctx) {
1285
- this._seqFutures = [];
1286
- this.ctx = ctx;
1287
- }
1288
- reset() {
1289
- }
1290
- async _step(item) {
1291
- if (!item) {
1292
- return;
1293
- }
1294
- item.fn(this.ctx).then((value) => item.future.resolve(value)).catch((e) => item.future.reject(e)).finally(() => this._step(this._seqFutures.shift()));
1295
- }
1296
- async add(fn) {
1297
- const future = new Future();
1298
- this._seqFutures.push({ future, fn });
1299
- this._step(this._seqFutures.shift());
1300
- return future.asPromise();
1301
- }
1302
- };
1303
- var ResolveOnce = class {
1304
- constructor(ctx) {
1305
- this._onceDone = false;
1306
- this._onceFutures = [];
1307
- this._onceOk = false;
1308
- this.ctx = ctx;
1309
- }
1310
- get ready() {
1311
- return this._onceDone;
1312
- }
1313
- reset() {
1314
- this._onceDone = false;
1315
- this._onceOk = false;
1316
- this._onceValue = void 0;
1317
- this._onceError = void 0;
1318
- this._onceFutures.length = 0;
1319
- }
1320
- async once(fn) {
1321
- if (this._onceDone) {
1322
- if (this._onceError) {
1323
- return Promise.reject(this._onceError);
1324
- }
1325
- if (this._onceOk) {
1326
- return Promise.resolve(this._onceValue);
1327
- }
1328
- throw new Error("ResolveOnce.once impossible");
1329
- }
1330
- const future = new Future();
1331
- this._onceFutures.push(future);
1332
- if (this._onceFutures.length === 1) {
1333
- fn(this.ctx).then((value) => {
1334
- this._onceValue = value;
1335
- this._onceOk = true;
1336
- this._onceDone = true;
1337
- this._onceFutures.forEach((f) => f.resolve(this._onceValue));
1338
- this._onceFutures.length = 0;
1339
- }).catch((e) => {
1340
- this._onceError = e;
1341
- this._onceOk = false;
1342
- this._onceValue = void 0;
1343
- this._onceDone = true;
1344
- this._onceFutures.forEach((f) => f.reject(this._onceError));
1345
- this._onceFutures.length = 0;
1346
- });
1347
- }
1348
- return future.asPromise();
1349
- }
1350
- };
1351
- var Keyed = class {
1352
- constructor(factory) {
1353
- this._map = /* @__PURE__ */ new Map();
1354
- this.factory = factory;
1355
- }
1356
- async asyncGet(key) {
1357
- return this.get(await key());
1358
- }
1359
- get(key) {
1360
- if (typeof key === "function") {
1361
- key = key();
1362
- }
1363
- let keyed = this._map.get(key);
1364
- if (!keyed) {
1365
- keyed = this.factory(key);
1366
- this._map.set(key, keyed);
1367
- }
1368
- return keyed;
1369
- }
1370
- reset() {
1371
- this._map.forEach((keyed) => keyed.reset());
1372
- this._map.clear();
1373
- }
1374
- };
1375
- var KeyedResolvOnce = class extends Keyed {
1376
- constructor() {
1377
- super((key) => new ResolveOnce(key));
1378
- }
1379
- };
1380
- var KeyedResolvSeq = class extends Keyed {
1381
- constructor() {
1382
- super((key) => new ResolveSeq(key));
1383
- }
1384
- };
1385
1426
  // Annotate the CommonJS export names for ESM import in node:
1386
1427
  0 && (module.exports = {
1428
+ BrowserEnvActions,
1387
1429
  EnvImpl,
1388
1430
  Future,
1389
1431
  IDMode,
@@ -1394,6 +1436,7 @@ var KeyedResolvSeq = class extends Keyed {
1394
1436
  Level,
1395
1437
  LevelHandlerImpl,
1396
1438
  LogCollector,
1439
+ LogValue,
1397
1440
  LogWriter,
1398
1441
  LoggerImpl,
1399
1442
  MockLogger,
@@ -1410,6 +1453,8 @@ var KeyedResolvSeq = class extends Keyed {
1410
1453
  Time,
1411
1454
  TimeMode,
1412
1455
  TimeUnits,
1413
- envImpl
1456
+ envFactory,
1457
+ logValue,
1458
+ removeSelfRef
1414
1459
  });
1415
1460
  //# sourceMappingURL=index.cjs.map