unikvs 0.0.4 → 0.0.6

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.
@@ -9,14 +9,13 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
9
9
  if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
- var _UniKvs_con, _UniKvs_context, _UniKvs_destinations, _UniKvs_transformers;
12
+ var _UniKvs_instances, _UniKvs_con, _UniKvs_acSet, _UniKvs_context, _UniKvs_destinations, _UniKvs_transformers, _UniKvs_close;
13
13
  import { asyncmux, Asyncmux } from "asyncmux";
14
- import * as v from "valibot";
15
14
  import combineSignals from "./_combine-signals.js";
16
15
  import logger from "./_logger.js";
17
16
  import mergeContext from "./_merge-context.js";
18
17
  import toValueStream from "./_to-value-stream.js";
19
- import { parse } from "./_valibot.js";
18
+ import * as v from "./_valibot.js";
20
19
  import { KeyNotFoundError, PluginOperationAggregateError, UniKvsIsNotOpenError, UniKvsIsOpenError, } from "./errors.js";
21
20
  import UniKvsConfig from "./unikvs-config.js";
22
21
  // -------------------------------------------------------------------------------------------------
@@ -24,18 +23,30 @@ import UniKvsConfig from "./unikvs-config.js";
24
23
  // スキーマ
25
24
  //
26
25
  // -------------------------------------------------------------------------------------------------
27
- const ContextKeySchema = v.union([v.string(), v.symbol(), v.number()]);
26
+ const ContextKeySchema = v.string();
28
27
  const ContextSourceSchema = v.union([
29
28
  v.record(v.any(), v.unknown()),
30
29
  v.array(v.tuple([ContextKeySchema, v.unknown()])),
31
30
  ]);
32
31
  const OpenOptionsSchema = v.object({
32
+ /**
33
+ * 処理の中断を通知するためのシグナルです。
34
+ */
33
35
  signal: v.optional(v.instance(AbortSignal)),
36
+ /**
37
+ * 実行時のコンテキスト情報です。
38
+ */
34
39
  context: v.optional(ContextSourceSchema),
35
40
  });
36
41
  const OpenArgsSchema = v.tuple([v.optional(OpenOptionsSchema)]);
37
42
  const CloseOptionsSchema = v.object({
43
+ /**
44
+ * 処理の中断を通知するためのシグナルです。
45
+ */
38
46
  signal: v.optional(v.instance(AbortSignal)),
47
+ /**
48
+ * 実行時のコンテキスト情報です。
49
+ */
39
50
  context: v.optional(ContextSourceSchema),
40
51
  });
41
52
  const CloseArgsSchema = v.tuple([v.optional(CloseOptionsSchema)]);
@@ -90,7 +101,13 @@ const DeleteArgsSchema = v.union([
90
101
  v.pipe(v.tuple([DeleteOptionsSchema.entries.key, v.optional(v.omit(DeleteOptionsSchema, ["key"]))]), v.transform(([key, options]) => [{ ...options, key }])),
91
102
  ]);
92
103
  const ClearOptionsSchema = v.object({
104
+ /**
105
+ * 処理の中断を通知するためのシグナルです。
106
+ */
93
107
  signal: v.optional(v.instance(AbortSignal)),
108
+ /**
109
+ * 実行時のコンテキスト情報です。
110
+ */
94
111
  context: v.optional(ContextSourceSchema),
95
112
  });
96
113
  const ClearArgsSchema = v.tuple([v.optional(ClearOptionsSchema)]);
@@ -106,7 +123,7 @@ const ioLockRegistry = typeof FinalizationRegistry !== "function"
106
123
  ? null
107
124
  : new FinalizationRegistry((lock) => {
108
125
  try {
109
- lock.unlock();
126
+ lock.release();
110
127
  }
111
128
  catch { }
112
129
  });
