@ductape/sdk 0.0.4-v9 → 0.0.4-v91

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 (998) hide show
  1. package/dist/agents/agent-context.d.ts +98 -0
  2. package/dist/agents/agent-context.js +588 -0
  3. package/dist/agents/agent-context.js.map +1 -0
  4. package/dist/agents/agent-executor.d.ts +180 -0
  5. package/dist/agents/agent-executor.js +715 -0
  6. package/dist/agents/agent-executor.js.map +1 -0
  7. package/dist/agents/agents.service.d.ts +310 -0
  8. package/dist/agents/agents.service.js +1249 -0
  9. package/dist/agents/agents.service.js.map +1 -0
  10. package/dist/agents/index.d.ts +55 -0
  11. package/dist/agents/index.js +110 -0
  12. package/dist/agents/index.js.map +1 -0
  13. package/dist/agents/memory-manager.d.ts +182 -0
  14. package/dist/agents/memory-manager.js +383 -0
  15. package/dist/agents/memory-manager.js.map +1 -0
  16. package/dist/agents/tool-registry.d.ts +141 -0
  17. package/dist/agents/tool-registry.js +355 -0
  18. package/dist/agents/tool-registry.js.map +1 -0
  19. package/dist/agents/types/agents.types.d.ts +1227 -0
  20. package/dist/agents/types/agents.types.js +12 -0
  21. package/dist/agents/types/agents.types.js.map +1 -0
  22. package/dist/agents/types/index.d.ts +6 -0
  23. package/dist/agents/types/index.js +23 -0
  24. package/dist/agents/types/index.js.map +1 -0
  25. package/dist/agents/vector-store-adapter.d.ts +108 -0
  26. package/dist/agents/vector-store-adapter.js +213 -0
  27. package/dist/agents/vector-store-adapter.js.map +1 -0
  28. package/dist/api/services/appApi.service.d.ts +51 -5
  29. package/dist/api/services/appApi.service.js +101 -3
  30. package/dist/api/services/appApi.service.js.map +1 -1
  31. package/dist/api/services/pricingApi.service.d.ts +10 -0
  32. package/dist/api/services/pricingApi.service.js +34 -0
  33. package/dist/api/services/pricingApi.service.js.map +1 -0
  34. package/dist/api/services/processorApi.service.d.ts +322 -0
  35. package/dist/api/services/processorApi.service.js +252 -0
  36. package/dist/api/services/processorApi.service.js.map +1 -1
  37. package/dist/api/services/productsApi.service.d.ts +105 -0
  38. package/dist/api/services/productsApi.service.js +139 -3
  39. package/dist/api/services/productsApi.service.js.map +1 -1
  40. package/dist/api/services/resilienceApi.service.d.ts +106 -0
  41. package/dist/api/services/resilienceApi.service.js +224 -0
  42. package/dist/api/services/resilienceApi.service.js.map +1 -0
  43. package/dist/api/services/secretsApi.service.d.ts +50 -0
  44. package/dist/api/services/secretsApi.service.js +124 -0
  45. package/dist/api/services/secretsApi.service.js.map +1 -0
  46. package/dist/api/services/workflowApi.service.d.ts +199 -0
  47. package/dist/api/services/workflowApi.service.js +183 -0
  48. package/dist/api/services/workflowApi.service.js.map +1 -0
  49. package/dist/api/services/workspaceApi.service.d.ts +8 -0
  50. package/dist/api/services/workspaceApi.service.js +20 -0
  51. package/dist/api/services/workspaceApi.service.js.map +1 -1
  52. package/dist/api/urls.d.ts +62 -0
  53. package/dist/api/urls.js +87 -17
  54. package/dist/api/urls.js.map +1 -1
  55. package/dist/api/utils/auth.utils.d.ts +1 -3
  56. package/dist/api/utils/auth.utils.js.map +1 -1
  57. package/dist/api/utils/cache.utils.d.ts +1 -1
  58. package/dist/api/utils/cache.utils.js +2 -2
  59. package/dist/api/utils/cache.utils.js.map +1 -1
  60. package/dist/api/utils/strings.utils.d.ts +2 -0
  61. package/dist/api/utils/strings.utils.js +14 -0
  62. package/dist/api/utils/strings.utils.js.map +1 -1
  63. package/dist/apps/services/app.service.d.ts +41 -33
  64. package/dist/apps/services/app.service.js +472 -184
  65. package/dist/apps/services/app.service.js.map +1 -1
  66. package/dist/apps/utils/auth-context-manager.d.ts +137 -0
  67. package/dist/apps/utils/auth-context-manager.js +248 -0
  68. package/dist/apps/utils/auth-context-manager.js.map +1 -0
  69. package/dist/apps/utils/credential-manager.d.ts +128 -0
  70. package/dist/apps/utils/credential-manager.js +199 -0
  71. package/dist/apps/utils/credential-manager.js.map +1 -0
  72. package/dist/apps/utils/index.d.ts +10 -0
  73. package/dist/apps/utils/index.js +54 -0
  74. package/dist/apps/utils/index.js.map +1 -0
  75. package/dist/apps/utils/input-helpers.d.ts +67 -0
  76. package/dist/apps/utils/input-helpers.js +185 -0
  77. package/dist/apps/utils/input-helpers.js.map +1 -0
  78. package/dist/apps/utils/input-resolver.d.ts +165 -0
  79. package/dist/apps/utils/input-resolver.js +477 -0
  80. package/dist/apps/utils/input-resolver.js.map +1 -0
  81. package/dist/apps/utils/oauth-manager.d.ts +196 -0
  82. package/dist/apps/utils/oauth-manager.js +429 -0
  83. package/dist/apps/utils/oauth-manager.js.map +1 -0
  84. package/dist/apps/validators/joi-validators/create.appAction.validator.d.ts +1 -2
  85. package/dist/apps/validators/joi-validators/create.appAction.validator.js +21 -2
  86. package/dist/apps/validators/joi-validators/create.appAction.validator.js.map +1 -1
  87. package/dist/apps/validators/joi-validators/update.appAction.validator.js +11 -1
  88. package/dist/apps/validators/joi-validators/update.appAction.validator.js.map +1 -1
  89. package/dist/apps/validators/joi-validators/update.appActionResponse.validator.d.ts +1 -1
  90. package/dist/apps/validators/joi-validators/update.appActionResponse.validator.js +34 -1
  91. package/dist/apps/validators/joi-validators/update.appActionResponse.validator.js.map +1 -1
  92. package/dist/bin.d.ts +26 -0
  93. package/dist/bin.js +28 -0
  94. package/dist/bin.js.map +1 -0
  95. package/dist/brokers/brokers.service.d.ts +297 -0
  96. package/dist/brokers/brokers.service.js +797 -0
  97. package/dist/brokers/brokers.service.js.map +1 -0
  98. package/dist/brokers/index.d.ts +46 -0
  99. package/dist/brokers/index.js +83 -0
  100. package/dist/brokers/index.js.map +1 -0
  101. package/dist/brokers/types/index.d.ts +316 -0
  102. package/dist/brokers/types/index.js +8 -0
  103. package/dist/brokers/types/index.js.map +1 -0
  104. package/dist/brokers/utils/broker.util.d.ts +33 -0
  105. package/dist/brokers/utils/broker.util.js +125 -0
  106. package/dist/brokers/utils/broker.util.js.map +1 -0
  107. package/dist/brokers/utils/providers/aws-sqs.service.d.ts +16 -0
  108. package/dist/brokers/utils/providers/aws-sqs.service.js +71 -0
  109. package/dist/brokers/utils/providers/aws-sqs.service.js.map +1 -0
  110. package/dist/brokers/utils/providers/google-pubsub.service.d.ts +16 -0
  111. package/dist/brokers/utils/providers/google-pubsub.service.js +43 -0
  112. package/dist/brokers/utils/providers/google-pubsub.service.js.map +1 -0
  113. package/dist/brokers/utils/providers/index.d.ts +6 -0
  114. package/dist/brokers/utils/providers/index.js +16 -0
  115. package/dist/brokers/utils/providers/index.js.map +1 -0
  116. package/dist/brokers/utils/providers/kafka.service.d.ts +23 -0
  117. package/dist/brokers/utils/providers/kafka.service.js +131 -0
  118. package/dist/brokers/utils/providers/kafka.service.js.map +1 -0
  119. package/dist/brokers/utils/providers/nats.service.d.ts +18 -0
  120. package/dist/brokers/utils/providers/nats.service.js +63 -0
  121. package/dist/brokers/utils/providers/nats.service.js.map +1 -0
  122. package/dist/brokers/utils/providers/rabbitmq.service.d.ts +15 -0
  123. package/dist/brokers/utils/providers/rabbitmq.service.js +151 -0
  124. package/dist/brokers/utils/providers/rabbitmq.service.js.map +1 -0
  125. package/dist/brokers/utils/providers/redis.service.d.ts +18 -0
  126. package/dist/brokers/utils/providers/redis.service.js +93 -0
  127. package/dist/brokers/utils/providers/redis.service.js.map +1 -0
  128. package/dist/cache/cache.manager.d.ts +229 -0
  129. package/dist/cache/cache.manager.js +460 -0
  130. package/dist/cache/cache.manager.js.map +1 -0
  131. package/dist/cache/cache.service.d.ts +186 -0
  132. package/dist/cache/cache.service.js +437 -0
  133. package/dist/cache/cache.service.js.map +1 -0
  134. package/dist/cache/index.d.ts +52 -0
  135. package/dist/cache/index.js +79 -0
  136. package/dist/cache/index.js.map +1 -0
  137. package/dist/cache/types/index.d.ts +106 -0
  138. package/dist/cache/types/index.js +6 -0
  139. package/dist/cache/types/index.js.map +1 -0
  140. package/dist/clients/pricing.client.d.ts +3 -0
  141. package/dist/clients/pricing.client.js +33 -0
  142. package/dist/clients/pricing.client.js.map +1 -0
  143. package/dist/database/actions/action-manager.d.ts +170 -0
  144. package/dist/database/actions/action-manager.js +465 -0
  145. package/dist/database/actions/action-manager.js.map +1 -0
  146. package/dist/database/actions/index.d.ts +6 -0
  147. package/dist/database/actions/index.js +13 -0
  148. package/dist/database/actions/index.js.map +1 -0
  149. package/dist/database/adapters/adapter.factory.d.ts +62 -0
  150. package/dist/database/adapters/adapter.factory.js +97 -0
  151. package/dist/database/adapters/adapter.factory.js.map +1 -0
  152. package/dist/database/adapters/base.adapter.d.ts +423 -0
  153. package/dist/database/adapters/base.adapter.js +260 -0
  154. package/dist/database/adapters/base.adapter.js.map +1 -0
  155. package/dist/database/adapters/cassandra.adapter.d.ts +92 -0
  156. package/dist/database/adapters/cassandra.adapter.js +1091 -0
  157. package/dist/database/adapters/cassandra.adapter.js.map +1 -0
  158. package/dist/database/adapters/dynamodb.adapter.d.ts +110 -0
  159. package/dist/database/adapters/dynamodb.adapter.js +1564 -0
  160. package/dist/database/adapters/dynamodb.adapter.js.map +1 -0
  161. package/dist/database/adapters/index.d.ts +11 -0
  162. package/dist/database/adapters/index.js +27 -0
  163. package/dist/database/adapters/index.js.map +1 -0
  164. package/dist/database/adapters/mariadb.adapter.d.ts +100 -0
  165. package/dist/database/adapters/mariadb.adapter.js +247 -0
  166. package/dist/database/adapters/mariadb.adapter.js.map +1 -0
  167. package/dist/database/adapters/mongodb.adapter.d.ts +121 -0
  168. package/dist/database/adapters/mongodb.adapter.js +1284 -0
  169. package/dist/database/adapters/mongodb.adapter.js.map +1 -0
  170. package/dist/database/adapters/mysql.adapter.d.ts +86 -0
  171. package/dist/database/adapters/mysql.adapter.js +1371 -0
  172. package/dist/database/adapters/mysql.adapter.js.map +1 -0
  173. package/dist/database/adapters/postgresql.adapter.d.ts +90 -0
  174. package/dist/database/adapters/postgresql.adapter.js +1487 -0
  175. package/dist/database/adapters/postgresql.adapter.js.map +1 -0
  176. package/dist/database/databases.service.d.ts +1408 -0
  177. package/dist/database/databases.service.js +2953 -0
  178. package/dist/database/databases.service.js.map +1 -0
  179. package/dist/database/index.d.ts +46 -0
  180. package/dist/database/index.js +109 -0
  181. package/dist/database/index.js.map +1 -0
  182. package/dist/database/migrations/index.d.ts +6 -0
  183. package/dist/database/migrations/index.js +12 -0
  184. package/dist/database/migrations/index.js.map +1 -0
  185. package/dist/database/migrations/migration-engine.d.ts +136 -0
  186. package/dist/database/migrations/migration-engine.js +1421 -0
  187. package/dist/database/migrations/migration-engine.js.map +1 -0
  188. package/dist/database/operators/aggregation-builder.d.ts +67 -0
  189. package/dist/database/operators/aggregation-builder.js +841 -0
  190. package/dist/database/operators/aggregation-builder.js.map +1 -0
  191. package/dist/database/operators/index.d.ts +7 -0
  192. package/dist/database/operators/index.js +15 -0
  193. package/dist/database/operators/index.js.map +1 -0
  194. package/dist/database/operators/query-builder.d.ts +69 -0
  195. package/dist/database/operators/query-builder.js +447 -0
  196. package/dist/database/operators/query-builder.js.map +1 -0
  197. package/dist/database/presave/decrypt.d.ts +25 -0
  198. package/dist/database/presave/decrypt.js +146 -0
  199. package/dist/database/presave/decrypt.js.map +1 -0
  200. package/dist/database/presave/index.d.ts +9 -0
  201. package/dist/database/presave/index.js +18 -0
  202. package/dist/database/presave/index.js.map +1 -0
  203. package/dist/database/presave/presave-processor.d.ts +148 -0
  204. package/dist/database/presave/presave-processor.js +702 -0
  205. package/dist/database/presave/presave-processor.js.map +1 -0
  206. package/dist/database/schema/index.d.ts +7 -0
  207. package/dist/database/schema/index.js +13 -0
  208. package/dist/database/schema/index.js.map +1 -0
  209. package/dist/database/schema/schema-manager.d.ts +258 -0
  210. package/dist/database/schema/schema-manager.js +638 -0
  211. package/dist/database/schema/schema-manager.js.map +1 -0
  212. package/dist/database/transactions/index.d.ts +6 -0
  213. package/dist/database/transactions/index.js +13 -0
  214. package/dist/database/transactions/index.js.map +1 -0
  215. package/dist/database/transactions/transaction-manager.d.ts +113 -0
  216. package/dist/database/transactions/transaction-manager.js +344 -0
  217. package/dist/database/transactions/transaction-manager.js.map +1 -0
  218. package/dist/database/triggers/index.d.ts +7 -0
  219. package/dist/database/triggers/index.js +14 -0
  220. package/dist/database/triggers/index.js.map +1 -0
  221. package/dist/database/triggers/trigger-processor.d.ts +239 -0
  222. package/dist/database/triggers/trigger-processor.js +1034 -0
  223. package/dist/database/triggers/trigger-processor.js.map +1 -0
  224. package/dist/database/types/action.interface.d.ts +148 -0
  225. package/dist/database/types/action.interface.js +6 -0
  226. package/dist/database/types/action.interface.js.map +1 -0
  227. package/dist/database/types/aggregation.interface.d.ts +185 -0
  228. package/dist/database/types/aggregation.interface.js +6 -0
  229. package/dist/database/types/aggregation.interface.js.map +1 -0
  230. package/dist/database/types/connection.interface.d.ts +137 -0
  231. package/dist/database/types/connection.interface.js +6 -0
  232. package/dist/database/types/connection.interface.js.map +1 -0
  233. package/dist/database/types/enums.d.ts +195 -0
  234. package/dist/database/types/enums.js +244 -0
  235. package/dist/database/types/enums.js.map +1 -0
  236. package/dist/database/types/index.d.ts +14 -0
  237. package/dist/database/types/index.js +31 -0
  238. package/dist/database/types/index.js.map +1 -0
  239. package/dist/database/types/migration.interface.d.ts +686 -0
  240. package/dist/database/types/migration.interface.js +9 -0
  241. package/dist/database/types/migration.interface.js.map +1 -0
  242. package/dist/database/types/presave.interface.d.ts +292 -0
  243. package/dist/database/types/presave.interface.js +60 -0
  244. package/dist/database/types/presave.interface.js.map +1 -0
  245. package/dist/database/types/query.interface.d.ts +205 -0
  246. package/dist/database/types/query.interface.js +6 -0
  247. package/dist/database/types/query.interface.js.map +1 -0
  248. package/dist/database/types/schema.interface.d.ts +412 -0
  249. package/dist/database/types/schema.interface.js +6 -0
  250. package/dist/database/types/schema.interface.js.map +1 -0
  251. package/dist/database/types/transaction.interface.d.ts +84 -0
  252. package/dist/database/types/transaction.interface.js +6 -0
  253. package/dist/database/types/transaction.interface.js.map +1 -0
  254. package/dist/database/types/trigger.interface.d.ts +612 -0
  255. package/dist/database/types/trigger.interface.js +121 -0
  256. package/dist/database/types/trigger.interface.js.map +1 -0
  257. package/dist/database/types/write.interface.d.ts +216 -0
  258. package/dist/database/types/write.interface.js +6 -0
  259. package/dist/database/types/write.interface.js.map +1 -0
  260. package/dist/database/utils/database-error.d.ts +96 -0
  261. package/dist/database/utils/database-error.js +221 -0
  262. package/dist/database/utils/database-error.js.map +1 -0
  263. package/dist/database/utils/index.d.ts +6 -0
  264. package/dist/database/utils/index.js +11 -0
  265. package/dist/database/utils/index.js.map +1 -0
  266. package/dist/graph/adapters/adapter.factory.d.ts +47 -0
  267. package/dist/graph/adapters/adapter.factory.js +77 -0
  268. package/dist/graph/adapters/adapter.factory.js.map +1 -0
  269. package/dist/graph/adapters/arangodb.adapter.d.ts +86 -0
  270. package/dist/graph/adapters/arangodb.adapter.js +1588 -0
  271. package/dist/graph/adapters/arangodb.adapter.js.map +1 -0
  272. package/dist/graph/adapters/base.adapter.d.ts +264 -0
  273. package/dist/graph/adapters/base.adapter.js +156 -0
  274. package/dist/graph/adapters/base.adapter.js.map +1 -0
  275. package/dist/graph/adapters/index.d.ts +11 -0
  276. package/dist/graph/adapters/index.js +21 -0
  277. package/dist/graph/adapters/index.js.map +1 -0
  278. package/dist/graph/adapters/memgraph.adapter.d.ts +110 -0
  279. package/dist/graph/adapters/memgraph.adapter.js +1452 -0
  280. package/dist/graph/adapters/memgraph.adapter.js.map +1 -0
  281. package/dist/graph/adapters/neo4j.adapter.d.ts +81 -0
  282. package/dist/graph/adapters/neo4j.adapter.js +1317 -0
  283. package/dist/graph/adapters/neo4j.adapter.js.map +1 -0
  284. package/dist/graph/adapters/neptune.adapter.d.ts +82 -0
  285. package/dist/graph/adapters/neptune.adapter.js +1369 -0
  286. package/dist/graph/adapters/neptune.adapter.js.map +1 -0
  287. package/dist/graph/graphs.service.d.ts +568 -0
  288. package/dist/graph/graphs.service.js +1948 -0
  289. package/dist/graph/graphs.service.js.map +1 -0
  290. package/dist/graph/index.d.ts +57 -0
  291. package/dist/graph/index.js +77 -0
  292. package/dist/graph/index.js.map +1 -0
  293. package/dist/graph/transactions/index.d.ts +4 -0
  294. package/dist/graph/transactions/index.js +9 -0
  295. package/dist/graph/transactions/index.js.map +1 -0
  296. package/dist/graph/transactions/transaction-manager.d.ts +61 -0
  297. package/dist/graph/transactions/transaction-manager.js +126 -0
  298. package/dist/graph/transactions/transaction-manager.js.map +1 -0
  299. package/dist/graph/types/connection.interface.d.ts +149 -0
  300. package/dist/graph/types/connection.interface.js +9 -0
  301. package/dist/graph/types/connection.interface.js.map +1 -0
  302. package/dist/graph/types/enums.d.ts +101 -0
  303. package/dist/graph/types/enums.js +114 -0
  304. package/dist/graph/types/enums.js.map +1 -0
  305. package/dist/graph/types/index.d.ts +13 -0
  306. package/dist/graph/types/index.js +20 -0
  307. package/dist/graph/types/index.js.map +1 -0
  308. package/dist/graph/types/node.interface.d.ts +248 -0
  309. package/dist/graph/types/node.interface.js +9 -0
  310. package/dist/graph/types/node.interface.js.map +1 -0
  311. package/dist/graph/types/query.interface.d.ts +175 -0
  312. package/dist/graph/types/query.interface.js +9 -0
  313. package/dist/graph/types/query.interface.js.map +1 -0
  314. package/dist/graph/types/relationship.interface.d.ts +207 -0
  315. package/dist/graph/types/relationship.interface.js +9 -0
  316. package/dist/graph/types/relationship.interface.js.map +1 -0
  317. package/dist/graph/types/schema.interface.d.ts +295 -0
  318. package/dist/graph/types/schema.interface.js +9 -0
  319. package/dist/graph/types/schema.interface.js.map +1 -0
  320. package/dist/graph/types/transaction.interface.d.ts +55 -0
  321. package/dist/graph/types/transaction.interface.js +9 -0
  322. package/dist/graph/types/transaction.interface.js.map +1 -0
  323. package/dist/graph/types/traversal.interface.d.ts +181 -0
  324. package/dist/graph/types/traversal.interface.js +9 -0
  325. package/dist/graph/types/traversal.interface.js.map +1 -0
  326. package/dist/graph/utils/graph-error.d.ts +71 -0
  327. package/dist/graph/utils/graph-error.js +142 -0
  328. package/dist/graph/utils/graph-error.js.map +1 -0
  329. package/dist/graph/utils/index.d.ts +4 -0
  330. package/dist/graph/utils/index.js +9 -0
  331. package/dist/graph/utils/index.js.map +1 -0
  332. package/dist/imports/imports.service.d.ts +3 -3
  333. package/dist/imports/imports.service.js +8 -7
  334. package/dist/imports/imports.service.js.map +1 -1
  335. package/dist/imports/imports.types.d.ts +8 -0
  336. package/dist/imports/repos/openApi.repo.d.ts +1 -1
  337. package/dist/imports/repos/openApi.repo.js +414 -47
  338. package/dist/imports/repos/openApi.repo.js.map +1 -1
  339. package/dist/imports/repos/postmanV21.repo.d.ts +1 -1
  340. package/dist/imports/repos/postmanV21.repo.js +126 -83
  341. package/dist/imports/repos/postmanV21.repo.js.map +1 -1
  342. package/dist/index.d.ts +3654 -289
  343. package/dist/index.js +5066 -669
  344. package/dist/index.js.map +1 -1
  345. package/dist/init.interface.d.ts +407 -0
  346. package/dist/init.interface.js +3 -0
  347. package/dist/init.interface.js.map +1 -0
  348. package/dist/inputs/inputs.service.d.ts +1 -1
  349. package/dist/inputs/utils/inputs.utils.create.js +1 -1
  350. package/dist/inputs/utils/inputs.utils.create.js.map +1 -1
  351. package/dist/jobs/index.d.ts +38 -0
  352. package/dist/jobs/index.js +50 -0
  353. package/dist/jobs/index.js.map +1 -0
  354. package/dist/jobs/jobs.service.d.ts +154 -0
  355. package/dist/jobs/jobs.service.js +491 -0
  356. package/dist/jobs/jobs.service.js.map +1 -0
  357. package/dist/jobs/jobs.state.d.ts +113 -0
  358. package/dist/jobs/jobs.state.js +447 -0
  359. package/dist/jobs/jobs.state.js.map +1 -0
  360. package/dist/jobs/types.d.ts +449 -0
  361. package/dist/jobs/types.js +74 -0
  362. package/dist/jobs/types.js.map +1 -0
  363. package/dist/logs/logs.service.js +6 -2
  364. package/dist/logs/logs.service.js.map +1 -1
  365. package/dist/logs/logs.types.d.ts +19 -1
  366. package/dist/logs/logs.types.js +6 -0
  367. package/dist/logs/logs.types.js.map +1 -1
  368. package/dist/models/index.d.ts +6 -0
  369. package/dist/models/index.js +11 -0
  370. package/dist/models/index.js.map +1 -0
  371. package/dist/models/models.service.d.ts +137 -0
  372. package/dist/models/models.service.js +195 -0
  373. package/dist/models/models.service.js.map +1 -0
  374. package/dist/notifications/index.d.ts +13 -0
  375. package/dist/notifications/index.js +26 -0
  376. package/dist/notifications/index.js.map +1 -0
  377. package/dist/notifications/notifications.service.d.ts +265 -0
  378. package/dist/notifications/notifications.service.js +862 -0
  379. package/dist/notifications/notifications.service.js.map +1 -0
  380. package/dist/notifications/types/index.d.ts +4 -0
  381. package/dist/notifications/types/index.js +21 -0
  382. package/dist/notifications/types/index.js.map +1 -0
  383. package/dist/notifications/types/notifications.types.d.ts +402 -0
  384. package/dist/notifications/types/notifications.types.js +49 -0
  385. package/dist/notifications/types/notifications.types.js.map +1 -0
  386. package/dist/parsers/index.d.ts +3 -0
  387. package/dist/parsers/index.js +27 -0
  388. package/dist/parsers/index.js.map +1 -0
  389. package/dist/parsers/pipelines/postman.pipelines.d.ts +15 -0
  390. package/dist/parsers/pipelines/postman.pipelines.js +103 -0
  391. package/dist/parsers/pipelines/postman.pipelines.js.map +1 -0
  392. package/dist/parsers/types/postman.types.d.ts +200 -0
  393. package/dist/parsers/types/postman.types.js +3 -0
  394. package/dist/parsers/types/postman.types.js.map +1 -0
  395. package/dist/parsers/utils/postman.utils.d.ts +12 -0
  396. package/dist/parsers/utils/postman.utils.js +116 -0
  397. package/dist/parsers/utils/postman.utils.js.map +1 -0
  398. package/dist/parsers/validators/postman-auth.validators.d.ts +10 -0
  399. package/dist/parsers/validators/postman-auth.validators.js +127 -0
  400. package/dist/parsers/validators/postman-auth.validators.js.map +1 -0
  401. package/dist/parsers/validators/postman-request.validators.d.ts +13 -0
  402. package/dist/parsers/validators/postman-request.validators.js +139 -0
  403. package/dist/parsers/validators/postman-request.validators.js.map +1 -0
  404. package/dist/parsers/validators/postman-response.validators.d.ts +13 -0
  405. package/dist/parsers/validators/postman-response.validators.js +150 -0
  406. package/dist/parsers/validators/postman-response.validators.js.map +1 -0
  407. package/dist/parsers/validators/postman-variable.validators.d.ts +14 -0
  408. package/dist/parsers/validators/postman-variable.validators.js +163 -0
  409. package/dist/parsers/validators/postman-variable.validators.js.map +1 -0
  410. package/dist/pricing/pricing.repo.js +1 -0
  411. package/dist/pricing/pricing.repo.js.map +1 -0
  412. package/dist/pricing/pricing.service.d.ts +24 -0
  413. package/dist/pricing/pricing.service.js +51 -0
  414. package/dist/pricing/pricing.service.js.map +1 -0
  415. package/dist/pricing/pricing.types.d.ts +76 -0
  416. package/dist/pricing/pricing.types.js +21 -0
  417. package/dist/pricing/pricing.types.js.map +1 -0
  418. package/dist/pricing/utils/string.utils.d.ts +1 -0
  419. package/dist/pricing/utils/string.utils.js +9 -0
  420. package/dist/pricing/utils/string.utils.js.map +1 -0
  421. package/dist/processor/services/processor.service.d.ts +117 -73
  422. package/dist/processor/services/processor.service.js +1557 -1276
  423. package/dist/processor/services/processor.service.js.map +1 -1
  424. package/dist/processor/services/request.service.d.ts +36 -0
  425. package/dist/processor/services/request.service.js +304 -0
  426. package/dist/processor/services/request.service.js.map +1 -0
  427. package/dist/processor/types/request.types.d.ts +14 -0
  428. package/dist/processor/types/request.types.js +3 -0
  429. package/dist/processor/types/request.types.js.map +1 -0
  430. package/dist/processor/utils/processor.utils.js +32 -20
  431. package/dist/processor/utils/processor.utils.js.map +1 -1
  432. package/dist/processor/utils/request.utils.d.ts +20 -0
  433. package/dist/processor/utils/request.utils.js +113 -0
  434. package/dist/processor/utils/request.utils.js.map +1 -0
  435. package/dist/products/services/products.service.d.ts +365 -75
  436. package/dist/products/services/products.service.js +2809 -414
  437. package/dist/products/services/products.service.js.map +1 -1
  438. package/dist/products/utils/string.utils.d.ts +1 -1
  439. package/dist/products/utils/string.utils.js +14 -2
  440. package/dist/products/utils/string.utils.js.map +1 -1
  441. package/dist/products/validators/index.d.ts +7 -1
  442. package/dist/products/validators/index.js +16 -1
  443. package/dist/products/validators/index.js.map +1 -1
  444. package/dist/products/validators/joi-validators/create.productAgent.validator.d.ts +3 -0
  445. package/dist/products/validators/joi-validators/create.productAgent.validator.js +266 -0
  446. package/dist/products/validators/joi-validators/create.productAgent.validator.js.map +1 -0
  447. package/dist/products/validators/joi-validators/create.productDatabase.validator.js +5 -0
  448. package/dist/products/validators/joi-validators/create.productDatabase.validator.js.map +1 -1
  449. package/dist/products/validators/joi-validators/create.productEnv.validator.js +1 -0
  450. package/dist/products/validators/joi-validators/create.productEnv.validator.js.map +1 -1
  451. package/dist/products/validators/joi-validators/create.productGraph.validator.js +89 -0
  452. package/dist/products/validators/joi-validators/create.productGraph.validator.js.map +1 -0
  453. package/dist/products/validators/joi-validators/create.productHealthcheck.validator.d.ts +4 -0
  454. package/dist/products/validators/joi-validators/create.productHealthcheck.validator.js +58 -0
  455. package/dist/products/validators/joi-validators/create.productHealthcheck.validator.js.map +1 -0
  456. package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js +81 -25
  457. package/dist/products/validators/joi-validators/create.productMessageBrokers.validator.js.map +1 -1
  458. package/dist/products/validators/joi-validators/create.productModel.validator.d.ts +3 -0
  459. package/dist/products/validators/joi-validators/create.productModel.validator.js +132 -0
  460. package/dist/products/validators/joi-validators/create.productModel.validator.js.map +1 -0
  461. package/dist/products/validators/joi-validators/create.productNotification.validator.js +133 -45
  462. package/dist/products/validators/joi-validators/create.productNotification.validator.js.map +1 -1
  463. package/dist/products/validators/joi-validators/create.productStorage.validator.js +77 -18
  464. package/dist/products/validators/joi-validators/create.productStorage.validator.js.map +1 -1
  465. package/dist/products/validators/joi-validators/create.productVector.validator.d.ts +3 -0
  466. package/dist/products/validators/joi-validators/create.productVector.validator.js +135 -0
  467. package/dist/products/validators/joi-validators/create.productVector.validator.js.map +1 -0
  468. package/dist/products/validators/joi-validators/update.dataValue.validator.js +1 -0
  469. package/dist/products/validators/joi-validators/update.dataValue.validator.js.map +1 -1
  470. package/dist/products/validators/joi-validators/update.productDatabase.validator.js +5 -0
  471. package/dist/products/validators/joi-validators/update.productDatabase.validator.js.map +1 -1
  472. package/dist/products/validators/joi-validators/update.productEnv.validator.js +3 -0
  473. package/dist/products/validators/joi-validators/update.productEnv.validator.js.map +1 -1
  474. package/dist/products/validators/joi-validators/update.productGraph.validator.js +88 -0
  475. package/dist/products/validators/joi-validators/update.productGraph.validator.js.map +1 -0
  476. package/dist/resilience/fallback.service.d.ts +140 -0
  477. package/dist/resilience/fallback.service.js +764 -0
  478. package/dist/resilience/fallback.service.js.map +1 -0
  479. package/dist/resilience/healthcheck.service.d.ts +159 -0
  480. package/dist/resilience/healthcheck.service.js +943 -0
  481. package/dist/resilience/healthcheck.service.js.map +1 -0
  482. package/dist/resilience/index.d.ts +104 -0
  483. package/dist/resilience/index.js +140 -0
  484. package/dist/resilience/index.js.map +1 -0
  485. package/dist/resilience/quota.service.d.ts +82 -0
  486. package/dist/resilience/quota.service.js +516 -0
  487. package/dist/resilience/quota.service.js.map +1 -0
  488. package/dist/resilience/resilience.service.d.ts +98 -0
  489. package/dist/resilience/resilience.service.js +560 -0
  490. package/dist/resilience/resilience.service.js.map +1 -0
  491. package/dist/resilience/types/index.d.ts +513 -0
  492. package/dist/resilience/types/index.js +29 -0
  493. package/dist/resilience/types/index.js.map +1 -0
  494. package/dist/secrets/index.d.ts +10 -0
  495. package/dist/secrets/index.js +33 -0
  496. package/dist/secrets/index.js.map +1 -0
  497. package/dist/secrets/secrets.resolver.d.ts +52 -0
  498. package/dist/secrets/secrets.resolver.js +233 -0
  499. package/dist/secrets/secrets.resolver.js.map +1 -0
  500. package/dist/secrets/secrets.service.d.ts +93 -0
  501. package/dist/secrets/secrets.service.js +258 -0
  502. package/dist/secrets/secrets.service.js.map +1 -0
  503. package/dist/secrets/secrets.types.d.ts +188 -0
  504. package/dist/secrets/secrets.types.js +87 -0
  505. package/dist/secrets/secrets.types.js.map +1 -0
  506. package/dist/sessions/index.d.ts +50 -0
  507. package/dist/sessions/index.js +93 -0
  508. package/dist/sessions/index.js.map +1 -0
  509. package/dist/sessions/sessions.helper.d.ts +68 -0
  510. package/dist/sessions/sessions.helper.js +116 -0
  511. package/dist/sessions/sessions.helper.js.map +1 -0
  512. package/dist/sessions/sessions.resolver.d.ts +157 -0
  513. package/dist/sessions/sessions.resolver.js +374 -0
  514. package/dist/sessions/sessions.resolver.js.map +1 -0
  515. package/dist/sessions/sessions.service.d.ts +178 -0
  516. package/dist/sessions/sessions.service.js +923 -0
  517. package/dist/sessions/sessions.service.js.map +1 -0
  518. package/dist/sessions/types/index.d.ts +298 -0
  519. package/dist/sessions/types/index.js +6 -0
  520. package/dist/sessions/types/index.js.map +1 -0
  521. package/dist/storage/index.d.ts +66 -0
  522. package/dist/storage/index.js +99 -0
  523. package/dist/storage/index.js.map +1 -0
  524. package/dist/storage/storage.service.d.ts +174 -0
  525. package/dist/storage/storage.service.js +757 -0
  526. package/dist/storage/storage.service.js.map +1 -0
  527. package/dist/storage/types/index.d.ts +267 -0
  528. package/dist/storage/types/index.js +6 -0
  529. package/dist/storage/types/index.js.map +1 -0
  530. package/dist/storage/utils/storage.util.d.ts +62 -0
  531. package/dist/storage/utils/storage.util.js +593 -0
  532. package/dist/storage/utils/storage.util.js.map +1 -0
  533. package/dist/test/index.d.ts +3 -0
  534. package/dist/test/index.js +11 -0
  535. package/dist/test/index.js.map +1 -0
  536. package/dist/test/test.appBuilder.d.ts +0 -1
  537. package/dist/test/test.appBuilder.js +0 -15
  538. package/dist/test/test.appBuilder.js.map +1 -1
  539. package/dist/test/test.broker.kafka.js +172 -0
  540. package/dist/test/test.broker.kafka.js.map +1 -0
  541. package/dist/test/test.broker.nats.js +193 -0
  542. package/dist/test/test.broker.nats.js.map +1 -0
  543. package/dist/test/test.broker.pubsub.js +171 -0
  544. package/dist/test/test.broker.pubsub.js.map +1 -0
  545. package/dist/test/test.broker.rabbitmq.js +164 -0
  546. package/dist/test/test.broker.rabbitmq.js.map +1 -0
  547. package/dist/test/test.broker.redis.js +168 -0
  548. package/dist/test/test.broker.redis.js.map +1 -0
  549. package/dist/test/test.broker.sqs.d.ts +1 -0
  550. package/dist/test/test.broker.sqs.js +158 -0
  551. package/dist/test/test.broker.sqs.js.map +1 -0
  552. package/dist/test/test.caches.d.ts +1 -0
  553. package/dist/test/test.caches.js +231 -0
  554. package/dist/test/test.caches.js.map +1 -0
  555. package/dist/test/test.database.d.ts +1 -0
  556. package/dist/test/test.database.dynamo.d.ts +1 -0
  557. package/dist/test/test.database.dynamo.js +265 -0
  558. package/dist/test/test.database.dynamo.js.map +1 -0
  559. package/dist/test/test.database.js +140 -0
  560. package/dist/test/test.database.js.map +1 -0
  561. package/dist/test/test.database.mongo.d.ts +1 -0
  562. package/dist/test/test.database.mongo.js +371 -0
  563. package/dist/test/test.database.mongo.js.map +1 -0
  564. package/dist/test/test.database.mysql.d.ts +1 -0
  565. package/dist/test/test.database.mysql.js +415 -0
  566. package/dist/test/test.database.mysql.js.map +1 -0
  567. package/dist/test/test.database.postgres.d.ts +1 -0
  568. package/dist/test/test.database.postgres.js +412 -0
  569. package/dist/test/test.database.postgres.js.map +1 -0
  570. package/dist/test/test.email.brevo.d.ts +1 -0
  571. package/dist/test/test.email.brevo.js +326 -0
  572. package/dist/test/test.email.brevo.js.map +1 -0
  573. package/dist/test/test.email.mailgun.d.ts +1 -0
  574. package/dist/test/test.email.mailgun.js +352 -0
  575. package/dist/test/test.email.mailgun.js.map +1 -0
  576. package/dist/test/test.email.postmark.d.ts +1 -0
  577. package/dist/test/test.email.postmark.js +316 -0
  578. package/dist/test/test.email.postmark.js.map +1 -0
  579. package/dist/test/test.email.sendgrid.d.ts +1 -0
  580. package/dist/test/test.email.sendgrid.js +365 -0
  581. package/dist/test/test.email.sendgrid.js.map +1 -0
  582. package/dist/test/test.email.smtp.d.ts +1 -0
  583. package/dist/test/test.email.smtp.js +323 -0
  584. package/dist/test/test.email.smtp.js.map +1 -0
  585. package/dist/test/test.graph.arangodb.d.ts +1 -0
  586. package/dist/test/test.graph.arangodb.js +358 -0
  587. package/dist/test/test.graph.arangodb.js.map +1 -0
  588. package/dist/test/test.graph.memgraph.d.ts +1 -0
  589. package/dist/test/test.graph.memgraph.js +320 -0
  590. package/dist/test/test.graph.memgraph.js.map +1 -0
  591. package/dist/test/test.graph.neo4j.d.ts +1 -0
  592. package/dist/test/test.graph.neo4j.js +218 -0
  593. package/dist/test/test.graph.neo4j.js.map +1 -0
  594. package/dist/test/test.graph.neptune.d.ts +1 -0
  595. package/dist/test/test.graph.neptune.js +331 -0
  596. package/dist/test/test.graph.neptune.js.map +1 -0
  597. package/dist/test/test.health.js +1 -0
  598. package/dist/test/test.health.js.map +1 -0
  599. package/dist/test/test.import.d.ts +0 -1
  600. package/dist/test/test.import.js +0 -1459
  601. package/dist/test/test.import.js.map +1 -1
  602. package/dist/test/test.import.openapi.d.ts +0 -1
  603. package/dist/test/test.import.openapi.js +0 -75
  604. package/dist/test/test.import.openapi.js.map +1 -1
  605. package/dist/test/test.imports.js +14 -55
  606. package/dist/test/test.imports.js.map +1 -1
  607. package/dist/test/test.logs.d.ts +0 -1
  608. package/dist/test/test.logs.js +0 -17
  609. package/dist/test/test.logs.js.map +1 -1
  610. package/dist/test/test.notifications.d.ts +1 -0
  611. package/dist/test/test.notifications.js +198 -0
  612. package/dist/test/test.notifications.js.map +1 -0
  613. package/dist/test/test.notifiers.js +1 -0
  614. package/dist/test/test.notifiers.js.map +1 -0
  615. package/dist/test/test.processor.d.ts +0 -1
  616. package/dist/test/test.processor.js +0 -122
  617. package/dist/test/test.processor.js.map +1 -1
  618. package/dist/test/test.productBuilder.d.ts +0 -1
  619. package/dist/test/test.productBuilder.js +0 -660
  620. package/dist/test/test.productBuilder.js.map +1 -1
  621. package/dist/test/test.products.js +1 -0
  622. package/dist/test/test.products.js.map +1 -0
  623. package/dist/test/test.push.expo.d.ts +1 -0
  624. package/dist/test/test.push.expo.js +442 -0
  625. package/dist/test/test.push.expo.js.map +1 -0
  626. package/dist/test/test.push.firebase.d.ts +1 -0
  627. package/dist/test/test.push.firebase.js +409 -0
  628. package/dist/test/test.push.firebase.js.map +1 -0
  629. package/dist/test/test.session.d.ts +1 -0
  630. package/dist/test/test.session.js +299 -0
  631. package/dist/test/test.session.js.map +1 -0
  632. package/dist/test/test.sms.nexmo.d.ts +1 -0
  633. package/dist/test/test.sms.nexmo.js +278 -0
  634. package/dist/test/test.sms.nexmo.js.map +1 -0
  635. package/dist/test/test.sms.twilio.d.ts +1 -0
  636. package/dist/test/test.sms.twilio.js +275 -0
  637. package/dist/test/test.sms.twilio.js.map +1 -0
  638. package/dist/test/test.storage.d.ts +1 -0
  639. package/dist/test/test.storage.js +202 -0
  640. package/dist/test/test.storage.js.map +1 -0
  641. package/dist/test/test.triggers.d.ts +1 -0
  642. package/dist/test/test.triggers.js +314 -0
  643. package/dist/test/test.triggers.js.map +1 -0
  644. package/dist/test/test.vector.pinecone.d.ts +1 -0
  645. package/dist/test/test.vector.pinecone.js +238 -0
  646. package/dist/test/test.vector.pinecone.js.map +1 -0
  647. package/dist/test/test.vector.qdrant.d.ts +1 -0
  648. package/dist/test/test.vector.qdrant.js +307 -0
  649. package/dist/test/test.vector.qdrant.js.map +1 -0
  650. package/dist/test/test.vector.weaviate.d.ts +1 -0
  651. package/dist/test/test.vector.weaviate.js +325 -0
  652. package/dist/test/test.vector.weaviate.js.map +1 -0
  653. package/dist/types/appBuilder.types.d.ts +9 -2
  654. package/dist/types/enums.d.ts +11 -1
  655. package/dist/types/enums.js +10 -0
  656. package/dist/types/enums.js.map +1 -1
  657. package/dist/types/index.types.d.ts +4 -7
  658. package/dist/types/index.types.js +0 -1
  659. package/dist/types/index.types.js.map +1 -1
  660. package/dist/types/inputs.types.js +1 -1
  661. package/dist/types/inputs.types.js.map +1 -1
  662. package/dist/types/pricing.types.d.ts +4 -0
  663. package/dist/types/pricing.types.js +3 -0
  664. package/dist/types/pricing.types.js.map +1 -0
  665. package/dist/types/processor.types.d.ts +214 -33
  666. package/dist/types/processor.types.js +9 -1
  667. package/dist/types/processor.types.js.map +1 -1
  668. package/dist/types/productsBuilder.types.d.ts +978 -23
  669. package/dist/types/productsBuilder.types.js +210 -3
  670. package/dist/types/productsBuilder.types.js.map +1 -1
  671. package/dist/types/request-tracker.interface.js +1 -0
  672. package/dist/types/request-tracker.interface.js.map +1 -0
  673. package/dist/types/requests.types.d.ts +2 -0
  674. package/dist/utils/constants.d.ts +1 -0
  675. package/dist/utils/constants.js +5 -0
  676. package/dist/utils/constants.js.map +1 -0
  677. package/dist/utils/index.d.ts +0 -2
  678. package/dist/utils/index.js +24 -52
  679. package/dist/utils/index.js.map +1 -1
  680. package/dist/vector/actions/action-manager.d.ts +140 -0
  681. package/dist/vector/actions/action-manager.js +356 -0
  682. package/dist/vector/actions/action-manager.js.map +1 -0
  683. package/dist/vector/adapters/base.adapter.d.ts +169 -0
  684. package/dist/vector/adapters/base.adapter.js +218 -0
  685. package/dist/vector/adapters/base.adapter.js.map +1 -0
  686. package/dist/vector/adapters/index.d.ts +10 -0
  687. package/dist/vector/adapters/index.js +19 -0
  688. package/dist/vector/adapters/index.js.map +1 -0
  689. package/dist/vector/adapters/memory.adapter.d.ts +85 -0
  690. package/dist/vector/adapters/memory.adapter.js +505 -0
  691. package/dist/vector/adapters/memory.adapter.js.map +1 -0
  692. package/dist/vector/adapters/pinecone.adapter.d.ts +52 -0
  693. package/dist/vector/adapters/pinecone.adapter.js +433 -0
  694. package/dist/vector/adapters/pinecone.adapter.js.map +1 -0
  695. package/dist/vector/adapters/qdrant.adapter.d.ts +56 -0
  696. package/dist/vector/adapters/qdrant.adapter.js +442 -0
  697. package/dist/vector/adapters/qdrant.adapter.js.map +1 -0
  698. package/dist/vector/adapters/weaviate.adapter.d.ts +68 -0
  699. package/dist/vector/adapters/weaviate.adapter.js +645 -0
  700. package/dist/vector/adapters/weaviate.adapter.js.map +1 -0
  701. package/dist/vector/index.d.ts +36 -0
  702. package/dist/vector/index.js +70 -0
  703. package/dist/vector/index.js.map +1 -0
  704. package/dist/vector/types/action.interface.d.ts +195 -0
  705. package/dist/vector/types/action.interface.js +100 -0
  706. package/dist/vector/types/action.interface.js.map +1 -0
  707. package/dist/vector/types/connection.interface.d.ts +151 -0
  708. package/dist/vector/types/connection.interface.js +8 -0
  709. package/dist/vector/types/connection.interface.js.map +1 -0
  710. package/dist/vector/types/embedding.interface.d.ts +144 -0
  711. package/dist/vector/types/embedding.interface.js +8 -0
  712. package/dist/vector/types/embedding.interface.js.map +1 -0
  713. package/dist/vector/types/enums.d.ts +104 -0
  714. package/dist/vector/types/enums.js +113 -0
  715. package/dist/vector/types/enums.js.map +1 -0
  716. package/dist/vector/types/index.d.ts +11 -0
  717. package/dist/vector/types/index.js +23 -0
  718. package/dist/vector/types/index.js.map +1 -0
  719. package/dist/vector/types/vector.interface.d.ts +315 -0
  720. package/dist/vector/types/vector.interface.js +8 -0
  721. package/dist/vector/types/vector.interface.js.map +1 -0
  722. package/dist/vector/utils/index.d.ts +6 -0
  723. package/dist/vector/utils/index.js +11 -0
  724. package/dist/vector/utils/index.js.map +1 -0
  725. package/dist/vector/utils/vector-error.d.ts +69 -0
  726. package/dist/vector/utils/vector-error.js +116 -0
  727. package/dist/vector/utils/vector-error.js.map +1 -0
  728. package/dist/vector/vector-database.service.d.ts +474 -0
  729. package/dist/vector/vector-database.service.js +850 -0
  730. package/dist/vector/vector-database.service.js.map +1 -0
  731. package/dist/vector/vector.service.d.ts +283 -0
  732. package/dist/vector/vector.service.js +544 -0
  733. package/dist/vector/vector.service.js.map +1 -0
  734. package/dist/warehouse/executor/index.d.ts +5 -0
  735. package/dist/warehouse/executor/index.js +12 -0
  736. package/dist/warehouse/executor/index.js.map +1 -0
  737. package/dist/warehouse/executor/joins/index.d.ts +5 -0
  738. package/dist/warehouse/executor/joins/index.js +11 -0
  739. package/dist/warehouse/executor/joins/index.js.map +1 -0
  740. package/dist/warehouse/executor/joins/join-executor.d.ts +101 -0
  741. package/dist/warehouse/executor/joins/join-executor.js +493 -0
  742. package/dist/warehouse/executor/joins/join-executor.js.map +1 -0
  743. package/dist/warehouse/executor/joins/semantic-join.d.ts +64 -0
  744. package/dist/warehouse/executor/joins/semantic-join.js +241 -0
  745. package/dist/warehouse/executor/joins/semantic-join.js.map +1 -0
  746. package/dist/warehouse/executor/single-source-executor.d.ts +155 -0
  747. package/dist/warehouse/executor/single-source-executor.js +573 -0
  748. package/dist/warehouse/executor/single-source-executor.js.map +1 -0
  749. package/dist/warehouse/index.d.ts +79 -0
  750. package/dist/warehouse/index.js +111 -0
  751. package/dist/warehouse/index.js.map +1 -0
  752. package/dist/warehouse/parser/index.d.ts +4 -0
  753. package/dist/warehouse/parser/index.js +10 -0
  754. package/dist/warehouse/parser/index.js.map +1 -0
  755. package/dist/warehouse/parser/query-parser.d.ts +181 -0
  756. package/dist/warehouse/parser/query-parser.js +415 -0
  757. package/dist/warehouse/parser/query-parser.js.map +1 -0
  758. package/dist/warehouse/registry/data-source-registry.d.ts +207 -0
  759. package/dist/warehouse/registry/data-source-registry.js +396 -0
  760. package/dist/warehouse/registry/data-source-registry.js.map +1 -0
  761. package/dist/warehouse/registry/index.d.ts +4 -0
  762. package/dist/warehouse/registry/index.js +9 -0
  763. package/dist/warehouse/registry/index.js.map +1 -0
  764. package/dist/warehouse/transactions/index.d.ts +4 -0
  765. package/dist/warehouse/transactions/index.js +9 -0
  766. package/dist/warehouse/transactions/index.js.map +1 -0
  767. package/dist/warehouse/transactions/saga-orchestrator.d.ts +92 -0
  768. package/dist/warehouse/transactions/saga-orchestrator.js +383 -0
  769. package/dist/warehouse/transactions/saga-orchestrator.js.map +1 -0
  770. package/dist/warehouse/types/index.d.ts +9 -0
  771. package/dist/warehouse/types/index.js +33 -0
  772. package/dist/warehouse/types/index.js.map +1 -0
  773. package/dist/warehouse/types/join.interface.d.ts +225 -0
  774. package/dist/warehouse/types/join.interface.js +87 -0
  775. package/dist/warehouse/types/join.interface.js.map +1 -0
  776. package/dist/warehouse/types/query.interface.d.ts +232 -0
  777. package/dist/warehouse/types/query.interface.js +9 -0
  778. package/dist/warehouse/types/query.interface.js.map +1 -0
  779. package/dist/warehouse/types/transaction.interface.d.ts +236 -0
  780. package/dist/warehouse/types/transaction.interface.js +74 -0
  781. package/dist/warehouse/types/transaction.interface.js.map +1 -0
  782. package/dist/warehouse/types/where.interface.d.ts +208 -0
  783. package/dist/warehouse/types/where.interface.js +89 -0
  784. package/dist/warehouse/types/where.interface.js.map +1 -0
  785. package/dist/warehouse/warehouse.service.d.ts +200 -0
  786. package/dist/warehouse/warehouse.service.js +470 -0
  787. package/dist/warehouse/warehouse.service.js.map +1 -0
  788. package/dist/workflows/index.d.ts +30 -0
  789. package/dist/workflows/index.js +64 -0
  790. package/dist/workflows/index.js.map +1 -0
  791. package/dist/workflows/types/index.d.ts +6 -0
  792. package/dist/workflows/types/index.js +23 -0
  793. package/dist/workflows/types/index.js.map +1 -0
  794. package/dist/workflows/types/workflows.types.d.ts +1037 -0
  795. package/dist/workflows/types/workflows.types.js +13 -0
  796. package/dist/workflows/types/workflows.types.js.map +1 -0
  797. package/dist/workflows/workflow-builder.d.ts +70 -0
  798. package/dist/workflows/workflow-builder.js +338 -0
  799. package/dist/workflows/workflow-builder.js.map +1 -0
  800. package/dist/workflows/workflow-executor.d.ts +208 -0
  801. package/dist/workflows/workflow-executor.js +1194 -0
  802. package/dist/workflows/workflow-executor.js.map +1 -0
  803. package/dist/workflows/workflows.service.d.ts +410 -0
  804. package/dist/workflows/workflows.service.js +1724 -0
  805. package/dist/workflows/workflows.service.js.map +1 -0
  806. package/package.json +65 -12
  807. package/dist/actions/actions.repo.js +0 -13
  808. package/dist/actions/actions.repo.js.map +0 -1
  809. package/dist/actions/actions.service.js +0 -24
  810. package/dist/actions/actions.service.js.map +0 -1
  811. package/dist/actions/utils/actions.util.read.js +0 -427
  812. package/dist/actions/utils/actions.util.read.js.map +0 -1
  813. package/dist/api/services/integrationsApi.service.d.ts +0 -18
  814. package/dist/api/services/integrationsApi.service.js +0 -80
  815. package/dist/api/services/integrationsApi.service.js.map +0 -1
  816. package/dist/appBuilder/services/app.service.d.ts +0 -111
  817. package/dist/appBuilder/services/app.service.js +0 -737
  818. package/dist/appBuilder/services/app.service.js.map +0 -1
  819. package/dist/appBuilder/services/appBuilder.service.d.ts +0 -111
  820. package/dist/appBuilder/services/appBuilder.service.js +0 -662
  821. package/dist/appBuilder/services/appBuilder.service.js.map +0 -1
  822. package/dist/appBuilder/utils/objects.utils.d.ts +0 -3
  823. package/dist/appBuilder/utils/objects.utils.js +0 -9
  824. package/dist/appBuilder/utils/objects.utils.js.map +0 -1
  825. package/dist/appBuilder/utils/string.utils.d.ts +0 -2
  826. package/dist/appBuilder/utils/string.utils.js +0 -57
  827. package/dist/appBuilder/utils/string.utils.js.map +0 -1
  828. package/dist/appBuilder/validators/index.d.ts +0 -19
  829. package/dist/appBuilder/validators/index.js +0 -40
  830. package/dist/appBuilder/validators/index.js.map +0 -1
  831. package/dist/appBuilder/validators/joi-validators/create.app.validator.js +0 -10
  832. package/dist/appBuilder/validators/joi-validators/create.app.validator.js.map +0 -1
  833. package/dist/appBuilder/validators/joi-validators/create.appAction.validator.d.ts +0 -4
  834. package/dist/appBuilder/validators/joi-validators/create.appAction.validator.js +0 -20
  835. package/dist/appBuilder/validators/joi-validators/create.appAction.validator.js.map +0 -1
  836. package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.d.ts +0 -7
  837. package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.js +0 -44
  838. package/dist/appBuilder/validators/joi-validators/create.appActionResponse.validator.js.map +0 -1
  839. package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.d.ts +0 -3
  840. package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.js +0 -31
  841. package/dist/appBuilder/validators/joi-validators/create.appAuth.validator.js.map +0 -1
  842. package/dist/appBuilder/validators/joi-validators/create.appBody.validators.d.ts +0 -4
  843. package/dist/appBuilder/validators/joi-validators/create.appBody.validators.js +0 -11
  844. package/dist/appBuilder/validators/joi-validators/create.appBody.validators.js.map +0 -1
  845. package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.d.ts +0 -4
  846. package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.js +0 -12
  847. package/dist/appBuilder/validators/joi-validators/create.appConstants.validator.js.map +0 -1
  848. package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.d.ts +0 -4
  849. package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.js +0 -17
  850. package/dist/appBuilder/validators/joi-validators/create.appEnv.validator.js.map +0 -1
  851. package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.d.ts +0 -5
  852. package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.js +0 -30
  853. package/dist/appBuilder/validators/joi-validators/create.appEvent.validator.js.map +0 -1
  854. package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.d.ts +0 -4
  855. package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.js +0 -14
  856. package/dist/appBuilder/validators/joi-validators/create.appVariable.validator.js.map +0 -1
  857. package/dist/appBuilder/validators/joi-validators/sample.validator.d.ts +0 -5
  858. package/dist/appBuilder/validators/joi-validators/sample.validator.js +0 -26
  859. package/dist/appBuilder/validators/joi-validators/sample.validator.js.map +0 -1
  860. package/dist/appBuilder/validators/joi-validators/update.app.validator.d.ts +0 -4
  861. package/dist/appBuilder/validators/joi-validators/update.app.validator.js +0 -34
  862. package/dist/appBuilder/validators/joi-validators/update.app.validator.js.map +0 -1
  863. package/dist/appBuilder/validators/joi-validators/update.appAction.validator.d.ts +0 -4
  864. package/dist/appBuilder/validators/joi-validators/update.appAction.validator.js +0 -23
  865. package/dist/appBuilder/validators/joi-validators/update.appAction.validator.js.map +0 -1
  866. package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.d.ts +0 -3
  867. package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.js +0 -21
  868. package/dist/appBuilder/validators/joi-validators/update.appActionResponse.validator.js.map +0 -1
  869. package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.d.ts +0 -4
  870. package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.js +0 -19
  871. package/dist/appBuilder/validators/joi-validators/update.appAuth.validator.js.map +0 -1
  872. package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.d.ts +0 -4
  873. package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.js +0 -12
  874. package/dist/appBuilder/validators/joi-validators/update.appConstants.validator.js.map +0 -1
  875. package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.d.ts +0 -4
  876. package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.js +0 -17
  877. package/dist/appBuilder/validators/joi-validators/update.appEnv.validator.js.map +0 -1
  878. package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.d.ts +0 -4
  879. package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.js +0 -16
  880. package/dist/appBuilder/validators/joi-validators/update.appEvent.validator.js.map +0 -1
  881. package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.d.ts +0 -4
  882. package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.js +0 -14
  883. package/dist/appBuilder/validators/joi-validators/update.appVariables.validator.js.map +0 -1
  884. package/dist/appBuilder/validators/joi-validators/update.validation.entityData.validator.js +0 -27
  885. package/dist/appBuilder/validators/joi-validators/update.validation.entityData.validator.js.map +0 -1
  886. package/dist/apps/validators/joi-validators/create.appEvent.validator.d.ts +0 -5
  887. package/dist/apps/validators/joi-validators/create.appEvent.validator.js +0 -30
  888. package/dist/apps/validators/joi-validators/create.appEvent.validator.js.map +0 -1
  889. package/dist/apps/validators/joi-validators/update.appEvent.validator.d.ts +0 -4
  890. package/dist/apps/validators/joi-validators/update.appEvent.validator.js +0 -16
  891. package/dist/apps/validators/joi-validators/update.appEvent.validator.js.map +0 -1
  892. package/dist/clients/integrations.client.d.ts +0 -2
  893. package/dist/clients/integrations.client.js +0 -26
  894. package/dist/clients/integrations.client.js.map +0 -1
  895. package/dist/integrationsBuilder/services/integration.service.d.ts +0 -138
  896. package/dist/integrationsBuilder/services/integration.service.js +0 -1148
  897. package/dist/integrationsBuilder/services/integration.service.js.map +0 -1
  898. package/dist/integrationsBuilder/services/integrationBuilder.service.d.ts +0 -130
  899. package/dist/integrationsBuilder/services/integrationBuilder.service.js +0 -1017
  900. package/dist/integrationsBuilder/services/integrationBuilder.service.js.map +0 -1
  901. package/dist/integrationsBuilder/utils/objects.utils.d.ts +0 -2
  902. package/dist/integrationsBuilder/utils/objects.utils.js +0 -48
  903. package/dist/integrationsBuilder/utils/objects.utils.js.map +0 -1
  904. package/dist/integrationsBuilder/utils/string.utils.d.ts +0 -1
  905. package/dist/integrationsBuilder/utils/string.utils.js +0 -9
  906. package/dist/integrationsBuilder/utils/string.utils.js.map +0 -1
  907. package/dist/integrationsBuilder/validators/index.d.ts +0 -18
  908. package/dist/integrationsBuilder/validators/index.js +0 -38
  909. package/dist/integrationsBuilder/validators/index.js.map +0 -1
  910. package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.d.ts +0 -3
  911. package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.js +0 -10
  912. package/dist/integrationsBuilder/validators/joi-validators/create.integration.validator.js.map +0 -1
  913. package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.d.ts +0 -4
  914. package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.js +0 -26
  915. package/dist/integrationsBuilder/validators/joi-validators/create.integrationApp.validator.js.map +0 -1
  916. package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.d.ts +0 -3
  917. package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.js +0 -8
  918. package/dist/integrationsBuilder/validators/joi-validators/create.integrationCache.validator.js.map +0 -1
  919. package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.d.ts +0 -3
  920. package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.js +0 -8
  921. package/dist/integrationsBuilder/validators/joi-validators/create.integrationDatabase.validator.js.map +0 -1
  922. package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.d.ts +0 -3
  923. package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.js +0 -10
  924. package/dist/integrationsBuilder/validators/joi-validators/create.integrationEnv.validator.js.map +0 -1
  925. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.d.ts +0 -3
  926. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.js +0 -60
  927. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFeature.validator.js.map +0 -1
  928. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.d.ts +0 -3
  929. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.js +0 -8
  930. package/dist/integrationsBuilder/validators/joi-validators/create.integrationFunction.validator.js.map +0 -1
  931. package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.d.ts +0 -3
  932. package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.js +0 -8
  933. package/dist/integrationsBuilder/validators/joi-validators/create.integrationJob.validator.js.map +0 -1
  934. package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.d.ts +0 -3
  935. package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.js +0 -8
  936. package/dist/integrationsBuilder/validators/joi-validators/create.integrationNotification.validator.js.map +0 -1
  937. package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.d.ts +0 -3
  938. package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.js +0 -9
  939. package/dist/integrationsBuilder/validators/joi-validators/update.integrationApp.validator.js.map +0 -1
  940. package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.d.ts +0 -3
  941. package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.js +0 -8
  942. package/dist/integrationsBuilder/validators/joi-validators/update.integrationCache.validator.js.map +0 -1
  943. package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.d.ts +0 -3
  944. package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.js +0 -8
  945. package/dist/integrationsBuilder/validators/joi-validators/update.integrationDatabase.validator.js.map +0 -1
  946. package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.d.ts +0 -3
  947. package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.js +0 -8
  948. package/dist/integrationsBuilder/validators/joi-validators/update.integrationEnv.validator.js.map +0 -1
  949. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.d.ts +0 -3
  950. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.js +0 -8
  951. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFeature.validator.js.map +0 -1
  952. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.d.ts +0 -3
  953. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.js +0 -8
  954. package/dist/integrationsBuilder/validators/joi-validators/update.integrationFunction.validator copy.js.map +0 -1
  955. package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.d.ts +0 -3
  956. package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.js +0 -8
  957. package/dist/integrationsBuilder/validators/joi-validators/update.integrationJob.validator.js.map +0 -1
  958. package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.d.ts +0 -3
  959. package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.js +0 -8
  960. package/dist/integrationsBuilder/validators/joi-validators/update.integrationNotification.validator.js.map +0 -1
  961. package/dist/postman.d.ts +0 -1
  962. package/dist/postman.js +0 -21674
  963. package/dist/postman.js.map +0 -1
  964. package/dist/processor/utils/mongo.util.js +0 -152
  965. package/dist/processor/utils/mongo.util.js.map +0 -1
  966. package/dist/processor/utils/postgres.util.d.ts +0 -14
  967. package/dist/processor/utils/postgres.util.js +0 -83
  968. package/dist/processor/utils/postgres.util.js.map +0 -1
  969. package/dist/products/validators/joi-validators/create.product.validator.d.ts +0 -3
  970. package/dist/products/validators/joi-validators/create.product.validator.js +0 -10
  971. package/dist/products/validators/joi-validators/create.product.validator.js.map +0 -1
  972. package/dist/test.appBuilder.js +0 -14
  973. package/dist/test.appBuilder.js.map +0 -1
  974. package/dist/test.import.js +0 -24
  975. package/dist/test.import.js.map +0 -1
  976. package/dist/test.imports.js +0 -28
  977. package/dist/test.imports.js.map +0 -1
  978. package/dist/test.integrationBuilder.js +0 -276
  979. package/dist/test.integrationBuilder.js.map +0 -1
  980. package/dist/test.processor.js +0 -23
  981. package/dist/test.processor.js.map +0 -1
  982. package/dist/test.utils.js +0 -25
  983. package/dist/test.utils.js.map +0 -1
  984. package/dist/types/integrationsBuilder.types.d.ts +0 -276
  985. package/dist/types/integrationsBuilder.types.js +0 -51
  986. package/dist/types/integrationsBuilder.types.js.map +0 -1
  987. /package/dist/{actions/actions.repo.d.ts → pricing/pricing.repo.d.ts} +0 -0
  988. /package/dist/{appBuilder/validators/joi-validators/create.app.validator.d.ts → products/validators/joi-validators/create.productGraph.validator.d.ts} +0 -0
  989. /package/dist/{appBuilder/validators/joi-validators/update.validation.entityData.validator.d.ts → products/validators/joi-validators/update.productGraph.validator.d.ts} +0 -0
  990. /package/dist/{test.appBuilder.d.ts → test/test.broker.kafka.d.ts} +0 -0
  991. /package/dist/{test.imports.d.ts → test/test.broker.nats.d.ts} +0 -0
  992. /package/dist/{test.integrationBuilder.d.ts → test/test.broker.pubsub.d.ts} +0 -0
  993. /package/dist/{test.processor.d.ts → test/test.broker.rabbitmq.d.ts} +0 -0
  994. /package/dist/{test.utils.d.ts → test/test.broker.redis.d.ts} +0 -0
  995. /package/dist/{actions/actions.service.d.ts → test/test.health.d.ts} +0 -0
  996. /package/dist/{actions/utils/actions.util.read.d.ts → test/test.notifiers.d.ts} +0 -0
  997. /package/dist/{processor/utils/mongo.util.d.ts → test/test.products.d.ts} +0 -0
  998. /package/dist/{test.import.d.ts → types/request-tracker.interface.d.ts} +0 -0
