@l-v-yonsama/multi-platform-database-drivers 2.0.1 → 2.1.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 (454) hide show
  1. package/README.md +1 -0
  2. package/built/schema/log-parse-config.schema.json +4 -4
  3. package/built/src/drivers/AwsDriver.d.ts +25 -1
  4. package/built/src/drivers/AwsDriver.js +189 -0
  5. package/built/src/drivers/AwsDriver.js.map +1 -1
  6. package/built/src/drivers/BaseDriver.js.map +1 -1
  7. package/built/src/drivers/DBDriverResolver.js.map +1 -1
  8. package/built/src/drivers/KeycloakDriver.js.map +1 -1
  9. package/built/src/drivers/MqttDriver.js.map +1 -1
  10. package/built/src/drivers/MySQLDriver.d.ts +10 -1
  11. package/built/src/drivers/MySQLDriver.js +130 -0
  12. package/built/src/drivers/MySQLDriver.js.map +1 -1
  13. package/built/src/drivers/OracleDriver.d.ts +14 -1
  14. package/built/src/drivers/OracleDriver.js +217 -2
  15. package/built/src/drivers/OracleDriver.js.map +1 -1
  16. package/built/src/drivers/PostgresDriver.d.ts +9 -1
  17. package/built/src/drivers/PostgresDriver.js +90 -2
  18. package/built/src/drivers/PostgresDriver.js.map +1 -1
  19. package/built/src/drivers/RDSBaseDriver.d.ts +26 -1
  20. package/built/src/drivers/RDSBaseDriver.js +601 -0
  21. package/built/src/drivers/RDSBaseDriver.js.map +1 -1
  22. package/built/src/drivers/RedisDriver.js.map +1 -1
  23. package/built/src/drivers/SQLServerDriver.d.ts +18 -1
  24. package/built/src/drivers/SQLServerDriver.js +282 -6
  25. package/built/src/drivers/SQLServerDriver.js.map +1 -1
  26. package/built/src/drivers/SQLiteDriver.d.ts +7 -1
  27. package/built/src/drivers/SQLiteDriver.js +33 -1
  28. package/built/src/drivers/SQLiteDriver.js.map +1 -1
  29. package/built/src/drivers/aws/AwsCloudFormationServiceClient.js.map +1 -1
  30. package/built/src/drivers/aws/AwsDynamoServiceClient.d.ts +61 -5
  31. package/built/src/drivers/aws/AwsDynamoServiceClient.js +404 -108
  32. package/built/src/drivers/aws/AwsDynamoServiceClient.js.map +1 -1
  33. package/built/src/drivers/aws/AwsS3ServiceClient.js +18 -6
  34. package/built/src/drivers/aws/AwsS3ServiceClient.js.map +1 -1
  35. package/built/src/drivers/aws/AwsSQSServiceClient.js.map +1 -1
  36. package/built/src/drivers/aws/AwsSecretsManagerServiceClient.js.map +1 -1
  37. package/built/src/drivers/aws/AwsServiceClient.js.map +1 -1
  38. package/built/src/drivers/aws/AwsSsmServiceClient.js.map +1 -1
  39. package/built/src/drivers/aws/dynamoDbRdhSummary.d.ts +16 -0
  40. package/built/src/drivers/aws/dynamoDbRdhSummary.js +81 -0
  41. package/built/src/drivers/aws/dynamoDbRdhSummary.js.map +1 -0
  42. package/built/src/drivers/aws/dynamoDbResultMetadata.d.ts +9 -0
  43. package/built/src/drivers/aws/dynamoDbResultMetadata.js +71 -0
  44. package/built/src/drivers/aws/dynamoDbResultMetadata.js.map +1 -0
  45. package/built/src/drivers/index.d.ts +1 -0
  46. package/built/src/drivers/index.js +1 -0
  47. package/built/src/drivers/index.js.map +1 -1
  48. package/built/src/drivers/keycloak/resourceTreeBuilder.js.map +1 -1
  49. package/built/src/drivers/keycloak/scanResultBuilder.js.map +1 -1
  50. package/built/src/drivers/memcache/helper.js.map +1 -1
  51. package/built/src/drivers/providers/index.d.ts +3 -0
  52. package/built/src/drivers/providers/index.js +7 -0
  53. package/built/src/drivers/providers/index.js.map +1 -0
  54. package/built/src/drivers/providers/metrics/adapters/dynamodb/DynamoDbMetricServiceAdapter.d.ts +8 -0
  55. package/built/src/drivers/providers/metrics/adapters/dynamodb/DynamoDbMetricServiceAdapter.js +421 -0
  56. package/built/src/drivers/providers/metrics/adapters/dynamodb/DynamoDbMetricServiceAdapter.js.map +1 -0
  57. package/built/src/drivers/providers/metrics/adapters/dynamodb/DynamoDbOverviewMetricServiceAdapter.d.ts +7 -0
  58. package/built/src/drivers/providers/metrics/adapters/dynamodb/DynamoDbOverviewMetricServiceAdapter.js +84 -0
  59. package/built/src/drivers/providers/metrics/adapters/dynamodb/DynamoDbOverviewMetricServiceAdapter.js.map +1 -0
  60. package/built/src/drivers/providers/metrics/adapters/dynamodb/index.d.ts +2 -0
  61. package/built/src/drivers/providers/metrics/adapters/dynamodb/index.js +6 -0
  62. package/built/src/drivers/providers/metrics/adapters/dynamodb/index.js.map +1 -0
  63. package/built/src/drivers/providers/metrics/adapters/index.d.ts +6 -0
  64. package/built/src/drivers/providers/metrics/adapters/index.js +10 -0
  65. package/built/src/drivers/providers/metrics/adapters/index.js.map +1 -0
  66. package/built/src/drivers/providers/metrics/adapters/logs/CloudWatchLogsMetricServiceAdapter.d.ts +7 -0
  67. package/built/src/drivers/providers/metrics/adapters/logs/CloudWatchLogsMetricServiceAdapter.js +132 -0
  68. package/built/src/drivers/providers/metrics/adapters/logs/CloudWatchLogsMetricServiceAdapter.js.map +1 -0
  69. package/built/src/drivers/providers/metrics/adapters/logs/index.d.ts +1 -0
  70. package/built/src/drivers/providers/metrics/adapters/logs/index.js +5 -0
  71. package/built/src/drivers/providers/metrics/adapters/logs/index.js.map +1 -0
  72. package/built/src/drivers/providers/metrics/adapters/overview/index.d.ts +1 -0
  73. package/built/src/drivers/providers/metrics/adapters/overview/index.js +5 -0
  74. package/built/src/drivers/providers/metrics/adapters/overview/index.js.map +1 -0
  75. package/built/src/drivers/providers/metrics/adapters/overview/overviewMetricAdapterUtils.d.ts +26 -0
  76. package/built/src/drivers/providers/metrics/adapters/overview/overviewMetricAdapterUtils.js +80 -0
  77. package/built/src/drivers/providers/metrics/adapters/overview/overviewMetricAdapterUtils.js.map +1 -0
  78. package/built/src/drivers/providers/metrics/adapters/s3/S3MetricServiceAdapter.d.ts +21 -0
  79. package/built/src/drivers/providers/metrics/adapters/s3/S3MetricServiceAdapter.js +478 -0
  80. package/built/src/drivers/providers/metrics/adapters/s3/S3MetricServiceAdapter.js.map +1 -0
  81. package/built/src/drivers/providers/metrics/adapters/s3/S3OverviewMetricServiceAdapter.d.ts +13 -0
  82. package/built/src/drivers/providers/metrics/adapters/s3/S3OverviewMetricServiceAdapter.js +172 -0
  83. package/built/src/drivers/providers/metrics/adapters/s3/S3OverviewMetricServiceAdapter.js.map +1 -0
  84. package/built/src/drivers/providers/metrics/adapters/s3/index.d.ts +2 -0
  85. package/built/src/drivers/providers/metrics/adapters/s3/index.js +6 -0
  86. package/built/src/drivers/providers/metrics/adapters/s3/index.js.map +1 -0
  87. package/built/src/drivers/providers/metrics/adapters/ses/SesMetricServiceAdapter.d.ts +13 -0
  88. package/built/src/drivers/providers/metrics/adapters/ses/SesMetricServiceAdapter.js +183 -0
  89. package/built/src/drivers/providers/metrics/adapters/ses/SesMetricServiceAdapter.js.map +1 -0
  90. package/built/src/drivers/providers/metrics/adapters/ses/index.d.ts +1 -0
  91. package/built/src/drivers/providers/metrics/adapters/ses/index.js +5 -0
  92. package/built/src/drivers/providers/metrics/adapters/ses/index.js.map +1 -0
  93. package/built/src/drivers/providers/metrics/adapters/sqs/SqsMetricServiceAdapter.d.ts +7 -0
  94. package/built/src/drivers/providers/metrics/adapters/sqs/SqsMetricServiceAdapter.js +174 -0
  95. package/built/src/drivers/providers/metrics/adapters/sqs/SqsMetricServiceAdapter.js.map +1 -0
  96. package/built/src/drivers/providers/metrics/adapters/sqs/SqsOverviewMetricServiceAdapter.d.ts +7 -0
  97. package/built/src/drivers/providers/metrics/adapters/sqs/SqsOverviewMetricServiceAdapter.js +81 -0
  98. package/built/src/drivers/providers/metrics/adapters/sqs/SqsOverviewMetricServiceAdapter.js.map +1 -0
  99. package/built/src/drivers/providers/metrics/adapters/sqs/index.d.ts +2 -0
  100. package/built/src/drivers/providers/metrics/adapters/sqs/index.js +6 -0
  101. package/built/src/drivers/providers/metrics/adapters/sqs/index.js.map +1 -0
  102. package/built/src/drivers/providers/metrics/cloudwatch/CloudWatchMetricsAvailability.d.ts +23 -0
  103. package/built/src/drivers/providers/metrics/cloudwatch/CloudWatchMetricsAvailability.js +69 -0
  104. package/built/src/drivers/providers/metrics/cloudwatch/CloudWatchMetricsAvailability.js.map +1 -0
  105. package/built/src/drivers/providers/metrics/cloudwatch/CloudWatchMetricsCollector.d.ts +24 -0
  106. package/built/src/drivers/providers/metrics/cloudwatch/CloudWatchMetricsCollector.js +49 -0
  107. package/built/src/drivers/providers/metrics/cloudwatch/CloudWatchMetricsCollector.js.map +1 -0
  108. package/built/src/drivers/providers/metrics/cloudwatch/alignSeriesByTimestamp.d.ts +2 -0
  109. package/built/src/drivers/providers/metrics/cloudwatch/alignSeriesByTimestamp.js +16 -0
  110. package/built/src/drivers/providers/metrics/cloudwatch/alignSeriesByTimestamp.js.map +1 -0
  111. package/built/src/drivers/providers/metrics/cloudwatch/cloudWatchMetricsTransport.d.ts +21 -0
  112. package/built/src/drivers/providers/metrics/cloudwatch/cloudWatchMetricsTransport.js +193 -0
  113. package/built/src/drivers/providers/metrics/cloudwatch/cloudWatchMetricsTransport.js.map +1 -0
  114. package/built/src/drivers/providers/metrics/cloudwatch/collectAcrossMetricEndpoints.d.ts +6 -0
  115. package/built/src/drivers/providers/metrics/cloudwatch/collectAcrossMetricEndpoints.js +99 -0
  116. package/built/src/drivers/providers/metrics/cloudwatch/collectAcrossMetricEndpoints.js.map +1 -0
  117. package/built/src/drivers/providers/metrics/cloudwatch/deriveMetricSeries.d.ts +2 -0
  118. package/built/src/drivers/providers/metrics/cloudwatch/deriveMetricSeries.js +100 -0
  119. package/built/src/drivers/providers/metrics/cloudwatch/deriveMetricSeries.js.map +1 -0
  120. package/built/src/drivers/providers/metrics/cloudwatch/index.d.ts +7 -0
  121. package/built/src/drivers/providers/metrics/cloudwatch/index.js +11 -0
  122. package/built/src/drivers/providers/metrics/cloudwatch/index.js.map +1 -0
  123. package/built/src/drivers/providers/metrics/cloudwatch/metricPeriod.d.ts +2 -0
  124. package/built/src/drivers/providers/metrics/cloudwatch/metricPeriod.js +16 -0
  125. package/built/src/drivers/providers/metrics/cloudwatch/metricPeriod.js.map +1 -0
  126. package/built/src/drivers/providers/metrics/index.d.ts +3 -0
  127. package/built/src/drivers/providers/metrics/index.js +7 -0
  128. package/built/src/drivers/providers/metrics/index.js.map +1 -0
  129. package/built/src/drivers/providers/metrics/metricServiceAdapterRegistry.d.ts +8 -0
  130. package/built/src/drivers/providers/metrics/metricServiceAdapterRegistry.js +27 -0
  131. package/built/src/drivers/providers/metrics/metricServiceAdapterRegistry.js.map +1 -0
  132. package/built/src/drivers/providers/performance/DynamoDbPerformanceTuningProvider.d.ts +60 -0
  133. package/built/src/drivers/providers/performance/DynamoDbPerformanceTuningProvider.js +751 -0
  134. package/built/src/drivers/providers/performance/DynamoDbPerformanceTuningProvider.js.map +1 -0
  135. package/built/src/drivers/providers/performance/MySQLPerformanceTuningProvider.d.ts +29 -0
  136. package/built/src/drivers/providers/performance/MySQLPerformanceTuningProvider.js +350 -0
  137. package/built/src/drivers/providers/performance/MySQLPerformanceTuningProvider.js.map +1 -0
  138. package/built/src/drivers/providers/performance/OraclePerformanceTuningProvider.d.ts +37 -0
  139. package/built/src/drivers/providers/performance/OraclePerformanceTuningProvider.js +393 -0
  140. package/built/src/drivers/providers/performance/OraclePerformanceTuningProvider.js.map +1 -0
  141. package/built/src/drivers/providers/performance/PerformanceTuningContextProvider.d.ts +57 -0
  142. package/built/src/drivers/providers/performance/PerformanceTuningContextProvider.js +3 -0
  143. package/built/src/drivers/providers/performance/PerformanceTuningContextProvider.js.map +1 -0
  144. package/built/src/drivers/providers/performance/PostgresPerformanceTuningProvider.d.ts +24 -0
  145. package/built/src/drivers/providers/performance/PostgresPerformanceTuningProvider.js +328 -0
  146. package/built/src/drivers/providers/performance/PostgresPerformanceTuningProvider.js.map +1 -0
  147. package/built/src/drivers/providers/performance/SQLServerPerformanceTuningProvider.d.ts +29 -0
  148. package/built/src/drivers/providers/performance/SQLServerPerformanceTuningProvider.js +420 -0
  149. package/built/src/drivers/providers/performance/SQLServerPerformanceTuningProvider.js.map +1 -0
  150. package/built/src/drivers/providers/performance/dynamoDbCapacity.d.ts +38 -0
  151. package/built/src/drivers/providers/performance/dynamoDbCapacity.js +111 -0
  152. package/built/src/drivers/providers/performance/dynamoDbCapacity.js.map +1 -0
  153. package/built/src/drivers/providers/performance/dynamoDbCloudWatchMetrics.d.ts +20 -0
  154. package/built/src/drivers/providers/performance/dynamoDbCloudWatchMetrics.js +221 -0
  155. package/built/src/drivers/providers/performance/dynamoDbCloudWatchMetrics.js.map +1 -0
  156. package/built/src/drivers/providers/performance/dynamoPartiqlAccessPattern.d.ts +18 -0
  157. package/built/src/drivers/providers/performance/dynamoPartiqlAccessPattern.js +736 -0
  158. package/built/src/drivers/providers/performance/dynamoPartiqlAccessPattern.js.map +1 -0
  159. package/built/src/drivers/providers/performance/index.d.ts +23 -0
  160. package/built/src/drivers/providers/performance/index.js +27 -0
  161. package/built/src/drivers/providers/performance/index.js.map +1 -0
  162. package/built/src/drivers/providers/performance/mysqlActualPlanTextParser.d.ts +26 -0
  163. package/built/src/drivers/providers/performance/mysqlActualPlanTextParser.js +181 -0
  164. package/built/src/drivers/providers/performance/mysqlActualPlanTextParser.js.map +1 -0
  165. package/built/src/drivers/providers/performance/mysqlCatalogMapper.d.ts +11 -0
  166. package/built/src/drivers/providers/performance/mysqlCatalogMapper.js +218 -0
  167. package/built/src/drivers/providers/performance/mysqlCatalogMapper.js.map +1 -0
  168. package/built/src/drivers/providers/performance/mysqlPlanParser.d.ts +11 -0
  169. package/built/src/drivers/providers/performance/mysqlPlanParser.js +209 -0
  170. package/built/src/drivers/providers/performance/mysqlPlanParser.js.map +1 -0
  171. package/built/src/drivers/providers/performance/oracleActualPlanTextParser.d.ts +10 -0
  172. package/built/src/drivers/providers/performance/oracleActualPlanTextParser.js +245 -0
  173. package/built/src/drivers/providers/performance/oracleActualPlanTextParser.js.map +1 -0
  174. package/built/src/drivers/providers/performance/oracleCatalogMapper.d.ts +11 -0
  175. package/built/src/drivers/providers/performance/oracleCatalogMapper.js +226 -0
  176. package/built/src/drivers/providers/performance/oracleCatalogMapper.js.map +1 -0
  177. package/built/src/drivers/providers/performance/oraclePlanParser.d.ts +18 -0
  178. package/built/src/drivers/providers/performance/oraclePlanParser.js +223 -0
  179. package/built/src/drivers/providers/performance/oraclePlanParser.js.map +1 -0
  180. package/built/src/drivers/providers/performance/performanceTuningDiagnosticHelpers.d.ts +2 -0
  181. package/built/src/drivers/providers/performance/performanceTuningDiagnosticHelpers.js +13 -0
  182. package/built/src/drivers/providers/performance/performanceTuningDiagnosticHelpers.js.map +1 -0
  183. package/built/src/drivers/providers/performance/planNodeMath.d.ts +20 -0
  184. package/built/src/drivers/providers/performance/planNodeMath.js +82 -0
  185. package/built/src/drivers/providers/performance/planNodeMath.js.map +1 -0
  186. package/built/src/drivers/providers/performance/postgresCatalogMapper.d.ts +20 -0
  187. package/built/src/drivers/providers/performance/postgresCatalogMapper.js +287 -0
  188. package/built/src/drivers/providers/performance/postgresCatalogMapper.js.map +1 -0
  189. package/built/src/drivers/providers/performance/postgresPlanParser.d.ts +13 -0
  190. package/built/src/drivers/providers/performance/postgresPlanParser.js +258 -0
  191. package/built/src/drivers/providers/performance/postgresPlanParser.js.map +1 -0
  192. package/built/src/drivers/providers/performance/sqlServerActualPlanXmlParser.d.ts +10 -0
  193. package/built/src/drivers/providers/performance/sqlServerActualPlanXmlParser.js +252 -0
  194. package/built/src/drivers/providers/performance/sqlServerActualPlanXmlParser.js.map +1 -0
  195. package/built/src/drivers/providers/performance/sqlServerCatalogMapper.d.ts +20 -0
  196. package/built/src/drivers/providers/performance/sqlServerCatalogMapper.js +254 -0
  197. package/built/src/drivers/providers/performance/sqlServerCatalogMapper.js.map +1 -0
  198. package/built/src/drivers/providers/performance/sqlServerPlanParser.d.ts +10 -0
  199. package/built/src/drivers/providers/performance/sqlServerPlanParser.js +199 -0
  200. package/built/src/drivers/providers/performance/sqlServerPlanParser.js.map +1 -0
  201. package/built/src/drivers/providers/performance/vendorRowCoercion.d.ts +6 -0
  202. package/built/src/drivers/providers/performance/vendorRowCoercion.js +42 -0
  203. package/built/src/drivers/providers/performance/vendorRowCoercion.js.map +1 -0
  204. package/built/src/drivers/providers/rdbDashboard/RdbDashboardProvider.d.ts +8 -0
  205. package/built/src/drivers/providers/rdbDashboard/RdbDashboardProvider.js +3 -0
  206. package/built/src/drivers/providers/rdbDashboard/RdbDashboardProvider.js.map +1 -0
  207. package/built/src/drivers/providers/rdbDashboard/RdbSampleAccumulator.d.ts +22 -0
  208. package/built/src/drivers/providers/rdbDashboard/RdbSampleAccumulator.js +331 -0
  209. package/built/src/drivers/providers/rdbDashboard/RdbSampleAccumulator.js.map +1 -0
  210. package/built/src/drivers/providers/rdbDashboard/index.d.ts +9 -0
  211. package/built/src/drivers/providers/rdbDashboard/index.js +13 -0
  212. package/built/src/drivers/providers/rdbDashboard/index.js.map +1 -0
  213. package/built/src/drivers/providers/rdbDashboard/rdbDashboardErrors.d.ts +3 -0
  214. package/built/src/drivers/providers/rdbDashboard/rdbDashboardErrors.js +10 -0
  215. package/built/src/drivers/providers/rdbDashboard/rdbDashboardErrors.js.map +1 -0
  216. package/built/src/drivers/providers/rdbDashboard/rdbDashboardValueUtils.d.ts +7 -0
  217. package/built/src/drivers/providers/rdbDashboard/rdbDashboardValueUtils.js +31 -0
  218. package/built/src/drivers/providers/rdbDashboard/rdbDashboardValueUtils.js.map +1 -0
  219. package/built/src/drivers/providers/rdbDashboard/validateRdbDashboard.d.ts +3 -0
  220. package/built/src/drivers/providers/rdbDashboard/validateRdbDashboard.js +73 -0
  221. package/built/src/drivers/providers/rdbDashboard/validateRdbDashboard.js.map +1 -0
  222. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/MySQLRdbDashboardProvider.d.ts +16 -0
  223. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/MySQLRdbDashboardProvider.js +247 -0
  224. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/MySQLRdbDashboardProvider.js.map +1 -0
  225. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/index.d.ts +3 -0
  226. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/index.js +7 -0
  227. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/index.js.map +1 -0
  228. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/mysqlDashboardCatalog.d.ts +4 -0
  229. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/mysqlDashboardCatalog.js +279 -0
  230. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/mysqlDashboardCatalog.js.map +1 -0
  231. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/mysqlDashboardQueries.d.ts +5 -0
  232. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/mysqlDashboardQueries.js +41 -0
  233. package/built/src/drivers/providers/rdbDashboard/vendors/mysql/mysqlDashboardQueries.js.map +1 -0
  234. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/OracleRdbDashboardProvider.d.ts +21 -0
  235. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/OracleRdbDashboardProvider.js +420 -0
  236. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/OracleRdbDashboardProvider.js.map +1 -0
  237. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/index.d.ts +3 -0
  238. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/index.js +7 -0
  239. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/index.js.map +1 -0
  240. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/oracleDashboardCatalog.d.ts +12 -0
  241. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/oracleDashboardCatalog.js +117 -0
  242. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/oracleDashboardCatalog.js.map +1 -0
  243. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/oracleDashboardQueries.d.ts +8 -0
  244. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/oracleDashboardQueries.js +60 -0
  245. package/built/src/drivers/providers/rdbDashboard/vendors/oracle/oracleDashboardQueries.js.map +1 -0
  246. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/PostgresRdbDashboardProvider.d.ts +13 -0
  247. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/PostgresRdbDashboardProvider.js +216 -0
  248. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/PostgresRdbDashboardProvider.js.map +1 -0
  249. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/index.d.ts +3 -0
  250. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/index.js +7 -0
  251. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/index.js.map +1 -0
  252. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/postgresDashboardCatalog.d.ts +4 -0
  253. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/postgresDashboardCatalog.js +218 -0
  254. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/postgresDashboardCatalog.js.map +1 -0
  255. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/postgresDashboardQueries.d.ts +3 -0
  256. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/postgresDashboardQueries.js +70 -0
  257. package/built/src/drivers/providers/rdbDashboard/vendors/postgres/postgresDashboardQueries.js.map +1 -0
  258. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/SQLiteRdbDashboardProvider.d.ts +20 -0
  259. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/SQLiteRdbDashboardProvider.js +259 -0
  260. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/SQLiteRdbDashboardProvider.js.map +1 -0
  261. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/index.d.ts +3 -0
  262. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/index.js +7 -0
  263. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/index.js.map +1 -0
  264. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/sqliteDashboardCatalog.d.ts +5 -0
  265. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/sqliteDashboardCatalog.js +135 -0
  266. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/sqliteDashboardCatalog.js.map +1 -0
  267. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/sqliteDashboardQueries.d.ts +4 -0
  268. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/sqliteDashboardQueries.js +14 -0
  269. package/built/src/drivers/providers/rdbDashboard/vendors/sqlite/sqliteDashboardQueries.js.map +1 -0
  270. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/SQLServerRdbDashboardProvider.d.ts +16 -0
  271. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/SQLServerRdbDashboardProvider.js +301 -0
  272. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/SQLServerRdbDashboardProvider.js.map +1 -0
  273. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/index.d.ts +3 -0
  274. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/index.js +7 -0
  275. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/index.js.map +1 -0
  276. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/sqlServerDashboardCatalog.d.ts +4 -0
  277. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/sqlServerDashboardCatalog.js +130 -0
  278. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/sqlServerDashboardCatalog.js.map +1 -0
  279. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/sqlServerDashboardQueries.d.ts +6 -0
  280. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/sqlServerDashboardQueries.js +91 -0
  281. package/built/src/drivers/providers/rdbDashboard/vendors/sqlserver/sqlServerDashboardQueries.js.map +1 -0
  282. package/built/src/helpers/ProposalHelper.js.map +1 -1
  283. package/built/src/helpers/SQLHelper.d.ts +1 -1
  284. package/built/src/helpers/SQLHelper.js +3 -1
  285. package/built/src/helpers/SQLHelper.js.map +1 -1
  286. package/built/src/helpers/dynamoDbBillingMode.d.ts +6 -0
  287. package/built/src/helpers/dynamoDbBillingMode.js +16 -0
  288. package/built/src/helpers/dynamoDbBillingMode.js.map +1 -0
  289. package/built/src/helpers/index.d.ts +1 -0
  290. package/built/src/helpers/index.js +1 -0
  291. package/built/src/helpers/index.js.map +1 -1
  292. package/built/src/helpers/prompts/Auth0PromptHelper.js.map +1 -1
  293. package/built/src/helpers/prompts/AwsPromptHelper.js.map +1 -1
  294. package/built/src/helpers/prompts/KeycloakPromptHelper.js.map +1 -1
  295. package/built/src/helpers/prompts/MemcachePromptHelper.js.map +1 -1
  296. package/built/src/helpers/prompts/MqttPromptHelper.js.map +1 -1
  297. package/built/src/helpers/prompts/RdsPromptHelper.js.map +1 -1
  298. package/built/src/helpers/prompts/RedisPromptHelper.js.map +1 -1
  299. package/built/src/helpers/prompts/SchemaPromptHelper.js.map +1 -1
  300. package/built/src/helpers/prompts/promptFormatUtils.js.map +1 -1
  301. package/built/src/helpers/sql/mutationQuery.js.map +1 -1
  302. package/built/src/helpers/sql/parameterNormalizer.js +2 -2
  303. package/built/src/helpers/sql/parameterNormalizer.js.map +1 -1
  304. package/built/src/helpers/sql/queryParser.js +272 -48
  305. package/built/src/helpers/sql/queryParser.js.map +1 -1
  306. package/built/src/helpers/sql/quote.d.ts +2 -0
  307. package/built/src/helpers/sql/quote.js +9 -2
  308. package/built/src/helpers/sql/quote.js.map +1 -1
  309. package/built/src/helpers/sql/selectQuery.js.map +1 -1
  310. package/built/src/resource/aws.d.ts +2 -1
  311. package/built/src/resource/aws.js +76 -2
  312. package/built/src/resource/aws.js.map +1 -1
  313. package/built/src/resource/base.d.ts +2 -1
  314. package/built/src/resource/base.js.map +1 -1
  315. package/built/src/resource/fromJson.js.map +1 -1
  316. package/built/src/resource/iam.js.map +1 -1
  317. package/built/src/resource/index.js.map +1 -1
  318. package/built/src/resource/keyValue.js.map +1 -1
  319. package/built/src/types/drivers/EstimatedBindParameter.d.ts +12 -0
  320. package/built/src/types/drivers/EstimatedBindParameter.js +3 -0
  321. package/built/src/types/drivers/EstimatedBindParameter.js.map +1 -0
  322. package/built/src/types/drivers/StatementStatistics.d.ts +13 -0
  323. package/built/src/types/drivers/StatementStatistics.js +10 -0
  324. package/built/src/types/drivers/StatementStatistics.js.map +1 -0
  325. package/built/src/types/drivers/index.d.ts +5 -0
  326. package/built/src/types/drivers/index.js +5 -0
  327. package/built/src/types/drivers/index.js.map +1 -1
  328. package/built/src/types/drivers/metrics/CloudWatchMetrics.d.ts +168 -0
  329. package/built/src/types/drivers/metrics/CloudWatchMetrics.js +3 -0
  330. package/built/src/types/drivers/metrics/CloudWatchMetrics.js.map +1 -0
  331. package/built/src/types/drivers/metrics/index.d.ts +1 -0
  332. package/built/src/types/drivers/metrics/index.js +5 -0
  333. package/built/src/types/drivers/metrics/index.js.map +1 -0
  334. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningCapabilities.d.ts +12 -0
  335. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningCapabilities.js +3 -0
  336. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningCapabilities.js.map +1 -0
  337. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningContext.d.ts +302 -0
  338. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningContext.js +7 -0
  339. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningContext.js.map +1 -0
  340. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningDiagnostic.d.ts +13 -0
  341. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningDiagnostic.js +3 -0
  342. package/built/src/types/drivers/performance/DynamoDbPerformanceTuningDiagnostic.js.map +1 -0
  343. package/built/src/types/drivers/performance/PerformanceTuningCapabilities.d.ts +17 -0
  344. package/built/src/types/drivers/performance/PerformanceTuningCapabilities.js +3 -0
  345. package/built/src/types/drivers/performance/PerformanceTuningCapabilities.js.map +1 -0
  346. package/built/src/types/drivers/performance/PerformanceTuningContext.d.ts +263 -0
  347. package/built/src/types/drivers/performance/PerformanceTuningContext.js +3 -0
  348. package/built/src/types/drivers/performance/PerformanceTuningContext.js.map +1 -0
  349. package/built/src/types/drivers/performance/PerformanceTuningDiagnostic.d.ts +28 -0
  350. package/built/src/types/drivers/performance/PerformanceTuningDiagnostic.js +3 -0
  351. package/built/src/types/drivers/performance/PerformanceTuningDiagnostic.js.map +1 -0
  352. package/built/src/types/drivers/performance/PlanNode.d.ts +37 -0
  353. package/built/src/types/drivers/performance/PlanNode.js +3 -0
  354. package/built/src/types/drivers/performance/PlanNode.js.map +1 -0
  355. package/built/src/types/drivers/performance/index.d.ts +7 -0
  356. package/built/src/types/drivers/performance/index.js +11 -0
  357. package/built/src/types/drivers/performance/index.js.map +1 -0
  358. package/built/src/types/drivers/rdbDashboard/RdbDashboardCapabilities.d.ts +30 -0
  359. package/built/src/types/drivers/rdbDashboard/RdbDashboardCapabilities.js +3 -0
  360. package/built/src/types/drivers/rdbDashboard/RdbDashboardCapabilities.js.map +1 -0
  361. package/built/src/types/drivers/rdbDashboard/RdbDashboardDefinition.d.ts +134 -0
  362. package/built/src/types/drivers/rdbDashboard/RdbDashboardDefinition.js +14 -0
  363. package/built/src/types/drivers/rdbDashboard/RdbDashboardDefinition.js.map +1 -0
  364. package/built/src/types/drivers/rdbDashboard/RdbDashboardSample.d.ts +69 -0
  365. package/built/src/types/drivers/rdbDashboard/RdbDashboardSample.js +3 -0
  366. package/built/src/types/drivers/rdbDashboard/RdbDashboardSample.js.map +1 -0
  367. package/built/src/types/drivers/rdbDashboard/index.d.ts +3 -0
  368. package/built/src/types/drivers/rdbDashboard/index.js +7 -0
  369. package/built/src/types/drivers/rdbDashboard/index.js.map +1 -0
  370. package/built/src/types/helpers/index.js.map +1 -1
  371. package/built/src/types/index.d.ts +1 -0
  372. package/built/src/types/index.js +1 -0
  373. package/built/src/types/index.js.map +1 -1
  374. package/built/src/types/observability/dashboardLaunchCapability.d.ts +11 -0
  375. package/built/src/types/observability/dashboardLaunchCapability.js +22 -0
  376. package/built/src/types/observability/dashboardLaunchCapability.js.map +1 -0
  377. package/built/src/types/observability/index.d.ts +1 -0
  378. package/built/src/types/observability/index.js +5 -0
  379. package/built/src/types/observability/index.js.map +1 -0
  380. package/built/src/types/resource/AwsCfnStackAttributes.js.map +1 -1
  381. package/built/src/types/resource/AwsDynamoTableAttributes.d.ts +13 -0
  382. package/built/src/types/resource/AwsServiceType.d.ts +1 -1
  383. package/built/src/types/resource/AwsSupplyCredentialType.js.map +1 -1
  384. package/built/src/types/resource/ConnectionSetting.js.map +1 -1
  385. package/built/src/types/resource/OracleColumnType.js.map +1 -1
  386. package/built/src/types/resource/RedisKeyType.d.ts +1 -1
  387. package/built/src/types/resource/ResourceType.js.map +1 -1
  388. package/built/src/types/resource/SQLServerColumnType.js.map +1 -1
  389. package/built/src/utils/bindParameterEstimator.d.ts +22 -0
  390. package/built/src/utils/bindParameterEstimator.js +400 -0
  391. package/built/src/utils/bindParameterEstimator.js.map +1 -0
  392. package/built/src/utils/cfn/applicationDiagram.js.map +1 -1
  393. package/built/src/utils/cfn/applicationRelations.js.map +1 -1
  394. package/built/src/utils/cfn/cfnDependencyGraphDiagram.js.map +1 -1
  395. package/built/src/utils/cfn/deploymentTopology.js.map +1 -1
  396. package/built/src/utils/cfn/diagramFileModel.js.map +1 -1
  397. package/built/src/utils/cfn/drawio/cfnDependencyGraphDiagram.js.map +1 -1
  398. package/built/src/utils/cfn/drawio/commonCells.js.map +1 -1
  399. package/built/src/utils/cfn/drawio/multiAzInfrastructureDiagram.js.map +1 -1
  400. package/built/src/utils/cfn/drawioApplicationDiagram.js.map +1 -1
  401. package/built/src/utils/cfn/drawioInfrastructureDiagrams.js.map +1 -1
  402. package/built/src/utils/cfn/drawioXml.js.map +1 -1
  403. package/built/src/utils/cfn/generateDiagram.js.map +1 -1
  404. package/built/src/utils/cfn/icons.js.map +1 -1
  405. package/built/src/utils/cfn/index.js.map +1 -1
  406. package/built/src/utils/cfn/intrinsics.js.map +1 -1
  407. package/built/src/utils/cfn/multiAzDeploymentTrafficPathsAndProtection.js.map +1 -1
  408. package/built/src/utils/cfn/multiAzDeploymentTrafficPathsAndProtectionDiagram.js.map +1 -1
  409. package/built/src/utils/cfn/naming.js.map +1 -1
  410. package/built/src/utils/cfn/resourceDependencies.js.map +1 -1
  411. package/built/src/utils/cfn/templateParsing.js.map +1 -1
  412. package/built/src/utils/cfn/viewpoints.js.map +1 -1
  413. package/built/src/utils/csv.js.map +1 -1
  414. package/built/src/utils/dbType.js.map +1 -1
  415. package/built/src/utils/diagramLayout/elkLayoutEngine.js.map +1 -1
  416. package/built/src/utils/diagramLayout/index.js.map +1 -1
  417. package/built/src/utils/diagramLayout/normalizeLayout.js.map +1 -1
  418. package/built/src/utils/drawio/drawioXml.js.map +1 -1
  419. package/built/src/utils/drawio/index.js.map +1 -1
  420. package/built/src/utils/dynamoDbPerformanceTuningContextValidator.d.ts +3 -0
  421. package/built/src/utils/dynamoDbPerformanceTuningContextValidator.js +440 -0
  422. package/built/src/utils/dynamoDbPerformanceTuningContextValidator.js.map +1 -0
  423. package/built/src/utils/er/erDiagramDrawioGenerator.js.map +1 -1
  424. package/built/src/utils/er/erDiagramDrawioGeneratorAuto.js.map +1 -1
  425. package/built/src/utils/er/erDiagramGenerator.js.map +1 -1
  426. package/built/src/utils/er/index.d.ts +1 -0
  427. package/built/src/utils/er/index.js +3 -1
  428. package/built/src/utils/er/index.js.map +1 -1
  429. package/built/src/utils/er/performanceQueryDiagram.d.ts +18 -0
  430. package/built/src/utils/er/performanceQueryDiagram.js +381 -0
  431. package/built/src/utils/er/performanceQueryDiagram.js.map +1 -0
  432. package/built/src/utils/index.d.ts +5 -0
  433. package/built/src/utils/index.js +5 -0
  434. package/built/src/utils/index.js.map +1 -1
  435. package/built/src/utils/log/buildSqlExecutions.js.map +1 -1
  436. package/built/src/utils/log/constant/base.js.map +1 -1
  437. package/built/src/utils/log/constant/logEventSplitPreset.js.map +1 -1
  438. package/built/src/utils/log/constant/sqlLogParsePreset.js.map +1 -1
  439. package/built/src/utils/log/detect/presetDetector.js.map +1 -1
  440. package/built/src/utils/log/extract/runExtractors.js.map +1 -1
  441. package/built/src/utils/log/logSummary.js.map +1 -1
  442. package/built/src/utils/log/rdh/convertExtractedSqlRdhResult.js.map +1 -1
  443. package/built/src/utils/log/sql/removeSqlComments.js.map +1 -1
  444. package/built/src/utils/log/validator.js.map +1 -1
  445. package/built/src/utils/performanceTuningContext.d.ts +45 -0
  446. package/built/src/utils/performanceTuningContext.js +149 -0
  447. package/built/src/utils/performanceTuningContext.js.map +1 -0
  448. package/built/src/utils/performanceTuningContextValidator.d.ts +3 -0
  449. package/built/src/utils/performanceTuningContextValidator.js +364 -0
  450. package/built/src/utils/performanceTuningContextValidator.js.map +1 -0
  451. package/built/src/utils/statementStatistics.d.ts +11 -0
  452. package/built/src/utils/statementStatistics.js +39 -0
  453. package/built/src/utils/statementStatistics.js.map +1 -0
  454. package/package.json +37 -31
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.AwsDynamoServiceClient = void 0;
3
+ exports.AwsDynamoServiceClient = exports.DYNAMODB_COMPLETE_READ_TIMEOUT_MS = exports.DYNAMODB_COMPLETE_READ_MAX_EVALUATED_ITEMS = exports.DYNAMODB_COMPLETE_READ_MAX_PAGES = exports.DYNAMODB_OBSERVED_READ_MAX_ITEMS = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const client_dynamodb_1 = require("@aws-sdk/client-dynamodb");
6
6
  const lib_dynamodb_1 = require("@aws-sdk/lib-dynamodb");
