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
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.RocksDBStore = void 0;
3
+ exports.RocksDBStore = exports.KvTransaction = exports.KvDocumentLayer = void 0;
4
4
  /**
5
5
  * RocksDB store.
6
6
  *
@@ -19,6 +19,10 @@ exports.RocksDBStore = void 0;
19
19
  * inject a pre-built mock `client` instead and never reach the `require`.
20
20
  */
21
21
  const errors_1 = require("../../errors");
22
+ const document_layer_1 = require("./document-layer");
23
+ var document_layer_2 = require("./document-layer");
24
+ Object.defineProperty(exports, "KvDocumentLayer", { enumerable: true, get: function () { return document_layer_2.KvDocumentLayer; } });
25
+ Object.defineProperty(exports, "KvTransaction", { enumerable: true, get: function () { return document_layer_2.KvTransaction; } });
22
26
  /**
23
27
  * `RocksDBStore` wraps a `rocksdb` client and exposes its embedded KV surface:
24
28
  * `put`/`get`/`del` for single keys, `batch` for atomic multi-key writes,
@@ -30,6 +34,16 @@ class RocksDBStore {
30
34
  this.library = 'rocksdb';
31
35
  this.client = null;
32
36
  this.connected = false;
37
+ // ---------------------------------------------------------------------
38
+ // Document / ORM model layer
39
+ // ---------------------------------------------------------------------
40
+ //
41
+ // These map the ORM model API onto RocksDB's KV surface (see
42
+ // ./document-layer.ts) so callers query with `where`/`order`/`limit`/
43
+ // `offset`/`include` instead of designing keyspaces and driving iterators
44
+ // by hand. `documents(primaryKey?)` picks the document field used to form
45
+ // keys (default `'id'`); the per-collection helpers below use `'id'`.
46
+ this.docLayer = null;
33
47
  this.options = options;
34
48
  this.path = options.path ?? './data/rocksdb';
35
49
  }
@@ -147,6 +161,94 @@ class RocksDBStore {
147
161
  throw this.wrapError('list', err);
148
162
  }
149
163
  }
164
+ /**
165
+ * Ordered iteration over `[key, value]` pairs whose key is in `[gte, lt)`.
166
+ * Values are returned as stored (JSON strings, when written through the
167
+ * document layer). Used internally by the document layer's range scans.
168
+ */
169
+ async *scanRange(gte, lt) {
170
+ const client = this.requireClient();
171
+ try {
172
+ for await (const [key, value] of client.iterator({ gte, lt })) {
173
+ yield [String(key), value];
174
+ }
175
+ }
176
+ catch (err) {
177
+ throw this.wrapError('scanRange', err);
178
+ }
179
+ }
180
+ kvBackend() {
181
+ return {
182
+ get: (key) => this.get(key),
183
+ put: (key, value) => this.put(key, value),
184
+ del: (key) => this.del(key),
185
+ batch: (ops) => this.batch(ops),
186
+ scanRange: (gte, lt) => this.scanRange(gte, lt),
187
+ };
188
+ }
189
+ /**
190
+ * Returns a document layer bound to this store, keyed by `primaryKey`
191
+ * (default `'id'`). Exposes the full ORM model API
192
+ * (`findAll`/`findOne`/`findByPk`/`create`/`bulkCreate`/`update`/`destroy`/
193
+ * `count`/`truncate`/`upsert`/`increment`/`transaction`).
194
+ */
195
+ documents(primaryKey = 'id') {
196
+ if (primaryKey !== 'id') {
197
+ return new document_layer_1.KvDocumentLayer(this.kvBackend(), primaryKey);
198
+ }
199
+ if (!this.docLayer) {
200
+ this.docLayer = new document_layer_1.KvDocumentLayer(this.kvBackend(), 'id');
201
+ }
202
+ return this.docLayer;
203
+ }
204
+ /** ORM `findAll` over a collection: where/order/limit/offset/include. */
205
+ findAll(collection, options) {
206
+ return this.documents().findAll(collection, options);
207
+ }
208
+ /** ORM `findOne` over a collection. */
209
+ findOne(collection, options) {
210
+ return this.documents().findOne(collection, options);
211
+ }
212
+ /** ORM `findByPk` over a collection. */
213
+ findByPk(collection, pk, options) {
214
+ return this.documents().findByPk(collection, pk, options);
215
+ }
216
+ /** ORM `count` over a collection. */
217
+ count(collection, where) {
218
+ return this.documents().count(collection, where);
219
+ }
220
+ /** ORM `create` for a single document. */
221
+ create(collection, data) {
222
+ return this.documents().create(collection, data);
223
+ }
224
+ /** ORM `bulkCreate` for many documents (atomic batch). */
225
+ bulkCreate(collection, rows) {
226
+ return this.documents().bulkCreate(collection, rows);
227
+ }
228
+ /** ORM `update`: merge `values` into documents matching `where`. */
229
+ updateWhere(collection, values, where) {
230
+ return this.documents().update(collection, values, where);
231
+ }
232
+ /** ORM `destroy`: delete documents matching `where`. */
233
+ destroy(collection, where) {
234
+ return this.documents().destroy(collection, where);
235
+ }
236
+ /** ORM `truncate`: delete every document in a collection. */
237
+ truncate(collection) {
238
+ return this.documents().truncate(collection);
239
+ }
240
+ /** Upsert a document by primary key. */
241
+ upsert(collection, data) {
242
+ return this.documents().upsert(collection, data);
243
+ }
244
+ /** Atomically increment numeric fields of one document. */
245
+ increment(collection, pk, fields) {
246
+ return this.documents().increment(collection, pk, fields);
247
+ }
248
+ /** Run a function inside an atomic multi-document transaction (single batch commit). */
249
+ transaction(fn) {
250
+ return this.documents().transaction(fn);
251
+ }
150
252
  }
