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,122 @@
1
+ import type { NoSqlStore } from '../store';
2
+ /**
3
+ * A loosely-typed handle to a `minio` `Client`. Kept as an interface rather
4
+ * than the real driver type because `minio` is loaded lazily and may not be
5
+ * installed at type-check time; tests inject a mock matching this shape.
6
+ */
7
+ export interface MinioClientLike {
8
+ putObject(bucket: string, key: string, data: unknown, ...rest: any[]): any;
9
+ getObject(bucket: string, key: string, ...rest: any[]): any;
10
+ removeObject(bucket: string, key: string, ...rest: any[]): any;
11
+ listObjects(bucket: string, prefix?: string, recursive?: boolean, ...rest: any[]): any;
12
+ statObject(bucket: string, key: string, ...rest: any[]): any;
13
+ makeBucket(bucket: string, ...rest: any[]): any;
14
+ bucketExists(bucket: string, ...rest: any[]): any;
15
+ [key: string]: any;
16
+ }
17
+ /** Connection options for `MinioStore`, mirroring `Minio.Client` construction. */
18
+ export interface MinioStoreOptions {
19
+ /** Server hostname or IP, e.g. 'localhost' or 's3.example.com'. */
20
+ endPoint?: string;
21
+ /** TCP port the MinIO/S3 server listens on, e.g. 9000. */
22
+ port?: number;
23
+ /** Whether to use TLS (https). */
24
+ useSSL?: boolean;
25
+ /** Access key (username) for the server. */
26
+ accessKey?: string;
27
+ /** Secret key (password) for the server. */
28
+ secretKey?: string;
29
+ /**
30
+ * A pre-built `Minio.Client` (or compatible object). When provided,
31
+ * `connect()` uses it directly and does NOT require the driver — this is how
32
+ * tests inject a mock client, and how callers can supply a custom-configured
33
+ * client. When omitted, `connect()` builds a real `Minio.Client` from the
34
+ * options above.
35
+ */
36
+ client?: MinioClientLike;
37
+ }
38
+ /** Options for `putObject()`. */
39
+ export interface PutObjectOptions {
40
+ /** Byte length of the object body, when known (some sources need it). */
41
+ size?: number;
42
+ /** Per-object metadata / headers (e.g. `{ 'Content-Type': 'application/json' }`). */
43
+ metadata?: Record<string, string>;
44
+ }
45
+ /** Result of `putObject()`. */
46
+ export interface PutObjectResult {
47
+ etag?: string;
48
+ versionId?: string;
49
+ }
50
+ /** Result of `getObject()` — the fully-collected object body plus its stat metadata. */
51
+ export interface GetObjectResult {
52
+ /** The complete object body, collected from the MinIO byte stream. */
53
+ body: Buffer;
54
+ /** Object metadata from a companion `statObject`, when available. */
55
+ stat?: StatObjectResult;
56
+ }
57
+ /** Result of `statObject()` — object metadata without the body. */
58
+ export interface StatObjectResult {
59
+ size?: number;
60
+ etag?: string;
61
+ lastModified?: Date;
62
+ metaData?: Record<string, string>;
63
+ }
64
+ /**
65
+ * MinIO store, implementing the minimal `NoSqlStore` marker interface. Unlike
66
+ * the SQL dialects there is no `query(sql)` — MinIO's operations are
67
+ * object-shaped and that shape is preserved here rather than forced into a
68
+ * SQL string.
69
+ */
70
+ export declare class MinioStore implements NoSqlStore {
71
+ readonly name = "minio";
72
+ readonly library = "minio";
73
+ private readonly options;
74
+ private client;
75
+ private connected;
76
+ constructor(options?: MinioStoreOptions);
77
+ connect(): Promise<void>;
78
+ disconnect(): Promise<void>;
79
+ isConnected(): boolean;
80
+ /** Returns the underlying `Minio.Client` (loosely typed) for anything not wrapped here. */
81
+ getClient(): MinioClientLike;
82
+ private requireClient;
83
+ /** Wraps a driver failure in a `DatabaseError`, preserving the original error. */
84
+ private wrapError;
85
+ /** `putObject` — store an object's body (and optional metadata) under `bucket`/`key`. */
86
+ putObject(bucket: string, key: string, data: unknown, options?: PutObjectOptions): Promise<PutObjectResult>;
87
+ /**
88
+ * `getObject` — fetch an object. `Minio.Client.getObject` resolves to a
89
+ * readable *byte stream*; this method collects that stream to completion
90
+ * into a single `Buffer` so callers get the whole body without wiring up
91
+ * stream plumbing. Optionally attaches a companion `statObject` result.
92
+ */
93
+ getObject(bucket: string, key: string): Promise<GetObjectResult>;
94
+ /** `removeObject` — delete an object. */
95
+ removeObject(bucket: string, key: string): Promise<void>;
96
+ /**
97
+ * `listObjects` — list objects in `bucket`, optionally restricted to those
98
+ * whose name starts with `prefix`. `Minio.Client.listObjects` returns an
99
+ * *object stream* that emits one item per object; this method collects that
100
+ * stream into an array of object *names* (`item.name`). Listing is recursive
101
+ * so nested "path"-style keys are all returned.
102
+ */
103
+ listObjects(bucket: string, prefix?: string): Promise<string[]>;
104
+ /** `statObject` — fetch an object's metadata without its body. */
105
+ statObject(bucket: string, key: string): Promise<StatObjectResult>;
106
+ /** `makeBucket` — create a bucket, optionally in a specific `region`. */
107
+ makeBucket(bucket: string, region?: string): Promise<void>;
108
+ /** `bucketExists` — whether a bucket exists. */
109
+ bucketExists(bucket: string): Promise<boolean>;
110
+ /**
111
+ * Collect a readable byte stream into a single `Buffer`. Supports both
112
+ * Node.js event-emitter streams (`.on('data'|'end'|'error')`) and async
113
+ * iterables (`for await`), so a test can inject either shape.
114
+ */
115
+ private collectStream;
116
+ /**
117
+ * Collect an object stream into an array of emitted items. Supports both
118
+ * Node.js event-emitter streams and async iterables.
119
+ */
120
+ private collectObjectStream;
121
+ }
122
+ export default MinioStore;
@@ -0,0 +1,99 @@
1
+ /**
2
+ * Momento Cache store implementation.
3
+ *
4
+ * Momento is a serverless, globally-available cache accessed through the
5
+ * `@gomomento/sdk` `CacheClient`. Every operation is scoped to a named
6
+ * cache. Momento has no SQL surface and no arbitrary key enumeration, so
7
+ * this class implements the minimal `NoSqlStore` marker interface and
8
+ * exposes an edge-KV `get`/`set`/`del`/`list`/`incr` surface mapped onto the
9
+ * Momento client.
10
+ *
11
+ * ## Driver
12
+ *
13
+ * Uses `@gomomento/sdk` (`CacheClient`). The driver is loaded lazily inside
14
+ * `connect()` (or supplied pre-built via the `client` option) so importing
15
+ * this module never requires `@gomomento/sdk` to be installed unless a store
16
+ * is actually connected. Tests inject a mock `client`.
17
+ *
18
+ * ## Method mapping
19
+ *
20
+ * - `get(key)` -> `client.get(cacheName, key)`
21
+ * - `set(k,v,opts)` -> `client.set(cacheName, key, value, { ttl })`
22
+ * - `del(key)` -> `client.delete(cacheName, key)`
23
+ * - `list(name?)` -> `client.listFetch(cacheName, listName)`. Momento has
24
+ * no key-scan, so `list()` fetches the elements of a Momento *list*
25
+ * (`name` is the list name, defaulting to `defaultListName`) rather than
26
+ * enumerating cache keys.
27
+ * - `incr(k,by?)` -> `client.increment(cacheName, key, by)`
28
+ *
29
+ * ## Serialization
30
+ *
31
+ * String values are stored verbatim; every other value is `JSON.stringify`'d
32
+ * before being written.
33
+ */
34
+ import { NoSqlStore } from '../store';
35
+ /** Options for `set()`. */
36
+ export interface MomentoSetOptions {
37
+ /** Time-to-live in seconds for this item (Momento `ttl`). */
38
+ ttl?: number;
39
+ }
40
+ /** The subset of the Momento `CacheClient` surface this store drives. */
41
+ export interface MomentoCacheClient {
42
+ get(cacheName: string, key: string): Promise<any>;
43
+ set(cacheName: string, key: string, value: string, options?: Record<string, unknown>): Promise<any>;
44
+ delete(cacheName: string, key: string): Promise<any>;
45
+ increment(cacheName: string, key: string, amount?: number, options?: Record<string, unknown>): Promise<any>;
46
+ listFetch(cacheName: string, listName: string): Promise<any>;
47
+ }
48
+ /** Connection options for `MomentoStore`. */
49
+ export interface MomentoStoreOptions {
50
+ /** Name of the Momento cache every operation targets (required). */
51
+ cacheName?: string;
52
+ /** Default list name used by `list()` when none is passed. */
53
+ defaultListName?: string;
54
+ /** Momento SDK `Configuration` (used only when building a real client). */
55
+ configuration?: unknown;
56
+ /** Momento `CredentialProvider` (used only when building a real client). */
57
+ credentialProvider?: unknown;
58
+ /** Default TTL (seconds) for the constructed client. */
59
+ defaultTtlSeconds?: number;
60
+ /** Pre-built `CacheClient`; when given `connect()` uses it and skips `require('@gomomento/sdk')`. */
61
+ client?: MomentoCacheClient;
62
+ }
63
+ /**
64
+ * `MomentoStore` wraps a Momento `CacheClient` behind the `NoSqlStore`
65
+ * lifecycle and an edge-KV `get`/`set`/`del`/`list`/`incr` surface.
66
+ */
67
+ export declare class MomentoStore implements NoSqlStore {
68
+ readonly name = "momento";
69
+ readonly library = "@gomomento/sdk";
70
+ private readonly options;
71
+ private client;
72
+ private connected;
73
+ constructor(options?: MomentoStoreOptions);
74
+ private get cacheName();
75
+ connect(): Promise<void>;
76
+ disconnect(): Promise<void>;
77
+ isConnected(): boolean;
78
+ /** Returns the underlying Momento `CacheClient` for anything not wrapped here. */
79
+ getClient(): MomentoCacheClient;
80
+ private requireClient;
81
+ /** Read a key from the configured cache. Returns the Momento response object. */
82
+ get(key: string): Promise<any>;
83
+ /**
84
+ * Write `value` under `key`. Strings are stored verbatim; other values are
85
+ * JSON-serialized. `options.ttl` sets a per-item TTL in seconds.
86
+ */
87
+ set(key: string, value: unknown, options?: MomentoSetOptions): Promise<any>;
88
+ /** Delete a key from the configured cache. */
89
+ del(key: string): Promise<any>;
90
+ /**
91
+ * Fetch the elements of a Momento list. Momento cannot enumerate cache
92
+ * keys, so `prefix`/`listName` names a list; defaults to
93
+ * `defaultListName`.
94
+ */
95
+ list(listName?: string): Promise<any>;
96
+ /** Atomically increment the numeric value at `key` by `by` (default `1`). */
97
+ incr(key: string, by?: number): Promise<any>;
98
+ }
99
+ export default MomentoStore;
@@ -0,0 +1,265 @@
1
+ /**
2
+ * MongoDB store implementation for the Prorm NoSQL layer.
3
+ *
4
+ * MongoDB is a document store, not a SQL engine, so this class does not
5
+ * implement the SQL-shaped `Dialect` interface (see src/dialects/dialect.ts).
6
+ * It implements the minimal `NoSqlStore` marker interface (src/nosql/store.ts)
7
+ * for connection lifecycle, and otherwise exposes MongoDB's real API shape
8
+ * directly: filters, projections, aggregation pipelines, sessions/
9
+ * transactions, and typed collections - rather than forcing everything
10
+ * through a `query(sql)` method that doesn't make sense for a document
11
+ * database.
12
+ */
13
+ import { MongoClient, Db, Collection, Document, Filter, FindOptions, OptionalUnlessRequiredId, InsertOneOptions, BulkWriteOptions, UpdateFilter, UpdateOptions, DeleteOptions, CountDocumentsOptions, AggregateOptions, IndexSpecification, CreateIndexesOptions, ListIndexesOptions, DropCollectionOptions, EstimatedDocumentCountOptions, CreateCollectionOptions, ListCollectionsOptions, CollectionInfo, RenameOptions, MongoClientOptions, ClientSession, ClientSessionOptions, TransactionOptions, InsertOneResult, InsertManyResult, UpdateResult, DeleteResult, AnyBulkWriteOperation, BulkWriteResult, FindOneAndUpdateOptions, FindOneAndDeleteOptions, DistinctOptions, WithId, FindCursor, ChangeStream, ChangeStreamDocument, ChangeStreamOptions } from 'mongodb';
14
+ import { NoSqlStore } from '../store';
15
+ /** One `[field, direction]` ordering term, e.g. `['createdAt', 'DESC']`. */
16
+ export type OrderTerm = [string, 'ASC' | 'DESC'] | string;
17
+ /** Options for {@link MongoStore.findAll}/{@link MongoStore.findOneWhere}. */
18
+ export interface OrmFindOptions {
19
+ /** Ordering terms applied in sequence. A bare string sorts ascending. */
20
+ order?: OrderTerm | OrderTerm[];
21
+ /** Maximum number of documents to return. */
22
+ limit?: number;
23
+ /** Number of leading documents to skip (offset). */
24
+ offset?: number;
25
+ /** Projection: fields to include/exclude. */
26
+ projection?: Document;
27
+ }
28
+ /** A group-aggregation request for {@link MongoStore.aggregateGroup}. */
29
+ export interface OrmAggregateOptions {
30
+ /** ORM `where` filter applied before grouping (`$match`). */
31
+ where?: Record<string | symbol, unknown>;
32
+ /** Field(s) to group by. Omit for a single whole-collection group. */
33
+ groupBy?: string | string[];
34
+ /** Emit a `count` per group. */
35
+ count?: boolean;
36
+ /** Fields to `sum` per group, keyed by output name → source field. */
37
+ sum?: Record<string, string>;
38
+ /** Fields to `avg` per group, keyed by output name → source field. */
39
+ avg?: Record<string, string>;
40
+ /** Fields to `min` per group, keyed by output name → source field. */
41
+ min?: Record<string, string>;
42
+ /** Fields to `max` per group, keyed by output name → source field. */
43
+ max?: Record<string, string>;
44
+ }
45
+ /** Describes an association to eager-load via `$lookup` in {@link MongoStore.findWithInclude}. */
46
+ export interface MongoInclude {
47
+ /** The collection to join to (the associated model's collection). */
48
+ from: string;
49
+ /** Field on the local documents used as the join key. */
50
+ localField: string;
51
+ /** Field on the `from` documents matched against `localField`. Defaults to `_id`. */
52
+ foreignField?: string;
53
+ /** Property name under which matched documents are attached. */
54
+ as: string;
55
+ /** When true, unwind to a single associated document (belongsTo/hasOne) instead of an array. */
56
+ single?: boolean;
57
+ }
58
+ /**
59
+ * Options for constructing a `MongoStore`.
60
+ *
61
+ * `uri` is the standard MongoDB connection string
62
+ * (`mongodb://...` / `mongodb+srv://...`). `database` selects the database
63
+ * to operate against once connected. Any additional standard
64
+ * `MongoClientOptions` (pool size, TLS, auth, timeouts, etc.) can be passed
65
+ * through via `clientOptions`.
66
+ */
67
+ export interface MongoStoreOptions {
68
+ /** MongoDB connection string, e.g. `mongodb://localhost:27017` */
69
+ uri: string;
70
+ /** Name of the database to use */
71
+ database: string;
72
+ /** Additional options passed straight through to the native `MongoClient` */
73
+ clientOptions?: MongoClientOptions;
74
+ }
75
+ /** Options accepted by {@link MongoStore.find}. */
76
+ export interface MongoFindOptions<T extends Document = Document> extends Omit<FindOptions<T>, 'sort' | 'limit' | 'skip' | 'projection'> {
77
+ projection?: FindOptions<T>['projection'];
78
+ sort?: FindOptions<T>['sort'];
79
+ limit?: number;
80
+ skip?: number;
81
+ }
82
+ /**
83
+ * `MongoStore` wraps the official `mongodb` driver's `MongoClient`/`Db`/
84
+ * `Collection` API in a small, typed convenience layer.
85
+ */
86
+ export declare class MongoStore implements NoSqlStore {
87
+ readonly name = "mongodb";
88
+ readonly library = "mongodb";
89
+ private readonly options;
90
+ private client;
91
+ private db;
92
+ private _isConnected;
93
+ constructor(options: MongoStoreOptions);
94
+ connect(): Promise<void>;
95
+ disconnect(): Promise<void>;
96
+ isConnected(): boolean;
97
+ /** Returns the underlying native `MongoClient`. */
98
+ getClient(): MongoClient;
99
+ /** Returns the underlying native `Db` handle for the configured database. */
100
+ getDb(): Db;
101
+ private requireClient;
102
+ private requireDb;
103
+ /** Typed collection accessor, e.g. `store.collection<User>('users')`. */
104
+ collection<T extends Document = Document>(name: string): Collection<T>;
105
+ private wrapError;
106
+ /**
107
+ * Maps a raw MongoDB driver error to one of our well-known `ErrorCodes`.
108
+ *
109
+ * MongoDB surfaces most server-side failures as a numeric `code` (and a
110
+ * human-readable `codeName`) on the error object itself - unlike some SQL
111
+ * drivers, this is not tucked away behind `.parent`/`.metadata.original`.
112
+ * We sniff those fields here so callers get a meaningful, dialect-
113
+ * agnostic error code (e.g. `UNIQUE_CONSTRAINT_ERROR` for duplicate key
114
+ * violations) instead of a generic `QUERY_ERROR` for everything.
115
+ */
116
+ private mapErrorCode;
117
+ findOne<T extends Document = Document>(collectionName: string, filter?: Filter<T>, options?: FindOptions<T>): Promise<T | null>;
118
+ find<T extends Document = Document>(collectionName: string, filter?: Filter<T>, options?: MongoFindOptions<T>): Promise<T[]>;
119
+ /**
120
+ * Like {@link find}, but returns the native `FindCursor` instead of
121
+ * materializing the results with `toArray()`. Use this for large result
122
+ * sets that shouldn't be pulled fully into memory - iterate with
123
+ * `for await (const doc of cursor)` or use `cursor.next()`/`cursor.forEach()`.
124
+ */
125
+ findCursor<T extends Document = Document>(collectionName: string, filter?: Filter<T>, options?: MongoFindOptions<T>): FindCursor<WithId<T>>;
126
+ countDocuments<T extends Document = Document>(collectionName: string, filter?: Filter<T>, options?: CountDocumentsOptions): Promise<number>;
127
+ /**
128
+ * Returns a fast, metadata-based approximate count of all documents in
129
+ * `collectionName`. Unlike {@link countDocuments}, this does not accept a
130
+ * filter and does not scan the collection - it reads the collection's
131
+ * cached document count, so it's cheap but can be stale/approximate
132
+ * (e.g. immediately after bulk writes, or on a sharded cluster).
133
+ */
134
+ estimatedDocumentCount(collectionName: string, options?: EstimatedDocumentCountOptions): Promise<number>;
135
+ aggregate<T extends Document = Document, R extends Document = Document>(collectionName: string, pipeline: Document[], options?: AggregateOptions): Promise<R[]>;
136
+ /** Returns the distinct values for `field` across documents matching `filter`. */
137
+ distinct<T extends Document = Document>(collectionName: string, field: string, filter?: Filter<T>, options?: DistinctOptions): Promise<unknown[]>;
138
+ /**
139
+ * Translate an ORM `where` object (with `Op.*` operators and
140
+ * `Op.and`/`Op.or`/`Op.not`) into a native MongoDB filter document. Exposed
141
+ * for callers that want to feed the translated filter into other native
142
+ * operations (e.g. `aggregate`, `watch`).
143
+ */
144
+ translateWhere<T extends Document = Document>(where: Record<string | symbol, unknown>): Filter<T>;
145
+ /**
146
+ * Fetch all documents in `collectionName` matching an ORM `where` clause,
147
+ * with optional ordering, offset, limit, and projection. The `where` object
148
+ * accepts the full ORM operator surface (`Op.gt`, `Op.in`, `Op.between`,
149
+ * `Op.like`, `Op.and`/`Op.or`, ...), translated to a native MongoDB filter -
150
+ * so standard queries never require hand-written `$`-filters.
151
+ */
152
+ findAll<T extends Document = Document>(collectionName: string, where?: Record<string | symbol, unknown>, options?: OrmFindOptions): Promise<T[]>;
153
+ /** Fetch the first document in `collectionName` matching an ORM `where` clause (respecting `order`), or `null`. */
154
+ findOneWhere<T extends Document = Document>(collectionName: string, where?: Record<string | symbol, unknown>, options?: Omit<OrmFindOptions, 'limit'>): Promise<T | null>;
155
+ /** Count documents in `collectionName` matching an ORM `where` clause. */
156
+ countWhere<T extends Document = Document>(collectionName: string, where?: Record<string | symbol, unknown>): Promise<number>;
157
+ /**
158
+ * Update every document in `collectionName` matching an ORM `where` clause,
159
+ * applying `patch` (a raw `$`-update, or a plain object which is wrapped in
160
+ * `$set`).
161
+ */
162
+ updateWhere<T extends Document = Document>(collectionName: string, where: Record<string | symbol, unknown>, patch: UpdateFilter<T> | Partial<T>, options?: UpdateOptions): Promise<Document | UpdateResult<T>>;
163
+ /** Delete every document in `collectionName` matching an ORM `where` clause. */
164
+ deleteWhere<T extends Document = Document>(collectionName: string, where: Record<string | symbol, unknown>, options?: DeleteOptions): Promise<DeleteResult>;
165
+ /**
166
+ * Insert-or-update by an ORM `where` clause: applies `patch` to a matching
167
+ * document, inserting one (with the patch merged over the filter's implied
168
+ * fields) if none matches. Thin wrapper over `updateOne` with `upsert: true`.
169
+ */
170
+ upsert<T extends Document = Document>(collectionName: string, where: Record<string | symbol, unknown>, patch: UpdateFilter<T> | Partial<T>, options?: Omit<UpdateOptions, 'upsert'>): Promise<UpdateResult<T>>;
171
+ /**
172
+ * Grouped aggregation over `collectionName` using a native
173
+ * `$match`/`$group` pipeline (`count`/`sum`/`avg`/`min`/`max`), with an
174
+ * optional ORM `where` pre-filter. Returns one entry per group:
175
+ * `{ group, ...aggregates }` (`group` is `null` when no `groupBy` is given).
176
+ */
177
+ aggregateGroup(collectionName: string, options?: OrmAggregateOptions): Promise<Array<Record<string, unknown>>>;
178
+ /**
179
+ * Fetch documents from `collectionName` matching an ORM `where` clause, with
180
+ * one or more associations eager-loaded via native `$lookup` (the MongoDB
181
+ * equivalent of a SQL join / ORM `include`). Each {@link MongoInclude}
182
+ * attaches matched documents under its `as` key; `single: true` unwinds to a
183
+ * single document for to-one associations.
184
+ */
185
+ findWithInclude<T extends Document = Document, R extends Document = Document>(collectionName: string, where?: Record<string | symbol, unknown>, includes?: MongoInclude[], options?: OrmFindOptions): Promise<R[]>;
186
+ insertOne<T extends Document = Document>(collectionName: string, doc: OptionalUnlessRequiredId<T>, options?: InsertOneOptions): Promise<InsertOneResult<T>>;
187
+ insertMany<T extends Document = Document>(collectionName: string, docs: OptionalUnlessRequiredId<T>[], options?: BulkWriteOptions): Promise<InsertManyResult<T>>;
188
+ /**
189
+ * Executes a mix of insert/update/delete/upsert operations against a
190
+ * single collection in one round trip. Thin passthrough to the native
191
+ * driver's `Collection.bulkWrite()`.
192
+ */
193
+ bulkWrite<T extends Document = Document>(collectionName: string, operations: AnyBulkWriteOperation<T>[], options?: BulkWriteOptions): Promise<BulkWriteResult>;
194
+ updateOne<T extends Document = Document>(collectionName: string, filter: Filter<T>, update: UpdateFilter<T> | Partial<T>, options?: UpdateOptions): Promise<UpdateResult<T>>;
195
+ updateMany<T extends Document = Document>(collectionName: string, filter: Filter<T>, update: UpdateFilter<T> | Partial<T>, options?: UpdateOptions): Promise<Document | UpdateResult<T>>;
196
+ /** Atomically finds a document matching `filter` and updates it, returning it (or `null`). */
197
+ findOneAndUpdate<T extends Document = Document>(collectionName: string, filter: Filter<T>, update: UpdateFilter<T> | Document[], options?: FindOneAndUpdateOptions): Promise<WithId<T> | null>;
198
+ deleteOne<T extends Document = Document>(collectionName: string, filter: Filter<T>, options?: DeleteOptions): Promise<DeleteResult>;
199
+ deleteMany<T extends Document = Document>(collectionName: string, filter: Filter<T>, options?: DeleteOptions): Promise<DeleteResult>;
200
+ /** Atomically finds a document matching `filter` and deletes it, returning it (or `null`). */
201
+ findOneAndDelete<T extends Document = Document>(collectionName: string, filter: Filter<T>, options?: FindOneAndDeleteOptions): Promise<WithId<T> | null>;
202
+ createIndex(collectionName: string, indexSpec: IndexSpecification, options?: CreateIndexesOptions): Promise<string>;
203
+ dropIndex(collectionName: string, indexName: string): Promise<Document>;
204
+ /**
205
+ * Lists the indexes defined on `collectionName`. Fills the asymmetry with
206
+ * {@link createIndex}/{@link dropIndex}, which have no built-in way to
207
+ * inspect what indexes already exist. Thin passthrough to the native
208
+ * driver's `Collection.listIndexes().toArray()`.
209
+ */
210
+ listIndexes(collectionName: string, options?: ListIndexesOptions): Promise<Document[]>;
211
+ /**
212
+ * Explicitly creates `collectionName`, rather than relying on MongoDB's
213
+ * implicit creation of a collection on first write. This is the only way
214
+ * to create a **timeseries collection** (`options.timeseries: { timeField,
215
+ * metaField?, granularity? }`) or a **view** (`options.viewOn` +
216
+ * `options.pipeline`), since both must be declared at creation time -
217
+ * previously this required dropping down to `getDb().createCollection(...)`
218
+ * directly.
219
+ */
220
+ createCollection<T extends Document = Document>(collectionName: string, options?: CreateCollectionOptions): Promise<Collection<T>>;
221
+ /**
222
+ * Lists the collections (and views) defined in the configured database.
223
+ * Thin passthrough to the native driver's `Db.listCollections().toArray()`.
224
+ */
225
+ listCollections(filter?: Document, options?: ListCollectionsOptions): Promise<CollectionInfo[]>;
226
+ /**
227
+ * Renames `oldName` to `newName`. Uses `Db.renameCollection()` (rather
228
+ * than `Collection.rename()`) because it's the driver API that stays
229
+ * generic over the document type, matching the rest of this class's
230
+ * typed-collection conventions.
231
+ */
232
+ renameCollection<T extends Document = Document>(oldName: string, newName: string, options?: RenameOptions): Promise<Collection<T>>;
233
+ /** Drops `collectionName` entirely. Thin passthrough to `Collection.drop()`. */
234
+ dropCollection(collectionName: string, options?: DropCollectionOptions): Promise<boolean>;
235
+ /**
236
+ * Opens a change stream on `collectionName`, delivering real-time
237
+ * notifications of insert/update/replace/delete operations. Thin
238
+ * passthrough to the native driver's `Collection.watch()`.
239
+ *
240
+ * Like {@link withTransaction}, this requires a replica set / sharded
241
+ * cluster deployment - a standalone `mongod` does not support change
242
+ * streams (see README "Known limitations").
243
+ *
244
+ * Returns the native `ChangeStream`, which is itself an async iterable
245
+ * and event emitter (`on('change', ...)`, `on('error', ...)`, `close()`).
246
+ *
247
+ * ```typescript
248
+ * const stream = store.watch<User>('users', [{ $match: { operationType: 'insert' } }]);
249
+ * stream.on('change', (change) => {
250
+ * // change.operationType, change.fullDocument, ...
251
+ * });
252
+ * // later: await stream.close();
253
+ * ```
254
+ */
255
+ watch<T extends Document = Document>(collectionName: string, pipeline?: Document[], options?: ChangeStreamOptions): ChangeStream<T, ChangeStreamDocument<T>>;
256
+ /** Starts a new client session (for multi-document transactions). */
257
+ startSession(options?: ClientSessionOptions): ClientSession;
258
+ /**
259
+ * Runs `fn` inside a MongoDB multi-document transaction. Requires a
260
+ * replica set / mongos deployment - standalone servers do not support
261
+ * transactions (see README "Known limitations").
262
+ */
263
+ withTransaction<T>(fn: (session: ClientSession) => Promise<T>, options?: TransactionOptions): Promise<T>;
264
+ }
265
+ export default MongoStore;
@@ -15,6 +15,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  exports.MongoStore = void 0;
16
16
  const mongodb_1 = require("mongodb");
