@exabugs/dynamodb-client 0.3.5 → 0.3.7

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 (39) hide show
  1. package/CHANGELOG.md +32 -0
  2. package/README.md +35 -23
  3. package/dist/server/handler.cjs +7539 -7401
  4. package/dist/server/handler.cjs.map +4 -4
  5. package/dist/server/shadow/config.d.ts +13 -13
  6. package/dist/server/shadow/config.d.ts.map +1 -1
  7. package/dist/server/shadow/config.js +10 -10
  8. package/dist/server/shadow/generator.d.ts +1 -1
  9. package/dist/server/shadow/generator.d.ts.map +1 -1
  10. package/dist/server/shadow/generator.js +5 -1
  11. package/dist/server/shadow/generator.js.map +1 -1
  12. package/dist/server/shadow/index.d.ts +2 -1
  13. package/dist/server/shadow/index.d.ts.map +1 -1
  14. package/dist/server/shadow/index.js.map +1 -1
  15. package/dist/server/shadow/types.d.ts +0 -24
  16. package/dist/server/shadow/types.d.ts.map +1 -1
  17. package/dist/shadows/differ.d.ts +12 -12
  18. package/dist/shadows/differ.js +15 -15
  19. package/dist/shadows/differ.js.map +1 -1
  20. package/dist/shadows/generator.d.ts +53 -31
  21. package/dist/shadows/generator.d.ts.map +1 -1
  22. package/dist/shadows/generator.js +79 -35
  23. package/dist/shadows/generator.js.map +1 -1
  24. package/dist/shadows/index.d.ts +8 -10
  25. package/dist/shadows/index.d.ts.map +1 -1
  26. package/dist/shadows/index.js +12 -11
  27. package/dist/shadows/index.js.map +1 -1
  28. package/dist/shadows/types.d.ts +8 -28
  29. package/dist/shadows/types.d.ts.map +1 -1
  30. package/package.json +6 -6
  31. package/terraform/README.md +8 -7
  32. package/dist/shadows/config.d.ts +0 -54
  33. package/dist/shadows/config.d.ts.map +0 -1
  34. package/dist/shadows/config.js +0 -95
  35. package/dist/shadows/config.js.map +0 -1
  36. package/dist/shadows/schema.d.ts +0 -63
  37. package/dist/shadows/schema.d.ts.map +0 -1
  38. package/dist/shadows/schema.js +0 -8
  39. package/dist/shadows/schema.js.map +0 -1
@@ -16,38 +16,38 @@
16
16
  * 要件: 2.9-2.11
17
17
  */
18
18
  /**
19
- * シャドー設定(簡素化版)
19
+ * Shadow configuration (v0.3.x environment variable-based)
20
20
  */
21
21
  export interface ShadowConfig {
22
- /** タイムスタンプフィールド名 */
22
+ /** Timestamp field names */
23
23
  createdAtField: string;
24
24
  updatedAtField: string;
25
- /** プリミティブ型の最大バイト数(array/objectは2倍) */
25
+ /** Maximum bytes for primitive types (array/object use 2x) */
26
26
  stringMaxBytes: number;
27
- /** 数値のパディング桁数 */
27
+ /** Number padding digits */
28
28
  numberPadding: number;
29
29
  }
30
30
  /**
31
- * シャドー設定を取得(環境変数から)
31
+ * Get shadow configuration from environment variables
32
32
  *
33
- * 環境変数から設定を読み込み、グローバル変数にキャッシュします。
34
- * 初回呼び出し時のみ環境変数を読み込み、以降はキャッシュを使用。
33
+ * Loads configuration from environment variables and caches it globally.
34
+ * Only reads environment variables on first call, uses cache thereafter.
35
35
  *
36
- * @returns シャドー設定
37
- * @throws 環境変数が不正な値の場合
36
+ * @returns Shadow configuration
37
+ * @throws If environment variables contain invalid values
38
38
  *
39
39
  * @example
40
40
  * ```typescript
41
41
  * const config = getShadowConfig();
42
- * // => { createdAtField: 'createdAt', updatedAtField: 'updatedAt', stringMaxBytes: 100, numberPadding: 20 }
42
+ * // => { createdAtField: 'createdAt', updatedAtField: 'updatedAt', stringMaxBytes: 100, numberPadding: 15 }
43
43
  * ```
44
44
  */
