unikvs 0.0.7 → 0.0.8

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.
@@ -1,4 +1,13 @@
1
1
  import { Context } from "@unikvs/core";
2
2
  import type { ContextSource } from "./context.types.js";
3
+ /**
4
+ * 2 つの Context オブジェクトを結合します。
5
+ *
6
+ * 基本となる Context に対して、追加または上書きするコンテキスト情報を結合し、新しい Context オブジェクトを生成して返します。追加するコンテキスト情報が配列(キーと値のペアの配列)である場合は、オブジェクトに変換した上で結合処理を行います。
7
+ *
8
+ * @param a ベースとなる読み取り専用の Context オブジェクトです。
9
+ * @param b 結合する読み取り専用の Context、または ContextSource、あるいは undefined です。
10
+ * @returns 結合された新しい Context オブジェクトです。
11
+ */
3
12
  export default function mergeContext(a: Readonly<Context>, b: Readonly<Context> | ContextSource | undefined): Context;
4
13
  //# sourceMappingURL=_merge-context.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_merge-context.d.ts","sourceRoot":"","sources":["../../src/_merge-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EACpB,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,aAAa,GAAG,SAAS,GAC/C,OAAO,CAET"}
1
+ {"version":3,"file":"_merge-context.d.ts","sourceRoot":"","sources":["../../src/_merge-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,CAAC,OAAO,UAAU,YAAY,CAClC,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,EACpB,CAAC,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,aAAa,GAAG,SAAS,GAC/C,OAAO,CAET"}
@@ -1,3 +1,12 @@
1
+ /**
2
+ * 2 つの Context オブジェクトを結合します。
3
+ *
4
+ * 基本となる Context に対して、追加または上書きするコンテキスト情報を結合し、新しい Context オブジェクトを生成して返します。追加するコンテキスト情報が配列(キーと値のペアの配列)である場合は、オブジェクトに変換した上で結合処理を行います。
5
+ *
6
+ * @param a ベースとなる読み取り専用の Context オブジェクトです。
7
+ * @param b 結合する読み取り専用の Context、または ContextSource、あるいは undefined です。
8
+ * @returns 結合された新しい Context オブジェクトです。
9
+ */
1
10
  export default function mergeContext(a, b) {
2
11
  return { ...a, ...(Array.isArray(b) ? Object.fromEntries(b) : b) };
3
12
  }
@@ -1,17 +1,18 @@
1
- import type { Context, IReadableStream, IStorage, IWritableStream } from "@unikvs/core";
1
+ import type { Context, IStorage, IReadableStream, IWritableStream } from "@unikvs/core";
2
2
  import { type PluginOperationAggregateError } from "./errors.js";
3
3
  export default class UniKvsStorage {
4
4
  private readonly io;
5
+ private managed;
5
6
  constructor(io: IStorage);
6
7
  open(context: Context, signal: AbortSignal): Promise<void>;
7
8
  close(context: Context, signal: AbortSignal): Promise<void>;
8
- onOtherWriteError(context: Context, signal: AbortSignal, key: IStorage.Key, error: PluginOperationAggregateError): Promise<void>;
9
9
  write(context: Context, signal: AbortSignal, key: IStorage.Key, data: unknown): Promise<void>;
10
10
  read(context: Context, signal: AbortSignal, key: IStorage.Key): Promise<unknown>;
11
11
  exists(context: Context, signal: AbortSignal, key: IStorage.Key): Promise<boolean>;
12
12
  delete(context: Context, signal: AbortSignal, key: IStorage.Key): Promise<void>;
13
13
  clear(context: Context, signal: AbortSignal): Promise<void>;
14
- getWritable(context: Context, signal: AbortSignal, key: IStorage.Key): Promise<IWritableStream>;
15
14
  getReadable(context: Context, signal: AbortSignal, key: IStorage.Key): Promise<IReadableStream>;
15
+ getWritable(context: Context, signal: AbortSignal, key: IStorage.Key): Promise<IWritableStream>;
16
+ onOtherWriteError(context: Context, signal: AbortSignal, key: IStorage.Key, err: PluginOperationAggregateError): Promise<void>;
16
17
  }
17
18
  //# sourceMappingURL=_storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_storage.d.ts","sourceRoot":"","sources":["../../src/_storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGxF,OAAO,EACL,KAAK,6BAA6B,EAInC,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;gBAEX,EAAE,EAAE,QAAQ;IAIlB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1D,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3D,iBAAiB,CAC5B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,QAAQ,CAAC,GAAG,EACjB,KAAK,EAAE,6BAA6B,GACnC,OAAO,CAAC,IAAI,CAAC;IAiBH,KAAK,CAChB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,QAAQ,CAAC,GAAG,EACjB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,IAAI,CAAC;IAQH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAUhF,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAWlF,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/E,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,WAAW,CACtB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,QAAQ,CAAC,GAAG,GAChB,OAAO,CAAC,eAAe,CAAC;IAed,WAAW,CACtB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,QAAQ,CAAC,GAAG,GAChB,OAAO,CAAC,eAAe,CAAC;CAc5B"}
1
+ {"version":3,"file":"_storage.d.ts","sourceRoot":"","sources":["../../src/_storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAa,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGnG,OAAO,EACL,KAAK,6BAA6B,EAInC,MAAM,aAAa,CAAC;AAErB,MAAM,CAAC,OAAO,OAAO,aAAa;IAChC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAW;IAE9B,OAAO,CAAC,OAAO,CAAU;gBAEN,EAAE,EAAE,QAAQ;IAKlB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3D,KAAK,CAChB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,QAAQ,CAAC,GAAG,EACjB,IAAI,EAAE,OAAO,GACZ,OAAO,CAAC,IAAI,CAAC;IAQH,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAUhF,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAWlF,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ/E,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAQ3D,WAAW,CACtB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,QAAQ,CAAC,GAAG,GAChB,OAAO,CAAC,eAAe,CAAC;IAed,WAAW,CACtB,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,QAAQ,CAAC,GAAG,GAChB,OAAO,CAAC,eAAe,CAAC;IAed,iBAAiB,CAC5B,OAAO,EAAE,OAAO,EAChB,MAAM,EAAE,WAAW,EACnB,GAAG,EAAE,QAAQ,CAAC,GAAG,EACjB,GAAG,EAAE,6BAA6B,GACjC,OAAO,CAAC,IAAI,CAAC;CAuBjB"}
@@ -1,14 +1,16 @@
1
1
  import * as v from "./_valibot.js";
2
- import { ReadableStreamNotSupportedError, StorageIsNotOpenError, WritableStreamNotSupportedError, } from "./errors.js";
2
+ import { StorageIsNotOpenError, ReadableStreamNotSupportedError, WritableStreamNotSupportedError, } from "./errors.js";
3
3
  export default class UniKvsStorage {
4
4
  constructor(io) {
5
5
  this.io = io;
6
+ this.managed = false;
6
7
  }
7
8
  async open(context, signal) {
8
9
  if (typeof this.io.open !== "function") {
9
10
  return;
10
11
  }
11
12
  if (!this.io.isOpen) {
13
+ this.managed = true;
12
14
  await this.io.open({ signal, context });
13
15
  }
14
16
  }
@@ -16,24 +18,10 @@ export default class UniKvsStorage {
16
18
  if (typeof this.io.close !== "function") {
17
19
  return;
18
20
  }
19
- if (this.io.isOpen) {
21
+ if (this.io.isOpen && this.managed) {
20
22
  await this.io.close({ signal, context });
21
23
  }
22
24
  }
23
- async onOtherWriteError(context, signal, key, error) {
24
- if (!this.io.isOpen) {
25
- throw new StorageIsNotOpenError({ name: this.io.name });
26
- }
27
- if (typeof this.io.onOtherWriteError !== "function") {
28
- return;
29
- }
30
- await this.io.onOtherWriteError({
31
- key,
32
- error: error,
33
- signal,
34
- context,
35
- });
36
- }
37
25
  async write(context, signal, key, data) {
38
26
  if (!this.io.isOpen) {
39
27
  throw new StorageIsNotOpenError({ name: this.io.name });
@@ -67,6 +55,17 @@ export default class UniKvsStorage {
67
55
  }
68
56
  await this.io.clear({ signal, context });
69
57
  }
58
+ async getReadable(context, signal, key) {
59
+ if (!this.io.isOpen) {
60
+ throw new StorageIsNotOpenError({ name: this.io.name });
61
+ }
62
+ if (typeof this.io.getReadable !== "function") {
63
+ throw new ReadableStreamNotSupportedError({ name: this.io.name });
64
+ }
65
+ const output = await this.io.getReadable({ key, signal, context });
66
+ const parsed = v.parseOutput(v.instance(ReadableStream), output);
67
+ return parsed;
68
+ }
70
69
  async getWritable(context, signal, key) {
71
70
  if (!this.io.isOpen) {
72
71
  throw new StorageIsNotOpenError({ name: this.io.name });
@@ -78,15 +77,18 @@ export default class UniKvsStorage {
78
77
  const parsed = v.parseOutput(v.instance(WritableStream), output);
79
78
  return parsed;
80
79
  }
81
- async getReadable(context, signal, key) {
80
+ async onOtherWriteError(context, signal, key, err) {
82
81
  if (!this.io.isOpen) {
83
82
  throw new StorageIsNotOpenError({ name: this.io.name });
84
83
  }
85
- if (typeof this.io.getReadable !== "function") {
86
- throw new ReadableStreamNotSupportedError({ name: this.io.name });
84
+ if (typeof this.io.onOtherWriteError !== "function") {
85
+ return;
87
86
  }
88
- const output = await this.io.getReadable({ key, signal, context });
89
- const parsed = v.parseOutput(v.instance(ReadableStream), output);
90
- return parsed;
87
+ await this.io.onOtherWriteError({
88
+ key,
89
+ error: err,
90
+ signal,
91
+ context,
92
+ });
91
93
  }
92
94
  }
@@ -1 +1 @@
1
- {"version":3,"file":"_to-value-stream.d.ts","sourceRoot":"","sources":["../../src/_to-value-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAIpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,CAAC,EACrC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,EAClC,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAClC,WAAW,CAAC,CAAC,CAAC,CAyChB"}
1
+ {"version":3,"file":"_to-value-stream.d.ts","sourceRoot":"","sources":["../../src/_to-value-stream.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAIpD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D;;;;;;;GAOG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,CAAC,EACrC,cAAc,EAAE,eAAe,CAAC,CAAC,CAAC,EAClC,cAAc,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAClC,WAAW,CAAC,CAAC,CAAC,CA0DhB"}
@@ -10,13 +10,24 @@ import logger from "./_logger.js";
10
10
  */
11
11
  export default function toValueStream(readableStream, onAsyncDispose) {
12
12
  const cacheMap = new Map();
13
- async function handleDispose() {
13
+ async function disposeValueStream() {
14
14
  await callAsyncableFnOnce(cacheMap, "dispose", onAsyncDispose);
15
15
  }
16
- // 既存のストリームに対して Symbol.asyncIterator を動的に割り当てて返します。
17
- return Object.assign(readableStream.pipeThrough(new TransformStream({ flush: handleDispose })), {
18
- dispose: handleDispose,
19
- [Symbol.asyncDispose]: handleDispose,
16
+ return Object.assign(
17
+ // ReadableStream
18
+ readableStream.pipeThrough(new TransformStream({
19
+ flush: disposeValueStream,
20
+ })),
21
+ // AsyncDisposable
22
+ {
23
+ [Symbol.asyncDispose]: disposeValueStream,
24
+ },
25
+ // { dispose(): Promise<void> }
26
+ {
27
+ dispose: disposeValueStream,
28
+ },
29
+ // AsyncIterable<T, void, unknown>
30
+ {
20
31
  async *[Symbol.asyncIterator]() {
21
32
  const r = this.getReader();
22
33
  try {
@@ -1,6 +1,7 @@
1
1
  import type { Context, IDecodable, ITransformer, IEncodable } from "@unikvs/core";
2
2
  export default class UniKvsTransformer {
3
3
  private readonly tf;
4
+ private managed;
4
5
  constructor(tf: ITransformer);
5
6
  open(context: Context, signal: AbortSignal): Promise<void>;
6
7
  close(context: Context, signal: AbortSignal): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"_transformer.d.ts","sourceRoot":"","sources":["../../src/_transformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQlF,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;gBAEf,EAAE,EAAE,YAAY;IAItB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAU1D,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3D,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAU1E,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAU1E,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAexE,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CActF"}
1
+ {"version":3,"file":"_transformer.d.ts","sourceRoot":"","sources":["../../src/_transformer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAQlF,MAAM,CAAC,OAAO,OAAO,iBAAiB;IACpC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAe;IAElC,OAAO,CAAC,OAAO,CAAU;gBAEN,EAAE,EAAE,YAAY;IAKtB,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1D,KAAK,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAU3D,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAU1E,MAAM,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC;IAU1E,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAexE,YAAY,CAAC,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;CActF"}
@@ -2,12 +2,14 @@ import { DecodableStreamNotSupportedError, EncodableStreamNotSupportedError, Tra
2
2
  export default class UniKvsTransformer {
3
3
  constructor(tf) {
4
4
  this.tf = tf;
5
+ this.managed = false;
5
6
  }
6
7
  async open(context, signal) {
7
8
  if (typeof this.tf.open !== "function") {
8
9
  return;
9
10
  }
10
11
  if (!this.tf.isOpen) {
12
+ this.managed = true;
11
13
  await this.tf.open({ signal, context });
12
14
  }
13
15
  }
@@ -15,7 +17,7 @@ export default class UniKvsTransformer {
15
17
  if (typeof this.tf.close !== "function") {
16
18
  return;
17
19
  }
18
- if (this.tf.isOpen) {
20
+ if (this.tf.isOpen && this.managed) {
19
21
  await this.tf.close({ signal, context });
20
22
  }
21
23
  }
@@ -1 +1 @@
1
- {"version":3,"file":"_valibot.d.ts","sourceRoot":"","sources":["../../src/_valibot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,KAAK,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEtD,OAAO,EAGL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAC5B,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EACL,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,GACZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAErF,KAAK,UAAU,GAAG,OAAO,SAAS,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AAE9F,MAAM,WAAW,0BAA0B;IACzC,KAAK,IAAI,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;CAClE;AAED,wBAAgB,UAAU,CAAC,KAAK,CAAC,OAAO,SAAS,UAAU,EACzD,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,EACd,KAAK,GAAE,0BAA8C,GACpD,WAAW,CAAC,OAAO,CAAC,CAStB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;CACnE;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,OAAO,SAAS,UAAU,EAC1D,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,EACd,KAAK,GAAE,2BAAgD,GACtD,WAAW,CAAC,OAAO,CAAC,CAStB"}
1
+ {"version":3,"file":"_valibot.d.ts","sourceRoot":"","sources":["../../src/_valibot.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EAAE,KAAK,WAAW,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEtD,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,sBAAsB,EAG5B,MAAM,aAAa,CAAC;AAErB,YAAY,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACvD,OAAO,EACL,GAAG,EACH,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,MAAM,EACN,MAAM,EACN,MAAM,EACN,OAAO,EACP,QAAQ,EACR,QAAQ,EACR,QAAQ,EACR,WAAW,GACZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAErF,KAAK,UAAU,GAAG,OAAO,SAAS,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC;AAE9F,MAAM,WAAW,0BAA0B;IACzC,KAAK,IAAI,EAAE,qBAAqB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;CAClE;AAED,wBAAgB,UAAU,CAAC,KAAK,CAAC,OAAO,SAAS,UAAU,EACzD,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,EACd,KAAK,GAAE,0BAA8C,GACpD,WAAW,CAAC,OAAO,CAAC,CAStB;AAED,MAAM,WAAW,2BAA2B;IAC1C,KAAK,IAAI,EAAE,sBAAsB,EAAE,OAAO,CAAC,EAAE,YAAY,GAAG,KAAK,CAAC;CACnE;AAED,wBAAgB,WAAW,CAAC,KAAK,CAAC,OAAO,SAAS,UAAU,EAC1D,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,OAAO,EACd,KAAK,GAAE,2BAAgD,GACtD,WAAW,CAAC,OAAO,CAAC,CAStB"}
@@ -3,7 +3,7 @@ import UniKvsStorage from "./_storage.js";
3
3
  import UniKvsTransformer from "./_transformer.js";
4
4
  import * as v from "./_valibot.js";
5
5
  import type { ContextSource } from "./context.types.js";
6
- import { type $InferPlainValueData, type $InferStreamValueChunkData, type IUniKvsConfigBuilder, type KeyofKeyValueMapping, type KeyValueMapping, type PlainValue, type StreamValue, type Value } from "./unikvs-config.js";
6
+ import { type Value, type PlainValue, type StreamValue, type KeyValueMapping, type $InferPlainValueData, type IUniKvsConfigBuilder, type KeyofKeyValueMapping, type $InferStreamValueChunkData } from "./unikvs-config.js";
7
7
  import type { ValueOf } from "./utils.types.js";
8
8
  import type { ValueStream } from "./value-stream.types.js";
9
9
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"unikvs.d.ts","sourceRoot":"","sources":["../../src/unikvs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"unikvs.d.ts","sourceRoot":"","sources":["../../src/unikvs.ts"],"names":[],"mappings":"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"}
@@ -10,13 +10,13 @@ var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (
10
10
  return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
11
11
  };
12
12
  var _UniKvs_instances, _UniKvs_con, _UniKvs_acSet, _UniKvs_context, _UniKvs_destinations, _UniKvs_transformers, _UniKvs_close;
13
+ import { combineSignals } from "abort-signal-utils";
13
14
  import { asyncmux, Asyncmux } from "asyncmux";
14
- import combineSignals from "./_combine-signals.js";
15
15
  import logger from "./_logger.js";
16
16
  import mergeContext from "./_merge-context.js";
17
17
  import toValueStream from "./_to-value-stream.js";
18
18
  import * as v from "./_valibot.js";
19
- import { KeyNotFoundError, PluginOperationAggregateError, UniKvsIsNotOpenError, UniKvsIsOpenError, } from "./errors.js";
19
+ import { KeyNotFoundError, UniKvsIsOpenError, PluginOperationAggregateError, UniKvsIsNotOpenError, } from "./errors.js";
20
20
  import UniKvsConfig from "./unikvs-config.js";
21
21
  // -------------------------------------------------------------------------------------------------
22
22
  //
@@ -122,10 +122,9 @@ const ClearArgsSchema = v.tuple([v.optional(ClearOptionsSchema)]);
122
122
  const ioLockRegistry = typeof FinalizationRegistry !== "function"
123
123
  ? null
124
124
  : new FinalizationRegistry((lock) => {
125
- try {
125
+ if (!lock.released) {
126
126
  lock.release();
127
127
  }
128
- catch { }
129
128
  });
130
129
  /**
131
130
  * UniKvs メインクラスです。
@@ -5,7 +5,7 @@
5
5
  *
6
6
  * @template T ストリームを流れるデータの型です。
7
7
  */
8
- export interface ValueStream<T = any> extends Omit<ReadableStream, keyof AsyncDisposable | keyof AsyncIteratorObject<T>>, AsyncDisposable, AsyncIteratorObject<T, void, void> {
8
+ export interface ValueStream<T = any> extends Omit<ReadableStream, keyof AsyncDisposable | keyof AsyncIterable<unknown>>, AsyncDisposable, AsyncIterable<T, void, unknown> {
9
9
  dispose(): Promise<void>;
10
10
  }
11
11
  //# sourceMappingURL=value-stream.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"value-stream.types.d.ts","sourceRoot":"","sources":["../../src/value-stream.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG,CAClC,SACE,IAAI,CAAC,cAAc,EAAE,MAAM,eAAe,GAAG,MAAM,mBAAmB,CAAC,CAAC,CAAC,CAAC,EAC1E,eAAe,EACf,mBAAmB,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IACpC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
1
+ {"version":3,"file":"value-stream.types.d.ts","sourceRoot":"","sources":["../../src/value-stream.types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,GAAG,CAClC,SACE,IAAI,CAAC,cAAc,EAAE,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAC,EAC1E,eAAe,EACf,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC;IACjC,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unikvs",
3
- "version": "0.0.7",
3
+ "version": "0.0.8",
4
4
  "description": "",
5
5
  "homepage": "https://github.com/tai-kun/unikvs",
6
6
  "license": "MIT",
@@ -25,28 +25,29 @@
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@tai-kun/valibot-extra-lab": "^0.0.4",
29
- "@unikvs/core": "0.0.7",
28
+ "@tai-kun/valibot-extra-lab": "^0.0.5",
29
+ "@unikvs/core": "0.0.8",
30
+ "abort-signal-utils": "^0.0.2",
30
31
  "asyncmux": "^0.0.8",
31
- "call-fn-once": "^0.0.4",
32
+ "call-fn-once": "^0.0.6",
32
33
  "try-capture-stack-trace": "^0.0.3"
33
34
  },
34
35
  "devDependencies": {
35
36
  "@tsconfig/node24": "^24.0.4",
36
37
  "@tsconfig/strictest": "^2.0.8",
37
- "@types/node": "^24.12.2",
38
- "@unikvs/checksum": "0.0.7",
39
- "@unikvs/compression": "0.0.7",
40
- "@unikvs/fs.node": "0.0.7",
41
- "@unikvs/memory": "0.0.7",
42
- "@unikvs/opfs": "0.0.7",
43
- "@unikvs/utils": "0.0.7",
44
- "@vitest/browser": "^4.1.5",
45
- "@vitest/browser-playwright": "^4.1.5",
38
+ "@types/node": "^24.12.4",
39
+ "@unikvs/checksum": "0.0.8",
40
+ "@unikvs/compression": "0.0.8",
41
+ "@unikvs/fs.node": "0.0.8",
42
+ "@unikvs/memory": "0.0.8",
43
+ "@unikvs/opfs": "0.0.8",
44
+ "@unikvs/utils": "0.0.8",
45
+ "@vitest/browser": "^4.1.6",
46
+ "@vitest/browser-playwright": "^4.1.6",
46
47
  "npm-check-updates": "^20.0.2",
47
- "playwright": "^1.59.1",
48
- "vite": "^8.0.10",
49
- "vitest": "^4.1.5"
48
+ "playwright": "^1.60.0",
49
+ "vite": "^8.0.12",
50
+ "vitest": "^4.1.6"
50
51
  },
51
52
  "peerDependencies": {
52
53
  "@logtape/logtape": "^2.0.0",
@@ -2,6 +2,15 @@ import { Context } from "@unikvs/core";
2
2
 
3
3
  import type { ContextSource } from "./context.types.js";
4
4
 
5
+ /**
6
+ * 2 つの Context オブジェクトを結合します。
7
+ *
8
+ * 基本となる Context に対して、追加または上書きするコンテキスト情報を結合し、新しい Context オブジェクトを生成して返します。追加するコンテキスト情報が配列(キーと値のペアの配列)である場合は、オブジェクトに変換した上で結合処理を行います。
9
+ *
10
+ * @param a ベースとなる読み取り専用の Context オブジェクトです。
11
+ * @param b 結合する読み取り専用の Context、または ContextSource、あるいは undefined です。
12
+ * @returns 結合された新しい Context オブジェクトです。
13
+ */
5
14
  export default function mergeContext(
6
15
  a: Readonly<Context>,
7
16
  b: Readonly<Context> | ContextSource | undefined,
package/src/_storage.ts CHANGED
@@ -1,18 +1,21 @@
1
- import type { Context, IReadableStream, IStorage, IWritableStream } from "@unikvs/core";
1
+ import type { Context, IStorage, ErrorBase, IReadableStream, IWritableStream } from "@unikvs/core";
2
2
 
3
3
  import * as v from "./_valibot.js";
4
4
  import {
5
5
  type PluginOperationAggregateError,
6
- ReadableStreamNotSupportedError,
7
6
  StorageIsNotOpenError,
7
+ ReadableStreamNotSupportedError,
8
8
  WritableStreamNotSupportedError,
9
9
  } from "./errors.js";
10
10
 
11
11
  export default class UniKvsStorage {
12
12
  private readonly io: IStorage;
13
13
 
14
+ private managed: boolean;
15
+
14
16
  public constructor(io: IStorage) {
15
17
  this.io = io;
18
+ this.managed = false;
16
19
  }
17
20
 
18
21
  public async open(context: Context, signal: AbortSignal): Promise<void> {
@@ -21,6 +24,7 @@ export default class UniKvsStorage {
21
24
  }
22
25
 
23
26
  if (!this.io.isOpen) {
27
+ this.managed = true;
24
28
  await this.io.open({ signal, context });
25
29
  }
26
30
  }
@@ -30,33 +34,11 @@ export default class UniKvsStorage {
30
34
  return;
31
35
  }
32
36
 
33
- if (this.io.isOpen) {
37
+ if (this.io.isOpen && this.managed) {
34
38
  await this.io.close({ signal, context });
35
39
  }
36
40
  }
37
41
 
38
- public async onOtherWriteError(
39
- context: Context,
40
- signal: AbortSignal,
41
- key: IStorage.Key,
42
- error: PluginOperationAggregateError,
43
- ): Promise<void> {
44
- if (!this.io.isOpen) {
45
- throw new StorageIsNotOpenError({ name: this.io.name });
46
- }
47
-
48
- if (typeof this.io.onOtherWriteError !== "function") {
49
- return;
50
- }
51
-
52
- await this.io.onOtherWriteError({
53
- key,
54
- error: error as any,
55
- signal,
56
- context,
57
- });
58
- }
59
-
60
42
  public async write(
61
43
  context: Context,
62
44
  signal: AbortSignal,
@@ -107,6 +89,25 @@ export default class UniKvsStorage {
107
89
  await this.io.clear({ signal, context });
108
90
  }
109
91
 
92
+ public async getReadable(
93
+ context: Context,
94
+ signal: AbortSignal,
95
+ key: IStorage.Key,
96
+ ): Promise<IReadableStream> {
97
+ if (!this.io.isOpen) {
98
+ throw new StorageIsNotOpenError({ name: this.io.name });
99
+ }
100
+
101
+ if (typeof this.io.getReadable !== "function") {
102
+ throw new ReadableStreamNotSupportedError({ name: this.io.name });
103
+ }
104
+
105
+ const output = await this.io.getReadable({ key, signal, context });
106
+ const parsed = v.parseOutput(v.instance(ReadableStream), output);
107
+
108
+ return parsed;
109
+ }
110
+
110
111
  public async getWritable(
111
112
  context: Context,
112
113
  signal: AbortSignal,
@@ -126,22 +127,32 @@ export default class UniKvsStorage {
126
127
  return parsed;
127
128
  }
128
129
 
129
- public async getReadable(
130
+ public async onOtherWriteError(
130
131
  context: Context,
131
132
  signal: AbortSignal,
132
133
  key: IStorage.Key,
133
- ): Promise<IReadableStream> {
134
+ err: PluginOperationAggregateError,
135
+ ): Promise<void> {
134
136
  if (!this.io.isOpen) {
135
137
  throw new StorageIsNotOpenError({ name: this.io.name });
136
138
  }
137
139
 
138
- if (typeof this.io.getReadable !== "function") {
139
- throw new ReadableStreamNotSupportedError({ name: this.io.name });
140
+ if (typeof this.io.onOtherWriteError !== "function") {
141
+ return;
140
142
  }
141
143
 
142
- const output = await this.io.getReadable({ key, signal, context });
143
- const parsed = v.parseOutput(v.instance(ReadableStream), output);
144
-
145
- return parsed;
144
+ await this.io.onOtherWriteError({
145
+ key,
146
+ error: err as ErrorBase<{
147
+ readonly plugin: "storage";
148
+ readonly action: "write";
149
+ readonly errors: readonly {
150
+ readonly plugin: "storage";
151
+ readonly reason: unknown;
152
+ }[];
153
+ }>,
154
+ signal,
155
+ context,
156
+ });
146
157
  }
147
158
  }
@@ -17,43 +17,60 @@ export default function toValueStream<T>(
17
17
  onAsyncDispose: () => Promise<void>,
18
18
  ): ValueStream<T> {
19
19
  const cacheMap = new Map();
20
- async function handleDispose(): Promise<void> {
20
+ async function disposeValueStream(): Promise<void> {
21
21
  await callAsyncableFnOnce(cacheMap, "dispose", onAsyncDispose);
22
22
  }
23
23
 
24
- // 既存のストリームに対して Symbol.asyncIterator を動的に割り当てて返します。
25
- return Object.assign(readableStream.pipeThrough(new TransformStream({ flush: handleDispose })), {
26
- dispose: handleDispose,
27
- [Symbol.asyncDispose]: handleDispose,
28
- async *[Symbol.asyncIterator](this: IReadableStream<T>) {
29
- const r = this.getReader();
30
- try {
31
- // ストリームが終了するまでループを回し、チャンクを読み取ります。
32
- while (true) {
33
- const { done, value } = await r.read();
34
- if (done) {
35
- break;
36
- }
24
+ return Object.assign(
25
+ // ReadableStream
26
+ readableStream.pipeThrough(
27
+ new TransformStream({
28
+ flush: disposeValueStream,
29
+ }),
30
+ ),
37
31
 
38
- yield value;
39
- }
40
- } catch (ex) {
41
- // エラーが発生した場合は、リーダーのキャンセルを試みます。
42
- try {
43
- await r.cancel(ex);
44
- } catch (ex) {
45
- logger.error`Failed to cancel reader: ${ex}`;
46
- }
32
+ // AsyncDisposable
33
+ {
34
+ [Symbol.asyncDispose]: disposeValueStream,
35
+ },
47
36
 
48
- throw ex;
49
- } finally {
50
- // 最後に必ずリーダーのロックを解放し、ストリームを再利用可能な状態にします。
37
+ // { dispose(): Promise<void> }
38
+ {
39
+ dispose: disposeValueStream,
40
+ },
41
+
42
+ // AsyncIterable<T, void, unknown>
43
+ {
44
+ async *[Symbol.asyncIterator](this: ReadableStream<T>) {
45
+ const r = this.getReader();
51
46
  try {
52
- r.releaseLock();
47
+ // ストリームが終了するまでループを回し、チャンクを読み取ります。
48
+ while (true) {
49
+ const { done, value } = await r.read();
50
+ if (done) {
51
+ break;
52
+ }
53
+
54
+ yield value;
55
+ }
53
56
  } catch (ex) {
54
- logger.error`Failed to release reader's lock: ${ex}`;
57
+ // エラーが発生した場合は、リーダーのキャンセルを試みます。
58
+ try {
59
+ await r.cancel(ex);
60
+ } catch (ex) {
61
+ logger.error`Failed to cancel reader: ${ex}`;
62
+ }
63
+
64
+ throw ex;
65
+ } finally {
66
+ // 最後に必ずリーダーのロックを解放し、ストリームを再利用可能な状態にします。
67
+ try {
68
+ r.releaseLock();
69
+ } catch (ex) {
70
+ logger.error`Failed to release reader's lock: ${ex}`;
71
+ }
55
72
  }
56
- }
73
+ },
57
74
  },
58
- }) as unknown as ValueStream<T>;
75
+ );
59
76
  }
@@ -9,8 +9,11 @@ import {
9
9
  export default class UniKvsTransformer {
10
10
  private readonly tf: ITransformer;
11
11
 
12
+ private managed: boolean;
13
+
12
14
  public constructor(tf: ITransformer) {
13
15
  this.tf = tf;
16
+ this.managed = false;
14
17
  }
15
18
 
16
19
  public async open(context: Context, signal: AbortSignal): Promise<void> {
@@ -19,6 +22,7 @@ export default class UniKvsTransformer {
19
22
  }
20
23
 
21
24
  if (!this.tf.isOpen) {
25
+ this.managed = true;
22
26
  await this.tf.open({ signal, context });
23
27
  }
24
28
  }
@@ -28,7 +32,7 @@ export default class UniKvsTransformer {
28
32
  return;
29
33
  }
30
34
 
31
- if (this.tf.isOpen) {
35
+ if (this.tf.isOpen && this.managed) {
32
36
  await this.tf.close({ signal, context });
33
37
  }
34
38
  }
package/src/_valibot.ts CHANGED
@@ -3,10 +3,10 @@ import { tryCaptureStackTrace } from "try-capture-stack-trace";
3
3
  import { type InferOutput, safeParse } from "valibot";
4
4
 
5
5
  import {
6
- InvalidInputError,
7
- InvalidOutputError,
8
6
  type InvalidInputErrorArgs,
9
7
  type InvalidOutputErrorArgs,
8
+ InvalidInputError,
9
+ InvalidOutputError,
10
10
  } from "./errors.js";
11
11
 
12
12
  export type { InferInput, InferOutput } from "valibot";
package/src/unikvs.ts CHANGED
@@ -1,7 +1,7 @@
1
- import type { Context, IReadableStream, IStorage } from "@unikvs/core";
2
- import { asyncmux, Asyncmux, type AsyncmuxLock } from "asyncmux";
1
+ import type { Context, IStorage, IReadableStream } from "@unikvs/core";
2
+ import { combineSignals } from "abort-signal-utils";
3
+ import { type AsyncmuxLock, asyncmux, Asyncmux } from "asyncmux";
3
4
 
4
- import combineSignals from "./_combine-signals.js";
5
5
  import logger from "./_logger.js";
6
6
  import mergeContext from "./_merge-context.js";
7
7
  import UniKvsStorage from "./_storage.js";
@@ -11,19 +11,19 @@ import * as v from "./_valibot.js";
11
11
  import type { ContextSource } from "./context.types.js";
12
12
  import {
13
13
  KeyNotFoundError,
14
+ UniKvsIsOpenError,
14
15
  PluginOperationAggregateError,
15
16
  UniKvsIsNotOpenError,
16
- UniKvsIsOpenError,
17
17
  } from "./errors.js";
18
18
  import UniKvsConfig, {
19
+ type Value,
20
+ type PlainValue,
21
+ type StreamValue,
22
+ type KeyValueMapping,
19
23
  type $InferPlainValueData,
20
- type $InferStreamValueChunkData,
21
24
  type IUniKvsConfigBuilder,
22
25
  type KeyofKeyValueMapping,
23
- type KeyValueMapping,
24
- type PlainValue,
25
- type StreamValue,
26
- type Value,
26
+ type $InferStreamValueChunkData,
27
27
  } from "./unikvs-config.js";
28
28
  import type { ValueOf } from "./utils.types.js";
29
29
  import type { ValueStream } from "./value-stream.types.js";
@@ -344,13 +344,13 @@ export type ClearOptions = v.InferInput<typeof ClearOptionsSchema>;
344
344
  /**
345
345
  * ストリームの読み取りロックを自動解放するための FinalizationRegistry です。
346
346
  */
347
- const ioLockRegistry: FinalizationRegistry<AsyncmuxLock> | null =
347
+ const ioLockRegistry =
348
348
  typeof FinalizationRegistry !== "function"
349
349
  ? null
350
- : new FinalizationRegistry((lock) => {
351
- try {
350
+ : new FinalizationRegistry<AsyncmuxLock>((lock) => {
351
+ if (!lock.released) {
352
352
  lock.release();
353
- } catch {}
353
+ }
354
354
  });
355
355
 
356
356
  /**
@@ -7,8 +7,8 @@
7
7
  */
8
8
  export interface ValueStream<T = any>
9
9
  extends
10
- Omit<ReadableStream, keyof AsyncDisposable | keyof AsyncIteratorObject<T>>,
10
+ Omit<ReadableStream, keyof AsyncDisposable | keyof AsyncIterable<unknown>>,
11
11
  AsyncDisposable,
12
- AsyncIteratorObject<T, void, void> {
12
+ AsyncIterable<T, void, unknown> {
13
13
  dispose(): Promise<void>;
14
14
  }
@@ -1,9 +0,0 @@
1
- /**
2
- * 複数の AbortSignal を 1 つに結合します。
3
- *
4
- * @param signals 結合対象となる AbortSignal、または null / undefined の配列です。
5
- * @returns 結合された新しい AbortSignal です。
6
- */
7
- declare let combineSignals: (signals: readonly (AbortSignal | null | undefined)[]) => AbortSignal;
8
- export default combineSignals;
9
- //# sourceMappingURL=_combine-signals.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"_combine-signals.d.ts","sourceRoot":"","sources":["../../src/_combine-signals.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,QAAA,IAAI,cAAc,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC,EAAE,KAAK,WAAW,CAAC;AA4D1F,eAAe,cAAc,CAAC"}
@@ -1,59 +0,0 @@
1
- /**
2
- * 複数の AbortSignal を 1 つに結合します。
3
- *
4
- * @param signals 結合対象となる AbortSignal、または null / undefined の配列です。
5
- * @returns 結合された新しい AbortSignal です。
6
- */
7
- let combineSignals;
8
- if ("any" in AbortSignal && typeof AbortSignal.any === "function") {
9
- // AbortSignal.any がネイティブでサポートされている場合はそれを使用します。
10
- const AbortSignalAny = AbortSignal.any.bind(AbortSignal);
11
- combineSignals = function combineSignals(inputSignals) {
12
- const signals = inputSignals.filter((signal) => signal instanceof AbortSignal);
13
- return AbortSignalAny(signals);
14
- };
15
- }
16
- else {
17
- // AbortSignal.any が未実装の環境向けのポリフィル実装です。
18
- combineSignals = function combineSignals(inputSignals) {
19
- const ac = new AbortController();
20
- const signals = [];
21
- for (const signal of inputSignals) {
22
- if (signal?.aborted) {
23
- // すでに中断されている場合は、その理由(reason)を使用して即座に中断処理を行います。
24
- ac.abort(signal.reason);
25
- return ac.signal;
26
- }
27
- if (signal instanceof AbortSignal) {
28
- signals.push(signal);
29
- }
30
- }
31
- /**
32
- * すべての監視対象信号からイベントリスナーを削除するクリーンアップ関数です。
33
- *
34
- * メモリーリークを防ぐために、いずれかの信号が中断された際に実行されます。
35
- */
36
- function cleanup() {
37
- for (const signal of signals) {
38
- signal.removeEventListener("abort", handleAbort);
39
- }
40
- }
41
- /**
42
- * いずれかの信号が abort イベントを発火させた際に呼び出されるハンドラーです。
43
- *
44
- * @this AbortSignal 中断を検知した AbortSignal インスタンス自身を指します。
45
- */
46
- function handleAbort() {
47
- // 親のコントローラーに対して、検知した信号の理由を添えて中断を指示します。
48
- ac.abort(this.reason);
49
- // 一つの信号が中断されれば他の監視は不要になるため、クリーンアップを呼び出します。
50
- cleanup();
51
- }
52
- // すべての有効な信号に対して、中断イベントを監視するリスナーを登録します。
53
- for (const signal of signals) {
54
- signal.addEventListener("abort", handleAbort, { once: true });
55
- }
56
- return ac.signal;
57
- };
58
- }
59
- export default combineSignals;
@@ -1,67 +0,0 @@
1
- /**
2
- * 複数の AbortSignal を 1 つに結合します。
3
- *
4
- * @param signals 結合対象となる AbortSignal、または null / undefined の配列です。
5
- * @returns 結合された新しい AbortSignal です。
6
- */
7
- let combineSignals: (signals: readonly (AbortSignal | null | undefined)[]) => AbortSignal;
8
-
9
- if ("any" in AbortSignal && typeof AbortSignal.any === "function") {
10
- // AbortSignal.any がネイティブでサポートされている場合はそれを使用します。
11
-
12
- const AbortSignalAny = AbortSignal.any.bind(AbortSignal);
13
- combineSignals = function combineSignals(inputSignals) {
14
- const signals = inputSignals.filter((signal) => signal instanceof AbortSignal);
15
- return AbortSignalAny(signals);
16
- };
17
- } else {
18
- // AbortSignal.any が未実装の環境向けのポリフィル実装です。
19
-
20
- combineSignals = function combineSignals(inputSignals) {
21
- const ac = new AbortController();
22
- const signals: AbortSignal[] = [];
23
- for (const signal of inputSignals) {
24
- if (signal?.aborted) {
25
- // すでに中断されている場合は、その理由(reason)を使用して即座に中断処理を行います。
26
- ac.abort(signal.reason);
27
- return ac.signal;
28
- }
29
-
30
- if (signal instanceof AbortSignal) {
31
- signals.push(signal);
32
- }
33
- }
34
-
35
- /**
36
- * すべての監視対象信号からイベントリスナーを削除するクリーンアップ関数です。
37
- *
38
- * メモリーリークを防ぐために、いずれかの信号が中断された際に実行されます。
39
- */
40
- function cleanup(): void {
41
- for (const signal of signals) {
42
- signal.removeEventListener("abort", handleAbort);
43
- }
44
- }
45
-
46
- /**
47
- * いずれかの信号が abort イベントを発火させた際に呼び出されるハンドラーです。
48
- *
49
- * @this AbortSignal 中断を検知した AbortSignal インスタンス自身を指します。
50
- */
51
- function handleAbort(this: AbortSignal): void {
52
- // 親のコントローラーに対して、検知した信号の理由を添えて中断を指示します。
53
- ac.abort(this.reason);
54
- // 一つの信号が中断されれば他の監視は不要になるため、クリーンアップを呼び出します。
55
- cleanup();
56
- }
57
-
58
- // すべての有効な信号に対して、中断イベントを監視するリスナーを登録します。
59
- for (const signal of signals) {
60
- signal.addEventListener("abort", handleAbort, { once: true });
61
- }
62
-
63
- return ac.signal;
64
- };
65
- }
66
-
67
- export default combineSignals;