17
17
  const index_1 = require("../../errors/index");
18
+ const where_1 = require("./where");
18
19
  /**
19
20
  * `MongoStore` wraps the official `mongodb` driver's `MongoClient`/`Db`/
20
21
  * `Collection` API in a small, typed convenience layer.
@@ -228,6 +229,134 @@ class MongoStore {
228
229
  }
229
230
  }
230
231
  // ---------------------------------------------------------------------
232
+ // ORM-shaped queries (Op-based where clauses, no hand-written filters)
233
+ // ---------------------------------------------------------------------
234
+ /**
235
+ * Translate an ORM `where` object (with `Op.*` operators and
236
+ * `Op.and`/`Op.or`/`Op.not`) into a native MongoDB filter document. Exposed
237
+ * for callers that want to feed the translated filter into other native
238
+ * operations (e.g. `aggregate`, `watch`).
239
+ */
240
+ translateWhere(where) {
241
+ return (0, where_1.translateWhereToMongo)(where);
242
+ }
243
+ /**
244
+ * Fetch all documents in `collectionName` matching an ORM `where` clause,
245
+ * with optional ordering, offset, limit, and projection. The `where` object
246
+ * accepts the full ORM operator surface (`Op.gt`, `Op.in`, `Op.between`,
247
+ * `Op.like`, `Op.and`/`Op.or`, ...), translated to a native MongoDB filter -
248
+ * so standard queries never require hand-written `$`-filters.
249
+ */
250
+ async findAll(collectionName, where = {}, options = {}) {
251
+ return this.find(collectionName, this.translateWhere(where), {
252
+ sort: (0, where_1.translateOrderToMongo)(options.order),
253
+ skip: options.offset,
254
+ limit: options.limit,
255
+ projection: options.projection,
256
+ });
257
+ }
258
+ /** Fetch the first document in `collectionName` matching an ORM `where` clause (respecting `order`), or `null`. */
259
+ async findOneWhere(collectionName, where = {}, options = {}) {
260
+ const rows = await this.findAll(collectionName, where, { ...options, limit: 1 });
261
+ return rows.length > 0 ? rows[0] : null;
262
+ }
263
+ /** Count documents in `collectionName` matching an ORM `where` clause. */
264
+ async countWhere(collectionName, where = {}) {
265
+ return this.countDocuments(collectionName, this.translateWhere(where));
266
+ }
267
+ /**
268
+ * Update every document in `collectionName` matching an ORM `where` clause,
269
+ * applying `patch` (a raw `$`-update, or a plain object which is wrapped in
270
+ * `$set`).
271
+ */
272
+ async updateWhere(collectionName, where, patch, options) {
273
+ const update = isRawUpdate(patch) ? patch : { $set: patch };
274
+ return this.updateMany(collectionName, this.translateWhere(where), update, options);
275
+ }
276
+ /** Delete every document in `collectionName` matching an ORM `where` clause. */
277
+ async deleteWhere(collectionName, where, options) {
278
+ return this.deleteMany(collectionName, this.translateWhere(where), options);
279
+ }
280
+ /**
281
+ * Insert-or-update by an ORM `where` clause: applies `patch` to a matching
282
+ * document, inserting one (with the patch merged over the filter's implied
283
+ * fields) if none matches. Thin wrapper over `updateOne` with `upsert: true`.
284
+ */
285
+ async upsert(collectionName, where, patch, options) {
286
+ const update = isRawUpdate(patch) ? patch : { $set: patch };
287
+ return this.updateOne(collectionName, this.translateWhere(where), update, { ...options, upsert: true });
288
+ }
289
+ /**
290
+ * Grouped aggregation over `collectionName` using a native
291
+ * `$match`/`$group` pipeline (`count`/`sum`/`avg`/`min`/`max`), with an
292
+ * optional ORM `where` pre-filter. Returns one entry per group:
293
+ * `{ group, ...aggregates }` (`group` is `null` when no `groupBy` is given).
294
+ */
295
+ async aggregateGroup(collectionName, options = {}) {
296
+ const pipeline = [];
297
+ if (options.where)
298
+ pipeline.push({ $match: (0, where_1.translateWhereToMongo)(options.where) });
299
+ const groupFields = options.groupBy
300
+ ? Array.isArray(options.groupBy)
301
+ ? options.groupBy
302
+ : [options.groupBy]
303
+ : [];
304
+ const id = groupFields.length === 0
305
+ ? null
306
+ : groupFields.length === 1
307
+ ? `$${groupFields[0]}`
308
+ : Object.fromEntries(groupFields.map((f) => [f.replace(/\./g, '_'), `$${f}`]));
309
+ const group = { _id: id };
310
+ const hasOtherAgg = !!(options.sum || options.avg || options.min || options.max);
311
+ if (options.count || !hasOtherAgg)
312
+ group.count = { $sum: 1 };
313
+ for (const [out, src] of Object.entries(options.sum ?? {}))
314
+ group[out] = { $sum: `$${src}` };
315
+ for (const [out, src] of Object.entries(options.avg ?? {}))
316
+ group[out] = { $avg: `$${src}` };
317
+ for (const [out, src] of Object.entries(options.min ?? {}))
318
+ group[out] = { $min: `$${src}` };
319
+ for (const [out, src] of Object.entries(options.max ?? {}))
320
+ group[out] = { $max: `$${src}` };
321
+ pipeline.push({ $group: group });
322
+ pipeline.push({ $addFields: { group: '$_id' } });
323
+ pipeline.push({ $project: { _id: 0 } });
324
+ return this.aggregate(collectionName, pipeline);
325
+ }
326
+ /**
327
+ * Fetch documents from `collectionName` matching an ORM `where` clause, with
328
+ * one or more associations eager-loaded via native `$lookup` (the MongoDB
329
+ * equivalent of a SQL join / ORM `include`). Each {@link MongoInclude}
330
+ * attaches matched documents under its `as` key; `single: true` unwinds to a
331
+ * single document for to-one associations.
332
+ */
333
+ async findWithInclude(collectionName, where = {}, includes = [], options = {}) {
334
+ const pipeline = [{ $match: (0, where_1.translateWhereToMongo)(where) }];
335
+ const sort = (0, where_1.translateOrderToMongo)(options.order);
336
+ if (sort)
337
+ pipeline.push({ $sort: sort });
338
+ if (typeof options.offset === 'number')
339
+ pipeline.push({ $skip: options.offset });
340
+ if (typeof options.limit === 'number')
341
+ pipeline.push({ $limit: options.limit });
342
+ for (const inc of includes) {
343
+ pipeline.push({
344
+ $lookup: {
345
+ from: inc.from,
346
+ localField: inc.localField,
347
+ foreignField: inc.foreignField ?? '_id',
348
+ as: inc.as,
349
+ },
350
+ });
351
+ if (inc.single) {
352
+ pipeline.push({ $unwind: { path: `$${inc.as}`, preserveNullAndEmptyArrays: true } });
353
+ }
354
+ }
355
+ if (options.projection)
356
+ pipeline.push({ $project: options.projection });
357
+ return this.aggregate(collectionName, pipeline);
358
+ }
359
+ // ---------------------------------------------------------------------
231
360
  // Writes