@@ -12,6 +12,27 @@ const utils_1 = require("../../utils");
12
12
  const AwsServiceClient_1 = require("./AwsServiceClient");
13
13
  const helpers_1 = require("../../helpers");
14
14
  const util_dynamodb_1 = require("@aws-sdk/util-dynamodb");
15
+ const dynamoDbCapacity_1 = require("../providers/performance/dynamoDbCapacity");
16
+ const dynamoDbRdhSummary_1 = require("./dynamoDbRdhSummary");
17
+ const dynamoDbResultMetadata_1 = require("./dynamoDbResultMetadata");
18
+ exports.DYNAMODB_OBSERVED_READ_MAX_ITEMS = 100;
19
+ exports.DYNAMODB_COMPLETE_READ_MAX_PAGES = 10;
20
+ exports.DYNAMODB_COMPLETE_READ_MAX_EVALUATED_ITEMS = 1000;
21
+ exports.DYNAMODB_COMPLETE_READ_TIMEOUT_MS = 30000;
22
+ function withTimeout(promise, timeoutMs) {
23
+ if (!timeoutMs)
24
+ return promise;
25
+ return new Promise((resolve, reject) => {
26
+ const timer = setTimeout(() => reject(new Error('Run Observed Read timed out.')), timeoutMs);
27
+ promise.then((value) => {
28
+ clearTimeout(timer);
29
+ resolve(value);
30
+ }, (err) => {
31
+ clearTimeout(timer);
32
+ reject(err);
33
+ });
34
+ });
35
+ }
15
36
  class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
