@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,42 @@
1
+ import { SimDynamoDbProjectedIndexAttributes } from "./sim-dynamodb-projected-index-attributes.js";
2
+ /**
3
+ * The attributes a local secondary index carries, plus the base table's.
4
+ *
5
+ * A local secondary index entry sits in the same partition as the item it
6
+ * indexes, so DynamoDB can read that item while it walks the index. An
7
+ * attribute the index does not project is therefore fetched rather than
8
+ * refused, which is the fetch the extra read capacity is charged for.
9
+ *
10
+ * The projection still decides what a read answers with by default, so cutting
11
+ * an item down is the same job it is on a global secondary index and is left to
12
+ * that class. What differs is that nothing here refuses a read for asking
13
+ * beyond the projection.
14
+ */
15
+ export class SimDynamoDbFetchedIndexAttributes {
16
+ projected;
17
+ constructor(properties) {
18
+ this.projected = new SimDynamoDbProjectedIndexAttributes(properties);
19
+ }
20
+ /**
21
+ * Cut an item down to the attributes the index projects.
22
+ *
23
+ * This is what a read answers with unless it asked for whole items, since
24
+ * `ALL_PROJECTED_ATTRIBUTES` is what a read of any index defaults to.
25
+ */
26
+ project(item) {
27
+ return this.projected.project(item);
28
+ }
29
+ /**
30
+ * Whole items are answerable from any projection, since the table is there.
31
+ */
32
+ assertCarriesWholeItem() {
33
+ return;
34
+ }
35
+ /**
36
+ * Any attribute is nameable, since one outside the projection is fetched.
37
+ */
38
+ assertCarriesPaths() {
39
+ return;
40
+ }
41
+ }
42
+ //# sourceMappingURL=sim-dynamodb-fetched-index-attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-fetched-index-attributes.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-fetched-index-attributes.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,mCAAmC,EAAE,MAAM,8CAA8C,CAAC;AAEnG;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,iCAAiC;IAC3B,SAAS,CAAsC;IAEhE,YAAY,UAAgD;QAC1D,IAAI,CAAC,SAAS,GAAG,IAAI,mCAAmC,CAAC,UAAU,CAAC,CAAC;IACvE,CAAC;IAED;;;;;OAKG;IACH,OAAO,CAAC,IAAqB;QAC3B,OAAO,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,CAAC;IAED;;OAEG;IACH,sBAAsB;QACpB,OAAO;IACT,CAAC;IAED;;OAEG;IACH,kBAAkB;QAChB,OAAO;IACT,CAAC;CACF"}
@@ -1,17 +1,11 @@
1
1
  import type { SimArn } from "../../aws/arn.js";
2
- import type { SimDynamoDbGlobalSecondaryIndexDescription, SimDynamoDbIndexStatus, SimDynamoDbSecondaryIndexInput } from "../command/table/table.types.js";
2
+ import type { SimDynamoDbGlobalSecondaryIndexDescription, SimDynamoDbSecondaryIndexInput, SimDynamoDbTableStatus } from "../command/table/table.types.js";
3
3
  import type { SimDynamoDbItem } from "../item/sim-dynamodb-item.js";
4
4
  import type { SimDynamoDbAttributeDefinitions } from "../table/sim-dynamodb-attribute-definitions.js";
5
5
  import { SimDynamoDbKeySchema } from "../table/sim-dynamodb-key-schema.js";
6
- import type { SimDynamoDbTableBilling } from "../table/sim-dynamodb-table-billing.js";
6
+ import type { SimDynamoDbIndexAttributes } from "./sim-dynamodb-index-attributes.js";
7
7
  import { SimDynamoDbIndexProjection } from "./sim-dynamodb-index-projection.js";
8
- /**
9
- * What a secondary index needs from the table it is declared on.
10
- */
11
- export interface SimDynamoDbSecondaryIndexTable {
12
- readonly tableArn: SimArn;
13
- readonly billing: SimDynamoDbTableBilling;
14
- }
8
+ import type { SimDynamoDbSecondaryIndex, SimDynamoDbSecondaryIndexTable } from "./sim-dynamodb-secondary-index.js";
15
9
  /**
16
10
  * One simulated global secondary index.
17
11
  *
@@ -20,12 +14,13 @@ export interface SimDynamoDbSecondaryIndexTable {
20
14
  * it holds are worked out when it is read, which is why nothing here is
21
15
  * maintained on the write path.
22
16
  */
