@exabugs/dynamodb-client 0.1.1 → 0.2.0

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 (56) hide show
  1. package/CHANGELOG.md +57 -0
  2. package/README.md +216 -187
  3. package/dist/client/Collection.d.ts +14 -9
  4. package/dist/client/Collection.d.ts.map +1 -1
  5. package/dist/client/Collection.js +3 -9
  6. package/dist/client/Collection.js.map +1 -1
  7. package/dist/client/Database.d.ts +1 -3
  8. package/dist/client/Database.d.ts.map +1 -1
  9. package/dist/client/Database.js +2 -7
  10. package/dist/client/Database.js.map +1 -1
  11. package/dist/client/DynamoClient.d.ts +1 -1
  12. package/dist/client/DynamoClient.d.ts.map +1 -1
  13. package/dist/client/DynamoClient.js +2 -5
  14. package/dist/client/DynamoClient.js.map +1 -1
  15. package/dist/client/FindCursor.d.ts +1 -3
  16. package/dist/client/FindCursor.d.ts.map +1 -1
  17. package/dist/client/FindCursor.js +1 -5
  18. package/dist/client/FindCursor.js.map +1 -1
  19. package/dist/client/index.iam.d.ts +1 -1
  20. package/dist/client/index.iam.d.ts.map +1 -1
  21. package/dist/client/index.iam.js.map +1 -1
  22. package/dist/integrations/react-admin/dataProvider.d.ts +0 -1
  23. package/dist/integrations/react-admin/dataProvider.d.ts.map +1 -1
  24. package/dist/integrations/react-admin/dataProvider.js +10 -11
  25. package/dist/integrations/react-admin/dataProvider.js.map +1 -1
  26. package/dist/integrations/react-admin/types.d.ts +0 -2
  27. package/dist/integrations/react-admin/types.d.ts.map +1 -1
  28. package/dist/scripts/generate-shadow-config.d.ts +3 -0
  29. package/dist/scripts/generate-shadow-config.d.ts.map +1 -0
  30. package/dist/scripts/generate-shadow-config.js +159 -0
  31. package/dist/scripts/generate-shadow-config.js.map +1 -0
  32. package/dist/scripts/repair-shadows.js +1 -1
  33. package/dist/scripts/repair-shadows.js.map +1 -1
  34. package/dist/server/handler.cjs +2 -2
  35. package/dist/shadows/generator.d.ts +14 -3
  36. package/dist/shadows/generator.d.ts.map +1 -1
  37. package/dist/shadows/generator.js +19 -0
  38. package/dist/shadows/generator.js.map +1 -1
  39. package/dist/shadows/index.d.ts +3 -2
  40. package/dist/shadows/index.d.ts.map +1 -1
  41. package/dist/shadows/index.js +1 -1
  42. package/dist/shadows/index.js.map +1 -1
  43. package/dist/shadows/schema.d.ts +60 -0
  44. package/dist/shadows/schema.d.ts.map +1 -0
  45. package/dist/shadows/schema.js +8 -0
  46. package/dist/shadows/schema.js.map +1 -0
  47. package/dist/shadows/types.d.ts +1 -5
  48. package/dist/shadows/types.d.ts.map +1 -1
  49. package/package.json +7 -4
  50. package/terraform/examples/advanced/README.md +0 -129
  51. package/terraform/examples/advanced/main.tf +0 -158
  52. package/terraform/examples/advanced/shadow.config.json +0 -35
  53. package/terraform/examples/advanced/variables.tf +0 -28
  54. package/terraform/examples/basic/README.md +0 -53
  55. package/terraform/examples/basic/main.tf +0 -99
  56. package/terraform/examples/basic/variables.tf +0 -17