16
37
  constructor(conRes, config, awsDriver) {
17
38
  super(conRes, config, awsDriver);
@@ -65,6 +86,30 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
65
86
  return res.Table.ItemCount;
66
87
  });
67
88
  }
89
+ describeTable(tableName) {
90
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
91
+ const res = yield this.client.send(new client_dynamodb_1.DescribeTableCommand({ TableName: tableName }));
92
+ return res.Table;
93
+ });
94
+ }
95
+ describeTimeToLive(tableName) {
96
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
97
+ const res = yield this.client.send(new client_dynamodb_1.DescribeTimeToLiveCommand({ TableName: tableName }));
98
+ return res.TimeToLiveDescription;
99
+ });
100
+ }
101
+ describeContributorInsights(tableName, indexName) {
102
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
103
+ const res = yield this.client.send(new client_dynamodb_1.DescribeContributorInsightsCommand({
104
+ TableName: tableName,
105
+ IndexName: indexName,
106
+ }));
107
+ return {
108
+ status: res.ContributorInsightsStatus,
109
+ mode: res.ContributorInsightsMode,
110
+ };
111
+ });
112
+ }
68
113
  listTables() {
69
114
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
70
115
  let tableNames = yield this.listTableNames();
@@ -109,7 +154,7 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
109
154
  }