23
- export declare class SimDynamoDbGlobalSecondaryIndex {
17
+ export declare class SimDynamoDbGlobalSecondaryIndex implements SimDynamoDbSecondaryIndex {
24
18
  readonly name: string;
25
19
  readonly arn: SimArn;
26
20
  readonly keySchema: SimDynamoDbKeySchema;
27
21
  readonly projection: SimDynamoDbIndexProjection;
28
22
  private readonly throughput;
23
+ private readonly lifecycle;
29
24
  private constructor();
30
25
  /**
31
26
  * Read one `GlobalSecondaryIndexes` entry a CreateTable request carries.
@@ -34,13 +29,50 @@ export declare class SimDynamoDbGlobalSecondaryIndex {
34
29
  * about.
35
30
  */
36
31
  static fromInput(input: SimDynamoDbSecondaryIndexInput, table: SimDynamoDbSecondaryIndexTable): SimDynamoDbGlobalSecondaryIndex;
32
+ /**
33
+ * Read the `Create` of a `GlobalSecondaryIndexUpdates` entry.
34
+ *
35
+ * An index declared this way is added to a table that already holds items, so
36
+ * it backfills where one declared on CreateTable does not. Everything else
37
+ * about it is read the same way, since a template or an SDK caller declares
38
+ * an index in the same shape either way.
39
+ */
40
+ static added(input: SimDynamoDbSecondaryIndexInput, table: SimDynamoDbSecondaryIndexTable): SimDynamoDbGlobalSecondaryIndex;
41
+ private static declared;
42
+ /**
43
+ * Finish building this index, so reads of it are answered.
44
+ */
45
+ activate(): void;
46
+ /**
47
+ * Refuse a read of this index while it is still being built.
48
+ */
49
+ assertReadable(): void;
50
+ /**
51
+ * Which attributes a read of this index answers with.
52
+ *
53
+ * A global secondary index is held apart from the table, so what it projects
54
+ * is the whole of what a read of it can answer with.
55
+ */
56
+ attributesOf(keyAttributeNames: ReadonlySet<string>): SimDynamoDbIndexAttributes;
57
+ /**
58
+ * Refuse a strongly consistent read of this index.
59
+ *
60
+ * A global secondary index is maintained asynchronously on AWS, so it cannot
61
+ * answer one at all. Every read here is strongly consistent, so accepting the
62
+ * request and ignoring the flag would leave a test passing on something real
63
+ * DynamoDB refuses outright.
64
+ */
65
+ assertAnswersConsistentRead(): void;
37
66
  /**
38
67
  * Refuse an item carrying one of this index's key attributes as another type.
39
68
  */
40
69
  assertItemKeyTypes(item: SimDynamoDbItem, attributeDefinitions: SimDynamoDbAttributeDefinitions): void;
41
70
  /**
42
71
  * Describe this index the way DynamoDB reports it.
72
+ *
73
+ * The table's status is taken rather than the index's own, since a table
74
+ * being deleted reports every index as DELETING whatever each one was doing.
43
75
  */
44
- toDescription(status: SimDynamoDbIndexStatus): SimDynamoDbGlobalSecondaryIndexDescription;
76
+ toDescription(tableStatus: SimDynamoDbTableStatus): SimDynamoDbGlobalSecondaryIndexDescription;
45
77
  }
46
78
  //# sourceMappingURL=sim-dynamodb-global-secondary-index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-dynamodb-global-secondary-index.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EACV,0CAA0C,EAC1C,sBAAsB,EACtB,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,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAE3E,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,wCAAwC,CAAC;AAGtF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAIhF;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,uBAAuB,CAAC;CAC3C;AAUD;;;;;;;GAOG;AACH,qBAAa,+BAA+B;IAC1C,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,CAAC,QAAQ,CAAC,UAAU,CAA6B;IAExD,OAAO,eAQN;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,8BAA8B,EACrC,KAAK,EAAE,8BAA8B,GACpC,+BAA+B,CAajC;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAI,EAAE,eAAe,EACrB,oBAAoB,EAAE,+BAA+B,GACpD,IAAI,CAON;IAED;;OAEG;IACH,aAAa,CACX,MAAM,EAAE,sBAAsB,GAC7B,0CAA0C,CAY5C;CACF"}
1
+ {"version":3,"file":"sim-dynamodb-global-secondary-index.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,KAAK,EACV,0CAA0C,EAC1C,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,gDAAgD,CAAC;AACtG,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAG3E,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAIrF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAIhF,OAAO,KAAK,EACV,yBAAyB,EACzB,8BAA8B,EAC/B,MAAM,mCAAmC,CAAC;AAW3C;;;;;;;GAOG;AACH,qBAAa,+BAAgC,YAAW,yBAAyB;IAC/E,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,CAAC,QAAQ,CAAC,UAAU,CAA6B;IACxD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA4B;IAEtD,OAAO,eASN;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,8BAA8B,EACrC,KAAK,EAAE,8BAA8B,GACpC,+BAA+B,CASjC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CACV,KAAK,EAAE,8BAA8B,EACrC,KAAK,EAAE,8BAA8B,GACpC,+BAA+B,CASjC;IAED,OAAO,CAAC,MAAM,CAAC,QAAQ;IAmBvB;;OAEG;IACH,QAAQ,IAAI,IAAI,CAEf;IAED;;OAEG;IACH,cAAc,IAAI,IAAI,CAErB;IAED;;;;;OAKG;IACH,YAAY,CACV,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,GACrC,0BAA0B,CAM5B;IAED;;;;;;;OAOG;IACH,2BAA2B,IAAI,IAAI,CAKlC;IAED;;OAEG;IACH,kBAAkB,CAChB,IAAI,EAAE,eAAe,EACrB,oBAAoB,EAAE,+BAA+B,GACpD,IAAI,CAON;IAED;;;;;OAKG;IACH,aAAa,CACX,WAAW,EAAE,sBAAsB,GAClC,0CAA0C,CAa5C;CACF"}
@@ -1,9 +1,13 @@
1
+ import { SimDynamoDbValidationException } from "../error/dynamodb.error.js";
1
2
  import { SimDynamoDbKeySchema } from "../table/sim-dynamodb-key-schema.js";
2
3
  import { SimDynamoDbKeySchemaSubject } from "../table/sim-dynamodb-key-schema-subject.js";
3
4
  import { assertSimDynamoDbIndexKeyTypes } from "./sim-dynamodb-index-key-types.js";
5
+ import { SimDynamoDbIndexLifecycle } from "./sim-dynamodb-index-lifecycle.js";
6
+ import { simDynamoDbIndexStatus } from "./sim-dynamodb-index-status.js";
4
7
  import { SimDynamoDbIndexProjection } from "./sim-dynamodb-index-projection.js";
5
8
  import { readSimDynamoDbIndexName } from "./sim-dynamodb-index-name.js";
6
9
  import { readSimDynamoDbIndexThroughput } from "./sim-dynamodb-index-throughput.js";
10
+ import { SimDynamoDbProjectedIndexAttributes } from "./sim-dynamodb-projected-index-attributes.js";
7
11
  /**
8
12
  * One simulated global secondary index.
9
13
  *
@@ -18,6 +22,7 @@ export class SimDynamoDbGlobalSecondaryIndex {
18
22
  keySchema;
19
23
  projection;
20
24
  throughput;
25
+ lifecycle;
21
26
  constructor(properties) {
22
27
  this.name = properties.name;
23
28
  // An index ARN is the table's own with the index named under it, which is
@@ -26,6 +31,7 @@ export class SimDynamoDbGlobalSecondaryIndex {
26
31
  this.keySchema = properties.keySchema;
27
32
  this.projection = properties.projection;
28
33
  this.throughput = properties.throughput;
34
+ this.lifecycle = properties.lifecycle;
29
35
  }
30
36
  /**
31
37
  * Read one `GlobalSecondaryIndexes` entry a CreateTable request carries.
@@ -35,14 +41,67 @@ export class SimDynamoDbGlobalSecondaryIndex {
35
41
  */
36
42
  static fromInput(input, table) {
37
43
  const name = readSimDynamoDbIndexName(input.IndexName);
44
+ return this.declared(input, table, name, SimDynamoDbIndexLifecycle.withTable(name));
45
+ }
46
+ /**
47
+ * Read the `Create` of a `GlobalSecondaryIndexUpdates` entry.
48
+ *
49
+ * An index declared this way is added to a table that already holds items, so
50
+ * it backfills where one declared on CreateTable does not. Everything else
51
+ * about it is read the same way, since a template or an SDK caller declares
52
+ * an index in the same shape either way.
53
+ */
54
+ static added(input, table) {
55
+ const name = readSimDynamoDbIndexName(input.IndexName);
56
+ return this.declared(input, table, name, SimDynamoDbIndexLifecycle.backfilling(name));
57
+ }
58
+ static declared(input, table, name, lifecycle) {
38
59
  return new this({
39
60
  name,
40
61
  tableArn: table.tableArn,
41
62
  keySchema: SimDynamoDbKeySchema.fromInput(input.KeySchema, SimDynamoDbKeySchemaSubject.index(name)),
42
63
  projection: SimDynamoDbIndexProjection.fromInput(input.Projection, name),
43
64
  throughput: readSimDynamoDbIndexThroughput(input, name, table.billing),
65
+ lifecycle,
44
66
  });
45
67
  }
68
+ /**
69
+ * Finish building this index, so reads of it are answered.
70
+ */
71
+ activate() {
72
+ this.lifecycle.activate();
73
+ }
74
+ /**
75
+ * Refuse a read of this index while it is still being built.
76
+ */
77
+ assertReadable() {
78
+ this.lifecycle.assertReadable();
79
+ }
80
+ /**
81
+ * Which attributes a read of this index answers with.
82
+ *
83
+ * A global secondary index is held apart from the table, so what it projects
84
+ * is the whole of what a read of it can answer with.
85
+ */
86
+ attributesOf(keyAttributeNames) {
87
+ return new SimDynamoDbProjectedIndexAttributes({
88
+ indexName: this.name,
89
+ projection: this.projection,
90
+ keyAttributeNames,
91
+ });
92
+ }
93
+ /**
94
+ * Refuse a strongly consistent read of this index.
95
+ *
96
+ * A global secondary index is maintained asynchronously on AWS, so it cannot
97
+ * answer one at all. Every read here is strongly consistent, so accepting the
98
+ * request and ignoring the flag would leave a test passing on something real
99
+ * DynamoDB refuses outright.
100
+ */
101
+ assertAnswersConsistentRead() {
102
+ throw new SimDynamoDbValidationException(`Consistent reads are not supported on global secondary indexes, and ` +
103
+ `this request asks for one on ${this.name}`);
104
+ }
46
105
  /**
47
106
  * Refuse an item carrying one of this index's key attributes as another type.
48
107
  */
@@ -56,14 +115,18 @@ export class SimDynamoDbGlobalSecondaryIndex {
56
115
  }
57
116
  /**
58
117
  * Describe this index the way DynamoDB reports it.
118
+ *
119
+ * The table's status is taken rather than the index's own, since a table
120
+ * being deleted reports every index as DELETING whatever each one was doing.
59
121
  */
60
- toDescription(status) {
122
+ toDescription(tableStatus) {
61
123
  return {
62
124
  IndexName: this.name,
63
125
  IndexArn: this.arn,
64
126
  KeySchema: this.keySchema.elements,
65
127
  Projection: this.projection.toDescription(),
66
- IndexStatus: status,
128
+ IndexStatus: simDynamoDbIndexStatus(tableStatus, this.lifecycle.status),
129
+ Backfilling: this.lifecycle.backfilling,
67
130
  ProvisionedThroughput: this.throughput.toDescription(),
68
131
  // Neither figure is tracked, the same way the table's are not.
69
132
  ItemCount: 0,
@@ -1 +1 @@
1
- {"version":3,"file":"sim-dynamodb-global-secondary-index.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-index.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAG1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AAkBpF;;;;;;;GAOG;AACH,MAAM,OAAO,+BAA+B;IAC1B,IAAI,CAAS;IACb,GAAG,CAAS;IACZ,SAAS,CAAuB;IAChC,UAAU,CAA6B;IAEtC,UAAU,CAA6B;IAExD,YAAoB,UAAqD;QACvE,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;QACxC,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,OAAO,IAAI,IAAI,CAAC;YACd,IAAI;YACJ,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,oBAAoB,CAAC,SAAS,CACvC,KAAK,CAAC,SAAS,EACf,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,CACxC;YACD,UAAU,EAAE,0BAA0B,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;YACxE,UAAU,EAAE,8BAA8B,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;SACvE,CAAC,CAAC;IACL,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;;OAEG;IACH,aAAa,CACX,MAA8B;QAE9B,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,WAAW,EAAE,MAAM;YACnB,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;YACtD,+DAA+D;YAC/D,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,CAAC;SAClB,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"sim-dynamodb-global-secondary-index.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,8BAA8B,EAAE,MAAM,4BAA4B,CAAC;AAG5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,qCAAqC,CAAC;AAC3E,OAAO,EAAE,2BAA2B,EAAE,MAAM,6CAA6C,CAAC;AAG1F,OAAO,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AACnF,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,EAAE,wBAAwB,EAAE,MAAM,8BAA8B,CAAC;AACxE,OAAO,EAAE,8BAA8B,EAAE,MAAM,oCAAoC,CAAC;AACpF,OAAO,EAAE,mCAAmC,EAAE,MAAM,8CAA8C,CAAC;AAenG;;;;;;;GAOG;AACH,MAAM,OAAO,+BAA+B;IAC1B,IAAI,CAAS;IACb,GAAG,CAAS;IACZ,SAAS,CAAuB;IAChC,UAAU,CAA6B;IAEtC,UAAU,CAA6B;IACvC,SAAS,CAA4B;IAEtD,YAAoB,UAAqD;QACvE,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;QACxC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QACxC,IAAI,CAAC,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC;IACxC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CAAC,SAAS,CACd,KAAqC,EACrC,KAAqC;QAErC,MAAM,IAAI,GAAG,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEvD,OAAO,IAAI,CAAC,QAAQ,CAClB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,yBAAyB,CAAC,SAAS,CAAC,IAAI,CAAC,CAC1C,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CACV,KAAqC,EACrC,KAAqC;QAErC,MAAM,IAAI,GAAG,wBAAwB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAEvD,OAAO,IAAI,CAAC,QAAQ,CAClB,KAAK,EACL,KAAK,EACL,IAAI,EACJ,yBAAyB,CAAC,WAAW,CAAC,IAAI,CAAC,CAC5C,CAAC;IACJ,CAAC;IAEO,MAAM,CAAC,QAAQ,CACrB,KAAqC,EACrC,KAAqC,EACrC,IAAY,EACZ,SAAoC;QAEpC,OAAO,IAAI,IAAI,CAAC;YACd,IAAI;YACJ,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,SAAS,EAAE,oBAAoB,CAAC,SAAS,CACvC,KAAK,CAAC,SAAS,EACf,2BAA2B,CAAC,KAAK,CAAC,IAAI,CAAC,CACxC;YACD,UAAU,EAAE,0BAA0B,CAAC,SAAS,CAAC,KAAK,CAAC,UAAU,EAAE,IAAI,CAAC;YACxE,UAAU,EAAE,8BAA8B,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC;YACtE,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC;IAC5B,CAAC;IAED;;OAEG;IACH,cAAc;QACZ,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,YAAY,CACV,iBAAsC;QAEtC,OAAO,IAAI,mCAAmC,CAAC;YAC7C,SAAS,EAAE,IAAI,CAAC,IAAI;YACpB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,iBAAiB;SAClB,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACH,2BAA2B;QACzB,MAAM,IAAI,8BAA8B,CACtC,sEAAsE;YACpE,gCAAgC,IAAI,CAAC,IAAI,EAAE,CAC9C,CAAC;IACJ,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,CACX,WAAmC;QAEnC,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,WAAW,EAAE,sBAAsB,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC;YACvE,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW;YACvC,qBAAqB,EAAE,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE;YACtD,+DAA+D;YAC/D,SAAS,EAAE,CAAC;YACZ,cAAc,EAAE,CAAC;SAClB,CAAC;IACJ,CAAC;CACF"}
@@ -1,16 +1,22 @@
1
- import type { SimDynamoDbGlobalSecondaryIndexDescription, SimDynamoDbIndexStatus, 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 { SimDynamoDbGlobalSecondaryIndex, type SimDynamoDbSecondaryIndexTable } from "./sim-dynamodb-global-secondary-index.js";
1
+ import type { SimDynamoDbGlobalSecondaryIndexDescription, SimDynamoDbSecondaryIndexInput, SimDynamoDbTableStatus } from "../command/table/table.types.js";
2
+ import { SimDynamoDbGlobalSecondaryIndex } from "./sim-dynamodb-global-secondary-index.js";
3
+ import type { SimDynamoDbTableUpdate } from "../table/sim-dynamodb-table-update.js";
4
+ import type { SimDynamoDbSecondaryIndexTable } from "./sim-dynamodb-secondary-index.js";
6
5
  /**
7
6
  * The global secondary indexes one table carries.
8
7
  *
9
8
  * The collection owns what is about how many there are, and each index owns
10
- * what is about itself, the same split the table tags follow.
9
+ * what is about itself, the same split the table tags follow. The rules that
10
+ * span both kinds of index, such as a name being unique across them, belong to
11
+ * `SimDynamoDbSecondaryIndexes` instead.
12
+ *
13
+ * UpdateTable adds and removes indexes on a live table, so what a table carries
14
+ * changes over its life. The collection is what changes, rather than the table
15
+ * being given a new one, so everything already holding the table keeps reading
16
+ * the indexes it has now.
11
17
  */
12
18
  export declare class SimDynamoDbGlobalSecondaryIndexes {
13
- readonly elements: readonly SimDynamoDbGlobalSecondaryIndex[];
19
+ #private;
14
20
  private constructor();
15
21
  /**
16
22
  * The indexes of a table declaring none.
@@ -21,22 +27,41 @@ export declare class SimDynamoDbGlobalSecondaryIndexes {
21
27
  */
22
28
  static fromInput(input: readonly SimDynamoDbSecondaryIndexInput[] | undefined, table: SimDynamoDbSecondaryIndexTable): SimDynamoDbGlobalSecondaryIndexes;
23
29
  /**
24
- * The key schemas these indexes are read by.
30
+ * The indexes this table carries now.
31
+ */
32
+ get elements(): readonly SimDynamoDbGlobalSecondaryIndex[];
33
+ /**
34
+ * Take the part of an UpdateTable that adds or removes an index.
35
+ *
36
+ * A request carries at most one of either, since that is AWS's limit, and
37
+ * both have already been checked against the table by this point. A local
38
+ * secondary index is never here, because neither AWS nor this changes one
39
+ * after the table exists.
40
+ */
41
+ applyUpdate(update: SimDynamoDbTableUpdate): void;
42
+ /**
43
+ * Find a global secondary index by name, refusing one this table lacks.
25
44
  *
26
- * `AttributeDefinitions` has to name every key attribute of every index as
27
- * well as the table's own, so the schemas are reachable together.
45
+ * UpdateTable names an index to delete rather than describing it, and real
46
+ * DynamoDB answers a name it does not have with `ResourceNotFoundException`.
47
+ * A local secondary index is not found here either, since neither AWS nor
48
+ * this changes one through `GlobalSecondaryIndexUpdates`.
28
49
  */
29
- keySchemas(): readonly SimDynamoDbKeySchema[];
50
+ required(indexName: string, tableName: string): SimDynamoDbGlobalSecondaryIndex;
30
51
  /**
31
- * Refuse an item carrying an index key attribute as the wrong type.
52
+ * Finish building every index this table carries.
32
53
  */
33
- assertItemKeyTypes(item: SimDynamoDbItem, attributeDefinitions: SimDynamoDbAttributeDefinitions): void;
54
+ activate(): void;
34
55
  /**
35
56
  * How a table reports its indexes, which is not at all when it has none.
36
57
  *
37
58
  * Real DynamoDB leaves `GlobalSecondaryIndexes` out of the description of a
38
59
  * table with no index, rather than reporting an empty list.
39
60
  */
40
- descriptions(status: SimDynamoDbIndexStatus): readonly SimDynamoDbGlobalSecondaryIndexDescription[] | undefined;
61
+ descriptions(tableStatus: SimDynamoDbTableStatus): readonly SimDynamoDbGlobalSecondaryIndexDescription[] | undefined;
62
+ /**
63
+ * Take an index off this table.
64
+ */
65
+ private remove;
41
66
  }
42
67
  //# sourceMappingURL=sim-dynamodb-global-secondary-indexes.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-dynamodb-global-secondary-indexes.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-indexes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0CAA0C,EAC1C,sBAAsB,EACtB,8BAA8B,EAC/B,MAAM,iCAAiC,CAAC;AAEzC,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,EACL,+BAA+B,EAC/B,KAAK,8BAA8B,EACpC,MAAM,0CAA0C,CAAC;AAyDlD;;;;;GAKG;AACH,qBAAa,iCAAiC;IAC5C,SAAgB,QAAQ,EAAE,SAAS,+BAA+B,EAAE,CAAC;IAErE,OAAO,eAEN;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,iCAAiC,CAE/C;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,SAAS,8BAA8B,EAAE,GAAG,SAAS,EAC5D,KAAK,EAAE,8BAA8B,GACpC,iCAAiC,CAoBnC;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;IAED;;;;;OAKG;IACH,YAAY,CACV,MAAM,EAAE,sBAAsB,GAC7B,SAAS,0CAA0C,EAAE,GAAG,SAAS,CAMnE;CACF"}
1
+ {"version":3,"file":"sim-dynamodb-global-secondary-indexes.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-indexes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0CAA0C,EAC1C,8BAA8B,EAC9B,sBAAsB,EACvB,MAAM,iCAAiC,CAAC;AAEzC,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAE3F,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAC;AACpF,OAAO,KAAK,EAAE,8BAA8B,EAAE,MAAM,mCAAmC,CAAC;AAExF;;;;;;;;;;;;GAYG;AACH,qBAAa,iCAAiC;;IAG5C,OAAO,eAEN;IAED;;OAEG;IACH,MAAM,CAAC,IAAI,IAAI,iCAAiC,CAE/C;IAED;;OAEG;IACH,MAAM,CAAC,SAAS,CACd,KAAK,EAAE,SAAS,8BAA8B,EAAE,GAAG,SAAS,EAC5D,KAAK,EAAE,8BAA8B,GACpC,iCAAiC,CAYnC;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,SAAS,+BAA+B,EAAE,CAEzD;IAED;;;;;;;OAOG;IACH,WAAW,CAAC,MAAM,EAAE,sBAAsB,GAAG,IAAI,CAQhD;IAED;;;;;;;OAOG;IACH,QAAQ,CACN,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,+BAA+B,CAajC;IAED;;OAEG;IACH,QAAQ,IAAI,IAAI,CAIf;IAED;;;;;OAKG;IACH,YAAY,CACV,WAAW,EAAE,sBAAsB,GAClC,SAAS,0CAA0C,EAAE,GAAG,SAAS,CAMnE;IAED;;OAEG;IACH,OAAO,CAAC,MAAM;CAGf"}
@@ -1,52 +1,23 @@
1
- import { SimDynamoDbValidationException } from "../error/dynamodb.error.js";
2
- import { SimDynamoDbGlobalSecondaryIndex, } from "./sim-dynamodb-global-secondary-index.js";
3
- /**
4
- * The most global secondary indexes one table holds.
5
- */
6
- const maxIndexes = 20;
7
- /**
8
- * The most NonKeyAttributes one table projects across all of its indexes.
9
- */
10
- const maxProjectedAttributes = 100;
11
- /**
12
- * Refuse a request declaring one index name twice.
13
- *
14
- * An index is reached by name, so two indexes sharing one leave a read with no
15
- * way of saying which it meant.
16
- */
17
- function assertDistinctNames(elements) {
18
- const names = new Set(elements.map((index) => index.name));
19
- if (names.size !== elements.length) {
20
- throw new SimDynamoDbValidationException("GlobalSecondaryIndexes names an index more than once, and an index " +
21
- "name is unique within a table");
22
- }
23
- }
24
- /**
25
- * Refuse a table projecting more attributes than DynamoDB lets it.
26
- *
27
- * The 20 an index projects is not the whole rule: a table is capped at 100
28
- * across all of its indexes too, which six fully projecting indexes reach. An
29
- * attribute projected into two indexes counts twice, so this is a plain sum
30
- * rather than a count of distinct names, as it is on AWS.
31
- */
32
- function assertProjectedAttributeCount(elements) {
33
- const projected = elements.reduce((total, index) => total + index.projection.nonKeyAttributeCount, 0);
34
- if (projected > maxProjectedAttributes) {
35
- const most = maxProjectedAttributes.toString();
36
- throw new SimDynamoDbValidationException(`${projected.toString()} NonKeyAttributes are projected across the ` +
37
- `table's indexes, and a table projects at most ${most}`);
38
- }
39
- }
1
+ import { SimDynamoDbResourceNotFoundException } from "../error/dynamodb.error.js";
2
+ import { SimDynamoDbGlobalSecondaryIndex } from "./sim-dynamodb-global-secondary-index.js";
3
+ import { assertSimDynamoDbIndexCount } from "./sim-dynamodb-index-limits.js";
40
4
  /**
41
5
  * The global secondary indexes one table carries.
42
6
  *
43
7
  * The collection owns what is about how many there are, and each index owns
44
- * what is about itself, the same split the table tags follow.
8
+ * what is about itself, the same split the table tags follow. The rules that
9
+ * span both kinds of index, such as a name being unique across them, belong to
10
+ * `SimDynamoDbSecondaryIndexes` instead.
11
+ *
12
+ * UpdateTable adds and removes indexes on a live table, so what a table carries
13
+ * changes over its life. The collection is what changes, rather than the table
14
+ * being given a new one, so everything already holding the table keeps reading
15
+ * the indexes it has now.
45
16
  */
46
17
  export class SimDynamoDbGlobalSecondaryIndexes {
47
- elements;
18
+ #elements;
48
19
  constructor(elements) {
49
- this.elements = elements;
20
+ this.#elements = elements;
50
21
  }
51
22
  /**
52
23
  * The indexes of a table declaring none.
@@ -61,30 +32,53 @@ export class SimDynamoDbGlobalSecondaryIndexes {
61
32
  if (input === undefined || input.length === 0) {
62
33
  return this.none();
63
34
  }
64
- if (input.length > maxIndexes) {
65
- throw new SimDynamoDbValidationException(`${input.length.toString()} GlobalSecondaryIndexes were given, and a ` +
66
- `table holds at most ${maxIndexes.toString()}`);
35
+ assertSimDynamoDbIndexCount(input.length);
36
+ return new this(input.map((index) => SimDynamoDbGlobalSecondaryIndex.fromInput(index, table)));
37
+ }
38
+ /**
39
+ * The indexes this table carries now.
40
+ */
41
+ get elements() {
42
+ return this.#elements;
43
+ }
44
+ /**
45
+ * Take the part of an UpdateTable that adds or removes an index.
46
+ *
47
+ * A request carries at most one of either, since that is AWS's limit, and
48
+ * both have already been checked against the table by this point. A local
49
+ * secondary index is never here, because neither AWS nor this changes one
50
+ * after the table exists.
51
+ */
52
+ applyUpdate(update) {
53
+ if (update.indexCreated !== undefined) {
54
+ this.#elements.push(update.indexCreated);
55
+ }
56
+ if (update.indexDeleted !== undefined) {
57
+ this.remove(update.indexDeleted);
67
58
  }
68
- const elements = input.map((index) => SimDynamoDbGlobalSecondaryIndex.fromInput(index, table));
69
- assertDistinctNames(elements);
70
- assertProjectedAttributeCount(elements);
71
- return new this(elements);
72
59
  }
73
60
  /**
74
- * The key schemas these indexes are read by.
61
+ * Find a global secondary index by name, refusing one this table lacks.
75
62
  *
76
- * `AttributeDefinitions` has to name every key attribute of every index as
77
- * well as the table's own, so the schemas are reachable together.
63
+ * UpdateTable names an index to delete rather than describing it, and real
64
+ * DynamoDB answers a name it does not have with `ResourceNotFoundException`.
65
+ * A local secondary index is not found here either, since neither AWS nor
66
+ * this changes one through `GlobalSecondaryIndexUpdates`.
78
67
  */
79
- keySchemas() {
80
- return this.elements.map((index) => index.keySchema);
68
+ required(indexName, tableName) {
69
+ const index = this.#elements.find((candidate) => candidate.name === indexName);
70
+ if (index === undefined) {
71
+ throw new SimDynamoDbResourceNotFoundException(`The table ${tableName} does not have the specified global secondary ` +
72
+ `index: ${indexName}`);
73
+ }
74
+ return index;
81
75
  }
82
76
  /**
83
- * Refuse an item carrying an index key attribute as the wrong type.
77
+ * Finish building every index this table carries.
84
78
  */
85
- assertItemKeyTypes(item, attributeDefinitions) {
86
- for (const index of this.elements) {
87
- index.assertItemKeyTypes(item, attributeDefinitions);
79
+ activate() {
80
+ for (const index of this.#elements) {
81
+ index.activate();
88
82
  }
89
83
  }
90
84
  /**
@@ -93,11 +87,17 @@ export class SimDynamoDbGlobalSecondaryIndexes {
93
87
  * Real DynamoDB leaves `GlobalSecondaryIndexes` out of the description of a
94
88
  * table with no index, rather than reporting an empty list.
95
89
  */
96
- descriptions(status) {
97
- if (this.elements.length === 0) {
90
+ descriptions(tableStatus) {
91
+ if (this.#elements.length === 0) {
98
92
  return undefined;
99
93
  }
100
- return this.elements.map((index) => index.toDescription(status));
94
+ return this.#elements.map((index) => index.toDescription(tableStatus));
95
+ }
96
+ /**
97
+ * Take an index off this table.
98
+ */
99
+ remove(indexName) {
100
+ this.#elements = this.#elements.filter((index) => index.name !== indexName);
101
101
  }
102
102
  }
103
103
  //# sourceMappingURL=sim-dynamodb-global-secondary-indexes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sim-dynamodb-global-secondary-indexes.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-indexes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sim-dynamodb-global-secondary-indexes.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-global-secondary-indexes.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,oCAAoC,EAAE,MAAM,4BAA4B,CAAC;AAClF,OAAO,EAAE,+BAA+B,EAAE,MAAM,0CAA0C,CAAC;AAC3F,OAAO,EAAE,2BAA2B,EAAE,MAAM,gCAAgC,CAAC;AAI7E;;;;;;;;;;;;GAYG;AACH,MAAM,OAAO,iCAAiC;IAC5C,SAAS,CAAoC;IAE7C,YAAoB,QAA2C;QAC7D,IAAI,CAAC,SAAS,GAAG,QAAQ,CAAC;IAC5B,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,2BAA2B,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAE1C,OAAO,IAAI,IAAI,CACb,KAAK,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAClB,+BAA+B,CAAC,SAAS,CAAC,KAAK,EAAE,KAAK,CAAC,CACxD,CACF,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;;;;;;OAOG;IACH,WAAW,CAAC,MAA8B;QACxC,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;QAED,IAAI,MAAM,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACtC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;IAED;;;;;;;OAOG;IACH,QAAQ,CACN,SAAiB,EACjB,SAAiB;QAEjB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAC/B,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,SAAS,CAC5C,CAAC;QAEF,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,oCAAoC,CAC5C,aAAa,SAAS,gDAAgD;gBACpE,UAAU,SAAS,EAAE,CACxB,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnC,KAAK,CAAC,QAAQ,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACH,YAAY,CACV,WAAmC;QAEnC,IAAI,IAAI,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,aAAa,CAAC,WAAW,CAAC,CAAC,CAAC;IACzE,CAAC;IAED;;OAEG;IACK,MAAM,CAAC,SAAiB;QAC9B,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC;IAC9E,CAAC;CACF"}
@@ -0,0 +1,44 @@
1
+ import type { SimDynamoDbDocumentPath } from "../expression/sim-dynamodb-document-path.js";
2
+ import type { SimDynamoDbItem } from "../item/sim-dynamodb-item.js";
3
+ import type { SimDynamoDbIndexProjection } from "./sim-dynamodb-index-projection.js";
4
+ /**
5
+ * Which attributes one index carries, and what it refuses for not carrying.
6
+ *
7
+ * An index entry is keyed by the index key and identified by the table key, so
8
+ * both are in every item it holds and both come back whatever it projects. The
9
+ * projection says what else does.
10
+ *
11
+ * This is where the two index kinds part company, and it is the only place a
12
+ * read of one differs from a read of the other. A global secondary index is a
13
+ * copy of the table held apart from it, so it can only answer with what it
14
+ * projects and a read asking for more is refused. A local secondary index sits
15
+ * in the same partition as the item it indexes, so DynamoDB reads the base
16
+ * table for an attribute the index does not project, and charges the extra
17
+ * read capacity for it.
18
+ *
19
+ * This is separate from the index view because it is about attributes rather
20
+ * than items: nothing here knows which items the index holds, or in what order.
21
+ */
22
+ export interface SimDynamoDbIndexAttributes {
23
+ /**
24
+ * Cut an item down to the attributes the index carries.
25
+ */
26
+ project(item: SimDynamoDbItem): SimDynamoDbItem;
27
+ /**
28
+ * Refuse a read asking for whole items where the index holds part of one.
29
+ */
30
+ assertCarriesWholeItem(): void;
31
+ /**
32
+ * Refuse an expression naming an attribute the index does not project.
33
+ */
34
+ assertCarriesPaths(paths: readonly SimDynamoDbDocumentPath[]): void;
35
+ }
36
+ /**
37
+ * What either kind of index attributes is built from.
38
+ */
39
+ export interface SimDynamoDbIndexAttributesProperties {
40
+ readonly indexName: string;
41
+ readonly projection: SimDynamoDbIndexProjection;
42
+ readonly keyAttributeNames: ReadonlySet<string>;
43
+ }
44
+ //# sourceMappingURL=sim-dynamodb-index-attributes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-index-attributes.d.ts","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-attributes.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,oCAAoC,CAAC;AAErF;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,0BAA0B;IACzC;;OAEG;IACH,OAAO,CAAC,IAAI,EAAE,eAAe,GAAG,eAAe,CAAC;IAEhD;;OAEG;IACH,sBAAsB,IAAI,IAAI,CAAC;IAE/B;;OAEG;IACH,kBAAkB,CAAC,KAAK,EAAE,SAAS,uBAAuB,EAAE,GAAG,IAAI,CAAC;CACrE;AAED;;GAEG;AACH,MAAM,WAAW,oCAAoC;IACnD,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,0BAA0B,CAAC;IAChD,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACjD"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=sim-dynamodb-index-attributes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-dynamodb-index-attributes.js","sourceRoot":"","sources":["../../../../src/service/dynamodb/secondary-index/sim-dynamodb-index-attributes.ts"],"names":[],"mappings":""}