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,243 @@
1
+ /**
2
+ * etcd store implementation.
3
+ *
4
+ * etcd is a distributed, strongly-consistent key-value store used for
5
+ * service discovery, distributed configuration and coordination primitives
6
+ * (leader election, distributed locking). It has no query language, no
7
+ * schema, and no `JOIN`/transaction-log concept in the SQL sense, so it does
8
+ * not fit the SQL-shaped `Dialect` interface used by the SQL dialects in
9
+ * this repo. Instead it implements the minimal `NoSqlStore` marker
10
+ * interface (`src/nosql/store.ts`) and exposes etcd's real primitives -
11
+ * key/value get/put/delete (including prefix range operations), watch
12
+ * (etcd's signature "subscribe to key/prefix changes" feature), leases
13
+ * (TTL-based key expiry with keep-alive), distributed locking, and
14
+ * compare-and-swap transactions - as a typed, promise-based API instead of
15
+ * forcing everything into a `query(sql)` shape.
16
+ *
17
+ * Uses the official `etcd3` driver.
18
+ */
19
+ import { Etcd3, Watcher, ComparatorBuilder, PutBuilder, DeleteBuilder, SingleRangeBuilder } from 'etcd3';
20
+ import { NoSqlStore } from '../store';
21
+ /**
22
+ * TLS credentials for talking to etcd, mirroring `etcd3`'s `IOptions['credentials']`.
23
+ */
24
+ export interface EtcdTlsOptions {
25
+ rootCertificate: Buffer;
26
+ privateKey?: Buffer;
27
+ certChain?: Buffer;
28
+ }
29
+ /** Username/password auth for etcd's built-in RBAC auth. */
30
+ export interface EtcdAuthOptions {
31
+ username: string;
32
+ password: string;
33
+ }
34
+ /**
35
+ * Connection options for `EtcdStore`. A thin, typed subset of `etcd3`'s
36
+ * `IOptions` covering the fields most callers need; anything else can be
37
+ * reached via `getClient()`.
38
+ */
39
+ export interface EtcdStoreOptions {
40
+ /** One or more etcd endpoints, e.g. `['http://127.0.0.1:2379']`. */
41
+ hosts: string[] | string;
42
+ /** TLS client credentials, if connecting over `https://`. */
43
+ credentials?: EtcdTlsOptions;
44
+ /** Username/password auth, if etcd's RBAC auth is enabled. */
45
+ auth?: EtcdAuthOptions;
46
+ /** Milliseconds to wait while connecting before timing out. Defaults to 30s (etcd3's default). */
47
+ dialTimeout?: number;
48
+ }
49
+ /** Options for `put()`. */
50
+ export interface PutOptions {
51
+ /** Associate the key with an existing lease (see `grantLease()`), so it expires when the lease does. */
52
+ lease?: string | number;
53
+ }
54
+ /** Options for `grantLease()`. */
55
+ export interface GrantLeaseOptions {
56
+ /**
57
+ * Whether the lease is kept alive automatically in the background.
58
+ * Defaults to `true`, matching `etcd3`. Set `false` to manage
59
+ * keep-alives yourself via `keepAliveOnce()`.
60
+ */
61
+ autoKeepAlive?: boolean;
62
+ }
63
+ /** A single watch change event, as delivered to `watch()`/`watchPrefix()` handlers. */
64
+ export interface EtcdWatchEvent {
65
+ type: 'put' | 'delete';
66
+ key: string;
67
+ /** The new value for `put` events; `null` for `delete` events. */
68
+ value: string | null;
69
+ /** The value before this change, if `withPreviousKV` was requested (it is, by default). */
70
+ previousValue: string | null;
71
+ }
72
+ /** A handle returned by `watch()`/`watchPrefix()`. Call `cancel()` to stop watching. */
73
+ export interface EtcdWatchHandle {
74
+ /** The underlying `etcd3` `Watcher`, for anything not wrapped here (e.g. `disconnected`/`error` events). */
75
+ readonly watcher: Watcher;
76
+ cancel(): Promise<void>;
77
+ }
78
+ /** A handle returned by `acquireLock()`. Call `release()` to free the lock. */
79
+ export interface EtcdLockHandle {
80
+ /** The lease ID backing this lock, or `null` if the lock hasn't been acquired. */
81
+ leaseId(): Promise<string | null>;
82
+ release(): Promise<void>;
83
+ }
84
+ /**
85
+ * `EtcdStore` wraps an `etcd3` client and exposes etcd's real primitives:
86
+ * key/value get/put/delete (single-key and prefix-range), watch, leases,
87
+ * distributed locking, and compare-and-swap transactions.
88
+ */
89
+ export declare class EtcdStore implements NoSqlStore {
90
+ readonly name = "etcd";
91
+ readonly library = "etcd3";
92
+ private readonly options;
93
+ private client;
94
+ private connected;
95
+ /** Leases granted through `grantLease()`, keyed by lease ID, so later calls can look them back up. */
96
+ private readonly leases;
97
+ constructor(options: EtcdStoreOptions);
98
+ private toClientOptions;
99
+ connect(): Promise<void>;
100
+ disconnect(): Promise<void>;
101
+ isConnected(): boolean;
102
+ /** Returns the underlying `etcd3` client for anything not wrapped here. */
103
+ getClient(): Etcd3;
104
+ private requireClient;
105
+ private exec;
106
+ putJSON<T>(key: string, value: T, options?: PutOptions): Promise<void>;
107
+ getJSON<T>(key: string): Promise<T | null>;
108
+ get(key: string): Promise<string | null>;
109
+ getBuffer(key: string): Promise<Buffer | null>;
110
+ put(key: string, value: string | number | Buffer, options?: PutOptions): Promise<void>;
111
+ /** Deletes a single key. Returns the number of keys actually deleted (`0` or `1`). */
112
+ delete(key: string): Promise<number>;
113
+ exists(key: string): Promise<boolean>;
114
+ /** All key/value pairs whose key starts with `prefix`. */
115
+ getPrefix(prefix: string): Promise<Record<string, string>>;
116
+ /** All keys (without values) starting with `prefix`. */
117
+ getKeysWithPrefix(prefix: string): Promise<string[]>;
118
+ /** Number of keys starting with `prefix`, without transferring their values. */
119
+ countPrefix(prefix: string): Promise<number>;
120
+ /** Deletes every key starting with `prefix`. Returns the number of keys deleted. */
121
+ deletePrefix(prefix: string): Promise<number>;
122
+ private attachWatchHandler;
123
+ /**
124
+ * Watch a single key for changes, invoking `handler` for every `put`/
125
+ * `delete` on that key. Returns a handle whose `cancel()` stops the
126
+ * underlying watch stream.
127
+ */
128
+ watch(key: string, handler: (event: EtcdWatchEvent) => void): Promise<EtcdWatchHandle>;
129
+ /**
130
+ * Watch every key starting with `prefix` for changes, invoking `handler`
131
+ * for every `put`/`delete` on any matching key. Returns a handle whose
132
+ * `cancel()` stops the underlying watch stream.
133
+ */
134
+ watchPrefix(prefix: string, handler: (event: EtcdWatchEvent) => void): Promise<EtcdWatchHandle>;
135
+ /**
136
+ * Grants a new lease with the given TTL (in seconds). By default the
137
+ * lease is kept alive automatically in the background (`autoKeepAlive`);
138
+ * pass `{ autoKeepAlive: false }` to manage keep-alives manually via
139
+ * `keepAliveOnce()`. Returns the lease ID, which can be passed to
140
+ * `put(key, value, { lease })` to associate keys with the lease so they
141
+ * expire automatically when it does.
142
+ */
143
+ grantLease(ttlSeconds: number, options?: GrantLeaseOptions): Promise<string>;
144
+ /** Puts `key`/`value` under a previously granted lease, so it expires when the lease does. */
145
+ putWithLease(key: string, value: string | number | Buffer, leaseId: string): Promise<void>;
146
+ /** Fires a single, immediate keep-alive for a lease, resetting its TTL countdown. */
147
+ keepAliveOnce(leaseId: string): Promise<void>;
148
+ /** Revokes a lease immediately, evicting every key still attached to it. */
149
+ revokeLease(leaseId: string): Promise<void>;
150
+ /**
151
+ * Stops sending keep-alives for a lease, letting it expire naturally when
152
+ * its TTL elapses, instead of revoking it immediately. Use `revokeLease()`
153
+ * to evict its keys right away.
154
+ */
155
+ releaseLease(leaseId: string): void;
156
+ /**
157
+ * Registers a handler that fires when etcd indicates a lease has been
158
+ * lost (TTL expired without a successful keep-alive, or it was revoked
159
+ * server-side). Not fired when `revokeLease()`/`releaseLease()` is called
160
+ * locally and succeeds normally.
161
+ */
162
+ onLeaseLost(leaseId: string, handler: (err: Error) => void): void;
163
+ private requireLease;
164
+ /**
165
+ * Acquires a distributed lock on `key`, blocking (queueing behind the
166
+ * current holder, in acquisition order) until it's free rather than
167
+ * rejecting immediately. Under the hood this is a lease on the key
168
+ * that's revoked on `release()`, or timed out by etcd if the holder
169
+ * dies - `ttlSeconds` controls that lease's TTL (etcd3 defaults to 30s).
170
+ *
171
+ * Note: `etcd3`'s own `Lock#acquire()` is a single compare-and-swap
172
+ * attempt - it *rejects immediately* with `EtcdLockFailedError` if the
173
+ * key already exists, rather than waiting, despite this store's docs
174
+ * (and the in-repo test mock) describing blocking/queueing semantics.
175
+ * To actually deliver that documented contract against a real etcd
176
+ * server, `acquireLockOrThrow()` below retries: on
177
+ * `EtcdLockFailedError` it watches the key until it's deleted (i.e. the
178
+ * current holder released or its lease expired), then retries the CAS.
179
+ * Multiple waiters can wake and race the retry simultaneously; that's
180
+ * fine because the retry is itself a CAS - at most one of them wins
181
+ * each round, and the rest go back to waiting.
182
+ */
183
+ acquireLock(key: string, ttlSeconds?: number): Promise<EtcdLockHandle>;
184
+ /**
185
+ * Wraps an acquired `etcd3` `Lock` in an `EtcdLockHandle`. `etcd3`'s own
186
+ * `Lock#leaseId()` keeps returning the (now-revoked) lease ID even after
187
+ * `release()` - verified against a real etcd server - which contradicts
188
+ * this handle's documented `null`-after-release contract, so track
189
+ * "released" locally instead of trusting the underlying lock for that.
190
+ */
191
+ private toLockHandle;
192
+ /**
193
+ * Acquires a distributed lock on `key`, runs `fn`, and releases the lock
194
+ * once `fn`'s result settles (whether it resolves or rejects). This is
195
+ * the recommended way to use locks - it can't leak a held lock the way
196
+ * manual `acquireLock()`/`release()` pairing can if `fn` throws.
197
+ */
198
+ withLock<T>(key: string, fn: () => T | Promise<T>, ttlSeconds?: number): Promise<T>;
199
+ /**
200
+ * Repeatedly attempts `client.lock(key).acquire()`, waiting for the key
201
+ * to be deleted (via a watch) and retrying whenever it fails with
202
+ * `EtcdLockFailedError`, so the returned promise doesn't settle until
203
+ * the lock is actually acquired (see `acquireLock()` above for why this
204
+ * is necessary against a real etcd server).
205
+ */
206
+ private acquireLockOrThrow;
207
+ /** Resolves once `key` no longer exists (already gone, or deleted while we watch it). */
208
+ private waitForKeyDeletion;
209
+ /**
210
+ * Starts a raw etcd transaction: `if (key.<column> <cmp> value) { ... }`.
211
+ * Returns etcd3's `ComparatorBuilder` directly so callers get its full
212
+ * `.and()/.then()/.else()/.commit()` chain; combine with `putOp()`/
213
+ * `deleteOp()`/`getOp()` below to build the `then`/`else` clauses.
214
+ *
215
+ * ```typescript
216
+ * const result = await store
217
+ * .ifCompare('config-version', 'Value', '==', '1')
218
+ * .then(store.putOp('config-version', '2'))
219
+ * .else(store.getOp('config-version'))
220
+ * .commit();
221
+ * ```
222
+ */
223
+ ifCompare(key: string, column: 'Version' | 'Create' | 'Mod' | 'Value' | 'Lease', cmp: '==' | '===' | '>' | '<' | '!=' | '!==', value: string | Buffer | number): ComparatorBuilder;
224
+ /** A `put` operation builder, for use as a `.then()`/`.else()` clause in `ifCompare()`. */
225
+ putOp(key: string, value: string | number | Buffer): PutBuilder;
226
+ /** A `delete` operation builder, for use as a `.then()`/`.else()` clause in `ifCompare()`. */
227
+ deleteOp(key: string): DeleteBuilder;
228
+ /** A `get` operation builder, for use as a `.then()`/`.else()` clause in `ifCompare()`. */
229
+ getOp(key: string): SingleRangeBuilder;
230
+ /**
231
+ * Convenience compare-and-swap: atomically sets `key` to `newValue` only
232
+ * if its current value equals `expectedValue` (or, if `expectedValue` is
233
+ * `null`, only if the key does not currently exist). Returns whether the
234
+ * swap happened.
235
+ */
236
+ compareAndSwap(key: string, expectedValue: string | null, newValue: string | number | Buffer): Promise<boolean>;
237
+ /**
238
+ * Atomically deletes `key` only if its current value equals
239
+ * `expectedValue`. Returns whether the delete happened.
240
+ */
241
+ compareAndDelete(key: string, expectedValue: string): Promise<boolean>;
242
+ }
243
+ export default EtcdStore;
@@ -0,0 +1,89 @@
1
+ import type { NoSqlStore } from '../store';
2
+ /** A message accepted by `publish()`: raw string/Buffer or a JSON-serializable value. */
3
+ export type EventHubsMessage = string | Buffer | Record<string, unknown> | unknown[];
4
+ /** Minimal structural view of an `EventHubProducerClient`. */
5
+ export interface EventHubProducerLike {
6
+ sendBatch(events: unknown, options?: unknown): Promise<unknown>;
7
+ close?(): Promise<void>;
8
+ }
9
+ /** Minimal structural view of an `EventHubConsumerClient`. */
10
+ export interface EventHubConsumerLike {
11
+ subscribe(handlers: unknown, options?: unknown): {
12
+ close(): Promise<void>;
13
+ };
14
+ close?(): Promise<void>;
15
+ }
16
+ /**
17
+ * Minimal structural view of the `@azure/event-hubs` module (its two client
18
+ * constructors). Tests inject a mock of this shape via `options.client`.
19
+ */
20
+ export interface EventHubsModuleLike {
21
+ EventHubProducerClient: new (...args: any[]) => EventHubProducerLike;
22
+ EventHubConsumerClient: new (...args: any[]) => EventHubConsumerLike;
23
+ }
24
+ /** Connection options for `EventHubsStore`. */
25
+ export interface EventHubsStoreOptions {
26
+ /** Event Hubs namespace connection string. */
27
+ connectionString?: string;
28
+ /** Default event hub (entity) name used when `publish`/`subscribe` omit one. */
29
+ eventHubName?: string;
30
+ /** Consumer group used by `subscribe()`. Defaults to '$Default'. */
31
+ consumerGroup?: string;
32
+ /**
33
+ * A pre-built `@azure/event-hubs` module (or a mock exposing the two client
34
+ * constructors). When provided, `connect()` uses it directly and does NOT
35
+ * require the driver — this is how tests inject mocks.
36
+ */
37
+ client?: EventHubsModuleLike;
38
+ }
39
+ /** Options for `subscribe()`. */
40
+ export interface EventHubsSubscribeOptions {
41
+ /** Consumer group override (defaults to the store's `consumerGroup`). */
42
+ consumerGroup?: string;
43
+ /** Start reading from the earliest available event rather than the latest. */
44
+ startFromEarliest?: boolean;
45
+ }
46
+ /** A handle returned by `subscribe()`; call `stop()` to end the subscription. */
47
+ export interface EventHubsSubscription {
48
+ stop(): Promise<void>;
49
+ }
50
+ /**
51
+ * `EventHubsStore` wraps `@azure/event-hubs` producer/consumer clients and
52
+ * exposes event publishing and consumer subscriptions.
53
+ */
54
+ export declare class EventHubsStore implements NoSqlStore {
55
+ readonly name = "eventhubs";
56
+ readonly library = "@azure/event-hubs";
57
+ private readonly options;
58
+ private azure;
59
+ private producer;
60
+ /** Producers cached by event hub name (the default hub plus any others used). */
61
+ private readonly producers;
62
+ /** Active consumer subscriptions, tracked so `disconnect()` can close them. */
63
+ private readonly consumers;
64
+ private connected;
65
+ constructor(options?: EventHubsStoreOptions);
66
+ connect(): Promise<void>;
67
+ disconnect(): Promise<void>;
68
+ isConnected(): boolean;
69
+ /** Returns the underlying default `EventHubProducerClient` for anything not wrapped here. */
70
+ getClient(): EventHubProducerLike;
71
+ private requireModule;
72
+ /** Resolve (and cache) a producer for a given event hub name. */
73
+ private producerFor;
74
+ private wrapError;
75
+ /**
76
+ * Send one `message` to `eventHubName` (or the store's default hub) as a
77
+ * single-event batch via `EventHubProducerClient.sendBatch`. The message is
78
+ * encoded per the module's rules (string/Buffer as-is, else JSON string).
79
+ */
80
+ publish(eventHubName: string, message: EventHubsMessage): Promise<void>;
81
+ /**
82
+ * Subscribe a new `EventHubConsumerClient` to `eventHubName`, invoking
83
+ * `handler` once per received event. Returns a subscription whose `stop()`
84
+ * closes both the underlying subscription and consumer client; the
85
+ * subscription is tracked so `disconnect()` closes it too.
86
+ */
87
+ subscribe(eventHubName: string, handler: (event: any) => void | Promise<void>, options?: EventHubsSubscribeOptions): Promise<EventHubsSubscription>;
88
+ }
89
+ export default EventHubsStore;
@@ -0,0 +1,102 @@
1
+ import type { NoSqlStore } from '../store';
2
+ /** A message accepted by `publish()`. */
3
+ export type EventStoreMessage = string | Buffer | Record<string, unknown> | unknown[];
4
+ /** Minimal structural view of an `EventStoreDBClient`. */
5
+ export interface EventStoreClientLike {
6
+ appendToStream(stream: string, events: unknown, options?: unknown): Promise<any>;
7
+ subscribeToStream(stream: string, options?: unknown): AsyncIterable<any> & {
8
+ unsubscribe?(): void;
9
+ };
10
+ readStream(stream: string, options?: unknown): AsyncIterable<any>;
11
+ dispose?(): Promise<void>;
12
+ }
13
+ /** Connection options for `EventStoreStore`. */
14
+ export interface EventStoreStoreOptions {
15
+ /**
16
+ * EventStoreDB connection string, e.g.
17
+ * 'esdb://localhost:2113?tls=false'. Used to build the client via
18
+ * `EventStoreDBClient.connectionString(...)`.
19
+ */
20
+ connectionString?: string;
21
+ /**
22
+ * A pre-built `EventStoreDBClient` (or a mock exposing the methods above).
23
+ * When provided, `connect()` uses it directly and does NOT require the driver
24
+ * — this is how tests inject a mock client.
25
+ */
26
+ client?: EventStoreClientLike;
27
+ }
28
+ /** Options for `publish()`. */
29
+ export interface AppendOptions {
30
+ /** Event type recorded on the event. Defaults to 'message'. */
31
+ type?: string;
32
+ /** Optional metadata object attached to the event. */
33
+ metadata?: Record<string, unknown>;
34
+ /** Optional explicit event id (UUID). */
35
+ id?: string;
36
+ /** Expected stream revision / state for optimistic concurrency. */
37
+ expectedRevision?: unknown;
38
+ }
39
+ /** Options for `subscribe()`. */
40
+ export interface EventStoreSubscribeOptions {
41
+ /** Start position: 'start', 'end', or a specific revision. Defaults to 'end'. */
42
+ fromRevision?: 'start' | 'end' | bigint;
43
+ /** Resolve link events to the events they point at. */
44
+ resolveLinkTos?: boolean;
45
+ }
46
+ /** A handle returned by `subscribe()`; call `stop()` to end the subscription. */
47
+ export interface EventStoreSubscription {
48
+ stop(): void;
49
+ }
50
+ /**
51
+ * `EventStoreStore` wraps an `@eventstore/db-client` `EventStoreDBClient` and
52
+ * exposes appending events, catch-up subscriptions, and stream reads.
53
+ */
54
+ export declare class EventStoreStore implements NoSqlStore {
55
+ readonly name = "eventstore";
56
+ readonly library = "@eventstore/db-client";
57
+ private readonly options;
58
+ private client;
59
+ private esdb;
60
+ private connected;
61
+ /** Active subscriptions, tracked so `disconnect()` can end them. */
62
+ private readonly subscriptions;
63
+ constructor(options?: EventStoreStoreOptions);
64
+ connect(): Promise<void>;
65
+ private tryLoadSdk;
66
+ disconnect(): Promise<void>;
67
+ isConnected(): boolean;
68
+ /** Returns the underlying `EventStoreDBClient` for anything not wrapped here. */
69
+ getClient(): EventStoreClientLike;
70
+ private requireClient;
71
+ private wrapError;
72
+ /**
73
+ * Append one event carrying `message` to `stream` via `appendToStream`. The
74
+ * message is turned into a JSON event (`jsonEvent`) with `options.type`
75
+ * (default 'message'). Returns the driver's append result (next expected
76
+ * revision, etc.).
77
+ */
78
+ publish(stream: string, message: EventStoreMessage, options?: AppendOptions): Promise<any>;
79
+ /**
80
+ * Streams are created implicitly by the first append in EventStoreDB, so this
81
+ * is a documented no-op that resolves without contacting the server. Provided
82
+ * to satisfy the common store surface (alias `createTopic`).
83
+ */
84
+ createStream(_name: string): Promise<void>;
85
+ /** Alias for `createStream()`, matching the common store surface. */
86
+ createTopic(name: string): Promise<void>;
87
+ /**
88
+ * Read events from `stream` into an array by draining the driver's async
89
+ * iterable. Options (`fromRevision`, `maxCount`, `direction`, ...) are passed
90
+ * straight through.
91
+ */
92
+ readStream(stream: string, options?: unknown): Promise<any[]>;
93
+ /**
94
+ * Subscribe to `stream` with a catch-up subscription (`subscribeToStream`),
95
+ * invoking `handler` once per resolved event. Returns a subscription whose
96
+ * `stop()` ends it; it is tracked so `disconnect()` ends it too. The
97
+ * consuming loop runs detached (not awaited); this method resolves once the
98
+ * subscription is opened.
99
+ */
100
+ subscribe(stream: string, handler: (event: any) => void | Promise<void>, options?: EventStoreSubscribeOptions): Promise<EventStoreSubscription>;
101
+ }
102
+ export default EventStoreStore;
@@ -0,0 +1,141 @@
1
+ /**
2
+ * FaunaDB store implementation for the Prorm NoSQL layer.
3
+ *
4
+ * Fauna is a multi-model, distributed database (document, relational, graph)
5
+ * driven by FQL - a functional query language expressed as composed function
6
+ * calls rather than SQL strings. It does not fit the SQL-shaped `Dialect`
7
+ * interface, so this class implements the minimal `NoSqlStore` marker
8
+ * interface for connection lifecycle and otherwise exposes Fauna's real
9
+ * document CRUD (built from FQL expressions) plus a raw FQL `query` escape
10
+ * hatch.
11
+ *
12
+ * Uses the official `faunadb` driver. That driver is an optional peer
13
+ * dependency and is loaded lazily inside `connect()` so importing this module
14
+ * never requires it to be installed. Tests inject a pre-built mock `client`
15
+ * (and FQL builder `q`) via options, which bypasses the lazy `require`
16
+ * entirely - no real driver and no network are needed.
17
+ */
18
+ import { NoSqlStore } from '../store';
19
+ /** A native `faunadb.Client` handle, left untyped because the driver is an
20
+ * optional dependency not imported here. */
21
+ type FaunaClient = any;
22
+ /** The FQL query builder (`faunadb.query`). */
23
+ type FaunaQuery = any;
24
+ /**
25
+ * Connection options for `FaunaDbStore`.
26
+ *
27
+ * `secret` authenticates against a Fauna database. When a pre-built `client`
28
+ * is supplied (e.g. in tests), `connect()` uses it directly and skips loading
29
+ * the `faunadb` driver; the FQL builder `q` may likewise be injected so tests
30
+ * need not require the driver at all.
31
+ */
32
+ export interface FaunaDbStoreOptions {
33
+ /** Fauna database secret / access key. */
34
+ secret?: string;
35
+ /** Fauna endpoint domain, e.g. `db.fauna.com`. */
36
+ domain?: string;
37
+ /** A pre-built `faunadb.Client` to use instead of the driver. */
38
+ client?: FaunaClient;
39
+ /** A pre-built FQL builder (`faunadb.query`) to use instead of the driver. */
40
+ q?: FaunaQuery;
41
+ }
42
+ /** Sort direction accepted by {@link FaunaDbStore.findAll}'s `order`. */
43
+ export type FaunaOrderDirection = 'ASC' | 'DESC' | 'asc' | 'desc';
44
+ /** Options for {@link FaunaDbStore.findAll}/{@link FaunaDbStore.findOne}. */
45
+ export interface FaunaFindOptions {
46
+ /** ORM `where` clause (plain equality and/or `Op`-keyed conditions). */
47
+ where?: Record<string, any>;
48
+ /** Ordering, e.g. `[['age', 'DESC'], ['name', 'ASC']]` (applied client-side). */
49
+ order?: Array<[string, FaunaOrderDirection]>;
50
+ /** Maximum documents to return (applied client-side). */
51
+ limit?: number;
52
+ /** Documents to skip (applied client-side). */
53
+ offset?: number;
54
+ /**
55
+ * FQL page size fetched from Fauna before filtering. Defaults to 100000
56
+ * (Fauna's maximum). For collections larger than a single page, supply a
57
+ * covering index and use the raw {@link FaunaDbStore.query} escape hatch.
58
+ */
59
+ pageSize?: number;
60
+ }
61
+ export declare class FaunaDbStore implements NoSqlStore {
62
+ readonly name = "faunadb";
63
+ readonly library = "faunadb";
64
+ private readonly options;
65
+ private client;
66
+ private q;
67
+ private connected;
68
+ constructor(options?: FaunaDbStoreOptions);
69
+ connect(): Promise<void>;
70
+ private tryRequireQuery;
71
+ disconnect(): Promise<void>;
72
+ isConnected(): boolean;
73
+ getClient(): FaunaClient;
74
+ private requireClient;
75
+ private requireQuery;
76
+ /** Create a document in `collection`; returns the new document's id. */
77
+ insert(collection: string, doc: Record<string, unknown>): Promise<unknown>;
78
+ /** Fetch a document by id, returning its `data`. */
79
+ get(collection: string, id: string): Promise<unknown>;
80
+ /** Merge `patch` into a document's `data`, returning the updated data. */
81
+ update(collection: string, id: string, patch: Record<string, unknown>): Promise<unknown>;
82
+ /** Delete a document by id. */
83
+ delete(collection: string, id: string): Promise<unknown>;
84
+ /**
85
+ * Run an FQL query. When `expr` is provided it is executed directly;
86
+ * otherwise all documents in `collection` are paginated and dereferenced.
87
+ * Returns the query's `data` array.
88
+ */
89
+ query(collection: string, expr?: unknown): Promise<unknown[]>;
90
+ /**
91
+ * Fetch every document in `collection` matching the ORM `where` clause. The
92
+ * `where` is compiled to an FQL predicate applied via `Filter` over the
93
+ * collection's documents; `order`/`limit`/`offset` are applied client-side.
94
+ * Each result is normalized to its `data` fields plus an `id`.
95
+ *
96
+ * This scans the collection (bounded by `pageSize`). For large collections,
97
+ * define a Fauna index and use the raw {@link query} escape hatch for an
98
+ * index-driven read.
99
+ */
100
+ findAll<T = Record<string, unknown>>(collection: string, options?: FaunaFindOptions): Promise<T[]>;
101
+ /** Fetch the first document matching `where` (client-side `limit 1`), or `null`. */
102
+ findOne<T = Record<string, unknown>>(collection: string, options?: FaunaFindOptions): Promise<T | null>;
103
+ /** Count documents in `collection` matching `where`. */
104
+ count(collection: string, where?: Record<string, any>): Promise<number>;
105
+ /** Insert `data` and return the new document's id. Alias of {@link insert}. */
106
+ create(collection: string, data: Record<string, unknown>): Promise<unknown>;
107
+ /**
108
+ * Insert many documents atomically in a single FQL `Map`/`Create`, returning
109
+ * the new document ids in order.
110
+ */
111
+ bulkCreate(collection: string, docs: Array<Record<string, unknown>>): Promise<unknown[]>;
112
+ /**
113
+ * Update every document matching `where`, merging `values` into each match's
114
+ * `data`, all in a single atomic FQL expression. Returns the number of
115
+ * documents updated.
116
+ */
117
+ updateMany(collection: string, values: Record<string, unknown>, where?: Record<string, any>): Promise<number>;
118
+ /**
119
+ * Delete every document matching `where` in a single atomic FQL expression.
120
+ * Returns the number of documents deleted.
121
+ */
122
+ destroy(collection: string, where?: Record<string, any>): Promise<number>;
123
+ /**
124
+ * Insert-or-update: if a document matching `where` exists, merge `data` into
125
+ * the first match; otherwise create a new document seeded with the `where`
126
+ * equality keys plus `data`. Returns `{ created }`.
127
+ */
128
+ upsert(collection: string, data: Record<string, unknown>, where: Record<string, any>): Promise<{
129
+ created: boolean;
130
+ }>;
131
+ /**
132
+ * Run several FQL write expressions atomically in a single transaction via
133
+ * FQL's `Do` (Fauna evaluates a single query as one serializable
134
+ * transaction). Pass expressions built with the query builder from
135
+ * {@link getQuery}. Returns the value of the last expression.
136
+ */
137
+ transaction(expressions: unknown[]): Promise<unknown>;
138
+ /** Exposes the FQL query builder (`faunadb.query`) for building raw expressions. */
139
+ getQuery(): FaunaQuery;
140
+ }
141
+ export default FaunaDbStore;