151
253
  exports.RocksDBStore = RocksDBStore;
152
254
  exports.default = RocksDBStore;
@@ -0,0 +1,21 @@
1
+ /**
2
+ * In-memory evaluator for the ORM's `where` clause, plus `order` sorting.
3
+ *
4
+ * The embedded key-value stores (RocksDB, LevelDB) have no query engine, so
5
+ * the document layer materializes a collection via a prefix range scan and
6
+ * filters/sorts it here. This module understands the full standard Prorm
7
+ * `where` shape - both the `Op` *symbol* form (`{ age: { [Op.gt]: 18 } }`) and
8
+ * the equivalent `$`-string form (`{ age: { $gt: 18 } }`) produced by the
9
+ * `and`/`or`/`not`/`eq`/... helper functions - as well as implicit-AND plain
10
+ * objects (`{ status: 'active', age: 30 }`) and logical `and`/`or`/`not`
11
+ * groupings. Keeping this self-contained means callers never hand-write a raw
12
+ * iterator filter to query these stores.
13
+ */
14
+ /** A where clause: plain equality object, operator object, and/or logical groups. */
15
+ export type WhereClause = Record<string | symbol, unknown>;
16
+ /** Order spec: a single field, a list of fields, or `[field, direction]` pairs. */
17
+ export type OrderSpec = string | Array<string | [string, ('ASC' | 'DESC' | 'asc' | 'desc')]>;
18
+ /** Evaluate a full where clause against a document. */
19
+ export declare function matchWhere(doc: Record<string, unknown>, where: WhereClause): boolean;
20
+ /** Return a new array sorted by the order spec (stable, multi-key). */
21
+ export declare function applyOrder<T extends Record<string, unknown>>(rows: T[], order: OrderSpec): T[];
@@ -0,0 +1,238 @@
1
+ "use strict";
2
+ /**
3
+ * In-memory evaluator for the ORM's `where` clause, plus `order` sorting.
4
+ *
5
+ * The embedded key-value stores (RocksDB, LevelDB) have no query engine, so
6
+ * the document layer materializes a collection via a prefix range scan and
7
+ * filters/sorts it here. This module understands the full standard Prorm
8
+ * `where` shape - both the `Op` *symbol* form (`{ age: { [Op.gt]: 18 } }`) and
9
+ * the equivalent `$`-string form (`{ age: { $gt: 18 } }`) produced by the
10
+ * `and`/`or`/`not`/`eq`/... helper functions - as well as implicit-AND plain
11
+ * objects (`{ status: 'active', age: 30 }`) and logical `and`/`or`/`not`
12
+ * groupings. Keeping this self-contained means callers never hand-write a raw
13
+ * iterator filter to query these stores.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.matchWhere = matchWhere;
17
+ exports.applyOrder = applyOrder;
18
+ /** Canonical operator name for a where-clause key, whether symbol or `$string`. */
19
+ function opName(key) {
20
+ if (typeof key === 'symbol') {
21
+ // Symbol descriptions look like `Symbol(gt)` -> description is `gt`.
22
+ return key.description ?? '';
23
+ }
24
+ // Strip a leading `$` from string operator keys (`$gt` -> `gt`).
25
+ return key.startsWith('$') ? key.slice(1) : key;
26
+ }
27
+ const LOGICAL = new Set(['and', 'or', 'not']);
28
+ /** Read a possibly dotted path (`a.b.c`) out of a document. */
29
+ function getPath(doc, path) {
30
+ if (doc == null)
31
+ return undefined;
32
+ if (!path.includes('.'))
33
+ return doc[path];
34
+ let cur = doc;
35
+ for (const part of path.split('.')) {
36
+ if (cur == null || typeof cur !== 'object')
37
+ return undefined;
38
+ cur = cur[part];
39
+ }
40
+ return cur;
41
+ }
42
+ function deepEqual(a, b) {
43
+ if (a === b)
44
+ return true;
45
+ if (a instanceof Date && b instanceof Date)
46
+ return a.getTime() === b.getTime();
47
+ if (Array.isArray(a) && Array.isArray(b)) {
48
+ return a.length === b.length && a.every((x, i) => deepEqual(x, b[i]));
49
+ }
50
+ if (a && b && typeof a === 'object' && typeof b === 'object') {
51
+ const ka = Object.keys(a);
52
+ const kb = Object.keys(b);
53
+ return ka.length === kb.length && ka.every((k) => deepEqual(a[k], b[k]));
54
+ }
55
+ return false;
56
+ }
57
+ /** Comparable ordering for `<`/`>` operators, coercing Dates to their epoch. */
58
+ function cmp(a, b) {
59
+ const av = a instanceof Date ? a.getTime() : a;
60
+ const bv = b instanceof Date ? b.getTime() : b;
61
+ if (av < bv)
62
+ return -1;
63
+ if (av > bv)
64
+ return 1;
65
+ return 0;
66
+ }
67
+ /** Translate a SQL LIKE pattern (`%`, `_`) into an anchored RegExp. */
68
+ function likeToRegExp(pattern, flags) {
69
+ let out = '';
70
+ for (const ch of pattern) {
71
+ if (ch === '%')
72
+ out += '.*';
73
+ else if (ch === '_')
74
+ out += '.';
75
+ else
76
+ out += ch.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
77
+ }
78
+ return new RegExp(`^${out}$`, flags);
79
+ }
80
+ /** Evaluate a single operator against an actual field value. */
81
+ function evalOperator(op, actual, operand) {
82
+ switch (op) {
83
+ case 'eq':
84
+ case 'is':
85
+ return deepEqual(actual, operand);
86
+ case 'ne':
87
+ return !deepEqual(actual, operand);
88
+ case 'gt':
89
+ return actual != null && operand != null && cmp(actual, operand) > 0;
90
+ case 'gte':
91
+ return actual != null && operand != null && cmp(actual, operand) >= 0;
92
+ case 'lt':
93
+ return actual != null && operand != null && cmp(actual, operand) < 0;
94
+ case 'lte':
95
+ return actual != null && operand != null && cmp(actual, operand) <= 0;
96
+ case 'in':
97
+ return Array.isArray(operand) && operand.some((v) => deepEqual(actual, v));
98
+ case 'notIn':
99
+ return Array.isArray(operand) && !operand.some((v) => deepEqual(actual, v));
100
+ case 'between':
101
+ return (Array.isArray(operand) && cmp(actual, operand[0]) >= 0 && cmp(actual, operand[1]) <= 0);
102
+ case 'notBetween':
103
+ return (Array.isArray(operand) && !(cmp(actual, operand[0]) >= 0 && cmp(actual, operand[1]) <= 0));
104
+ case 'isNull':
105
+ // `{ field: { [Op.isNull]: true } }` or `false` to invert.
106
+ return operand === false ? actual != null : actual == null;
107
+ case 'isNotNull':
108
+ return operand === false ? actual == null : actual != null;
109
+ case 'like':
110
+ case 'notLike': {
111
+ const ok = typeof actual === 'string' && likeToRegExp(String(operand), '').test(actual);
112
+ return op === 'like' ? ok : !ok;
113
+ }
114
+ case 'iLike':
115
+ case 'notILike': {
116
+ const ok = typeof actual === 'string' && likeToRegExp(String(operand), 'i').test(actual);
117
+ return op === 'iLike' ? ok : !ok;
118
+ }
119
+ case 'startsWith':
120
+ case 'notStartsWith': {
121
+ const ok = typeof actual === 'string' && actual.startsWith(String(operand));
122
+ return op === 'startsWith' ? ok : !ok;
123
+ }
124
+ case 'endsWith':
125
+ case 'notEndsWith': {
126
+ const ok = typeof actual === 'string' && actual.endsWith(String(operand));
127
+ return op === 'endsWith' ? ok : !ok;
128
+ }
129
+ case 'substring':
130
+ case 'notSubstring': {
131
+ const ok = typeof actual === 'string' && actual.includes(String(operand));
132
+ return op === 'substring' ? ok : !ok;
133
+ }
134
+ case 'regexp':
135
+ case 'notRegexp': {
136
+ const ok = typeof actual === 'string' && new RegExp(String(operand)).test(actual);
137
+ return op === 'regexp' ? ok : !ok;
138
+ }
139
+ case 'iRegexp':
140
+ case 'notIRegexp': {
141
+ const ok = typeof actual === 'string' && new RegExp(String(operand), 'i').test(actual);
142
+ return op === 'iRegexp' ? ok : !ok;
143
+ }
144
+ case 'contains': {
145
+ // Array containment: actual (array) contains all operand elements.
146
+ if (!Array.isArray(actual))
147
+ return false;
148
+ const ops = Array.isArray(operand) ? operand : [operand];
149
+ return ops.every((v) => actual.some((a) => deepEqual(a, v)));
150
+ }
151
+ case 'arrayContains':
152
+ return (Array.isArray(actual) &&
153
+ Array.isArray(operand) &&
154
+ operand.every((v) => actual.some((a) => deepEqual(a, v))));
155
+ case 'arrayContainedBy':
156
+ return (Array.isArray(actual) &&
157
+ Array.isArray(operand) &&
158
+ actual.every((a) => operand.some((v) => deepEqual(a, v))));
159
+ case 'arrayOverlaps':
160
+ return (Array.isArray(actual) &&
161
+ Array.isArray(operand) &&
162
+ actual.some((a) => operand.some((v) => deepEqual(a, v))));
163
+ default:
164
+ throw new Error(`Unsupported where operator "${op}" in embedded KV query`);
165
+ }
166
+ }
167
+ /** Match a single field's value against a condition (equality or operator map). */
168
+ function matchField(actual, condition) {
169
+ if (condition === null)
170
+ return actual == null;
171
+ if (typeof condition !== 'object' ||
172
+ condition instanceof Date ||
173
+ Array.isArray(condition)) {
174
+ // Bare value -> equality.
175
+ return deepEqual(actual, condition);
176
+ }
177
+ // Operator map: every operator must hold (implicit AND).
178
+ const keys = Reflect.ownKeys(condition);
179
+ if (keys.length === 0)
180
+ return true;
181
+ return keys.every((k) => {
182
+ const op = opName(k);
183
+ const operand = condition[k];
184
+ if (LOGICAL.has(op)) {
185
+ // Nested logical operator on a field value is rare but supported.
186
+ return matchField(actual, { [k]: operand });
187
+ }
188
+ return evalOperator(op, actual, operand);
189
+ });
190
+ }
191
+ /** Evaluate a full where clause against a document. */
192
+ function matchWhere(doc, where) {
193
+ const keys = Reflect.ownKeys(where);
194
+ return keys.every((key) => {
195
+ const op = opName(key);
196
+ const value = where[key];
197
+ if (op === 'and') {
198
+ const arr = Array.isArray(value) ? value : [value];
199
+ return arr.every((sub) => matchWhere(doc, sub));
200
+ }
201
+ if (op === 'or') {
202
+ const arr = Array.isArray(value) ? value : [value];
203
+ return arr.some((sub) => matchWhere(doc, sub));
204
+ }
205
+ if (op === 'not') {
206
+ const arr = Array.isArray(value) ? value : [value];
207
+ return !arr.some((sub) => matchWhere(doc, sub));
208
+ }
209
+ // Otherwise `key` is a field name (symbol keys only ever encode operators,
210
+ // so a symbol here that is not logical is an operator with no field - skip).
211
+ if (typeof key === 'symbol')
212
+ return true;
213
+ return matchField(getPath(doc, key), value);
214
+ });
215
+ }
216
+ /** Normalize an `order` spec into `[field, ascending]` tuples. */
217
+ function normalizeOrder(order) {
218
+ if (typeof order === 'string')
219
+ return [[order, true]];
220
+ return order.map((entry) => {
221
+ if (typeof entry === 'string')
222
+ return [entry, true];
223
+ const [field, dir] = entry;
224
+ return [field, String(dir).toUpperCase() !== 'DESC'];
225
+ });
226
+ }
227
+ /** Return a new array sorted by the order spec (stable, multi-key). */
228
+ function applyOrder(rows, order) {
229
+ const keys = normalizeOrder(order);
230
+ return [...rows].sort((a, b) => {
231
+ for (const [field, asc] of keys) {
232
+ const c = cmp(getPath(a, field), getPath(b, field));
233
+ if (c !== 0)
234
+ return asc ? c : -c;
235
+ }
236
+ return 0;
237
+ });
238
+ }
@@ -0,0 +1,84 @@
1
+ /**
2
+ * Rockset store.
3
+ *
4
+ * Rockset is a real-time analytics database that indexes streaming and
5
+ * document data (a "converged index" over row, columnar, and inverted
6
+ * indexes) and serves low-latency SQL over it. It is a schemaless,
7
+ * document-oriented, HTTP/JSON service with an official client
8
+ * (`@rockset/client`); there is no relational connection, no server-side
9
+ * transactions, and ingestion is document-based (`addDocuments`), so it does
10
+ * not fit the SQL-shaped `Dialect` interface (`src/dialects/dialect.ts`).
11
+ * This class implements the minimal `NoSqlStore` marker interface
12
+ * (`src/nosql/store.ts`) and exposes Rockset's query + document API directly.
13
+ *
14
+ * ## Driver: `@rockset/client`
15
+ *
16
+ * The `@rockset/client` package is an optional peer dependency, lazily
17
+ * `require`d inside `connect()` so importing this module never forces it to be
18
+ * installed. Tests inject a pre-built mock client via `RocksetStoreOptions.client`,
19
+ * which skips the `require` entirely.
20
+ */
21
+ import type { NoSqlStore } from '../store';
22
+ /**
23
+ * Minimal structural type for the pieces of a `@rockset/client` instance this
24
+ * store uses. Kept local so this module type-checks without the optional
25
+ * driver installed.
26
+ */
27
+ export interface RocksetClientLike {
28
+ queries: {
29
+ query(request: {
30
+ sql: {
31
+ query: string;
32
+ parameters?: unknown[];
33
+ };
34
+ }): Promise<any>;
35
+ };
36
+ documents: {
37
+ addDocuments(workspace: string, collection: string, request: {
38
+ data: unknown[];
39
+ }): Promise<any>;
40
+ };
41
+ }
42
+ /** Connection options for `RocksetStore`. */
43
+ export interface RocksetStoreOptions {
44
+ /** Rockset API key used to authenticate the client. */
45
+ apiKey?: string;
46
+ /** Rockset API server host, e.g. `https://api.usw2a1.rockset.com`. */
47
+ host?: string;
48
+ /**
49
+ * A pre-built `@rockset/client` instance (or compatible mock). When provided,
50
+ * `connect()` uses it directly and skips `require('@rockset/client')`. This
51
+ * is how tests inject a mock without the real driver installed.
52
+ */
53
+ client?: RocksetClientLike;
54
+ }
55
+ /**
56
+ * `RocksetStore` wraps a `@rockset/client` instance and exposes SQL querying
57
+ * (`query`) plus document ingestion (`ingest`) into a `workspace.collection`.
58
+ */
59
+ export declare class RocksetStore implements NoSqlStore {
60
+ readonly name = "rockset";
61
+ readonly library = "@rockset/client";
62
+ private readonly options;
63
+ private client;
64
+ private connected;
65
+ constructor(options?: RocksetStoreOptions);
66
+ connect(): Promise<void>;
67
+ disconnect(): Promise<void>;
68
+ isConnected(): boolean;
69
+ /** Returns the underlying `@rockset/client` instance for anything not wrapped here. */
70
+ getClient(): RocksetClientLike;
71
+ private requireClient;
72
+ /**
73
+ * Run a SQL query via `client.queries.query({ sql: { query, parameters } })`
74
+ * and return the `results` array from the response.
75
+ */
76
+ query<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<T[]>;
77
+ /**
78
+ * Ingest `docs` into `target` (a `workspace.collection` path, or just a
79
+ * collection name — defaulting the workspace to `commons`) via
80
+ * `client.documents.addDocuments(workspace, collection, { data })`.
81
+ */
82
+ ingest(target: string, docs: Array<Record<string, unknown>>): Promise<any>;
83
+ }
84
+ export default RocksetStore;
@@ -0,0 +1,170 @@
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 S3ClientLike {
9
+ send(command: unknown): Promise<any>;
10
+ destroy?(): void;
11
+ }
12
+ /** Connection options for `S3Store`. */
13
+ export interface S3StoreOptions {
14
+ /** AWS region, e.g. 'us-east-1'. */
15
+ region?: string;
16
+ /** Static credentials. Omit to fall back to the default AWS credential provider chain. */
17
+ credentials?: {
18
+ accessKeyId: string;
19
+ secretAccessKey: string;
20
+ sessionToken?: string;
21
+ };
22
+ /**
23
+ * Override the service endpoint, e.g. 'http://localhost:9000' for a
24
+ * MinIO / LocalStack S3-compatible server. When set, region and
25
+ * credentials can be dummy values for servers that don't validate them.
26
+ */
27
+ endpoint?: string;
28
+ /**
29
+ * Use path-style bucket addressing (`endpoint/bucket/key`) instead of
30
+ * virtual-hosted-style (`bucket.endpoint/key`). Usually required for
31
+ * MinIO / LocalStack and other S3-compatible servers.
32
+ */
33
+ forcePathStyle?: boolean;
34
+ /**
35
+ * A pre-built `S3Client` (or compatible object). When provided,
36
+ * `connect()` uses it directly and does NOT require the SDK — this is how
37
+ * tests inject a mock client, and how callers can supply a custom-configured
38
+ * client. When omitted, `connect()` builds a real `S3Client` from the
39
+ * options above.
40
+ */
41
+ client?: S3ClientLike;
42
+ }
43
+ /** Options for `putObject()`. */
44
+ export interface PutObjectOptions {
45
+ /** MIME type of the body, e.g. 'application/json'. */
46
+ contentType?: string;
47
+ /** Arbitrary user metadata (stored as `x-amz-meta-*` headers). */
48
+ metadata?: Record<string, string>;
49
+ /** Cache-Control header value to store with the object. */
50
+ cacheControl?: string;
51
+ /** Content-Encoding header value to store with the object. */
52
+ contentEncoding?: string;
53
+ /** Canned ACL, e.g. 'private', 'public-read'. */
54
+ acl?: string;
55
+ /** Server-side encryption algorithm, e.g. 'AES256', 'aws:kms'. */
56
+ serverSideEncryption?: string;
57
+ }
58
+ /** Result of `putObject()`. */
59
+ export interface PutObjectResult {
60
+ /** Entity tag of the newly stored object. */
61
+ etag?: string;
62
+ /** Version ID, when the bucket has versioning enabled. */
63
+ versionId?: string;
64
+ }
65
+ /** Result of `getObject()`. */
66
+ export interface GetObjectResult {
67
+ /** The object's body stream/blob, exactly as the SDK returns it. */
68
+ body: unknown;
69
+ contentType?: string;
70
+ contentLength?: number;
71
+ etag?: string;
72
+ lastModified?: Date;
73
+ metadata?: Record<string, string>;
74
+ }
75
+ /** Result of `headObject()` — object metadata without the body. */
76
+ export interface HeadObjectResult {
77
+ contentType?: string;
78
+ contentLength?: number;
79
+ etag?: string;
80
+ lastModified?: Date;
81
+ metadata?: Record<string, string>;
82
+ }
83
+ /** A single object entry in a `listObjects()` result. */
84
+ export interface S3ObjectSummary {
85
+ key?: string;
86
+ size?: number;
87
+ etag?: string;
88
+ lastModified?: Date;
89
+ }
90
+ /** Result of `listObjects()`. */
91
+ export interface ListObjectsResult {
92
+ objects: S3ObjectSummary[];
93
+ /** True when the listing was truncated (more objects exist than were returned). */
94
+ isTruncated: boolean;
95
+ /** Continuation token to fetch the next page, present when `isTruncated`. */
96
+ nextContinuationToken?: string;
97
+ }
98
+ /** Result of `copyObject()`. */
99
+ export interface CopyObjectResult {
100
+ etag?: string;
101
+ lastModified?: Date;
102
+ }
103
+ /**
104
+ * Amazon S3 store, implementing the minimal `NoSqlStore` marker interface.
105
+ * Unlike the SQL dialects, there is no `query(sql)` — S3's operations are
106
+ * object-shaped (Put/Get/Delete/List/Head/Copy) and that shape is preserved
107
+ * here rather than forced into a SQL string.
108
+ */
109
+ export declare class S3Store implements NoSqlStore {
110
+ readonly name = "s3";
111
+ readonly library = "@aws-sdk/client-s3";
112
+ private readonly options;
113
+ private client;
114
+ private aws;
115
+ private connected;
116
+ constructor(options?: S3StoreOptions);
117
+ connect(): Promise<void>;
118
+ /**
119
+ * Attempt to lazy-load `@aws-sdk/client-s3` for its command constructors.
120
+ * Best-effort: when a client was injected (e.g. a test mock) the SDK may
121
+ * not be installed, so a failure here is swallowed and the command classes
122
+ * are loaded on demand instead (see `command()`).
123
+ */
124
+ private tryLoadSdk;
125
+ disconnect(): Promise<void>;
126
+ isConnected(): boolean;
127
+ /** Returns the underlying `S3Client` (loosely typed) for anything not wrapped here. */
128
+ getClient(): S3ClientLike;
129
+ private requireClient;
130
+ /**
131
+ * Resolve an S3 command constructor by name from the (lazily loaded) SDK,
132
+ * so that with an injected mock client we only load `@aws-sdk/client-s3`
133
+ * the first time a command is actually built. Throws a `ConnectionError`
134
+ * if the SDK genuinely can't be resolved.
135
+ */
136
+ private command;
137
+ /** Wraps an AWS SDK failure in a `DatabaseError`, preserving the original error. */
138
+ private wrapError;
139
+ /** `PutObject` — store an object's body (and optional metadata) under `bucket`/`key`. */
140
+ putObject(bucket: string, key: string, body: unknown, options?: PutObjectOptions): Promise<PutObjectResult>;
141
+ /** `GetObject` — fetch an object's body and metadata. */
142
+ getObject(bucket: string, key: string): Promise<GetObjectResult>;
143
+ /** `DeleteObject` — remove an object. Succeeds even if the key doesn't exist. */
144
+ deleteObject(bucket: string, key: string): Promise<void>;
145
+ /**
146
+ * `ListObjectsV2` — list objects in `bucket`, optionally restricted to
147
+ * those whose key starts with `prefix`. A single call returns at most
148
+ * 1000 objects; use `result.nextContinuationToken` (via the raw client)
149
+ * to page beyond that.
150
+ */
151
+ listObjects(bucket: string, prefix?: string): Promise<ListObjectsResult>;
152
+ /** `HeadObject` — fetch an object's metadata without its body. Throws (NotFound) if the object doesn't exist. */
153
+ headObject(bucket: string, key: string): Promise<HeadObjectResult>;
154
+ /**
155
+ * Whether an object exists, implemented via `HeadObject`. Returns `false`
156
+ * when S3 reports the object is missing (a `NotFound` / 404 error) rather
157
+ * than throwing; any other error (e.g. access denied) is re-thrown.
158
+ */
159
+ objectExists(bucket: string, key: string): Promise<boolean>;
160
+ /** `CopyObject` — server-side copy from `srcBucket`/`srcKey` to `destBucket`/`destKey`. */
161
+ copyObject(srcBucket: string, srcKey: string, destBucket: string, destKey: string): Promise<CopyObjectResult>;
162
+ /**
163
+ * Recognize S3's "object does not exist" errors across the shapes the SDK
164
+ * (and its wrapped form here) can surface them: the raw error's `.name`
165
+ * (`NotFound`, `NoSuchKey`), its HTTP status (404), or the wrapped
166
+ * `DatabaseError`'s `.parent`.
167
+ */
168
+ private isNotFound;
169
+ }
170
+ export default S3Store;