unikvs 0.0.2 → 0.0.4

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/LICENSE +21 -0
  2. package/dist/src/_combine-signals.d.ts +9 -0
  3. package/dist/src/_combine-signals.d.ts.map +1 -0
  4. package/dist/src/_combine-signals.js +59 -0
  5. package/dist/src/_logger.d.ts +3 -0
  6. package/dist/src/_logger.d.ts.map +1 -0
  7. package/dist/src/_logger.js +3 -0
  8. package/dist/src/_merge-context.d.ts +4 -0
  9. package/dist/src/_merge-context.d.ts.map +1 -0
  10. package/dist/src/_merge-context.js +3 -0
  11. package/dist/src/_storage.d.ts +17 -0
  12. package/dist/src/_storage.d.ts.map +1 -0
  13. package/dist/src/_storage.js +84 -0
  14. package/dist/src/_to-value-stream.d.ts +12 -0
  15. package/dist/src/_to-value-stream.d.ts.map +1 -0
  16. package/dist/src/_to-value-stream.js +53 -0
  17. package/dist/src/_transformer.d.ts +12 -0
  18. package/dist/src/_transformer.d.ts.map +1 -0
  19. package/dist/src/_transformer.js +52 -0
  20. package/dist/src/_valibot.d.ts +13 -0
  21. package/dist/src/_valibot.d.ts.map +1 -0
  22. package/dist/src/_valibot.js +12 -0
  23. package/dist/src/context.types.d.ts +17 -0
  24. package/dist/src/context.types.d.ts.map +1 -0
  25. package/dist/src/context.types.js +1 -0
  26. package/dist/src/errors.d.ts +108 -0
  27. package/dist/src/errors.d.ts.map +1 -0
  28. package/dist/src/errors.js +169 -0
  29. package/dist/src/index.d.ts +10 -0
  30. package/dist/src/index.d.ts.map +1 -0
  31. package/dist/src/index.js +3 -0
  32. package/dist/src/unikvs-config.d.ts +255 -0
  33. package/dist/src/unikvs-config.d.ts.map +1 -0
  34. package/dist/src/unikvs-config.js +105 -0
  35. package/dist/src/unikvs.d.ts +324 -0
  36. package/dist/src/unikvs.d.ts.map +1 -0
  37. package/dist/src/unikvs.js +693 -0
  38. package/dist/src/utils.types.d.ts +7 -0
  39. package/dist/src/utils.types.d.ts.map +1 -0
  40. package/dist/src/utils.types.js +1 -0
  41. package/dist/src/value-stream.types.d.ts +11 -0
  42. package/dist/src/value-stream.types.d.ts.map +1 -0
  43. package/dist/src/value-stream.types.js +1 -0
  44. package/package.json +53 -7
  45. package/src/_combine-signals.ts +67 -0
  46. package/src/_logger.ts +5 -0
  47. package/src/_merge-context.ts +10 -0
  48. package/src/_storage.ts +130 -0
  49. package/src/_to-value-stream.ts +59 -0
  50. package/src/_transformer.ts +75 -0
  51. package/src/_valibot.ts +30 -0
  52. package/src/context.types.ts +19 -0
  53. package/src/errors.ts +382 -0
  54. package/src/index.ts +52 -0
  55. package/src/unikvs-config.ts +429 -0
  56. package/src/unikvs.ts +1171 -0
  57. package/src/utils.types.ts +6 -0
  58. package/src/value-stream.types.ts +14 -0
  59. package/README.md +0 -45
