@kensio/yulin 0.45.0 → 0.47.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 (299) hide show
  1. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-indexed-table-resource.factory.d.ts +37 -0
  2. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-indexed-table-resource.factory.d.ts.map +1 -0
  3. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-indexed-table-resource.factory.js +63 -0
  4. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-indexed-table-resource.factory.js.map +1 -0
  5. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.d.ts.map +1 -1
  6. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.js +2 -0
  7. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-creator.js.map +1 -1
  8. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-index-rules.d.ts +32 -0
  9. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-index-rules.d.ts.map +1 -0
  10. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-index-rules.js +100 -0
  11. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-index-rules.js.map +1 -0
  12. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-indexes.d.ts +22 -0
  13. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-indexes.d.ts.map +1 -0
  14. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-indexes.js +55 -0
  15. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-indexes.js.map +1 -0
  16. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-key-schema.d.ts +11 -0
  17. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-key-schema.d.ts.map +1 -0
  18. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-key-schema.js +16 -0
  19. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-key-schema.js.map +1 -0
  20. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.d.ts +9 -1
  21. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.d.ts.map +1 -1
  22. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.js +20 -17
  23. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-properties.js.map +1 -1
  24. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-error.d.ts +21 -0
  25. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-error.d.ts.map +1 -0
  26. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-error.js +28 -0
  27. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-error.js.map +1 -0
  28. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.d.ts +8 -20
  29. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.d.ts.map +1 -1
  30. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.js +19 -32
  31. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-property-rules.js.map +1 -1
  32. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-throughput.d.ts +11 -0
  33. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-throughput.d.ts.map +1 -0
  34. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-throughput.js +18 -0
  35. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-throughput.js.map +1 -0
  36. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-values.d.ts +17 -4
  37. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-values.d.ts.map +1 -1
  38. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-values.js +45 -16
  39. package/dist/service/dynamodb/cfn/table/sim-cfn-dynamodb-table-values.js.map +1 -1
  40. package/dist/service/dynamodb/command/item/sim-dynamodb-item-page.d.ts +6 -4
  41. package/dist/service/dynamodb/command/item/sim-dynamodb-item-page.d.ts.map +1 -1
  42. package/dist/service/dynamodb/command/item/sim-dynamodb-item-page.js +7 -6
  43. package/dist/service/dynamodb/command/item/sim-dynamodb-item-page.js.map +1 -1
  44. package/dist/service/dynamodb/command/query/sim-dynamodb-query-start-key.d.ts +2 -2
  45. package/dist/service/dynamodb/command/query/sim-dynamodb-query-start-key.d.ts.map +1 -1
  46. package/dist/service/dynamodb/command/query/sim-dynamodb-query-start-key.js +8 -7
  47. package/dist/service/dynamodb/command/query/sim-dynamodb-query-start-key.js.map +1 -1
  48. package/dist/service/dynamodb/command/query/sim-dynamodb-query.d.ts.map +1 -1
  49. package/dist/service/dynamodb/command/query/sim-dynamodb-query.js +18 -6
  50. package/dist/service/dynamodb/command/query/sim-dynamodb-query.js.map +1 -1
  51. package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.d.ts.map +1 -1
  52. package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.js +0 -1
  53. package/dist/service/dynamodb/command/query/sim-dynamodb-unsimulated-query-input.js.map +1 -1
  54. package/dist/service/dynamodb/command/read/sim-dynamodb-consistent-read.d.ts +20 -0
  55. package/dist/service/dynamodb/command/read/sim-dynamodb-consistent-read.d.ts.map +1 -0
  56. package/dist/service/dynamodb/command/read/sim-dynamodb-consistent-read.js +20 -0
  57. package/dist/service/dynamodb/command/read/sim-dynamodb-consistent-read.js.map +1 -0
  58. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.d.ts +12 -0
  59. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.d.ts.map +1 -1
  60. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.js +19 -1
  61. package/dist/service/dynamodb/command/read/sim-dynamodb-read-answer.js.map +1 -1
  62. package/dist/service/dynamodb/command/read/sim-dynamodb-select.d.ts +18 -0
  63. package/dist/service/dynamodb/command/read/sim-dynamodb-select.d.ts.map +1 -1
  64. package/dist/service/dynamodb/command/read/sim-dynamodb-select.js +35 -5
  65. package/dist/service/dynamodb/command/read/sim-dynamodb-select.js.map +1 -1
  66. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-start-key.d.ts +2 -2
  67. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-start-key.d.ts.map +1 -1
  68. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-start-key.js +3 -3
  69. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan-start-key.js.map +1 -1
  70. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.d.ts.map +1 -1
  71. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.js +13 -5
  72. package/dist/service/dynamodb/command/scan/sim-dynamodb-scan.js.map +1 -1
  73. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.d.ts.map +1 -1
  74. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.js +0 -1
  75. package/dist/service/dynamodb/command/scan/sim-dynamodb-unsimulated-scan-input.js.map +1 -1
  76. package/dist/service/dynamodb/command/sim-dynamodb-command-handlers.d.ts +2 -0
  77. package/dist/service/dynamodb/command/sim-dynamodb-command-handlers.d.ts.map +1 -1
  78. package/dist/service/dynamodb/command/sim-dynamodb-command-handlers.js +3 -0
  79. package/dist/service/dynamodb/command/sim-dynamodb-command-handlers.js.map +1 -1
  80. package/dist/service/dynamodb/command/sim-dynamodb-command.types.d.ts +1 -1
  81. package/dist/service/dynamodb/command/sim-dynamodb-command.types.d.ts.map +1 -1
  82. package/dist/service/dynamodb/command/table/sim-dynamodb-create-table.d.ts.map +1 -1
  83. package/dist/service/dynamodb/command/table/sim-dynamodb-create-table.js +6 -2
  84. package/dist/service/dynamodb/command/table/sim-dynamodb-create-table.js.map +1 -1
  85. package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-table-input.d.ts +6 -6
  86. package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-table-input.d.ts.map +1 -1
  87. package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-table-input.js +6 -19
  88. package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-table-input.js.map +1 -1
  89. package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-update-input.d.ts +15 -0
  90. package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-update-input.d.ts.map +1 -0
  91. package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-update-input.js +50 -0
  92. package/dist/service/dynamodb/command/table/sim-dynamodb-unsimulated-update-input.js.map +1 -0
  93. package/dist/service/dynamodb/command/table/sim-dynamodb-update-table.d.ts +38 -0
  94. package/dist/service/dynamodb/command/table/sim-dynamodb-update-table.d.ts.map +1 -0
  95. package/dist/service/dynamodb/command/table/sim-dynamodb-update-table.js +39 -0
  96. package/dist/service/dynamodb/command/table/sim-dynamodb-update-table.js.map +1 -0
  97. package/dist/service/dynamodb/command/table/table.command.d.ts +36 -1
  98. package/dist/service/dynamodb/command/table/table.command.d.ts.map +1 -1
  99. package/dist/service/dynamodb/command/table/table.types.d.ts +54 -0
  100. package/dist/service/dynamodb/command/table/table.types.d.ts.map +1 -1
  101. package/dist/service/dynamodb/command/time-to-live/sim-dynamodb-time-to-live-commands.js +3 -3
  102. package/dist/service/dynamodb/command/time-to-live/sim-dynamodb-time-to-live-commands.js.map +1 -1
  103. package/dist/service/dynamodb/document/sim-dynamodb-document-route.d.ts +1 -1
  104. package/dist/service/dynamodb/document/sim-dynamodb-document-route.d.ts.map +1 -1
  105. package/dist/service/dynamodb/document/sim-dynamodb-document-routes.d.ts.map +1 -1
  106. package/dist/service/dynamodb/document/sim-dynamodb-document-routes.js.map +1 -1
  107. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter.d.ts +11 -1
  108. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter.d.ts.map +1 -1
  109. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter.js +12 -1
  110. package/dist/service/dynamodb/expression/filter/sim-dynamodb-filter.js.map +1 -1
  111. package/dist/service/dynamodb/sdk/sim-dynamodb-sdk-command-router.d.ts.map +1 -1
  112. package/dist/service/dynamodb/sdk/sim-dynamodb-sdk-command-router.js +4 -0
  113. package/dist/service/dynamodb/sdk/sim-dynamodb-sdk-command-router.js.map +1 -1
  114. package/dist/service/dynamodb/secondary-index/sim-dynamodb-fetched-index-attributes.d.ts +35 -0
  115. package/dist/service/dynamodb/secondary-index/sim-dynamodb-fetched-index-attributes.d.ts.map +1 -0
  116. package/dist/service/dynamodb/secondary-index/sim-dynamodb-fetched-index-attributes.js +42 -0
  117. package/dist/service/dynamodb/secondary-index/sim-dynamodb-fetched-index-attributes.js.map +1 -0
  118. package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-index.d.ts +43 -11
  119. package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-index.d.ts.map +1 -1
  120. package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-index.js +65 -2
  121. package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-index.js.map +1 -1
  122. package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-indexes.d.ts +39 -14
  123. package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-indexes.d.ts.map +1 -1
  124. package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-indexes.js +61 -61
  125. package/dist/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-indexes.js.map +1 -1
  126. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-attributes.d.ts +44 -0
  127. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-attributes.d.ts.map +1 -0
  128. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-attributes.js +2 -0
  129. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-attributes.js.map +1 -0
  130. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-keys.d.ts +58 -0
  131. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-keys.d.ts.map +1 -0
  132. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-keys.js +77 -0
  133. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-keys.js.map +1 -0
  134. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lifecycle.d.ts +55 -0
  135. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lifecycle.d.ts.map +1 -0
  136. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lifecycle.js +71 -0
  137. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lifecycle.js.map +1 -0
  138. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-limits.d.ts +50 -0
  139. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-limits.d.ts.map +1 -0
  140. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-limits.js +82 -0
  141. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-limits.js.map +1 -0
  142. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lookup.d.ts +13 -0
  143. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lookup.d.ts.map +1 -0
  144. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lookup.js +19 -0
  145. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-lookup.js.map +1 -0
  146. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection-input.d.ts +17 -0
  147. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection-input.d.ts.map +1 -0
  148. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection-input.js +17 -0
  149. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection-input.js.map +1 -0
  150. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection.d.ts +15 -0
  151. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection.d.ts.map +1 -1
  152. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection.js +21 -0
  153. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-projection.js.map +1 -1
  154. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-status.d.ts +6 -7
  155. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-status.d.ts.map +1 -1
  156. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-status.js +7 -11
  157. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-status.js.map +1 -1
  158. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-view.d.ts +76 -0
  159. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-view.d.ts.map +1 -0
  160. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-view.js +107 -0
  161. package/dist/service/dynamodb/secondary-index/sim-dynamodb-index-view.js.map +1 -0
  162. package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-orders.d.ts +12 -0
  163. package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-orders.d.ts.map +1 -0
  164. package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-orders.js +42 -0
  165. package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-orders.js.map +1 -0
  166. package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-table.factory.d.ts +35 -0
  167. package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-table.factory.d.ts.map +1 -0
  168. package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-table.factory.js +59 -0
  169. package/dist/service/dynamodb/secondary-index/sim-dynamodb-indexed-table.factory.js.map +1 -0
  170. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-key-schema.d.ts +21 -0
  171. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-key-schema.d.ts.map +1 -0
  172. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-key-schema.js +47 -0
  173. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-key-schema.js.map +1 -0
  174. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-throughput.d.ts +11 -0
  175. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-throughput.d.ts.map +1 -0
  176. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-throughput.js +29 -0
  177. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-index-throughput.js.map +1 -0
  178. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-index.d.ts +65 -0
  179. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-index.d.ts.map +1 -0
  180. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-index.js +106 -0
  181. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-index.js.map +1 -0
  182. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-indexes.d.ts +31 -0
  183. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-indexes.d.ts.map +1 -0
  184. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-indexes.js +47 -0
  185. package/dist/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-indexes.js.map +1 -0
  186. package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-orders.d.ts +6 -0
  187. package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-orders.d.ts.map +1 -0
  188. package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-orders.js +40 -0
  189. package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-orders.js.map +1 -0
  190. package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-table.factory.d.ts +34 -0
  191. package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-table.factory.d.ts.map +1 -0
  192. package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-table.factory.js +61 -0
  193. package/dist/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-table.factory.js.map +1 -0
  194. package/dist/service/dynamodb/secondary-index/sim-dynamodb-projected-index-attributes.d.ts +38 -0
  195. package/dist/service/dynamodb/secondary-index/sim-dynamodb-projected-index-attributes.d.ts.map +1 -0
  196. package/dist/service/dynamodb/secondary-index/sim-dynamodb-projected-index-attributes.js +74 -0
  197. package/dist/service/dynamodb/secondary-index/sim-dynamodb-projected-index-attributes.js.map +1 -0
  198. package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-index.d.ts +54 -0
  199. package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-index.d.ts.map +1 -0
  200. package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-index.js +2 -0
  201. package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-index.js.map +1 -0
  202. package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-indexes.d.ts +59 -0
  203. package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-indexes.d.ts.map +1 -0
  204. package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-indexes.js +77 -0
  205. package/dist/service/dynamodb/secondary-index/sim-dynamodb-secondary-indexes.js.map +1 -0
  206. package/dist/service/dynamodb/sim-dynamodb.d.ts +6 -14
  207. package/dist/service/dynamodb/sim-dynamodb.d.ts.map +1 -1
  208. package/dist/service/dynamodb/sim-dynamodb.js +8 -1
  209. package/dist/service/dynamodb/sim-dynamodb.js.map +1 -1
  210. package/dist/service/dynamodb/sim-dynamodb.types.d.ts +26 -0
  211. package/dist/service/dynamodb/sim-dynamodb.types.d.ts.map +1 -0
  212. package/dist/service/dynamodb/sim-dynamodb.types.js +2 -0
  213. package/dist/service/dynamodb/sim-dynamodb.types.js.map +1 -0
  214. package/dist/service/dynamodb/table/sim-dynamodb-attribute-definition.d.ts +14 -0
  215. package/dist/service/dynamodb/table/sim-dynamodb-attribute-definition.d.ts.map +1 -0
  216. package/dist/service/dynamodb/table/sim-dynamodb-attribute-definition.js +33 -0
  217. package/dist/service/dynamodb/table/sim-dynamodb-attribute-definition.js.map +1 -0
  218. package/dist/service/dynamodb/table/sim-dynamodb-attribute-definitions.d.ts +21 -0
  219. package/dist/service/dynamodb/table/sim-dynamodb-attribute-definitions.d.ts.map +1 -1
  220. package/dist/service/dynamodb/table/sim-dynamodb-attribute-definitions.js +53 -27
  221. package/dist/service/dynamodb/table/sim-dynamodb-attribute-definitions.js.map +1 -1
  222. package/dist/service/dynamodb/table/sim-dynamodb-index-update.d.ts +23 -0
  223. package/dist/service/dynamodb/table/sim-dynamodb-index-update.d.ts.map +1 -0
  224. package/dist/service/dynamodb/table/sim-dynamodb-index-update.js +88 -0
  225. package/dist/service/dynamodb/table/sim-dynamodb-index-update.js.map +1 -0
  226. package/dist/service/dynamodb/table/sim-dynamodb-item-collection.d.ts +7 -0
  227. package/dist/service/dynamodb/table/sim-dynamodb-item-collection.d.ts.map +1 -1
  228. package/dist/service/dynamodb/table/sim-dynamodb-item-collection.js +6 -3
  229. package/dist/service/dynamodb/table/sim-dynamodb-item-collection.js.map +1 -1
  230. package/dist/service/dynamodb/table/sim-dynamodb-read-view.d.ts +76 -0
  231. package/dist/service/dynamodb/table/sim-dynamodb-read-view.d.ts.map +1 -0
  232. package/dist/service/dynamodb/table/sim-dynamodb-read-view.js +2 -0
  233. package/dist/service/dynamodb/table/sim-dynamodb-read-view.js.map +1 -0
  234. package/dist/service/dynamodb/table/sim-dynamodb-sort-key-compare.d.ts +30 -0
  235. package/dist/service/dynamodb/table/sim-dynamodb-sort-key-compare.d.ts.map +1 -0
  236. package/dist/service/dynamodb/table/sim-dynamodb-sort-key-compare.js +39 -0
  237. package/dist/service/dynamodb/table/sim-dynamodb-sort-key-compare.js.map +1 -0
  238. package/dist/service/dynamodb/table/sim-dynamodb-sort-key-order.d.ts +34 -20
  239. package/dist/service/dynamodb/table/sim-dynamodb-sort-key-order.d.ts.map +1 -1
  240. package/dist/service/dynamodb/table/sim-dynamodb-sort-key-order.js +47 -50
  241. package/dist/service/dynamodb/table/sim-dynamodb-sort-key-order.js.map +1 -1
  242. package/dist/service/dynamodb/table/sim-dynamodb-table-billing.d.ts +9 -0
  243. package/dist/service/dynamodb/table/sim-dynamodb-table-billing.d.ts.map +1 -1
  244. package/dist/service/dynamodb/table/sim-dynamodb-table-billing.js +17 -0
  245. package/dist/service/dynamodb/table/sim-dynamodb-table-billing.js.map +1 -1
  246. package/dist/service/dynamodb/table/sim-dynamodb-table-definition.d.ts +53 -0
  247. package/dist/service/dynamodb/table/sim-dynamodb-table-definition.d.ts.map +1 -0
  248. package/dist/service/dynamodb/table/sim-dynamodb-table-definition.js +63 -0
  249. package/dist/service/dynamodb/table/sim-dynamodb-table-definition.js.map +1 -0
  250. package/dist/service/dynamodb/table/sim-dynamodb-table-description.d.ts.map +1 -1
  251. package/dist/service/dynamodb/table/sim-dynamodb-table-description.js +2 -2
  252. package/dist/service/dynamodb/table/sim-dynamodb-table-description.js.map +1 -1
  253. package/dist/service/dynamodb/table/sim-dynamodb-table-lifecycle.d.ts +29 -2
  254. package/dist/service/dynamodb/table/sim-dynamodb-table-lifecycle.d.ts.map +1 -1
  255. package/dist/service/dynamodb/table/sim-dynamodb-table-lifecycle.js +45 -4
  256. package/dist/service/dynamodb/table/sim-dynamodb-table-lifecycle.js.map +1 -1
  257. package/dist/service/dynamodb/table/sim-dynamodb-table-read-view.d.ts +26 -0
  258. package/dist/service/dynamodb/table/sim-dynamodb-table-read-view.d.ts.map +1 -0
  259. package/dist/service/dynamodb/table/sim-dynamodb-table-read-view.js +30 -0
  260. package/dist/service/dynamodb/table/sim-dynamodb-table-read-view.js.map +1 -0
  261. package/dist/service/dynamodb/table/sim-dynamodb-table-scan.d.ts +2 -2
  262. package/dist/service/dynamodb/table/sim-dynamodb-table-scan.d.ts.map +1 -1
  263. package/dist/service/dynamodb/table/sim-dynamodb-table-scan.js +1 -2
  264. package/dist/service/dynamodb/table/sim-dynamodb-table-scan.js.map +1 -1
  265. package/dist/service/dynamodb/table/sim-dynamodb-table-update.d.ts +27 -0
  266. package/dist/service/dynamodb/table/sim-dynamodb-table-update.d.ts.map +1 -0
  267. package/dist/service/dynamodb/table/sim-dynamodb-table-update.js +79 -0
  268. package/dist/service/dynamodb/table/sim-dynamodb-table-update.js.map +1 -0
  269. package/dist/service/dynamodb/table/sim-dynamodb-table-view.d.ts +67 -0
  270. package/dist/service/dynamodb/table/sim-dynamodb-table-view.d.ts.map +1 -0
  271. package/dist/service/dynamodb/table/sim-dynamodb-table-view.js +90 -0
  272. package/dist/service/dynamodb/table/sim-dynamodb-table-view.js.map +1 -0
  273. package/dist/service/dynamodb/table/sim-dynamodb-table.d.ts +49 -46
  274. package/dist/service/dynamodb/table/sim-dynamodb-table.d.ts.map +1 -1
  275. package/dist/service/dynamodb/table/sim-dynamodb-table.js +87 -79
  276. package/dist/service/dynamodb/table/sim-dynamodb-table.js.map +1 -1
  277. package/dist/service/dynamodb/table/sim-dynamodb-updatable-table.d.ts +21 -0
  278. package/dist/service/dynamodb/table/sim-dynamodb-updatable-table.d.ts.map +1 -0
  279. package/dist/service/dynamodb/table/sim-dynamodb-updatable-table.js +2 -0
  280. package/dist/service/dynamodb/table/sim-dynamodb-updatable-table.js.map +1 -0
  281. package/dist/service/dynamodb/table/sim-dynamodb-updated-billing.d.ts +17 -0
  282. package/dist/service/dynamodb/table/sim-dynamodb-updated-billing.d.ts.map +1 -0
  283. package/dist/service/dynamodb/table/sim-dynamodb-updated-billing.js +24 -0
  284. package/dist/service/dynamodb/table/sim-dynamodb-updated-billing.js.map +1 -0
  285. package/dist/service/dynamodb/table/sim-dynamodb-updated-indexes.d.ts +16 -0
  286. package/dist/service/dynamodb/table/sim-dynamodb-updated-indexes.d.ts.map +1 -0
  287. package/dist/service/dynamodb/table/sim-dynamodb-updated-indexes.js +32 -0
  288. package/dist/service/dynamodb/table/sim-dynamodb-updated-indexes.js.map +1 -0
  289. package/dist/service/dynamodb/time-to-live/{sim-dynamodb-table-expiry.d.ts → sim-dynamodb-table-time-to-live.d.ts} +28 -9
  290. package/dist/service/dynamodb/time-to-live/sim-dynamodb-table-time-to-live.d.ts.map +1 -0
  291. package/dist/service/dynamodb/time-to-live/{sim-dynamodb-table-expiry.js → sim-dynamodb-table-time-to-live.js} +32 -5
  292. package/dist/service/dynamodb/time-to-live/sim-dynamodb-table-time-to-live.js.map +1 -0
  293. package/dist/service/dynamodb/time-to-live/sim-dynamodb-time-to-live.d.ts +2 -1
  294. package/dist/service/dynamodb/time-to-live/sim-dynamodb-time-to-live.d.ts.map +1 -1
  295. package/dist/service/dynamodb/time-to-live/sim-dynamodb-time-to-live.js +2 -1
  296. package/dist/service/dynamodb/time-to-live/sim-dynamodb-time-to-live.js.map +1 -1
  297. package/package.json +1 -1
  298. package/dist/service/dynamodb/time-to-live/sim-dynamodb-table-expiry.d.ts.map +0 -1
  299. package/dist/service/dynamodb/time-to-live/sim-dynamodb-table-expiry.js.map +0 -1