45
45
  export declare function getShadowConfig(): ShadowConfig;
46
46
  /**
47
- * キャッシュをクリアする(テスト用)
47
+ * Clear cache (for testing only)
48
48
  *
49
- * 本番環境では使用しないこと。
50
- * テスト環境でのみ、テスト間でキャッシュをクリアするために使用。
49
+ * Do not use in production.
50
+ * Only used in test environments to clear cache between tests.
51
51
  */
52
52
  export declare function clearShadowConfigCache(): void;
53
53
  //# sourceMappingURL=config.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/server/shadow/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,oBAAoB;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,sCAAsC;IACtC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB;IACjB,aAAa,EAAE,MAAM,CAAC;CACvB;AAOD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAmB9C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/server/shadow/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,4BAA4B;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,8DAA8D;IAC9D,cAAc,EAAE,MAAM,CAAC;IACvB,4BAA4B;IAC5B,aAAa,EAAE,MAAM,CAAC;CACvB;AAOD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,IAAI,YAAY,CAmB9C;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C"}
@@ -16,22 +16,22 @@
16
16
  * 要件: 2.9-2.11
17
17
  */
18
18
  /**
19
- * グローバル変数にキャッシュ(Lambda実行環境で再利用)
19
+ * Global cache (reused across Lambda invocations)
20
20
  */
21
21
  let cachedShadowConfig = null;
22
22
  /**
23
- * シャドー設定を取得(環境変数から)
23
+ * Get shadow configuration from environment variables
24
24
  *
25
- * 環境変数から設定を読み込み、グローバル変数にキャッシュします。
26
- * 初回呼び出し時のみ環境変数を読み込み、以降はキャッシュを使用。
25
+ * Loads configuration from environment variables and caches it globally.
26
+ * Only reads environment variables on first call, uses cache thereafter.
27
27
  *
28
- * @returns シャドー設定
29
- * @throws 環境変数が不正な値の場合
28
+ * @returns Shadow configuration
29
+ * @throws If environment variables contain invalid values
30
30
  *
31
31
  * @example
32
32
  * ```typescript
33
33
  * const config = getShadowConfig();
34
- * // => { createdAtField: 'createdAt', updatedAtField: 'updatedAt', stringMaxBytes: 100, numberPadding: 20 }
34
+ * // => { createdAtField: 'createdAt', updatedAtField: 'updatedAt', stringMaxBytes: 100, numberPadding: 15 }
35
35
  * ```
36
36
  */
