@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
@@ -1,41 +1,41 @@
1
1
  /**
2
- * 文字列値をエスケープする
3
- * ルール: # → ##, スペース → #
2
+ * Escape string values for shadow SK generation
3
+ * Rules: # → ##, space → #
4
4
  *
5
- * @param value - エスケープする文字列
6
- * @returns エスケープされた文字列
5
+ * @param value - String to escape
6
+ * @returns Escaped string
7
7
  */
8
8
  export function escapeString(value) {
9
9
  return value
10
- .replace(/#/g, '##') // # ## に置換
11
- .replace(/ /g, '#'); // スペースを # に置換
10
+ .replace(/#/g, '##') // Replace # with ##
11
+ .replace(/ /g, '#'); // Replace space with #
12
12
  }
13
13
  /**
14
- * 数値を20桁のゼロ埋め文字列に変換する
14
+ * Convert number to 20-digit zero-padded string
15
15
  *
16
- * @param value - 変換する数値(null/undefinedも許容)
17
- * @returns 20桁のゼロ埋め文字列
16
+ * @param value - Number to convert (null/undefined allowed)
17
+ * @returns 20-digit zero-padded string
18
18
  */
19
19
  export function formatNumber(value) {
20
- // null/undefined は空文字を返す
20
+ // Return empty string for null/undefined
21
21
  if (value === null || value === undefined) {
22
22
  return '';
23
23
  }
24
24
  if (!Number.isFinite(value)) {
25
25
  throw new Error(`Invalid number value: ${value}`);
26
26
  }
27
- // 負の数値は0として扱う(または別のエラーハンドリング)
27
+ // Treat negative numbers as 0
28
28
  const normalized = Math.max(0, Math.floor(value));
29
29
  return normalized.toString().padStart(20, '0');
30
30
  }
31
31
  /**
32
- * 日時をUTC ISO 8601形式にフォーマットする
32
+ * Format datetime to UTC ISO 8601 format
33
33
  *
34
- * @param value - 日時文字列またはDateオブジェクト(null/undefinedも許容)
35
- * @returns UTC ISO 8601形式の文字列
34
+ * @param value - Datetime string or Date object (null/undefined allowed)
35
+ * @returns UTC ISO 8601 format string
36
36
  */
37
37
  export function formatDatetime(value) {
38
- // null/undefined は空文字を返す
38
+ // Return empty string for null/undefined
39
39
  if (value === null || value === undefined) {
40
40
  return '';
41
41
  }
@@ -46,29 +46,61 @@ export function formatDatetime(value) {
46
46
  return date.toISOString();
47
47
  }
48
48
  /**
49
- * boolean値をフォーマットする
49
+ * Format boolean value
50
50
  *
51
- * @param value - boolean値(null/undefinedも許容)
52
- * @returns 'true' または 'false' または空文字
51
+ * @param value - Boolean value (null/undefined allowed)
52
+ * @returns 'true' or 'false' or empty string
53
53
  */
54
54
  export function formatBoolean(value) {
55
- // null/undefined は空文字を返す
55
+ // Return empty string for null/undefined
56
56
  if (value === null || value === undefined) {
57
57
  return '';
58
58
  }
59
59
  return value ? 'true' : 'false';
60
60
  }
61
61
  /**
62
- * フィールド値を型に応じてフォーマットする
62
+ * Format array to JSON string
63
63
  *
64
- * @param type - フィールドの型
65
- * @param value - フォーマットする値(null/undefinedも許容)
66
- * @returns フォーマットされた文字列
64
+ * @param value - Array (null/undefined allowed)
65
+ * @returns JSON string or empty string
66
+ */
67
+ export function formatArray(value) {
68
+ // Return empty string for null/undefined
69
+ if (value === null || value === undefined) {
70
+ return '';
71
+ }
72
+ if (!Array.isArray(value)) {
73
+ throw new Error(`Invalid array value: ${value}`);
74
+ }
75
+ return JSON.stringify(value);
76
+ }
77
+ /**
78
+ * Format object to JSON string
79
+ *
80
+ * @param value - Object (null/undefined allowed)
81
+ * @returns JSON string or empty string
82
+ */
83
+ export function formatObject(value) {
84
+ // Return empty string for null/undefined
85
+ if (value === null || value === undefined) {
86
+ return '';
87
+ }
88
+ if (typeof value !== 'object' || Array.isArray(value)) {
89
+ throw new Error(`Invalid object value: ${value}`);
90
+ }
91
+ return JSON.stringify(value);
92
+ }
93
+ /**
94
+ * Format field value according to its type
95
+ *
96
+ * @param type - Field type
97
+ * @param value - Value to format (null/undefined allowed)
98
+ * @returns Formatted string
67
99
  */
68
100
  export function formatFieldValue(type, value) {
69
101
  switch (type) {
70
102
  case 'string':
71
- // 文字列型の場合、null/undefinedは空文字として扱う
103
+ // For string type, treat null/undefined as empty string
72
104
  if (value === null || value === undefined) {
73
105
  return '';
74
106
  }
@@ -79,19 +111,23 @@ export function formatFieldValue(type, value) {
79
111
  return formatDatetime(value);
80
112
  case 'boolean':
81
113
  return formatBoolean(value);
114
+ case 'array':
115
+ return formatArray(value);
116
+ case 'object':
117
+ return formatObject(value);
82
118
  default:
83
119
  throw new Error(`Unknown shadow field type: ${type}`);
84
120
  }
85
121
  }
86
122
  /**
87
- * シャドーSKを生成する
88
- * フォーマット: {fieldName}#{formattedValue}#id#{recordId}
123
+ * Generate shadow SK
124
+ * Format: {fieldName}#{formattedValue}#id#{recordId}
89
125
  *
90
- * @param fieldName - フィールド名
91
- * @param value - フィールド値
92
- * @param recordId - レコードIDULID
93
- * @param type - フィールドの型(デフォルト: 'string'
94
- * @returns 生成されたシャドーSK
126
+ * @param fieldName - Field name
127
+ * @param value - Field value
128
+ * @param recordId - Record ID (ULID)
129
+ * @param type - Field type (default: 'string')
130
+ * @returns Generated shadow SK
95
131
  *
96
132
  * @example
97
133
  * generateShadowSK('name', 'Tech News', '01HZXY123', 'string')
@@ -108,17 +144,25 @@ export function formatFieldValue(type, value) {
108
144
  * @example
109
145
  * generateShadowSK('isPublished', true, '01HZXY123', 'boolean')
110
146
  * // => 'isPublished#true#id#01HZXY123'
147
+ *
148
+ * @example
149
+ * generateShadowSK('tags', ['tech', 'aws'], '01HZXY123', 'array')
150
+ * // => 'tags#["tech","aws"]#id#01HZXY123'
151
+ *
152
+ * @example
153
+ * generateShadowSK('metadata', { category: 'tech' }, '01HZXY123', 'object')
154
+ * // => 'metadata#{"category":"tech"}#id#01HZXY123'
111
155
  */
112
156
  export function generateShadowSK(fieldName, value, recordId, type = 'string') {
113
157
  const formattedValue = formatFieldValue(type, value);
114
158
  return `${fieldName}#${formattedValue}#id#${recordId}`;
115
159
  }
116
160
  /**
117
- * レコードIDからメインレコードのSKを生成する
118
- * フォーマット: id#{recordId}
161
+ * Generate main record SK from record ID
162
+ * Format: id#{recordId}
119
163
  *
120
- * @param recordId - レコードIDULID
121
- * @returns メインレコードのSK
164
+ * @param recordId - Record ID (ULID)
165
+ * @returns Main record SK
122
166
  */
123
167
  export function generateMainRecordSK(recordId) {
124
168
  return `id#${recordId}`;
@@ -1 +1 @@
1
- {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/shadows/generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"generator.js","sourceRoot":"","sources":["../../src/shadows/generator.ts"],"names":[],"mappings":"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"}
@@ -1,16 +1,14 @@
1
1
  /**
2
- * @exabugs/dynamodb-client/shadows - シャドー管理ライブラリ
2
+ * @exabugs/dynamodb-client/shadows - Shadow management library
3
3
  *
4
- * DynamoDB Single-Table設計における動的シャドーレコード管理を提供します。
4
+ * Provides dynamic shadow record management for DynamoDB Single-Table design.
5
5
  *
6
- * 主な機能:
7
- * - シャドーSK生成(string/number/datetime対応)
8
- * - シャドー差分計算(旧影と新影の比較)
9
- * - shadow.config.json読み込みと検証
6
+ * Main features:
7
+ * - Shadow SK generation (supports string/number/datetime/boolean/array/object)
8
+ * - Shadow difference calculation (comparing old and new shadows)
9
+ * - Configuration management utilities (for legacy compatibility)
10
10
  */
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';
11
+ export type { ShadowFieldType, ShadowFieldConfig, ShadowDiff } from './types.js';
12
+ export { escapeString, formatNumber, formatDatetime, formatBoolean, formatArray, formatObject, formatFieldValue, generateShadowSK, generateMainRecordSK, } from './generator.js';
14
13
  export { calculateShadowDiff, isDiffEmpty, mergeShadowDiffs } from './differ.js';
15
- export { loadShadowConfig, getResourceConfig, getAllShadowFields, isValidShadowField, getDefaultSort, getConfigPathFromEnv, } from './config.js';
16
14
  //# 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,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/shadows/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAGH,YAAY,EACV,eAAe,EACf,iBAAiB,EACjB,UAAU,EACX,MAAM,YAAY,CAAC;AAKpB,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAGxB,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
@@ -1,17 +1,18 @@
1
1
  /**
2
- * @exabugs/dynamodb-client/shadows - シャドー管理ライブラリ
2
+ * @exabugs/dynamodb-client/shadows - Shadow management library
3
3
  *
4
- * DynamoDB Single-Table設計における動的シャドーレコード管理を提供します。
4
+ * Provides dynamic shadow record management for DynamoDB Single-Table design.
5
5
  *
6
- * 主な機能:
7
- * - シャドーSK生成(string/number/datetime対応)
8
- * - シャドー差分計算(旧影と新影の比較)
9
- * - shadow.config.json読み込みと検証
6
+ * Main features:
7
+ * - Shadow SK generation (supports string/number/datetime/boolean/array/object)
8
+ * - Shadow difference calculation (comparing old and new shadows)
9
+ * - Configuration management utilities (for legacy compatibility)
10
10
  */
11
- // ジェネレーター関数のエクスポート
12
- export { escapeString, formatNumber, formatDatetime, formatBoolean, formatFieldValue, generateShadowSK, generateMainRecordSK, } from './generator.js';
13
- // 差分計算関数のエクスポート
11
+ // Legacy types removed in v0.3.x - use environment variables for configuration
12
+ // Generator functions export
13
+ export { escapeString, formatNumber, formatDatetime, formatBoolean, formatArray, formatObject, formatFieldValue, generateShadowSK, generateMainRecordSK, } from './generator.js';
14
+ // Difference calculation functions export
14
15
  export { calculateShadowDiff, isDiffEmpty, mergeShadowDiffs } from './differ.js';
15
- // 設定管理関数のエクスポート
16
- export { loadShadowConfig, getResourceConfig, getAllShadowFields, isValidShadowField, getDefaultSort, getConfigPathFromEnv, } from './config.js';
16
+ // Note: Configuration management functions removed in v0.3.x
17
+ // Use environment variables for configuration instead
17
18
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/shadows/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH,+EAA+E;AAE/E,6BAA6B;AAC7B,OAAO,EACL,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,aAAa,EACb,WAAW,EACX,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,oBAAoB,GACrB,MAAM,gBAAgB,CAAC;AAExB,0CAA0C;AAC1C,OAAO,EAAE,mBAAmB,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEjF,6DAA6D;AAC7D,sDAAsD"}
@@ -1,40 +1,20 @@
1
1
  /**
2
- * シャドー設定のフィールド定義
2
+ * Shadow field types supported by the automatic shadow generation system
3
3
  */
4
- export interface ShadowFieldConfig {
5
- type: 'string' | 'number' | 'datetime';
6
- }
7
- /**
8
- * リソースごとのシャドー設定
9
- */
10
- export interface ResourceShadowConfig {
11
- sortDefaults: {
12
- field: string;
13
- order: 'ASC' | 'DESC';
14
- };
15
- shadows: {
16
- [fieldName: string]: ShadowFieldConfig;
17
- };
18
- ttl?: {
19
- days: number;
20
- };
21
- }
4
+ export type ShadowFieldType = 'string' | 'number' | 'datetime' | 'boolean' | 'array' | 'object';
22
5
  /**
23
- * shadow.config.jsonの全体構造
6
+ * Shadow field configuration
24
7
  */
25
- export interface ShadowConfig {
26
- $schemaVersion: string;
27
- resources: {
28
- [resourceName: string]: ResourceShadowConfig;
29
- };
8
+ export interface ShadowFieldConfig {
9
+ type: ShadowFieldType;
30
10
  }
31
11
  /**
32
- * シャドー差分計算の結果
12
+ * Result of shadow difference calculation
33
13
  */
34
14
  export interface ShadowDiff {
35
- /** 削除すべきシャドーSKのリスト */
15
+ /** List of shadow SKs to delete */
36
16
  toDelete: string[];
37
- /** 追加すべきシャドーSKのリスト */
17
+ /** List of shadow SKs to add */
38
18
  toAdd: string[];
39
19
  }
40
20
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
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"}
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,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,mCAAmC;IACnC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,gCAAgC;IAChC,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@exabugs/dynamodb-client",
3
- "version": "0.3.5",
3
+ "version": "0.3.7",
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",
@@ -108,14 +108,14 @@
108
108
  },
109
109
  "dependencies": {
110
110
  "@aws-crypto/sha256-js": "5.2.0",
111
- "@aws-sdk/client-dynamodb": "3.929.0",
112
- "@aws-sdk/credential-provider-node": "3.929.0",
113
- "@aws-sdk/lib-dynamodb": "3.929.0",
111
+ "@aws-sdk/client-dynamodb": "3.946.0",
112
+ "@aws-sdk/credential-provider-node": "3.946.0",
113
+ "@aws-sdk/lib-dynamodb": "3.946.0",
114
114
  "@smithy/protocol-http": "5.3.5",
115
115
  "@smithy/signature-v4": "5.3.5",
116
116
  "@smithy/util-utf8": "4.2.0",
117
117
  "aws-jwt-verify": "5.1.1",
118
- "ulid": "3.0.1"
118
+ "ulid": "3.0.2"
119
119
  },
120
120
  "devDependencies": {
121
121
  "@eslint/js": "^9.0.0",
@@ -125,7 +125,7 @@
125
125
  "@typescript-eslint/eslint-plugin": "^8.0.0",
126
126
  "@typescript-eslint/parser": "^8.0.0",
127
127
  "@vitest/coverage-v8": "^2.0.0",
128
- "esbuild": "^0.20.0",
128
+ "esbuild": "^0.27.1",
129
129
  "eslint": "^9.0.0",
130
130
  "globals": "^15.0.0",
131
131
  "prettier": "^3.0.0",
@@ -30,8 +30,8 @@ module "lambda_records" {
30
30
  # Cognito設定
31
31
  cognito_user_pool_id = module.cognito.user_pool_id
32
32
 
33
- # シャドウ設定(base64エンコード)
34
- shadow_config = base64encode(file("${path.root}/../packages/api-types/shadow.config.json"))
33
+ # シャドウ設定(v0.3.x以降は不要、レガシー互換性のため残存)
34
+ # shadow_config = base64encode(file("${path.root}/../packages/api-types/shadow.config.json"))
35
35
 
36
36
  # ログ設定
37
37
  log_retention_days = 7
@@ -56,8 +56,8 @@ module "lambda_records" {
56
56
  # Cognito設定
57
57
  cognito_user_pool_id = module.cognito.user_pool_id
58
58
 
59
- # シャドウ設定(base64エンコード)
60
- shadow_config = base64encode(file("${path.root}/../packages/api-types/shadow.config.json"))
59
+ # シャドウ設定(v0.3.x以降は不要、レガシー互換性のため残存)
60
+ # shadow_config = base64encode(file("${path.root}/../packages/api-types/shadow.config.json"))
61
61
  }
62
62
  ```
63
63
 
@@ -73,7 +73,7 @@ module "lambda_records" {
73
73
  | `dynamodb_table_name` | string | DynamoDBテーブル名 |
74
74
  | `dynamodb_table_arn` | string | DynamoDBテーブルARN |
75
75
  | `cognito_user_pool_id` | string | Cognito User Pool ID(認証用) |
76
- | `shadow_config` | string | シャドウ設定(base64エンコード) |
76
+ | `shadow_config` | string | シャドウ設定(v0.3.x以降は不要) |
77
77
 
78
78
  ### オプション変数
79
79
 
@@ -93,7 +93,7 @@ module "lambda_records" {
93
93
  | `function_url` | Lambda Function URL |
94
94
  | `log_group_name` | CloudWatch Logsロググループ名 |
95
95
  | `role_arn` | Lambda実行ロールARN |
96
- | `shadow_config` | シャドウ設定(base64エンコード) |
96
+ | `shadow_config` | シャドウ設定(v0.3.x以降は不要) |
97
97
 
98
98
  ## 要件
99
99
 
@@ -133,7 +133,8 @@ module "lambda_records" {
133
133
  Terraformでは、シャドウ設定をbase64エンコードして渡します:
134
134
 
135
135
  ```hcl
136
- shadow_config = base64encode(file("${path.root}/../packages/api-types/shadow.config.json"))
136
+ # v0.3.x以降は不要(環境変数で自動設定)
137
+ # shadow_config = base64encode(file("${path.root}/../packages/api-types/shadow.config.json"))
137
138
  ```
138
139
 
139
140
  ## IAMポリシー
@@ -1,54 +0,0 @@
1
- import type { ResourceShadowConfig, ShadowConfig, ShadowFieldConfig } from './types.js';
2
- /**
3
- * shadow.config.jsonファイルから読み込む
4
- *
5
- * @param configPath - 設定ファイルのパス(デフォルト: './shadow.config.json')
6
- * @returns パースされたシャドー設定
7
- * @throws 設定ファイルが存在しない、または不正な形式の場合
8
- */
9
- export declare function loadShadowConfig(configPath?: string): Promise<ShadowConfig>;
10
- /**
11
- * 特定のリソースのシャドー設定を取得する
12
- *
13
- * @param config - シャドー設定全体
14
- * @param resourceName - リソース名(例: 'articles', 'tasks')
15
- * @returns リソースのシャドー設定
16
- * @throws リソースが設定に存在しない場合
17
- */
18
- export declare function getResourceConfig(config: ShadowConfig, resourceName: string): ResourceShadowConfig;
19
- /**
20
- * リソースの全シャドーフィールドを取得する
21
- *
22
- * @param config - シャドー設定全体
23
- * @param resourceName - リソース名
24
- * @returns 全シャドーフィールドの設定
25
- */
26
- export declare function getAllShadowFields(config: ShadowConfig, resourceName: string): Record<string, ShadowFieldConfig>;
27
- /**
28
- * 指定されたフィールドが有効なシャドーフィールドかどうかを検証する
29
- *
30
- * @param config - シャドー設定全体
31
- * @param resourceName - リソース名
32
- * @param fieldName - 検証するフィールド名
33
- * @returns フィールドが有効な場合true
34
- */
35
- export declare function isValidShadowField(config: ShadowConfig, resourceName: string, fieldName: string): boolean;
36
- /**
37
- * リソースのデフォルトソート設定を取得する
38
- *
39
- * @param config - シャドー設定全体
40
- * @param resourceName - リソース名
41
- * @returns デフォルトソート設定
42
- */
43
- export declare function getDefaultSort(config: ShadowConfig, resourceName: string): {
44
- field: string;
45
- order: 'ASC' | 'DESC';
46
- };
47
- /**
48
- * 設定ファイルから環境変数経由でパスを取得する
49
- *
50
- * @param envVar - 環境変数名(デフォルト: 'SHADOW_CONFIG_PATH')
51
- * @returns 設定ファイルのパス
52
- */
53
- export declare function getConfigPathFromEnv(envVar?: string): string;
54
- //# sourceMappingURL=config.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/shadows/config.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAExF;;;;;;GAMG;AACH,wBAAsB,gBAAgB,CACpC,UAAU,GAAE,MAA+B,GAC1C,OAAO,CAAC,YAAY,CAAC,CAuBvB;AAED;;;;;;;GAOG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,GACnB,oBAAoB,CAQtB;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,GACnB,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAGnC;AAED;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,GAChB,OAAO,CAOT;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,MAAM,GACnB;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,KAAK,GAAG,MAAM,CAAA;CAAE,CAG1C;AAED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,GAAE,MAA6B,GAAG,MAAM,CAElF"}
@@ -1,95 +0,0 @@
1
- import { readFile } from 'node:fs/promises';
2
- import { resolve } from 'node:path';
3
- /**
4
- * shadow.config.jsonファイルから読み込む
5
- *
6
- * @param configPath - 設定ファイルのパス(デフォルト: './shadow.config.json')
7
- * @returns パースされたシャドー設定
8
- * @throws 設定ファイルが存在しない、または不正な形式の場合
9
- */
10
- export async function loadShadowConfig(configPath = './shadow.config.json') {
11
- try {
12
- // ファイルシステムから読み込む
13
- const absolutePath = resolve(configPath);
14
- const content = await readFile(absolutePath, 'utf-8');
15
- const config = JSON.parse(content);
16
- // 基本的なバリデーション
17
- if (!config.$schemaVersion) {
18
- throw new Error('Missing $schemaVersion in shadow.config.json');
19
- }
20
- if (!config.resources || typeof config.resources !== 'object') {
21
- throw new Error('Missing or invalid resources in shadow.config.json');
22
- }
23
- return config;
24
- }
25
- catch (error) {
26
- if (error instanceof Error) {
27
- throw new Error(`Failed to load shadow config: ${error.message}`);
28
- }
29
- throw error;
30
- }
31
- }
32
- /**
33
- * 特定のリソースのシャドー設定を取得する
34
- *
35
- * @param config - シャドー設定全体
36
- * @param resourceName - リソース名(例: 'articles', 'tasks')
37
- * @returns リソースのシャドー設定
38
- * @throws リソースが設定に存在しない場合
39
- */
40
- export function getResourceConfig(config, resourceName) {
41
- const resourceConfig = config.resources[resourceName];
42
- if (!resourceConfig) {
43
- throw new Error(`Resource '${resourceName}' not found in shadow config`);
44
- }
45
- return resourceConfig;
46
- }
47
- /**
48
- * リソースの全シャドーフィールドを取得する
49
- *
50
- * @param config - シャドー設定全体
51
- * @param resourceName - リソース名
52
- * @returns 全シャドーフィールドの設定
53
- */
54
- export function getAllShadowFields(config, resourceName) {
55
- const resourceConfig = getResourceConfig(config, resourceName);
56
- return resourceConfig.shadows;
57
- }
58
- /**
59
- * 指定されたフィールドが有効なシャドーフィールドかどうかを検証する
60
- *
61
- * @param config - シャドー設定全体
62
- * @param resourceName - リソース名
63
- * @param fieldName - 検証するフィールド名
64
- * @returns フィールドが有効な場合true
65
- */
66
- export function isValidShadowField(config, resourceName, fieldName) {
67
- try {
68
- const allFields = getAllShadowFields(config, resourceName);
69
- return fieldName in allFields;
70
- }
71
- catch {
72
- return false;
73
- }
74
- }
75
- /**
76
- * リソースのデフォルトソート設定を取得する
77
- *
78
- * @param config - シャドー設定全体
79
- * @param resourceName - リソース名
80
- * @returns デフォルトソート設定
81
- */
82
- export function getDefaultSort(config, resourceName) {
83
- const resourceConfig = getResourceConfig(config, resourceName);
84
- return resourceConfig.sortDefaults;
85
- }
86
- /**
87
- * 設定ファイルから環境変数経由でパスを取得する
88
- *
89
- * @param envVar - 環境変数名(デフォルト: 'SHADOW_CONFIG_PATH')
90
- * @returns 設定ファイルのパス
91
- */
92
- export function getConfigPathFromEnv(envVar = 'SHADOW_CONFIG_PATH') {
93
- return process.env[envVar] || './shadow.config.json';
94
- }
95
- //# sourceMappingURL=config.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/shadows/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAIpC;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,aAAqB,sBAAsB;IAE3C,IAAI,CAAC;QACH,iBAAiB;QACjB,MAAM,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACtD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAiB,CAAC;QAEnD,cAAc;QACd,IAAI,CAAC,MAAM,CAAC,cAAc,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,CAAC;YAC9D,MAAM,IAAI,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACxE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,KAAK,YAAY,KAAK,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,iCAAiC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,iBAAiB,CAC/B,MAAoB,EACpB,YAAoB;IAEpB,MAAM,cAAc,GAAG,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;IAEtD,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,IAAI,KAAK,CAAC,aAAa,YAAY,8BAA8B,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAoB,EACpB,YAAoB;IAEpB,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/D,OAAO,cAAc,CAAC,OAAO,CAAC;AAChC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAoB,EACpB,YAAoB,EACpB,SAAiB;IAEjB,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,kBAAkB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QAC3D,OAAO,SAAS,IAAI,SAAS,CAAC;IAChC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAC5B,MAAoB,EACpB,YAAoB;IAEpB,MAAM,cAAc,GAAG,iBAAiB,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;IAC/D,OAAO,cAAc,CAAC,YAAY,CAAC;AACrC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAAC,SAAiB,oBAAoB;IACxE,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,sBAAsB,CAAC;AACvD,CAAC"}
@@ -1,63 +0,0 @@
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
- * @exabugs/dynamodb-client v0.3.x では、シャドウ設定は環境変数ベースになりました。
23
- * shadows プロパティは後方互換性のために残されていますが、省略可能です。
24
- */
25
- export interface ResourceSchema<T = any> {
26
- /** リソース名(複数形、例: "articles", "tasks") */
27
- resource: string;
28
- /** リソースの型定義(型チェック用) */
29
- type: T;
30
- /** シャドー設定(省略可、v0.3.x では不要) */
31
- shadows?: {
32
- /** ソート可能なフィールドの定義 */
33
- sortableFields: Record<string, ShadowFieldDefinition>;
34
- };
35
- /** デフォルトソート設定(省略時は自動決定) */
36
- sortDefaults?: {
37
- field: string;
38
- order: 'ASC' | 'DESC';
39
- };
40
- /** TTL 設定(省略可) */
41
- ttl?: {
42
- days: number;
43
- };
44
- }
45
- /**
46
- * スキーマレジストリの設定
47
- *
48
- * アプリケーション全体のリソーススキーマを定義する。
49
- * この設定から shadow.config.json を自動生成する。
50
- */
51
- export interface SchemaRegistryConfig {
52
- /** データベース設定 */
53
- database: {
54
- /** タイムスタンプフィールド名 */
55
- timestamps: {
56
- createdAt: string;
57
- updatedAt: string;
58
- };
59
- };
60
- /** リソーススキーマの定義 */
61
- resources: Record<string, ResourceSchema>;
62
- }
63
- //# sourceMappingURL=schema.d.ts.map
@@ -1 +0,0 @@
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;;;;;;;GAOG;AACH,MAAM,WAAW,cAAc,CAAC,CAAC,GAAG,GAAG;IACrC,wCAAwC;IACxC,QAAQ,EAAE,MAAM,CAAC;IAEjB,uBAAuB;IACvB,IAAI,EAAE,CAAC,CAAC;IAER,8BAA8B;IAC9B,OAAO,CAAC,EAAE;QACR,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"}
@@ -1,8 +0,0 @@
1
- /**
2
- * Shadow Config スキーマ定義
3
- *
4
- * TypeScript でリソーススキーマを定義し、shadow.config.json を自動生成するための型定義。
5
- * これにより、型安全性を保ちながら Shadow Config を管理できる。
6
- */
7
- export {};
8
- //# sourceMappingURL=schema.js.map