unikvs 0.0.10 → 0.0.12

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.
Files changed (59) hide show
  1. package/README.md +3 -0
  2. package/dist/src/_merge-variables.d.ts +13 -0
  3. package/dist/src/_merge-variables.d.ts.map +1 -0
  4. package/dist/src/_merge-variables.js +12 -0
  5. package/dist/src/_storage.d.ts +11 -11
  6. package/dist/src/_storage.d.ts.map +1 -1
  7. package/dist/src/_storage.js +31 -22
  8. package/dist/src/_streams.d.ts +20 -0
  9. package/dist/src/_streams.d.ts.map +1 -0
  10. package/dist/src/_streams.js +36 -0
  11. package/dist/src/_transformer.d.ts +7 -7
  12. package/dist/src/_transformer.d.ts.map +1 -1
  13. package/dist/src/_transformer.js +12 -12
  14. package/dist/src/_valibot.d.ts +2 -2
  15. package/dist/src/_valibot.d.ts.map +1 -1
  16. package/dist/src/_valibot.js +1 -1
  17. package/dist/src/_value-schemas.d.ts +179 -0
  18. package/dist/src/_value-schemas.d.ts.map +1 -0
  19. package/dist/src/_value-schemas.js +150 -0
  20. package/dist/src/errors.d.ts +60 -94
  21. package/dist/src/errors.d.ts.map +1 -1
  22. package/dist/src/errors.js +15 -31
  23. package/dist/src/index.d.ts +3 -3
  24. package/dist/src/index.d.ts.map +1 -1
  25. package/dist/src/index.js +2 -2
  26. package/dist/src/unikvs-config.d.ts +58 -139
  27. package/dist/src/unikvs-config.d.ts.map +1 -1
  28. package/dist/src/unikvs-config.js +42 -47
  29. package/dist/src/unikvs.d.ts +84 -166
  30. package/dist/src/unikvs.d.ts.map +1 -1
  31. package/dist/src/unikvs.js +230 -169
  32. package/dist/src/utils.types.d.ts +1 -3
  33. package/dist/src/utils.types.d.ts.map +1 -1
  34. package/dist/src/value-stream.types.d.ts +2 -8
  35. package/dist/src/value-stream.types.d.ts.map +1 -1
  36. package/dist/src/variables.types.d.ts +11 -0
  37. package/dist/src/variables.types.d.ts.map +1 -0
  38. package/package.json +17 -16
  39. package/src/_merge-variables.ts +19 -0
  40. package/src/_storage.ts +47 -24
  41. package/src/_streams.ts +47 -0
  42. package/src/_transformer.ts +13 -13
  43. package/src/_valibot.ts +4 -1
  44. package/src/_value-schemas.ts +362 -0
  45. package/src/errors.ts +60 -109
  46. package/src/index.ts +2 -3
  47. package/src/unikvs-config.ts +143 -168
  48. package/src/unikvs.ts +359 -290
  49. package/src/utils.types.ts +1 -3
  50. package/src/value-stream.types.ts +2 -8
  51. package/src/variables.types.ts +13 -0
  52. package/dist/src/_merge-context.d.ts +0 -13
  53. package/dist/src/_merge-context.d.ts.map +0 -1
  54. package/dist/src/_merge-context.js +0 -12
  55. package/dist/src/context.types.d.ts +0 -17
  56. package/dist/src/context.types.d.ts.map +0 -1
  57. package/src/_merge-context.ts +0 -19
  58. package/src/context.types.ts +0 -19
  59. /package/dist/src/{context.types.js → variables.types.js} +0 -0
@@ -1,4 +1,4 @@
1
- var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p, _q;
1
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
2
2
  import { setErrorMessage, ErrorBase, } from "@unikvs/core";
3
3
  // -------------------------------------------------------------------------------------------------
4
4
  //
@@ -6,14 +6,12 @@ import { setErrorMessage, ErrorBase, } from "@unikvs/core";
6
6
  //
7
7
  // -------------------------------------------------------------------------------------------------
8
8
  /**
9
- * 無効な入出力を表すエラーの基底クラスです。
10
- *
11
- * @template TMeta エラーのメタデータの型です。
9
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
12
10
  */
13
11
  export class InvalidUsageErrorBase extends ErrorBase {
14
12
  }
15
13
  /**
16
- * 入力値が期待するスキーマに適合しない場合に投げられるエラーです。
14
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
17
15
  */
18
16
  export class InvalidInputError extends InvalidUsageErrorBase {
19
17
  constructor(args) {
@@ -27,7 +25,7 @@ _a = InvalidInputError;
27
25
  _a.prototype.name = "UniKvsInvalidInputError";
28
26
  })();
29
27
  /**
30
- * 出力値が期待するスキーマに適合しない場合に投げられるエラーです。
28
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
31
29
  */
