ts-prorm-orm 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +194 -72
  3. package/dist/audit/history-query.d.ts +35 -0
  4. package/dist/audit/index.d.ts +16 -0
  5. package/dist/audit/logger.d.ts +126 -0
  6. package/dist/cache/cache-manager.d.ts +341 -0
  7. package/dist/cache/index.d.ts +8 -0
  8. package/dist/cache/redis-cluster-cache.d.ts +164 -0
  9. package/dist/cache/redis-cluster-cache.js +19 -36
  10. package/dist/cli/cloud.d.ts +55 -0
  11. package/dist/cli/cloud.js +318 -0
  12. package/dist/cli/commands/auth.d.ts +2 -0
  13. package/dist/cli/commands/auth.js +345 -0
  14. package/dist/cli/commands/billing.d.ts +2 -0
  15. package/dist/cli/commands/billing.js +135 -0
  16. package/dist/cli/commands/code.d.ts +2 -0
  17. package/dist/cli/commands/code.js +168 -0
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +154 -0
  20. package/dist/cli/commands/db.d.ts +2 -0
  21. package/dist/cli/commands/db.js +189 -0
  22. package/dist/cli/commands/index.d.ts +1 -0
  23. package/dist/cli/commands/index.js +22 -0
  24. package/dist/cli/commands/keys.d.ts +2 -0
  25. package/dist/cli/commands/keys.js +100 -0
  26. package/dist/cli/commands/misc.d.ts +2 -0
  27. package/dist/cli/commands/misc.js +282 -0
  28. package/dist/cli/commands/pull.d.ts +2 -0
  29. package/dist/cli/commands/pull.js +306 -0
  30. package/dist/cli/commands/runners.d.ts +2 -0
  31. package/dist/cli/commands/runners.js +218 -0
  32. package/dist/cli/commands/scaffold.d.ts +2 -0
  33. package/dist/cli/commands/scaffold.js +383 -0
  34. package/dist/cli/commands/secrets.d.ts +2 -0
  35. package/dist/cli/commands/secrets.js +162 -0
  36. package/dist/cli/commands/store.d.ts +2 -0
  37. package/dist/cli/commands/store.js +274 -0
  38. package/dist/cli/commands/system.d.ts +10 -0
  39. package/dist/cli/commands/system.js +169 -0
  40. package/dist/cli/commands/teams.d.ts +2 -0
  41. package/dist/cli/commands/teams.js +189 -0
  42. package/dist/cli/commands/user.d.ts +2 -0
  43. package/dist/cli/commands/user.js +171 -0
  44. package/dist/cli/framework.d.ts +103 -0
  45. package/dist/cli/framework.js +436 -0
  46. package/dist/cli/io.d.ts +26 -0
  47. package/dist/cli/io.js +181 -0
  48. package/dist/cli/keychain.d.ts +10 -0
  49. package/dist/cli/keychain.js +101 -0
  50. package/dist/cli/prompt.d.ts +20 -0
  51. package/dist/cli/prompt.js +111 -0
  52. package/dist/cli.d.ts +214 -0
  53. package/dist/cli.js +72 -5
  54. package/dist/compliance/audit-trail.d.ts +66 -0
  55. package/dist/compliance/backup-verification.d.ts +279 -0
  56. package/dist/compliance/breach-detector.d.ts +197 -0
  57. package/dist/compliance/consent-record.d.ts +107 -0
  58. package/dist/compliance/consent-versioning.d.ts +169 -0
  59. package/dist/compliance/cross-border-log.d.ts +254 -0
  60. package/dist/compliance/data-classifier.d.ts +127 -0
  61. package/dist/compliance/data-lineage.d.ts +268 -0
  62. package/dist/compliance/data-masker.d.ts +110 -0
  63. package/dist/compliance/data-portability.d.ts +98 -0
  64. package/dist/compliance/data-retention.d.ts +108 -0
  65. package/dist/compliance/dsar-workflow.d.ts +175 -0
  66. package/dist/compliance/field-encryption.d.ts +84 -0
  67. package/dist/compliance/immutable-record.d.ts +84 -0
  68. package/dist/compliance/index.d.ts +93 -0
  69. package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
  70. package/dist/compliance/pseudonymization.d.ts +96 -0
  71. package/dist/compliance/query-firewall.d.ts +661 -0
  72. package/dist/compliance/rate-limiter.d.ts +203 -0
  73. package/dist/compliance/right-to-erasure.d.ts +96 -0
  74. package/dist/compliance/row-level-security.d.ts +152 -0
  75. package/dist/compliance/security-decorator.d.ts +388 -0
  76. package/dist/compliance/security-monitor.d.ts +170 -0
  77. package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
  78. package/dist/compliance/session-isolation.d.ts +286 -0
  79. package/dist/compliance/tls-enforcer.d.ts +51 -0
  80. package/dist/compliance/worm-storage.d.ts +225 -0
  81. package/dist/connection-manager.d.ts +130 -0
  82. package/dist/connection-pool.d.ts +311 -0
  83. package/dist/decorators/audit.d.ts +49 -0
  84. package/dist/decorators/check.d.ts +218 -0
  85. package/dist/decorators/collate.d.ts +346 -0
  86. package/dist/decorators/comment.d.ts +51 -0
  87. package/dist/decorators/database-settings.d.ts +193 -0
  88. package/dist/decorators/default.d.ts +148 -0
  89. package/dist/decorators/encryption.d.ts +175 -0
  90. package/dist/decorators/engine.d.ts +97 -0
  91. package/dist/decorators/fk-constraints.d.ts +387 -0
  92. package/dist/decorators/foreign-table.d.ts +57 -0
  93. package/dist/decorators/generated.d.ts +232 -0
  94. package/dist/decorators/hstore.d.ts +96 -0
  95. package/dist/decorators/index.d.ts +57 -0
  96. package/dist/decorators/index.js +14 -30
  97. package/dist/decorators/json-column.d.ts +47 -0
  98. package/dist/decorators/jsonb.d.ts +83 -0
  99. package/dist/decorators/orm-decorators.d.ts +274 -0
  100. package/dist/decorators/permissions.d.ts +192 -0
  101. package/dist/decorators/procedure.d.ts +168 -0
  102. package/dist/decorators/procedure.js +31 -7
  103. package/dist/decorators/query-options.d.ts +527 -0
  104. package/dist/decorators/range.d.ts +122 -0
  105. package/dist/decorators/set-column.d.ts +43 -0
  106. package/dist/decorators/spatial.d.ts +60 -0
  107. package/dist/decorators/storage.d.ts +561 -0
  108. package/dist/decorators/timezone.d.ts +319 -0
  109. package/dist/decorators/trigger.d.ts +50 -0
  110. package/dist/decorators/uuid.d.ts +102 -0
  111. package/dist/decorators/view.d.ts +213 -0
  112. package/dist/diagrams/chen-diagram.d.ts +70 -0
  113. package/dist/diagrams/chen-diagram.js +33 -31
  114. package/dist/diagrams/class-diagram.d.ts +78 -0
  115. package/dist/diagrams/class-diagram.js +23 -27
  116. package/dist/diagrams/dependency-diagram.d.ts +82 -0
  117. package/dist/diagrams/dependency-diagram.js +18 -9
  118. package/dist/diagrams/er-diagram.d.ts +82 -0
  119. package/dist/diagrams/er-diagram.js +174 -231
  120. package/dist/diagrams/flow-diagram.d.ts +70 -0
  121. package/dist/diagrams/flow-diagram.js +23 -18
  122. package/dist/diagrams/gantt-diagram.d.ts +67 -0
  123. package/dist/diagrams/gantt-diagram.js +20 -18
  124. package/dist/diagrams/index-diagram.d.ts +61 -0
  125. package/dist/diagrams/index-diagram.js +36 -31
  126. package/dist/diagrams/index.d.ts +155 -0
  127. package/dist/diagrams/index.js +7 -1
  128. package/dist/diagrams/migration-diagram.d.ts +67 -0
  129. package/dist/diagrams/migration-diagram.js +45 -57
  130. package/dist/diagrams/model-diagram.d.ts +85 -0
  131. package/dist/diagrams/model-diagram.js +225 -287
  132. package/dist/diagrams/package-diagram.d.ts +69 -0
  133. package/dist/diagrams/package-diagram.js +30 -32
  134. package/dist/diagrams/palette.d.ts +138 -0
  135. package/dist/diagrams/palette.js +134 -25
  136. package/dist/diagrams/relational-diagram.d.ts +82 -0
  137. package/dist/diagrams/relational-diagram.js +51 -59
  138. package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
  139. package/dist/diagrams/schemadoc-diagram.js +36 -28
  140. package/dist/diagrams/sequence-diagram.d.ts +61 -0
  141. package/dist/diagrams/sequence-diagram.js +20 -11
  142. package/dist/diagrams/state-diagram.d.ts +85 -0
  143. package/dist/diagrams/state-diagram.js +21 -17
  144. package/dist/diagrams/svg-dom.d.ts +62 -0
  145. package/dist/diagrams/svg-dom.js +11 -0
  146. package/dist/diagrams/tree-diagram.d.ts +47 -0
  147. package/dist/diagrams/tree-diagram.js +19 -10
  148. package/dist/dialects/clickhouse/index.d.ts +660 -0
  149. package/dist/dialects/clickhouse/index.js +107 -2
  150. package/dist/dialects/cockroachdb/index.d.ts +1708 -0
  151. package/dist/dialects/cockroachdb/index.js +139 -10
  152. package/dist/dialects/cratedb/index.d.ts +262 -0
  153. package/dist/dialects/cratedb/index.js +148 -0
  154. package/dist/dialects/databricks/index.d.ts +397 -0
  155. package/dist/dialects/databricks/index.js +233 -11
  156. package/dist/dialects/db2/index.d.ts +729 -0
  157. package/dist/dialects/db2/index.js +152 -2
  158. package/dist/dialects/dialect.d.ts +1653 -0
  159. package/dist/dialects/duckdb/index.d.ts +440 -0
  160. package/dist/dialects/duckdb/index.js +21 -37
  161. package/dist/dialects/exasol/index.d.ts +197 -0
  162. package/dist/dialects/exasol/index.js +14 -0
  163. package/dist/dialects/firebird/index.d.ts +286 -0
  164. package/dist/dialects/firebird/index.js +135 -0
  165. package/dist/dialects/greenplum/index.d.ts +336 -0
  166. package/dist/dialects/greenplum/index.js +168 -0
  167. package/dist/dialects/hana/index.d.ts +512 -0
  168. package/dist/dialects/hana/index.js +17 -35
  169. package/dist/dialects/mariadb/index.d.ts +1241 -0
  170. package/dist/dialects/mariadb/index.js +181 -43
  171. package/dist/dialects/mssql/index.d.ts +729 -0
  172. package/dist/dialects/mssql/index.js +76 -7
  173. package/dist/dialects/mysql/index.d.ts +1233 -0
  174. package/dist/dialects/mysql/index.js +87 -19
  175. package/dist/dialects/oracle/index.d.ts +1222 -0
  176. package/dist/dialects/oracle/index.js +210 -9
  177. package/dist/dialects/postgres/index.d.ts +1598 -0
  178. package/dist/dialects/postgres/index.js +34 -13
  179. package/dist/dialects/query-stream-helper.d.ts +58 -0
  180. package/dist/dialects/questdb/index.d.ts +430 -0
  181. package/dist/dialects/questdb/index.js +292 -0
  182. package/dist/dialects/redshift/index.d.ts +933 -0
  183. package/dist/dialects/redshift/index.js +17 -5
  184. package/dist/dialects/singlestore/index.d.ts +233 -0
  185. package/dist/dialects/singlestore/index.js +53 -0
  186. package/dist/dialects/snowflake/index.d.ts +727 -0
  187. package/dist/dialects/snowflake/index.js +154 -5
  188. package/dist/dialects/spanner/index.d.ts +660 -0
  189. package/dist/dialects/spanner/index.js +43 -21
  190. package/dist/dialects/sqlite/index.d.ts +1133 -0
  191. package/dist/dialects/sqlite/index.js +168 -30
  192. package/dist/dialects/tidb/index.d.ts +226 -0
  193. package/dist/dialects/tidb/index.js +10 -0
  194. package/dist/dialects/timescaledb/index.d.ts +286 -0
  195. package/dist/dialects/timescaledb/index.js +179 -0
  196. package/dist/dialects/trino/index.d.ts +230 -0
  197. package/dist/dialects/trino/index.js +85 -10
  198. package/dist/dialects/turso/index.d.ts +98 -0
  199. package/dist/dialects/turso/index.js +10 -0
  200. package/dist/dialects/vertica/index.d.ts +321 -0
  201. package/dist/dialects/vertica/index.js +161 -0
  202. package/dist/dialects/yugabytedb/index.d.ts +276 -0
  203. package/dist/dialects/yugabytedb/index.js +121 -0
  204. package/dist/errors/index.d.ts +378 -0
  205. package/dist/errors/index.js +29 -1
  206. package/dist/errors/utils.d.ts +53 -0
  207. package/dist/errors.d.ts +5 -0
  208. package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
  209. package/dist/extensions/catalog/mssql-features.d.ts +20 -0
  210. package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
  211. package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
  212. package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
  213. package/dist/extensions/index.d.ts +34 -0
  214. package/dist/extensions/types.d.ts +43 -0
  215. package/dist/external-fields/adapters.d.ts +50 -0
  216. package/dist/external-fields/adapters.js +227 -0
  217. package/dist/external-fields/decorator.d.ts +77 -0
  218. package/dist/external-fields/decorator.js +80 -0
  219. package/dist/external-fields/index.d.ts +10 -0
  220. package/dist/external-fields/index.js +19 -0
  221. package/dist/external-fields/runtime.d.ts +39 -0
  222. package/dist/external-fields/runtime.js +221 -0
  223. package/dist/foreign-data.d.ts +168 -0
  224. package/dist/graph/base-graph-dialect.d.ts +250 -0
  225. package/dist/graph/base-graph-dialect.js +539 -0
  226. package/dist/graph/dgraph/index.d.ts +65 -0
  227. package/dist/graph/dgraph/index.js +559 -0
  228. package/dist/graph/gremlin/index.d.ts +59 -0
  229. package/dist/graph/gremlin/index.js +378 -0
  230. package/dist/graph/index.d.ts +60 -0
  231. package/dist/graph/index.js +67 -0
  232. package/dist/graph/neo4j/index.d.ts +50 -0
  233. package/dist/graph/neo4j/index.js +462 -0
  234. package/dist/graph/types.d.ts +213 -0
  235. package/dist/graph/types.js +234 -0
  236. package/dist/hooks/hooks-manager.d.ts +189 -0
  237. package/dist/hooks/index.d.ts +8 -0
  238. package/dist/index.d.ts +711 -0
  239. package/dist/index.js +19 -4
  240. package/dist/logging.d.ts +183 -0
  241. package/dist/migrations/index.d.ts +9 -0
  242. package/dist/migrations/migration.d.ts +143 -0
  243. package/dist/migrations/migrator.d.ts +199 -0
  244. package/dist/migrations/prormmigration.d.ts +131 -0
  245. package/dist/migrations/query-interface.d.ts +335 -0
  246. package/dist/migrations/seeder.d.ts +167 -0
  247. package/dist/models/associations.d.ts +131 -0
  248. package/dist/models/associations.js +7 -2
  249. package/dist/models/constraints.d.ts +175 -0
  250. package/dist/models/data-types.d.ts +1656 -0
  251. package/dist/models/decorators.d.ts +328 -0
  252. package/dist/models/decorators.js +61 -82
  253. package/dist/models/eager-load.d.ts +86 -0
  254. package/dist/models/eager-load.js +369 -0
  255. package/dist/models/index.d.ts +13 -0
  256. package/dist/models/indexes.d.ts +325 -0
  257. package/dist/models/methods.d.ts +419 -0
  258. package/dist/models/model-manager.d.ts +76 -0
  259. package/dist/models/model.d.ts +820 -0
  260. package/dist/models/model.js +15 -101
  261. package/dist/models/operators.d.ts +29 -0
  262. package/dist/models/scopes.d.ts +71 -0
  263. package/dist/models/typescript-types.d.ts +177 -0
  264. package/dist/nosql/aerospike/index.d.ts +126 -0
  265. package/dist/nosql/allegrograph/index.d.ts +86 -0
  266. package/dist/nosql/arangodb/index.d.ts +285 -0
  267. package/dist/nosql/arangodb/index.js +274 -2
  268. package/dist/nosql/arangodb/where.d.ts +38 -0
  269. package/dist/nosql/arangodb/where.js +94 -0
  270. package/dist/nosql/azure-blob/index.d.ts +104 -0
  271. package/dist/nosql/beanstalkd/index.d.ts +88 -0
  272. package/dist/nosql/beequeue/index.d.ts +99 -0
  273. package/dist/nosql/bigchaindb/index.d.ts +113 -0
  274. package/dist/nosql/bigtable/index.d.ts +144 -0
  275. package/dist/nosql/blazegraph/index.d.ts +88 -0
  276. package/dist/nosql/bullmq/index.d.ts +83 -0
  277. package/dist/nosql/cassandra/index.d.ts +119 -0
  278. package/dist/nosql/chroma/index.d.ts +151 -0
  279. package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
  280. package/dist/nosql/coherence/index.d.ts +91 -0
  281. package/dist/nosql/cosmosdb/index.d.ts +78 -0
  282. package/dist/nosql/couchbase/index.d.ts +103 -0
  283. package/dist/nosql/dax/index.d.ts +118 -0
  284. package/dist/nosql/deno-kv/index.d.ts +109 -0
  285. package/dist/nosql/dgraph/index.d.ts +80 -0
  286. package/dist/nosql/doris/index.d.ts +88 -0
  287. package/dist/nosql/druid/index.d.ts +95 -0
  288. package/dist/nosql/dynamodb/index.d.ts +643 -0
  289. package/dist/nosql/dynamodb/index.js +423 -0
  290. package/dist/nosql/elasticsearch/index.d.ts +239 -0
  291. package/dist/nosql/etcd/index.d.ts +243 -0
  292. package/dist/nosql/eventhubs/index.d.ts +89 -0
  293. package/dist/nosql/eventstore/index.d.ts +102 -0
  294. package/dist/nosql/faunadb/index.d.ts +141 -0
  295. package/dist/nosql/faunadb/index.js +329 -0
  296. package/dist/nosql/firestore/index.d.ts +67 -0
  297. package/dist/nosql/fluree/index.d.ts +88 -0
  298. package/dist/nosql/fuseki/index.d.ts +94 -0
  299. package/dist/nosql/gcs/index.d.ts +62 -0
  300. package/dist/nosql/gearman/index.d.ts +77 -0
  301. package/dist/nosql/geode/index.d.ts +93 -0
  302. package/dist/nosql/graphdb/index.d.ts +86 -0
  303. package/dist/nosql/graylog/index.d.ts +118 -0
  304. package/dist/nosql/gridgain/index.d.ts +78 -0
  305. package/dist/nosql/hazelcast/index.d.ts +73 -0
  306. package/dist/nosql/hbase/index.d.ts +123 -0
  307. package/dist/nosql/ignite/index.d.ts +80 -0
  308. package/dist/nosql/immudb/index.d.ts +131 -0
  309. package/dist/nosql/index.d.ts +215 -0
  310. package/dist/nosql/infinispan/index.d.ts +95 -0
  311. package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
  312. package/dist/nosql/influxdb/flux-compiler.js +170 -0
  313. package/dist/nosql/influxdb/index.d.ts +300 -0
  314. package/dist/nosql/influxdb/index.js +0 -0
  315. package/dist/nosql/kafka/index.d.ts +113 -0
  316. package/dist/nosql/keyspaces/index.d.ts +122 -0
  317. package/dist/nosql/kinesis/index.d.ts +121 -0
  318. package/dist/nosql/leveldb/index.d.ts +112 -0
  319. package/dist/nosql/leveldb/index.js +103 -1
  320. package/dist/nosql/lmdb/index.d.ts +76 -0
  321. package/dist/nosql/loki/index.d.ts +126 -0
  322. package/dist/nosql/marklogic/index.d.ts +76 -0
  323. package/dist/nosql/materialize/index.d.ts +91 -0
  324. package/dist/nosql/meilisearch/index.d.ts +76 -0
  325. package/dist/nosql/memcached/index.d.ts +138 -0
  326. package/dist/nosql/milvus/index.d.ts +167 -0
  327. package/dist/nosql/minio/index.d.ts +122 -0
  328. package/dist/nosql/momento/index.d.ts +99 -0
  329. package/dist/nosql/mongodb/index.d.ts +265 -0
  330. package/dist/nosql/mongodb/index.js +139 -0
  331. package/dist/nosql/mongodb/where.d.ts +8 -0
  332. package/dist/nosql/mongodb/where.js +181 -0
  333. package/dist/nosql/nats/index.d.ts +139 -0
  334. package/dist/nosql/nedb/index.d.ts +79 -0
  335. package/dist/nosql/neo4j/index.d.ts +217 -0
  336. package/dist/nosql/neo4j/index.js +26 -14
  337. package/dist/nosql/neptune/index.d.ts +234 -0
  338. package/dist/nosql/neptune/index.js +23 -9
  339. package/dist/nosql/nsq/index.d.ts +93 -0
  340. package/dist/nosql/opensearch/index.d.ts +97 -0
  341. package/dist/nosql/orientdb/index.d.ts +72 -0
  342. package/dist/nosql/papertrail/index.d.ts +120 -0
  343. package/dist/nosql/pinecone/index.d.ts +148 -0
  344. package/dist/nosql/pinot/index.d.ts +90 -0
  345. package/dist/nosql/pouchdb/index.d.ts +95 -0
  346. package/dist/nosql/prometheus/index.d.ts +112 -0
  347. package/dist/nosql/provendb/index.d.ts +143 -0
  348. package/dist/nosql/provendb/index.js +262 -0
  349. package/dist/nosql/pubsub/index.d.ts +83 -0
  350. package/dist/nosql/pulsar/index.d.ts +105 -0
  351. package/dist/nosql/qdrant/index.d.ts +231 -0
  352. package/dist/nosql/qldb/index.d.ts +182 -0
  353. package/dist/nosql/qldb/index.js +302 -1
  354. package/dist/nosql/r2/index.d.ts +160 -0
  355. package/dist/nosql/rabbitmq/index.d.ts +131 -0
  356. package/dist/nosql/ravendb/index.d.ts +138 -0
  357. package/dist/nosql/ravendb/index.js +323 -9
  358. package/dist/nosql/ravendb/where.d.ts +38 -0
  359. package/dist/nosql/ravendb/where.js +94 -0
  360. package/dist/nosql/redis/index.d.ts +267 -0
  361. package/dist/nosql/redis/index.js +19 -5
  362. package/dist/nosql/redpanda/index.d.ts +117 -0
  363. package/dist/nosql/resque/index.d.ts +91 -0
  364. package/dist/nosql/rethinkdb/index.d.ts +194 -0
  365. package/dist/nosql/rethinkdb/index.js +290 -0
  366. package/dist/nosql/rethinkdb/where.d.ts +38 -0
  367. package/dist/nosql/rethinkdb/where.js +94 -0
  368. package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
  369. package/dist/nosql/rocksdb/document-layer.js +338 -0
  370. package/dist/nosql/rocksdb/index.d.ts +112 -0
  371. package/dist/nosql/rocksdb/index.js +103 -1
  372. package/dist/nosql/rocksdb/where-match.d.ts +21 -0
  373. package/dist/nosql/rocksdb/where-match.js +238 -0
  374. package/dist/nosql/rockset/index.d.ts +84 -0
  375. package/dist/nosql/s3/index.d.ts +170 -0
  376. package/dist/nosql/scylladb/index.d.ts +117 -0
  377. package/dist/nosql/signoz/index.d.ts +116 -0
  378. package/dist/nosql/sns/index.d.ts +99 -0
  379. package/dist/nosql/solr/index.d.ts +129 -0
  380. package/dist/nosql/splunk/index.d.ts +125 -0
  381. package/dist/nosql/sqs/index.d.ts +116 -0
  382. package/dist/nosql/stardog/index.d.ts +86 -0
  383. package/dist/nosql/starrocks/index.d.ts +89 -0
  384. package/dist/nosql/store.d.ts +23 -0
  385. package/dist/nosql/sumologic/index.d.ts +119 -0
  386. package/dist/nosql/surrealdb/index.d.ts +156 -0
  387. package/dist/nosql/surrealdb/index.js +174 -1
  388. package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
  389. package/dist/nosql/surrealdb/query-compiler.js +193 -0
  390. package/dist/nosql/terminusdb/index.d.ts +95 -0
  391. package/dist/nosql/tigergraph/index.d.ts +314 -0
  392. package/dist/nosql/typesense/index.d.ts +82 -0
  393. package/dist/nosql/unqlite/index.d.ts +68 -0
  394. package/dist/nosql/upstash/index.d.ts +80 -0
  395. package/dist/nosql/vercel-kv/index.d.ts +82 -0
  396. package/dist/nosql/victoriametrics/index.d.ts +129 -0
  397. package/dist/nosql/virtuoso/index.d.ts +87 -0
  398. package/dist/nosql/weaviate/index.d.ts +196 -0
  399. package/dist/operators/index.d.ts +7 -0
  400. package/dist/operators.d.ts +2947 -0
  401. package/dist/operators.js +46 -1
  402. package/dist/prisma-migrate/index.d.ts +28 -0
  403. package/dist/prisma-migrate/migration-generator.d.ts +21 -0
  404. package/dist/prisma-migrate/model-generator.d.ts +12 -0
  405. package/dist/prisma-migrate/relations.d.ts +28 -0
  406. package/dist/prisma-migrate/schema-parser.d.ts +42 -0
  407. package/dist/prisma-migrate/type-mapper.d.ts +20 -0
  408. package/dist/prorm.d.ts +2093 -0
  409. package/dist/prorm.js +721 -302
  410. package/dist/query-builders/cte-builder.d.ts +104 -0
  411. package/dist/query-builders/functions/aggregate.d.ts +199 -0
  412. package/dist/query-builders/functions/conditional.d.ts +195 -0
  413. package/dist/query-builders/functions/datetime.d.ts +202 -0
  414. package/dist/query-builders/functions/fulltext.d.ts +220 -0
  415. package/dist/query-builders/functions/index.d.ts +17 -0
  416. package/dist/query-builders/functions/json.d.ts +157 -0
  417. package/dist/query-builders/functions/math.d.ts +215 -0
  418. package/dist/query-builders/functions/string.d.ts +233 -0
  419. package/dist/query-builders/functions/window.d.ts +209 -0
  420. package/dist/query-builders/include-builder.d.ts +85 -0
  421. package/dist/query-builders/index-expression-builder.d.ts +153 -0
  422. package/dist/query-builders/index.d.ts +121 -0
  423. package/dist/query-builders/index.js +10 -0
  424. package/dist/query-builders/insert-builder.d.ts +62 -0
  425. package/dist/query-builders/model-helpers.d.ts +28 -0
  426. package/dist/query-builders/order-limit-builder.d.ts +84 -0
  427. package/dist/query-builders/sql-compiler.d.ts +562 -0
  428. package/dist/query-builders/subquery-builder.d.ts +133 -0
  429. package/dist/query-builders/update-builder.d.ts +71 -0
  430. package/dist/query-builders/view-builder.d.ts +189 -0
  431. package/dist/query-builders/where-builder.d.ts +124 -0
  432. package/dist/query-interface.d.ts +407 -0
  433. package/dist/query-interface.js +84 -0
  434. package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
  435. package/dist/query-optimizers/explain-plans.d.ts +187 -0
  436. package/dist/query-optimizers/index.d.ts +27 -0
  437. package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
  438. package/dist/query-optimizers/query-hints.d.ts +201 -0
  439. package/dist/query-optimizers/query-optimizer.d.ts +162 -0
  440. package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
  441. package/dist/replica-manager.d.ts +235 -0
  442. package/dist/schema/index.d.ts +7 -0
  443. package/dist/schema/migration-generator.d.ts +74 -0
  444. package/dist/schema/schema-differ.d.ts +114 -0
  445. package/dist/schema/types.d.ts +246 -0
  446. package/dist/schema-objects.d.ts +78 -0
  447. package/dist/schema-objects.js +203 -0
  448. package/dist/sql-constants.d.ts +240 -0
  449. package/dist/sqlite-advanced.d.ts +572 -0
  450. package/dist/streams/index.d.ts +5 -0
  451. package/dist/streams/transforms.d.ts +120 -0
  452. package/dist/transaction.d.ts +221 -0
  453. package/dist/types/index.d.ts +3123 -0
  454. package/dist/user-management.d.ts +141 -0
  455. package/dist/utils/date.d.ts +149 -0
  456. package/dist/utils/index.d.ts +359 -0
  457. package/dist/utils/string.d.ts +88 -0
  458. package/dist/validators/index.d.ts +7 -0
  459. package/dist/validators/validator.d.ts +306 -0
  460. package/package.json +20 -5
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Explain Query Plans
3
+ * Provides functionality to analyze and explain SQL query execution plans
4
+ */
5
+ import { Dialect } from '../dialects/dialect';
6
+ import { QueryResult } from '../types';
7
+ /**
8
+ * Explain output format options
9
+ */
10
+ export declare enum ExplainFormat {
11
+ TEXT = "text",
12
+ JSON = "json",
13
+ XML = "xml",
14
+ YAML = "yaml",
15
+ TREE = "tree"
16
+ }
17
+ /**
18
+ * Explain options
19
+ */
20
+ export interface ExplainOptions {
21
+ /** Output format (text, json, xml, yaml) */
22
+ format?: ExplainFormat;
23
+ /** For MySQL: ANALYZE the query */
24
+ analyze?: boolean;
25
+ /** For MySQL: show format JSON */
26
+ verbose?: boolean;
27
+ /** For MySQL: show costs */
28
+ costs?: boolean;
29
+ /** For MySQL: show buffers */
30
+ buffers?: boolean;
31
+ /** For MySQL: timing information */
32
+ timing?: boolean;
33
+ /** For MySQL: show schema */
34
+ schema?: boolean;
35
+ /** For MySQL: type of statement (SELECT, INSERT, UPDATE, DELETE) */
36
+ type?: 'SELECT' | 'INSERT' | 'UPDATE' | 'DELETE';
37
+ /** Custom options to pass to EXPLAIN */
38
+ [key: string]: any;
39
+ }
40
+ /**
41
+ * Generic explain plan entry (dialect-specific parsing may be needed)
42
+ */
43
+ export interface ExplainPlan {
44
+ /** The analyzed SQL query */
45
+ sql: string;
46
+ /** Explain output (format depends on dialect) */
47
+ plan: any;
48
+ /** Raw query results from EXPLAIN */
49
+ rawResults: QueryResult;
50
+ /** Duration of the explain query in ms */
51
+ duration: number;
52
+ /** Dialect used */
53
+ dialect: string;
54
+ /** Parsed plan (if parsable) */
55
+ parsedPlan?: ParsedExplainStep[];
56
+ }
57
+ /**
58
+ * Parsed explain step for easier analysis
59
+ */
60
+ export interface ParsedExplainStep {
61
+ /** Operation type (e.g., SCAN, INDEX, JOIN, etc.) */
62
+ operation: string;
63
+ /** Table involved (if applicable) */
64
+ table?: string;
65
+ /** Index used (if applicable) */
66
+ index?: string;
67
+ /** Number of rows to scan */
68
+ rows?: number;
69
+ /** Estimated cost (if available) */
70
+ cost?: number;
71
+ /** Additional details */
72
+ details?: Record<string, any>;
73
+ /** Child operations */
74
+ children?: ParsedExplainStep[];
75
+ }
76
+ /**
77
+ * Explain plan generator for different database dialects
78
+ */
79
+ export declare class ExplainPlanGenerator {
80
+ private dialect;
81
+ private defaultOptions;
82
+ constructor(dialect: Dialect, defaultOptions?: ExplainOptions);
83
+ /**
84
+ * Set default options for EXPLAIN queries
85
+ */
86
+ setDefaultOptions(options: ExplainOptions): void;
87
+ /**
88
+ * Generate an explain plan for a SQL query
89
+ */
90
+ explain(sql: string, options?: ExplainOptions): Promise<ExplainPlan>;
91
+ /**
92
+ * Build the appropriate EXPLAIN SQL statement for the dialect
93
+ */
94
+ private buildExplainSql;
95
+ /**
96
+ * Build MySQL EXPLAIN statement
97
+ */
98
+ private buildMySQLExplain;
99
+ /**
100
+ * Build PostgreSQL EXPLAIN statement
101
+ */
102
+ private buildPostgresExplain;
103
+ /**
104
+ * Build SQLite EXPLAIN statement
105
+ */
106
+ private buildSQLiteExplain;
107
+ /**
108
+ * Parse EXPLAIN output into structured format
109
+ */
110
+ private parseExplainOutput;
111
+ /**
112
+ * Parse MySQL EXPLAIN output
113
+ */
114
+ private parseMySQLExplain;
115
+ /**
116
+ * Parse PostgreSQL EXPLAIN output
117
+ */
118
+ private parsePostgresExplain;
119
+ /**
120
+ * Recursively parse PostgreSQL plan nodes
121
+ */
122
+ private parsePostgresPlanNode;
123
+ /**
124
+ * Parse SQLite EXPLAIN QUERY PLAN output
125
+ */
126
+ private parseSQLiteExplain;
127
+ /**
128
+ * Extract operation type from SQLite detail
129
+ */
130
+ private extractSQLiteOperation;
131
+ /**
132
+ * Extract table name from SQLite detail
133
+ */
134
+ private extractSQLiteTable;
135
+ /**
136
+ * Extract index name from SQLite detail
137
+ */
138
+ private extractSQLiteIndex;
139
+ /**
140
+ * Generic explain output parser
141
+ */
142
+ private parseGenericExplain;
143
+ /**
144
+ * Analyze a query and provide optimization recommendations
145
+ */
146
+ analyzeQuery(sql: string, options?: ExplainOptions): Promise<{
147
+ plan: ExplainPlan;
148
+ recommendations: QueryRecommendation[];
149
+ }>;
150
+ /**
151
+ * Generate optimization recommendations based on explain plan
152
+ */
153
+ private generateRecommendations;
154
+ /**
155
+ * Generate MySQL-specific recommendations
156
+ */
157
+ private generateMySQLRecommendations;
158
+ /**
159
+ * Generate PostgreSQL-specific recommendations
160
+ */
161
+ private generatePostgresRecommendations;
162
+ /**
163
+ * Generate SQLite-specific recommendations
164
+ */
165
+ private generateSQLiteRecommendations;
166
+ }
167
+ /**
168
+ * Query recommendation
169
+ */
170
+ export interface QueryRecommendation {
171
+ type: 'INDEX' | 'OPTIMIZATION' | 'REWRITE' | 'STATISTICS';
172
+ severity: 'HIGH' | 'MEDIUM' | 'LOW';
173
+ message: string;
174
+ table?: string;
175
+ column?: string;
176
+ suggestion?: string;
177
+ }
178
+ /**
179
+ * Create an ExplainPlanGenerator instance
180
+ */
181
+ export declare function createExplainPlanGenerator(dialect: Dialect, options?: ExplainOptions): ExplainPlanGenerator;
182
+ declare const _default: {
183
+ ExplainPlanGenerator: typeof ExplainPlanGenerator;
184
+ ExplainFormat: typeof ExplainFormat;
185
+ createExplainPlanGenerator: typeof createExplainPlanGenerator;
186
+ };
187
+ export default _default;
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Query Optimizers Module
3
+ * Provides various query optimization features including:
4
+ * - Query hint support
5
+ * - Explain query plans
6
+ * - Slow query logging
7
+ * - Query batch/bulk optimization
8
+ * - Prepared statement caching
9
+ */
10
+ export { QueryHintManager, QueryHint, HintType, INDEX_HINT, FORCE_INDEX, USE_INDEX, JOIN_FIXED_ORDER, MERGE_HASH, NO_MERGE, } from './query-hints';
11
+ export { ExplainPlanGenerator, ExplainPlan, ExplainOptions, ExplainFormat, createExplainPlanGenerator, } from './explain-plans';
12
+ export { SlowQueryLogger, SlowQueryLogEntry, SlowQueryOptions, createSlowQueryLogger, } from './slow-query-logger';
13
+ export { BatchQueryOptimizer, BatchOptions, BatchResult, QueryBatch, optimizeBatchInsert, optimizeBatchUpdate, optimizeBatchDelete, } from './batch-optimizer';
14
+ export { PreparedStatementCache, PreparedStatementCacheOptions, CacheEntry, createPreparedStatementCache, } from './prepared-statement-cache';
15
+ export { QueryOptimizer, QueryOptimizationOptions, createQueryOptimizer } from './query-optimizer';
16
+ /**
17
+ * Default configuration for query optimizers
18
+ */
19
+ export declare const defaultOptimizerConfig: {
20
+ slowQueryThreshold: number;
21
+ preparedStatementCacheSize: number;
22
+ batchInsertChunkSize: number;
23
+ batchUpdateChunkSize: number;
24
+ batchDeleteChunkSize: number;
25
+ enableExplainPlans: boolean;
26
+ enableQueryHints: boolean;
27
+ };
@@ -0,0 +1,252 @@
1
+ /**
2
+ * Prepared Statement Caching
3
+ * Provides functionality to cache and reuse prepared statements for better performance
4
+ */
5
+ import { Dialect } from '../dialects/dialect';
6
+ /**
7
+ * Options for prepared statement cache
8
+ */
9
+ export interface PreparedStatementCacheOptions {
10
+ /** Maximum number of statements to cache */
11
+ maxSize: number;
12
+ /** Time-to-live in milliseconds for cached statements */
13
+ ttl?: number;
14
+ /** Whether to cache based on normalized SQL (with placeholders) */
15
+ normalizeSql?: boolean;
16
+ /** Callback when a statement is cached */
17
+ onCache?: (key: string, statement: CachedStatement) => void;
18
+ /** Callback when a statement is evicted */
19
+ onEvict?: (key: string, statement: CachedStatement) => void;
20
+ /** Whether to log cache operations */
21
+ logging?: boolean;
22
+ }
23
+ /**
24
+ * Cached prepared statement entry
25
+ */
26
+ export interface CacheEntry {
27
+ /** Unique key for the cache entry */
28
+ key: string;
29
+ /** The SQL statement */
30
+ sql: string;
31
+ /**
32
+ * Caller-supplied metadata about the statement shape (e.g. parameter count,
33
+ * normalized SQL). This is NOT a real driver-level prepared-statement handle:
34
+ * `Dialect.query()` in this codebase always takes the full SQL text plus a
35
+ * `replacements`/`bind` array/object and does its own placeholder substitution
36
+ * or binds per-call - there is no separate "prepare" step whose handle could be
37
+ * cached and reused across calls. See the `PreparedStatementCache` class doc
38
+ * for details. Defaults to `{}` if the caller doesn't pass anything meaningful.
39
+ */
40
+ compiled: any;
41
+ /** Timestamp when the entry was created */
42
+ createdAt: number;
43
+ /** Number of times this statement was used */
44
+ hitCount: number;
45
+ /** Last time the statement was used */
46
+ lastUsedAt: number;
47
+ }
48
+ /**
49
+ * Extended cache entry with additional metadata
50
+ */
51
+ export interface CachedStatement extends CacheEntry {
52
+ /** The number of times this statement has been executed */
53
+ executions: number;
54
+ /** Total time spent executing this statement */
55
+ totalExecutionTime: number;
56
+ }
57
+ /**
58
+ * Query cache entry for query results
59
+ */
60
+ export interface QueryCacheEntry {
61
+ key: string;
62
+ sql: string;
63
+ params: any[];
64
+ result: any;
65
+ createdAt: number;
66
+ lastUsedAt: number;
67
+ hitCount: number;
68
+ }
69
+ /**
70
+ * Tracks SQL statement usage (hit/miss counts, execution timings, last-used
71
+ * time) keyed by normalized SQL + params, with TTL-based expiry.
72
+ *
73
+ * IMPORTANT — naming caveat: despite the name, this does **not** cache a real
74
+ * driver-level prepared-statement handle. None of the `Dialect` implementations
75
+ * in `src/dialects/**` expose a separate prepare/execute split - `query(sql,
76
+ * options)` always receives the full SQL text and applies `options.replacements`
77
+ * / `options.bind` per call (see e.g. `sqlite/index.ts` `query()`, which calls
78
+ * `connection.prepare(sql)` fresh on every invocation). So there is no reusable
79
+ * driver object for this class to hold onto; the `compiled` field on each entry
80
+ * is whatever metadata the caller passes to `set()` (by default just `{}`, or -
81
+ * see `QueryOptimizer.executeQuery()` - a lightweight `{ sql, paramCount }`
82
+ * descriptor). In practice this class behaves as a query-usage/hit-count
83
+ * tracker with an optional metadata slot, not a real statement cache. It is
84
+ * kept under this name for backwards compatibility with existing callers/tests;
85
+ * treat `getStats()` / `hitCount` / `topStatements` as the reliable surface,
86
+ * and don't rely on `compiled` holding an executable handle.
87
+ *
88
+ * Invalidation: entries expire via TTL (`options.ttl`, default 1 hour). Since
89
+ * that alone can serve stale-shaped results after schema changes made via raw
90
+ * DDL, `invalidateTable()` is provided to drop entries referencing a given
91
+ * table name on write (e.g. from a caller's insert/update/delete path); it is
92
+ * not auto-wired to every write in this codebase, but `QueryOptimizer.
93
+ * invalidateTableCache()` calls it alongside the query-result cache.
94
+ */
95
+ export declare class PreparedStatementCache {
96
+ private dialect;
97
+ private cache;
98
+ private maxSize;
99
+ private ttl;
100
+ private normalizeSql;
101
+ private onCache?;
102
+ private onEvict?;
103
+ private logging;
104
+ private stats;
105
+ constructor(dialect: Dialect, options: PreparedStatementCacheOptions);
106
+ /**
107
+ * Get a cached prepared statement
108
+ */
109
+ get(sql: string, params?: any[]): CachedStatement | undefined;
110
+ /**
111
+ * Store a prepared statement in the cache
112
+ */
113
+ set(sql: string, compiled: any, params?: any[]): CachedStatement;
114
+ /**
115
+ * Record execution of a prepared statement
116
+ */
117
+ recordExecution(key: string, executionTime: number): void;
118
+ /**
119
+ * Check if a statement is cached
120
+ */
121
+ has(sql: string, params?: any[]): boolean;
122
+ /**
123
+ * Clear all cached statements
124
+ */
125
+ clear(): void;
126
+ /**
127
+ * Get cache statistics
128
+ */
129
+ getStats(): CacheStats;
130
+ /**
131
+ * Get all cached statements
132
+ */
133
+ getAll(): CachedStatement[];
134
+ /**
135
+ * Generate a cache key from SQL and optional parameters
136
+ */
137
+ private generateKey;
138
+ /**
139
+ * Normalize SQL for consistent caching
140
+ */
141
+ private normalizeSQL;
142
+ /**
143
+ * Evict the oldest entry from cache
144
+ */
145
+ private evictOldest;
146
+ /**
147
+ * Evict a specific entry from cache
148
+ */
149
+ private evict;
150
+ /**
151
+ * Log a message if logging is enabled
152
+ */
153
+ private log;
154
+ /**
155
+ * Invalidate (remove) cache entries whose SQL references the given table.
156
+ * Intended to be called by write paths (INSERT/UPDATE/DELETE/DDL) so cached
157
+ * entries can't outlive schema/data changes for that table between TTL
158
+ * expirations. Not automatically wired into every write in this codebase -
159
+ * callers that write outside of `QueryOptimizer` should call this explicitly.
160
+ */
161
+ invalidateTable(tableName: string): number;
162
+ /**
163
+ * Remove expired entries
164
+ */
165
+ prune(): number;
166
+ /**
167
+ * Get cache size
168
+ */
169
+ get size(): number;
170
+ }
171
+ /**
172
+ * Cache statistics
173
+ */
174
+ export interface CacheStats {
175
+ size: number;
176
+ maxSize: number;
177
+ hits: number;
178
+ misses: number;
179
+ hitRate: number;
180
+ totalExecutions: number;
181
+ evictions: number;
182
+ topStatements: Array<{
183
+ sql: string;
184
+ hits: number;
185
+ executions: number;
186
+ avgExecutionTime: number;
187
+ }>;
188
+ }
189
+ /**
190
+ * Query result cache for caching query results
191
+ */
192
+ export declare class QueryResultCache {
193
+ private cache;
194
+ private maxSize;
195
+ private ttl;
196
+ private logging;
197
+ constructor(options?: {
198
+ maxSize?: number;
199
+ ttl?: number;
200
+ logging?: boolean;
201
+ });
202
+ /**
203
+ * Get cached query result
204
+ */
205
+ get(sql: string, params?: any[]): any | undefined;
206
+ /**
207
+ * Store a query result in cache
208
+ */
209
+ set(sql: string, params: any[], result: any): void;
210
+ /**
211
+ * Check if a query result is cached
212
+ */
213
+ has(sql: string, params?: any[]): boolean;
214
+ /**
215
+ * Invalidate cache for a specific table
216
+ */
217
+ invalidateTable(tableName: string): number;
218
+ /**
219
+ * Clear all cached results
220
+ */
221
+ clear(): void;
222
+ /**
223
+ * Get cache statistics
224
+ */
225
+ getStats(): {
226
+ size: number;
227
+ maxSize: number;
228
+ hitCount: number;
229
+ };
230
+ /**
231
+ * Generate a cache key
232
+ */
233
+ private generateKey;
234
+ /**
235
+ * Evict the oldest entry
236
+ */
237
+ private evictOldest;
238
+ /**
239
+ * Log a message
240
+ */
241
+ private log;
242
+ }
243
+ /**
244
+ * Create a prepared statement cache
245
+ */
246
+ export declare function createPreparedStatementCache(dialect: Dialect, options?: PreparedStatementCacheOptions): PreparedStatementCache;
247
+ declare const _default: {
248
+ PreparedStatementCache: typeof PreparedStatementCache;
249
+ QueryResultCache: typeof QueryResultCache;
250
+ createPreparedStatementCache: typeof createPreparedStatementCache;
251
+ };
252
+ export default _default;
@@ -0,0 +1,201 @@
1
+ /**
2
+ * Query Hint Support
3
+ * Provides functionality to add database-specific query hints to optimize query execution
4
+ */
5
+ import { Dialect } from '../dialects/dialect';
6
+ /**
7
+ * Types of query hints supported
8
+ */
9
+ export declare enum HintType {
10
+ /** Force use of a specific index */
11
+ FORCE_INDEX = "FORCE INDEX",
12
+ /** Suggest using a specific index */
13
+ USE_INDEX = "USE INDEX",
14
+ /** Ignore certain indexes */
15
+ IGNORE_INDEX = "IGNORE INDEX",
16
+ /** Force join order */
17
+ JOIN_FIXED_ORDER = "JOIN_FIXED_ORDER",
18
+ /** Force hash join */
19
+ MERGE_HASH = "MERGE_HASH",
20
+ /** Disable merge join */
21
+ NO_MERGE = "NO_MERGE",
22
+ /** Use nested loop join */
23
+ NESTED_LOOP = "NESTED_LOOP",
24
+ /** Maximum execution time in seconds */
25
+ MAX_EXECUTION_TIME = "MAX_EXECUTION_TIME",
26
+ /** SQL_BIG_RESULT hint */
27
+ SQL_BIG_RESULT = "SQL_BIG_RESULT",
28
+ /** SQL_SMALL_RESULT hint */
29
+ SQL_SMALL_RESULT = "SQL_SMALL_RESULT",
30
+ /** PostgreSQL: Sequential scan */
31
+ SEQ_SCAN = "SEQ_SCAN",
32
+ /** PostgreSQL: No sequential scan */
33
+ NO_SEQ_SCAN = "NO_SEQ_SCAN",
34
+ /** PostgreSQL: Index scan */
35
+ INDEX_SCAN = "INDEX_SCAN",
36
+ /** PostgreSQL: No index scan */
37
+ NO_INDEX_SCAN = "NO_INDEX_SCAN",
38
+ /** SQLite: Optimize query */
39
+ OPTIMIZE = "OPTIMIZE",
40
+ /** SQLite: Query plan */
41
+ QUERY_PLAN = "QUERY_PLAN",
42
+ /** SQL_BUFFER_RESULT hint */
43
+ SQL_BUFFER_RESULT = "SQL_BUFFER_RESULT",
44
+ /** SQL_CACHE hint (MySQL query cache) */
45
+ SQL_CACHE = "SQL_CACHE",
46
+ /** SQL_NO_CACHE hint */
47
+ SQL_NO_CACHE = "SQL_NO_CACHE",
48
+ /** Index merge hints */
49
+ INDEX_MERGE = "INDEX_MERGE",
50
+ /** Subquery optimization hints */
51
+ SUBQUERY = "SUBQUERY"
52
+ }
53
+ /**
54
+ * Query hint definition
55
+ */
56
+ export interface QueryHint {
57
+ type: HintType | HintTypeExtended;
58
+ value?: string | string[] | number;
59
+ tableName?: string;
60
+ }
61
+ /**
62
+ * Standard index hint for MySQL/MariaDB
63
+ */
64
+ export declare const INDEX_HINT: {
65
+ FORCE: (indexName: string, tableName?: string) => QueryHint;
66
+ USE: (indexName: string | string[], tableName?: string) => QueryHint;
67
+ IGNORE: (indexName: string | string[], tableName?: string) => QueryHint;
68
+ };
69
+ /**
70
+ * Predefined query hints
71
+ */
72
+ export declare const FORCE_INDEX: (indexName: string, tableName?: string) => QueryHint;
73
+ export declare const USE_INDEX: (indexName: string | string[], tableName?: string) => QueryHint;
74
+ export declare const JOIN_FIXED_ORDER: QueryHint;
75
+ export declare const MERGE_HASH: QueryHint;
76
+ export declare const NO_MERGE: QueryHint;
77
+ export declare const NESTED_LOOP: QueryHint;
78
+ export declare const SQL_BIG_RESULT: QueryHint;
79
+ export declare const SQL_SMALL_RESULT: QueryHint;
80
+ export declare const SQL_BUFFER_RESULT: QueryHint;
81
+ export declare const SQL_CACHE: QueryHint;
82
+ export declare const SQL_NO_CACHE: QueryHint;
83
+ /**
84
+ * Maximum execution time hint
85
+ */
86
+ export declare const MAX_EXECUTION_TIME: (seconds: number) => QueryHint;
87
+ /**
88
+ * Query hint manager for applying hints to SQL queries
89
+ */
90
+ export declare class QueryHintManager {
91
+ private dialect;
92
+ private enabled;
93
+ constructor(dialect: Dialect, options?: {
94
+ enabled?: boolean;
95
+ });
96
+ /**
97
+ * Enable or disable query hints
98
+ */
99
+ setEnabled(enabled: boolean): void;
100
+ /**
101
+ * Check if hints are enabled
102
+ */
103
+ isEnabled(): boolean;
104
+ /**
105
+ * Apply query hints to a SQL query
106
+ * @param sql - The base SQL query
107
+ * @param hints - Array of query hints to apply
108
+ * @returns SQL with hints applied
109
+ */
110
+ applyHints(sql: string, hints: QueryHint[]): string;
111
+ /**
112
+ * Check if a hint is supported by the current dialect
113
+ */
114
+ private isHintSupported;
115
+ /**
116
+ * Build the hint comment string for the dialect
117
+ */
118
+ private buildHintComment;
119
+ /**
120
+ * Build MySQL/MariaDB hint comments
121
+ */
122
+ private buildMySQLHints;
123
+ /**
124
+ * Build PostgreSQL hint comments (using pg_hint_plan format)
125
+ */
126
+ private buildPostgresHints;
127
+ /**
128
+ * Build SQLite hint comments
129
+ */
130
+ private buildSQLiteHints;
131
+ /**
132
+ * Build Oracle hint comments (placed immediately after SELECT/INSERT/UPDATE/DELETE,
133
+ * same position as the MySQL/PostgreSQL comment hints).
134
+ * - USE_NL: force a nested loop join
135
+ * - USE_HASH: force a hash join
136
+ * - NO_MERGE: Oracle's real NO_MERGE hint (prevents view merging); used here as
137
+ * the closest real Oracle equivalent for "disable merge join"
138
+ */
139
+ private buildOracleHints;
140
+ /**
141
+ * Build a SQL Server `OPTION (...)` query hint clause, appended to the end of
142
+ * the statement (SQL Server does not support inline `/*+ ... *\/` comment hints).
143
+ * SQL Server doesn't expose a direct "disable merge join" hint, so NO_MERGE is
144
+ * approximated by restricting the optimizer to HASH JOIN and LOOP JOIN, which
145
+ * excludes merge join from consideration.
146
+ */
147
+ private buildMssqlOptionClause;
148
+ /**
149
+ * Create a hint for forcing index usage
150
+ */
151
+ forceIndex(indexName: string, tableName?: string): QueryHint;
152
+ /**
153
+ * Create a hint for suggesting index usage
154
+ */
155
+ useIndex(indexName: string | string[], tableName?: string): QueryHint;
156
+ /**
157
+ * Create a hint for ignoring certain indexes
158
+ */
159
+ ignoreIndex(indexName: string | string[], tableName?: string): QueryHint;
160
+ /**
161
+ * Create a hint for maximum execution time
162
+ */
163
+ maxExecutionTime(seconds: number): QueryHint;
164
+ /**
165
+ * Create a hint for SQL_BIG_RESULT
166
+ */
167
+ sqlBigResult(): QueryHint;
168
+ /**
169
+ * Create a hint for SQL_SMALL_RESULT
170
+ */
171
+ sqlSmallResult(): QueryHint;
172
+ /**
173
+ * Create a hint for SQL_NO_CACHE
174
+ */
175
+ sqlNoCache(): QueryHint;
176
+ }
177
+ export declare enum HintTypeExtended {
178
+ SEQ_SCAN = "SEQ_SCAN",
179
+ NO_SEQ_SCAN = "NO_SEQ_SCAN",
180
+ INDEX_SCAN = "INDEX_SCAN",
181
+ NO_INDEX_SCAN = "NO_INDEX_SCAN",
182
+ OPTIMIZE = "OPTIMIZE",
183
+ QUERY_PLAN = "QUERY_PLAN"
184
+ }
185
+ declare const _default: {
186
+ QueryHintManager: typeof QueryHintManager;
187
+ HintType: typeof HintType;
188
+ INDEX_HINT: {
189
+ FORCE: (indexName: string, tableName?: string) => QueryHint;
190
+ USE: (indexName: string | string[], tableName?: string) => QueryHint;
191
+ IGNORE: (indexName: string | string[], tableName?: string) => QueryHint;
192
+ };
193
+ FORCE_INDEX: (indexName: string, tableName?: string) => QueryHint;
194
+ USE_INDEX: (indexName: string | string[], tableName?: string) => QueryHint;
195
+ JOIN_FIXED_ORDER: QueryHint;
196
+ MERGE_HASH: QueryHint;
197
+ NO_MERGE: QueryHint;
198
+ NESTED_LOOP: QueryHint;
199
+ MAX_EXECUTION_TIME: (seconds: number) => QueryHint;
200
+ };
201
+ export default _default;