110
155
  getInfomationSchemas() {
111
156
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
112
- var _a, _b, _c, _d, _e, _f, _g, _h, _j;
157
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m;
113
158
  if (!this.conRes) {
114
159
  return null;
115
160
  }
@@ -125,17 +170,22 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
125
170
  TableSizeBytes: table.TableSizeBytes,
126
171
  ItemCount: table.ItemCount,
127
172
  TableArn: table.TableArn,
173
+ BillingMode: (_c = table.BillingModeSummary) === null || _c === void 0 ? void 0 : _c.BillingMode,
174
+ OnDemandMaxReadRequestUnits: (_d = table.OnDemandThroughput) === null || _d === void 0 ? void 0 : _d.MaxReadRequestUnits,
175
+ OnDemandMaxWriteRequestUnits: (_e = table.OnDemandThroughput) === null || _e === void 0 ? void 0 : _e.MaxWriteRequestUnits,
128
176
  ttl: table.ttl,
129
- lsi: (_d = (_c = table.LocalSecondaryIndexes) === null || _c === void 0 ? void 0 : _c.map((it) => {
177
+ lsi: (_g = (_f = table.LocalSecondaryIndexes) === null || _f === void 0 ? void 0 : _f.map((it) => {
130
178
  return {
131
179
  IndexName: it.IndexName,
132
180
  KeySchema: it.KeySchema,
133
181
  IndexSizeBytes: it.IndexSizeBytes,
134
182
  ItemCount: it.ItemCount,
135
183
  IndexArn: it.IndexArn,
184
+ Projection: it.Projection,
136
185
  };
137
- })) !== null && _d !== void 0 ? _d : [],
138
- gsi: (_f = (_e = table.GlobalSecondaryIndexes) === null || _e === void 0 ? void 0 : _e.map((it) => {
186
+ })) !== null && _g !== void 0 ? _g : [],
187
+ gsi: (_j = (_h = table.GlobalSecondaryIndexes) === null || _h === void 0 ? void 0 : _h.map((it) => {
188
+ var _a, _b, _c, _d;
139
189
  return {
140
190
  IndexName: it.IndexName,
141
191
  KeySchema: it.KeySchema,
@@ -143,17 +193,22 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
143
193
  IndexSizeBytes: it.IndexSizeBytes,
144
194
  ItemCount: it.ItemCount,
145
195
  IndexArn: it.IndexArn,
196
+ Projection: it.Projection,
197
+ ReadCapacityUnits: (_a = it.ProvisionedThroughput) === null || _a === void 0 ? void 0 : _a.ReadCapacityUnits,
198
+ WriteCapacityUnits: (_b = it.ProvisionedThroughput) === null || _b === void 0 ? void 0 : _b.WriteCapacityUnits,
199
+ OnDemandMaxReadRequestUnits: (_c = it.OnDemandThroughput) === null || _c === void 0 ? void 0 : _c.MaxReadRequestUnits,
200
+ OnDemandMaxWriteRequestUnits: (_d = it.OnDemandThroughput) === null || _d === void 0 ? void 0 : _d.MaxWriteRequestUnits,
146
201
  };
147
- })) !== null && _f !== void 0 ? _f : [],
202
+ })) !== null && _j !== void 0 ? _j : [],
148
203
  });
