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
@@ -0,0 +1,143 @@
1
+ /**
2
+ * ProvenDB store implementation.
3
+ *
4
+ * ProvenDB is a MongoDB-compatible database that adds immutable, versioned
5
+ * documents plus cryptographic proofs: every write is captured at a
6
+ * monotonically increasing **version**, and ProvenDB can produce a Merkle
7
+ * proof that a document (or a whole query result) existed at a given version,
8
+ * anchored into a public blockchain. That makes it append-only/auditable on
9
+ * top of a familiar document API.
10
+ *
11
+ * ## HTTP proof API over `fetch`
12
+ *
13
+ * While ProvenDB exposes a Mongo wire protocol, its distinguishing feature -
14
+ * versioned documents and proofs - is surfaced here over its REST/HTTP proof
15
+ * API using the global `fetch` (so `library === 'fetch'`), matching the
16
+ * Prometheus store's injectable-client pattern. This class implements the
17
+ * minimal `NoSqlStore` marker interface plus the shared ledger surface:
18
+ * - `append(collection, data)` -> `POST /collections/<c>/documents`.
19
+ * - `get(collection, id)` -> `GET /collections/<c>/documents/<id>`.
20
+ * - `history(collection, id)` -> `GET .../documents/<id>/versions`.
21
+ * - `verify(collection, id)` -> `POST .../documents/<id>/proof` (returns
22
+ * the Merkle proof + blockchain anchor).
23
+ * - `query(filter)` -> `POST /collections/<c>/query`.
24
+ */
25
+ import { NoSqlStore } from '../store';
26
+ /** Default ProvenDB HTTP API base URL. */
27
+ export declare const DEFAULT_PROVENDB_BASE_URL = "http://localhost:8080";
28
+ /** The subset of an HTTP client this store needs (GET + POST returning JSON). */
29
+ export interface ProvendbHttpClient {
30
+ get(path: string): Promise<any>;
31
+ post(path: string, body?: unknown): Promise<any>;
32
+ }
33
+ /** Connection options for `ProvendbStore`. */
34
+ export interface ProvendbStoreOptions {
35
+ /** Base URL of the ProvenDB HTTP API. Defaults to `http://localhost:8080`. */
36
+ baseURL?: string;
37
+ /** Optional pre-built HTTP client; when provided, `baseURL` is ignored. */
38
+ client?: ProvendbHttpClient;
39
+ /** Extra HTTP headers (e.g. an API token). */
40
+ headers?: Record<string, string>;
41
+ }
42
+ /** Build a `fetch`-backed JSON client for the given base URL. */
43
+ export declare function createProvendbFetchClient(baseURL: string, headers?: Record<string, string>): ProvendbHttpClient;
44
+ /** Sort direction accepted by {@link ProvendbStore.findAll}'s `order`. */
45
+ export type ProvendbOrderDirection = 'ASC' | 'DESC' | 'asc' | 'desc';
46
+ /** Options for {@link ProvendbStore.findAll}/{@link ProvendbStore.findOne}. */
47
+ export interface ProvendbFindOptions {
48
+ /** ORM `where` clause (plain equality and/or `Op`-keyed conditions). */
49
+ where?: Record<string, any>;
50
+ /** Restrict returned fields, e.g. `['name', 'email']` (Mongo projection). */
51
+ attributes?: string[];
52
+ /** Ordering, e.g. `[['age', 'DESC'], ['name', 'ASC']]`. */
53
+ order?: Array<[string, ProvendbOrderDirection]>;
54
+ /** Maximum number of documents to return. */
55
+ limit?: number;
56
+ /** Number of documents to skip. */
57
+ offset?: number;
58
+ /**
59
+ * Read the collection as of a historical ProvenDB `version` (its
60
+ * versioned/point-in-time feature) instead of the current state.
61
+ */
62
+ version?: number | string;
63
+ }
64
+ /**
65
+ * `ProvendbStore` wraps ProvenDB's HTTP proof/document API behind the shared
66
+ * ledger surface.
67
+ */
68
+ export declare class ProvendbStore implements NoSqlStore {
69
+ readonly name = "provendb";
70
+ readonly library = "fetch";
71
+ private readonly baseURL;
72
+ private readonly injectedClient?;
73
+ private readonly headers?;
74
+ private client;
75
+ private connected;
76
+ constructor(options?: ProvendbStoreOptions);
77
+ connect(): Promise<void>;
78
+ disconnect(): Promise<void>;
79
+ isConnected(): boolean;
80
+ /** Returns the underlying (internal or injected) HTTP client. */
81
+ getClient(): ProvendbHttpClient;
82
+ private requireClient;
83
+ private call;
84
+ /**
85
+ * Insert `data` into `collection` at a new version
86
+ * (`POST /collections/<c>/documents`). Returns the inserted document
87
+ * (including its `_id` and `_version`).
88
+ */
89
+ append(collection: string, data: Record<string, unknown>): Promise<unknown>;
90
+ /** Read the current version of document `id` from `collection`. */
91
+ get(collection: string, id: string): Promise<unknown>;
92
+ /** Return every version of document `id` (`GET .../documents/<id>/versions`). */
93
+ history(collection: string, id: string): Promise<unknown>;
94
+ /**
95
+ * Request a cryptographic proof for document `id`
96
+ * (`POST .../documents/<id>/proof`). The returned object contains the
97
+ * Merkle proof and the public-blockchain anchor that tamper-proofs the
98
+ * document's state at its version.
99
+ */
100
+ verify(collection: string, id: string): Promise<unknown>;
101
+ /**
102
+ * Run a Mongo-style filter query against `collection`
103
+ * (`POST /collections/<c>/query`). `query` is the Mongo filter document;
104
+ * `options` carries projection/sort/limit and an optional historical
105
+ * `version`.
106
+ */
107
+ query(collection: string, query?: Record<string, unknown>, options?: Record<string, unknown>): Promise<unknown>;
108
+ /**
109
+ * Fetch every document in `collection` matching the ORM `where` clause. The
110
+ * `where` is compiled to a MongoDB filter; `attributes`/`order`/`limit`/
111
+ * `offset` become the `projection`/`sort`/`limit`/`skip` query options, and
112
+ * `version` (if given) reads the collection at a historical ProvenDB
113
+ * version.
114
+ */
115
+ findAll<T = Record<string, unknown>>(collection: string, options?: ProvendbFindOptions): Promise<T[]>;
116
+ /** Fetch the first document matching `where` (Mongo `limit 1`), or `null`. */
117
+ findOne<T = Record<string, unknown>>(collection: string, options?: ProvendbFindOptions): Promise<T | null>;
118
+ /** Count documents in `collection` matching `where`. */
119
+ count(collection: string, where?: Record<string, any>): Promise<number>;
120
+ /** Insert `data` as a new versioned document. Alias of {@link append}. */
121
+ create(collection: string, data: Record<string, unknown>): Promise<unknown>;
122
+ /** Insert many documents (one versioned write per document), returning them. */
123
+ bulkCreate(collection: string, docs: Array<Record<string, unknown>>): Promise<unknown[]>;
124
+ /**
125
+ * Update every document matching `where`, `$set`ting each key in `values`.
126
+ * Returns the raw ProvenDB response (which records the new version the
127
+ * write was captured at).
128
+ */
129
+ update(collection: string, values: Record<string, unknown>, where?: Record<string, any>, options?: {
130
+ upsert?: boolean;
131
+ }): Promise<unknown>;
132
+ /**
133
+ * Insert-or-update: update documents matching `where` with `data`, creating
134
+ * a new document if none match (`upsert: true`).
135
+ */
136
+ upsert(collection: string, data: Record<string, unknown>, where: Record<string, any>): Promise<unknown>;
137
+ /**
138
+ * Delete every document matching `where`. ProvenDB retains prior versions,
139
+ * so deleted documents remain recoverable via {@link history}.
140
+ */
141
+ destroy(collection: string, where?: Record<string, any>): Promise<unknown>;
142
+ }
143
+ export default ProvendbStore;
@@ -51,6 +51,182 @@ function createProvendbFetchClient(baseURL, headers) {
51
51
  },
