dynamo-document-builder 0.6.0 → 0.7.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 (310) hide show
  1. package/README.md +367 -0
  2. package/dist/attributes/attribute-map.cjs +52 -0
  3. package/dist/attributes/attribute-map.cjs.map +1 -1
  4. package/dist/attributes/attribute-map.d.ts +67 -0
  5. package/dist/attributes/attribute-map.mjs +52 -0
  6. package/dist/attributes/attribute-map.mjs.map +1 -1
  7. package/dist/commands/batch-get.cjs +43 -0
  8. package/dist/commands/batch-get.cjs.map +1 -1
  9. package/dist/commands/batch-get.d.ts +51 -3
  10. package/dist/commands/batch-get.mjs +44 -1
  11. package/dist/commands/batch-get.mjs.map +1 -1
  12. package/dist/commands/batch-projected-get.cjs +42 -0
  13. package/dist/commands/batch-projected-get.cjs.map +1 -1
  14. package/dist/commands/batch-projected-get.d.ts +56 -3
  15. package/dist/commands/batch-projected-get.mjs +42 -0
  16. package/dist/commands/batch-projected-get.mjs.map +1 -1
  17. package/dist/commands/batch-write.cjs +44 -0
  18. package/dist/commands/batch-write.cjs.map +1 -1
  19. package/dist/commands/batch-write.d.ts +54 -4
  20. package/dist/commands/batch-write.mjs +45 -1
  21. package/dist/commands/batch-write.mjs.map +1 -1
  22. package/dist/commands/condition-check.cjs +37 -0
  23. package/dist/commands/condition-check.cjs.map +1 -1
  24. package/dist/commands/condition-check.d.ts +45 -3
  25. package/dist/commands/condition-check.mjs +37 -0
  26. package/dist/commands/condition-check.mjs.map +1 -1
  27. package/dist/commands/conditional-delete.cjs +33 -0
  28. package/dist/commands/conditional-delete.cjs.map +1 -1
  29. package/dist/commands/conditional-delete.d.ts +46 -3
  30. package/dist/commands/conditional-delete.mjs +33 -0
  31. package/dist/commands/conditional-delete.mjs.map +1 -1
  32. package/dist/commands/conditional-put.cjs +34 -0
  33. package/dist/commands/conditional-put.cjs.map +1 -1
  34. package/dist/commands/conditional-put.d.ts +48 -4
  35. package/dist/commands/conditional-put.mjs +34 -0
  36. package/dist/commands/conditional-put.mjs.map +1 -1
  37. package/dist/commands/conditional-update.cjs +35 -0
  38. package/dist/commands/conditional-update.cjs.map +1 -1
  39. package/dist/commands/conditional-update.d.ts +48 -3
  40. package/dist/commands/conditional-update.mjs +35 -0
  41. package/dist/commands/conditional-update.mjs.map +1 -1
  42. package/dist/commands/delete.cjs +32 -0
  43. package/dist/commands/delete.cjs.map +1 -1
  44. package/dist/commands/delete.d.ts +44 -2
  45. package/dist/commands/delete.mjs +32 -0
  46. package/dist/commands/delete.mjs.map +1 -1
  47. package/dist/commands/get.cjs +33 -0
  48. package/dist/commands/get.cjs.map +1 -1
  49. package/dist/commands/get.d.ts +45 -2
  50. package/dist/commands/get.mjs +33 -0
  51. package/dist/commands/get.mjs.map +1 -1
  52. package/dist/commands/index.cjs +8 -0
  53. package/dist/commands/index.cjs.map +1 -1
  54. package/dist/commands/index.d.ts +160 -1
  55. package/dist/commands/index.mjs +4 -0
  56. package/dist/commands/index.mjs.map +1 -1
  57. package/dist/commands/projected-get.cjs +40 -0
  58. package/dist/commands/projected-get.cjs.map +1 -1
  59. package/dist/commands/projected-get.d.ts +54 -3
  60. package/dist/commands/projected-get.mjs +40 -0
  61. package/dist/commands/projected-get.mjs.map +1 -1
  62. package/dist/commands/projected-query.cjs +41 -0
  63. package/dist/commands/projected-query.cjs.map +1 -1
  64. package/dist/commands/projected-query.d.ts +56 -3
  65. package/dist/commands/projected-query.mjs +41 -0
  66. package/dist/commands/projected-query.mjs.map +1 -1
  67. package/dist/commands/projected-scan.cjs +41 -0
  68. package/dist/commands/projected-scan.cjs.map +1 -1
  69. package/dist/commands/projected-scan.d.ts +55 -3
  70. package/dist/commands/projected-scan.mjs +41 -0
  71. package/dist/commands/projected-scan.mjs.map +1 -1
  72. package/dist/commands/put.cjs +37 -0
  73. package/dist/commands/put.cjs.map +1 -1
  74. package/dist/commands/put.d.ts +50 -3
  75. package/dist/commands/put.mjs +37 -0
  76. package/dist/commands/put.mjs.map +1 -1
  77. package/dist/commands/query.cjs +35 -0
  78. package/dist/commands/query.cjs.map +1 -1
  79. package/dist/commands/query.d.ts +48 -3
  80. package/dist/commands/query.mjs +35 -0
  81. package/dist/commands/query.mjs.map +1 -1
  82. package/dist/commands/scan.cjs +33 -0
  83. package/dist/commands/scan.cjs.map +1 -1
  84. package/dist/commands/scan.d.ts +46 -3
  85. package/dist/commands/scan.mjs +33 -0
  86. package/dist/commands/scan.mjs.map +1 -1
  87. package/dist/commands/table-batch-get.cjs +123 -0
  88. package/dist/commands/table-batch-get.cjs.map +1 -0
  89. package/dist/commands/table-batch-get.d.ts +86 -0
  90. package/dist/commands/table-batch-get.mjs +121 -0
  91. package/dist/commands/table-batch-get.mjs.map +1 -0
  92. package/dist/commands/table-batch-write.cjs +119 -0
  93. package/dist/commands/table-batch-write.cjs.map +1 -0
  94. package/dist/commands/table-batch-write.d.ts +79 -0
  95. package/dist/commands/table-batch-write.mjs +117 -0
  96. package/dist/commands/table-batch-write.mjs.map +1 -0
  97. package/dist/commands/table-transact-get.cjs +73 -0
  98. package/dist/commands/table-transact-get.cjs.map +1 -0
  99. package/dist/commands/table-transact-get.d.ts +60 -0
  100. package/dist/commands/table-transact-get.mjs +71 -0
  101. package/dist/commands/table-transact-get.mjs.map +1 -0
  102. package/dist/commands/table-transact-write.cjs +76 -0
  103. package/dist/commands/table-transact-write.cjs.map +1 -0
  104. package/dist/commands/table-transact-write.d.ts +51 -0
  105. package/dist/commands/table-transact-write.mjs +74 -0
  106. package/dist/commands/table-transact-write.mjs.map +1 -0
  107. package/dist/commands/transact-get.cjs +38 -0
  108. package/dist/commands/transact-get.cjs.map +1 -1
  109. package/dist/commands/transact-get.d.ts +49 -3
  110. package/dist/commands/transact-get.mjs +39 -1
  111. package/dist/commands/transact-get.mjs.map +1 -1
  112. package/dist/commands/transact-write.cjs +37 -0
  113. package/dist/commands/transact-write.cjs.map +1 -1
  114. package/dist/commands/transact-write.d.ts +46 -1
  115. package/dist/commands/transact-write.mjs +37 -0
  116. package/dist/commands/transact-write.mjs.map +1 -1
  117. package/dist/commands/update.cjs +37 -0
  118. package/dist/commands/update.cjs.map +1 -1
  119. package/dist/commands/update.d.ts +50 -3
  120. package/dist/commands/update.mjs +37 -0
  121. package/dist/commands/update.mjs.map +1 -1
  122. package/dist/conditions/and.cjs +3 -0
  123. package/dist/conditions/and.cjs.map +1 -1
  124. package/dist/conditions/and.d.ts +4 -1
  125. package/dist/conditions/and.mjs +3 -0
  126. package/dist/conditions/and.mjs.map +1 -1
  127. package/dist/conditions/begins-with.cjs +3 -0
  128. package/dist/conditions/begins-with.cjs.map +1 -1
  129. package/dist/conditions/begins-with.d.ts +4 -1
  130. package/dist/conditions/begins-with.mjs +3 -0
  131. package/dist/conditions/begins-with.mjs.map +1 -1
  132. package/dist/conditions/between.cjs +3 -0
  133. package/dist/conditions/between.cjs.map +1 -1
  134. package/dist/conditions/between.d.ts +4 -1
  135. package/dist/conditions/between.mjs +3 -0
  136. package/dist/conditions/between.mjs.map +1 -1
  137. package/dist/conditions/condition-parser.d.ts +1 -1
  138. package/dist/conditions/contains.cjs +3 -0
  139. package/dist/conditions/contains.cjs.map +1 -1
  140. package/dist/conditions/contains.d.ts +4 -1
  141. package/dist/conditions/contains.mjs +3 -0
  142. package/dist/conditions/contains.mjs.map +1 -1
  143. package/dist/conditions/equals.cjs +3 -0
  144. package/dist/conditions/equals.cjs.map +1 -1
  145. package/dist/conditions/equals.d.ts +4 -1
  146. package/dist/conditions/equals.mjs +3 -0
  147. package/dist/conditions/equals.mjs.map +1 -1
  148. package/dist/conditions/exists.cjs +3 -0
  149. package/dist/conditions/exists.cjs.map +1 -1
  150. package/dist/conditions/exists.d.ts +4 -1
  151. package/dist/conditions/exists.mjs +3 -0
  152. package/dist/conditions/exists.mjs.map +1 -1
  153. package/dist/conditions/greater-than-or-equal.cjs +3 -0
  154. package/dist/conditions/greater-than-or-equal.cjs.map +1 -1
  155. package/dist/conditions/greater-than-or-equal.d.ts +4 -1
  156. package/dist/conditions/greater-than-or-equal.mjs +3 -0
  157. package/dist/conditions/greater-than-or-equal.mjs.map +1 -1
  158. package/dist/conditions/greater-than.cjs +3 -0
  159. package/dist/conditions/greater-than.cjs.map +1 -1
  160. package/dist/conditions/greater-than.d.ts +4 -1
  161. package/dist/conditions/greater-than.mjs +3 -0
  162. package/dist/conditions/greater-than.mjs.map +1 -1
  163. package/dist/conditions/index.cjs +2 -2
  164. package/dist/conditions/index.d.ts +185 -2
  165. package/dist/conditions/index.mjs +1 -1
  166. package/dist/conditions/is-in.cjs +3 -0
  167. package/dist/conditions/is-in.cjs.map +1 -1
  168. package/dist/conditions/is-in.d.ts +4 -1
  169. package/dist/conditions/is-in.mjs +3 -0
  170. package/dist/conditions/is-in.mjs.map +1 -1
  171. package/dist/conditions/less-than-or-equal.cjs +3 -0
  172. package/dist/conditions/less-than-or-equal.cjs.map +1 -1
  173. package/dist/conditions/less-than-or-equal.d.ts +4 -1
  174. package/dist/conditions/less-than-or-equal.mjs +3 -0
  175. package/dist/conditions/less-than-or-equal.mjs.map +1 -1
  176. package/dist/conditions/less-than.cjs +3 -0
  177. package/dist/conditions/less-than.cjs.map +1 -1
  178. package/dist/conditions/less-than.d.ts +4 -1
  179. package/dist/conditions/less-than.mjs +3 -0
  180. package/dist/conditions/less-than.mjs.map +1 -1
  181. package/dist/conditions/not-equals.cjs +3 -0
  182. package/dist/conditions/not-equals.cjs.map +1 -1
  183. package/dist/conditions/not-equals.d.ts +4 -1
  184. package/dist/conditions/not-equals.mjs +3 -0
  185. package/dist/conditions/not-equals.mjs.map +1 -1
  186. package/dist/conditions/not-exists.cjs +3 -0
  187. package/dist/conditions/not-exists.cjs.map +1 -1
  188. package/dist/conditions/not-exists.d.ts +4 -1
  189. package/dist/conditions/not-exists.mjs +3 -0
  190. package/dist/conditions/not-exists.mjs.map +1 -1
  191. package/dist/conditions/not.cjs +3 -0
  192. package/dist/conditions/not.cjs.map +1 -1
  193. package/dist/conditions/not.d.ts +4 -1
  194. package/dist/conditions/not.mjs +3 -0
  195. package/dist/conditions/not.mjs.map +1 -1
  196. package/dist/conditions/or.cjs +3 -0
  197. package/dist/conditions/or.cjs.map +1 -1
  198. package/dist/conditions/or.d.ts +4 -1
  199. package/dist/conditions/or.mjs +3 -0
  200. package/dist/conditions/or.mjs.map +1 -1
  201. package/dist/conditions/size.cjs +3 -0
  202. package/dist/conditions/size.cjs.map +1 -1
  203. package/dist/conditions/size.d.ts +4 -1
  204. package/dist/conditions/size.mjs +3 -0
  205. package/dist/conditions/size.mjs.map +1 -1
  206. package/dist/conditions/type-is.cjs +3 -0
  207. package/dist/conditions/type-is.cjs.map +1 -1
  208. package/dist/conditions/type-is.d.ts +4 -1
  209. package/dist/conditions/type-is.mjs +3 -0
  210. package/dist/conditions/type-is.mjs.map +1 -1
  211. package/dist/core/entity.cjs +171 -0
  212. package/dist/core/entity.cjs.map +1 -1
  213. package/dist/core/entity.d.ts +99 -4
  214. package/dist/core/entity.mjs +171 -0
  215. package/dist/core/entity.mjs.map +1 -1
  216. package/dist/core/index.d.ts +139 -2
  217. package/dist/core/key.cjs +1 -1
  218. package/dist/core/key.cjs.map +1 -1
  219. package/dist/core/key.d.ts +26 -2
  220. package/dist/core/key.mjs +1 -1
  221. package/dist/core/key.mjs.map +1 -1
  222. package/dist/core/table.cjs +30 -0
  223. package/dist/core/table.cjs.map +1 -1
  224. package/dist/core/table.d.ts +40 -1
  225. package/dist/core/table.mjs +31 -1
  226. package/dist/core/table.mjs.map +1 -1
  227. package/dist/errors.cjs +3 -0
  228. package/dist/errors.cjs.map +1 -1
  229. package/dist/errors.d.ts +3 -0
  230. package/dist/errors.mjs +3 -0
  231. package/dist/errors.mjs.map +1 -1
  232. package/dist/index.cjs +10 -2
  233. package/dist/index.cjs.map +1 -1
  234. package/dist/index.d.ts +11 -7
  235. package/dist/index.mjs +5 -1
  236. package/dist/index.mjs.map +1 -1
  237. package/dist/projections/index.d.ts +7 -1
  238. package/dist/projections/projection-parser.d.ts +1 -1
  239. package/dist/updates/add-to-set.cjs +5 -0
  240. package/dist/updates/add-to-set.cjs.map +1 -1
  241. package/dist/updates/add-to-set.d.ts +6 -1
  242. package/dist/updates/add-to-set.mjs +5 -0
  243. package/dist/updates/add-to-set.mjs.map +1 -1
  244. package/dist/updates/add.cjs +5 -0
  245. package/dist/updates/add.cjs.map +1 -1
  246. package/dist/updates/add.d.ts +6 -1
  247. package/dist/updates/add.mjs +5 -0
  248. package/dist/updates/add.mjs.map +1 -1
  249. package/dist/updates/append.cjs +5 -0
  250. package/dist/updates/append.cjs.map +1 -1
  251. package/dist/updates/append.d.ts +6 -1
  252. package/dist/updates/append.mjs +5 -0
  253. package/dist/updates/append.mjs.map +1 -1
  254. package/dist/updates/index.d.ts +78 -1
  255. package/dist/updates/prepend.cjs +5 -0
  256. package/dist/updates/prepend.cjs.map +1 -1
  257. package/dist/updates/prepend.d.ts +6 -1
  258. package/dist/updates/prepend.mjs +5 -0
  259. package/dist/updates/prepend.mjs.map +1 -1
  260. package/dist/updates/ref.cjs +6 -0
  261. package/dist/updates/ref.cjs.map +1 -1
  262. package/dist/updates/ref.d.ts +7 -1
  263. package/dist/updates/ref.mjs +6 -0
  264. package/dist/updates/ref.mjs.map +1 -1
  265. package/dist/updates/remove-from-set.cjs +5 -0
  266. package/dist/updates/remove-from-set.cjs.map +1 -1
  267. package/dist/updates/remove-from-set.d.ts +6 -1
  268. package/dist/updates/remove-from-set.mjs +5 -0
  269. package/dist/updates/remove-from-set.mjs.map +1 -1
  270. package/dist/updates/remove.cjs +3 -0
  271. package/dist/updates/remove.cjs.map +1 -1
  272. package/dist/updates/remove.d.ts +4 -1
  273. package/dist/updates/remove.mjs +3 -0
  274. package/dist/updates/remove.mjs.map +1 -1
  275. package/dist/updates/subtract.cjs +5 -0
  276. package/dist/updates/subtract.cjs.map +1 -1
  277. package/dist/updates/subtract.d.ts +6 -1
  278. package/dist/updates/subtract.mjs +5 -0
  279. package/dist/updates/subtract.mjs.map +1 -1
  280. package/dist/updates/update-parser.cjs +10 -0
  281. package/dist/updates/update-parser.cjs.map +1 -1
  282. package/dist/updates/update-parser.d.ts +17 -1
  283. package/dist/updates/update-parser.mjs +10 -0
  284. package/dist/updates/update-parser.mjs.map +1 -1
  285. package/package.json +2 -1
  286. package/dist/commands/base-command.cjs +0 -3
  287. package/dist/commands/base-command.cjs.map +0 -1
  288. package/dist/commands/base-command.d.ts +0 -27
  289. package/dist/commands/base-command.mjs +0 -2
  290. package/dist/commands/base-command.mjs.map +0 -1
  291. package/dist/conditions/condition-types.cjs +0 -3
  292. package/dist/conditions/condition-types.cjs.map +0 -1
  293. package/dist/conditions/condition-types.d.ts +0 -95
  294. package/dist/conditions/condition-types.mjs +0 -2
  295. package/dist/conditions/condition-types.mjs.map +0 -1
  296. package/dist/core/core-types.cjs +0 -3
  297. package/dist/core/core-types.cjs.map +0 -1
  298. package/dist/core/core-types.d.ts +0 -44
  299. package/dist/core/core-types.mjs +0 -2
  300. package/dist/core/core-types.mjs.map +0 -1
  301. package/dist/projections/projection-types.cjs +0 -3
  302. package/dist/projections/projection-types.cjs.map +0 -1
  303. package/dist/projections/projection-types.d.ts +0 -3
  304. package/dist/projections/projection-types.mjs +0 -2
  305. package/dist/projections/projection-types.mjs.map +0 -1
  306. package/dist/updates/update-types.cjs +0 -3
  307. package/dist/updates/update-types.cjs.map +0 -1
  308. package/dist/updates/update-types.d.ts +0 -45
  309. package/dist/updates/update-types.mjs +0 -2
  310. package/dist/updates/update-types.mjs.map +0 -1