149
- const cols = (_h = (_g = table.AttributeDefinitions) === null || _g === void 0 ? void 0 : _g.map((attr) => {
204
+ const cols = (_l = (_k = table.AttributeDefinitions) === null || _k === void 0 ? void 0 : _k.map((attr) => {
150
205
  var _a, _b;
151
206
  const pk = (_a = table.KeySchema) === null || _a === void 0 ? void 0 : _a.some((it) => it.AttributeName === attr.AttributeName &&
152
207
  it.KeyType === 'HASH');
153
208
  const sk = (_b = table.KeySchema) === null || _b === void 0 ? void 0 : _b.some((it) => it.AttributeName === attr.AttributeName &&
154
209
  it.KeyType === 'RANGE');
155
210
  return new resource_1.DbDynamoTableColumn(attr.AttributeName, attr.AttributeType, pk, sk);
156
- })) !== null && _h !== void 0 ? _h : [];
211
+ })) !== null && _l !== void 0 ? _l : [];
157
212
  cols
158
213
  .sort((a, b) => {
159
214
  const n = (it) => (it.pk ? -2 : it.sk ? -1 : 0);
@@ -168,7 +223,7 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
168
223
  return a.name.localeCompare(b.name);
169
224
  })
170
225
  .forEach((it) => dynamoTable.addChild(it));
171
- (_j = table.ExtraItems) === null || _j === void 0 ? void 0 : _j.forEach((item) => {
226
+ (_m = table.ExtraItems) === null || _m === void 0 ? void 0 : _m.forEach((item) => {
172
227
  if (!dynamoTable.getChildByName(item.name)) {
173
228
  const attrType = Object.keys(item.value)[0];
174
229
  dynamoTable.addChild(new resource_1.DbDynamoTableColumn(item.name, attrType, false, false));
@@ -214,81 +269,88 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
214
269
  };
215
270
  });
216
271
  }
217
- scanItems(params) {
218
- return tslib_1.__awaiter(this, void 0, void 0, function* () {
219
- var _a, _b;
220
- let LastEvaluatedKey = undefined;
221
- let CapacityUnits = 0;
222
- if (params.ExclusiveStartKey) {
223
- LastEvaluatedKey = params.ExclusiveStartKey;
224
- }
225
- const Items = [];
272
+ collectScanItems(_a) {
273
+ return tslib_1.__awaiter(this, arguments, void 0, function* ({ limit, exclusiveStartKey, fetchPage, }) {
274
+ var _b;
275
+ let lastEvaluatedKey = exclusiveStartKey;
276
+ const items = [];
277
+ const tracker = new dynamoDbCapacity_1.DynamoDbExecutionMetaTracker();
226
278
  do {
227
- const command = new lib_dynamodb_1.ScanCommand(Object.assign(Object.assign({}, params), { Limit: params.Limit ? params.Limit - Items.length : undefined, ExclusiveStartKey: LastEvaluatedKey ? LastEvaluatedKey : undefined, ReturnConsumedCapacity: 'TOTAL' }));
228
- const response = yield this.client.send(command);
229
- LastEvaluatedKey = response.LastEvaluatedKey;
230
- CapacityUnits += (_b = (_a = response.ConsumedCapacity) === null || _a === void 0 ? void 0 : _a.CapacityUnits) !== null && _b !== void 0 ? _b : 0;
231
- Items.push(...response.Items);
232
- if (params.Limit && Items.length >= params.Limit) {
279
+ const remainingLimit = limit ? limit - items.length : undefined;
280
+ const response = yield fetchPage(remainingLimit, lastEvaluatedKey);
281
+ if (!response) {
233
282
  break;
234
283
  }
235
- } while (LastEvaluatedKey);
284
+ tracker.recordResponse(response, { trackNativeCounts: true });
285
+ lastEvaluatedKey = response.LastEvaluatedKey;
286
+ items.push(...((_b = response.Items) !== null && _b !== void 0 ? _b : []));
287
+ if (limit && items.length >= limit) {
288
+ break;
289
+ }
290
+ } while (lastEvaluatedKey);
236
291
  return {
237
- Items,
238
- LastEvaluatedKey,
239
- Count: Items.length,
240
- CapacityUnits,
292
+ items,
293
+ lastEvaluatedKey,
294
+ meta: tracker.build(!!lastEvaluatedKey),
295
+ };
296
+ });
297
+ }
298
+ scanItems(params) {
299
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
300
+ var _a;
301
+ const { items, lastEvaluatedKey, meta } = yield this.collectScanItems({
302
+ limit: params.Limit,
303
+ exclusiveStartKey: params.ExclusiveStartKey,
304
+ fetchPage: (remainingLimit, exclusiveStartKey) => tslib_1.__awaiter(this, void 0, void 0, function* () {
305
+ return yield this.docClient.send(new lib_dynamodb_1.ScanCommand(Object.assign(Object.assign({}, params), { Limit: remainingLimit, ExclusiveStartKey: exclusiveStartKey, ReturnConsumedCapacity: 'INDEXES' })));
306
+ }),
307
+ });
308
+ return {
309
+ Items: items,
310
+ LastEvaluatedKey: lastEvaluatedKey,
311
+ Count: items.length,
312
+ CapacityUnits: (_a = meta.capacityBreakdown) === null || _a === void 0 ? void 0 : _a.capacityUnits,
313
+ meta,
241
314
  };
242
315
  });
243
316
  }
244
317
  queryItems(params) {
245
318
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
246
- var _a, _b;
247
- let LastEvaluatedKey = undefined;
248
- let CapacityUnits = 0;
249
- if (params.ExclusiveStartKey) {
250
- LastEvaluatedKey = params.ExclusiveStartKey;
251
- }
252
- const Items = [];
253
- do {
254
- const command = new lib_dynamodb_1.QueryCommand(Object.assign(Object.assign({}, params), { Limit: params.Limit ? params.Limit - Items.length : undefined, ExclusiveStartKey: LastEvaluatedKey ? LastEvaluatedKey : undefined, ReturnConsumedCapacity: 'TOTAL' }));
255
- const response = yield this.docClient.send(command);
256
- LastEvaluatedKey = response.LastEvaluatedKey;
257
- CapacityUnits += (_b = (_a = response.ConsumedCapacity) === null || _a === void 0 ? void 0 : _a.CapacityUnits) !== null && _b !== void 0 ? _b : 0;
258
- Items.push(...response.Items);
259
- if (params.Limit && Items.length >= params.Limit) {
260
- break;
261
- }
262
- } while (LastEvaluatedKey);
319
+ var _a;
320
+ const { items, lastEvaluatedKey, meta } = yield this.collectScanItems({
321
+ limit: params.Limit,
322
+ exclusiveStartKey: params.ExclusiveStartKey,
323
+ fetchPage: (remainingLimit, exclusiveStartKey) => this.docClient.send(new lib_dynamodb_1.QueryCommand(Object.assign(Object.assign({}, params), { Limit: remainingLimit, ExclusiveStartKey: exclusiveStartKey, ReturnConsumedCapacity: 'INDEXES' }))),
324
+ });
263
325
  return {
264
- Items,
265
- LastEvaluatedKey,
266
- Count: Items.length,
267
- CapacityUnits,
326
+ Items: items,
327
+ LastEvaluatedKey: lastEvaluatedKey,
328
+ Count: items.length,
329
+ CapacityUnits: (_a = meta.capacityBreakdown) === null || _a === void 0 ? void 0 : _a.capacityUnits,
330
+ meta,
268
331
  };
269
332
  });
270
333
  }
