dynamo-document-builder 0.0.0 → 0.1.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 (333) hide show
  1. package/README.md +79 -2
  2. package/dist/attributes/attribute-map.cjs +114 -0
  3. package/dist/attributes/attribute-map.cjs.map +1 -0
  4. package/dist/attributes/attribute-map.d.ts +32 -0
  5. package/dist/attributes/attribute-map.mjs +112 -0
  6. package/dist/attributes/attribute-map.mjs.map +1 -0
  7. package/dist/attributes/index.cjs +8 -0
  8. package/dist/attributes/index.cjs.map +1 -0
  9. package/dist/attributes/index.d.ts +1 -0
  10. package/dist/attributes/index.mjs +2 -0
  11. package/dist/attributes/index.mjs.map +1 -0
  12. package/dist/commands/base-command.cjs +3 -0
  13. package/dist/commands/base-command.cjs.map +1 -0
  14. package/dist/commands/base-command.d.ts +24 -0
  15. package/dist/commands/base-command.mjs +2 -0
  16. package/dist/commands/base-command.mjs.map +1 -0
  17. package/dist/commands/batch-get.cjs +55 -0
  18. package/dist/commands/batch-get.cjs.map +1 -0
  19. package/dist/commands/batch-get.d.ts +17 -0
  20. package/dist/commands/batch-get.mjs +53 -0
  21. package/dist/commands/batch-get.mjs.map +1 -0
  22. package/dist/commands/batch-write.cjs +94 -0
  23. package/dist/commands/batch-write.cjs.map +1 -0
  24. package/dist/commands/batch-write.d.ts +34 -0
  25. package/dist/commands/batch-write.mjs +92 -0
  26. package/dist/commands/batch-write.mjs.map +1 -0
  27. package/dist/commands/condition-check.cjs +24 -0
  28. package/dist/commands/condition-check.cjs.map +1 -0
  29. package/dist/commands/condition-check.d.ts +16 -0
  30. package/dist/commands/condition-check.mjs +22 -0
  31. package/dist/commands/condition-check.mjs.map +1 -0
  32. package/dist/commands/conditional-delete.cjs +53 -0
  33. package/dist/commands/conditional-delete.cjs.map +1 -0
  34. package/dist/commands/conditional-delete.d.ts +21 -0
  35. package/dist/commands/conditional-delete.mjs +51 -0
  36. package/dist/commands/conditional-delete.mjs.map +1 -0
  37. package/dist/commands/conditional-put.cjs +63 -0
  38. package/dist/commands/conditional-put.cjs.map +1 -0
  39. package/dist/commands/conditional-put.d.ts +22 -0
  40. package/dist/commands/conditional-put.mjs +61 -0
  41. package/dist/commands/conditional-put.mjs.map +1 -0
  42. package/dist/commands/conditional-update.cjs +57 -0
  43. package/dist/commands/conditional-update.cjs.map +1 -0
  44. package/dist/commands/conditional-update.d.ts +21 -0
  45. package/dist/commands/conditional-update.mjs +55 -0
  46. package/dist/commands/conditional-update.mjs.map +1 -0
  47. package/dist/commands/delete.cjs +59 -0
  48. package/dist/commands/delete.cjs.map +1 -0
  49. package/dist/commands/delete.d.ts +20 -0
  50. package/dist/commands/delete.mjs +57 -0
  51. package/dist/commands/delete.mjs.map +1 -0
  52. package/dist/commands/get.cjs +46 -0
  53. package/dist/commands/get.cjs.map +1 -0
  54. package/dist/commands/get.d.ts +16 -0
  55. package/dist/commands/get.mjs +44 -0
  56. package/dist/commands/get.mjs.map +1 -0
  57. package/dist/commands/index.cjs +40 -0
  58. package/dist/commands/index.cjs.map +1 -0
  59. package/dist/commands/index.d.ts +18 -0
  60. package/dist/commands/index.mjs +18 -0
  61. package/dist/commands/index.mjs.map +1 -0
  62. package/dist/commands/projected-get.cjs +50 -0
  63. package/dist/commands/projected-get.cjs.map +1 -0
  64. package/dist/commands/projected-get.d.ts +18 -0
  65. package/dist/commands/projected-get.mjs +48 -0
  66. package/dist/commands/projected-get.mjs.map +1 -0
  67. package/dist/commands/projected-query.cjs +118 -0
  68. package/dist/commands/projected-query.cjs.map +1 -0
  69. package/dist/commands/projected-query.d.ts +26 -0
  70. package/dist/commands/projected-query.mjs +116 -0
  71. package/dist/commands/projected-query.mjs.map +1 -0
  72. package/dist/commands/projected-scan.cjs +98 -0
  73. package/dist/commands/projected-scan.cjs.map +1 -0
  74. package/dist/commands/projected-scan.d.ts +26 -0
  75. package/dist/commands/projected-scan.mjs +96 -0
  76. package/dist/commands/projected-scan.mjs.map +1 -0
  77. package/dist/commands/put.cjs +69 -0
  78. package/dist/commands/put.cjs.map +1 -0
  79. package/dist/commands/put.d.ts +21 -0
  80. package/dist/commands/put.mjs +67 -0
  81. package/dist/commands/put.mjs.map +1 -0
  82. package/dist/commands/query.cjs +117 -0
  83. package/dist/commands/query.cjs.map +1 -0
  84. package/dist/commands/query.d.ts +33 -0
  85. package/dist/commands/query.mjs +115 -0
  86. package/dist/commands/query.mjs.map +1 -0
  87. package/dist/commands/scan.cjs +96 -0
  88. package/dist/commands/scan.cjs.map +1 -0
  89. package/dist/commands/scan.d.ts +34 -0
  90. package/dist/commands/scan.mjs +94 -0
  91. package/dist/commands/scan.mjs.map +1 -0
  92. package/dist/commands/transact-get.cjs +60 -0
  93. package/dist/commands/transact-get.cjs.map +1 -0
  94. package/dist/commands/transact-get.d.ts +15 -0
  95. package/dist/commands/transact-get.mjs +58 -0
  96. package/dist/commands/transact-get.mjs.map +1 -0
  97. package/dist/commands/transact-write.cjs +42 -0
  98. package/dist/commands/transact-write.cjs.map +1 -0
  99. package/dist/commands/transact-write.d.ts +20 -0
  100. package/dist/commands/transact-write.mjs +40 -0
  101. package/dist/commands/transact-write.mjs.map +1 -0
  102. package/dist/commands/update.cjs +53 -0
  103. package/dist/commands/update.cjs.map +1 -0
  104. package/dist/commands/update.d.ts +22 -0
  105. package/dist/commands/update.mjs +51 -0
  106. package/dist/commands/update.mjs.map +1 -0
  107. package/dist/conditions/and.cjs +14 -0
  108. package/dist/conditions/and.cjs.map +1 -0
  109. package/dist/conditions/and.d.ts +2 -0
  110. package/dist/conditions/and.mjs +12 -0
  111. package/dist/conditions/and.mjs.map +1 -0
  112. package/dist/conditions/begins-with.cjs +13 -0
  113. package/dist/conditions/begins-with.cjs.map +1 -0
  114. package/dist/conditions/begins-with.d.ts +2 -0
  115. package/dist/conditions/begins-with.mjs +11 -0
  116. package/dist/conditions/begins-with.mjs.map +1 -0
  117. package/dist/conditions/between.cjs +14 -0
  118. package/dist/conditions/between.cjs.map +1 -0
  119. package/dist/conditions/between.d.ts +2 -0
  120. package/dist/conditions/between.mjs +12 -0
  121. package/dist/conditions/between.mjs.map +1 -0
  122. package/dist/conditions/condition-parser.cjs +194 -0
  123. package/dist/conditions/condition-parser.cjs.map +1 -0
  124. package/dist/conditions/condition-parser.d.ts +7 -0
  125. package/dist/conditions/condition-parser.mjs +192 -0
  126. package/dist/conditions/condition-parser.mjs.map +1 -0
  127. package/dist/conditions/condition-symbols.cjs +43 -0
  128. package/dist/conditions/condition-symbols.cjs.map +1 -0
  129. package/dist/conditions/condition-symbols.d.ts +14 -0
  130. package/dist/conditions/condition-symbols.mjs +31 -0
  131. package/dist/conditions/condition-symbols.mjs.map +1 -0
  132. package/dist/conditions/condition-types.cjs +3 -0
  133. package/dist/conditions/condition-types.cjs.map +1 -0
  134. package/dist/conditions/condition-types.d.ts +85 -0
  135. package/dist/conditions/condition-types.mjs +2 -0
  136. package/dist/conditions/condition-types.mjs.map +1 -0
  137. package/dist/conditions/contains.cjs +13 -0
  138. package/dist/conditions/contains.cjs.map +1 -0
  139. package/dist/conditions/contains.d.ts +3 -0
  140. package/dist/conditions/contains.mjs +11 -0
  141. package/dist/conditions/contains.mjs.map +1 -0
  142. package/dist/conditions/equals.cjs +14 -0
  143. package/dist/conditions/equals.cjs.map +1 -0
  144. package/dist/conditions/equals.d.ts +2 -0
  145. package/dist/conditions/equals.mjs +12 -0
  146. package/dist/conditions/equals.mjs.map +1 -0
  147. package/dist/conditions/exists.cjs +12 -0
  148. package/dist/conditions/exists.cjs.map +1 -0
  149. package/dist/conditions/exists.d.ts +2 -0
  150. package/dist/conditions/exists.mjs +10 -0
  151. package/dist/conditions/exists.mjs.map +1 -0
  152. package/dist/conditions/greater-than-or-equal.cjs +14 -0
  153. package/dist/conditions/greater-than-or-equal.cjs.map +1 -0
  154. package/dist/conditions/greater-than-or-equal.d.ts +2 -0
  155. package/dist/conditions/greater-than-or-equal.mjs +12 -0
  156. package/dist/conditions/greater-than-or-equal.mjs.map +1 -0
  157. package/dist/conditions/greater-than.cjs +14 -0
  158. package/dist/conditions/greater-than.cjs.map +1 -0
  159. package/dist/conditions/greater-than.d.ts +2 -0
  160. package/dist/conditions/greater-than.mjs +12 -0
  161. package/dist/conditions/greater-than.mjs.map +1 -0
  162. package/dist/conditions/index.cjs +42 -0
  163. package/dist/conditions/index.cjs.map +1 -0
  164. package/dist/conditions/index.d.ts +19 -0
  165. package/dist/conditions/index.mjs +19 -0
  166. package/dist/conditions/index.mjs.map +1 -0
  167. package/dist/conditions/is-in.cjs +13 -0
  168. package/dist/conditions/is-in.cjs.map +1 -0
  169. package/dist/conditions/is-in.d.ts +2 -0
  170. package/dist/conditions/is-in.mjs +11 -0
  171. package/dist/conditions/is-in.mjs.map +1 -0
  172. package/dist/conditions/less-than-or-equal.cjs +14 -0
  173. package/dist/conditions/less-than-or-equal.cjs.map +1 -0
  174. package/dist/conditions/less-than-or-equal.d.ts +2 -0
  175. package/dist/conditions/less-than-or-equal.mjs +12 -0
  176. package/dist/conditions/less-than-or-equal.mjs.map +1 -0
  177. package/dist/conditions/less-than.cjs +14 -0
  178. package/dist/conditions/less-than.cjs.map +1 -0
  179. package/dist/conditions/less-than.d.ts +2 -0
  180. package/dist/conditions/less-than.mjs +12 -0
  181. package/dist/conditions/less-than.mjs.map +1 -0
  182. package/dist/conditions/not-equals.cjs +14 -0
  183. package/dist/conditions/not-equals.cjs.map +1 -0
  184. package/dist/conditions/not-equals.d.ts +2 -0
  185. package/dist/conditions/not-equals.mjs +12 -0
  186. package/dist/conditions/not-equals.mjs.map +1 -0
  187. package/dist/conditions/not-exists.cjs +13 -0
  188. package/dist/conditions/not-exists.cjs.map +1 -0
  189. package/dist/conditions/not-exists.d.ts +2 -0
  190. package/dist/conditions/not-exists.mjs +11 -0
  191. package/dist/conditions/not-exists.mjs.map +1 -0
  192. package/dist/conditions/not.cjs +13 -0
  193. package/dist/conditions/not.cjs.map +1 -0
  194. package/dist/conditions/not.d.ts +2 -0
  195. package/dist/conditions/not.mjs +11 -0
  196. package/dist/conditions/not.mjs.map +1 -0
  197. package/dist/conditions/or.cjs +14 -0
  198. package/dist/conditions/or.cjs.map +1 -0
  199. package/dist/conditions/or.d.ts +2 -0
  200. package/dist/conditions/or.mjs +12 -0
  201. package/dist/conditions/or.mjs.map +1 -0
  202. package/dist/conditions/size.cjs +13 -0
  203. package/dist/conditions/size.cjs.map +1 -0
  204. package/dist/conditions/size.d.ts +2 -0
  205. package/dist/conditions/size.mjs +11 -0
  206. package/dist/conditions/size.mjs.map +1 -0
  207. package/dist/conditions/type-is.cjs +13 -0
  208. package/dist/conditions/type-is.cjs.map +1 -0
  209. package/dist/conditions/type-is.d.ts +2 -0
  210. package/dist/conditions/type-is.mjs +11 -0
  211. package/dist/conditions/type-is.mjs.map +1 -0
  212. package/dist/core/core-types.cjs +3 -0
  213. package/dist/core/core-types.cjs.map +1 -0
  214. package/dist/core/core-types.d.ts +41 -0
  215. package/dist/core/core-types.mjs +2 -0
  216. package/dist/core/core-types.mjs.map +1 -0
  217. package/dist/core/entity.cjs +146 -0
  218. package/dist/core/entity.cjs.map +1 -0
  219. package/dist/core/entity.d.ts +39 -0
  220. package/dist/core/entity.mjs +144 -0
  221. package/dist/core/entity.mjs.map +1 -0
  222. package/dist/core/index.cjs +12 -0
  223. package/dist/core/index.cjs.map +1 -0
  224. package/dist/core/index.d.ts +4 -0
  225. package/dist/core/index.mjs +4 -0
  226. package/dist/core/index.mjs.map +1 -0
  227. package/dist/core/key.cjs +8 -0
  228. package/dist/core/key.cjs.map +1 -0
  229. package/dist/core/key.d.ts +12 -0
  230. package/dist/core/key.mjs +6 -0
  231. package/dist/core/key.mjs.map +1 -0
  232. package/dist/core/table.cjs +44 -0
  233. package/dist/core/table.cjs.map +1 -0
  234. package/dist/core/table.d.ts +22 -0
  235. package/dist/core/table.mjs +42 -0
  236. package/dist/core/table.mjs.map +1 -0
  237. package/dist/errors.cjs +7 -0
  238. package/dist/errors.cjs.map +1 -0
  239. package/dist/errors.d.ts +2 -0
  240. package/dist/errors.mjs +5 -0
  241. package/dist/errors.mjs.map +1 -0
  242. package/dist/index.cjs +106 -0
  243. package/dist/index.cjs.map +1 -0
  244. package/dist/index.d.ts +7 -2
  245. package/dist/index.mjs +51 -0
  246. package/dist/index.mjs.map +1 -0
  247. package/dist/internal-constants.cjs +20 -0
  248. package/dist/internal-constants.cjs.map +1 -0
  249. package/dist/internal-constants.d.ts +8 -0
  250. package/dist/internal-constants.mjs +11 -0
  251. package/dist/internal-constants.mjs.map +1 -0
  252. package/dist/node_modules/tslib/tslib.es6.cjs +92 -0
  253. package/dist/node_modules/tslib/tslib.es6.cjs.map +1 -0
  254. package/dist/node_modules/tslib/tslib.es6.mjs +84 -0
  255. package/dist/node_modules/tslib/tslib.es6.mjs.map +1 -0
  256. package/dist/projections/index.cjs +8 -0
  257. package/dist/projections/index.cjs.map +1 -0
  258. package/dist/projections/index.d.ts +2 -0
  259. package/dist/projections/index.mjs +2 -0
  260. package/dist/projections/index.mjs.map +1 -0
  261. package/dist/projections/projection-parser.cjs +19 -0
  262. package/dist/projections/projection-parser.cjs.map +1 -0
  263. package/dist/projections/projection-parser.d.ts +7 -0
  264. package/dist/projections/projection-parser.mjs +17 -0
  265. package/dist/projections/projection-parser.mjs.map +1 -0
  266. package/dist/projections/projection-types.cjs +3 -0
  267. package/dist/projections/projection-types.cjs.map +1 -0
  268. package/dist/projections/projection-types.d.ts +1 -0
  269. package/dist/projections/projection-types.mjs +2 -0
  270. package/dist/projections/projection-types.mjs.map +1 -0
  271. package/dist/updates/add-to-set.cjs +14 -0
  272. package/dist/updates/add-to-set.cjs.map +1 -0
  273. package/dist/updates/add-to-set.d.ts +3 -0
  274. package/dist/updates/add-to-set.mjs +12 -0
  275. package/dist/updates/add-to-set.mjs.map +1 -0
  276. package/dist/updates/add.cjs +14 -0
  277. package/dist/updates/add.cjs.map +1 -0
  278. package/dist/updates/add.d.ts +2 -0
  279. package/dist/updates/add.mjs +12 -0
  280. package/dist/updates/add.mjs.map +1 -0
  281. package/dist/updates/append.cjs +14 -0
  282. package/dist/updates/append.cjs.map +1 -0
  283. package/dist/updates/append.d.ts +3 -0
  284. package/dist/updates/append.mjs +12 -0
  285. package/dist/updates/append.mjs.map +1 -0
  286. package/dist/updates/delete.cjs +13 -0
  287. package/dist/updates/delete.cjs.map +1 -0
  288. package/dist/updates/delete.d.ts +3 -0
  289. package/dist/updates/delete.mjs +11 -0
  290. package/dist/updates/delete.mjs.map +1 -0
  291. package/dist/updates/index.cjs +24 -0
  292. package/dist/updates/index.cjs.map +1 -0
  293. package/dist/updates/index.d.ts +10 -0
  294. package/dist/updates/index.mjs +10 -0
  295. package/dist/updates/index.mjs.map +1 -0
  296. package/dist/updates/prepend.cjs +14 -0
  297. package/dist/updates/prepend.cjs.map +1 -0
  298. package/dist/updates/prepend.d.ts +3 -0
  299. package/dist/updates/prepend.mjs +12 -0
  300. package/dist/updates/prepend.mjs.map +1 -0
  301. package/dist/updates/ref.cjs +14 -0
  302. package/dist/updates/ref.cjs.map +1 -0
  303. package/dist/updates/ref.d.ts +3 -0
  304. package/dist/updates/ref.mjs +12 -0
  305. package/dist/updates/ref.mjs.map +1 -0
  306. package/dist/updates/remove.cjs +12 -0
  307. package/dist/updates/remove.cjs.map +1 -0
  308. package/dist/updates/remove.d.ts +2 -0
  309. package/dist/updates/remove.mjs +10 -0
  310. package/dist/updates/remove.mjs.map +1 -0
  311. package/dist/updates/subtract.cjs +14 -0
  312. package/dist/updates/subtract.cjs.map +1 -0
  313. package/dist/updates/subtract.d.ts +2 -0
  314. package/dist/updates/subtract.mjs +12 -0
  315. package/dist/updates/subtract.mjs.map +1 -0
  316. package/dist/updates/update-parser.cjs +157 -0
  317. package/dist/updates/update-parser.cjs.map +1 -0
  318. package/dist/updates/update-parser.d.ts +7 -0
  319. package/dist/updates/update-parser.mjs +155 -0
  320. package/dist/updates/update-parser.mjs.map +1 -0
  321. package/dist/updates/update-symbols.cjs +30 -0
  322. package/dist/updates/update-symbols.cjs.map +1 -0
  323. package/dist/updates/update-symbols.d.ts +13 -0
  324. package/dist/updates/update-symbols.mjs +19 -0
  325. package/dist/updates/update-symbols.mjs.map +1 -0
  326. package/dist/updates/update-types.cjs +3 -0
  327. package/dist/updates/update-types.cjs.map +1 -0
  328. package/dist/updates/update-types.d.ts +42 -0
  329. package/dist/updates/update-types.mjs +2 -0
  330. package/dist/updates/update-types.mjs.map +1 -0
  331. package/package.json +142 -22
  332. package/dist/index.d.ts.map +0 -1
  333. package/dist/index.js +0 -7
