unikvs 0.0.9 → 0.0.10

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.
package/src/errors.ts CHANGED
@@ -13,55 +13,115 @@ import type { BaseIssue } from "valibot";
13
13
  //
14
14
  // -------------------------------------------------------------------------------------------------
15
15
 
16
+ /**
17
+ * 無効な入出力を表すエラーの基底クラスです。
18
+ *
19
+ * @template TMeta エラーのメタデータの型です。
20
+ */
16
21
  export class InvalidUsageErrorBase<
17
22
  TMeta extends ErrorMeta | undefined = ErrorMeta | undefined,
18
23
  > extends ErrorBase<TMeta> {}
19
24
 
20
25
  // -------------------------------------------------------------------------------------------------
21
26
 
27
+ /**
28
+ * バリデーションの問題を表す valibot のイシューです。
29
+ */
22
30
  export type Issue = BaseIssue<unknown>;
23
31
 
32
+ /**
33
+ * InvalidInputError に付与されるメタデータです。
34
+ */
24
35
  export type InvalidInputErrorMeta = {
36
+ /**
37
+ * 検証に失敗した入力値です。
38
+ */
25
39
  readonly input: unknown;
40
+
41
+ /**
42
+ * 検証で検出されたイシューのリストです。
43
+ */
26
44
  readonly issues: readonly [Issue, ...Issue[]];
27
45
  };
28
46
 