@@ -0,0 +1,106 @@
1
+ import { SimDynamoDbFetchedIndexAttributes } from "./sim-dynamodb-fetched-index-attributes.js";
2
+ import { assertSimDynamoDbIndexKeyTypes } from "./sim-dynamodb-index-key-types.js";
3
+ import { readSimDynamoDbIndexName } from "./sim-dynamodb-index-name.js";
4
+ import { SimDynamoDbIndexProjection } from "./sim-dynamodb-index-projection.js";
5
+ import { readSimDynamoDbLocalIndexKeySchema } from "./sim-dynamodb-local-index-key-schema.js";
6
+ import { refuseSimDynamoDbLocalIndexThroughput } from "./sim-dynamodb-local-index-throughput.js";
7
+ /**
8
+ * One simulated local secondary index.
9
+ *
10
+ * A local secondary index gives an item collection a second sort key. It shares
11
+ * the table's partition key, so an entry sits in the same partition as the item
12
+ * it indexes, which is what lets it answer a strongly consistent read and lets a
13
+ * read of it reach the base table for an attribute it does not project.
14
+ *
15
+ * `CreateTable` is the only place one can be declared. AWS has no call that
16
+ * adds, changes or removes one afterwards, so neither does this.
17
+ */
18
+ export class SimDynamoDbLocalSecondaryIndex {
19
+ name;
20
+ arn;
21
+ keySchema;
22
+ projection;
23
+ constructor(properties) {
24
+ this.name = properties.name;
25
+ // An index ARN is the table's own with the index named under it, which is
26
+ // the resource an IAM policy naming one index is written against.
27
+ this.arn = `${properties.tableArn}/index/${properties.name}`;
28
+ this.keySchema = properties.keySchema;
29
+ this.projection = properties.projection;
30
+ }
31
+ /**
32
+ * Read one `LocalSecondaryIndexes` entry a CreateTable request carries.
33
+ *
34
+ * The name is read first, since every other refusal names the index it is
35
+ * about.
36
+ */
37
+ static fromInput(input, table) {
38
+ const name = readSimDynamoDbIndexName(input.IndexName);
39
+ refuseSimDynamoDbLocalIndexThroughput(input, name);
40
+ return new this({
41
+ name,
42
+ tableArn: table.tableArn,
43
+ keySchema: readSimDynamoDbLocalIndexKeySchema(input.KeySchema, name, table.keySchema),
44
+ projection: SimDynamoDbIndexProjection.fromInput(input.Projection, name),
45
+ });
46
+ }
47
+ /**
48
+ * Which attributes a read of this index answers with.
49
+ */
50
+ attributesOf(keyAttributeNames) {
51
+ return new SimDynamoDbFetchedIndexAttributes({
52
+ indexName: this.name,
53
+ projection: this.projection,
54
+ keyAttributeNames,
55
+ });
56
+ }
57
+ /**
58
+ * A local secondary index answers a strongly consistent read.
59
+ *
60
+ * It is written in the same partition as the item it indexes, in the same
61
+ * operation, so there is no window in which it lags behind the table. That is
62
+ * the difference from a global secondary index, which is maintained
63
+ * asynchronously and refuses one.
64
+ */
65
+ assertAnswersConsistentRead() {
66
+ return;
67
+ }
68
+ /**
69
+ * A local secondary index is always ready to be read.
70
+ *
71
+ * It is built with the table that carries it, and AWS has no call that adds
72
+ * one afterwards, so there is no window in which it exists and cannot answer.
73
+ */
74
+ assertReadable() {
75
+ return;
76
+ }
77
+ /**
78
+ * Refuse an item carrying one of this index's key attributes as another type.
79
+ */
80
+ assertItemKeyTypes(item, attributeDefinitions) {
81
+ assertSimDynamoDbIndexKeyTypes({
82
+ indexName: this.name,
83
+ keySchema: this.keySchema,
84
+ item,
85
+ attributeDefinitions,
86
+ });
87
+ }
88
+ /**
89
+ * Describe this index the way DynamoDB reports it.
90
+ *
91
+ * There is no `IndexStatus` and no `ProvisionedThroughput`, since a local
92
+ * secondary index is built with the table and shares its capacity.
93
+ */
94
+ toDescription() {
95
+ return {
96
+ IndexName: this.name,
97
+ IndexArn: this.arn,
98
+ KeySchema: this.keySchema.elements,
99
+ Projection: this.projection.toDescription(),
100
+ // Neither figure is tracked, the same way the table's are not.
101
+ ItemCount: 0,
102
+ IndexSizeBytes: 0,
103
+ };
104
+ }
105
+ }
106
+ //# sourceMappingURL=sim-dynamodb-local-secondary-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-local-secondary-index.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAE/F,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,kCAAkC,EAAE,MAAM,0CAA0C,CAAC;AAC9F,OAAO,EAAE,qCAAqC,EAAE,MAAM,0CAA0C,CAAC;AAajG;;;;;;;;;;GAUG;AACH,MAAM,OAAO,8BAA8B;IACzB,IAAI,CAAS;IACb,GAAG,CAAS;IACZ,SAAS,CAAuB;IAChC,UAAU,CAA6B;IAEvD,YAAoB,UAAoD;QACtE,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC;QAC5B,0EAA0E;QAC1E,kEAAkE;QAClE,IAAI,CAAC,GAAG,GAAG,GAAG,UAAU,CAAC,QAAQ,UAAU,UAAU,CAAC,IAAI,EAAE,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAC1C,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CACd,KAAqC,EACrC,KAAqC;QAErC,MAAM,IAAI,GAAG,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEvD,qCAAqC,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAEnD,OAAO,IAAI,IAAI,CAAC;YACd,IAAI;YACJ,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,kCAAkC,CAC3C,KAAK,CAAC,SAAS,EACf,IAAI,EACJ,KAAK,CAAC,SAAS,CAChB;YACD,UAAU,EAAE,0BAA0B,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;SACzE,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,YAAY,CACV,iBAAsC;QAEtC,OAAO,IAAI,iCAAiC,CAAC;YAC3C,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,iBAAiB;SAClB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,2BAA2B;QACzB,OAAO;IACT,CAAC;IAED;;;;;OAKG;IACH,cAAc;QACZ,OAAO;IACT,CAAC;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAqB,EACrB,oBAAqD;QAErD,8BAA8B,CAAC;YAC7B,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,IAAI;YACJ,oBAAoB;SACrB,CAAC,CAAC;IACL,CAAC;IAED;;;;;OAKG;IACH,aAAa;QACX,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,QAAQ,EAAE,IAAI,CAAC,GAAG;YAClB,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;YAClC,UAAU,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;YAC3C,+DAA+D;YAC/D,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,CAAC;SAClB,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,31 @@
1
+ import type { SimDynamoDbLocalSecondaryIndexDescription, SimDynamoDbSecondaryIndexInput } from "../command/table/table.types.js";
2
+ import { SimDynamoDbLocalSecondaryIndex } from "./sim-dynamodb-local-secondary-index.js";
3
+ import type { SimDynamoDbSecondaryIndexTable } from "./sim-dynamodb-secondary-index.js";
4
+ /**
5
+ * The local secondary indexes one table carries.
6
+ *
7
+ * As with the global ones, the collection owns what is about how many there
8
+ * are and each index owns what is about itself. What is added here is the one
9
+ * rule about the table rather than about any index: a table with no sort key
10
+ * has no collection for a second sort key to reorder.
11
+ */
12
+ export declare class SimDynamoDbLocalSecondaryIndexes {
13
+ readonly elements: readonly SimDynamoDbLocalSecondaryIndex[];
14
+ private constructor();
15
+ /**
16
+ * The indexes of a table declaring none.
17
+ */
18
+ static none(): SimDynamoDbLocalSecondaryIndexes;
19
+ /**
20
+ * Read the `LocalSecondaryIndexes` a CreateTable request carries.
21
+ */
22
+ static fromInput(input: readonly SimDynamoDbSecondaryIndexInput[] | undefined, table: SimDynamoDbSecondaryIndexTable): SimDynamoDbLocalSecondaryIndexes;
23
+ /**
24
+ * How a table reports its indexes, which is not at all when it has none.
25
+ *
26
+ * Real DynamoDB leaves `LocalSecondaryIndexes` out of the description of a
27
+ * table with no index, rather than reporting an empty list.
28
+ */
29
+ descriptions(): readonly SimDynamoDbLocalSecondaryIndexDescription[] | undefined;
30
+ }
31
+ //# sourceMappingURL=sim-dynamodb-local-secondary-indexes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-local-secondary-indexes.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-indexes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,yCAAyC,EACzC,8BAA8B,EAC/B,MAAM,iCAAiC,CAAC;AAGzC,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AACzF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAExF;;;;;;;GAOG;AACH,qBAAa,gCAAgC;IAC3C,SAAgB,QAAQ,EAAE,SAAS,8BAA8B,EAAE,CAAC;IAEpE,OAAO,eAEN;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,gCAAgC,CAE9C;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,SAAS,8BAA8B,EAAE,GAAG,SAAS,EAC5D,KAAK,EAAE,8BAA8B,GACpC,gCAAgC,CAalC;IAED;;;;;OAKG;IACH,YAAY,IACV,SAAS,yCAAyC,EAAE,GAAG,SAAS,CAMjE;CACF"}
@@ -0,0 +1,47 @@
1
+ import { assertSimDynamoDbLocalIndexCount } from "./sim-dynamodb-index-limits.js";
2
+ import { assertSimDynamoDbTableSortsForLocalIndexes } from "./sim-dynamodb-local-index-key-schema.js";
3
+ import { SimDynamoDbLocalSecondaryIndex } from "./sim-dynamodb-local-secondary-index.js";
4
+ /**
5
+ * The local secondary indexes one table carries.
6
+ *
7
+ * As with the global ones, the collection owns what is about how many there
8
+ * are and each index owns what is about itself. What is added here is the one
9
+ * rule about the table rather than about any index: a table with no sort key
10
+ * has no collection for a second sort key to reorder.
11
+ */
12
+ export class SimDynamoDbLocalSecondaryIndexes {
13
+ elements;
14
+ constructor(elements) {
15
+ this.elements = elements;
16
+ }
17
+ /**
18
+ * The indexes of a table declaring none.
19
+ */
20
+ static none() {
21
+ return new this([]);
22
+ }
23
+ /**
24
+ * Read the `LocalSecondaryIndexes` a CreateTable request carries.
25
+ */
26
+ static fromInput(input, table) {
27
+ if (input === undefined || input.length === 0) {
28
+ return this.none();
29
+ }
30
+ assertSimDynamoDbLocalIndexCount(input.length);
31
+ assertSimDynamoDbTableSortsForLocalIndexes(table.keySchema);
32
+ return new this(input.map((index) => SimDynamoDbLocalSecondaryIndex.fromInput(index, table)));
33
+ }
34
+ /**
35
+ * How a table reports its indexes, which is not at all when it has none.
36
+ *
37
+ * Real DynamoDB leaves `LocalSecondaryIndexes` out of the description of a
38
+ * table with no index, rather than reporting an empty list.
39
+ */
40
+ descriptions() {
41
+ if (this.elements.length === 0) {
42
+ return undefined;
43
+ }
44
+ return this.elements.map((index) => index.toDescription());
45
+ }
46
+ }
47
+ //# sourceMappingURL=sim-dynamodb-local-secondary-indexes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-local-secondary-indexes.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-indexes.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gCAAgC,EAAE,MAAM,gCAAgC,CAAC;AAClF,OAAO,EAAE,0CAA0C,EAAE,MAAM,0CAA0C,CAAC;AACtG,OAAO,EAAE,8BAA8B,EAAE,MAAM,yCAAyC,CAAC;AAGzF;;;;;;;GAOG;AACH,MAAM,OAAO,gCAAgC;IAC3B,QAAQ,CAA4C;IAEpE,YAAoB,QAAmD;QACrE,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC3B,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,IAAI;QACT,OAAO,IAAI,IAAI,CAAC,EAAE,CAAC,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,KAA4D,EAC5D,KAAqC;QAErC,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;QAED,gCAAgC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC/C,0CAA0C,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE5D,OAAO,IAAI,IAAI,CACb,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAClB,8BAA8B,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CACvD,CACF,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,YAAY;QAEV,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC/B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC,CAAC;IAC7D,CAAC;CACF"}
@@ -0,0 +1,6 @@
1
+ import type { SimDynamoDbAttributeValue } from "../command/item/item.types.js";
2
+ /**
3
+ * The orders a locally indexed table holds, as the items they are written as.
4
+ */
5
+ export declare function simDynamoDbLocallyIndexedOrders(): readonly Readonly<Record<string, SimDynamoDbAttributeValue>>[];
6
+ //# sourceMappingURL=sim-dynamodb-locally-indexed-orders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-locally-indexed-orders.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-orders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAqD/E;;GAEG;AACH,wBAAgB,+BAA+B,IAAI,SAAS,QAAQ,CAClE,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAC1C,EAAE,CAEF"}
@@ -0,0 +1,40 @@
1
+ /**
2
+ * The orders a locally indexed table holds.
3
+ *
4
+ * The months run out of order against the order ids, so the index reads a
5
+ * customer's orders in an order the table's own sort key does not give. One
6
+ * month repeats within a customer, so two index entries share a whole index key
7
+ * and only the table sort key separates them.
8
+ */
9
+ const orders = [
10
+ { customerId: "customer-1", orderId: "order-01", placedAt: "2026-03" },
11
+ { customerId: "customer-1", orderId: "order-02", placedAt: "2026-01" },
12
+ { customerId: "customer-1", orderId: "order-03" },
13
+ { customerId: "customer-1", orderId: "order-04", placedAt: "2026-01" },
14
+ { customerId: "customer-2", orderId: "order-05", placedAt: "2026-03" },
15
+ { customerId: "customer-2", orderId: "order-06" },
16
+ ];
17
+ /**
18
+ * The item one order is written as.
19
+ *
20
+ * `title` is on every order and in no key, so it is the attribute a test names
21
+ * to find out whether a read reached the base table.
22
+ */
23
+ function orderItem(order) {
24
+ const item = {
25
+ customerId: { S: order.customerId },
26
+ orderId: { S: order.orderId },
27
+ title: { S: `Order ${order.orderId}` },
28
+ };
29
+ if (order.placedAt === undefined) {
30
+ return item;
31
+ }
32
+ return { ...item, placedAt: { S: order.placedAt } };
33
+ }
34
+ /**
35
+ * The orders a locally indexed table holds, as the items they are written as.
36
+ */
37
+ export function simDynamoDbLocallyIndexedOrders() {
38
+ return orders.map((order) => orderItem(order));
39
+ }
40
+ //# sourceMappingURL=sim-dynamodb-locally-indexed-orders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-locally-indexed-orders.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-orders.ts"],"names":[],"mappings":"AAcA;;;;;;;GAOG;AACH,MAAM,MAAM,GAA8C;IACxD,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;IACtE,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;IACtE,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE;IACjD,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;IACtE,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE;IACtE,EAAE,UAAU,EAAE,YAAY,EAAE,OAAO,EAAE,UAAU,EAAE;CAClD,CAAC;AAEF;;;;;GAKG;AACH,SAAS,SAAS,CAChB,KAAqC;IAErC,MAAM,IAAI,GAAG;QACX,UAAU,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE;QACnC,OAAO,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,OAAO,EAAE;QAC7B,KAAK,EAAE,EAAE,CAAC,EAAE,SAAS,KAAK,CAAC,OAAO,EAAE,EAAE;KACvC,CAAC;IAEF,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QACjC,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,EAAE,CAAC,EAAE,KAAK,CAAC,QAAQ,EAAE,EAAE,CAAC;AACtD,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,+BAA+B;IAG7C,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;AACjD,CAAC"}
@@ -0,0 +1,34 @@
1
+ import { AsyncMappedFactory } from "@kensio/part-factory";
2
+ import type { SimAws } from "../../aws/sim-aws.js";
3
+ import type { SimDynamoDbProjectionType } from "../command/table/table.types.js";
4
+ import type { SimDynamoDbTable } from "../table/sim-dynamodb-table.js";
5
+ /**
6
+ * What a test asks for when it wants a table with a local secondary index.
7
+ *
8
+ * The projection is the input because it is what a read of a local secondary
9
+ * index turns on: which attributes come back by default, and which of them the
10
+ * read has to reach the base table for.
11
+ */
12
+ export interface SimDynamoDbLocallyIndexedTableInput {
13
+ readonly tableName: string;
14
+ readonly indexName: string;
15
+ readonly projectionType: SimDynamoDbProjectionType;
16
+ readonly nonKeyAttributes: readonly string[];
17
+ }
18
+ /**
19
+ * Creates a table with one local secondary index, holding orders to read.
20
+ *
21
+ * The table is keyed by `customerId` and `orderId`, and the index re-sorts each
22
+ * customer's orders by `placedAt`. One order per customer carries no
23
+ * `placedAt`, which is what makes the index sparse rather than a second copy of
24
+ * the table.
25
+ *
26
+ * ```typescript
27
+ * const table = await simDynamoDbLocallyIndexedTableFactory.make(
28
+ * { projectionType: "KEYS_ONLY" },
29
+ * simAws,
30
+ * );
31
+ * ```
32
+ */
33
+ export declare const simDynamoDbLocallyIndexedTableFactory: AsyncMappedFactory<SimDynamoDbLocallyIndexedTableInput, SimDynamoDbTable, SimAws>;
34
+ //# sourceMappingURL=sim-dynamodb-locally-indexed-table.factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-locally-indexed-table.factory.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-table.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AACjF,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIvE;;;;;;GAMG;AACH,MAAM,WAAW,mCAAmC;IAClD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,cAAc,EAAE,yBAAyB,CAAC;IACnD,QAAQ,CAAC,gBAAgB,EAAE,SAAS,MAAM,EAAE,CAAC;CAC9C;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,qCAAqC,mFA0DjD,CAAC"}
@@ -0,0 +1,61 @@
1
+ import { AsyncMappedFactory } from "@kensio/part-factory";
2
+ import { assertDefined } from "../../../util/type-guard/defined.js";
3
+ import { simDynamoDbIndexProjectionInput } from "./sim-dynamodb-index-projection-input.js";
4
+ import { simDynamoDbLocallyIndexedOrders } from "./sim-dynamodb-locally-indexed-orders.js";
5
+ /**
6
+ * Creates a table with one local secondary index, holding orders to read.
7
+ *
8
+ * The table is keyed by `customerId` and `orderId`, and the index re-sorts each
9
+ * customer's orders by `placedAt`. One order per customer carries no
10
+ * `placedAt`, which is what makes the index sparse rather than a second copy of
11
+ * the table.
12
+ *
13
+ * ```typescript
14
+ * const table = await simDynamoDbLocallyIndexedTableFactory.make(
15
+ * { projectionType: "KEYS_ONLY" },
16
+ * simAws,
17
+ * );
18
+ * ```
19
+ */
20
+ export const simDynamoDbLocallyIndexedTableFactory = new AsyncMappedFactory(() => ({
21
+ tableName: "OrdersTable",
22
+ indexName: "byPlacedAt",
23
+ projectionType: "ALL",
24
+ nonKeyAttributes: [],
25
+ }), async (input, simAws) => {
26
+ const simDynamoDb = simAws.dynamoDb();
27
+ await simDynamoDb.createTable({
28
+ input: {
29
+ TableName: input.tableName,
30
+ KeySchema: [
31
+ { AttributeName: "customerId", KeyType: "HASH" },
32
+ { AttributeName: "orderId", KeyType: "RANGE" },
33
+ ],
34
+ AttributeDefinitions: [
35
+ { AttributeName: "customerId", AttributeType: "S" },
36
+ { AttributeName: "orderId", AttributeType: "S" },
37
+ { AttributeName: "placedAt", AttributeType: "S" },
38
+ ],
39
+ BillingMode: "PAY_PER_REQUEST",
40
+ LocalSecondaryIndexes: [
41
+ {
42
+ IndexName: input.indexName,
43
+ KeySchema: [
44
+ { AttributeName: "customerId", KeyType: "HASH" },
45
+ { AttributeName: "placedAt", KeyType: "RANGE" },
46
+ ],
47
+ Projection: simDynamoDbIndexProjectionInput(input),
48
+ },
49
+ ],
50
+ },
51
+ });
52
+ await simAws.backgroundTasksComplete();
53
+ await Promise.all(simDynamoDbLocallyIndexedOrders().map(async (order) => simDynamoDb.putItem({
54
+ input: { TableName: input.tableName, Item: order },
55
+ })));
56
+ const table = simDynamoDb.findTable(input.tableName);
57
+ assertDefined(table, `Simulated DynamoDB created the table ${input.tableName} and then did ` +
58
+ `not hold it`);
59
+ return table;
60
+ });
61
+ //# sourceMappingURL=sim-dynamodb-locally-indexed-table.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-locally-indexed-table.factory.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-locally-indexed-table.factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qCAAqC,CAAC;AAIpE,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAC3F,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAgB3F;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,qCAAqC,GAAG,IAAI,kBAAkB,CAKzE,GAAG,EAAE,CAAC,CAAC;IACL,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,YAAY;IACvB,cAAc,EAAE,KAAK;IACrB,gBAAgB,EAAE,EAAE;CACrB,CAAC,EACF,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE;IACtB,MAAM,WAAW,GAAG,MAAM,CAAC,QAAQ,EAAE,CAAC;IAEtC,MAAM,WAAW,CAAC,WAAW,CAAC;QAC5B,KAAK,EAAE;YACL,SAAS,EAAE,KAAK,CAAC,SAAS;YAC1B,SAAS,EAAE;gBACT,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE;gBAChD,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE;aAC/C;YACD,oBAAoB,EAAE;gBACpB,EAAE,aAAa,EAAE,YAAY,EAAE,aAAa,EAAE,GAAG,EAAE;gBACnD,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE;gBAChD,EAAE,aAAa,EAAE,UAAU,EAAE,aAAa,EAAE,GAAG,EAAE;aAClD;YACD,WAAW,EAAE,iBAAiB;YAC9B,qBAAqB,EAAE;gBACrB;oBACE,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,SAAS,EAAE;wBACT,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE;wBAChD,EAAE,aAAa,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE;qBAChD;oBACD,UAAU,EAAE,+BAA+B,CAAC,KAAK,CAAC;iBACnD;aACF;SACF;KACF,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,uBAAuB,EAAE,CAAC;IAEvC,MAAM,OAAO,CAAC,GAAG,CACf,+BAA+B,EAAE,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CACpD,WAAW,CAAC,OAAO,CAAC;QAClB,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE;KACnD,CAAC,CACH,CACF,CAAC;IAEF,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IACrD,aAAa,CACX,KAAK,EACL,wCAAwC,KAAK,CAAC,SAAS,gBAAgB;QACrE,aAAa,CAChB,CAAC;IAEF,OAAO,KAAK,CAAC;AACf,CAAC,CACF,CAAC"}
@@ -0,0 +1,38 @@
1
+ import type { SimDynamoDbDocumentPath } from "../expression/sim-dynamodb-document-path.js";
2
+ import { SimDynamoDbItem } from "../item/sim-dynamodb-item.js";
3
+ import type { SimDynamoDbIndexAttributes, SimDynamoDbIndexAttributesProperties } from "./sim-dynamodb-index-attributes.js";
4
+ /**
5
+ * The attributes a global secondary index carries, and nothing else.
6
+ *
7
+ * A global secondary index is a copy of the table held apart from it, so a read
8
+ * of one never reaches the table. Anything the index does not project is not
9
+ * there to answer with, which is why asking for it is refused rather than
10
+ * served.
11
+ */
12
+ export declare class SimDynamoDbProjectedIndexAttributes implements SimDynamoDbIndexAttributes {
13
+ private readonly indexName;
14
+ private readonly projection;
15
+ private readonly keyAttributeNames;
16
+ constructor(properties: SimDynamoDbIndexAttributesProperties);
17
+ /**
18
+ * Cut an item down to the attributes the index carries.
19
+ */
20
+ project(item: SimDynamoDbItem): SimDynamoDbItem;
21
+ /**
22
+ * Refuse a read asking for whole items from a projection holding part of one.
23
+ *
24
+ * Real DynamoDB reads the table for each item to answer this, at a cost the
25
+ * request did not ask for, so it refuses it on an index that projects less
26
+ * than everything.
27
+ */
28
+ assertCarriesWholeItem(): void;
29
+ /**
30
+ * Refuse an expression naming an attribute the index does not project.
31
+ */
32
+ assertCarriesPaths(paths: readonly SimDynamoDbDocumentPath[]): void;
33
+ /**
34
+ * Whether the index carries one attribute of the items it holds.
35
+ */
36
+ private carries;
37
+ }
38
+ //# sourceMappingURL=sim-dynamodb-projected-index-attributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-projected-index-attributes.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-projected-index-attributes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,KAAK,EACV,0BAA0B,EAC1B,oCAAoC,EACrC,MAAM,oCAAoC,CAAC;AAG5C;;;;;;;GAOG;AACH,qBAAa,mCAAoC,YAAW,0BAA0B;IACpF,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAsB;IAExD,YAAY,UAAU,EAAE,oCAAoC,EAI3D;IAED;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAa9C;IAED;;;;;;OAMG;IACH,sBAAsB,IAAI,IAAI,CAU7B;IAED;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GAAG,IAAI,CAmBlE;IAED;;OAEG;IACH,OAAO,CAAC,OAAO;CAMhB"}
@@ -0,0 +1,74 @@
1
+ import { SimDynamoDbValidationException } from "../error/dynamodb.error.js";
2
+ import { SimDynamoDbItem } from "../item/sim-dynamodb-item.js";
3
+ /**
4
+ * The attributes a global secondary index carries, and nothing else.
5
+ *
6
+ * A global secondary index is a copy of the table held apart from it, so a read
7
+ * of one never reaches the table. Anything the index does not project is not
8
+ * there to answer with, which is why asking for it is refused rather than
9
+ * served.
10
+ */
11
+ export class SimDynamoDbProjectedIndexAttributes {
12
+ indexName;
13
+ projection;
14
+ keyAttributeNames;
15
+ constructor(properties) {
16
+ this.indexName = properties.indexName;
17
+ this.projection = properties.projection;
18
+ this.keyAttributeNames = properties.keyAttributeNames;
19
+ }
20
+ /**
21
+ * Cut an item down to the attributes the index carries.
22
+ */
23
+ project(item) {
24
+ if (this.projection.carriesWholeItem) {
25
+ return item;
26
+ }
27
+ return SimDynamoDbItem.ofAttributes(new Map(item
28
+ .entries()
29
+ .entries()
30
+ .filter(([name]) => this.carries(name))));
31
+ }
32
+ /**
33
+ * Refuse a read asking for whole items from a projection holding part of one.
34
+ *
35
+ * Real DynamoDB reads the table for each item to answer this, at a cost the
36
+ * request did not ask for, so it refuses it on an index that projects less
37
+ * than everything.
38
+ */
39
+ assertCarriesWholeItem() {
40
+ if (this.projection.carriesWholeItem) {
41
+ return;
42
+ }
43
+ throw new SimDynamoDbValidationException(`One or more parameter values were invalid: Select type ALL_ATTRIBUTES ` +
44
+ `is not supported for global secondary index ${this.indexName} ` +
45
+ `because its projection type is not ALL`);
46
+ }
47
+ /**
48
+ * Refuse an expression naming an attribute the index does not project.
49
+ */
50
+ assertCarriesPaths(paths) {
51
+ if (this.projection.carriesWholeItem) {
52
+ return;
53
+ }
54
+ const carried = [
55
+ ...this.keyAttributeNames,
56
+ ...this.projection.addedAttributeNames,
57
+ ];
58
+ for (const path of paths) {
59
+ if (carried.every((name) => !path.startsAt(name))) {
60
+ throw new SimDynamoDbValidationException(`${path.text} is not projected into the global secondary index ` +
61
+ `${this.indexName}, and a read of an index names only the ` +
62
+ `attributes it projects`);
63
+ }
64
+ }
65
+ }
66
+ /**
67
+ * Whether the index carries one attribute of the items it holds.
68
+ */
69
+ carries(attributeName) {
70
+ return (this.keyAttributeNames.has(attributeName) ||
71
+ this.projection.adds(attributeName));
72
+ }
73
+ }
74
+ //# sourceMappingURL=sim-dynamodb-projected-index-attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-projected-index-attributes.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-projected-index-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE5E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAO/D;;;;;;;GAOG;AACH,MAAM,OAAO,mCAAmC;IAC7B,SAAS,CAAS;IAClB,UAAU,CAA6B;IACvC,iBAAiB,CAAsB;IAExD,YAAY,UAAgD;QAC1D,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;QACtC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QACxC,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAC,iBAAiB,CAAC;IACxD,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAqB;QAC3B,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;YACrC,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,eAAe,CAAC,YAAY,CACjC,IAAI,GAAG,CACL,IAAI;aACD,OAAO,EAAE;aACT,OAAO,EAAE;aACT,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAC1C,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,sBAAsB;QACpB,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QAED,MAAM,IAAI,8BAA8B,CACtC,wEAAwE;YACtE,+CAA+C,IAAI,CAAC,SAAS,GAAG;YAChE,wCAAwC,CAC3C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,KAAyC;QAC1D,IAAI,IAAI,CAAC,UAAU,CAAC,gBAAgB,EAAE,CAAC;YACrC,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG;YACd,GAAG,IAAI,CAAC,iBAAiB;YACzB,GAAG,IAAI,CAAC,UAAU,CAAC,mBAAmB;SACvC,CAAC;QAEF,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC;gBAClD,MAAM,IAAI,8BAA8B,CACtC,GAAG,IAAI,CAAC,IAAI,oDAAoD;oBAC9D,GAAG,IAAI,CAAC,SAAS,0CAA0C;oBAC3D,wBAAwB,CAC3B,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAED;;OAEG;IACK,OAAO,CAAC,aAAqB;QACnC,OAAO,CACL,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,aAAa,CAAC;YACzC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CACpC,CAAC;IACJ,CAAC;CACF"}
@@ -0,0 +1,54 @@
1
+ import type { SimArn } from "../../aws/arn.js";
2
+ import type { SimDynamoDbItem } from "../item/sim-dynamodb-item.js";
3
+ import type { SimDynamoDbAttributeDefinitions } from "../table/sim-dynamodb-attribute-definitions.js";
4
+ import type { SimDynamoDbKeySchema } from "../table/sim-dynamodb-key-schema.js";
5
+ import type { SimDynamoDbTableBilling } from "../table/sim-dynamodb-table-billing.js";
6
+ import type { SimDynamoDbIndexAttributes } from "./sim-dynamodb-index-attributes.js";
7
+ import type { SimDynamoDbIndexProjection } from "./sim-dynamodb-index-projection.js";
8
+ /**
9
+ * What a secondary index needs from the table it is declared on.
10
+ *
11
+ * The table key schema is here because a local secondary index is declared
12
+ * against it: its partition key is the table's, and its sort key is anything
13
+ * the table is not already sorted by.
14
+ */
15
+ export interface SimDynamoDbSecondaryIndexTable {
16
+ readonly tableArn: SimArn;
17
+ readonly keySchema: SimDynamoDbKeySchema;
18
+ readonly billing: SimDynamoDbTableBilling;
19
+ }
20
+ /**
21
+ * One secondary index of a table, whichever of the two kinds it is.
22
+ *
23
+ * A read reaches an index through this rather than through either class, since
24
+ * walking an index is the same walking whichever kind it is. The two kinds
25
+ * differ in two answers, and both are asked for here: which attributes a read
26
+ * of the index can answer with, and whether it can answer a strongly
27
+ * consistent read at all.
28
+ */
29
+ export interface SimDynamoDbSecondaryIndex {
30
+ readonly name: string;
31
+ readonly arn: SimArn;
32
+ readonly keySchema: SimDynamoDbKeySchema;
33
+ readonly projection: SimDynamoDbIndexProjection;
34
+ /**
35
+ * Which attributes a read of this index answers with.
36
+ *
37
+ * The key attributes are supplied rather than worked out here, since they
38
+ * are the index key and the table key together and only the read knows both.
39
+ */
40
+ attributesOf(keyAttributeNames: ReadonlySet<string>): SimDynamoDbIndexAttributes;
41
+ /**
42
+ * Refuse a strongly consistent read this index cannot answer.
43
+ */
44
+ assertAnswersConsistentRead(): void;
45
+ /**
46
+ * Refuse a read of this index while it is still being built.
47
+ */
48
+ assertReadable(): void;
49
+ /**
50
+ * Refuse an item carrying one of this index's key attributes as another type.
51
+ */
52
+ assertItemKeyTypes(item: SimDynamoDbItem, attributeDefinitions: SimDynamoDbAttributeDefinitions): void;
53
+ }
54
+ //# sourceMappingURL=sim-dynamodb-secondary-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-secondary-index.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-secondary-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACtG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AACtF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AACrF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAErF;;;;;;GAMG;AACH,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;CAC3C;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,SAAS,EAAE,oBAAoB,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,0BAA0B,CAAC;IAEhD;;;;;OAKG;IACH,YAAY,CACV,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,0BAA0B,CAAC;IAE9B;;OAEG;IACH,2BAA2B,IAAI,IAAI,CAAC;IAEpC;;OAEG;IACH,cAAc,IAAI,IAAI,CAAC;IAEvB;;OAEG;IACH,kBAAkB,CAChB,IAAI,EAAE,eAAe,EACrB,oBAAoB,EAAE,+BAA+B,GACpD,IAAI,CAAC;CACT"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sim-dynamodb-secondary-index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-secondary-index.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-secondary-index.ts"],"names":[],"mappings":""}
@@ -0,0 +1,59 @@
1
+ import type { SimDynamoDbSecondaryIndexInput } from "../command/table/table.types.js";
2
+ import type { SimDynamoDbItem } from "../item/sim-dynamodb-item.js";
3
+ import type { SimDynamoDbAttributeDefinitions } from "../table/sim-dynamodb-attribute-definitions.js";
4
+ import type { SimDynamoDbKeySchema } from "../table/sim-dynamodb-key-schema.js";
5
+ import { SimDynamoDbGlobalSecondaryIndexes } from "./sim-dynamodb-global-secondary-indexes.js";
6
+ import { SimDynamoDbLocalSecondaryIndexes } from "./sim-dynamodb-local-secondary-indexes.js";
7
+ import type { SimDynamoDbSecondaryIndex, SimDynamoDbSecondaryIndexTable } from "./sim-dynamodb-secondary-index.js";
8
+ /**
9
+ * The parts of a CreateTable request that declare secondary indexes.
10
+ */
11
+ export interface SimDynamoDbSecondaryIndexesInput {
12
+ readonly GlobalSecondaryIndexes?: readonly SimDynamoDbSecondaryIndexInput[] | undefined;
13
+ readonly LocalSecondaryIndexes?: readonly SimDynamoDbSecondaryIndexInput[] | undefined;
14
+ }
15
+ /**
16
+ * Every secondary index one table carries, of both kinds.
17
+ *
18
+ * The two kinds are declared apart and described apart, so each has a
19
+ * collection of its own. What they share is a table: one namespace for their
20
+ * names, one cap on how many attributes they project between them, and one
21
+ * `IndexName` parameter reaching either of them. Those rules live here, since
22
+ * neither collection can see the other.
23
+ */
24
+ export declare class SimDynamoDbSecondaryIndexes {
25
+ readonly global: SimDynamoDbGlobalSecondaryIndexes;
26
+ readonly local: SimDynamoDbLocalSecondaryIndexes;
27
+ private constructor();
28
+ /**
29
+ * The indexes of a table declaring none of either kind.
30
+ */
31
+ static none(): SimDynamoDbSecondaryIndexes;
32
+ /**
33
+ * Read the secondary indexes a CreateTable request declares.
34
+ */
35
+ static fromInput(input: SimDynamoDbSecondaryIndexesInput, table: SimDynamoDbSecondaryIndexTable): SimDynamoDbSecondaryIndexes;
36
+ /**
37
+ * Every index the table carries, whichever kind it is.
38
+ */
39
+ get elements(): readonly SimDynamoDbSecondaryIndex[];
40
+ /**
41
+ * The index a read names, refusing one this table cannot answer with.
42
+ *
43
+ * A name the table does not have is refused, and so is an index that is
44
+ * still being built, since real DynamoDB answers neither.
45
+ */
46
+ required(indexName: string, tableName: string): SimDynamoDbSecondaryIndex;
47
+ /**
48
+ * The key schemas these indexes are read by.
49
+ *
50
+ * `AttributeDefinitions` has to name every key attribute of every index as
51
+ * well as the table's own, so the schemas are reachable together.
52
+ */
53
+ keySchemas(): readonly SimDynamoDbKeySchema[];
54
+ /**
55
+ * Refuse an item carrying an index key attribute as the wrong type.
56
+ */
57
+ assertItemKeyTypes(item: SimDynamoDbItem, attributeDefinitions: SimDynamoDbAttributeDefinitions): void;
58
+ }
59
+ //# sourceMappingURL=sim-dynamodb-secondary-indexes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-secondary-indexes.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-secondary-indexes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AACtF,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACtG,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,EAAE,iCAAiC,EAAE,MAAM,4CAA4C,CAAC;AAM/F,OAAO,EAAE,gCAAgC,EAAE,MAAM,2CAA2C,CAAC;AAC7F,OAAO,KAAK,EACV,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,mCAAmC,CAAC;AAE3C;;GAEG;AACH,MAAM,WAAW,gCAAgC;IAC/C,QAAQ,CAAC,sBAAsB,CAAC,EAC9B,SAAS,8BAA8B,EAAE,GAAG,SAAS,CAAC;IACxD,QAAQ,CAAC,qBAAqB,CAAC,EAC7B,SAAS,8BAA8B,EAAE,GAAG,SAAS,CAAC;CACzD;AAOD;;;;;;;;GAQG;AACH,qBAAa,2BAA2B;IACtC,SAAgB,MAAM,EAAE,iCAAiC,CAAC;IAC1D,SAAgB,KAAK,EAAE,gCAAgC,CAAC;IAExD,OAAO,eAGN;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,2BAA2B,CAKzC;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,gCAAgC,EACvC,KAAK,EAAE,8BAA8B,GACpC,2BAA2B,CAgB7B;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,SAAS,yBAAyB,EAAE,CAEnD;IAED;;;;;OAKG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,yBAAyB,CAKxE;IAED;;;;;OAKG;IACH,UAAU,IAAI,SAAS,oBAAoB,EAAE,CAE5C;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAI,EAAE,eAAe,EACrB,oBAAoB,EAAE,+BAA+B,GACpD,IAAI,CAIN;CACF"}