@ftschopp/dynatable-core 1.0.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 (197) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/README.md +17 -0
  3. package/dist/builders/batch-get/create-batch-get-builder.d.ts +18 -0
  4. package/dist/builders/batch-get/create-batch-get-builder.d.ts.map +1 -0
  5. package/dist/builders/batch-get/create-batch-get-builder.js +71 -0
  6. package/dist/builders/batch-get/index.d.ts +3 -0
  7. package/dist/builders/batch-get/index.d.ts.map +1 -0
  8. package/dist/builders/batch-get/index.js +18 -0
  9. package/dist/builders/batch-get/types.d.ts +25 -0
  10. package/dist/builders/batch-get/types.d.ts.map +1 -0
  11. package/dist/builders/batch-get/types.js +2 -0
  12. package/dist/builders/batch-write/create-batch-write-builder.d.ts +12 -0
  13. package/dist/builders/batch-write/create-batch-write-builder.d.ts.map +1 -0
  14. package/dist/builders/batch-write/create-batch-write-builder.js +35 -0
  15. package/dist/builders/batch-write/index.d.ts +3 -0
  16. package/dist/builders/batch-write/index.d.ts.map +1 -0
  17. package/dist/builders/batch-write/index.js +18 -0
  18. package/dist/builders/batch-write/types.d.ts +30 -0
  19. package/dist/builders/batch-write/types.d.ts.map +1 -0
  20. package/dist/builders/batch-write/types.js +2 -0
  21. package/dist/builders/delete/create-delete-builder.d.ts +9 -0
  22. package/dist/builders/delete/create-delete-builder.d.ts.map +1 -0
  23. package/dist/builders/delete/create-delete-builder.js +72 -0
  24. package/dist/builders/delete/index.d.ts +3 -0
  25. package/dist/builders/delete/index.d.ts.map +1 -0
  26. package/dist/builders/delete/index.js +18 -0
  27. package/dist/builders/delete/types.d.ts +11 -0
  28. package/dist/builders/delete/types.d.ts.map +1 -0
  29. package/dist/builders/delete/types.js +2 -0
  30. package/dist/builders/get/create-get-builder.d.ts +12 -0
  31. package/dist/builders/get/create-get-builder.d.ts.map +1 -0
  32. package/dist/builders/get/create-get-builder.js +95 -0
  33. package/dist/builders/get/index.d.ts +3 -0
  34. package/dist/builders/get/index.d.ts.map +1 -0
  35. package/dist/builders/get/index.js +18 -0
  36. package/dist/builders/get/types.d.ts +28 -0
  37. package/dist/builders/get/types.d.ts.map +1 -0
  38. package/dist/builders/get/types.js +2 -0
  39. package/dist/builders/index.d.ts +12 -0
  40. package/dist/builders/index.d.ts.map +1 -0
  41. package/dist/builders/index.js +29 -0
  42. package/dist/builders/put/create-put-builder.d.ts +9 -0
  43. package/dist/builders/put/create-put-builder.d.ts.map +1 -0
  44. package/dist/builders/put/create-put-builder.js +104 -0
  45. package/dist/builders/put/index.d.ts +3 -0
  46. package/dist/builders/put/index.d.ts.map +1 -0
  47. package/dist/builders/put/index.js +18 -0
  48. package/dist/builders/put/types.d.ts +17 -0
  49. package/dist/builders/put/types.d.ts.map +1 -0
  50. package/dist/builders/put/types.js +2 -0
  51. package/dist/builders/query/create-query-builder.d.ts +9 -0
  52. package/dist/builders/query/create-query-builder.d.ts.map +1 -0
  53. package/dist/builders/query/create-query-builder.js +283 -0
  54. package/dist/builders/query/index.d.ts +3 -0
  55. package/dist/builders/query/index.d.ts.map +1 -0
  56. package/dist/builders/query/index.js +18 -0
  57. package/dist/builders/query/types.d.ts +79 -0
  58. package/dist/builders/query/types.d.ts.map +1 -0
  59. package/dist/builders/query/types.js +2 -0
  60. package/dist/builders/scan/create-scan-builder.d.ts +12 -0
  61. package/dist/builders/scan/create-scan-builder.d.ts.map +1 -0
  62. package/dist/builders/scan/create-scan-builder.js +103 -0
  63. package/dist/builders/scan/index.d.ts +3 -0
  64. package/dist/builders/scan/index.d.ts.map +1 -0
  65. package/dist/builders/scan/index.js +18 -0
  66. package/dist/builders/scan/types.d.ts +43 -0
  67. package/dist/builders/scan/types.d.ts.map +1 -0
  68. package/dist/builders/scan/types.js +2 -0
  69. package/dist/builders/shared/conditions.d.ts +18 -0
  70. package/dist/builders/shared/conditions.d.ts.map +1 -0
  71. package/dist/builders/shared/conditions.js +48 -0
  72. package/dist/builders/shared/index.d.ts +4 -0
  73. package/dist/builders/shared/index.d.ts.map +1 -0
  74. package/dist/builders/shared/index.js +19 -0
  75. package/dist/builders/shared/operators.d.ts +12 -0
  76. package/dist/builders/shared/operators.d.ts.map +1 -0
  77. package/dist/builders/shared/operators.js +197 -0
  78. package/dist/builders/shared/types.d.ts +77 -0
  79. package/dist/builders/shared/types.d.ts.map +1 -0
  80. package/dist/builders/shared/types.js +6 -0
  81. package/dist/builders/transact-get/create-transact-get-builder.d.ts +18 -0
  82. package/dist/builders/transact-get/create-transact-get-builder.d.ts.map +1 -0
  83. package/dist/builders/transact-get/create-transact-get-builder.js +60 -0
  84. package/dist/builders/transact-get/index.d.ts +3 -0
  85. package/dist/builders/transact-get/index.d.ts.map +1 -0
  86. package/dist/builders/transact-get/index.js +18 -0
  87. package/dist/builders/transact-get/types.d.ts +28 -0
  88. package/dist/builders/transact-get/types.d.ts.map +1 -0
  89. package/dist/builders/transact-get/types.js +2 -0
  90. package/dist/builders/transact-write/create-transact-write-builder.d.ts +18 -0
  91. package/dist/builders/transact-write/create-transact-write-builder.d.ts.map +1 -0
  92. package/dist/builders/transact-write/create-transact-write-builder.js +97 -0
  93. package/dist/builders/transact-write/index.d.ts +3 -0
  94. package/dist/builders/transact-write/index.d.ts.map +1 -0
  95. package/dist/builders/transact-write/index.js +18 -0
  96. package/dist/builders/transact-write/types.d.ts +34 -0
  97. package/dist/builders/transact-write/types.d.ts.map +1 -0
  98. package/dist/builders/transact-write/types.js +2 -0
  99. package/dist/builders/update/create-update-builder.d.ts +14 -0
  100. package/dist/builders/update/create-update-builder.d.ts.map +1 -0
  101. package/dist/builders/update/create-update-builder.js +180 -0
  102. package/dist/builders/update/index.d.ts +3 -0
  103. package/dist/builders/update/index.d.ts.map +1 -0
  104. package/dist/builders/update/index.js +18 -0
  105. package/dist/builders/update/types.d.ts +35 -0
  106. package/dist/builders/update/types.d.ts.map +1 -0
  107. package/dist/builders/update/types.js +2 -0
  108. package/dist/core/types.d.ts +224 -0
  109. package/dist/core/types.d.ts.map +1 -0
  110. package/dist/core/types.js +3 -0
  111. package/dist/entity.d.ts +73 -0
  112. package/dist/entity.d.ts.map +1 -0
  113. package/dist/entity.js +161 -0
  114. package/dist/index.d.ts +4 -0
  115. package/dist/index.d.ts.map +1 -0
  116. package/dist/index.js +20 -0
  117. package/dist/table.d.ts +70 -0
  118. package/dist/table.d.ts.map +1 -0
  119. package/dist/table.js +69 -0
  120. package/dist/utils/dynamodb-logger.d.ts +118 -0
  121. package/dist/utils/dynamodb-logger.d.ts.map +1 -0
  122. package/dist/utils/dynamodb-logger.js +125 -0
  123. package/dist/utils/model-utils.d.ts +24 -0
  124. package/dist/utils/model-utils.d.ts.map +1 -0
  125. package/dist/utils/model-utils.js +88 -0
  126. package/dist/utils/zod-utils.d.ts +13 -0
  127. package/dist/utils/zod-utils.d.ts.map +1 -0
  128. package/dist/utils/zod-utils.js +35 -0
  129. package/eslint.config.mjs +4 -0
  130. package/jest.config.js +11 -0
  131. package/package.json +36 -0
  132. package/src/builders/README.md +272 -0
  133. package/src/builders/batch-get/README.md +98 -0
  134. package/src/builders/batch-get/create-batch-get-builder.test.ts +165 -0
  135. package/src/builders/batch-get/create-batch-get-builder.ts +106 -0
  136. package/src/builders/batch-get/index.ts +2 -0
  137. package/src/builders/batch-get/types.ts +29 -0
  138. package/src/builders/batch-write/README.md +204 -0
  139. package/src/builders/batch-write/create-batch-write-builder.test.ts +173 -0
  140. package/src/builders/batch-write/create-batch-write-builder.ts +49 -0
  141. package/src/builders/batch-write/index.ts +2 -0
  142. package/src/builders/batch-write/types.ts +33 -0
  143. package/src/builders/delete/create-delete-builder.test.ts +294 -0
  144. package/src/builders/delete/create-delete-builder.ts +100 -0
  145. package/src/builders/delete/index.ts +2 -0
  146. package/src/builders/delete/types.ts +11 -0
  147. package/src/builders/get/create-get-builder.test.ts +272 -0
  148. package/src/builders/get/create-get-builder.ts +140 -0
  149. package/src/builders/get/index.ts +2 -0
  150. package/src/builders/get/types.ts +30 -0
  151. package/src/builders/index.ts +14 -0
  152. package/src/builders/put/create-put-builder.test.ts +213 -0
  153. package/src/builders/put/create-put-builder.ts +151 -0
  154. package/src/builders/put/index.ts +2 -0
  155. package/src/builders/put/types.ts +18 -0
  156. package/src/builders/query/create-query-builder.test.ts +230 -0
  157. package/src/builders/query/create-query-builder.ts +353 -0
  158. package/src/builders/query/index.ts +2 -0
  159. package/src/builders/query/types.ts +95 -0
  160. package/src/builders/scan/create-scan-builder.test.ts +260 -0
  161. package/src/builders/scan/create-scan-builder.ts +217 -0
  162. package/src/builders/scan/index.ts +2 -0
  163. package/src/builders/scan/types.ts +49 -0
  164. package/src/builders/shared/conditions.ts +58 -0
  165. package/src/builders/shared/index.ts +3 -0
  166. package/src/builders/shared/operators.test.ts +270 -0
  167. package/src/builders/shared/operators.ts +200 -0
  168. package/src/builders/shared/types.ts +100 -0
  169. package/src/builders/transact-get/README.md +167 -0
  170. package/src/builders/transact-get/create-transact-get-builder.test.ts +239 -0
  171. package/src/builders/transact-get/create-transact-get-builder.ts +67 -0
  172. package/src/builders/transact-get/index.ts +2 -0
  173. package/src/builders/transact-get/types.ts +31 -0
  174. package/src/builders/transact-write/README.md +166 -0
  175. package/src/builders/transact-write/create-transact-write-builder.test.ts +288 -0
  176. package/src/builders/transact-write/create-transact-write-builder.ts +118 -0
  177. package/src/builders/transact-write/index.ts +2 -0
  178. package/src/builders/transact-write/types.ts +33 -0
  179. package/src/builders/update/create-update-builder.test.ts +333 -0
  180. package/src/builders/update/create-update-builder.ts +284 -0
  181. package/src/builders/update/index.ts +2 -0
  182. package/src/builders/update/types.ts +42 -0
  183. package/src/core/types.test.ts +506 -0
  184. package/src/core/types.ts +290 -0
  185. package/src/entity.ts +337 -0
  186. package/src/index.ts +22 -0
  187. package/src/table.ts +109 -0
  188. package/src/utils/dynamodb-logger.test.ts +246 -0
  189. package/src/utils/dynamodb-logger.ts +175 -0
  190. package/src/utils/model-utils.test.ts +232 -0
  191. package/src/utils/model-utils.ts +101 -0
  192. package/src/utils/zod-utils.test.ts +272 -0
  193. package/src/utils/zod-utils.ts +36 -0
  194. package/tests/integration/instagram-clone.integration.test.ts +966 -0
  195. package/tests/integration/pagination-timestamps.integration.test.ts +375 -0
  196. package/tests/integration/transactions.integration.test.ts +529 -0
  197. package/tsconfig.json +12 -0
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,12 @@
1
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
+ import { Condition } from '../shared';
3
+ import { ScanBuilder } from './types';
4
+ import { DynamoDBLogger } from '../../utils/dynamodb-logger';
5
+ /**
6
+ * Creates a ScanBuilder for scanning a table or index.
7
+ */
8
+ export declare function createScanBuilder<Model>(tableName: string, client: DynamoDBClient, filters?: Condition[], projectionAttrs?: (keyof Model)[], limitValue?: number, isConsistentRead?: boolean, indexName?: string, exclusiveStartKey?: Record<string, any>, segmentConfig?: {
9
+ segment: number;
10
+ totalSegments: number;
11
+ }, logger?: DynamoDBLogger): ScanBuilder<Model>;
12
+ //# sourceMappingURL=create-scan-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-scan-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/scan/create-scan-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAgC,SAAS,EAAmB,MAAM,WAAW,CAAC;AACrF,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EACrC,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,cAAc,EACtB,OAAO,GAAE,SAAS,EAAO,EACzB,eAAe,GAAE,CAAC,MAAM,KAAK,CAAC,EAAO,EACrC,UAAU,CAAC,EAAE,MAAM,EACnB,gBAAgB,UAAQ,EACxB,SAAS,CAAC,EAAE,MAAM,EAClB,iBAAiB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACvC,aAAa,CAAC,EAAE;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,aAAa,EAAE,MAAM,CAAA;CAAE,EAC1D,MAAM,CAAC,EAAE,cAAc,GACtB,WAAW,CAAC,KAAK,CAAC,CAmMpB"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createScanBuilder = createScanBuilder;
4
+ const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
5
+ const shared_1 = require("../shared");
6
+ /**
7
+ * Creates a ScanBuilder for scanning a table or index.
8
+ */
9
+ function createScanBuilder(tableName, client, filters = [], projectionAttrs = [], limitValue, isConsistentRead = false, indexName, exclusiveStartKey, segmentConfig, logger) {
10
+ const build = () => ({
11
+ filter(fn) {
12
+ const attrs = new Proxy({}, {
13
+ get(_, prop) {
14
+ return { name: prop };
15
+ },
16
+ });
17
+ const opBuilder = (0, shared_1.createOpBuilder)();
18
+ const condition = fn(attrs, opBuilder);
19
+ return createScanBuilder(tableName, client, [...filters, condition], projectionAttrs, limitValue, isConsistentRead, indexName, exclusiveStartKey, segmentConfig, logger);
20
+ },
21
+ select(attrs) {
22
+ return createScanBuilder(tableName, client, filters, attrs, limitValue, isConsistentRead, indexName, exclusiveStartKey, segmentConfig, logger);
23
+ },
24
+ limit(count) {
25
+ return createScanBuilder(tableName, client, filters, projectionAttrs, count, isConsistentRead, indexName, exclusiveStartKey, segmentConfig, logger);
26
+ },
27
+ consistentRead() {
28
+ return createScanBuilder(tableName, client, filters, projectionAttrs, limitValue, true, indexName, exclusiveStartKey, segmentConfig, logger);
29
+ },
30
+ usingIndex(index) {
31
+ return createScanBuilder(tableName, client, filters, projectionAttrs, limitValue, isConsistentRead, index, exclusiveStartKey, segmentConfig, logger);
32
+ },
33
+ startFrom(key) {
34
+ return createScanBuilder(tableName, client, filters, projectionAttrs, limitValue, isConsistentRead, indexName, key, segmentConfig, logger);
35
+ },
36
+ segment(segmentNumber, totalSegments) {
37
+ return createScanBuilder(tableName, client, filters, projectionAttrs, limitValue, isConsistentRead, indexName, exclusiveStartKey, { segment: segmentNumber, totalSegments }, logger);
38
+ },
39
+ dbParams() {
40
+ let filterExpression = '';
41
+ let expressionAttributeNames = {};
42
+ let expressionAttributeValues = {};
43
+ // Build FilterExpression from filters
44
+ if (filters.length > 0) {
45
+ const combinedFilter = filters.length === 1 && filters[0]
46
+ ? filters[0]
47
+ : {
48
+ expression: '',
49
+ operator: 'AND',
50
+ children: filters,
51
+ };
52
+ const result = (0, shared_1.buildExpression)(combinedFilter);
53
+ filterExpression = result.expression;
54
+ expressionAttributeNames = result.names;
55
+ expressionAttributeValues = result.values;
56
+ }
57
+ // Build ProjectionExpression
58
+ let projectionExpression = '';
59
+ if (projectionAttrs.length > 0) {
60
+ projectionExpression = projectionAttrs.map((attr) => String(attr)).join(', ');
61
+ }
62
+ const params = {
63
+ TableName: tableName,
64
+ };
65
+ if (filterExpression) {
66
+ params.FilterExpression = filterExpression;
67
+ }
68
+ if (Object.keys(expressionAttributeNames).length > 0) {
69
+ params.ExpressionAttributeNames = expressionAttributeNames;
70
+ }
71
+ if (Object.keys(expressionAttributeValues).length > 0) {
72
+ params.ExpressionAttributeValues = expressionAttributeValues;
73
+ }
74
+ if (projectionExpression) {
75
+ params.ProjectionExpression = projectionExpression;
76
+ }
77
+ if (limitValue !== undefined) {
78
+ params.Limit = limitValue;
79
+ }
80
+ if (isConsistentRead) {
81
+ params.ConsistentRead = true;
82
+ }
83
+ if (indexName) {
84
+ params.IndexName = indexName;
85
+ }
86
+ if (exclusiveStartKey) {
87
+ params.ExclusiveStartKey = exclusiveStartKey;
88
+ }
89
+ if (segmentConfig) {
90
+ params.Segment = segmentConfig.segment;
91
+ params.TotalSegments = segmentConfig.totalSegments;
92
+ }
93
+ return params;
94
+ },
95
+ async execute() {
96
+ const params = build().dbParams();
97
+ const response = await client.send(new lib_dynamodb_1.ScanCommand(params));
98
+ logger?.log('ScanCommand', params, response);
99
+ return (response.Items || []);
100
+ },
101
+ });
102
+ return build();
103
+ }
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+ export * from './create-scan-builder';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builders/scan/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,uBAAuB,CAAC"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./create-scan-builder"), exports);
@@ -0,0 +1,43 @@
1
+ import { ExecutableBuilder, AttrBuilder, OpBuilder, Condition } from '../shared';
2
+ /**
3
+ * Builder for DynamoDB Scan operations.
4
+ * Scans the entire table or index without requiring key conditions.
5
+ */
6
+ export interface ScanBuilder<Model> extends ExecutableBuilder<Model[]> {
7
+ /**
8
+ * Adds a filter expression to the scan.
9
+ * Returns a new immutable builder.
10
+ */
11
+ filter(fn: (attr: AttrBuilder<Model>, op: OpBuilder) => Condition): ScanBuilder<Model>;
12
+ /**
13
+ * Adds a projection expression to only return specific attributes.
14
+ * Returns a new immutable builder.
15
+ */
16
+ select(attrs: (keyof Model)[]): ScanBuilder<Model>;
17
+ /**
18
+ * Sets the maximum number of items to evaluate (not necessarily return).
19
+ * Returns a new immutable builder.
20
+ */
21
+ limit(count: number): ScanBuilder<Model>;
22
+ /**
23
+ * Enables consistent read (eventual consistency is default).
24
+ * Returns a new immutable builder.
25
+ */
26
+ consistentRead(): ScanBuilder<Model>;
27
+ /**
28
+ * Specifies an index to scan.
29
+ * Returns a new immutable builder.
30
+ */
31
+ usingIndex(indexName: string): ScanBuilder<Model>;
32
+ /**
33
+ * Sets the starting position for the scan (pagination).
34
+ * Returns a new immutable builder.
35
+ */
36
+ startFrom(exclusiveStartKey: Record<string, any>): ScanBuilder<Model>;
37
+ /**
38
+ * Enables parallel scan by specifying segment and total segments.
39
+ * Returns a new immutable builder.
40
+ */
41
+ segment(segmentNumber: number, totalSegments: number): ScanBuilder<Model>;
42
+ }
43
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/builders/scan/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAEjF;;;GAGG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,CAAE,SAAQ,iBAAiB,CAAC,KAAK,EAAE,CAAC;IACpE;;;OAGG;IACH,MAAM,CAAC,EAAE,EAAE,CAAC,IAAI,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,SAAS,KAAK,SAAS,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEvF;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEnD;;;OAGG;IACH,KAAK,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEzC;;;OAGG;IACH,cAAc,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC;IAErC;;;OAGG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAElD;;;OAGG;IACH,SAAS,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;IAEtE;;;OAGG;IACH,OAAO,CAAC,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC;CAC3E"}
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,18 @@
1
+ import { Condition } from './types';
2
+ /**
3
+ * Builds a DynamoDB expression from a condition tree
4
+ */
5
+ export declare function buildExpression(condition: Condition): {
6
+ expression: string;
7
+ names: Record<string, string>;
8
+ values: Record<string, any>;
9
+ };
10
+ /**
11
+ * Combines multiple conditions into a DynamoDB-compatible expression object.
12
+ */
13
+ export declare function buildConditionExpr(conditions: Condition[]): {
14
+ ConditionExpression: string | undefined;
15
+ ExpressionAttributeNames: any;
16
+ ExpressionAttributeValues: any;
17
+ };
18
+ //# sourceMappingURL=conditions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conditions.d.ts","sourceRoot":"","sources":["../../../src/builders/shared/conditions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;;GAEG;AACH,wBAAgB,eAAe,CAAC,SAAS,EAAE,SAAS,GAAG;IACrD,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CAC7B,CAiCA;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,UAAU,EAAE,SAAS,EAAE;;;;EAUzD"}
@@ -0,0 +1,48 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.buildExpression = buildExpression;
4
+ exports.buildConditionExpr = buildConditionExpr;
5
+ /**
6
+ * Builds a DynamoDB expression from a condition tree
7
+ */
8
+ function buildExpression(condition) {
9
+ const names = {};
10
+ const values = {};
11
+ function processCondition(cond) {
12
+ // If it's a combinator (AND/OR)
13
+ if (cond.operator && cond.children) {
14
+ const childExpressions = cond.children
15
+ .map((child) => processCondition(child))
16
+ .filter((expr) => expr.length > 0);
17
+ if (childExpressions.length === 0)
18
+ return '';
19
+ if (childExpressions.length === 1)
20
+ return childExpressions[0];
21
+ const combined = childExpressions.map((expr) => `(${expr})`).join(` ${cond.operator} `);
22
+ return cond.isNegated ? `NOT (${combined})` : combined;
23
+ }
24
+ // It's a leaf condition
25
+ if (cond.names) {
26
+ Object.assign(names, cond.names);
27
+ }
28
+ if (cond.values) {
29
+ Object.assign(values, cond.values);
30
+ }
31
+ return cond.isNegated ? `NOT (${cond.expression})` : cond.expression;
32
+ }
33
+ const expression = processCondition(condition);
34
+ return { expression, names, values };
35
+ }
36
+ /**
37
+ * Combines multiple conditions into a DynamoDB-compatible expression object.
38
+ */
39
+ function buildConditionExpr(conditions) {
40
+ const expression = conditions.map((c) => c.expression).join(' AND ');
41
+ const names = Object.assign({}, ...conditions.map((c) => c.names ?? {}));
42
+ const values = Object.assign({}, ...conditions.map((c) => c.values ?? {}));
43
+ return {
44
+ ConditionExpression: expression || undefined,
45
+ ExpressionAttributeNames: Object.keys(names).length ? names : undefined,
46
+ ExpressionAttributeValues: Object.keys(values).length ? values : undefined,
47
+ };
48
+ }
@@ -0,0 +1,4 @@
1
+ export * from './types';
2
+ export * from './operators';
3
+ export * from './conditions';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/builders/shared/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./operators"), exports);
19
+ __exportStar(require("./conditions"), exports);
@@ -0,0 +1,12 @@
1
+ import { OpBuilder } from './types';
2
+ /**
3
+ * Creates a scoped OpBuilder with its own counter for unique value placeholders.
4
+ * Each builder instance maintains isolated state to prevent naming conflicts.
5
+ */
6
+ export declare function createOpBuilder(): OpBuilder;
7
+ /**
8
+ * @deprecated Use createOpBuilder() instead to avoid global state.
9
+ * This export is maintained for backward compatibility.
10
+ */
11
+ export declare const opBuilder: OpBuilder;
12
+ //# sourceMappingURL=operators.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"operators.d.ts","sourceRoot":"","sources":["../../../src/builders/shared/operators.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAEpC;;;GAGG;AACH,wBAAgB,eAAe,IAAI,SAAS,CA2L3C;AAED;;;GAGG;AACH,eAAO,MAAM,SAAS,EAAE,SAA6B,CAAC"}
@@ -0,0 +1,197 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.opBuilder = void 0;
4
+ exports.createOpBuilder = createOpBuilder;
5
+ /**
6
+ * Creates a scoped OpBuilder with its own counter for unique value placeholders.
7
+ * Each builder instance maintains isolated state to prevent naming conflicts.
8
+ */
9
+ function createOpBuilder() {
10
+ let valueCounter = 0;
11
+ /**
12
+ * Generates a unique value placeholder name within this builder's scope
13
+ */
14
+ function getUniqueValueName(baseName) {
15
+ return `${baseName}_${valueCounter++}`;
16
+ }
17
+ return {
18
+ eq: (attr, value) => {
19
+ const valueName = getUniqueValueName(attr.name);
20
+ return {
21
+ expression: `#${attr.name} = :${valueName}`,
22
+ names: { [`#${attr.name}`]: attr.name },
23
+ values: { [`:${valueName}`]: value },
24
+ };
25
+ },
26
+ ne: (attr, value) => {
27
+ const valueName = getUniqueValueName(attr.name);
28
+ return {
29
+ expression: `#${attr.name} <> :${valueName}`,
30
+ names: { [`#${attr.name}`]: attr.name },
31
+ values: { [`:${valueName}`]: value },
32
+ };
33
+ },
34
+ lt: (attr, value) => {
35
+ const valueName = getUniqueValueName(attr.name);
36
+ return {
37
+ expression: `#${attr.name} < :${valueName}`,
38
+ names: { [`#${attr.name}`]: attr.name },
39
+ values: { [`:${valueName}`]: value },
40
+ };
41
+ },
42
+ lte: (attr, value) => {
43
+ const valueName = getUniqueValueName(attr.name);
44
+ return {
45
+ expression: `#${attr.name} <= :${valueName}`,
46
+ names: { [`#${attr.name}`]: attr.name },
47
+ values: { [`:${valueName}`]: value },
48
+ };
49
+ },
50
+ gt: (attr, value) => {
51
+ const valueName = getUniqueValueName(attr.name);
52
+ return {
53
+ expression: `#${attr.name} > :${valueName}`,
54
+ names: { [`#${attr.name}`]: attr.name },
55
+ values: { [`:${valueName}`]: value },
56
+ };
57
+ },
58
+ gte: (attr, value) => {
59
+ const valueName = getUniqueValueName(attr.name);
60
+ return {
61
+ expression: `#${attr.name} >= :${valueName}`,
62
+ names: { [`#${attr.name}`]: attr.name },
63
+ values: { [`:${valueName}`]: value },
64
+ };
65
+ },
66
+ between: (attr, low, high) => {
67
+ const lowName = getUniqueValueName(`${attr.name}_low`);
68
+ const highName = getUniqueValueName(`${attr.name}_high`);
69
+ return {
70
+ expression: `#${attr.name} BETWEEN :${lowName} AND :${highName}`,
71
+ names: { [`#${attr.name}`]: attr.name },
72
+ values: {
73
+ [`:${lowName}`]: low,
74
+ [`:${highName}`]: high,
75
+ },
76
+ };
77
+ },
78
+ beginsWith: (attr, value) => {
79
+ const valueName = getUniqueValueName(attr.name);
80
+ return {
81
+ expression: `begins_with(#${attr.name}, :${valueName})`,
82
+ names: { [`#${attr.name}`]: attr.name },
83
+ values: { [`:${valueName}`]: value },
84
+ };
85
+ },
86
+ contains: (attr, value) => {
87
+ const valueName = getUniqueValueName(attr.name);
88
+ return {
89
+ expression: `contains(#${attr.name}, :${valueName})`,
90
+ names: { [`#${attr.name}`]: attr.name },
91
+ values: { [`:${valueName}`]: value },
92
+ };
93
+ },
94
+ exists: (attr) => ({
95
+ expression: `attribute_exists(#${attr.name})`,
96
+ names: { [`#${attr.name}`]: attr.name },
97
+ }),
98
+ notExists: (attr) => ({
99
+ expression: `attribute_not_exists(#${attr.name})`,
100
+ names: { [`#${attr.name}`]: attr.name },
101
+ }),
102
+ attributeType: (attr, type) => {
103
+ const valueName = getUniqueValueName(`${attr.name}_type`);
104
+ return {
105
+ expression: `attribute_type(#${attr.name}, :${valueName})`,
106
+ names: { [`#${attr.name}`]: attr.name },
107
+ values: { [`:${valueName}`]: type },
108
+ };
109
+ },
110
+ in: (attr, values) => {
111
+ const valueNames = values.map((_, i) => getUniqueValueName(`${attr.name}_in${i}`));
112
+ const placeholders = valueNames.map((name) => `:${name}`).join(', ');
113
+ const valuesObj = {};
114
+ valueNames.forEach((name, i) => {
115
+ valuesObj[`:${name}`] = values[i];
116
+ });
117
+ return {
118
+ expression: `#${attr.name} IN (${placeholders})`,
119
+ names: { [`#${attr.name}`]: attr.name },
120
+ values: valuesObj,
121
+ };
122
+ },
123
+ size: (attr) => {
124
+ const sizeExpr = `size(#${attr.name})`;
125
+ const names = { [`#${attr.name}`]: attr.name };
126
+ return {
127
+ eq: (value) => {
128
+ const valueName = getUniqueValueName(`${attr.name}_size`);
129
+ return {
130
+ expression: `${sizeExpr} = :${valueName}`,
131
+ names,
132
+ values: { [`:${valueName}`]: value },
133
+ };
134
+ },
135
+ ne: (value) => {
136
+ const valueName = getUniqueValueName(`${attr.name}_size`);
137
+ return {
138
+ expression: `${sizeExpr} <> :${valueName}`,
139
+ names,
140
+ values: { [`:${valueName}`]: value },
141
+ };
142
+ },
143
+ lt: (value) => {
144
+ const valueName = getUniqueValueName(`${attr.name}_size`);
145
+ return {
146
+ expression: `${sizeExpr} < :${valueName}`,
147
+ names,
148
+ values: { [`:${valueName}`]: value },
149
+ };
150
+ },
151
+ lte: (value) => {
152
+ const valueName = getUniqueValueName(`${attr.name}_size`);
153
+ return {
154
+ expression: `${sizeExpr} <= :${valueName}`,
155
+ names,
156
+ values: { [`:${valueName}`]: value },
157
+ };
158
+ },
159
+ gt: (value) => {
160
+ const valueName = getUniqueValueName(`${attr.name}_size`);
161
+ return {
162
+ expression: `${sizeExpr} > :${valueName}`,
163
+ names,
164
+ values: { [`:${valueName}`]: value },
165
+ };
166
+ },
167
+ gte: (value) => {
168
+ const valueName = getUniqueValueName(`${attr.name}_size`);
169
+ return {
170
+ expression: `${sizeExpr} >= :${valueName}`,
171
+ names,
172
+ values: { [`:${valueName}`]: value },
173
+ };
174
+ },
175
+ };
176
+ },
177
+ and: (...conditions) => ({
178
+ expression: '',
179
+ operator: 'AND',
180
+ children: conditions,
181
+ }),
182
+ or: (...conditions) => ({
183
+ expression: '',
184
+ operator: 'OR',
185
+ children: conditions,
186
+ }),
187
+ not: (condition) => ({
188
+ ...condition,
189
+ isNegated: true,
190
+ }),
191
+ };
192
+ }
193
+ /**
194
+ * @deprecated Use createOpBuilder() instead to avoid global state.
195
+ * This export is maintained for backward compatibility.
196
+ */
197
+ exports.opBuilder = createOpBuilder();
@@ -0,0 +1,77 @@
1
+ /**
2
+ * Shared types for DynamoDB builders
3
+ */
4
+ /**
5
+ * Condition object for DynamoDB expressions
6
+ */
7
+ export type Condition = {
8
+ expression: string;
9
+ names?: Record<string, string>;
10
+ values?: Record<string, any>;
11
+ operator?: 'AND' | 'OR';
12
+ isNegated?: boolean;
13
+ children?: Condition[];
14
+ };
15
+ /**
16
+ * Attribute reference for building expressions
17
+ */
18
+ export type AttrRef = {
19
+ name: string;
20
+ path?: string;
21
+ };
22
+ /**
23
+ * Type-safe attribute builder for models
24
+ * Note: All properties are required (non-optional) to ensure type safety in expressions
25
+ */
26
+ export type AttrBuilder<Model> = {
27
+ [K in keyof Model]-?: AttrRef;
28
+ };
29
+ /**
30
+ * Available operators for building conditions
31
+ */
32
+ export type OpBuilder = {
33
+ eq: (attr: AttrRef, value: any) => Condition;
34
+ ne: (attr: AttrRef, value: any) => Condition;
35
+ lt: (attr: AttrRef, value: any) => Condition;
36
+ lte: (attr: AttrRef, value: any) => Condition;
37
+ gt: (attr: AttrRef, value: any) => Condition;
38
+ gte: (attr: AttrRef, value: any) => Condition;
39
+ between: (attr: AttrRef, low: any, high: any) => Condition;
40
+ beginsWith: (attr: AttrRef, value: string) => Condition;
41
+ contains: (attr: AttrRef, value: any) => Condition;
42
+ exists: (attr: AttrRef) => Condition;
43
+ notExists: (attr: AttrRef) => Condition;
44
+ attributeType: (attr: AttrRef, type: 'S' | 'N' | 'B' | 'SS' | 'NS' | 'BS' | 'M' | 'L' | 'NULL' | 'BOOL') => Condition;
45
+ in: (attr: AttrRef, values: any[]) => Condition;
46
+ size: (attr: AttrRef) => SizeRef;
47
+ and: (...conditions: Condition[]) => Condition;
48
+ or: (...conditions: Condition[]) => Condition;
49
+ not: (condition: Condition) => Condition;
50
+ };
51
+ /**
52
+ * Reference to the size() function result for comparisons
53
+ */
54
+ export type SizeRef = {
55
+ eq: (value: number) => Condition;
56
+ ne: (value: number) => Condition;
57
+ lt: (value: number) => Condition;
58
+ lte: (value: number) => Condition;
59
+ gt: (value: number) => Condition;
60
+ gte: (value: number) => Condition;
61
+ };
62
+ /**
63
+ * Base interface for executable builders
64
+ */
65
+ export interface ExecutableBuilder<Result> {
66
+ dbParams(): any;
67
+ execute(): Promise<Result>;
68
+ }
69
+ /**
70
+ * Base interface for operation builders with conditions
71
+ */
72
+ export interface OperationBuilder<Model> {
73
+ where(fn: (attr: AttrBuilder<Model>, op: OpBuilder) => Condition): this;
74
+ dbParams(): any;
75
+ execute(): Promise<Model>;
76
+ }
77
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/builders/shared/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ /* eslint-disable @typescript-eslint/no-explicit-any */
3
+ /**
4
+ * Shared types for DynamoDB builders
5
+ */
6
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,18 @@
1
+ import { DynamoDBClient } from '@aws-sdk/client-dynamodb';
2
+ import { TransactGetBuilder } from './types';
3
+ /**
4
+ * Creates a new TransactGet builder
5
+ *
6
+ * @param client - DynamoDB client instance
7
+ * @returns A TransactGetBuilder
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * const [user, photo] = await createTransactGetBuilder(client)
12
+ * .addGet(getUserParams)
13
+ * .addGet(getPhotoParams)
14
+ * .execute();
15
+ * ```
16
+ */
17
+ export declare const createTransactGetBuilder: (client: DynamoDBClient) => TransactGetBuilder;
18
+ //# sourceMappingURL=create-transact-get-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-transact-get-builder.d.ts","sourceRoot":"","sources":["../../../src/builders/transact-get/create-transact-get-builder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,OAAO,EAAE,kBAAkB,EAAoB,MAAM,SAAS,CAAC;AA8C/D;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,wBAAwB,GAAI,QAAQ,cAAc,KAAG,kBAGjE,CAAC"}