@@ -1 +1 @@
1
- {"version":3,"file":"repair-shadows.js","sourceRoot":"","sources":["../../src/scripts/repair-shadows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"repair-shadows.js","sourceRoot":"","sources":["../../src/scripts/repair-shadows.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- // @exabugs/dynamodb-client v0.1.1
2
- // Built: 2025-11-29T12:43:41.992Z
1
+ // @exabugs/dynamodb-client v0.2.0
2
+ // Built: 2025-12-01T02:39:20.698Z
3
3
  "use strict";
4
4
  var __create = Object.create;
5
5
  var __defProp = Object.defineProperty;
@@ -1,4 +1,4 @@
1
- import type { ShadowFieldType } from './types.js';
1
+ import type { ShadowFieldType } from './schema.js';
2
2
  /**
3
3
  * 文字列値をエスケープする
4
4
  * ルール: # → ##, スペース → #
@@ -21,6 +21,13 @@ export declare function formatNumber(value: number | null | undefined): string;
21
21
  * @returns UTC ISO 8601形式の文字列
22
22
  */
23
23
  export declare function formatDatetime(value: string | Date | null | undefined): string;
24
+ /**
25
+ * boolean値をフォーマットする
26
+ *
27
+ * @param value - boolean値(null/undefinedも許容)
28
+ * @returns 'true' または 'false' または空文字
29
+ */
30
+ export declare function formatBoolean(value: boolean | null | undefined): string;
24
31
  /**
25
32
  * フィールド値を型に応じてフォーマットする
26
33
  *
@@ -28,7 +35,7 @@ export declare function formatDatetime(value: string | Date | null | undefined):
28
35
  * @param value - フォーマットする値(null/undefinedも許容)
29
36
  * @returns フォーマットされた文字列
30
37
  */
31
- export declare function formatFieldValue(type: ShadowFieldType, value: string | number | Date | null | undefined): string;
38
+ export declare function formatFieldValue(type: ShadowFieldType, value: string | number | Date | boolean | null | undefined): string;
32
39
  /**
33
40
  * シャドーSKを生成する
34
41
  * フォーマット: {fieldName}#{formattedValue}#id#{recordId}
@@ -50,8 +57,12 @@ export declare function formatFieldValue(type: ShadowFieldType, value: string |
50
57
  * @example
51
58
  * generateShadowSK('createdAt', '2025-11-12T10:00:00.000Z', '01HZXY123', 'datetime')
52
59
  * // => 'createdAt#2025-11-12T10:00:00.000Z#id#01HZXY123'
60
+ *
61
+ * @example
62
+ * generateShadowSK('isPublished', true, '01HZXY123', 'boolean')
63
+ * // => 'isPublished#true#id#01HZXY123'
53
64
  */
54
- export declare function generateShadowSK(fieldName: string, value: string | number | Date, recordId: string, type?: ShadowFieldType): string;
65
+ export declare function generateShadowSK(fieldName: string, value: string | number | Date | boolean, recordId: string, type?: ShadowFieldType): string;
55
66
  /**
56
67
  * レコードIDからメインレコードのSKを生成する
57
68
  * フォーマット: id#{recordId}
@@ -1 +1 @@
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;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,eAAe,EACrB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,SAAS,GAC/C,MAAM,CAeR;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAC7B,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,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"}
@@ -45,6 +45,19 @@ export function formatDatetime(value) {
45
45
  }
46
46
  return date.toISOString();
47
47
  }
48
+ /**
49
+ * boolean値をフォーマットする
50
+ *
51
+ * @param value - boolean値(null/undefinedも許容)
52
+ * @returns 'true' または 'false' または空文字
53
+ */
54
+ export function formatBoolean(value) {
55
+ // null/undefined は空文字を返す
56
+ if (value === null || value === undefined) {
57
+ return '';
58
+ }
59
+ return value ? 'true' : 'false';
60
+ }
48
61
  /**
49
62
  * フィールド値を型に応じてフォーマットする
50
63
  *
@@ -64,6 +77,8 @@ export function formatFieldValue(type, value) {
64
77
  return formatNumber(value);
65
78
  case 'datetime':
66
79
  return formatDatetime(value);
80
+ case 'boolean':
81
+ return formatBoolean(value);
67
82
  default:
68
83
  throw new Error(`Unknown shadow field type: ${type}`);
69
84
  }
@@ -89,6 +104,10 @@ export function formatFieldValue(type, value) {
89
104
  * @example
90
105
  * generateShadowSK('createdAt', '2025-11-12T10:00:00.000Z', '01HZXY123', 'datetime')
91
106
  * // => 'createdAt#2025-11-12T10:00:00.000Z#id#01HZXY123'
107
+ *
108
+ * @example
109
+ * generateShadowSK('isPublished', true, '01HZXY123', 'boolean')
110
+ * // => 'isPublished#true#id#01HZXY123'
92
111
  */
93
112
  export function generateShadowSK(fieldName, value, recordId, type = 'string') {
94
113
  const formattedValue = formatFieldValue(type, value);
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/shadows/generator.ts"],"names":[],"mappings":"AAEA;;;;;;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;;;;;GAKG;AACH,MAAM,UAAU,YAAY,CAAC,KAAgC;IAC3D,yBAAyB;IACzB,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QAC1C,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CAAC,yBAAyB,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IAED,8BAA8B;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAElD,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;AACjD,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;;;;;;GAMG;AACH,MAAM,UAAU,gBAAgB,CAC9B,IAAqB,EACrB,KAAgD;IAEhD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,QAAQ;YACX,kCAAkC;YAClC,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBAC1C,OAAO,EAAE,CAAC;YACZ,CAAC;YACD,OAAO,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,KAAK,QAAQ;YACX,OAAO,YAAY,CAAC,KAAkC,CAAC,CAAC;QAC1D,KAAK,UAAU;YACb,OAAO,cAAc,CAAC,KAAyC,CAAC,CAAC;QACnE;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,EAAE,CAAC,CAAC;IAC1D,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,UAAU,gBAAgB,CAC9B,SAAiB,EACjB,KAA6B,EAC7B,QAAgB,EAChB,OAAwB,QAAQ;IAEhC,MAAM,cAAc,GAAG,gBAAgB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACrD,OAAO,GAAG,SAAS,IAAI,cAAc,OAAO,QAAQ,EAAE,CAAC;AACzD,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAgB;IACnD,OAAO,MAAM,QAAQ,EAAE,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/shadows/generator.ts"],"names":[],"mappings":"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"}
@@ -8,8 +8,9 @@
8
8
  * - シャドー差分計算(旧影と新影の比較)
9
9
  * - shadow.config.json読み込みと検証
10
10
  */
11
- export type { ShadowFieldType, ShadowFieldConfig, ResourceShadowConfig, ShadowConfig, ShadowDiff, } from './types.js';
12
- export { escapeString, formatNumber, formatDatetime, formatFieldValue, generateShadowSK, generateMainRecordSK, } from './generator.js';
11
+ export type { ShadowFieldConfig, ResourceShadowConfig, ShadowConfig, ShadowDiff } from './types.js';
12
+ export type { ShadowFieldType, ShadowFieldDefinition, ResourceSchema, SchemaRegistryConfig, } from './schema.js';
13
+ export { escapeString, formatNumber, formatDatetime, formatBoolean, formatFieldValue, generateShadowSK, generateMainRecordSK, } from './generator.js';
13
14
  export { calculateShadowDiff, isDiffEmpty, mergeShadowDiffs } from './differ.js';
14
15
  export { loadShadowConfig, getResourceConfig, getAllShadowFields, isValidShadowField, getDefaultSort, getConfigPathFromEnv, } from './config.js';
15
16
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shadows/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,oBAAoB,EACpB,YAAY,EACZ,UAAU,GACX,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGjF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shadows/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,YAAY,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAGpG,YAAY,EACV,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,oBAAoB,GACrB,MAAM,aAAa,CAAC;AAGrB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAGjF,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
@@ -9,7 +9,7 @@
9
9
  * - shadow.config.json読み込みと検証
10
10
  */
11
11
  // ジェネレーター関数のエクスポート
12
- export { escapeString, formatNumber, formatDatetime, formatFieldValue, generateShadowSK, generateMainRecordSK, } from './generator.js';
12
+ export { escapeString, formatNumber, formatDatetime, formatBoolean, formatFieldValue, generateShadowSK, generateMainRecordSK, } from './generator.js';
13
13
  // 差分計算関数のエクスポート
14
14
  export { calculateShadowDiff, isDiffEmpty, mergeShadowDiffs } from './differ.js';
15
15
  // 設定管理関数のエクスポート
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shadows/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAWH,mBAAmB;AACnB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,gBAAgB;AAChB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjF,gBAAgB;AAChB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shadows/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAaH,mBAAmB;AACnB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,aAAa,EACb,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,gBAAgB;AAChB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjF,gBAAgB;AAChB,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,oBAAoB,GACrB,MAAM,aAAa,CAAC"}
@@ -0,0 +1,60 @@
1
+ /**
2
+ * Shadow Config スキーマ定義
3
+ *
4
+ * TypeScript でリソーススキーマを定義し、shadow.config.json を自動生成するための型定義。
5
+ * これにより、型安全性を保ちながら Shadow Config を管理できる。
6
+ */
7
+ /**
8
+ * シャドーフィールドの型
9
+ */
10
+ export type ShadowFieldType = 'string' | 'number' | 'datetime' | 'boolean';
11
+ /**
12
+ * シャドーフィールドの定義
13
+ */
14
+ export interface ShadowFieldDefinition {
15
+ type: ShadowFieldType;
16
+ }
17
+ /**
18
+ * リソーススキーマの定義
19
+ *
20
+ * @template T - リソースの型(例: Article, Task など)
21
+ */
22
+ export interface ResourceSchema<T = any> {
23
+ /** リソース名(複数形、例: "articles", "tasks") */
24
+ resource: string;
25
+ /** リソースの型定義(型チェック用) */
26
+ type: T;
27
+ /** シャドー設定 */
28
+ shadows: {
29
+ /** ソート可能なフィールドの定義 */
30
+ sortableFields: Record<string, ShadowFieldDefinition>;
31
+ };
32
+ /** デフォルトソート設定(省略時は自動決定) */
33
+ sortDefaults?: {
34
+ field: string;
35
+ order: 'ASC' | 'DESC';
36
+ };
37
+ /** TTL 設定(省略可) */
38
+ ttl?: {
39
+ days: number;
40
+ };
41
+ }
42
+ /**
43
+ * スキーマレジストリの設定
44
+ *
45
+ * アプリケーション全体のリソーススキーマを定義する。
46
+ * この設定から shadow.config.json を自動生成する。
47
+ */
48
+ export interface SchemaRegistryConfig {
49
+ /** データベース設定 */
50
+ database: {
51
+ /** タイムスタンプフィールド名 */
52
+ timestamps: {
53
+ createdAt: string;
54
+ updatedAt: string;
55
+ };
56
+ };
57
+ /** リソーススキーマの定義 */
58
+ resources: Record<string, ResourceSchema>;
59
+ }
60
+ //# sourceMappingURL=schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/shadows/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,SAAS,CAAC;AAE3E;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,eAAe,CAAC;CACvB;AAED;;;;GAIG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,GAAG;IACrC,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IAEjB,uBAAuB;IACvB,IAAI,EAAE,CAAC,CAAC;IAER,aAAa;IACb,OAAO,EAAE;QACP,qBAAqB;QACrB,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,qBAAqB,CAAC,CAAC;KACvD,CAAC;IAEF,2BAA2B;IAC3B,YAAY,CAAC,EAAE;QACb,KAAK,EAAE,MAAM,CAAC;QACd,KAAK,EAAE,KAAK,GAAG,MAAM,CAAC;KACvB,CAAC;IAEF,kBAAkB;IAClB,GAAG,CAAC,EAAE;QACJ,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;CACH;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,eAAe;IACf,QAAQ,EAAE;QACR,oBAAoB;QACpB,UAAU,EAAE;YACV,SAAS,EAAE,MAAM,CAAC;YAClB,SAAS,EAAE,MAAM,CAAC;SACnB,CAAC;KACH,CAAC;IAEF,kBAAkB;IAClB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;CAC3C"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Shadow Config スキーマ定義
3
+ *
4
+ * TypeScript でリソーススキーマを定義し、shadow.config.json を自動生成するための型定義。
5
+ * これにより、型安全性を保ちながら Shadow Config を管理できる。
6
+ */
7
+ export {};
8
+ //# sourceMappingURL=schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/shadows/schema.ts"],"names":[],"mappings":"AAAA;;;;;GAKG"}
@@ -1,12 +1,8 @@
1
- /**
2
- * シャドーフィールドの型定義
3
- */
4
- export type ShadowFieldType = 'string' | 'number' | 'datetime';
5
1
  /**
6
2
  * シャドー設定のフィールド定義
7
3
  */
8
4
  export interface ShadowFieldConfig {
9
- type: ShadowFieldType;
5
+ type: 'string' | 'number' | 'datetime';
10
6
  }
11
7
  /**
12
8
  * リソースごとのシャドー設定
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/shadows/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;AAE/D;;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/shadows/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,UAAU,CAAC;CACxC;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"}
package/package.json CHANGED
@@ -1,12 +1,15 @@
1
1
  {
2
2
  "name": "@exabugs/dynamodb-client",
3
- "version": "0.1.1",
3
+ "version": "0.2.0",
4
4
  "description": "DynamoDB Single-Table Client SDK with MongoDB-like API, Shadow Records, and Lambda implementation for serverless applications",
5
5
  "author": "exabugs",
6
6
  "license": "MIT",
7
7
  "type": "module",
8
8
  "main": "./dist/index.js",
9
9
  "types": "./dist/index.d.ts",
10
+ "bin": {
11
+ "generate-shadow-config": "./dist/scripts/generate-shadow-config.js"
12
+ },
10
13
  "keywords": [
11
14
  "dynamodb",
12
15
  "single-table",
@@ -95,8 +98,8 @@
95
98
  "build:lambda": "node esbuild.config.js",
96
99
  "clean": "rm -rf dist",
97
100
  "lint": "eslint src --ext ts --max-warnings 10",
98
- "format": "prettier --write \"src/**/*.ts\"",
99
- "format:check": "prettier --check \"src/**/*.ts\"",
101
+ "format": "prettier --write .",
102
+ "format:check": "prettier --check .",
100
103
  "test": "vitest run",
101
104
  "test:coverage": "vitest run --coverage",
102
105
  "test:watch": "vitest",
@@ -116,7 +119,7 @@
116
119
  },
117
120
  "devDependencies": {
118
121
  "@eslint/js": "^9.0.0",
119
- "@trivago/prettier-plugin-sort-imports": "^4.0.0",
122
+ "@trivago/prettier-plugin-sort-imports": "^4.3.0",
120
123
  "@types/aws-lambda": "^8.10.0",
121
124
  "@types/node": "^22.0.0",
122
125
  "@typescript-eslint/eslint-plugin": "^8.0.0",
@@ -1,129 +0,0 @@
1
- # Advanced Example
2
-
3
- This example demonstrates an advanced deployment with:
4
-
5
- - Multi-environment support (dev/stg/prd)
6
- - External shadow configuration file
7
- - CloudWatch Alarms
8
- - TTL configuration
9
- - Point-in-time Recovery (production only)
10
- - MFA configuration (production only)
11
- - Environment-specific settings
12
-
13
- ## What This Example Creates
14
-
15
- - DynamoDB table with TTL and PITR
16
- - Cognito User Pool with advanced security settings
17
- - Cognito App Client with token validity configuration
18
- - Records Lambda function with Function URL
19
- - CloudWatch Alarms for error monitoring
20
- - IAM roles and policies
21
- - CloudWatch Logs
22
-
23
- ## Usage
24
-
25
- 1. Review and customize `shadow.config.json`:
26
-
27
- ```bash
28
- cat shadow.config.json
29
- ```
30
-
31
- 2. Initialize Terraform:
32
-
33
- ```bash
34
- terraform init
35
- ```
36
-
37
- 3. Review the plan:
38
-
39
- ```bash
40
- terraform plan -var="environment=dev"
41
- ```
42
-
43
- 4. Apply the configuration:
44
-
45
- ```bash
46
- terraform apply -var="environment=dev"
47
- ```
48
-
49
- 5. Get the outputs:
50
-
51
- ```bash
52
- terraform output
53
- ```
54
-
55
- ## Environment-Specific Settings
56
-
57
- ### Development (dev)
58
- - Log retention: 7 days
59
- - Log level: debug
60
- - MFA: Optional
61
- - PITR: Disabled
62
-
63
- ### Staging (stg)
64
- - Log retention: 7 days
65
- - Log level: info
66
- - MFA: Optional
67
- - PITR: Disabled
68
-
69
- ### Production (prd)
70
- - Log retention: 30 days
71
- - Log level: warn
72
- - MFA: Required
73
- - PITR: Enabled
74
-
75
- ## Shadow Configuration
76
-
77
- The `shadow.config.json` file defines sortable fields for each resource:
78
-
79
- ```json
80
- {
81
- "$schemaVersion": "1.0",
82
- "resources": {
83
- "articles": {
84
- "sortDefaults": {
85
- "field": "updatedAt",
86
- "order": "DESC"
87
- },
88
- "shadows": {
89
- "title": { "type": "string" },
90
- "status": { "type": "string" },
91
- "publishedAt": { "type": "datetime" },
92
- "createdAt": { "type": "datetime" },
93
- "updatedAt": { "type": "datetime" }
94
- }
95
- }
96
- }
97
- }
98
- ```
99
-
100
- ## CloudWatch Alarms
101
-
102
- The example includes a CloudWatch Alarm that triggers when:
103
- - Lambda function errors exceed 10 in a 5-minute period
104
-
105
- To receive notifications, provide an SNS topic ARN:
106
-
107
- ```bash
108
- terraform apply -var="sns_topic_arn=arn:aws:sns:us-east-1:123456789012:alerts"
109
- ```
110
-
111
- ## Clean Up
112
-
113
- To destroy all resources:
114
-
115
- ```bash
116
- terraform destroy
117
- ```
118
-
119
- ## Customization
120
-
121
- You can customize the deployment by modifying variables:
122
-
123
- ```bash
124
- terraform apply \
125
- -var="project_name=my-app" \
126
- -var="environment=prd" \
127
- -var="region=ap-northeast-1" \
128
- -var="sns_topic_arn=arn:aws:sns:..."
129
- ```
@@ -1,158 +0,0 @@
1
- # Advanced Example: Multi-Environment with External Shadow Config
2
-
3
- terraform {
4
- required_version = ">= 1.5.0"
5
-
6
- required_providers {
7
- aws = {
8
- source = "hashicorp/aws"
9
- version = "~> 5.0"
10
- }
11
- }
12
- }
13
-
14
- provider "aws" {
15
- region = var.region
16
- }
17
-
18
- # DynamoDB Table with TTL
19
- resource "aws_dynamodb_table" "main" {
20
- name = "${var.project_name}-${var.environment}-records"
21
- billing_mode = "PAY_PER_REQUEST"
22
- hash_key = "PK"
23
- range_key = "SK"
24
-
25
- attribute {
26
- name = "PK"
27
- type = "S"
28
- }
29
-
30
- attribute {
31
- name = "SK"
32
- type = "S"
33
- }
34
-
35
- # TTL Configuration
36
- ttl {
37
- attribute_name = "ttl"
38
- enabled = true
39
- }
40
-
41
- # Point-in-time Recovery
42
- point_in_time_recovery {
43
- enabled = var.environment == "prd"
44
- }
45
-
46
- tags = {
47
- Name = "${var.project_name}-${var.environment}-records"
48
- Environment = var.environment
49
- }
50
- }
51
-
52
- # Cognito User Pool with Advanced Settings
53
- resource "aws_cognito_user_pool" "main" {
54
- name = "${var.project_name}-${var.environment}-users"
55
-
56
- # Password Policy
57
- password_policy {
58
- minimum_length = 8
59
- require_lowercase = true
60
- require_numbers = true
61
- require_symbols = true
62
- require_uppercase = true
63
- }
64
-
65
- # MFA Configuration
66
- mfa_configuration = var.environment == "prd" ? "REQUIRED" : "OPTIONAL"
67
-
68
- tags = {
69
- Name = "${var.project_name}-${var.environment}-users"
70
- Environment = var.environment
71
- }
72
- }
73
-
74
- # Cognito App Client
75
- resource "aws_cognito_user_pool_client" "main" {
76
- name = "${var.project_name}-${var.environment}-client"
77
- user_pool_id = aws_cognito_user_pool.main.id
78
-
79
- explicit_auth_flows = [
80
- "ALLOW_USER_SRP_AUTH",
81
- "ALLOW_REFRESH_TOKEN_AUTH"
82
- ]
83
-
84
- # Token Validity
85
- access_token_validity = 1 # 1 hour
86
- id_token_validity = 1 # 1 hour
87
- refresh_token_validity = 30 # 30 days
88
-
89
- token_validity_units {
90
- access_token = "hours"
91
- id_token = "hours"
92
- refresh_token = "days"
93
- }
94
- }
95
-
96
- # Records Lambda Module with External Config
97
- module "lambda_records" {
98
- source = "../../"
99
-
100
- project_name = var.project_name
101
- environment = var.environment
102
- region = var.region
103
-
104
- # DynamoDB
105
- dynamodb_table_name = aws_dynamodb_table.main.name
106
- dynamodb_table_arn = aws_dynamodb_table.main.arn
107
-
108
- # Cognito
109
- cognito_user_pool_id = aws_cognito_user_pool.main.id
110
- cognito_client_id = aws_cognito_user_pool_client.main.id
111
-
112
- # Shadow Config from External File
113
- shadow_config = base64encode(file("${path.module}/shadow.config.json"))
114
-
115
- # Logging (environment-specific)
116
- log_retention_days = var.environment == "prd" ? 30 : 7
117
- log_level = var.environment == "prd" ? "warn" : "debug"
118
- }
119
-
120
- # CloudWatch Alarm for Lambda Errors
121
- resource "aws_cloudwatch_metric_alarm" "lambda_errors" {
122
- alarm_name = "${var.project_name}-${var.environment}-lambda-errors"
123
- comparison_operator = "GreaterThanThreshold"
124
- evaluation_periods = 1
125
- metric_name = "Errors"
126
- namespace = "AWS/Lambda"
127
- period = 300
128
- statistic = "Sum"
129
- threshold = 10
130
- alarm_description = "Lambda function error rate is too high"
131
-
132
- dimensions = {
133
- FunctionName = module.lambda_records.function_name
134
- }
135
-
136
- alarm_actions = var.sns_topic_arn != "" ? [var.sns_topic_arn] : []
137
- }
138
-
139
- # Outputs
140
- output "function_url" {
141
- description = "Lambda Function URL"
142
- value = module.lambda_records.function_url
143
- }
144
-
145
- output "function_name" {
146
- description = "Lambda Function Name"
147
- value = module.lambda_records.function_name
148
- }
149
-
150
- output "cognito_user_pool_id" {
151
- description = "Cognito User Pool ID"
152
- value = aws_cognito_user_pool.main.id
153
- }
154
-
155
- output "cognito_client_id" {
156
- description = "Cognito App Client ID"
157
- value = aws_cognito_user_pool_client.main.id
158
- }
@@ -1,35 +0,0 @@
1
- {
2
- "$schemaVersion": "1.0",
3
- "resources": {
4
- "articles": {
5
- "sortDefaults": {
6
- "field": "updatedAt",
7
- "order": "DESC"
8
- },
9
- "shadows": {
10
- "title": { "type": "string" },
11
- "status": { "type": "string" },
12
- "publishedAt": { "type": "datetime" },
13
- "createdAt": { "type": "datetime" },
14
- "updatedAt": { "type": "datetime" }
15
- },
16
- "ttl": {
17
- "days": 90
18
- }
19
- },
20
- "tasks": {
21
- "sortDefaults": {
22
- "field": "priority",
23
- "order": "DESC"
24
- },
25
- "shadows": {
26
- "title": { "type": "string" },
27
- "status": { "type": "string" },
28
- "priority": { "type": "number" },
29
- "dueDate": { "type": "datetime" },
30
- "createdAt": { "type": "datetime" },
31
- "updatedAt": { "type": "datetime" }
32
- }
33
- }
34
- }
35
- }
@@ -1,28 +0,0 @@
1
- variable "project_name" {
2
- description = "Project name"
3
- type = string
4
- default = "my-project"
5
- }
6
-
7
- variable "environment" {
8
- description = "Environment (dev/stg/prd)"
9
- type = string
10
- default = "dev"
11
-
12
- validation {
13
- condition = contains(["dev", "stg", "prd"], var.environment)
14
- error_message = "Environment must be dev, stg, or prd."
15
- }
16
- }
17
-
18
- variable "region" {
19
- description = "AWS Region"
20
- type = string
21
- default = "us-east-1"
22
- }
23
-
24
- variable "sns_topic_arn" {
25
- description = "SNS Topic ARN for CloudWatch Alarms (optional)"
26
- type = string
27
- default = ""
28
- }