37
37
  export function getShadowConfig() {
@@ -53,10 +53,10 @@ export function getShadowConfig() {
53
53
  return cachedShadowConfig;
54
54
  }
55
55
  /**
56
- * キャッシュをクリアする(テスト用)
56
+ * Clear cache (for testing only)
57
57
  *
58
- * 本番環境では使用しないこと。
59
- * テスト環境でのみ、テスト間でキャッシュをクリアするために使用。
58
+ * Do not use in production.
59
+ * Only used in test environments to clear cache between tests.
60
60
  */
61
61
  export function clearShadowConfigCache() {
62
62
  cachedShadowConfig = null;
@@ -137,11 +137,11 @@ export declare function generateMainRecordSK(recordId: string): string;
137
137
  * const config = getShadowConfig();
138
138
  * const shadows = generateShadowRecords(record, 'articles', config);
139
139
  * // => [
140
- * // { PK: 'articles', SK: 'id#01HQXYZ...#id#01HQXYZ...' },
141
140
  * // { PK: 'articles', SK: 'title#Article#id#01HQXYZ...' },
142
141
  * // { PK: 'articles', SK: 'viewCount#10000000000000000123#id#01HQXYZ...' },
143
142
  * // { PK: 'articles', SK: 'tags#["aws","tech"]#id#01HQXYZ...' },
144
143
  * // ]
144
+ * // Note: 'id' field is excluded (main record SK = id#{ULID} already exists)
145
145
  * ```
146
146
  */
147
147
  export declare function generateShadowRecords(record: Record<string, unknown>, resourceName: string, config: ShadowConfig): ShadowRecord[];
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/server/shadow/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA2BrD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgBtE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAiB7E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAa9E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAKvE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,YAAY,GACnB,MAAM,CA4BR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,YAAY,GACnB,YAAY,EAAE,CAkChB"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../../src/server/shadow/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,uBAAuB;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,oBAAoB;IACpB,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CA2BrD;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAgBtE;AAED;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAiB7E;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAa9E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAKvE;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,YAAY,GACnB,MAAM,CA4BR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,YAAY,GACnB,YAAY,EAAE,CAuChB"}
@@ -228,17 +228,21 @@ export function generateMainRecordSK(recordId) {
228
228
  * const config = getShadowConfig();
229
229
  * const shadows = generateShadowRecords(record, 'articles', config);
230
230
  * // => [
231
- * // { PK: 'articles', SK: 'id#01HQXYZ...#id#01HQXYZ...' },
232
231
  * // { PK: 'articles', SK: 'title#Article#id#01HQXYZ...' },
233
232
  * // { PK: 'articles', SK: 'viewCount#10000000000000000123#id#01HQXYZ...' },
234
233
  * // { PK: 'articles', SK: 'tags#["aws","tech"]#id#01HQXYZ...' },
235
234
  * // ]
235
+ * // Note: 'id' field is excluded (main record SK = id#{ULID} already exists)
236
236
  * ```
237
237
  */
238
238
  export function generateShadowRecords(record, resourceName, config) {
239
239
  const shadows = [];
240
240
  // レコードの各フィールドを処理
241
241
  for (const [fieldName, value] of Object.entries(record)) {
242
+ // id フィールドは除外(メインレコードのSKとして既に存在)
243
+ if (fieldName === 'id') {
244
+ continue;
245
+ }
242
246
  // __ プレフィックスは除外(内部メタデータ)
243
247
  if (fieldName.startsWith('__')) {
244
248
  continue;
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/server/shadow/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../../src/server/shadow/generator.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAcpD;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IACxD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IAE1E,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,GAAG,GAAG,KAAgC,CAAC;QAC7C,MAAM,MAAM,GAA4B,EAAE,CAAC;QAE3C,aAAa;QACb,IAAI,IAAI,IAAI,GAAG;YAAE,MAAM,CAAC,EAAE,GAAG,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAEnD,mBAAmB;QACnB,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aAC/B,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,WAAW,IAAI,GAAG,KAAK,WAAW,CAAC;aAC3E,IAAI,EAAE,CAAC;QACV,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACxC,CAAC;QAED,iBAAiB;QACjB,IAAI,WAAW,IAAI,GAAG;YAAE,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QACxE,IAAI,WAAW,IAAI,GAAG;YAAE,MAAM,CAAC,SAAS,GAAG,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAExE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa,EAAE,QAAgB;IAC5D,MAAM,OAAO,GAAG,IAAI,WAAW,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpC,IAAI,KAAK,CAAC,MAAM,IAAI,QAAQ,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uBAAuB;IACvB,MAAM,OAAO,GAAG,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;IAC3D,IAAI,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAEzD,yBAAyB;IACzB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;IAE/C,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,KAAa;IACxC,OAAO,KAAK;SACT,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,aAAa;SACjC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,CAAC,cAAc;AACvC,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,sBAAsB,CAAC,KAAa,EAAE,OAAe;IACnE,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,SAAS;IACT,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,CAAC,CAAC;IACvC,IAAI,KAAK,GAAG,CAAC,QAAQ,IAAI,KAAK,IAAI,QAAQ,EAAE,CAAC;QAC3C,MAAM,IAAI,KAAK,CAAC,UAAU,KAAK,yBAAyB,OAAO,UAAU,OAAO,GAAG,CAAC,CAAC;IACvF,CAAC;IAED,WAAW;IACX,MAAM,MAAM,GAAG,QAAQ,CAAC;IACxB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;IAE5C,wBAAwB;IACxB,OAAO,QAAQ,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,OAAO,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;AACxD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,KAAuC;IACpE,yBAAyB;IACzB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,IAAI,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAEjE,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,2BAA2B,KAAK,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,OAAO,IAAI,CAAC,WAAW,EAAE,CAAC;AAC5B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,KAAiC;IAC7D,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC3B,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAqB,EACrB,KAAc,EACd,MAAoB;IAEpB,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1C,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;YAC1B,MAAM,SAAS,GAAG,cAAc,CAAC,GAAG,EAAE,MAAM,CAAC,cAAc,CAAC,CAAC;YAC7D,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QACD,KAAK,QAAQ;YACX,OAAO,sBAAsB,CAAC,KAAe,EAAE,MAAM,CAAC,aAAa,CAAC,CAAC;QACvE,KAAK,UAAU;YACb,OAAO,cAAc,CAAC,KAAsB,CAAC,CAAC;QAChD,KAAK,SAAS;YACZ,OAAO,aAAa,CAAC,KAAgB,CAAC,CAAC;QACzC,KAAK,OAAO,CAAC;QACb,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,0BAA0B;YAC1B,MAAM,UAAU,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;YACxC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3C,MAAM,QAAQ,GAAG,MAAM,CAAC,cAAc,GAAG,CAAC,CAAC;YAC3C,MAAM,SAAS,GAAG,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;YACpD,OAAO,YAAY,CAAC,SAAS,CAAC,CAAC;QACjC,CAAC;QACD;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,OAAO,MAAM,QAAQ,EAAE,CAAC;AAC1B,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,MAAM,UAAU,qBAAqB,CACnC,MAA+B,EAC/B,YAAoB,EACpB,MAAoB;IAEpB,MAAM,OAAO,GAAmB,EAAE,CAAC;IAEnC,iBAAiB;IACjB,KAAK,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACxD,iCAAiC;QACjC,IAAI,SAAS,KAAK,IAAI,EAAE,CAAC;YACvB,SAAS;QACX,CAAC;QAED,yBAAyB;QACzB,IAAI,SAAS,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,SAAS;QACX,CAAC;QAED,qBAAqB;QACrB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YAC1C,SAAS;QACX,CAAC;QAED,MAAM;QACN,MAAM,IAAI,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,SAAS;QACX,CAAC;QAED,gBAAgB;QAChB,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;QAE7D,YAAY;QACZ,MAAM,EAAE,GAAG,GAAG,SAAS,IAAI,cAAc,OAAO,MAAM,CAAC,EAAE,EAAE,CAAC;QAE5D,OAAO,CAAC,IAAI,CAAC;YACX,EAAE,EAAE,YAAY;YAChB,EAAE,EAAE,EAAE;SACP,CAAC,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -3,7 +3,8 @@
3
3
  *
4
4
  * DynamoDB Single-Table設計における動的シャドーレコード管理を提供します。
5
5
  */
6
- export type { ShadowFieldType, ShadowFieldConfig, ResourceShadowConfig, ShadowConfig, ShadowDiff, } from './types.js';
6
+ export type { ShadowFieldType, ShadowFieldConfig, ShadowDiff, } from './types.js';
7
+ export type { ShadowConfig } from './config.js';
7
8
  export type { ShadowRecord } from './generator.js';
8
9
  export { escapeString, formatDatetime, formatBoolean, formatFieldValue, generateMainRecordSK, generateShadowRecords, formatNumberWithOffset, truncateString, normalizeJson, } from './generator.js';
9
10
  export { calculateShadowDiff, isDiffEmpty, mergeShadowDiffs } from './differ.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/shadow/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGjF,OAAO,EACL,eAAe,EACf,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,cAAc,EACd,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/server/shadow/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAGH,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGhD,YAAY,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,aAAa,GACd,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGjF,OAAO,EACL,eAAe,EACf,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,cAAc,EACd,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/shadow/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAaH,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB,gBAAgB;AAChB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjF,gBAAgB;AAChB,OAAO,EACL,eAAe,EACf,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,eAAe;AACf,OAAO,EACL,cAAc,EACd,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/server/shadow/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAcH,OAAO,EACL,YAAY,EACZ,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,oBAAoB,EACpB,qBAAqB,EACrB,sBAAsB,EACtB,cAAc,EACd,aAAa,GACd,MAAM,gBAAgB,CAAC;AAExB,gBAAgB;AAChB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjF,gBAAgB;AAChB,OAAO,EACL,eAAe,EACf,sBAAsB,GACvB,MAAM,aAAa,CAAC;AAErB,eAAe;AACf,OAAO,EACL,cAAc,EACd,uBAAuB,GACxB,MAAM,oBAAoB,CAAC"}
@@ -8,30 +8,6 @@ export type ShadowFieldType = 'string' | 'number' | 'datetime' | 'boolean' | 'ar
8
8
  export interface ShadowFieldConfig {
9
9
  type: ShadowFieldType;
10
10
  }
11
- /**
12
- * リソースごとのシャドー設定
13
- */
14
- export interface ResourceShadowConfig {
15
- sortDefaults: {
16
- field: string;
17
- order: 'ASC' | 'DESC';
18
- };
19
- shadows: {
20
- [fieldName: string]: ShadowFieldConfig;
21
- };
22
- ttl?: {
23
- days: number;
24
- };
25
- }
26
- /**
27
- * shadow.config.jsonの全体構造
28
- */
29
- export interface ShadowConfig {
30
- $schemaVersion: string;
31
- resources: {
32
- [resourceName: string]: ResourceShadowConfig;
33
- };
34
- }
35
11
  /**
36
12
  * シャドー差分計算の結果
37
13
  */
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/shadow/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE;QACZ,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;KACvB,CAAC;IACF,OAAO,EAAE;QACP,CAAC,SAAS,EAAE,MAAM,GAAG,iBAAiB,CAAC;KACxC,CAAC;IACF,GAAG,CAAC,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE;QACT,CAAC,YAAY,EAAE,MAAM,GAAG,oBAAoB,CAAC;KAC9C,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sBAAsB;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/server/shadow/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,QAAQ,CAAC;AAEhG;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,eAAe,CAAC;CACvB;AAKD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,sBAAsB;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sBAAsB;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB"}
@@ -1,13 +1,13 @@
1
1
  import type { ShadowDiff } from './types.js';
2
2
  /**
3
- * 旧シャドーキーと新シャドーキーの差分を計算する
3
+ * Calculate difference between old and new shadow keys
4
4
  *
5
- * この関数は、レコード更新時に既存のシャドーレコードと新しく生成すべき
6
- * シャドーレコードを比較し、削除すべきものと追加すべきものを特定します。
5
+ * This function compares existing shadow records with newly generated ones
6
+ * during record updates, identifying which ones should be deleted and added.
7
7
  *
8
- * @param oldShadowKeys - 既存のシャドーSKの配列
9
- * @param newShadowKeys - 新しく生成されたシャドーSKの配列
10
- * @returns 削除すべきSKと追加すべきSKのリスト
8
+ * @param oldShadowKeys - Array of existing shadow SKs
9
+ * @param newShadowKeys - Array of newly generated shadow SKs
10
+ * @returns List of SKs to delete and add
11
11
  *
12
12
  * @example
13
13
  * const oldKeys = [
@@ -26,17 +26,17 @@ import type { ShadowDiff } from './types.js';
26
26
  */
27
27
  export declare function calculateShadowDiff(oldShadowKeys: string[], newShadowKeys: string[]): ShadowDiff;
28
28
  /**
29
- * シャドー差分が空かどうかを判定する
29
+ * Check if shadow difference is empty
30
30
  *
31
- * @param diff - シャドー差分オブジェクト
32
- * @returns 差分が空の場合true
31
+ * @param diff - Shadow difference object
32
+ * @returns True if difference is empty
33
33
  */
34
34
  export declare function isDiffEmpty(diff: ShadowDiff): boolean;
35
35
  /**
36
- * 複数のシャドー差分をマージする
36
+ * Merge multiple shadow differences
37
37
  *
38
- * @param diffs - マージするシャドー差分の配列
39
- * @returns マージされたシャドー差分
38
+ * @param diffs - Array of shadow differences to merge
39
+ * @returns Merged shadow difference
40
40
  */
41
41
  export declare function mergeShadowDiffs(diffs: ShadowDiff[]): ShadowDiff;
42
42
  //# sourceMappingURL=differ.d.ts.map
@@ -1,12 +1,12 @@
1
1
  /**
2
- * 旧シャドーキーと新シャドーキーの差分を計算する
2
+ * Calculate difference between old and new shadow keys
3
3
  *
4
- * この関数は、レコード更新時に既存のシャドーレコードと新しく生成すべき
5
- * シャドーレコードを比較し、削除すべきものと追加すべきものを特定します。
4
+ * This function compares existing shadow records with newly generated ones
5
+ * during record updates, identifying which ones should be deleted and added.
6
6
  *
7
- * @param oldShadowKeys - 既存のシャドーSKの配列
8
- * @param newShadowKeys - 新しく生成されたシャドーSKの配列
9
- * @returns 削除すべきSKと追加すべきSKのリスト
7
+ * @param oldShadowKeys - Array of existing shadow SKs
8
+ * @param newShadowKeys - Array of newly generated shadow SKs
9
+ * @returns List of SKs to delete and add
10
10
  *
11
11
  * @example
12
12
  * const oldKeys = [
@@ -24,12 +24,12 @@
24
24
  * // }
25
25
  */
26
26
  export function calculateShadowDiff(oldShadowKeys, newShadowKeys) {
27
- // Set を使用して効率的な差分計算を行う
27
+ // Use Set for efficient difference calculation
28
28
  const oldSet = new Set(oldShadowKeys);
29
29
  const newSet = new Set(newShadowKeys);
30
- // 削除すべきキー: 旧キーに存在するが新キーに存在しない
30
+ // Keys to delete: exist in old but not in new
31
31
  const toDelete = oldShadowKeys.filter((key) => !newSet.has(key));
32
- // 追加すべきキー: 新キーに存在するが旧キーに存在しない
32
+ // Keys to add: exist in new but not in old
33
33
  const toAdd = newShadowKeys.filter((key) => !oldSet.has(key));
34
34
  return {
35
35
  toDelete,
@@ -37,19 +37,19 @@ export function calculateShadowDiff(oldShadowKeys, newShadowKeys) {
37
37
  };
38
38
  }
39
39
  /**
40
- * シャドー差分が空かどうかを判定する
40
+ * Check if shadow difference is empty
41
41
  *
42
- * @param diff - シャドー差分オブジェクト
43
- * @returns 差分が空の場合true
42
+ * @param diff - Shadow difference object
43
+ * @returns True if difference is empty
44
44
  */
45
45
  export function isDiffEmpty(diff) {
46
46
  return diff.toDelete.length === 0 && diff.toAdd.length === 0;
47
47
  }
48
48
  /**
49
- * 複数のシャドー差分をマージする
49
+ * Merge multiple shadow differences
50
50
  *
51
- * @param diffs - マージするシャドー差分の配列
52
- * @returns マージされたシャドー差分
51
+ * @param diffs - Array of shadow differences to merge
52
+ * @returns Merged shadow difference
53
53
  */
54
54
  export function mergeShadowDiffs(diffs) {
55
55
  const allToDelete = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"differ.js","sourceRoot":"","sources":["../../src/shadows/differ.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAAuB,EAAE,aAAuB;IAClF,uBAAuB;IACvB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAEtC,8BAA8B;IAC9B,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjE,8BAA8B;IAC9B,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9D,OAAO;QACL,QAAQ;QACR,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAgB;IAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAClD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QACjC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC5B,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"differ.js","sourceRoot":"","sources":["../../src/shadows/differ.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,UAAU,mBAAmB,CAAC,aAAuB,EAAE,aAAuB;IAClF,+CAA+C;IAC/C,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAEtC,8CAA8C;IAC9C,MAAM,QAAQ,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAEjE,2CAA2C;IAC3C,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAE9D,OAAO;QACL,QAAQ;QACR,KAAK;KACN,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,WAAW,CAAC,IAAgB;IAC1C,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;AAC/D,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAmB;IAClD,MAAM,WAAW,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QACrD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC;QACjC,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC;KAC5B,CAAC;AACJ,CAAC"}
@@ -1,50 +1,64 @@
1
- import type { ShadowFieldType } from './schema.js';
1
+ import type { ShadowFieldType } from './types.js';
2
2
  /**
3
- * 文字列値をエスケープする
4
- * ルール: # → ##, スペース → #
3
+ * Escape string values for shadow SK generation
4
+ * Rules: # → ##, space → #
5
5
  *
6
- * @param value - エスケープする文字列
7
- * @returns エスケープされた文字列
6
+ * @param value - String to escape
7
+ * @returns Escaped string
8
8
  */
9
9
  export declare function escapeString(value: string): string;
10
10
  /**
11
- * 数値を20桁のゼロ埋め文字列に変換する
11
+ * Convert number to 20-digit zero-padded string
12
12
  *
13
- * @param value - 変換する数値(null/undefinedも許容)
14
- * @returns 20桁のゼロ埋め文字列
13
+ * @param value - Number to convert (null/undefined allowed)
14
+ * @returns 20-digit zero-padded string
15
15
  */
16
16
  export declare function formatNumber(value: number | null | undefined): string;
17
17
  /**
18
- * 日時をUTC ISO 8601形式にフォーマットする
18
+ * Format datetime to UTC ISO 8601 format
19
19
  *
20
- * @param value - 日時文字列またはDateオブジェクト(null/undefinedも許容)
21
- * @returns UTC ISO 8601形式の文字列
20
+ * @param value - Datetime string or Date object (null/undefined allowed)
21
+ * @returns UTC ISO 8601 format string
22
22
  */
23
23
  export declare function formatDatetime(value: string | Date | null | undefined): string;
24
24
  /**
25
- * boolean値をフォーマットする
25
+ * Format boolean value
26
26
  *
27
- * @param value - boolean値(null/undefinedも許容)
28
- * @returns 'true' または 'false' または空文字
27
+ * @param value - Boolean value (null/undefined allowed)
28
+ * @returns 'true' or 'false' or empty string
29
29
  */
30
30
  export declare function formatBoolean(value: boolean | null | undefined): string;
31
31
  /**
32
- * フィールド値を型に応じてフォーマットする
32
+ * Format array to JSON string
33
33
  *
34
- * @param type - フィールドの型
35
- * @param value - フォーマットする値(null/undefinedも許容)
36
- * @returns フォーマットされた文字列
34
+ * @param value - Array (null/undefined allowed)
35
+ * @returns JSON string or empty string
37
36
  */
38
- export declare function formatFieldValue(type: ShadowFieldType, value: string | number | Date | boolean | null | undefined): string;
37
+ export declare function formatArray(value: any[] | null | undefined): string;
39
38
  /**
40
- * シャドーSKを生成する
41
- * フォーマット: {fieldName}#{formattedValue}#id#{recordId}
39
+ * Format object to JSON string
42
40
  *
43
- * @param fieldName - フィールド名
44
- * @param value - フィールド値
45
- * @param recordId - レコードID(ULID)
46
- * @param type - フィールドの型(デフォルト: 'string')
47
- * @returns 生成されたシャドーSK
41
+ * @param value - Object (null/undefined allowed)
42
+ * @returns JSON string or empty string
43
+ */
44
+ export declare function formatObject(value: object | null | undefined): string;
45
+ /**
46
+ * Format field value according to its type
47
+ *
48
+ * @param type - Field type
49
+ * @param value - Value to format (null/undefined allowed)
50
+ * @returns Formatted string
51
+ */
52
+ export declare function formatFieldValue(type: ShadowFieldType, value: any): string;
53
+ /**
54
+ * Generate shadow SK
55
+ * Format: {fieldName}#{formattedValue}#id#{recordId}
56
+ *
57
+ * @param fieldName - Field name
58
+ * @param value - Field value
59
+ * @param recordId - Record ID (ULID)
60
+ * @param type - Field type (default: 'string')
61
+ * @returns Generated shadow SK
48
62
  *
49
63
  * @example
50
64
  * generateShadowSK('name', 'Tech News', '01HZXY123', 'string')
@@ -61,14 +75,22 @@ export declare function formatFieldValue(type: ShadowFieldType, value: string |
61
75
  * @example
62
76
  * generateShadowSK('isPublished', true, '01HZXY123', 'boolean')
63
77
  * // => 'isPublished#true#id#01HZXY123'
78
+ *
79
+ * @example
80
+ * generateShadowSK('tags', ['tech', 'aws'], '01HZXY123', 'array')
81
+ * // => 'tags#["tech","aws"]#id#01HZXY123'
82
+ *
83
+ * @example
84
+ * generateShadowSK('metadata', { category: 'tech' }, '01HZXY123', 'object')
85
+ * // => 'metadata#{"category":"tech"}#id#01HZXY123'
64
86
  */
65
- export declare function generateShadowSK(fieldName: string, value: string | number | Date | boolean, recordId: string, type?: ShadowFieldType): string;
87
+ export declare function generateShadowSK(fieldName: string, value: any, recordId: string, type?: ShadowFieldType): string;
66
88
  /**
67
- * レコードIDからメインレコードのSKを生成する
68
- * フォーマット: id#{recordId}
89
+ * Generate main record SK from record ID
90
+ * Format: id#{recordId}
69
91
  *
70
- * @param recordId - レコードIDULID
71
- * @returns メインレコードのSK
92
+ * @param recordId - Record ID (ULID)
93
+ * @returns Main record SK
72
94
  */
73
95
  export declare function generateMainRecordSK(recordId: string): string;
74
96
  //# sourceMappingURL=generator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/shadows/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAcrE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAa9E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAOvE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,GACzD,MAAM,CAiBR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,OAAO,EACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,eAA0B,GAC/B,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7D"}
1
+ {"version":3,"file":"generator.d.ts","sourceRoot":"","sources":["../../src/shadows/generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAcrE;AAED;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAa9E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAOvE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAWnE;AAED;;;;;GAKG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAWrE;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,GAAG,GACT,MAAM,CAqBR;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,GAAG,EACV,QAAQ,EAAE,MAAM,EAChB,IAAI,GAAE,eAA0B,GAC/B,MAAM,CAGR;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAE7D"}