@unikvs/memory 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/errors.d.ts +29 -4
- package/dist/src/errors.d.ts.map +1 -1
- package/dist/src/errors.js +18 -7
- package/dist/src/memory.d.ts +51 -1
- package/dist/src/memory.d.ts.map +1 -1
- package/dist/src/memory.js +48 -0
- package/package.json +14 -14
- package/src/errors.ts +37 -9
- package/src/memory.ts +51 -1
package/dist/src/errors.d.ts
CHANGED
|
@@ -3,36 +3,61 @@ import { ErrorBase, type ErrorOptions } from "@unikvs/core";
|
|
|
3
3
|
* 指定されたキーがストレージ内に存在しないことを示すエラーメタデータ型です。
|
|
4
4
|
*/
|
|
5
5
|
export type KeyNotFoundErrorMeta = {
|
|
6
|
+
/**
|
|
7
|
+
* 存在しなかったキーです。
|
|
8
|
+
*/
|
|
6
9
|
readonly key: string;
|
|
7
10
|
};
|
|
8
11
|
/**
|
|
9
12
|
* {@link KeyNotFoundError} のコンストラクター引数型です。
|
|
13
|
+
*
|
|
14
|
+
* エラーの追加情報 (`cause`) も含みます。
|
|
10
15
|
*/
|
|
11
|
-
export type KeyNotFoundErrorArgs = KeyNotFoundErrorMeta;
|
|
16
|
+
export type KeyNotFoundErrorArgs = ErrorOptions & KeyNotFoundErrorMeta;
|
|
12
17
|
/**
|
|
13
18
|
* 読み取りまたは削除を実行しようとしたキーがストレージ内に存在しない場合に投げられるエラーです。
|
|
14
19
|
*/
|
|
15
20
|
export declare class KeyNotFoundError extends ErrorBase<KeyNotFoundErrorMeta> {
|
|
16
|
-
|
|
21
|
+
/**
|
|
22
|
+
* KeyNotFoundError インスタンスを初期化します。
|
|
23
|
+
*
|
|
24
|
+
* @param args エラーメタデータとエラーの追加情報です。
|
|
25
|
+
*/
|
|
26
|
+
constructor(args: KeyNotFoundErrorArgs);
|
|
17
27
|
}
|
|
18
28
|
/**
|
|
19
29
|
* ストリーム書き込み時に無効なチャンク型が渡されたことを示すエラーメタデータ型です。
|
|
20
30
|
*/
|
|
21
31
|
export type InvalidChunkTypeErrorMeta = {
|
|
32
|
+
/**
|
|
33
|
+
* 書き込み先または読み取り元のキーです。
|
|
34
|
+
*/
|
|
22
35
|
readonly key: string;
|
|
36
|
+
/**
|
|
37
|
+
* 型が無効だったチャンクの値です。
|
|
38
|
+
*/
|
|
23
39
|
readonly chunk: unknown;
|
|
40
|
+
/**
|
|
41
|
+
* 実際に渡されたチャンク値の型名です。
|
|
42
|
+
*/
|
|
24
43
|
readonly chunkType: string;
|
|
25
44
|
};
|
|
26
45
|
/**
|
|
27
46
|
* {@link InvalidChunkTypeError} のコンストラクター引数型です。
|
|
28
47
|
*
|
|
29
48
|
* `chunkType` はコンストラクター内部で自動的に設定されるため、引数からは除外されています。
|
|
49
|
+
* また、エラーの追加情報 (`cause`) も含みます。
|
|
30
50
|
*/
|
|
31
|
-
export type InvalidChunkTypeErrorArgs = Omit<InvalidChunkTypeErrorMeta, "chunkType">;
|
|
51
|
+
export type InvalidChunkTypeErrorArgs = ErrorOptions & Omit<InvalidChunkTypeErrorMeta, "chunkType">;
|
|
32
52
|
/**
|
|
33
53
|
* `getWritable` が返すストリームに `Uint8Array<ArrayBuffer>` 以外の値が書き込まれた場合に投げられるエラーです。
|
|
34
54
|
*/
|
|
35
55
|
export declare class InvalidChunkTypeError extends ErrorBase<InvalidChunkTypeErrorMeta> {
|
|
36
|
-
|
|
56
|
+
/**
|
|
57
|
+
* InvalidChunkTypeError インスタンスを初期化します。
|
|
58
|
+
*
|
|
59
|
+
* @param args エラーメタデータとエラーの追加情報です。
|
|
60
|
+
*/
|
|
61
|
+
constructor(args: InvalidChunkTypeErrorArgs);
|
|
37
62
|
}
|
|
38
63
|
//# sourceMappingURL=errors.d.ts.map
|
package/dist/src/errors.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAmB,MAAM,cAAc,CAAC;AAG7E;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,KAAK,YAAY,EAAmB,MAAM,cAAc,CAAC;AAG7E;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,oBAAoB,GAAG,YAAY,GAAG,oBAAoB,CAAC;AAEvE;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,oBAAoB,CAAC;IAKnE;;;;OAIG;IACH,YAAmB,IAAI,EAAE,oBAAoB,EAI5C;CACF;AAID;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC;;OAEG;IACH,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAErB;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;;GAKG;AACH,MAAM,MAAM,yBAAyB,GAAG,YAAY,GAAG,IAAI,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;AAEpG;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,SAAS,CAAC,yBAAyB,CAAC;IAK7E;;;;OAIG;IACH,YAAmB,IAAI,EAAE,yBAAyB,EASjD;CACF"}
|
package/dist/src/errors.js
CHANGED
|
@@ -5,8 +5,15 @@ import getTypeName from "type-name";
|
|
|
5
5
|
* 読み取りまたは削除を実行しようとしたキーがストレージ内に存在しない場合に投げられるエラーです。
|
|
6
6
|
*/
|
|
7
7
|
export class KeyNotFoundError extends ErrorBase {
|
|
8
|
-
|
|
9
|
-
|
|
8
|
+
/**
|
|
9
|
+
* KeyNotFoundError インスタンスを初期化します。
|
|
10
|
+
*
|
|
11
|
+
* @param args エラーメタデータとエラーの追加情報です。
|
|
12
|
+
*/
|
|
13
|
+
constructor(args) {
|
|
14
|
+
const { key, ...options } = args;
|
|
15
|
+
const meta = { key };
|
|
16
|
+
super(meta, ({ key }) => `Key not found: ${key}`, options);
|
|
10
17
|
}
|
|
11
18
|
}
|
|
12
19
|
_a = KeyNotFoundError;
|
|
@@ -18,11 +25,15 @@ setErrorMessage(KeyNotFoundError, ({ key }) => `キー ${key} が見つかりま
|
|
|
18
25
|
* `getWritable` が返すストリームに `Uint8Array<ArrayBuffer>` 以外の値が書き込まれた場合に投げられるエラーです。
|
|
19
26
|
*/
|
|
20
27
|
export class InvalidChunkTypeError extends ErrorBase {
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
28
|
+
/**
|
|
29
|
+
* InvalidChunkTypeError インスタンスを初期化します。
|
|
30
|
+
*
|
|
31
|
+
* @param args エラーメタデータとエラーの追加情報です。
|
|
32
|
+
*/
|
|
33
|
+
constructor(args) {
|
|
34
|
+
const { key, chunk, ...options } = args;
|
|
35
|
+
const meta = { key, chunk, chunkType: getTypeName(chunk) };
|
|
36
|
+
super(meta, ({ key, chunkType }) => `Expected chunk for key ${JSON.stringify(key)} is Uint8Array<ArrayBuffer>, but got ${chunkType}`, options);
|
|
26
37
|
}
|
|
27
38
|
}
|
|
28
39
|
_b = InvalidChunkTypeError;
|
package/dist/src/memory.d.ts
CHANGED
|
@@ -10,7 +10,9 @@ export default class Memory implements IStorage {
|
|
|
10
10
|
* キーと値のペアを保持する内部マップです。
|
|
11
11
|
*/
|
|
12
12
|
private readonly map;
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* ストレージの名前です。デバッグやエラーメッセージなどに使用されます。
|
|
15
|
+
*/
|
|
14
16
|
readonly name: string;
|
|
15
17
|
/**
|
|
16
18
|
* Memory インスタンスを初期化します。
|
|
@@ -18,13 +20,61 @@ export default class Memory implements IStorage {
|
|
|
18
20
|
* 内部のマップを初期化し、常にオープン状態として動作します。
|
|
19
21
|
*/
|
|
20
22
|
constructor();
|
|
23
|
+
/**
|
|
24
|
+
* メモリーストレージは常に利用可能なため、常に `true` を返します。
|
|
25
|
+
*/
|
|
21
26
|
get isOpen(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* 指定されたデータを、対応するキーでストレージに保存します。
|
|
29
|
+
*
|
|
30
|
+
* @param args.key 保存先のキーです。
|
|
31
|
+
* @param args.data 保存するデータです。
|
|
32
|
+
*/
|
|
22
33
|
write(args: Pick<IStorage.WriteArgs<any>, "key" | "data">): void;
|
|
34
|
+
/**
|
|
35
|
+
* 指定されたキーに対応するデータをストレージから取得します。
|
|
36
|
+
*
|
|
37
|
+
* @param args.key 取得元のキーです。
|
|
38
|
+
* @returns キーに対応するデータです。
|
|
39
|
+
* @throws キーがストレージ内に存在しない場合に {@link KeyNotFoundError} を投げます。
|
|
40
|
+
*/
|
|
23
41
|
read(args: Pick<IStorage.ReadArgs, "key">): any;
|
|
42
|
+
/**
|
|
43
|
+
* 指定されたキーに対応するデータがストレージ内に存在するかを確認します。
|
|
44
|
+
*
|
|
45
|
+
* @param args.key 確認するキーです。
|
|
46
|
+
* @returns キーに対応するデータが存在する場合は true、それ以外は false です。
|
|
47
|
+
*/
|
|
24
48
|
exists(args: Pick<IStorage.ExistsArgs, "key">): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* 指定されたキーに対応するデータをストレージから削除します。
|
|
51
|
+
*
|
|
52
|
+
* @param args.key 削除するキーです。
|
|
53
|
+
* @throws キーがストレージ内に存在しない場合に {@link KeyNotFoundError} を投げます。
|
|
54
|
+
*/
|
|
25
55
|
delete(args: Pick<IStorage.DeleteArgs, "key">): void;
|
|
56
|
+
/**
|
|
57
|
+
* ストレージ内のすべてのデータを完全に消去します。
|
|
58
|
+
*/
|
|
26
59
|
clear(): void;
|
|
60
|
+
/**
|
|
61
|
+
* 指定されたキーに対応する書き込み可能なストリームを取得します。
|
|
62
|
+
*
|
|
63
|
+
* メモリーストレージにはネイティブなストリームがないため、書き込まれたチャンクをメモリー上に保持し、ストリームがクローズされたときに結合して保存します。
|
|
64
|
+
*
|
|
65
|
+
* @param args.key 書き込み先のキーです。
|
|
66
|
+
* @returns 書き込み可能なストリームです。
|
|
67
|
+
*/
|
|
27
68
|
getWritable(args: Pick<IStorage.GetWritableArgs, "key">): WritableStream<Uint8Array<ArrayBuffer>>;
|
|
69
|
+
/**
|
|
70
|
+
* 指定されたキーに対応する読み取り可能なストリームを取得します。
|
|
71
|
+
*
|
|
72
|
+
* メモリーストレージにはネイティブなストリームがないため、既存の値を単一チャンクとしてストリームで送出します。
|
|
73
|
+
*
|
|
74
|
+
* @param args.key 読み取り元のキーです。
|
|
75
|
+
* @returns 読み取り可能なストリームです。
|
|
76
|
+
* @throws キーがストレージ内に存在しない場合に {@link KeyNotFoundError} を投げます。
|
|
77
|
+
*/
|
|
28
78
|
getReadable(args: Pick<IStorage.GetReadableArgs, "key">): ReadableStream<Uint8Array<ArrayBuffer>>;
|
|
29
79
|
}
|
|
30
80
|
//# sourceMappingURL=memory.d.ts.map
|
package/dist/src/memory.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAI7C;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,YAAW,QAAQ;IAC7C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmB;IAEvC
|
|
1
|
+
{"version":3,"file":"memory.d.ts","sourceRoot":"","sources":["../../src/memory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAI7C;;;;;GAKG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,YAAW,QAAQ;IAC7C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmB;IAEvC;;OAEG;IACH,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;;;OAIG;IACH,cAGC;IAED;;OAEG;IACH,IAAW,MAAM,IAAI,OAAO,CAE3B;IAED;;;;;OAKG;IACI,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI,CAGtE;IAED;;;;;;OAMG;IACI,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,GAAG,CASrD;IAED;;;;;OAKG;IACI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,OAAO,CAK7D;IAED;;;;;OAKG;IACI,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,IAAI,CAO1D;IAED;;OAEG;IACI,KAAK,IAAI,IAAI,CAEnB;IAED;;;;;;;OAOG;IACI,WAAW,CAChB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,GAC1C,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CA2BzC;IAED;;;;;;;;OAQG;IACI,WAAW,CAChB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,GAC1C,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAoBzC;CACF"}
|
package/dist/src/memory.js
CHANGED
|
@@ -15,13 +15,29 @@ export default class Memory {
|
|
|
15
15
|
this.name = "Memory";
|
|
16
16
|
this.map = new Map();
|
|
17
17
|
}
|
|
18
|
+
/**
|
|
19
|
+
* メモリーストレージは常に利用可能なため、常に `true` を返します。
|
|
20
|
+
*/
|
|
18
21
|
get isOpen() {
|
|
19
22
|
return true;
|
|
20
23
|
}
|
|
24
|
+
/**
|
|
25
|
+
* 指定されたデータを、対応するキーでストレージに保存します。
|
|
26
|
+
*
|
|
27
|
+
* @param args.key 保存先のキーです。
|
|
28
|
+
* @param args.data 保存するデータです。
|
|
29
|
+
*/
|
|
21
30
|
write(args) {
|
|
22
31
|
const { key, data } = args;
|
|
23
32
|
this.map.set(key, data);
|
|
24
33
|
}
|
|
34
|
+
/**
|
|
35
|
+
* 指定されたキーに対応するデータをストレージから取得します。
|
|
36
|
+
*
|
|
37
|
+
* @param args.key 取得元のキーです。
|
|
38
|
+
* @returns キーに対応するデータです。
|
|
39
|
+
* @throws キーがストレージ内に存在しない場合に {@link KeyNotFoundError} を投げます。
|
|
40
|
+
*/
|
|
25
41
|
read(args) {
|
|
26
42
|
const { key } = args;
|
|
27
43
|
if (!this.map.has(key)) {
|
|
@@ -30,11 +46,23 @@ export default class Memory {
|
|
|
30
46
|
const value = this.map.get(key);
|
|
31
47
|
return value;
|
|
32
48
|
}
|
|
49
|
+
/**
|
|
50
|
+
* 指定されたキーに対応するデータがストレージ内に存在するかを確認します。
|
|
51
|
+
*
|
|
52
|
+
* @param args.key 確認するキーです。
|
|
53
|
+
* @returns キーに対応するデータが存在する場合は true、それ以外は false です。
|
|
54
|
+
*/
|
|
33
55
|
exists(args) {
|
|
34
56
|
const { key } = args;
|
|
35
57
|
const exists = this.map.has(key);
|
|
36
58
|
return exists;
|
|
37
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* 指定されたキーに対応するデータをストレージから削除します。
|
|
62
|
+
*
|
|
63
|
+
* @param args.key 削除するキーです。
|
|
64
|
+
* @throws キーがストレージ内に存在しない場合に {@link KeyNotFoundError} を投げます。
|
|
65
|
+
*/
|
|
38
66
|
delete(args) {
|
|
39
67
|
const { key } = args;
|
|
40
68
|
if (!this.map.has(key)) {
|
|
@@ -42,9 +70,20 @@ export default class Memory {
|
|
|
42
70
|
}
|
|
43
71
|
this.map.delete(key);
|
|
44
72
|
}
|
|
73
|
+
/**
|
|
74
|
+
* ストレージ内のすべてのデータを完全に消去します。
|
|
75
|
+
*/
|
|
45
76
|
clear() {
|
|
46
77
|
this.map.clear();
|
|
47
78
|
}
|
|
79
|
+
/**
|
|
80
|
+
* 指定されたキーに対応する書き込み可能なストリームを取得します。
|
|
81
|
+
*
|
|
82
|
+
* メモリーストレージにはネイティブなストリームがないため、書き込まれたチャンクをメモリー上に保持し、ストリームがクローズされたときに結合して保存します。
|
|
83
|
+
*
|
|
84
|
+
* @param args.key 書き込み先のキーです。
|
|
85
|
+
* @returns 書き込み可能なストリームです。
|
|
86
|
+
*/
|
|
48
87
|
getWritable(args) {
|
|
49
88
|
const { key } = args;
|
|
50
89
|
// メモリーストレージにはネイティブなストリームがないため、書き込まれたチャンクを配列に保持し、クローズ時に結合して保存します。
|
|
@@ -69,6 +108,15 @@ export default class Memory {
|
|
|
69
108
|
});
|
|
70
109
|
return stream;
|
|
71
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* 指定されたキーに対応する読み取り可能なストリームを取得します。
|
|
113
|
+
*
|
|
114
|
+
* メモリーストレージにはネイティブなストリームがないため、既存の値を単一チャンクとしてストリームで送出します。
|
|
115
|
+
*
|
|
116
|
+
* @param args.key 読み取り元のキーです。
|
|
117
|
+
* @returns 読み取り可能なストリームです。
|
|
118
|
+
* @throws キーがストレージ内に存在しない場合に {@link KeyNotFoundError} を投げます。
|
|
119
|
+
*/
|
|
72
120
|
getReadable(args) {
|
|
73
121
|
const { key } = args;
|
|
74
122
|
if (!this.map.has(key)) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unikvs/memory",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.10",
|
|
4
4
|
"description": "",
|
|
5
5
|
"homepage": "https://github.com/tai-kun/unikvs",
|
|
6
6
|
"license": "MIT",
|
|
@@ -25,23 +25,23 @@
|
|
|
25
25
|
}
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@unikvs/core": "0.0.
|
|
29
|
-
"type-name": "
|
|
28
|
+
"@unikvs/core": "0.0.10",
|
|
29
|
+
"type-name": "2.0.2"
|
|
30
30
|
},
|
|
31
31
|
"devDependencies": {
|
|
32
|
-
"@tsconfig/node24": "
|
|
33
|
-
"@tsconfig/strictest": "
|
|
34
|
-
"@types/node": "
|
|
35
|
-
"@types/type-name": "
|
|
36
|
-
"@vitest/browser": "
|
|
37
|
-
"@vitest/browser-playwright": "
|
|
38
|
-
"npm-check-updates": "
|
|
39
|
-
"playwright": "
|
|
40
|
-
"vite": "
|
|
41
|
-
"vitest": "
|
|
32
|
+
"@tsconfig/node24": "24.0.5",
|
|
33
|
+
"@tsconfig/strictest": "2.0.8",
|
|
34
|
+
"@types/node": "24.13.3",
|
|
35
|
+
"@types/type-name": "1.0.32",
|
|
36
|
+
"@vitest/browser": "4.1.10",
|
|
37
|
+
"@vitest/browser-playwright": "4.1.10",
|
|
38
|
+
"npm-check-updates": "20.0.2",
|
|
39
|
+
"playwright": "1.62.1",
|
|
40
|
+
"vite": "8.2.1",
|
|
41
|
+
"vitest": "4.1.10"
|
|
42
42
|
},
|
|
43
43
|
"peerDependencies": {
|
|
44
|
-
"@logtape/logtape": "
|
|
44
|
+
"@logtape/logtape": "2.0.0"
|
|
45
45
|
},
|
|
46
46
|
"scripts": {
|
|
47
47
|
"build": "tsc --project ./.config/tsconfig.build.json"
|
package/src/errors.ts
CHANGED
|
@@ -5,13 +5,18 @@ import getTypeName from "type-name";
|
|
|
5
5
|
* 指定されたキーがストレージ内に存在しないことを示すエラーメタデータ型です。
|
|
6
6
|
*/
|
|
7
7
|
export type KeyNotFoundErrorMeta = {
|
|
8
|
+
/**
|
|
9
|
+
* 存在しなかったキーです。
|
|
10
|
+
*/
|
|
8
11
|
readonly key: string;
|
|
9
12
|
};
|
|
10
13
|
|
|
11
14
|
/**
|
|
12
15
|
* {@link KeyNotFoundError} のコンストラクター引数型です。
|
|
16
|
+
*
|
|
17
|
+
* エラーの追加情報 (`cause`) も含みます。
|
|
13
18
|
*/
|
|
14
|
-
export type KeyNotFoundErrorArgs = KeyNotFoundErrorMeta;
|
|
19
|
+
export type KeyNotFoundErrorArgs = ErrorOptions & KeyNotFoundErrorMeta;
|
|
15
20
|
|
|
16
21
|
/**
|
|
17
22
|
* 読み取りまたは削除を実行しようとしたキーがストレージ内に存在しない場合に投げられるエラーです。
|
|
@@ -21,8 +26,15 @@ export class KeyNotFoundError extends ErrorBase<KeyNotFoundErrorMeta> {
|
|
|
21
26
|
this.prototype.name = "MemoryKeyNotFoundError";
|
|
22
27
|
}
|
|
23
28
|
|
|
24
|
-
|
|
25
|
-
|
|
29
|
+
/**
|
|
30
|
+
* KeyNotFoundError インスタンスを初期化します。
|
|
31
|
+
*
|
|
32
|
+
* @param args エラーメタデータとエラーの追加情報です。
|
|
33
|
+
*/
|
|
34
|
+
public constructor(args: KeyNotFoundErrorArgs) {
|
|
35
|
+
const { key, ...options } = args;
|
|
36
|
+
const meta: KeyNotFoundErrorMeta = { key };
|
|
37
|
+
super(meta, ({ key }) => `Key not found: ${key}`, options);
|
|
26
38
|
}
|
|
27
39
|
}
|
|
28
40
|
|
|
@@ -32,8 +44,19 @@ setErrorMessage(KeyNotFoundError, ({ key }) => `キー ${key} が見つかりま
|
|
|
32
44
|
* ストリーム書き込み時に無効なチャンク型が渡されたことを示すエラーメタデータ型です。
|
|
33
45
|
*/
|
|
34
46
|
export type InvalidChunkTypeErrorMeta = {
|
|
47
|
+
/**
|
|
48
|
+
* 書き込み先または読み取り元のキーです。
|
|
49
|
+
*/
|
|
35
50
|
readonly key: string;
|
|
51
|
+
|
|
52
|
+
/**
|
|
53
|
+
* 型が無効だったチャンクの値です。
|
|
54
|
+
*/
|
|
36
55
|
readonly chunk: unknown;
|
|
56
|
+
|
|
57
|
+
/**
|
|
58
|
+
* 実際に渡されたチャンク値の型名です。
|
|
59
|
+
*/
|
|
37
60
|
readonly chunkType: string;
|
|
38
61
|
};
|
|
39
62
|
|
|
@@ -41,8 +64,9 @@ export type InvalidChunkTypeErrorMeta = {
|
|
|
41
64
|
* {@link InvalidChunkTypeError} のコンストラクター引数型です。
|
|
42
65
|
*
|
|
43
66
|
* `chunkType` はコンストラクター内部で自動的に設定されるため、引数からは除外されています。
|
|
67
|
+
* また、エラーの追加情報 (`cause`) も含みます。
|
|
44
68
|
*/
|
|
45
|
-
export type InvalidChunkTypeErrorArgs = Omit<InvalidChunkTypeErrorMeta, "chunkType">;
|
|
69
|
+
export type InvalidChunkTypeErrorArgs = ErrorOptions & Omit<InvalidChunkTypeErrorMeta, "chunkType">;
|
|
46
70
|
|
|
47
71
|
/**
|
|
48
72
|
* `getWritable` が返すストリームに `Uint8Array<ArrayBuffer>` 以外の値が書き込まれた場合に投げられるエラーです。
|
|
@@ -52,12 +76,16 @@ export class InvalidChunkTypeError extends ErrorBase<InvalidChunkTypeErrorMeta>
|
|
|
52
76
|
this.prototype.name = "MemoryInvalidChunkTypeError";
|
|
53
77
|
}
|
|
54
78
|
|
|
55
|
-
|
|
79
|
+
/**
|
|
80
|
+
* InvalidChunkTypeError インスタンスを初期化します。
|
|
81
|
+
*
|
|
82
|
+
* @param args エラーメタデータとエラーの追加情報です。
|
|
83
|
+
*/
|
|
84
|
+
public constructor(args: InvalidChunkTypeErrorArgs) {
|
|
85
|
+
const { key, chunk, ...options } = args;
|
|
86
|
+
const meta: InvalidChunkTypeErrorMeta = { key, chunk, chunkType: getTypeName(chunk) };
|
|
56
87
|
super(
|
|
57
|
-
|
|
58
|
-
...args,
|
|
59
|
-
chunkType: getTypeName(args.chunk),
|
|
60
|
-
},
|
|
88
|
+
meta,
|
|
61
89
|
({ key, chunkType }) =>
|
|
62
90
|
`Expected chunk for key ${JSON.stringify(key)} is Uint8Array<ArrayBuffer>, but got ${chunkType}`,
|
|
63
91
|
options,
|
package/src/memory.ts
CHANGED
|
@@ -14,7 +14,9 @@ export default class Memory implements IStorage {
|
|
|
14
14
|
*/
|
|
15
15
|
private readonly map: Map<string, any>;
|
|
16
16
|
|
|
17
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* ストレージの名前です。デバッグやエラーメッセージなどに使用されます。
|
|
19
|
+
*/
|
|
18
20
|
public readonly name: string;
|
|
19
21
|
|
|
20
22
|
/**
|
|
@@ -27,15 +29,31 @@ export default class Memory implements IStorage {
|
|
|
27
29
|
this.map = new Map();
|
|
28
30
|
}
|
|
29
31
|
|
|
32
|
+
/**
|
|
33
|
+
* メモリーストレージは常に利用可能なため、常に `true` を返します。
|
|
34
|
+
*/
|
|
30
35
|
public get isOpen(): boolean {
|
|
31
36
|
return true;
|
|
32
37
|
}
|
|
33
38
|
|
|
39
|
+
/**
|
|
40
|
+
* 指定されたデータを、対応するキーでストレージに保存します。
|
|
41
|
+
*
|
|
42
|
+
* @param args.key 保存先のキーです。
|
|
43
|
+
* @param args.data 保存するデータです。
|
|
44
|
+
*/
|
|
34
45
|
public write(args: Pick<IStorage.WriteArgs<any>, "key" | "data">): void {
|
|
35
46
|
const { key, data } = args;
|
|
36
47
|
this.map.set(key, data);
|
|
37
48
|
}
|
|
38
49
|
|
|
50
|
+
/**
|
|
51
|
+
* 指定されたキーに対応するデータをストレージから取得します。
|
|
52
|
+
*
|
|
53
|
+
* @param args.key 取得元のキーです。
|
|
54
|
+
* @returns キーに対応するデータです。
|
|
55
|
+
* @throws キーがストレージ内に存在しない場合に {@link KeyNotFoundError} を投げます。
|
|
56
|
+
*/
|
|
39
57
|
public read(args: Pick<IStorage.ReadArgs, "key">): any {
|
|
40
58
|
const { key } = args;
|
|
41
59
|
if (!this.map.has(key)) {
|
|
@@ -47,6 +65,12 @@ export default class Memory implements IStorage {
|
|
|
47
65
|
return value;
|
|
48
66
|
}
|
|
49
67
|
|
|
68
|
+
/**
|
|
69
|
+
* 指定されたキーに対応するデータがストレージ内に存在するかを確認します。
|
|
70
|
+
*
|
|
71
|
+
* @param args.key 確認するキーです。
|
|
72
|
+
* @returns キーに対応するデータが存在する場合は true、それ以外は false です。
|
|
73
|
+
*/
|
|
50
74
|
public exists(args: Pick<IStorage.ExistsArgs, "key">): boolean {
|
|
51
75
|
const { key } = args;
|
|
52
76
|
const exists = this.map.has(key);
|
|
@@ -54,6 +78,12 @@ export default class Memory implements IStorage {
|
|
|
54
78
|
return exists;
|
|
55
79
|
}
|
|
56
80
|
|
|
81
|
+
/**
|
|
82
|
+
* 指定されたキーに対応するデータをストレージから削除します。
|
|
83
|
+
*
|
|
84
|
+
* @param args.key 削除するキーです。
|
|
85
|
+
* @throws キーがストレージ内に存在しない場合に {@link KeyNotFoundError} を投げます。
|
|
86
|
+
*/
|
|
57
87
|
public delete(args: Pick<IStorage.DeleteArgs, "key">): void {
|
|
58
88
|
const { key } = args;
|
|
59
89
|
if (!this.map.has(key)) {
|
|
@@ -63,10 +93,21 @@ export default class Memory implements IStorage {
|
|
|
63
93
|
this.map.delete(key);
|
|
64
94
|
}
|
|
65
95
|
|
|
96
|
+
/**
|
|
97
|
+
* ストレージ内のすべてのデータを完全に消去します。
|
|
98
|
+
*/
|
|
66
99
|
public clear(): void {
|
|
67
100
|
this.map.clear();
|
|
68
101
|
}
|
|
69
102
|
|
|
103
|
+
/**
|
|
104
|
+
* 指定されたキーに対応する書き込み可能なストリームを取得します。
|
|
105
|
+
*
|
|
106
|
+
* メモリーストレージにはネイティブなストリームがないため、書き込まれたチャンクをメモリー上に保持し、ストリームがクローズされたときに結合して保存します。
|
|
107
|
+
*
|
|
108
|
+
* @param args.key 書き込み先のキーです。
|
|
109
|
+
* @returns 書き込み可能なストリームです。
|
|
110
|
+
*/
|
|
70
111
|
public getWritable(
|
|
71
112
|
args: Pick<IStorage.GetWritableArgs, "key">,
|
|
72
113
|
): WritableStream<Uint8Array<ArrayBuffer>> {
|
|
@@ -98,6 +139,15 @@ export default class Memory implements IStorage {
|
|
|
98
139
|
return stream;
|
|
99
140
|
}
|
|
100
141
|
|
|
142
|
+
/**
|
|
143
|
+
* 指定されたキーに対応する読み取り可能なストリームを取得します。
|
|
144
|
+
*
|
|
145
|
+
* メモリーストレージにはネイティブなストリームがないため、既存の値を単一チャンクとしてストリームで送出します。
|
|
146
|
+
*
|
|
147
|
+
* @param args.key 読み取り元のキーです。
|
|
148
|
+
* @returns 読み取り可能なストリームです。
|
|
149
|
+
* @throws キーがストレージ内に存在しない場合に {@link KeyNotFoundError} を投げます。
|
|
150
|
+
*/
|
|
101
151
|
public getReadable(
|
|
102
152
|
args: Pick<IStorage.GetReadableArgs, "key">,
|
|
103
153
|
): ReadableStream<Uint8Array<ArrayBuffer>> {
|