29
- export type InvalidInputErrorArgs = {
47
+ /**
48
+ * InvalidInputError のコンストラクター引数です。
49
+ *
50
+ * エラーの追加情報 (`cause`) も含みます。
51
+ */
52
+ export type InvalidInputErrorArgs = ErrorOptions & {
53
+ /**
54
+ * 検証の対象となった値です。
55
+ */
30
56
  readonly value: unknown;
57
+
58
+ /**
59
+ * 検証で検出されたイシューのリストです。
60
+ */
31
61
  readonly issues: readonly [Issue, ...Issue[]];
32
62
  };
33
63
 
64
+ /**
65
+ * 入力値が期待するスキーマに適合しない場合に投げられるエラーです。
66
+ */
34
67
  export class InvalidInputError extends InvalidUsageErrorBase<InvalidInputErrorMeta> {
35
68
  static {
36
69
  this.prototype.name = "UniKvsInvalidInputError";
37
70
  }
38
71
 
39
- public constructor(args: InvalidInputErrorArgs, options?: ErrorOptions) {
40
- const { value: input, issues } = args;
41
- super({ input, issues }, ({ issues }) => issues.map((i) => i.message).join(": "), options);
72
+ public constructor(args: InvalidInputErrorArgs) {
73
+ const { value: input, issues, ...options } = args;
74
+ const meta: InvalidInputErrorMeta = { input, issues };
75
+ super(meta, ({ issues }) => issues.map((i) => i.message).join(": "), options);
42
76
  }
43
77
  }
44
78
 
45
79
  // -------------------------------------------------------------------------------------------------
46
80
 
81
+ /**
82
+ * InvalidOutputError に付与されるメタデータです。
83
+ */
47
84
  export type InvalidOutputErrorMeta = {
85
+ /**
86
+ * 検証に失敗した出力値です。
87
+ */
48
88
  readonly output: unknown;
89
+
90
+ /**
91
+ * 検証で検出されたイシューのリストです。
92
+ */
49
93
  readonly issues: readonly [Issue, ...Issue[]];
50
94
  };
51
95
 
52
- export type InvalidOutputErrorArgs = {
96
+ /**
97
+ * InvalidOutputError のコンストラクター引数です。
98
+ *
99
+ * エラーの追加情報 (`cause`) も含みます。
100
+ */
101
+ export type InvalidOutputErrorArgs = ErrorOptions & {
102
+ /**
103
+ * 検証の対象となった値です。
104
+ */
53
105
  readonly value: unknown;
106
+
107
+ /**
108
+ * 検証で検出されたイシューのリストです。
109
+ */
54
110
  readonly issues: readonly [Issue, ...Issue[]];
55
111
  };
56
112
 
113
+ /**
114
+ * 出力値が期待するスキーマに適合しない場合に投げられるエラーです。
115
+ */
57
116
  export class InvalidOutputError extends InvalidUsageErrorBase<InvalidOutputErrorMeta> {
58
117
  static {
59
118
  this.prototype.name = "UniKvsInvalidOutputError";
60
119
  }
61
120
 
62
- public constructor(args: InvalidOutputErrorArgs, options?: ErrorOptions) {
63
- const { value: output, issues } = args;
64
- super({ output, issues }, ({ issues }) => issues.map((i) => i.message).join(": "), options);
121
+ public constructor(args: InvalidOutputErrorArgs) {
122
+ const { value: output, issues, ...options } = args;
123
+ const meta: InvalidOutputErrorMeta = { output, issues };
124
+ super(meta, ({ issues }) => issues.map((i) => i.message).join(": "), options);
65
125
  }
66
126
  }
67
127
 
@@ -71,6 +131,9 @@ export class InvalidOutputError extends InvalidUsageErrorBase<InvalidOutputError
71
131
  //
72
132
  // -------------------------------------------------------------------------------------------------
73
133
 
134
+ /**
135
+ * すでに開いている UniKvs に対して再度オープン操作が行われた場合に投げられるエラーです。
136
+ */
74
137
  export class UniKvsIsOpenError extends ErrorBase<undefined> {
75
138
  static {
76
139
  this.prototype.name = "UniKvsIsOpenError";
@@ -83,6 +146,9 @@ export class UniKvsIsOpenError extends ErrorBase<undefined> {
83
146
 
84
147
  setErrorMessage(UniKvsIsOpenError, "UniKvs は開いています", "ja");
85
148
 
149
+ /**
150
+ * UniKvs が開かれていない状態で操作が行われた場合に投げられるエラーです。
151
+ */
86
152
  export class UniKvsIsNotOpenError extends ErrorBase<undefined> {
87
153
  static {
88
154
  this.prototype.name = "UniKvsIsNotOpenError";
@@ -95,19 +161,35 @@ export class UniKvsIsNotOpenError extends ErrorBase<undefined> {
95
161
 
96
162
  setErrorMessage(UniKvsIsNotOpenError, "UniKvs は開いていません", "ja");
97
163
 
164
+ /**
165
+ * KeyNotFoundError に付与されるメタデータです。
166
+ */
98
167
  export type KeyNotFoundErrorMeta = {
168
+ /**
169
+ * 見つからなかったキーです。
170
+ */
99
171
  readonly key: IStorage.Key;
100
172
  };
101
173
 
102
- export type KeyNotFoundErrorArgs = KeyNotFoundErrorMeta;
174
+ /**
175
+ * KeyNotFoundError のコンストラクター引数です。
176
+ *
177
+ * エラーの追加情報 (`cause`) も含みます。
178
+ */
179
+ export type KeyNotFoundErrorArgs = ErrorOptions & KeyNotFoundErrorMeta;
103
180
 
181
+ /**
182
+ * 指定したキーのデータがどのストレージにも存在しない場合に投げられるエラーです。
183
+ */
104
184
  export class KeyNotFoundError extends ErrorBase<KeyNotFoundErrorMeta> {
105
185
  static {
106
186
  this.prototype.name = "UniKvsKeyNotFoundError";
107
187
  }
108
188
 
109
- public constructor(args: KeyNotFoundErrorArgs, options?: ErrorOptions) {
110
- super(args, ({ key }) => `IStorage.Key ${JSON.stringify(key)} not found`, options);
189
+ public constructor(args: KeyNotFoundErrorArgs) {
190
+ const { key, ...options } = args;
191
+ const meta: KeyNotFoundErrorMeta = { key };
192
+ super(meta, ({ key }) => `IStorage.Key ${JSON.stringify(key)} not found`, options);
111
193
  }
112
194
  }
113
195
 
@@ -141,86 +223,153 @@ setErrorMessage(
141
223
 
142
224
  // setErrorMessage(StorageIsOpenError, ({ name }) => `ストレージ "${name}" は開いています`, "ja");
143
225
 
226
+ /**
227
+ * StorageIsNotOpenError に付与されるメタデータです。
228
+ */
144
229
  export type StorageIsNotOpenErrorMeta = {
230
+ /**
231
+ * 開かれていないストレージの名前です。
232
+ */
145
233
  readonly name: string;
146
234
  };
147
235
 
148
- export type StorageIsNotOpenErrorArgs = StorageIsNotOpenErrorMeta;
236
+ /**
237
+ * StorageIsNotOpenError のコンストラクター引数です。
238
+ *
239
+ * エラーの追加情報 (`cause`) も含みます。
240
+ */
241
+ export type StorageIsNotOpenErrorArgs = ErrorOptions & StorageIsNotOpenErrorMeta;
149
242
 
243
+ /**
244
+ * ストレージが開かれていない状態で操作が行われた場合に投げられるエラーです。
245
+ */
150
246
  export class StorageIsNotOpenError extends ErrorBase<StorageIsNotOpenErrorMeta> {
151
247
  static {
152
248
  this.prototype.name = "UniKvsStorageIsNotOpenError";
153
249
  }
154
250
 
155
- public constructor(args: StorageIsNotOpenErrorArgs, options?: ErrorOptions) {
156
- super(args, ({ name }) => `Storage "${name}" is not open`, options);
251
+ public constructor(args: StorageIsNotOpenErrorArgs) {
252
+ const { name, ...options } = args;
253
+ const meta: StorageIsNotOpenErrorMeta = { name };
254
+ super(meta, ({ name }) => `Storage "${name}" is not open`, options);
157
255
  }
158
256
  }
159
257
 
160
258
  setErrorMessage(StorageIsNotOpenError, ({ name }) => `ストレージ "${name}" は開いていません`, "ja");
161
259
 
260
+ /**
261
+ * WritableStreamNotSupportedError に付与されるメタデータです。
262
+ */
162
263
  export type WritableStreamNotSupportedErrorMeta = {
264
+ /**
265
+ * 対象のストレージの名前です。
266
+ */
163
267
  readonly name: string;
164
268
  };
165
269
 
166
- export type WritableStreamNotSupportedErrorArgs = WritableStreamNotSupportedErrorMeta;
167
-
270
+ /**
271
+ * WritableStreamNotSupportedError のコンストラクター引数です。
272
+ *
273
+ * エラーの追加情報 (`cause`) も含みます。
274
+ */
275
+ export type WritableStreamNotSupportedErrorArgs = ErrorOptions &
276
+ WritableStreamNotSupportedErrorMeta;
277
+
278
+ /**
279
+ * ストレージが書き込み可能なストリームをサポートしていない場合に投げられるエラーです。
280
+ */
168
281
  export class WritableStreamNotSupportedError extends ErrorBase<WritableStreamNotSupportedErrorMeta> {
169
282
  static {
170
283
  this.prototype.name = "UniKvsWritableStreamNotSupportedError";
171
284
  }
172
285
 
173
- public constructor(args: WritableStreamNotSupportedErrorArgs, options?: ErrorOptions) {
174
- super(args, ({ name }) => `Storage "${name}" does not support writable stream`, options);
286
+ public constructor(args: WritableStreamNotSupportedErrorArgs) {
287
+ const { name, ...options } = args;
288
+ const meta: WritableStreamNotSupportedErrorMeta = { name };
289
+ super(meta, ({ name }) => `Storage "${name}" does not support writable stream`, options);
175
290
  }
176
291
  }
177
292
 
178
293
  setErrorMessage(
179
- StorageIsNotOpenError,
294
+ WritableStreamNotSupportedError,
180
295
  ({ name }) => `ストレージ "${name}" は書き込み可能なストリームをサポートしていません`,
181
296
  "ja",
182
297
  );
183
298
 
299
+ /**
300
+ * ReadableStreamNotSupportedError に付与されるメタデータです。
301
+ */
184
302
  export type ReadableStreamNotSupportedErrorMeta = {
303
+ /**
304
+ * 対象のストレージの名前です。
305
+ */
185
306
  readonly name: string;
186
307
  };
187
308
 
188
- export type ReadableStreamNotSupportedErrorArgs = ReadableStreamNotSupportedErrorMeta;
189
-
309
+ /**
310
+ * ReadableStreamNotSupportedError のコンストラクター引数です。
311
+ *
312
+ * エラーの追加情報 (`cause`) も含みます。
313
+ */
314
+ export type ReadableStreamNotSupportedErrorArgs = ErrorOptions &
315
+ ReadableStreamNotSupportedErrorMeta;
316
+
317
+ /**
318
+ * ストレージが読み取り可能なストリームをサポートしていない場合に投げられるエラーです。
319
+ */
190
320
  export class ReadableStreamNotSupportedError extends ErrorBase<ReadableStreamNotSupportedErrorMeta> {
191
321
  static {
192
322
  this.prototype.name = "UniKvsReadableStreamNotSupportedError";
193
323
  }
194
324
 
195
- public constructor(args: ReadableStreamNotSupportedErrorArgs, options?: ErrorOptions) {
196
- super(args, ({ name }) => `Storage "${name}" does not support readable stream`, options);
325
+ public constructor(args: ReadableStreamNotSupportedErrorArgs) {
326
+ const { name, ...options } = args;
327
+ const meta: ReadableStreamNotSupportedErrorMeta = { name };
328
+ super(meta, ({ name }) => `Storage "${name}" does not support readable stream`, options);
197
329
  }
198
330
  }
199
331
 
200
332
  setErrorMessage(
201
- StorageIsNotOpenError,
333
+ ReadableStreamNotSupportedError,
202
334
  ({ name }) => `ストレージ "${name}" は読み取り可能なストリームをサポートしていません`,
203
335
  "ja",
204
336
  );
205
337
 
338
+ /**
339
+ * MultipartWriteNotSupportedError に付与されるメタデータです。
340
+ */
206
341
  export type MultipartWriteNotSupportedErrorMeta = {
342
+ /**
343
+ * 対象のストレージの名前です。
344
+ */
207
345
  readonly name: string;
208
346
  };
209
347
 
210
- export type MultipartWriteNotSupportedErrorArgs = MultipartWriteNotSupportedErrorMeta;
211
-
348
+ /**
349
+ * MultipartWriteNotSupportedError のコンストラクター引数です。
350
+ *
351
+ * エラーの追加情報 (`cause`) も含みます。
352
+ */
353
+ export type MultipartWriteNotSupportedErrorArgs = ErrorOptions &
354
+ MultipartWriteNotSupportedErrorMeta;
355
+
356
+ /**
357
+ * ストレージがマルチパート書き込みをサポートしていない場合に投げられるエラーです。
358
+ */
212
359
  export class MultipartWriteNotSupportedError extends ErrorBase<MultipartWriteNotSupportedErrorMeta> {
213
360
  static {
214
361
  this.prototype.name = "UniKvsMultipartWriteNotSupportedError";
215
362
  }
216
363
 
217
- public constructor(args: MultipartWriteNotSupportedErrorArgs, options?: ErrorOptions) {
218
- super(args, ({ name }) => `Storage "${name}" does not support multipart-write`, options);
364
+ public constructor(args: MultipartWriteNotSupportedErrorArgs) {
365
+ const { name, ...options } = args;
366
+ const meta: MultipartWriteNotSupportedErrorMeta = { name };
367
+ super(meta, ({ name }) => `Storage "${name}" does not support multipart-write`, options);
219
368
  }
220
369
  }
221
370
 
222
371
  setErrorMessage(
223
- StorageIsNotOpenError,
372
+ MultipartWriteNotSupportedError,
224
373
  ({ name }) => `ストレージ "${name}" はマルチパート書き込みをサポートしていません`,
225
374
  "ja",
226
375
  );
@@ -249,19 +398,35 @@ setErrorMessage(
249
398
 
250
399
  // setErrorMessage(TransformerIsOpenError, ({ name }) => `トランスフォーマー "${name}" は開いています`, "ja");
251
400
 
401
+ /**
402
+ * TransformerIsNotOpenError に付与されるメタデータです。
403
+ */
252
404
  export type TransformerIsNotOpenErrorMeta = {
405
+ /**
406
+ * 開かれていないトランスフォーマーの名前です。
407
+ */
253
408
  readonly name: string;
254
409
  };
255
410
 
256
- export type TransformerIsNotOpenErrorArgs = TransformerIsNotOpenErrorMeta;
411
+ /**
412
+ * TransformerIsNotOpenError のコンストラクター引数です。
413
+ *
414
+ * エラーの追加情報 (`cause`) も含みます。
415
+ */
416
+ export type TransformerIsNotOpenErrorArgs = ErrorOptions & TransformerIsNotOpenErrorMeta;
257
417
 
418
+ /**
419
+ * トランスフォーマーが開かれていない状態で操作が行われた場合に投げられるエラーです。
420
+ */
258
421
  export class TransformerIsNotOpenError extends ErrorBase<TransformerIsNotOpenErrorMeta> {
259
422
  static {
260
423
  this.prototype.name = "UniKvsTransformerIsNotOpenError";
261
424
  }
262
425
 
263
- public constructor(args: TransformerIsNotOpenErrorArgs, options?: ErrorOptions) {
264
- super(args, ({ name }) => `Transformer "${name}" is not open`, options);
426
+ public constructor(args: TransformerIsNotOpenErrorArgs) {
427
+ const { name, ...options } = args;
428
+ const meta: TransformerIsNotOpenErrorMeta = { name };
429
+ super(meta, ({ name }) => `Transformer "${name}" is not open`, options);
265
430
  }
266
431
  }
267
432
 
@@ -271,46 +436,80 @@ setErrorMessage(
271
436
  "ja",
272
437
  );
273
438
 
439
+ /**
440
+ * EncodableStreamNotSupportedError に付与されるメタデータです。
441
+ */
274
442
  export type EncodableStreamNotSupportedErrorMeta = {
443
+ /**
444
+ * 対象のトランスフォーマーの名前です。
445
+ */
275
446
  readonly name: string;
276
447
  };
277
448
 
278
- export type EncodableStreamNotSupportedErrorArgs = EncodableStreamNotSupportedErrorMeta;
279
-
449
+ /**
450
+ * EncodableStreamNotSupportedError のコンストラクター引数です。
451
+ *
452
+ * エラーの追加情報 (`cause`) も含みます。
453
+ */
454
+ export type EncodableStreamNotSupportedErrorArgs = ErrorOptions &
455
+ EncodableStreamNotSupportedErrorMeta;
456
+
457
+ /**
458
+ * トランスフォーマーがエンコード可能なストリームをサポートしていない場合に投げられるエラーです。
459
+ */
280
460
  export class EncodableStreamNotSupportedError extends ErrorBase<EncodableStreamNotSupportedErrorMeta> {
281
461
  static {
282
462
  this.prototype.name = "UniKvsEncodableStreamNotSupportedError";
283
463
  }
284
464
 
285
- public constructor(args: EncodableStreamNotSupportedErrorArgs, options?: ErrorOptions) {
286
- super(args, ({ name }) => `Transformer "${name}" does not support encodable stream`, options);
465
+ public constructor(args: EncodableStreamNotSupportedErrorArgs) {
466
+ const { name, ...options } = args;
467
+ const meta: EncodableStreamNotSupportedErrorMeta = { name };
468
+ super(meta, ({ name }) => `Transformer "${name}" does not support encodable stream`, options);
287
469
  }
288
470
  }
289
471
 
290
472
  setErrorMessage(
291
- TransformerIsNotOpenError,
473
+ EncodableStreamNotSupportedError,
292
474
  ({ name }) => `トランスフォーマー "${name}" はエンコード可能なストリームをサポートしていません`,
293
475
  "ja",
294
476
  );
295
477
 
478
+ /**
479
+ * DecodableStreamNotSupportedError に付与されるメタデータです。
480
+ */
296
481
  export type DecodableStreamNotSupportedErrorMeta = {
482
+ /**
483
+ * 対象のトランスフォーマーの名前です。
484
+ */
297
485
  readonly name: string;
298
486
  };
299
487
 
300
- export type DecodableStreamNotSupportedErrorArgs = DecodableStreamNotSupportedErrorMeta;
301
-
488
+ /**
489
+ * DecodableStreamNotSupportedError のコンストラクター引数です。
490
+ *
491
+ * エラーの追加情報 (`cause`) も含みます。
492
+ */
493
+ export type DecodableStreamNotSupportedErrorArgs = ErrorOptions &
494
+ DecodableStreamNotSupportedErrorMeta;
495
+
496
+ /**
497
+ * トランスフォーマーがデコード可能なストリームをサポートしていない場合に投げられるエラーです。
498
+ */
302
499
  export class DecodableStreamNotSupportedError extends ErrorBase<DecodableStreamNotSupportedErrorMeta> {
303
500
  static {
304
501
  this.prototype.name = "UniKvsDecodableStreamNotSupportedError";
305
502
  }
306
503
 
307
- public constructor(args: DecodableStreamNotSupportedErrorArgs, options?: ErrorOptions) {
308
- super(args, ({ name }) => `Transformer "${name}" does not support decodable stream`, options);
504
+ public constructor(args: DecodableStreamNotSupportedErrorArgs) {
505
+ const { name, ...options } = args;
506
+ const meta: DecodableStreamNotSupportedErrorMeta = { name };
507
+ super(meta, ({ name }) => `Transformer "${name}" does not support decodable stream`, options);
309
508
  }
310
509
  }
311
510
 
312
511
  setErrorMessage(
313
- TransformerIsNotOpenError,
512
+ DecodableStreamNotSupportedError,
314
513
  ({ name }) => `トランスフォーマー "${name}" はデコード可能なストリームをサポートしていません`,
315
514
  "ja",
316
515
  );
@@ -321,41 +520,97 @@ setErrorMessage(
321
520
  //
322
521
  // -------------------------------------------------------------------------------------------------
323
522
 
523
+ /**
524
+ * PluginOperationAggregateError に付与されるメタデータです。
525
+ */
324
526
  export type PluginOperationAggregateErrorMeta = {
527
+ /**
528
+ * 失敗した操作の対象となったプラグインの種別です。
529
+ *
530
+ * - `"plugin"`: 複数の種別のプラグインが混在しています。
531
+ * - `"storage"`: ストレージです。
532
+ * - `"transformer"`: トランスフォーマーです。
533
+ */
325
534
  readonly plugin: "plugin" | "storage" | "transformer";
326
- readonly action: "open" | "close" | "write" | "delete" | "clear";
535
+
536
+ /**
537
+ * 失敗した操作の種類です。
538
+ */
539
+ readonly action: "open" | "close" | "write" | "read" | "delete" | "clear";
540
+
541
+ /**
542
+ * 失敗した各プラグインの操作と原因のリストです。
543
+ */
327
544
  readonly errors: readonly {
545
+ /**
546
+ * 失敗したプラグインの種別です。
547
+ */
328
548
  readonly plugin: "storage" | "transformer";
549
+
550
+ /**
551
+ * 操作が失敗した原因です。
552
+ */
329
553
  readonly reason: unknown;
330
554
  }[];
331
555
  };
332
556
 
333
- export type PluginOperationAggregateErrorArgs = {
557
+ /**
558
+ * PluginOperationAggregateError のコンストラクター引数です。
559
+ *
560
+ * エラーの追加情報 (`cause`) も含みます。
561
+ */
562
+ export type PluginOperationAggregateErrorArgs = ErrorOptions & {
563
+ /**
564
+ * 失敗したプラグインの既定の種別です。
565
+ *
566
+ * 個々のエラーで種別が指定されていない場合に使用されます。
567
+ */
334
568
  readonly plugin?: "storage" | "transformer";
335
- readonly action: "open" | "close" | "write" | "delete" | "clear";
569
+
570
+ /**
571
+ * 失敗した操作の種類です。
572
+ */
573
+ readonly action: "open" | "close" | "write" | "read" | "delete" | "clear";
574
+
575
+ /**
576
+ * 失敗した各プラグインの操作と原因のリストです。
577
+ */
336
578
  readonly errors: readonly {
579
+ /**
580
+ * 失敗したプラグインの種別です。
581
+ */
337
582
  readonly plugin?: "storage" | "transformer";
583
+
584
+ /**
585
+ * 操作が失敗した原因です。
586
+ */
338
587
  readonly reason: unknown;
339
588
  }[];
340
589
  };
341
590
 
591
+ /**
592
+ * 複数のストレージやトランスフォーマーの操作が失敗した場合に投げられる、個々の失敗を集約したエラーです。
593
+ */
342
594
  export class PluginOperationAggregateError extends ErrorBase<PluginOperationAggregateErrorMeta> {
343
595
  static {
344
596
  this.prototype.name = "UniKvsPluginOperationAggregateError";
345
597
  }
346
598
 
347
- public constructor(args: PluginOperationAggregateErrorArgs, options?: ErrorOptions) {
348
- const errors = args.errors.map((error) => ({
349
- plugin: error.plugin ?? args.plugin ?? ("" as never),
599
+ public constructor(args: PluginOperationAggregateErrorArgs) {
600
+ const { plugin, action, errors, ...options } = args;
601
+ // 個々のエラーで種別が指定されていない場合は、既定の種別で補完します。
602
+ const normalizedErrors = errors.map((error) => ({
603
+ plugin: error.plugin ?? plugin ?? ("" as never),
350
604
  reason: error.reason,
351
605
  }));
352
- const plugins = [...new Set(errors.map((error) => error.plugin))];
606
+ const plugins = [...new Set(normalizedErrors.map((error) => error.plugin))];
607
+ const meta: PluginOperationAggregateErrorMeta = {
608
+ plugin: plugins.length === 1 ? plugins[0]! : "plugin",
609
+ action,
610
+ errors: normalizedErrors,
611
+ };
353
612
  super(
354
- {
355
- plugin: plugins.length === 1 ? plugins[0]! : "plugin",
356
- action: args.action,
357
- errors,
358
- },
613
+ meta,
359
614
  ({ action, errors, plugin }) => `${errors.length} ${plugin}(s) fail ${action} operation`,
360
615
  options,
361
616
  );
@@ -375,6 +630,9 @@ setErrorMessage(
375
630
  //
376
631
  // -------------------------------------------------------------------------------------------------
377
632
 
633
+ /**
634
+ * ストレージが一つも登録されていない状態で UniKvs を作成しようとした場合に投げられるエラーです。
635
+ */
378
636
  export class MissingStorageError extends ErrorBase<undefined> {
379
637
  static {
380
638
  this.prototype.name = "UniKvsMissingStorageError";
@@ -393,6 +651,9 @@ setErrorMessage(
393
651
 
394
652
  // -------------------------------------------------------------------------------------------------
395
653
 
654
+ /**
655
+ * ストレージが登録された後にトランスフォーマーを追加しようとした場合に投げられるエラーです。
656
+ */
396
657
  export class TransformerRegistrationError extends ErrorBase<undefined> {
397
658
  static {
398
659
  this.prototype.name = "UniKvsTransformerRegistrationError";
@@ -404,7 +665,7 @@ export class TransformerRegistrationError extends ErrorBase<undefined> {
404
665
  }
405
666
 
406
667
  setErrorMessage(
407
- MissingStorageError,
668
+ TransformerRegistrationError,
408
669
  "ストレージが登録された後にトランスフォーマーを追加することはできません",
409
670
  "ja",
410
671
  );
@@ -11,7 +11,7 @@ import type {
11
11
  import UniKvsStorage from "./_storage.js";
12
12
  import UniKvsTransformer from "./_transformer.js";
13
13
  import type { ContextSource } from "./context.types.js";
14
- import { MissingStorageError } from "./errors.js";
14
+ import { MissingStorageError, TransformerRegistrationError } from "./errors.js";
15
15
  import type UniKvs from "./unikvs.js";
16
16
  import type { ValueOf } from "./utils.types.js";
17
17
 
@@ -416,7 +416,7 @@ export default class UniKvsConfig implements IUniKvsConfigBuilder, IUniKvsConfig
416
416
  public appendTransformer(transformer: ITransformer): IUniKvsConfigBuilder {
417
417
  // パイプラインの順序を守るため、終端であるストレージが登録済みでないか確認します。
418
418
  if (this.#destinations.length > 0) {
419
- throw new TransformStreamDefaultController();
419
+ throw new TransformerRegistrationError();
420
420
  }
421
421
 
422
422
  this.#transformers.push(transformer);