@@ -155,10 +172,12 @@ export default class UniKvs {
155
172
  * @param transformers トランスフォーマーのリストです。
156
173
  */
157
174
  constructor(context, destinations, transformers) {
175
+ _UniKvs_instances.add(this);
158
176
  /**
159
177
  * 現在の接続状態です。非接続時は null となります。
160
178
  */
161
179
  _UniKvs_con.set(this, void 0);
180
+ _UniKvs_acSet.set(this, void 0);
162
181
  /**
163
182
  * 基本となる実行コンテキスト情報です。
164
183
  */
@@ -172,10 +191,8 @@ export default class UniKvs {
172
191
  */
173
192
  _UniKvs_transformers.set(this, void 0);
174
193
  __classPrivateFieldSet(this, _UniKvs_con, null, "f");
175
- __classPrivateFieldSet(this, _UniKvs_context, {
176
- ...context,
177
- "unikvs:instance": this,
178
- }, "f");
194
+ __classPrivateFieldSet(this, _UniKvs_acSet, new Set(), "f");
195
+ __classPrivateFieldSet(this, _UniKvs_context, { ...context }, "f");
179
196
  __classPrivateFieldSet(this, _UniKvs_destinations, destinations, "f");
180
197
  __classPrivateFieldSet(this, _UniKvs_transformers, transformers, "f");
181
198
  }
@@ -185,114 +202,131 @@ export default class UniKvs {
185
202
  * @returns 利用可能である場合は true、そうでない場合は false を返します。
186
203
  */
187
204
  get isOpen() {
188
- return !!__classPrivateFieldGet(this, _UniKvs_con, "f");
205
+ return __classPrivateFieldGet(this, _UniKvs_con, "f") !== null;
189
206
  }
190
207
  async open(...args) {
191
- if (__classPrivateFieldGet(this, _UniKvs_con, "f")) {
208
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") !== null) {
192
209
  throw new UniKvsIsOpenError();
193
210
  }
194
- __classPrivateFieldSet(this, _UniKvs_con, {
195
- conAc: new AbortController(),
196
- ioMux: new Asyncmux(),
197
- }, "f");
211
+ const [options = {}] = v.parseInput(OpenArgsSchema, args);
212
+ const { signal: signalOption, context: contextOption } = options;
213
+ const ac = new AbortController();
214
+ const signal = combineSignals([ac.signal, signalOption]);
215
+ const context = mergeContext(__classPrivateFieldGet(this, _UniKvs_context, "f"), contextOption);
216
+ context["unikvs:action"] = "open";
217
+ signal.throwIfAborted();
218
+ __classPrivateFieldGet(this, _UniKvs_acSet, "f").add(ac);
219
+ const dispose = [];
220
+ const lock = await asyncmux(this, signal);
198
221
  try {
199
- const [options = {}] = parse(OpenArgsSchema, args);
200
- const { signal: signalOption, context: contextOption } = options;
201
- const { conAc } = __classPrivateFieldGet(this, _UniKvs_con, "f");
202
- const signal = combineSignals([conAc.signal, signalOption]);
203
- const context = mergeContext(__classPrivateFieldGet(this, _UniKvs_context, "f"), contextOption);
204
- context["unikvs:action"] = "open";
222
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") !== null) {
223
+ throw new UniKvsIsOpenError();
224
+ }
205
225
  const openFns = [];
206
- const dispose = [];
207
- const lock = await asyncmux(this, signal);
208
- try {
209
- // ロック待機中に接続状態が変更されていないか再確認します。
210
- if (__classPrivateFieldGet(this, _UniKvs_con, "f").conAc !== conAc) {
211
- throw new UniKvsIsOpenError();
212
- }
213
- // 各ストレージのオープン処理をリストに追加します。
214
- for (const storage of __classPrivateFieldGet(this, _UniKvs_destinations, "f")) {
215
- openFns.push([
216
- async () => {
217
- await storage.open(context, signal);
218
- dispose.push(async () => {
219
- try {
220
- await storage.close(context, signal);
221
- }
222
- catch (ex) {
223
- logger.error `Failed to close storage: ${ex}`;
224
- }
225
- });
226
- },
227
- "storage",
228
- ]);
226
+ // 各ストレージのオープン処理をリストに追加します。
227
+ for (const storage of __classPrivateFieldGet(this, _UniKvs_destinations, "f")) {
228
+ openFns.push([
229
+ async () => {
230
+ await storage.open(context, signal);
231
+ dispose.push(async () => {
232
+ try {
233
+ await storage.close(context, signal);
234
+ }
235
+ catch (ex) {
236
+ logger.error `Failed to close storage: ${ex}`;
237
+ }
238
+ });
239
+ },
240
+ "storage",
241
+ ]);
242
+ }
243
+ // 各トランスフォーマーのオープン処理をリストに追加します。
244
+ for (const transformer of __classPrivateFieldGet(this, _UniKvs_transformers, "f")) {
245
+ openFns.push([
246
+ async () => {
247
+ await transformer.open(context, signal);
248
+ dispose.push(async () => {
249
+ try {
250
+ await transformer.close(context, signal);
251
+ }
252
+ catch (ex) {
253
+ logger.error `Failed to close transformer: ${ex}`;
254
+ }
255
+ });
256
+ },
257
+ "transformer",
258
+ ]);
259
+ }
260
+ // すべての処理を並列に実行し、エラーが発生した場合は集約します。
261
+ const errors = [];
262
+ await Promise.all(openFns.map(async ([f, plugin]) => {
263
+ try {
264
+ await f();
229
265
  }
230
- // 各トランスフォーマーのオープン処理をリストに追加します。
231
- for (const transformer of __classPrivateFieldGet(this, _UniKvs_transformers, "f")) {
232
- openFns.push([
233
- async () => {
234
- await transformer.open(context, signal);
235
- dispose.push(async () => {
236
- try {
237
- await transformer.close(context, signal);
238
- }
239
- catch (ex) {
240
- logger.error `Failed to close transformer: ${ex}`;
241
- }
242
- });
243
- },
244
- "transformer",
245
- ]);
266
+ catch (reason) {
267
+ errors.push({ plugin, reason });
246
268
  }
247
- // すべての処理を並列に実行し、エラーが発生した場合は集約します。
248
- const errors = [];
249
- await Promise.all(openFns.map(async ([f, plugin]) => {
250
- try {
251
- await f();
252
- }
253
- catch (reason) {
254
- errors.push({ plugin, reason });
255
- }
269
+ }));
270
+ if (errors.length > 0) {
271
+ throw new PluginOperationAggregateError({ action: "open", errors });
272
+ }
273
+ __classPrivateFieldSet(this, _UniKvs_con, {
274
+ ac,
275
+ io: new Asyncmux(),
276
+ }, "f");
277
+ }
278
+ catch (ex) {
279
+ if (dispose.length > 0) {
280
+ await Promise.all(dispose.map(async (f) => {
281
+ await f();
256
282
  }));
257
- if (errors.length > 0) {
258
- throw new PluginOperationAggregateError({ action: "open", errors });
259
- }
260
283
  }
261
- catch (ex) {
262
- __classPrivateFieldSet(this, _UniKvs_con, null, "f"); // unlock の前に null に戻します。
263
- if (dispose.length > 0) {
264
- await Promise.all(dispose.map(async (f) => {
265
- await f();
266
- }));
284
+ throw ex;
285
+ }
286
+ finally {
287
+ __classPrivateFieldGet(this, _UniKvs_acSet, "f").delete(ac);
288
+ lock.release();
289
+ }
290
+ }
291
+ close(...args) {
292
+ try {
293
+ const [options = {}] = v.parseInput(CloseArgsSchema, args);
294
+ const { signal = AbortSignal.timeout(10e3), context: contextOption } = options;
295
+ const context = mergeContext(__classPrivateFieldGet(this, _UniKvs_context, "f"), contextOption);
296
+ context["unikvs:action"] = "close";
297
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") === null) {
298
+ const acArr = [...__classPrivateFieldGet(this, _UniKvs_acSet, "f")];
299
+ __classPrivateFieldGet(this, _UniKvs_acSet, "f").clear();
300
+ for (const ac of acArr) {
301
+ if (!ac.signal.aborted) {
302
+ ac.abort(new UniKvsIsNotOpenError());
303
+ }
267
304
  }
268
- throw ex;
305
+ throw new UniKvsIsNotOpenError();
269
306
  }
270
- finally {
271
- lock.unlock();
307
+ const { ac } = __classPrivateFieldGet(this, _UniKvs_con, "f");
308
+ const acArr = [ac, ...__classPrivateFieldGet(this, _UniKvs_acSet, "f")];
309
+ __classPrivateFieldGet(this, _UniKvs_acSet, "f").clear();
310
+ for (const ac of acArr) {
311
+ if (!ac.signal.aborted) {
312
+ ac.abort(new UniKvsIsNotOpenError());
313
+ }
272
314
  }
315
+ return __classPrivateFieldGet(this, _UniKvs_instances, "m", _UniKvs_close).call(this, context, signal, __classPrivateFieldGet(this, _UniKvs_con, "f"));
273
316
  }
274
317
  catch (ex) {
275
- __classPrivateFieldSet(this, _UniKvs_con, null, "f");
276
- throw ex;
318
+ return Promise.reject(ex);
277
319
  }
278
320
  }
279
- async close(...args) {
280
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
281
- throw new UniKvsIsNotOpenError();
282
- }
283
- const [options = {}] = parse(CloseArgsSchema, args);
284
- const { signal = AbortSignal.timeout(10e3), context: contextOption } = options;
285
- const context = mergeContext(__classPrivateFieldGet(this, _UniKvs_context, "f"), contextOption);
286
- context["unikvs:action"] = "close";
287
- const { conAc, ioMux } = __classPrivateFieldGet(this, _UniKvs_con, "f");
288
- conAc.abort(new UniKvsIsNotOpenError()); // 実行中の他の操作をすべて中断させるために signal を発火させます。
321
+ async [(_UniKvs_con = new WeakMap(), _UniKvs_acSet = new WeakMap(), _UniKvs_context = new WeakMap(), _UniKvs_destinations = new WeakMap(), _UniKvs_transformers = new WeakMap(), _UniKvs_instances = new WeakSet(), _UniKvs_close = async function _UniKvs_close(context, signal, con) {
289
322
  const lock = await asyncmux(this, signal);
290
323
  try {
291
324
  // ロック待機中に接続状態が変更されていないか再確認します。
292
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
325
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") !== con) {
293
326
  throw new UniKvsIsNotOpenError();
294
327
  }
295
- const lock = await ioMux.lock({ signal });
328
+ const { io } = __classPrivateFieldGet(this, _UniKvs_con, "f");
329
+ const lock = await io.lock({ signal });
296
330
  try {
297
331
  const closeFns = [];
298
332
  // ストレージのクローズ処理を登録します。
@@ -328,15 +362,14 @@ export default class UniKvs {
328
362
  }
329
363
  }
330
364
  finally {
331
- lock.unlock();
365
+ lock.release();
332
366
  }
367
+ __classPrivateFieldSet(this, _UniKvs_con, null, "f");
333
368
  }
334
369
  finally {
335
- __classPrivateFieldSet(this, _UniKvs_con, null, "f");
336
- lock.unlock();
370
+ lock.release();
337
371
  }
338
- }
339
- async [(_UniKvs_con = new WeakMap(), _UniKvs_context = new WeakMap(), _UniKvs_destinations = new WeakMap(), _UniKvs_transformers = new WeakMap(), Symbol.asyncDispose)]() {
372
+ }, Symbol.asyncDispose)]() {
340
373
  if (!this.isOpen) {
341
374
  return;
342
375
  }
@@ -345,20 +378,20 @@ export default class UniKvs {
345
378
  });
346
379
  }
347
380
  async set(...args) {
348
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
381
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") === null) {
349
382
  throw new UniKvsIsNotOpenError();
350
383
  }
351
- const [options] = parse(SetArgsSchema, args);
384
+ const [options] = v.parseInput(SetArgsSchema, args);
352
385
  const { key, value, signal: signalOption, context: contextOption } = options;
353
- const { conAc, ioMux } = __classPrivateFieldGet(this, _UniKvs_con, "f");
354
- const signal = combineSignals([conAc.signal, signalOption]);
386
+ const { ac, io } = __classPrivateFieldGet(this, _UniKvs_con, "f");
387
+ const signal = combineSignals([ac.signal, signalOption]);
355
388
  const context = mergeContext(__classPrivateFieldGet(this, _UniKvs_context, "f"), contextOption);
356
389
  context["unikvs:action"] = "set";
357
390
  context["unikvs:key"] = key;
358
391
  const lock = await asyncmux(this, signal);
359
392
  try {
360
393
  // ロック待機中に接続状態が変更されていないか再確認します。
361
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
394
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") === null) {
362
395
  throw new UniKvsIsNotOpenError();
363
396
  }
364
397
  const errors = [];
@@ -370,7 +403,7 @@ export default class UniKvs {
370
403
  const e = await transformer.getEncodable(context, signal);
371
404
  data = data.pipeThrough(e);
372
405
  }
373
- const lock = await ioMux.lock({ key, signal });
406
+ const lock = await io.lock({ key, signal });
374
407
  try {
375
408
  await Promise.all(__classPrivateFieldGet(this, _UniKvs_destinations, "f").map(async (storage, i) => {
376
409
  try {
@@ -389,7 +422,7 @@ export default class UniKvs {
389
422
  }));
390
423
  }
391
424
  finally {
392
- lock.unlock();
425
+ lock.release();
393
426
  }
394
427
  }
395
428
  else {
@@ -398,7 +431,7 @@ export default class UniKvs {
398
431
  for (const transformer of __classPrivateFieldGet(this, _UniKvs_transformers, "f")) {
399
432
  data = await transformer.encode(context, signal, data);
400
433
  }
401
- const lock = await ioMux.lock({ key, signal });
434
+ const lock = await io.lock({ key, signal });
402
435
  try {
403
436
  await Promise.all(__classPrivateFieldGet(this, _UniKvs_destinations, "f").map(async (storage) => {
404
437
  try {
@@ -411,7 +444,7 @@ export default class UniKvs {
411
444
  }));
412
445
  }
413
446
  finally {
414
- lock.unlock();
447
+ lock.release();
415
448
  }
416
449
  }
417
450
  // エラーが発生した場合は集約します。
@@ -442,29 +475,29 @@ export default class UniKvs {
442
475
  }
443
476
  }
444
477
  finally {
445
- lock.unlock();
478
+ lock.release();
446
479
  }
447
480
  }
448
481
  async get(...args) {
449
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
482
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") === null) {
450
483
  throw new UniKvsIsNotOpenError();
451
484
  }
452
- const [options] = parse(GetArgsSchema, args);
485
+ const [options] = v.parseInput(GetArgsSchema, args);
453
486
  const { key, signal: signalOption, context: contextOption } = options;
454
- const { conAc, ioMux } = __classPrivateFieldGet(this, _UniKvs_con, "f");
455
- const signal = combineSignals([conAc.signal, signalOption]);
487
+ const { ac, io } = __classPrivateFieldGet(this, _UniKvs_con, "f");
488
+ const signal = combineSignals([ac.signal, signalOption]);
456
489
  const context = mergeContext(__classPrivateFieldGet(this, _UniKvs_context, "f"), contextOption);
457
490
  context["unikvs:action"] = "get";
458
491
  context["unikvs:key"] = key;
459
492
  const lock = await asyncmux.readonly(this, signal);
460
493
  try {
461
494
  // ロック待機中に接続状態が変更されていないか再確認します。
462
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
495
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") === null) {
463
496
  throw new UniKvsIsNotOpenError();
464
497
  }
465
498
  const NONE = {};
466
499
  let data = NONE;
467
- const lock = await ioMux.rLock({ key, signal });
500
+ const lock = await io.rLock({ key, signal });
468
501
  try {
469
502
  // 各ストレージを巡回し、最初に見つかったデータを取得します。
470
503
  for (const storage of __classPrivateFieldGet(this, _UniKvs_destinations, "f")) {
@@ -475,7 +508,7 @@ export default class UniKvs {
475
508
  }
476
509
  }
477
510
  finally {
478
- lock.unlock();
511
+ lock.release();
479
512
  }
480
513
  if (data === NONE) {
481
514
  throw new KeyNotFoundError({ key });
@@ -489,29 +522,29 @@ export default class UniKvs {
489
522
  return data;
490
523
  }
491
524
  finally {
492
- lock.unlock();
525
+ lock.release();
493
526
  }
494
527
  }
495
528
  async stream(...args) {
496
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
529
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") === null) {
497
530
  throw new UniKvsIsNotOpenError();
498
531
  }
499
- const [options] = parse(StreamArgsSchema, args);
532
+ const [options] = v.parseInput(StreamArgsSchema, args);
500
533
  const { key, signal: signalOption, context: contextOption } = options;
501
- const { conAc, ioMux } = __classPrivateFieldGet(this, _UniKvs_con, "f");
502
- const signal = combineSignals([conAc.signal, signalOption]);
534
+ const { ac, io } = __classPrivateFieldGet(this, _UniKvs_con, "f");
535
+ const signal = combineSignals([ac.signal, signalOption]);
503
536
  const context = mergeContext(__classPrivateFieldGet(this, _UniKvs_context, "f"), contextOption);
504
537
  context["unikvs:action"] = "stream";
505
538
  context["unikvs:key"] = key;
506
539
  const lock = await asyncmux(this, signal);
507
540
  try {
508
541
  // ロック待機中に接続状態が変更されていないか再確認します。
509
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
542
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") === null) {
510
543
  throw new UniKvsIsNotOpenError();
511
544
  }
512
545
  const NONE = {};
513
546
  let r = NONE;
514
- const lock = await ioMux.rLock({ key, signal });
547
+ const lock = await io.rLock({ key, signal });
515
548
  try {
516
549
  // 各ストレージを巡回し、最初に見つかったデータを取得します。
517
550
  for (const storage of __classPrivateFieldGet(this, _UniKvs_destinations, "f")) {
@@ -537,7 +570,7 @@ export default class UniKvs {
537
570
  }
538
571
  catch { }
539
572
  try {
540
- lock.unlock();
573
+ lock.release();
541
574
  }
542
575
  catch { }
543
576
  });
@@ -553,7 +586,7 @@ export default class UniKvs {
553
586
  }
554
587
  catch { }
555
588
  try {
556
- lock.unlock();
589
+ lock.release();
557
590
  }
558
591
  catch { }
559
592
  });
@@ -562,32 +595,32 @@ export default class UniKvs {
562
595
  return valueStream;
563
596
  }
564
597
  catch (ex) {
565
- lock.unlock();
598
+ lock.release();
566
599
  throw ex;
567
600
  }
568
601
  }
569
602
  finally {
570
- lock.unlock();
603
+ lock.release();
571
604
  }
572
605
  }
573
606
  async has(...args) {
574
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
607
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") === null) {
575
608
  throw new UniKvsIsNotOpenError();
576
609
  }
577
- const [options] = parse(HasArgsSchema, args);
610
+ const [options] = v.parseInput(HasArgsSchema, args);
578
611
  const { key, signal: signalOption, context: contextOption } = options;
579
- const { conAc, ioMux } = __classPrivateFieldGet(this, _UniKvs_con, "f");
580
- const signal = combineSignals([conAc.signal, signalOption]);
612
+ const { ac, io } = __classPrivateFieldGet(this, _UniKvs_con, "f");
613
+ const signal = combineSignals([ac.signal, signalOption]);
581
614
  const context = mergeContext(__classPrivateFieldGet(this, _UniKvs_context, "f"), contextOption);
582
615
  context["unikvs:action"] = "has";
583
616
  context["unikvs:key"] = key;
584
617
  const lock = await asyncmux(this, signal);
585
618
  try {
586
619
  // ロック待機中に接続状態が変更されていないか再確認します。
587
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
620
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") === null) {
588
621
  throw new UniKvsIsNotOpenError();
589
622
  }
590
- const lock = await ioMux.rLock({ key, signal });
623
+ const lock = await io.rLock({ key, signal });
591
624
  try {
592
625
  // いずれかのストレージに存在すれば true を返します。
593
626
  for (const storage of __classPrivateFieldGet(this, _UniKvs_destinations, "f")) {
@@ -598,31 +631,31 @@ export default class UniKvs {
598
631
  return false;
599
632
  }
600
633
  finally {
601
- lock.unlock();
634
+ lock.release();
602
635
  }
603
636
  }
604
637
  finally {
605
- lock.unlock();
638
+ lock.release();
606
639
  }
607
640
  }
608
641
  async delete(...args) {
609
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
642
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") === null) {
610
643
  throw new UniKvsIsNotOpenError();
611
644
  }
612
- const [options] = parse(DeleteArgsSchema, args);
645
+ const [options] = v.parseInput(DeleteArgsSchema, args);
613
646
  const { key, signal: signalOption, context: contextOption } = options;
614
- const { conAc, ioMux } = __classPrivateFieldGet(this, _UniKvs_con, "f");
615
- const signal = combineSignals([conAc.signal, signalOption]);
647
+ const { ac, io } = __classPrivateFieldGet(this, _UniKvs_con, "f");
648
+ const signal = combineSignals([ac.signal, signalOption]);
616
649
  const context = mergeContext(__classPrivateFieldGet(this, _UniKvs_context, "f"), contextOption);
617
650
  context["unikvs:action"] = "delete";
618
651
  context["unikvs:key"] = key;
619
652
  const lock = await asyncmux(this, signal);
620
653
  try {
621
654
  // ロック待機中に接続状態が変更されていないか再確認します。
622
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
655
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") === null) {
623
656
  throw new UniKvsIsNotOpenError();
624
657
  }
625
- const lock = await ioMux.lock({ key, signal });
658
+ const lock = await io.lock({ key, signal });
626
659
  try {
627
660
  // すべてのストレージから対象データを削除します。
628
661
  // すべての処理を並列に実行し、エラーが発生した場合は集約します。
@@ -642,30 +675,30 @@ export default class UniKvs {
642
675
  }
643
676
  }
644
677
  finally {
645
- lock.unlock();
678
+ lock.release();
646
679
  }
647
680
  }
648
681
  finally {
649
- lock.unlock();
682
+ lock.release();
650
683
  }
651
684
  }
652
685
  async clear(...args) {
653
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
686
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") === null) {
654
687
  throw new UniKvsIsNotOpenError();
655
688
  }
656
- const [options = {}] = parse(ClearArgsSchema, args);
689
+ const [options = {}] = v.parseInput(ClearArgsSchema, args);
657
690
  const { signal: signalOption, context: contextOption } = options;
658
- const { conAc, ioMux } = __classPrivateFieldGet(this, _UniKvs_con, "f");
659
- const signal = combineSignals([conAc.signal, signalOption]);
691
+ const { ac, io } = __classPrivateFieldGet(this, _UniKvs_con, "f");
692
+ const signal = combineSignals([ac.signal, signalOption]);
660
693
  const context = mergeContext(__classPrivateFieldGet(this, _UniKvs_context, "f"), contextOption);
661
694
  context["unikvs:action"] = "clear";
662
695
  const lock = await asyncmux(this, signal);
663
696
  try {
664
697
  // ロック待機中に接続状態が変更されていないか再確認します。
665
- if (!__classPrivateFieldGet(this, _UniKvs_con, "f")) {
698
+ if (__classPrivateFieldGet(this, _UniKvs_con, "f") === null) {
666
699
  throw new UniKvsIsNotOpenError();
667
700
  }
668
- const lock = await ioMux.lock({ signal });
701
+ const lock = await io.lock({ signal });
669
702
  try {
670
703
  // すべてのストレージで一括削除を実行します。
671
704
  // すべての処理を並列に実行し、エラーが発生した場合は集約します。
@@ -683,11 +716,11 @@ export default class UniKvs {
683
716
  }
684
717
  }
685
718
  finally {
686
- lock.unlock();
719
+ lock.release();
687
720
  }
688
721
  }
689
722
  finally {
690
- lock.unlock();
723
+ lock.release();
691
724
  }
692
725
  }
693
726
  }