@@ -2,6 +2,11 @@ import { __classPrivateFieldSet, __classPrivateFieldGet, __awaiter, __asyncGener
2
2
  import { DocumentBuilderError } from '../errors.mjs';
3
3
 
4
4
  var _DynamoEntity_table, _DynamoEntity_schema, _DynamoEntity_pk, _DynamoEntity_sk, _DynamoEntity_gsi, _DynamoEntity_lsi;
5
+ /**
6
+ * Core class that represents a DynamoDB entity.
7
+ *
8
+ * @template Schema - The Zod schema representing the entity's structure.
9
+ */
5
10
  class DynamoEntity {
6
11
  constructor(config) {
7
12
  var _a, _b;
@@ -18,26 +23,46 @@ class DynamoEntity {
18
23
  __classPrivateFieldSet(this, _DynamoEntity_gsi, (_a = config.globalSecondaryIndexes) !== null && _a !== void 0 ? _a : {}, "f");
19
24
  __classPrivateFieldSet(this, _DynamoEntity_lsi, (_b = config.localSecondaryIndexes) !== null && _b !== void 0 ? _b : {}, "f");
20
25
  }
26
+ /**
27
+ * Gets the DynamoDB table associated with this entity.
28
+ */
21
29
  get table() {
22
30
  return __classPrivateFieldGet(this, _DynamoEntity_table, "f");
23
31
  }
32
+ /**
33
+ * Gets the Zod schema defining the structure of this entity.
34
+ */
24
35
  get schema() {
25
36
  return __classPrivateFieldGet(this, _DynamoEntity_schema, "f");
26
37
  }
38
+ /**
39
+ * Gets the key builders for the secondary indexes defined on this entity.
40
+ */
27
41
  get secondaryIndexKeyBuilders() {
28
42
  return {
29
43
  gsi: __classPrivateFieldGet(this, _DynamoEntity_gsi, "f"),
30
44
  lsi: __classPrivateFieldGet(this, _DynamoEntity_lsi, "f"),
31
45
  };
32
46
  }
47
+ /**
48
+ * Builds the partition key for the given item using the entity's partition key builder.
49
+ */
33
50
  buildPartitionKey(item) {
34
51
  var _a;
35
52
  return (_a = __classPrivateFieldGet(this, _DynamoEntity_pk, "f")) === null || _a === void 0 ? void 0 : _a.call(this, item);
36
53
  }
54
+ /**
55
+ * Builds the sort key for the given item using the entity's sort key builder.
56
+ */
37
57
  buildSortKey(item) {
38
58
  var _a;
39
59
  return (_a = __classPrivateFieldGet(this, _DynamoEntity_sk, "f")) === null || _a === void 0 ? void 0 : _a.call(this, item);
40
60
  }
61
+ /**
62
+ * Builds the primary key for the given item, including both partition and sort keys if defined.
63
+ *
64
+ * If the entity does not have partition or sort key builders defined, the item is returned as-is.
65
+ */
41
66
  buildPrimaryKey(item) {
42
67
  if (!__classPrivateFieldGet(this, _DynamoEntity_pk, "f") && !__classPrivateFieldGet(this, _DynamoEntity_sk, "f")) {
43
68
  return item;
@@ -57,6 +82,12 @@ class DynamoEntity {
57
82
  }
58
83
  return key;
59
84
  }
85
+ /**
86
+ * Builds the key for a global secondary index for the given item.
87
+ *
88
+ * If the specified index does not exist or its key builders are not defined,
89
+ * the item is returned as-is.
90
+ */
60
91
  buildGlobalSecondaryIndexKey(indexName, item) {
61
92
  const gsiKeyBuilder = __classPrivateFieldGet(this, _DynamoEntity_gsi, "f")[indexName];
62
93
  const gsiKeyNames = this.table.globalSecondaryIndexKeyNames[indexName];
@@ -81,6 +112,12 @@ class DynamoEntity {
81
112
  }
82
113
  return key;
83
114
  }
115
+ /**
116
+ * Builds the key for a local secondary index for the given item.
117
+ *
118
+ * If the specified index does not exist or its key builders are not defined,
119
+ * the item is returned as-is.
120
+ */
84
121
  buildLocalSecondaryIndexKey(indexName, item) {
85
122
  const lsiKeyBuilder = __classPrivateFieldGet(this, _DynamoEntity_lsi, "f")[indexName];
86
123
  const lsiKeyNames = this.table.localSecondaryIndexKeyNames[indexName];
@@ -96,6 +133,17 @@ class DynamoEntity {
96
133
  }
97
134
  return key;
98
135
  }
136
+ /**
137
+ * Builds either a primary key or a secondary index key based on the provided input.
138
+ *
139
+ * If the input contains a `key`, the primary key is built.
140
+ * If the input contains an `index`, the corresponding secondary index key is built.
141
+ *
142
+ * Works similarly to the other key building methods and will pass-through the key or index
143
+ * input if the entity does not have the necessary key builders defined.
144
+ *
145
+ * @throws DocumentBuilderError if the index name is missing or not defined on the entity.
146
+ */
99
147
  buildPrimaryOrIndexKey(keyInput) {
100
148
  if ('key' in keyInput) {
101
149
  return this.buildPrimaryKey(keyInput.key);
@@ -116,6 +164,9 @@ class DynamoEntity {
116
164
  }
117
165
  throw new DocumentBuilderError(`Index "${indexName}" is not defined on entity`);
118
166
  }
167
+ /**
168
+ * Builds all keys (primary and secondary index keys) for the given item.
169
+ */
119
170
  buildAllKeys(item) {
120
171
  const allKeys = this.buildPrimaryKey(item);
121
172
  for (const indexName of Object.keys(__classPrivateFieldGet(this, _DynamoEntity_gsi, "f"))) {
@@ -126,11 +177,17 @@ class DynamoEntity {
126
177
  }
127
178
  return allKeys;
128
179
  }
180
+ /**
181
+ * Sends a command to be executed against this entity's table.
182
+ */
129
183
  send(command) {
130
184
  return __awaiter(this, void 0, void 0, function* () {
131
185
  return yield command.execute(this);
132
186
  });
133
187
  }
188
+ /**
189
+ * Paginates through results of a paginatable command for this entity's table.
190
+ */
134
191
  paginate(paginatable) {
135
192
  return __asyncGenerator(this, arguments, function* paginate_1() {
136
193
  var _a, e_1, _b, _c;
@@ -151,6 +208,120 @@ class DynamoEntity {
151
208
  }
152
209
  });
153
210
  }
211
+ prepare(input) {
212
+ var _a;
213
+ // WriteTransactable[] — array of transact write operations
214
+ if (Array.isArray(input)) {
215
+ return {
216
+ entity: this,
217
+ writes: input,
218
+ };
219
+ }
220
+ // BatchWritePreparable — has items and/or deletes, no keys
221
+ if ('items' in input || ('deletes' in input && !('keys' in input))) {
222
+ const batchWrite = input;
223
+ return {
224
+ entity: this,
225
+ buildRequests: (skipValidation, abortSignal) => __awaiter(this, void 0, void 0, function* () {
226
+ const putRequests = [];
227
+ const deleteRequests = [];
228
+ if (batchWrite.items && batchWrite.items.length > 0) {
229
+ for (const item of batchWrite.items) {
230
+ if (skipValidation) {
231
+ putRequests.push({
232
+ PutRequest: {
233
+ Item: Object.assign(Object.assign({}, item), this.buildAllKeys(item)),
234
+ },
235
+ });
236
+ }
237
+ else {
238
+ const encodedData = yield __classPrivateFieldGet(this, _DynamoEntity_schema, "f").encodeAsync(item);
239
+ putRequests.push({
240
+ PutRequest: {
241
+ Item: Object.assign(Object.assign({}, encodedData), this.buildAllKeys(item)),
242
+ },
243
+ });
244
+ }
245
+ }
246
+ }
247
+ if (batchWrite.deletes && batchWrite.deletes.length > 0) {
248
+ for (const deleteKey of batchWrite.deletes) {
249
+ deleteRequests.push({
250
+ DeleteRequest: {
251
+ Key: this.buildPrimaryKey(deleteKey),
252
+ },
253
+ });
254
+ }
255
+ }
256
+ return [...putRequests, ...deleteRequests];
257
+ }),
258
+ matchUnprocessedPut: (item) => {
259
+ if (!batchWrite.items)
260
+ return undefined;
261
+ const itemPrimaryKey = this.buildPrimaryKey(item);
262
+ return batchWrite.items.find(original => {
263
+ const originalKey = this.buildPrimaryKey(original);
264
+ return JSON.stringify(originalKey) === JSON.stringify(itemPrimaryKey);
265
+ });
266
+ },
267
+ matchUnprocessedDelete: (key) => {
268
+ if (!batchWrite.deletes)
269
+ return undefined;
270
+ const keyStr = JSON.stringify(key);
271
+ return batchWrite.deletes.find(original => {
272
+ const originalKey = this.buildPrimaryKey(original);
273
+ return JSON.stringify(originalKey) === keyStr;
274
+ });
275
+ },
276
+ };
277
+ }
278
+ // BatchGetPreparable — has keys as entity partials plus consistent flag
279
+ if ('consistent' in input) {
280
+ const batchGet = input;
281
+ const builtKeys = batchGet.keys.map(k => this.buildPrimaryKey(k));
282
+ return {
283
+ entity: this,
284
+ keys: builtKeys,
285
+ consistent: (_a = batchGet.consistent) !== null && _a !== void 0 ? _a : false,
286
+ matchItem: (item) => {
287
+ const itemKey = this.buildPrimaryKey(item);
288
+ const itemKeyStr = JSON.stringify(itemKey);
289
+ return builtKeys.some(k => JSON.stringify(k) === itemKeyStr);
290
+ },
291
+ parseResults: (items, skipValidation) => __awaiter(this, void 0, void 0, function* () {
292
+ return yield Promise.all(items.map((item) => __awaiter(this, void 0, void 0, function* () {
293
+ if (skipValidation)
294
+ return item;
295
+ return yield __classPrivateFieldGet(this, _DynamoEntity_schema, "f").parseAsync(item);
296
+ })));
297
+ }),
298
+ matchUnprocessedKey: (key) => {
299
+ const keyStr = JSON.stringify(key);
300
+ return batchGet.keys.find(original => {
301
+ const originalKey = this.buildPrimaryKey(original);
302
+ return JSON.stringify(originalKey) === keyStr;
303
+ });
304
+ },
305
+ };
306
+ }
307
+ // GetTransactable — has keys as entity partials, no consistent flag
308
+ return {
309
+ entity: this,
310
+ keys: input.keys.map(key => ({
311
+ TableName: __classPrivateFieldGet(this, _DynamoEntity_table, "f").tableName,
312
+ Key: this.buildPrimaryKey(key),
313
+ })),
314
+ parseResults: (items, skipValidation) => __awaiter(this, void 0, void 0, function* () {
315
+ return yield Promise.all(items.map((item) => __awaiter(this, void 0, void 0, function* () {
316
+ if (item === undefined || item === null)
317
+ return undefined;
318
+ if (skipValidation)
319
+ return item;
320
+ return yield __classPrivateFieldGet(this, _DynamoEntity_schema, "f").parseAsync(item);
321
+ })));
322
+ }),
323
+ };
324
+ }
154
325
  }
155
326
  _DynamoEntity_table = new WeakMap(), _DynamoEntity_schema = new WeakMap(), _DynamoEntity_pk = new WeakMap(), _DynamoEntity_sk = new WeakMap(), _DynamoEntity_gsi = new WeakMap(), _DynamoEntity_lsi = new WeakMap();
156
327
 
@@ -1 +1 @@
1
- {"version":3,"file":"entity.mjs","sources":["../../src/core/entity.ts"],"sourcesContent":[null],"names":[],"mappings":";;;;MAiCa,YAAY,CAAA;AAUvB,IAAA,WAAA,CAAY,MAAkC,EAAA;;QAT9C,mBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;QACA,oBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;QAEA,gBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;QACA,gBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;QAEA,iBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;QACA,iBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAGE,QAAA,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAU,MAAM,CAAC,KAAK,MAAA;AAC1B,QAAA,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAW,MAAM,CAAC,MAAM,MAAA;AAE5B,QAAA,sBAAA,CAAA,IAAI,EAAA,gBAAA,EAAO,MAAM,CAAC,YAAY,MAAA;AAC9B,QAAA,sBAAA,CAAA,IAAI,EAAA,gBAAA,EAAO,MAAM,CAAC,OAAO,MAAA;QAEzB,sBAAA,CAAA,IAAI,qBAAQ,CAAA,EAAA,GAAA,MAAM,CAAC,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,EAAA,GAAA,CAAA;QAC/C,sBAAA,CAAA,IAAI,qBAAQ,CAAA,EAAA,GAAA,MAAM,CAAC,qBAAqB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,EAAA,GAAA,CAAA;IAChD;AAEA,IAAA,IAAW,KAAK,GAAA;QACd,OAAO,sBAAA,CAAA,IAAI,EAAA,mBAAA,EAAA,GAAA,CAAO;IACpB;AAEA,IAAA,IAAW,MAAM,GAAA;QACf,OAAO,sBAAA,CAAA,IAAI,EAAA,oBAAA,EAAA,GAAA,CAAQ;IACrB;AAEA,IAAA,IAAW,yBAAyB,GAAA;QAIlC,OAAO;YACL,GAAG,EAAE,sBAAA,CAAA,IAAI,EAAA,iBAAA,EAAA,GAAA,CAAK;YACd,GAAG,EAAE,sBAAA,CAAA,IAAI,EAAA,iBAAA,EAAA,GAAA,CAAK;SACf;IACH;AAEO,IAAA,iBAAiB,CAAC,IAAmC,EAAA;;QAC1D,OAAO,CAAA,EAAA,GAAA,uBAAA,IAAI,EAAA,gBAAA,EAAA,GAAA,CAAI,+CAAR,IAAI,EAAO,IAA4B,CAAC;IACjD;AAEO,IAAA,YAAY,CAAC,IAAmC,EAAA;;QACrD,OAAO,CAAA,EAAA,GAAA,uBAAA,IAAI,EAAA,gBAAA,EAAA,GAAA,CAAI,+CAAR,IAAI,EAAO,IAA4B,CAAC;IACjD;AAEO,IAAA,eAAe,CAAC,IAAmC,EAAA;QACxD,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,gBAAA,EAAA,GAAA,CAAI,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,gBAAA,EAAA,GAAA,CAAI,EAAE;AAC1B,YAAA,OAAO,IAAiB;QAC1B;QACA,MAAM,GAAG,GAAc,EAAE;AACzB,QAAA,IAAI,sBAAA,CAAA,IAAI,EAAA,gBAAA,EAAA,GAAA,CAAI,EAAE;YACZ,MAAM,EAAE,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC;AACvC,YAAA,IAAI,EAAE,KAAK,SAAS,EAAE;gBACpB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,EAAE;YACvC;QACF;AACA,QAAA,IAAI,sBAAA,CAAA,IAAI,EAAA,gBAAA,EAAA,GAAA,CAAI,IAAI,IAAI,CAAC,KAAK,CAAC,WAAW,KAAK,IAAI,EAAE;YAC/C,MAAM,EAAE,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC;AAClC,YAAA,IAAI,EAAE,KAAK,SAAS,EAAE;gBACpB,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,EAAE;YAClC;QACF;AACA,QAAA,OAAO,GAAG;IACZ;IAEO,4BAA4B,CACjC,SAAiB,EACjB,IAAmC,EAAA;QAEnC,MAAM,aAAa,GAAG,sBAAA,CAAA,IAAI,yBAAK,CAAC,SAAS,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,4BAA4B,CAAC,SAAS,CAAC;AAEtE,QAAA,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE;AAClC,YAAA,OAAO,IAAsB;QAC/B;QAEA,MAAM,GAAG,GAAmB,EAAE;AAC9B,QAAA,IAAI,WAAW,CAAC,YAAY,EAAE;YAC5B,MAAM,KAAK,GAAG,aAAa,CAAC,YAAY,CAAC,IAA4B,CAAC;AACtE,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,gBAAA,GAAG,CAAC,WAAW,CAAC,YAAY,CAAC,GAAG,KAAK;YACvC;AAAO,iBAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AAC9B,gBAAA,OAAO,EAAE;YACX;QACF;QACA,IAAI,aAAa,CAAC,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE;YAChD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,IAA4B,CAAC;AACjE,YAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,gBAAA,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,KAAK;YAClC;QACF;AACA,QAAA,OAAO,GAAG;IACZ;IAEO,2BAA2B,CAChC,SAAiB,EACjB,IAAmC,EAAA;QAEnC,MAAM,aAAa,GAAG,sBAAA,CAAA,IAAI,yBAAK,CAAC,SAAS,CAAC;QAC1C,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,2BAA2B,CAAC,SAAS,CAAC;QAErE,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,gBAAA,EAAA,GAAA,CAAI,IAAI,CAAC,aAAa,IAAI,CAAC,WAAW,EAAE;AAC/C,YAAA,OAAO,IAAsB;QAC/B;AAEA,QAAA,MAAM,GAAG,GAAmB;AAC1B,YAAA,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAE;SAC7D;QACD,MAAM,KAAK,GAAG,aAAa,CAAC,OAAO,CAAC,IAA4B,CAAC;AACjE,QAAA,IAAI,KAAK,KAAK,SAAS,EAAE;AACvB,YAAA,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,GAAG,KAAK;QAClC;AACA,QAAA,OAAO,GAAG;IACZ;AAEO,IAAA,sBAAsB,CAC3B,QAA8C,EAAA;AAE9C,QAAA,IAAI,KAAK,IAAI,QAAQ,EAAE;YACrB,OAAO,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,GAAG,CAAC;QAC3C;QACA,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;AAC9C,QAAA,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,EAAE;AAC3B,YAAA,MAAM,IAAI,oBAAoB,CAAC,2CAA2C,CAAC;QAC7E;AAAO,aAAA,IAAI,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE;AAChC,YAAA,MAAM,IAAI,oBAAoB,CAAC,oDAAoD,CAAC;QACtF;AACA,QAAA,MAAM,SAAS,GAAG,UAAU,CAAC,CAAC,CAAE;AAChC,QAAA,IAAI,uBAAA,IAAI,EAAA,iBAAA,EAAA,GAAA,CAAK,CAAC,SAAS,CAAC,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,4BAA4B,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAE,CAAC;QACjF;AACA,QAAA,IAAI,uBAAA,IAAI,EAAA,iBAAA,EAAA,GAAA,CAAK,CAAC,SAAS,CAAC,EAAE;AACxB,YAAA,OAAO,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,CAAC,SAAS,CAAE,CAAC;QAChF;AACA,QAAA,MAAM,IAAI,oBAAoB,CAAC,UAAU,SAAS,CAAA,0BAAA,CAA4B,CAAC;IACjF;AAEO,IAAA,YAAY,CAAC,IAAmC,EAAA;QACrD,MAAM,OAAO,GAAc,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC;AACrD,QAAA,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,iBAAA,EAAA,GAAA,CAAK,CAAC,EAAE;AAC9C,YAAA,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,4BAA4B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5E;AACA,QAAA,KAAK,MAAM,SAAS,IAAI,MAAM,CAAC,IAAI,CAAC,sBAAA,CAAA,IAAI,EAAA,iBAAA,EAAA,GAAA,CAAK,CAAC,EAAE;AAC9C,YAAA,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,2BAA2B,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC3E;AACA,QAAA,OAAO,OAAO;IAChB;AAEa,IAAA,IAAI,CACf,OAA2C,EAAA;;AAE3C,YAAA,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QACpC,CAAC,CAAA;AAAA,IAAA;AAEa,IAAA,QAAQ,CACpB,WAAmD,EAAA;;;;AAEnD,gBAAA,KAAyB,IAAA,EAAA,GAAA,IAAA,EAAA,EAAA,GAAA,aAAA,CAAA,WAAW,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA,EAAA,EAAA,EAAA,EAAA,GAAA,MAAA,OAAA,CAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,EAAA,GAAA,EAAA,CAAA,IAAA,EAAA,CAAA,EAAA,EAAA,EAAA,GAAA,IAAA,EAAE;oBAApC,EAAA,GAAA,EAAA,CAAA,KAAA;oBAAA,EAAA,GAAA,KAAA;oBAAd,MAAM,IAAI,KAAA;oBACnB,MAAA,MAAA,OAAA,CAAM,IAAI,CAAA;gBACZ;;;;;;;;;QACF,CAAC,CAAA;AAAA,IAAA;AACF;;;;;"}
1
+ {"version":3,"file":"entity.mjs","sources":["../../src/core/entity.ts"],"sourcesContent":[null],"names":[],"mappings":"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"}
@@ -1,4 +1,141 @@
1
- export { EncodedEntity, EncodedEntitySchema, Entity, EntitySchema, GlobalSecondaryIndexKeyName, IndexName, LocalSecondaryIndexKeyName, NamedGlobalSecondaryIndexKeyNames, NamedLocalSecondaryIndexKeyNames, TransactWriteOperation } from './core-types.js';
2
- export { DynamoEntity, DynamoEntityConfig, EntityKeyInput } from './entity.js';
1
+ import { DynamoEntity } from './entity.js';
2
+ export { DynamoEntityConfig, EntityKeyInput } from './entity.js';
3
3
  export { DynamoIndexKey, DynamoIndexKeyBuilder, DynamoIndexKeyableValue, DynamoKey, DynamoKeyBuilder, DynamoKeyableValue, GlobalSecondaryIndexKeyBuilders, LocalSecondaryIndexKeyBuilders, indexKey, key } from './key.js';
4
4
  export { DynamoTable, DynamoTableConfig } from './table.js';
5
+ import { ZodObject, output, input } from 'zod/v4';
6
+ import { TransactWriteItem, ConditionCheck, Put, Delete, Update } from '@aws-sdk/client-dynamodb';
7
+ import { NativeAttributeValue } from '@aws-sdk/lib-dynamodb';
8
+
9
+ /**
10
+ * Utility type used to derive the type from the Zod schema definition. Mainly for internal use.
11
+ *
12
+ * To get the schema type from an entity use [`Entity<E>`](/api-reference/type-aliases/entity) instead.
13
+ */
14
+ type EntitySchema<Schema extends ZodObject> = output<Schema>;
15
+ /**
16
+ * Utility type used to derive the input type from the Zod schema definition. Mainly for internal use.
17
+ *
18
+ * To get the input schema type from an entity use [`EncodedEntity<E>`](/api-reference/type-aliases/encodedentity) instead.
19
+ */
20
+ type EncodedEntitySchema<Schema extends ZodObject> = input<Schema>;
21
+ /**
22
+ * Utility type to derive the type of a DynamoEntity's schema.
23
+ *
24
+ * This is the Zod *output* type of a Zod schema (the type after a codec has been applied).
25
+ * It is the equivalent of `z.infer<typeof entity.schema>` or `z.output<typeof entity.schema>`.
26
+ *
27
+ * @example
28
+ * ```ts
29
+ * import { DynamoTable, DynamoEntity, type Entity } from 'dynamo-document-builder';
30
+ * import { z } from 'zod';
31
+ *
32
+ * const table = new DynamoTable({
33
+ * tableName: 'ExampleTable',
34
+ * documentClient,
35
+ * });
36
+ *
37
+ * const userEntity = new DynamoEntity({
38
+ * table,
39
+ * schema: z.object({
40
+ * id: z.string(),
41
+ * name: z.string(),
42
+ * age: z.number().optional(),
43
+ * }),
44
+ * partitionKey: user => key('USER', user.id),
45
+ * sortKey: user => 'USER',
46
+ * });
47
+ *
48
+ * type User = Entity<typeof userEntity>;
49
+ */
50
+ type Entity<E extends DynamoEntity<any>> = output<E['schema']>;
51
+ /**
52
+ * Utility type to derive the input type of a DynamoEntity's schema.
53
+ *
54
+ * This is the Zod *input* type of a Zod schema (the type before a codec has been applied).
55
+ * It is the equivalent of `z.input<typeof entity.schema>`.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * import { DynamoTable, DynamoEntity, type EncodedEntity } from 'dynamo-document-builder';
60
+ * import { z } from 'zod';
61
+ *
62
+ * const table = new DynamoTable({
63
+ * tableName: 'ExampleTable',
64
+ * documentClient,
65
+ * });
66
+ *
67
+ * const isoDatetimeToDate = z.codec(z.iso.datetime(), z.date(), {
68
+ * decode: isoString => new Date(isoString),
69
+ * encode: date => date.toISOString(),
70
+ * });
71
+ *
72
+ * const checkinEntity = new DynamoEntity({
73
+ * table,
74
+ * schema: z.object({
75
+ * id: z.string(),
76
+ * timestamp: isoDatetimeToDate,
77
+ * }),
78
+ * });
79
+ *
80
+ * type EncodedUser = EncodedEntity<typeof userEntity>;
81
+ *
82
+ * // EncodedUser is:
83
+ * // {
84
+ * // id: string;
85
+ * // timestamp: string; // ISO datetime string
86
+ * // }
87
+ * ```
88
+ */
89
+ type EncodedEntity<E extends DynamoEntity<any>> = input<E['schema']>;
90
+ /**
91
+ * Type used to indicate the name of a DynamoDB secondary index.
92
+ */
93
+ type IndexName = string;
94
+ /**
95
+ * Type representing the key names for a **global** secondary index.
96
+ */
97
+ type GlobalSecondaryIndexKeyName = {
98
+ partitionKey: string;
99
+ sortKey?: string;
100
+ };
101
+ /**
102
+ * Type representing the key names for a **local** secondary index.
103
+ */
104
+ type LocalSecondaryIndexKeyName = {
105
+ sortKey: string;
106
+ };
107
+ /**
108
+ * Type mapping index names to their corresponding global secondary index key names.
109
+ */
110
+ type NamedGlobalSecondaryIndexKeyNames = Record<IndexName, GlobalSecondaryIndexKeyName>;
111
+ /**
112
+ * Type mapping index names to their corresponding local secondary index key names.
113
+ */
114
+ type NamedLocalSecondaryIndexKeyNames = Record<IndexName, LocalSecondaryIndexKeyName>;
115
+ /**
116
+ * A modified version of TransactWriteItem that uses NativeAttributeValue for keys and items
117
+ * (dynamodb-lib doesnt export this type for some reason).
118
+ *
119
+ * See: https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-lib-dynamodb/TypeAlias/TransactWriteCommandInput/
120
+ */
121
+ type TransactWriteOperation = Omit<TransactWriteItem, 'ConditionCheck' | 'Put' | 'Delete' | 'Update'> & {
122
+ ConditionCheck?: (Omit<ConditionCheck, 'Key' | 'ExpressionAttributeValues'> & {
123
+ Key: Record<string, NativeAttributeValue> | undefined;
124
+ ExpressionAttributeValues?: Record<string, NativeAttributeValue> | undefined;
125
+ }) | undefined;
126
+ Put?: (Omit<Put, 'Item' | 'ExpressionAttributeValues'> & {
127
+ Item: Record<string, NativeAttributeValue> | undefined;
128
+ ExpressionAttributeValues?: Record<string, NativeAttributeValue> | undefined;
129
+ }) | undefined;
130
+ Delete?: (Omit<Delete, 'Key' | 'ExpressionAttributeValues'> & {
131
+ Key: Record<string, NativeAttributeValue> | undefined;
132
+ ExpressionAttributeValues?: Record<string, NativeAttributeValue> | undefined;
133
+ }) | undefined;
134
+ Update?: (Omit<Update, 'Key' | 'ExpressionAttributeValues'> & {
135
+ Key: Record<string, NativeAttributeValue> | undefined;
136
+ ExpressionAttributeValues?: Record<string, NativeAttributeValue> | undefined;
137
+ }) | undefined;
138
+ };
139
+
140
+ export { DynamoEntity };
141
+ export type { EncodedEntity, EncodedEntitySchema, Entity, EntitySchema, GlobalSecondaryIndexKeyName, IndexName, LocalSecondaryIndexKeyName, NamedGlobalSecondaryIndexKeyNames, NamedLocalSecondaryIndexKeyNames, TransactWriteOperation };
package/dist/core/key.cjs CHANGED
@@ -3,7 +3,7 @@
3
3
  var errors = require('../errors.cjs');
4
4
 
5
5
  /**
6
- * Builds a DynamoDB key from the given parts by concatenating them with a '#' separator.
6
+ * Builds a DynamoDB key from the given parts by concatenating them with a `#` separator.
7
7
  * At least one part must be provided, or a DocumentBuilderError will be thrown.
8
8
  *
9
9
  * @param parts - The parts to combine into a key.
@@ -1 +1 @@
1
- {"version":3,"file":"key.cjs","sources":["../../src/core/key.ts"],"sourcesContent":[null],"names":["DocumentBuilderError"],"mappings":";;;;AA2BA;;;;;;;;;;;;AAYG;AACG,SAAU,GAAG,CAAC,GAAG,KAA2B,EAAA;AAChD,IAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,QAAA,MAAM,IAAIA,2BAAoB,CAAC,wCAAwC,CAAC;IAC1E;AACA,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB;AAEA;;;;;;;;;;;;;;;;;;AAkBG;AACG,SAAU,QAAQ,CAAC,GAAG,KAAgC,EAAA;IAC1D,IAAI,GAAG,GAAW,EAAE;AACpB,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,GAAG,IAAI,GAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,GAAG,IAAI;IAChC;AACA,IAAA,OAAO,GAAG;AACZ;;;;;"}
1
+ {"version":3,"file":"key.cjs","sources":["../../src/core/key.ts"],"sourcesContent":[null],"names":["DocumentBuilderError"],"mappings":";;;;AAsDA;;;;;;;;;;;;AAYG;AACG,SAAU,GAAG,CAAC,GAAG,KAA2B,EAAA;AAChD,IAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,QAAA,MAAM,IAAIA,2BAAoB,CAAC,wCAAwC,CAAC;IAC1E;AACA,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB;AAEA;;;;;;;;;;;;;;;;;;AAkBG;AACG,SAAU,QAAQ,CAAC,GAAG,KAAgC,EAAA;IAC1D,IAAI,GAAG,GAAW,EAAE;AACpB,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,GAAG,IAAI,GAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,GAAG,IAAI;IAChC;AACA,IAAA,OAAO,GAAG;AACZ;;;;;"}
@@ -1,20 +1,44 @@
1
- import { IndexName } from './core-types.js';
1
+ import { IndexName } from './index.js';
2
2
 
3
+ /**
4
+ * Represents a value that can be used as a DynamoDB primary key.
5
+ */
3
6
  type DynamoKeyableValue = string | number | Buffer;
7
+ /**
8
+ * Represents a value that can be used as a DynamoDB secondary index key.
9
+ */
4
10
  type DynamoIndexKeyableValue = string | number | Buffer | undefined;
11
+ /**
12
+ * A function that builds a DynamoDB primary key from an item.
13
+ */
5
14
  type DynamoKeyBuilder<Item> = (item: Item) => DynamoKeyableValue;
15
+ /**
16
+ * A function that builds a DynamoDB secondary index key from an item.
17
+ */
6
18
  type DynamoIndexKeyBuilder<Item> = (item: Item) => DynamoIndexKeyableValue;
19
+ /**
20
+ * A mapping type of global secondary index names to their key builders.
21
+ */
7
22
  type GlobalSecondaryIndexKeyBuilders<Item> = Record<IndexName, {
8
23
  partitionKey: DynamoIndexKeyBuilder<Item>;
9
24
  sortKey?: DynamoIndexKeyBuilder<Item>;
10
25
  }>;
26
+ /**
27
+ * A mapping type of local secondary index names to their key builders.
28
+ */
11
29
  type LocalSecondaryIndexKeyBuilders<Item> = Record<IndexName, {
12
30
  sortKey: DynamoIndexKeyBuilder<Item>;
13
31
  }>;
32
+ /**
33
+ * Record type representing a DynamoDB primary key.
34
+ */
14
35
  type DynamoKey = Record<string, DynamoKeyableValue>;
36
+ /**
37
+ * Record type representing a DynamoDB secondary index key.
38
+ */
15
39
  type DynamoIndexKey = Record<string, DynamoIndexKeyableValue>;
16
40
  /**
17
- * Builds a DynamoDB key from the given parts by concatenating them with a '#' separator.
41
+ * Builds a DynamoDB key from the given parts by concatenating them with a `#` separator.
18
42
  * At least one part must be provided, or a DocumentBuilderError will be thrown.
19
43
  *
20
44
  * @param parts - The parts to combine into a key.
package/dist/core/key.mjs CHANGED
@@ -1,7 +1,7 @@
1
1
  import { DocumentBuilderError } from '../errors.mjs';
2
2
 
3
3
  /**
4
- * Builds a DynamoDB key from the given parts by concatenating them with a '#' separator.
4
+ * Builds a DynamoDB key from the given parts by concatenating them with a `#` separator.
5
5
  * At least one part must be provided, or a DocumentBuilderError will be thrown.
6
6
  *
7
7
  * @param parts - The parts to combine into a key.
@@ -1 +1 @@
1
- {"version":3,"file":"key.mjs","sources":["../../src/core/key.ts"],"sourcesContent":[null],"names":[],"mappings":";;AA2BA;;;;;;;;;;;;AAYG;AACG,SAAU,GAAG,CAAC,GAAG,KAA2B,EAAA;AAChD,IAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,QAAA,MAAM,IAAI,oBAAoB,CAAC,wCAAwC,CAAC;IAC1E;AACA,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB;AAEA;;;;;;;;;;;;;;;;;;AAkBG;AACG,SAAU,QAAQ,CAAC,GAAG,KAAgC,EAAA;IAC1D,IAAI,GAAG,GAAW,EAAE;AACpB,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,GAAG,IAAI,GAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,GAAG,IAAI;IAChC;AACA,IAAA,OAAO,GAAG;AACZ;;;;"}
1
+ {"version":3,"file":"key.mjs","sources":["../../src/core/key.ts"],"sourcesContent":[null],"names":[],"mappings":";;AAsDA;;;;;;;;;;;;AAYG;AACG,SAAU,GAAG,CAAC,GAAG,KAA2B,EAAA;AAChD,IAAA,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE;AACjB,QAAA,MAAM,IAAI,oBAAoB,CAAC,wCAAwC,CAAC;IAC1E;AACA,IAAA,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;AACxB;AAEA;;;;;;;;;;;;;;;;;;AAkBG;AACG,SAAU,QAAQ,CAAC,GAAG,KAAgC,EAAA;IAC1D,IAAI,GAAG,GAAW,EAAE;AACpB,IAAA,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE;AACxB,QAAA,IAAI,IAAI,KAAK,SAAS,EAAE;AACtB,YAAA,OAAO,SAAS;QAClB;AACA,QAAA,GAAG,IAAI,GAAG,GAAG,CAAA,CAAA,EAAI,IAAI,CAAA,CAAE,GAAG,IAAI;IAChC;AACA,IAAA,OAAO,GAAG;AACZ;;;;"}
@@ -3,6 +3,9 @@
3
3
  var tslib_es6 = require('../node_modules/tslib/tslib.es6.cjs');
4
4
 
5
5
  var _DynamoTable_tableName, _DynamoTable_documentClient, _DynamoTable_pk, _DynamoTable_sk, _DynamoTable_gsi, _DynamoTable_lsi;
6
+ /**
7
+ * Core class that represents a DynamoDB table.
8
+ */
6
9
  class DynamoTable {
7
10
  constructor(config) {
8
11
  var _a, _b, _c, _d, _e, _f;
@@ -23,24 +26,51 @@ class DynamoTable {
23
26
  tslib_es6.__classPrivateFieldSet(this, _DynamoTable_gsi, (_d = (_c = config.keyNames) === null || _c === void 0 ? void 0 : _c.globalSecondaryIndexes) !== null && _d !== void 0 ? _d : {}, "f");
24
27
  tslib_es6.__classPrivateFieldSet(this, _DynamoTable_lsi, (_f = (_e = config.keyNames) === null || _e === void 0 ? void 0 : _e.localSecondaryIndexes) !== null && _f !== void 0 ? _f : {}, "f");
25
28
  }
29
+ /**
30
+ * The name of the DynamoDB table.
31
+ */
26
32
  get tableName() {
27
33
  return tslib_es6.__classPrivateFieldGet(this, _DynamoTable_tableName, "f");
28
34
  }
35
+ /**
36
+ * The DynamoDB Document Client instance used for operations.
37
+ */
29
38
  get documentClient() {
30
39
  return tslib_es6.__classPrivateFieldGet(this, _DynamoTable_documentClient, "f");
31
40
  }
41
+ /**
42
+ * The name of the partition key for the table.
43
+ */
32
44
  get partitionKeyName() {
33
45
  return tslib_es6.__classPrivateFieldGet(this, _DynamoTable_pk, "f");
34
46
  }
47
+ /**
48
+ * The name of the sort key for the table, or `null` if the table does not have a sort key
49
+ * (`null` would indicate a "simple" primary key).
50
+ */
35
51
  get sortKeyName() {
36
52
  return tslib_es6.__classPrivateFieldGet(this, _DynamoTable_sk, "f");
37
53
  }
54
+ /**
55
+ * The key names for the global secondary indexes defined on the table.
56
+ */
38
57
  get globalSecondaryIndexKeyNames() {
39
58
  return tslib_es6.__classPrivateFieldGet(this, _DynamoTable_gsi, "f");
40
59
  }
60
+ /**
61
+ * The key names for the local secondary indexes defined on the table.
62
+ */
41
63
  get localSecondaryIndexKeyNames() {
42
64
  return tslib_es6.__classPrivateFieldGet(this, _DynamoTable_lsi, "f");
43
65
  }
66
+ /**
67
+ * Sends a table-level command to be executed against this table.
68
+ */
69
+ send(command) {
70
+ return tslib_es6.__awaiter(this, void 0, void 0, function* () {
71
+ return yield command.execute(this);
72
+ });
73
+ }
44
74
  }
45
75
  _DynamoTable_tableName = new WeakMap(), _DynamoTable_documentClient = new WeakMap(), _DynamoTable_pk = new WeakMap(), _DynamoTable_sk = new WeakMap(), _DynamoTable_gsi = new WeakMap(), _DynamoTable_lsi = new WeakMap();
46
76
 
@@ -1 +1 @@
1
- {"version":3,"file":"table.cjs","sources":["../../src/core/table.ts"],"sourcesContent":[null],"names":["__classPrivateFieldSet","__classPrivateFieldGet"],"mappings":";;;;;MAiBa,WAAW,CAAA;AAUtB,IAAA,WAAA,CAAY,MAAyB,EAAA;;QATrC,sBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;QACA,2BAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAEA,QAAA,eAAA,CAAA,GAAA,CAAA,IAAA,EAAc,IAAI,CAAA;AAClB,QAAA,eAAA,CAAA,GAAA,CAAA,IAAA,EAAqB,IAAI,CAAA;QAEzB,gBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;QACA,gBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAGE,QAAAA,gCAAA,CAAA,IAAI,EAAA,sBAAA,EAAc,MAAM,CAAC,SAAS,MAAA;AAClC,QAAAA,gCAAA,CAAA,IAAI,EAAA,2BAAA,EAAmB,MAAM,CAAC,cAAc,MAAA;QAC5C,IAAI,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,0CAAE,YAAY,MAAK,SAAS,EAAE;YAC/CA,gCAAA,CAAA,IAAI,mBAAO,MAAM,CAAC,QAAQ,CAAC,YAAY,MAAA;QACzC;QACA,IAAI,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,0CAAE,OAAO,MAAK,SAAS,EAAE;YAC1CA,gCAAA,CAAA,IAAI,mBAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,MAAA;QACpC;AACA,QAAAA,gCAAA,CAAA,IAAI,EAAA,gBAAA,EAAQ,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,EAAA,GAAA,CAAA;AACzD,QAAAA,gCAAA,CAAA,IAAI,EAAA,gBAAA,EAAQ,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,qBAAqB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,EAAA,GAAA,CAAA;IAC1D;AAEA,IAAA,IAAW,SAAS,GAAA;QAClB,OAAOC,gCAAA,CAAA,IAAI,EAAA,sBAAA,EAAA,GAAA,CAAW;IACxB;AAEA,IAAA,IAAW,cAAc,GAAA;QACvB,OAAOA,gCAAA,CAAA,IAAI,EAAA,2BAAA,EAAA,GAAA,CAAgB;IAC7B;AAEA,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAOA,gCAAA,CAAA,IAAI,EAAA,eAAA,EAAA,GAAA,CAAI;IACjB;AAEA,IAAA,IAAW,WAAW,GAAA;QACpB,OAAOA,gCAAA,CAAA,IAAI,EAAA,eAAA,EAAA,GAAA,CAAI;IACjB;AAEA,IAAA,IAAW,4BAA4B,GAAA;QACrC,OAAOA,gCAAA,CAAA,IAAI,EAAA,gBAAA,EAAA,GAAA,CAAK;IAClB;AAEA,IAAA,IAAW,2BAA2B,GAAA;QACpC,OAAOA,gCAAA,CAAA,IAAI,EAAA,gBAAA,EAAA,GAAA,CAAK;IAClB;AACD;;;;;"}
1
+ {"version":3,"file":"table.cjs","sources":["../../src/core/table.ts"],"sourcesContent":[null],"names":["__classPrivateFieldSet","__classPrivateFieldGet"],"mappings":";;;;;AA2BA;;AAEG;MACU,WAAW,CAAA;AAUtB,IAAA,WAAA,CAAY,MAAyB,EAAA;;QATrC,sBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;QACA,2BAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAEA,QAAA,eAAA,CAAA,GAAA,CAAA,IAAA,EAAc,IAAI,CAAA;AAClB,QAAA,eAAA,CAAA,GAAA,CAAA,IAAA,EAAqB,IAAI,CAAA;QAEzB,gBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;QACA,gBAAA,CAAA,GAAA,CAAA,IAAA,EAAA,MAAA,CAAA;AAGE,QAAAA,gCAAA,CAAA,IAAI,EAAA,sBAAA,EAAc,MAAM,CAAC,SAAS,MAAA;AAClC,QAAAA,gCAAA,CAAA,IAAI,EAAA,2BAAA,EAAmB,MAAM,CAAC,cAAc,MAAA;QAC5C,IAAI,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,0CAAE,YAAY,MAAK,SAAS,EAAE;YAC/CA,gCAAA,CAAA,IAAI,mBAAO,MAAM,CAAC,QAAQ,CAAC,YAAY,MAAA;QACzC;QACA,IAAI,CAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,0CAAE,OAAO,MAAK,SAAS,EAAE;YAC1CA,gCAAA,CAAA,IAAI,mBAAO,MAAM,CAAC,QAAQ,CAAC,OAAO,MAAA;QACpC;AACA,QAAAA,gCAAA,CAAA,IAAI,EAAA,gBAAA,EAAQ,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,sBAAsB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,EAAA,GAAA,CAAA;AACzD,QAAAA,gCAAA,CAAA,IAAI,EAAA,gBAAA,EAAQ,CAAA,EAAA,GAAA,CAAA,EAAA,GAAA,MAAM,CAAC,QAAQ,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,MAAA,GAAA,EAAA,CAAE,qBAAqB,MAAA,IAAA,IAAA,EAAA,KAAA,MAAA,GAAA,EAAA,GAAI,EAAE,EAAA,GAAA,CAAA;IAC1D;AAEA;;AAEG;AACH,IAAA,IAAW,SAAS,GAAA;QAClB,OAAOC,gCAAA,CAAA,IAAI,EAAA,sBAAA,EAAA,GAAA,CAAW;IACxB;AAEA;;AAEG;AACH,IAAA,IAAW,cAAc,GAAA;QACvB,OAAOA,gCAAA,CAAA,IAAI,EAAA,2BAAA,EAAA,GAAA,CAAgB;IAC7B;AAEA;;AAEG;AACH,IAAA,IAAW,gBAAgB,GAAA;QACzB,OAAOA,gCAAA,CAAA,IAAI,EAAA,eAAA,EAAA,GAAA,CAAI;IACjB;AAEA;;;AAGG;AACH,IAAA,IAAW,WAAW,GAAA;QACpB,OAAOA,gCAAA,CAAA,IAAI,EAAA,eAAA,EAAA,GAAA,CAAI;IACjB;AAEA;;AAEG;AACH,IAAA,IAAW,4BAA4B,GAAA;QACrC,OAAOA,gCAAA,CAAA,IAAI,EAAA,gBAAA,EAAA,GAAA,CAAK;IAClB;AAEA;;AAEG;AACH,IAAA,IAAW,2BAA2B,GAAA;QACpC,OAAOA,gCAAA,CAAA,IAAI,EAAA,gBAAA,EAAA,GAAA,CAAK;IAClB;AAEA;;AAEG;AACU,IAAA,IAAI,CAAgB,OAAoC,EAAA;;AACnE,YAAA,OAAO,MAAM,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC;QACpC,CAAC,CAAA;AAAA,IAAA;AACF;;;;;"}
@@ -1,6 +1,19 @@
1
1
  import { DynamoDBDocumentClient } from '@aws-sdk/lib-dynamodb';
2
- import { NamedGlobalSecondaryIndexKeyNames, NamedLocalSecondaryIndexKeyNames } from './core-types.js';
2
+ import { NamedGlobalSecondaryIndexKeyNames, NamedLocalSecondaryIndexKeyNames } from './index.js';
3
+ import { TableCommand } from '../commands/index.js';
3
4
 
5
+ /**
6
+ * Configuration type for creating a DynamoTable.
7
+ *
8
+ * The table is assumed to have a primary key composed of a partition key named `"PK"` and
9
+ * a sort key named `"SK"` by default, unless overridden in the `keyNames` property.
10
+ *
11
+ * @template Schema - The Zod schema representing the entity's structure.
12
+ *
13
+ * @property tableName - The name of the DynamoDB table.
14
+ * @property documentClient - The DynamoDB Document Client instance to use for operations.
15
+ * @property keyNames - Key names object for the table's primary key and secondary indexes.
16
+ */
4
17
  type DynamoTableConfig = {
5
18
  tableName: string;
6
19
  documentClient: DynamoDBDocumentClient;
@@ -11,15 +24,41 @@ type DynamoTableConfig = {
11
24
  localSecondaryIndexes?: NamedLocalSecondaryIndexKeyNames;
12
25
  };
13
26
  };
27
+ /**
28
+ * Core class that represents a DynamoDB table.
29
+ */
14
30
  declare class DynamoTable {
15
31
  #private;
16
32
  constructor(config: DynamoTableConfig);
33
+ /**
34
+ * The name of the DynamoDB table.
35
+ */
17
36
  get tableName(): string;
37
+ /**
38
+ * The DynamoDB Document Client instance used for operations.
39
+ */
18
40
  get documentClient(): DynamoDBDocumentClient;
41
+ /**
42
+ * The name of the partition key for the table.
43
+ */
19
44
  get partitionKeyName(): string;
45
+ /**
46
+ * The name of the sort key for the table, or `null` if the table does not have a sort key
47
+ * (`null` would indicate a "simple" primary key).
48
+ */
20
49
  get sortKeyName(): string | null;
50
+ /**
51
+ * The key names for the global secondary indexes defined on the table.
52
+ */
21
53
  get globalSecondaryIndexKeyNames(): NamedGlobalSecondaryIndexKeyNames;
54
+ /**
55
+ * The key names for the local secondary indexes defined on the table.
56
+ */
22
57
  get localSecondaryIndexKeyNames(): NamedLocalSecondaryIndexKeyNames;
58
+ /**
59
+ * Sends a table-level command to be executed against this table.
60
+ */
61
+ send<CommandOutput>(command: TableCommand<CommandOutput>): Promise<CommandOutput>;
23
62
  }
24
63
 
25
64
  export { DynamoTable };