@unikvs/memory 0.0.7 → 0.0.9

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.
@@ -1,17 +1,37 @@
1
1
  import { ErrorBase, type ErrorOptions } from "@unikvs/core";
2
+ /**
3
+ * 指定されたキーがストレージ内に存在しないことを示すエラーメタデータ型です。
4
+ */
2
5
  export type KeyNotFoundErrorMeta = {
3
6
  readonly key: string;
4
7
  };
8
+ /**
9
+ * {@link KeyNotFoundError} のコンストラクター引数型です。
10
+ */
5
11
  export type KeyNotFoundErrorArgs = KeyNotFoundErrorMeta;
12
+ /**
13
+ * 読み取りまたは削除を実行しようとしたキーがストレージ内に存在しない場合に投げられるエラーです。
14
+ */
6
15
  export declare class KeyNotFoundError extends ErrorBase<KeyNotFoundErrorMeta> {
7
16
  constructor(args: KeyNotFoundErrorArgs, options?: ErrorOptions);
8
17
  }
18
+ /**
19
+ * ストリーム書き込み時に無効なチャンク型が渡されたことを示すエラーメタデータ型です。
20
+ */
9
21
  export type InvalidChunkTypeErrorMeta = {
10
22
  readonly key: string;
11
23
  readonly chunk: unknown;
12
24
  readonly chunkType: string;
13
25
  };
26
+ /**
27
+ * {@link InvalidChunkTypeError} のコンストラクター引数型です。
28
+ *
29
+ * `chunkType` はコンストラクター内部で自動的に設定されるため、引数からは除外されています。
30
+ */
14
31
  export type InvalidChunkTypeErrorArgs = Omit<InvalidChunkTypeErrorMeta, "chunkType">;
32
+ /**
33
+ * `getWritable` が返すストリームに `Uint8Array<ArrayBuffer>` 以外の値が書き込まれた場合に投げられるエラーです。
34
+ */
15
35
  export declare class InvalidChunkTypeError extends ErrorBase<InvalidChunkTypeErrorMeta> {
16
36
  constructor(args: InvalidChunkTypeErrorArgs, options?: ErrorOptions);
17
37
  }
@@ -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,MAAM,MAAM,oBAAoB,GAAG;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAExD,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,oBAAoB,CAAC;gBAKhD,IAAI,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,YAAY;CAGtE;AAID,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;AAErF,qBAAa,qBAAsB,SAAQ,SAAS,CAAC,yBAAyB,CAAC;gBAK1D,IAAI,EAAE,yBAAyB,EAAE,OAAO,CAAC,EAAE,YAAY;CAW3E"}
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;;GAEG;AACH,MAAM,MAAM,oBAAoB,GAAG,oBAAoB,CAAC;AAExD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,SAAS,CAAC,oBAAoB,CAAC;gBAKhD,IAAI,EAAE,oBAAoB,EAAE,OAAO,CAAC,EAAE,YAAY;CAGtE;AAID;;GAEG;AACH,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF;;;;GAIG;AACH,MAAM,MAAM,yBAAyB,GAAG,IAAI,CAAC,yBAAyB,EAAE,WAAW,CAAC,CAAC;AAErF;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,SAAS,CAAC,yBAAyB,CAAC;gBAK1D,IAAI,EAAE,yBAAyB,EAAE,OAAO,CAAC,EAAE,YAAY;CAW3E"}
@@ -1,6 +1,9 @@
1
1
  var _a, _b;
2
2
  import { ErrorBase, setErrorMessage } from "@unikvs/core";
3
3
  import getTypeName from "type-name";
4
+ /**
5
+ * 読み取りまたは削除を実行しようとしたキーがストレージ内に存在しない場合に投げられるエラーです。
6
+ */
4
7
  export class KeyNotFoundError extends ErrorBase {
5
8
  constructor(args, options) {
6
9
  super(args, ({ key }) => `Key not found: ${key}`, options);
@@ -11,6 +14,9 @@ _a = KeyNotFoundError;
11
14
  _a.prototype.name = "MemoryKeyNotFoundError";
12
15
  })();
13
16
  setErrorMessage(KeyNotFoundError, ({ key }) => `キー ${key} が見つかりません`, "ja");
