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/dist/src/_logger.d.ts.map +1 -1
- package/dist/src/_storage.d.ts.map +1 -1
- package/dist/src/_to-value-stream.d.ts.map +1 -1
- package/dist/src/_to-value-stream.js +44 -6
- package/dist/src/_transformer.d.ts.map +1 -1
- package/dist/src/_valibot.d.ts +4 -5
- package/dist/src/_valibot.d.ts.map +1 -1
- package/dist/src/errors.d.ts +249 -24
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +107 -36
- package/dist/src/unikvs-config.d.ts.map +1 -1
- package/dist/src/unikvs-config.js +2 -2
- package/dist/src/unikvs.d.ts +10 -3
- package/dist/src/unikvs.d.ts.map +1 -1
- package/dist/src/unikvs.js +174 -32
- package/dist/src/value-stream.types.d.ts +6 -1
- package/dist/src/value-stream.types.d.ts.map +1 -1
- package/package.json +24 -24
- package/src/_to-value-stream.ts +47 -8
- package/src/_valibot.ts +4 -5
- package/src/errors.ts +316 -55
- package/src/unikvs-config.ts +2 -2
- package/src/unikvs.ts +199 -30
- package/src/value-stream.types.ts +6 -1
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
|
-
|
|
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
|
|
40
|
-
const { value: input, issues } = args;
|
|
41
|
-
|
|
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
|
-
|
|
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
|
|
63
|
-
const { value: output, issues } = args;
|
|
64
|
-
|
|
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
|
-
|
|
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
|
|
110
|
-
|
|
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
|
-
|
|
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
|
|
156
|
-
|
|
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
|
-
|
|
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
|
|
174
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
196
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
218
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
264
|
-
|
|
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
|
-
|
|
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
|
|
286
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
308
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
557
|
+
/**
|
|
558
|
+
* PluginOperationAggregateError のコンストラクター引数です。
|
|
559
|
+
*
|
|
560
|
+
* エラーの追加情報 (`cause`) も含みます。
|
|
561
|
+
*/
|
|
562
|
+
export type PluginOperationAggregateErrorArgs = ErrorOptions & {
|
|
563
|
+
/**
|
|
564
|
+
* 失敗したプラグインの既定の種別です。
|
|
565
|
+
*
|
|
566
|
+
* 個々のエラーで種別が指定されていない場合に使用されます。
|
|
567
|
+
*/
|
|
334
568
|
readonly plugin?: "storage" | "transformer";
|
|
335
|
-
|
|
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
|
|
348
|
-
const errors = args
|
|
349
|
-
|
|
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(
|
|
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
|
-
|
|
668
|
+
TransformerRegistrationError,
|
|
408
669
|
"ストレージが登録された後にトランスフォーマーを追加することはできません",
|
|
409
670
|
"ja",
|
|
410
671
|
);
|
package/src/unikvs-config.ts
CHANGED
|
@@ -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
|
|
419
|
+
throw new TransformerRegistrationError();
|
|
420
420
|
}
|
|
421
421
|
|
|
422
422
|
this.#transformers.push(transformer);
|