232
361
  // ---------------------------------------------------------------------
233
362
  async insertOne(collectionName, doc, options) {
@@ -458,4 +587,14 @@ class MongoStore {
458
587
  }
459
588
  }
460
589
  exports.MongoStore = MongoStore;
590
+ /**
591
+ * Whether `patch` is already a raw MongoDB update document (uses `$`-prefixed
592
+ * operators like `$set`/`$inc`) rather than a plain field object that should
593
+ * be wrapped in `$set`.
594
+ */
595
+ function isRawUpdate(patch) {
596
+ return (patch !== null &&
597
+ typeof patch === 'object' &&
598
+ Object.keys(patch).some((k) => k.startsWith('$')));
599
+ }
461
600
  exports.default = MongoStore;
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Translate an ORM `where` object into a native MongoDB filter document.
3
+ * A bare `{ field: value }` maps to equality, an array value to `$in`, and
4
+ * `Op.and`/`Op.or`/`Op.not` to `$and`/`$or`/`$nor`.
5
+ */
6
+ export declare function translateWhereToMongo(where: Record<string | symbol, unknown> | undefined | null): Record<string, unknown>;
7
+ /** Build a MongoDB `sort` document from ORM ordering terms. */
8
+ export declare function translateOrderToMongo(order: Array<[string, 'ASC' | 'DESC'] | string> | [string, 'ASC' | 'DESC'] | string | undefined): Record<string, 1 | -1> | undefined;