271
334
  queryItemsAtClient(params) {
272
335
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
273
- var _a, _b;
274
336
  const { TableName, IndexName } = params;
275
337
  let LastEvaluatedKey = undefined;
276
- let CapacityUnits = 0;
277
338
  const qst = {
278
339
  ast: { type: 'select' },
279
- names: { tableName: TableName },
340
+ names: { tableName: TableName, indexName: IndexName },
280
341
  };
281
342
  const dbTable = this.getDbTable(qst);
282
343
  const Items = [];
283
344
  const allAttributeTypes = new Map();
284
345
  const startTime = new Date().getTime();
346
+ const tracker = new dynamoDbCapacity_1.DynamoDbExecutionMetaTracker();
285
347
  do {
286
348
  const command = new client_dynamodb_1.QueryCommand(Object.assign(Object.assign({}, params), { TableName,
287
- IndexName, Limit: params.Limit ? params.Limit - Items.length : undefined, ExclusiveStartKey: LastEvaluatedKey ? LastEvaluatedKey : undefined, ReturnConsumedCapacity: 'TOTAL' }));
349
+ IndexName, Limit: params.Limit ? params.Limit - Items.length : undefined, ExclusiveStartKey: LastEvaluatedKey ? LastEvaluatedKey : undefined, ReturnConsumedCapacity: 'INDEXES' }));
288
350
  try {
289
351
  const response = yield this.client.send(command);
352
+ tracker.recordResponse(response, { trackNativeCounts: true });
290
353
  LastEvaluatedKey = response.LastEvaluatedKey;
291
- CapacityUnits += (_b = (_a = response.ConsumedCapacity) === null || _a === void 0 ? void 0 : _a.CapacityUnits) !== null && _b !== void 0 ? _b : 0;
292
354
  Items.push(...response.Items);
293
355
  response.Items.forEach((item) => {
294
356
  Object.keys(item)
@@ -323,9 +385,66 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
323
385
  },
324
386
  qst,
325
387
  elapsedTimeMilli,
326
- capacityUnits: CapacityUnits,
327
388
  dbTable,
328
389
  allAttributeTypes,
390
+ meta: tracker.build(!!LastEvaluatedKey),
391
+ apiOperation: 'Query',
392
+ });
393
+ rs.meta.queryInput = JSON.stringify(params, null, 2);
394
+ return rs;
395
+ });
396
+ }
397
+ scanItemsAtClient(params) {
398
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
399
+ const { TableName, IndexName } = params;
400
+ const qst = {
401
+ ast: { type: 'select' },
402
+ names: { tableName: TableName, indexName: IndexName },
403
+ };
404
+ const dbTable = this.getDbTable(qst);
405
+ const startTime = new Date().getTime();
406
+ const { items: Items, meta } = yield this.collectScanItems({
407
+ limit: params.Limit,
408
+ exclusiveStartKey: params.ExclusiveStartKey,
409
+ fetchPage: (remainingLimit, exclusiveStartKey) => tslib_1.__awaiter(this, void 0, void 0, function* () {
410
+ try {
411
+ return yield this.client.send(new client_dynamodb_1.ScanCommand(Object.assign(Object.assign({}, params), { TableName, Limit: remainingLimit, ExclusiveStartKey: exclusiveStartKey, ReturnConsumedCapacity: 'INDEXES' })));
412
+ }
413
+ catch (e) {
414
+ if (e.name === 'ResourceNotFoundException') {
415
+ return undefined;
416
+ }
417
+ throw e;
418
+ }
419
+ }),
420
+ });
421
+ const allAttributeTypes = new Map();
422
+ Items.forEach((item) => {
423
+ Object.keys(item)
424
+ .filter((it) => !allAttributeTypes.has(it))
425
+ .forEach((it) => {
426
+ const colType = this.parseDynamoAttrTypeByNameAndItem(it, item);
427
+ allAttributeTypes.set(it, colType);
428
+ });
429
+ });
430
+ const elapsedTimeMilli = new Date().getTime() - startTime;
431
+ const rs = this.itemsToResultSetData({
432
+ Count: Items.length,
433
+ Items,
434
+ params: {
435
+ sql: '',
436
+ conditions: {},
437
+ meta: {
438
+ type: 'select',
439
+ tableName: TableName,
440
+ },
441
+ },
442
+ qst,
443
+ elapsedTimeMilli,
444
+ dbTable,
445
+ allAttributeTypes,
446
+ meta,
447
+ apiOperation: 'Scan',
329
448
  });
330
449
  rs.meta.queryInput = JSON.stringify(params, null, 2);
331
450
  return rs;
@@ -333,23 +452,23 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
333
452
  }
334
453
  executeStatementAtDocClient(params) {
335
454
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
336
- var _a, _b;
455
+ var _a;
337
456
  this.interrupted = false;
338
457
  let LastEvaluatedKey = undefined;
339
458
  let NextToken = params.NextToken;
340
- let CapacityUnits = 0;
341
459
  const allAttributeNames = new Set();
342
460
  const Items = [];
461
+ const tracker = new dynamoDbCapacity_1.DynamoDbExecutionMetaTracker();
343
462
  do {
344
463
  if (this.interrupted) {
345
464
  this.interrupted = false;
346
465
  throw new Error('INTERRUPT');
347
466
  }
348
- const command = new lib_dynamodb_1.ExecuteStatementCommand(Object.assign(Object.assign({}, params), { Limit: params.Limit ? params.Limit - Items.length : undefined, NextToken, ReturnConsumedCapacity: 'TOTAL' }));
467
+ const command = new lib_dynamodb_1.ExecuteStatementCommand(Object.assign(Object.assign({}, params), { Limit: params.Limit ? params.Limit - Items.length : undefined, NextToken, ReturnConsumedCapacity: 'INDEXES' }));
349
468
  const response = yield this.docClient.send(command);
469
+ tracker.recordResponse(response);
350
470
  LastEvaluatedKey = response.LastEvaluatedKey;
351
471
  NextToken = response.NextToken;
352
- CapacityUnits += (_b = (_a = response.ConsumedCapacity) === null || _a === void 0 ? void 0 : _a.CapacityUnits) !== null && _b !== void 0 ? _b : 0;
353
472
  Items.push(...response.Items);
354
473
  response.Items.forEach((item) => {
355
474
  Object.keys(item)
@@ -362,37 +481,39 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
362
481
  break;
363
482
  }
364
483
  } while (LastEvaluatedKey || NextToken);
484
+ const meta = tracker.build(!!(LastEvaluatedKey || NextToken));
365
485
  return {
366
486
  Items,
367
487
  LastEvaluatedKey,
368
488
  NextToken,
369
489
  Count: Items.length,
370
- CapacityUnits,
490
+ CapacityUnits: (_a = meta.capacityBreakdown) === null || _a === void 0 ? void 0 : _a.capacityUnits,
371
491
  extra: {
372
492
  allAttributeNames: [...allAttributeNames],
373
493
  },
494
+ meta,
374
495
  };
375
496
  });
376
497
  }
377
498
  executeStatementAtClient(params) {
378
499
  return tslib_1.__awaiter(this, void 0, void 0, function* () {
379
- var _a, _b;
500
+ var _a;
380
501
  this.interrupted = false;
381
502
  let LastEvaluatedKey = undefined;
382
503
  let NextToken = params.NextToken;
383
- let CapacityUnits = 0;
384
504
  const allAttributeTypes = new Map();
385
505
  const Items = [];
506
+ const tracker = new dynamoDbCapacity_1.DynamoDbExecutionMetaTracker();
386
507
  do {
387
508
  if (this.interrupted) {
388
509
  this.interrupted = false;
389
510
  throw new Error('INTERRUPT');
390
511
  }
391
- const command = new client_dynamodb_1.ExecuteStatementCommand(Object.assign(Object.assign({}, params), { Limit: params.Limit ? params.Limit - Items.length : undefined, NextToken, ReturnConsumedCapacity: 'TOTAL' }));
512
+ const command = new client_dynamodb_1.ExecuteStatementCommand(Object.assign(Object.assign({}, params), { Limit: params.Limit ? params.Limit - Items.length : undefined, NextToken, ReturnConsumedCapacity: 'INDEXES' }));
392
513
  const response = yield this.client.send(command);
514
+ tracker.recordResponse(response);
393
515
  LastEvaluatedKey = response.LastEvaluatedKey;
394
516
  NextToken = response.NextToken;
395
- CapacityUnits += (_b = (_a = response.ConsumedCapacity) === null || _a === void 0 ? void 0 : _a.CapacityUnits) !== null && _b !== void 0 ? _b : 0;
396
517
  Items.push(...response.Items);
397
518
  response.Items.forEach((item) => {
398
519
  Object.keys(item)
@@ -406,15 +527,17 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
406
527
  break;
407
528
  }
408
529
  } while (LastEvaluatedKey || NextToken);
530
+ const meta = tracker.build(!!(LastEvaluatedKey || NextToken));
409
531
  return {
410
532
  Items,
411
533
  LastEvaluatedKey,
412
534
  NextToken,
413
535
  Count: Items.length,
414
- CapacityUnits,
536
+ CapacityUnits: (_a = meta.capacityBreakdown) === null || _a === void 0 ? void 0 : _a.capacityUnits,
415
537
  extra: {
416
538
  allAttributeTypes,
417
539
  },
540
+ meta,
418
541
  };
419
542
  });
420
543
  }
@@ -462,7 +585,7 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
462
585
  if (binds && binds.length > 0) {
463
586
  input.Parameters = (0, util_dynamodb_1.marshall)(binds);
464
587
  }
465
- const { CapacityUnits: capacityUnits, Count, Items, extra: { allAttributeTypes }, } = yield this.executeStatementAtClient(input);
588
+ const { Count, Items, extra: { allAttributeTypes }, meta, } = yield this.executeStatementAtClient(input);
466
589
  const elapsedTimeMilli = new Date().getTime() - startTime;
467
590
  return this.itemsToResultSetData({
468
591
  Count,
@@ -470,32 +593,168 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
470
593
  params,
471
594
  qst,
472
595
  elapsedTimeMilli,
473
- capacityUnits,
474
596
  dbTable,
475
597
  allAttributeTypes,
598
+ meta,
599
+ apiOperation: 'ExecuteStatement',
476
600
  });
477
601
  });