@@ -0,0 +1,155 @@
1
+ import { AttributeExpressionMap } from '../attributes/attribute-map.mjs';
2
+ import { $remove, $delete, $add, $addToSet, $set, $subtract, $append, $prepend, $ref } from './update-symbols.mjs';
3
+ import { DocumentBuilderError } from '../errors.mjs';
4
+
5
+ function parseAttributePath(map, path) {
6
+ const parts = path.split('.');
7
+ return parts
8
+ .map(part => {
9
+ const match = part.match(/^(.+?)(\[\d+\])$/);
10
+ if (match) {
11
+ const attrName = match[1];
12
+ const index = match[2];
13
+ map.addName(attrName);
14
+ return `#${attrName}${index}`;
15
+ }
16
+ map.addName(part);
17
+ return `#${part}`;
18
+ })
19
+ .join('.');
20
+ }
21
+ function isValueReference(value) {
22
+ return typeof value === 'object' && value !== null && 'type' in value && value.type === $ref;
23
+ }
24
+ function isUpdateExpression(value) {
25
+ return (typeof value === 'object' &&
26
+ value !== null &&
27
+ 'type' in value &&
28
+ (value.type === $set || value.type === $remove || value.type === $delete || value.type === $add));
29
+ }
30
+ function parseUpdate(update, attributeExpressionMap = new AttributeExpressionMap()) {
31
+ if (Object.keys(update).length === 0) {
32
+ throw new DocumentBuilderError('Update expression cannot be empty');
33
+ }
34
+ const setExpressions = [];
35
+ const removeExpressions = [];
36
+ const addExpressions = [];
37
+ const deleteExpressions = [];
38
+ for (const [path, value] of Object.entries(update)) {
39
+ const pathExpr = parseAttributePath(attributeExpressionMap, path);
40
+ if (isValueReference(value)) {
41
+ const refExpr = parseAttributePath(attributeExpressionMap, value.to);
42
+ if (value.default !== undefined) {
43
+ attributeExpressionMap.addValue(value.default);
44
+ const defaultPlaceholder = attributeExpressionMap.getPlaceholderFromValue(value.default);
45
+ setExpressions.push(`${pathExpr} = if_not_exists(${refExpr}, ${defaultPlaceholder})`);
46
+ }
47
+ else {
48
+ setExpressions.push(`${pathExpr} = ${refExpr}`);
49
+ }
50
+ }
51
+ else if (isUpdateExpression(value)) {
52
+ if (value.type === $remove) {
53
+ removeExpressions.push(pathExpr);
54
+ }
55
+ else if (value.type === $delete) {
56
+ if (isValueReference(value.values)) {
57
+ const refExpr = parseAttributePath(attributeExpressionMap, value.values.to);
58
+ deleteExpressions.push(`${pathExpr} ${refExpr}`);
59
+ }
60
+ else {
61
+ attributeExpressionMap.addValue(value.values);
62
+ const valuePlaceholder = attributeExpressionMap.getPlaceholderFromValue(value.values);
63
+ deleteExpressions.push(`${pathExpr} ${valuePlaceholder}`);
64
+ }
65
+ }
66
+ else if (value.type === $add) {
67
+ if ('op' in value && value.op === $addToSet) {
68
+ if (isValueReference(value.values)) {
69
+ const refExpr = parseAttributePath(attributeExpressionMap, value.values.to);
70
+ addExpressions.push(`${pathExpr} ${refExpr}`);
71
+ }
72
+ else {
73
+ attributeExpressionMap.addValue(value.values);
74
+ const valuePlaceholder = attributeExpressionMap.getPlaceholderFromValue(value.values);
75
+ addExpressions.push(`${pathExpr} ${valuePlaceholder}`);
76
+ }
77
+ }
78
+ }
79
+ else if (value.type === $set) {
80
+ if ('op' in value) {
81
+ if (value.op === $add) {
82
+ if (isValueReference(value.value)) {
83
+ const refExpr = parseAttributePath(attributeExpressionMap, value.value.to);
84
+ setExpressions.push(`${pathExpr} = ${pathExpr} + ${refExpr}`);
85
+ }
86
+ else {
87
+ attributeExpressionMap.addValue(value.value);
88
+ const valuePlaceholder = attributeExpressionMap.getPlaceholderFromValue(value.value);
89
+ setExpressions.push(`${pathExpr} = ${pathExpr} + ${valuePlaceholder}`);
90
+ }
91
+ }
92
+ else if (value.op === $subtract) {
93
+ if (isValueReference(value.value)) {
94
+ const refExpr = parseAttributePath(attributeExpressionMap, value.value.to);
95
+ setExpressions.push(`${pathExpr} = ${pathExpr} - ${refExpr}`);
96
+ }
97
+ else {
98
+ attributeExpressionMap.addValue(value.value);
99
+ const valuePlaceholder = attributeExpressionMap.getPlaceholderFromValue(value.value);
100
+ setExpressions.push(`${pathExpr} = ${pathExpr} - ${valuePlaceholder}`);
101
+ }
102
+ }
103
+ else if (value.op === $append) {
104
+ if (isValueReference(value.values)) {
105
+ const refExpr = parseAttributePath(attributeExpressionMap, value.values.to);
106
+ setExpressions.push(`${pathExpr} = list_append(${pathExpr}, ${refExpr})`);
107
+ }
108
+ else {
109
+ attributeExpressionMap.addValue(value.values);
110
+ const valuePlaceholder = attributeExpressionMap.getPlaceholderFromValue(value.values);
111
+ setExpressions.push(`${pathExpr} = list_append(${pathExpr}, ${valuePlaceholder})`);
112
+ }
113
+ }
114
+ else if (value.op === $prepend) {
115
+ if (isValueReference(value.values)) {
116
+ const refExpr = parseAttributePath(attributeExpressionMap, value.values.to);
117
+ setExpressions.push(`${pathExpr} = list_append(${refExpr}, ${pathExpr})`);
118
+ }
119
+ else {
120
+ attributeExpressionMap.addValue(value.values);
121
+ const valuePlaceholder = attributeExpressionMap.getPlaceholderFromValue(value.values);
122
+ setExpressions.push(`${pathExpr} = list_append(${valuePlaceholder}, ${pathExpr})`);
123
+ }
124
+ }
125
+ }
126
+ }
127
+ }
128
+ else {
129
+ attributeExpressionMap.addValue(value);
130
+ const valuePlaceholder = attributeExpressionMap.getPlaceholderFromValue(value);
131
+ setExpressions.push(`${pathExpr} = ${valuePlaceholder}`);
132
+ }
133
+ }
134
+ const parts = [];
135
+ if (setExpressions.length > 0) {
136
+ parts.push(`SET ${setExpressions.join(', ')}`);
137
+ }
138
+ if (removeExpressions.length > 0) {
139
+ parts.push(`REMOVE ${removeExpressions.join(', ')}`);
140
+ }
141
+ if (addExpressions.length > 0) {
142
+ parts.push(`ADD ${addExpressions.join(', ')}`);
143
+ }
144
+ if (deleteExpressions.length > 0) {
145
+ parts.push(`DELETE ${deleteExpressions.join(', ')}`);
146
+ }
147
+ const updateExpression = parts.join(' ');
148
+ return {
149
+ updateExpression,
150
+ attributeExpressionMap,
151
+ };
152
+ }
153
+
154
+ export { parseUpdate };
155
+ //# sourceMappingURL=update-parser.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-parser.mjs","sources":["../../src/updates/update-parser.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ 'use strict';
2
+
3
+ /**
4
+ * Internal symbols used to identify different types of updates.
5
+ */
6
+ const $set = Symbol('set');
7
+ const $remove = Symbol('remove');
8
+ const $delete = Symbol('delete');
9
+ const $add = Symbol('add');
10
+ const $subtract = Symbol('subtract');
11
+ const $append = Symbol('append');
12
+ const $prepend = Symbol('prepend');
13
+ const $addToSet = Symbol('addToSet');
14
+ const $ref = Symbol('ref');
15
+ function isUpdateSymbol(value) {
16
+ return (typeof value === 'symbol' &&
17
+ [$set, $remove, $delete, $add, $subtract, $append, $prepend, $addToSet, $ref].includes(value));
18
+ }
19
+
20
+ exports.$add = $add;
21
+ exports.$addToSet = $addToSet;
22
+ exports.$append = $append;
23
+ exports.$delete = $delete;
24
+ exports.$prepend = $prepend;
25
+ exports.$ref = $ref;
26
+ exports.$remove = $remove;
27
+ exports.$set = $set;
28
+ exports.$subtract = $subtract;
29
+ exports.isUpdateSymbol = isUpdateSymbol;
30
+ //# sourceMappingURL=update-symbols.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-symbols.cjs","sources":["../../src/updates/update-symbols.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAAA;;AAEG;MAEU,IAAI,GAAG,MAAM,CAAC,KAAK;MACnB,OAAO,GAAG,MAAM,CAAC,QAAQ;MACzB,OAAO,GAAG,MAAM,CAAC,QAAQ;MACzB,IAAI,GAAG,MAAM,CAAC,KAAK;MACnB,SAAS,GAAG,MAAM,CAAC,UAAU;MAC7B,OAAO,GAAG,MAAM,CAAC,QAAQ;MACzB,QAAQ,GAAG,MAAM,CAAC,SAAS;MAC3B,SAAS,GAAG,MAAM,CAAC,UAAU;MAC7B,IAAI,GAAG,MAAM,CAAC,KAAK;AAE1B,SAAU,cAAc,CAAC,KAAc,EAAA;AAC3C,IAAA,QACE,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAEjG;;;;;;;;;;;;;"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Internal symbols used to identify different types of updates.
3
+ */
4
+ export declare const $set: unique symbol;
5
+ export declare const $remove: unique symbol;
6
+ export declare const $delete: unique symbol;
7
+ export declare const $add: unique symbol;
8
+ export declare const $subtract: unique symbol;
9
+ export declare const $append: unique symbol;
10
+ export declare const $prepend: unique symbol;
11
+ export declare const $addToSet: unique symbol;
12
+ export declare const $ref: unique symbol;
13
+ export declare function isUpdateSymbol(value: unknown): boolean;
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Internal symbols used to identify different types of updates.
3
+ */
4
+ const $set = Symbol('set');
5
+ const $remove = Symbol('remove');
6
+ const $delete = Symbol('delete');
7
+ const $add = Symbol('add');
8
+ const $subtract = Symbol('subtract');
9
+ const $append = Symbol('append');
10
+ const $prepend = Symbol('prepend');
11
+ const $addToSet = Symbol('addToSet');
12
+ const $ref = Symbol('ref');
13
+ function isUpdateSymbol(value) {
14
+ return (typeof value === 'symbol' &&
15
+ [$set, $remove, $delete, $add, $subtract, $append, $prepend, $addToSet, $ref].includes(value));
16
+ }
17
+
18
+ export { $add, $addToSet, $append, $delete, $prepend, $ref, $remove, $set, $subtract, isUpdateSymbol };
19
+ //# sourceMappingURL=update-symbols.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-symbols.mjs","sources":["../../src/updates/update-symbols.ts"],"sourcesContent":[null],"names":[],"mappings":"AAAA;;AAEG;MAEU,IAAI,GAAG,MAAM,CAAC,KAAK;MACnB,OAAO,GAAG,MAAM,CAAC,QAAQ;MACzB,OAAO,GAAG,MAAM,CAAC,QAAQ;MACzB,IAAI,GAAG,MAAM,CAAC,KAAK;MACnB,SAAS,GAAG,MAAM,CAAC,UAAU;MAC7B,OAAO,GAAG,MAAM,CAAC,QAAQ;MACzB,QAAQ,GAAG,MAAM,CAAC,SAAS;MAC3B,SAAS,GAAG,MAAM,CAAC,UAAU;MAC7B,IAAI,GAAG,MAAM,CAAC,KAAK;AAE1B,SAAU,cAAc,CAAC,KAAc,EAAA;AAC3C,IAAA,QACE,OAAO,KAAK,KAAK,QAAQ;QACzB,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC;AAEjG;;;;"}
@@ -0,0 +1,3 @@
1
+ 'use strict';
2
+
3
+ //# sourceMappingURL=update-types.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-types.cjs","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -0,0 +1,42 @@
1
+ import type { NativeAttributeValue } from '@aws-sdk/lib-dynamodb';
2
+ import type { $set, $remove, $delete, $add, $subtract, $append, $addToSet, $prepend, $ref } from '@/updates/update-symbols';
3
+ export type UpdateType = 'SET' | 'REMOVE' | 'ADD' | 'DELETE';
4
+ export type ValueReference<ValueType extends NativeAttributeValue = NativeAttributeValue> = {
5
+ type: typeof $ref;
6
+ to: string;
7
+ default?: ValueType;
8
+ };
9
+ export type RemoveExpression = {
10
+ type: typeof $remove;
11
+ };
12
+ export type DeleteExpression = {
13
+ type: typeof $delete;
14
+ values: NativeAttributeValue[] | ValueReference;
15
+ };
16
+ export type AddExpression = {
17
+ type: typeof $set;
18
+ op: typeof $add;
19
+ value: number | ValueReference<number>;
20
+ };
21
+ export type SubtractExpression = {
22
+ type: typeof $set;
23
+ op: typeof $subtract;
24
+ value: number | ValueReference<number>;
25
+ };
26
+ export type AppendExpression = {
27
+ type: typeof $set;
28
+ op: typeof $append;
29
+ values: NativeAttributeValue[] | ValueReference;
30
+ };
31
+ export type PrependExpression = {
32
+ type: typeof $set;
33
+ op: typeof $prepend;
34
+ values: NativeAttributeValue[] | ValueReference;
35
+ };
36
+ export type AddToSetExpression = {
37
+ type: typeof $add;
38
+ op: typeof $addToSet;
39
+ values: NativeAttributeValue[] | ValueReference;
40
+ };
41
+ export type UpdateExpression = AddExpression | SubtractExpression | AppendExpression | PrependExpression | AddToSetExpression | DeleteExpression | RemoveExpression;
42
+ export type UpdateValues = Record<string, NativeAttributeValue | UpdateExpression | ValueReference>;
@@ -0,0 +1,2 @@
1
+
2
+ //# sourceMappingURL=update-types.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update-types.mjs","sources":[],"sourcesContent":[],"names":[],"mappings":""}
package/package.json CHANGED
@@ -1,8 +1,92 @@
1
1
  {
2
2
  "name": "dynamo-document-builder",
3
- "version": "0.0.0",
4
- "description": "Type-safe utilities designed to make working with DynamoDB easier ",
5
- "main": "dist/index.js",
3
+ "version": "0.1.0",
4
+ "description": "DynamoDB single table design and data validation made easy using TypeScript and Zod ⚡️",
5
+ "main": "dist/index.cjs",
6
+ "module": "dist/index.mjs",
7
+ "types": "dist/index.d.ts",
8
+ "exports": {
9
+ ".": {
10
+ "import": {
11
+ "types": "./dist/index.d.ts",
12
+ "default": "./dist/index.mjs"
13
+ },
14
+ "require": {
15
+ "types": "./dist/index.d.ts",
16
+ "default": "./dist/index.cjs"
17
+ }
18
+ },
19
+ "./errors": {
20
+ "import": {
21
+ "types": "./dist/errors.d.ts",
22
+ "default": "./dist/errors.mjs"
23
+ },
24
+ "require": {
25
+ "types": "./dist/errors.d.ts",
26
+ "default": "./dist/errors.cjs"
27
+ }
28
+ },
29
+ "./attributes/*": {
30
+ "import": {
31
+ "types": "./dist/attributes/*.d.ts",
32
+ "default": "./dist/attributes/*.mjs"
33
+ },
34
+ "require": {
35
+ "types": "./dist/attributes/*.d.ts",
36
+ "default": "./dist/attributes/*.cjs"
37
+ }
38
+ },
39
+ "./commands/*": {
40
+ "import": {
41
+ "types": "./dist/commands/*.d.ts",
42
+ "default": "./dist/commands/*.mjs"
43
+ },
44
+ "require": {
45
+ "types": "./dist/commands/*.d.ts",
46
+ "default": "./dist/commands/*.cjs"
47
+ }
48
+ },
49
+ "./conditions/*": {
50
+ "import": {
51
+ "types": "./dist/conditions/*.d.ts",
52
+ "default": "./dist/conditions/*.mjs"
53
+ },
54
+ "require": {
55
+ "types": "./dist/conditions/*.d.ts",
56
+ "default": "./dist/conditions/*.cjs"
57
+ }
58
+ },
59
+ "./core/*": {
60
+ "import": {
61
+ "types": "./dist/core/*.d.ts",
62
+ "default": "./dist/core/*.mjs"
63
+ },
64
+ "require": {
65
+ "types": "./dist/core/*.d.ts",
66
+ "default": "./dist/core/*.cjs"
67
+ }
68
+ },
69
+ "./projections/*": {
70
+ "import": {
71
+ "types": "./dist/projections/*.d.ts",
72
+ "default": "./dist/projections/*.mjs"
73
+ },
74
+ "require": {
75
+ "types": "./dist/projections/*.d.ts",
76
+ "default": "./dist/projections/*.cjs"
77
+ }
78
+ },
79
+ "./updates/*": {
80
+ "import": {
81
+ "types": "./dist/updates/*.d.ts",
82
+ "default": "./dist/updates/*.mjs"
83
+ },
84
+ "require": {
85
+ "types": "./dist/updates/*.d.ts",
86
+ "default": "./dist/updates/*.cjs"
87
+ }
88
+ }
89
+ },
6
90
  "keywords": [
7
91
  "aws",
8
92
  "dynamo",
@@ -18,7 +102,7 @@
18
102
  "author": "Brandon Burrus <brandon@burrus.io>",
19
103
  "license": "MIT",
20
104
  "type": "commonjs",
21
- "homepage": "https://github.com/brandonburrus/dynamo-document-builder#readme",
105
+ "homepage": "https://dynamodocumentbuilder.com",
22
106
  "repository": {
23
107
  "type": "git",
24
108
  "url": "git+https://github.com/brandonburrus/dynamo-document-builder.git"
@@ -27,39 +111,75 @@
27
111
  "url": "https://github.com/brandonburrus/dynamo-document-builder/issues"
28
112
  },
29
113
  "scripts": {
114
+ "build": "rimraf dist && rollup -c rollup.config.mts",
115
+ "format": "biome format --write",
116
+ "lint": "biome check --fix",
117
+ "docs": "cd docs && npm run dev",
30
118
  "prepare": "husky",
31
- "check": "biome check",
32
- "autofix": "biome check --write",
33
- "build": "rimraf dist && tsc",
34
- "test": "jest",
35
- "prepublishOnly": "npm run build && npm run check && npm run test"
119
+ "prepublishOnly": "npm run build && npm run lint && npm run test",
120
+ "typecheck": "tsc --noEmit",
121
+ "test": "vitest run --config=tests/unit/vitest.config.ts",
122
+ "test:coverage": "vitest run --config=tests/unit/vitest.config.ts --coverage",
123
+ "test:watch": "vitest --config=tests/unit/vitest.config.ts",
124
+ "test:integration": "vitest run --config=tests/integration/vitest.config.ts",
125
+ "test:integration:coverage": "vitest run --config=tests/integration/vitest.config.ts --coverage",
126
+ "test:integration:watch": "vitest --config=tests/integration/vitest.config.ts",
127
+ "test:integration:ui": "vitest --ui --config=tests/integration/vitest.config.ts",
128
+ "test:integration:cdk": "cd tests/integration/cdk && cdk",
129
+ "test:typecheck": "tsc --noEmit --project tests/tsconfig.json"
36
130
  },
37
131
  "lint-staged": {
38
- "*.ts": ["biome check --write --staged", "jest --passWithNoTests"],
39
- "*.json": ["biome check --write"]
132
+ "*.ts": [
133
+ "biome check --write --staged"
134
+ ],
135
+ "*.json": [
136
+ "biome check --write --staged"
137
+ ]
40
138
  },
41
139
  "commitlint": {
42
- "extends": ["@commitlint/config-conventional"]
140
+ "extends": [
141
+ "@commitlint/config-conventional"
142
+ ]
143
+ },
144
+ "files": [
145
+ "dist",
146
+ "README.md",
147
+ "LICENSE"
148
+ ],
149
+ "peerDependencies": {
150
+ "@aws-sdk/client-dynamodb": ">=3.800.0",
151
+ "@aws-sdk/lib-dynamodb": ">=3.800.0",
152
+ "zod": ">=4.1.0"
43
153
  },
44
- "files": ["dist", "README.md", "LICENSE"],
45
154
  "dependencies": {
46
- "@aws-sdk/client-dynamodb": "^3.817.0",
47
- "@aws-sdk/lib-dynamodb": "^3.817.0",
48
- "zod": "^3.25.36"
155
+ "p-map": "^5.3.0"
49
156
  },
50
157
  "devDependencies": {
51
- "@biomejs/biome": "^1.9.4",
158
+ "@aws-sdk/client-sts": "^3.958.0",
159
+ "@biomejs/biome": "^2.3.8",
52
160
  "@commitlint/cli": "^19.8.1",
53
161
  "@commitlint/config-conventional": "^19.8.1",
54
- "@types/jest": "^29.5.14",
162
+ "@rollup/plugin-alias": "^6.0.0",
163
+ "@rollup/plugin-commonjs": "^29.0.0",
164
+ "@rollup/plugin-node-resolve": "^16.0.3",
165
+ "@rollup/plugin-typescript": "^12.3.0",
55
166
  "@types/node": "^22.15.24",
167
+ "@vitest/coverage-v8": "^4.0.15",
168
+ "@vitest/ui": "^4.0.15",
169
+ "aws-cdk": "^2.1100.1",
170
+ "aws-cdk-lib": "^2.233.0",
56
171
  "aws-sdk-client-mock": "^4.1.0",
172
+ "constructs": "^10.4.4",
173
+ "glob": "^13.0.0",
57
174
  "husky": "^9.1.7",
58
- "jest": "^29.7.0",
59
175
  "lint-staged": "^16.1.0",
176
+ "nanoid": "^5.1.6",
60
177
  "rimraf": "^6.0.1",
61
- "sinon": "^20.0.0",
62
- "ts-node": "^10.9.2",
63
- "typescript": "^5.8.3"
178
+ "rollup": "^4.54.0",
179
+ "rollup-plugin-dts": "^6.3.0",
180
+ "tsx": "^4.21.0",
181
+ "typedoc": "^0.28.15",
182
+ "typescript": "^5.8.3",
183
+ "vitest": "^4.0.14"
64
184
  }
65
185
  }
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,wBAAgB,UAAU,IAAI,MAAM,CAEnC"}
package/dist/index.js DELETED
@@ -1,7 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.helloWorld = helloWorld;
4
- function helloWorld() {
5
- return 'Hello, dynamo-document-builder!';
6
- }
7
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQSxnQ0FFQztBQUZELFNBQWdCLFVBQVU7SUFDeEIsT0FBTyxpQ0FBaUMsQ0FBQTtBQUMxQyxDQUFDIn0=