52
52
  };
53
53
  }
54
+ /** Parse an ORM `where` object (string + `Op` symbol keys) into a tree. */
55
+ function parseWhere(where) {
56
+ if (!where || typeof where !== 'object')
57
+ return null;
58
+ const nodes = [];
59
+ for (const sym of Object.getOwnPropertySymbols(where)) {
60
+ const name = sym.description;
61
+ const val = where[sym];
62
+ if (name === 'and' && Array.isArray(val)) {
63
+ nodes.push({ kind: 'and', nodes: val.map(parseWhere).filter(Boolean) });
64
+ }
65
+ else if (name === 'or' && Array.isArray(val)) {
66
+ nodes.push({ kind: 'or', nodes: val.map(parseWhere).filter(Boolean) });
67
+ }
68
+ else if (name === 'not') {
69
+ const inner = parseWhere(val);
70
+ if (inner)
71
+ nodes.push({ kind: 'not', node: inner });
72
+ }
73
+ }
74
+ for (const field of Object.keys(where)) {
75
+ nodes.push(parseFieldCondition(field, where[field]));
76
+ }
77
+ const flat = nodes.filter(Boolean);
78
+ if (flat.length === 0)
79
+ return null;
80
+ return flat.length === 1 ? flat[0] : { kind: 'and', nodes: flat };
81
+ }
82
+ /** Parse the value for a single field into a comparison (or AND of them). */
83
+ function parseFieldCondition(field, value) {
84
+ if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
85
+ const symbols = Object.getOwnPropertySymbols(value);
86
+ if (symbols.length > 0) {
87
+ const cmps = symbols.map((sym) => ({
88
+ kind: 'cmp',
89
+ field,
90
+ op: sym.description ?? 'eq',
91
+ value: value[sym],
92
+ }));
93
+ return cmps.length === 1 ? cmps[0] : { kind: 'and', nodes: cmps };
94
+ }
95
+ }
96
+ return { kind: 'cmp', field, op: value === null ? 'isNull' : 'eq', value };
97
+ }
98
+ /** Escape a string for safe embedding in a MongoDB `$regex` pattern. */
99
+ function escapeRegex(value) {
100
+ return String(value).replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
101
+ }
102
+ /** Convert a SQL `LIKE` pattern (`%`/`_` wildcards) to a Mongo regex source. */
103
+ function likeToRegex(pattern) {
104
+ let out = '^';
105
+ for (const ch of String(pattern)) {
106
+ if (ch === '%')
107
+ out += '.*';
108
+ else if (ch === '_')
109
+ out += '.';
110
+ else
111
+ out += ch.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
112
+ }
113
+ return out + '$';
114
+ }
115
+ /** Render a normalized tree to a MongoDB filter document. */
116
+ function compileMongoFilter(node) {
117
+ if (!node)
118
+ return {};
119
+ switch (node.kind) {
120
+ case 'and': {
121
+ const parts = node.nodes.map(compileMongoFilter).filter((p) => Object.keys(p).length > 0);
122
+ return parts.length === 0 ? {} : parts.length === 1 ? parts[0] : { $and: parts };
123
+ }
124
+ case 'or': {
125
+ const parts = node.nodes.map(compileMongoFilter);
126
+ return { $or: parts };
127
+ }
128
+ case 'not':
129
+ return { $nor: [compileMongoFilter(node.node)] };
130
+ case 'cmp':
131
+ return compileMongoCmp(node.field, node.op, node.value);
132
+ }
133
+ }
134
+ function compileMongoCmp(field, op, value) {
135
+ switch (op) {
136
+ case 'eq':
137
+ return { [field]: value };
138
+ case 'ne':
139
+ return { [field]: { $ne: value } };
140
+ case 'gt':
141
+ return { [field]: { $gt: value } };
142
+ case 'gte':
143
+ return { [field]: { $gte: value } };
144
+ case 'lt':
145
+ return { [field]: { $lt: value } };
146
+ case 'lte':
147
+ return { [field]: { $lte: value } };
148
+ case 'in':
149
+ return { [field]: { $in: value ?? [] } };
150
+ case 'notIn':
151
+ return { [field]: { $nin: value ?? [] } };
152
+ case 'between': {
153
+ const [a, b] = value;
154
+ return { [field]: { $gte: a, $lte: b } };
155
+ }
156
+ case 'notBetween': {
157
+ const [a, b] = value;
158
+ return { [field]: { $not: { $gte: a, $lte: b } } };
159
+ }
160
+ case 'like':
161
+ return { [field]: { $regex: likeToRegex(value) } };
162
+ case 'notLike':
163
+ return { [field]: { $not: { $regex: likeToRegex(value) } } };
164
+ case 'iLike':
165
+ return { [field]: { $regex: likeToRegex(value), $options: 'i' } };
166
+ case 'notILike':
167
+ return { [field]: { $not: { $regex: likeToRegex(value), $options: 'i' } } };
168
+ case 'startsWith':
169
+ return { [field]: { $regex: `^${escapeRegex(value)}` } };
170
+ case 'notStartsWith':
171
+ return { [field]: { $not: { $regex: `^${escapeRegex(value)}` } } };
172
+ case 'endsWith':
173
+ return { [field]: { $regex: `${escapeRegex(value)}$` } };
174
+ case 'notEndsWith':
175
+ return { [field]: { $not: { $regex: `${escapeRegex(value)}$` } } };
176
+ case 'substring':
177
+ return { [field]: { $regex: escapeRegex(value) } };
178
+ case 'notSubstring':
179
+ return { [field]: { $not: { $regex: escapeRegex(value) } } };
180
+ case 'regexp':
181
+ return { [field]: { $regex: String(value) } };
182
+ case 'notRegexp':
183
+ return { [field]: { $not: { $regex: String(value) } } };
184
+ case 'iRegexp':
185
+ return { [field]: { $regex: String(value), $options: 'i' } };
186
+ case 'notIRegexp':
187
+ return { [field]: { $not: { $regex: String(value), $options: 'i' } } };
188
+ case 'isNull':
189
+ return { [field]: { $eq: null } };
190
+ case 'isNotNull':
191
+ return { [field]: { $ne: null } };
192
+ case 'contains':
193
+ case 'arrayContains':
194
+ return { [field]: { $all: Array.isArray(value) ? value : [value] } };
195
+ default:
196
+ throw new errors_1.DatabaseError(`ProvenDB ORM layer does not support operator "${op}" for field "${field}"`, { code: 'QUERY_ERROR' });
197
+ }
198
+ }
199
+ /** Build a Mongo projection object from an ORM `attributes` list. */
200
+ function toProjection(attributes) {
201
+ if (!attributes || attributes.length === 0)
202
+ return undefined;
203
+ const projection = {};
204
+ for (const attr of attributes)
205
+ projection[attr] = 1;
206
+ return projection;
207
+ }
208
+ /** Build a Mongo sort object from an ORM `order` list. */
209
+ function toSort(order) {
210
+ if (!order || order.length === 0)
211
+ return undefined;
212
+ const sort = {};
213
+ for (const [field, dir] of order)
214
+ sort[field] = dir.toUpperCase() === 'DESC' ? -1 : 1;
215
+ return sort;
216
+ }
217
+ /** Normalize a ProvenDB query response into a plain array of documents. */
218
+ function extractDocs(res) {
219
+ if (Array.isArray(res))
220
+ return res;
221
+ if (res && typeof res === 'object') {
222
+ const obj = res;
223
+ for (const key of ['documents', 'data', 'results', 'items']) {
224
+ if (Array.isArray(obj[key]))
225
+ return obj[key];
226
+ }
227
+ }
228
+ return [];
229
+ }
54
230
  /**
55
231
  * `ProvendbStore` wraps ProvenDB's HTTP proof/document API behind the shared
56
232
  * ledger surface.
@@ -142,6 +318,92 @@ class ProvendbStore {
142
318
  async query(collection, query = {}, options) {
143
319
  return this.call('query', (client) => client.post(`/collections/${encodeURIComponent(collection)}/query`, { query, options }));
144
320
  }
321
+ // ---------------------------------------------------------------------
322
+ // ORM model surface (no hand-written Mongo filters needed)
323
+ // ---------------------------------------------------------------------
324
+ /**
325
+ * Fetch every document in `collection` matching the ORM `where` clause. The
326
+ * `where` is compiled to a MongoDB filter; `attributes`/`order`/`limit`/
327
+ * `offset` become the `projection`/`sort`/`limit`/`skip` query options, and
328
+ * `version` (if given) reads the collection at a historical ProvenDB
329
+ * version.
330
+ */
331
+ async findAll(collection, options = {}) {
332
+ const filter = compileMongoFilter(parseWhere(options.where));
333
+ const queryOptions = {};
334
+ const projection = toProjection(options.attributes);
335
+ const sort = toSort(options.order);
336
+ if (projection)
337
+ queryOptions.projection = projection;
338
+ if (sort)
339
+ queryOptions.sort = sort;
340
+ if (typeof options.limit === 'number')
341
+ queryOptions.limit = options.limit;
342
+ if (typeof options.offset === 'number')
343
+ queryOptions.skip = options.offset;
344
+ if (options.version !== undefined)
345
+ queryOptions.version = options.version;
346
+ const res = await this.query(collection, filter, queryOptions);
347
+ return extractDocs(res);
348
+ }
349
+ /** Fetch the first document matching `where` (Mongo `limit 1`), or `null`. */
350
+ async findOne(collection, options = {}) {
351
+ const rows = await this.findAll(collection, { ...options, limit: 1 });
352
+ return rows[0] ?? null;
353
+ }
354
+ /** Count documents in `collection` matching `where`. */
355
+ async count(collection, where) {
356
+ const filter = compileMongoFilter(parseWhere(where));
357
+ const res = await this.call('count', (client) => client.post(`/collections/${encodeURIComponent(collection)}/count`, { query: filter }));
358
+ if (typeof res === 'number')
359
+ return res;
360
+ const obj = (res ?? {});
361
+ const n = obj.count ?? obj.n ?? obj.total;
362
+ return typeof n === 'number' ? n : extractDocs(res).length;
363
+ }
364
+ /** Insert `data` as a new versioned document. Alias of {@link append}. */
365
+ async create(collection, data) {
366
+ return this.append(collection, data);
367
+ }
368
+ /** Insert many documents (one versioned write per document), returning them. */
369
+ async bulkCreate(collection, docs) {
370
+ const out = [];
371
+ for (const doc of docs) {
372
+ out.push(await this.append(collection, doc));
373
+ }
374
+ return out;
375
+ }
376
+ /**
377
+ * Update every document matching `where`, `$set`ting each key in `values`.
378
+ * Returns the raw ProvenDB response (which records the new version the
379
+ * write was captured at).
380
+ */
381
+ async update(collection, values, where, options = {}) {
382
+ const filter = compileMongoFilter(parseWhere(where));
383
+ return this.call('update', (client) => client.post(`/collections/${encodeURIComponent(collection)}/update`, {
384
+ query: filter,
385
+ update: { $set: values },
386
+ options: { multi: true, upsert: options.upsert ?? false },
387
+ }));
388
+ }
389
+ /**
390
+ * Insert-or-update: update documents matching `where` with `data`, creating
391
+ * a new document if none match (`upsert: true`).
392
+ */
393
+ async upsert(collection, data, where) {
394
+ return this.update(collection, data, where, { upsert: true });
395
+ }
396
+ /**
397
+ * Delete every document matching `where`. ProvenDB retains prior versions,
398
+ * so deleted documents remain recoverable via {@link history}.
399
+ */
400
+ async destroy(collection, where) {
401
+ const filter = compileMongoFilter(parseWhere(where));
402
+ return this.call('destroy', (client) => client.post(`/collections/${encodeURIComponent(collection)}/delete`, {
403
+ query: filter,
404
+ options: { multi: true },
405
+ }));
406
+ }
145
407
  }