@@ -0,0 +1,324 @@
1
+ import type { Context, Key } from "@unikvs/core";
2
+ import { UniKvsStorage } from "./_storage.js";
3
+ import UniKvsTransformer from "./_transformer.js";
4
+ import type { ContextSource } from "./context.types.js";
5
+ import { type $InferPlainValueData, type $InferStreamValueChunkData, type IUniKvsConfigBuilder, type KeyofKeyValueMapping, type KeyValueMapping, type PlainValue, type StreamValue, type Value } from "./unikvs-config.js";
6
+ import type { ValueOf } from "./utils.types.js";
7
+ import type { ValueStream } from "./value-stream.types.js";
8
+ /**
9
+ * 設定可能な値の型定義です。
10
+ *
11
+ * @template TValue 値の型定義です。
12
+ */
13
+ export type SetValue<TValue extends Value> = $InferPlainValueData<TValue> | (TValue extends StreamValue<infer TChunkData> ? ReadableStream<TChunkData> : never);
14
+ /**
15
+ * プレーンな値を持つキーのみを抽出する型定義です。
16
+ *
17
+ * @template TKeyValueMapping キーと値のマッピング定義です。
18
+ */
19
+ export type KeyofKeyValueMappingHasPlainValue<TKeyValueMapping extends KeyValueMapping> = ValueOf<{
20
+ [TKey in KeyofKeyValueMapping<TKeyValueMapping>]: PlainValue extends TKeyValueMapping[TKey] ? TKey : never;
21
+ }>;
22
+ /**
23
+ * ストリーム形式の値を持つキーのみを抽出する型定義です。
24
+ *
25
+ * @template TKeyValueMapping キーと値のマッピング定義です。
26
+ */
27
+ export type KeyofKeyValueMappingHasStreamValue<TKeyValueMapping extends KeyValueMapping> = ValueOf<{
28
+ [TKey in KeyofKeyValueMapping<TKeyValueMapping>]: StreamValue extends TKeyValueMapping[TKey] ? TKey : never;
29
+ }>;
30
+ /**
31
+ * オープン操作時のオプションです。
32
+ */
33
+ export type OpenOptions = {
34
+ /**
35
+ * 処理の中断を通知するためのシグナルです。
36
+ */
37
+ readonly signal?: AbortSignal | undefined;
38
+ /**
39
+ * 実行時のコンテキスト情報です。
40
+ */
41
+ readonly context?: ContextSource | undefined;
42
+ };
43
+ /**
44
+ * クローズ操作時のオプションです。
45
+ */
46
+ export type CloseOptions = {
47
+ /**
48
+ * 処理の中断を通知するためのシグナルです。
49
+ */
50
+ readonly signal?: AbortSignal | undefined;
51
+ /**
52
+ * 実行時のコンテキスト情報です。
53
+ */
54
+ readonly context?: ContextSource | undefined;
55
+ };
56
+ /**
57
+ * 保存操作時のオプションです。
58
+ *
59
+ * @template TKeyValueMapping キーと値のマッピング定義です。
60
+ * @template TKey 対象となるキーの型です。
61
+ */
62
+ export type SetOptions<TKeyValueMapping extends KeyValueMapping = KeyValueMapping, TKey extends KeyofKeyValueMapping<TKeyValueMapping> = KeyofKeyValueMapping<TKeyValueMapping>> = {
63
+ /**
64
+ * 操作対象を識別するためのキーです。
65
+ */
66
+ readonly key: TKey;
67
+ /**
68
+ * 保存する値です。
69
+ */
70
+ readonly value: SetValue<TKeyValueMapping[TKey]>;
71
+ /**
72
+ * 処理の中断を通知するためのシグナルです。
73
+ */
74
+ readonly signal?: AbortSignal | undefined;
75
+ /**
76
+ * 実行時のコンテキスト情報です。
77
+ */
78
+ readonly context?: ContextSource | undefined;
79
+ };
80
+ /**
81
+ * 取得操作時のオプションです。
82
+ *
83
+ * @template TKey 対象となるキーの型です。
84
+ */
85
+ export type GetOptions<TKey = Key> = {
86
+ /**
87
+ * 操作対象を識別するためのキーです。
88
+ */
89
+ readonly key: TKey;
90
+ /**
91
+ * 処理の中断を通知するためのシグナルです。
92
+ */
93
+ readonly signal?: AbortSignal | undefined;
94
+ /**
95
+ * 実行時のコンテキスト情報です。
96
+ */
97
+ readonly context?: ContextSource | undefined;
98
+ };
99
+ /**
100
+ * ストリーム取得操作時のオプションです。
101
+ *
102
+ * @template TKey 対象となるキーの型です。
103
+ */
104
+ export type StreamOptions<TKey = Key> = {
105
+ /**
106
+ * 操作対象を識別するためのキーです。
107
+ */
108
+ readonly key: TKey;
109
+ /**
110
+ * 処理の中断を通知するためのシグナルです。
111
+ */
112
+ readonly signal?: AbortSignal | undefined;
113
+ /**
114
+ * 実行時のコンテキスト情報です。
115
+ */
116
+ readonly context?: ContextSource | undefined;
117
+ };
118
+ /**
119
+ * 存在確認操作時のオプションです。
120
+ *
121
+ * @template TKey 対象となるキーの型です。
122
+ */
123
+ export type HasOptions<TKey = Key> = {
124
+ /**
125
+ * 操作対象を識別するためのキーです。
126
+ */
127
+ readonly key: TKey;
128
+ /**
129
+ * 処理の中断を通知するためのシグナルです。
130
+ */
131
+ readonly signal?: AbortSignal | undefined;
132
+ /**
133
+ * 実行時のコンテキスト情報です。
134
+ */
135
+ readonly context?: ContextSource | undefined;
136
+ };
137
+ /**
138
+ * 削除操作時のオプションです。
139
+ *
140
+ * @template TKey 対象となるキーの型です。
141
+ */
142
+ export type DeleteOptions<TKey = Key> = {
143
+ /**
144
+ * 操作対象を識別するためのキーです。
145
+ */
146
+ readonly key: TKey;
147
+ /**
148
+ * 処理の中断を通知するためのシグナルです。
149
+ */
150
+ readonly signal?: AbortSignal | undefined;
151
+ /**
152
+ * 実行時のコンテキスト情報です。
153
+ */
154
+ readonly context?: ContextSource | undefined;
155
+ };
156
+ /**
157
+ * 全削除操作時のオプションです。
158
+ */
159
+ export type ClearOptions = {
160
+ /**
161
+ * 処理の中断を通知するためのシグナルです。
162
+ */
163
+ readonly signal?: AbortSignal | undefined;
164
+ /**
165
+ * 実行時のコンテキスト情報です。
166
+ */
167
+ readonly context?: ContextSource | undefined;
168
+ };
169
+ /**
170
+ * UniKvs メインクラスです。
171
+ *
172
+ * 複数のストレージとトランスフォーマーを統合して KVS 操作を提供します。
173
+ *
174
+ * @template TKeyValueMapping キーと値のマッピング定義です。
175
+ */
176
+ export default class UniKvs<TKeyValueMapping extends KeyValueMapping = KeyValueMapping> {
177
+ #private;
178
+ /**
179
+ * UniKvs の設定ビルダーを作成します。
180
+ *
181
+ * @template TKeyValueMapping マッピング定義です。
182
+ * @returns 設定ビルダーのインスタンスです。
183
+ * @example
184
+ * ```typescript
185
+ * import { Compression } from "@unikvs/compression";
186
+ * import { FileSystem } from "@unikvs/fs.node";
187
+ * import { UniKvs, type Value } from "unikvs";
188
+ *
189
+ * const kvs = UniKvs.config<{
190
+ * foo: Value<Uint8Array<ArrayBuffer>>;
191
+ * }>()
192
+ * .appendTransformer(new Compression("gzip"))
193
+ * .appendStorage(new FileSystem(".tmp"))
194
+ * .create();
195
+ *
196
+ * await kvs.open();
197
+ *
198
+ * await kvs.set("foo", Uint8Array.from([0, 1, 2]));
199
+ *
200
+ * await kvs.close();
201
+ * ```
202
+ */
203
+ static config<TKeyValueMapping extends KeyValueMapping>(): IUniKvsConfigBuilder<TKeyValueMapping>;
204
+ /**
205
+ * インスタンスを初期化します。
206
+ *
207
+ * @internal UniKvs の設定ビルダー経由で使用します。
208
+ * @param context コンテキストです。
209
+ * @param destinations ストレージのリストです。
210
+ * @param transformers トランスフォーマーのリストです。
211
+ */
212
+ constructor(context: Readonly<Context>, destinations: readonly [UniKvsStorage, ...UniKvsStorage[]], transformers: readonly UniKvsTransformer[]);
213
+ /**
214
+ * UniKvs が利用可能であるかを確認します。
215
+ *
216
+ * @returns 利用可能である場合は true、そうでない場合は false を返します。
217
+ */
218
+ get isOpen(): boolean;
219
+ /**
220
+ * すべてのストレージとトランスフォーマーを初期化します。
221
+ *
222
+ * @param options オープン時のオプションです。
223
+ * @returns 完了を通知する Promise です。
224
+ */
225
+ open(options?: OpenOptions): Promise<void>;
226
+ /**
227
+ * ストレージをクローズします。
228
+ *
229
+ * @param options クローズ時のオプションです。
230
+ * @returns 完了を通知する Promise です。
231
+ */
232
+ close(options?: CloseOptions): Promise<void>;
233
+ [Symbol.asyncDispose](): Promise<void>;
234
+ /**
235
+ * 指定したキーに値を保存します。
236
+ *
237
+ * @template TKey 対象キーの型定義です。
238
+ * @param key 操作対象を識別するためのキーです。
239
+ * @param value 保存する値です。
240
+ * @param options 追加のオプションです。
241
+ * @returns 完了を通知する Promise です。
242
+ */
243
+ set<const TKey extends KeyofKeyValueMapping<TKeyValueMapping>>(key: TKey, value: SetValue<TKeyValueMapping[TKey]>, options?: Omit<SetOptions, "key" | "value">): Promise<void>;
244
+ /**
245
+ * 指定したオプションで値を保存します。
246
+ *
247
+ * @template TKey 対象キーの型定義です。
248
+ * @param options セット操作のオプション一式です。
249
+ * @returns 完了を通知する Promise です。
250
+ */
251
+ set<const TKey extends KeyofKeyValueMapping<TKeyValueMapping>>(options: SetOptions<TKeyValueMapping, TKey>): Promise<void>;
252
+ /**
253
+ * 指定したキーから値を取得します。
254
+ *
255
+ * @template TKey 対象キーの型定義です。
256
+ * @param key 操作対象を識別するためのキーです。
257
+ * @param options 追加のオプションです。
258
+ * @returns 取得した値を返します。
259
+ */
260
+ get<const TKey extends KeyofKeyValueMappingHasPlainValue<TKeyValueMapping>>(key: TKey, options?: Omit<GetOptions, "key">): Promise<$InferPlainValueData<TKeyValueMapping[TKey]>>;
261
+ /**
262
+ * 指定したオプションで値を取得します。
263
+ *
264
+ * @template TKey 対象キーの型定義です。
265
+ * @param options 取得操作のオプション一式です。
266
+ * @returns 取得した値を返します。
267
+ */
268
+ get<const TKey extends KeyofKeyValueMappingHasPlainValue<TKeyValueMapping>>(options: GetOptions<TKey>): Promise<$InferPlainValueData<TKeyValueMapping[TKey]>>;
269
+ /**
270
+ * 指定したキーからストリームを取得します。
271
+ *
272
+ * @template TKey 対象キーの型定義です。
273
+ * @param key 操作対象を識別するためのキーです。
274
+ * @param options 追加のオプションです。
275
+ * @returns 取得したストリームを返します。
276
+ */
277
+ stream<const TKey extends KeyofKeyValueMappingHasStreamValue<TKeyValueMapping>>(key: TKey, options?: Omit<StreamOptions, "key">): Promise<ValueStream<$InferStreamValueChunkData<TKeyValueMapping[TKey]>>>;
278
+ /**
279
+ * 指定したオプションでストリームを取得します。
280
+ *
281
+ * @template TKey 対象キーの型定義です。
282
+ * @param options ストリーム取得操作のオプション一式です。
283
+ * @returns 取得したストリームを返します。
284
+ */
285
+ stream<const TKey extends KeyofKeyValueMappingHasStreamValue<TKeyValueMapping>>(options: StreamOptions<TKey>): Promise<ValueStream<$InferStreamValueChunkData<TKeyValueMapping[TKey]>>>;
286
+ /**
287
+ * 指定したキーが存在するかを確認します。
288
+ *
289
+ * @param key 操作対象を識別するためのキーです。
290
+ * @param options 追加のオプションです。
291
+ * @returns 存在する場合は true、そうでない場合は false を返します。
292
+ */
293
+ has(key: KeyofKeyValueMapping<TKeyValueMapping>, options?: Omit<HasOptions, "key">): Promise<boolean>;
294
+ /**
295
+ * 指定したオプションでキーの存在を確認します。
296
+ *
297
+ * @param options 存在確認操作のオプションです。
298
+ * @returns 存在する場合は true、そうでない場合は false を返します。
299
+ */
300
+ has(options: HasOptions<KeyofKeyValueMapping<TKeyValueMapping>>): Promise<boolean>;
301
+ /**
302
+ * 指定したキーを削除します。
303
+ *
304
+ * @param key 操作対象を識別するためのキーです。
305
+ * @param options 追加のオプションです。
306
+ * @returns 完了を通知する Promise です。
307
+ */
308
+ delete(key: KeyofKeyValueMapping<TKeyValueMapping>, options?: Omit<DeleteOptions, "key">): Promise<void>;
309
+ /**
310
+ * 指定したオプションでキーを削除します。
311
+ *
312
+ * @param options 削除操作のオプションです。
313
+ * @returns 完了を通知する Promise です。
314
+ */
315
+ delete(options: DeleteOptions<KeyofKeyValueMapping<TKeyValueMapping>>): Promise<void>;
316
+ /**
317
+ * すべてのストレージ内のデータを全削除します。
318
+ *
319
+ * @param options クリア操作のオプションです。
320
+ * @returns 完了を通知する Promise です。
321
+ */
322
+ clear(options?: ClearOptions): Promise<void>;
323
+ }
324
+ //# sourceMappingURL=unikvs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unikvs.d.ts","sourceRoot":"","sources":["../../src/unikvs.ts"],"names":[],"mappings":"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"}