478
602
  }
479
- itemsToResultSetData({ Count, Items, params, qst, elapsedTimeMilli, capacityUnits, dbTable, allAttributeTypes, }) {
480
- var _a, _b, _c, _d, _e;
481
- let rdb = undefined;
482
- const record = Count === 0 ? {} : Items[0];
483
- const pkAndSk = dbTable === null || dbTable === void 0 ? void 0 : dbTable.getPkAndSkByIndex((_a = qst === null || qst === void 0 ? void 0 : qst.names) === null || _a === void 0 ? void 0 : _a.indexName);
603
+ observeNativeQueryRead(params) {
604
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
605
+ var _a, _b, _c, _d, _e, _f;
606
+ const limit = Math.min((_a = params.maxEvaluatedItems) !== null && _a !== void 0 ? _a : exports.DYNAMODB_OBSERVED_READ_MAX_ITEMS, exports.DYNAMODB_OBSERVED_READ_MAX_ITEMS);
607
+ const startTime = Date.now();
608
+ const command = new client_dynamodb_1.QueryCommand(Object.assign(Object.assign({}, params.input), { Limit: limit, ExclusiveStartKey: undefined, ReturnConsumedCapacity: 'INDEXES' }));
609
+ const response = yield withTimeout(this.client.send(command, { abortSignal: params.signal }), params.timeoutMs);
610
+ return {
611
+ returnedItemCount: (_d = (_b = response.Count) !== null && _b !== void 0 ? _b : (_c = response.Items) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0,
612
+ scannedItemCount: response.ScannedCount,
613
+ hasMorePages: !!response.LastEvaluatedKey,
614
+ capacityBreakdown: (0, dynamoDbCapacity_1.aggregateConsumedCapacity)([response.ConsumedCapacity]),
615
+ clientElapsedTimeMs: Date.now() - startTime,
616
+ requestCount: 1,
617
+ retryCount: Math.max(0, ((_f = (_e = response.$metadata) === null || _e === void 0 ? void 0 : _e.attempts) !== null && _f !== void 0 ? _f : 1) - 1),
618
+ };
619
+ });
620
+ }
621
+ observePartiqlRead(params) {
622
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
623
+ var _a, _b, _c, _d, _e, _f;
624
+ const qst = (0, helpers_1.parseQuery)(params.statement);
625
+ if (!qst || ((_a = qst.ast) === null || _a === void 0 ? void 0 : _a.type) !== 'select') {
626
+ throw new Error('Run Observed Read only supports a single SELECT statement.');
627
+ }
628
+ const limit = Math.min((_b = params.maxEvaluatedItems) !== null && _b !== void 0 ? _b : exports.DYNAMODB_OBSERVED_READ_MAX_ITEMS, exports.DYNAMODB_OBSERVED_READ_MAX_ITEMS);
629
+ const startTime = Date.now();
630
+ const input = {
631
+ Statement: params.statement,
632
+ Limit: limit,
633
+ ReturnConsumedCapacity: 'INDEXES',
634
+ };
635
+ if (params.parameters && params.parameters.length > 0) {
636
+ input.Parameters = (0, util_dynamodb_1.marshall)(params.parameters);
637
+ }
638
+ const response = yield withTimeout(this.client.send(new client_dynamodb_1.ExecuteStatementCommand(input), {
639
+ abortSignal: params.signal,
640
+ }), params.timeoutMs);
641
+ return {
642
+ returnedItemCount: (_d = (_c = response.Items) === null || _c === void 0 ? void 0 : _c.length) !== null && _d !== void 0 ? _d : 0,
643
+ scannedItemCount: undefined,
644
+ hasMorePages: !!(response.LastEvaluatedKey || response.NextToken),
645
+ capacityBreakdown: (0, dynamoDbCapacity_1.aggregateConsumedCapacity)([response.ConsumedCapacity]),
646
+ clientElapsedTimeMs: Date.now() - startTime,
647
+ requestCount: 1,
648
+ retryCount: Math.max(0, ((_f = (_e = response.$metadata) === null || _e === void 0 ? void 0 : _e.attempts) !== null && _f !== void 0 ? _f : 1) - 1),
649
+ };
650
+ });
651
+ }
652
+ observeNativeQueryReadComplete(params) {
653
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
654
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
655
+ const maxPages = Math.min((_a = params.maxPages) !== null && _a !== void 0 ? _a : exports.DYNAMODB_COMPLETE_READ_MAX_PAGES, exports.DYNAMODB_COMPLETE_READ_MAX_PAGES);
656
+ const maxEvaluatedItems = Math.min((_b = params.maxEvaluatedItems) !== null && _b !== void 0 ? _b : exports.DYNAMODB_COMPLETE_READ_MAX_EVALUATED_ITEMS, exports.DYNAMODB_COMPLETE_READ_MAX_EVALUATED_ITEMS);
657
+ const timeoutMs = Math.min((_c = params.timeoutMs) !== null && _c !== void 0 ? _c : exports.DYNAMODB_COMPLETE_READ_TIMEOUT_MS, exports.DYNAMODB_COMPLETE_READ_TIMEOUT_MS);
658
+ const startedAt = Date.now();
659
+ let exclusiveStartKey;
660
+ let returnedItemCount = 0;
661
+ let scannedItemCount = 0;
662
+ let pageCount = 0;
663
+ let hasMorePages = false;
664
+ const tracker = new dynamoDbCapacity_1.DynamoDbExecutionMetaTracker();
665
+ do {
666
+ const remainingItems = maxEvaluatedItems - scannedItemCount;
667
+ if (remainingItems <= 0 || pageCount >= maxPages)
668
+ break;
669
+ const response = yield withTimeout(this.client.send(new client_dynamodb_1.QueryCommand(Object.assign(Object.assign({}, params.input), { Limit: Math.min(exports.DYNAMODB_OBSERVED_READ_MAX_ITEMS, remainingItems), ExclusiveStartKey: exclusiveStartKey, ReturnConsumedCapacity: 'INDEXES' })), { abortSignal: params.signal }), Math.max(1, timeoutMs - (Date.now() - startedAt)));
670
+ tracker.recordResponse(response, { trackNativeCounts: true });
671
+ pageCount += 1;
672
+ returnedItemCount += (_f = (_d = response.Count) !== null && _d !== void 0 ? _d : (_e = response.Items) === null || _e === void 0 ? void 0 : _e.length) !== null && _f !== void 0 ? _f : 0;
673
+ scannedItemCount +=
674
+ (_k = (_h = (_g = response.ScannedCount) !== null && _g !== void 0 ? _g : response.Count) !== null && _h !== void 0 ? _h : (_j = response.Items) === null || _j === void 0 ? void 0 : _j.length) !== null && _k !== void 0 ? _k : 0;
675
+ exclusiveStartKey = response.LastEvaluatedKey;
676
+ hasMorePages = !!exclusiveStartKey;
677
+ } while (hasMorePages);
678
+ const meta = tracker.build(hasMorePages);
679
+ return {
680
+ returnedItemCount,
681
+ scannedItemCount,
682
+ hasMorePages,
683
+ capacityBreakdown: meta.capacityBreakdown,
684
+ clientElapsedTimeMs: Date.now() - startedAt,
685
+ requestCount: meta.requestCount,
686
+ retryCount: meta.retryCount,
687
+ };
688
+ });
689
+ }
690
+ observePartiqlReadComplete(params) {
691
+ return tslib_1.__awaiter(this, void 0, void 0, function* () {
692
+ var _a, _b, _c, _d, _e;
693
+ const qst = (0, helpers_1.parseQuery)(params.statement);
694
+ if (!qst || ((_a = qst.ast) === null || _a === void 0 ? void 0 : _a.type) !== 'select') {
695
+ throw new Error('Complete-result Benchmark only supports a single SELECT statement.');
696
+ }
697
+ const maxPages = Math.min((_b = params.maxPages) !== null && _b !== void 0 ? _b : exports.DYNAMODB_COMPLETE_READ_MAX_PAGES, exports.DYNAMODB_COMPLETE_READ_MAX_PAGES);
698
+ const timeoutMs = Math.min((_c = params.timeoutMs) !== null && _c !== void 0 ? _c : exports.DYNAMODB_COMPLETE_READ_TIMEOUT_MS, exports.DYNAMODB_COMPLETE_READ_TIMEOUT_MS);
699
+ const startedAt = Date.now();
700
+ let nextToken;
701
+ let returnedItemCount = 0;
702
+ let pageCount = 0;
703
+ let hasMorePages = false;
704
+ const tracker = new dynamoDbCapacity_1.DynamoDbExecutionMetaTracker();
705
+ do {
706
+ if (pageCount >= maxPages)
707
+ break;
708
+ const input = {
709
+ Statement: params.statement,
710
+ Limit: exports.DYNAMODB_OBSERVED_READ_MAX_ITEMS,
711
+ NextToken: nextToken,
712
+ ReturnConsumedCapacity: 'INDEXES',
713
+ };
714
+ if (params.parameters && params.parameters.length > 0)
715
+ input.Parameters = (0, util_dynamodb_1.marshall)(params.parameters);
716
+ const response = yield withTimeout(this.client.send(new client_dynamodb_1.ExecuteStatementCommand(input), {
717
+ abortSignal: params.signal,
718
+ }), Math.max(1, timeoutMs - (Date.now() - startedAt)));
719
+ tracker.recordResponse(response);
720
+ pageCount += 1;
721
+ returnedItemCount += (_e = (_d = response.Items) === null || _d === void 0 ? void 0 : _d.length) !== null && _e !== void 0 ? _e : 0;
722
+ nextToken = response.NextToken;
723
+ hasMorePages = !!(response.NextToken || response.LastEvaluatedKey);
724
+ if (!nextToken && hasMorePages)
725
+ break;
726
+ } while (hasMorePages);
727
+ const meta = tracker.build(hasMorePages);
728
+ return {
729
+ returnedItemCount,
730
+ scannedItemCount: undefined,
731
+ hasMorePages,
732
+ capacityBreakdown: meta.capacityBreakdown,
733
+ clientElapsedTimeMs: Date.now() - startedAt,
734
+ requestCount: meta.requestCount,
735
+ retryCount: meta.retryCount,
736
+ };
737
+ });
738
+ }
739
+ static classifyPartiqlOperationFromText(sql) {
740
+ const withoutLeadingComments = sql.replace(/^(\s*(?:--[^\n]*\n|\/\*[\s\S]*?\*\/))*\s*/, '');
741
+ const m = withoutLeadingComments.match(/^(select|insert|update|delete)\b/i);
742
+ return m
743
+ ? m[1].toLowerCase()
744
+ : undefined;
745
+ }
746
+ itemsToResultSetData({ Count, Items, params, qst, elapsedTimeMilli, dbTable, allAttributeTypes, meta, apiOperation, }) {
747
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o, _p;
748
+ const materializedItems = Items !== null && Items !== void 0 ? Items : [];
749
+ const record = Count === 0 ? {} : (_a = materializedItems[0]) !== null && _a !== void 0 ? _a : {};
750
+ const indexName = (_b = qst === null || qst === void 0 ? void 0 : qst.names) === null || _b === void 0 ? void 0 : _b.indexName;
751
+ const accessPath = (0, dynamoDbResultMetadata_1.resolveDynamoDbAccessPath)(dbTable, indexName);
484
752
  const createRdhKeyFromName = (name) => {
485
753
  const col = dbTable === null || dbTable === void 0 ? void 0 : dbTable.getChildByName(name);
486
754
  const type = (col === null || col === void 0 ? void 0 : col.attrType)
487
755
  ? (0, types_1.parseDynamoAttrType)(col.attrType)
488
756
  : allAttributeTypes.get(name);
489
- let comment = '';
490
- let required = false;
491
- if ((col === null || col === void 0 ? void 0 : col.name) === (pkAndSk === null || pkAndSk === void 0 ? void 0 : pkAndSk.pk)) {
492
- comment = '(pk)';
493
- required = true;
494
- }
495
- if ((col === null || col === void 0 ? void 0 : col.name) === (pkAndSk === null || pkAndSk === void 0 ? void 0 : pkAndSk.sk)) {
496
- comment = '(sk)';
497
- required = true;
498
- }
757
+ const { comment, required } = (0, dynamoDbResultMetadata_1.describeDynamoDbResultKey)(dbTable, indexName, name);
499
758
  return (0, rdh_1.createRdhKey)({
500
759
  name,
501
760
  type,
@@ -504,43 +763,31 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
504
763
  });
505
764
  };
506
765
  const keys = Object.keys(record).map((it) => createRdhKeyFromName(it));
766
+ const keyNames = new Set(keys.map((key) => key.name));
507
767
  for (const [attrName, colType] of allAttributeTypes) {
508
- if (!keys.map((key) => key.name).includes(attrName)) {
768
+ if (!keyNames.has(attrName)) {
509
769
  keys.push((0, rdh_1.createRdhKey)({
510
770
  name: attrName,
511
771
  type: colType,
512
772
  }));
773
+ keyNames.add(attrName);
513
774
  }
514
775
  }
515
- if (((_b = qst === null || qst === void 0 ? void 0 : qst.ast) === null || _b === void 0 ? void 0 : _b.type) === 'select' &&
516
- ((_c = qst === null || qst === void 0 ? void 0 : qst.ast) === null || _c === void 0 ? void 0 : _c.columns) &&
517
- ((_d = qst === null || qst === void 0 ? void 0 : qst.ast) === null || _d === void 0 ? void 0 : _d.columns.length) === 1) {
776
+ if (((_c = qst === null || qst === void 0 ? void 0 : qst.ast) === null || _c === void 0 ? void 0 : _c.type) === 'select' &&
777
+ ((_d = qst === null || qst === void 0 ? void 0 : qst.ast) === null || _d === void 0 ? void 0 : _d.columns) &&
778
+ ((_e = qst === null || qst === void 0 ? void 0 : qst.ast) === null || _e === void 0 ? void 0 : _e.columns.length) === 1) {
518
779
  const { expr } = qst.ast.columns[0];
519
780
  if (expr.type === 'ref' && expr.name === '*') {
520
781
  if (Count === 0 && keys.length === 0) {
521
- if (pkAndSk === null || pkAndSk === void 0 ? void 0 : pkAndSk.pk) {
522
- keys.push(createRdhKeyFromName(pkAndSk === null || pkAndSk === void 0 ? void 0 : pkAndSk.pk));
523
- }
524
- if (pkAndSk === null || pkAndSk === void 0 ? void 0 : pkAndSk.sk) {
525
- keys.push(createRdhKeyFromName(pkAndSk === null || pkAndSk === void 0 ? void 0 : pkAndSk.sk));
782
+ for (const keyName of (0, dynamoDbResultMetadata_1.getDynamoDbResultKeyNames)(dbTable, indexName)) {
783
+ keys.push(createRdhKeyFromName(keyName));
526
784
  }
527
785
  }
528
- keys.sort((a, b) => {
529
- const n = (it) => it.name === (pkAndSk === null || pkAndSk === void 0 ? void 0 : pkAndSk.pk) ? -2 : it.name === (pkAndSk === null || pkAndSk === void 0 ? void 0 : pkAndSk.sk) ? -1 : 0;
530
- const an = n(a);
531
- const bn = n(b);
532
- if (an < bn) {
533
- return -1;
534
- }
535
- if (an > bn) {
536
- return 1;
537
- }
538
- return a.name.localeCompare(b.name);
539
- });
786
+ keys.sort((a, b) => (0, dynamoDbResultMetadata_1.compareDynamoDbResultKeys)(dbTable, indexName, a.name, b.name));
540
787
  }
541
788
  }
542
- rdb = new rdh_1.ResultSetDataBuilder(keys);
543
- Items.forEach((item) => {
789
+ const rdb = new rdh_1.ResultSetDataBuilder(keys);
790
+ materializedItems.forEach((item) => {
544
791
  const values = (0, util_dynamodb_1.unmarshall)(item);
545
792
  Object.entries(values).forEach(([key, value]) => {
546
793
  const attrType = Object.keys(item[key])[0];
@@ -556,14 +803,63 @@ class AwsDynamoServiceClient extends AwsServiceClient_1.AwsServiceClient {
556
803
  connectionName: this.conRes.name,
557
804
  params,
558
805
  rdb,
559
- type: (_e = qst === null || qst === void 0 ? void 0 : qst.ast) === null || _e === void 0 ? void 0 : _e.type,
806
+ type: (_f = qst === null || qst === void 0 ? void 0 : qst.ast) === null || _f === void 0 ? void 0 : _f.type,
560
807
  qst,
561
808
  dbTable,
562
809
  });
810
+ const operation = (_h = (_g = qst === null || qst === void 0 ? void 0 : qst.ast) === null || _g === void 0 ? void 0 : _g.type) !== null && _h !== void 0 ? _h : AwsDynamoServiceClient.classifyPartiqlOperationFromText(params.sql);
811
+ const isKnownWrite = operation === 'insert' ||
812
+ operation === 'update' ||
813
+ operation === 'delete';
814
+ const selectedRows = isKnownWrite ? undefined : rdb.rs.rows.length;
815
+ const affectedRows = undefined;
816
+ const capacityUnits = (_j = meta === null || meta === void 0 ? void 0 : meta.capacityBreakdown) === null || _j === void 0 ? void 0 : _j.capacityUnits;
817
+ if ((meta === null || meta === void 0 ? void 0 : meta.reportedCount) !== undefined &&
818
+ selectedRows !== undefined &&
819
+ meta.reportedCount !== selectedRows) {
820
+ console.warn(`[AwsDynamoServiceClient] DynamoDB-reported Count (${meta.reportedCount}) does not match the number of items materialized into ResultSetData (${selectedRows}) for table "${(_m = (_k = dbTable === null || dbTable === void 0 ? void 0 : dbTable.name) !== null && _k !== void 0 ? _k : (_l = params.meta) === null || _l === void 0 ? void 0 : _l.tableName) !== null && _m !== void 0 ? _m : 'unknown'}".`);
821
+ }
822
+ const dynamoDb = meta
823
+ ? {
824
+ apiOperation,
825
+ accessPath,
826
+ returnedItemCount: selectedRows,
827
+ evaluatedItemCount: meta.scannedCount,
828
+ successfulResponseCount: meta.requestCount,
829
+ sdkRetryCount: meta.retryCount,
830
+ continuationTokenPresent: meta.hasMorePages,
831
+ consumedCapacity: meta.capacityBreakdown
832
+ ? {
833
+ totalCapacityUnits: meta.capacityBreakdown.capacityUnits,
834
+ totalReadCapacityUnits: meta.capacityBreakdown.readCapacityUnits,
835
+ totalWriteCapacityUnits: meta.capacityBreakdown.writeCapacityUnits,
836
+ table: meta.capacityBreakdown.table,
837
+ localSecondaryIndexes: meta.capacityBreakdown.localSecondaryIndexes,
838
+ globalSecondaryIndexes: meta.capacityBreakdown.globalSecondaryIndexes,
839
+ }
840
+ : undefined,
841
+ }
842
+ : undefined;
563
843
  rdb.setSummary({
844
+ info: (0, dynamoDbRdhSummary_1.buildDynamoDbRdhSummaryInfo)({
845
+ operation,
846
+ elapsedTimeMilli,
847
+ selectedRows,
848
+ affectedRows,
849
+ scannedRows: meta === null || meta === void 0 ? void 0 : meta.scannedCount,
850
+ requestCount: meta === null || meta === void 0 ? void 0 : meta.requestCount,
851
+ retryCount: meta === null || meta === void 0 ? void 0 : meta.retryCount,
852
+ capacityUnits,
853
+ readCapacityUnits: (_o = meta === null || meta === void 0 ? void 0 : meta.capacityBreakdown) === null || _o === void 0 ? void 0 : _o.readCapacityUnits,
854
+ writeCapacityUnits: (_p = meta === null || meta === void 0 ? void 0 : meta.capacityBreakdown) === null || _p === void 0 ? void 0 : _p.writeCapacityUnits,
855
+ hasMoreRows: meta === null || meta === void 0 ? void 0 : meta.hasMorePages,
856
+ accessPath,
857
+ }),
564
858
  elapsedTimeMilli,
565
- selectedRows: rdb.rs.rows.length,
859
+ selectedRows,
860
+ affectedRows,
566
861
  capacityUnits,
862
+ dynamoDb,
567
863
  });
568
864
  return rdb.build();
569
865
  }