146
408
  exports.ProvendbStore = ProvendbStore;
147
409
  exports.default = ProvendbStore;
@@ -0,0 +1,83 @@
1
+ import type { NoSqlStore } from '../store';
2
+ /** A message accepted by `publish()`: raw string/Buffer or a JSON-serializable value. */
3
+ export type PubSubMessage = string | Buffer | Record<string, unknown> | unknown[];
4
+ /** Minimal structural view of a Pub/Sub `Topic`. */
5
+ export interface PubSubTopicLike {
6
+ publishMessage(message: {
7
+ data?: Buffer;
8
+ attributes?: Record<string, string>;
9
+ }): Promise<string>;
10
+ }
11
+ /** Minimal structural view of a Pub/Sub `Subscription`. */
12
+ export interface PubSubSubscriptionLike {
13
+ on(event: string, listener: (...args: any[]) => void): PubSubSubscriptionLike;
14
+ removeAllListeners?(event?: string): void;
15
+ close?(): Promise<void>;
16
+ }
17
+ /** Minimal structural view of a `@google-cloud/pubsub` `PubSub` client. */
18
+ export interface PubSubClientLike {
19
+ topic(name: string): PubSubTopicLike;
20
+ subscription(name: string): PubSubSubscriptionLike;
21
+ createTopic(name: string): Promise<any>;
22
+ createSubscription(topic: string, name: string, options?: unknown): Promise<any>;
23
+ close?(): Promise<void>;
24
+ }
25
+ /** Connection options for `PubSubStore`. */
26
+ export interface PubSubStoreOptions {
27
+ /** GCP project id. */
28
+ projectId?: string;
29
+ /** Path to a service-account key file. */
30
+ keyFilename?: string;
31
+ /** Override the API endpoint (e.g. 'localhost:8085' for the emulator). */
32
+ apiEndpoint?: string;
33
+ /**
34
+ * A pre-built `PubSub` client (or a mock exposing the methods above). When
35
+ * provided, `connect()` uses it directly and does NOT require the driver —
36
+ * this is how tests inject a mock client.
37
+ */
38
+ client?: PubSubClientLike;
39
+ }
40
+ /** A handle returned by `subscribe()`; call `stop()` to detach the listener. */
41
+ export interface PubSubSubscription {
42
+ stop(): Promise<void>;
43
+ }
44
+ /**
45
+ * `PubSubStore` wraps a `@google-cloud/pubsub` client and exposes topic
46
+ * publishing, subscription listening, and topic/subscription administration.
47
+ */
48
+ export declare class PubSubStore implements NoSqlStore {
49
+ readonly name = "pubsub";
50
+ readonly library = "@google-cloud/pubsub";
51
+ private readonly options;
52
+ private client;
53
+ private connected;
54
+ /** Subscription objects that have live listeners, tracked for `disconnect()`. */
55
+ private readonly subscriptions;
56
+ constructor(options?: PubSubStoreOptions);
57
+ connect(): Promise<void>;
58
+ disconnect(): Promise<void>;
59
+ isConnected(): boolean;
60
+ /** Returns the underlying `PubSub` client for anything not wrapped here. */
61
+ getClient(): PubSubClientLike;
62
+ private requireClient;
63
+ private wrapError;
64
+ /**
65
+ * Publish one `message` to `topic` via `topic(name).publishMessage`. The
66
+ * message is encoded per the module's rules (string → UTF-8, Buffer → as-is,
67
+ * else JSON). Returns the server-assigned message id.
68
+ */
69
+ publish(topic: string, message: PubSubMessage, attributes?: Record<string, string>): Promise<string>;
70
+ /** `createTopic` — create a new topic. */
71
+ createTopic(name: string): Promise<void>;
72
+ /** `createSubscription` — attach a new subscription `name` to `topic`. */
73
+ createSubscription(topic: string, name: string, options?: unknown): Promise<void>;
74
+ /**
75
+ * Subscribe to `subscription`, invoking `handler` for each streamed message
76
+ * (the driver's `Message` object; call `.ack()` / `.nack()` on it). Attaches
77
+ * a `'message'` listener via `subscription(name).on('message', ...)` and
78
+ * returns a subscription handle whose `stop()` detaches the listener; it is
79
+ * also tracked so `disconnect()` detaches it.
80
+ */
81
+ subscribe(subscription: string, handler: (message: any) => void | Promise<void>): Promise<PubSubSubscription>;
82
+ }
83
+ export default PubSubStore;
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Apache Pulsar store implementation.
3
+ *
4
+ * Pulsar is a distributed pub/sub messaging and streaming platform. It has no
5
+ * query language and does not fit the SQL-shaped `Dialect` interface, so this
6
+ * class implements the minimal `NoSqlStore` marker interface and exposes
7
+ * Pulsar's real operations - producing to topics, subscribing consumers, and
8
+ * creating readers - instead of forcing everything into a `query(sql)` shape.
9
+ *
10
+ * Uses the `pulsar-client` driver. `pulsar-client` is loaded lazily inside
11
+ * `connect()` (or supplied pre-built via `options.client`) so importing this
12
+ * module does not require the driver to be installed.
13
+ *
14
+ * ## Message serialization
15
+ *
16
+ * Pulsar sends and receives raw bytes. `produce()` accepts a `string` or a
17
+ * `Buffer`: strings are UTF-8 encoded to a `Buffer` and Buffers are passed
18
+ * through untouched, then handed to the producer as `{ data: Buffer }`.
19
+ * Consumers receive Pulsar `Message` objects; use `msg.getData()` to read the
20
+ * raw bytes back.
21
+ */
22
+ import { NoSqlStore } from '../store';
23
+ /**
24
+ * Connection options for `PulsarStore`.
25
+ *
26
+ * Mirrors the `pulsar-client` `Client` constructor options. `serviceUrl` is
27
+ * the Pulsar broker URL, e.g. `pulsar://localhost:6650`. A pre-built
28
+ * `pulsar-client` `Client` instance can be injected via `client`, in which
29
+ * case `connect()` uses it directly and skips loading the driver (this is how
30
+ * tests inject a mock).
31
+ */
32
+ export interface PulsarStoreOptions {
33
+ /** Pulsar broker service URL, e.g. `pulsar://localhost:6650`. */
34
+ serviceUrl?: string;
35
+ /**
36
+ * A pre-built `pulsar-client` `Client` instance. When provided, `connect()`
37
+ * uses it directly and does not `require('pulsar-client')`.
38
+ */
39
+ client?: any;
40
+ /** Any additional `pulsar-client` `Client` options passed straight through. */
41
+ [key: string]: unknown;
42
+ }
43
+ /** A message body to produce: a UTF-8 string or raw bytes. */
44
+ export type PulsarMessage = string | Buffer;
45
+ /** Options for `subscribe()`. */
46
+ export interface SubscribeOptions {
47
+ /** Subscription type, e.g. 'Exclusive' | 'Shared' | 'Failover' | 'KeyShared'. */
48
+ subscriptionType?: string;
49
+ [key: string]: unknown;
50
+ }
51
+ /** Options for `createReader()`. */
52
+ export interface ReaderOptions {
53
+ /** Where the reader starts, e.g. Pulsar's `MessageId.earliest()` / `latest()`. */
54
+ startMessageId?: unknown;
55
+ [key: string]: unknown;
56
+ }
57
+ /**
58
+ * `PulsarStore` wraps a `pulsar-client` `Client` and exposes Pulsar's core
59
+ * operations: producing messages, consumer subscriptions, and readers.
60
+ */
61
+ export declare class PulsarStore implements NoSqlStore {
62
+ readonly name = "pulsar";
63
+ readonly library = "pulsar-client";
64
+ private readonly options;
65
+ private client;
66
+ /** One cached producer per topic, so repeated `produce()` calls reuse it. */
67
+ private readonly producers;
68
+ /** Consumers created via `subscribe()`, tracked so `disconnect()` can close them. */
69
+ private readonly consumers;
70
+ /** Readers created via `createReader()`, tracked so `disconnect()` can close them. */
71
+ private readonly readers;
72
+ /** Set false on `disconnect()` to stop live `subscribe()` receive loops. */
73
+ private receiving;
74
+ private connected;
75
+ constructor(options?: PulsarStoreOptions);
76
+ connect(): Promise<void>;
77
+ disconnect(): Promise<void>;
78
+ isConnected(): boolean;
79
+ /** Returns the underlying `pulsar-client` `Client` for anything not wrapped here. */
80
+ getClient(): any;
81
+ private requireClient;
82
+ /**
83
+ * Produce `message` to `topic`. The producer for a topic is created on first
84
+ * use and cached, so repeated `produce()` calls to the same topic reuse it.
85
+ * `message` may be a UTF-8 `string` or a `Buffer`; it is serialized to raw
86
+ * bytes and sent as `{ data: Buffer }`. Returns the producer's send result.
87
+ */
88
+ produce(topic: string, message: PulsarMessage): Promise<any>;
89
+ /**
90
+ * Subscribe a consumer to `topic` under `subscription` and invoke `handler`
91
+ * for every received message. Runs a background receive loop that calls
92
+ * `consumer.receive()`, passes each message to `handler`, then
93
+ * acknowledges it with `consumer.acknowledge(msg)`. The loop stops on
94
+ * `disconnect()`. The consumer is tracked so `disconnect()` closes it.
95
+ * Returns the created consumer.
96
+ */
97
+ subscribe(topic: string, subscription: string, handler: (msg: any) => Promise<void> | void, options?: SubscribeOptions): Promise<any>;
98
+ /**
99
+ * Create a Pulsar reader over `topic`. Readers give non-destructive,
100
+ * position-controlled reads (no subscription/acks). The reader is tracked so
101
+ * `disconnect()` closes it. Returns the created reader.
102
+ */
103
+ createReader(topic: string, options?: ReaderOptions): Promise<any>;
104
+ }
105
+ export default PulsarStore;