32
30
  export class InvalidOutputError extends InvalidUsageErrorBase {
33
31
  constructor(args) {
@@ -46,7 +44,7 @@ _b = InvalidOutputError;
46
44
  //
47
45
  // -------------------------------------------------------------------------------------------------
48
46
  /**
49
- * すでに開いている UniKvs に対して再度オープン操作が行われた場合に投げられるエラーです。
47
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
50
48
  */
51
49
  export class UniKvsIsOpenError extends ErrorBase {
52
50
  constructor(options) {
@@ -59,7 +57,7 @@ _c = UniKvsIsOpenError;
59
57
  })();
60
58
  setErrorMessage(UniKvsIsOpenError, "UniKvs は開いています", "ja");
61
59
  /**
62
- * UniKvs が開かれていない状態で操作が行われた場合に投げられるエラーです。
60
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
63
61
  */
64
62
  export class UniKvsIsNotOpenError extends ErrorBase {
65
63
  constructor(options) {
@@ -72,7 +70,7 @@ _d = UniKvsIsNotOpenError;
72
70
  })();
73
71
  setErrorMessage(UniKvsIsNotOpenError, "UniKvs は開いていません", "ja");
74
72
  /**
75
- * 指定したキーのデータがどのストレージにも存在しない場合に投げられるエラーです。
73
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
76
74
  */
77
75
  export class KeyNotFoundError extends ErrorBase {
78
76
  constructor(args) {
@@ -87,7 +85,7 @@ _e = KeyNotFoundError;
87
85
  })();
88
86
  setErrorMessage(KeyNotFoundError, ({ key }) => `キー ${JSON.stringify(key)} が見つかりません`, "ja");
89
87
  /**
90
- * ストレージが開かれていない状態で操作が行われた場合に投げられるエラーです。
88
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
91
89
  */
92
90
  export class StorageIsNotOpenError extends ErrorBase {
93
91
  constructor(args) {
@@ -102,7 +100,7 @@ _f = StorageIsNotOpenError;
102
100
  })();
103
101
  setErrorMessage(StorageIsNotOpenError, ({ name }) => `ストレージ "${name}" は開いていません`, "ja");
104
102
  /**
105
- * ストレージが書き込み可能なストリームをサポートしていない場合に投げられるエラーです。
103
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
106
104
  */
107
105
  export class WritableStreamNotSupportedError extends ErrorBase {
108
106
  constructor(args) {
@@ -117,7 +115,7 @@ _g = WritableStreamNotSupportedError;
117
115
  })();
118
116
  setErrorMessage(WritableStreamNotSupportedError, ({ name }) => `ストレージ "${name}" は書き込み可能なストリームをサポートしていません`, "ja");
119
117
  /**
120
- * ストレージが読み取り可能なストリームをサポートしていない場合に投げられるエラーです。
118
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
121
119
  */
122
120
  export class ReadableStreamNotSupportedError extends ErrorBase {
123
121
  constructor(args) {
@@ -147,7 +145,7 @@ _j = MultipartWriteNotSupportedError;
147
145
  })();
148
146
  setErrorMessage(MultipartWriteNotSupportedError, ({ name }) => `ストレージ "${name}" はマルチパート書き込みをサポートしていません`, "ja");
149
147
  /**
150
- * トランスフォーマーが開かれていない状態で操作が行われた場合に投げられるエラーです。
148
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
151
149
  */
152
150
  export class TransformerIsNotOpenError extends ErrorBase {
153
151
  constructor(args) {
@@ -162,7 +160,7 @@ _k = TransformerIsNotOpenError;
162
160
  })();
163
161
  setErrorMessage(TransformerIsNotOpenError, ({ name }) => `トランスフォーマー "${name}" は開いていません`, "ja");
164
162
  /**
165
- * トランスフォーマーがエンコード可能なストリームをサポートしていない場合に投げられるエラーです。
163
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
166
164
  */
167
165
  export class EncodableStreamNotSupportedError extends ErrorBase {
168
166
  constructor(args) {
@@ -177,7 +175,7 @@ _l = EncodableStreamNotSupportedError;
177
175
  })();
178
176
  setErrorMessage(EncodableStreamNotSupportedError, ({ name }) => `トランスフォーマー "${name}" はエンコード可能なストリームをサポートしていません`, "ja");
179
177
  /**
180
- * トランスフォーマーがデコード可能なストリームをサポートしていない場合に投げられるエラーです。
178
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
181
179
  */
182
180
  export class DecodableStreamNotSupportedError extends ErrorBase {
183
181
  constructor(args) {
@@ -192,7 +190,7 @@ _m = DecodableStreamNotSupportedError;
192
190
  })();
193
191
  setErrorMessage(DecodableStreamNotSupportedError, ({ name }) => `トランスフォーマー "${name}" はデコード可能なストリームをサポートしていません`, "ja");
194
192
  /**
195
- * 複数のストレージやトランスフォーマーの操作が失敗した場合に投げられる、個々の失敗を集約したエラーです。
193
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
196
194
  */
197
195
  export class PluginOperationAggregateError extends ErrorBase {
198
196
  constructor(args) {
@@ -222,7 +220,7 @@ setErrorMessage(PluginOperationAggregateError, ({ action, errors, plugin }) => `
222
220
  //
223
221
  // -------------------------------------------------------------------------------------------------
224
222
  /**
225
- * ストレージが一つも登録されていない状態で UniKvs を作成しようとした場合に投げられるエラーです。
223
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#errors)
226
224
  */
227
225
  export class MissingStorageError extends ErrorBase {
228
226
  constructor(options) {
@@ -234,17 +232,3 @@ _p = MissingStorageError;
234
232
  _p.prototype.name = "UniKvsMissingStorageError";
235
233
  })();
236
234
  setErrorMessage(MissingStorageError, "UniKvs を使用するためには最低 1 つのストレージが必要です", "ja");
237
- // -------------------------------------------------------------------------------------------------
238
- /**
239
- * ストレージが登録された後にトランスフォーマーを追加しようとした場合に投げられるエラーです。
240
- */
241
- export class TransformerRegistrationError extends ErrorBase {
242
- constructor(options) {
243
- super("Cannot add transformers after storage has already been registered", options);
244
- }
245
- }
246
- _q = TransformerRegistrationError;
247
- (() => {
248
- _q.prototype.name = "UniKvsTransformerRegistrationError";
249
- })();
250
- setErrorMessage(TransformerRegistrationError, "ストレージが登録された後にトランスフォーマーを追加することはできません", "ja");
@@ -1,8 +1,8 @@
1
- export type * from "./context.types.js";
1
+ export type * from "./variables.types.js";
2
2
  export type { DecodableStreamNotSupportedErrorArgs, DecodableStreamNotSupportedErrorMeta, EncodableStreamNotSupportedErrorArgs, EncodableStreamNotSupportedErrorMeta, InvalidInputErrorArgs, InvalidInputErrorMeta, InvalidOutputErrorArgs, InvalidOutputErrorMeta, Issue, KeyNotFoundErrorArgs, KeyNotFoundErrorMeta, PluginOperationAggregateErrorArgs, PluginOperationAggregateErrorMeta, ReadableStreamNotSupportedErrorArgs, ReadableStreamNotSupportedErrorMeta, StorageIsNotOpenErrorArgs, StorageIsNotOpenErrorMeta, TransformerIsNotOpenErrorArgs, TransformerIsNotOpenErrorMeta, WritableStreamNotSupportedErrorArgs, WritableStreamNotSupportedErrorMeta, } from "./errors.js";
3
- export { DecodableStreamNotSupportedError, EncodableStreamNotSupportedError, InvalidInputError, InvalidOutputError, InvalidUsageErrorBase, KeyNotFoundError, MissingStorageError, PluginOperationAggregateError, ReadableStreamNotSupportedError, StorageIsNotOpenError, TransformerIsNotOpenError, TransformerRegistrationError, UniKvsIsNotOpenError, UniKvsIsOpenError, WritableStreamNotSupportedError, } from "./errors.js";
3
+ export { DecodableStreamNotSupportedError, EncodableStreamNotSupportedError, InvalidInputError, InvalidOutputError, InvalidUsageErrorBase, KeyNotFoundError, MissingStorageError, PluginOperationAggregateError, ReadableStreamNotSupportedError, StorageIsNotOpenError, TransformerIsNotOpenError, UniKvsIsNotOpenError, UniKvsIsOpenError, WritableStreamNotSupportedError, } from "./errors.js";
4
4
  export type * from "./unikvs-config.js";
5
- export { default as UniKvsConfig } from "./unikvs-config.js";
5
+ export { PlainValue, StreamValue, Value, default as UniKvsConfig } from "./unikvs-config.js";
6
6
  export type * from "./unikvs.js";
7
7
  export { default as UniKvs } from "./unikvs.js";
8
8
  export type * from "./utils.types.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,oBAAoB,CAAC;AAExC,YAAY,EACV,oCAAoC,EACpC,oCAAoC,EACpC,oCAAoC,EACpC,oCAAoC,EACpC,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,EACL,oBAAoB,EACpB,oBAAoB,EACpB,iCAAiC,EACjC,iCAAiC,EACjC,mCAAmC,EACnC,mCAAmC,EACnC,yBAAyB,EACzB,yBAAyB,EACzB,6BAA6B,EAC7B,6BAA6B,EAC7B,mCAAmC,EACnC,mCAAmC,GACpC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,4BAA4B,EAC5B,oBAAoB,EACpB,iBAAiB,EACjB,+BAA+B,GAChC,MAAM,aAAa,CAAC;AAErB,mBAAmB,oBAAoB,CAAC;AACxC,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7D,mBAAmB,aAAa,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAEhD,mBAAmB,kBAAkB,CAAC;AAEtC,mBAAmB,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,sBAAsB,CAAC;AAE1C,YAAY,EACV,oCAAoC,EACpC,oCAAoC,EACpC,oCAAoC,EACpC,oCAAoC,EACpC,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,sBAAsB,EACtB,KAAK,EACL,oBAAoB,EACpB,oBAAoB,EACpB,iCAAiC,EACjC,iCAAiC,EACjC,mCAAmC,EACnC,mCAAmC,EACnC,yBAAyB,EACzB,yBAAyB,EACzB,6BAA6B,EAC7B,6BAA6B,EAC7B,mCAAmC,EACnC,mCAAmC,GACpC,MAAM,aAAa,CAAC;AACrB,OAAO,EACL,gCAAgC,EAChC,gCAAgC,EAChC,iBAAiB,EACjB,kBAAkB,EAClB,qBAAqB,EACrB,gBAAgB,EAChB,mBAAmB,EACnB,6BAA6B,EAC7B,+BAA+B,EAC/B,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,iBAAiB,EACjB,+BAA+B,GAChC,MAAM,aAAa,CAAC;AAErB,mBAAmB,oBAAoB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,KAAK,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAE7F,mBAAmB,aAAa,CAAC;AACjC,OAAO,EAAE,OAAO,IAAI,MAAM,EAAE,MAAM,aAAa,CAAC;AAEhD,mBAAmB,kBAAkB,CAAC;AAEtC,mBAAmB,yBAAyB,CAAC"}
package/dist/src/index.js CHANGED
@@ -1,3 +1,3 @@
1
- export { DecodableStreamNotSupportedError, EncodableStreamNotSupportedError, InvalidInputError, InvalidOutputError, InvalidUsageErrorBase, KeyNotFoundError, MissingStorageError, PluginOperationAggregateError, ReadableStreamNotSupportedError, StorageIsNotOpenError, TransformerIsNotOpenError, TransformerRegistrationError, UniKvsIsNotOpenError, UniKvsIsOpenError, WritableStreamNotSupportedError, } from "./errors.js";
2
- export { default as UniKvsConfig } from "./unikvs-config.js";
1
+ export { DecodableStreamNotSupportedError, EncodableStreamNotSupportedError, InvalidInputError, InvalidOutputError, InvalidUsageErrorBase, KeyNotFoundError, MissingStorageError, PluginOperationAggregateError, ReadableStreamNotSupportedError, StorageIsNotOpenError, TransformerIsNotOpenError, UniKvsIsNotOpenError, UniKvsIsOpenError, WritableStreamNotSupportedError, } from "./errors.js";
2
+ export { PlainValue, StreamValue, Value, default as UniKvsConfig } from "./unikvs-config.js";
3
3
  export { default as UniKvs } from "./unikvs.js";
@@ -1,7 +1,9 @@
1
- import type { IReadableStreamStorage, IStorage, IWritableStreamStorage, IDecodableStreamTransformer, IEncodableStreamTransformer, ITransformer } from "@unikvs/core";
2
- import type { ContextSource } from "./context.types.js";
1
+ import type { IStorage, ITransformer, IReadableStreamStorage, IWritableStreamStorage, IDecodableStreamTransformer, IEncodableStreamTransformer } from "@unikvs/core";
2
+ import { type Value, type UniKvsSchema, type $InferPlainValueData, type $InferStreamValueChunkData } from "./_value-schemas.js";
3
3
  import type UniKvs from "./unikvs.js";
4
4
  import type { ValueOf } from "./utils.types.js";
5
+ import type { VariablesSource } from "./variables.types.js";
6
+ export { type UniKvsSchema, type ValueSchemaInfo, type UniKvsSchemaRecord, type UniKvsSchemaEntries, type $InferPlainValueData, type IValueSchemaResolver, type $InferKeyValueMapping, type $InferPlainValueInput, type $InferStreamValueChunkData, type $InferStreamValueChunkInput, Value, PlainValue, StreamValue, } from "./_value-schemas.js";
5
7
  /**
6
8
  * トランスフォーマーから、デコード時の入力データの型を推論するユーティリティー型です。
7
9
  *
@@ -39,71 +41,17 @@ type $InferWriteChunkInput<TStorage extends IStorage> = TStorage extends IWritab
39
41
  */
40
42
  type $InferReadChunkOutput<TStorage extends IStorage> = TStorage extends IReadableStreamStorage<infer TReadChunkOutput> ? TReadChunkOutput : never;
41
43
  /**
42
- * プレーンな値を識別するための固有のシンボルです。
43
- */
44
- declare const PLAIN_VALUE: unique symbol;
45
- /**
46
- * ストリームではない通常の値を表す型定義です。
47
- *
48
- * @template TData 保持するデータの型です。
49
- */
50
- export type PlainValue<TData = any> = [Type: typeof PLAIN_VALUE, Data: TData];
51
- /**
52
- * ストリーム形式の値を識別するための固有のシンボルです。
53
- */
54
- declare const STREAM_VALUE: unique symbol;
55
- /**
56
- * ストリームとして扱われる値を表す型定義です。
57
- *
58
- * @template TChunkData ストリームのチャンクデータの型です。
59
- */
60
- export type StreamValue<TChunkData = any> = [Type: typeof STREAM_VALUE, ChunkData: TChunkData];
61
- /**
62
- * UniKvs で扱う値の抽象型です。プレーンな値かストリーム値のいずれかになります。
63
- *
64
- * @template TData データまたはチャンクデータの型です。
65
- */
66
- export type Value<TData = any> = PlainValue<TData> | StreamValue<TData>;
67
- /**
68
- * キーと値のマッピングを定義するオブジェクトの型です。
69
- *
70
- * @template T マッピングされる値の型です。
44
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#value-types)
71
45
  */
72
46
  export type KeyValueMapping<T = any> = {
73
47
  readonly [key: IStorage.Key]: Value<T>;
74
48
  };
75
49
  /**
76
- * PlainValue 型から内部のデータ型を抽出します。
77
- *
78
- * @template TPlainValue 対象となる PlainValue 型です。
79
- */
80
- export type $InferPlainValueData<TPlainValue> = TPlainValue extends PlainValue<infer TData> ? TData : never;
81
- /**
82
- * StreamValue 型から内部のチャンクデータ型を抽出します。
83
- *
84
- * @template TStremValue 対象となる StreamValue 型です。
85
- */
86
- export type $InferStreamValueChunkData<TStremValue> = TStremValue extends StreamValue<infer TChunkData> ? TChunkData : never;
87
- /**
88
- * KeyValueMapping から有効なキーの型を抽出します。
89
- *
90
- * @template TKeyValueMapping 対象となるマッピング型です。
50
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#value-types)
91
51
  */
92
52
  export type KeyofKeyValueMapping<TKeyValueMapping extends KeyValueMapping = KeyValueMapping> = Extract<keyof TKeyValueMapping, IStorage.Key>;
93
53
  /**
94
- * UniKvs の設定を構築するためのビルダーインターフェースです。
95
- *
96
- * トランスフォーマーの追加やストレージの登録を型安全に行うための流れるようなインターフェースを提供します。
97
- *
98
- * @template TKeyValueMapping キーと値のマッピング型です。
99
- * @template TUniKvsDataInput UniKvs への入力データの型です。
100
- * @template TUniKvsDataOutput UniKvs からの出力データの型です。
101
- * @template TUniKvsChunkInput UniKvs への入力チャンクデータの型です。
102
- * @template TUniKvsChunkOutput UniKvs からのストリーム出力チャンクデータの型です。
103
- * @template TLastTransformerDecodeDataInput 最後に適用されたトランスフォーマーのデコード入力データの型です。
104
- * @template TLastTransformerEncodeDataOutput 最後に適用されたトランスフォーマーのエンコード出力データの型です。
105
- * @template TLastTransformerDecodeChunkInput 最後に適用されたトランスフォーマーのデコード入力チャンクデータの型です。
106
- * @template TLastTransformerEncodeChunkOutput 最後に適用されたトランスフォーマーのエンコード出力チャンクデータの型です。
54
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
107
55
  */
108
56
  export interface IUniKvsConfigBuilder<TKeyValueMapping extends KeyValueMapping = KeyValueMapping, TUniKvsDataInput = ValueOf<{
109
57
  [TKey in KeyofKeyValueMapping<TKeyValueMapping>]: $InferPlainValueData<TKeyValueMapping[TKey]>;
@@ -111,20 +59,11 @@ export interface IUniKvsConfigBuilder<TKeyValueMapping extends KeyValueMapping =
111
59
  [TKey in KeyofKeyValueMapping<TKeyValueMapping>]: $InferStreamValueChunkData<TKeyValueMapping[TKey]>;
112
60
  }>, TUniKvsChunkOutput = TUniKvsChunkInput, TLastTransformerDecodeDataInput = TUniKvsDataOutput, TLastTransformerEncodeDataOutput = TUniKvsDataInput, TLastTransformerDecodeChunkInput = TUniKvsChunkOutput, TLastTransformerEncodeChunkOutput = TUniKvsChunkInput> {
113
61
  /**
114
- * コンテキスト情報を設定します。
115
- *
116
- * @param context 設定するコンテキストのソースです。
117
- * @returns インスタンス自身を返します。
62
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
118
63
  */
119
- setContext(context: ContextSource): this;
64
+ setVariables(vars: VariablesSource): this;
120
65
  /**
121
- * ストレージをパイプラインの終端に追加します。
122
- *
123
- * ストレージが追加されると、設定はファイナライズ段階に移行します。
124
- *
125
- * @template TStorage 追加するストレージの型です。
126
- * @param storage ストレージのインスタンスです。
127
- * @returns ファイナライザーインターフェースを返します。
66
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
128
67
  */
129
68
  appendStorage<TStorage extends IStorage<[
130
69
  TLastTransformerEncodeDataOutput
@@ -138,15 +77,9 @@ export interface IUniKvsConfigBuilder<TKeyValueMapping extends KeyValueMapping =
138
77
  TLastTransformerEncodeChunkOutput
139
78
  ] extends [never] ? never : [$InferWriteChunkInput<TStorage>] extends [never] ? never : TLastTransformerEncodeChunkOutput, [
140
79
  TLastTransformerDecodeChunkInput
141
- ] extends [never] ? never : [$InferReadChunkOutput<TStorage>] extends [never] ? never : TLastTransformerDecodeChunkInput>;
80
+ ] extends [never] ? never : [$InferReadChunkOutput<TStorage>] extends [never] ? never : TLastTransformerDecodeChunkInput, TLastTransformerDecodeDataInput, TLastTransformerEncodeDataOutput, TLastTransformerDecodeChunkInput, TLastTransformerEncodeChunkOutput>;
142
81
  /**
143
- * トランスフォーマーをパイプラインに追加します。
144
- *
145
- * データ変換の層を積み重ねることで、シリアライズなどの処理を定義できます。
146
- *
147
- * @template TTransformer 追加するトランスフォーマーの型です。
148
- * @param transformer トランスフォーマーのインスタンスです。
149
- * @returns 新しい型情報を持つビルダーを返します。
82
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
150
83
  */
151
84
  appendTransformer<TTransformer extends ITransformer<[
152
85
  TLastTransformerEncodeDataOutput
@@ -163,93 +96,79 @@ export interface IUniKvsConfigBuilder<TKeyValueMapping extends KeyValueMapping =
163
96
  ] extends [never] ? never : [$InferEncodeChunkOutput<TTransformer>] extends [never] ? never : TUniKvsChunkOutput, $InferDecodeDataInput<TTransformer>, $InferEncodeDataOutput<TTransformer>, $InferDecodeChunkInput<TTransformer>, $InferEncodeChunkOutput<TTransformer>>;
164
97
  }
165
98
  /**
166
- * UniKvs の設定を完了させるためのファイナライザーインターフェースです。
167
- *
168
- * @template TKeyValueMapping キーと値のマッピング型です。
169
- * @template TWriteDataInput ストレージへの書き込み入力データの型です。
170
- * @template TReadDataOutput ストレージからの読み込み出力データの型です。
171
- * @template TWriteChunkInput ストレージへの書き込みチャンクデータの型です。
172
- * @template TReadChunkOutput ストレージからの読み込みチャンクデータの型です。
99
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
173
100
  */
174
- export interface IUniKvsConfigFinalizer<TKeyValueMapping extends KeyValueMapping = KeyValueMapping, TWriteDataInput = any, TReadDataOutput = any, TWriteChunkInput = any, TReadChunkOutput = any> {
101
+ export interface IUniKvsConfigFinalizer<TKeyValueMapping extends KeyValueMapping = KeyValueMapping, TWriteDataInput = any, TReadDataOutput = any, TWriteChunkInput = any, TReadChunkOutput = any, TLastTransformerDecodeDataInput = TReadDataOutput, TLastTransformerEncodeDataOutput = TWriteDataInput, TLastTransformerDecodeChunkInput = TReadChunkOutput, TLastTransformerEncodeChunkOutput = TWriteChunkInput> {
175
102
  /**
176
- * 設定に基づいて UniKvs インスタンスを作成します。
177
- *
178
- * @returns 作成された UniKvs のインスタンスです。
103
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
179
104
  */
180
105
  create(): UniKvs<TKeyValueMapping>;
181
106
  /**
182
- * コンテキスト情報を設定します。
183
- *
184
- * @param context 設定するコンテキストのソースです。
185
- * @returns インスタンス自身を返します。
107
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
186
108
  */
187
- setContext(context: ContextSource): this;
109
+ setVariables(vars: VariablesSource): this;
188
110
  /**
189
- * 追加のストレージを登録します。UniKvs は複数のストレージへのマルチキャスト書き込みをサポートします。
190
- *
191
- * @template TStorage 追加するストレージの型です。
192
- * @param storage ストレージのインスタンスです。
193
- * @returns ファイナライザーインターフェースを返します。
111
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
194
112
  */
195
113
  appendStorage<TStorage extends IStorage<[
196
- TWriteDataInput
197
- ] extends [never] ? any : TWriteDataInput, [
198
- TReadDataOutput
199
- ] extends [never] ? any : TReadDataOutput, [
200
- TWriteChunkInput
201
- ] extends [never] ? any : TWriteChunkInput, [
202
- TReadChunkOutput
203
- ] extends [never] ? any : TReadChunkOutput>>(storage: TStorage): IUniKvsConfigFinalizer<TKeyValueMapping, TWriteDataInput, TReadDataOutput, [
114
+ TLastTransformerEncodeDataOutput
115
+ ] extends [never] ? any : TLastTransformerEncodeDataOutput, [
116
+ TLastTransformerDecodeDataInput
117
+ ] extends [never] ? any : TLastTransformerDecodeDataInput, [
118
+ TLastTransformerEncodeChunkOutput
119
+ ] extends [never] ? any : TLastTransformerEncodeChunkOutput, [
120
+ TLastTransformerDecodeChunkInput
121
+ ] extends [never] ? any : TLastTransformerDecodeChunkInput>>(storage: TStorage): IUniKvsConfigFinalizer<TKeyValueMapping, TWriteDataInput, TReadDataOutput, [
204
122
  TWriteChunkInput
205
123
  ] extends [never] ? never : [$InferWriteChunkInput<TStorage>] extends [never] ? never : TWriteChunkInput, [
206
124
  TReadChunkOutput
207
- ] extends [never] ? never : [$InferReadChunkOutput<TStorage>] extends [never] ? never : TReadChunkOutput>;
125
+ ] extends [never] ? never : [$InferReadChunkOutput<TStorage>] extends [never] ? never : TReadChunkOutput, TLastTransformerDecodeDataInput, TLastTransformerEncodeDataOutput, TLastTransformerDecodeChunkInput, TLastTransformerEncodeChunkOutput>;
126
+ /**
127
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
128
+ */
129
+ appendTransformer<TTransformer extends ITransformer<[
130
+ TLastTransformerEncodeDataOutput
131
+ ] extends [never] ? any : TLastTransformerEncodeDataOutput, any, any, [
132
+ TLastTransformerDecodeDataInput
133
+ ] extends [never] ? any : TLastTransformerDecodeDataInput, [
134
+ TLastTransformerEncodeChunkOutput
135
+ ] extends [never] ? any : TLastTransformerEncodeChunkOutput, any, any, [
136
+ TLastTransformerDecodeChunkInput
137
+ ] extends [never] ? any : TLastTransformerDecodeChunkInput>>(transformer: TTransformer): IUniKvsConfigFinalizer<TKeyValueMapping, TWriteDataInput, TReadDataOutput, TWriteChunkInput, TReadChunkOutput, $InferDecodeDataInput<TTransformer>, $InferEncodeDataOutput<TTransformer>, $InferDecodeChunkInput<TTransformer>, $InferEncodeChunkOutput<TTransformer>>;
208
138
  }
209
139
  /**
210
- * UniKvs の構成を管理する設定クラスです。
211
- *
212
- * ビルダーパターンを用いて、コンテキスト、トランスフォーマー、ストレージの順で設定を積み上げます。
140
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
141
+ */
142
+ export type UniKvsConfigOptions = {
143
+ /**
144
+ * キーと値のスキーマ定義です。指定すると入出力値が検証されます。
145
+ */
146
+ readonly schema?: UniKvsSchema | undefined;
147
+ };
148
+ /**
149
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
213
150
  */
214
151
  export default class UniKvsConfig implements IUniKvsConfigBuilder, IUniKvsConfigFinalizer {
215
152
  #private;
216
153
  /**
217
- * UniKvsConfig インスタンスを初期化します。
218
- *
219
- * @param UniKvsConstructor UniKvs のクラスコンストラクターです。
154
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
220
155
  */
221
- constructor(UniKvsConstructor: typeof UniKvs);
156
+ constructor(UniKvsConstructor: typeof UniKvs, options?: UniKvsConfigOptions);
222
157
  /**
223
- * 現在の設定を使用して UniKvs インスタンスを作成します。
224
- *
225
- * @returns 作成された UniKvs インスタンスです。
226
- * @throws ストレージが一つも登録されていない場合にエラーを投げます。
158
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
227
159
  */
228
160
  create(): UniKvs;
229
161
  /**
230
- * コンテキスト情報を設定します。既存のコンテキストは上書きされます。
231
- *
232
- * @param context 設定するコンテキストのソースデータです。
233
- * @returns インスタンス自身を返します。
162
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
234
163
  */
235
- setContext(context: ContextSource): this;
164
+ setVariables(vars: VariablesSource): this;
236
165
  /**
237
- * ストレージを登録リストに追加します。
238
- *
239
- * @param storage 追加するストレージインスタンスです。
240
- * @returns ファイナライザーとして自身を返します。
166
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
241
167
  */
242
- appendStorage(storage: IStorage): IUniKvsConfigFinalizer;
168
+ appendStorage(storage: IStorage): this;
243
169
  /**
244
- * トランスフォーマーを変換パイプラインに追加します。
245
- *
246
- * ストレージが登録された後には追加できない制約があります。
247
- *
248
- * @param transformer 追加するトランスフォーマーインスタンスです。
249
- * @returns ビルダーとして自身を返します。
250
- * @throws すでにストレージが登録されている状態で呼び出された場合にエラーを投げます。
170
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
251
171
  */
252
- appendTransformer(transformer: ITransformer): IUniKvsConfigBuilder;
172
+ appendTransformer(transformer: ITransformer): this;
253
173
  }
254
- export {};
255
174
  //# sourceMappingURL=unikvs-config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"unikvs-config.d.ts","sourceRoot":"","sources":["../../src/unikvs-config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAEV,sBAAsB,EACtB,QAAQ,EACR,sBAAsB,EACtB,2BAA2B,EAC3B,2BAA2B,EAC3B,YAAY,EACb,MAAM,cAAc,CAAC;AAItB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAExD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAEhD;;;;GAIG;AACH,KAAK,qBAAqB,CAAC,YAAY,SAAS,YAAY,IAC1D,YAAY,SAAS,YAAY,CAAC,GAAG,EAAE,MAAM,gBAAgB,CAAC,GAAG,gBAAgB,GAAG,KAAK,CAAC;AAE5F;;;;GAIG;AACH,KAAK,sBAAsB,CAAC,YAAY,SAAS,YAAY,IAC3D,YAAY,SAAS,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC,GAAG,iBAAiB,GAAG,KAAK,CAAC;AAEnG;;;;GAIG;AACH,KAAK,sBAAsB,CAAC,YAAY,SAAS,YAAY,IAC3D,YAAY,SAAS,2BAA2B,CAAC,MAAM,iBAAiB,CAAC,GACrE,iBAAiB,GACjB,KAAK,CAAC;AAEZ;;;;GAIG;AACH,KAAK,uBAAuB,CAAC,YAAY,SAAS,YAAY,IAC5D,YAAY,SAAS,2BAA2B,CAAC,GAAG,EAAE,MAAM,kBAAkB,CAAC,GAC3E,kBAAkB,GAClB,KAAK,CAAC;AAEZ;;;;GAIG;AACH,KAAK,qBAAqB,CAAC,QAAQ,SAAS,QAAQ,IAClD,QAAQ,SAAS,sBAAsB,CAAC,MAAM,gBAAgB,CAAC,GAAG,gBAAgB,GAAG,KAAK,CAAC;AAE7F;;;;GAIG;AACH,KAAK,qBAAqB,CAAC,QAAQ,SAAS,QAAQ,IAClD,QAAQ,SAAS,sBAAsB,CAAC,MAAM,gBAAgB,CAAC,GAAG,gBAAgB,GAAG,KAAK,CAAC;AAE7F;;GAEG;AACH,OAAO,CAAC,MAAM,WAAW,EAAE,OAAO,MAAM,CAAC;AAEzC;;;;GAIG;AACH,MAAM,MAAM,UAAU,CAAC,KAAK,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,WAAW,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;AAE9E;;GAEG;AACH,OAAO,CAAC,MAAM,YAAY,EAAE,OAAO,MAAM,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,WAAW,CAAC,UAAU,GAAG,GAAG,IAAI,CAAC,IAAI,EAAE,OAAO,YAAY,EAAE,SAAS,EAAE,UAAU,CAAC,CAAC;AAE/F;;;;GAIG;AACH,MAAM,MAAM,KAAK,CAAC,KAAK,GAAG,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;AAExE;;;;GAIG;AACH,MAAM,MAAM,eAAe,CAAC,CAAC,GAAG,GAAG,IAAI;IAAE,QAAQ,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;CAAE,CAAC;AAElF;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,WAAW,IAC1C,WAAW,SAAS,UAAU,CAAC,MAAM,KAAK,CAAC,GAAG,KAAK,GAAG,KAAK,CAAC;AAE9D;;;;GAIG;AACH,MAAM,MAAM,0BAA0B,CAAC,WAAW,IAChD,WAAW,SAAS,WAAW,CAAC,MAAM,UAAU,CAAC,GAAG,UAAU,GAAG,KAAK,CAAC;AAEzE;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,CAAC,gBAAgB,SAAS,eAAe,GAAG,eAAe,IACzF,OAAO,CAAC,MAAM,gBAAgB,EAAE,QAAQ,CAAC,GAAG,CAAC,CAAC;AAEhD;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,oBAAoB,CACnC,gBAAgB,SAAS,eAAe,GAAG,eAAe,EAC1D,gBAAgB,GAAG,OAAO,CAAC;KACxB,IAAI,IAAI,oBAAoB,CAAC,gBAAgB,CAAC,GAAG,oBAAoB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;CAC/F,CAAC,EACF,iBAAiB,GAAG,gBAAgB,EACpC,iBAAiB,GAAG,OAAO,CAAC;KACzB,IAAI,IAAI,oBAAoB,CAAC,gBAAgB,CAAC,GAAG,0BAA0B,CAC1E,gBAAgB,CAAC,IAAI,CAAC,CACvB;CACF,CAAC,EACF,kBAAkB,GAAG,iBAAiB,EACtC,+BAA+B,GAAG,iBAAiB,EACnD,gCAAgC,GAAG,gBAAgB,EACnD,gCAAgC,GAAG,kBAAkB,EACrD,iCAAiC,GAAG,iBAAiB;IAErD;;;;;OAKG;IACH,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAEzC;;;;;;;;OAQG;IACH,aAAa,CACX,QAAQ,SAAS,QAAQ,CACvB;QAAC,gCAAgC;KAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,gCAAgC,EAC3F;QAAC,+BAA+B;KAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,+BAA+B,EACzF;QAAC,iCAAiC;KAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,iCAAiC,EAC7F;QAAC,gCAAgC;KAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,gCAAgC,CAC5F,EAED,OAAO,EAAE,QAAQ,GAChB,sBAAsB,CACvB,gBAAgB,EAChB,gCAAgC,EAChC,+BAA+B,EAC/B;QAAC,iCAAiC;KAAC,SAAS,CAAC,KAAK,CAAC,GAC/C,KAAK,GACL,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAC/C,KAAK,GACL,iCAAiC,EACvC;QAAC,gCAAgC;KAAC,SAAS,CAAC,KAAK,CAAC,GAC9C,KAAK,GACL,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAC/C,KAAK,GACL,gCAAgC,CACvC,CAAC;IAEF;;;;;;;;OAQG;IACH,iBAAiB,CACf,YAAY,SAAS,YAAY,CAE/B;QAAC,gCAAgC;KAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,gCAAgC,EAE3F,GAAG,EAEH,GAAG,EAEH;QAAC,+BAA+B;KAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,+BAA+B,EAEzF;QAAC,iCAAiC;KAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,iCAAiC,EAE7F,GAAG,EAEH,GAAG,EAEH;QAAC,gCAAgC;KAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,gCAAgC,CAC5F,EAED,WAAW,EAAE,YAAY,GACxB,oBAAoB,CACrB,gBAAgB,EAChB,gBAAgB,EAChB,iBAAiB,EACjB;QAAC,iBAAiB;KAAC,SAAS,CAAC,KAAK,CAAC,GAC/B,KAAK,GACL,CAAC,sBAAsB,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACpD,KAAK,GACL,iBAAiB,EACvB;QAAC,kBAAkB;KAAC,SAAS,CAAC,KAAK,CAAC,GAChC,KAAK,GACL,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GACrD,KAAK,GACL,kBAAkB,EACxB,qBAAqB,CAAC,YAAY,CAAC,EACnC,sBAAsB,CAAC,YAAY,CAAC,EACpC,sBAAsB,CAAC,YAAY,CAAC,EACpC,uBAAuB,CAAC,YAAY,CAAC,CACtC,CAAC;CACH;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,sBAAsB,CACrC,gBAAgB,SAAS,eAAe,GAAG,eAAe,EAC1D,eAAe,GAAG,GAAG,EACrB,eAAe,GAAG,GAAG,EACrB,gBAAgB,GAAG,GAAG,EACtB,gBAAgB,GAAG,GAAG;IAEtB;;;;OAIG;IACH,MAAM,IAAI,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAEnC;;;;;OAKG;IACH,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAAC;IAEzC;;;;;;OAMG;IACH,aAAa,CACX,QAAQ,SAAS,QAAQ,CACvB;QAAC,eAAe;KAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,eAAe,EACzD;QAAC,eAAe;KAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,eAAe,EACzD;QAAC,gBAAgB;KAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,gBAAgB,EAC3D;QAAC,gBAAgB;KAAC,SAAS,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,gBAAgB,CAC5D,EAED,OAAO,EAAE,QAAQ,GAChB,sBAAsB,CACvB,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf;QAAC,gBAAgB;KAAC,SAAS,CAAC,KAAK,CAAC,GAC9B,KAAK,GACL,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAC/C,KAAK,GACL,gBAAgB,EACtB;QAAC,gBAAgB;KAAC,SAAS,CAAC,KAAK,CAAC,GAC9B,KAAK,GACL,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,KAAK,CAAC,GAC/C,KAAK,GACL,gBAAgB,CACvB,CAAC;CACH;AAED;;;;GAIG;AACH,MAAM,CAAC,OAAO,OAAO,YAAa,YAAW,oBAAoB,EAAE,sBAAsB;;IAqBvF;;;;OAIG;IACH,YAAmB,iBAAiB,EAAE,OAAO,MAAM,EAKlD;IAED;;;;;OAKG;IACI,MAAM,IAAI,MAAM,CAgBtB;IAED;;;;;OAKG;IACI,UAAU,CAAC,OAAO,EAAE,aAAa,GAAG,IAAI,CAI9C;IAED;;;;;OAKG;IACI,aAAa,CAAC,OAAO,EAAE,QAAQ,GAAG,sBAAsB,CAI9D;IAED;;;;;;;;OAQG;IACI,iBAAiB,CAAC,WAAW,EAAE,YAAY,GAAG,oBAAoB,CASxE;CACF"}
1
+ {"version":3,"file":"unikvs-config.d.ts","sourceRoot":"","sources":["../../src/unikvs-config.ts"],"names":[],"mappings":"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"}
@@ -9,97 +9,92 @@ 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 _UniKvsConfig_UniKvs, _UniKvsConfig_context, _UniKvsConfig_destinations, _UniKvsConfig_transformers;
12
+ var _UniKvsConfig_UniKvs, _UniKvsConfig_vars, _UniKvsConfig_destinations, _UniKvsConfig_transformers, _UniKvsConfig_valueSchemaResolver;
13
13
  import UniKvsStorage from "./_storage.js";
14
14
  import UniKvsTransformer from "./_transformer.js";
15
- import { MissingStorageError, TransformerRegistrationError } from "./errors.js";
15
+ import * as v from "./_valibot.js";
16
+ import { UniKvsSchemaSchema, createValueSchemaResolver, } from "./_value-schemas.js";
17
+ import { MissingStorageError } from "./errors.js";
18
+ export { Value, PlainValue, StreamValue, } from "./_value-schemas.js";
19
+ const UniKvsConfigOptionsSchema = v.object({
20
+ /**
21
+ * キーと値のスキーマ定義です。
22
+ */
23
+ schema: v.optional(UniKvsSchemaSchema),
24
+ });
25
+ const UniKvsConfigArgsSchema = v.tuple([v.optional(UniKvsConfigOptionsSchema)]);
16
26
  /**
17
- * UniKvs の構成を管理する設定クラスです。
18
- *
19
- * ビルダーパターンを用いて、コンテキスト、トランスフォーマー、ストレージの順で設定を積み上げます。
27
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
20
28
  */
21
29
  class UniKvsConfig {
22
30
  /**
23
- * UniKvsConfig インスタンスを初期化します。
24
- *
25
- * @param UniKvsConstructor UniKvs のクラスコンストラクターです。
31
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
26
32
  */
27
- constructor(UniKvsConstructor) {
33
+ constructor(UniKvsConstructor, options) {
28
34
  /**
29
35
  * UniKvs のコンストラクターです。
30
36
  */
31
37
  _UniKvsConfig_UniKvs.set(this, void 0);
32
38
  /**
33
- * アプリケーションの実行時情報を保持するコンテキストオブジェクトです。
39
+ * アプリケーションの実行時情報を保持する変数オブジェクトです。
34
40
  */
35
- _UniKvsConfig_context.set(this, void 0);
41
+ _UniKvsConfig_vars.set(this, void 0);
36
42
  /**
37
- * データの永続化先となるストレージのリストです。
43
+ * データの永続化先となるストレージのリストです。各ストレージは登録時点のトランスフォーマー数を保持します。
38
44
  */
39
45
  _UniKvsConfig_destinations.set(this, void 0);
40
46
  /**
41
- * データを変換するためのトランスフォーマーのリストです。
47
+ * データを変換するためのトランスフォーマーのリストです。登録順に保持します。
42
48
  */
43
49
  _UniKvsConfig_transformers.set(this, void 0);
50
+ /**
51
+ * キーに対応する値のスキーマ情報を解決するリゾルバーです。スキーマ未設定時は null となります。
52
+ */
53
+ _UniKvsConfig_valueSchemaResolver.set(this, void 0);
54
+ const [parsed = {}] = v.parseInput(UniKvsConfigArgsSchema, [options]);
44
55
  __classPrivateFieldSet(this, _UniKvsConfig_UniKvs, UniKvsConstructor, "f");
45
- __classPrivateFieldSet(this, _UniKvsConfig_context, {}, "f");
56
+ __classPrivateFieldSet(this, _UniKvsConfig_vars, {}, "f");
46
57
  __classPrivateFieldSet(this, _UniKvsConfig_destinations, [], "f");
47
58
  __classPrivateFieldSet(this, _UniKvsConfig_transformers, [], "f");
59
+ __classPrivateFieldSet(this, _UniKvsConfig_valueSchemaResolver, parsed.schema ? createValueSchemaResolver(parsed.schema) : null, "f");
48
60
  }
49
61
  /**
50
- * 現在の設定を使用して UniKvs インスタンスを作成します。
51
- *
52
- * @returns 作成された UniKvs インスタンスです。
53
- * @throws ストレージが一つも登録されていない場合にエラーを投げます。
62
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
54
63
  */
55
64
  create() {
56
- // 登録されたストレージから先頭の要素を取得します。
57
- const [dest, ...destinations] = __classPrivateFieldGet(this, _UniKvsConfig_destinations, "f").map((io) => new UniKvsStorage(io));
65
+ const transformers = __classPrivateFieldGet(this, _UniKvsConfig_transformers, "f").map((tf) => new UniKvsTransformer(tf));
66
+ const [first, ...rest] = __classPrivateFieldGet(this, _UniKvsConfig_destinations, "f").map(({ storage, transformerCount }) => ({
67
+ storage: new UniKvsStorage(storage),
68
+ transformers: transformers.slice(0, transformerCount),
69
+ }));
58
70
  // ストレージが空の場合は UniKvs として機能できないため、例外を投げます。
59
- if (!dest) {
71
+ if (!first) {
60
72
  throw new MissingStorageError();
61
73
  }
62
- // コンテキストの参照を切り離すために浅いコピーを作成して UniKvs を初期化します。
63
- // トランスフォーマーの配列もスライスしてコピーを渡し、内部状態の安全性を確保します。
64
- return new (__classPrivateFieldGet(this, _UniKvsConfig_UniKvs, "f"))(__classPrivateFieldGet(this, _UniKvsConfig_context, "f"), [dest, ...destinations], __classPrivateFieldGet(this, _UniKvsConfig_transformers, "f").map((tf) => new UniKvsTransformer(tf)));
74
+ // 変数の参照を切り離すために浅いコピーを作成して UniKvs を初期化します。
75
+ return new (__classPrivateFieldGet(this, _UniKvsConfig_UniKvs, "f"))(__classPrivateFieldGet(this, _UniKvsConfig_vars, "f"), [first, ...rest], transformers, __classPrivateFieldGet(this, _UniKvsConfig_valueSchemaResolver, "f"));
65
76
  }
66
77
  /**
67
- * コンテキスト情報を設定します。既存のコンテキストは上書きされます。
68
- *
69
- * @param context 設定するコンテキストのソースデータです。
70
- * @returns インスタンス自身を返します。
78
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
71
79
  */
72
- setContext(context) {
73
- __classPrivateFieldSet(this, _UniKvsConfig_context, Array.isArray(context) ? Object.fromEntries(context) : { ...context }, "f");
80
+ setVariables(vars) {
81
+ __classPrivateFieldSet(this, _UniKvsConfig_vars, Array.isArray(vars) ? Object.fromEntries(vars) : { ...vars }, "f");
74
82
  return this;
75
83
  }
76
84
  /**
77
- * ストレージを登録リストに追加します。
78
- *
79
- * @param storage 追加するストレージインスタンスです。
80
- * @returns ファイナライザーとして自身を返します。
85
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
81
86
  */
82
87
  appendStorage(storage) {
83
- __classPrivateFieldGet(this, _UniKvsConfig_destinations, "f").push(storage);
88
+ __classPrivateFieldGet(this, _UniKvsConfig_destinations, "f").push({ storage, transformerCount: __classPrivateFieldGet(this, _UniKvsConfig_transformers, "f").length });
84
89
  return this;
85
90
  }
86
91
  /**
87
- * トランスフォーマーを変換パイプラインに追加します。
88
- *
89
- * ストレージが登録された後には追加できない制約があります。
90
- *
91
- * @param transformer 追加するトランスフォーマーインスタンスです。
92
- * @returns ビルダーとして自身を返します。
93
- * @throws すでにストレージが登録されている状態で呼び出された場合にエラーを投げます。
92
+ * [API Reference](https://tai-kun.github.io/unikvs/packages/unikvs#config-builder)
94
93
  */
95
94
  appendTransformer(transformer) {
96
- // パイプラインの順序を守るため、終端であるストレージが登録済みでないか確認します。
97
- if (__classPrivateFieldGet(this, _UniKvsConfig_destinations, "f").length > 0) {
98
- throw new TransformerRegistrationError();
99
- }
100
95
  __classPrivateFieldGet(this, _UniKvsConfig_transformers, "f").push(transformer);
101
96
  return this;
102
97
  }
103
98
  }
104
- _UniKvsConfig_UniKvs = new WeakMap(), _UniKvsConfig_context = new WeakMap(), _UniKvsConfig_destinations = new WeakMap(), _UniKvsConfig_transformers = new WeakMap();
99
+ _UniKvsConfig_UniKvs = new WeakMap(), _UniKvsConfig_vars = new WeakMap(), _UniKvsConfig_destinations = new WeakMap(), _UniKvsConfig_transformers = new WeakMap(), _UniKvsConfig_valueSchemaResolver = new WeakMap();
105
100
  export default UniKvsConfig;