ts-prorm-orm 1.1.0 → 1.2.1

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 +95 -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 +713 -0
  239. package/dist/index.js +36 -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
@@ -27,7 +27,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
27
27
  exports.QldbStore = void 0;
28
28
  const errors_1 = require("../../errors");
29
29
  /** A validated PartiQL identifier - QLDB cannot parameterize table names. */
30
- const IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_]*$/;
30
+ const IDENTIFIER = /^[A-Za-z_][A-Za-z0-9_.]*$/;
31
31
  function assertIdentifier(name) {
32
32
  if (!IDENTIFIER.test(name)) {
33
33
  throw new errors_1.DatabaseError(`Invalid QLDB table name: ${JSON.stringify(name)}`, {
@@ -36,6 +36,171 @@ function assertIdentifier(name) {
36
36
  }
37
37
  return name;
38
38
  }
39
+ /** Parse an ORM `where` object (string + `Op` symbol keys) into a tree. */
40
+ function parseWhere(where) {
41
+ if (!where || typeof where !== 'object')
42
+ return null;
43
+ const nodes = [];
44
+ for (const sym of Object.getOwnPropertySymbols(where)) {
45
+ const name = sym.description;
46
+ const val = where[sym];
47
+ if (name === 'and' && Array.isArray(val)) {
48
+ nodes.push({ kind: 'and', nodes: val.map(parseWhere).filter(Boolean) });
49
+ }
50
+ else if (name === 'or' && Array.isArray(val)) {
51
+ nodes.push({ kind: 'or', nodes: val.map(parseWhere).filter(Boolean) });
52
+ }
53
+ else if (name === 'not') {
54
+ const inner = parseWhere(val);
55
+ if (inner)
56
+ nodes.push({ kind: 'not', node: inner });
57
+ }
58
+ }
59
+ for (const field of Object.keys(where)) {
60
+ nodes.push(parseFieldCondition(field, where[field]));
61
+ }
62
+ const flat = nodes.filter(Boolean);
63
+ if (flat.length === 0)
64
+ return null;
65
+ return flat.length === 1 ? flat[0] : { kind: 'and', nodes: flat };
66
+ }
67
+ /** Parse the value for a single field into a comparison (or AND of them). */
68
+ function parseFieldCondition(field, value) {
69
+ if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
70
+ const symbols = Object.getOwnPropertySymbols(value);
71
+ if (symbols.length > 0) {
72
+ const cmps = symbols.map((sym) => ({
73
+ kind: 'cmp',
74
+ field,
75
+ op: sym.description ?? 'eq',
76
+ value: value[sym],
77
+ }));
78
+ return cmps.length === 1 ? cmps[0] : { kind: 'and', nodes: cmps };
79
+ }
80
+ }
81
+ return { kind: 'cmp', field, op: value === null ? 'isNull' : 'eq', value };
82
+ }
83
+ /** Render a normalized tree to a parameterized PartiQL predicate. */
84
+ function compilePartiqlWhere(node) {
85
+ if (!node)
86
+ return { sql: '', params: [] };
87
+ const params = [];
88
+ const render = (n) => {
89
+ switch (n.kind) {
90
+ case 'and':
91
+ return n.nodes.length ? `(${n.nodes.map(render).join(' AND ')})` : 'true';
92
+ case 'or':
93
+ return n.nodes.length ? `(${n.nodes.map(render).join(' OR ')})` : 'false';
94
+ case 'not':
95
+ return `NOT (${render(n.node)})`;
96
+ case 'cmp':
97
+ return renderCmp(n.field, n.op, n.value, params);
98
+ }
99
+ };
100
+ return { sql: render(node), params };
101
+ }
102
+ function renderCmp(field, op, value, params) {
103
+ const col = assertIdentifier(field);
104
+ const p = (v) => {
105
+ params.push(v);
106
+ return '?';
107
+ };
108
+ switch (op) {
109
+ case 'eq':
110
+ return value === null ? `${col} IS NULL` : `${col} = ${p(value)}`;
111
+ case 'ne':
112
+ return value === null ? `${col} IS NOT NULL` : `${col} <> ${p(value)}`;
113
+ case 'gt':
114
+ return `${col} > ${p(value)}`;
115
+ case 'gte':
116
+ return `${col} >= ${p(value)}`;
117
+ case 'lt':
118
+ return `${col} < ${p(value)}`;
119
+ case 'lte':
120
+ return `${col} <= ${p(value)}`;
121
+ case 'in': {
122
+ const arr = value ?? [];
123
+ if (arr.length === 0)
124
+ return 'false';
125
+ return `${col} IN (${arr.map(p).join(', ')})`;
126
+ }
127
+ case 'notIn': {
128
+ const arr = value ?? [];
129
+ if (arr.length === 0)
130
+ return 'true';
131
+ return `${col} NOT IN (${arr.map(p).join(', ')})`;
132
+ }
133
+ case 'between': {
134
+ const [a, b] = value;
135
+ return `${col} BETWEEN ${p(a)} AND ${p(b)}`;
136
+ }
137
+ case 'notBetween': {
138
+ const [a, b] = value;
139
+ return `${col} NOT BETWEEN ${p(a)} AND ${p(b)}`;
140
+ }
141
+ case 'like':
142
+ return `${col} LIKE ${p(value)}`;
143
+ case 'notLike':
144
+ return `${col} NOT LIKE ${p(value)}`;
145
+ case 'startsWith':
146
+ return `${col} LIKE ${p(`${String(value)}%`)}`;
147
+ case 'endsWith':
148
+ return `${col} LIKE ${p(`%${String(value)}`)}`;
149
+ case 'substring':
150
+ return `${col} LIKE ${p(`%${String(value)}%`)}`;
151
+ case 'isNull':
152
+ return `${col} IS NULL`;
153
+ case 'isNotNull':
154
+ return `${col} IS NOT NULL`;
155
+ default:
156
+ throw new errors_1.DatabaseError(`QLDB ORM layer does not support operator "${op}" for field "${field}"`, { code: 'QUERY_ERROR' });
157
+ }
158
+ }
159
+ /**
160
+ * Pull the plain-equality (`field: value`) pairs out of a `where` clause so
161
+ * an upsert's INSERT branch can seed the new document with the keys it was
162
+ * matched on. Operator-keyed and logical (`Op.and`/`Op.or`) conditions are
163
+ * skipped since they don't correspond to a single concrete value.
164
+ */
165
+ function extractEqualityKeys(where) {
166
+ const out = {};
167
+ for (const field of Object.keys(where)) {
168
+ const val = where[field];
169
+ if (val === null || typeof val !== 'object' || Array.isArray(val)) {
170
+ out[field] = val;
171
+ }
172
+ }
173
+ return out;
174
+ }
175
+ /** Apply ORM order/limit/offset to an already-fetched row list, client-side. */
176
+ function applyClientSideShape(rows, options) {
177
+ let out = rows;
178
+ if (options.order && options.order.length > 0) {
179
+ const order = options.order;
180
+ out = [...out].sort((a, b) => {
181
+ for (const [field, dir] of order) {
182
+ const av = a?.[field];
183
+ const bv = b?.[field];
184
+ if (av === bv)
185
+ continue;
186
+ const cmp = av === undefined || av === null
187
+ ? -1
188
+ : bv === undefined || bv === null
189
+ ? 1
190
+ : av < bv
191
+ ? -1
192
+ : 1;
193
+ return dir.toUpperCase() === 'DESC' ? -cmp : cmp;
194
+ }
195
+ return 0;
196
+ });
197
+ }
198
+ if (typeof options.offset === 'number')
199
+ out = out.slice(options.offset);
200
+ if (typeof options.limit === 'number')
201
+ out = out.slice(0, options.limit);
202
+ return out;
203
+ }
39
204
  /**
40
205
  * `QldbStore` wraps an `amazon-qldb-driver-nodejs` driver behind the shared
41
206
  * ledger surface. `append` inserts a new document (returning its QLDB
@@ -171,6 +336,142 @@ class QldbStore {
171
336
  async query(statement, params = []) {
172
337
  return this.execute(statement, params, 'query');
173
338
  }
339
+ // ---------------------------------------------------------------------
340
+ // ORM model surface (no hand-written PartiQL needed)
341
+ // ---------------------------------------------------------------------
342
+ /**
343
+ * Fetch every document in `table` matching the ORM `where` clause. The
344
+ * `where` clause is compiled to a parameterized PartiQL `WHERE`; `order`,
345
+ * `limit` and `offset` are applied client-side because QLDB's PartiQL
346
+ * dialect supports none of them.
347
+ */
348
+ async findAll(table, options = {}) {
349
+ const tbl = assertIdentifier(table);
350
+ const { sql, params } = compilePartiqlWhere(parseWhere(options.where));
351
+ const projection = options.attributes && options.attributes.length > 0
352
+ ? options.attributes.map(assertIdentifier).join(', ')
353
+ : '*';
354
+ const statement = `SELECT ${projection} FROM ${tbl}${sql ? ` WHERE ${sql}` : ''}`;
355
+ const rows = (await this.execute(statement, params, 'findAll'));
356
+ return applyClientSideShape(rows, options);
357
+ }
358
+ /** Fetch the first document matching `where` (client-side `limit 1`), or `null`. */
359
+ async findOne(table, options = {}) {
360
+ const rows = await this.findAll(table, { ...options, limit: 1 });
361
+ return rows[0] ?? null;
362
+ }
363
+ /** Count documents in `table` matching `where`. */
364
+ async count(table, where) {
365
+ const rows = await this.findAll(table, { where });
366
+ return rows.length;
367
+ }
368
+ /**
369
+ * Insert `data` as a new document, returning its QLDB document id. Alias
370
+ * of {@link append} using ORM naming.
371
+ */
372
+ async create(table, data) {
373
+ return this.append(table, data);
374
+ }
375
+ /**
376
+ * Insert many documents in a single managed transaction, returning the new
377
+ * document ids in order.
378
+ */
379
+ async bulkCreate(table, rows) {
380
+ if (rows.length === 0)
381
+ return [];
382
+ const tbl = assertIdentifier(table);
383
+ return this.transaction(async (txn) => {
384
+ const ids = [];
385
+ for (const row of rows) {
386
+ const result = await txn.execute(`INSERT INTO ${tbl} ?`, row);
387
+ const first = result.getResultList()[0];
388
+ ids.push(first?.documentId ?? '');
389
+ }
390
+ return ids;
391
+ });
392
+ }
393
+ /**
394
+ * Update every document matching `where`, SETting each key in `values`.
395
+ * Returns the number of documents QLDB reported as modified.
396
+ */
397
+ async update(table, values, where) {
398
+ const tbl = assertIdentifier(table);
399
+ const entries = Object.entries(values);
400
+ if (entries.length === 0) {
401
+ throw new errors_1.DatabaseError('QLDB update() requires at least one value to set', {
402
+ code: 'VALIDATION_ERROR',
403
+ });
404
+ }
405
+ const setParams = [];
406
+ const setSql = entries
407
+ .map(([col, val]) => {
408
+ setParams.push(val);
409
+ return `${assertIdentifier(col)} = ?`;
410
+ })
411
+ .join(', ');
412
+ const { sql, params } = compilePartiqlWhere(parseWhere(where));
413
+ const statement = `UPDATE ${tbl} SET ${setSql}${sql ? ` WHERE ${sql}` : ''}`;
414
+ const rows = await this.execute(statement, [...setParams, ...params], 'update');
415
+ return rows.length;
416
+ }
417
+ /**
418
+ * Delete every document matching `where`. Returns the number of documents
419
+ * QLDB reported as deleted. QLDB retains all prior revisions in the
420
+ * journal, so a delete is itself a new (tombstone) revision - use
421
+ * {@link history} to recover deleted data.
422
+ */
423
+ async destroy(table, where) {
424
+ const tbl = assertIdentifier(table);
425
+ const { sql, params } = compilePartiqlWhere(parseWhere(where));
426
+ const statement = `DELETE FROM ${tbl}${sql ? ` WHERE ${sql}` : ''}`;
427
+ const rows = await this.execute(statement, params, 'destroy');
428
+ return rows.length;
429
+ }
430
+ /**
431
+ * Insert-or-update: within a single transaction, look for a document
432
+ * matching `where`; if one exists, SET `data` onto the matches, otherwise
433
+ * INSERT `data` (merged with the `where` equality keys). Returns
434
+ * `{ created }` indicating which branch ran.
435
+ */
436
+ async upsert(table, data, where) {
437
+ const tbl = assertIdentifier(table);
438
+ const { sql, params } = compilePartiqlWhere(parseWhere(where));
439
+ return this.transaction(async (txn) => {
440
+ const existing = sql
441
+ ? (await txn.execute(`SELECT * FROM ${tbl} WHERE ${sql}`, ...params)).getResultList()
442
+ : [];
443
+ if (existing.length > 0) {
444
+ const entries = Object.entries(data);
445
+ const setParams = [];
446
+ const setSql = entries
447
+ .map(([col, val]) => {
448
+ setParams.push(val);
449
+ return `${assertIdentifier(col)} = ?`;
450
+ })
451
+ .join(', ');
452
+ await txn.execute(`UPDATE ${tbl} SET ${setSql} WHERE ${sql}`, ...setParams, ...params);
453
+ return { created: false };
454
+ }
455
+ const insertDoc = { ...extractEqualityKeys(where), ...data };
456
+ await txn.execute(`INSERT INTO ${tbl} ?`, insertDoc);
457
+ return { created: true };
458
+ });
459
+ }
460
+ /**
461
+ * Run `fn` inside a single managed QLDB transaction (auto-retried on
462
+ * optimistic-concurrency conflicts). The callback receives the raw
463
+ * transaction executor so it can compose several statements atomically.
464
+ */
465
+ async transaction(fn) {
466
+ const driver = this.requireDriver();
467
+ try {
468
+ return await driver.executeLambda(fn);
469
+ }
470
+ catch (err) {
471
+ const parent = err instanceof Error ? err : new Error(String(err));
472
+ throw errors_1.DatabaseError.from(parent, { message: `QLDB transaction failed: ${parent.message}` });
473
+ }
474
+ }
174
475
  /** List the active table names in the ledger (thin passthrough). */
175
476
  async tableNames() {
176
477
  const driver = this.requireDriver();
@@ -0,0 +1,160 @@
1
+ import type { NoSqlStore } from '../store';
2
+ /**
3
+ * A loosely-typed handle to an AWS v3 `S3Client` (or any object exposing a
4
+ * compatible `send(command)` method). Kept as an interface rather than the
5
+ * real SDK type because `@aws-sdk/client-s3` is loaded lazily and may not be
6
+ * installed at type-check time; tests inject a mock matching this shape.
7
+ */
8
+ export interface R2ClientLike {
9
+ send(command: unknown): Promise<any>;
10
+ destroy?(): void;
11
+ }
12
+ /** Connection options for `R2Store`. */
13
+ export interface R2StoreOptions {
14
+ /**
15
+ * The account-specific R2 S3 endpoint, e.g.
16
+ * `https://<account_id>.r2.cloudflarestorage.com`. Required unless a
17
+ * pre-built `client` is supplied.
18
+ */
19
+ endpoint?: string;
20
+ /**
21
+ * R2 access-key credentials (created in the Cloudflare dashboard as an "R2
22
+ * API Token"). Omit only when supplying a pre-built `client`.
23
+ */
24
+ credentials?: {
25
+ accessKeyId: string;
26
+ secretAccessKey: string;
27
+ sessionToken?: string;
28
+ };
29
+ /**
30
+ * Region to advertise to the SDK. R2 has no regions and expects the
31
+ * sentinel value `'auto'`; this defaults to `'auto'` and rarely needs
32
+ * changing.
33
+ */
34
+ region?: string;
35
+ /**
36
+ * A pre-built `S3Client` (or compatible object). When provided,
37
+ * `connect()` uses it directly and does NOT require the SDK — this is how
38
+ * tests inject a mock client, and how callers can supply a custom-configured
39
+ * client. When omitted, `connect()` builds a real `S3Client` pointed at R2
40
+ * from the options above.
41
+ */
42
+ client?: R2ClientLike;
43
+ }
44
+ /** Options for `putObject()`. */
45
+ export interface PutObjectOptions {
46
+ /** MIME type of the body, e.g. 'application/json'. */
47
+ contentType?: string;
48
+ /** Arbitrary user metadata (stored as `x-amz-meta-*` headers). */
49
+ metadata?: Record<string, string>;
50
+ /** Cache-Control header value to store with the object. */
51
+ cacheControl?: string;
52
+ /** Content-Encoding header value to store with the object. */
53
+ contentEncoding?: string;
54
+ }
55
+ /** Result of `putObject()`. */
56
+ export interface PutObjectResult {
57
+ /** Entity tag of the newly stored object. */
58
+ etag?: string;
59
+ /** Version ID, when the bucket has versioning enabled. */
60
+ versionId?: string;
61
+ }
62
+ /** Result of `getObject()`. */
63
+ export interface GetObjectResult {
64
+ /** The object's body stream/blob, exactly as the SDK returns it. */
65
+ body: unknown;
66
+ contentType?: string;
67
+ contentLength?: number;
68
+ etag?: string;
69
+ lastModified?: Date;
70
+ metadata?: Record<string, string>;
71
+ }
72
+ /** Result of `headObject()` — object metadata without the body. */
73
+ export interface HeadObjectResult {
74
+ contentType?: string;
75
+ contentLength?: number;
76
+ etag?: string;
77
+ lastModified?: Date;
78
+ metadata?: Record<string, string>;
79
+ }
80
+ /** A single object entry in a `listObjects()` result. */
81
+ export interface R2ObjectSummary {
82
+ key?: string;
83
+ size?: number;
84
+ etag?: string;
85
+ lastModified?: Date;
86
+ }
87
+ /** Result of `listObjects()`. */
88
+ export interface ListObjectsResult {
89
+ objects: R2ObjectSummary[];
90
+ /** True when the listing was truncated (more objects exist than were returned). */
91
+ isTruncated: boolean;
92
+ /** Continuation token to fetch the next page, present when `isTruncated`. */
93
+ nextContinuationToken?: string;
94
+ }
95
+ /**
96
+ * Cloudflare R2 store, implementing the minimal `NoSqlStore` marker interface.
97
+ * Unlike the SQL dialects there is no `query(sql)` — R2's operations are
98
+ * object-shaped (Put/Get/Delete/List/Head) and that shape is preserved here
99
+ * rather than forced into a SQL string.
100
+ */
101
+ export declare class R2Store implements NoSqlStore {
102
+ readonly name = "r2";
103
+ readonly library = "@aws-sdk/client-s3";
104
+ private readonly options;
105
+ private client;
106
+ private aws;
107
+ private connected;
108
+ constructor(options?: R2StoreOptions);
109
+ connect(): Promise<void>;
110
+ /**
111
+ * Attempt to lazy-load `@aws-sdk/client-s3` for its command constructors.
112
+ * Best-effort: when a client was injected (e.g. a test mock) the SDK may
113
+ * not be installed, so a failure here is swallowed and the command classes
114
+ * are loaded on demand instead (see `command()`).
115
+ */
116
+ private tryLoadSdk;
117
+ disconnect(): Promise<void>;
118
+ isConnected(): boolean;
119
+ /** Returns the underlying `S3Client` (loosely typed) for anything not wrapped here. */
120
+ getClient(): R2ClientLike;
121
+ private requireClient;
122
+ /**
123
+ * Resolve an S3 command constructor by name from the (lazily loaded) SDK,
124
+ * so that with an injected mock client we only load `@aws-sdk/client-s3`
125
+ * the first time a command is actually built. Throws a `ConnectionError`
126
+ * if the SDK genuinely can't be resolved.
127
+ */
128
+ private command;
129
+ /** Wraps an AWS SDK failure in a `DatabaseError`, preserving the original error. */
130
+ private wrapError;
131
+ /** `PutObject` — store an object's body (and optional metadata) under `bucket`/`key`. */
132
+ putObject(bucket: string, key: string, body: unknown, options?: PutObjectOptions): Promise<PutObjectResult>;
133
+ /** `GetObject` — fetch an object's body and metadata. */
134
+ getObject(bucket: string, key: string): Promise<GetObjectResult>;
135
+ /** `DeleteObject` — remove an object. Succeeds even if the key doesn't exist. */
136
+ deleteObject(bucket: string, key: string): Promise<void>;
137
+ /**
138
+ * `ListObjectsV2` — list objects in `bucket`, optionally restricted to
139
+ * those whose key starts with `prefix`. A single call returns at most
140
+ * 1000 objects; use `result.nextContinuationToken` (via the raw client)
141
+ * to page beyond that.
142
+ */
143
+ listObjects(bucket: string, prefix?: string): Promise<ListObjectsResult>;
144
+ /** `HeadObject` — fetch an object's metadata without its body. Throws (NotFound) if the object doesn't exist. */
145
+ headObject(bucket: string, key: string): Promise<HeadObjectResult>;
146
+ /**
147
+ * Whether an object exists, implemented via `HeadObject`. Returns `false`
148
+ * when R2 reports the object is missing (a `NotFound` / 404 error) rather
149
+ * than throwing; any other error (e.g. access denied) is re-thrown.
150
+ */
151
+ objectExists(bucket: string, key: string): Promise<boolean>;
152
+ /**
153
+ * Recognize "object does not exist" errors across the shapes the SDK (and
154
+ * its wrapped form here) can surface them: the raw error's `.name`
155
+ * (`NotFound`, `NoSuchKey`), its HTTP status (404), or the wrapped
156
+ * `DatabaseError`'s `.parent`.
157
+ */
158
+ private isNotFound;
159
+ }
160
+ export default R2Store;
@@ -0,0 +1,131 @@
1
+ /**
2
+ * RabbitMQ (AMQP 0-9-1) store.
3
+ *
4
+ * RabbitMQ is a message broker, not a database: there is no query language,
5
+ * no relational schema, and no `query(sql)` shape. Producers publish
6
+ * messages to *exchanges*, which route them (by binding key/pattern) into
7
+ * *queues*, from which *consumers* read. Like the other stores in
8
+ * `src/nosql/`, this class therefore does not implement the SQL-shaped
9
+ * `Dialect` interface (`src/dialects/dialect.ts`). Instead it implements the
10
+ * minimal `NoSqlStore` marker interface (`src/nosql/store.ts`) and exposes
11
+ * RabbitMQ's real operations — assert/bind topology, publish, and consume —
12
+ * directly, mapped onto a single AMQP channel.
13
+ *
14
+ * Uses the official `amqplib` driver. `amqplib` is an optional peer of this
15
+ * ORM and is loaded lazily (via `require`) inside `connect()`, so importing
16
+ * this module does not require `amqplib` to be installed unless you actually
17
+ * connect. For tests (and for advanced setups that manage the AMQP
18
+ * connection themselves), a pre-built connection can be injected via
19
+ * `RabbitMQStoreOptions.connection`, in which case `connect()` uses it and
20
+ * skips the `require` entirely.
21
+ *
22
+ * ## Message serialization
23
+ *
24
+ * AMQP message bodies are raw bytes (`Buffer`). For convenience, both
25
+ * `sendToQueue()` and `publish()` accept any value: a `Buffer` (or
26
+ * `Uint8Array`) is sent as-is, a `string` is UTF-8 encoded, and anything
27
+ * else is serialized with `JSON.stringify` before being wrapped in a
28
+ * `Buffer`. Consumers receive the raw `amqplib` message object; decode
29
+ * `msg.content` (a `Buffer`) yourself (e.g. `JSON.parse(msg.content.toString())`).
30
+ */
31
+ import type { NoSqlStore } from '../store';
32
+ /**
33
+ * Connection options for `RabbitMQStore`.
34
+ *
35
+ * `amqplib` ships no types the ORM depends on here, so its connection and
36
+ * channel are typed as `any` — the repo's tsconfig has `noImplicitAny:
37
+ * false`, the intended escape hatch for optional, untyped drivers.
38
+ */
39
+ export interface RabbitMQStoreOptions {
40
+ /**
41
+ * AMQP connection URL, e.g. `'amqp://guest:guest@localhost:5672'` or
42
+ * `'amqps://host'`. Used by `connect()` when no `connection` is injected.
43
+ * Defaults to `'amqp://localhost'`.
44
+ */
45
+ url?: string;
46
+ /**
47
+ * A pre-built `amqplib` connection (the object returned by
48
+ * `amqp.connect(...)`). When provided, `connect()` adopts it and does not
49
+ * `require('amqplib')` — useful for sharing one connection across stores,
50
+ * or for injecting a mock in tests.
51
+ */
52
+ connection?: any;
53
+ }
54
+ /** A value acceptable as an AMQP message body: raw bytes, a string, or any JSON-serializable value. */
55
+ export type RabbitMQMessage = Buffer | Uint8Array | string | unknown;
56
+ /**
57
+ * `RabbitMQStore` wraps a single `amqplib` channel and exposes RabbitMQ's
58
+ * core AMQP operations: asserting queues/exchanges, binding them, publishing
59
+ * (to a queue directly or via an exchange), consuming with ack/nack, and
60
+ * consumer prefetch (QoS).
61
+ */
62
+ export declare class RabbitMQStore implements NoSqlStore {
63
+ readonly name = "rabbitmq";
64
+ readonly library = "amqplib";
65
+ private readonly options;
66
+ private connection;
67
+ private channel;
68
+ private connected;
69
+ constructor(options?: RabbitMQStoreOptions);
70
+ connect(): Promise<void>;
71
+ disconnect(): Promise<void>;
72
+ isConnected(): boolean;
73
+ /** Returns the underlying `amqplib` channel for operations not wrapped here. */
74
+ getClient(): any;
75
+ /** Returns the underlying `amqplib` connection. */
76
+ getConnection(): any;
77
+ private requireChannel;
78
+ private exec;
79
+ /**
80
+ * Declare a queue, creating it if it doesn't exist (idempotent). Returns
81
+ * amqplib's assertion reply (`{ queue, messageCount, consumerCount }`).
82
+ * Pass `''` as `queue` to have the broker generate a unique name.
83
+ */
84
+ assertQueue(queue: string, options?: any): Promise<any>;
85
+ /**
86
+ * Declare an exchange of the given `type` (`'direct'`, `'fanout'`,
87
+ * `'topic'`, `'headers'`), creating it if it doesn't exist (idempotent).
88
+ */
89
+ assertExchange(exchange: string, type: string, options?: any): Promise<any>;
90
+ /**
91
+ * Bind `queue` to `exchange` so messages published to `exchange` matching
92
+ * `pattern` (the routing/binding key) are routed into `queue`.
93
+ */
94
+ bindQueue(queue: string, exchange: string, pattern: string): Promise<any>;
95
+ /**
96
+ * Send a message straight to a named `queue` (via the default exchange).
97
+ * Non-`Buffer` messages are serialized — strings UTF-8 encoded, other
98
+ * values `JSON.stringify`'d (see the module docs). Returns amqplib's
99
+ * boolean write result (`false` when the channel's write buffer is full
100
+ * and you should wait for a `'drain'` event before writing more).
101
+ */
102
+ sendToQueue(queue: string, message: RabbitMQMessage, options?: any): Promise<boolean>;
103
+ /**
104
+ * Publish a message to an `exchange` with a `routingKey`; the exchange
105
+ * routes it to bound queues. Non-`Buffer` messages are serialized like
106
+ * `sendToQueue()`. Returns amqplib's boolean write result.
107
+ */
108
+ publish(exchange: string, routingKey: string, message: RabbitMQMessage, options?: any): Promise<boolean>;
109
+ /**
110
+ * Register `handler` to receive each message delivered from `queue`. The
111
+ * handler is called with the raw amqplib message object (or `null` if the
112
+ * consumer is cancelled by the broker); decode `msg.content` yourself.
113
+ * Unless `options.noAck` is set, call `ack(msg)`/`nack(msg)` when done.
114
+ * Returns amqplib's `{ consumerTag }` reply.
115
+ */
116
+ consume(queue: string, handler: (msg: any) => void, options?: any): Promise<any>;
117
+ /** Acknowledge a delivered message so the broker can drop it. */
118
+ ack(message: any, allUpTo?: boolean): void;
119
+ /**
120
+ * Reject a delivered message. By default RabbitMQ requeues it (`requeue`
121
+ * defaults to `true` in amqplib); pass `requeue = false` to drop or
122
+ * dead-letter it.
123
+ */
124
+ nack(message: any, allUpTo?: boolean, requeue?: boolean): void;
125
+ /**
126
+ * Set the consumer prefetch (QoS) — the max number of unacknowledged
127
+ * messages the broker will deliver to consumers on this channel at once.
128
+ */
129
+ prefetch(count: number, global?: boolean): Promise<any>;
130
+ }
131
+ export default RabbitMQStore;