@@ -0,0 +1,1564 @@
1
+ "use strict";
2
+ /**
3
+ * DynamoDB Adapter
4
+ *
5
+ * Database adapter for AWS DynamoDB using the '@aws-sdk/client-dynamodb' and
6
+ * '@aws-sdk/lib-dynamodb' libraries.
7
+ * Implements all methods from BaseAdapter with DynamoDB-specific operations.
8
+ *
9
+ * Note: DynamoDB is a NoSQL key-value store with different concepts:
10
+ * - Tables have a partition key (and optional sort key)
11
+ * - No traditional transactions (uses TransactWriteItems/TransactGetItems)
12
+ * - No savepoints
13
+ * - Different query patterns than SQL databases
14
+ */
15
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ var desc = Object.getOwnPropertyDescriptor(m, k);
18
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
19
+ desc = { enumerable: true, get: function() { return m[k]; } };
20
+ }
21
+ Object.defineProperty(o, k2, desc);
22
+ }) : (function(o, m, k, k2) {
23
+ if (k2 === undefined) k2 = k;
24
+ o[k2] = m[k];
25
+ }));
26
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
27
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
28
+ }) : function(o, v) {
29
+ o["default"] = v;
30
+ });
31
+ var __importStar = (this && this.__importStar) || (function () {
32
+ var ownKeys = function(o) {
33
+ ownKeys = Object.getOwnPropertyNames || function (o) {
34
+ var ar = [];
35
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
36
+ return ar;
37
+ };
38
+ return ownKeys(o);
39
+ };
40
+ return function (mod) {
41
+ if (mod && mod.__esModule) return mod;
42
+ var result = {};
43
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
44
+ __setModuleDefault(result, mod);
45
+ return result;
46
+ };
47
+ })();
48
+ Object.defineProperty(exports, "__esModule", { value: true });
49
+ exports.DynamoDBAdapter = void 0;
50
+ const base_adapter_1 = require("./base.adapter");
51
+ const enums_1 = require("../types/enums");
52
+ const database_error_1 = require("../utils/database-error");
53
+ /**
54
+ * DynamoDB database adapter
55
+ * Provides DynamoDB-specific implementations for all database operations
56
+ */
57
+ class DynamoDBAdapter extends base_adapter_1.BaseAdapter {
58
+ constructor() {
59
+ super(...arguments);
60
+ this.databaseType = enums_1.DatabaseType.DYNAMODB;
61
+ this.dynamoClient = null;
62
+ this.docClient = null;
63
+ this.region = '';
64
+ }
65
+ // ==================== CONNECTION METHODS ====================
66
+ async connect(options) {
67
+ console.log(`[DynamoDBAdapter] connect() called`);
68
+ console.log(`[DynamoDBAdapter] Options:`, JSON.stringify(Object.assign(Object.assign({}, options), { connectionUrl: '***REDACTED***' }), null, 2));
69
+ try {
70
+ console.log(`[DynamoDBAdapter] Importing AWS SDK libraries...`);
71
+ // Dynamic import of AWS SDK
72
+ const { DynamoDBClient } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
73
+ const { DynamoDBDocumentClient } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
74
+ console.log(`[DynamoDBAdapter] AWS SDK libraries imported successfully`);
75
+ this.connectionUrl = options.connectionUrl;
76
+ console.log(`[DynamoDBAdapter] Connection URL stored`);
77
+ // Parse connection URL: dynamodb://region/access-key/secret-key
78
+ // Or: dynamodb://region (uses default credentials)
79
+ console.log(`[DynamoDBAdapter] Parsing connection URL...`);
80
+ const url = new URL(options.connectionUrl);
81
+ this.region = url.hostname || 'us-east-1';
82
+ console.log(`[DynamoDBAdapter] Region: ${this.region}`);
83
+ const clientConfig = {
84
+ region: this.region,
85
+ };
86
+ // If credentials are provided in the URL
87
+ if (url.pathname && url.pathname !== '/') {
88
+ const parts = url.pathname.slice(1).split('/');
89
+ if (parts.length >= 2) {
90
+ clientConfig.credentials = {
91
+ accessKeyId: parts[0],
92
+ secretAccessKey: parts[1],
93
+ };
94
+ console.log(`[DynamoDBAdapter] Credentials found in URL`);
95
+ }
96
+ }
97
+ else {
98
+ console.log(`[DynamoDBAdapter] Using default credentials from environment`);
99
+ }
100
+ // Custom endpoint for local DynamoDB
101
+ if (url.port) {
102
+ clientConfig.endpoint = `http://${url.hostname}:${url.port}`;
103
+ console.log(`[DynamoDBAdapter] Custom endpoint: ${clientConfig.endpoint}`);
104
+ }
105
+ console.log(`[DynamoDBAdapter] Creating DynamoDBClient...`);
106
+ this.dynamoClient = new DynamoDBClient(clientConfig);
107
+ console.log(`[DynamoDBAdapter] DynamoDBClient created`);
108
+ console.log(`[DynamoDBAdapter] Creating DynamoDBDocumentClient...`);
109
+ this.docClient = DynamoDBDocumentClient.from(this.dynamoClient, {
110
+ marshallOptions: {
111
+ removeUndefinedValues: true,
112
+ convertEmptyValues: true,
113
+ },
114
+ });
115
+ console.log(`[DynamoDBAdapter] DynamoDBDocumentClient created`);
116
+ console.log(`[DynamoDBAdapter] Testing connection by listing tables...`);
117
+ // Test connection by listing tables
118
+ const { ListTablesCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
119
+ await this.dynamoClient.send(new ListTablesCommand({ Limit: 1 }));
120
+ console.log(`[DynamoDBAdapter] Connection test successful`);
121
+ this.client = this.docClient;
122
+ this.connected = true;
123
+ console.log(`[DynamoDBAdapter] Connection marked as connected`);
124
+ return {
125
+ connected: true,
126
+ version: `DynamoDB (${this.region})`,
127
+ };
128
+ }
129
+ catch (error) {
130
+ console.error(`[DynamoDBAdapter] Connection failed with error:`, error);
131
+ console.error(`[DynamoDBAdapter] Error type:`, error.constructor.name);
132
+ console.error(`[DynamoDBAdapter] Error message:`, error.message);
133
+ console.error(`[DynamoDBAdapter] Error code:`, error.code);
134
+ console.error(`[DynamoDBAdapter] Full error:`, JSON.stringify(error, null, 2));
135
+ throw database_error_1.DatabaseError.connectionError(`Failed to connect to DynamoDB: ${error.message}`, error);
136
+ }
137
+ }
138
+ async testConnection(options) {
139
+ try {
140
+ const { DynamoDBClient, ListTablesCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
141
+ const url = new URL(options.connectionUrl);
142
+ const region = url.hostname || 'us-east-1';
143
+ const clientConfig = { region };
144
+ if (url.pathname && url.pathname !== '/') {
145
+ const parts = url.pathname.slice(1).split('/');
146
+ if (parts.length >= 2) {
147
+ clientConfig.credentials = {
148
+ accessKeyId: parts[0],
149
+ secretAccessKey: parts[1],
150
+ };
151
+ }
152
+ }
153
+ if (url.port) {
154
+ clientConfig.endpoint = `http://${url.hostname}:${url.port}`;
155
+ }
156
+ const client = new DynamoDBClient(clientConfig);
157
+ await client.send(new ListTablesCommand({ Limit: 1 }));
158
+ client.destroy();
159
+ return {
160
+ connected: true,
161
+ version: `DynamoDB (${region})`,
162
+ };
163
+ }
164
+ catch (error) {
165
+ return {
166
+ connected: false,
167
+ error: error.message,
168
+ };
169
+ }
170
+ }
171
+ async disconnect() {
172
+ if (this.dynamoClient) {
173
+ this.dynamoClient.destroy();
174
+ this.dynamoClient = null;
175
+ this.docClient = null;
176
+ this.client = null;
177
+ this.connected = false;
178
+ }
179
+ }
180
+ // ==================== QUERY METHODS ====================
181
+ async query(query) {
182
+ var _a;
183
+ this.ensureConnected();
184
+ try {
185
+ const { ScanCommand, QueryCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
186
+ const tableName = query.options.table;
187
+ const filter = query.options.where || {};
188
+ // Determine if we can use Query (needs key conditions) or must use Scan
189
+ const { keyCondition, filterCondition } = await this.extractKeyCondition(filter, tableName);
190
+ let items = [];
191
+ let count = 0;
192
+ if (keyCondition) {
193
+ // Use Query command for key-based lookups (much faster than Scan)
194
+ const params = {
195
+ TableName: tableName,
196
+ KeyConditionExpression: keyCondition.expression,
197
+ ExpressionAttributeNames: Object.assign({}, keyCondition.names),
198
+ ExpressionAttributeValues: Object.assign({}, keyCondition.values),
199
+ };
200
+ // Add filter for non-key conditions
201
+ if (filterCondition && filterCondition.expression) {
202
+ params.FilterExpression = filterCondition.expression;
203
+ Object.assign(params.ExpressionAttributeNames, filterCondition.names);
204
+ Object.assign(params.ExpressionAttributeValues, filterCondition.values);
205
+ }
206
+ // Projection
207
+ if (query.options.select) {
208
+ params.ProjectionExpression = query.options.select
209
+ .map((col, i) => {
210
+ params.ExpressionAttributeNames[`#proj${i}`] = col;
211
+ return `#proj${i}`;
212
+ })
213
+ .join(', ');
214
+ }
215
+ // Limit
216
+ if (query.options.limit) {
217
+ params.Limit = query.options.limit;
218
+ }
219
+ // Sort order (only works if there's a sort key)
220
+ if (query.options.orderBy) {
221
+ const orderByArray = Array.isArray(query.options.orderBy)
222
+ ? query.options.orderBy
223
+ : [query.options.orderBy];
224
+ // DynamoDB only supports ASC/DESC on sort key
225
+ if (((_a = orderByArray[0]) === null || _a === void 0 ? void 0 : _a.order) === 'DESC') {
226
+ params.ScanIndexForward = false;
227
+ }
228
+ }
229
+ const response = await this.docClient.send(new QueryCommand(params));
230
+ items = response.Items || [];
231
+ count = response.Count || 0;
232
+ }
233
+ else {
234
+ // Use Scan command (less efficient but necessary for non-key queries)
235
+ const params = {
236
+ TableName: tableName,
237
+ };
238
+ // Build filter expression
239
+ const filterExpression = this.buildFilterExpression(filter, {}, {});
240
+ if (filterExpression.expression) {
241
+ params.FilterExpression = filterExpression.expression;
242
+ params.ExpressionAttributeNames = filterExpression.names;
243
+ params.ExpressionAttributeValues = filterExpression.values;
244
+ }
245
+ // Projection
246
+ if (query.options.select) {
247
+ params.ExpressionAttributeNames = params.ExpressionAttributeNames || {};
248
+ params.ProjectionExpression = query.options.select
249
+ .map((col, i) => {
250
+ params.ExpressionAttributeNames[`#proj${i}`] = col;
251
+ return `#proj${i}`;
252
+ })
253
+ .join(', ');
254
+ }
255
+ // Limit
256
+ if (query.options.limit) {
257
+ params.Limit = query.options.limit;
258
+ }
259
+ const response = await this.docClient.send(new ScanCommand(params));
260
+ items = response.Items || [];
261
+ // Use Count (items after filtering) not ScannedCount (items before filtering)
262
+ count = response.Count || items.length;
263
+ }
264
+ // Apply offset (DynamoDB doesn't have native offset)
265
+ if (query.options.offset && query.options.offset > 0) {
266
+ items = items.slice(query.options.offset);
267
+ }
268
+ return {
269
+ data: items,
270
+ count,
271
+ };
272
+ }
273
+ catch (error) {
274
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'dynamodb');
275
+ }
276
+ }
277
+ async raw(options) {
278
+ this.ensureConnected();
279
+ try {
280
+ const { ScanCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
281
+ // For DynamoDB, raw query is a PartiQL statement or direct command
282
+ // Here we support simple scan with filter
283
+ const params = Object.assign({ TableName: options.table || options.collection }, options.query);
284
+ const response = await this.docClient.send(new ScanCommand(params));
285
+ return {
286
+ data: (response.Items || []),
287
+ count: response.Count || 0,
288
+ };
289
+ }
290
+ catch (error) {
291
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'dynamodb');
292
+ }
293
+ }
294
+ // ==================== WRITE METHODS ====================
295
+ async insert(options) {
296
+ var _a, _b;
297
+ this.ensureConnected();
298
+ try {
299
+ const { PutCommand, BatchWriteCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
300
+ const data = Array.isArray(options.data) ? options.data : [options.data];
301
+ if (data.length === 0) {
302
+ return { data: [], count: 0, insertedIds: [] };
303
+ }
304
+ const insertedIds = [];
305
+ if (data.length === 1) {
306
+ // Single item put
307
+ await this.docClient.send(new PutCommand({
308
+ TableName: options.table,
309
+ Item: data[0],
310
+ ConditionExpression: ((_a = options.onConflict) === null || _a === void 0 ? void 0 : _a.action) === 'ignore'
311
+ ? 'attribute_not_exists(#pk)'
312
+ : undefined,
313
+ ExpressionAttributeNames: ((_b = options.onConflict) === null || _b === void 0 ? void 0 : _b.action) === 'ignore'
314
+ ? { '#pk': options.onConflict.columns[0] }
315
+ : undefined,
316
+ }));
317
+ insertedIds.push(data[0].id || data[0]._id);
318
+ }
319
+ else {
320
+ // Batch write (max 25 items per batch)
321
+ const batches = this.chunkArray(data, 25);
322
+ for (const batch of batches) {
323
+ await this.docClient.send(new BatchWriteCommand({
324
+ RequestItems: {
325
+ [options.table]: batch.map(item => ({
326
+ PutRequest: { Item: item },
327
+ })),
328
+ },
329
+ }));
330
+ batch.forEach(item => insertedIds.push(item.id || item._id));
331
+ }
332
+ }
333
+ return {
334
+ data: options.returning ? data : [],
335
+ count: data.length,
336
+ insertedIds,
337
+ };
338
+ }
339
+ catch (error) {
340
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'dynamodb');
341
+ }
342
+ }
343
+ async update(options) {
344
+ this.ensureConnected();
345
+ try {
346
+ const { UpdateCommand, ScanCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
347
+ // First, find items to update
348
+ const filter = options.where || {};
349
+ const filterExpression = this.buildFilterExpression(filter, {}, {});
350
+ const scanParams = {
351
+ TableName: options.table,
352
+ };
353
+ if (filterExpression.expression) {
354
+ scanParams.FilterExpression = filterExpression.expression;
355
+ scanParams.ExpressionAttributeNames = filterExpression.names;
356
+ scanParams.ExpressionAttributeValues = filterExpression.values;
357
+ }
358
+ const scanResponse = await this.docClient.send(new ScanCommand(scanParams));
359
+ const itemsToUpdate = scanResponse.Items || [];
360
+ // Build update expression
361
+ const { expression, names, values } = this.buildUpdateExpression(options.data);
362
+ let updatedCount = 0;
363
+ const updatedItems = [];
364
+ for (const item of itemsToUpdate) {
365
+ // Get primary key from item
366
+ const key = await this.getTableKey(options.table, item);
367
+ const updateParams = {
368
+ TableName: options.table,
369
+ Key: key,
370
+ UpdateExpression: expression,
371
+ ExpressionAttributeNames: names,
372
+ ExpressionAttributeValues: values,
373
+ ReturnValues: options.returning ? 'ALL_NEW' : 'NONE',
374
+ };
375
+ const response = await this.docClient.send(new UpdateCommand(updateParams));
376
+ updatedCount++;
377
+ if (options.returning && response.Attributes) {
378
+ updatedItems.push(response.Attributes);
379
+ }
380
+ }
381
+ return {
382
+ data: updatedItems,
383
+ count: updatedCount,
384
+ };
385
+ }
386
+ catch (error) {
387
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'dynamodb');
388
+ }
389
+ }
390
+ async delete(options) {
391
+ this.ensureConnected();
392
+ try {
393
+ const { DeleteCommand, ScanCommand, BatchWriteCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
394
+ // First, find items to delete
395
+ const filter = options.where || {};
396
+ const filterExpression = this.buildFilterExpression(filter, {}, {});
397
+ const scanParams = {
398
+ TableName: options.table,
399
+ };
400
+ if (filterExpression.expression) {
401
+ scanParams.FilterExpression = filterExpression.expression;
402
+ scanParams.ExpressionAttributeNames = filterExpression.names;
403
+ scanParams.ExpressionAttributeValues = filterExpression.values;
404
+ }
405
+ const scanResponse = await this.docClient.send(new ScanCommand(scanParams));
406
+ const itemsToDelete = scanResponse.Items || [];
407
+ if (itemsToDelete.length === 0) {
408
+ return { count: 0 };
409
+ }
410
+ // Delete items in batches of 25
411
+ const batches = this.chunkArray(itemsToDelete, 25);
412
+ for (const batch of batches) {
413
+ const deleteRequests = await Promise.all(batch.map(async (item) => {
414
+ const key = await this.getTableKey(options.table, item);
415
+ return { DeleteRequest: { Key: key } };
416
+ }));
417
+ await this.docClient.send(new BatchWriteCommand({
418
+ RequestItems: {
419
+ [options.table]: deleteRequests,
420
+ },
421
+ }));
422
+ }
423
+ return {
424
+ count: itemsToDelete.length,
425
+ data: options.returning ? itemsToDelete : undefined,
426
+ };
427
+ }
428
+ catch (error) {
429
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'dynamodb');
430
+ }
431
+ }
432
+ async upsert(options) {
433
+ this.ensureConnected();
434
+ try {
435
+ const { PutCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
436
+ // DynamoDB PutCommand is an upsert by default
437
+ await this.docClient.send(new PutCommand({
438
+ TableName: options.table,
439
+ Item: options.data,
440
+ ReturnValues: 'NONE',
441
+ }));
442
+ return {
443
+ data: [options.data],
444
+ count: 1,
445
+ operation: 'inserted', // DynamoDB doesn't distinguish
446
+ };
447
+ }
448
+ catch (error) {
449
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'dynamodb');
450
+ }
451
+ }
452
+ // ==================== AGGREGATION METHODS ====================
453
+ async count(options) {
454
+ this.ensureConnected();
455
+ try {
456
+ const { ScanCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
457
+ const params = {
458
+ TableName: options.table,
459
+ Select: 'COUNT',
460
+ };
461
+ if (options.where) {
462
+ const filterExpression = this.buildFilterExpression(options.where, {}, {});
463
+ if (filterExpression.expression) {
464
+ params.FilterExpression = filterExpression.expression;
465
+ params.ExpressionAttributeNames = filterExpression.names;
466
+ params.ExpressionAttributeValues = filterExpression.values;
467
+ }
468
+ }
469
+ const response = await this.docClient.send(new ScanCommand(params));
470
+ return response.Count || 0;
471
+ }
472
+ catch (error) {
473
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'dynamodb');
474
+ }
475
+ }
476
+ async sum(options) {
477
+ this.ensureConnected();
478
+ try {
479
+ // DynamoDB doesn't have native aggregations, need to scan and sum
480
+ const { ScanCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
481
+ const params = {
482
+ TableName: options.table,
483
+ ProjectionExpression: `#col`,
484
+ ExpressionAttributeNames: { '#col': options.column },
485
+ };
486
+ if (options.where) {
487
+ const filterExpression = this.buildFilterExpression(options.where, params.ExpressionAttributeNames, {});
488
+ if (filterExpression.expression) {
489
+ params.FilterExpression = filterExpression.expression;
490
+ Object.assign(params.ExpressionAttributeNames, filterExpression.names);
491
+ params.ExpressionAttributeValues = filterExpression.values;
492
+ }
493
+ }
494
+ const response = await this.docClient.send(new ScanCommand(params));
495
+ const items = response.Items || [];
496
+ return items.reduce((sum, item) => sum + (Number(item[options.column]) || 0), 0);
497
+ }
498
+ catch (error) {
499
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'dynamodb');
500
+ }
501
+ }
502
+ async avg(options) {
503
+ this.ensureConnected();
504
+ try {
505
+ // DynamoDB doesn't have native aggregations, need to scan and calculate
506
+ const { ScanCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
507
+ const params = {
508
+ TableName: options.table,
509
+ ProjectionExpression: `#col`,
510
+ ExpressionAttributeNames: { '#col': options.column },
511
+ };
512
+ if (options.where) {
513
+ const filterExpression = this.buildFilterExpression(options.where, params.ExpressionAttributeNames, {});
514
+ if (filterExpression.expression) {
515
+ params.FilterExpression = filterExpression.expression;
516
+ Object.assign(params.ExpressionAttributeNames, filterExpression.names);
517
+ params.ExpressionAttributeValues = filterExpression.values;
518
+ }
519
+ }
520
+ const response = await this.docClient.send(new ScanCommand(params));
521
+ const items = response.Items || [];
522
+ if (items.length === 0)
523
+ return 0;
524
+ const sum = items.reduce((acc, item) => acc + (Number(item[options.column]) || 0), 0);
525
+ return sum / items.length;
526
+ }
527
+ catch (error) {
528
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'dynamodb');
529
+ }
530
+ }
531
+ async min(options) {
532
+ this.ensureConnected();
533
+ try {
534
+ const { ScanCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
535
+ const params = {
536
+ TableName: options.table,
537
+ ProjectionExpression: `#col`,
538
+ ExpressionAttributeNames: { '#col': options.column },
539
+ };
540
+ if (options.where) {
541
+ const filterExpression = this.buildFilterExpression(options.where, params.ExpressionAttributeNames, {});
542
+ if (filterExpression.expression) {
543
+ params.FilterExpression = filterExpression.expression;
544
+ Object.assign(params.ExpressionAttributeNames, filterExpression.names);
545
+ params.ExpressionAttributeValues = filterExpression.values;
546
+ }
547
+ }
548
+ const response = await this.docClient.send(new ScanCommand(params));
549
+ const items = response.Items || [];
550
+ if (items.length === 0)
551
+ return null;
552
+ return items.reduce((min, item) => {
553
+ const val = item[options.column];
554
+ return min === null || val < min ? val : min;
555
+ }, null);
556
+ }
557
+ catch (error) {
558
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'dynamodb');
559
+ }
560
+ }
561
+ async max(options) {
562
+ this.ensureConnected();
563
+ try {
564
+ const { ScanCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
565
+ const params = {
566
+ TableName: options.table,
567
+ ProjectionExpression: `#col`,
568
+ ExpressionAttributeNames: { '#col': options.column },
569
+ };
570
+ if (options.where) {
571
+ const filterExpression = this.buildFilterExpression(options.where, params.ExpressionAttributeNames, {});
572
+ if (filterExpression.expression) {
573
+ params.FilterExpression = filterExpression.expression;
574
+ Object.assign(params.ExpressionAttributeNames, filterExpression.names);
575
+ params.ExpressionAttributeValues = filterExpression.values;
576
+ }
577
+ }
578
+ const response = await this.docClient.send(new ScanCommand(params));
579
+ const items = response.Items || [];
580
+ if (items.length === 0)
581
+ return null;
582
+ return items.reduce((max, item) => {
583
+ const val = item[options.column];
584
+ return max === null || val > max ? val : max;
585
+ }, null);
586
+ }
587
+ catch (error) {
588
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'dynamodb');
589
+ }
590
+ }
591
+ async aggregate(builtAggregation) {
592
+ this.ensureConnected();
593
+ try {
594
+ // DynamoDB doesn't support native aggregations - scan and compute in memory
595
+ const { ScanCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
596
+ const options = builtAggregation.options;
597
+ const params = {
598
+ TableName: options.table,
599
+ };
600
+ if (options.where) {
601
+ const filterExpression = this.buildFilterExpression(options.where, {}, {});
602
+ if (filterExpression.expression) {
603
+ params.FilterExpression = filterExpression.expression;
604
+ params.ExpressionAttributeNames = filterExpression.names;
605
+ params.ExpressionAttributeValues = filterExpression.values;
606
+ }
607
+ }
608
+ const response = await this.docClient.send(new ScanCommand(params));
609
+ const items = response.Items || [];
610
+ // Compute aggregations in memory
611
+ const result = {};
612
+ const operations = options.operations || {};
613
+ for (const [alias, op] of Object.entries(operations)) {
614
+ const operation = op;
615
+ if (operation.$COUNT) {
616
+ result[alias] = items.length;
617
+ }
618
+ else if (operation.$SUM) {
619
+ result[alias] = items.reduce((sum, item) => sum + (Number(item[operation.$SUM]) || 0), 0);
620
+ }
621
+ else if (operation.$AVG) {
622
+ const values = items.map((item) => Number(item[operation.$AVG]) || 0);
623
+ result[alias] = values.length > 0 ? values.reduce((a, b) => a + b, 0) / values.length : 0;
624
+ }
625
+ else if (operation.$MIN) {
626
+ const values = items.map((item) => item[operation.$MIN]).filter((v) => v != null);
627
+ result[alias] = values.length > 0 ? Math.min(...values) : null;
628
+ }
629
+ else if (operation.$MAX) {
630
+ const values = items.map((item) => item[operation.$MAX]).filter((v) => v != null);
631
+ result[alias] = values.length > 0 ? Math.max(...values) : null;
632
+ }
633
+ }
634
+ return result;
635
+ }
636
+ catch (error) {
637
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'dynamodb');
638
+ }
639
+ }
640
+ async groupBy(builtGroupBy) {
641
+ this.ensureConnected();
642
+ try {
643
+ // DynamoDB doesn't support native GROUP BY - scan and group in memory
644
+ const { ScanCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
645
+ const options = builtGroupBy.options;
646
+ const params = {
647
+ TableName: options.table,
648
+ };
649
+ if (options.where) {
650
+ const filterExpression = this.buildFilterExpression(options.where, {}, {});
651
+ if (filterExpression.expression) {
652
+ params.FilterExpression = filterExpression.expression;
653
+ params.ExpressionAttributeNames = filterExpression.names;
654
+ params.ExpressionAttributeValues = filterExpression.values;
655
+ }
656
+ }
657
+ const response = await this.docClient.send(new ScanCommand(params));
658
+ const items = response.Items || [];
659
+ // Group items in memory
660
+ const groups = new Map();
661
+ const groupByColumns = options.groupBy || [];
662
+ for (const item of items) {
663
+ const groupKey = groupByColumns.map((col) => String(item[col])).join('|');
664
+ if (!groups.has(groupKey)) {
665
+ groups.set(groupKey, []);
666
+ }
667
+ groups.get(groupKey).push(item);
668
+ }
669
+ // Compute aggregations for each group
670
+ const results = [];
671
+ const operations = options.operations || {};
672
+ for (const [groupKey, groupItems] of groups) {
673
+ const group = {};
674
+ const keyParts = groupKey.split('|');
675
+ groupByColumns.forEach((col, i) => {
676
+ group[col] = keyParts[i];
677
+ });
678
+ const aggregates = {};
679
+ for (const [alias, op] of Object.entries(operations)) {
680
+ const operation = op;
681
+ if (operation.$COUNT) {
682
+ aggregates[alias] = groupItems.length;
683
+ }
684
+ else if (operation.$SUM) {
685
+ aggregates[alias] = groupItems.reduce((sum, item) => sum + (Number(item[operation.$SUM]) || 0), 0);
686
+ }
687
+ else if (operation.$AVG) {
688
+ const values = groupItems.map(item => Number(item[operation.$AVG]) || 0);
689
+ aggregates[alias] = values.length > 0 ? values.reduce((a, b) => a + b, 0) / values.length : 0;
690
+ }
691
+ else if (operation.$MIN) {
692
+ const values = groupItems.map(item => item[operation.$MIN]).filter(v => v != null);
693
+ aggregates[alias] = values.length > 0 ? Math.min(...values) : null;
694
+ }
695
+ else if (operation.$MAX) {
696
+ const values = groupItems.map(item => item[operation.$MAX]).filter(v => v != null);
697
+ aggregates[alias] = values.length > 0 ? Math.max(...values) : null;
698
+ }
699
+ }
700
+ results.push({ group, aggregates: aggregates });
701
+ }
702
+ return results;
703
+ }
704
+ catch (error) {
705
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'dynamodb');
706
+ }
707
+ }
708
+ // ==================== TRANSACTION METHODS ====================
709
+ async beginTransaction(isolationLevel, readOnly, timeout) {
710
+ this.ensureConnected();
711
+ // DynamoDB uses TransactWriteItems for transactions, not traditional BEGIN/COMMIT
712
+ // We create a transaction context that collects operations
713
+ const id = `dynamo_txn_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
714
+ return {
715
+ id,
716
+ databaseType: 'dynamodb',
717
+ isolationLevel: enums_1.IsolationLevel.SERIALIZABLE, // DynamoDB transactions are serializable
718
+ readOnly: readOnly || false,
719
+ timeout,
720
+ startedAt: new Date(),
721
+ client: {
722
+ operations: [],
723
+ conditionChecks: [],
724
+ },
725
+ savepoints: new Map(),
726
+ status: 'active',
727
+ };
728
+ }
729
+ async commitTransaction(context) {
730
+ this.ensureConnected();
731
+ try {
732
+ const { TransactWriteCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/lib-dynamodb')));
733
+ const operations = context.client.operations || [];
734
+ if (operations.length === 0) {
735
+ context.status = 'committed';
736
+ return;
737
+ }
738
+ await this.docClient.send(new TransactWriteCommand({
739
+ TransactItems: operations,
740
+ }));
741
+ context.status = 'committed';
742
+ }
743
+ catch (error) {
744
+ context.status = 'error';
745
+ throw database_error_1.DatabaseError.transactionError(`Failed to commit transaction: ${error.message}`, error);
746
+ }
747
+ }
748
+ async rollbackTransaction(context) {
749
+ // DynamoDB doesn't have explicit rollback - transaction is simply not committed
750
+ context.client.operations = [];
751
+ context.status = 'rolled_back';
752
+ }
753
+ async createSavepoint(context, name) {
754
+ // DynamoDB does not support savepoints
755
+ throw new database_error_1.DatabaseError('DynamoDB does not support savepoints.', enums_1.DatabaseErrorType.NOT_SUPPORTED);
756
+ }
757
+ async releaseSavepoint(context, savepoint) {
758
+ throw new database_error_1.DatabaseError('DynamoDB does not support savepoints.', enums_1.DatabaseErrorType.NOT_SUPPORTED);
759
+ }
760
+ async rollbackToSavepoint(context, savepoint) {
761
+ throw new database_error_1.DatabaseError('DynamoDB does not support savepoints.', enums_1.DatabaseErrorType.NOT_SUPPORTED);
762
+ }
763
+ supportsSavepoints() {
764
+ return false;
765
+ }
766
+ // ==================== SCHEMA METHODS ====================
767
+ async createTable(definition, options) {
768
+ this.ensureConnected();
769
+ try {
770
+ const { CreateTableCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
771
+ // Find primary key column
772
+ const pkColumn = definition.columns.find(c => c.primaryKey);
773
+ if (!pkColumn) {
774
+ throw new Error('DynamoDB tables require a primary key column');
775
+ }
776
+ const keySchema = [
777
+ { AttributeName: pkColumn.name, KeyType: 'HASH' },
778
+ ];
779
+ const attributeDefinitions = [
780
+ { AttributeName: pkColumn.name, AttributeType: this.mapToDynamoType(pkColumn.type) },
781
+ ];
782
+ // Check for sort key (second column marked as primary key or sort key)
783
+ const sortKeyColumn = definition.columns.find(c => c.name !== pkColumn.name && c.sortKey);
784
+ if (sortKeyColumn) {
785
+ keySchema.push({ AttributeName: sortKeyColumn.name, KeyType: 'RANGE' });
786
+ attributeDefinitions.push({
787
+ AttributeName: sortKeyColumn.name,
788
+ AttributeType: this.mapToDynamoType(sortKeyColumn.type),
789
+ });
790
+ }
791
+ const params = {
792
+ TableName: definition.name,
793
+ KeySchema: keySchema,
794
+ AttributeDefinitions: attributeDefinitions,
795
+ BillingMode: 'PAY_PER_REQUEST', // On-demand capacity
796
+ };
797
+ await this.dynamoClient.send(new CreateTableCommand(params));
798
+ // Wait for table to be active
799
+ await this.waitForTableActive(definition.name);
800
+ // Create GSIs if defined
801
+ if (definition.indexes) {
802
+ for (const index of definition.indexes) {
803
+ await this.createIndex(index);
804
+ }
805
+ }
806
+ }
807
+ catch (error) {
808
+ if ((options === null || options === void 0 ? void 0 : options.ifNotExists) && error.name === 'ResourceInUseException') {
809
+ return;
810
+ }
811
+ throw database_error_1.DatabaseError.schemaError(`Failed to create table: ${error.message}`, error);
812
+ }
813
+ }
814
+ async alterTable(tableName, operations) {
815
+ this.ensureConnected();
816
+ // DynamoDB has very limited ALTER capabilities
817
+ // Can only modify GSIs and some table settings
818
+ try {
819
+ for (const op of operations) {
820
+ if (op.type === 'ADD' && op.constraint) {
821
+ // Add GSI
822
+ // This would require UpdateTableCommand with GlobalSecondaryIndexUpdates
823
+ throw new database_error_1.DatabaseError('Adding indexes to DynamoDB requires table recreation or GSI updates. Use createIndex instead.', enums_1.DatabaseErrorType.NOT_SUPPORTED);
824
+ }
825
+ }
826
+ }
827
+ catch (error) {
828
+ throw database_error_1.DatabaseError.schemaError(`Failed to alter table: ${error.message}`, error);
829
+ }
830
+ }
831
+ async dropTable(tableName, ifExists, cascade) {
832
+ this.ensureConnected();
833
+ try {
834
+ const { DeleteTableCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
835
+ await this.dynamoClient.send(new DeleteTableCommand({
836
+ TableName: tableName,
837
+ }));
838
+ }
839
+ catch (error) {
840
+ if (ifExists && error.name === 'ResourceNotFoundException') {
841
+ return;
842
+ }
843
+ throw database_error_1.DatabaseError.schemaError(`Failed to drop table: ${error.message}`, error);
844
+ }
845
+ }
846
+ async listTables() {
847
+ this.ensureConnected();
848
+ try {
849
+ const { ListTablesCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
850
+ const response = await this.dynamoClient.send(new ListTablesCommand({}));
851
+ return response.TableNames || [];
852
+ }
853
+ catch (error) {
854
+ throw database_error_1.DatabaseError.schemaError(`Failed to list tables: ${error.message}`, error);
855
+ }
856
+ }
857
+ async listTablesWithInfo() {
858
+ this.ensureConnected();
859
+ try {
860
+ const { ListTablesCommand, DescribeTableCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
861
+ const response = await this.dynamoClient.send(new ListTablesCommand({}));
862
+ const tableNames = response.TableNames || [];
863
+ // Get table info including item count for each table
864
+ const tablesWithInfo = await Promise.all(tableNames.map(async (tableName) => {
865
+ var _a;
866
+ try {
867
+ const describeResponse = await this.dynamoClient.send(new DescribeTableCommand({ TableName: tableName }));
868
+ return {
869
+ name: tableName,
870
+ estimatedRowCount: (_a = describeResponse.Table) === null || _a === void 0 ? void 0 : _a.ItemCount,
871
+ };
872
+ }
873
+ catch (error) {
874
+ // If we can't describe a table, return it without count
875
+ return {
876
+ name: tableName,
877
+ estimatedRowCount: undefined,
878
+ };
879
+ }
880
+ }));
881
+ return tablesWithInfo;
882
+ }
883
+ catch (error) {
884
+ throw database_error_1.DatabaseError.schemaError(`Failed to list tables with info: ${error.message}`, error);
885
+ }
886
+ }
887
+ async tableExists(tableName) {
888
+ this.ensureConnected();
889
+ try {
890
+ const { DescribeTableCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
891
+ await this.dynamoClient.send(new DescribeTableCommand({
892
+ TableName: tableName,
893
+ }));
894
+ return true;
895
+ }
896
+ catch (error) {
897
+ if (error.name === 'ResourceNotFoundException') {
898
+ return false;
899
+ }
900
+ throw database_error_1.DatabaseError.schemaError(`Failed to check table existence: ${error.message}`, error);
901
+ }
902
+ }
903
+ async getTableSchema(tableName) {
904
+ var _a;
905
+ this.ensureConnected();
906
+ try {
907
+ const { DescribeTableCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
908
+ const response = await this.dynamoClient.send(new DescribeTableCommand({
909
+ TableName: tableName,
910
+ }));
911
+ const table = response.Table;
912
+ // Map attribute definitions to columns
913
+ const columns = (table.AttributeDefinitions || []).map((attr) => {
914
+ var _a;
915
+ return ({
916
+ name: attr.AttributeName,
917
+ type: this.mapFromDynamoType(attr.AttributeType),
918
+ nullable: true,
919
+ isPrimaryKey: ((_a = table.KeySchema) === null || _a === void 0 ? void 0 : _a.some((k) => k.AttributeName === attr.AttributeName && k.KeyType === 'HASH')) || false,
920
+ isUnique: false,
921
+ isAutoIncrement: false,
922
+ });
923
+ });
924
+ // Get primary key
925
+ const primaryKey = ((_a = table.KeySchema) === null || _a === void 0 ? void 0 : _a.filter((k) => k.KeyType === 'HASH').map((k) => k.AttributeName)) || [];
926
+ // Get GSIs as indexes
927
+ const indexes = (table.GlobalSecondaryIndexes || []).map((gsi) => {
928
+ var _a;
929
+ return ({
930
+ name: gsi.IndexName,
931
+ table: tableName,
932
+ columns: ((_a = gsi.KeySchema) === null || _a === void 0 ? void 0 : _a.map((k) => k.AttributeName)) || [],
933
+ unique: false,
934
+ primaryKey: false,
935
+ type: 'GSI',
936
+ });
937
+ });
938
+ // Add LSIs
939
+ (table.LocalSecondaryIndexes || []).forEach((lsi) => {
940
+ var _a;
941
+ indexes.push({
942
+ name: lsi.IndexName,
943
+ table: tableName,
944
+ columns: ((_a = lsi.KeySchema) === null || _a === void 0 ? void 0 : _a.map((k) => k.AttributeName)) || [],
945
+ unique: false,
946
+ primaryKey: false,
947
+ type: 'LSI',
948
+ });
949
+ });
950
+ return {
951
+ name: tableName,
952
+ columns,
953
+ indexes,
954
+ constraints: [],
955
+ primaryKey,
956
+ estimatedRowCount: Number(table.ItemCount) || 0,
957
+ };
958
+ }
959
+ catch (error) {
960
+ throw database_error_1.DatabaseError.schemaError(`Failed to get table schema: ${error.message}`, error);
961
+ }
962
+ }
963
+ async createIndex(index, ifNotExists, concurrent) {
964
+ this.ensureConnected();
965
+ // DynamoDB indexes (GSI) can only be created during table creation
966
+ // or via UpdateTable (which is limited)
967
+ throw new database_error_1.DatabaseError('DynamoDB Global Secondary Indexes must be created during table creation or via UpdateTable with specific parameters.', enums_1.DatabaseErrorType.NOT_SUPPORTED);
968
+ }
969
+ async dropIndex(tableName, indexName, ifExists, concurrent, cascade) {
970
+ this.ensureConnected();
971
+ try {
972
+ const { UpdateTableCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
973
+ await this.dynamoClient.send(new UpdateTableCommand({
974
+ TableName: tableName,
975
+ GlobalSecondaryIndexUpdates: [
976
+ {
977
+ Delete: {
978
+ IndexName: indexName,
979
+ },
980
+ },
981
+ ],
982
+ }));
983
+ }
984
+ catch (error) {
985
+ if (ifExists && error.name === 'ResourceNotFoundException') {
986
+ return;
987
+ }
988
+ throw database_error_1.DatabaseError.schemaError(`Failed to drop index: ${error.message}`, error);
989
+ }
990
+ }
991
+ async listIndexes(tableName, includeSystem) {
992
+ this.ensureConnected();
993
+ try {
994
+ const schema = await this.getTableSchema(tableName);
995
+ return schema.indexes;
996
+ }
997
+ catch (error) {
998
+ throw database_error_1.DatabaseError.schemaError(`Failed to list indexes: ${error.message}`, error);
999
+ }
1000
+ }
1001
+ async getIndexStatistics(tableName, indexName) {
1002
+ this.ensureConnected();
1003
+ try {
1004
+ const { DescribeTableCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
1005
+ const response = await this.dynamoClient.send(new DescribeTableCommand({
1006
+ TableName: tableName,
1007
+ }));
1008
+ const results = [];
1009
+ const table = response.Table;
1010
+ // Add table itself as primary index
1011
+ if (!indexName || indexName === 'PRIMARY') {
1012
+ results.push({
1013
+ indexName: 'PRIMARY',
1014
+ tableName,
1015
+ scans: 0,
1016
+ tuplesRead: Number(table.ItemCount) || 0,
1017
+ sizeBytes: Number(table.TableSizeBytes) || 0,
1018
+ sizeFormatted: this.formatBytes(Number(table.TableSizeBytes) || 0),
1019
+ });
1020
+ }
1021
+ // Add GSIs
1022
+ for (const gsi of table.GlobalSecondaryIndexes || []) {
1023
+ if (!indexName || indexName === gsi.IndexName) {
1024
+ results.push({
1025
+ indexName: gsi.IndexName,
1026
+ tableName,
1027
+ scans: 0,
1028
+ tuplesRead: Number(gsi.ItemCount) || 0,
1029
+ sizeBytes: Number(gsi.IndexSizeBytes) || 0,
1030
+ sizeFormatted: this.formatBytes(Number(gsi.IndexSizeBytes) || 0),
1031
+ });
1032
+ }
1033
+ }
1034
+ return results;
1035
+ }
1036
+ catch (error) {
1037
+ throw database_error_1.DatabaseError.schemaError(`Failed to get index statistics: ${error.message}`, error);
1038
+ }
1039
+ }
1040
+ // ==================== UTILITY METHODS ====================
1041
+ escapeIdentifier(identifier) {
1042
+ return identifier;
1043
+ }
1044
+ escapeValue(value) {
1045
+ return JSON.stringify(value);
1046
+ }
1047
+ /**
1048
+ * Check if value is an update operator object
1049
+ * Supports both lowercase (new) and uppercase (legacy) operators
1050
+ */
1051
+ isUpdateOperator(value) {
1052
+ if (!value || typeof value !== 'object')
1053
+ return false;
1054
+ // Support both lowercase (Mongoose style) and uppercase (legacy) operators
1055
+ const operators = [
1056
+ '$inc', '$INC', '$dec', '$DEC', '$mul', '$MUL', '$min', '$MIN', '$max', '$MAX',
1057
+ '$set', '$SET', '$unset', '$UNSET', '$push', '$PUSH', '$pull', '$PULL',
1058
+ '$addToSet', '$ADDTOSET', '$currentDate', '$CURRENTDATE'
1059
+ ];
1060
+ return operators.some(op => op in value);
1061
+ }
1062
+ getParameterPlaceholder(index) {
1063
+ return `:val${index}`;
1064
+ }
1065
+ getColumnTypeString(columnType, options) {
1066
+ return this.mapToDynamoType(columnType);
1067
+ }
1068
+ getSupportedFeatures() {
1069
+ return [
1070
+ base_adapter_1.DatabaseFeature.TRANSACTIONS,
1071
+ base_adapter_1.DatabaseFeature.TTL,
1072
+ base_adapter_1.DatabaseFeature.GLOBAL_SECONDARY_INDEXES,
1073
+ base_adapter_1.DatabaseFeature.LOCAL_SECONDARY_INDEXES,
1074
+ base_adapter_1.DatabaseFeature.BATCH_OPERATIONS,
1075
+ base_adapter_1.DatabaseFeature.ATOMIC_COUNTERS,
1076
+ base_adapter_1.DatabaseFeature.CHANGE_STREAMS,
1077
+ ];
1078
+ }
1079
+ parseError(error) {
1080
+ const name = error.name || error.code;
1081
+ let type = enums_1.DatabaseErrorType.UNKNOWN_ERROR;
1082
+ switch (name) {
1083
+ case 'ConditionalCheckFailedException':
1084
+ type = enums_1.DatabaseErrorType.UNIQUE_VIOLATION;
1085
+ break;
1086
+ case 'ResourceNotFoundException':
1087
+ type = enums_1.DatabaseErrorType.NOT_FOUND;
1088
+ break;
1089
+ case 'ResourceInUseException':
1090
+ type = enums_1.DatabaseErrorType.SCHEMA_ERROR;
1091
+ break;
1092
+ case 'ValidationException':
1093
+ type = enums_1.DatabaseErrorType.VALIDATION_ERROR;
1094
+ break;
1095
+ case 'ProvisionedThroughputExceededException':
1096
+ case 'ThrottlingException':
1097
+ type = enums_1.DatabaseErrorType.QUERY_ERROR;
1098
+ break;
1099
+ case 'AccessDeniedException':
1100
+ type = enums_1.DatabaseErrorType.AUTHENTICATION_ERROR;
1101
+ break;
1102
+ }
1103
+ return {
1104
+ type,
1105
+ message: error.message || 'Unknown database error',
1106
+ code: name,
1107
+ };
1108
+ }
1109
+ // ==================== PRIVATE HELPER METHODS ====================
1110
+ ensureConnected() {
1111
+ if (!this.connected || !this.docClient) {
1112
+ throw new database_error_1.DatabaseError('Not connected to DynamoDB', enums_1.DatabaseErrorType.CONNECTION_ERROR);
1113
+ }
1114
+ }
1115
+ buildFilterExpression(where, existingNames, existingValues) {
1116
+ const conditions = [];
1117
+ const names = Object.assign({}, existingNames);
1118
+ const values = Object.assign({}, existingValues);
1119
+ let valueIndex = Object.keys(existingValues).length;
1120
+ for (const [key, value] of Object.entries(where)) {
1121
+ // Normalize key to lowercase for logical operators (support both cases for backwards compatibility)
1122
+ const normalizedKey = key.toLowerCase();
1123
+ if (normalizedKey === '$and') {
1124
+ const conditions_list = Array.isArray(value) ? value : Object.entries(value).map(([k, v]) => ({ [k]: v }));
1125
+ const andConditions = [];
1126
+ for (const cond of conditions_list) {
1127
+ const result = this.buildFilterExpression(cond, names, values);
1128
+ andConditions.push(result.expression);
1129
+ Object.assign(names, result.names);
1130
+ Object.assign(values, result.values);
1131
+ }
1132
+ conditions.push(`(${andConditions.join(' AND ')})`);
1133
+ }
1134
+ else if (normalizedKey === '$or') {
1135
+ const conditions_list = Array.isArray(value) ? value : Object.entries(value).map(([k, v]) => ({ [k]: v }));
1136
+ const orConditions = [];
1137
+ for (const cond of conditions_list) {
1138
+ const result = this.buildFilterExpression(cond, names, values);
1139
+ orConditions.push(result.expression);
1140
+ Object.assign(names, result.names);
1141
+ Object.assign(values, result.values);
1142
+ }
1143
+ conditions.push(`(${orConditions.join(' OR ')})`);
1144
+ }
1145
+ else if (normalizedKey === '$not') {
1146
+ const result = this.buildFilterExpression(value, names, values);
1147
+ conditions.push(`NOT (${result.expression})`);
1148
+ Object.assign(names, result.names);
1149
+ Object.assign(values, result.values);
1150
+ }
1151
+ else if (normalizedKey === '$nor') {
1152
+ const conditions_list = Array.isArray(value) ? value : [value];
1153
+ const norConditions = [];
1154
+ for (const cond of conditions_list) {
1155
+ const result = this.buildFilterExpression(cond, names, values);
1156
+ norConditions.push(result.expression);
1157
+ Object.assign(names, result.names);
1158
+ Object.assign(values, result.values);
1159
+ }
1160
+ conditions.push(`NOT (${norConditions.join(' OR ')})`);
1161
+ }
1162
+ else if (value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {
1163
+ const nameKey = `#${key.replace(/[^a-zA-Z0-9]/g, '')}`;
1164
+ names[nameKey] = key;
1165
+ for (const [op, opValue] of Object.entries(value)) {
1166
+ const valueKey = `:val${valueIndex++}`;
1167
+ values[valueKey] = opValue;
1168
+ // Normalize operator to lowercase (support both cases for backwards compatibility)
1169
+ const normalizedOp = op.toLowerCase();
1170
+ switch (normalizedOp) {
1171
+ case '$eq':
1172
+ conditions.push(`${nameKey} = ${valueKey}`);
1173
+ break;
1174
+ case '$ne':
1175
+ conditions.push(`${nameKey} <> ${valueKey}`);
1176
+ break;
1177
+ case '$gt':
1178
+ conditions.push(`${nameKey} > ${valueKey}`);
1179
+ break;
1180
+ case '$gte':
1181
+ conditions.push(`${nameKey} >= ${valueKey}`);
1182
+ break;
1183
+ case '$lt':
1184
+ conditions.push(`${nameKey} < ${valueKey}`);
1185
+ break;
1186
+ case '$lte':
1187
+ conditions.push(`${nameKey} <= ${valueKey}`);
1188
+ break;
1189
+ case '$in':
1190
+ // DynamoDB requires separate placeholders for each value in IN clause
1191
+ if (Array.isArray(opValue)) {
1192
+ const inPlaceholders = [];
1193
+ for (const item of opValue) {
1194
+ const itemKey = `:val${valueIndex++}`;
1195
+ values[itemKey] = item;
1196
+ inPlaceholders.push(itemKey);
1197
+ }
1198
+ // Remove the original valueKey since we're using individual placeholders
1199
+ delete values[valueKey];
1200
+ conditions.push(`${nameKey} IN (${inPlaceholders.join(', ')})`);
1201
+ }
1202
+ else {
1203
+ // Single value - treat as equality
1204
+ conditions.push(`${nameKey} = ${valueKey}`);
1205
+ }
1206
+ break;
1207
+ case '$between':
1208
+ const [min, max] = opValue;
1209
+ const minKey = `:val${valueIndex++}`;
1210
+ const maxKey = `:val${valueIndex++}`;
1211
+ values[minKey] = min;
1212
+ values[maxKey] = max;
1213
+ conditions.push(`${nameKey} BETWEEN ${minKey} AND ${maxKey}`);
1214
+ break;
1215
+ case '$like':
1216
+ conditions.push(`contains(${nameKey}, ${valueKey})`);
1217
+ break;
1218
+ case '$isnull':
1219
+ case '$is_null':
1220
+ if (opValue) {
1221
+ conditions.push(`attribute_not_exists(${nameKey})`);
1222
+ }
1223
+ else {
1224
+ conditions.push(`attribute_exists(${nameKey})`);
1225
+ }
1226
+ delete values[valueKey];
1227
+ break;
1228
+ case '$isnotnull':
1229
+ case '$is_not_null':
1230
+ if (opValue) {
1231
+ conditions.push(`attribute_exists(${nameKey})`);
1232
+ }
1233
+ else {
1234
+ conditions.push(`attribute_not_exists(${nameKey})`);
1235
+ }
1236
+ delete values[valueKey];
1237
+ break;
1238
+ case '$exists':
1239
+ if (opValue) {
1240
+ conditions.push(`attribute_exists(${nameKey})`);
1241
+ }
1242
+ else {
1243
+ conditions.push(`attribute_not_exists(${nameKey})`);
1244
+ }
1245
+ delete values[valueKey];
1246
+ break;
1247
+ case '$contains':
1248
+ conditions.push(`contains(${nameKey}, ${valueKey})`);
1249
+ break;
1250
+ case '$begins_with':
1251
+ conditions.push(`begins_with(${nameKey}, ${valueKey})`);
1252
+ break;
1253
+ }
1254
+ }
1255
+ }
1256
+ else {
1257
+ const nameKey = `#${key.replace(/[^a-zA-Z0-9]/g, '')}`;
1258
+ const valueKey = `:val${valueIndex++}`;
1259
+ names[nameKey] = key;
1260
+ values[valueKey] = value;
1261
+ conditions.push(`${nameKey} = ${valueKey}`);
1262
+ }
1263
+ }
1264
+ return {
1265
+ expression: conditions.join(' AND '),
1266
+ names,
1267
+ values,
1268
+ };
1269
+ }
1270
+ buildUpdateExpression(data) {
1271
+ const setClauses = [];
1272
+ const addClauses = [];
1273
+ const names = {};
1274
+ const values = {};
1275
+ let valueIndex = 0;
1276
+ for (const [key, value] of Object.entries(data)) {
1277
+ const nameKey = `#${key.replace(/[^a-zA-Z0-9]/g, '')}`;
1278
+ names[nameKey] = key;
1279
+ if (value && typeof value === 'object' && this.isUpdateOperator(value)) {
1280
+ const valueKey = `:val${valueIndex++}`;
1281
+ if ('$INC' in value) {
1282
+ values[valueKey] = value.$INC;
1283
+ addClauses.push(`${nameKey} ${valueKey}`);
1284
+ }
1285
+ else if ('$DEC' in value) {
1286
+ values[valueKey] = -value.$DEC;
1287
+ addClauses.push(`${nameKey} ${valueKey}`);
1288
+ }
1289
+ else if ('$MUL' in value) {
1290
+ // DynamoDB doesn't have native multiply - use SET with expression
1291
+ const mulValueKey = `:mul${valueIndex++}`;
1292
+ values[mulValueKey] = value.$MUL;
1293
+ setClauses.push(`${nameKey} = ${nameKey} * ${mulValueKey}`);
1294
+ }
1295
+ else if ('$MIN' in value) {
1296
+ // DynamoDB doesn't have native min - use if_not_exists or conditional
1297
+ // For simplicity, just set the value (user should use conditional writes for atomic min)
1298
+ values[valueKey] = value.$MIN;
1299
+ setClauses.push(`${nameKey} = if_not_exists(${nameKey}, ${valueKey})`);
1300
+ }
1301
+ else if ('$MAX' in value) {
1302
+ // DynamoDB doesn't have native max - similar to min
1303
+ values[valueKey] = value.$MAX;
1304
+ setClauses.push(`${nameKey} = if_not_exists(${nameKey}, ${valueKey})`);
1305
+ }
1306
+ else if ('$SET' in value) {
1307
+ values[valueKey] = value.$SET;
1308
+ setClauses.push(`${nameKey} = ${valueKey}`);
1309
+ }
1310
+ else if ('$UNSET' in value && value.$UNSET) {
1311
+ // Use REMOVE clause for unsetting
1312
+ // Note: REMOVE is handled separately
1313
+ setClauses.push(`REMOVE ${nameKey}`);
1314
+ }
1315
+ else if ('$PUSH' in value) {
1316
+ // DynamoDB list_append for arrays
1317
+ values[valueKey] = [value.$PUSH];
1318
+ setClauses.push(`${nameKey} = list_append(if_not_exists(${nameKey}, :emptyList), ${valueKey})`);
1319
+ values[':emptyList'] = [];
1320
+ }
1321
+ else if ('$ADDTOSET' in value) {
1322
+ // DynamoDB ADD for sets
1323
+ values[valueKey] = new Set([value.$ADDTOSET]);
1324
+ addClauses.push(`${nameKey} ${valueKey}`);
1325
+ }
1326
+ }
1327
+ else {
1328
+ const valueKey = `:val${valueIndex++}`;
1329
+ values[valueKey] = value;
1330
+ setClauses.push(`${nameKey} = ${valueKey}`);
1331
+ }
1332
+ }
1333
+ let expression = '';
1334
+ if (setClauses.length > 0) {
1335
+ expression += `SET ${setClauses.join(', ')}`;
1336
+ }
1337
+ if (addClauses.length > 0) {
1338
+ if (expression)
1339
+ expression += ' ';
1340
+ expression += `ADD ${addClauses.join(', ')}`;
1341
+ }
1342
+ return { expression, names, values };
1343
+ }
1344
+ /**
1345
+ * Extract key condition from where clause if partition key is present.
1346
+ * This enables using Query instead of Scan for better performance.
1347
+ */
1348
+ async extractKeyCondition(where, tableName) {
1349
+ var _a, _b, _c;
1350
+ if (!where || Object.keys(where).length === 0) {
1351
+ return { keyCondition: null, filterCondition: null };
1352
+ }
1353
+ try {
1354
+ const { DescribeTableCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
1355
+ const response = await this.dynamoClient.send(new DescribeTableCommand({
1356
+ TableName: tableName,
1357
+ }));
1358
+ const keySchema = ((_a = response.Table) === null || _a === void 0 ? void 0 : _a.KeySchema) || [];
1359
+ if (keySchema.length === 0) {
1360
+ return { keyCondition: null, filterCondition: null };
1361
+ }
1362
+ // Get partition key and sort key names
1363
+ const partitionKeyName = (_b = keySchema.find((k) => k.KeyType === 'HASH')) === null || _b === void 0 ? void 0 : _b.AttributeName;
1364
+ const sortKeyName = (_c = keySchema.find((k) => k.KeyType === 'RANGE')) === null || _c === void 0 ? void 0 : _c.AttributeName;
1365
+ if (!partitionKeyName) {
1366
+ return { keyCondition: null, filterCondition: null };
1367
+ }
1368
+ // Check if partition key is in the where clause
1369
+ const partitionKeyValue = this.getWhereValue(where, partitionKeyName);
1370
+ if (partitionKeyValue === undefined) {
1371
+ // No partition key - must use Scan
1372
+ return { keyCondition: null, filterCondition: null };
1373
+ }
1374
+ // Build key condition expression
1375
+ const keyNames = {};
1376
+ const keyValues = {};
1377
+ const keyConditions = [];
1378
+ // Add partition key condition (must be equality)
1379
+ const pkNameKey = `#pk`;
1380
+ const pkValueKey = `:pkval`;
1381
+ keyNames[pkNameKey] = partitionKeyName;
1382
+ keyValues[pkValueKey] = partitionKeyValue;
1383
+ keyConditions.push(`${pkNameKey} = ${pkValueKey}`);
1384
+ // Check for sort key condition (can be equality or range)
1385
+ if (sortKeyName) {
1386
+ const sortKeyOp = this.getWhereOperator(where, sortKeyName);
1387
+ if (sortKeyOp) {
1388
+ const skNameKey = `#sk`;
1389
+ keyNames[skNameKey] = sortKeyName;
1390
+ if (sortKeyOp.op === '$EQ' || sortKeyOp.op === 'equality') {
1391
+ const skValueKey = `:skval`;
1392
+ keyValues[skValueKey] = sortKeyOp.value;
1393
+ keyConditions.push(`${skNameKey} = ${skValueKey}`);
1394
+ }
1395
+ else if (sortKeyOp.op === '$GT') {
1396
+ const skValueKey = `:skval`;
1397
+ keyValues[skValueKey] = sortKeyOp.value;
1398
+ keyConditions.push(`${skNameKey} > ${skValueKey}`);
1399
+ }
1400
+ else if (sortKeyOp.op === '$GTE') {
1401
+ const skValueKey = `:skval`;
1402
+ keyValues[skValueKey] = sortKeyOp.value;
1403
+ keyConditions.push(`${skNameKey} >= ${skValueKey}`);
1404
+ }
1405
+ else if (sortKeyOp.op === '$LT') {
1406
+ const skValueKey = `:skval`;
1407
+ keyValues[skValueKey] = sortKeyOp.value;
1408
+ keyConditions.push(`${skNameKey} < ${skValueKey}`);
1409
+ }
1410
+ else if (sortKeyOp.op === '$LTE') {
1411
+ const skValueKey = `:skval`;
1412
+ keyValues[skValueKey] = sortKeyOp.value;
1413
+ keyConditions.push(`${skNameKey} <= ${skValueKey}`);
1414
+ }
1415
+ else if (sortKeyOp.op === '$BETWEEN') {
1416
+ const [min, max] = sortKeyOp.value;
1417
+ keyValues[`:skmin`] = min;
1418
+ keyValues[`:skmax`] = max;
1419
+ keyConditions.push(`${skNameKey} BETWEEN :skmin AND :skmax`);
1420
+ }
1421
+ else if (sortKeyOp.op === '$BEGINS_WITH') {
1422
+ const skValueKey = `:skval`;
1423
+ keyValues[skValueKey] = sortKeyOp.value;
1424
+ keyConditions.push(`begins_with(${skNameKey}, ${skValueKey})`);
1425
+ }
1426
+ }
1427
+ }
1428
+ // Build filter condition for remaining where clauses
1429
+ const filterWhere = Object.assign({}, where);
1430
+ delete filterWhere[partitionKeyName];
1431
+ if (sortKeyName) {
1432
+ delete filterWhere[sortKeyName];
1433
+ }
1434
+ let filterCondition = null;
1435
+ if (Object.keys(filterWhere).length > 0) {
1436
+ filterCondition = this.buildFilterExpression(filterWhere, {}, {});
1437
+ }
1438
+ return {
1439
+ keyCondition: {
1440
+ expression: keyConditions.join(' AND '),
1441
+ names: keyNames,
1442
+ values: keyValues,
1443
+ },
1444
+ filterCondition,
1445
+ };
1446
+ }
1447
+ catch (error) {
1448
+ // If we can't get table metadata, fall back to Scan
1449
+ return { keyCondition: null, filterCondition: null };
1450
+ }
1451
+ }
1452
+ /**
1453
+ * Get simple value from where clause for a specific field
1454
+ */
1455
+ getWhereValue(where, fieldName) {
1456
+ const value = where[fieldName];
1457
+ if (value === undefined) {
1458
+ return undefined;
1459
+ }
1460
+ // Simple equality check
1461
+ if (typeof value !== 'object' || value === null) {
1462
+ return value;
1463
+ }
1464
+ // Check for $EQ operator
1465
+ if (value.$EQ !== undefined) {
1466
+ return value.$EQ;
1467
+ }
1468
+ return undefined;
1469
+ }
1470
+ /**
1471
+ * Get operator and value from where clause for a specific field
1472
+ */
1473
+ getWhereOperator(where, fieldName) {
1474
+ const value = where[fieldName];
1475
+ if (value === undefined) {
1476
+ return null;
1477
+ }
1478
+ // Simple equality
1479
+ if (typeof value !== 'object' || value === null) {
1480
+ return { op: 'equality', value };
1481
+ }
1482
+ // Check for operators
1483
+ for (const op of ['$EQ', '$GT', '$GTE', '$LT', '$LTE', '$BETWEEN', '$BEGINS_WITH']) {
1484
+ if (value[op] !== undefined) {
1485
+ return { op, value: value[op] };
1486
+ }
1487
+ }
1488
+ return null;
1489
+ }
1490
+ async getTableKey(tableName, item) {
1491
+ var _a;
1492
+ const { DescribeTableCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
1493
+ const response = await this.dynamoClient.send(new DescribeTableCommand({
1494
+ TableName: tableName,
1495
+ }));
1496
+ const key = {};
1497
+ const keySchema = ((_a = response.Table) === null || _a === void 0 ? void 0 : _a.KeySchema) || [];
1498
+ for (const keyDef of keySchema) {
1499
+ key[keyDef.AttributeName] = item[keyDef.AttributeName];
1500
+ }
1501
+ return key;
1502
+ }
1503
+ async waitForTableActive(tableName, maxWait = 60000) {
1504
+ var _a;
1505
+ const { DescribeTableCommand } = await Promise.resolve().then(() => __importStar(require('@aws-sdk/client-dynamodb')));
1506
+ const startTime = Date.now();
1507
+ while (Date.now() - startTime < maxWait) {
1508
+ const response = await this.dynamoClient.send(new DescribeTableCommand({
1509
+ TableName: tableName,
1510
+ }));
1511
+ if (((_a = response.Table) === null || _a === void 0 ? void 0 : _a.TableStatus) === 'ACTIVE') {
1512
+ return;
1513
+ }
1514
+ await new Promise(resolve => setTimeout(resolve, 1000));
1515
+ }
1516
+ throw new Error(`Table ${tableName} did not become active within ${maxWait}ms`);
1517
+ }
1518
+ mapToDynamoType(columnType) {
1519
+ const typeMap = {
1520
+ [enums_1.ColumnType.INTEGER]: 'N',
1521
+ [enums_1.ColumnType.BIGINT]: 'N',
1522
+ [enums_1.ColumnType.FLOAT]: 'N',
1523
+ [enums_1.ColumnType.DOUBLE]: 'N',
1524
+ [enums_1.ColumnType.DECIMAL]: 'N',
1525
+ [enums_1.ColumnType.STRING]: 'S',
1526
+ [enums_1.ColumnType.TEXT]: 'S',
1527
+ [enums_1.ColumnType.BOOLEAN]: 'BOOL',
1528
+ [enums_1.ColumnType.BINARY]: 'B',
1529
+ [enums_1.ColumnType.UUID]: 'S',
1530
+ };
1531
+ return typeMap[columnType] || 'S';
1532
+ }
1533
+ mapFromDynamoType(dynamoType) {
1534
+ const typeMap = {
1535
+ 'N': 'number',
1536
+ 'S': 'string',
1537
+ 'B': 'binary',
1538
+ 'BOOL': 'boolean',
1539
+ 'L': 'list',
1540
+ 'M': 'map',
1541
+ 'SS': 'stringSet',
1542
+ 'NS': 'numberSet',
1543
+ 'BS': 'binarySet',
1544
+ };
1545
+ return typeMap[dynamoType] || 'unknown';
1546
+ }
1547
+ chunkArray(array, size) {
1548
+ const chunks = [];
1549
+ for (let i = 0; i < array.length; i += size) {
1550
+ chunks.push(array.slice(i, i + size));
1551
+ }
1552
+ return chunks;
1553
+ }
1554
+ formatBytes(bytes) {
1555
+ if (bytes === 0)
1556
+ return '0 B';
1557
+ const k = 1024;
1558
+ const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
1559
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
1560
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
1561
+ }
1562
+ }
1563
+ exports.DynamoDBAdapter = DynamoDBAdapter;
1564
+ //# sourceMappingURL=dynamodb.adapter.js.map