@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,1284 @@
1
+ "use strict";
2
+ /**
3
+ * MongoDB Adapter
4
+ *
5
+ * Database adapter for MongoDB databases using the 'mongodb' driver.
6
+ * Implements all methods from BaseAdapter with MongoDB-specific operations.
7
+ *
8
+ * Note: MongoDB uses collections instead of tables, and documents instead of rows.
9
+ * The adapter translates SQL-like operations to MongoDB operations.
10
+ */
11
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
12
+ if (k2 === undefined) k2 = k;
13
+ var desc = Object.getOwnPropertyDescriptor(m, k);
14
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
15
+ desc = { enumerable: true, get: function() { return m[k]; } };
16
+ }
17
+ Object.defineProperty(o, k2, desc);
18
+ }) : (function(o, m, k, k2) {
19
+ if (k2 === undefined) k2 = k;
20
+ o[k2] = m[k];
21
+ }));
22
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
23
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
24
+ }) : function(o, v) {
25
+ o["default"] = v;
26
+ });
27
+ var __importStar = (this && this.__importStar) || (function () {
28
+ var ownKeys = function(o) {
29
+ ownKeys = Object.getOwnPropertyNames || function (o) {
30
+ var ar = [];
31
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
32
+ return ar;
33
+ };
34
+ return ownKeys(o);
35
+ };
36
+ return function (mod) {
37
+ if (mod && mod.__esModule) return mod;
38
+ var result = {};
39
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
40
+ __setModuleDefault(result, mod);
41
+ return result;
42
+ };
43
+ })();
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.MongoDBAdapter = void 0;
46
+ const base_adapter_1 = require("./base.adapter");
47
+ const enums_1 = require("../types/enums");
48
+ const database_error_1 = require("../utils/database-error");
49
+ /**
50
+ * MongoDB database adapter
51
+ * Provides MongoDB-specific implementations for all database operations
52
+ */
53
+ class MongoDBAdapter extends base_adapter_1.BaseAdapter {
54
+ constructor() {
55
+ super(...arguments);
56
+ this.databaseType = enums_1.DatabaseType.MONGODB;
57
+ this.mongoClient = null;
58
+ this.db = null;
59
+ this.databaseName = '';
60
+ }
61
+ // ==================== CONNECTION METHODS ====================
62
+ async connect(options) {
63
+ console.log(`[MongoDBAdapter] connect() called`);
64
+ console.log(`[MongoDBAdapter] Options:`, JSON.stringify(Object.assign(Object.assign({}, options), { connectionUrl: '***REDACTED***' }), null, 2));
65
+ try {
66
+ console.log(`[MongoDBAdapter] Importing 'mongodb' library...`);
67
+ // Dynamic import of mongodb to avoid bundling issues
68
+ const { MongoClient } = await Promise.resolve().then(() => __importStar(require('mongodb')));
69
+ console.log(`[MongoDBAdapter] 'mongodb' library imported successfully`);
70
+ this.connectionUrl = options.connectionUrl;
71
+ console.log(`[MongoDBAdapter] Connection URL stored`);
72
+ console.log(`[MongoDBAdapter] Connection URL length: ${options.connectionUrl.length}`);
73
+ // Parse connection URL to extract database name
74
+ console.log(`[MongoDBAdapter] Parsing connection URL...`);
75
+ const url = new URL(options.connectionUrl);
76
+ this.databaseName = url.pathname.slice(1) || 'test';
77
+ const parsedConfig = {
78
+ protocol: url.protocol,
79
+ hostname: url.hostname,
80
+ port: url.port || 'default',
81
+ database: this.databaseName,
82
+ username: url.username || 'not specified',
83
+ hasPassword: !!url.password,
84
+ };
85
+ console.log(`[MongoDBAdapter] Connection URL parsed:`, parsedConfig);
86
+ const clientConfig = {
87
+ maxPoolSize: options.poolSize || 10,
88
+ connectTimeoutMS: options.connectionTimeout || 10000,
89
+ serverSelectionTimeoutMS: options.connectionTimeout || 10000,
90
+ };
91
+ console.log(`[MongoDBAdapter] Client config:`, clientConfig);
92
+ console.log(`[MongoDBAdapter] Creating MongoClient...`);
93
+ this.mongoClient = new MongoClient(options.connectionUrl, clientConfig);
94
+ console.log(`[MongoDBAdapter] MongoClient created successfully`);
95
+ console.log(`[MongoDBAdapter] Connecting to MongoDB...`);
96
+ await this.mongoClient.connect();
97
+ console.log(`[MongoDBAdapter] Connected to MongoDB successfully`);
98
+ console.log(`[MongoDBAdapter] Getting database: ${this.databaseName}`);
99
+ this.db = this.mongoClient.db(this.databaseName);
100
+ console.log(`[MongoDBAdapter] Database instance acquired`);
101
+ console.log(`[MongoDBAdapter] Getting server info...`);
102
+ // Get server info
103
+ const adminDb = this.mongoClient.db('admin');
104
+ const serverInfo = await adminDb.command({ buildInfo: 1 });
105
+ console.log(`[MongoDBAdapter] Server info retrieved successfully`);
106
+ console.log(`[MongoDBAdapter] MongoDB version:`, serverInfo.version);
107
+ this.client = this.mongoClient;
108
+ this.connected = true;
109
+ console.log(`[MongoDBAdapter] Connection marked as connected`);
110
+ return {
111
+ connected: true,
112
+ version: serverInfo.version,
113
+ };
114
+ }
115
+ catch (error) {
116
+ console.error(`[MongoDBAdapter] Connection failed with error:`, error);
117
+ console.error(`[MongoDBAdapter] Error type:`, error.constructor.name);
118
+ console.error(`[MongoDBAdapter] Error message:`, error.message);
119
+ console.error(`[MongoDBAdapter] Error code:`, error.code);
120
+ console.error(`[MongoDBAdapter] Full error:`, JSON.stringify(error, null, 2));
121
+ throw database_error_1.DatabaseError.connectionError(`Failed to connect to MongoDB: ${error.message}`, error);
122
+ }
123
+ }
124
+ async testConnection(options) {
125
+ try {
126
+ const { MongoClient } = await Promise.resolve().then(() => __importStar(require('mongodb')));
127
+ const client = new MongoClient(options.connectionUrl, {
128
+ connectTimeoutMS: options.connectionTimeout || 5000,
129
+ serverSelectionTimeoutMS: options.connectionTimeout || 5000,
130
+ });
131
+ await client.connect();
132
+ const adminDb = client.db('admin');
133
+ const serverInfo = await adminDb.command({ buildInfo: 1 });
134
+ await client.close();
135
+ return {
136
+ connected: true,
137
+ version: serverInfo.version,
138
+ };
139
+ }
140
+ catch (error) {
141
+ return {
142
+ connected: false,
143
+ };
144
+ }
145
+ }
146
+ async disconnect() {
147
+ if (this.mongoClient) {
148
+ await this.mongoClient.close();
149
+ this.mongoClient = null;
150
+ this.db = null;
151
+ this.client = null;
152
+ this.connected = false;
153
+ }
154
+ }
155
+ // ==================== QUERY METHODS ====================
156
+ async query(query) {
157
+ var _a;
158
+ this.ensureConnected();
159
+ try {
160
+ const collection = this.db.collection(query.options.table);
161
+ const session = (_a = query.options.transaction) === null || _a === void 0 ? void 0 : _a.client;
162
+ // Build MongoDB filter from where clause
163
+ const filter = this.buildMongoFilter(query.options.where || {});
164
+ // Build options
165
+ const findOptions = { session };
166
+ // Select specific fields
167
+ if (query.options.select) {
168
+ findOptions.projection = {};
169
+ for (const field of query.options.select) {
170
+ findOptions.projection[field] = 1;
171
+ }
172
+ }
173
+ // Sorting
174
+ if (query.options.orderBy) {
175
+ findOptions.sort = {};
176
+ const orderByArray = Array.isArray(query.options.orderBy)
177
+ ? query.options.orderBy
178
+ : [query.options.orderBy];
179
+ for (const order of orderByArray) {
180
+ findOptions.sort[order.column] = order.order === 'DESC' ? -1 : 1;
181
+ }
182
+ }
183
+ // Pagination
184
+ if (query.options.limit) {
185
+ findOptions.limit = query.options.limit;
186
+ }
187
+ if (query.options.offset) {
188
+ findOptions.skip = query.options.offset;
189
+ }
190
+ const cursor = collection.find(filter, findOptions);
191
+ const data = await cursor.toArray();
192
+ // Get total count for pagination
193
+ const count = await collection.countDocuments(filter, { session });
194
+ return {
195
+ data: data,
196
+ count,
197
+ };
198
+ }
199
+ catch (error) {
200
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mongodb');
201
+ }
202
+ }
203
+ async raw(options) {
204
+ var _a, _b;
205
+ this.ensureConnected();
206
+ try {
207
+ const query = options.query;
208
+ // If query is an object with MongoDB command keys, run it as a database command
209
+ if (query && typeof query === 'object' && !Array.isArray(query)) {
210
+ const commandKeys = ['create', 'drop', 'findAndModify', 'createIndexes', 'dropIndexes',
211
+ 'collMod', 'shardCollection', 'update', 'insert', 'delete', 'aggregate', 'count',
212
+ 'distinct', 'mapReduce', 'validate', 'listCollections', 'listIndexes'];
213
+ const isCommand = commandKeys.some(key => key in query);
214
+ if (isCommand) {
215
+ // Run as a database command
216
+ const result = await this.db.command(query);
217
+ return {
218
+ data: result.value ? [result.value] : (((_a = result.cursor) === null || _a === void 0 ? void 0 : _a.firstBatch) || [result]),
219
+ count: result.n || result.ok || 1,
220
+ };
221
+ }
222
+ }
223
+ // Otherwise, treat as a find query on a collection
224
+ const collection = this.db.collection(options.collection || options.table || '');
225
+ const session = (_b = options.transaction) === null || _b === void 0 ? void 0 : _b.client;
226
+ // For MongoDB, 'query' is the filter object
227
+ const filter = query;
228
+ const cursor = collection.find(filter, { session });
229
+ const data = await cursor.toArray();
230
+ return {
231
+ data: data,
232
+ count: data.length,
233
+ };
234
+ }
235
+ catch (error) {
236
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mongodb');
237
+ }
238
+ }
239
+ // ==================== WRITE METHODS ====================
240
+ async insert(options) {
241
+ var _a;
242
+ this.ensureConnected();
243
+ try {
244
+ const collection = this.db.collection(options.table);
245
+ const session = (_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client;
246
+ const data = Array.isArray(options.data) ? options.data : [options.data];
247
+ if (data.length === 0) {
248
+ return { data: [], count: 0, insertedIds: [] };
249
+ }
250
+ // Get auto-increment fields for this collection
251
+ const autoIncrementFields = await this.getAutoIncrementFields(options.table);
252
+ // Get schema metadata for default values
253
+ const schemaColumns = await this.getSchemaMetadata(options.table);
254
+ // Process each document and assign auto-increment values and defaults
255
+ const processedData = await Promise.all(data.map(async (doc) => {
256
+ const processedDoc = Object.assign({}, doc);
257
+ // Apply default values for missing fields
258
+ for (const column of schemaColumns) {
259
+ if (column.defaultValue !== undefined && column.defaultValue !== null) {
260
+ if (processedDoc[column.name] === undefined || processedDoc[column.name] === null) {
261
+ processedDoc[column.name] = this.resolveDefaultValue(column.defaultValue, column.type);
262
+ }
263
+ }
264
+ }
265
+ // For each auto-increment field, get the next value if not already set
266
+ for (const field of autoIncrementFields) {
267
+ if (processedDoc[field] === undefined || processedDoc[field] === null) {
268
+ processedDoc[field] = await this.getNextAutoIncrementValue(options.table, field);
269
+ }
270
+ }
271
+ return processedDoc;
272
+ }));
273
+ const result = await collection.insertMany(processedData, { session });
274
+ // Get inserted documents if returning is requested
275
+ let returnedData = [];
276
+ if (options.returning) {
277
+ const insertedIds = Object.values(result.insertedIds);
278
+ returnedData = await collection.find({ _id: { $in: insertedIds } }, { session }).toArray();
279
+ }
280
+ return {
281
+ data: returnedData,
282
+ count: result.insertedCount,
283
+ insertedIds: Object.values(result.insertedIds),
284
+ };
285
+ }
286
+ catch (error) {
287
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mongodb');
288
+ }
289
+ }
290
+ async update(options) {
291
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l, _m, _o;
292
+ this.ensureConnected();
293
+ try {
294
+ const collection = this.db.collection(options.table);
295
+ const session = (_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client;
296
+ // Build MongoDB filter
297
+ const filter = this.buildMongoFilter(options.where || {});
298
+ // Build update document
299
+ const updateDoc = { $set: {} };
300
+ for (const [key, value] of Object.entries(options.data)) {
301
+ if (value && typeof value === 'object' && this.isUpdateOperator(value)) {
302
+ // Handle update operators - MongoDB has native support
303
+ // Support both lowercase (new) and uppercase (legacy) operators
304
+ if ('$inc' in value || '$INC' in value) {
305
+ if (!updateDoc.$inc)
306
+ updateDoc.$inc = {};
307
+ updateDoc.$inc[key] = (_b = value.$inc) !== null && _b !== void 0 ? _b : value.$INC;
308
+ }
309
+ else if ('$dec' in value || '$DEC' in value) {
310
+ // MongoDB uses $inc with negative value for decrement
311
+ if (!updateDoc.$inc)
312
+ updateDoc.$inc = {};
313
+ updateDoc.$inc[key] = -((_c = value.$dec) !== null && _c !== void 0 ? _c : value.$DEC);
314
+ }
315
+ else if ('$mul' in value || '$MUL' in value) {
316
+ if (!updateDoc.$mul)
317
+ updateDoc.$mul = {};
318
+ updateDoc.$mul[key] = (_d = value.$mul) !== null && _d !== void 0 ? _d : value.$MUL;
319
+ }
320
+ else if ('$min' in value || '$MIN' in value) {
321
+ if (!updateDoc.$min)
322
+ updateDoc.$min = {};
323
+ updateDoc.$min[key] = (_e = value.$min) !== null && _e !== void 0 ? _e : value.$MIN;
324
+ }
325
+ else if ('$max' in value || '$MAX' in value) {
326
+ if (!updateDoc.$max)
327
+ updateDoc.$max = {};
328
+ updateDoc.$max[key] = (_f = value.$max) !== null && _f !== void 0 ? _f : value.$MAX;
329
+ }
330
+ else if ('$set' in value || '$SET' in value) {
331
+ updateDoc.$set[key] = (_g = value.$set) !== null && _g !== void 0 ? _g : value.$SET;
332
+ }
333
+ else if (('$unset' in value && value.$unset) || ('$UNSET' in value && value.$UNSET)) {
334
+ if (!updateDoc.$unset)
335
+ updateDoc.$unset = {};
336
+ updateDoc.$unset[key] = '';
337
+ }
338
+ else if ('$push' in value || '$PUSH' in value) {
339
+ if (!updateDoc.$push)
340
+ updateDoc.$push = {};
341
+ updateDoc.$push[key] = (_h = value.$push) !== null && _h !== void 0 ? _h : value.$PUSH;
342
+ }
343
+ else if ('$pull' in value || '$PULL' in value) {
344
+ if (!updateDoc.$pull)
345
+ updateDoc.$pull = {};
346
+ updateDoc.$pull[key] = (_j = value.$pull) !== null && _j !== void 0 ? _j : value.$PULL;
347
+ }
348
+ else if ('$addToSet' in value || '$ADDTOSET' in value) {
349
+ if (!updateDoc.$addToSet)
350
+ updateDoc.$addToSet = {};
351
+ updateDoc.$addToSet[key] = (_k = value.$addToSet) !== null && _k !== void 0 ? _k : value.$ADDTOSET;
352
+ }
353
+ else if ('$pop' in value || '$POP' in value) {
354
+ if (!updateDoc.$pop)
355
+ updateDoc.$pop = {};
356
+ updateDoc.$pop[key] = (_l = value.$pop) !== null && _l !== void 0 ? _l : value.$POP;
357
+ }
358
+ else if ('$rename' in value || '$RENAME' in value) {
359
+ if (!updateDoc.$rename)
360
+ updateDoc.$rename = {};
361
+ updateDoc.$rename[key] = (_m = value.$rename) !== null && _m !== void 0 ? _m : value.$RENAME;
362
+ }
363
+ else if ('$currentDate' in value || '$CURRENTDATE' in value) {
364
+ if (!updateDoc.$currentDate)
365
+ updateDoc.$currentDate = {};
366
+ updateDoc.$currentDate[key] = (_o = value.$currentDate) !== null && _o !== void 0 ? _o : value.$CURRENTDATE;
367
+ }
368
+ }
369
+ else {
370
+ updateDoc.$set[key] = value;
371
+ }
372
+ }
373
+ // Remove empty $set
374
+ if (Object.keys(updateDoc.$set).length === 0) {
375
+ delete updateDoc.$set;
376
+ }
377
+ const result = await collection.updateMany(filter, updateDoc, { session });
378
+ // Get updated documents if returning is requested
379
+ let returnedData = [];
380
+ if (options.returning) {
381
+ returnedData = await collection.find(filter, { session }).toArray();
382
+ }
383
+ return {
384
+ data: returnedData,
385
+ count: result.modifiedCount,
386
+ };
387
+ }
388
+ catch (error) {
389
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mongodb');
390
+ }
391
+ }
392
+ async delete(options) {
393
+ var _a;
394
+ this.ensureConnected();
395
+ try {
396
+ const collection = this.db.collection(options.table);
397
+ const session = (_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client;
398
+ // Build MongoDB filter
399
+ const filter = this.buildMongoFilter(options.where || {});
400
+ // Get documents before delete if returning is requested
401
+ let deletedData;
402
+ if (options.returning) {
403
+ deletedData = await collection.find(filter, { session }).toArray();
404
+ }
405
+ const result = await collection.deleteMany(filter, { session });
406
+ return {
407
+ count: result.deletedCount,
408
+ data: deletedData,
409
+ };
410
+ }
411
+ catch (error) {
412
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mongodb');
413
+ }
414
+ }
415
+ async upsert(options) {
416
+ var _a, _b;
417
+ this.ensureConnected();
418
+ try {
419
+ const collection = this.db.collection(options.table);
420
+ const session = (_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client;
421
+ // Build filter from conflict keys
422
+ const filter = {};
423
+ for (const key of options.conflictKeys) {
424
+ filter[key] = options.data[key];
425
+ }
426
+ // Build update document
427
+ const updateDoc = { $set: options.data };
428
+ const result = await collection.findOneAndUpdate(filter, updateDoc, {
429
+ upsert: true,
430
+ returnDocument: 'after',
431
+ session,
432
+ });
433
+ return {
434
+ data: result.value ? [result.value] : [],
435
+ count: 1,
436
+ operation: ((_b = result.lastErrorObject) === null || _b === void 0 ? void 0 : _b.updatedExisting) ? 'updated' : 'inserted',
437
+ };
438
+ }
439
+ catch (error) {
440
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mongodb');
441
+ }
442
+ }
443
+ // ==================== AGGREGATION METHODS ====================
444
+ async count(options) {
445
+ var _a, _b;
446
+ this.ensureConnected();
447
+ try {
448
+ const collection = this.db.collection(options.table);
449
+ const session = (_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client;
450
+ const filter = this.buildMongoFilter(options.where || {});
451
+ if (options.distinct && options.column) {
452
+ // For distinct count, use aggregation
453
+ const result = await collection.aggregate([
454
+ { $match: filter },
455
+ { $group: { _id: `$${options.column}` } },
456
+ { $count: 'count' },
457
+ ], { session }).toArray();
458
+ return ((_b = result[0]) === null || _b === void 0 ? void 0 : _b.count) || 0;
459
+ }
460
+ return await collection.countDocuments(filter, { session });
461
+ }
462
+ catch (error) {
463
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mongodb');
464
+ }
465
+ }
466
+ async sum(options) {
467
+ var _a, _b;
468
+ this.ensureConnected();
469
+ try {
470
+ const collection = this.db.collection(options.table);
471
+ const session = (_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client;
472
+ const filter = this.buildMongoFilter(options.where || {});
473
+ const result = await collection.aggregate([
474
+ { $match: filter },
475
+ { $group: { _id: null, sum: { $sum: `$${options.column}` } } },
476
+ ], { session }).toArray();
477
+ return ((_b = result[0]) === null || _b === void 0 ? void 0 : _b.sum) || 0;
478
+ }
479
+ catch (error) {
480
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mongodb');
481
+ }
482
+ }
483
+ async avg(options) {
484
+ var _a, _b;
485
+ this.ensureConnected();
486
+ try {
487
+ const collection = this.db.collection(options.table);
488
+ const session = (_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client;
489
+ const filter = this.buildMongoFilter(options.where || {});
490
+ const result = await collection.aggregate([
491
+ { $match: filter },
492
+ { $group: { _id: null, avg: { $avg: `$${options.column}` } } },
493
+ ], { session }).toArray();
494
+ return ((_b = result[0]) === null || _b === void 0 ? void 0 : _b.avg) || 0;
495
+ }
496
+ catch (error) {
497
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mongodb');
498
+ }
499
+ }
500
+ async min(options) {
501
+ var _a, _b;
502
+ this.ensureConnected();
503
+ try {
504
+ const collection = this.db.collection(options.table);
505
+ const session = (_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client;
506
+ const filter = this.buildMongoFilter(options.where || {});
507
+ const result = await collection.aggregate([
508
+ { $match: filter },
509
+ { $group: { _id: null, min: { $min: `$${options.column}` } } },
510
+ ], { session }).toArray();
511
+ return (_b = result[0]) === null || _b === void 0 ? void 0 : _b.min;
512
+ }
513
+ catch (error) {
514
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mongodb');
515
+ }
516
+ }
517
+ async max(options) {
518
+ var _a, _b;
519
+ this.ensureConnected();
520
+ try {
521
+ const collection = this.db.collection(options.table);
522
+ const session = (_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client;
523
+ const filter = this.buildMongoFilter(options.where || {});
524
+ const result = await collection.aggregate([
525
+ { $match: filter },
526
+ { $group: { _id: null, max: { $max: `$${options.column}` } } },
527
+ ], { session }).toArray();
528
+ return (_b = result[0]) === null || _b === void 0 ? void 0 : _b.max;
529
+ }
530
+ catch (error) {
531
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mongodb');
532
+ }
533
+ }
534
+ async aggregate(builtAggregation) {
535
+ var _a;
536
+ this.ensureConnected();
537
+ try {
538
+ const options = builtAggregation.options;
539
+ const collection = this.db.collection(options.table);
540
+ const session = (_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client;
541
+ // Use the pre-built pipeline
542
+ const result = await collection.aggregate(builtAggregation.pipeline || [], { session }).toArray();
543
+ // Remove _id from result
544
+ if (result[0]) {
545
+ delete result[0]._id;
546
+ }
547
+ return result[0] || {};
548
+ }
549
+ catch (error) {
550
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mongodb');
551
+ }
552
+ }
553
+ async groupBy(builtGroupBy) {
554
+ var _a;
555
+ this.ensureConnected();
556
+ try {
557
+ const options = builtGroupBy.options;
558
+ const collection = this.db.collection(options.table);
559
+ const session = (_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client;
560
+ // Use the pre-built pipeline
561
+ const results = await collection.aggregate(builtGroupBy.pipeline || [], { session }).toArray();
562
+ return results.map((row) => {
563
+ var _a;
564
+ const group = {};
565
+ const aggregates = {};
566
+ // _id contains the group keys
567
+ if (row._id && typeof row._id === 'object') {
568
+ Object.assign(group, row._id);
569
+ }
570
+ else if (((_a = options.groupBy) === null || _a === void 0 ? void 0 : _a.length) === 1) {
571
+ group[options.groupBy[0]] = row._id;
572
+ }
573
+ // Everything else is aggregates
574
+ for (const key of Object.keys(row)) {
575
+ if (key !== '_id') {
576
+ aggregates[key] = row[key];
577
+ }
578
+ }
579
+ return { group, aggregates: aggregates };
580
+ });
581
+ }
582
+ catch (error) {
583
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'mongodb');
584
+ }
585
+ }
586
+ // ==================== TRANSACTION METHODS ====================
587
+ async beginTransaction(isolationLevel, readOnly, timeout) {
588
+ this.ensureConnected();
589
+ try {
590
+ const session = this.mongoClient.startSession();
591
+ const id = `mongo_txn_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
592
+ const transactionOptions = {};
593
+ // MongoDB supports read concern and write concern instead of isolation levels
594
+ if (isolationLevel === enums_1.IsolationLevel.SERIALIZABLE) {
595
+ transactionOptions.readConcern = { level: 'snapshot' };
596
+ transactionOptions.writeConcern = { w: 'majority' };
597
+ }
598
+ else {
599
+ transactionOptions.readConcern = { level: 'majority' };
600
+ transactionOptions.writeConcern = { w: 'majority' };
601
+ }
602
+ if (timeout) {
603
+ transactionOptions.maxCommitTimeMS = timeout;
604
+ }
605
+ session.startTransaction(transactionOptions);
606
+ return {
607
+ id,
608
+ databaseType: 'mongodb',
609
+ isolationLevel: isolationLevel || enums_1.IsolationLevel.READ_COMMITTED,
610
+ readOnly: readOnly || false,
611
+ timeout,
612
+ startedAt: new Date(),
613
+ client: session,
614
+ savepoints: new Map(),
615
+ status: 'active',
616
+ };
617
+ }
618
+ catch (error) {
619
+ throw database_error_1.DatabaseError.transactionError(`Failed to begin transaction: ${error.message}`, error);
620
+ }
621
+ }
622
+ async commitTransaction(context) {
623
+ try {
624
+ await context.client.commitTransaction();
625
+ await context.client.endSession();
626
+ context.status = 'committed';
627
+ }
628
+ catch (error) {
629
+ context.status = 'error';
630
+ await context.client.endSession();
631
+ throw database_error_1.DatabaseError.transactionError(`Failed to commit transaction: ${error.message}`, error);
632
+ }
633
+ }
634
+ async rollbackTransaction(context) {
635
+ try {
636
+ await context.client.abortTransaction();
637
+ await context.client.endSession();
638
+ context.status = 'rolled_back';
639
+ }
640
+ catch (error) {
641
+ context.status = 'error';
642
+ await context.client.endSession();
643
+ throw database_error_1.DatabaseError.transactionError(`Failed to rollback transaction: ${error.message}`, error);
644
+ }
645
+ }
646
+ async createSavepoint(context, name) {
647
+ // MongoDB does not support savepoints
648
+ throw new database_error_1.DatabaseError('MongoDB does not support savepoints. Savepoints are only available in PostgreSQL and MySQL.', enums_1.DatabaseErrorType.NOT_SUPPORTED);
649
+ }
650
+ async releaseSavepoint(context, savepoint) {
651
+ // MongoDB does not support savepoints
652
+ throw new database_error_1.DatabaseError('MongoDB does not support savepoints. Savepoints are only available in PostgreSQL and MySQL.', enums_1.DatabaseErrorType.NOT_SUPPORTED);
653
+ }
654
+ async rollbackToSavepoint(context, savepoint) {
655
+ // MongoDB does not support savepoints
656
+ throw new database_error_1.DatabaseError('MongoDB does not support savepoints. Savepoints are only available in PostgreSQL and MySQL.', enums_1.DatabaseErrorType.NOT_SUPPORTED);
657
+ }
658
+ supportsSavepoints() {
659
+ return false;
660
+ }
661
+ // ==================== SCHEMA METHODS ====================
662
+ async createTable(definition, options) {
663
+ this.ensureConnected();
664
+ try {
665
+ // In MongoDB, creating a collection is optional as it's created on first insert
666
+ // But we can explicitly create it for validation
667
+ await this.db.createCollection(definition.name);
668
+ // Create indexes
669
+ if (definition.indexes) {
670
+ for (const index of definition.indexes) {
671
+ await this.createIndex(index);
672
+ }
673
+ }
674
+ // Create unique constraints as unique indexes and register auto-increment fields
675
+ for (const column of definition.columns) {
676
+ if (column.unique && column.name !== '_id') {
677
+ await this.db.collection(definition.name).createIndex({ [column.name]: 1 }, { unique: true });
678
+ }
679
+ // Register auto-increment fields in the counters collection
680
+ if (column.autoIncrement) {
681
+ await this.registerAutoIncrementField(definition.name, column.name);
682
+ }
683
+ }
684
+ // Store schema metadata for default values and other app-level features
685
+ await this.storeSchemaMetadata(definition.name, definition.columns);
686
+ }
687
+ catch (error) {
688
+ // Ignore "collection already exists" error if ifNotExists is true
689
+ if ((options === null || options === void 0 ? void 0 : options.ifNotExists) && error.code === 48) {
690
+ return;
691
+ }
692
+ throw database_error_1.DatabaseError.schemaError(`Failed to create collection: ${error.message}`, error);
693
+ }
694
+ }
695
+ /**
696
+ * Register an auto-increment field in the counters collection.
697
+ * This creates/updates the counter document for the given collection and field.
698
+ */
699
+ async registerAutoIncrementField(collectionName, fieldName) {
700
+ const countersCollection = this.db.collection('_ductape_counters');
701
+ // Initialize the counter for this collection/field combination
702
+ await countersCollection.updateOne({ _id: `${collectionName}.${fieldName}` }, {
703
+ $setOnInsert: {
704
+ collection: collectionName,
705
+ field: fieldName,
706
+ currentValue: 0
707
+ }
708
+ }, { upsert: true });
709
+ }
710
+ /**
711
+ * Get the next auto-increment value atomically.
712
+ * Uses findOneAndUpdate with $inc to ensure atomic increment even under high concurrency.
713
+ */
714
+ async getNextAutoIncrementValue(collectionName, fieldName) {
715
+ const countersCollection = this.db.collection('_ductape_counters');
716
+ const result = await countersCollection.findOneAndUpdate({ _id: `${collectionName}.${fieldName}` }, { $inc: { currentValue: 1 } }, { returnDocument: 'after', upsert: true });
717
+ return result.currentValue;
718
+ }
719
+ /**
720
+ * Get all auto-increment fields for a collection from the counters collection.
721
+ */
722
+ async getAutoIncrementFields(collectionName) {
723
+ const countersCollection = this.db.collection('_ductape_counters');
724
+ const counters = await countersCollection.find({ collection: collectionName }).toArray();
725
+ return counters.map((c) => c.field);
726
+ }
727
+ /**
728
+ * Store schema metadata for a collection (including default values).
729
+ * MongoDB doesn't have native schema enforcement, so we store this for application-level use.
730
+ */
731
+ async storeSchemaMetadata(collectionName, columns) {
732
+ const metadataCollection = this.db.collection('_ductape_schema');
733
+ await metadataCollection.updateOne({ _id: collectionName }, {
734
+ $set: {
735
+ collection: collectionName,
736
+ columns: columns.map(col => ({
737
+ name: col.name,
738
+ type: col.type,
739
+ defaultValue: col.defaultValue,
740
+ nullable: col.nullable,
741
+ unique: col.unique,
742
+ primaryKey: col.primaryKey,
743
+ autoIncrement: col.autoIncrement,
744
+ })),
745
+ updatedAt: new Date()
746
+ }
747
+ }, { upsert: true });
748
+ }
749
+ /**
750
+ * Get schema metadata for a collection to apply defaults during insert.
751
+ */
752
+ async getSchemaMetadata(collectionName) {
753
+ const metadataCollection = this.db.collection('_ductape_schema');
754
+ const schema = await metadataCollection.findOne({ _id: collectionName });
755
+ return (schema === null || schema === void 0 ? void 0 : schema.columns) || [];
756
+ }
757
+ /**
758
+ * Resolve a default value to its actual value.
759
+ * Handles special values like 'now', 'NOW()', true, false, etc.
760
+ */
761
+ resolveDefaultValue(defaultValue, fieldType) {
762
+ if (defaultValue === undefined || defaultValue === null) {
763
+ return undefined;
764
+ }
765
+ // Handle string-based special defaults
766
+ if (typeof defaultValue === 'string') {
767
+ const lowerDefault = defaultValue.toLowerCase();
768
+ // Date/time defaults
769
+ if (lowerDefault === 'now' || lowerDefault === 'now()' || lowerDefault === 'current_timestamp') {
770
+ return new Date();
771
+ }
772
+ // Boolean defaults (for string representations)
773
+ if (lowerDefault === 'true')
774
+ return true;
775
+ if (lowerDefault === 'false')
776
+ return false;
777
+ // UUID defaults
778
+ if (lowerDefault === 'uuid' || lowerDefault === 'uuid()' || lowerDefault === 'gen_random_uuid()') {
779
+ return this.generateUUID();
780
+ }
781
+ }
782
+ // Return as-is for other values (numbers, booleans, objects, etc.)
783
+ return defaultValue;
784
+ }
785
+ /**
786
+ * Generate a UUID v4.
787
+ */
788
+ generateUUID() {
789
+ return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, (c) => {
790
+ const r = Math.random() * 16 | 0;
791
+ const v = c === 'x' ? r : (r & 0x3 | 0x8);
792
+ return v.toString(16);
793
+ });
794
+ }
795
+ async alterTable(tableName, operations) {
796
+ this.ensureConnected();
797
+ // MongoDB is schemaless, so we don't need to alter the schema
798
+ // However, we can handle index and constraint operations
799
+ try {
800
+ for (const op of operations) {
801
+ if (op.type === 'ADD' && op.constraint && op.constraint.type === 'UNIQUE') {
802
+ // Add unique index
803
+ const indexSpec = {};
804
+ for (const col of op.constraint.columns) {
805
+ indexSpec[col] = 1;
806
+ }
807
+ await this.db.collection(tableName).createIndex(indexSpec, { unique: true });
808
+ }
809
+ else if (op.type === 'DROP' && op.constraintName) {
810
+ // Drop index
811
+ await this.db.collection(tableName).dropIndex(op.constraintName);
812
+ }
813
+ else if (op.type === 'RENAME' && op.oldName && op.newName) {
814
+ // Rename field in all documents
815
+ await this.db.collection(tableName).updateMany({}, { $rename: { [op.oldName]: op.newName } });
816
+ }
817
+ }
818
+ }
819
+ catch (error) {
820
+ throw database_error_1.DatabaseError.schemaError(`Failed to alter collection: ${error.message}`, error);
821
+ }
822
+ }
823
+ async dropTable(tableName, ifExists, cascade) {
824
+ this.ensureConnected();
825
+ try {
826
+ await this.db.collection(tableName).drop();
827
+ }
828
+ catch (error) {
829
+ // Ignore "collection doesn't exist" error if ifExists is true
830
+ if (ifExists && error.code === 26) {
831
+ return;
832
+ }
833
+ throw database_error_1.DatabaseError.schemaError(`Failed to drop collection: ${error.message}`, error);
834
+ }
835
+ }
836
+ async listTables() {
837
+ this.ensureConnected();
838
+ try {
839
+ const collections = await this.db.listCollections().toArray();
840
+ return collections.map((c) => c.name);
841
+ }
842
+ catch (error) {
843
+ throw database_error_1.DatabaseError.schemaError(`Failed to list collections: ${error.message}`, error);
844
+ }
845
+ }
846
+ async listTablesWithInfo() {
847
+ this.ensureConnected();
848
+ try {
849
+ const collections = await this.db.listCollections().toArray();
850
+ // Get estimated document count for each collection
851
+ const tablesWithInfo = await Promise.all(collections.map(async (c) => {
852
+ var _a, _b;
853
+ try {
854
+ const collection = this.db.collection(c.name);
855
+ const count = await collection.estimatedDocumentCount();
856
+ return {
857
+ name: c.name,
858
+ estimatedRowCount: count,
859
+ comment: (_a = c.options) === null || _a === void 0 ? void 0 : _a.description,
860
+ };
861
+ }
862
+ catch (error) {
863
+ // If we can't get count for a collection, return it without count
864
+ return {
865
+ name: c.name,
866
+ estimatedRowCount: undefined,
867
+ comment: (_b = c.options) === null || _b === void 0 ? void 0 : _b.description,
868
+ };
869
+ }
870
+ }));
871
+ return tablesWithInfo;
872
+ }
873
+ catch (error) {
874
+ throw database_error_1.DatabaseError.schemaError(`Failed to list collections with info: ${error.message}`, error);
875
+ }
876
+ }
877
+ async tableExists(tableName) {
878
+ this.ensureConnected();
879
+ try {
880
+ const collections = await this.db.listCollections({ name: tableName }).toArray();
881
+ return collections.length > 0;
882
+ }
883
+ catch (error) {
884
+ throw database_error_1.DatabaseError.schemaError(`Failed to check collection existence: ${error.message}`, error);
885
+ }
886
+ }
887
+ async getTableSchema(tableName) {
888
+ this.ensureConnected();
889
+ try {
890
+ const collection = this.db.collection(tableName);
891
+ // Sample documents to infer schema
892
+ const sampleDocs = await collection.find().limit(100).toArray();
893
+ // Infer columns from sample documents
894
+ const fieldTypes = new Map();
895
+ for (const doc of sampleDocs) {
896
+ this.extractFieldTypes(doc, '', fieldTypes);
897
+ }
898
+ const columns = Array.from(fieldTypes.entries()).map(([name, types]) => ({
899
+ name,
900
+ type: Array.from(types).join('|'),
901
+ nullable: true, // MongoDB is schemaless
902
+ isPrimaryKey: name === '_id',
903
+ isUnique: name === '_id',
904
+ isAutoIncrement: false,
905
+ }));
906
+ // Get indexes
907
+ const indexes = await this.listIndexes(tableName);
908
+ // Get estimated document count
909
+ const estimatedCount = await collection.estimatedDocumentCount();
910
+ return {
911
+ name: tableName,
912
+ columns,
913
+ indexes,
914
+ constraints: [],
915
+ primaryKey: ['_id'],
916
+ estimatedRowCount: estimatedCount,
917
+ };
918
+ }
919
+ catch (error) {
920
+ throw database_error_1.DatabaseError.schemaError(`Failed to get collection schema: ${error.message}`, error);
921
+ }
922
+ }
923
+ async createIndex(index, ifNotExists, concurrent) {
924
+ this.ensureConnected();
925
+ try {
926
+ const collection = this.db.collection(index.table);
927
+ // Build index specification
928
+ const indexSpec = {};
929
+ for (const col of index.columns) {
930
+ indexSpec[col.name] = col.order === 'DESC' ? -1 : 1;
931
+ }
932
+ // Build index options
933
+ const indexOptions = {
934
+ name: index.name,
935
+ unique: index.unique || false,
936
+ background: true, // Always create in background
937
+ };
938
+ // Partial index
939
+ if (index.where) {
940
+ // Parse the where clause to a MongoDB filter
941
+ // This is simplified - a real implementation would parse the expression
942
+ indexOptions.partialFilterExpression = {};
943
+ }
944
+ await collection.createIndex(indexSpec, indexOptions);
945
+ }
946
+ catch (error) {
947
+ // Ignore if index already exists and ifNotExists is true
948
+ if (ifNotExists && error.code === 85) {
949
+ return;
950
+ }
951
+ throw database_error_1.DatabaseError.schemaError(`Failed to create index: ${error.message}`, error);
952
+ }
953
+ }
954
+ async dropIndex(tableName, indexName, ifExists, concurrent, cascade) {
955
+ this.ensureConnected();
956
+ try {
957
+ await this.db.collection(tableName).dropIndex(indexName);
958
+ }
959
+ catch (error) {
960
+ // Ignore if index doesn't exist and ifExists is true
961
+ if (ifExists && error.code === 27) {
962
+ return;
963
+ }
964
+ throw database_error_1.DatabaseError.schemaError(`Failed to drop index: ${error.message}`, error);
965
+ }
966
+ }
967
+ async listIndexes(tableName, includeSystem) {
968
+ this.ensureConnected();
969
+ try {
970
+ const collection = this.db.collection(tableName);
971
+ const indexes = await collection.indexes();
972
+ return indexes
973
+ .filter((idx) => includeSystem || idx.name !== '_id_')
974
+ .map((idx) => ({
975
+ name: idx.name,
976
+ table: tableName,
977
+ columns: Object.keys(idx.key),
978
+ unique: idx.unique || false,
979
+ primaryKey: idx.name === '_id_',
980
+ type: 'BTREE', // MongoDB uses B-tree by default
981
+ }));
982
+ }
983
+ catch (error) {
984
+ throw database_error_1.DatabaseError.schemaError(`Failed to list indexes: ${error.message}`, error);
985
+ }
986
+ }
987
+ async getIndexStatistics(tableName, indexName) {
988
+ var _a, _b;
989
+ this.ensureConnected();
990
+ try {
991
+ const collection = this.db.collection(tableName);
992
+ const stats = await collection.aggregate([
993
+ { $collStats: { storageStats: {} } },
994
+ ]).toArray();
995
+ const indexStats = ((_b = (_a = stats[0]) === null || _a === void 0 ? void 0 : _a.storageStats) === null || _b === void 0 ? void 0 : _b.indexSizes) || {};
996
+ const results = [];
997
+ for (const [name, size] of Object.entries(indexStats)) {
998
+ if (indexName && name !== indexName)
999
+ continue;
1000
+ results.push({
1001
+ indexName: name,
1002
+ tableName,
1003
+ scans: 0, // MongoDB doesn't expose this easily
1004
+ tuplesRead: 0,
1005
+ sizeBytes: size,
1006
+ sizeFormatted: this.formatBytes(size),
1007
+ });
1008
+ }
1009
+ return results;
1010
+ }
1011
+ catch (error) {
1012
+ throw database_error_1.DatabaseError.schemaError(`Failed to get index statistics: ${error.message}`, error);
1013
+ }
1014
+ }
1015
+ // ==================== UTILITY METHODS ====================
1016
+ escapeIdentifier(identifier) {
1017
+ // MongoDB doesn't need identifier escaping in the same way SQL databases do
1018
+ return identifier;
1019
+ }
1020
+ escapeValue(value) {
1021
+ // MongoDB uses BSON, no escaping needed
1022
+ return JSON.stringify(value);
1023
+ }
1024
+ /**
1025
+ * Check if value is an update operator object
1026
+ * Supports both lowercase (new) and uppercase (legacy) operators
1027
+ */
1028
+ isUpdateOperator(value) {
1029
+ if (!value || typeof value !== 'object')
1030
+ return false;
1031
+ // Support both lowercase (Mongoose style) and uppercase (legacy) operators
1032
+ const operators = [
1033
+ '$inc', '$INC', '$dec', '$DEC', '$mul', '$MUL', '$min', '$MIN', '$max', '$MAX',
1034
+ '$set', '$SET', '$unset', '$UNSET', '$push', '$PUSH', '$pull', '$PULL',
1035
+ '$addToSet', '$ADDTOSET', '$pop', '$POP', '$rename', '$RENAME', '$currentDate', '$CURRENTDATE'
1036
+ ];
1037
+ return operators.some(op => op in value);
1038
+ }
1039
+ getParameterPlaceholder(index) {
1040
+ // MongoDB doesn't use parameter placeholders like SQL
1041
+ return '';
1042
+ }
1043
+ getColumnTypeString(columnType, options) {
1044
+ // MongoDB is schemaless, but we can map to BSON types
1045
+ const typeMap = {
1046
+ [enums_1.ColumnType.INTEGER]: 'int',
1047
+ [enums_1.ColumnType.BIGINT]: 'long',
1048
+ [enums_1.ColumnType.FLOAT]: 'double',
1049
+ [enums_1.ColumnType.DOUBLE]: 'double',
1050
+ [enums_1.ColumnType.DECIMAL]: 'decimal',
1051
+ [enums_1.ColumnType.STRING]: 'string',
1052
+ [enums_1.ColumnType.TEXT]: 'string',
1053
+ [enums_1.ColumnType.BOOLEAN]: 'bool',
1054
+ [enums_1.ColumnType.DATE]: 'date',
1055
+ [enums_1.ColumnType.DATETIME]: 'date',
1056
+ [enums_1.ColumnType.TIMESTAMP]: 'date',
1057
+ [enums_1.ColumnType.JSON]: 'object',
1058
+ [enums_1.ColumnType.JSONB]: 'object',
1059
+ [enums_1.ColumnType.UUID]: 'string',
1060
+ [enums_1.ColumnType.BINARY]: 'binData',
1061
+ [enums_1.ColumnType.ARRAY]: 'array',
1062
+ };
1063
+ return typeMap[columnType] || columnType;
1064
+ }
1065
+ getSupportedFeatures() {
1066
+ return [
1067
+ base_adapter_1.DatabaseFeature.TRANSACTIONS,
1068
+ base_adapter_1.DatabaseFeature.JSON,
1069
+ base_adapter_1.DatabaseFeature.ARRAYS,
1070
+ base_adapter_1.DatabaseFeature.TTL,
1071
+ base_adapter_1.DatabaseFeature.CHANGE_STREAMS,
1072
+ base_adapter_1.DatabaseFeature.SECONDARY_INDEXES,
1073
+ base_adapter_1.DatabaseFeature.AGGREGATION_PIPELINE,
1074
+ base_adapter_1.DatabaseFeature.ATOMIC_COUNTERS,
1075
+ base_adapter_1.DatabaseFeature.BATCH_OPERATIONS,
1076
+ base_adapter_1.DatabaseFeature.REGEX,
1077
+ ];
1078
+ }
1079
+ parseError(error) {
1080
+ const code = error.code;
1081
+ let type = enums_1.DatabaseErrorType.UNKNOWN_ERROR;
1082
+ // Map MongoDB error codes
1083
+ switch (code) {
1084
+ case 11000: // Duplicate key
1085
+ type = enums_1.DatabaseErrorType.UNIQUE_VIOLATION;
1086
+ break;
1087
+ case 18: // Authentication failed
1088
+ type = enums_1.DatabaseErrorType.AUTHENTICATION_ERROR;
1089
+ break;
1090
+ case 26: // Namespace not found
1091
+ type = enums_1.DatabaseErrorType.NOT_FOUND;
1092
+ break;
1093
+ case 48: // Namespace already exists
1094
+ type = enums_1.DatabaseErrorType.SCHEMA_ERROR;
1095
+ break;
1096
+ default:
1097
+ if (error.name === 'MongoNetworkError') {
1098
+ type = enums_1.DatabaseErrorType.CONNECTION_ERROR;
1099
+ }
1100
+ }
1101
+ return {
1102
+ type,
1103
+ message: error.message || 'Unknown database error',
1104
+ code: String(code),
1105
+ details: {
1106
+ codeName: error.codeName,
1107
+ keyPattern: error.keyPattern,
1108
+ keyValue: error.keyValue,
1109
+ },
1110
+ };
1111
+ }
1112
+ // ==================== PRIVATE HELPER METHODS ====================
1113
+ ensureConnected() {
1114
+ if (!this.connected || !this.db) {
1115
+ throw new database_error_1.DatabaseError('Not connected to MongoDB database', enums_1.DatabaseErrorType.CONNECTION_ERROR);
1116
+ }
1117
+ }
1118
+ buildMongoFilter(where) {
1119
+ const filter = {};
1120
+ for (const [key, value] of Object.entries(where)) {
1121
+ // Normalize key to lowercase for logical operators (support both cases for backwards compatibility)
1122
+ const normalizedKey = key.toLowerCase();
1123
+ if (normalizedKey === '$and') {
1124
+ const conditions = Array.isArray(value) ? value : Object.entries(value).map(([k, v]) => ({ [k]: v }));
1125
+ filter.$and = conditions.map((cond) => this.buildMongoFilter(cond));
1126
+ }
1127
+ else if (normalizedKey === '$or') {
1128
+ const conditions = Array.isArray(value) ? value : Object.entries(value).map(([k, v]) => ({ [k]: v }));
1129
+ filter.$or = conditions.map((cond) => this.buildMongoFilter(cond));
1130
+ }
1131
+ else if (normalizedKey === '$not') {
1132
+ filter.$nor = [this.buildMongoFilter(value)];
1133
+ }
1134
+ else if (normalizedKey === '$nor') {
1135
+ const conditions = Array.isArray(value) ? value : [value];
1136
+ filter.$nor = conditions.map((cond) => this.buildMongoFilter(cond));
1137
+ }
1138
+ else if (value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {
1139
+ // Handle operators
1140
+ const fieldFilter = {};
1141
+ for (const [op, opValue] of Object.entries(value)) {
1142
+ // Normalize operator to lowercase (support both cases for backwards compatibility)
1143
+ const normalizedOp = op.toLowerCase();
1144
+ switch (normalizedOp) {
1145
+ case '$eq':
1146
+ fieldFilter.$eq = opValue;
1147
+ break;
1148
+ case '$ne':
1149
+ fieldFilter.$ne = opValue;
1150
+ break;
1151
+ case '$gt':
1152
+ fieldFilter.$gt = opValue;
1153
+ break;
1154
+ case '$gte':
1155
+ fieldFilter.$gte = opValue;
1156
+ break;
1157
+ case '$lt':
1158
+ fieldFilter.$lt = opValue;
1159
+ break;
1160
+ case '$lte':
1161
+ fieldFilter.$lte = opValue;
1162
+ break;
1163
+ case '$in':
1164
+ fieldFilter.$in = opValue;
1165
+ break;
1166
+ case '$nin':
1167
+ case '$not_in':
1168
+ fieldFilter.$nin = opValue;
1169
+ break;
1170
+ case '$like':
1171
+ // Convert SQL LIKE pattern to regex (case-sensitive)
1172
+ // 1. Escape regex special characters first (except % and _)
1173
+ // 2. Replace SQL wildcards with regex equivalents
1174
+ // 3. Anchor pattern to match full string
1175
+ const likePattern = '^' + opValue
1176
+ .replace(/[.*+?^${}()|[\]\\]/g, (char) => {
1177
+ // Don't escape % and _ - they are SQL wildcards
1178
+ if (char === '%' || char === '_')
1179
+ return char;
1180
+ return '\\' + char;
1181
+ })
1182
+ .replace(/%/g, '.*')
1183
+ .replace(/_/g, '.') + '$';
1184
+ fieldFilter.$regex = new RegExp(likePattern);
1185
+ break;
1186
+ case '$ilike':
1187
+ // Convert SQL ILIKE pattern to regex (case-insensitive)
1188
+ const ilikePattern = '^' + opValue
1189
+ .replace(/[.*+?^${}()|[\]\\]/g, (char) => {
1190
+ if (char === '%' || char === '_')
1191
+ return char;
1192
+ return '\\' + char;
1193
+ })
1194
+ .replace(/%/g, '.*')
1195
+ .replace(/_/g, '.') + '$';
1196
+ fieldFilter.$regex = new RegExp(ilikePattern, 'i');
1197
+ break;
1198
+ case '$isnull':
1199
+ case '$is_null':
1200
+ if (opValue) {
1201
+ fieldFilter.$eq = null;
1202
+ }
1203
+ else {
1204
+ fieldFilter.$ne = null;
1205
+ }
1206
+ break;
1207
+ case '$isnotnull':
1208
+ case '$is_not_null':
1209
+ if (opValue) {
1210
+ fieldFilter.$ne = null;
1211
+ }
1212
+ else {
1213
+ fieldFilter.$eq = null;
1214
+ }
1215
+ break;
1216
+ case '$between':
1217
+ const [min, max] = opValue;
1218
+ fieldFilter.$gte = min;
1219
+ fieldFilter.$lte = max;
1220
+ break;
1221
+ case '$contains':
1222
+ fieldFilter.$elemMatch = { $eq: opValue };
1223
+ break;
1224
+ case '$overlaps':
1225
+ fieldFilter.$elemMatch = { $in: opValue };
1226
+ break;
1227
+ case '$regex':
1228
+ if (typeof opValue === 'string') {
1229
+ fieldFilter.$regex = new RegExp(opValue);
1230
+ }
1231
+ else if (opValue instanceof RegExp) {
1232
+ fieldFilter.$regex = opValue;
1233
+ }
1234
+ break;
1235
+ case '$exists':
1236
+ fieldFilter.$exists = opValue;
1237
+ break;
1238
+ }
1239
+ }
1240
+ filter[key] = fieldFilter;
1241
+ }
1242
+ else {
1243
+ // Simple equality
1244
+ filter[key] = value;
1245
+ }
1246
+ }
1247
+ return filter;
1248
+ }
1249
+ extractFieldTypes(obj, prefix, fieldTypes) {
1250
+ for (const [key, value] of Object.entries(obj)) {
1251
+ const fieldName = prefix ? `${prefix}.${key}` : key;
1252
+ const type = this.getJsType(value);
1253
+ if (!fieldTypes.has(fieldName)) {
1254
+ fieldTypes.set(fieldName, new Set());
1255
+ }
1256
+ fieldTypes.get(fieldName).add(type);
1257
+ // Recurse into nested objects (but not arrays)
1258
+ if (value && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {
1259
+ this.extractFieldTypes(value, fieldName, fieldTypes);
1260
+ }
1261
+ }
1262
+ }
1263
+ getJsType(value) {
1264
+ if (value === null)
1265
+ return 'null';
1266
+ if (Array.isArray(value))
1267
+ return 'array';
1268
+ if (value instanceof Date)
1269
+ return 'date';
1270
+ if (value && value._bsontype === 'ObjectId')
1271
+ return 'ObjectId';
1272
+ return typeof value;
1273
+ }
1274
+ formatBytes(bytes) {
1275
+ if (bytes === 0)
1276
+ return '0 B';
1277
+ const k = 1024;
1278
+ const sizes = ['B', 'KB', 'MB', 'GB', 'TB'];
1279
+ const i = Math.floor(Math.log(bytes) / Math.log(k));
1280
+ return parseFloat((bytes / Math.pow(k, i)).toFixed(2)) + ' ' + sizes[i];
1281
+ }
1282
+ }
1283
+ exports.MongoDBAdapter = MongoDBAdapter;
1284
+ //# sourceMappingURL=mongodb.adapter.js.map