@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
@@ -1,19 +1,15 @@
1
1
  /**
2
- * The status an index has while its table is in a status of its own.
2
+ * The status an index reports while its table is in a status of its own.
3
3
  *
4
- * An index declared on CreateTable is built with the table that carries it, so
5
- * real DynamoDB reports a CREATING index on the CreateTable response and an
6
- * ACTIVE one once the table is ACTIVE. Nothing here adds an index to a table
7
- * later, so the index status follows the table's rather than being tracked
8
- * apart from it.
4
+ * A global secondary index has a status of its own, because a table can carry
5
+ * an ACTIVE index and a CREATING one at the same time: UpdateTable adds one to
6
+ * a table that keeps serving the rest. A table being deleted takes all of them
7
+ * with it, so that one case is answered from the table rather than the index.
9
8
  */
10
- export function simDynamoDbIndexStatus(tableStatus) {
11
- if (tableStatus === "CREATING") {
12
- return "CREATING";
13
- }
9
+ export function simDynamoDbIndexStatus(tableStatus, indexStatus) {
14
10
  if (tableStatus === "DELETING") {
15
11
  return "DELETING";
16
12
  }
17
- return "ACTIVE";
13
+ return indexStatus;
18
14
  }
19
15
  //# sourceMappingURL=sim-dynamodb-index-status.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-dynamodb-index-status.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-status.ts"],"names":[],"mappings":"AAKA;;;;;;;;GAQG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAmC;IAEnC,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"sim-dynamodb-index-status.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-status.ts"],"names":[],"mappings":"AAKA;;;;;;;GAOG;AACH,MAAM,UAAU,sBAAsB,CACpC,WAAmC,EACnC,WAAmC;IAEnC,IAAI,WAAW,KAAK,UAAU,EAAE,CAAC;QAC/B,OAAO,UAAU,CAAC;IACpB,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC"}
@@ -0,0 +1,76 @@
1
+ import type { SimDynamoDbAttributeValue } from "../command/item/item.types.js";
2
+ import type { SimDynamoDbKeyCondition } from "../expression/key-condition/sim-dynamodb-key-condition.js";
3
+ import type { SimDynamoDbDocumentPath } from "../expression/sim-dynamodb-document-path.js";
4
+ import type { SimDynamoDbItem } from "../item/sim-dynamodb-item.js";
5
+ import type { SimDynamoDbAttributeDefinitions } from "../table/sim-dynamodb-attribute-definitions.js";
6
+ import { SimDynamoDbItemCollection } from "../table/sim-dynamodb-item-collection.js";
7
+ import type { SimDynamoDbItemKey } from "../table/sim-dynamodb-item-key.js";
8
+ import type { SimDynamoDbKeySchema } from "../table/sim-dynamodb-key-schema.js";
9
+ import type { SimDynamoDbReadView } from "../table/sim-dynamodb-read-view.js";
10
+ import { SimDynamoDbTableScan } from "../table/sim-dynamodb-table-scan.js";
11
+ import type { SimDynamoDbSecondaryIndex } from "./sim-dynamodb-secondary-index.js";
12
+ interface SimDynamoDbIndexViewProperties {
13
+ readonly index: SimDynamoDbSecondaryIndex;
14
+ readonly items: readonly SimDynamoDbItem[];
15
+ readonly tableKeySchema: SimDynamoDbKeySchema;
16
+ readonly attributeDefinitions: SimDynamoDbAttributeDefinitions;
17
+ readonly tableItemKey: SimDynamoDbItemKey;
18
+ }
19
+ /**
20
+ * Reading one secondary index, of either kind.
21
+ *
22
+ * The index is worked out here rather than maintained on the write path, which
23
+ * is what makes an index added to a table have nothing to backfill and every
24
+ * item write unaware of it.
25
+ *
26
+ * The two things that make an index narrower than the table are answered by a
27
+ * collaborator each. `SimDynamoDbIndexKeys` is which items it holds and how
28
+ * they are named, and `SimDynamoDbIndexAttributes` is which parts of them come
29
+ * back. What is left here is the walking, which is the same walking a table
30
+ * gets, and the same walking whichever kind of index this is.
31
+ */
32
+ export declare class SimDynamoDbIndexView implements SimDynamoDbReadView {
33
+ readonly description: string;
34
+ readonly keySchema: SimDynamoDbKeySchema;
35
+ readonly attributeDefinitions: SimDynamoDbAttributeDefinitions;
36
+ private readonly index;
37
+ private readonly items;
38
+ private readonly keys;
39
+ private readonly attributes;
40
+ private readonly order;
41
+ constructor(properties: SimDynamoDbIndexViewProperties);
42
+ /**
43
+ * The entries of the index one key condition names, by the index key.
44
+ */
45
+ itemCollection(keyCondition: SimDynamoDbKeyCondition): SimDynamoDbItemCollection;
46
+ /**
47
+ * Every entry the index holds, in the order a Scan reads them.
48
+ */
49
+ scan(): SimDynamoDbTableScan;
50
+ /**
51
+ * Refuse an `ExclusiveStartKey` this index could not have handed out.
52
+ */
53
+ assertStartKey(key: SimDynamoDbItem): void;
54
+ /**
55
+ * The index key and the table key of the entry a walk stopped on.
56
+ */
57
+ tokenKey(item: SimDynamoDbItem): Record<string, SimDynamoDbAttributeValue>;
58
+ /**
59
+ * Cut an item down to the attributes this index carries.
60
+ */
61
+ project(item: SimDynamoDbItem): SimDynamoDbItem;
62
+ /**
63
+ * Refuse a read asking for whole items from a partial projection.
64
+ */
65
+ assertCarriesWholeItem(): void;
66
+ /**
67
+ * Refuse an expression naming an attribute this index does not project.
68
+ */
69
+ assertCarriesPaths(paths: readonly SimDynamoDbDocumentPath[]): void;
70
+ /**
71
+ * Refuse a strongly consistent read this index cannot answer.
72
+ */
73
+ assertConsistentRead(): void;
74
+ }
75
+ export {};
76
+ //# sourceMappingURL=sim-dynamodb-index-view.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-index-view.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-view.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAC/E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2DAA2D,CAAC;AACzG,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACtG,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AACrF,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAChF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAI3E,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAEnF,UAAU,8BAA8B;IACtC,QAAQ,CAAC,KAAK,EAAE,yBAAyB,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,SAAS,eAAe,EAAE,CAAC;IAC3C,QAAQ,CAAC,cAAc,EAAE,oBAAoB,CAAC;IAC9C,QAAQ,CAAC,oBAAoB,EAAE,+BAA+B,CAAC;IAC/D,QAAQ,CAAC,YAAY,EAAE,kBAAkB,CAAC;CAC3C;AAED;;;;;;;;;;;;GAYG;AACH,qBAAa,oBAAqB,YAAW,mBAAmB;IAC9D,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,SAAS,EAAE,oBAAoB,CAAC;IAChD,SAAgB,oBAAoB,EAAE,+BAA+B,CAAC;IAEtE,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA6B;IACnD,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAuB;IAC5C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA0B;IAEhD,YAAY,UAAU,EAAE,8BAA8B,EAwBrD;IAED;;OAEG;IACH,cAAc,CACZ,YAAY,EAAE,uBAAuB,GACpC,yBAAyB,CAO3B;IAED;;OAEG;IACH,IAAI,IAAI,oBAAoB,CAM3B;IAED;;OAEG;IACH,cAAc,CAAC,GAAG,EAAE,eAAe,GAAG,IAAI,CAEzC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,eAAe,GAAG,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAEzE;IAED;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAE9C;IAED;;OAEG;IACH,sBAAsB,IAAI,IAAI,CAE7B;IAED;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GAAG,IAAI,CAElE;IAED;;OAEG;IACH,oBAAoB,IAAI,IAAI,CAE3B;CACF"}
@@ -0,0 +1,107 @@
1
+ import { SimDynamoDbItemCollection } from "../table/sim-dynamodb-item-collection.js";
2
+ import { SimDynamoDbTableScan } from "../table/sim-dynamodb-table-scan.js";
3
+ import { SimDynamoDbSortKeyOrder } from "../table/sim-dynamodb-sort-key-order.js";
4
+ import { SimDynamoDbIndexKeys } from "./sim-dynamodb-index-keys.js";
5
+ /**
6
+ * Reading one secondary index, of either kind.
7
+ *
8
+ * The index is worked out here rather than maintained on the write path, which
9
+ * is what makes an index added to a table have nothing to backfill and every
10
+ * item write unaware of it.
11
+ *
12
+ * The two things that make an index narrower than the table are answered by a
13
+ * collaborator each. `SimDynamoDbIndexKeys` is which items it holds and how
14
+ * they are named, and `SimDynamoDbIndexAttributes` is which parts of them come
15
+ * back. What is left here is the walking, which is the same walking a table
16
+ * gets, and the same walking whichever kind of index this is.
17
+ */
18
+ export class SimDynamoDbIndexView {
19
+ description;
20
+ keySchema;
21
+ attributeDefinitions;
22
+ index;
23
+ items;
24
+ keys;
25
+ attributes;
26
+ order;
27
+ constructor(properties) {
28
+ const { index } = properties;
29
+ this.index = index;
30
+ this.description = `index ${index.name}`;
31
+ this.keySchema = index.keySchema;
32
+ this.attributeDefinitions = properties.attributeDefinitions;
33
+ this.keys = new SimDynamoDbIndexKeys({
34
+ indexName: index.name,
35
+ indexKeySchema: index.keySchema,
36
+ tableKeySchema: properties.tableKeySchema,
37
+ attributeDefinitions: properties.attributeDefinitions,
38
+ tableItemKey: properties.tableItemKey,
39
+ });
40
+ this.attributes = index.attributesOf(this.keys.attributeNames);
41
+ // Index key values are not unique, so the table key is what separates two
42
+ // entries sharing one and lets a walk resume after either.
43
+ this.order = new SimDynamoDbSortKeyOrder({
44
+ attributeName: index.keySchema.rangeKeyAttributeName,
45
+ identity: properties.tableItemKey,
46
+ });
47
+ this.items = properties.items.filter((item) => this.keys.holds(item));
48
+ }
49
+ /**
50
+ * The entries of the index one key condition names, by the index key.
51
+ */
52
+ itemCollection(keyCondition) {
53
+ return new SimDynamoDbItemCollection({
54
+ items: this.items,
55
+ keySchema: this.keySchema,
56
+ order: this.order,
57
+ keyCondition,
58
+ });
59
+ }
60
+ /**
61
+ * Every entry the index holds, in the order a Scan reads them.
62
+ */
63
+ scan() {
64
+ return new SimDynamoDbTableScan({
65
+ items: this.items,
66
+ order: this.order,
67
+ itemKey: this.keys.indexItemKey,
68
+ });
69
+ }
70
+ /**
71
+ * Refuse an `ExclusiveStartKey` this index could not have handed out.
72
+ */
73
+ assertStartKey(key) {
74
+ this.keys.assertStartKey(key);
75
+ }
76
+ /**
77
+ * The index key and the table key of the entry a walk stopped on.
78
+ */
79
+ tokenKey(item) {
80
+ return this.keys.tokenKey(item);
81
+ }
82
+ /**
83
+ * Cut an item down to the attributes this index carries.
84
+ */
85
+ project(item) {
86
+ return this.attributes.project(item);
87
+ }
88
+ /**
89
+ * Refuse a read asking for whole items from a partial projection.
90
+ */
91
+ assertCarriesWholeItem() {
92
+ this.attributes.assertCarriesWholeItem();
93
+ }
94
+ /**
95
+ * Refuse an expression naming an attribute this index does not project.
96
+ */
97
+ assertCarriesPaths(paths) {
98
+ this.attributes.assertCarriesPaths(paths);
99
+ }
100
+ /**
101
+ * Refuse a strongly consistent read this index cannot answer.
102
+ */
103
+ assertConsistentRead() {
104
+ this.index.assertAnswersConsistentRead();
105
+ }
106
+ }
107
+ //# sourceMappingURL=sim-dynamodb-index-view.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-index-view.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-view.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAC;AAIrF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAElF,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAWpE;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,oBAAoB;IACf,WAAW,CAAS;IACpB,SAAS,CAAuB;IAChC,oBAAoB,CAAkC;IAErD,KAAK,CAA4B;IACjC,KAAK,CAA6B;IAClC,IAAI,CAAuB;IAC3B,UAAU,CAA6B;IACvC,KAAK,CAA0B;IAEhD,YAAY,UAA0C;QACpD,MAAM,EAAE,KAAK,EAAE,GAAG,UAAU,CAAC;QAE7B,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC;QACzC,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,oBAAoB,GAAG,UAAU,CAAC,oBAAoB,CAAC;QAC5D,IAAI,CAAC,IAAI,GAAG,IAAI,oBAAoB,CAAC;YACnC,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,cAAc,EAAE,KAAK,CAAC,SAAS;YAC/B,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,oBAAoB,EAAE,UAAU,CAAC,oBAAoB;YACrD,YAAY,EAAE,UAAU,CAAC,YAAY;SACtC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAE/D,0EAA0E;QAC1E,2DAA2D;QAC3D,IAAI,CAAC,KAAK,GAAG,IAAI,uBAAuB,CAAC;YACvC,aAAa,EAAE,KAAK,CAAC,SAAS,CAAC,qBAAqB;YACpD,QAAQ,EAAE,UAAU,CAAC,YAAY;SAClC,CAAC,CAAC;QAEH,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IAED;;OAEG;IACH,cAAc,CACZ,YAAqC;QAErC,OAAO,IAAI,yBAAyB,CAAC;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY;SACb,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,IAAI;QACF,OAAO,IAAI,oBAAoB,CAAC;YAC9B,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,YAAY;SAChC,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,cAAc,CAAC,GAAoB;QACjC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC;IAChC,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAqB;QAC5B,OAAO,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAClC,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,IAAqB;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,IAAI,CAAC,UAAU,CAAC,sBAAsB,EAAE,CAAC;IAC3C,CAAC;IAED;;OAEG;IACH,kBAAkB,CAAC,KAAyC;QAC1D,IAAI,CAAC,UAAU,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,oBAAoB;QAClB,IAAI,CAAC,KAAK,CAAC,2BAA2B,EAAE,CAAC;IAC3C,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ import type { SimDynamoDbAttributeValue } from "../command/item/item.types.js";
2
+ /**
3
+ * The orders an indexed table holds, as the items they are written as.
4
+ *
5
+ * Every third order carries no `status`, so the index is missing it and a test
6
+ * has something the table holds and the index does not. The statuses that are
7
+ * there repeat, so the index holds several items under one partition key, and
8
+ * `shippedAt` repeats within a status so two index entries share a whole index
9
+ * key and only the table key separates them.
10
+ */
11
+ export declare function simDynamoDbIndexedOrders(orderCount: number): readonly Readonly<Record<string, SimDynamoDbAttributeValue>>[];
12
+ //# sourceMappingURL=sim-dynamodb-indexed-orders.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-indexed-orders.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-indexed-orders.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAoB/E;;;;;;;;GAQG;AACH,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,MAAM,GACjB,SAAS,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC,EAAE,CAmBhE"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * The status the order in one place of the table carries.
3
+ */
4
+ function statusAt(position) {
5
+ if (position % 2 === 0) {
6
+ return "OPEN";
7
+ }
8
+ return "SHIPPED";
9
+ }
10
+ /**
11
+ * Whether the order in one place of the table is written without a status.
12
+ */
13
+ function isDraft(position) {
14
+ return position % 3 === 2;
15
+ }
16
+ /**
17
+ * The orders an indexed table holds, as the items they are written as.
18
+ *
19
+ * Every third order carries no `status`, so the index is missing it and a test
20
+ * has something the table holds and the index does not. The statuses that are
21
+ * there repeat, so the index holds several items under one partition key, and
22
+ * `shippedAt` repeats within a status so two index entries share a whole index
23
+ * key and only the table key separates them.
24
+ */
25
+ export function simDynamoDbIndexedOrders(orderCount) {
26
+ return Array.from({ length: orderCount }, (_unused, position) => {
27
+ const orderId = `order-${(position + 1).toString().padStart(2, "0")}`;
28
+ const order = { orderId: { S: orderId }, title: { S: `Order ${orderId}` } };
29
+ if (isDraft(position)) {
30
+ return order;
31
+ }
32
+ const shippedMonth = (Math.floor(position / 4) + 1)
33
+ .toString()
34
+ .padStart(2, "0");
35
+ return {
36
+ ...order,
37
+ status: { S: statusAt(position) },
38
+ shippedAt: { S: `2026-${shippedMonth}` },
39
+ };
40
+ });
41
+ }
42
+ //# sourceMappingURL=sim-dynamodb-indexed-orders.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-indexed-orders.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-indexed-orders.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,SAAS,QAAQ,CAAC,QAAgB;IAChC,IAAI,QAAQ,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACvB,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;GAEG;AACH,SAAS,OAAO,CAAC,QAAgB;IAC/B,OAAO,QAAQ,GAAG,CAAC,KAAK,CAAC,CAAC;AAC5B,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,wBAAwB,CACtC,UAAkB;IAElB,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,CAAC,OAAO,EAAE,QAAQ,EAAE,EAAE;QAC9D,MAAM,OAAO,GAAG,SAAS,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;QACtE,MAAM,KAAK,GAAG,EAAE,OAAO,EAAE,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,EAAE,SAAS,OAAO,EAAE,EAAE,EAAE,CAAC;QAE5E,IAAI,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;YACtB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC;aAChD,QAAQ,EAAE;aACV,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;QAEpB,OAAO;YACL,GAAG,KAAK;YACR,MAAM,EAAE,EAAE,CAAC,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE;YACjC,SAAS,EAAE,EAAE,CAAC,EAAE,QAAQ,YAAY,EAAE,EAAE;SACzC,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -0,0 +1,35 @@
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 an index to read.
7
+ *
8
+ * The projection is the input because it is what makes reads of one index
9
+ * differ from another: which attributes come back, and which `Select` values
10
+ * and filters the index can answer.
11
+ */
12
+ export interface SimDynamoDbIndexedTableInput {
13
+ readonly tableName: string;
14
+ readonly indexName: string;
15
+ readonly projectionType: SimDynamoDbProjectionType;
16
+ readonly nonKeyAttributes: readonly string[];
17
+ readonly orderCount: number;
18
+ }
19
+ /**
20
+ * Creates a table with one global secondary index, holding orders to read.
21
+ *
22
+ * The table is keyed by `orderId` and the index by `status` and `shippedAt`, so
23
+ * a read of the index walks a key the table does not have. Every third order is
24
+ * written without a `status`, which is what makes the index sparse rather than
25
+ * a second copy of the table.
26
+ *
27
+ * ```typescript
28
+ * const table = await simDynamoDbIndexedTableFactory.make(
29
+ * { projectionType: "KEYS_ONLY" },
30
+ * simAws,
31
+ * );
32
+ * ```
33
+ */
34
+ export declare const simDynamoDbIndexedTableFactory: AsyncMappedFactory<SimDynamoDbIndexedTableInput, SimDynamoDbTable, SimAws>;
35
+ //# sourceMappingURL=sim-dynamodb-indexed-table.factory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-indexed-table.factory.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-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,4BAA4B;IAC3C,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;IAC7C,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,8BAA8B,4EAwD1C,CAAC"}
@@ -0,0 +1,59 @@
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 { simDynamoDbIndexedOrders } from "./sim-dynamodb-indexed-orders.js";
5
+ /**
6
+ * Creates a table with one global secondary index, holding orders to read.
7
+ *
8
+ * The table is keyed by `orderId` and the index by `status` and `shippedAt`, so
9
+ * a read of the index walks a key the table does not have. Every third order is
10
+ * written without a `status`, which is what makes the index sparse rather than
11
+ * a second copy of the table.
12
+ *
13
+ * ```typescript
14
+ * const table = await simDynamoDbIndexedTableFactory.make(
15
+ * { projectionType: "KEYS_ONLY" },
16
+ * simAws,
17
+ * );
18
+ * ```
19
+ */
20
+ export const simDynamoDbIndexedTableFactory = new AsyncMappedFactory(() => ({
21
+ tableName: "OrdersTable",
22
+ indexName: "byStatus",
23
+ projectionType: "ALL",
24
+ nonKeyAttributes: [],
25
+ orderCount: 6,
26
+ }), async (input, simAws) => {
27
+ const simDynamoDb = simAws.dynamoDb();
28
+ await simDynamoDb.createTable({
29
+ input: {
30
+ TableName: input.tableName,
31
+ KeySchema: [{ AttributeName: "orderId", KeyType: "HASH" }],
32
+ AttributeDefinitions: [
33
+ { AttributeName: "orderId", AttributeType: "S" },
34
+ { AttributeName: "status", AttributeType: "S" },
35
+ { AttributeName: "shippedAt", AttributeType: "S" },
36
+ ],
37
+ BillingMode: "PAY_PER_REQUEST",
38
+ GlobalSecondaryIndexes: [
39
+ {
40
+ IndexName: input.indexName,
41
+ KeySchema: [
42
+ { AttributeName: "status", KeyType: "HASH" },
43
+ { AttributeName: "shippedAt", KeyType: "RANGE" },
44
+ ],
45
+ Projection: simDynamoDbIndexProjectionInput(input),
46
+ },
47
+ ],
48
+ },
49
+ });
50
+ await simAws.backgroundTasksComplete();
51
+ await Promise.all(simDynamoDbIndexedOrders(input.orderCount).map(async (order) => simDynamoDb.putItem({
52
+ input: { TableName: input.tableName, Item: order },
53
+ })));
54
+ const table = simDynamoDb.findTable(input.tableName);
55
+ assertDefined(table, `Simulated DynamoDB created the table ${input.tableName} and then did ` +
56
+ `not hold it`);
57
+ return table;
58
+ });
59
+ //# sourceMappingURL=sim-dynamodb-indexed-table.factory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-indexed-table.factory.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-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,wBAAwB,EAAE,MAAM,kCAAkC,CAAC;AAiB5E;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,8BAA8B,GAAG,IAAI,kBAAkB,CAKlE,GAAG,EAAE,CAAC,CAAC;IACL,SAAS,EAAE,aAAa;IACxB,SAAS,EAAE,UAAU;IACrB,cAAc,EAAE,KAAK;IACrB,gBAAgB,EAAE,EAAE;IACpB,UAAU,EAAE,CAAC;CACd,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,CAAC,EAAE,aAAa,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;YAC1D,oBAAoB,EAAE;gBACpB,EAAE,aAAa,EAAE,SAAS,EAAE,aAAa,EAAE,GAAG,EAAE;gBAChD,EAAE,aAAa,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,EAAE;gBAC/C,EAAE,aAAa,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,EAAE;aACnD;YACD,WAAW,EAAE,iBAAiB;YAC9B,sBAAsB,EAAE;gBACtB;oBACE,SAAS,EAAE,KAAK,CAAC,SAAS;oBAC1B,SAAS,EAAE;wBACT,EAAE,aAAa,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;wBAC5C,EAAE,aAAa,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE;qBACjD;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,wBAAwB,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAC7D,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,21 @@
1
+ import type { SimDynamoDbKeySchemaElementInput } from "../command/table/table.types.js";
2
+ import { SimDynamoDbKeySchema } from "../table/sim-dynamodb-key-schema.js";
3
+ /**
4
+ * Refuse a local secondary index on a table with no sort key of its own.
5
+ *
6
+ * The index adds a second sort key to an item collection, and a table keyed by
7
+ * a partition key alone holds one item per collection. There is nothing there
8
+ * to sort, which is why AWS refuses the whole request rather than the index.
9
+ */
10
+ export declare function assertSimDynamoDbTableSortsForLocalIndexes(tableKeySchema: SimDynamoDbKeySchema): void;
11
+ /**
12
+ * Read the KeySchema of one local secondary index.
13
+ *
14
+ * The key schema is what makes the index local. Its partition key is the
15
+ * table's own, so an entry sits in the same partition as the item it indexes,
16
+ * and its sort key is some other attribute, so the collection has a second
17
+ * order to be read in. An index sorted by the attribute the table is already
18
+ * sorted by would be the table written twice.
19
+ */
20
+ export declare function readSimDynamoDbLocalIndexKeySchema(input: readonly SimDynamoDbKeySchemaElementInput[] | undefined, indexName: string, tableKeySchema: SimDynamoDbKeySchema): SimDynamoDbKeySchema;
21
+ //# sourceMappingURL=sim-dynamodb-local-index-key-schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-local-index-key-schema.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-local-index-key-schema.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,iCAAiC,CAAC;AAExF,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E;;;;;;GAMG;AACH,wBAAgB,0CAA0C,CACxD,cAAc,EAAE,oBAAoB,GACnC,IAAI,CAUN;AAED;;;;;;;;GAQG;AACH,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,SAAS,gCAAgC,EAAE,GAAG,SAAS,EAC9D,SAAS,EAAE,MAAM,EACjB,cAAc,EAAE,oBAAoB,GACnC,oBAAoB,CA+BtB"}
@@ -0,0 +1,47 @@
1
+ import { SimDynamoDbValidationException } from "../error/dynamodb.error.js";
2
+ import { SimDynamoDbKeySchema } from "../table/sim-dynamodb-key-schema.js";
3
+ import { SimDynamoDbKeySchemaSubject } from "../table/sim-dynamodb-key-schema-subject.js";
4
+ /**
5
+ * Refuse a local secondary index on a table with no sort key of its own.
6
+ *
7
+ * The index adds a second sort key to an item collection, and a table keyed by
8
+ * a partition key alone holds one item per collection. There is nothing there
9
+ * to sort, which is why AWS refuses the whole request rather than the index.
10
+ */
11
+ export function assertSimDynamoDbTableSortsForLocalIndexes(tableKeySchema) {
12
+ if (tableKeySchema.rangeKeyAttributeName !== undefined) {
13
+ return;
14
+ }
15
+ throw new SimDynamoDbValidationException("One or more parameter values were invalid: Table KeySchema does not " +
16
+ "have a range key, which is required when specifying a " +
17
+ "LocalSecondaryIndex");
18
+ }
19
+ /**
20
+ * Read the KeySchema of one local secondary index.
21
+ *
22
+ * The key schema is what makes the index local. Its partition key is the
23
+ * table's own, so an entry sits in the same partition as the item it indexes,
24
+ * and its sort key is some other attribute, so the collection has a second
25
+ * order to be read in. An index sorted by the attribute the table is already
26
+ * sorted by would be the table written twice.
27
+ */
28
+ export function readSimDynamoDbLocalIndexKeySchema(input, indexName, tableKeySchema) {
29
+ const subject = SimDynamoDbKeySchemaSubject.index(indexName);
30
+ const keySchema = SimDynamoDbKeySchema.fromInput(input, subject);
31
+ const partitionKey = keySchema.hashKeyAttributeName;
32
+ if (partitionKey !== tableKeySchema.hashKeyAttributeName) {
33
+ throw subject.refuse(`the HASH element names ${partitionKey}, and a local secondary index ` +
34
+ `shares the table's partition key, which is ${tableKeySchema.hashKeyAttributeName}`);
35
+ }
36
+ const sortKey = keySchema.rangeKeyAttributeName;
37
+ if (sortKey === undefined) {
38
+ throw subject.refuse("a local secondary index gives an item collection a second sort key, " +
39
+ "and this key schema has no RANGE element");
40
+ }
41
+ if (sortKey === tableKeySchema.rangeKeyAttributeName) {
42
+ throw subject.refuse(`the RANGE element names ${sortKey}, which is the table's own sort ` +
43
+ `key, so the index would repeat the order the table is already in`);
44
+ }
45
+ return keySchema;
46
+ }
47
+ //# sourceMappingURL=sim-dynamodb-local-index-key-schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-local-index-key-schema.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-local-index-key-schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAC5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAE1F;;;;;;GAMG;AACH,MAAM,UAAU,0CAA0C,CACxD,cAAoC;IAEpC,IAAI,cAAc,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;QACvD,OAAO;IACT,CAAC;IAED,MAAM,IAAI,8BAA8B,CACtC,sEAAsE;QACpE,wDAAwD;QACxD,qBAAqB,CACxB,CAAC;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,kCAAkC,CAChD,KAA8D,EAC9D,SAAiB,EACjB,cAAoC;IAEpC,MAAM,OAAO,GAAG,2BAA2B,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC7D,MAAM,SAAS,GAAG,oBAAoB,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACjE,MAAM,YAAY,GAAG,SAAS,CAAC,oBAAoB,CAAC;IAEpD,IAAI,YAAY,KAAK,cAAc,CAAC,oBAAoB,EAAE,CAAC;QACzD,MAAM,OAAO,CAAC,MAAM,CAClB,0BAA0B,YAAY,gCAAgC;YACpE,8CACE,cAAc,CAAC,oBACjB,EAAE,CACL,CAAC;IACJ,CAAC;IAED,MAAM,OAAO,GAAG,SAAS,CAAC,qBAAqB,CAAC;IAEhD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,MAAM,OAAO,CAAC,MAAM,CAClB,sEAAsE;YACpE,0CAA0C,CAC7C,CAAC;IACJ,CAAC;IAED,IAAI,OAAO,KAAK,cAAc,CAAC,qBAAqB,EAAE,CAAC;QACrD,MAAM,OAAO,CAAC,MAAM,CAClB,2BAA2B,OAAO,kCAAkC;YAClE,kEAAkE,CACrE,CAAC;IACJ,CAAC;IAED,OAAO,SAAS,CAAC;AACnB,CAAC"}
@@ -0,0 +1,11 @@
1
+ import type { SimDynamoDbSecondaryIndexInput } from "../command/table/table.types.js";
2
+ /**
3
+ * Refuse the capacity a local secondary index cannot be given.
4
+ *
5
+ * A local secondary index sits in the same partition as the items it indexes
6
+ * and shares the table's throughput, so there is nothing to provision for it.
7
+ * Real DynamoDB has no throughput field on a `LocalSecondaryIndex` at all, so a
8
+ * request carrying one is refused rather than stored and ignored.
9
+ */
10
+ export declare function refuseSimDynamoDbLocalIndexThroughput(input: SimDynamoDbSecondaryIndexInput, indexName: string): void;
11
+ //# sourceMappingURL=sim-dynamodb-local-index-throughput.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-local-index-throughput.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-local-index-throughput.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,iCAAiC,CAAC;AAiBtF;;;;;;;GAOG;AACH,wBAAgB,qCAAqC,CACnD,KAAK,EAAE,8BAA8B,EACrC,SAAS,EAAE,MAAM,GAChB,IAAI,CAYN"}
@@ -0,0 +1,29 @@
1
+ import { SimDynamoDbValidationException } from "../error/dynamodb.error.js";
2
+ /**
3
+ * How a refusal says a local secondary index has no capacity of its own.
4
+ */
5
+ function refuseSetting(setting, indexName) {
6
+ return new SimDynamoDbValidationException(`One or more parameter values were invalid: ${setting} cannot be ` +
7
+ `specified for index: ${indexName} because it is a local secondary ` +
8
+ `index, which is read and written out of the table's own throughput`);
9
+ }
10
+ /**
11
+ * Refuse the capacity a local secondary index cannot be given.
12
+ *
13
+ * A local secondary index sits in the same partition as the items it indexes
14
+ * and shares the table's throughput, so there is nothing to provision for it.
15
+ * Real DynamoDB has no throughput field on a `LocalSecondaryIndex` at all, so a
16
+ * request carrying one is refused rather than stored and ignored.
17
+ */
18
+ export function refuseSimDynamoDbLocalIndexThroughput(input, indexName) {
19
+ if (input.ProvisionedThroughput !== undefined) {
20
+ throw refuseSetting("ProvisionedThroughput", indexName);
21
+ }
22
+ if (input.OnDemandThroughput !== undefined) {
23
+ throw refuseSetting("OnDemandThroughput", indexName);
24
+ }
25
+ if (input.WarmThroughput !== undefined) {
26
+ throw refuseSetting("WarmThroughput", indexName);
27
+ }
28
+ }
29
+ //# sourceMappingURL=sim-dynamodb-local-index-throughput.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-local-index-throughput.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-local-index-throughput.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAE5E;;GAEG;AACH,SAAS,aAAa,CACpB,OAAe,EACf,SAAiB;IAEjB,OAAO,IAAI,8BAA8B,CACvC,8CAA8C,OAAO,aAAa;QAChE,wBAAwB,SAAS,mCAAmC;QACpE,oEAAoE,CACvE,CAAC;AACJ,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,qCAAqC,CACnD,KAAqC,EACrC,SAAiB;IAEjB,IAAI,KAAK,CAAC,qBAAqB,KAAK,SAAS,EAAE,CAAC;QAC9C,MAAM,aAAa,CAAC,uBAAuB,EAAE,SAAS,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,KAAK,CAAC,kBAAkB,KAAK,SAAS,EAAE,CAAC;QAC3C,MAAM,aAAa,CAAC,oBAAoB,EAAE,SAAS,CAAC,CAAC;IACvD,CAAC;IAED,IAAI,KAAK,CAAC,cAAc,KAAK,SAAS,EAAE,CAAC;QACvC,MAAM,aAAa,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IACnD,CAAC;AACH,CAAC"}
@@ -0,0 +1,65 @@
1
+ import type { SimArn } from "../../aws/arn.js";
2
+ import type { SimDynamoDbLocalSecondaryIndexDescription, SimDynamoDbSecondaryIndexInput } from "../command/table/table.types.js";
3
+ import type { SimDynamoDbItem } from "../item/sim-dynamodb-item.js";
4
+ import type { SimDynamoDbAttributeDefinitions } from "../table/sim-dynamodb-attribute-definitions.js";
5
+ import type { SimDynamoDbKeySchema } from "../table/sim-dynamodb-key-schema.js";
6
+ import type { SimDynamoDbIndexAttributes } from "./sim-dynamodb-index-attributes.js";
7
+ import { SimDynamoDbIndexProjection } from "./sim-dynamodb-index-projection.js";
8
+ import type { SimDynamoDbSecondaryIndex, SimDynamoDbSecondaryIndexTable } from "./sim-dynamodb-secondary-index.js";
9
+ /**
10
+ * One simulated local secondary index.
11
+ *
12
+ * A local secondary index gives an item collection a second sort key. It shares
13
+ * the table's partition key, so an entry sits in the same partition as the item
14
+ * it indexes, which is what lets it answer a strongly consistent read and lets a
15
+ * read of it reach the base table for an attribute it does not project.
16
+ *
17
+ * `CreateTable` is the only place one can be declared. AWS has no call that
18
+ * adds, changes or removes one afterwards, so neither does this.
19
+ */
20
+ export declare class SimDynamoDbLocalSecondaryIndex implements SimDynamoDbSecondaryIndex {
21
+ readonly name: string;
22
+ readonly arn: SimArn;
23
+ readonly keySchema: SimDynamoDbKeySchema;
24
+ readonly projection: SimDynamoDbIndexProjection;
25
+ private constructor();
26
+ /**
27
+ * Read one `LocalSecondaryIndexes` entry a CreateTable request carries.
28
+ *
29
+ * The name is read first, since every other refusal names the index it is
30
+ * about.
31
+ */
32
+ static fromInput(input: SimDynamoDbSecondaryIndexInput, table: SimDynamoDbSecondaryIndexTable): SimDynamoDbLocalSecondaryIndex;
33
+ /**
34
+ * Which attributes a read of this index answers with.
35
+ */
36
+ attributesOf(keyAttributeNames: ReadonlySet<string>): SimDynamoDbIndexAttributes;
37
+ /**
38
+ * A local secondary index answers a strongly consistent read.
39
+ *
40
+ * It is written in the same partition as the item it indexes, in the same
41
+ * operation, so there is no window in which it lags behind the table. That is
42
+ * the difference from a global secondary index, which is maintained
43
+ * asynchronously and refuses one.
44
+ */
45
+ assertAnswersConsistentRead(): void;
46
+ /**
47
+ * A local secondary index is always ready to be read.
48
+ *
49
+ * It is built with the table that carries it, and AWS has no call that adds
50
+ * one afterwards, so there is no window in which it exists and cannot answer.
51
+ */
52
+ assertReadable(): void;
53
+ /**
54
+ * Refuse an item carrying one of this index's key attributes as another type.
55
+ */
56
+ assertItemKeyTypes(item: SimDynamoDbItem, attributeDefinitions: SimDynamoDbAttributeDefinitions): void;
57
+ /**
58
+ * Describe this index the way DynamoDB reports it.
59
+ *
60
+ * There is no `IndexStatus` and no `ProvisionedThroughput`, since a local
61
+ * secondary index is built with the table and shares its capacity.
62
+ */
63
+ toDescription(): SimDynamoDbLocalSecondaryIndexDescription;
64
+ }
65
+ //# sourceMappingURL=sim-dynamodb-local-secondary-index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-local-secondary-index.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-local-secondary-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EACV,yCAAyC,EACzC,8BAA8B,EAC/B,MAAM,iCAAiC,CAAC;AACzC,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;AAEhF,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAGrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAGhF,OAAO,KAAK,EACV,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,mCAAmC,CAAC;AAS3C;;;;;;;;;;GAUG;AACH,qBAAa,8BAA+B,YAAW,yBAAyB;IAC9E,SAAgB,IAAI,EAAE,MAAM,CAAC;IAC7B,SAAgB,GAAG,EAAE,MAAM,CAAC;IAC5B,SAAgB,SAAS,EAAE,oBAAoB,CAAC;IAChD,SAAgB,UAAU,EAAE,0BAA0B,CAAC;IAEvD,OAAO,eAON;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,8BAA8B,EACrC,KAAK,EAAE,8BAA8B,GACpC,8BAA8B,CAehC;IAED;;OAEG;IACH,YAAY,CACV,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,0BAA0B,CAM5B;IAED;;;;;;;OAOG;IACH,2BAA2B,IAAI,IAAI,CAElC;IAED;;;;;OAKG;IACH,cAAc,IAAI,IAAI,CAErB;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAI,EAAE,eAAe,EACrB,oBAAoB,EAAE,+BAA+B,GACpD,IAAI,CAON;IAED;;;;;OAKG;IACH,aAAa,IAAI,yCAAyC,CAUzD;CACF"}