@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,1487 @@
1
+ "use strict";
2
+ /**
3
+ * PostgreSQL Adapter
4
+ *
5
+ * Database adapter for PostgreSQL databases using the 'pg' library.
6
+ * Implements all methods from BaseAdapter with PostgreSQL-specific optimizations.
7
+ */
8
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ var desc = Object.getOwnPropertyDescriptor(m, k);
11
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
12
+ desc = { enumerable: true, get: function() { return m[k]; } };
13
+ }
14
+ Object.defineProperty(o, k2, desc);
15
+ }) : (function(o, m, k, k2) {
16
+ if (k2 === undefined) k2 = k;
17
+ o[k2] = m[k];
18
+ }));
19
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
20
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
21
+ }) : function(o, v) {
22
+ o["default"] = v;
23
+ });
24
+ var __importStar = (this && this.__importStar) || (function () {
25
+ var ownKeys = function(o) {
26
+ ownKeys = Object.getOwnPropertyNames || function (o) {
27
+ var ar = [];
28
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
29
+ return ar;
30
+ };
31
+ return ownKeys(o);
32
+ };
33
+ return function (mod) {
34
+ if (mod && mod.__esModule) return mod;
35
+ var result = {};
36
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
37
+ __setModuleDefault(result, mod);
38
+ return result;
39
+ };
40
+ })();
41
+ Object.defineProperty(exports, "__esModule", { value: true });
42
+ exports.PostgreSQLAdapter = void 0;
43
+ const base_adapter_1 = require("./base.adapter");
44
+ const enums_1 = require("../types/enums");
45
+ const database_error_1 = require("../utils/database-error");
46
+ /**
47
+ * PostgreSQL database adapter
48
+ * Provides PostgreSQL-specific implementations for all database operations
49
+ */
50
+ class PostgreSQLAdapter extends base_adapter_1.BaseAdapter {
51
+ constructor() {
52
+ super(...arguments);
53
+ this.databaseType = enums_1.DatabaseType.POSTGRESQL;
54
+ this.pool = null;
55
+ }
56
+ // ==================== CONNECTION METHODS ====================
57
+ async connect(options) {
58
+ try {
59
+ // Dynamic import of pg to avoid bundling issues
60
+ const { Pool } = await Promise.resolve().then(() => __importStar(require('pg')));
61
+ this.connectionUrl = options.connectionUrl;
62
+ this.connectionOptions = options; // Store for auto-reconnection
63
+ const poolConfig = {
64
+ connectionString: options.connectionUrl,
65
+ max: options.poolSize || 10,
66
+ idleTimeoutMillis: options.idleTimeout || 30000,
67
+ connectionTimeoutMillis: options.connectionTimeout || 5000,
68
+ ssl: options.ssl ? { rejectUnauthorized: false } : undefined,
69
+ };
70
+ this.pool = new Pool(poolConfig);
71
+ // Test the connection
72
+ const client = await this.pool.connect();
73
+ const versionResult = await client.query('SELECT version()');
74
+ client.release();
75
+ this.client = this.pool;
76
+ this.connected = true;
77
+ return {
78
+ connected: true,
79
+ version: versionResult.rows[0].version,
80
+ };
81
+ }
82
+ catch (error) {
83
+ throw database_error_1.DatabaseError.connectionError(`Failed to connect to PostgreSQL: ${error.message}`, error);
84
+ }
85
+ }
86
+ async testConnection(options) {
87
+ try {
88
+ const { Pool } = await Promise.resolve().then(() => __importStar(require('pg')));
89
+ const pool = new Pool({
90
+ connectionString: options.connectionUrl,
91
+ max: 1,
92
+ connectionTimeoutMillis: options.connectionTimeout || 5000,
93
+ });
94
+ const client = await pool.connect();
95
+ const versionResult = await client.query('SELECT version()');
96
+ client.release();
97
+ await pool.end();
98
+ return {
99
+ connected: true,
100
+ version: versionResult.rows[0].version,
101
+ };
102
+ }
103
+ catch (error) {
104
+ return {
105
+ connected: false,
106
+ };
107
+ }
108
+ }
109
+ async disconnect() {
110
+ if (this.pool) {
111
+ await this.pool.end();
112
+ this.pool = null;
113
+ this.client = null;
114
+ this.connected = false;
115
+ }
116
+ }
117
+ // ==================== QUERY METHODS ====================
118
+ async query(query) {
119
+ this.ensureConnected();
120
+ return this.executeWithRetry(async () => {
121
+ var _a, _b, _c;
122
+ try {
123
+ const client = ((_a = query.options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
124
+ const result = await client.query(query.sql, query.params);
125
+ // Get total count if needed for pagination
126
+ let count = result.rows.length;
127
+ if (query.options.limit || query.options.offset) {
128
+ const countSql = this.buildCountQuery(query);
129
+ // Calculate how many params to remove based on actual pagination options
130
+ let paramsToRemove = 0;
131
+ if (query.options.limit !== undefined)
132
+ paramsToRemove++;
133
+ if (query.options.offset !== undefined)
134
+ paramsToRemove++;
135
+ const countParams = paramsToRemove > 0 ? (_b = query.params) === null || _b === void 0 ? void 0 : _b.slice(0, -paramsToRemove) : query.params;
136
+ const countResult = await client.query(countSql, countParams);
137
+ count = parseInt(countResult.rows[0].count, 10);
138
+ }
139
+ return {
140
+ data: result.rows,
141
+ count,
142
+ fields: (_c = result.fields) === null || _c === void 0 ? void 0 : _c.map((f) => f.name),
143
+ };
144
+ }
145
+ catch (error) {
146
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'postgresql');
147
+ }
148
+ });
149
+ }
150
+ async raw(options) {
151
+ this.ensureConnected();
152
+ return this.executeWithRetry(async () => {
153
+ var _a, _b;
154
+ try {
155
+ const client = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
156
+ const result = await client.query(options.query, options.params);
157
+ return {
158
+ data: result.rows,
159
+ count: result.rowCount || result.rows.length,
160
+ fields: (_b = result.fields) === null || _b === void 0 ? void 0 : _b.map((f) => f.name),
161
+ };
162
+ }
163
+ catch (error) {
164
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'postgresql');
165
+ }
166
+ });
167
+ }
168
+ // ==================== WRITE METHODS ====================
169
+ async insert(options) {
170
+ var _a;
171
+ this.ensureConnected();
172
+ try {
173
+ const client = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
174
+ const data = Array.isArray(options.data) ? options.data : [options.data];
175
+ if (data.length === 0) {
176
+ return { data: [], count: 0, insertedIds: [] };
177
+ }
178
+ const columns = Object.keys(data[0]);
179
+ const values = [];
180
+ const valuePlaceholders = [];
181
+ data.forEach((record, rowIndex) => {
182
+ const rowPlaceholders = [];
183
+ columns.forEach((col, colIndex) => {
184
+ values.push(record[col]);
185
+ rowPlaceholders.push(`$${rowIndex * columns.length + colIndex + 1}`);
186
+ });
187
+ valuePlaceholders.push(`(${rowPlaceholders.join(', ')})`);
188
+ });
189
+ let sql = `INSERT INTO ${this.escapeIdentifier(options.table)} (${columns.map(c => this.escapeIdentifier(c)).join(', ')}) VALUES ${valuePlaceholders.join(', ')}`;
190
+ // Handle ON CONFLICT (upsert)
191
+ if (options.onConflict) {
192
+ const conflictColumns = options.onConflict.columns.map(c => this.escapeIdentifier(c)).join(', ');
193
+ if (options.onConflict.action === 'ignore') {
194
+ sql += ` ON CONFLICT (${conflictColumns}) DO NOTHING`;
195
+ }
196
+ else if (options.onConflict.action === 'update' && options.onConflict.update) {
197
+ const updates = options.onConflict.update.map(col => `${this.escapeIdentifier(col)} = EXCLUDED.${this.escapeIdentifier(col)}`).join(', ');
198
+ sql += ` ON CONFLICT (${conflictColumns}) DO UPDATE SET ${updates}`;
199
+ }
200
+ }
201
+ // Always use RETURNING * to get all columns including the primary key
202
+ // This avoids assuming the primary key column is named 'id'
203
+ sql += ' RETURNING *';
204
+ const result = await client.query(sql, values);
205
+ // Try to extract the primary key value from returned rows
206
+ // Look for common primary key column names if 'id' doesn't exist
207
+ const insertedIds = result.rows.map((r) => {
208
+ // Try common primary key column names in order of likelihood
209
+ if (r.id !== undefined)
210
+ return r.id;
211
+ if (r._id !== undefined)
212
+ return r._id;
213
+ if (r.uuid !== undefined)
214
+ return r.uuid;
215
+ // Fall back to first column value as a reasonable guess for serial PKs
216
+ const keys = Object.keys(r);
217
+ return keys.length > 0 ? r[keys[0]] : undefined;
218
+ });
219
+ return {
220
+ data: options.returning ? result.rows : [],
221
+ count: result.rowCount || data.length,
222
+ insertedIds,
223
+ };
224
+ }
225
+ catch (error) {
226
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'postgresql');
227
+ }
228
+ }
229
+ async update(options) {
230
+ var _a, _b, _c, _d, _e, _f, _g, _h, _j, _k, _l;
231
+ this.ensureConnected();
232
+ try {
233
+ const client = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
234
+ const setClauses = [];
235
+ const values = [];
236
+ let paramIndex = 1;
237
+ // Track nested JSON updates to merge them (multiple updates to same column)
238
+ const jsonbSetUpdates = new Map();
239
+ // Build SET clause
240
+ for (const [key, value] of Object.entries(options.data)) {
241
+ // Check if this is a nested JSON path (e.g., 'metadata.preferences.notifications')
242
+ if (key.includes('.') && !this.isUpdateOperator(value)) {
243
+ const parts = key.split('.');
244
+ const column = parts[0];
245
+ const jsonPath = parts.slice(1);
246
+ // Collect nested updates for the same column
247
+ if (!jsonbSetUpdates.has(column)) {
248
+ jsonbSetUpdates.set(column, []);
249
+ }
250
+ jsonbSetUpdates.get(column).push({ path: jsonPath, value, paramIndex });
251
+ values.push(JSON.stringify(value));
252
+ paramIndex++;
253
+ continue;
254
+ }
255
+ if (value && typeof value === 'object' && this.isUpdateOperator(value)) {
256
+ // Handle update operators - support both lowercase (new) and uppercase (legacy)
257
+ if ('$inc' in value || '$INC' in value) {
258
+ setClauses.push(`${this.escapeIdentifier(key)} = ${this.escapeIdentifier(key)} + $${paramIndex}`);
259
+ values.push((_b = value.$inc) !== null && _b !== void 0 ? _b : value.$INC);
260
+ paramIndex++;
261
+ }
262
+ else if ('$dec' in value || '$DEC' in value) {
263
+ setClauses.push(`${this.escapeIdentifier(key)} = ${this.escapeIdentifier(key)} - $${paramIndex}`);
264
+ values.push((_c = value.$dec) !== null && _c !== void 0 ? _c : value.$DEC);
265
+ paramIndex++;
266
+ }
267
+ else if ('$mul' in value || '$MUL' in value) {
268
+ setClauses.push(`${this.escapeIdentifier(key)} = ${this.escapeIdentifier(key)} * $${paramIndex}`);
269
+ values.push((_d = value.$mul) !== null && _d !== void 0 ? _d : value.$MUL);
270
+ paramIndex++;
271
+ }
272
+ else if ('$min' in value || '$MIN' in value) {
273
+ // LEAST function for minimum
274
+ setClauses.push(`${this.escapeIdentifier(key)} = LEAST(${this.escapeIdentifier(key)}, $${paramIndex})`);
275
+ values.push((_e = value.$min) !== null && _e !== void 0 ? _e : value.$MIN);
276
+ paramIndex++;
277
+ }
278
+ else if ('$max' in value || '$MAX' in value) {
279
+ // GREATEST function for maximum
280
+ setClauses.push(`${this.escapeIdentifier(key)} = GREATEST(${this.escapeIdentifier(key)}, $${paramIndex})`);
281
+ values.push((_f = value.$max) !== null && _f !== void 0 ? _f : value.$MAX);
282
+ paramIndex++;
283
+ }
284
+ else if ('$set' in value || '$SET' in value) {
285
+ setClauses.push(`${this.escapeIdentifier(key)} = $${paramIndex}`);
286
+ values.push((_g = value.$set) !== null && _g !== void 0 ? _g : value.$SET);
287
+ paramIndex++;
288
+ }
289
+ else if (('$unset' in value && value.$unset) || ('$UNSET' in value && value.$UNSET)) {
290
+ setClauses.push(`${this.escapeIdentifier(key)} = NULL`);
291
+ // No paramIndex increment needed for NULL
292
+ }
293
+ else if ('$push' in value || '$PUSH' in value) {
294
+ // Array append for PostgreSQL (column must be array type)
295
+ setClauses.push(`${this.escapeIdentifier(key)} = array_append(${this.escapeIdentifier(key)}, $${paramIndex})`);
296
+ values.push((_h = value.$push) !== null && _h !== void 0 ? _h : value.$PUSH);
297
+ paramIndex++;
298
+ }
299
+ else if ('$pull' in value || '$PULL' in value) {
300
+ // Array remove for PostgreSQL (column must be array type)
301
+ setClauses.push(`${this.escapeIdentifier(key)} = array_remove(${this.escapeIdentifier(key)}, $${paramIndex})`);
302
+ values.push((_j = value.$pull) !== null && _j !== void 0 ? _j : value.$PULL);
303
+ paramIndex++;
304
+ }
305
+ else if ('$addToSet' in value || '$ADDTOSET' in value) {
306
+ // Add unique value to array - use CASE to check existence first
307
+ const addValue = (_k = value.$addToSet) !== null && _k !== void 0 ? _k : value.$ADDTOSET;
308
+ setClauses.push(`${this.escapeIdentifier(key)} = CASE WHEN $${paramIndex} = ANY(${this.escapeIdentifier(key)}) THEN ${this.escapeIdentifier(key)} ELSE array_append(${this.escapeIdentifier(key)}, $${paramIndex}) END`);
309
+ values.push(addValue);
310
+ paramIndex++;
311
+ }
312
+ else if ('$pop' in value || '$POP' in value) {
313
+ const popVal = (_l = value.$pop) !== null && _l !== void 0 ? _l : value.$POP;
314
+ // Pop from beginning or end of array
315
+ if (popVal === -1) {
316
+ setClauses.push(`${this.escapeIdentifier(key)} = ${this.escapeIdentifier(key)}[2:]`);
317
+ }
318
+ else {
319
+ setClauses.push(`${this.escapeIdentifier(key)} = ${this.escapeIdentifier(key)}[1:array_length(${this.escapeIdentifier(key)}, 1)-1]`);
320
+ }
321
+ }
322
+ else if ('$currentDate' in value || '$CURRENTDATE' in value) {
323
+ setClauses.push(`${this.escapeIdentifier(key)} = NOW()`);
324
+ }
325
+ }
326
+ else {
327
+ setClauses.push(`${this.escapeIdentifier(key)} = $${paramIndex}`);
328
+ values.push(value);
329
+ paramIndex++;
330
+ }
331
+ }
332
+ // Build jsonb_set clauses for nested JSON updates
333
+ for (const [column, updates] of jsonbSetUpdates) {
334
+ // Build nested jsonb_set calls for multiple updates to the same column
335
+ let setExpr = this.escapeIdentifier(column);
336
+ for (const update of updates) {
337
+ const pathArray = `'{${update.path.join(',')}}'`;
338
+ setExpr = `jsonb_set(COALESCE(${setExpr}, '{}'::jsonb), ${pathArray}, $${update.paramIndex}::jsonb, true)`;
339
+ }
340
+ setClauses.push(`${this.escapeIdentifier(column)} = ${setExpr}`);
341
+ }
342
+ let sql = `UPDATE ${this.escapeIdentifier(options.table)} SET ${setClauses.join(', ')}`;
343
+ // Build WHERE clause
344
+ if (options.where) {
345
+ const { whereClause, whereParams } = this.buildWhereClause(options.where, paramIndex);
346
+ sql += ` WHERE ${whereClause}`;
347
+ values.push(...whereParams);
348
+ }
349
+ // Add RETURNING if requested
350
+ if (options.returning) {
351
+ sql += ' RETURNING *';
352
+ }
353
+ const result = await client.query(sql, values);
354
+ return {
355
+ data: options.returning ? result.rows : [],
356
+ count: result.rowCount || 0,
357
+ };
358
+ }
359
+ catch (error) {
360
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'postgresql');
361
+ }
362
+ }
363
+ async delete(options) {
364
+ var _a;
365
+ this.ensureConnected();
366
+ try {
367
+ const client = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
368
+ let sql = `DELETE FROM ${this.escapeIdentifier(options.table)}`;
369
+ const values = [];
370
+ // Build WHERE clause
371
+ if (options.where) {
372
+ const { whereClause, whereParams } = this.buildWhereClause(options.where, 1);
373
+ sql += ` WHERE ${whereClause}`;
374
+ values.push(...whereParams);
375
+ }
376
+ // Add RETURNING if requested
377
+ if (options.returning) {
378
+ sql += ' RETURNING *';
379
+ }
380
+ const result = await client.query(sql, values);
381
+ return {
382
+ count: result.rowCount || 0,
383
+ data: options.returning ? result.rows : undefined,
384
+ };
385
+ }
386
+ catch (error) {
387
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'postgresql');
388
+ }
389
+ }
390
+ async upsert(options) {
391
+ this.ensureConnected();
392
+ try {
393
+ const insertResult = await this.insert(Object.assign(Object.assign({}, options), { onConflict: {
394
+ columns: options.conflictKeys,
395
+ action: 'update',
396
+ update: options.updateColumns || Object.keys(options.data).filter(k => !options.conflictKeys.includes(k)),
397
+ }, returning: true }));
398
+ // Determine if it was an insert or update
399
+ // PostgreSQL doesn't directly tell us, so we check xmax
400
+ const operation = 'upserted'; // Simplified - PostgreSQL doesn't easily distinguish
401
+ return {
402
+ data: insertResult.data,
403
+ count: insertResult.count,
404
+ operation: insertResult.count > 0 ? 'inserted' : 'updated',
405
+ };
406
+ }
407
+ catch (error) {
408
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'postgresql');
409
+ }
410
+ }
411
+ // ==================== AGGREGATION METHODS ====================
412
+ async count(options) {
413
+ var _a;
414
+ this.ensureConnected();
415
+ try {
416
+ const client = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
417
+ const column = options.column ? this.escapeIdentifier(options.column) : '*';
418
+ const distinctPrefix = options.distinct ? 'DISTINCT ' : '';
419
+ let sql = `SELECT COUNT(${distinctPrefix}${column}) as count FROM ${this.escapeIdentifier(options.table)}`;
420
+ const values = [];
421
+ if (options.where) {
422
+ const { whereClause, whereParams } = this.buildWhereClause(options.where, 1);
423
+ sql += ` WHERE ${whereClause}`;
424
+ values.push(...whereParams);
425
+ }
426
+ const result = await client.query(sql, values);
427
+ return parseInt(result.rows[0].count, 10);
428
+ }
429
+ catch (error) {
430
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'postgresql');
431
+ }
432
+ }
433
+ async sum(options) {
434
+ var _a;
435
+ this.ensureConnected();
436
+ try {
437
+ const client = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
438
+ let sql = `SELECT COALESCE(SUM(${this.escapeIdentifier(options.column)}), 0) as sum FROM ${this.escapeIdentifier(options.table)}`;
439
+ const values = [];
440
+ if (options.where) {
441
+ const { whereClause, whereParams } = this.buildWhereClause(options.where, 1);
442
+ sql += ` WHERE ${whereClause}`;
443
+ values.push(...whereParams);
444
+ }
445
+ const result = await client.query(sql, values);
446
+ return parseFloat(result.rows[0].sum);
447
+ }
448
+ catch (error) {
449
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'postgresql');
450
+ }
451
+ }
452
+ async avg(options) {
453
+ var _a;
454
+ this.ensureConnected();
455
+ try {
456
+ const client = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
457
+ let sql = `SELECT COALESCE(AVG(${this.escapeIdentifier(options.column)}), 0) as avg FROM ${this.escapeIdentifier(options.table)}`;
458
+ const values = [];
459
+ if (options.where) {
460
+ const { whereClause, whereParams } = this.buildWhereClause(options.where, 1);
461
+ sql += ` WHERE ${whereClause}`;
462
+ values.push(...whereParams);
463
+ }
464
+ const result = await client.query(sql, values);
465
+ return parseFloat(result.rows[0].avg);
466
+ }
467
+ catch (error) {
468
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'postgresql');
469
+ }
470
+ }
471
+ async min(options) {
472
+ var _a;
473
+ this.ensureConnected();
474
+ try {
475
+ const client = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
476
+ let sql = `SELECT MIN(${this.escapeIdentifier(options.column)}) as min FROM ${this.escapeIdentifier(options.table)}`;
477
+ const values = [];
478
+ if (options.where) {
479
+ const { whereClause, whereParams } = this.buildWhereClause(options.where, 1);
480
+ sql += ` WHERE ${whereClause}`;
481
+ values.push(...whereParams);
482
+ }
483
+ const result = await client.query(sql, values);
484
+ return result.rows[0].min;
485
+ }
486
+ catch (error) {
487
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'postgresql');
488
+ }
489
+ }
490
+ async max(options) {
491
+ var _a;
492
+ this.ensureConnected();
493
+ try {
494
+ const client = ((_a = options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
495
+ let sql = `SELECT MAX(${this.escapeIdentifier(options.column)}) as max FROM ${this.escapeIdentifier(options.table)}`;
496
+ const values = [];
497
+ if (options.where) {
498
+ const { whereClause, whereParams } = this.buildWhereClause(options.where, 1);
499
+ sql += ` WHERE ${whereClause}`;
500
+ values.push(...whereParams);
501
+ }
502
+ const result = await client.query(sql, values);
503
+ return result.rows[0].max;
504
+ }
505
+ catch (error) {
506
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'postgresql');
507
+ }
508
+ }
509
+ async aggregate(builtAggregation) {
510
+ var _a;
511
+ this.ensureConnected();
512
+ try {
513
+ const client = ((_a = builtAggregation.options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
514
+ const result = await client.query(builtAggregation.sql, builtAggregation.params);
515
+ return result.rows[0] || {};
516
+ }
517
+ catch (error) {
518
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'postgresql');
519
+ }
520
+ }
521
+ async groupBy(builtGroupBy) {
522
+ var _a;
523
+ this.ensureConnected();
524
+ try {
525
+ const client = ((_a = builtGroupBy.options.transaction) === null || _a === void 0 ? void 0 : _a.client) || this.pool;
526
+ const result = await client.query(builtGroupBy.sql, builtGroupBy.params);
527
+ // Transform rows into IGroupByResult format
528
+ const options = builtGroupBy.options;
529
+ return result.rows.map((row) => {
530
+ var _a;
531
+ const group = {};
532
+ const aggregates = {};
533
+ for (const key of Object.keys(row)) {
534
+ if ((_a = options.groupBy) === null || _a === void 0 ? void 0 : _a.includes(key)) {
535
+ group[key] = row[key];
536
+ }
537
+ else {
538
+ aggregates[key] = row[key];
539
+ }
540
+ }
541
+ return { group, aggregates: aggregates };
542
+ });
543
+ }
544
+ catch (error) {
545
+ throw database_error_1.DatabaseError.fromDatabaseError(error, 'postgresql');
546
+ }
547
+ }
548
+ // ==================== TRANSACTION METHODS ====================
549
+ async beginTransaction(isolationLevel, readOnly, timeout) {
550
+ this.ensureConnected();
551
+ try {
552
+ const client = await this.pool.connect();
553
+ const id = `pg_txn_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
554
+ // Build BEGIN statement with isolation level
555
+ let beginSql = 'BEGIN';
556
+ if (isolationLevel) {
557
+ beginSql += ` ISOLATION LEVEL ${this.mapIsolationLevel(isolationLevel)}`;
558
+ }
559
+ if (readOnly) {
560
+ beginSql += ' READ ONLY';
561
+ }
562
+ await client.query(beginSql);
563
+ // Set statement timeout if specified
564
+ if (timeout) {
565
+ await client.query(`SET LOCAL statement_timeout = ${timeout}`);
566
+ }
567
+ return {
568
+ id,
569
+ databaseType: 'postgresql',
570
+ isolationLevel: isolationLevel || enums_1.IsolationLevel.READ_COMMITTED,
571
+ readOnly: readOnly || false,
572
+ timeout,
573
+ startedAt: new Date(),
574
+ client,
575
+ savepoints: new Map(),
576
+ status: 'active',
577
+ };
578
+ }
579
+ catch (error) {
580
+ throw database_error_1.DatabaseError.transactionError(`Failed to begin transaction: ${error.message}`, error);
581
+ }
582
+ }
583
+ async commitTransaction(context) {
584
+ try {
585
+ await context.client.query('COMMIT');
586
+ context.client.release();
587
+ context.status = 'committed';
588
+ }
589
+ catch (error) {
590
+ context.status = 'error';
591
+ context.client.release();
592
+ throw database_error_1.DatabaseError.transactionError(`Failed to commit transaction: ${error.message}`, error);
593
+ }
594
+ }
595
+ async rollbackTransaction(context) {
596
+ try {
597
+ await context.client.query('ROLLBACK');
598
+ context.client.release();
599
+ context.status = 'rolled_back';
600
+ }
601
+ catch (error) {
602
+ context.status = 'error';
603
+ context.client.release();
604
+ throw database_error_1.DatabaseError.transactionError(`Failed to rollback transaction: ${error.message}`, error);
605
+ }
606
+ }
607
+ async createSavepoint(context, name) {
608
+ try {
609
+ await context.client.query(`SAVEPOINT ${this.escapeIdentifier(name)}`);
610
+ const savepoint = {
611
+ name,
612
+ release: async () => {
613
+ await this.releaseSavepoint(context, savepoint);
614
+ },
615
+ rollback: async () => {
616
+ await this.rollbackToSavepoint(context, savepoint);
617
+ },
618
+ };
619
+ context.savepoints.set(name, savepoint);
620
+ return savepoint;
621
+ }
622
+ catch (error) {
623
+ throw database_error_1.DatabaseError.transactionError(`Failed to create savepoint: ${error.message}`, error);
624
+ }
625
+ }
626
+ async releaseSavepoint(context, savepoint) {
627
+ try {
628
+ await context.client.query(`RELEASE SAVEPOINT ${this.escapeIdentifier(savepoint.name)}`);
629
+ context.savepoints.delete(savepoint.name);
630
+ }
631
+ catch (error) {
632
+ throw database_error_1.DatabaseError.transactionError(`Failed to release savepoint: ${error.message}`, error);
633
+ }
634
+ }
635
+ async rollbackToSavepoint(context, savepoint) {
636
+ try {
637
+ await context.client.query(`ROLLBACK TO SAVEPOINT ${this.escapeIdentifier(savepoint.name)}`);
638
+ }
639
+ catch (error) {
640
+ throw database_error_1.DatabaseError.transactionError(`Failed to rollback to savepoint: ${error.message}`, error);
641
+ }
642
+ }
643
+ supportsSavepoints() {
644
+ return true;
645
+ }
646
+ // ==================== SCHEMA METHODS ====================
647
+ async createTable(definition, options) {
648
+ this.ensureConnected();
649
+ try {
650
+ const columnDefs = definition.columns.map(col => this.buildColumnDefinition(col)).join(', ');
651
+ let sql = 'CREATE';
652
+ if (options === null || options === void 0 ? void 0 : options.temporary)
653
+ sql += ' TEMPORARY';
654
+ if (options === null || options === void 0 ? void 0 : options.unlogged)
655
+ sql += ' UNLOGGED';
656
+ sql += ' TABLE';
657
+ if (options === null || options === void 0 ? void 0 : options.ifNotExists)
658
+ sql += ' IF NOT EXISTS';
659
+ sql += ` ${this.escapeIdentifier(definition.name)} (${columnDefs}`;
660
+ // Add table constraints
661
+ if (definition.constraints) {
662
+ const constraintDefs = definition.constraints.map(c => this.buildConstraintDefinition(c)).join(', ');
663
+ sql += `, ${constraintDefs}`;
664
+ }
665
+ sql += ')';
666
+ // Add inheritance
667
+ if (options === null || options === void 0 ? void 0 : options.inherits) {
668
+ sql += ` INHERITS (${this.escapeIdentifier(options.inherits)})`;
669
+ }
670
+ // Add tablespace
671
+ if (options === null || options === void 0 ? void 0 : options.tablespace) {
672
+ sql += ` TABLESPACE ${this.escapeIdentifier(options.tablespace)}`;
673
+ }
674
+ await this.pool.query(sql);
675
+ // Add table comment
676
+ if (definition.comment) {
677
+ await this.pool.query(`COMMENT ON TABLE ${this.escapeIdentifier(definition.name)} IS ${this.escapeValue(definition.comment)}`);
678
+ }
679
+ // Create indexes
680
+ if (definition.indexes) {
681
+ for (const index of definition.indexes) {
682
+ await this.createIndex(index);
683
+ }
684
+ }
685
+ }
686
+ catch (error) {
687
+ throw database_error_1.DatabaseError.schemaError(`Failed to create table: ${error.message}`, error);
688
+ }
689
+ }
690
+ async alterTable(tableName, operations) {
691
+ this.ensureConnected();
692
+ try {
693
+ for (const op of operations) {
694
+ let sql = `ALTER TABLE ${this.escapeIdentifier(tableName)}`;
695
+ switch (op.type) {
696
+ case 'ADD':
697
+ if (op.column) {
698
+ sql += ` ADD COLUMN ${this.buildColumnDefinition(op.column)}`;
699
+ }
700
+ else if (op.constraint) {
701
+ sql += ` ADD ${this.buildConstraintDefinition(op.constraint)}`;
702
+ }
703
+ break;
704
+ case 'DROP':
705
+ if (op.columnName) {
706
+ sql += ` DROP COLUMN ${this.escapeIdentifier(op.columnName)}`;
707
+ }
708
+ else if (op.constraintName) {
709
+ sql += ` DROP CONSTRAINT ${this.escapeIdentifier(op.constraintName)}`;
710
+ }
711
+ break;
712
+ case 'MODIFY':
713
+ if (op.column) {
714
+ // PostgreSQL uses ALTER COLUMN for modifications
715
+ const col = op.column;
716
+ if (col.type) {
717
+ sql += ` ALTER COLUMN ${this.escapeIdentifier(col.name)} TYPE ${this.getColumnTypeString(col.type, col)}`;
718
+ }
719
+ if (col.nullable !== undefined) {
720
+ if (col.nullable) {
721
+ sql += ` ALTER COLUMN ${this.escapeIdentifier(col.name)} DROP NOT NULL`;
722
+ }
723
+ else {
724
+ sql += ` ALTER COLUMN ${this.escapeIdentifier(col.name)} SET NOT NULL`;
725
+ }
726
+ }
727
+ if (col.defaultValue !== undefined) {
728
+ sql += ` ALTER COLUMN ${this.escapeIdentifier(col.name)} SET DEFAULT ${this.escapeValue(col.defaultValue)}`;
729
+ }
730
+ }
731
+ break;
732
+ case 'RENAME':
733
+ if (op.oldName && op.newName) {
734
+ sql += ` RENAME COLUMN ${this.escapeIdentifier(op.oldName)} TO ${this.escapeIdentifier(op.newName)}`;
735
+ }
736
+ break;
737
+ }
738
+ await this.pool.query(sql);
739
+ }
740
+ }
741
+ catch (error) {
742
+ throw database_error_1.DatabaseError.schemaError(`Failed to alter table: ${error.message}`, error);
743
+ }
744
+ }
745
+ async dropTable(tableName, ifExists, cascade) {
746
+ this.ensureConnected();
747
+ try {
748
+ let sql = 'DROP TABLE';
749
+ if (ifExists)
750
+ sql += ' IF EXISTS';
751
+ sql += ` ${this.escapeIdentifier(tableName)}`;
752
+ if (cascade)
753
+ sql += ' CASCADE';
754
+ await this.pool.query(sql);
755
+ }
756
+ catch (error) {
757
+ throw database_error_1.DatabaseError.schemaError(`Failed to drop table: ${error.message}`, error);
758
+ }
759
+ }
760
+ async listTables() {
761
+ this.ensureConnected();
762
+ try {
763
+ const result = await this.pool.query(`
764
+ SELECT tablename FROM pg_tables
765
+ WHERE schemaname = 'public'
766
+ ORDER BY tablename
767
+ `);
768
+ return result.rows.map((r) => r.tablename);
769
+ }
770
+ catch (error) {
771
+ throw database_error_1.DatabaseError.schemaError(`Failed to list tables: ${error.message}`, error);
772
+ }
773
+ }
774
+ async listTablesWithInfo() {
775
+ this.ensureConnected();
776
+ try {
777
+ const result = await this.pool.query(`
778
+ SELECT
779
+ t.tablename as name,
780
+ t.schemaname as schema,
781
+ c.reltuples::bigint as estimated_row_count,
782
+ pg_catalog.obj_description(c.oid, 'pg_class') as comment
783
+ FROM pg_tables t
784
+ LEFT JOIN pg_class c ON c.relname = t.tablename
785
+ WHERE t.schemaname = 'public'
786
+ ORDER BY t.tablename
787
+ `);
788
+ return result.rows.map((r) => ({
789
+ name: r.name,
790
+ schema: r.schema,
791
+ estimatedRowCount: r.estimated_row_count >= 0 ? Number(r.estimated_row_count) : undefined,
792
+ comment: r.comment || undefined,
793
+ }));
794
+ }
795
+ catch (error) {
796
+ throw database_error_1.DatabaseError.schemaError(`Failed to list tables with info: ${error.message}`, error);
797
+ }
798
+ }
799
+ async tableExists(tableName) {
800
+ this.ensureConnected();
801
+ return this.executeWithRetry(async () => {
802
+ try {
803
+ const result = await this.pool.query(`
804
+ SELECT EXISTS (
805
+ SELECT FROM pg_tables
806
+ WHERE schemaname = 'public' AND tablename = $1
807
+ )
808
+ `, [tableName]);
809
+ return result.rows[0].exists;
810
+ }
811
+ catch (error) {
812
+ throw database_error_1.DatabaseError.schemaError(`Failed to check table existence: ${error.message}`, error);
813
+ }
814
+ });
815
+ }
816
+ async getTableSchema(tableName) {
817
+ this.ensureConnected();
818
+ try {
819
+ // Get columns
820
+ const columnsResult = await this.pool.query(`
821
+ SELECT
822
+ column_name as name,
823
+ data_type as type,
824
+ is_nullable = 'YES' as nullable,
825
+ column_default as default_value,
826
+ character_maximum_length as max_length,
827
+ numeric_precision as precision,
828
+ numeric_scale as scale
829
+ FROM information_schema.columns
830
+ WHERE table_schema = 'public' AND table_name = $1
831
+ ORDER BY ordinal_position
832
+ `, [tableName]);
833
+ // Get primary key
834
+ const pkResult = await this.pool.query(`
835
+ SELECT a.attname as column_name
836
+ FROM pg_index i
837
+ JOIN pg_attribute a ON a.attrelid = i.indrelid AND a.attnum = ANY(i.indkey)
838
+ WHERE i.indrelid = $1::regclass AND i.indisprimary
839
+ `, [tableName]);
840
+ const primaryKey = pkResult.rows.map((r) => r.column_name);
841
+ // Get indexes
842
+ const indexes = await this.listIndexes(tableName);
843
+ // Get constraints
844
+ const constraintsResult = await this.pool.query(`
845
+ SELECT
846
+ con.conname as name,
847
+ CASE con.contype
848
+ WHEN 'p' THEN 'PRIMARY KEY'
849
+ WHEN 'f' THEN 'FOREIGN KEY'
850
+ WHEN 'u' THEN 'UNIQUE'
851
+ WHEN 'c' THEN 'CHECK'
852
+ END as type,
853
+ ARRAY(
854
+ SELECT a.attname
855
+ FROM unnest(con.conkey) WITH ORDINALITY AS k(key, ord)
856
+ JOIN pg_attribute a ON a.attnum = k.key AND a.attrelid = con.conrelid
857
+ ORDER BY k.ord
858
+ ) as columns,
859
+ pg_get_constraintdef(con.oid) as definition
860
+ FROM pg_constraint con
861
+ JOIN pg_namespace nsp ON nsp.oid = con.connamespace
862
+ WHERE con.conrelid = $1::regclass AND nsp.nspname = 'public'
863
+ `, [tableName]);
864
+ const columns = columnsResult.rows.map((col) => {
865
+ var _a;
866
+ return ({
867
+ name: col.name,
868
+ type: col.type,
869
+ nullable: col.nullable,
870
+ defaultValue: col.default_value,
871
+ isPrimaryKey: primaryKey.includes(col.name),
872
+ isUnique: false, // Would need additional query
873
+ isAutoIncrement: (_a = col.default_value) === null || _a === void 0 ? void 0 : _a.includes('nextval'),
874
+ maxLength: col.max_length,
875
+ precision: col.precision,
876
+ scale: col.scale,
877
+ });
878
+ });
879
+ const constraints = constraintsResult.rows.map((c) => ({
880
+ name: c.name,
881
+ type: c.type,
882
+ columns: c.columns,
883
+ expression: c.definition,
884
+ }));
885
+ return {
886
+ name: tableName,
887
+ schema: 'public',
888
+ columns,
889
+ indexes,
890
+ constraints,
891
+ primaryKey: primaryKey.length > 0 ? primaryKey : undefined,
892
+ };
893
+ }
894
+ catch (error) {
895
+ throw database_error_1.DatabaseError.schemaError(`Failed to get table schema: ${error.message}`, error);
896
+ }
897
+ }
898
+ async createIndex(index, ifNotExists, concurrent) {
899
+ this.ensureConnected();
900
+ try {
901
+ let sql = 'CREATE';
902
+ if (index.unique)
903
+ sql += ' UNIQUE';
904
+ sql += ' INDEX';
905
+ if (concurrent)
906
+ sql += ' CONCURRENTLY';
907
+ if (ifNotExists)
908
+ sql += ' IF NOT EXISTS';
909
+ sql += ` ${this.escapeIdentifier(index.name)} ON ${this.escapeIdentifier(index.table)}`;
910
+ // Add index method
911
+ if (index.method) {
912
+ sql += ` USING ${index.method}`;
913
+ }
914
+ // Add columns
915
+ const columnDefs = index.columns.map(col => {
916
+ let def = this.escapeIdentifier(col.name);
917
+ if (col.order)
918
+ def += ` ${col.order}`;
919
+ if (col.nulls)
920
+ def += ` NULLS ${col.nulls}`;
921
+ if (col.opclass)
922
+ def += ` ${col.opclass}`;
923
+ return def;
924
+ }).join(', ');
925
+ sql += ` (${columnDefs})`;
926
+ // Add include columns (covering index)
927
+ if (index.include && index.include.length > 0) {
928
+ sql += ` INCLUDE (${index.include.map(c => this.escapeIdentifier(c)).join(', ')})`;
929
+ }
930
+ // Add partial index condition
931
+ if (index.where) {
932
+ sql += ` WHERE ${index.where}`;
933
+ }
934
+ await this.pool.query(sql);
935
+ // Add comment
936
+ if (index.comment) {
937
+ await this.pool.query(`COMMENT ON INDEX ${this.escapeIdentifier(index.name)} IS ${this.escapeValue(index.comment)}`);
938
+ }
939
+ }
940
+ catch (error) {
941
+ throw database_error_1.DatabaseError.schemaError(`Failed to create index: ${error.message}`, error);
942
+ }
943
+ }
944
+ async dropIndex(tableName, indexName, ifExists, concurrent, cascade) {
945
+ this.ensureConnected();
946
+ try {
947
+ let sql = 'DROP INDEX';
948
+ if (concurrent)
949
+ sql += ' CONCURRENTLY';
950
+ if (ifExists)
951
+ sql += ' IF EXISTS';
952
+ sql += ` ${this.escapeIdentifier(indexName)}`;
953
+ if (cascade)
954
+ sql += ' CASCADE';
955
+ await this.pool.query(sql);
956
+ }
957
+ catch (error) {
958
+ throw database_error_1.DatabaseError.schemaError(`Failed to drop index: ${error.message}`, error);
959
+ }
960
+ }
961
+ async listIndexes(tableName, includeSystem) {
962
+ this.ensureConnected();
963
+ try {
964
+ let sql = `
965
+ SELECT
966
+ i.relname as name,
967
+ t.relname as table,
968
+ ARRAY(
969
+ SELECT a.attname
970
+ FROM unnest(ix.indkey) WITH ORDINALITY AS k(key, ord)
971
+ JOIN pg_attribute a ON a.attnum = k.key AND a.attrelid = ix.indrelid
972
+ ORDER BY k.ord
973
+ ) as columns,
974
+ ix.indisunique as unique,
975
+ ix.indisprimary as primary_key,
976
+ am.amname as type,
977
+ pg_relation_size(i.oid) as size,
978
+ pg_get_indexdef(ix.indexrelid) as definition
979
+ FROM pg_index ix
980
+ JOIN pg_class i ON i.oid = ix.indexrelid
981
+ JOIN pg_class t ON t.oid = ix.indrelid
982
+ JOIN pg_am am ON am.oid = i.relam
983
+ JOIN pg_namespace n ON n.oid = t.relnamespace
984
+ WHERE t.relname = $1 AND n.nspname = 'public'
985
+ `;
986
+ if (!includeSystem) {
987
+ sql += ` AND NOT i.relname LIKE 'pg_%'`;
988
+ }
989
+ const result = await this.pool.query(sql, [tableName]);
990
+ return result.rows.map((row) => ({
991
+ name: row.name,
992
+ table: row.table,
993
+ columns: row.columns,
994
+ unique: row.unique,
995
+ primaryKey: row.primary_key,
996
+ type: row.type,
997
+ size: parseInt(row.size, 10),
998
+ }));
999
+ }
1000
+ catch (error) {
1001
+ throw database_error_1.DatabaseError.schemaError(`Failed to list indexes: ${error.message}`, error);
1002
+ }
1003
+ }
1004
+ async getIndexStatistics(tableName, indexName) {
1005
+ this.ensureConnected();
1006
+ try {
1007
+ let sql = `
1008
+ SELECT
1009
+ indexrelname as index_name,
1010
+ relname as table_name,
1011
+ idx_scan as scans,
1012
+ idx_tup_read as tuples_read,
1013
+ idx_tup_fetch as tuples_fetched,
1014
+ pg_relation_size(indexrelid) as size_bytes,
1015
+ pg_size_pretty(pg_relation_size(indexrelid)) as size_formatted
1016
+ FROM pg_stat_user_indexes
1017
+ WHERE relname = $1
1018
+ `;
1019
+ const params = [tableName];
1020
+ if (indexName) {
1021
+ sql += ` AND indexrelname = $2`;
1022
+ params.push(indexName);
1023
+ }
1024
+ const result = await this.pool.query(sql, params);
1025
+ return result.rows.map((row) => ({
1026
+ indexName: row.index_name,
1027
+ tableName: row.table_name,
1028
+ scans: parseInt(row.scans, 10),
1029
+ tuplesRead: parseInt(row.tuples_read, 10),
1030
+ tuplesFetched: parseInt(row.tuples_fetched, 10),
1031
+ sizeBytes: parseInt(row.size_bytes, 10),
1032
+ sizeFormatted: row.size_formatted,
1033
+ }));
1034
+ }
1035
+ catch (error) {
1036
+ throw database_error_1.DatabaseError.schemaError(`Failed to get index statistics: ${error.message}`, error);
1037
+ }
1038
+ }
1039
+ // ==================== UTILITY METHODS ====================
1040
+ escapeIdentifier(identifier) {
1041
+ // PostgreSQL uses double quotes for identifiers
1042
+ return `"${identifier.replace(/"/g, '""')}"`;
1043
+ }
1044
+ /**
1045
+ * Format a field reference for use in WHERE clauses.
1046
+ * Handles JSON path notation (e.g., "metadata.role" becomes "metadata"->>'role')
1047
+ */
1048
+ formatFieldRef(field) {
1049
+ if (!field.includes('.')) {
1050
+ return this.escapeIdentifier(field);
1051
+ }
1052
+ // Split the field path - first part is the column, rest are JSON keys
1053
+ const parts = field.split('.');
1054
+ const column = this.escapeIdentifier(parts[0]);
1055
+ // Build the JSON path accessor
1056
+ // Use ->> for the last key to get text value, -> for intermediate keys
1057
+ if (parts.length === 2) {
1058
+ // Simple case: column.key - use ->> to get text value
1059
+ return `${column}->>'${parts[1]}'`;
1060
+ }
1061
+ else {
1062
+ // Nested case: column.key1.key2... - use -> for intermediate, ->> for last
1063
+ let path = column;
1064
+ for (let i = 1; i < parts.length - 1; i++) {
1065
+ path += `->'${parts[i]}'`;
1066
+ }
1067
+ path += `->>'${parts[parts.length - 1]}'`;
1068
+ return path;
1069
+ }
1070
+ }
1071
+ escapeValue(value) {
1072
+ if (value === null || value === undefined) {
1073
+ return 'NULL';
1074
+ }
1075
+ if (typeof value === 'number') {
1076
+ return String(value);
1077
+ }
1078
+ if (typeof value === 'boolean') {
1079
+ return value ? 'TRUE' : 'FALSE';
1080
+ }
1081
+ if (value instanceof Date) {
1082
+ return `'${value.toISOString()}'`;
1083
+ }
1084
+ if (typeof value === 'object') {
1085
+ return `'${JSON.stringify(value).replace(/'/g, "''")}'::jsonb`;
1086
+ }
1087
+ // String - escape single quotes
1088
+ return `'${String(value).replace(/'/g, "''")}'`;
1089
+ }
1090
+ /**
1091
+ * Check if value is an update operator object
1092
+ * Supports both lowercase (new) and uppercase (legacy) operators
1093
+ */
1094
+ isUpdateOperator(value) {
1095
+ if (!value || typeof value !== 'object')
1096
+ return false;
1097
+ // Support both lowercase (Mongoose style) and uppercase (legacy) operators
1098
+ const operators = [
1099
+ '$inc', '$INC', '$dec', '$DEC', '$mul', '$MUL', '$min', '$MIN', '$max', '$MAX',
1100
+ '$set', '$SET', '$unset', '$UNSET', '$push', '$PUSH', '$pull', '$PULL',
1101
+ '$addToSet', '$ADDTOSET', '$pop', '$POP', '$currentDate', '$CURRENTDATE'
1102
+ ];
1103
+ return operators.some(op => op in value);
1104
+ }
1105
+ getParameterPlaceholder(index) {
1106
+ // PostgreSQL uses $1, $2, $3, etc.
1107
+ return `$${index}`;
1108
+ }
1109
+ getColumnTypeString(columnType, options) {
1110
+ const typeMap = {
1111
+ [enums_1.ColumnType.INTEGER]: 'INTEGER',
1112
+ [enums_1.ColumnType.BIGINT]: 'BIGINT',
1113
+ [enums_1.ColumnType.SMALLINT]: 'SMALLINT',
1114
+ [enums_1.ColumnType.FLOAT]: 'REAL',
1115
+ [enums_1.ColumnType.DOUBLE]: 'DOUBLE PRECISION',
1116
+ [enums_1.ColumnType.DECIMAL]: (options === null || options === void 0 ? void 0 : options.precision)
1117
+ ? `NUMERIC(${options.precision}${options.scale ? `, ${options.scale}` : ''})`
1118
+ : 'NUMERIC',
1119
+ [enums_1.ColumnType.STRING]: (options === null || options === void 0 ? void 0 : options.maxLength) ? `VARCHAR(${options.maxLength})` : 'VARCHAR(255)',
1120
+ [enums_1.ColumnType.TEXT]: 'TEXT',
1121
+ [enums_1.ColumnType.BOOLEAN]: 'BOOLEAN',
1122
+ [enums_1.ColumnType.DATE]: 'DATE',
1123
+ [enums_1.ColumnType.DATETIME]: 'TIMESTAMP',
1124
+ [enums_1.ColumnType.TIMESTAMP]: 'TIMESTAMP WITH TIME ZONE',
1125
+ [enums_1.ColumnType.TIME]: 'TIME',
1126
+ [enums_1.ColumnType.JSON]: 'JSON',
1127
+ [enums_1.ColumnType.JSONB]: 'JSONB',
1128
+ [enums_1.ColumnType.UUID]: 'UUID',
1129
+ [enums_1.ColumnType.BINARY]: 'BYTEA',
1130
+ // ENUM type - returns VARCHAR, CHECK constraint is added in buildColumnDefinition
1131
+ [enums_1.ColumnType.ENUM]: 'VARCHAR(255)',
1132
+ [enums_1.ColumnType.ARRAY]: (options === null || options === void 0 ? void 0 : options.arrayType) ? `${options.arrayType}[]` : 'TEXT[]',
1133
+ };
1134
+ return typeMap[columnType] || columnType;
1135
+ }
1136
+ getSupportedFeatures() {
1137
+ return [
1138
+ base_adapter_1.DatabaseFeature.TRANSACTIONS,
1139
+ base_adapter_1.DatabaseFeature.SAVEPOINTS,
1140
+ base_adapter_1.DatabaseFeature.JSONB,
1141
+ base_adapter_1.DatabaseFeature.JSON,
1142
+ base_adapter_1.DatabaseFeature.ARRAYS,
1143
+ base_adapter_1.DatabaseFeature.UUID,
1144
+ base_adapter_1.DatabaseFeature.FULLTEXT_SEARCH,
1145
+ base_adapter_1.DatabaseFeature.GIN_INDEX,
1146
+ base_adapter_1.DatabaseFeature.GIST_INDEX,
1147
+ base_adapter_1.DatabaseFeature.HASH_INDEX,
1148
+ base_adapter_1.DatabaseFeature.PARTIAL_INDEX,
1149
+ base_adapter_1.DatabaseFeature.COVERING_INDEX,
1150
+ base_adapter_1.DatabaseFeature.CONCURRENT_INDEX,
1151
+ base_adapter_1.DatabaseFeature.CTE,
1152
+ base_adapter_1.DatabaseFeature.WINDOW_FUNCTIONS,
1153
+ base_adapter_1.DatabaseFeature.RETURNING,
1154
+ base_adapter_1.DatabaseFeature.UPSERT,
1155
+ base_adapter_1.DatabaseFeature.FOREIGN_KEYS,
1156
+ base_adapter_1.DatabaseFeature.CHECK_CONSTRAINTS,
1157
+ base_adapter_1.DatabaseFeature.STORED_PROCEDURES,
1158
+ base_adapter_1.DatabaseFeature.VIEWS,
1159
+ base_adapter_1.DatabaseFeature.MATERIALIZED_VIEWS,
1160
+ base_adapter_1.DatabaseFeature.TRIGGERS,
1161
+ base_adapter_1.DatabaseFeature.SCHEMAS,
1162
+ base_adapter_1.DatabaseFeature.TABLE_INHERITANCE,
1163
+ base_adapter_1.DatabaseFeature.LIKE,
1164
+ base_adapter_1.DatabaseFeature.ILIKE,
1165
+ base_adapter_1.DatabaseFeature.REGEX,
1166
+ base_adapter_1.DatabaseFeature.BETWEEN,
1167
+ base_adapter_1.DatabaseFeature.ARRAY_CONTAINS,
1168
+ base_adapter_1.DatabaseFeature.LIMIT_OFFSET,
1169
+ ];
1170
+ }
1171
+ parseError(error) {
1172
+ const code = error.code;
1173
+ let type = enums_1.DatabaseErrorType.UNKNOWN_ERROR;
1174
+ // Map PostgreSQL error codes
1175
+ switch (code) {
1176
+ case '23505':
1177
+ type = enums_1.DatabaseErrorType.UNIQUE_VIOLATION;
1178
+ break;
1179
+ case '23503':
1180
+ type = enums_1.DatabaseErrorType.FOREIGN_KEY_VIOLATION;
1181
+ break;
1182
+ case '23502':
1183
+ type = enums_1.DatabaseErrorType.NOT_NULL_VIOLATION;
1184
+ break;
1185
+ case '23514':
1186
+ type = enums_1.DatabaseErrorType.CHECK_VIOLATION;
1187
+ break;
1188
+ case '08000':
1189
+ case '08003':
1190
+ case '08006':
1191
+ type = enums_1.DatabaseErrorType.CONNECTION_ERROR;
1192
+ break;
1193
+ case '42P01':
1194
+ case '42703':
1195
+ type = enums_1.DatabaseErrorType.SCHEMA_ERROR;
1196
+ break;
1197
+ case '28000':
1198
+ case '28P01':
1199
+ type = enums_1.DatabaseErrorType.AUTHENTICATION_ERROR;
1200
+ break;
1201
+ default:
1202
+ if (code === null || code === void 0 ? void 0 : code.startsWith('42')) {
1203
+ type = enums_1.DatabaseErrorType.QUERY_ERROR;
1204
+ }
1205
+ }
1206
+ return {
1207
+ type,
1208
+ message: error.message || 'Unknown database error',
1209
+ code,
1210
+ details: {
1211
+ constraint: error.constraint,
1212
+ table: error.table,
1213
+ column: error.column,
1214
+ detail: error.detail,
1215
+ hint: error.hint,
1216
+ },
1217
+ };
1218
+ }
1219
+ // ==================== PRIVATE HELPER METHODS ====================
1220
+ ensureConnected() {
1221
+ if (!this.connected || !this.pool) {
1222
+ throw new database_error_1.DatabaseError('Not connected to PostgreSQL database', enums_1.DatabaseErrorType.CONNECTION_ERROR);
1223
+ }
1224
+ }
1225
+ buildWhereClause(where, startIndex) {
1226
+ const clauses = [];
1227
+ const params = [];
1228
+ let paramIndex = startIndex;
1229
+ for (const [key, value] of Object.entries(where)) {
1230
+ // Normalize key to lowercase for logical operators (support both cases for backwards compatibility)
1231
+ const normalizedKey = key.toLowerCase();
1232
+ if (normalizedKey === '$and') {
1233
+ const conditions = Array.isArray(value) ? value : [value];
1234
+ const andClauses = [];
1235
+ for (const cond of conditions) {
1236
+ const andResult = this.buildWhereClause(cond, paramIndex);
1237
+ andClauses.push(andResult.whereClause);
1238
+ params.push(...andResult.whereParams);
1239
+ paramIndex += andResult.whereParams.length;
1240
+ }
1241
+ clauses.push(`(${andClauses.join(' AND ')})`);
1242
+ }
1243
+ else if (normalizedKey === '$or') {
1244
+ const conditions = Array.isArray(value) ? value : Object.entries(value).map(([k, v]) => ({ [k]: v }));
1245
+ const orClauses = [];
1246
+ for (const cond of conditions) {
1247
+ const orResult = this.buildWhereClause(cond, paramIndex);
1248
+ orClauses.push(orResult.whereClause);
1249
+ params.push(...orResult.whereParams);
1250
+ paramIndex += orResult.whereParams.length;
1251
+ }
1252
+ clauses.push(`(${orClauses.join(' OR ')})`);
1253
+ }
1254
+ else if (normalizedKey === '$not') {
1255
+ const notResult = this.buildWhereClause(value, paramIndex);
1256
+ clauses.push(`NOT (${notResult.whereClause})`);
1257
+ params.push(...notResult.whereParams);
1258
+ paramIndex += notResult.whereParams.length;
1259
+ }
1260
+ else if (normalizedKey === '$nor') {
1261
+ const conditions = Array.isArray(value) ? value : [value];
1262
+ const norClauses = [];
1263
+ for (const cond of conditions) {
1264
+ const norResult = this.buildWhereClause(cond, paramIndex);
1265
+ norClauses.push(norResult.whereClause);
1266
+ params.push(...norResult.whereParams);
1267
+ paramIndex += norResult.whereParams.length;
1268
+ }
1269
+ clauses.push(`NOT (${norClauses.join(' OR ')})`);
1270
+ }
1271
+ else if (value !== null && typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date)) {
1272
+ // Handle operators - use formatFieldRef to support JSON path notation (e.g., metadata.role)
1273
+ const fieldRef = this.formatFieldRef(key);
1274
+ for (const [op, opValue] of Object.entries(value)) {
1275
+ // Normalize operator to lowercase (support both cases for backwards compatibility)
1276
+ const normalizedOp = op.toLowerCase();
1277
+ switch (normalizedOp) {
1278
+ case '$eq':
1279
+ clauses.push(`${fieldRef} = $${paramIndex}`);
1280
+ params.push(opValue);
1281
+ paramIndex++;
1282
+ break;
1283
+ case '$ne':
1284
+ clauses.push(`${fieldRef} != $${paramIndex}`);
1285
+ params.push(opValue);
1286
+ paramIndex++;
1287
+ break;
1288
+ case '$gt':
1289
+ clauses.push(`${fieldRef} > $${paramIndex}`);
1290
+ params.push(opValue);
1291
+ paramIndex++;
1292
+ break;
1293
+ case '$gte':
1294
+ clauses.push(`${fieldRef} >= $${paramIndex}`);
1295
+ params.push(opValue);
1296
+ paramIndex++;
1297
+ break;
1298
+ case '$lt':
1299
+ clauses.push(`${fieldRef} < $${paramIndex}`);
1300
+ params.push(opValue);
1301
+ paramIndex++;
1302
+ break;
1303
+ case '$lte':
1304
+ clauses.push(`${fieldRef} <= $${paramIndex}`);
1305
+ params.push(opValue);
1306
+ paramIndex++;
1307
+ break;
1308
+ case '$in':
1309
+ clauses.push(`${fieldRef} = ANY($${paramIndex})`);
1310
+ params.push(opValue);
1311
+ paramIndex++;
1312
+ break;
1313
+ case '$nin':
1314
+ case '$not_in':
1315
+ clauses.push(`${fieldRef} != ALL($${paramIndex})`);
1316
+ params.push(opValue);
1317
+ paramIndex++;
1318
+ break;
1319
+ case '$like':
1320
+ clauses.push(`${fieldRef} LIKE $${paramIndex}`);
1321
+ params.push(opValue);
1322
+ paramIndex++;
1323
+ break;
1324
+ case '$ilike':
1325
+ clauses.push(`${fieldRef} ILIKE $${paramIndex}`);
1326
+ params.push(opValue);
1327
+ paramIndex++;
1328
+ break;
1329
+ case '$isnull':
1330
+ case '$is_null':
1331
+ clauses.push(`${fieldRef} IS ${opValue ? 'NULL' : 'NOT NULL'}`);
1332
+ break;
1333
+ case '$isnotnull':
1334
+ case '$is_not_null':
1335
+ clauses.push(`${fieldRef} IS ${opValue ? 'NOT NULL' : 'NULL'}`);
1336
+ break;
1337
+ case '$between':
1338
+ const [min, max] = opValue;
1339
+ clauses.push(`${fieldRef} BETWEEN $${paramIndex} AND $${paramIndex + 1}`);
1340
+ params.push(min, max);
1341
+ paramIndex += 2;
1342
+ break;
1343
+ case '$contains':
1344
+ // Use ANY() for checking if array contains a scalar value
1345
+ // This works for both native PostgreSQL arrays and JSONB arrays
1346
+ if (!Array.isArray(opValue)) {
1347
+ clauses.push(`$${paramIndex} = ANY(${fieldRef})`);
1348
+ params.push(opValue);
1349
+ }
1350
+ else {
1351
+ // For array values, check if all values are contained
1352
+ clauses.push(`${fieldRef} @> $${paramIndex}`);
1353
+ params.push(opValue);
1354
+ }
1355
+ paramIndex++;
1356
+ break;
1357
+ case '$containedby':
1358
+ case '$contained_by':
1359
+ clauses.push(`${fieldRef} <@ $${paramIndex}`);
1360
+ params.push(opValue);
1361
+ paramIndex++;
1362
+ break;
1363
+ case '$overlaps':
1364
+ clauses.push(`${fieldRef} && $${paramIndex}`);
1365
+ params.push(opValue);
1366
+ paramIndex++;
1367
+ break;
1368
+ case '$regex':
1369
+ clauses.push(`${fieldRef} ~ $${paramIndex}`);
1370
+ params.push(opValue);
1371
+ paramIndex++;
1372
+ break;
1373
+ case '$exists':
1374
+ clauses.push(`${fieldRef} IS ${opValue ? 'NOT NULL' : 'NULL'}`);
1375
+ break;
1376
+ }
1377
+ }
1378
+ }
1379
+ else {
1380
+ // Simple equality - use formatFieldRef to support JSON path notation
1381
+ clauses.push(`${this.formatFieldRef(key)} = $${paramIndex}`);
1382
+ params.push(value);
1383
+ paramIndex++;
1384
+ }
1385
+ }
1386
+ return {
1387
+ whereClause: clauses.join(' AND '),
1388
+ whereParams: params,
1389
+ };
1390
+ }
1391
+ buildCountQuery(query) {
1392
+ // Build a COUNT query from the original query
1393
+ const fromIndex = query.sql.toUpperCase().indexOf('FROM');
1394
+ const orderByIndex = query.sql.toUpperCase().indexOf('ORDER BY');
1395
+ const limitIndex = query.sql.toUpperCase().indexOf('LIMIT');
1396
+ let endIndex = query.sql.length;
1397
+ if (orderByIndex > 0)
1398
+ endIndex = Math.min(endIndex, orderByIndex);
1399
+ if (limitIndex > 0)
1400
+ endIndex = Math.min(endIndex, limitIndex);
1401
+ return `SELECT COUNT(*) as count ${query.sql.substring(fromIndex, endIndex)}`;
1402
+ }
1403
+ buildColumnDefinition(column) {
1404
+ let def = `${this.escapeIdentifier(column.name)} ${this.getColumnTypeString(column.type, column)}`;
1405
+ if (column.primaryKey) {
1406
+ def += ' PRIMARY KEY';
1407
+ }
1408
+ if (column.autoIncrement) {
1409
+ // PostgreSQL uses SERIAL/BIGSERIAL
1410
+ def = `${this.escapeIdentifier(column.name)} ${column.type === enums_1.ColumnType.BIGINT ? 'BIGSERIAL' : 'SERIAL'} PRIMARY KEY`;
1411
+ return def;
1412
+ }
1413
+ if (column.nullable === false) {
1414
+ def += ' NOT NULL';
1415
+ }
1416
+ if (column.unique) {
1417
+ def += ' UNIQUE';
1418
+ }
1419
+ if (column.defaultValue !== undefined) {
1420
+ def += ` DEFAULT ${this.escapeValue(column.defaultValue)}`;
1421
+ }
1422
+ if (column.references) {
1423
+ def += ` REFERENCES ${this.escapeIdentifier(column.references.table)}(${this.escapeIdentifier(column.references.column)})`;
1424
+ if (column.references.onDelete) {
1425
+ def += ` ON DELETE ${column.references.onDelete}`;
1426
+ }
1427
+ if (column.references.onUpdate) {
1428
+ def += ` ON UPDATE ${column.references.onUpdate}`;
1429
+ }
1430
+ }
1431
+ // Handle ENUM type with CHECK constraint
1432
+ if (column.type === enums_1.ColumnType.ENUM && column.enumValues && column.enumValues.length > 0) {
1433
+ const escapedValues = column.enumValues.map((v) => `'${v.replace(/'/g, "''")}'`).join(', ');
1434
+ def += ` CHECK (${this.escapeIdentifier(column.name)} IN (${escapedValues}))`;
1435
+ }
1436
+ // Handle custom check constraint (but don't duplicate if we just added one for ENUM)
1437
+ if (column.check && column.type !== enums_1.ColumnType.ENUM) {
1438
+ def += ` CHECK (${column.check})`;
1439
+ }
1440
+ else if (column.check && column.type === enums_1.ColumnType.ENUM) {
1441
+ // If ENUM has custom check, combine them
1442
+ def = def.replace(/\)$/, ` AND ${column.check})`);
1443
+ }
1444
+ return def;
1445
+ }
1446
+ buildConstraintDefinition(constraint) {
1447
+ let def = `CONSTRAINT ${this.escapeIdentifier(constraint.name)}`;
1448
+ switch (constraint.type) {
1449
+ case 'PRIMARY_KEY':
1450
+ def += ` PRIMARY KEY (${constraint.columns.map((c) => this.escapeIdentifier(c)).join(', ')})`;
1451
+ break;
1452
+ case 'UNIQUE':
1453
+ def += ` UNIQUE (${constraint.columns.map((c) => this.escapeIdentifier(c)).join(', ')})`;
1454
+ break;
1455
+ case 'FOREIGN_KEY':
1456
+ def += ` FOREIGN KEY (${constraint.columns.map((c) => this.escapeIdentifier(c)).join(', ')})`;
1457
+ def += ` REFERENCES ${this.escapeIdentifier(constraint.references.table)}(${this.escapeIdentifier(constraint.references.column)})`;
1458
+ if (constraint.references.onDelete) {
1459
+ def += ` ON DELETE ${constraint.references.onDelete}`;
1460
+ }
1461
+ if (constraint.references.onUpdate) {
1462
+ def += ` ON UPDATE ${constraint.references.onUpdate}`;
1463
+ }
1464
+ break;
1465
+ case 'CHECK':
1466
+ def += ` CHECK (${constraint.expression})`;
1467
+ break;
1468
+ }
1469
+ return def;
1470
+ }
1471
+ mapIsolationLevel(level) {
1472
+ switch (level) {
1473
+ case enums_1.IsolationLevel.READ_UNCOMMITTED:
1474
+ return 'READ UNCOMMITTED';
1475
+ case enums_1.IsolationLevel.READ_COMMITTED:
1476
+ return 'READ COMMITTED';
1477
+ case enums_1.IsolationLevel.REPEATABLE_READ:
1478
+ return 'REPEATABLE READ';
1479
+ case enums_1.IsolationLevel.SERIALIZABLE:
1480
+ return 'SERIALIZABLE';
1481
+ default:
1482
+ return 'READ COMMITTED';
1483
+ }
1484
+ }
1485
+ }
1486
+ exports.PostgreSQLAdapter = PostgreSQLAdapter;
1487
+ //# sourceMappingURL=postgresql.adapter.js.map