17
+ /**
18
+ * `getWritable` が返すストリームに `Uint8Array<ArrayBuffer>` 以外の値が書き込まれた場合に投げられるエラーです。
19
+ */
14
20
  export class InvalidChunkTypeError extends ErrorBase {
15
21
  constructor(args, options) {
16
22
  super({
@@ -1,12 +1,21 @@
1
1
  import type { IStorage } from "@unikvs/core";
2
2
  /**
3
3
  * メモリーを永続化先として使用するストレージクラスです。
4
+ *
5
+ * アプリケーションの実行中のみデータを保持し、プロセス終了時に破棄されます。
6
+ * 全ての操作が同期で完了するため、非同期処理のオーバーヘッドがありません。
4
7
  */
5
8
  export default class Memory implements IStorage {
9
+ /**
10
+ * キーと値のペアを保持する内部マップです。
11
+ */
6
12
  private readonly map;
13
+ /** ストレージの名前です。デバッグやエラーメッセージなどに使用されます。 */
7
14
  readonly name: string;
8
15
  /**
9
16
  * Memory インスタンスを初期化します。
17
+ *
18
+ * 内部のマップを初期化し、常にオープン状態として動作します。
10
19
  */
11
20
  constructor();
12
21
  get isOpen(): boolean;
@@ -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;;GAEG;AACH,MAAM,CAAC,OAAO,OAAO,MAAO,YAAW,QAAQ;IAC7C,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAmB;IAEvC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;OAEG;;IAMH,IAAW,MAAM,IAAI,OAAO,CAE3B;IAEM,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI;IAKhE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,GAAG;IAW/C,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,OAAO;IAOvD,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,IAAI;IASpD,KAAK,IAAI,IAAI;IAIb,WAAW,CAChB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,GAC1C,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IA4BnC,WAAW,CAChB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,GAC1C,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;CAoB3C"}
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,yCAAyC;IACzC,SAAgB,IAAI,EAAE,MAAM,CAAC;IAE7B;;;;OAIG;;IAMH,IAAW,MAAM,IAAI,OAAO,CAE3B;IAEM,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,MAAM,CAAC,GAAG,IAAI;IAKhE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,KAAK,CAAC,GAAG,GAAG;IAW/C,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,OAAO;IAOvD,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,EAAE,KAAK,CAAC,GAAG,IAAI;IASpD,KAAK,IAAI,IAAI;IAIb,WAAW,CAChB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,GAC1C,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;IA6BnC,WAAW,CAChB,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,KAAK,CAAC,GAC1C,cAAc,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;CAqB3C"}
@@ -1,10 +1,15 @@
1
- import { InvalidChunkTypeError, KeyNotFoundError } from "./errors.js";
1
+ import { KeyNotFoundError, InvalidChunkTypeError } from "./errors.js";
2
2
  /**
3
3
  * メモリーを永続化先として使用するストレージクラスです。
4
+ *
5
+ * アプリケーションの実行中のみデータを保持し、プロセス終了時に破棄されます。
6
+ * 全ての操作が同期で完了するため、非同期処理のオーバーヘッドがありません。
4
7
  */
5
8
  export default class Memory {
6
9
  /**
7
10
  * Memory インスタンスを初期化します。
11
+ *
12
+ * 内部のマップを初期化し、常にオープン状態として動作します。
8
13
  */
9
14
  constructor() {
10
15
  this.name = "Memory";
@@ -42,6 +47,7 @@ export default class Memory {
42
47
  }
43
48
  getWritable(args) {
44
49
  const { key } = args;
50
+ // メモリーストレージにはネイティブなストリームがないため、書き込まれたチャンクを配列に保持し、クローズ時に結合して保存します。
45
51
  const chunks = [];
46
52
  const stream = new WritableStream({
47
53
  write: (chunk) => {
@@ -68,6 +74,7 @@ export default class Memory {
68
74
  if (!this.map.has(key)) {
69
75
  throw new KeyNotFoundError({ key });
70
76
  }
77
+ // メモリーストレージにはネイティブなストリームがないため、既存の値を単一チャンクとしてストリームで送出します。
71
78
  const value = this.map.get(key);
72
79
  const stream = new ReadableStream({
73
80
  pull: (controller) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@unikvs/memory",
3
- "version": "0.0.7",
3
+ "version": "0.0.9",
4
4
  "description": "",
5
5
  "homepage": "https://github.com/tai-kun/unikvs",
6
6
  "license": "MIT",
@@ -25,20 +25,20 @@
25
25
  }
26
26
  },
27
27
  "dependencies": {
28
- "@unikvs/core": "0.0.7",
28
+ "@unikvs/core": "0.0.9",
29
29
  "type-name": "^2.0.2"
30
30
  },
31
31
  "devDependencies": {
32
32
  "@tsconfig/node24": "^24.0.4",
33
33
  "@tsconfig/strictest": "^2.0.8",
34
- "@types/node": "^24.12.2",
34
+ "@types/node": "^24.12.4",
35
35
  "@types/type-name": "^1.0.32",
36
- "@vitest/browser": "^4.1.5",
37
- "@vitest/browser-playwright": "^4.1.5",
36
+ "@vitest/browser": "^4.1.6",
37
+ "@vitest/browser-playwright": "^4.1.6",
38
38
  "npm-check-updates": "^20.0.2",
39
- "playwright": "^1.59.1",
40
- "vite": "^8.0.10",
41
- "vitest": "^4.1.5"
39
+ "playwright": "^1.60.0",
40
+ "vite": "^8.0.12",
41
+ "vitest": "^4.1.6"
42
42
  },
43
43
  "peerDependencies": {
44
44
  "@logtape/logtape": "^2.0.0"
package/src/errors.ts CHANGED
@@ -1,12 +1,21 @@
1
1
  import { ErrorBase, type ErrorOptions, setErrorMessage } from "@unikvs/core";
2
2
  import getTypeName from "type-name";
3
3
 
4
+ /**
5
+ * 指定されたキーがストレージ内に存在しないことを示すエラーメタデータ型です。
6
+ */
4
7
  export type KeyNotFoundErrorMeta = {
5
8
  readonly key: string;
6
9
  };
7
10
 
11
+ /**
12
+ * {@link KeyNotFoundError} のコンストラクター引数型です。
13
+ */
8
14
  export type KeyNotFoundErrorArgs = KeyNotFoundErrorMeta;
9
15
 
16
+ /**
17
+ * 読み取りまたは削除を実行しようとしたキーがストレージ内に存在しない場合に投げられるエラーです。
18
+ */
10
19
  export class KeyNotFoundError extends ErrorBase<KeyNotFoundErrorMeta> {
11
20
  static {
12
21
  this.prototype.name = "MemoryKeyNotFoundError";
@@ -19,14 +28,25 @@ export class KeyNotFoundError extends ErrorBase<KeyNotFoundErrorMeta> {
19
28
 
20
29
  setErrorMessage(KeyNotFoundError, ({ key }) => `キー ${key} が見つかりません`, "ja");
21
30
 
31
+ /**
32
+ * ストリーム書き込み時に無効なチャンク型が渡されたことを示すエラーメタデータ型です。
33
+ */
22
34
  export type InvalidChunkTypeErrorMeta = {
23
35
  readonly key: string;
24
36
  readonly chunk: unknown;
25
37
  readonly chunkType: string;
26
38
  };
27
39
 
40
+ /**
41
+ * {@link InvalidChunkTypeError} のコンストラクター引数型です。
42
+ *
43
+ * `chunkType` はコンストラクター内部で自動的に設定されるため、引数からは除外されています。
44
+ */
28
45
  export type InvalidChunkTypeErrorArgs = Omit<InvalidChunkTypeErrorMeta, "chunkType">;
29
46
 
47
+ /**
48
+ * `getWritable` が返すストリームに `Uint8Array<ArrayBuffer>` 以外の値が書き込まれた場合に投げられるエラーです。
49
+ */
30
50
  export class InvalidChunkTypeError extends ErrorBase<InvalidChunkTypeErrorMeta> {
31
51
  static {
32
52
  this.prototype.name = "MemoryInvalidChunkTypeError";
package/src/memory.ts CHANGED
@@ -1,17 +1,26 @@
1
1
  import type { IStorage } from "@unikvs/core";
2
2
 
3
- import { InvalidChunkTypeError, KeyNotFoundError } from "./errors.js";
3
+ import { KeyNotFoundError, InvalidChunkTypeError } from "./errors.js";
4
4
 
5
5
  /**
6
6
  * メモリーを永続化先として使用するストレージクラスです。
7
+ *
8
+ * アプリケーションの実行中のみデータを保持し、プロセス終了時に破棄されます。
9
+ * 全ての操作が同期で完了するため、非同期処理のオーバーヘッドがありません。
7
10
  */
8
11
  export default class Memory implements IStorage {
12
+ /**
13
+ * キーと値のペアを保持する内部マップです。
14
+ */
9
15
  private readonly map: Map<string, any>;
10
16
 
17
+ /** ストレージの名前です。デバッグやエラーメッセージなどに使用されます。 */
11
18
  public readonly name: string;
12
19
 
13
20
  /**
14
21
  * Memory インスタンスを初期化します。
22
+ *
23
+ * 内部のマップを初期化し、常にオープン状態として動作します。
15
24
  */
16
25
  public constructor() {
17
26
  this.name = "Memory";
@@ -62,6 +71,7 @@ export default class Memory implements IStorage {
62
71
  args: Pick<IStorage.GetWritableArgs, "key">,
63
72
  ): WritableStream<Uint8Array<ArrayBuffer>> {
64
73
  const { key } = args;
74
+ // メモリーストレージにはネイティブなストリームがないため、書き込まれたチャンクを配列に保持し、クローズ時に結合して保存します。
65
75
  const chunks: Uint8Array[] = [];
66
76
  const stream = new WritableStream<Uint8Array<ArrayBuffer>>({
67
77
  write: (chunk) => {
@@ -96,6 +106,7 @@ export default class Memory implements IStorage {
96
106
  throw new KeyNotFoundError({ key });
97
107
  }
98
108
 
109
+ // メモリーストレージにはネイティブなストリームがないため、既存の値を単一チャンクとしてストリームで送出します。
99
110
  const value = this.map.get(key);
100
111
  const stream = new ReadableStream<Uint8Array<ArrayBuffer>>({
101
112
  pull: (controller) => {