@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,1371 @@
1
+ "use strict";
2
+ /**
3
+ * MySQL Adapter
4
+ *
5
+ * Database adapter for MySQL databases using the 'mysql2' library.
6
+ * Implements all methods from BaseAdapter with MySQL-specific optimizations.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.MySQLAdapter = void 0;
43
+ const base_adapter_1 = require("./base.adapter");
44
+ const enums_1 = require("../types/enums");
45
+ const database_error_1 = require("../utils/database-error");
46
+ /**
47
+ * MySQL database adapter
48
+ * Provides MySQL-specific implementations for all database operations
49
+ */
50
+ class MySQLAdapter extends base_adapter_1.BaseAdapter {
51
+ constructor() {
52
+ super(...arguments);
53
+ this.databaseType = enums_1.DatabaseType.MYSQL;
54
+ this.pool = null;
55
+ }
56
+ // ==================== CONNECTION METHODS ====================
57
+ async connect(options) {
58
+ try {
59
+ // Dynamic import of mysql2 to avoid bundling issues
60
+ const mysql = await Promise.resolve().then(() => __importStar(require('mysql2/promise')));
61
+ this.connectionUrl = options.connectionUrl;
62
+ this.connectionOptions = options; // Store for auto-reconnection
63
+ // Parse connection URL to extract components
64
+ const url = new URL(options.connectionUrl);
65
+ const poolConfig = {
66
+ host: url.hostname,
67
+ port: parseInt(url.port) || 3306,
68
+ user: url.username,
69
+ password: url.password,
70
+ database: url.pathname.slice(1),
71
+ waitForConnections: true,
72
+ connectionLimit: options.poolSize || 10,
73
+ queueLimit: 0,
74
+ connectTimeout: options.connectionTimeout || 10000,
75
+ ssl: options.ssl ? { rejectUnauthorized: false } : undefined,
76
+ };
77
+ this.pool = mysql.createPool(poolConfig);
78
+ // Test the connection
79
+ const connection = await this.pool.getConnection();
80
+ const [rows] = await connection.query('SELECT VERSION() as version');
81
+ connection.release();
82
+ this.client = this.pool;
83
+ this.connected = true;
84
+ return {
85
+ connected: true,
86
+ version: rows[0].version,
87
+ };
88
+ }
89
+ catch (error) {
90
+ throw database_error_1.DatabaseError.connectionError(`Failed to connect to MySQL: ${error.message}`, error);
91
+ }
92
+ }
93
+ async testConnection(options) {
94
+ try {
95
+ const mysql = await Promise.resolve().then(() => __importStar(require('mysql2/promise')));
96
+ const url = new URL(options.connectionUrl);
97
+ const connection = await mysql.createConnection({
98
+ host: url.hostname,
99
+ port: parseInt(url.port) || 3306,
100
+ user: url.username,
101
+ password: url.password,
102
+ database: url.pathname.slice(1),
103
+ connectTimeout: options.connectionTimeout || 5000,
104
+ });
105
+ const [rows] = await connection.query('SELECT VERSION() as version');
106
+ await connection.end();
107
+ return {
108
+ connected: true,
109
+ version: rows[0].version,
110
+ };
111
+ }
112
+ catch (error) {
113
+ return {
114
+ connected: false,
115
+ };
116
+ }
117
+ }
118
+ async disconnect() {
119
+ if (this.pool) {
120
+ await this.pool.end();
121
+ this.pool = null;
122
+ this.client = null;
123
+ this.connected = false;
124
+ }
125
+ }
126
+ // ==================== QUERY METHODS ====================
127
+ async query(query) {
128
+ var _a, _b;
129
+ this.ensureConnected();
130
+ try {
131
+ const connection = ((_a = query.options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
132
+ const [rows, fields] = await connection.query(query.sql, query.params);
133
+ // Get total count if needed for pagination
134
+ let count = rows.length;
135
+ if (query.options.limit || query.options.offset) {
136
+ const countSql = this.buildCountQuery(query);
137
+ // Calculate how many params to remove based on actual pagination options
138
+ let paramsToRemove = 0;
139
+ if (query.options.limit !== undefined)
140
+ paramsToRemove++;
141
+ if (query.options.offset !== undefined)
142
+ paramsToRemove++;
143
+ const countParams = paramsToRemove > 0 ? (_b = query.params) === null || _b === void 0 ? void 0 : _b.slice(0, -paramsToRemove) : query.params;
144
+ const [countRows] = await connection.query(countSql, countParams);
145
+ count = countRows[0].count;
146
+ }
147
+ return {
148
+ data: rows,
149
+ count,
150
+ fields: fields === null || fields === void 0 ? void 0 : fields.map((f) => f.name),
151
+ };
152
+ }
153
+ catch (error) {
154
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mysql');
155
+ }
156
+ }
157
+ async raw(options) {
158
+ this.ensureConnected();
159
+ return this.executeWithRetry(async () => {
160
+ var _a;
161
+ try {
162
+ const connection = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
163
+ const [rows, fields] = await connection.query(options.query, options.params);
164
+ const isArray = Array.isArray(rows);
165
+ return {
166
+ data: (isArray ? rows : []),
167
+ count: isArray ? rows.length : 0,
168
+ fields: fields === null || fields === void 0 ? void 0 : fields.map((f) => f.name),
169
+ };
170
+ }
171
+ catch (error) {
172
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mysql');
173
+ }
174
+ });
175
+ }
176
+ // ==================== WRITE METHODS ====================
177
+ async insert(options) {
178
+ var _a, _b;
179
+ this.ensureConnected();
180
+ try {
181
+ const connection = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
182
+ const data = Array.isArray(options.data) ? options.data : [options.data];
183
+ if (data.length === 0) {
184
+ return { data: [], count: 0, insertedIds: [] };
185
+ }
186
+ const columns = Object.keys(data[0]);
187
+ const values = [];
188
+ const valuePlaceholders = [];
189
+ data.forEach((record) => {
190
+ const rowPlaceholders = [];
191
+ columns.forEach((col) => {
192
+ let value = record[col];
193
+ // Serialize objects and arrays to JSON strings for MySQL JSON columns
194
+ if (value !== null && value !== undefined) {
195
+ if (Array.isArray(value) || (typeof value === 'object' && !(value instanceof Date))) {
196
+ value = JSON.stringify(value);
197
+ }
198
+ }
199
+ values.push(value);
200
+ rowPlaceholders.push('?');
201
+ });
202
+ valuePlaceholders.push(`(${rowPlaceholders.join(', ')})`);
203
+ });
204
+ let sql = `INSERT INTO ${this.escapeIdentifier(options.table)} (${columns.map(c => this.escapeIdentifier(c)).join(', ')}) VALUES ${valuePlaceholders.join(', ')}`;
205
+ // Handle ON DUPLICATE KEY (upsert)
206
+ if (options.onConflict) {
207
+ if (options.onConflict.action === 'ignore') {
208
+ sql = sql.replace('INSERT INTO', 'INSERT IGNORE INTO');
209
+ }
210
+ else if (options.onConflict.action === 'update' && options.onConflict.update) {
211
+ const updates = options.onConflict.update.map(col => `${this.escapeIdentifier(col)} = VALUES(${this.escapeIdentifier(col)})`).join(', ');
212
+ sql += ` ON DUPLICATE KEY UPDATE ${updates}`;
213
+ }
214
+ }
215
+ const [result] = await connection.query(sql, values);
216
+ // Get inserted IDs
217
+ const insertedIds = [];
218
+ const insertId = result.insertId;
219
+ const affectedRows = result.affectedRows;
220
+ // MySQL's insertId only works for AUTO_INCREMENT columns
221
+ // If insertId is 0, it means no AUTO_INCREMENT column or value wasn't generated
222
+ if (insertId > 0) {
223
+ for (let i = 0; i < data.length; i++) {
224
+ insertedIds.push(insertId + i);
225
+ }
226
+ }
227
+ // If returning is requested, fetch the inserted records
228
+ let returnedData = [];
229
+ if (options.returning) {
230
+ // If we have insertedIds from AUTO_INCREMENT, try to find primary key column
231
+ if (insertedIds.length > 0) {
232
+ // Get the primary key column name from the table
233
+ const [pkResult] = await connection.query(`SELECT COLUMN_NAME FROM information_schema.KEY_COLUMN_USAGE
234
+ WHERE TABLE_SCHEMA = DATABASE()
235
+ AND TABLE_NAME = ?
236
+ AND CONSTRAINT_NAME = 'PRIMARY'
237
+ ORDER BY ORDINAL_POSITION LIMIT 1`, [options.table]);
238
+ const pkColumn = ((_b = pkResult[0]) === null || _b === void 0 ? void 0 : _b.COLUMN_NAME) || 'id';
239
+ const [rows] = await connection.query(`SELECT * FROM ${this.escapeIdentifier(options.table)} WHERE ${this.escapeIdentifier(pkColumn)} IN (?)`, [insertedIds]);
240
+ returnedData = rows;
241
+ }
242
+ else {
243
+ // No AUTO_INCREMENT - fetch by matching the inserted data's values
244
+ // Build WHERE clauses to match each inserted record
245
+ const whereConditions = [];
246
+ const whereValues = [];
247
+ for (const record of data) {
248
+ const conditions = [];
249
+ for (const [col, val] of Object.entries(record)) {
250
+ if (val === null) {
251
+ conditions.push(`${this.escapeIdentifier(col)} IS NULL`);
252
+ }
253
+ else if (Array.isArray(val) || (typeof val === 'object' && !(val instanceof Date))) {
254
+ // Skip JSON columns in WHERE - they're complex to compare reliably
255
+ // The string columns should be enough to identify the record
256
+ continue;
257
+ }
258
+ else if (typeof val === 'boolean') {
259
+ // MySQL stores booleans as TINYINT(1), so convert to 1/0
260
+ conditions.push(`${this.escapeIdentifier(col)} = ?`);
261
+ whereValues.push(val ? 1 : 0);
262
+ }
263
+ else if (val instanceof Date) {
264
+ // For dates, compare as strings to avoid timezone issues
265
+ conditions.push(`${this.escapeIdentifier(col)} = ?`);
266
+ whereValues.push(val.toISOString().slice(0, 19).replace('T', ' '));
267
+ }
268
+ else {
269
+ conditions.push(`${this.escapeIdentifier(col)} = ?`);
270
+ whereValues.push(val);
271
+ }
272
+ }
273
+ if (conditions.length > 0) {
274
+ whereConditions.push(`(${conditions.join(' AND ')})`);
275
+ }
276
+ }
277
+ if (whereConditions.length > 0) {
278
+ const [rows] = await connection.query(`SELECT * FROM ${this.escapeIdentifier(options.table)} WHERE ${whereConditions.join(' OR ')}`, whereValues);
279
+ returnedData = rows;
280
+ }
281
+ }
282
+ }
283
+ return {
284
+ data: returnedData,
285
+ count: affectedRows,
286
+ insertedIds,
287
+ };
288
+ }
289
+ catch (error) {
290
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mysql');
291
+ }
292
+ }
293
+ async update(options) {
294
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k;
295
+ this.ensureConnected();
296
+ try {
297
+ const connection = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
298
+ const setClauses = [];
299
+ const values = [];
300
+ // Track nested JSON updates to merge them (multiple updates to same column)
301
+ const jsonSetUpdates = new Map();
302
+ // Build SET clause
303
+ for (const [key, value] of Object.entries(options.data)) {
304
+ // Check if this is a nested JSON path (e.g., 'metadata.preferences.notifications')
305
+ if (key.includes('.') && !this.isUpdateOperator(value)) {
306
+ const parts = key.split('.');
307
+ const column = parts[0];
308
+ const jsonPath = '$.' + parts.slice(1).join('.');
309
+ // Collect nested updates for the same column
310
+ if (!jsonSetUpdates.has(column)) {
311
+ jsonSetUpdates.set(column, []);
312
+ }
313
+ jsonSetUpdates.get(column).push({ path: jsonPath, value });
314
+ continue;
315
+ }
316
+ if (value && typeof value === 'object' && this.isUpdateOperator(value)) {
317
+ // Handle update operators - support both lowercase (new) and uppercase (legacy)
318
+ if ('$inc' in value || '$INC' in value) {
319
+ setClauses.push(`${this.escapeIdentifier(key)} = ${this.escapeIdentifier(key)} + ?`);
320
+ values.push((_b = value.$inc) !== null && _b !== void 0 ? _b : value.$INC);
321
+ }
322
+ else if ('$dec' in value || '$DEC' in value) {
323
+ setClauses.push(`${this.escapeIdentifier(key)} = ${this.escapeIdentifier(key)} - ?`);
324
+ values.push((_c = value.$dec) !== null && _c !== void 0 ? _c : value.$DEC);
325
+ }
326
+ else if ('$mul' in value || '$MUL' in value) {
327
+ setClauses.push(`${this.escapeIdentifier(key)} = ${this.escapeIdentifier(key)} * ?`);
328
+ values.push((_d = value.$mul) !== null && _d !== void 0 ? _d : value.$MUL);
329
+ }
330
+ else if ('$min' in value || '$MIN' in value) {
331
+ // LEAST function for minimum
332
+ setClauses.push(`${this.escapeIdentifier(key)} = LEAST(${this.escapeIdentifier(key)}, ?)`);
333
+ values.push((_e = value.$min) !== null && _e !== void 0 ? _e : value.$MIN);
334
+ }
335
+ else if ('$max' in value || '$MAX' in value) {
336
+ // GREATEST function for maximum
337
+ setClauses.push(`${this.escapeIdentifier(key)} = GREATEST(${this.escapeIdentifier(key)}, ?)`);
338
+ values.push((_f = value.$max) !== null && _f !== void 0 ? _f : value.$MAX);
339
+ }
340
+ else if ('$set' in value || '$SET' in value) {
341
+ setClauses.push(`${this.escapeIdentifier(key)} = ?`);
342
+ values.push((_g = value.$set) !== null && _g !== void 0 ? _g : value.$SET);
343
+ }
344
+ else if (('$unset' in value && value.$unset) || ('$UNSET' in value && value.$UNSET)) {
345
+ setClauses.push(`${this.escapeIdentifier(key)} = NULL`);
346
+ }
347
+ else if ('$push' in value || '$PUSH' in value) {
348
+ // JSON array append for MySQL (column must be JSON type)
349
+ setClauses.push(`${this.escapeIdentifier(key)} = JSON_ARRAY_APPEND(COALESCE(${this.escapeIdentifier(key)}, '[]'), '$', ?)`);
350
+ values.push((_h = value.$push) !== null && _h !== void 0 ? _h : value.$PUSH);
351
+ }
352
+ else if ('$pull' in value || '$PULL' in value) {
353
+ // JSON array remove for MySQL - requires JSON_REMOVE with path, complex operation
354
+ // For simplicity, use JSON_REMOVE with search
355
+ setClauses.push(`${this.escapeIdentifier(key)} = JSON_REMOVE(${this.escapeIdentifier(key)}, JSON_UNQUOTE(JSON_SEARCH(${this.escapeIdentifier(key)}, 'one', ?)))`);
356
+ values.push((_j = value.$pull) !== null && _j !== void 0 ? _j : value.$PULL);
357
+ }
358
+ else if ('$addToSet' in value || '$ADDTOSET' in value) {
359
+ // Add unique to JSON array - use IF to check existence
360
+ const addValue = (_k = value.$addToSet) !== null && _k !== void 0 ? _k : value.$ADDTOSET;
361
+ setClauses.push(`${this.escapeIdentifier(key)} = IF(JSON_CONTAINS(COALESCE(${this.escapeIdentifier(key)}, '[]'), JSON_QUOTE(?)), ${this.escapeIdentifier(key)}, JSON_ARRAY_APPEND(COALESCE(${this.escapeIdentifier(key)}, '[]'), '$', ?))`);
362
+ values.push(addValue, addValue);
363
+ }
364
+ else if ('$currentDate' in value || '$CURRENTDATE' in value) {
365
+ setClauses.push(`${this.escapeIdentifier(key)} = NOW()`);
366
+ }
367
+ }
368
+ else {
369
+ setClauses.push(`${this.escapeIdentifier(key)} = ?`);
370
+ values.push(value);
371
+ }
372
+ }
373
+ // Build JSON_SET clauses for nested JSON updates
374
+ for (const [column, updates] of jsonSetUpdates) {
375
+ // Build nested JSON_SET calls for multiple updates to the same column
376
+ // MySQL's JSON_SET can take multiple path-value pairs
377
+ let setExpr = `COALESCE(${this.escapeIdentifier(column)}, '{}')`;
378
+ const pathValuePairs = [];
379
+ for (const update of updates) {
380
+ pathValuePairs.push(`'${update.path}', CAST(? AS JSON)`);
381
+ values.push(JSON.stringify(update.value));
382
+ }
383
+ setExpr = `JSON_SET(${setExpr}, ${pathValuePairs.join(', ')})`;
384
+ setClauses.push(`${this.escapeIdentifier(column)} = ${setExpr}`);
385
+ }
386
+ let sql = `UPDATE ${this.escapeIdentifier(options.table)} SET ${setClauses.join(', ')}`;
387
+ // Build WHERE clause - required for UPDATE to prevent accidental mass updates
388
+ if (options.where && Object.keys(options.where).length > 0) {
389
+ const { whereClause, whereParams } = this.buildWhereClause(options.where);
390
+ // Only add WHERE if we have a non-empty clause
391
+ if (whereClause && whereClause.trim() !== '') {
392
+ sql += ` WHERE ${whereClause}`;
393
+ values.push(...whereParams);
394
+ }
395
+ else {
396
+ // Empty where object - throw error to prevent updating all rows
397
+ throw new database_error_1.DatabaseError('UPDATE operation requires a valid WHERE clause to prevent accidental mass updates', enums_1.DatabaseErrorType.VALIDATION_ERROR);
398
+ }
399
+ }
400
+ else {
401
+ // No where clause provided - this would update all rows, which is dangerous
402
+ throw new database_error_1.DatabaseError('UPDATE operation requires a WHERE clause to prevent accidental mass updates. Provide a where clause with at least one condition.', enums_1.DatabaseErrorType.VALIDATION_ERROR);
403
+ }
404
+ const [result] = await connection.query(sql, values);
405
+ const affectedRows = result.affectedRows;
406
+ // If returning is requested, fetch updated records
407
+ let returnedData = [];
408
+ if (options.returning && options.where) {
409
+ const { whereClause, whereParams } = this.buildWhereClause(options.where);
410
+ const [rows] = await connection.query(`SELECT * FROM ${this.escapeIdentifier(options.table)} WHERE ${whereClause}`, whereParams);
411
+ returnedData = rows;
412
+ }
413
+ return {
414
+ data: returnedData,
415
+ count: affectedRows,
416
+ };
417
+ }
418
+ catch (error) {
419
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mysql');
420
+ }
421
+ }
422
+ async delete(options) {
423
+ var _a;
424
+ this.ensureConnected();
425
+ try {
426
+ const connection = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
427
+ let sql = `DELETE FROM ${this.escapeIdentifier(options.table)}`;
428
+ const values = [];
429
+ // Fetch records before delete if returning is requested
430
+ let deletedData;
431
+ if (options.returning && options.where) {
432
+ const { whereClause, whereParams } = this.buildWhereClause(options.where);
433
+ const [rows] = await connection.query(`SELECT * FROM ${this.escapeIdentifier(options.table)} WHERE ${whereClause}`, whereParams);
434
+ deletedData = rows;
435
+ }
436
+ // Build WHERE clause
437
+ if (options.where) {
438
+ const { whereClause, whereParams } = this.buildWhereClause(options.where);
439
+ sql += ` WHERE ${whereClause}`;
440
+ values.push(...whereParams);
441
+ }
442
+ const [result] = await connection.query(sql, values);
443
+ return {
444
+ count: result.affectedRows,
445
+ data: deletedData,
446
+ };
447
+ }
448
+ catch (error) {
449
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mysql');
450
+ }
451
+ }
452
+ async upsert(options) {
453
+ this.ensureConnected();
454
+ try {
455
+ const insertResult = await this.insert(Object.assign(Object.assign({}, options), { onConflict: {
456
+ columns: options.conflictKeys,
457
+ action: 'update',
458
+ update: options.updateColumns || Object.keys(options.data).filter(k => !options.conflictKeys.includes(k)),
459
+ }, returning: true }));
460
+ return {
461
+ data: insertResult.data,
462
+ count: insertResult.count,
463
+ operation: insertResult.count > 0 ? 'inserted' : 'updated',
464
+ };
465
+ }
466
+ catch (error) {
467
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mysql');
468
+ }
469
+ }
470
+ // ==================== AGGREGATION METHODS ====================
471
+ async count(options) {
472
+ var _a;
473
+ this.ensureConnected();
474
+ try {
475
+ const connection = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
476
+ const column = options.column ? this.escapeIdentifier(options.column) : '*';
477
+ const distinctPrefix = options.distinct ? 'DISTINCT ' : '';
478
+ let sql = `SELECT COUNT(${distinctPrefix}${column}) as count FROM ${this.escapeIdentifier(options.table)}`;
479
+ const values = [];
480
+ if (options.where) {
481
+ const { whereClause, whereParams } = this.buildWhereClause(options.where);
482
+ sql += ` WHERE ${whereClause}`;
483
+ values.push(...whereParams);
484
+ }
485
+ const [rows] = await connection.query(sql, values);
486
+ return rows[0].count;
487
+ }
488
+ catch (error) {
489
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mysql');
490
+ }
491
+ }
492
+ async sum(options) {
493
+ var _a;
494
+ this.ensureConnected();
495
+ try {
496
+ const connection = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
497
+ let sql = `SELECT COALESCE(SUM(${this.escapeIdentifier(options.column)}), 0) as sum FROM ${this.escapeIdentifier(options.table)}`;
498
+ const values = [];
499
+ if (options.where) {
500
+ const { whereClause, whereParams } = this.buildWhereClause(options.where);
501
+ sql += ` WHERE ${whereClause}`;
502
+ values.push(...whereParams);
503
+ }
504
+ const [rows] = await connection.query(sql, values);
505
+ return parseFloat(rows[0].sum);
506
+ }
507
+ catch (error) {
508
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mysql');
509
+ }
510
+ }
511
+ async avg(options) {
512
+ var _a;
513
+ this.ensureConnected();
514
+ try {
515
+ const connection = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
516
+ let sql = `SELECT COALESCE(AVG(${this.escapeIdentifier(options.column)}), 0) as avg FROM ${this.escapeIdentifier(options.table)}`;
517
+ const values = [];
518
+ if (options.where) {
519
+ const { whereClause, whereParams } = this.buildWhereClause(options.where);
520
+ sql += ` WHERE ${whereClause}`;
521
+ values.push(...whereParams);
522
+ }
523
+ const [rows] = await connection.query(sql, values);
524
+ return parseFloat(rows[0].avg);
525
+ }
526
+ catch (error) {
527
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mysql');
528
+ }
529
+ }
530
+ async min(options) {
531
+ var _a;
532
+ this.ensureConnected();
533
+ try {
534
+ const connection = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
535
+ let sql = `SELECT MIN(${this.escapeIdentifier(options.column)}) as min FROM ${this.escapeIdentifier(options.table)}`;
536
+ const values = [];
537
+ if (options.where) {
538
+ const { whereClause, whereParams } = this.buildWhereClause(options.where);
539
+ sql += ` WHERE ${whereClause}`;
540
+ values.push(...whereParams);
541
+ }
542
+ const [rows] = await connection.query(sql, values);
543
+ return rows[0].min;
544
+ }
545
+ catch (error) {
546
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mysql');
547
+ }
548
+ }
549
+ async max(options) {
550
+ var _a;
551
+ this.ensureConnected();
552
+ try {
553
+ const connection = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
554
+ let sql = `SELECT MAX(${this.escapeIdentifier(options.column)}) as max FROM ${this.escapeIdentifier(options.table)}`;
555
+ const values = [];
556
+ if (options.where) {
557
+ const { whereClause, whereParams } = this.buildWhereClause(options.where);
558
+ sql += ` WHERE ${whereClause}`;
559
+ values.push(...whereParams);
560
+ }
561
+ const [rows] = await connection.query(sql, values);
562
+ return rows[0].max;
563
+ }
564
+ catch (error) {
565
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mysql');
566
+ }
567
+ }
568
+ async aggregate(builtAggregation) {
569
+ var _a;
570
+ this.ensureConnected();
571
+ try {
572
+ const connection = ((_a = builtAggregation.options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
573
+ const [rows] = await connection.query(builtAggregation.sql, builtAggregation.params);
574
+ return rows[0] || {};
575
+ }
576
+ catch (error) {
577
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mysql');
578
+ }
579
+ }
580
+ async groupBy(builtGroupBy) {
581
+ var _a;
582
+ this.ensureConnected();
583
+ try {
584
+ const connection = ((_a = builtGroupBy.options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
585
+ const [rows] = await connection.query(builtGroupBy.sql, builtGroupBy.params);
586
+ // Transform rows into IGroupByResult format
587
+ const options = builtGroupBy.options;
588
+ return rows.map((row) => {
589
+ var _a;
590
+ const group = {};
591
+ const aggregates = {};
592
+ for (const key of Object.keys(row)) {
593
+ if ((_a = options.groupBy) === null || _a === void 0 ? void 0 : _a.includes(key)) {
594
+ group[key] = row[key];
595
+ }
596
+ else {
597
+ aggregates[key] = row[key];
598
+ }
599
+ }
600
+ return { group, aggregates: aggregates };
601
+ });
602
+ }
603
+ catch (error) {
604
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mysql');
605
+ }
606
+ }
607
+ // ==================== TRANSACTION METHODS ====================
608
+ async beginTransaction(isolationLevel, readOnly, timeout) {
609
+ this.ensureConnected();
610
+ try {
611
+ const connection = await this.pool.getConnection();
612
+ const id = `mysql_txn_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
613
+ // Set isolation level if specified
614
+ if (isolationLevel) {
615
+ await connection.query(`SET TRANSACTION ISOLATION LEVEL ${this.mapIsolationLevel(isolationLevel)}`);
616
+ }
617
+ // Set read-only if specified
618
+ if (readOnly) {
619
+ await connection.query('SET TRANSACTION READ ONLY');
620
+ }
621
+ // Begin transaction
622
+ await connection.query('START TRANSACTION');
623
+ // Set timeout if specified
624
+ if (timeout) {
625
+ await connection.query(`SET SESSION MAX_EXECUTION_TIME = ${timeout}`);
626
+ }
627
+ return {
628
+ id,
629
+ databaseType: 'mysql',
630
+ isolationLevel: isolationLevel || enums_1.IsolationLevel.READ_COMMITTED,
631
+ readOnly: readOnly || false,
632
+ timeout,
633
+ startedAt: new Date(),
634
+ client: connection,
635
+ savepoints: new Map(),
636
+ status: 'active',
637
+ };
638
+ }
639
+ catch (error) {
640
+ throw database_error_1.DatabaseError.transactionError(`Failed to begin transaction: ${error.message}`, error);
641
+ }
642
+ }
643
+ async commitTransaction(context) {
644
+ try {
645
+ await context.client.query('COMMIT');
646
+ context.client.release();
647
+ context.status = 'committed';
648
+ }
649
+ catch (error) {
650
+ context.status = 'error';
651
+ context.client.release();
652
+ throw database_error_1.DatabaseError.transactionError(`Failed to commit transaction: ${error.message}`, error);
653
+ }
654
+ }
655
+ async rollbackTransaction(context) {
656
+ try {
657
+ await context.client.query('ROLLBACK');
658
+ context.client.release();
659
+ context.status = 'rolled_back';
660
+ }
661
+ catch (error) {
662
+ context.status = 'error';
663
+ context.client.release();
664
+ throw database_error_1.DatabaseError.transactionError(`Failed to rollback transaction: ${error.message}`, error);
665
+ }
666
+ }
667
+ async createSavepoint(context, name) {
668
+ try {
669
+ await context.client.query(`SAVEPOINT ${this.escapeIdentifier(name)}`);
670
+ const savepoint = {
671
+ name,
672
+ release: async () => {
673
+ await this.releaseSavepoint(context, savepoint);
674
+ },
675
+ rollback: async () => {
676
+ await this.rollbackToSavepoint(context, savepoint);
677
+ },
678
+ };
679
+ context.savepoints.set(name, savepoint);
680
+ return savepoint;
681
+ }
682
+ catch (error) {
683
+ throw database_error_1.DatabaseError.transactionError(`Failed to create savepoint: ${error.message}`, error);
684
+ }
685
+ }
686
+ async releaseSavepoint(context, savepoint) {
687
+ try {
688
+ await context.client.query(`RELEASE SAVEPOINT ${this.escapeIdentifier(savepoint.name)}`);
689
+ context.savepoints.delete(savepoint.name);
690
+ }
691
+ catch (error) {
692
+ throw database_error_1.DatabaseError.transactionError(`Failed to release savepoint: ${error.message}`, error);
693
+ }
694
+ }
695
+ async rollbackToSavepoint(context, savepoint) {
696
+ try {
697
+ await context.client.query(`ROLLBACK TO SAVEPOINT ${this.escapeIdentifier(savepoint.name)}`);
698
+ }
699
+ catch (error) {
700
+ throw database_error_1.DatabaseError.transactionError(`Failed to rollback to savepoint: ${error.message}`, error);
701
+ }
702
+ }
703
+ supportsSavepoints() {
704
+ return true;
705
+ }
706
+ // ==================== SCHEMA METHODS ====================
707
+ async createTable(definition, options) {
708
+ this.ensureConnected();
709
+ try {
710
+ const columnDefs = definition.columns.map(col => this.buildColumnDefinition(col)).join(', ');
711
+ let sql = 'CREATE';
712
+ if (options === null || options === void 0 ? void 0 : options.temporary)
713
+ sql += ' TEMPORARY';
714
+ sql += ' TABLE';
715
+ if (options === null || options === void 0 ? void 0 : options.ifNotExists)
716
+ sql += ' IF NOT EXISTS';
717
+ sql += ` ${this.escapeIdentifier(definition.name)} (${columnDefs}`;
718
+ // Add table constraints
719
+ if (definition.constraints) {
720
+ const constraintDefs = definition.constraints.map(c => this.buildConstraintDefinition(c)).join(', ');
721
+ sql += `, ${constraintDefs}`;
722
+ }
723
+ sql += ') ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci';
724
+ // Add table comment
725
+ if (definition.comment) {
726
+ sql += ` COMMENT=${this.escapeValue(definition.comment)}`;
727
+ }
728
+ await this.pool.query(sql);
729
+ // Create indexes
730
+ if (definition.indexes) {
731
+ for (const index of definition.indexes) {
732
+ await this.createIndex(index);
733
+ }
734
+ }
735
+ }
736
+ catch (error) {
737
+ throw database_error_1.DatabaseError.schemaError(`Failed to create table: ${error.message}`, error);
738
+ }
739
+ }
740
+ async alterTable(tableName, operations) {
741
+ this.ensureConnected();
742
+ try {
743
+ for (const op of operations) {
744
+ let sql = `ALTER TABLE ${this.escapeIdentifier(tableName)}`;
745
+ switch (op.type) {
746
+ case 'ADD':
747
+ if (op.column) {
748
+ sql += ` ADD COLUMN ${this.buildColumnDefinition(op.column)}`;
749
+ }
750
+ else if (op.constraint) {
751
+ sql += ` ADD ${this.buildConstraintDefinition(op.constraint)}`;
752
+ }
753
+ break;
754
+ case 'DROP':
755
+ if (op.columnName) {
756
+ sql += ` DROP COLUMN ${this.escapeIdentifier(op.columnName)}`;
757
+ }
758
+ else if (op.constraintName) {
759
+ sql += ` DROP CONSTRAINT ${this.escapeIdentifier(op.constraintName)}`;
760
+ }
761
+ break;
762
+ case 'MODIFY':
763
+ if (op.column) {
764
+ sql += ` MODIFY COLUMN ${this.buildColumnDefinition(op.column)}`;
765
+ }
766
+ break;
767
+ case 'RENAME':
768
+ if (op.oldName && op.newName) {
769
+ sql += ` RENAME COLUMN ${this.escapeIdentifier(op.oldName)} TO ${this.escapeIdentifier(op.newName)}`;
770
+ }
771
+ break;
772
+ }
773
+ await this.pool.query(sql);
774
+ }
775
+ }
776
+ catch (error) {
777
+ throw database_error_1.DatabaseError.schemaError(`Failed to alter table: ${error.message}`, error);
778
+ }
779
+ }
780
+ async dropTable(tableName, ifExists, cascade) {
781
+ this.ensureConnected();
782
+ try {
783
+ let sql = 'DROP TABLE';
784
+ if (ifExists)
785
+ sql += ' IF EXISTS';
786
+ sql += ` ${this.escapeIdentifier(tableName)}`;
787
+ // MySQL doesn't support CASCADE in DROP TABLE
788
+ await this.pool.query(sql);
789
+ }
790
+ catch (error) {
791
+ throw database_error_1.DatabaseError.schemaError(`Failed to drop table: ${error.message}`, error);
792
+ }
793
+ }
794
+ async listTables() {
795
+ this.ensureConnected();
796
+ try {
797
+ const [rows] = await this.pool.query('SHOW TABLES');
798
+ return rows.map((r) => Object.values(r)[0]);
799
+ }
800
+ catch (error) {
801
+ throw database_error_1.DatabaseError.schemaError(`Failed to list tables: ${error.message}`, error);
802
+ }
803
+ }
804
+ async listTablesWithInfo() {
805
+ this.ensureConnected();
806
+ try {
807
+ const [rows] = await this.pool.query(`
808
+ SELECT
809
+ t.table_name as name,
810
+ t.table_schema as \`schema\`,
811
+ t.table_rows as estimated_row_count,
812
+ t.table_comment as comment
813
+ FROM information_schema.tables t
814
+ WHERE t.table_schema = DATABASE()
815
+ AND t.table_type = 'BASE TABLE'
816
+ ORDER BY t.table_name
817
+ `);
818
+ return rows.map((r) => ({
819
+ name: r.name,
820
+ schema: r.schema,
821
+ estimatedRowCount: r.estimated_row_count != null ? Number(r.estimated_row_count) : undefined,
822
+ comment: r.comment || undefined,
823
+ }));
824
+ }
825
+ catch (error) {
826
+ throw database_error_1.DatabaseError.schemaError(`Failed to list tables with info: ${error.message}`, error);
827
+ }
828
+ }
829
+ async tableExists(tableName) {
830
+ this.ensureConnected();
831
+ try {
832
+ const [rows] = await this.pool.query(`SELECT COUNT(*) as count FROM information_schema.tables WHERE table_schema = DATABASE() AND table_name = ?`, [tableName]);
833
+ return rows[0].count > 0;
834
+ }
835
+ catch (error) {
836
+ throw database_error_1.DatabaseError.schemaError(`Failed to check table existence: ${error.message}`, error);
837
+ }
838
+ }
839
+ async getTableSchema(tableName) {
840
+ this.ensureConnected();
841
+ try {
842
+ // Get columns
843
+ const [columns] = await this.pool.query(`SELECT
844
+ COLUMN_NAME as name,
845
+ DATA_TYPE as type,
846
+ IS_NULLABLE = 'YES' as nullable,
847
+ COLUMN_DEFAULT as default_value,
848
+ CHARACTER_MAXIMUM_LENGTH as max_length,
849
+ NUMERIC_PRECISION as \`precision\`,
850
+ NUMERIC_SCALE as scale,
851
+ COLUMN_KEY = 'PRI' as is_primary_key,
852
+ COLUMN_KEY = 'UNI' as is_unique,
853
+ EXTRA LIKE '%auto_increment%' as is_auto_increment,
854
+ COLUMN_COMMENT as comment
855
+ FROM information_schema.columns
856
+ WHERE table_schema = DATABASE() AND table_name = ?
857
+ ORDER BY ordinal_position`, [tableName]);
858
+ // Get primary key
859
+ const primaryKey = columns
860
+ .filter((c) => c.is_primary_key)
861
+ .map((c) => c.name);
862
+ // Get indexes
863
+ const indexes = await this.listIndexes(tableName);
864
+ // Get constraints
865
+ const [constraintRows] = await this.pool.query(`SELECT
866
+ CONSTRAINT_NAME as name,
867
+ CONSTRAINT_TYPE as type
868
+ FROM information_schema.table_constraints
869
+ WHERE table_schema = DATABASE() AND table_name = ?`, [tableName]);
870
+ const columnInfos = columns.map((col) => ({
871
+ name: col.name,
872
+ type: col.type,
873
+ nullable: !!col.nullable,
874
+ defaultValue: col.default_value,
875
+ isPrimaryKey: !!col.is_primary_key,
876
+ isUnique: !!col.is_unique,
877
+ isAutoIncrement: !!col.is_auto_increment,
878
+ maxLength: col.max_length,
879
+ precision: col.precision,
880
+ scale: col.scale,
881
+ comment: col.comment || undefined,
882
+ }));
883
+ const constraints = constraintRows.map((c) => ({
884
+ name: c.name,
885
+ type: c.type,
886
+ columns: [], // Would need additional query to get columns
887
+ }));
888
+ return {
889
+ name: tableName,
890
+ columns: columnInfos,
891
+ indexes,
892
+ constraints,
893
+ primaryKey: primaryKey.length > 0 ? primaryKey : undefined,
894
+ };
895
+ }
896
+ catch (error) {
897
+ throw database_error_1.DatabaseError.schemaError(`Failed to get table schema: ${error.message}`, error);
898
+ }
899
+ }
900
+ async createIndex(index, ifNotExists, concurrent) {
901
+ this.ensureConnected();
902
+ try {
903
+ let sql = 'CREATE';
904
+ if (index.unique)
905
+ sql += ' UNIQUE';
906
+ // Index type for MySQL
907
+ if (index.method === 'FULLTEXT') {
908
+ sql += ' FULLTEXT';
909
+ }
910
+ else if (index.method === 'SPATIAL') {
911
+ sql += ' SPATIAL';
912
+ }
913
+ sql += ' INDEX';
914
+ sql += ` ${this.escapeIdentifier(index.name)} ON ${this.escapeIdentifier(index.table)}`;
915
+ // Add columns
916
+ const columnDefs = index.columns.map(col => {
917
+ let def = this.escapeIdentifier(col.name);
918
+ if (col.order)
919
+ def += ` ${col.order}`;
920
+ return def;
921
+ }).join(', ');
922
+ sql += ` (${columnDefs})`;
923
+ // Add index type (BTREE, HASH)
924
+ if (index.method && !['FULLTEXT', 'SPATIAL'].includes(index.method)) {
925
+ sql += ` USING ${index.method}`;
926
+ }
927
+ // Add comment
928
+ if (index.comment) {
929
+ sql += ` COMMENT ${this.escapeValue(index.comment)}`;
930
+ }
931
+ await this.pool.query(sql);
932
+ }
933
+ catch (error) {
934
+ throw database_error_1.DatabaseError.schemaError(`Failed to create index: ${error.message}`, error);
935
+ }
936
+ }
937
+ async dropIndex(tableName, indexName, ifExists, concurrent, cascade) {
938
+ this.ensureConnected();
939
+ try {
940
+ let sql = `DROP INDEX ${this.escapeIdentifier(indexName)} ON ${this.escapeIdentifier(tableName)}`;
941
+ await this.pool.query(sql);
942
+ }
943
+ catch (error) {
944
+ throw database_error_1.DatabaseError.schemaError(`Failed to drop index: ${error.message}`, error);
945
+ }
946
+ }
947
+ async listIndexes(tableName, includeSystem) {
948
+ this.ensureConnected();
949
+ try {
950
+ const [rows] = await this.pool.query(`SHOW INDEX FROM ${this.escapeIdentifier(tableName)}`);
951
+ // Group by index name
952
+ const indexMap = new Map();
953
+ for (const row of rows) {
954
+ const indexName = row.Key_name;
955
+ if (!indexMap.has(indexName)) {
956
+ indexMap.set(indexName, {
957
+ name: indexName,
958
+ table: tableName,
959
+ columns: [],
960
+ unique: !row.Non_unique,
961
+ primaryKey: indexName === 'PRIMARY',
962
+ type: row.Index_type,
963
+ });
964
+ }
965
+ indexMap.get(indexName).columns.push(row.Column_name);
966
+ }
967
+ return Array.from(indexMap.values());
968
+ }
969
+ catch (error) {
970
+ throw database_error_1.DatabaseError.schemaError(`Failed to list indexes: ${error.message}`, error);
971
+ }
972
+ }
973
+ async getIndexStatistics(tableName, indexName) {
974
+ this.ensureConnected();
975
+ try {
976
+ let sql = `
977
+ SELECT
978
+ index_name,
979
+ table_name,
980
+ stat_value * @@innodb_page_size as size_bytes
981
+ FROM mysql.innodb_index_stats
982
+ WHERE database_name = DATABASE() AND table_name = ? AND stat_name = 'size'
983
+ `;
984
+ const params = [tableName];
985
+ if (indexName) {
986
+ sql += ` AND index_name = ?`;
987
+ params.push(indexName);
988
+ }
989
+ const [rows] = await this.pool.query(sql, params);
990
+ return rows.map((row) => ({
991
+ indexName: row.index_name,
992
+ tableName: row.table_name,
993
+ scans: 0, // MySQL doesn't provide this easily
994
+ tuplesRead: 0,
995
+ sizeBytes: parseInt(row.size_bytes, 10) || 0,
996
+ sizeFormatted: this.formatBytes(parseInt(row.size_bytes, 10) || 0),
997
+ }));
998
+ }
999
+ catch (error) {
1000
+ throw database_error_1.DatabaseError.schemaError(`Failed to get index statistics: ${error.message}`, error);
1001
+ }
1002
+ }
1003
+ // ==================== UTILITY METHODS ====================
1004
+ escapeIdentifier(identifier) {
1005
+ // MySQL uses backticks for identifiers
1006
+ return `\`${identifier.replace(/`/g, '``')}\``;
1007
+ }
1008
+ escapeValue(value) {
1009
+ if (value === null || value === undefined) {
1010
+ return 'NULL';
1011
+ }
1012
+ if (typeof value === 'number') {
1013
+ return String(value);
1014
+ }
1015
+ if (typeof value === 'boolean') {
1016
+ return value ? '1' : '0';
1017
+ }
1018
+ if (value instanceof Date) {
1019
+ return `'${value.toISOString().slice(0, 19).replace('T', ' ')}'`;
1020
+ }
1021
+ if (typeof value === 'object') {
1022
+ return `'${JSON.stringify(value).replace(/'/g, "''")}'`;
1023
+ }
1024
+ // String - escape single quotes
1025
+ return `'${String(value).replace(/'/g, "''")}'`;
1026
+ }
1027
+ /**
1028
+ * Check if value is an update operator object
1029
+ * Supports both lowercase (new) and uppercase (legacy) operators
1030
+ */
1031
+ isUpdateOperator(value) {
1032
+ if (!value || typeof value !== 'object')
1033
+ return false;
1034
+ // Support both lowercase (Mongoose style) and uppercase (legacy) operators
1035
+ const operators = [
1036
+ '$inc', '$INC', '$dec', '$DEC', '$mul', '$MUL', '$min', '$MIN', '$max', '$MAX',
1037
+ '$set', '$SET', '$unset', '$UNSET', '$push', '$PUSH', '$pull', '$PULL',
1038
+ '$addToSet', '$ADDTOSET', '$currentDate', '$CURRENTDATE'
1039
+ ];
1040
+ return operators.some(op => op in value);
1041
+ }
1042
+ getParameterPlaceholder(index) {
1043
+ // MySQL uses ? for all parameters
1044
+ return '?';
1045
+ }
1046
+ getColumnTypeString(columnType, options) {
1047
+ const typeMap = {
1048
+ [enums_1.ColumnType.INTEGER]: 'INT',
1049
+ [enums_1.ColumnType.BIGINT]: 'BIGINT',
1050
+ [enums_1.ColumnType.SMALLINT]: 'SMALLINT',
1051
+ [enums_1.ColumnType.FLOAT]: 'FLOAT',
1052
+ [enums_1.ColumnType.DOUBLE]: 'DOUBLE',
1053
+ [enums_1.ColumnType.DECIMAL]: (options === null || options === void 0 ? void 0 : options.precision)
1054
+ ? `DECIMAL(${options.precision}${options.scale ? `, ${options.scale}` : ''})`
1055
+ : 'DECIMAL(10,2)',
1056
+ [enums_1.ColumnType.STRING]: (options === null || options === void 0 ? void 0 : options.maxLength) ? `VARCHAR(${options.maxLength})` : 'VARCHAR(255)',
1057
+ [enums_1.ColumnType.TEXT]: 'TEXT',
1058
+ [enums_1.ColumnType.BOOLEAN]: 'TINYINT(1)',
1059
+ [enums_1.ColumnType.DATE]: 'DATE',
1060
+ [enums_1.ColumnType.DATETIME]: 'DATETIME',
1061
+ [enums_1.ColumnType.TIMESTAMP]: 'TIMESTAMP',
1062
+ [enums_1.ColumnType.TIME]: 'TIME',
1063
+ [enums_1.ColumnType.JSON]: 'JSON',
1064
+ [enums_1.ColumnType.JSONB]: 'JSON', // MySQL uses JSON for both
1065
+ [enums_1.ColumnType.UUID]: 'CHAR(36)',
1066
+ [enums_1.ColumnType.BINARY]: 'BLOB',
1067
+ [enums_1.ColumnType.ENUM]: (options === null || options === void 0 ? void 0 : options.enumValues)
1068
+ ? `ENUM(${options.enumValues.map(v => `'${v}'`).join(', ')})`
1069
+ : 'VARCHAR(255)',
1070
+ [enums_1.ColumnType.ARRAY]: 'JSON', // MySQL doesn't have native arrays, use JSON
1071
+ };
1072
+ return typeMap[columnType] || columnType;
1073
+ }
1074
+ getSupportedFeatures() {
1075
+ return [
1076
+ base_adapter_1.DatabaseFeature.TRANSACTIONS,
1077
+ base_adapter_1.DatabaseFeature.SAVEPOINTS,
1078
+ base_adapter_1.DatabaseFeature.JSON,
1079
+ base_adapter_1.DatabaseFeature.FULLTEXT_SEARCH,
1080
+ base_adapter_1.DatabaseFeature.HASH_INDEX,
1081
+ base_adapter_1.DatabaseFeature.UPSERT,
1082
+ base_adapter_1.DatabaseFeature.FOREIGN_KEYS,
1083
+ base_adapter_1.DatabaseFeature.CHECK_CONSTRAINTS,
1084
+ base_adapter_1.DatabaseFeature.STORED_PROCEDURES,
1085
+ base_adapter_1.DatabaseFeature.VIEWS,
1086
+ base_adapter_1.DatabaseFeature.TRIGGERS,
1087
+ base_adapter_1.DatabaseFeature.LIKE,
1088
+ base_adapter_1.DatabaseFeature.BETWEEN,
1089
+ base_adapter_1.DatabaseFeature.LIMIT_OFFSET,
1090
+ base_adapter_1.DatabaseFeature.WINDOW_FUNCTIONS,
1091
+ base_adapter_1.DatabaseFeature.CTE,
1092
+ ];
1093
+ }
1094
+ parseError(error) {
1095
+ const code = error.code || error.errno;
1096
+ let type = enums_1.DatabaseErrorType.UNKNOWN_ERROR;
1097
+ // Map MySQL error codes
1098
+ switch (code) {
1099
+ case 'ER_DUP_ENTRY':
1100
+ case 1062:
1101
+ type = enums_1.DatabaseErrorType.UNIQUE_VIOLATION;
1102
+ break;
1103
+ case 'ER_ROW_IS_REFERENCED':
1104
+ case 'ER_NO_REFERENCED_ROW':
1105
+ case 1451:
1106
+ case 1452:
1107
+ type = enums_1.DatabaseErrorType.FOREIGN_KEY_VIOLATION;
1108
+ break;
1109
+ case 'ER_BAD_NULL_ERROR':
1110
+ case 1048:
1111
+ type = enums_1.DatabaseErrorType.NOT_NULL_VIOLATION;
1112
+ break;
1113
+ case 'ER_ACCESS_DENIED_ERROR':
1114
+ case 1045:
1115
+ type = enums_1.DatabaseErrorType.AUTHENTICATION_ERROR;
1116
+ break;
1117
+ case 'ER_NO_SUCH_TABLE':
1118
+ case 1146:
1119
+ type = enums_1.DatabaseErrorType.SCHEMA_ERROR;
1120
+ break;
1121
+ case 'ECONNREFUSED':
1122
+ case 'ETIMEDOUT':
1123
+ type = enums_1.DatabaseErrorType.CONNECTION_ERROR;
1124
+ break;
1125
+ default:
1126
+ if (typeof code === 'string' && code.startsWith('ER_')) {
1127
+ type = enums_1.DatabaseErrorType.QUERY_ERROR;
1128
+ }
1129
+ }
1130
+ return {
1131
+ type,
1132
+ message: error.message || 'Unknown database error',
1133
+ code: String(code),
1134
+ details: {
1135
+ sqlState: error.sqlState,
1136
+ sqlMessage: error.sqlMessage,
1137
+ },
1138
+ };
1139
+ }
1140
+ // ==================== PRIVATE HELPER METHODS ====================
1141
+ ensureConnected() {
1142
+ if (!this.connected || !this.pool) {
1143
+ throw new database_error_1.DatabaseError('Not connected to MySQL database', enums_1.DatabaseErrorType.CONNECTION_ERROR);
1144
+ }
1145
+ }
1146
+ buildWhereClause(where) {
1147
+ const clauses = [];
1148
+ const params = [];
1149
+ for (const [key, value] of Object.entries(where)) {
1150
+ // Normalize key to lowercase for logical operators (support both cases for backwards compatibility)
1151
+ const normalizedKey = key.toLowerCase();
1152
+ if (normalizedKey === '$and') {
1153
+ const conditions = Array.isArray(value) ? value : [value];
1154
+ const andClauses = [];
1155
+ for (const cond of conditions) {
1156
+ const andResult = this.buildWhereClause(cond);
1157
+ andClauses.push(andResult.whereClause);
1158
+ params.push(...andResult.whereParams);
1159
+ }
1160
+ clauses.push(`(${andClauses.join(' AND ')})`);
1161
+ }
1162
+ else if (normalizedKey === '$or') {
1163
+ const conditions = Array.isArray(value) ? value : Object.entries(value).map(([k, v]) => ({ [k]: v }));
1164
+ const orClauses = [];
1165
+ for (const cond of conditions) {
1166
+ const orResult = this.buildWhereClause(cond);
1167
+ orClauses.push(orResult.whereClause);
1168
+ params.push(...orResult.whereParams);
1169
+ }
1170
+ clauses.push(`(${orClauses.join(' OR ')})`);
1171
+ }
1172
+ else if (normalizedKey === '$not') {
1173
+ const notResult = this.buildWhereClause(value);
1174
+ clauses.push(`NOT (${notResult.whereClause})`);
1175
+ params.push(...notResult.whereParams);
1176
+ }
1177
+ else if (normalizedKey === '$nor') {
1178
+ const conditions = Array.isArray(value) ? value : [value];
1179
+ const norClauses = [];
1180
+ for (const cond of conditions) {
1181
+ const norResult = this.buildWhereClause(cond);
1182
+ norClauses.push(norResult.whereClause);
1183
+ params.push(...norResult.whereParams);
1184
+ }
1185
+ clauses.push(`NOT (${norClauses.join(' OR ')})`);
1186
+ }
1187
+ else if (value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {
1188
+ // Handle operators
1189
+ for (const [op, opValue] of Object.entries(value)) {
1190
+ // Normalize operator to lowercase (support both cases for backwards compatibility)
1191
+ const normalizedOp = op.toLowerCase();
1192
+ switch (normalizedOp) {
1193
+ case '$eq':
1194
+ clauses.push(`${this.escapeIdentifier(key)} = ?`);
1195
+ params.push(opValue);
1196
+ break;
1197
+ case '$ne':
1198
+ clauses.push(`${this.escapeIdentifier(key)} != ?`);
1199
+ params.push(opValue);
1200
+ break;
1201
+ case '$gt':
1202
+ clauses.push(`${this.escapeIdentifier(key)} > ?`);
1203
+ params.push(opValue);
1204
+ break;
1205
+ case '$gte':
1206
+ clauses.push(`${this.escapeIdentifier(key)} >= ?`);
1207
+ params.push(opValue);
1208
+ break;
1209
+ case '$lt':
1210
+ clauses.push(`${this.escapeIdentifier(key)} < ?`);
1211
+ params.push(opValue);
1212
+ break;
1213
+ case '$lte':
1214
+ clauses.push(`${this.escapeIdentifier(key)} <= ?`);
1215
+ params.push(opValue);
1216
+ break;
1217
+ case '$in':
1218
+ clauses.push(`${this.escapeIdentifier(key)} IN (?)`);
1219
+ params.push(opValue);
1220
+ break;
1221
+ case '$nin':
1222
+ case '$not_in':
1223
+ clauses.push(`${this.escapeIdentifier(key)} NOT IN (?)`);
1224
+ params.push(opValue);
1225
+ break;
1226
+ case '$like':
1227
+ clauses.push(`${this.escapeIdentifier(key)} LIKE ?`);
1228
+ params.push(opValue);
1229
+ break;
1230
+ case '$ilike':
1231
+ // MySQL uses LOWER() for case-insensitive comparison
1232
+ clauses.push(`LOWER(${this.escapeIdentifier(key)}) LIKE LOWER(?)`);
1233
+ params.push(opValue);
1234
+ break;
1235
+ case '$isnull':
1236
+ case '$is_null':
1237
+ clauses.push(`${this.escapeIdentifier(key)} IS ${opValue ? 'NULL' : 'NOT NULL'}`);
1238
+ break;
1239
+ case '$isnotnull':
1240
+ case '$is_not_null':
1241
+ clauses.push(`${this.escapeIdentifier(key)} IS ${opValue ? 'NOT NULL' : 'NULL'}`);
1242
+ break;
1243
+ case '$between':
1244
+ const [min, max] = opValue;
1245
+ clauses.push(`${this.escapeIdentifier(key)} BETWEEN ? AND ?`);
1246
+ params.push(min, max);
1247
+ break;
1248
+ case '$contains':
1249
+ // MySQL uses JSON_CONTAINS for JSON columns or FIND_IN_SET for comma-separated values
1250
+ clauses.push(`JSON_CONTAINS(${this.escapeIdentifier(key)}, ?)`);
1251
+ params.push(JSON.stringify(opValue));
1252
+ break;
1253
+ case '$overlaps':
1254
+ // MySQL 8.0+ supports JSON_OVERLAPS
1255
+ clauses.push(`JSON_OVERLAPS(${this.escapeIdentifier(key)}, ?)`);
1256
+ params.push(JSON.stringify(opValue));
1257
+ break;
1258
+ case '$regex':
1259
+ clauses.push(`${this.escapeIdentifier(key)} REGEXP ?`);
1260
+ params.push(opValue);
1261
+ break;
1262
+ case '$exists':
1263
+ clauses.push(`${this.escapeIdentifier(key)} IS ${opValue ? 'NOT NULL' : 'NULL'}`);
1264
+ break;
1265
+ }
1266
+ }
1267
+ }
1268
+ else {
1269
+ // Simple equality
1270
+ clauses.push(`${this.escapeIdentifier(key)} = ?`);
1271
+ params.push(value);
1272
+ }
1273
+ }
1274
+ return {
1275
+ whereClause: clauses.join(' AND '),
1276
+ whereParams: params,
1277
+ };
1278
+ }
1279
+ buildCountQuery(query) {
1280
+ // Build a COUNT query from the original query
1281
+ const fromIndex = query.sql.toUpperCase().indexOf('FROM');
1282
+ const orderByIndex = query.sql.toUpperCase().indexOf('ORDER BY');
1283
+ const limitIndex = query.sql.toUpperCase().indexOf('LIMIT');
1284
+ let endIndex = query.sql.length;
1285
+ if (orderByIndex > 0)
1286
+ endIndex = Math.min(endIndex, orderByIndex);
1287
+ if (limitIndex > 0)
1288
+ endIndex = Math.min(endIndex, limitIndex);
1289
+ return `SELECT COUNT(*) as count ${query.sql.substring(fromIndex, endIndex)}`;
1290
+ }
1291
+ buildColumnDefinition(column) {
1292
+ let def = `${this.escapeIdentifier(column.name)} ${this.getColumnTypeString(column.type, column)}`;
1293
+ if (column.autoIncrement) {
1294
+ def += ' AUTO_INCREMENT';
1295
+ }
1296
+ if (column.nullable === false) {
1297
+ def += ' NOT NULL';
1298
+ }
1299
+ if (column.unique) {
1300
+ def += ' UNIQUE';
1301
+ }
1302
+ if (column.primaryKey) {
1303
+ def += ' PRIMARY KEY';
1304
+ }
1305
+ if (column.defaultValue !== undefined) {
1306
+ def += ` DEFAULT ${this.escapeValue(column.defaultValue)}`;
1307
+ }
1308
+ if (column.references) {
1309
+ def += ` REFERENCES ${this.escapeIdentifier(column.references.table)}(${this.escapeIdentifier(column.references.column)})`;
1310
+ if (column.references.onDelete) {
1311
+ def += ` ON DELETE ${column.references.onDelete}`;
1312
+ }
1313
+ if (column.references.onUpdate) {
1314
+ def += ` ON UPDATE ${column.references.onUpdate}`;
1315
+ }
1316
+ }
1317
+ if (column.comment) {
1318
+ def += ` COMMENT ${this.escapeValue(column.comment)}`;
1319
+ }
1320
+ return def;
1321
+ }
1322
+ buildConstraintDefinition(constraint) {
1323
+ let def = `CONSTRAINT ${this.escapeIdentifier(constraint.name)}`;
1324
+ switch (constraint.type) {
1325
+ case 'PRIMARY_KEY':
1326
+ def += ` PRIMARY KEY (${constraint.columns.map((c) => this.escapeIdentifier(c)).join(', ')})`;
1327
+ break;
1328
+ case 'UNIQUE':
1329
+ def += ` UNIQUE (${constraint.columns.map((c) => this.escapeIdentifier(c)).join(', ')})`;
1330
+ break;
1331
+ case 'FOREIGN_KEY':
1332
+ def += ` FOREIGN KEY (${constraint.columns.map((c) => this.escapeIdentifier(c)).join(', ')})`;
1333
+ def += ` REFERENCES ${this.escapeIdentifier(constraint.references.table)}(${this.escapeIdentifier(constraint.references.column)})`;
1334
+ if (constraint.references.onDelete) {
1335
+ def += ` ON DELETE ${constraint.references.onDelete}`;
1336
+ }
1337
+ if (constraint.references.onUpdate) {
1338
+ def += ` ON UPDATE ${constraint.references.onUpdate}`;
1339
+ }
1340
+ break;
1341
+ case 'CHECK':
1342
+ def += ` CHECK (${constraint.expression})`;
1343
+ break;
1344
+ }
1345
+ return def;
1346
+ }
1347
+ mapIsolationLevel(level) {
1348
+ switch (level) {
1349
+ case enums_1.IsolationLevel.READ_UNCOMMITTED:
1350
+ return 'READ UNCOMMITTED';
1351
+ case enums_1.IsolationLevel.READ_COMMITTED:
1352
+ return 'READ COMMITTED';
1353
+ case enums_1.IsolationLevel.REPEATABLE_READ:
1354
+ return 'REPEATABLE READ';
1355
+ case enums_1.IsolationLevel.SERIALIZABLE:
1356
+ return 'SERIALIZABLE';
1357
+ default:
1358
+ return 'REPEATABLE READ'; // MySQL default
1359
+ }
1360
+ }
1361
+ formatBytes(bytes) {
1362
+ if (bytes === 0)
1363
+ return '0 B';
1364
+ const k = 1024;
1365
+ const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
1366
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
1367
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
1368
+ }
1369
+ }
1370
+ exports.MySQLAdapter = MySQLAdapter;
1371
+ //# sourceMappingURL=mysql.adapter.js.map