ts-prorm-orm 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +194 -72
  3. package/dist/audit/history-query.d.ts +35 -0
  4. package/dist/audit/index.d.ts +16 -0
  5. package/dist/audit/logger.d.ts +126 -0
  6. package/dist/cache/cache-manager.d.ts +341 -0
  7. package/dist/cache/index.d.ts +8 -0
  8. package/dist/cache/redis-cluster-cache.d.ts +164 -0
  9. package/dist/cache/redis-cluster-cache.js +19 -36
  10. package/dist/cli/cloud.d.ts +55 -0
  11. package/dist/cli/cloud.js +318 -0
  12. package/dist/cli/commands/auth.d.ts +2 -0
  13. package/dist/cli/commands/auth.js +345 -0
  14. package/dist/cli/commands/billing.d.ts +2 -0
  15. package/dist/cli/commands/billing.js +135 -0
  16. package/dist/cli/commands/code.d.ts +2 -0
  17. package/dist/cli/commands/code.js +168 -0
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +154 -0
  20. package/dist/cli/commands/db.d.ts +2 -0
  21. package/dist/cli/commands/db.js +189 -0
  22. package/dist/cli/commands/index.d.ts +1 -0
  23. package/dist/cli/commands/index.js +22 -0
  24. package/dist/cli/commands/keys.d.ts +2 -0
  25. package/dist/cli/commands/keys.js +100 -0
  26. package/dist/cli/commands/misc.d.ts +2 -0
  27. package/dist/cli/commands/misc.js +282 -0
  28. package/dist/cli/commands/pull.d.ts +2 -0
  29. package/dist/cli/commands/pull.js +306 -0
  30. package/dist/cli/commands/runners.d.ts +2 -0
  31. package/dist/cli/commands/runners.js +218 -0
  32. package/dist/cli/commands/scaffold.d.ts +2 -0
  33. package/dist/cli/commands/scaffold.js +383 -0
  34. package/dist/cli/commands/secrets.d.ts +2 -0
  35. package/dist/cli/commands/secrets.js +162 -0
  36. package/dist/cli/commands/store.d.ts +2 -0
  37. package/dist/cli/commands/store.js +274 -0
  38. package/dist/cli/commands/system.d.ts +10 -0
  39. package/dist/cli/commands/system.js +169 -0
  40. package/dist/cli/commands/teams.d.ts +2 -0
  41. package/dist/cli/commands/teams.js +189 -0
  42. package/dist/cli/commands/user.d.ts +2 -0
  43. package/dist/cli/commands/user.js +171 -0
  44. package/dist/cli/framework.d.ts +103 -0
  45. package/dist/cli/framework.js +436 -0
  46. package/dist/cli/io.d.ts +26 -0
  47. package/dist/cli/io.js +181 -0
  48. package/dist/cli/keychain.d.ts +10 -0
  49. package/dist/cli/keychain.js +101 -0
  50. package/dist/cli/prompt.d.ts +20 -0
  51. package/dist/cli/prompt.js +111 -0
  52. package/dist/cli.d.ts +214 -0
  53. package/dist/cli.js +72 -5
  54. package/dist/compliance/audit-trail.d.ts +66 -0
  55. package/dist/compliance/backup-verification.d.ts +279 -0
  56. package/dist/compliance/breach-detector.d.ts +197 -0
  57. package/dist/compliance/consent-record.d.ts +107 -0
  58. package/dist/compliance/consent-versioning.d.ts +169 -0
  59. package/dist/compliance/cross-border-log.d.ts +254 -0
  60. package/dist/compliance/data-classifier.d.ts +127 -0
  61. package/dist/compliance/data-lineage.d.ts +268 -0
  62. package/dist/compliance/data-masker.d.ts +110 -0
  63. package/dist/compliance/data-portability.d.ts +98 -0
  64. package/dist/compliance/data-retention.d.ts +108 -0
  65. package/dist/compliance/dsar-workflow.d.ts +175 -0
  66. package/dist/compliance/field-encryption.d.ts +84 -0
  67. package/dist/compliance/immutable-record.d.ts +84 -0
  68. package/dist/compliance/index.d.ts +93 -0
  69. package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
  70. package/dist/compliance/pseudonymization.d.ts +96 -0
  71. package/dist/compliance/query-firewall.d.ts +661 -0
  72. package/dist/compliance/rate-limiter.d.ts +203 -0
  73. package/dist/compliance/right-to-erasure.d.ts +96 -0
  74. package/dist/compliance/row-level-security.d.ts +152 -0
  75. package/dist/compliance/security-decorator.d.ts +388 -0
  76. package/dist/compliance/security-monitor.d.ts +170 -0
  77. package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
  78. package/dist/compliance/session-isolation.d.ts +286 -0
  79. package/dist/compliance/tls-enforcer.d.ts +51 -0
  80. package/dist/compliance/worm-storage.d.ts +225 -0
  81. package/dist/connection-manager.d.ts +130 -0
  82. package/dist/connection-pool.d.ts +311 -0
  83. package/dist/decorators/audit.d.ts +49 -0
  84. package/dist/decorators/check.d.ts +218 -0
  85. package/dist/decorators/collate.d.ts +346 -0
  86. package/dist/decorators/comment.d.ts +51 -0
  87. package/dist/decorators/database-settings.d.ts +193 -0
  88. package/dist/decorators/default.d.ts +148 -0
  89. package/dist/decorators/encryption.d.ts +175 -0
  90. package/dist/decorators/engine.d.ts +97 -0
  91. package/dist/decorators/fk-constraints.d.ts +387 -0
  92. package/dist/decorators/foreign-table.d.ts +57 -0
  93. package/dist/decorators/generated.d.ts +232 -0
  94. package/dist/decorators/hstore.d.ts +96 -0
  95. package/dist/decorators/index.d.ts +57 -0
  96. package/dist/decorators/index.js +14 -30
  97. package/dist/decorators/json-column.d.ts +47 -0
  98. package/dist/decorators/jsonb.d.ts +83 -0
  99. package/dist/decorators/orm-decorators.d.ts +274 -0
  100. package/dist/decorators/permissions.d.ts +192 -0
  101. package/dist/decorators/procedure.d.ts +168 -0
  102. package/dist/decorators/procedure.js +31 -7
  103. package/dist/decorators/query-options.d.ts +527 -0
  104. package/dist/decorators/range.d.ts +122 -0
  105. package/dist/decorators/set-column.d.ts +43 -0
  106. package/dist/decorators/spatial.d.ts +60 -0
  107. package/dist/decorators/storage.d.ts +561 -0
  108. package/dist/decorators/timezone.d.ts +319 -0
  109. package/dist/decorators/trigger.d.ts +50 -0
  110. package/dist/decorators/uuid.d.ts +102 -0
  111. package/dist/decorators/view.d.ts +213 -0
  112. package/dist/diagrams/chen-diagram.d.ts +70 -0
  113. package/dist/diagrams/chen-diagram.js +33 -31
  114. package/dist/diagrams/class-diagram.d.ts +78 -0
  115. package/dist/diagrams/class-diagram.js +23 -27
  116. package/dist/diagrams/dependency-diagram.d.ts +82 -0
  117. package/dist/diagrams/dependency-diagram.js +18 -9
  118. package/dist/diagrams/er-diagram.d.ts +82 -0
  119. package/dist/diagrams/er-diagram.js +174 -231
  120. package/dist/diagrams/flow-diagram.d.ts +70 -0
  121. package/dist/diagrams/flow-diagram.js +23 -18
  122. package/dist/diagrams/gantt-diagram.d.ts +67 -0
  123. package/dist/diagrams/gantt-diagram.js +20 -18
  124. package/dist/diagrams/index-diagram.d.ts +61 -0
  125. package/dist/diagrams/index-diagram.js +36 -31
  126. package/dist/diagrams/index.d.ts +155 -0
  127. package/dist/diagrams/index.js +7 -1
  128. package/dist/diagrams/migration-diagram.d.ts +67 -0
  129. package/dist/diagrams/migration-diagram.js +45 -57
  130. package/dist/diagrams/model-diagram.d.ts +85 -0
  131. package/dist/diagrams/model-diagram.js +225 -287
  132. package/dist/diagrams/package-diagram.d.ts +69 -0
  133. package/dist/diagrams/package-diagram.js +30 -32
  134. package/dist/diagrams/palette.d.ts +138 -0
  135. package/dist/diagrams/palette.js +134 -25
  136. package/dist/diagrams/relational-diagram.d.ts +82 -0
  137. package/dist/diagrams/relational-diagram.js +51 -59
  138. package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
  139. package/dist/diagrams/schemadoc-diagram.js +36 -28
  140. package/dist/diagrams/sequence-diagram.d.ts +61 -0
  141. package/dist/diagrams/sequence-diagram.js +20 -11
  142. package/dist/diagrams/state-diagram.d.ts +85 -0
  143. package/dist/diagrams/state-diagram.js +21 -17
  144. package/dist/diagrams/svg-dom.d.ts +62 -0
  145. package/dist/diagrams/svg-dom.js +11 -0
  146. package/dist/diagrams/tree-diagram.d.ts +47 -0
  147. package/dist/diagrams/tree-diagram.js +19 -10
  148. package/dist/dialects/clickhouse/index.d.ts +660 -0
  149. package/dist/dialects/clickhouse/index.js +107 -2
  150. package/dist/dialects/cockroachdb/index.d.ts +1708 -0
  151. package/dist/dialects/cockroachdb/index.js +139 -10
  152. package/dist/dialects/cratedb/index.d.ts +262 -0
  153. package/dist/dialects/cratedb/index.js +148 -0
  154. package/dist/dialects/databricks/index.d.ts +397 -0
  155. package/dist/dialects/databricks/index.js +233 -11
  156. package/dist/dialects/db2/index.d.ts +729 -0
  157. package/dist/dialects/db2/index.js +152 -2
  158. package/dist/dialects/dialect.d.ts +1653 -0
  159. package/dist/dialects/duckdb/index.d.ts +440 -0
  160. package/dist/dialects/duckdb/index.js +21 -37
  161. package/dist/dialects/exasol/index.d.ts +197 -0
  162. package/dist/dialects/exasol/index.js +14 -0
  163. package/dist/dialects/firebird/index.d.ts +286 -0
  164. package/dist/dialects/firebird/index.js +135 -0
  165. package/dist/dialects/greenplum/index.d.ts +336 -0
  166. package/dist/dialects/greenplum/index.js +168 -0
  167. package/dist/dialects/hana/index.d.ts +512 -0
  168. package/dist/dialects/hana/index.js +17 -35
  169. package/dist/dialects/mariadb/index.d.ts +1241 -0
  170. package/dist/dialects/mariadb/index.js +181 -43
  171. package/dist/dialects/mssql/index.d.ts +729 -0
  172. package/dist/dialects/mssql/index.js +76 -7
  173. package/dist/dialects/mysql/index.d.ts +1233 -0
  174. package/dist/dialects/mysql/index.js +87 -19
  175. package/dist/dialects/oracle/index.d.ts +1222 -0
  176. package/dist/dialects/oracle/index.js +210 -9
  177. package/dist/dialects/postgres/index.d.ts +1598 -0
  178. package/dist/dialects/postgres/index.js +34 -13
  179. package/dist/dialects/query-stream-helper.d.ts +58 -0
  180. package/dist/dialects/questdb/index.d.ts +430 -0
  181. package/dist/dialects/questdb/index.js +292 -0
  182. package/dist/dialects/redshift/index.d.ts +933 -0
  183. package/dist/dialects/redshift/index.js +17 -5
  184. package/dist/dialects/singlestore/index.d.ts +233 -0
  185. package/dist/dialects/singlestore/index.js +53 -0
  186. package/dist/dialects/snowflake/index.d.ts +727 -0
  187. package/dist/dialects/snowflake/index.js +154 -5
  188. package/dist/dialects/spanner/index.d.ts +660 -0
  189. package/dist/dialects/spanner/index.js +43 -21
  190. package/dist/dialects/sqlite/index.d.ts +1133 -0
  191. package/dist/dialects/sqlite/index.js +168 -30
  192. package/dist/dialects/tidb/index.d.ts +226 -0
  193. package/dist/dialects/tidb/index.js +10 -0
  194. package/dist/dialects/timescaledb/index.d.ts +286 -0
  195. package/dist/dialects/timescaledb/index.js +179 -0
  196. package/dist/dialects/trino/index.d.ts +230 -0
  197. package/dist/dialects/trino/index.js +85 -10
  198. package/dist/dialects/turso/index.d.ts +98 -0
  199. package/dist/dialects/turso/index.js +10 -0
  200. package/dist/dialects/vertica/index.d.ts +321 -0
  201. package/dist/dialects/vertica/index.js +161 -0
  202. package/dist/dialects/yugabytedb/index.d.ts +276 -0
  203. package/dist/dialects/yugabytedb/index.js +121 -0
  204. package/dist/errors/index.d.ts +378 -0
  205. package/dist/errors/index.js +29 -1
  206. package/dist/errors/utils.d.ts +53 -0
  207. package/dist/errors.d.ts +5 -0
  208. package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
  209. package/dist/extensions/catalog/mssql-features.d.ts +20 -0
  210. package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
  211. package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
  212. package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
  213. package/dist/extensions/index.d.ts +34 -0
  214. package/dist/extensions/types.d.ts +43 -0
  215. package/dist/external-fields/adapters.d.ts +50 -0
  216. package/dist/external-fields/adapters.js +227 -0
  217. package/dist/external-fields/decorator.d.ts +77 -0
  218. package/dist/external-fields/decorator.js +80 -0
  219. package/dist/external-fields/index.d.ts +10 -0
  220. package/dist/external-fields/index.js +19 -0
  221. package/dist/external-fields/runtime.d.ts +39 -0
  222. package/dist/external-fields/runtime.js +221 -0
  223. package/dist/foreign-data.d.ts +168 -0
  224. package/dist/graph/base-graph-dialect.d.ts +250 -0
  225. package/dist/graph/base-graph-dialect.js +539 -0
  226. package/dist/graph/dgraph/index.d.ts +65 -0
  227. package/dist/graph/dgraph/index.js +559 -0
  228. package/dist/graph/gremlin/index.d.ts +59 -0
  229. package/dist/graph/gremlin/index.js +378 -0
  230. package/dist/graph/index.d.ts +60 -0
  231. package/dist/graph/index.js +67 -0
  232. package/dist/graph/neo4j/index.d.ts +50 -0
  233. package/dist/graph/neo4j/index.js +462 -0
  234. package/dist/graph/types.d.ts +213 -0
  235. package/dist/graph/types.js +234 -0
  236. package/dist/hooks/hooks-manager.d.ts +189 -0
  237. package/dist/hooks/index.d.ts +8 -0
  238. package/dist/index.d.ts +711 -0
  239. package/dist/index.js +19 -4
  240. package/dist/logging.d.ts +183 -0
  241. package/dist/migrations/index.d.ts +9 -0
  242. package/dist/migrations/migration.d.ts +143 -0
  243. package/dist/migrations/migrator.d.ts +199 -0
  244. package/dist/migrations/prormmigration.d.ts +131 -0
  245. package/dist/migrations/query-interface.d.ts +335 -0
  246. package/dist/migrations/seeder.d.ts +167 -0
  247. package/dist/models/associations.d.ts +131 -0
  248. package/dist/models/associations.js +7 -2
  249. package/dist/models/constraints.d.ts +175 -0
  250. package/dist/models/data-types.d.ts +1656 -0
  251. package/dist/models/decorators.d.ts +328 -0
  252. package/dist/models/decorators.js +61 -82
  253. package/dist/models/eager-load.d.ts +86 -0
  254. package/dist/models/eager-load.js +369 -0
  255. package/dist/models/index.d.ts +13 -0
  256. package/dist/models/indexes.d.ts +325 -0
  257. package/dist/models/methods.d.ts +419 -0
  258. package/dist/models/model-manager.d.ts +76 -0
  259. package/dist/models/model.d.ts +820 -0
  260. package/dist/models/model.js +15 -101
  261. package/dist/models/operators.d.ts +29 -0
  262. package/dist/models/scopes.d.ts +71 -0
  263. package/dist/models/typescript-types.d.ts +177 -0
  264. package/dist/nosql/aerospike/index.d.ts +126 -0
  265. package/dist/nosql/allegrograph/index.d.ts +86 -0
  266. package/dist/nosql/arangodb/index.d.ts +285 -0
  267. package/dist/nosql/arangodb/index.js +274 -2
  268. package/dist/nosql/arangodb/where.d.ts +38 -0
  269. package/dist/nosql/arangodb/where.js +94 -0
  270. package/dist/nosql/azure-blob/index.d.ts +104 -0
  271. package/dist/nosql/beanstalkd/index.d.ts +88 -0
  272. package/dist/nosql/beequeue/index.d.ts +99 -0
  273. package/dist/nosql/bigchaindb/index.d.ts +113 -0
  274. package/dist/nosql/bigtable/index.d.ts +144 -0
  275. package/dist/nosql/blazegraph/index.d.ts +88 -0
  276. package/dist/nosql/bullmq/index.d.ts +83 -0
  277. package/dist/nosql/cassandra/index.d.ts +119 -0
  278. package/dist/nosql/chroma/index.d.ts +151 -0
  279. package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
  280. package/dist/nosql/coherence/index.d.ts +91 -0
  281. package/dist/nosql/cosmosdb/index.d.ts +78 -0
  282. package/dist/nosql/couchbase/index.d.ts +103 -0
  283. package/dist/nosql/dax/index.d.ts +118 -0
  284. package/dist/nosql/deno-kv/index.d.ts +109 -0
  285. package/dist/nosql/dgraph/index.d.ts +80 -0
  286. package/dist/nosql/doris/index.d.ts +88 -0
  287. package/dist/nosql/druid/index.d.ts +95 -0
  288. package/dist/nosql/dynamodb/index.d.ts +643 -0
  289. package/dist/nosql/dynamodb/index.js +423 -0
  290. package/dist/nosql/elasticsearch/index.d.ts +239 -0
  291. package/dist/nosql/etcd/index.d.ts +243 -0
  292. package/dist/nosql/eventhubs/index.d.ts +89 -0
  293. package/dist/nosql/eventstore/index.d.ts +102 -0
  294. package/dist/nosql/faunadb/index.d.ts +141 -0
  295. package/dist/nosql/faunadb/index.js +329 -0
  296. package/dist/nosql/firestore/index.d.ts +67 -0
  297. package/dist/nosql/fluree/index.d.ts +88 -0
  298. package/dist/nosql/fuseki/index.d.ts +94 -0
  299. package/dist/nosql/gcs/index.d.ts +62 -0
  300. package/dist/nosql/gearman/index.d.ts +77 -0
  301. package/dist/nosql/geode/index.d.ts +93 -0
  302. package/dist/nosql/graphdb/index.d.ts +86 -0
  303. package/dist/nosql/graylog/index.d.ts +118 -0
  304. package/dist/nosql/gridgain/index.d.ts +78 -0
  305. package/dist/nosql/hazelcast/index.d.ts +73 -0
  306. package/dist/nosql/hbase/index.d.ts +123 -0
  307. package/dist/nosql/ignite/index.d.ts +80 -0
  308. package/dist/nosql/immudb/index.d.ts +131 -0
  309. package/dist/nosql/index.d.ts +215 -0
  310. package/dist/nosql/infinispan/index.d.ts +95 -0
  311. package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
  312. package/dist/nosql/influxdb/flux-compiler.js +170 -0
  313. package/dist/nosql/influxdb/index.d.ts +300 -0
  314. package/dist/nosql/influxdb/index.js +0 -0
  315. package/dist/nosql/kafka/index.d.ts +113 -0
  316. package/dist/nosql/keyspaces/index.d.ts +122 -0
  317. package/dist/nosql/kinesis/index.d.ts +121 -0
  318. package/dist/nosql/leveldb/index.d.ts +112 -0
  319. package/dist/nosql/leveldb/index.js +103 -1
  320. package/dist/nosql/lmdb/index.d.ts +76 -0
  321. package/dist/nosql/loki/index.d.ts +126 -0
  322. package/dist/nosql/marklogic/index.d.ts +76 -0
  323. package/dist/nosql/materialize/index.d.ts +91 -0
  324. package/dist/nosql/meilisearch/index.d.ts +76 -0
  325. package/dist/nosql/memcached/index.d.ts +138 -0
  326. package/dist/nosql/milvus/index.d.ts +167 -0
  327. package/dist/nosql/minio/index.d.ts +122 -0
  328. package/dist/nosql/momento/index.d.ts +99 -0
  329. package/dist/nosql/mongodb/index.d.ts +265 -0
  330. package/dist/nosql/mongodb/index.js +139 -0
  331. package/dist/nosql/mongodb/where.d.ts +8 -0
  332. package/dist/nosql/mongodb/where.js +181 -0
  333. package/dist/nosql/nats/index.d.ts +139 -0
  334. package/dist/nosql/nedb/index.d.ts +79 -0
  335. package/dist/nosql/neo4j/index.d.ts +217 -0
  336. package/dist/nosql/neo4j/index.js +26 -14
  337. package/dist/nosql/neptune/index.d.ts +234 -0
  338. package/dist/nosql/neptune/index.js +23 -9
  339. package/dist/nosql/nsq/index.d.ts +93 -0
  340. package/dist/nosql/opensearch/index.d.ts +97 -0
  341. package/dist/nosql/orientdb/index.d.ts +72 -0
  342. package/dist/nosql/papertrail/index.d.ts +120 -0
  343. package/dist/nosql/pinecone/index.d.ts +148 -0
  344. package/dist/nosql/pinot/index.d.ts +90 -0
  345. package/dist/nosql/pouchdb/index.d.ts +95 -0
  346. package/dist/nosql/prometheus/index.d.ts +112 -0
  347. package/dist/nosql/provendb/index.d.ts +143 -0
  348. package/dist/nosql/provendb/index.js +262 -0
  349. package/dist/nosql/pubsub/index.d.ts +83 -0
  350. package/dist/nosql/pulsar/index.d.ts +105 -0
  351. package/dist/nosql/qdrant/index.d.ts +231 -0
  352. package/dist/nosql/qldb/index.d.ts +182 -0
  353. package/dist/nosql/qldb/index.js +302 -1
  354. package/dist/nosql/r2/index.d.ts +160 -0
  355. package/dist/nosql/rabbitmq/index.d.ts +131 -0
  356. package/dist/nosql/ravendb/index.d.ts +138 -0
  357. package/dist/nosql/ravendb/index.js +323 -9
  358. package/dist/nosql/ravendb/where.d.ts +38 -0
  359. package/dist/nosql/ravendb/where.js +94 -0
  360. package/dist/nosql/redis/index.d.ts +267 -0
  361. package/dist/nosql/redis/index.js +19 -5
  362. package/dist/nosql/redpanda/index.d.ts +117 -0
  363. package/dist/nosql/resque/index.d.ts +91 -0
  364. package/dist/nosql/rethinkdb/index.d.ts +194 -0
  365. package/dist/nosql/rethinkdb/index.js +290 -0
  366. package/dist/nosql/rethinkdb/where.d.ts +38 -0
  367. package/dist/nosql/rethinkdb/where.js +94 -0
  368. package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
  369. package/dist/nosql/rocksdb/document-layer.js +338 -0
  370. package/dist/nosql/rocksdb/index.d.ts +112 -0
  371. package/dist/nosql/rocksdb/index.js +103 -1
  372. package/dist/nosql/rocksdb/where-match.d.ts +21 -0
  373. package/dist/nosql/rocksdb/where-match.js +238 -0
  374. package/dist/nosql/rockset/index.d.ts +84 -0
  375. package/dist/nosql/s3/index.d.ts +170 -0
  376. package/dist/nosql/scylladb/index.d.ts +117 -0
  377. package/dist/nosql/signoz/index.d.ts +116 -0
  378. package/dist/nosql/sns/index.d.ts +99 -0
  379. package/dist/nosql/solr/index.d.ts +129 -0
  380. package/dist/nosql/splunk/index.d.ts +125 -0
  381. package/dist/nosql/sqs/index.d.ts +116 -0
  382. package/dist/nosql/stardog/index.d.ts +86 -0
  383. package/dist/nosql/starrocks/index.d.ts +89 -0
  384. package/dist/nosql/store.d.ts +23 -0
  385. package/dist/nosql/sumologic/index.d.ts +119 -0
  386. package/dist/nosql/surrealdb/index.d.ts +156 -0
  387. package/dist/nosql/surrealdb/index.js +174 -1
  388. package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
  389. package/dist/nosql/surrealdb/query-compiler.js +193 -0
  390. package/dist/nosql/terminusdb/index.d.ts +95 -0
  391. package/dist/nosql/tigergraph/index.d.ts +314 -0
  392. package/dist/nosql/typesense/index.d.ts +82 -0
  393. package/dist/nosql/unqlite/index.d.ts +68 -0
  394. package/dist/nosql/upstash/index.d.ts +80 -0
  395. package/dist/nosql/vercel-kv/index.d.ts +82 -0
  396. package/dist/nosql/victoriametrics/index.d.ts +129 -0
  397. package/dist/nosql/virtuoso/index.d.ts +87 -0
  398. package/dist/nosql/weaviate/index.d.ts +196 -0
  399. package/dist/operators/index.d.ts +7 -0
  400. package/dist/operators.d.ts +2947 -0
  401. package/dist/operators.js +46 -1
  402. package/dist/prisma-migrate/index.d.ts +28 -0
  403. package/dist/prisma-migrate/migration-generator.d.ts +21 -0
  404. package/dist/prisma-migrate/model-generator.d.ts +12 -0
  405. package/dist/prisma-migrate/relations.d.ts +28 -0
  406. package/dist/prisma-migrate/schema-parser.d.ts +42 -0
  407. package/dist/prisma-migrate/type-mapper.d.ts +20 -0
  408. package/dist/prorm.d.ts +2093 -0
  409. package/dist/prorm.js +721 -302
  410. package/dist/query-builders/cte-builder.d.ts +104 -0
  411. package/dist/query-builders/functions/aggregate.d.ts +199 -0
  412. package/dist/query-builders/functions/conditional.d.ts +195 -0
  413. package/dist/query-builders/functions/datetime.d.ts +202 -0
  414. package/dist/query-builders/functions/fulltext.d.ts +220 -0
  415. package/dist/query-builders/functions/index.d.ts +17 -0
  416. package/dist/query-builders/functions/json.d.ts +157 -0
  417. package/dist/query-builders/functions/math.d.ts +215 -0
  418. package/dist/query-builders/functions/string.d.ts +233 -0
  419. package/dist/query-builders/functions/window.d.ts +209 -0
  420. package/dist/query-builders/include-builder.d.ts +85 -0
  421. package/dist/query-builders/index-expression-builder.d.ts +153 -0
  422. package/dist/query-builders/index.d.ts +121 -0
  423. package/dist/query-builders/index.js +10 -0
  424. package/dist/query-builders/insert-builder.d.ts +62 -0
  425. package/dist/query-builders/model-helpers.d.ts +28 -0
  426. package/dist/query-builders/order-limit-builder.d.ts +84 -0
  427. package/dist/query-builders/sql-compiler.d.ts +562 -0
  428. package/dist/query-builders/subquery-builder.d.ts +133 -0
  429. package/dist/query-builders/update-builder.d.ts +71 -0
  430. package/dist/query-builders/view-builder.d.ts +189 -0
  431. package/dist/query-builders/where-builder.d.ts +124 -0
  432. package/dist/query-interface.d.ts +407 -0
  433. package/dist/query-interface.js +84 -0
  434. package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
  435. package/dist/query-optimizers/explain-plans.d.ts +187 -0
  436. package/dist/query-optimizers/index.d.ts +27 -0
  437. package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
  438. package/dist/query-optimizers/query-hints.d.ts +201 -0
  439. package/dist/query-optimizers/query-optimizer.d.ts +162 -0
  440. package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
  441. package/dist/replica-manager.d.ts +235 -0
  442. package/dist/schema/index.d.ts +7 -0
  443. package/dist/schema/migration-generator.d.ts +74 -0
  444. package/dist/schema/schema-differ.d.ts +114 -0
  445. package/dist/schema/types.d.ts +246 -0
  446. package/dist/schema-objects.d.ts +78 -0
  447. package/dist/schema-objects.js +203 -0
  448. package/dist/sql-constants.d.ts +240 -0
  449. package/dist/sqlite-advanced.d.ts +572 -0
  450. package/dist/streams/index.d.ts +5 -0
  451. package/dist/streams/transforms.d.ts +120 -0
  452. package/dist/transaction.d.ts +221 -0
  453. package/dist/types/index.d.ts +3123 -0
  454. package/dist/user-management.d.ts +141 -0
  455. package/dist/utils/date.d.ts +149 -0
  456. package/dist/utils/index.d.ts +359 -0
  457. package/dist/utils/string.d.ts +88 -0
  458. package/dist/validators/index.d.ts +7 -0
  459. package/dist/validators/validator.d.ts +306 -0
  460. package/package.json +20 -5
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Grafana Loki store implementation.
3
+ *
4
+ * Loki is a horizontally-scalable, multi-tenant log aggregation system. It
5
+ * indexes only a small set of labels per log stream (not the log contents)
6
+ * and is queried with LogQL, a label-matcher + filter language modelled on
7
+ * PromQL. There is no SQL-shaped query surface, no row-level UPDATE/DELETE,
8
+ * and no identifier escaping, so Loki does not fit the SQL `Dialect`
9
+ * interface (`src/dialects/dialect.ts`). This class implements the minimal
10
+ * `NoSqlStore` marker interface (`src/nosql/store.ts`) and exposes Loki's
11
+ * HTTP push/query API directly.
12
+ *
13
+ * ## No canonical driver - HTTP over `fetch`
14
+ *
15
+ * Loki has no single canonical npm client; it is just an HTTP/JSON API.
16
+ * Rather than depend on any package, this store talks to the server with
17
+ * the global `fetch` (so `library` is `'fetch'`). For tests (and for callers
18
+ * who want their own transport), an alternative HTTP client can be injected
19
+ * via `LokiStoreOptions.client`; when omitted, a tiny internal client over
20
+ * `fetch` + `baseURL` is built at connect time.
21
+ *
22
+ * ## Endpoints wrapped
23
+ *
24
+ * - `push(labels, entries)` -> `POST /loki/api/v1/push` (ingest log lines)
25
+ * - `query(logql, opts?)` -> `GET /loki/api/v1/query_range` (search)
26
+ * - `labels()` -> `GET /loki/api/v1/labels` (label names)
27
+ * - `streams(match?)` -> `GET /loki/api/v1/series` (label sets)
28
+ */
29
+ import { NoSqlStore } from '../store';
30
+ /** Default Grafana Loki HTTP API base URL. */
31
+ export declare const DEFAULT_LOKI_BASE_URL = "http://localhost:3100";
32
+ /** Query-string parameter value(s). `undefined` values are dropped. */
33
+ export type QueryParams = Record<string, string | string[] | undefined>;
34
+ /**
35
+ * The subset of an HTTP client this store needs. The internal `fetch`-based
36
+ * client implements this; tests inject a mock with the same shape.
37
+ */
38
+ export interface LokiHttpClient {
39
+ /** Issue a GET and return the parsed JSON response body. */
40
+ get(path: string, params?: QueryParams): Promise<any>;
41
+ /** Issue a POST with a text body and return the parsed JSON/text response. */
42
+ post(path: string, body: string, contentType?: string): Promise<any>;
43
+ }
44
+ /** Connection options for `LokiStore`. */
45
+ export interface LokiStoreOptions {
46
+ /** Base URL of the Loki server. Defaults to `http://localhost:3100`. */
47
+ baseURL?: string;
48
+ /**
49
+ * Optional pre-built HTTP client. When provided it is used verbatim and
50
+ * `baseURL` is ignored; otherwise an internal `fetch`-based client is
51
+ * built against `baseURL` on `connect()`.
52
+ */
53
+ client?: LokiHttpClient;
54
+ /** Extra HTTP headers sent with every internal-client request. */
55
+ headers?: Record<string, string>;
56
+ /** Optional tenant ID sent as the `X-Scope-OrgID` header. */
57
+ tenantID?: string;
58
+ }
59
+ /** A single log entry to push: timestamp (ns epoch string) + line. */
60
+ export interface LokiEntry {
61
+ /** Timestamp as a Unix-epoch nanosecond string (Loki's native format). */
62
+ ts: string | number;
63
+ /** The raw log line. */
64
+ line: string;
65
+ /** Optional structured metadata attached to this entry. */
66
+ metadata?: Record<string, string>;
67
+ }
68
+ /** Options for a LogQL range query. */
69
+ export interface LokiQueryOptions {
70
+ /** Start of the query window (Unix nanoseconds or RFC3339). */
71
+ start?: string | number;
72
+ /** End of the query window (Unix nanoseconds or RFC3339). */
73
+ end?: string | number;
74
+ /** Max number of entries to return. */
75
+ limit?: number;
76
+ /** Result order: `'forward'` (oldest first) or `'backward'` (newest first). */
77
+ direction?: 'forward' | 'backward';
78
+ /** Query resolution step for metric queries. */
79
+ step?: string | number;
80
+ }
81
+ /** Build a `fetch`-backed client for the given base URL. */
82
+ export declare function createFetchClient(baseURL: string, headers?: Record<string, string>): LokiHttpClient;
83
+ /**
84
+ * `LokiStore` wraps Grafana Loki's HTTP push/query API (log ingestion via
85
+ * the push endpoint, LogQL range search, and label/series metadata lookups)
86
+ * behind the `NoSqlStore` lifecycle.
87
+ */
88
+ export declare class LokiStore implements NoSqlStore {
89
+ readonly name = "loki";
90
+ readonly library = "fetch";
91
+ private readonly baseURL;
92
+ private readonly injectedClient?;
93
+ private readonly headers?;
94
+ private client;
95
+ private connected;
96
+ constructor(options?: LokiStoreOptions);
97
+ connect(): Promise<void>;
98
+ disconnect(): Promise<void>;
99
+ isConnected(): boolean;
100
+ /** Returns the underlying (internal or injected) HTTP client. */
101
+ getClient(): LokiHttpClient;
102
+ private requireClient;
103
+ private doGet;
104
+ /**
105
+ * Pushes a batch of log entries for one stream (identified by its label
106
+ * set) via `POST /loki/api/v1/push`. Each entry is serialized as
107
+ * `[<ts-ns>, <line>]` (plus optional structured metadata) in Loki's
108
+ * push payload shape.
109
+ */
110
+ push(labels: Record<string, string>, entries: LokiEntry[]): Promise<any>;
111
+ /**
112
+ * Runs a LogQL query over a time window via `GET /loki/api/v1/query_range`.
113
+ * Returns the `data` payload (`{ resultType, result }`).
114
+ */
115
+ query(logql: string, options?: LokiQueryOptions): Promise<any>;
116
+ /** Lists the known label names via `GET /loki/api/v1/labels`. */
117
+ labels(): Promise<any>;
118
+ /**
119
+ * Lists the label sets (streams) matching an optional selector via
120
+ * `GET /loki/api/v1/series`.
121
+ */
122
+ streams(match?: string | string[]): Promise<any>;
123
+ /** Lists the distinct values of a label via `GET /loki/api/v1/label/<name>/values`. */
124
+ labelValues(label: string): Promise<any>;
125
+ }
126
+ export default LokiStore;
@@ -0,0 +1,76 @@
1
+ /**
2
+ * MarkLogic store implementation for the Prorm NoSQL layer.
3
+ *
4
+ * MarkLogic is a multi-model database (document, graph/RDF triples, search,
5
+ * relational views) where documents are addressed by an opaque URI. It does
6
+ * not fit the SQL-shaped `Dialect` interface, so this class implements the
7
+ * minimal `NoSqlStore` marker interface for connection lifecycle and exposes
8
+ * MarkLogic's real `documents.write/read/remove` plus `documents.query` API
9
+ * through a small document-CRUD convenience layer. Collection + id are mapped
10
+ * to a URI of the form `/<collection>/<id>.json`.
11
+ *
12
+ * Uses the official `marklogic` driver. That driver is an optional peer
13
+ * dependency and is loaded lazily inside `connect()` so importing this module
14
+ * never requires it to be installed. Tests inject a pre-built mock `client`
15
+ * (and `queryBuilder`) via options, which bypasses the lazy `require`
16
+ * entirely - no real driver and no network are needed.
17
+ */
18
+ import { NoSqlStore } from '../store';
19
+ /** A native MarkLogic database client, left untyped because the driver is an
20
+ * optional dependency not imported here. */
21
+ type MarkLogicClient = any;
22
+ /** The MarkLogic `queryBuilder` factory. */
23
+ type QueryBuilder = any;
24
+ /**
25
+ * Connection options for `MarkLogicStore`.
26
+ *
27
+ * `host`/`port`/`user`/`password`/`authType` are passed to
28
+ * `createDatabaseClient`. When a pre-built `client` is supplied (e.g. in
29
+ * tests), `connect()` uses it directly and skips loading the `marklogic`
30
+ * driver; `queryBuilder` may likewise be injected.
31
+ */
32
+ export interface MarkLogicStoreOptions {
33
+ host?: string;
34
+ port?: number;
35
+ user?: string;
36
+ password?: string;
37
+ authType?: string;
38
+ database?: string;
39
+ /** A pre-built MarkLogic client to use instead of the driver. */
40
+ client?: MarkLogicClient;
41
+ /** A pre-built `queryBuilder` to use instead of the driver. */
42
+ queryBuilder?: QueryBuilder;
43
+ }
44
+ export declare class MarkLogicStore implements NoSqlStore {
45
+ readonly name = "marklogic";
46
+ readonly library = "marklogic";
47
+ private readonly options;
48
+ private client;
49
+ private qb;
50
+ private connected;
51
+ constructor(options?: MarkLogicStoreOptions);
52
+ connect(): Promise<void>;
53
+ private tryRequireQueryBuilder;
54
+ disconnect(): Promise<void>;
55
+ isConnected(): boolean;
56
+ getClient(): MarkLogicClient;
57
+ private requireClient;
58
+ private uri;
59
+ /** Write a document into `collection`; returns the id used. */
60
+ insert(collection: string, doc: Record<string, unknown>): Promise<unknown>;
61
+ /** Read a document by id, returning its stored `content`. */
62
+ get(collection: string, id: string): Promise<unknown>;
63
+ /** Merge `patch` into an existing document and re-write it. */
64
+ update(collection: string, id: string, patch: Record<string, unknown>): Promise<unknown>;
65
+ /** Remove a document by id. */
66
+ delete(collection: string, id: string): Promise<unknown>;
67
+ /**
68
+ * Query documents. When `builtQuery` is provided it is passed straight to
69
+ * `documents.query`; otherwise all documents in `collection` are matched via
70
+ * `queryBuilder.where(queryBuilder.collection(collection))`. Returns the
71
+ * result documents.
72
+ */
73
+ query(collection: string, builtQuery?: unknown): Promise<unknown[]>;
74
+ private buildCollectionQuery;
75
+ }
76
+ export default MarkLogicStore;
@@ -0,0 +1,91 @@
1
+ /**
2
+ * Materialize store.
3
+ *
4
+ * Materialize is a streaming (incrementally-updated) analytics database: you
5
+ * define SOURCEs over event streams and MATERIALIZED VIEWs whose results are
6
+ * kept continuously up to date as new data arrives, then read them with
7
+ * low-latency SQL. Materialize speaks the **PostgreSQL wire protocol**, so it
8
+ * is driven with the `pg` client over a normal Postgres-style connection.
9
+ * Although the wire is Postgres, Materialize's compute model (streaming
10
+ * dataflows, `SUBSCRIBE`, `CREATE SOURCE`) is not a general OLTP relational
11
+ * store and does not fit this ORM's SQL `Dialect` abstraction, so it is
12
+ * modelled as a `NoSqlStore` (`src/nosql/store.ts`) exposing a direct `query`
13
+ * surface plus source/view helpers.
14
+ *
15
+ * ## Driver: `pg` (PostgreSQL-wire)
16
+ *
17
+ * The `pg` package is an optional peer dependency, lazily `require`d inside
18
+ * `connect()` so importing this module never forces it to be installed. Tests
19
+ * inject a pre-built mock client via `MaterializeStoreOptions.client`, which
20
+ * skips the `require` entirely.
21
+ */
22
+ import type { NoSqlStore } from '../store';
23
+ /**
24
+ * Minimal structural type for the pieces of a `pg` `Client` this store uses.
25
+ * Kept local so this module type-checks without the optional driver installed.
26
+ * `query()` resolves to a result object with a `rows` array.
27
+ */
28
+ export interface PgClientLike {
29
+ connect(): Promise<void>;
30
+ query(sql: string, params?: unknown[]): Promise<{
31
+ rows: any[];
32
+ [key: string]: unknown;
33
+ }>;
34
+ end(): Promise<void>;
35
+ }
36
+ /** Connection options for `MaterializeStore` (map onto `pg` client config). */
37
+ export interface MaterializeStoreOptions {
38
+ host?: string;
39
+ port?: number;
40
+ user?: string;
41
+ password?: string;
42
+ database?: string;
43
+ /** Full connection string (`postgres://...`), an alternative to the discrete fields. */
44
+ connectionString?: string;
45
+ /** Escape hatch for any other `pg` client option. */
46
+ connectionOptions?: Record<string, unknown>;
47
+ /**
48
+ * A pre-built `pg` `Client` (or compatible mock). When provided, `connect()`
49
+ * uses it directly and skips `require('pg')`. This is how tests inject a
50
+ * mock without the real driver installed.
51
+ */
52
+ client?: PgClientLike;
53
+ }
54
+ /**
55
+ * `MaterializeStore` wraps a `pg` client connected to Materialize and exposes
56
+ * `query(sql, params)` for reads/DDL, plus `createSource()` and
57
+ * `createMaterializedView()` convenience helpers for the streaming-specific
58
+ * DDL that defines what Materialize keeps incrementally up to date.
59
+ */
60
+ export declare class MaterializeStore implements NoSqlStore {
61
+ readonly name = "materialize";
62
+ readonly library = "pg";
63
+ private readonly options;
64
+ private client;
65
+ private connected;
66
+ constructor(options?: MaterializeStoreOptions);
67
+ connect(): Promise<void>;
68
+ disconnect(): Promise<void>;
69
+ isConnected(): boolean;
70
+ /** Returns the underlying `pg` client for anything not wrapped here. */
71
+ getClient(): PgClientLike;
72
+ private requireClient;
73
+ /**
74
+ * Execute a SQL statement over the Postgres wire with optional positional
75
+ * `params` and return the result rows (`pg`'s `result.rows`).
76
+ */
77
+ query<T = Record<string, unknown>>(sql: string, params?: unknown[]): Promise<T[]>;
78
+ /**
79
+ * Create a streaming SOURCE via `CREATE SOURCE <name> <definition>`, e.g.
80
+ * `createSource('kafka_src', "FROM KAFKA CONNECTION ... (TOPIC 'events')")`.
81
+ * Returns the driver result rows.
82
+ */
83
+ createSource(name: string, definition: string): Promise<any[]>;
84
+ /**
85
+ * Create a MATERIALIZED VIEW (kept incrementally up to date) via
86
+ * `CREATE MATERIALIZED VIEW <name> AS <selectSql>`. Returns the driver
87
+ * result rows.
88
+ */
89
+ createMaterializedView(name: string, selectSql: string): Promise<any[]>;
90
+ }
91
+ export default MaterializeStore;
@@ -0,0 +1,76 @@
1
+ /**
2
+ * Meilisearch store implementation.
3
+ *
4
+ * Meilisearch is a search engine built around an inverted index with
5
+ * typo-tolerant, prefix, full-text search and faceting rather than SQL: no
6
+ * `JOIN`, no transaction log, schema-flexible documents grouped into indexes
7
+ * (each identified by a `uid` and a primary key). It therefore does not fit
8
+ * the SQL-shaped `Dialect` interface used by the SQL dialects in this repo.
9
+ * Instead it implements the minimal `NoSqlStore` marker interface
10
+ * (`src/nosql/store.ts`) and exposes Meilisearch's real capabilities grouped
11
+ * by concern: connection lifecycle, index management and document CRUD/search.
12
+ *
13
+ * Uses the official `meilisearch` JS driver. The driver is loaded lazily via
14
+ * `require` so importing this module does not force the dependency to be
15
+ * resolved unless a Meilisearch store is actually constructed. For
16
+ * unit-testing without a live server, the constructor also accepts an
17
+ * already-built `client`, which `connect()` will use as-is instead of
18
+ * instantiating a new one.
19
+ *
20
+ * Most operations are scoped to an index and reached through
21
+ * `client.index(uid).<op>(...)`; index lifecycle (`createIndex`/`deleteIndex`)
22
+ * and cluster stats live directly on the top-level client.
23
+ */
24
+ import { NoSqlStore } from '../store';
25
+ /**
26
+ * Connection options for `MeilisearchStore`.
27
+ *
28
+ * `host` and `apiKey` are passed straight through to the driver's
29
+ * `new MeiliSearch(...)`. Pass `client` to inject an already-built client
30
+ * instance (used in tests and when the caller wants full control over driver
31
+ * configuration); when present, `host`/`apiKey` are ignored.
32
+ */
33
+ export interface MeilisearchStoreOptions {
34
+ /** URL of the Meilisearch server, e.g. `http://localhost:7700`. */
35
+ host?: string;
36
+ /** API key used to authenticate against the server. */
37
+ apiKey?: string;
38
+ /** An already-constructed Meilisearch client to use instead of building one. */
39
+ client?: any;
40
+ /** Any additional options passed through to the driver's client. */
41
+ [key: string]: unknown;
42
+ }
43
+ /**
44
+ * `MeilisearchStore` wraps the official `meilisearch` client and exposes
45
+ * index management, document CRUD, and search as a typed, promise-based API.
46
+ */
47
+ export declare class MeilisearchStore implements NoSqlStore {
48
+ readonly name = "meilisearch";
49
+ readonly library = "meilisearch";
50
+ private readonly options;
51
+ private client;
52
+ private connected;
53
+ constructor(options: MeilisearchStoreOptions);
54
+ connect(): Promise<void>;
55
+ disconnect(): Promise<void>;
56
+ isConnected(): boolean;
57
+ /** Returns the underlying `meilisearch` client for anything not wrapped here. */
58
+ getClient(): any;
59
+ private requireClient;
60
+ private exec;
61
+ /** Create an index by `uid`, optionally specifying its primary key via `options`. */
62
+ createIndex(uid: string, options?: Record<string, unknown>): Promise<any>;
63
+ /** Delete an index by `uid`. */
64
+ deleteIndex(uid: string): Promise<any>;
65
+ /** Add (or replace) documents in an index. Returns the enqueued task. */
66
+ addDocuments(index: string, documents: Record<string, unknown>[], options?: Record<string, unknown>): Promise<any>;
67
+ /** Run a search against an index and return the `hits` array from the response. */
68
+ search<T = Record<string, unknown>>(index: string, query: string, options?: Record<string, unknown>): Promise<T[]>;
69
+ /** Get a single document by its primary-key value. */
70
+ getDocument<T = Record<string, unknown>>(index: string, id: string | number): Promise<T>;
71
+ /** Delete a single document by its primary-key value. Returns the enqueued task. */
72
+ deleteDocument(index: string, id: string | number): Promise<any>;
73
+ /** Get server-wide stats (database size, per-index document counts, etc.). */
74
+ getStats(): Promise<any>;
75
+ }
76
+ export default MeilisearchStore;
@@ -0,0 +1,138 @@
1
+ /**
2
+ * Memcached store implementation.
3
+ *
4
+ * Memcached is a distributed in-memory key-value cache. It has no query
5
+ * language, no secondary indexes and no persistence, so it does not fit the
6
+ * SQL-shaped `Dialect` interface. This class implements the minimal
7
+ * `NoSqlStore` marker interface and exposes Memcached's real operations
8
+ * (set/get/delete/add/replace/increment/decrement/flush) as a typed,
9
+ * promise-based API instead of forcing them into a `query(sql)` shape.
10
+ *
11
+ * Uses the `memjs` driver. The driver is loaded lazily inside `connect()`
12
+ * (or supplied pre-built via the `client` option) so importing this module
13
+ * never requires `memjs` to be installed unless a Memcached store is
14
+ * actually connected.
15
+ */
16
+ import { NoSqlStore } from '../store';
17
+ /**
18
+ * Options passed straight through to memjs per-operation (e.g. `expires`).
19
+ * memjs accepts an `expires` TTL in seconds on set/add/replace/increment/
20
+ * decrement; anything memjs supports is forwarded unchanged.
21
+ */
22
+ export interface MemcachedWriteOptions {
23
+ /** Time-to-live in seconds (0 = never expire, the memjs default). */
24
+ expires?: number;
25
+ [key: string]: unknown;
26
+ }
27
+ /**
28
+ * How `get()` should decode the stored value.
29
+ *
30
+ * - `'buffer'` (default): return the raw `Buffer` exactly as memjs read it.
31
+ * - `'string'`: decode the buffer to a UTF-8 string.
32
+ * - `'json'`: decode to a string and `JSON.parse` it (the inverse of the
33
+ * automatic JSON serialization `set()` applies to non-string/Buffer
34
+ * values).
35
+ */
36
+ export type MemcachedDecode = 'buffer' | 'string' | 'json';
37
+ /** Options for `get()`. */
38
+ export interface MemcachedGetOptions {
39
+ /** Decode strategy for the stored value. Defaults to `'buffer'`. */
40
+ decode?: MemcachedDecode;
41
+ }
42
+ /**
43
+ * Connection options for `MemcachedStore`.
44
+ *
45
+ * `servers` is a comma-separated list of `host:port` entries (memjs's
46
+ * standard format, e.g. `"localhost:11211"` or
47
+ * `"cache1:11211,cache2:11211"`). `options` is passed straight through to
48
+ * `memjs.Client.create(servers, options)`. Supply a pre-built memjs
49
+ * `client` to skip the lazy `require('memjs')` entirely (used by tests to
50
+ * inject a mock, and by callers who manage the client themselves).
51
+ */
52
+ export interface MemcachedStoreOptions {
53
+ /** Comma-separated `host:port` server list. Defaults to memjs's own default. */
54
+ servers?: string;
55
+ /** memjs client options (username/password/timeout/retries/etc). */
56
+ options?: Record<string, unknown>;
57
+ /** Pre-built memjs client; when given, `connect()` uses it and skips `require('memjs')`. */
58
+ client?: unknown;
59
+ }
60
+ /** The subset of the memjs client surface this store drives. */
61
+ interface MemjsClient {
62
+ set(key: string, value: string | Buffer, options?: Record<string, unknown>): Promise<boolean>;
63
+ get(key: string): Promise<{
64
+ value: Buffer | null;
65
+ flags: Buffer | number | null;
66
+ } | null>;
67
+ delete(key: string): Promise<boolean>;
68
+ add(key: string, value: string | Buffer, options?: Record<string, unknown>): Promise<boolean>;
69
+ replace(key: string, value: string | Buffer, options?: Record<string, unknown>): Promise<boolean>;
70
+ increment(key: string, amount: number, options?: Record<string, unknown>): Promise<{
71
+ value: number | null;
72
+ success: boolean;
73
+ }>;
74
+ decrement(key: string, amount: number, options?: Record<string, unknown>): Promise<{
75
+ value: number | null;
76
+ success: boolean;
77
+ }>;
78
+ flush(): Promise<unknown>;
79
+ close?(): void;
80
+ quit?(): void;
81
+ }
82
+ /**
83
+ * `MemcachedStore` wraps a `memjs` client and exposes Memcached's key-value
84
+ * operations as a typed, promise-based API.
85
+ */
86
+ export declare class MemcachedStore implements NoSqlStore {
87
+ readonly name = "memcached";
88
+ readonly library = "memjs";
89
+ private readonly options;
90
+ private client;
91
+ private connected;
92
+ constructor(options?: MemcachedStoreOptions);
93
+ connect(): Promise<void>;
94
+ disconnect(): Promise<void>;
95
+ /** Alias for `disconnect()`, mirroring memjs's own `quit()`/`close()` naming. */
96
+ quit(): Promise<void>;
97
+ isConnected(): boolean;
98
+ /** Returns the underlying `memjs` client for anything not wrapped here. */
99
+ getClient(): MemjsClient;
100
+ private requireClient;
101
+ /**
102
+ * Store `value` under `key`, overwriting any existing value. Strings and
103
+ * Buffers are stored verbatim; other values are JSON-serialized (see
104
+ * `serialize`). Returns memjs's boolean success flag.
105
+ */
106
+ set(key: string, value: unknown, options?: MemcachedWriteOptions): Promise<boolean>;
107
+ /**
108
+ * Read `key`. Returns `null` if the key is missing. By default returns the
109
+ * raw `Buffer`; pass `{ decode: 'string' }` or `{ decode: 'json' }` to
110
+ * decode the stored value.
111
+ */
112
+ get(key: string, options?: MemcachedGetOptions): Promise<Buffer | string | unknown | null>;
113
+ /** Delete `key`. Returns memjs's boolean success flag. */
114
+ delete(key: string): Promise<boolean>;
115
+ /**
116
+ * Store `value` under `key` only if the key does not already exist
117
+ * (Memcached `add`). Returns `false` if the key was already present.
118
+ */
119
+ add(key: string, value: unknown, options?: MemcachedWriteOptions): Promise<boolean>;
120
+ /**
121
+ * Store `value` under `key` only if the key already exists (Memcached
122
+ * `replace`). Returns `false` if the key was missing.
123
+ */
124
+ replace(key: string, value: unknown, options?: MemcachedWriteOptions): Promise<boolean>;
125
+ /** Atomically increment the numeric value at `key` by `amount`. */
126
+ increment(key: string, amount: number, options?: MemcachedWriteOptions): Promise<{
127
+ value: number | null;
128
+ success: boolean;
129
+ }>;
130
+ /** Atomically decrement the numeric value at `key` by `amount`. */
131
+ decrement(key: string, amount: number, options?: MemcachedWriteOptions): Promise<{
132
+ value: number | null;
133
+ success: boolean;
134
+ }>;
135
+ /** Flush (delete) all keys across every configured server. */
136
+ flush(): Promise<unknown>;
137
+ }
138
+ export default MemcachedStore;
@@ -0,0 +1,167 @@
1
+ /**
2
+ * Milvus store implementation.
3
+ *
4
+ * Milvus is a vector database: collections are defined by a field schema
5
+ * (a primary key, one or more vector fields with a fixed dimension, and
6
+ * optional scalar fields) rather than rows of arbitrary SQL types, queries
7
+ * are approximate-nearest-neighbor searches (or scalar filter expressions)
8
+ * rather than `SELECT ... WHERE`, and there is no join/transaction-log
9
+ * concept. None of that fits the SQL-shaped `Dialect` interface, so this
10
+ * class implements the minimal `NoSqlStore` marker interface
11
+ * (`src/nosql/store.ts`) and exposes Milvus's real operations (collection
12
+ * management, index management, insert/upsert, vector search, scalar
13
+ * query, delete, and partitions) grouped the way the underlying SDK groups
14
+ * them, instead of forcing everything into a `query(sql)` shape.
15
+ *
16
+ * Uses the official `@zilliz/milvus2-sdk-node` gRPC client.
17
+ */
18
+ import { MilvusClient, DataType, type ClientConfig, type DescribeCollectionResponse, type CollectionData, type RowData, type MutationResult, type ConsistencyLevelEnum } from '@zilliz/milvus2-sdk-node';
19
+ import type { NoSqlStore } from '../store';
20
+ /**
21
+ * Connection options for `MilvusStore`. Passed straight through to
22
+ * `@zilliz/milvus2-sdk-node`'s `MilvusClient` (address, auth, TLS,
23
+ * per-request timeout, gRPC channel options, etc).
24
+ */
25
+ export type MilvusStoreOptions = ClientConfig;
26
+ /** A single field in a collection's schema, as accepted by `createCollection()`. */
27
+ export interface MilvusFieldDefinition {
28
+ name: string;
29
+ data_type: DataType;
30
+ /** Vector dimension. Required for `FloatVector`/`BinaryVector`/etc fields. */
31
+ dim?: number;
32
+ is_primary_key?: boolean;
33
+ /** Server-generated auto-incrementing primary key (only valid on the primary key field). */
34
+ autoID?: boolean;
35
+ is_partition_key?: boolean;
36
+ /** `VarChar` max length. */
37
+ max_length?: number;
38
+ description?: string;
39
+ }
40
+ /** Options for `createCollection()`. */
41
+ export interface CreateCollectionOptions {
42
+ description?: string;
43
+ /** Number of shards. Defaults to the server's default (1) if omitted. */
44
+ shardsNum?: number;
45
+ consistencyLevel?: ConsistencyLevelEnum | 'Strong' | 'Session' | 'Bounded' | 'Eventually' | 'Customized';
46
+ enableDynamicField?: boolean;
47
+ }
48
+ /** A `CREATE INDEX`-equivalent request for `createIndex()`. */
49
+ export interface CreateIndexOptions {
50
+ fieldName: string;
51
+ indexType: string;
52
+ metricType?: string;
53
+ indexName?: string;
54
+ params?: Record<string, string | number | boolean>;
55
+ }
56
+ /** Result of a `describeIndex()`/`listIndexes()` call. */
57
+ export interface MilvusIndexInfo {
58
+ indexName: string;
59
+ fieldName: string;
60
+ indexType?: string;
61
+ metricType?: string;
62
+ state: string;
63
+ indexedRows: string;
64
+ totalRows: string;
65
+ }
66
+ /** Options shared by `insert()`/`upsert()`. */
67
+ export interface WriteOptions {
68
+ partitionName?: string;
69
+ }
70
+ /** Options for `search()`. */
71
+ export interface SearchOptions {
72
+ /**
73
+ * The query vector to search for. Only a single query vector is
74
+ * supported per call - Milvus's underlying API also accepts a batch
75
+ * (`number[][]`) that returns one result set per query vector, but that
76
+ * shape isn't wrapped here; use `getClient().search(...)` directly for
77
+ * batched multi-vector search.
78
+ */
79
+ vector: number[];
80
+ /** Name of the vector field to search. Required if the collection has more than one vector field. */
81
+ annsField?: string;
82
+ /** Max number of nearest neighbors to return per query vector. */
83
+ limit?: number;
84
+ /** Scalar filter expression narrowing candidates before/while ranking (Milvus's boolean expression language, e.g. `'age > 21 && category == "b"'`). */
85
+ filter?: string;
86
+ outputFields?: string[];
87
+ partitionNames?: string[];
88
+ metricType?: string;
89
+ offset?: number;
90
+ }
91
+ /** Options for `query()`. */
92
+ export interface QueryOptions {
93
+ /** Scalar filter expression. Omit (with `ids`) to fetch by primary key instead. */
94
+ filter?: string;
95
+ ids?: (string | number)[];
96
+ outputFields?: string[];
97
+ partitionNames?: string[];
98
+ limit?: number;
99
+ offset?: number;
100
+ }
101
+ /** Result row of a `search()` call. */
102
+ export interface MilvusSearchHit {
103
+ id: string | number;
104
+ score: number;
105
+ [field: string]: unknown;
106
+ }
107
+ /**
108
+ * `MilvusStore` wraps `@zilliz/milvus2-sdk-node`'s `MilvusClient` and exposes
109
+ * Milvus's collection/index/data/partition operations as a typed,
110
+ * promise-based API.
111
+ */
112
+ export declare class MilvusStore implements NoSqlStore {
113
+ readonly name = "milvus";
114
+ readonly library = "@zilliz/milvus2-sdk-node";
115
+ private readonly options;
116
+ private client;
117
+ private connected;
118
+ constructor(options: MilvusStoreOptions);
119
+ connect(): Promise<void>;
120
+ disconnect(): Promise<void>;
121
+ isConnected(): boolean;
122
+ /** Returns the underlying `MilvusClient` for anything not wrapped here. */
123
+ getClient(): MilvusClient;
124
+ private requireClient;
125
+ private exec;
126
+ /** Create a collection with an explicit field schema (primary key + one or more vector fields + optional scalars). */
127
+ createCollection(collectionName: string, fields: MilvusFieldDefinition[], options?: CreateCollectionOptions): Promise<void>;
128
+ dropCollection(collectionName: string): Promise<void>;
129
+ hasCollection(collectionName: string): Promise<boolean>;
130
+ describeCollection(collectionName: string): Promise<DescribeCollectionResponse>;
131
+ /** List all collections. */
132
+ listCollections(): Promise<CollectionData[]>;
133
+ /** Load a collection's data into query nodes' memory so it can be searched/queried. */
134
+ loadCollection(collectionName: string, replicaNumber?: number): Promise<void>;
135
+ /** Release a collection's data from memory (it remains persisted; reload with `loadCollection()` to search it again). */
136
+ releaseCollection(collectionName: string): Promise<void>;
137
+ getCollectionStatistics(collectionName: string): Promise<Record<string, unknown>>;
138
+ createIndex(collectionName: string, options: CreateIndexOptions): Promise<void>;
139
+ dropIndex(collectionName: string, fieldName?: string, indexName?: string): Promise<void>;
140
+ describeIndex(collectionName: string, fieldName?: string): Promise<MilvusIndexInfo[]>;
141
+ listIndexes(collectionName: string): Promise<string[]>;
142
+ insert(collectionName: string, rows: RowData[], options?: WriteOptions): Promise<MutationResult>;
143
+ upsert(collectionName: string, rows: RowData[], options?: WriteOptions): Promise<MutationResult>;
144
+ /**
145
+ * Approximate-nearest-neighbor search against a vector field. Ranks by
146
+ * the collection's index metric (`L2`/`IP`/`COSINE`/...), optionally
147
+ * narrowed by a scalar `filter` expression evaluated alongside the
148
+ * vector comparison.
149
+ */
150
+ search(collectionName: string, options: SearchOptions): Promise<MilvusSearchHit[]>;
151
+ /** Scalar-only lookup (no vector similarity) via a filter expression and/or primary key list. */
152
+ query(collectionName: string, options?: QueryOptions): Promise<Record<string, unknown>[]>;
153
+ /** Fetch specific rows by primary key. Equivalent to `query()` with `ids` set, using Milvus's dedicated `Get` RPC. */
154
+ get(collectionName: string, ids: (string | number)[], outputFields?: string[]): Promise<Record<string, unknown>[]>;
155
+ /** Count rows matching an optional filter expression (all rows if omitted). */
156
+ count(collectionName: string, filter?: string): Promise<number>;
157
+ deleteByIds(collectionName: string, ids: (string | number)[], partitionName?: string): Promise<MutationResult>;
158
+ deleteByFilter(collectionName: string, filter: string, partitionName?: string): Promise<MutationResult>;
159
+ createPartition(collectionName: string, partitionName: string): Promise<void>;
160
+ dropPartition(collectionName: string, partitionName: string): Promise<void>;
161
+ hasPartition(collectionName: string, partitionName: string): Promise<boolean>;
162
+ listPartitions(collectionName: string): Promise<string[]>;
163
+ loadPartitions(collectionName: string, partitionNames: string[], replicaNumber?: number): Promise<void>;
164
+ releasePartitions(collectionName: string, partitionNames: string[]): Promise<void>;
165
+ getPartitionStatistics(collectionName: string, partitionName: string): Promise<Record<string, unknown>>;
166
+ }
167
+ export default MilvusStore;