@kensio/yulin 1.20.6 → 1.20.8

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 (518) hide show
  1. package/README.md +1 -0
  2. package/dist/sdk/router/resolve-sim-sdk-command-router.d.ts.map +1 -1
  3. package/dist/sdk/router/resolve-sim-sdk-command-router.js +5 -0
  4. package/dist/sdk/router/resolve-sim-sdk-command-router.js.map +1 -1
  5. package/dist/service/athena/cfn/named-query/sim-cfn-athena-named-query-creator.d.ts +30 -0
  6. package/dist/service/athena/cfn/named-query/sim-cfn-athena-named-query-creator.d.ts.map +1 -0
  7. package/dist/service/athena/cfn/named-query/sim-cfn-athena-named-query-creator.js +48 -0
  8. package/dist/service/athena/cfn/named-query/sim-cfn-athena-named-query-creator.js.map +1 -0
  9. package/dist/service/athena/cfn/named-query/sim-cfn-athena-named-query-properties.d.ts +33 -0
  10. package/dist/service/athena/cfn/named-query/sim-cfn-athena-named-query-properties.d.ts.map +1 -0
  11. package/dist/service/athena/cfn/named-query/sim-cfn-athena-named-query-properties.js +67 -0
  12. package/dist/service/athena/cfn/named-query/sim-cfn-athena-named-query-properties.js.map +1 -0
  13. package/dist/service/athena/cfn/sim-athena-cfn-resource-factory.d.ts +29 -0
  14. package/dist/service/athena/cfn/sim-athena-cfn-resource-factory.d.ts.map +1 -0
  15. package/dist/service/athena/cfn/sim-athena-cfn-resource-factory.js +67 -0
  16. package/dist/service/athena/cfn/sim-athena-cfn-resource-factory.js.map +1 -0
  17. package/dist/service/athena/cfn/sim-cfn-athena-property-values.d.ts +29 -0
  18. package/dist/service/athena/cfn/sim-cfn-athena-property-values.d.ts.map +1 -0
  19. package/dist/service/athena/cfn/sim-cfn-athena-property-values.js +74 -0
  20. package/dist/service/athena/cfn/sim-cfn-athena-property-values.js.map +1 -0
  21. package/dist/service/athena/cfn/sim-cfn-athena-resource-error.d.ts +21 -0
  22. package/dist/service/athena/cfn/sim-cfn-athena-resource-error.d.ts.map +1 -0
  23. package/dist/service/athena/cfn/sim-cfn-athena-resource-error.js +34 -0
  24. package/dist/service/athena/cfn/sim-cfn-athena-resource-error.js.map +1 -0
  25. package/dist/service/athena/cfn/sim-cfn-athena-resource-types.d.ts +13 -0
  26. package/dist/service/athena/cfn/sim-cfn-athena-resource-types.d.ts.map +1 -0
  27. package/dist/service/athena/cfn/sim-cfn-athena-resource-types.js +13 -0
  28. package/dist/service/athena/cfn/sim-cfn-athena-resource-types.js.map +1 -0
  29. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-configuration-properties.d.ts +12 -0
  30. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-configuration-properties.d.ts.map +1 -0
  31. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-configuration-properties.js +46 -0
  32. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-configuration-properties.js.map +1 -0
  33. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-creator.d.ts +34 -0
  34. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-creator.d.ts.map +1 -0
  35. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-creator.js +65 -0
  36. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-creator.js.map +1 -0
  37. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-properties.d.ts +46 -0
  38. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-properties.d.ts.map +1 -0
  39. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-properties.js +77 -0
  40. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-properties.js.map +1 -0
  41. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-property-rules.d.ts +27 -0
  42. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-property-rules.d.ts.map +1 -0
  43. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-property-rules.js +75 -0
  44. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-property-rules.js.map +1 -0
  45. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-unsimulated-properties.d.ts +18 -0
  46. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-unsimulated-properties.d.ts.map +1 -0
  47. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-unsimulated-properties.js +49 -0
  48. package/dist/service/athena/cfn/work-group/sim-cfn-athena-work-group-unsimulated-properties.js.map +1 -0
  49. package/dist/service/athena/command/authorize/sim-athena-authorizer.d.ts +36 -0
  50. package/dist/service/athena/command/authorize/sim-athena-authorizer.d.ts.map +1 -0
  51. package/dist/service/athena/command/authorize/sim-athena-authorizer.js +56 -0
  52. package/dist/service/athena/command/authorize/sim-athena-authorizer.js.map +1 -0
  53. package/dist/service/athena/command/execution/execution.command.d.ts +130 -0
  54. package/dist/service/athena/command/execution/execution.command.d.ts.map +1 -0
  55. package/dist/service/athena/command/execution/execution.command.js +2 -0
  56. package/dist/service/athena/command/execution/execution.command.js.map +1 -0
  57. package/dist/service/athena/command/execution/sim-athena-described-execution.d.ts +11 -0
  58. package/dist/service/athena/command/execution/sim-athena-described-execution.d.ts.map +1 -0
  59. package/dist/service/athena/command/execution/sim-athena-described-execution.js +50 -0
  60. package/dist/service/athena/command/execution/sim-athena-described-execution.js.map +1 -0
  61. package/dist/service/athena/command/execution/sim-athena-execution-reads.d.ts +30 -0
  62. package/dist/service/athena/command/execution/sim-athena-execution-reads.d.ts.map +1 -0
  63. package/dist/service/athena/command/execution/sim-athena-execution-reads.js +43 -0
  64. package/dist/service/athena/command/execution/sim-athena-execution-reads.js.map +1 -0
  65. package/dist/service/athena/command/execution/sim-athena-execution-writes.d.ts +43 -0
  66. package/dist/service/athena/command/execution/sim-athena-execution-writes.d.ts.map +1 -0
  67. package/dist/service/athena/command/execution/sim-athena-execution-writes.js +42 -0
  68. package/dist/service/athena/command/execution/sim-athena-execution-writes.js.map +1 -0
  69. package/dist/service/athena/command/execution/sim-athena-query-output-location.d.ts +17 -0
  70. package/dist/service/athena/command/execution/sim-athena-query-output-location.d.ts.map +1 -0
  71. package/dist/service/athena/command/execution/sim-athena-query-output-location.js +28 -0
  72. package/dist/service/athena/command/execution/sim-athena-query-output-location.js.map +1 -0
  73. package/dist/service/athena/command/execution/sim-athena-query-results-page.d.ts +10 -0
  74. package/dist/service/athena/command/execution/sim-athena-query-results-page.d.ts.map +1 -0
  75. package/dist/service/athena/command/execution/sim-athena-query-results-page.js +36 -0
  76. package/dist/service/athena/command/execution/sim-athena-query-results-page.js.map +1 -0
  77. package/dist/service/athena/command/execution/sim-athena-query-rows.d.ts +16 -0
  78. package/dist/service/athena/command/execution/sim-athena-query-rows.d.ts.map +1 -0
  79. package/dist/service/athena/command/execution/sim-athena-query-rows.js +28 -0
  80. package/dist/service/athena/command/execution/sim-athena-query-rows.js.map +1 -0
  81. package/dist/service/athena/command/execution/sim-athena-query-start.d.ts +24 -0
  82. package/dist/service/athena/command/execution/sim-athena-query-start.d.ts.map +1 -0
  83. package/dist/service/athena/command/execution/sim-athena-query-start.js +60 -0
  84. package/dist/service/athena/command/execution/sim-athena-query-start.js.map +1 -0
  85. package/dist/service/athena/command/execution/sim-athena-query-stop.d.ts +16 -0
  86. package/dist/service/athena/command/execution/sim-athena-query-stop.d.ts.map +1 -0
  87. package/dist/service/athena/command/execution/sim-athena-query-stop.js +23 -0
  88. package/dist/service/athena/command/execution/sim-athena-query-stop.js.map +1 -0
  89. package/dist/service/athena/command/named-query/named-query.command.d.ts +104 -0
  90. package/dist/service/athena/command/named-query/named-query.command.d.ts.map +1 -0
  91. package/dist/service/athena/command/named-query/named-query.command.js +2 -0
  92. package/dist/service/athena/command/named-query/named-query.command.js.map +1 -0
  93. package/dist/service/athena/command/named-query/sim-athena-described-named-query.d.ts +7 -0
  94. package/dist/service/athena/command/named-query/sim-athena-described-named-query.d.ts.map +1 -0
  95. package/dist/service/athena/command/named-query/sim-athena-described-named-query.js +14 -0
  96. package/dist/service/athena/command/named-query/sim-athena-described-named-query.js.map +1 -0
  97. package/dist/service/athena/command/named-query/sim-athena-named-query-batch.d.ts +14 -0
  98. package/dist/service/athena/command/named-query/sim-athena-named-query-batch.d.ts.map +1 -0
  99. package/dist/service/athena/command/named-query/sim-athena-named-query-batch.js +56 -0
  100. package/dist/service/athena/command/named-query/sim-athena-named-query-batch.js.map +1 -0
  101. package/dist/service/athena/command/named-query/sim-athena-named-query-field.d.ts +5 -0
  102. package/dist/service/athena/command/named-query/sim-athena-named-query-field.d.ts.map +1 -0
  103. package/dist/service/athena/command/named-query/sim-athena-named-query-field.js +11 -0
  104. package/dist/service/athena/command/named-query/sim-athena-named-query-field.js.map +1 -0
  105. package/dist/service/athena/command/named-query/sim-athena-named-query-reads.d.ts +33 -0
  106. package/dist/service/athena/command/named-query/sim-athena-named-query-reads.d.ts.map +1 -0
  107. package/dist/service/athena/command/named-query/sim-athena-named-query-reads.js +55 -0
  108. package/dist/service/athena/command/named-query/sim-athena-named-query-reads.js.map +1 -0
  109. package/dist/service/athena/command/named-query/sim-athena-named-query-writes.d.ts +33 -0
  110. package/dist/service/athena/command/named-query/sim-athena-named-query-writes.d.ts.map +1 -0
  111. package/dist/service/athena/command/named-query/sim-athena-named-query-writes.js +50 -0
  112. package/dist/service/athena/command/named-query/sim-athena-named-query-writes.js.map +1 -0
  113. package/dist/service/athena/command/sim-athena-command.types.d.ts +4 -0
  114. package/dist/service/athena/command/sim-athena-command.types.d.ts.map +1 -0
  115. package/dist/service/athena/command/sim-athena-command.types.js +2 -0
  116. package/dist/service/athena/command/sim-athena-command.types.js.map +1 -0
  117. package/dist/service/athena/command/sim-athena-commands.d.ts +42 -0
  118. package/dist/service/athena/command/sim-athena-commands.d.ts.map +1 -0
  119. package/dist/service/athena/command/sim-athena-commands.js +65 -0
  120. package/dist/service/athena/command/sim-athena-commands.js.map +1 -0
  121. package/dist/service/athena/command/sim-athena-page.d.ts +49 -0
  122. package/dist/service/athena/command/sim-athena-page.d.ts.map +1 -0
  123. package/dist/service/athena/command/sim-athena-page.js +75 -0
  124. package/dist/service/athena/command/sim-athena-page.js.map +1 -0
  125. package/dist/service/athena/command/sim-athena-request-options.d.ts +12 -0
  126. package/dist/service/athena/command/sim-athena-request-options.d.ts.map +1 -0
  127. package/dist/service/athena/command/sim-athena-request-options.js +2 -0
  128. package/dist/service/athena/command/sim-athena-request-options.js.map +1 -0
  129. package/dist/service/athena/command/work-group/sim-athena-described-work-group.d.ts +14 -0
  130. package/dist/service/athena/command/work-group/sim-athena-described-work-group.d.ts.map +1 -0
  131. package/dist/service/athena/command/work-group/sim-athena-described-work-group.js +66 -0
  132. package/dist/service/athena/command/work-group/sim-athena-described-work-group.js.map +1 -0
  133. package/dist/service/athena/command/work-group/sim-athena-work-group-creation.d.ts +12 -0
  134. package/dist/service/athena/command/work-group/sim-athena-work-group-creation.d.ts.map +1 -0
  135. package/dist/service/athena/command/work-group/sim-athena-work-group-creation.js +22 -0
  136. package/dist/service/athena/command/work-group/sim-athena-work-group-creation.js.map +1 -0
  137. package/dist/service/athena/command/work-group/sim-athena-work-group-deletion.d.ts +12 -0
  138. package/dist/service/athena/command/work-group/sim-athena-work-group-deletion.d.ts.map +1 -0
  139. package/dist/service/athena/command/work-group/sim-athena-work-group-deletion.js +24 -0
  140. package/dist/service/athena/command/work-group/sim-athena-work-group-deletion.js.map +1 -0
  141. package/dist/service/athena/command/work-group/sim-athena-work-group-input.d.ts +26 -0
  142. package/dist/service/athena/command/work-group/sim-athena-work-group-input.d.ts.map +1 -0
  143. package/dist/service/athena/command/work-group/sim-athena-work-group-input.js +93 -0
  144. package/dist/service/athena/command/work-group/sim-athena-work-group-input.js.map +1 -0
  145. package/dist/service/athena/command/work-group/sim-athena-work-group-reads.d.ts +26 -0
  146. package/dist/service/athena/command/work-group/sim-athena-work-group-reads.d.ts.map +1 -0
  147. package/dist/service/athena/command/work-group/sim-athena-work-group-reads.js +39 -0
  148. package/dist/service/athena/command/work-group/sim-athena-work-group-reads.js.map +1 -0
  149. package/dist/service/athena/command/work-group/sim-athena-work-group-update.d.ts +12 -0
  150. package/dist/service/athena/command/work-group/sim-athena-work-group-update.d.ts.map +1 -0
  151. package/dist/service/athena/command/work-group/sim-athena-work-group-update.js +26 -0
  152. package/dist/service/athena/command/work-group/sim-athena-work-group-update.js.map +1 -0
  153. package/dist/service/athena/command/work-group/sim-athena-work-group-updates-input.d.ts +11 -0
  154. package/dist/service/athena/command/work-group/sim-athena-work-group-updates-input.d.ts.map +1 -0
  155. package/dist/service/athena/command/work-group/sim-athena-work-group-updates-input.js +35 -0
  156. package/dist/service/athena/command/work-group/sim-athena-work-group-updates-input.js.map +1 -0
  157. package/dist/service/athena/command/work-group/sim-athena-work-group-writes.d.ts +40 -0
  158. package/dist/service/athena/command/work-group/sim-athena-work-group-writes.d.ts.map +1 -0
  159. package/dist/service/athena/command/work-group/sim-athena-work-group-writes.js +53 -0
  160. package/dist/service/athena/command/work-group/sim-athena-work-group-writes.js.map +1 -0
  161. package/dist/service/athena/command/work-group/work-group.command.d.ts +164 -0
  162. package/dist/service/athena/command/work-group/work-group.command.d.ts.map +1 -0
  163. package/dist/service/athena/command/work-group/work-group.command.js +2 -0
  164. package/dist/service/athena/command/work-group/work-group.command.js.map +1 -0
  165. package/dist/service/athena/error/sim-athena.error.d.ts +33 -0
  166. package/dist/service/athena/error/sim-athena.error.d.ts.map +1 -0
  167. package/dist/service/athena/error/sim-athena.error.js +34 -0
  168. package/dist/service/athena/error/sim-athena.error.js.map +1 -0
  169. package/dist/service/athena/execution/sim-athena-no-result-destination.d.ts +11 -0
  170. package/dist/service/athena/execution/sim-athena-no-result-destination.d.ts.map +1 -0
  171. package/dist/service/athena/execution/sim-athena-no-result-destination.js +15 -0
  172. package/dist/service/athena/execution/sim-athena-no-result-destination.js.map +1 -0
  173. package/dist/service/athena/execution/sim-athena-output-location.d.ts +24 -0
  174. package/dist/service/athena/execution/sim-athena-output-location.d.ts.map +1 -0
  175. package/dist/service/athena/execution/sim-athena-output-location.js +49 -0
  176. package/dist/service/athena/execution/sim-athena-output-location.js.map +1 -0
  177. package/dist/service/athena/execution/sim-athena-query-execution-store.d.ts +24 -0
  178. package/dist/service/athena/execution/sim-athena-query-execution-store.d.ts.map +1 -0
  179. package/dist/service/athena/execution/sim-athena-query-execution-store.js +36 -0
  180. package/dist/service/athena/execution/sim-athena-query-execution-store.js.map +1 -0
  181. package/dist/service/athena/execution/sim-athena-query-execution.d.ts +58 -0
  182. package/dist/service/athena/execution/sim-athena-query-execution.d.ts.map +1 -0
  183. package/dist/service/athena/execution/sim-athena-query-execution.js +81 -0
  184. package/dist/service/athena/execution/sim-athena-query-execution.js.map +1 -0
  185. package/dist/service/athena/execution/sim-athena-query-runner.d.ts +48 -0
  186. package/dist/service/athena/execution/sim-athena-query-runner.d.ts.map +1 -0
  187. package/dist/service/athena/execution/sim-athena-query-runner.js +87 -0
  188. package/dist/service/athena/execution/sim-athena-query-runner.js.map +1 -0
  189. package/dist/service/athena/execution/sim-athena-query-state.d.ts +12 -0
  190. package/dist/service/athena/execution/sim-athena-query-state.d.ts.map +1 -0
  191. package/dist/service/athena/execution/sim-athena-query-state.js +18 -0
  192. package/dist/service/athena/execution/sim-athena-query-state.js.map +1 -0
  193. package/dist/service/athena/execution/sim-athena-query-status.d.ts +28 -0
  194. package/dist/service/athena/execution/sim-athena-query-status.d.ts.map +1 -0
  195. package/dist/service/athena/execution/sim-athena-query-status.js +48 -0
  196. package/dist/service/athena/execution/sim-athena-query-status.js.map +1 -0
  197. package/dist/service/athena/execution/sim-athena-query-tokens.d.ts +30 -0
  198. package/dist/service/athena/execution/sim-athena-query-tokens.d.ts.map +1 -0
  199. package/dist/service/athena/execution/sim-athena-query-tokens.js +49 -0
  200. package/dist/service/athena/execution/sim-athena-query-tokens.js.map +1 -0
  201. package/dist/service/athena/execution/sim-athena-result-csv.d.ts +11 -0
  202. package/dist/service/athena/execution/sim-athena-result-csv.d.ts.map +1 -0
  203. package/dist/service/athena/execution/sim-athena-result-csv.js +20 -0
  204. package/dist/service/athena/execution/sim-athena-result-csv.js.map +1 -0
  205. package/dist/service/athena/execution/sim-athena-result-writer.d.ts +42 -0
  206. package/dist/service/athena/execution/sim-athena-result-writer.d.ts.map +1 -0
  207. package/dist/service/athena/execution/sim-athena-result-writer.js +31 -0
  208. package/dist/service/athena/execution/sim-athena-result-writer.js.map +1 -0
  209. package/dist/service/athena/execution/sim-athena-write-failure.d.ts +9 -0
  210. package/dist/service/athena/execution/sim-athena-write-failure.d.ts.map +1 -0
  211. package/dist/service/athena/execution/sim-athena-write-failure.js +12 -0
  212. package/dist/service/athena/execution/sim-athena-write-failure.js.map +1 -0
  213. package/dist/service/athena/index.d.ts +21 -0
  214. package/dist/service/athena/index.d.ts.map +1 -0
  215. package/dist/service/athena/index.js +18 -0
  216. package/dist/service/athena/index.js.map +1 -0
  217. package/dist/service/athena/named-query/sim-athena-named-query-store.d.ts +42 -0
  218. package/dist/service/athena/named-query/sim-athena-named-query-store.d.ts.map +1 -0
  219. package/dist/service/athena/named-query/sim-athena-named-query-store.js +62 -0
  220. package/dist/service/athena/named-query/sim-athena-named-query-store.js.map +1 -0
  221. package/dist/service/athena/named-query/sim-athena-named-query.d.ts +30 -0
  222. package/dist/service/athena/named-query/sim-athena-named-query.d.ts.map +1 -0
  223. package/dist/service/athena/named-query/sim-athena-named-query.js +28 -0
  224. package/dist/service/athena/named-query/sim-athena-named-query.js.map +1 -0
  225. package/dist/service/athena/result/sim-athena-declared-result.d.ts +44 -0
  226. package/dist/service/athena/result/sim-athena-declared-result.d.ts.map +1 -0
  227. package/dist/service/athena/result/sim-athena-declared-result.js +2 -0
  228. package/dist/service/athena/result/sim-athena-declared-result.js.map +1 -0
  229. package/dist/service/athena/result/sim-athena-query-results.d.ts +48 -0
  230. package/dist/service/athena/result/sim-athena-query-results.d.ts.map +1 -0
  231. package/dist/service/athena/result/sim-athena-query-results.js +59 -0
  232. package/dist/service/athena/result/sim-athena-query-results.js.map +1 -0
  233. package/dist/service/athena/result/sim-athena-resolved-result.d.ts +20 -0
  234. package/dist/service/athena/result/sim-athena-resolved-result.d.ts.map +1 -0
  235. package/dist/service/athena/result/sim-athena-resolved-result.js +52 -0
  236. package/dist/service/athena/result/sim-athena-resolved-result.js.map +1 -0
  237. package/dist/service/athena/sdk/sim-athena-sdk-command-router.d.ts +18 -0
  238. package/dist/service/athena/sdk/sim-athena-sdk-command-router.d.ts.map +1 -0
  239. package/dist/service/athena/sdk/sim-athena-sdk-command-router.js +80 -0
  240. package/dist/service/athena/sdk/sim-athena-sdk-command-router.js.map +1 -0
  241. package/dist/service/athena/sim-athena-arn.d.ts +11 -0
  242. package/dist/service/athena/sim-athena-arn.d.ts.map +1 -0
  243. package/dist/service/athena/sim-athena-arn.js +13 -0
  244. package/dist/service/athena/sim-athena-arn.js.map +1 -0
  245. package/dist/service/athena/sim-athena-executions.d.ts +81 -0
  246. package/dist/service/athena/sim-athena-executions.d.ts.map +1 -0
  247. package/dist/service/athena/sim-athena-executions.js +112 -0
  248. package/dist/service/athena/sim-athena-executions.js.map +1 -0
  249. package/dist/service/athena/sim-athena.d.ts +93 -0
  250. package/dist/service/athena/sim-athena.d.ts.map +1 -0
  251. package/dist/service/athena/sim-athena.js +128 -0
  252. package/dist/service/athena/sim-athena.js.map +1 -0
  253. package/dist/service/athena/workgroup/sim-athena-result-configuration.d.ts +59 -0
  254. package/dist/service/athena/workgroup/sim-athena-result-configuration.d.ts.map +1 -0
  255. package/dist/service/athena/workgroup/sim-athena-result-configuration.js +61 -0
  256. package/dist/service/athena/workgroup/sim-athena-result-configuration.js.map +1 -0
  257. package/dist/service/athena/workgroup/sim-athena-work-group-configuration.d.ts +52 -0
  258. package/dist/service/athena/workgroup/sim-athena-work-group-configuration.d.ts.map +1 -0
  259. package/dist/service/athena/workgroup/sim-athena-work-group-configuration.js +67 -0
  260. package/dist/service/athena/workgroup/sim-athena-work-group-configuration.js.map +1 -0
  261. package/dist/service/athena/workgroup/sim-athena-work-group-name.d.ts +17 -0
  262. package/dist/service/athena/workgroup/sim-athena-work-group-name.d.ts.map +1 -0
  263. package/dist/service/athena/workgroup/sim-athena-work-group-name.js +41 -0
  264. package/dist/service/athena/workgroup/sim-athena-work-group-name.js.map +1 -0
  265. package/dist/service/athena/workgroup/sim-athena-work-group-store.d.ts +31 -0
  266. package/dist/service/athena/workgroup/sim-athena-work-group-store.d.ts.map +1 -0
  267. package/dist/service/athena/workgroup/sim-athena-work-group-store.js +45 -0
  268. package/dist/service/athena/workgroup/sim-athena-work-group-store.js.map +1 -0
  269. package/dist/service/athena/workgroup/sim-athena-work-group-updates.d.ts +32 -0
  270. package/dist/service/athena/workgroup/sim-athena-work-group-updates.d.ts.map +1 -0
  271. package/dist/service/athena/workgroup/sim-athena-work-group-updates.js +2 -0
  272. package/dist/service/athena/workgroup/sim-athena-work-group-updates.js.map +1 -0
  273. package/dist/service/athena/workgroup/sim-athena-work-group.d.ts +54 -0
  274. package/dist/service/athena/workgroup/sim-athena-work-group.d.ts.map +1 -0
  275. package/dist/service/athena/workgroup/sim-athena-work-group.js +59 -0
  276. package/dist/service/athena/workgroup/sim-athena-work-group.js.map +1 -0
  277. package/dist/service/aws/factory/sim-aws-logs-collaborators.d.ts +6 -0
  278. package/dist/service/aws/factory/sim-aws-logs-collaborators.d.ts.map +1 -1
  279. package/dist/service/aws/factory/sim-aws-logs-collaborators.js +9 -0
  280. package/dist/service/aws/factory/sim-aws-logs-collaborators.js.map +1 -1
  281. package/dist/service/aws/factory/sim-aws-self-contained-service-builder.d.ts +18 -0
  282. package/dist/service/aws/factory/sim-aws-self-contained-service-builder.d.ts.map +1 -1
  283. package/dist/service/aws/factory/sim-aws-self-contained-service-builder.js +22 -0
  284. package/dist/service/aws/factory/sim-aws-self-contained-service-builder.js.map +1 -1
  285. package/dist/service/aws/factory/sim-aws-service-factory.d.ts +6 -0
  286. package/dist/service/aws/factory/sim-aws-service-factory.d.ts.map +1 -1
  287. package/dist/service/aws/factory/sim-aws-service-factory.js +8 -0
  288. package/dist/service/aws/factory/sim-aws-service-factory.js.map +1 -1
  289. package/dist/service/aws/sim-aws-account-region-scope.d.ts +6 -0
  290. package/dist/service/aws/sim-aws-account-region-scope.d.ts.map +1 -1
  291. package/dist/service/aws/sim-aws-account-region-scope.js +8 -0
  292. package/dist/service/aws/sim-aws-account-region-scope.js.map +1 -1
  293. package/dist/service/aws/sim-aws-service-accessors.d.ts +6 -0
  294. package/dist/service/aws/sim-aws-service-accessors.d.ts.map +1 -1
  295. package/dist/service/aws/sim-aws-service-accessors.js +8 -0
  296. package/dist/service/aws/sim-aws-service-accessors.js.map +1 -1
  297. package/dist/service/cloudformation/resource/cfn/athena/sim-athena-cfn-value-adapter.d.ts +6 -0
  298. package/dist/service/cloudformation/resource/cfn/athena/sim-athena-cfn-value-adapter.d.ts.map +1 -0
  299. package/dist/service/cloudformation/resource/cfn/athena/sim-athena-cfn-value-adapter.js +19 -0
  300. package/dist/service/cloudformation/resource/cfn/athena/sim-athena-cfn-value-adapter.js.map +1 -0
  301. package/dist/service/cloudformation/resource/cfn/athena/sim-athena-named-query-cfn.d.ts +23 -0
  302. package/dist/service/cloudformation/resource/cfn/athena/sim-athena-named-query-cfn.d.ts.map +1 -0
  303. package/dist/service/cloudformation/resource/cfn/athena/sim-athena-named-query-cfn.js +25 -0
  304. package/dist/service/cloudformation/resource/cfn/athena/sim-athena-named-query-cfn.js.map +1 -0
  305. package/dist/service/cloudformation/resource/cfn/athena/sim-athena-work-group-cfn.d.ts +26 -0
  306. package/dist/service/cloudformation/resource/cfn/athena/sim-athena-work-group-cfn.d.ts.map +1 -0
  307. package/dist/service/cloudformation/resource/cfn/athena/sim-athena-work-group-cfn.js +28 -0
  308. package/dist/service/cloudformation/resource/cfn/athena/sim-athena-work-group-cfn.js.map +1 -0
  309. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-cfn-value-adapter.d.ts +6 -0
  310. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-cfn-value-adapter.d.ts.map +1 -0
  311. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-cfn-value-adapter.js +19 -0
  312. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-cfn-value-adapter.js.map +1 -0
  313. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-database-cfn.d.ts +27 -0
  314. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-database-cfn.d.ts.map +1 -0
  315. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-database-cfn.js +27 -0
  316. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-database-cfn.js.map +1 -0
  317. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-table-cfn-id.d.ts +21 -0
  318. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-table-cfn-id.d.ts.map +1 -0
  319. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-table-cfn-id.js +22 -0
  320. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-table-cfn-id.js.map +1 -0
  321. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-table-cfn.d.ts +27 -0
  322. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-table-cfn.d.ts.map +1 -0
  323. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-table-cfn.js +30 -0
  324. package/dist/service/cloudformation/resource/cfn/glue/sim-glue-table-cfn.js.map +1 -0
  325. package/dist/service/cloudformation/resource/cfn/sim-cfn-service-value-adapters.d.ts.map +1 -1
  326. package/dist/service/cloudformation/resource/cfn/sim-cfn-service-value-adapters.js +4 -0
  327. package/dist/service/cloudformation/resource/cfn/sim-cfn-service-value-adapters.js.map +1 -1
  328. package/dist/service/cloudformation/resource/resolve/service/sim-cfn-service-factories.d.ts.map +1 -1
  329. package/dist/service/cloudformation/resource/resolve/service/sim-cfn-service-factories.js +8 -0
  330. package/dist/service/cloudformation/resource/resolve/service/sim-cfn-service-factories.js.map +1 -1
  331. package/dist/service/cloudformation/resource/sim-cfn-resource-record.d.ts.map +1 -1
  332. package/dist/service/cloudformation/resource/sim-cfn-resource-record.js +9 -0
  333. package/dist/service/cloudformation/resource/sim-cfn-resource-record.js.map +1 -1
  334. package/dist/service/glue/arn/sim-glue-arn.d.ts +22 -0
  335. package/dist/service/glue/arn/sim-glue-arn.d.ts.map +1 -0
  336. package/dist/service/glue/arn/sim-glue-arn.js +29 -0
  337. package/dist/service/glue/arn/sim-glue-arn.js.map +1 -0
  338. package/dist/service/glue/arn/sim-glue-authorized-resources.d.ts +17 -0
  339. package/dist/service/glue/arn/sim-glue-authorized-resources.d.ts.map +1 -0
  340. package/dist/service/glue/arn/sim-glue-authorized-resources.js +29 -0
  341. package/dist/service/glue/arn/sim-glue-authorized-resources.js.map +1 -0
  342. package/dist/service/glue/cfn/database/sim-cfn-glue-database-creator.d.ts +27 -0
  343. package/dist/service/glue/cfn/database/sim-cfn-glue-database-creator.d.ts.map +1 -0
  344. package/dist/service/glue/cfn/database/sim-cfn-glue-database-creator.js +43 -0
  345. package/dist/service/glue/cfn/database/sim-cfn-glue-database-creator.js.map +1 -0
  346. package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.d.ts +31 -0
  347. package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.d.ts.map +1 -0
  348. package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.js +61 -0
  349. package/dist/service/glue/cfn/database/sim-cfn-glue-database-properties.js.map +1 -0
  350. package/dist/service/glue/cfn/database/sim-cfn-glue-database-rules.d.ts +18 -0
  351. package/dist/service/glue/cfn/database/sim-cfn-glue-database-rules.d.ts.map +1 -0
  352. package/dist/service/glue/cfn/database/sim-cfn-glue-database-rules.js +43 -0
  353. package/dist/service/glue/cfn/database/sim-cfn-glue-database-rules.js.map +1 -0
  354. package/dist/service/glue/cfn/database/sim-cfn-glue-database-unsimulated-properties.d.ts +10 -0
  355. package/dist/service/glue/cfn/database/sim-cfn-glue-database-unsimulated-properties.d.ts.map +1 -0
  356. package/dist/service/glue/cfn/database/sim-cfn-glue-database-unsimulated-properties.js +25 -0
  357. package/dist/service/glue/cfn/database/sim-cfn-glue-database-unsimulated-properties.js.map +1 -0
  358. package/dist/service/glue/cfn/sim-cfn-glue-catalog-id.d.ts +18 -0
  359. package/dist/service/glue/cfn/sim-cfn-glue-catalog-id.d.ts.map +1 -0
  360. package/dist/service/glue/cfn/sim-cfn-glue-catalog-id.js +20 -0
  361. package/dist/service/glue/cfn/sim-cfn-glue-catalog-id.js.map +1 -0
  362. package/dist/service/glue/cfn/sim-cfn-glue-ignored.d.ts +19 -0
  363. package/dist/service/glue/cfn/sim-cfn-glue-ignored.d.ts.map +1 -0
  364. package/dist/service/glue/cfn/sim-cfn-glue-ignored.js +22 -0
  365. package/dist/service/glue/cfn/sim-cfn-glue-ignored.js.map +1 -0
  366. package/dist/service/glue/cfn/sim-cfn-glue-property-error.d.ts +5 -0
  367. package/dist/service/glue/cfn/sim-cfn-glue-property-error.d.ts.map +1 -0
  368. package/dist/service/glue/cfn/sim-cfn-glue-property-error.js +8 -0
  369. package/dist/service/glue/cfn/sim-cfn-glue-property-error.js.map +1 -0
  370. package/dist/service/glue/cfn/sim-cfn-glue-record.d.ts +37 -0
  371. package/dist/service/glue/cfn/sim-cfn-glue-record.d.ts.map +1 -0
  372. package/dist/service/glue/cfn/sim-cfn-glue-record.js +63 -0
  373. package/dist/service/glue/cfn/sim-cfn-glue-record.js.map +1 -0
  374. package/dist/service/glue/cfn/sim-cfn-glue-values.d.ts +40 -0
  375. package/dist/service/glue/cfn/sim-cfn-glue-values.d.ts.map +1 -0
  376. package/dist/service/glue/cfn/sim-cfn-glue-values.js +74 -0
  377. package/dist/service/glue/cfn/sim-cfn-glue-values.js.map +1 -0
  378. package/dist/service/glue/cfn/sim-glue-cfn-resource-factory.d.ts +28 -0
  379. package/dist/service/glue/cfn/sim-glue-cfn-resource-factory.d.ts.map +1 -0
  380. package/dist/service/glue/cfn/sim-glue-cfn-resource-factory.js +54 -0
  381. package/dist/service/glue/cfn/sim-glue-cfn-resource-factory.js.map +1 -0
  382. package/dist/service/glue/cfn/table/sim-cfn-glue-columns.d.ts +20 -0
  383. package/dist/service/glue/cfn/table/sim-cfn-glue-columns.d.ts.map +1 -0
  384. package/dist/service/glue/cfn/table/sim-cfn-glue-columns.js +51 -0
  385. package/dist/service/glue/cfn/table/sim-cfn-glue-columns.js.map +1 -0
  386. package/dist/service/glue/cfn/table/sim-cfn-glue-storage-descriptor.d.ts +19 -0
  387. package/dist/service/glue/cfn/table/sim-cfn-glue-storage-descriptor.d.ts.map +1 -0
  388. package/dist/service/glue/cfn/table/sim-cfn-glue-storage-descriptor.js +63 -0
  389. package/dist/service/glue/cfn/table/sim-cfn-glue-storage-descriptor.js.map +1 -0
  390. package/dist/service/glue/cfn/table/sim-cfn-glue-table-creator.d.ts +30 -0
  391. package/dist/service/glue/cfn/table/sim-cfn-glue-table-creator.d.ts.map +1 -0
  392. package/dist/service/glue/cfn/table/sim-cfn-glue-table-creator.js +47 -0
  393. package/dist/service/glue/cfn/table/sim-cfn-glue-table-creator.js.map +1 -0
  394. package/dist/service/glue/cfn/table/sim-cfn-glue-table-input.d.ts +16 -0
  395. package/dist/service/glue/cfn/table/sim-cfn-glue-table-input.d.ts.map +1 -0
  396. package/dist/service/glue/cfn/table/sim-cfn-glue-table-input.js +26 -0
  397. package/dist/service/glue/cfn/table/sim-cfn-glue-table-input.js.map +1 -0
  398. package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.d.ts +31 -0
  399. package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.d.ts.map +1 -0
  400. package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.js +55 -0
  401. package/dist/service/glue/cfn/table/sim-cfn-glue-table-properties.js.map +1 -0
  402. package/dist/service/glue/cfn/table/sim-cfn-glue-table-rules.d.ts +12 -0
  403. package/dist/service/glue/cfn/table/sim-cfn-glue-table-rules.d.ts.map +1 -0
  404. package/dist/service/glue/cfn/table/sim-cfn-glue-table-rules.js +37 -0
  405. package/dist/service/glue/cfn/table/sim-cfn-glue-table-rules.js.map +1 -0
  406. package/dist/service/glue/cfn/table/sim-cfn-glue-table-unsimulated-properties.d.ts +19 -0
  407. package/dist/service/glue/cfn/table/sim-cfn-glue-table-unsimulated-properties.d.ts.map +1 -0
  408. package/dist/service/glue/cfn/table/sim-cfn-glue-table-unsimulated-properties.js +75 -0
  409. package/dist/service/glue/cfn/table/sim-cfn-glue-table-unsimulated-properties.js.map +1 -0
  410. package/dist/service/glue/command/authorize/sim-glue-authorize-resources.d.ts +18 -0
  411. package/dist/service/glue/command/authorize/sim-glue-authorize-resources.d.ts.map +1 -0
  412. package/dist/service/glue/command/authorize/sim-glue-authorize-resources.js +26 -0
  413. package/dist/service/glue/command/authorize/sim-glue-authorize-resources.js.map +1 -0
  414. package/dist/service/glue/command/authorize/sim-glue-authorizer.d.ts +45 -0
  415. package/dist/service/glue/command/authorize/sim-glue-authorizer.d.ts.map +1 -0
  416. package/dist/service/glue/command/authorize/sim-glue-authorizer.js +59 -0
  417. package/dist/service/glue/command/authorize/sim-glue-authorizer.js.map +1 -0
  418. package/dist/service/glue/command/database/database.command.d.ts +86 -0
  419. package/dist/service/glue/command/database/database.command.d.ts.map +1 -0
  420. package/dist/service/glue/command/database/database.command.js +2 -0
  421. package/dist/service/glue/command/database/database.command.js.map +1 -0
  422. package/dist/service/glue/command/database/sim-glue-database-commands.d.ts +42 -0
  423. package/dist/service/glue/command/database/sim-glue-database-commands.d.ts.map +1 -0
  424. package/dist/service/glue/command/database/sim-glue-database-commands.js +74 -0
  425. package/dist/service/glue/command/database/sim-glue-database-commands.js.map +1 -0
  426. package/dist/service/glue/command/database/sim-glue-database-detail.d.ts +10 -0
  427. package/dist/service/glue/command/database/sim-glue-database-detail.d.ts.map +1 -0
  428. package/dist/service/glue/command/database/sim-glue-database-detail.js +18 -0
  429. package/dist/service/glue/command/database/sim-glue-database-detail.js.map +1 -0
  430. package/dist/service/glue/command/sim-glue-catalog-id.d.ts +11 -0
  431. package/dist/service/glue/command/sim-glue-catalog-id.d.ts.map +1 -0
  432. package/dist/service/glue/command/sim-glue-catalog-id.js +18 -0
  433. package/dist/service/glue/command/sim-glue-catalog-id.js.map +1 -0
  434. package/dist/service/glue/command/sim-glue-request-options.d.ts +12 -0
  435. package/dist/service/glue/command/sim-glue-request-options.d.ts.map +1 -0
  436. package/dist/service/glue/command/sim-glue-request-options.js +2 -0
  437. package/dist/service/glue/command/sim-glue-request-options.js.map +1 -0
  438. package/dist/service/glue/command/table/sim-glue-table-commands.d.ts +43 -0
  439. package/dist/service/glue/command/table/sim-glue-table-commands.d.ts.map +1 -0
  440. package/dist/service/glue/command/table/sim-glue-table-commands.js +86 -0
  441. package/dist/service/glue/command/table/sim-glue-table-commands.js.map +1 -0
  442. package/dist/service/glue/command/table/sim-glue-table-detail.d.ts +14 -0
  443. package/dist/service/glue/command/table/sim-glue-table-detail.d.ts.map +1 -0
  444. package/dist/service/glue/command/table/sim-glue-table-detail.js +28 -0
  445. package/dist/service/glue/command/table/sim-glue-table-detail.js.map +1 -0
  446. package/dist/service/glue/command/table/table.command.d.ts +105 -0
  447. package/dist/service/glue/command/table/table.command.d.ts.map +1 -0
  448. package/dist/service/glue/command/table/table.command.js +2 -0
  449. package/dist/service/glue/command/table/table.command.js.map +1 -0
  450. package/dist/service/glue/database/sim-glue-catalog-name.d.ts +8 -0
  451. package/dist/service/glue/database/sim-glue-catalog-name.d.ts.map +1 -0
  452. package/dist/service/glue/database/sim-glue-catalog-name.js +26 -0
  453. package/dist/service/glue/database/sim-glue-catalog-name.js.map +1 -0
  454. package/dist/service/glue/database/sim-glue-database-store.d.ts +37 -0
  455. package/dist/service/glue/database/sim-glue-database-store.d.ts.map +1 -0
  456. package/dist/service/glue/database/sim-glue-database-store.js +54 -0
  457. package/dist/service/glue/database/sim-glue-database-store.js.map +1 -0
  458. package/dist/service/glue/database/sim-glue-database.d.ts +31 -0
  459. package/dist/service/glue/database/sim-glue-database.d.ts.map +1 -0
  460. package/dist/service/glue/database/sim-glue-database.js +33 -0
  461. package/dist/service/glue/database/sim-glue-database.js.map +1 -0
  462. package/dist/service/glue/error/sim-glue.error.d.ts +38 -0
  463. package/dist/service/glue/error/sim-glue.error.d.ts.map +1 -0
  464. package/dist/service/glue/error/sim-glue.error.js +41 -0
  465. package/dist/service/glue/error/sim-glue.error.js.map +1 -0
  466. package/dist/service/glue/index.d.ts +14 -0
  467. package/dist/service/glue/index.d.ts.map +1 -0
  468. package/dist/service/glue/index.js +9 -0
  469. package/dist/service/glue/index.js.map +1 -0
  470. package/dist/service/glue/sdk/sim-glue-sdk-command-router.d.ts +14 -0
  471. package/dist/service/glue/sdk/sim-glue-sdk-command-router.d.ts.map +1 -0
  472. package/dist/service/glue/sdk/sim-glue-sdk-command-router.js +52 -0
  473. package/dist/service/glue/sdk/sim-glue-sdk-command-router.js.map +1 -0
  474. package/dist/service/glue/sim-glue.d.ts +74 -0
  475. package/dist/service/glue/sim-glue.d.ts.map +1 -0
  476. package/dist/service/glue/sim-glue.js +128 -0
  477. package/dist/service/glue/sim-glue.js.map +1 -0
  478. package/dist/service/glue/table/sim-glue-table-input-shape.d.ts +37 -0
  479. package/dist/service/glue/table/sim-glue-table-input-shape.d.ts.map +1 -0
  480. package/dist/service/glue/table/sim-glue-table-input-shape.js +26 -0
  481. package/dist/service/glue/table/sim-glue-table-input-shape.js.map +1 -0
  482. package/dist/service/glue/table/sim-glue-table-schema.d.ts +51 -0
  483. package/dist/service/glue/table/sim-glue-table-schema.d.ts.map +1 -0
  484. package/dist/service/glue/table/sim-glue-table-schema.js +2 -0
  485. package/dist/service/glue/table/sim-glue-table-schema.js.map +1 -0
  486. package/dist/service/glue/table/sim-glue-table-store.d.ts +35 -0
  487. package/dist/service/glue/table/sim-glue-table-store.d.ts.map +1 -0
  488. package/dist/service/glue/table/sim-glue-table-store.js +71 -0
  489. package/dist/service/glue/table/sim-glue-table-store.js.map +1 -0
  490. package/dist/service/glue/table/sim-glue-table.d.ts +55 -0
  491. package/dist/service/glue/table/sim-glue-table.d.ts.map +1 -0
  492. package/dist/service/glue/table/sim-glue-table.js +58 -0
  493. package/dist/service/glue/table/sim-glue-table.js.map +1 -0
  494. package/dist/service/glue/write/sim-glue-catalog-writer.d.ts +35 -0
  495. package/dist/service/glue/write/sim-glue-catalog-writer.d.ts.map +1 -0
  496. package/dist/service/glue/write/sim-glue-catalog-writer.js +40 -0
  497. package/dist/service/glue/write/sim-glue-catalog-writer.js.map +1 -0
  498. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.d.ts +5 -1
  499. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.d.ts.map +1 -1
  500. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.js +10 -1
  501. package/dist/service/logs/command/delivery/sim-logs-delivery-source-commands.js.map +1 -1
  502. package/dist/service/logs/delivery/cloudfront/sim-aws-logs-delivery-distributions.d.ts +34 -0
  503. package/dist/service/logs/delivery/cloudfront/sim-aws-logs-delivery-distributions.d.ts.map +1 -0
  504. package/dist/service/logs/delivery/cloudfront/sim-aws-logs-delivery-distributions.js +54 -0
  505. package/dist/service/logs/delivery/cloudfront/sim-aws-logs-delivery-distributions.js.map +1 -0
  506. package/dist/service/logs/delivery/sim-logs-delivery-source-resources.d.ts +28 -0
  507. package/dist/service/logs/delivery/sim-logs-delivery-source-resources.d.ts.map +1 -0
  508. package/dist/service/logs/delivery/sim-logs-delivery-source-resources.js +14 -0
  509. package/dist/service/logs/delivery/sim-logs-delivery-source-resources.js.map +1 -0
  510. package/dist/service/logs/sim-logs-commands.d.ts +7 -0
  511. package/dist/service/logs/sim-logs-commands.d.ts.map +1 -1
  512. package/dist/service/logs/sim-logs-commands.js +3 -1
  513. package/dist/service/logs/sim-logs-commands.js.map +1 -1
  514. package/dist/util/record/defined-entries.d.ts +10 -0
  515. package/dist/util/record/defined-entries.d.ts.map +1 -0
  516. package/dist/util/record/defined-entries.js +12 -0
  517. package/dist/util/record/defined-entries.js.map +1 -0
  518. package/package.json +11 -1
