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.
- package/LICENSE +21 -0
- package/dist/src/_combine-signals.d.ts +9 -0
- package/dist/src/_combine-signals.d.ts.map +1 -0
- package/dist/src/_combine-signals.js +59 -0
- package/dist/src/_logger.d.ts +3 -0
- package/dist/src/_logger.d.ts.map +1 -0
- package/dist/src/_logger.js +3 -0
- package/dist/src/_merge-context.d.ts +4 -0
- package/dist/src/_merge-context.d.ts.map +1 -0
- package/dist/src/_merge-context.js +3 -0
- package/dist/src/_storage.d.ts +17 -0
- package/dist/src/_storage.d.ts.map +1 -0
- package/dist/src/_storage.js +84 -0
- package/dist/src/_to-value-stream.d.ts +12 -0
- package/dist/src/_to-value-stream.d.ts.map +1 -0
- package/dist/src/_to-value-stream.js +53 -0
- package/dist/src/_transformer.d.ts +12 -0
- package/dist/src/_transformer.d.ts.map +1 -0
- package/dist/src/_transformer.js +52 -0
- package/dist/src/_valibot.d.ts +13 -0
- package/dist/src/_valibot.d.ts.map +1 -0
- package/dist/src/_valibot.js +12 -0
- package/dist/src/context.types.d.ts +17 -0
- package/dist/src/context.types.d.ts.map +1 -0
- package/dist/src/context.types.js +1 -0
- package/dist/src/errors.d.ts +108 -0
- package/dist/src/errors.d.ts.map +1 -0
- package/dist/src/errors.js +169 -0
- package/dist/src/index.d.ts +10 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +3 -0
- package/dist/src/unikvs-config.d.ts +255 -0
- package/dist/src/unikvs-config.d.ts.map +1 -0
- package/dist/src/unikvs-config.js +105 -0
- package/dist/src/unikvs.d.ts +324 -0
- package/dist/src/unikvs.d.ts.map +1 -0
- package/dist/src/unikvs.js +693 -0
- package/dist/src/utils.types.d.ts +7 -0
- package/dist/src/utils.types.d.ts.map +1 -0
- package/dist/src/utils.types.js +1 -0
- package/dist/src/value-stream.types.d.ts +11 -0
- package/dist/src/value-stream.types.d.ts.map +1 -0
- package/dist/src/value-stream.types.js +1 -0
- package/package.json +53 -7
- package/src/_combine-signals.ts +67 -0
- package/src/_logger.ts +5 -0
- package/src/_merge-context.ts +10 -0
- package/src/_storage.ts +130 -0
- package/src/_to-value-stream.ts +59 -0
- package/src/_transformer.ts +75 -0
- package/src/_valibot.ts +30 -0
- package/src/context.types.ts +19 -0
- package/src/errors.ts +382 -0
- package/src/index.ts +52 -0
- package/src/unikvs-config.ts +429 -0
- package/src/unikvs.ts +1171 -0
- package/src/utils.types.ts +6 -0
- package/src/value-stream.types.ts +14 -0
- package/README.md +0 -45
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
|
|
2
|
+
import { setErrorMessage, ErrorBase } from "@unikvs/core";
|
|
3
|
+
// -------------------------------------------------------------------------------------------------
|
|
4
|
+
//
|
|
5
|
+
// 境界エラー
|
|
6
|
+
//
|
|
7
|
+
// -------------------------------------------------------------------------------------------------
|
|
8
|
+
export class InvalidUsageErrorBase extends ErrorBase {
|
|
9
|
+
}
|
|
10
|
+
export class InvalidInputError extends InvalidUsageErrorBase {
|
|
11
|
+
constructor(args, options) {
|
|
12
|
+
const { value: input, issues } = args;
|
|
13
|
+
super({ input, issues }, ({ issues }) => issues.map((i) => i.message).join(": "), options);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
_a = InvalidInputError;
|
|
17
|
+
(() => {
|
|
18
|
+
_a.prototype.name = "UniKvsInvalidInputError";
|
|
19
|
+
})();
|
|
20
|
+
export class InvalidOutputError extends InvalidUsageErrorBase {
|
|
21
|
+
constructor(args, options) {
|
|
22
|
+
const { value: output, issues } = args;
|
|
23
|
+
super({ output, issues }, ({ issues }) => issues.map((i) => i.message).join(": "), options);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
_b = InvalidOutputError;
|
|
27
|
+
(() => {
|
|
28
|
+
_b.prototype.name = "UniKvsInvalidOutputError";
|
|
29
|
+
})();
|
|
30
|
+
// -------------------------------------------------------------------------------------------------
|
|
31
|
+
//
|
|
32
|
+
// UniKvs
|
|
33
|
+
//
|
|
34
|
+
// -------------------------------------------------------------------------------------------------
|
|
35
|
+
export class UniKvsIsOpenError extends ErrorBase {
|
|
36
|
+
constructor(options) {
|
|
37
|
+
super("UniKvs is open", options);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
_c = UniKvsIsOpenError;
|
|
41
|
+
(() => {
|
|
42
|
+
_c.prototype.name = "UniKvsIsOpenError";
|
|
43
|
+
})();
|
|
44
|
+
setErrorMessage(UniKvsIsOpenError, "UniKvs は開いています", "ja");
|
|
45
|
+
export class UniKvsIsNotOpenError extends ErrorBase {
|
|
46
|
+
constructor(options) {
|
|
47
|
+
super("UniKvs is not open", options);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
_d = UniKvsIsNotOpenError;
|
|
51
|
+
(() => {
|
|
52
|
+
_d.prototype.name = "UniKvsIsNotOpenError";
|
|
53
|
+
})();
|
|
54
|
+
setErrorMessage(UniKvsIsNotOpenError, "UniKvs は開いていません", "ja");
|
|
55
|
+
export class KeyNotFoundError extends ErrorBase {
|
|
56
|
+
constructor(args, options) {
|
|
57
|
+
super(args, ({ key }) => `Key ${JSON.stringify(key)} not found`, options);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
_e = KeyNotFoundError;
|
|
61
|
+
(() => {
|
|
62
|
+
_e.prototype.name = "UniKvsKeyNotFoundError";
|
|
63
|
+
})();
|
|
64
|
+
setErrorMessage(KeyNotFoundError, ({ key }) => `キー ${JSON.stringify(key)} が見つかりません`, "ja");
|
|
65
|
+
export class StorageIsNotOpenError extends ErrorBase {
|
|
66
|
+
constructor(args, options) {
|
|
67
|
+
super(args, ({ name }) => `Storage "${name}" is not open`, options);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
_f = StorageIsNotOpenError;
|
|
71
|
+
(() => {
|
|
72
|
+
_f.prototype.name = "UniKvsStorageIsNotOpenError";
|
|
73
|
+
})();
|
|
74
|
+
setErrorMessage(StorageIsNotOpenError, ({ name }) => `ストレージ "${name}" は開いていません`, "ja");
|
|
75
|
+
export class WritableStreamNotSupportedError extends ErrorBase {
|
|
76
|
+
constructor(args, options) {
|
|
77
|
+
super(args, ({ name }) => `Storage "${name}" does not support writable stream`, options);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
_g = WritableStreamNotSupportedError;
|
|
81
|
+
(() => {
|
|
82
|
+
_g.prototype.name = "UniKvsWritableStreamNotSupportedError";
|
|
83
|
+
})();
|
|
84
|
+
setErrorMessage(StorageIsNotOpenError, ({ name }) => `ストレージ "${name}" は書き込み可能なストリームをサポートしていません`, "ja");
|
|
85
|
+
export class ReadableStreamNotSupportedError extends ErrorBase {
|
|
86
|
+
constructor(args, options) {
|
|
87
|
+
super(args, ({ name }) => `Storage "${name}" does not support readable stream`, options);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
_h = ReadableStreamNotSupportedError;
|
|
91
|
+
(() => {
|
|
92
|
+
_h.prototype.name = "UniKvsReadableStreamNotSupportedError";
|
|
93
|
+
})();
|
|
94
|
+
setErrorMessage(StorageIsNotOpenError, ({ name }) => `ストレージ "${name}" は読み取り可能なストリームをサポートしていません`, "ja");
|
|
95
|
+
export class TransformerIsNotOpenError extends ErrorBase {
|
|
96
|
+
constructor(args, options) {
|
|
97
|
+
super(args, ({ name }) => `Transformer "${name}" is not open`, options);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
_j = TransformerIsNotOpenError;
|
|
101
|
+
(() => {
|
|
102
|
+
_j.prototype.name = "UniKvsTransformerIsNotOpenError";
|
|
103
|
+
})();
|
|
104
|
+
setErrorMessage(TransformerIsNotOpenError, ({ name }) => `トランスフォーマー "${name}" は開いていません`, "ja");
|
|
105
|
+
export class EncodableStreamNotSupportedError extends ErrorBase {
|
|
106
|
+
constructor(args, options) {
|
|
107
|
+
super(args, ({ name }) => `Transformer "${name}" does not support encodable stream`, options);
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
_k = EncodableStreamNotSupportedError;
|
|
111
|
+
(() => {
|
|
112
|
+
_k.prototype.name = "UniKvsEncodableStreamNotSupportedError";
|
|
113
|
+
})();
|
|
114
|
+
setErrorMessage(TransformerIsNotOpenError, ({ name }) => `トランスフォーマー "${name}" はエンコード可能なストリームをサポートしていません`, "ja");
|
|
115
|
+
export class DecodableStreamNotSupportedError extends ErrorBase {
|
|
116
|
+
constructor(args, options) {
|
|
117
|
+
super(args, ({ name }) => `Transformer "${name}" does not support decodable stream`, options);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
_l = DecodableStreamNotSupportedError;
|
|
121
|
+
(() => {
|
|
122
|
+
_l.prototype.name = "UniKvsDecodableStreamNotSupportedError";
|
|
123
|
+
})();
|
|
124
|
+
setErrorMessage(TransformerIsNotOpenError, ({ name }) => `トランスフォーマー "${name}" はデコード可能なストリームをサポートしていません`, "ja");
|
|
125
|
+
export class PluginOperationAggregateError extends ErrorBase {
|
|
126
|
+
constructor(args, options) {
|
|
127
|
+
const errors = args.errors.map((error) => ({
|
|
128
|
+
plugin: error.plugin ?? args.plugin ?? "",
|
|
129
|
+
reason: error.reason,
|
|
130
|
+
}));
|
|
131
|
+
const plugins = [...new Set(errors.map((error) => error.plugin))];
|
|
132
|
+
super({
|
|
133
|
+
plugin: plugins.length === 1 ? plugins[0] : "plugin",
|
|
134
|
+
action: args.action,
|
|
135
|
+
errors,
|
|
136
|
+
}, ({ action, errors, plugin }) => `${errors.length} ${plugin}(s) fail ${action} operation`, options);
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
_m = PluginOperationAggregateError;
|
|
140
|
+
(() => {
|
|
141
|
+
_m.prototype.name = "UniKvsPluginOperationAggregateError";
|
|
142
|
+
})();
|
|
143
|
+
setErrorMessage(PluginOperationAggregateError, ({ action, errors, plugin }) => `${errors.length} 個の${{ plugin: "プラグイン", storage: "ストレージ", transformer: "トランスフォーマー" }[plugin]}が ${action} 操作に失敗`, "ja");
|
|
144
|
+
// -------------------------------------------------------------------------------------------------
|
|
145
|
+
//
|
|
146
|
+
// その他
|
|
147
|
+
//
|
|
148
|
+
// -------------------------------------------------------------------------------------------------
|
|
149
|
+
export class MissingStorageError extends ErrorBase {
|
|
150
|
+
constructor(options) {
|
|
151
|
+
super("At least one storage is required to use UniKvs", options);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
_o = MissingStorageError;
|
|
155
|
+
(() => {
|
|
156
|
+
_o.prototype.name = "UniKvsMissingStorageError";
|
|
157
|
+
})();
|
|
158
|
+
setErrorMessage(MissingStorageError, "UniKvs を使用するためには最低 1 つのストレージが必要です", "ja");
|
|
159
|
+
// -------------------------------------------------------------------------------------------------
|
|
160
|
+
export class TransformerRegistrationError extends ErrorBase {
|
|
161
|
+
constructor(options) {
|
|
162
|
+
super("Cannot add transformers after storage has already been registered", options);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
_p = TransformerRegistrationError;
|
|
166
|
+
(() => {
|
|
167
|
+
_p.prototype.name = "UniKvsTransformerRegistrationError";
|
|
168
|
+
})();
|
|
169
|
+
setErrorMessage(MissingStorageError, "ストレージが登録された後にトランスフォーマーを追加することはできません", "ja");
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export type * from "./context.types.js";
|
|
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";
|
|
4
|
+
export type * from "./unikvs-config.js";
|
|
5
|
+
export { default as UniKvsConfig } from "./unikvs-config.js";
|
|
6
|
+
export type * from "./unikvs.js";
|
|
7
|
+
export { default as UniKvs } from "./unikvs.js";
|
|
8
|
+
export type * from "./utils.types.js";
|
|
9
|
+
export type * from "./value-stream.types.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +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"}
|
|
@@ -0,0 +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";
|
|
3
|
+
export { default as UniKvs } from "./unikvs.js";
|
|
@@ -0,0 +1,255 @@
|
|
|
1
|
+
import type { IReadableStreamStorage, IStorage, IWritableStreamStorage, Key, IDecodableStreamTransformer, IEncodableStreamTransformer, ITransformer } from "@unikvs/core";
|
|
2
|
+
import type { ContextSource } from "./context.types.js";
|
|
3
|
+
import type UniKvs from "./unikvs.js";
|
|
4
|
+
import type { ValueOf } from "./utils.types.js";
|
|
5
|
+
/**
|
|
6
|
+
* トランスフォーマーから、デコード時の入力データの型を推論するユーティリティー型です。
|
|
7
|
+
*
|
|
8
|
+
* @template TTransformer 対象となるトランスフォーマーの型です。
|
|
9
|
+
*/
|
|
10
|
+
type $InferDecodeDataInput<TTransformer extends ITransformer> = TTransformer extends ITransformer<any, infer TDecodeDataInput> ? TDecodeDataInput : never;
|
|
11
|
+
/**
|
|
12
|
+
* トランスフォーマーから、エンコード時の出力データの型を推論するユーティリティー型です。
|
|
13
|
+
*
|
|
14
|
+
* @template TTransformer 対象となるトランスフォーマーの型です。
|
|
15
|
+
*/
|
|
16
|
+
type $InferEncodeDataOutput<TTransformer extends ITransformer> = TTransformer extends ITransformer<any, any, infer TEncodeDataOutput> ? TEncodeDataOutput : never;
|
|
17
|
+
/**
|
|
18
|
+
* トランスフォーマーから、デコードストリームの入力チャンクデータの型を推論するユーティリティー型です。
|
|
19
|
+
*
|
|
20
|
+
* @template TTransformer 対象となるトランスフォーマーの型です。
|
|
21
|
+
*/
|
|
22
|
+
type $InferDecodeChunkInput<TTransformer extends ITransformer> = TTransformer extends IDecodableStreamTransformer<infer TDecodeChunkInput> ? TDecodeChunkInput : never;
|
|
23
|
+
/**
|
|
24
|
+
* トランスフォーマーから、エンコードストリームの出力チャンクデータの型を推論するユーティリティー型です。
|
|
25
|
+
*
|
|
26
|
+
* @template TTransformer 対象となるトランスフォーマーの型です。
|
|
27
|
+
*/
|
|
28
|
+
type $InferEncodeChunkOutput<TTransformer extends ITransformer> = TTransformer extends IEncodableStreamTransformer<any, infer TEncodeChunkOutput> ? TEncodeChunkOutput : never;
|
|
29
|
+
/**
|
|
30
|
+
* ストレージから、書き込みストリームの入力チャンクデータの型を推論するユーティリティー型です。
|
|
31
|
+
*
|
|
32
|
+
* @template TStorage 対象となるストレージの型です。
|
|
33
|
+
*/
|
|
34
|
+
type $InferWriteChunkInput<TStorage extends IStorage> = TStorage extends IWritableStreamStorage<infer TWriteChunkInput> ? TWriteChunkInput : never;
|
|
35
|
+
/**
|
|
36
|
+
* ストレージから、読み込みストリームの出力チャンクデータの型を推論するユーティリティー型です。
|
|
37
|
+
*
|
|
38
|
+
* @template TStorage 対象となるストレージの型です。
|
|
39
|
+
*/
|
|
40
|
+
type $InferReadChunkOutput<TStorage extends IStorage> = TStorage extends IReadableStreamStorage<infer TReadChunkOutput> ? TReadChunkOutput : never;
|
|
41
|
+
/**
|
|
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 TDataAndChunkData データまたはチャンクデータの型です。
|
|
65
|
+
*/
|
|
66
|
+
export type Value<TDataAndChunkData = any> = PlainValue<TDataAndChunkData> | StreamValue<TDataAndChunkData>;
|
|
67
|
+
/**
|
|
68
|
+
* キーと値のマッピングを定義するオブジェクトの型です。
|
|
69
|
+
*
|
|
70
|
+
* @template T マッピングされる値の型です。
|
|
71
|
+
*/
|
|
72
|
+
export type KeyValueMapping<T = any> = {
|
|
73
|
+
readonly [key: Key]: Value<T>;
|
|
74
|
+
};
|
|
75
|
+
/**
|
|
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 対象となるマッピング型です。
|
|
91
|
+
*/
|
|
92
|
+
export type KeyofKeyValueMapping<TKeyValueMapping extends KeyValueMapping = KeyValueMapping> = Extract<keyof TKeyValueMapping, Key>;
|
|
93
|
+
/**
|
|
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 最後に適用されたトランスフォーマーのエンコード出力チャンクデータの型です。
|
|
107
|
+
*/
|
|
108
|
+
export interface IUniKvsConfigBuilder<TKeyValueMapping extends KeyValueMapping = KeyValueMapping, TUniKvsDataInput = ValueOf<{
|
|
109
|
+
[TKey in KeyofKeyValueMapping<TKeyValueMapping>]: $InferPlainValueData<TKeyValueMapping[TKey]>;
|
|
110
|
+
}>, TUniKvsDataOutput = TUniKvsDataInput, TUniKvsChunkInput = ValueOf<{
|
|
111
|
+
[TKey in KeyofKeyValueMapping<TKeyValueMapping>]: $InferStreamValueChunkData<TKeyValueMapping[TKey]>;
|
|
112
|
+
}>, TUniKvsChunkOutput = TUniKvsChunkInput, TLastTransformerDecodeDataInput = TUniKvsDataOutput, TLastTransformerEncodeDataOutput = TUniKvsDataInput, TLastTransformerDecodeChunkInput = TUniKvsChunkOutput, TLastTransformerEncodeChunkOutput = TUniKvsChunkInput> {
|
|
113
|
+
/**
|
|
114
|
+
* コンテキスト情報を設定します。
|
|
115
|
+
*
|
|
116
|
+
* @param context 設定するコンテキストのソースです。
|
|
117
|
+
* @returns インスタンス自身を返します。
|
|
118
|
+
*/
|
|
119
|
+
setContext(context: ContextSource): this;
|
|
120
|
+
/**
|
|
121
|
+
* ストレージをパイプラインの終端に追加します。
|
|
122
|
+
*
|
|
123
|
+
* ストレージが追加されると、設定はファイナライズ段階に移行します。
|
|
124
|
+
*
|
|
125
|
+
* @template TStorage 追加するストレージの型です。
|
|
126
|
+
* @param storage ストレージのインスタンスです。
|
|
127
|
+
* @returns ファイナライザーインターフェースを返します。
|
|
128
|
+
*/
|
|
129
|
+
appendStorage<TStorage extends IStorage<[
|
|
130
|
+
TLastTransformerEncodeDataOutput
|
|
131
|
+
] extends [never] ? any : TLastTransformerEncodeDataOutput, [
|
|
132
|
+
TLastTransformerDecodeDataInput
|
|
133
|
+
] extends [never] ? any : TLastTransformerDecodeDataInput, [
|
|
134
|
+
TLastTransformerEncodeChunkOutput
|
|
135
|
+
] extends [never] ? any : TLastTransformerEncodeChunkOutput, [
|
|
136
|
+
TLastTransformerDecodeChunkInput
|
|
137
|
+
] extends [never] ? any : TLastTransformerDecodeChunkInput>>(storage: TStorage): IUniKvsConfigFinalizer<TKeyValueMapping, TLastTransformerEncodeDataOutput, TLastTransformerDecodeDataInput, [
|
|
138
|
+
TLastTransformerEncodeChunkOutput
|
|
139
|
+
] extends [never] ? never : [$InferWriteChunkInput<TStorage>] extends [never] ? never : TLastTransformerEncodeChunkOutput, [
|
|
140
|
+
TLastTransformerDecodeChunkInput
|
|
141
|
+
] extends [never] ? never : [$InferReadChunkOutput<TStorage>] extends [never] ? never : TLastTransformerDecodeChunkInput>;
|
|
142
|
+
/**
|
|
143
|
+
* トランスフォーマーをパイプラインに追加します。
|
|
144
|
+
*
|
|
145
|
+
* データ変換の層を積み重ねることで、シリアライズなどの処理を定義できます。
|
|
146
|
+
*
|
|
147
|
+
* @template TTransformer 追加するトランスフォーマーの型です。
|
|
148
|
+
* @param transformer トランスフォーマーのインスタンスです。
|
|
149
|
+
* @returns 新しい型情報を持つビルダーを返します。
|
|
150
|
+
*/
|
|
151
|
+
appendTransformer<TTransformer extends ITransformer<[
|
|
152
|
+
TLastTransformerEncodeDataOutput
|
|
153
|
+
] extends [never] ? any : TLastTransformerEncodeDataOutput, any, any, [
|
|
154
|
+
TLastTransformerDecodeDataInput
|
|
155
|
+
] extends [never] ? any : TLastTransformerDecodeDataInput, [
|
|
156
|
+
TLastTransformerEncodeChunkOutput
|
|
157
|
+
] extends [never] ? any : TLastTransformerEncodeChunkOutput, any, any, [
|
|
158
|
+
TLastTransformerDecodeChunkInput
|
|
159
|
+
] extends [never] ? any : TLastTransformerDecodeChunkInput>>(transformer: TTransformer): IUniKvsConfigBuilder<TKeyValueMapping, TUniKvsDataInput, TUniKvsDataOutput, [
|
|
160
|
+
TUniKvsChunkInput
|
|
161
|
+
] extends [never] ? never : [$InferDecodeChunkInput<TTransformer>] extends [never] ? never : TUniKvsChunkInput, [
|
|
162
|
+
TUniKvsChunkOutput
|
|
163
|
+
] extends [never] ? never : [$InferEncodeChunkOutput<TTransformer>] extends [never] ? never : TUniKvsChunkOutput, $InferDecodeDataInput<TTransformer>, $InferEncodeDataOutput<TTransformer>, $InferDecodeChunkInput<TTransformer>, $InferEncodeChunkOutput<TTransformer>>;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* UniKvs の設定を完了させるためのファイナライザーインターフェースです。
|
|
167
|
+
*
|
|
168
|
+
* @template TKeyValueMapping キーと値のマッピング型です。
|
|
169
|
+
* @template TWriteDataInput ストレージへの書き込み入力データの型です。
|
|
170
|
+
* @template TReadDataOutput ストレージからの読み込み出力データの型です。
|
|
171
|
+
* @template TWriteChunkInput ストレージへの書き込みチャンクデータの型です。
|
|
172
|
+
* @template TReadChunkOutput ストレージからの読み込みチャンクデータの型です。
|
|
173
|
+
*/
|
|
174
|
+
export interface IUniKvsConfigFinalizer<TKeyValueMapping extends KeyValueMapping = KeyValueMapping, TWriteDataInput = any, TReadDataOutput = any, TWriteChunkInput = any, TReadChunkOutput = any> {
|
|
175
|
+
/**
|
|
176
|
+
* 設定に基づいて UniKvs インスタンスを作成します。
|
|
177
|
+
*
|
|
178
|
+
* @returns 作成された UniKvs のインスタンスです。
|
|
179
|
+
*/
|
|
180
|
+
create(): UniKvs<TKeyValueMapping>;
|
|
181
|
+
/**
|
|
182
|
+
* コンテキスト情報を設定します。
|
|
183
|
+
*
|
|
184
|
+
* @param context 設定するコンテキストのソースです。
|
|
185
|
+
* @returns インスタンス自身を返します。
|
|
186
|
+
*/
|
|
187
|
+
setContext(context: ContextSource): this;
|
|
188
|
+
/**
|
|
189
|
+
* 追加のストレージを登録します。UniKvs は複数のストレージへのマルチキャスト書き込みをサポートします。
|
|
190
|
+
*
|
|
191
|
+
* @template TStorage 追加するストレージの型です。
|
|
192
|
+
* @param storage ストレージのインスタンスです。
|
|
193
|
+
* @returns ファイナライザーインターフェースを返します。
|
|
194
|
+
*/
|
|
195
|
+
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, [
|
|
204
|
+
TWriteChunkInput
|
|
205
|
+
] extends [never] ? never : [$InferWriteChunkInput<TStorage>] extends [never] ? never : TWriteChunkInput, [
|
|
206
|
+
TReadChunkOutput
|
|
207
|
+
] extends [never] ? never : [$InferReadChunkOutput<TStorage>] extends [never] ? never : TReadChunkOutput>;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* UniKvs の構成を管理する設定クラスです。
|
|
211
|
+
*
|
|
212
|
+
* ビルダーパターンを用いて、コンテキスト、トランスフォーマー、ストレージの順で設定を積み上げます。
|
|
213
|
+
*/
|
|
214
|
+
export default class UniKvsConfig implements IUniKvsConfigBuilder, IUniKvsConfigFinalizer {
|
|
215
|
+
#private;
|
|
216
|
+
/**
|
|
217
|
+
* UniKvsConfig インスタンスを初期化します。
|
|
218
|
+
*
|
|
219
|
+
* @param UniKvsConstructor UniKvs のクラスコンストラクターです。
|
|
220
|
+
*/
|
|
221
|
+
constructor(UniKvsConstructor: typeof UniKvs);
|
|
222
|
+
/**
|
|
223
|
+
* 現在の設定を使用して UniKvs インスタンスを作成します。
|
|
224
|
+
*
|
|
225
|
+
* @returns 作成された UniKvs インスタンスです。
|
|
226
|
+
* @throws ストレージが一つも登録されていない場合にエラーを投げます。
|
|
227
|
+
*/
|
|
228
|
+
create(): UniKvs;
|
|
229
|
+
/**
|
|
230
|
+
* コンテキスト情報を設定します。既存のコンテキストは上書きされます。
|
|
231
|
+
*
|
|
232
|
+
* @param context 設定するコンテキストのソースデータです。
|
|
233
|
+
* @returns インスタンス自身を返します。
|
|
234
|
+
*/
|
|
235
|
+
setContext(context: ContextSource): this;
|
|
236
|
+
/**
|
|
237
|
+
* ストレージを登録リストに追加します。
|
|
238
|
+
*
|
|
239
|
+
* @param storage 追加するストレージインスタンスです。
|
|
240
|
+
* @returns ファイナライザーとして自身を返します。
|
|
241
|
+
*/
|
|
242
|
+
appendStorage(storage: IStorage): IUniKvsConfigFinalizer;
|
|
243
|
+
/**
|
|
244
|
+
* トランスフォーマーを変換パイプラインに追加します。
|
|
245
|
+
*
|
|
246
|
+
* ストレージが登録された後には追加できない制約があります。
|
|
247
|
+
*
|
|
248
|
+
* @param transformer 追加するトランスフォーマーインスタンスです。
|
|
249
|
+
* @returns ビルダーとして自身を返します。
|
|
250
|
+
* @throws すでにストレージが登録されている状態で呼び出された場合にエラーを投げます。
|
|
251
|
+
*/
|
|
252
|
+
appendTransformer(transformer: ITransformer): IUniKvsConfigBuilder;
|
|
253
|
+
}
|
|
254
|
+
export {};
|
|
255
|
+
//# sourceMappingURL=unikvs-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"unikvs-config.d.ts","sourceRoot":"","sources":["../../src/unikvs-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
var __classPrivateFieldSet = (this && this.__classPrivateFieldSet) || function (receiver, state, value, kind, f) {
|
|
2
|
+
if (kind === "m") throw new TypeError("Private method is not writable");
|
|
3
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
|
|
4
|
+
if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
|
|
5
|
+
return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
|
|
6
|
+
};
|
|
7
|
+
var __classPrivateFieldGet = (this && this.__classPrivateFieldGet) || function (receiver, state, kind, f) {
|
|
8
|
+
if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
|
|
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
|
+
return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
|
|
11
|
+
};
|
|
12
|
+
var _UniKvsConfig_UniKvs, _UniKvsConfig_context, _UniKvsConfig_destinations, _UniKvsConfig_transformers;
|
|
13
|
+
import { UniKvsStorage } from "./_storage.js";
|
|
14
|
+
import UniKvsTransformer from "./_transformer.js";
|
|
15
|
+
import { MissingStorageError } from "./errors.js";
|
|
16
|
+
/**
|
|
17
|
+
* UniKvs の構成を管理する設定クラスです。
|
|
18
|
+
*
|
|
19
|
+
* ビルダーパターンを用いて、コンテキスト、トランスフォーマー、ストレージの順で設定を積み上げます。
|
|
20
|
+
*/
|
|
21
|
+
class UniKvsConfig {
|
|
22
|
+
/**
|
|
23
|
+
* UniKvsConfig インスタンスを初期化します。
|
|
24
|
+
*
|
|
25
|
+
* @param UniKvsConstructor UniKvs のクラスコンストラクターです。
|
|
26
|
+
*/
|
|
27
|
+
constructor(UniKvsConstructor) {
|
|
28
|
+
/**
|
|
29
|
+
* UniKvs のコンストラクターです。
|
|
30
|
+
*/
|
|
31
|
+
_UniKvsConfig_UniKvs.set(this, void 0);
|
|
32
|
+
/**
|
|
33
|
+
* アプリケーションの実行時情報を保持するコンテキストオブジェクトです。
|
|
34
|
+
*/
|
|
35
|
+
_UniKvsConfig_context.set(this, void 0);
|
|
36
|
+
/**
|
|
37
|
+
* データの永続化先となるストレージのリストです。
|
|
38
|
+
*/
|
|
39
|
+
_UniKvsConfig_destinations.set(this, void 0);
|
|
40
|
+
/**
|
|
41
|
+
* データを変換するためのトランスフォーマーのリストです。
|
|
42
|
+
*/
|
|
43
|
+
_UniKvsConfig_transformers.set(this, void 0);
|
|
44
|
+
__classPrivateFieldSet(this, _UniKvsConfig_UniKvs, UniKvsConstructor, "f");
|
|
45
|
+
__classPrivateFieldSet(this, _UniKvsConfig_context, {}, "f");
|
|
46
|
+
__classPrivateFieldSet(this, _UniKvsConfig_destinations, [], "f");
|
|
47
|
+
__classPrivateFieldSet(this, _UniKvsConfig_transformers, [], "f");
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* 現在の設定を使用して UniKvs インスタンスを作成します。
|
|
51
|
+
*
|
|
52
|
+
* @returns 作成された UniKvs インスタンスです。
|
|
53
|
+
* @throws ストレージが一つも登録されていない場合にエラーを投げます。
|
|
54
|
+
*/
|
|
55
|
+
create() {
|
|
56
|
+
// 登録されたストレージから先頭の要素を取得します。
|
|
57
|
+
const [dest, ...destinations] = __classPrivateFieldGet(this, _UniKvsConfig_destinations, "f").map((io) => new UniKvsStorage(io));
|
|
58
|
+
// ストレージが空の場合は UniKvs として機能できないため、例外を投げます。
|
|
59
|
+
if (!dest) {
|
|
60
|
+
throw new MissingStorageError();
|
|
61
|
+
}
|
|
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)));
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* コンテキスト情報を設定します。既存のコンテキストは上書きされます。
|
|
68
|
+
*
|
|
69
|
+
* @param context 設定するコンテキストのソースデータです。
|
|
70
|
+
* @returns インスタンス自身を返します。
|
|
71
|
+
*/
|
|
72
|
+
setContext(context) {
|
|
73
|
+
__classPrivateFieldSet(this, _UniKvsConfig_context, Array.isArray(context) ? Object.fromEntries(context) : { ...context }, "f");
|
|
74
|
+
return this;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* ストレージを登録リストに追加します。
|
|
78
|
+
*
|
|
79
|
+
* @param storage 追加するストレージインスタンスです。
|
|
80
|
+
* @returns ファイナライザーとして自身を返します。
|
|
81
|
+
*/
|
|
82
|
+
appendStorage(storage) {
|
|
83
|
+
__classPrivateFieldGet(this, _UniKvsConfig_destinations, "f").push(storage);
|
|
84
|
+
return this;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* トランスフォーマーを変換パイプラインに追加します。
|
|
88
|
+
*
|
|
89
|
+
* ストレージが登録された後には追加できない制約があります。
|
|
90
|
+
*
|
|
91
|
+
* @param transformer 追加するトランスフォーマーインスタンスです。
|
|
92
|
+
* @returns ビルダーとして自身を返します。
|
|
93
|
+
* @throws すでにストレージが登録されている状態で呼び出された場合にエラーを投げます。
|
|
94
|
+
*/
|
|
95
|
+
appendTransformer(transformer) {
|
|
96
|
+
// パイプラインの順序を守るため、終端であるストレージが登録済みでないか確認します。
|
|
97
|
+
if (__classPrivateFieldGet(this, _UniKvsConfig_destinations, "f").length > 0) {
|
|
98
|
+
throw new TransformStreamDefaultController();
|
|
99
|
+
}
|
|
100
|
+
__classPrivateFieldGet(this, _UniKvsConfig_transformers, "f").push(transformer);
|
|
101
|
+
return this;
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
_UniKvsConfig_UniKvs = new WeakMap(), _UniKvsConfig_context = new WeakMap(), _UniKvsConfig_destinations = new WeakMap(), _UniKvsConfig_transformers = new WeakMap();
|
|
105
|
+
export default UniKvsConfig;
|