@@ -0,0 +1,24 @@
1
+ import type { SimAthenaQueryExecution } from "./sim-athena-query-execution.js";
2
+ /**
3
+ * The query executions of one simulated Athena scope.
4
+ */
5
+ export declare class SimAthenaQueryExecutionStore {
6
+ private readonly executions;
7
+ /**
8
+ * Every execution in this scope, oldest first.
9
+ */
10
+ get all(): readonly SimAthenaQueryExecution[];
11
+ /**
12
+ * Store an execution.
13
+ */
14
+ put(execution: SimAthenaQueryExecution): void;
15
+ /**
16
+ * Find an execution by id.
17
+ */
18
+ find(queryExecutionId: string): SimAthenaQueryExecution | undefined;
19
+ /**
20
+ * Resolve an execution by id, or refuse.
21
+ */
22
+ require(queryExecutionId: string): SimAthenaQueryExecution;
23
+ }
24
+ //# sourceMappingURL=sim-athena-query-execution-store.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-query-execution-store.d.ts","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-query-execution-store.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAE/E;;GAEG;AACH,qBAAa,4BAA4B;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8C;IAEzE;;OAEG;IACH,IAAI,GAAG,IAAI,SAAS,uBAAuB,EAAE,CAE5C;IAED;;OAEG;IACH,GAAG,CAAC,SAAS,EAAE,uBAAuB,GAAG,IAAI,CAE5C;IAED;;OAEG;IACH,IAAI,CAAC,gBAAgB,EAAE,MAAM,GAAG,uBAAuB,GAAG,SAAS,CAElE;IAED;;OAEG;IACH,OAAO,CAAC,gBAAgB,EAAE,MAAM,GAAG,uBAAuB,CAUzD;CACF"}
@@ -0,0 +1,36 @@
1
+ import { SimAthenaInvalidRequestException } from "../error/sim-athena.error.js";
2
+ /**
3
+ * The query executions of one simulated Athena scope.
4
+ */
5
+ export class SimAthenaQueryExecutionStore {
6
+ executions = new Map();
7
+ /**
8
+ * Every execution in this scope, oldest first.
9
+ */
10
+ get all() {
11
+ return this.executions.values().toArray();
12
+ }
13
+ /**
14
+ * Store an execution.
15
+ */
16
+ put(execution) {
17
+ this.executions.set(execution.queryExecutionId, execution);
18
+ }
19
+ /**
20
+ * Find an execution by id.
21
+ */
22
+ find(queryExecutionId) {
23
+ return this.executions.get(queryExecutionId);
24
+ }
25
+ /**
26
+ * Resolve an execution by id, or refuse.
27
+ */
28
+ require(queryExecutionId) {
29
+ const found = this.find(queryExecutionId);
30
+ if (found === undefined) {
31
+ throw new SimAthenaInvalidRequestException(`QueryExecution ${queryExecutionId} was not found`);
32
+ }
33
+ return found;
34
+ }
35
+ }
36
+ //# sourceMappingURL=sim-athena-query-execution-store.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-query-execution-store.js","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-query-execution-store.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAGhF;;GAEG;AACH,MAAM,OAAO,4BAA4B;IACtB,UAAU,GAAG,IAAI,GAAG,EAAmC,CAAC;IAEzE;;OAEG;IACH,IAAI,GAAG;QACL,OAAO,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE,CAAC;IAC5C,CAAC;IAED;;OAEG;IACH,GAAG,CAAC,SAAkC;QACpC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC;IAC7D,CAAC;IAED;;OAEG;IACH,IAAI,CAAC,gBAAwB;QAC3B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAC/C,CAAC;IAED;;OAEG;IACH,OAAO,CAAC,gBAAwB;QAC9B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAE1C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,MAAM,IAAI,gCAAgC,CACxC,kBAAkB,gBAAgB,gBAAgB,CACnD,CAAC;QACJ,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
@@ -0,0 +1,58 @@
1
+ import type { SimAthenaResolvedResult } from "../result/sim-athena-resolved-result.js";
2
+ import type { SimAthenaQueryState } from "./sim-athena-query-state.js";
3
+ interface SimAthenaQueryExecutionProperties {
4
+ readonly queryExecutionId: string;
5
+ readonly queryString: string;
6
+ readonly workGroupName: string;
7
+ readonly outputLocation: string;
8
+ readonly submittedAt: Date;
9
+ readonly database?: string | undefined;
10
+ readonly catalog?: string | undefined;
11
+ }
12
+ /**
13
+ * One simulated Athena query execution.
14
+ *
15
+ * A query is the one thing here that changes over time, so this is held
16
+ * mutably and moved through its states by `SimAthenaQueryRunner`. Everything
17
+ * else in simulated Athena is replaced rather than mutated.
18
+ *
19
+ * The result it settles with is a declaration, matched on the query text. No
20
+ * SQL is read to produce it.
21
+ */
22
+ export declare class SimAthenaQueryExecution {
23
+ #private;
24
+ readonly queryExecutionId: string;
25
+ readonly queryString: string;
26
+ readonly workGroupName: string;
27
+ readonly outputLocation: string;
28
+ readonly submittedAt: Date;
29
+ readonly database: string | undefined;
30
+ readonly catalog: string | undefined;
31
+ constructor(properties: SimAthenaQueryExecutionProperties);
32
+ get state(): SimAthenaQueryState;
33
+ get stateChangeReason(): string | undefined;
34
+ get completedAt(): Date | undefined;
35
+ /**
36
+ * How many bytes the query scanned.
37
+ *
38
+ * Reported whichever way the query ended, because a caller counting the cost
39
+ * of a query that failed still wants it.
40
+ */
41
+ get bytesScanned(): number;
42
+ /** The rows this query answered with, once it has succeeded. */
43
+ get result(): SimAthenaResolvedResult | undefined;
44
+ /** Whether this query has finished. */
45
+ get isSettled(): boolean;
46
+ /** Move the query from queued to running. */
47
+ start(): void;
48
+ /** Record what the query scanned, whether or not it goes on to succeed. */
49
+ recordBytesScanned(bytesScanned: number): void;
50
+ /** Finish the query with the rows it answered. */
51
+ succeed(result: SimAthenaResolvedResult, completedAt: Date): void;
52
+ /** Finish the query without an answer, saying why. */
53
+ fail(reason: string, completedAt: Date): void;
54
+ /** Give up on a query a caller stopped. */
55
+ cancel(completedAt: Date): void;
56
+ }
57
+ export {};
58
+ //# sourceMappingURL=sim-athena-query-execution.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-query-execution.d.ts","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-query-execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AACvF,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,UAAU,iCAAiC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC;IAC3B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACvC,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACvC;AAED;;;;;;;;;GASG;AACH,qBAAa,uBAAuB;;IAClC,SAAgB,gBAAgB,EAAE,MAAM,CAAC;IACzC,SAAgB,WAAW,EAAE,MAAM,CAAC;IACpC,SAAgB,aAAa,EAAE,MAAM,CAAC;IACtC,SAAgB,cAAc,EAAE,MAAM,CAAC;IACvC,SAAgB,WAAW,EAAE,IAAI,CAAC;IAClC,SAAgB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;IAC7C,SAAgB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAM5C,YAAY,UAAU,EAAE,iCAAiC,EAQxD;IAED,IAAI,KAAK,IAAI,mBAAmB,CAE/B;IAED,IAAI,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,IAAI,WAAW,IAAI,IAAI,GAAG,SAAS,CAElC;IAED;;;;;OAKG;IACH,IAAI,YAAY,IAAI,MAAM,CAEzB;IAED,gEAAgE;IAChE,IAAI,MAAM,IAAI,uBAAuB,GAAG,SAAS,CAEhD;IAED,uCAAuC;IACvC,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED,6CAA6C;IAC7C,KAAK,IAAI,IAAI,CAEZ;IAED,2EAA2E;IAC3E,kBAAkB,CAAC,YAAY,EAAE,MAAM,GAAG,IAAI,CAE7C;IAED,kDAAkD;IAClD,OAAO,CAAC,MAAM,EAAE,uBAAuB,EAAE,WAAW,EAAE,IAAI,GAAG,IAAI,CAIhE;IAED,sDAAsD;IACtD,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,GAAG,IAAI,CAE5C;IAED,2CAA2C;IAC3C,MAAM,CAAC,WAAW,EAAE,IAAI,GAAG,IAAI,CAE9B;CACF"}
@@ -0,0 +1,81 @@
1
+ import { SimAthenaQueryStatus } from "./sim-athena-query-status.js";
2
+ /**
3
+ * One simulated Athena query execution.
4
+ *
5
+ * A query is the one thing here that changes over time, so this is held
6
+ * mutably and moved through its states by `SimAthenaQueryRunner`. Everything
7
+ * else in simulated Athena is replaced rather than mutated.
8
+ *
9
+ * The result it settles with is a declaration, matched on the query text. No
10
+ * SQL is read to produce it.
11
+ */
12
+ export class SimAthenaQueryExecution {
13
+ queryExecutionId;
14
+ queryString;
15
+ workGroupName;
16
+ outputLocation;
17
+ submittedAt;
18
+ database;
19
+ catalog;
20
+ #status = new SimAthenaQueryStatus();
21
+ #bytesScanned = 0;
22
+ #result;
23
+ constructor(properties) {
24
+ this.queryExecutionId = properties.queryExecutionId;
25
+ this.queryString = properties.queryString;
26
+ this.workGroupName = properties.workGroupName;
27
+ this.outputLocation = properties.outputLocation;
28
+ this.submittedAt = properties.submittedAt;
29
+ this.database = properties.database;
30
+ this.catalog = properties.catalog;
31
+ }
32
+ get state() {
33
+ return this.#status.state;
34
+ }
35
+ get stateChangeReason() {
36
+ return this.#status.stateChangeReason;
37
+ }
38
+ get completedAt() {
39
+ return this.#status.completedAt;
40
+ }
41
+ /**
42
+ * How many bytes the query scanned.
43
+ *
44
+ * Reported whichever way the query ended, because a caller counting the cost
45
+ * of a query that failed still wants it.
46
+ */
47
+ get bytesScanned() {
48
+ return this.#bytesScanned;
49
+ }
50
+ /** The rows this query answered with, once it has succeeded. */
51
+ get result() {
52
+ return this.#result;
53
+ }
54
+ /** Whether this query has finished. */
55
+ get isSettled() {
56
+ return this.#status.isSettled;
57
+ }
58
+ /** Move the query from queued to running. */
59
+ start() {
60
+ this.#status.start();
61
+ }
62
+ /** Record what the query scanned, whether or not it goes on to succeed. */
63
+ recordBytesScanned(bytesScanned) {
64
+ this.#bytesScanned = bytesScanned;
65
+ }
66
+ /** Finish the query with the rows it answered. */
67
+ succeed(result, completedAt) {
68
+ if (this.#status.settle("SUCCEEDED", undefined, completedAt)) {
69
+ this.#result = result;
70
+ }
71
+ }
72
+ /** Finish the query without an answer, saying why. */
73
+ fail(reason, completedAt) {
74
+ this.#status.settle("FAILED", reason, completedAt);
75
+ }
76
+ /** Give up on a query a caller stopped. */
77
+ cancel(completedAt) {
78
+ this.#status.settle("CANCELLED", "Query cancelled by user", completedAt);
79
+ }
80
+ }
81
+ //# sourceMappingURL=sim-athena-query-execution.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-query-execution.js","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-query-execution.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAYpE;;;;;;;;;GASG;AACH,MAAM,OAAO,uBAAuB;IAClB,gBAAgB,CAAS;IACzB,WAAW,CAAS;IACpB,aAAa,CAAS;IACtB,cAAc,CAAS;IACvB,WAAW,CAAO;IAClB,QAAQ,CAAqB;IAC7B,OAAO,CAAqB;IAEnC,OAAO,GAAG,IAAI,oBAAoB,EAAE,CAAC;IAC9C,aAAa,GAAG,CAAC,CAAC;IAClB,OAAO,CAAsC;IAE7C,YAAY,UAA6C;QACvD,IAAI,CAAC,gBAAgB,GAAG,UAAU,CAAC,gBAAgB,CAAC;QACpD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAC1C,IAAI,CAAC,aAAa,GAAG,UAAU,CAAC,aAAa,CAAC;QAC9C,IAAI,CAAC,cAAc,GAAG,UAAU,CAAC,cAAc,CAAC;QAChD,IAAI,CAAC,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC;QAC1C,IAAI,CAAC,QAAQ,GAAG,UAAU,CAAC,QAAQ,CAAC;QACpC,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;IACpC,CAAC;IAED,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;IACxC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,IAAI,YAAY;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,gEAAgE;IAChE,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,uCAAuC;IACvC,IAAI,SAAS;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;IAChC,CAAC;IAED,6CAA6C;IAC7C,KAAK;QACH,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;IACvB,CAAC;IAED,2EAA2E;IAC3E,kBAAkB,CAAC,YAAoB;QACrC,IAAI,CAAC,aAAa,GAAG,YAAY,CAAC;IACpC,CAAC;IAED,kDAAkD;IAClD,OAAO,CAAC,MAA+B,EAAE,WAAiB;QACxD,IAAI,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,CAAC;YAC7D,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QACxB,CAAC;IACH,CAAC;IAED,sDAAsD;IACtD,IAAI,CAAC,MAAc,EAAE,WAAiB;QACpC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;IACrD,CAAC;IAED,2CAA2C;IAC3C,MAAM,CAAC,WAAiB;QACtB,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,WAAW,EAAE,yBAAyB,EAAE,WAAW,CAAC,CAAC;IAC3E,CAAC;CACF"}
@@ -0,0 +1,48 @@
1
+ import type { BackgroundScheduler } from "../../../util/background/background.js";
2
+ import type { SimAwsCaller } from "../../aws/caller/sim-aws-caller.js";
3
+ import type { SimAthenaQueryResults } from "../result/sim-athena-query-results.js";
4
+ import type { SimAthenaWorkGroupStore } from "../workgroup/sim-athena-work-group-store.js";
5
+ import type { SimAthenaQueryExecution } from "./sim-athena-query-execution.js";
6
+ import type { SimAthenaResultWriter } from "./sim-athena-result-writer.js";
7
+ interface SimAthenaQueryRunnerProperties {
8
+ readonly results: SimAthenaQueryResults;
9
+ readonly workGroups: SimAthenaWorkGroupStore;
10
+ readonly writer: SimAthenaResultWriter;
11
+ readonly background: BackgroundScheduler;
12
+ }
13
+ /**
14
+ * Moves a query execution through its states on the background scheduler.
15
+ *
16
+ * A query is queued as soon as `StartQueryExecution` is answered and reaches
17
+ * `RUNNING` on the simulator's background work, the way
18
+ * `SimEcsServiceTaskStarter` schedules a task to reach `RUNNING`. Finishing is
19
+ * scheduled again from there, so a caller polling `GetQueryExecution` sees
20
+ * each state rather than a query that was already over by the time it looked.
21
+ *
22
+ * A query somebody stopped in between is left where it is. Nothing here brings
23
+ * a settled execution back.
24
+ */
25
+ export declare class SimAthenaQueryRunner {
26
+ private readonly results;
27
+ private readonly workGroups;
28
+ private readonly writer;
29
+ private readonly background;
30
+ constructor(properties: SimAthenaQueryRunnerProperties);
31
+ /**
32
+ * Run one queued execution, a state at a time.
33
+ */
34
+ run(execution: SimAthenaQueryExecution, caller: SimAwsCaller | undefined): void;
35
+ private scheduleFinish;
36
+ private finish;
37
+ /**
38
+ * Why this query cannot answer, where something says it cannot.
39
+ *
40
+ * The cutoff is checked against what the declaration says the query
41
+ * scanned. That is the whole of the cost guardrail here, and it is the one
42
+ * thing this simulation can enforce for real without a query engine.
43
+ */
44
+ private refusalFor;
45
+ private write;
46
+ }
47
+ export {};
48
+ //# sourceMappingURL=sim-athena-query-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-query-runner.d.ts","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-query-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAC;AAClF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oCAAoC,CAAC;AACvE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAC;AAEnF,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,6CAA6C,CAAC;AAC3F,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,iCAAiC,CAAC;AAC/E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAG3E,UAAU,8BAA8B;IACtC,QAAQ,CAAC,OAAO,EAAE,qBAAqB,CAAC;IACxC,QAAQ,CAAC,UAAU,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,MAAM,EAAE,qBAAqB,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,mBAAmB,CAAC;CAC1C;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAwB;IAChD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA0B;IACrD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAsB;IAEjD,YAAY,UAAU,EAAE,8BAA8B,EAKrD;IAED;;OAEG;IACH,GAAG,CACD,SAAS,EAAE,uBAAuB,EAClC,MAAM,EAAE,YAAY,GAAG,SAAS,GAC/B,IAAI,CASN;IAED,OAAO,CAAC,cAAc;YAWR,MAAM;IAsBpB;;;;;;OAMG;IACH,OAAO,CAAC,UAAU;YAuBJ,KAAK;CAepB"}
@@ -0,0 +1,87 @@
1
+ import { simAthenaWriteFailureReason } from "./sim-athena-write-failure.js";
2
+ /**
3
+ * Moves a query execution through its states on the background scheduler.
4
+ *
5
+ * A query is queued as soon as `StartQueryExecution` is answered and reaches
6
+ * `RUNNING` on the simulator's background work, the way
7
+ * `SimEcsServiceTaskStarter` schedules a task to reach `RUNNING`. Finishing is
8
+ * scheduled again from there, so a caller polling `GetQueryExecution` sees
9
+ * each state rather than a query that was already over by the time it looked.
10
+ *
11
+ * A query somebody stopped in between is left where it is. Nothing here brings
12
+ * a settled execution back.
13
+ */
14
+ export class SimAthenaQueryRunner {
15
+ results;
16
+ workGroups;
17
+ writer;
18
+ background;
19
+ constructor(properties) {
20
+ this.results = properties.results;
21
+ this.workGroups = properties.workGroups;
22
+ this.writer = properties.writer;
23
+ this.background = properties.background;
24
+ }
25
+ /**
26
+ * Run one queued execution, a state at a time.
27
+ */
28
+ run(execution, caller) {
29
+ this.background.schedule(() => {
30
+ if (!execution.isSettled) {
31
+ execution.start();
32
+ this.scheduleFinish(execution, caller);
33
+ }
34
+ return Promise.resolve();
35
+ });
36
+ }
37
+ scheduleFinish(execution, caller) {
38
+ this.background.schedule(async () => {
39
+ if (!execution.isSettled) {
40
+ await this.finish(execution, caller);
41
+ }
42
+ });
43
+ }
44
+ async finish(execution, caller) {
45
+ const result = this.results.resultFor({
46
+ queryString: execution.queryString,
47
+ workGroupName: execution.workGroupName,
48
+ });
49
+ execution.recordBytesScanned(result.bytesScanned);
50
+ const refusal = this.refusalFor(execution, result);
51
+ if (refusal !== undefined) {
52
+ execution.fail(refusal, this.background.now());
53
+ return;
54
+ }
55
+ await this.write(execution, result, caller);
56
+ }
57
+ /**
58
+ * Why this query cannot answer, where something says it cannot.
59
+ *
60
+ * The cutoff is checked against what the declaration says the query
61
+ * scanned. That is the whole of the cost guardrail here, and it is the one
62
+ * thing this simulation can enforce for real without a query engine.
63
+ */
64
+ refusalFor(execution, result) {
65
+ if (result.failsWith !== undefined) {
66
+ return result.failsWith;
67
+ }
68
+ const cutoff = this.workGroups.find(execution.workGroupName)?.bytesScannedCutoffPerQuery;
69
+ if (cutoff === undefined || result.bytesScanned <= cutoff) {
70
+ return undefined;
71
+ }
72
+ return (`Bytes scanned limit was exceeded. The query scanned ` +
73
+ `${String(result.bytesScanned)} bytes, and workgroup ` +
74
+ `${execution.workGroupName} allows ${String(cutoff)} per query.`);
75
+ }
76
+ async write(execution, result, caller) {
77
+ try {
78
+ await this.writer.write(execution, result, caller);
79
+ }
80
+ catch (error) {
81
+ execution.fail(simAthenaWriteFailureReason(error), this.background.now());
82
+ return;
83
+ }
84
+ execution.succeed(result, this.background.now());
85
+ }
86
+ }
87
+ //# sourceMappingURL=sim-athena-query-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-query-runner.js","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-query-runner.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAS5E;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,oBAAoB;IACd,OAAO,CAAwB;IAC/B,UAAU,CAA0B;IACpC,MAAM,CAAwB;IAC9B,UAAU,CAAsB;IAEjD,YAAY,UAA0C;QACpD,IAAI,CAAC,OAAO,GAAG,UAAU,CAAC,OAAO,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;QAChC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC,UAAU,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,GAAG,CACD,SAAkC,EAClC,MAAgC;QAEhC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;gBACzB,SAAS,CAAC,KAAK,EAAE,CAAC;gBAClB,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACzC,CAAC;YAED,OAAO,OAAO,CAAC,OAAO,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,cAAc,CACpB,SAAkC,EAClC,MAAgC;QAEhC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE;YAClC,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,CAAC;gBACzB,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;YACvC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,MAAM,CAClB,SAAkC,EAClC,MAAgC;QAEhC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC;YACpC,WAAW,EAAE,SAAS,CAAC,WAAW;YAClC,aAAa,EAAE,SAAS,CAAC,aAAa;SACvC,CAAC,CAAC;QAEH,SAAS,CAAC,kBAAkB,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QAElD,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAEnD,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;YAE/C,OAAO;QACT,CAAC;QAED,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACK,UAAU,CAChB,SAAkC,EAClC,MAA+B;QAE/B,IAAI,MAAM,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;YACnC,OAAO,MAAM,CAAC,SAAS,CAAC;QAC1B,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CACjC,SAAS,CAAC,aAAa,CACxB,EAAE,0BAA0B,CAAC;QAE9B,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,YAAY,IAAI,MAAM,EAAE,CAAC;YAC1D,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,CACL,sDAAsD;YACtD,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,wBAAwB;YACtD,GAAG,SAAS,CAAC,aAAa,WAAW,MAAM,CAAC,MAAM,CAAC,aAAa,CACjE,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,KAAK,CACjB,SAAkC,EAClC,MAA+B,EAC/B,MAAgC;QAEhC,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,SAAS,CAAC,IAAI,CAAC,2BAA2B,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;YAE1E,OAAO;QACT,CAAC;QAED,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,CAAC;IACnD,CAAC;CACF"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Where one query execution has got to.
3
+ */
4
+ export type SimAthenaQueryState = "QUEUED" | "RUNNING" | "SUCCEEDED" | "FAILED" | "CANCELLED";
5
+ /**
6
+ * Whether a query in this state has finished.
7
+ *
8
+ * `StopQueryExecution` reaches a query that has not, and leaves one that has
9
+ * alone, which is how real Athena answers a stop that arrived too late.
10
+ */
11
+ export declare function isSettledQueryState(state: SimAthenaQueryState): boolean;
12
+ //# sourceMappingURL=sim-athena-query-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-query-state.d.ts","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-query-state.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAC3B,QAAQ,GACR,SAAS,GACT,WAAW,GACX,QAAQ,GACR,WAAW,CAAC;AAWhB;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAEvE"}
@@ -0,0 +1,18 @@
1
+ /**
2
+ * The states a query has finished in, whichever way it went.
3
+ */
4
+ const settledStates = new Set([
5
+ "SUCCEEDED",
6
+ "FAILED",
7
+ "CANCELLED",
8
+ ]);
9
+ /**
10
+ * Whether a query in this state has finished.
11
+ *
12
+ * `StopQueryExecution` reaches a query that has not, and leaves one that has
13
+ * alone, which is how real Athena answers a stop that arrived too late.
14
+ */
15
+ export function isSettledQueryState(state) {
16
+ return settledStates.has(state);
17
+ }
18
+ //# sourceMappingURL=sim-athena-query-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-query-state.js","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-query-state.ts"],"names":[],"mappings":"AAUA;;GAEG;AACH,MAAM,aAAa,GAAG,IAAI,GAAG,CAAsB;IACjD,WAAW;IACX,QAAQ;IACR,WAAW;CACZ,CAAC,CAAC;AAEH;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,KAA0B;IAC5D,OAAO,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAClC,CAAC"}
@@ -0,0 +1,28 @@
1
+ import { type SimAthenaQueryState } from "./sim-athena-query-state.js";
2
+ /**
3
+ * Where one query has got to, and how it got there.
4
+ *
5
+ * Held apart from the execution because it is the only part that changes. A
6
+ * query that has settled stays as it settled, and that rule lives here so
7
+ * every caller gets it rather than each one remembering to ask first.
8
+ */
9
+ export declare class SimAthenaQueryStatus {
10
+ #private;
11
+ get state(): SimAthenaQueryState;
12
+ get stateChangeReason(): string | undefined;
13
+ get completedAt(): Date | undefined;
14
+ get isSettled(): boolean;
15
+ /**
16
+ * Move a queued query to running.
17
+ */
18
+ start(): void;
19
+ /**
20
+ * Finish the query, unless something already did.
21
+ *
22
+ * Writing a result set is awaited, so a `StopQueryExecution` can land while
23
+ * it is in flight. Without this the write would carry a cancelled query
24
+ * through to `SUCCEEDED` after its caller was told it had been stopped.
25
+ */
26
+ settle(state: SimAthenaQueryState, reason: string | undefined, completedAt: Date): boolean;
27
+ }
28
+ //# sourceMappingURL=sim-athena-query-status.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-query-status.d.ts","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-query-status.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,mBAAmB,EACzB,MAAM,6BAA6B,CAAC;AAErC;;;;;;GAMG;AACH,qBAAa,oBAAoB;;IAK/B,IAAI,KAAK,IAAI,mBAAmB,CAE/B;IAED,IAAI,iBAAiB,IAAI,MAAM,GAAG,SAAS,CAE1C;IAED,IAAI,WAAW,IAAI,IAAI,GAAG,SAAS,CAElC;IAED,IAAI,SAAS,IAAI,OAAO,CAEvB;IAED;;OAEG;IACH,KAAK,IAAI,IAAI,CAEZ;IAED;;;;;;OAMG;IACH,MAAM,CACJ,KAAK,EAAE,mBAAmB,EAC1B,MAAM,EAAE,MAAM,GAAG,SAAS,EAC1B,WAAW,EAAE,IAAI,GAChB,OAAO,CAUT;CACF"}
@@ -0,0 +1,48 @@
1
+ import { isSettledQueryState, } from "./sim-athena-query-state.js";
2
+ /**
3
+ * Where one query has got to, and how it got there.
4
+ *
5
+ * Held apart from the execution because it is the only part that changes. A
6
+ * query that has settled stays as it settled, and that rule lives here so
7
+ * every caller gets it rather than each one remembering to ask first.
8
+ */
9
+ export class SimAthenaQueryStatus {
10
+ #state = "QUEUED";
11
+ #stateChangeReason;
12
+ #completedAt;
13
+ get state() {
14
+ return this.#state;
15
+ }
16
+ get stateChangeReason() {
17
+ return this.#stateChangeReason;
18
+ }
19
+ get completedAt() {
20
+ return this.#completedAt;
21
+ }
22
+ get isSettled() {
23
+ return isSettledQueryState(this.#state);
24
+ }
25
+ /**
26
+ * Move a queued query to running.
27
+ */
28
+ start() {
29
+ this.#state = "RUNNING";
30
+ }
31
+ /**
32
+ * Finish the query, unless something already did.
33
+ *
34
+ * Writing a result set is awaited, so a `StopQueryExecution` can land while
35
+ * it is in flight. Without this the write would carry a cancelled query
36
+ * through to `SUCCEEDED` after its caller was told it had been stopped.
37
+ */
38
+ settle(state, reason, completedAt) {
39
+ if (this.isSettled) {
40
+ return false;
41
+ }
42
+ this.#state = state;
43
+ this.#stateChangeReason = reason;
44
+ this.#completedAt = completedAt;
45
+ return true;
46
+ }
47
+ }
48
+ //# sourceMappingURL=sim-athena-query-status.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-query-status.js","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-query-status.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,GAEpB,MAAM,6BAA6B,CAAC;AAErC;;;;;;GAMG;AACH,MAAM,OAAO,oBAAoB;IAC/B,MAAM,GAAwB,QAAQ,CAAC;IACvC,kBAAkB,CAAqB;IACvC,YAAY,CAAmB;IAE/B,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,IAAI,iBAAiB;QACnB,OAAO,IAAI,CAAC,kBAAkB,CAAC;IACjC,CAAC;IAED,IAAI,WAAW;QACb,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAED,IAAI,SAAS;QACX,OAAO,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1C,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1B,CAAC;IAED;;;;;;OAMG;IACH,MAAM,CACJ,KAA0B,EAC1B,MAA0B,EAC1B,WAAiB;QAEjB,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,KAAK,CAAC;QACf,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,kBAAkB,GAAG,MAAM,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,WAAW,CAAC;QAEhC,OAAO,IAAI,CAAC;IACd,CAAC;CACF"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * The queries a `ClientRequestToken` has already started.
3
+ *
4
+ * A token makes `StartQueryExecution` idempotent. A client that retries after
5
+ * a timeout sends the same token and gets the same execution back rather than
6
+ * running the query twice, which is the whole point of the field for an API
7
+ * that bills per byte scanned.
8
+ *
9
+ * Accepting a token and ignoring it would be the worse kind of divergence: a
10
+ * retry would look right and cost twice.
11
+ */
12
+ export declare class SimAthenaQueryTokens {
13
+ private readonly startedQueries;
14
+ /**
15
+ * The execution this token already started, if it started one.
16
+ *
17
+ * A token reused for a different query is refused. Real Athena answers
18
+ * `IdempotentParameterMismatch`, because the token no longer identifies one
19
+ * request.
20
+ */
21
+ startedBy(token: string | undefined, queryString: string): string | undefined;
22
+ /**
23
+ * Remember which execution a token started.
24
+ *
25
+ * A request carrying no token is nothing to remember. It is not idempotent,
26
+ * which is what sending no token asks for.
27
+ */
28
+ record(token: string | undefined, queryString: string, queryExecutionId: string): void;
29
+ }
30
+ //# sourceMappingURL=sim-athena-query-tokens.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-query-tokens.d.ts","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-query-tokens.ts"],"names":[],"mappings":"AAMA;;;;;;;;;;GAUG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,QAAQ,CAAC,cAAc,CAG3B;IAEJ;;;;;;OAMG;IACH,SAAS,CACP,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,WAAW,EAAE,MAAM,GAClB,MAAM,GAAG,SAAS,CAgBpB;IAED;;;;;OAKG;IACH,MAAM,CACJ,KAAK,EAAE,MAAM,GAAG,SAAS,EACzB,WAAW,EAAE,MAAM,EACnB,gBAAgB,EAAE,MAAM,GACvB,IAAI,CAMN;CACF"}
@@ -0,0 +1,49 @@
1
+ /* oxlint-disable security/detect-possible-timing-attacks -- a client request
2
+ token is an idempotency key a caller chooses and sends in the clear. Nothing
3
+ here compares a secret, so there is no timing to leak. */
4
+ import { SimAthenaInvalidRequestException } from "../error/sim-athena.error.js";
5
+ /**
6
+ * The queries a `ClientRequestToken` has already started.
7
+ *
8
+ * A token makes `StartQueryExecution` idempotent. A client that retries after
9
+ * a timeout sends the same token and gets the same execution back rather than
10
+ * running the query twice, which is the whole point of the field for an API
11
+ * that bills per byte scanned.
12
+ *
13
+ * Accepting a token and ignoring it would be the worse kind of divergence: a
14
+ * retry would look right and cost twice.
15
+ */
16
+ export class SimAthenaQueryTokens {
17
+ startedQueries = new Map();
18
+ /**
19
+ * The execution this token already started, if it started one.
20
+ *
21
+ * A token reused for a different query is refused. Real Athena answers
22
+ * `IdempotentParameterMismatch`, because the token no longer identifies one
23
+ * request.
24
+ */
25
+ startedBy(token, queryString) {
26
+ const started = token === undefined ? undefined : this.startedQueries.get(token);
27
+ if (started === undefined) {
28
+ return undefined;
29
+ }
30
+ if (started.queryString !== queryString) {
31
+ throw new SimAthenaInvalidRequestException(`ClientRequestToken ${String(token)} has already been used for a ` +
32
+ `different query. A token identifies one request.`);
33
+ }
34
+ return started.queryExecutionId;
35
+ }
36
+ /**
37
+ * Remember which execution a token started.
38
+ *
39
+ * A request carrying no token is nothing to remember. It is not idempotent,
40
+ * which is what sending no token asks for.
41
+ */
42
+ record(token, queryString, queryExecutionId) {
43
+ if (token === undefined) {
44
+ return;
45
+ }
46
+ this.startedQueries.set(token, { queryString, queryExecutionId });
47
+ }
48
+ }
49
+ //# sourceMappingURL=sim-athena-query-tokens.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-query-tokens.js","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-query-tokens.ts"],"names":[],"mappings":"AAAA;;4DAE4D;AAE5D,OAAO,EAAE,gCAAgC,EAAE,MAAM,8BAA8B,CAAC;AAEhF;;;;;;;;;;GAUG;AACH,MAAM,OAAO,oBAAoB;IACd,cAAc,GAAG,IAAI,GAAG,EAGtC,CAAC;IAEJ;;;;;;OAMG;IACH,SAAS,CACP,KAAyB,EACzB,WAAmB;QAEnB,MAAM,OAAO,GACX,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAEnE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,IAAI,OAAO,CAAC,WAAW,KAAK,WAAW,EAAE,CAAC;YACxC,MAAM,IAAI,gCAAgC,CACxC,sBAAsB,MAAM,CAAC,KAAK,CAAC,+BAA+B;gBAChE,kDAAkD,CACrD,CAAC;QACJ,CAAC;QAED,OAAO,OAAO,CAAC,gBAAgB,CAAC;IAClC,CAAC;IAED;;;;;OAKG;IACH,MAAM,CACJ,KAAyB,EACzB,WAAmB,EACnB,gBAAwB;QAExB,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,WAAW,EAAE,gBAAgB,EAAE,CAAC,CAAC;IACpE,CAAC;CACF"}
@@ -0,0 +1,11 @@
1
+ import type { SimAthenaResolvedResult } from "../result/sim-athena-resolved-result.js";
2
+ /**
3
+ * One query's result set as the CSV Athena writes to S3.
4
+ *
5
+ * Athena quotes every field of a CSV result rather than only the ones that
6
+ * need it, and it writes the column names as the first line. A caller reading
7
+ * the object back gets the header whether or not it asked for one, which is
8
+ * the same thing `GetQueryResults` does with its first row.
9
+ */
10
+ export declare function simAthenaResultCsv(result: SimAthenaResolvedResult): string;
11
+ //# sourceMappingURL=sim-athena-result-csv.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-result-csv.d.ts","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-result-csv.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,yCAAyC,CAAC;AAEvF;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,uBAAuB,GAAG,MAAM,CAK1E"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * One query's result set as the CSV Athena writes to S3.
3
+ *
4
+ * Athena quotes every field of a CSV result rather than only the ones that
5
+ * need it, and it writes the column names as the first line. A caller reading
6
+ * the object back gets the header whether or not it asked for one, which is
7
+ * the same thing `GetQueryResults` does with its first row.
8
+ */
9
+ export function simAthenaResultCsv(result) {
10
+ const header = result.columns.map((column) => column.name);
11
+ const lines = [header, ...result.rows].map(csvLine);
12
+ return `${lines.join("\n")}\n`;
13
+ }
14
+ function csvLine(values) {
15
+ return values.map(csvField).join(",");
16
+ }
17
+ function csvField(value) {
18
+ return `"${value.replaceAll('"', '""')}"`;
19
+ }
20
+ //# sourceMappingURL=sim-athena-result-csv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sim-athena-result-csv.js","sourceRoot":"","sources":["../../../../src/service/athena/execution/sim-athena-result-csv.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA+B;IAChE,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3D,MAAM,KAAK,GAAG,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAEpD,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC;AAED,SAAS,OAAO,CAAC,MAAyB;IACxC,OAAO,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACxC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC7B,OAAO,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC;AAC5C,CAAC"}