ts-prorm-orm 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/CHANGELOG.md +95 -0
  2. package/README.md +194 -72
  3. package/dist/audit/history-query.d.ts +35 -0
  4. package/dist/audit/index.d.ts +16 -0
  5. package/dist/audit/logger.d.ts +126 -0
  6. package/dist/cache/cache-manager.d.ts +341 -0
  7. package/dist/cache/index.d.ts +8 -0
  8. package/dist/cache/redis-cluster-cache.d.ts +164 -0
  9. package/dist/cache/redis-cluster-cache.js +19 -36
  10. package/dist/cli/cloud.d.ts +55 -0
  11. package/dist/cli/cloud.js +318 -0
  12. package/dist/cli/commands/auth.d.ts +2 -0
  13. package/dist/cli/commands/auth.js +345 -0
  14. package/dist/cli/commands/billing.d.ts +2 -0
  15. package/dist/cli/commands/billing.js +135 -0
  16. package/dist/cli/commands/code.d.ts +2 -0
  17. package/dist/cli/commands/code.js +168 -0
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +154 -0
  20. package/dist/cli/commands/db.d.ts +2 -0
  21. package/dist/cli/commands/db.js +189 -0
  22. package/dist/cli/commands/index.d.ts +1 -0
  23. package/dist/cli/commands/index.js +22 -0
  24. package/dist/cli/commands/keys.d.ts +2 -0
  25. package/dist/cli/commands/keys.js +100 -0
  26. package/dist/cli/commands/misc.d.ts +2 -0
  27. package/dist/cli/commands/misc.js +282 -0
  28. package/dist/cli/commands/pull.d.ts +2 -0
  29. package/dist/cli/commands/pull.js +306 -0
  30. package/dist/cli/commands/runners.d.ts +2 -0
  31. package/dist/cli/commands/runners.js +218 -0
  32. package/dist/cli/commands/scaffold.d.ts +2 -0
  33. package/dist/cli/commands/scaffold.js +383 -0
  34. package/dist/cli/commands/secrets.d.ts +2 -0
  35. package/dist/cli/commands/secrets.js +162 -0
  36. package/dist/cli/commands/store.d.ts +2 -0
  37. package/dist/cli/commands/store.js +274 -0
  38. package/dist/cli/commands/system.d.ts +10 -0
  39. package/dist/cli/commands/system.js +169 -0
  40. package/dist/cli/commands/teams.d.ts +2 -0
  41. package/dist/cli/commands/teams.js +189 -0
  42. package/dist/cli/commands/user.d.ts +2 -0
  43. package/dist/cli/commands/user.js +171 -0
  44. package/dist/cli/framework.d.ts +103 -0
  45. package/dist/cli/framework.js +436 -0
  46. package/dist/cli/io.d.ts +26 -0
  47. package/dist/cli/io.js +181 -0
  48. package/dist/cli/keychain.d.ts +10 -0
  49. package/dist/cli/keychain.js +101 -0
  50. package/dist/cli/prompt.d.ts +20 -0
  51. package/dist/cli/prompt.js +111 -0
  52. package/dist/cli.d.ts +214 -0
  53. package/dist/cli.js +72 -5
  54. package/dist/compliance/audit-trail.d.ts +66 -0
  55. package/dist/compliance/backup-verification.d.ts +279 -0
  56. package/dist/compliance/breach-detector.d.ts +197 -0
  57. package/dist/compliance/consent-record.d.ts +107 -0
  58. package/dist/compliance/consent-versioning.d.ts +169 -0
  59. package/dist/compliance/cross-border-log.d.ts +254 -0
  60. package/dist/compliance/data-classifier.d.ts +127 -0
  61. package/dist/compliance/data-lineage.d.ts +268 -0
  62. package/dist/compliance/data-masker.d.ts +110 -0
  63. package/dist/compliance/data-portability.d.ts +98 -0
  64. package/dist/compliance/data-retention.d.ts +108 -0
  65. package/dist/compliance/dsar-workflow.d.ts +175 -0
  66. package/dist/compliance/field-encryption.d.ts +84 -0
  67. package/dist/compliance/immutable-record.d.ts +84 -0
  68. package/dist/compliance/index.d.ts +93 -0
  69. package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
  70. package/dist/compliance/pseudonymization.d.ts +96 -0
  71. package/dist/compliance/query-firewall.d.ts +661 -0
  72. package/dist/compliance/rate-limiter.d.ts +203 -0
  73. package/dist/compliance/right-to-erasure.d.ts +96 -0
  74. package/dist/compliance/row-level-security.d.ts +152 -0
  75. package/dist/compliance/security-decorator.d.ts +388 -0
  76. package/dist/compliance/security-monitor.d.ts +170 -0
  77. package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
  78. package/dist/compliance/session-isolation.d.ts +286 -0
  79. package/dist/compliance/tls-enforcer.d.ts +51 -0
  80. package/dist/compliance/worm-storage.d.ts +225 -0
  81. package/dist/connection-manager.d.ts +130 -0
  82. package/dist/connection-pool.d.ts +311 -0
  83. package/dist/decorators/audit.d.ts +49 -0
  84. package/dist/decorators/check.d.ts +218 -0
  85. package/dist/decorators/collate.d.ts +346 -0
  86. package/dist/decorators/comment.d.ts +51 -0
  87. package/dist/decorators/database-settings.d.ts +193 -0
  88. package/dist/decorators/default.d.ts +148 -0
  89. package/dist/decorators/encryption.d.ts +175 -0
  90. package/dist/decorators/engine.d.ts +97 -0
  91. package/dist/decorators/fk-constraints.d.ts +387 -0
  92. package/dist/decorators/foreign-table.d.ts +57 -0
  93. package/dist/decorators/generated.d.ts +232 -0
  94. package/dist/decorators/hstore.d.ts +96 -0
  95. package/dist/decorators/index.d.ts +57 -0
  96. package/dist/decorators/index.js +14 -30
  97. package/dist/decorators/json-column.d.ts +47 -0
  98. package/dist/decorators/jsonb.d.ts +83 -0
  99. package/dist/decorators/orm-decorators.d.ts +274 -0
  100. package/dist/decorators/permissions.d.ts +192 -0
  101. package/dist/decorators/procedure.d.ts +168 -0
  102. package/dist/decorators/procedure.js +31 -7
  103. package/dist/decorators/query-options.d.ts +527 -0
  104. package/dist/decorators/range.d.ts +122 -0
  105. package/dist/decorators/set-column.d.ts +43 -0
  106. package/dist/decorators/spatial.d.ts +60 -0
  107. package/dist/decorators/storage.d.ts +561 -0
  108. package/dist/decorators/timezone.d.ts +319 -0
  109. package/dist/decorators/trigger.d.ts +50 -0
  110. package/dist/decorators/uuid.d.ts +102 -0
  111. package/dist/decorators/view.d.ts +213 -0
  112. package/dist/diagrams/chen-diagram.d.ts +70 -0
  113. package/dist/diagrams/chen-diagram.js +33 -31
  114. package/dist/diagrams/class-diagram.d.ts +78 -0
  115. package/dist/diagrams/class-diagram.js +23 -27
  116. package/dist/diagrams/dependency-diagram.d.ts +82 -0
  117. package/dist/diagrams/dependency-diagram.js +18 -9
  118. package/dist/diagrams/er-diagram.d.ts +82 -0
  119. package/dist/diagrams/er-diagram.js +174 -231
  120. package/dist/diagrams/flow-diagram.d.ts +70 -0
  121. package/dist/diagrams/flow-diagram.js +23 -18
  122. package/dist/diagrams/gantt-diagram.d.ts +67 -0
  123. package/dist/diagrams/gantt-diagram.js +20 -18
  124. package/dist/diagrams/index-diagram.d.ts +61 -0
  125. package/dist/diagrams/index-diagram.js +36 -31
  126. package/dist/diagrams/index.d.ts +155 -0
  127. package/dist/diagrams/index.js +7 -1
  128. package/dist/diagrams/migration-diagram.d.ts +67 -0
  129. package/dist/diagrams/migration-diagram.js +45 -57
  130. package/dist/diagrams/model-diagram.d.ts +85 -0
  131. package/dist/diagrams/model-diagram.js +225 -287
  132. package/dist/diagrams/package-diagram.d.ts +69 -0
  133. package/dist/diagrams/package-diagram.js +30 -32
  134. package/dist/diagrams/palette.d.ts +138 -0
  135. package/dist/diagrams/palette.js +134 -25
  136. package/dist/diagrams/relational-diagram.d.ts +82 -0
  137. package/dist/diagrams/relational-diagram.js +51 -59
  138. package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
  139. package/dist/diagrams/schemadoc-diagram.js +36 -28
  140. package/dist/diagrams/sequence-diagram.d.ts +61 -0
  141. package/dist/diagrams/sequence-diagram.js +20 -11
  142. package/dist/diagrams/state-diagram.d.ts +85 -0
  143. package/dist/diagrams/state-diagram.js +21 -17
  144. package/dist/diagrams/svg-dom.d.ts +62 -0
  145. package/dist/diagrams/svg-dom.js +11 -0
  146. package/dist/diagrams/tree-diagram.d.ts +47 -0
  147. package/dist/diagrams/tree-diagram.js +19 -10
  148. package/dist/dialects/clickhouse/index.d.ts +660 -0
  149. package/dist/dialects/clickhouse/index.js +107 -2
  150. package/dist/dialects/cockroachdb/index.d.ts +1708 -0
  151. package/dist/dialects/cockroachdb/index.js +139 -10
  152. package/dist/dialects/cratedb/index.d.ts +262 -0
  153. package/dist/dialects/cratedb/index.js +148 -0
  154. package/dist/dialects/databricks/index.d.ts +397 -0
  155. package/dist/dialects/databricks/index.js +233 -11
  156. package/dist/dialects/db2/index.d.ts +729 -0
  157. package/dist/dialects/db2/index.js +152 -2
  158. package/dist/dialects/dialect.d.ts +1653 -0
  159. package/dist/dialects/duckdb/index.d.ts +440 -0
  160. package/dist/dialects/duckdb/index.js +21 -37
  161. package/dist/dialects/exasol/index.d.ts +197 -0
  162. package/dist/dialects/exasol/index.js +14 -0
  163. package/dist/dialects/firebird/index.d.ts +286 -0
  164. package/dist/dialects/firebird/index.js +135 -0
  165. package/dist/dialects/greenplum/index.d.ts +336 -0
  166. package/dist/dialects/greenplum/index.js +168 -0
  167. package/dist/dialects/hana/index.d.ts +512 -0
  168. package/dist/dialects/hana/index.js +17 -35
  169. package/dist/dialects/mariadb/index.d.ts +1241 -0
  170. package/dist/dialects/mariadb/index.js +181 -43
  171. package/dist/dialects/mssql/index.d.ts +729 -0
  172. package/dist/dialects/mssql/index.js +76 -7
  173. package/dist/dialects/mysql/index.d.ts +1233 -0
  174. package/dist/dialects/mysql/index.js +87 -19
  175. package/dist/dialects/oracle/index.d.ts +1222 -0
  176. package/dist/dialects/oracle/index.js +210 -9
  177. package/dist/dialects/postgres/index.d.ts +1598 -0
  178. package/dist/dialects/postgres/index.js +34 -13
  179. package/dist/dialects/query-stream-helper.d.ts +58 -0
  180. package/dist/dialects/questdb/index.d.ts +430 -0
  181. package/dist/dialects/questdb/index.js +292 -0
  182. package/dist/dialects/redshift/index.d.ts +933 -0
  183. package/dist/dialects/redshift/index.js +17 -5
  184. package/dist/dialects/singlestore/index.d.ts +233 -0
  185. package/dist/dialects/singlestore/index.js +53 -0
  186. package/dist/dialects/snowflake/index.d.ts +727 -0
  187. package/dist/dialects/snowflake/index.js +154 -5
  188. package/dist/dialects/spanner/index.d.ts +660 -0
  189. package/dist/dialects/spanner/index.js +43 -21
  190. package/dist/dialects/sqlite/index.d.ts +1133 -0
  191. package/dist/dialects/sqlite/index.js +168 -30
  192. package/dist/dialects/tidb/index.d.ts +226 -0
  193. package/dist/dialects/tidb/index.js +10 -0
  194. package/dist/dialects/timescaledb/index.d.ts +286 -0
  195. package/dist/dialects/timescaledb/index.js +179 -0
  196. package/dist/dialects/trino/index.d.ts +230 -0
  197. package/dist/dialects/trino/index.js +85 -10
  198. package/dist/dialects/turso/index.d.ts +98 -0
  199. package/dist/dialects/turso/index.js +10 -0
  200. package/dist/dialects/vertica/index.d.ts +321 -0
  201. package/dist/dialects/vertica/index.js +161 -0
  202. package/dist/dialects/yugabytedb/index.d.ts +276 -0
  203. package/dist/dialects/yugabytedb/index.js +121 -0
  204. package/dist/errors/index.d.ts +378 -0
  205. package/dist/errors/index.js +29 -1
  206. package/dist/errors/utils.d.ts +53 -0
  207. package/dist/errors.d.ts +5 -0
  208. package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
  209. package/dist/extensions/catalog/mssql-features.d.ts +20 -0
  210. package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
  211. package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
  212. package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
  213. package/dist/extensions/index.d.ts +34 -0
  214. package/dist/extensions/types.d.ts +43 -0
  215. package/dist/external-fields/adapters.d.ts +50 -0
  216. package/dist/external-fields/adapters.js +227 -0
  217. package/dist/external-fields/decorator.d.ts +77 -0
  218. package/dist/external-fields/decorator.js +80 -0
  219. package/dist/external-fields/index.d.ts +10 -0
  220. package/dist/external-fields/index.js +19 -0
  221. package/dist/external-fields/runtime.d.ts +39 -0
  222. package/dist/external-fields/runtime.js +221 -0
  223. package/dist/foreign-data.d.ts +168 -0
  224. package/dist/graph/base-graph-dialect.d.ts +250 -0
  225. package/dist/graph/base-graph-dialect.js +539 -0
  226. package/dist/graph/dgraph/index.d.ts +65 -0
  227. package/dist/graph/dgraph/index.js +559 -0
  228. package/dist/graph/gremlin/index.d.ts +59 -0
  229. package/dist/graph/gremlin/index.js +378 -0
  230. package/dist/graph/index.d.ts +60 -0
  231. package/dist/graph/index.js +67 -0
  232. package/dist/graph/neo4j/index.d.ts +50 -0
  233. package/dist/graph/neo4j/index.js +462 -0
  234. package/dist/graph/types.d.ts +213 -0
  235. package/dist/graph/types.js +234 -0
  236. package/dist/hooks/hooks-manager.d.ts +189 -0
  237. package/dist/hooks/index.d.ts +8 -0
  238. package/dist/index.d.ts +713 -0
  239. package/dist/index.js +36 -4
  240. package/dist/logging.d.ts +183 -0
  241. package/dist/migrations/index.d.ts +9 -0
  242. package/dist/migrations/migration.d.ts +143 -0
  243. package/dist/migrations/migrator.d.ts +199 -0
  244. package/dist/migrations/prormmigration.d.ts +131 -0
  245. package/dist/migrations/query-interface.d.ts +335 -0
  246. package/dist/migrations/seeder.d.ts +167 -0
  247. package/dist/models/associations.d.ts +131 -0
  248. package/dist/models/associations.js +7 -2
  249. package/dist/models/constraints.d.ts +175 -0
  250. package/dist/models/data-types.d.ts +1656 -0
  251. package/dist/models/decorators.d.ts +328 -0
  252. package/dist/models/decorators.js +61 -82
  253. package/dist/models/eager-load.d.ts +86 -0
  254. package/dist/models/eager-load.js +369 -0
  255. package/dist/models/index.d.ts +13 -0
  256. package/dist/models/indexes.d.ts +325 -0
  257. package/dist/models/methods.d.ts +419 -0
  258. package/dist/models/model-manager.d.ts +76 -0
  259. package/dist/models/model.d.ts +820 -0
  260. package/dist/models/model.js +15 -101
  261. package/dist/models/operators.d.ts +29 -0
  262. package/dist/models/scopes.d.ts +71 -0
  263. package/dist/models/typescript-types.d.ts +177 -0
  264. package/dist/nosql/aerospike/index.d.ts +126 -0
  265. package/dist/nosql/allegrograph/index.d.ts +86 -0
  266. package/dist/nosql/arangodb/index.d.ts +285 -0
  267. package/dist/nosql/arangodb/index.js +274 -2
  268. package/dist/nosql/arangodb/where.d.ts +38 -0
  269. package/dist/nosql/arangodb/where.js +94 -0
  270. package/dist/nosql/azure-blob/index.d.ts +104 -0
  271. package/dist/nosql/beanstalkd/index.d.ts +88 -0
  272. package/dist/nosql/beequeue/index.d.ts +99 -0
  273. package/dist/nosql/bigchaindb/index.d.ts +113 -0
  274. package/dist/nosql/bigtable/index.d.ts +144 -0
  275. package/dist/nosql/blazegraph/index.d.ts +88 -0
  276. package/dist/nosql/bullmq/index.d.ts +83 -0
  277. package/dist/nosql/cassandra/index.d.ts +119 -0
  278. package/dist/nosql/chroma/index.d.ts +151 -0
  279. package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
  280. package/dist/nosql/coherence/index.d.ts +91 -0
  281. package/dist/nosql/cosmosdb/index.d.ts +78 -0
  282. package/dist/nosql/couchbase/index.d.ts +103 -0
  283. package/dist/nosql/dax/index.d.ts +118 -0
  284. package/dist/nosql/deno-kv/index.d.ts +109 -0
  285. package/dist/nosql/dgraph/index.d.ts +80 -0
  286. package/dist/nosql/doris/index.d.ts +88 -0
  287. package/dist/nosql/druid/index.d.ts +95 -0
  288. package/dist/nosql/dynamodb/index.d.ts +643 -0
  289. package/dist/nosql/dynamodb/index.js +423 -0
  290. package/dist/nosql/elasticsearch/index.d.ts +239 -0
  291. package/dist/nosql/etcd/index.d.ts +243 -0
  292. package/dist/nosql/eventhubs/index.d.ts +89 -0
  293. package/dist/nosql/eventstore/index.d.ts +102 -0
  294. package/dist/nosql/faunadb/index.d.ts +141 -0
  295. package/dist/nosql/faunadb/index.js +329 -0
  296. package/dist/nosql/firestore/index.d.ts +67 -0
  297. package/dist/nosql/fluree/index.d.ts +88 -0
  298. package/dist/nosql/fuseki/index.d.ts +94 -0
  299. package/dist/nosql/gcs/index.d.ts +62 -0
  300. package/dist/nosql/gearman/index.d.ts +77 -0
  301. package/dist/nosql/geode/index.d.ts +93 -0
  302. package/dist/nosql/graphdb/index.d.ts +86 -0
  303. package/dist/nosql/graylog/index.d.ts +118 -0
  304. package/dist/nosql/gridgain/index.d.ts +78 -0
  305. package/dist/nosql/hazelcast/index.d.ts +73 -0
  306. package/dist/nosql/hbase/index.d.ts +123 -0
  307. package/dist/nosql/ignite/index.d.ts +80 -0
  308. package/dist/nosql/immudb/index.d.ts +131 -0
  309. package/dist/nosql/index.d.ts +215 -0
  310. package/dist/nosql/infinispan/index.d.ts +95 -0
  311. package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
  312. package/dist/nosql/influxdb/flux-compiler.js +170 -0
  313. package/dist/nosql/influxdb/index.d.ts +300 -0
  314. package/dist/nosql/influxdb/index.js +0 -0
  315. package/dist/nosql/kafka/index.d.ts +113 -0
  316. package/dist/nosql/keyspaces/index.d.ts +122 -0
  317. package/dist/nosql/kinesis/index.d.ts +121 -0
  318. package/dist/nosql/leveldb/index.d.ts +112 -0
  319. package/dist/nosql/leveldb/index.js +103 -1
  320. package/dist/nosql/lmdb/index.d.ts +76 -0
  321. package/dist/nosql/loki/index.d.ts +126 -0
  322. package/dist/nosql/marklogic/index.d.ts +76 -0
  323. package/dist/nosql/materialize/index.d.ts +91 -0
  324. package/dist/nosql/meilisearch/index.d.ts +76 -0
  325. package/dist/nosql/memcached/index.d.ts +138 -0
  326. package/dist/nosql/milvus/index.d.ts +167 -0
  327. package/dist/nosql/minio/index.d.ts +122 -0
  328. package/dist/nosql/momento/index.d.ts +99 -0
  329. package/dist/nosql/mongodb/index.d.ts +265 -0
  330. package/dist/nosql/mongodb/index.js +139 -0
  331. package/dist/nosql/mongodb/where.d.ts +8 -0
  332. package/dist/nosql/mongodb/where.js +181 -0
  333. package/dist/nosql/nats/index.d.ts +139 -0
  334. package/dist/nosql/nedb/index.d.ts +79 -0
  335. package/dist/nosql/neo4j/index.d.ts +217 -0
  336. package/dist/nosql/neo4j/index.js +26 -14
  337. package/dist/nosql/neptune/index.d.ts +234 -0
  338. package/dist/nosql/neptune/index.js +23 -9
  339. package/dist/nosql/nsq/index.d.ts +93 -0
  340. package/dist/nosql/opensearch/index.d.ts +97 -0
  341. package/dist/nosql/orientdb/index.d.ts +72 -0
  342. package/dist/nosql/papertrail/index.d.ts +120 -0
  343. package/dist/nosql/pinecone/index.d.ts +148 -0
  344. package/dist/nosql/pinot/index.d.ts +90 -0
  345. package/dist/nosql/pouchdb/index.d.ts +95 -0
  346. package/dist/nosql/prometheus/index.d.ts +112 -0
  347. package/dist/nosql/provendb/index.d.ts +143 -0
  348. package/dist/nosql/provendb/index.js +262 -0
  349. package/dist/nosql/pubsub/index.d.ts +83 -0
  350. package/dist/nosql/pulsar/index.d.ts +105 -0
  351. package/dist/nosql/qdrant/index.d.ts +231 -0
  352. package/dist/nosql/qldb/index.d.ts +182 -0
  353. package/dist/nosql/qldb/index.js +302 -1
  354. package/dist/nosql/r2/index.d.ts +160 -0
  355. package/dist/nosql/rabbitmq/index.d.ts +131 -0
  356. package/dist/nosql/ravendb/index.d.ts +138 -0
  357. package/dist/nosql/ravendb/index.js +323 -9
  358. package/dist/nosql/ravendb/where.d.ts +38 -0
  359. package/dist/nosql/ravendb/where.js +94 -0
  360. package/dist/nosql/redis/index.d.ts +267 -0
  361. package/dist/nosql/redis/index.js +19 -5
  362. package/dist/nosql/redpanda/index.d.ts +117 -0
  363. package/dist/nosql/resque/index.d.ts +91 -0
  364. package/dist/nosql/rethinkdb/index.d.ts +194 -0
  365. package/dist/nosql/rethinkdb/index.js +290 -0
  366. package/dist/nosql/rethinkdb/where.d.ts +38 -0
  367. package/dist/nosql/rethinkdb/where.js +94 -0
  368. package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
  369. package/dist/nosql/rocksdb/document-layer.js +338 -0
  370. package/dist/nosql/rocksdb/index.d.ts +112 -0
  371. package/dist/nosql/rocksdb/index.js +103 -1
  372. package/dist/nosql/rocksdb/where-match.d.ts +21 -0
  373. package/dist/nosql/rocksdb/where-match.js +238 -0
  374. package/dist/nosql/rockset/index.d.ts +84 -0
  375. package/dist/nosql/s3/index.d.ts +170 -0
  376. package/dist/nosql/scylladb/index.d.ts +117 -0
  377. package/dist/nosql/signoz/index.d.ts +116 -0
  378. package/dist/nosql/sns/index.d.ts +99 -0
  379. package/dist/nosql/solr/index.d.ts +129 -0
  380. package/dist/nosql/splunk/index.d.ts +125 -0
  381. package/dist/nosql/sqs/index.d.ts +116 -0
  382. package/dist/nosql/stardog/index.d.ts +86 -0
  383. package/dist/nosql/starrocks/index.d.ts +89 -0
  384. package/dist/nosql/store.d.ts +23 -0
  385. package/dist/nosql/sumologic/index.d.ts +119 -0
  386. package/dist/nosql/surrealdb/index.d.ts +156 -0
  387. package/dist/nosql/surrealdb/index.js +174 -1
  388. package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
  389. package/dist/nosql/surrealdb/query-compiler.js +193 -0
  390. package/dist/nosql/terminusdb/index.d.ts +95 -0
  391. package/dist/nosql/tigergraph/index.d.ts +314 -0
  392. package/dist/nosql/typesense/index.d.ts +82 -0
  393. package/dist/nosql/unqlite/index.d.ts +68 -0
  394. package/dist/nosql/upstash/index.d.ts +80 -0
  395. package/dist/nosql/vercel-kv/index.d.ts +82 -0
  396. package/dist/nosql/victoriametrics/index.d.ts +129 -0
  397. package/dist/nosql/virtuoso/index.d.ts +87 -0
  398. package/dist/nosql/weaviate/index.d.ts +196 -0
  399. package/dist/operators/index.d.ts +7 -0
  400. package/dist/operators.d.ts +2947 -0
  401. package/dist/operators.js +46 -1
  402. package/dist/prisma-migrate/index.d.ts +28 -0
  403. package/dist/prisma-migrate/migration-generator.d.ts +21 -0
  404. package/dist/prisma-migrate/model-generator.d.ts +12 -0
  405. package/dist/prisma-migrate/relations.d.ts +28 -0
  406. package/dist/prisma-migrate/schema-parser.d.ts +42 -0
  407. package/dist/prisma-migrate/type-mapper.d.ts +20 -0
  408. package/dist/prorm.d.ts +2093 -0
  409. package/dist/prorm.js +721 -302
  410. package/dist/query-builders/cte-builder.d.ts +104 -0
  411. package/dist/query-builders/functions/aggregate.d.ts +199 -0
  412. package/dist/query-builders/functions/conditional.d.ts +195 -0
  413. package/dist/query-builders/functions/datetime.d.ts +202 -0
  414. package/dist/query-builders/functions/fulltext.d.ts +220 -0
  415. package/dist/query-builders/functions/index.d.ts +17 -0
  416. package/dist/query-builders/functions/json.d.ts +157 -0
  417. package/dist/query-builders/functions/math.d.ts +215 -0
  418. package/dist/query-builders/functions/string.d.ts +233 -0
  419. package/dist/query-builders/functions/window.d.ts +209 -0
  420. package/dist/query-builders/include-builder.d.ts +85 -0
  421. package/dist/query-builders/index-expression-builder.d.ts +153 -0
  422. package/dist/query-builders/index.d.ts +121 -0
  423. package/dist/query-builders/index.js +10 -0
  424. package/dist/query-builders/insert-builder.d.ts +62 -0
  425. package/dist/query-builders/model-helpers.d.ts +28 -0
  426. package/dist/query-builders/order-limit-builder.d.ts +84 -0
  427. package/dist/query-builders/sql-compiler.d.ts +562 -0
  428. package/dist/query-builders/subquery-builder.d.ts +133 -0
  429. package/dist/query-builders/update-builder.d.ts +71 -0
  430. package/dist/query-builders/view-builder.d.ts +189 -0
  431. package/dist/query-builders/where-builder.d.ts +124 -0
  432. package/dist/query-interface.d.ts +407 -0
  433. package/dist/query-interface.js +84 -0
  434. package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
  435. package/dist/query-optimizers/explain-plans.d.ts +187 -0
  436. package/dist/query-optimizers/index.d.ts +27 -0
  437. package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
  438. package/dist/query-optimizers/query-hints.d.ts +201 -0
  439. package/dist/query-optimizers/query-optimizer.d.ts +162 -0
  440. package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
  441. package/dist/replica-manager.d.ts +235 -0
  442. package/dist/schema/index.d.ts +7 -0
  443. package/dist/schema/migration-generator.d.ts +74 -0
  444. package/dist/schema/schema-differ.d.ts +114 -0
  445. package/dist/schema/types.d.ts +246 -0
  446. package/dist/schema-objects.d.ts +78 -0
  447. package/dist/schema-objects.js +203 -0
  448. package/dist/sql-constants.d.ts +240 -0
  449. package/dist/sqlite-advanced.d.ts +572 -0
  450. package/dist/streams/index.d.ts +5 -0
  451. package/dist/streams/transforms.d.ts +120 -0
  452. package/dist/transaction.d.ts +221 -0
  453. package/dist/types/index.d.ts +3123 -0
  454. package/dist/user-management.d.ts +141 -0
  455. package/dist/utils/date.d.ts +149 -0
  456. package/dist/utils/index.d.ts +359 -0
  457. package/dist/utils/string.d.ts +88 -0
  458. package/dist/validators/index.d.ts +7 -0
  459. package/dist/validators/validator.d.ts +306 -0
  460. package/package.json +20 -5
@@ -0,0 +1,181 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.translateWhereToMongo = translateWhereToMongo;
4
+ exports.translateOrderToMongo = translateOrderToMongo;
5
+ /**
6
+ * ORM where-clause translator for the MongoDB store.
7
+ *
8
+ * Turns the ORM's `where` shape (plain-object field conditions, `Op.*`
9
+ * comparison symbols, and `Op.and`/`Op.or`/`Op.not` logical symbols) directly
10
+ * into a native MongoDB query filter (`$gt`, `$in`, `$regex`, `$and`/`$or`/
11
+ * `$nor`, ...). This is what lets callers write standard ORM queries
12
+ * (`{ age: { [Op.gte]: 18 } }`) instead of hand-building Mongo filter objects.
13
+ */
14
+ const operators_1 = require("../../operators");
15
+ const index_1 = require("../../errors/index");
16
+ /** Whether `v` is a plain object carrying `Op.*` comparison symbols. */
17
+ function hasOpSymbols(v) {
18
+ return (v !== null &&
19
+ typeof v === 'object' &&
20
+ !Array.isArray(v) &&
21
+ Object.getOwnPropertySymbols(v).length > 0);
22
+ }
23
+ function escapeRegex(s) {
24
+ return s.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
25
+ }
26
+ /** Translate a SQL `LIKE` pattern into a MongoDB `$regex` source string. */
27
+ function likeToRegexSource(pattern) {
28
+ let out = '^';
29
+ for (const ch of pattern) {
30
+ if (ch === '%')
31
+ out += '.*';
32
+ else if (ch === '_')
33
+ out += '.';
34
+ else
35
+ out += escapeRegex(ch);
36
+ }
37
+ return out + '$';
38
+ }
39
+ /** Translate one `{ [Op.*]: value }` object into the Mongo operators for a single field. */
40
+ function translateFieldOps(opObj) {
41
+ const out = {};
42
+ for (const op of Object.getOwnPropertySymbols(opObj)) {
43
+ const value = opObj[op];
44
+ switch (op) {
45
+ case operators_1.Op.eq:
46
+ out.$eq = value;
47
+ break;
48
+ case operators_1.Op.ne:
49
+ out.$ne = value;
50
+ break;
51
+ case operators_1.Op.gt:
52
+ out.$gt = value;
53
+ break;
54
+ case operators_1.Op.gte:
55
+ out.$gte = value;
56
+ break;
57
+ case operators_1.Op.lt:
58
+ out.$lt = value;
59
+ break;
60
+ case operators_1.Op.lte:
61
+ out.$lte = value;
62
+ break;
63
+ case operators_1.Op.in:
64
+ out.$in = value;
65
+ break;
66
+ case operators_1.Op.notIn:
67
+ out.$nin = value;
68
+ break;
69
+ case operators_1.Op.between: {
70
+ const [lo, hi] = value;
71
+ out.$gte = lo;
72
+ out.$lte = hi;
73
+ break;
74
+ }
75
+ case operators_1.Op.notBetween: {
76
+ const [lo, hi] = value;
77
+ out.$not = { $gte: lo, $lte: hi };
78
+ break;
79
+ }
80
+ case operators_1.Op.isNull:
81
+ out.$eq = null;
82
+ break;
83
+ case operators_1.Op.isNotNull:
84
+ out.$ne = null;
85
+ break;
86
+ case operators_1.Op.like:
87
+ out.$regex = likeToRegexSource(String(value));
88
+ break;
89
+ case operators_1.Op.iLike:
90
+ out.$regex = likeToRegexSource(String(value));
91
+ out.$options = 'i';
92
+ break;
93
+ case operators_1.Op.notLike:
94
+ // $not requires a BSON regex, not a { $regex } document (that throws
95
+ // "$not needs a regex or a document" at query time).
96
+ out.$not = new RegExp(likeToRegexSource(String(value)));
97
+ break;
98
+ case operators_1.Op.notILike:
99
+ out.$not = new RegExp(likeToRegexSource(String(value)), 'i');
100
+ break;
101
+ case operators_1.Op.startsWith:
102
+ out.$regex = '^' + escapeRegex(String(value));
103
+ break;
104
+ case operators_1.Op.endsWith:
105
+ out.$regex = escapeRegex(String(value)) + '$';
106
+ break;
107
+ case operators_1.Op.substring:
108
+ case operators_1.Op.contains:
109
+ out.$regex = escapeRegex(String(value));
110
+ break;
111
+ case operators_1.Op.regexp:
112
+ out.$regex = String(value);
113
+ break;
114
+ case operators_1.Op.iRegexp:
115
+ out.$regex = String(value);
116
+ out.$options = 'i';
117
+ break;
118
+ case operators_1.Op.notRegexp:
119
+ out.$not = new RegExp(String(value));
120
+ break;
121
+ case operators_1.Op.notIRegexp:
122
+ out.$not = new RegExp(String(value), 'i');
123
+ break;
124
+ default:
125
+ throw new index_1.DatabaseError(`MongoDB: unsupported where operator "${op.toString()}"`, {
126
+ code: index_1.ErrorCodes.QUERY_ERROR,
127
+ });
128
+ }
129
+ }
130
+ return out;
131
+ }
132
+ /**
133
+ * Translate an ORM `where` object into a native MongoDB filter document.
134
+ * A bare `{ field: value }` maps to equality, an array value to `$in`, and
135
+ * `Op.and`/`Op.or`/`Op.not` to `$and`/`$or`/`$nor`.
136
+ */
137
+ function translateWhereToMongo(where) {
138
+ if (!where)
139
+ return {};
140
+ const out = {};
141
+ for (const sym of Object.getOwnPropertySymbols(where)) {
142
+ const val = where[sym];
143
+ if (sym === operators_1.Op.and) {
144
+ out.$and = val.map(translateWhereToMongo);
145
+ }
146
+ else if (sym === operators_1.Op.or) {
147
+ out.$or = val.map(translateWhereToMongo);
148
+ }
149
+ else if (sym === operators_1.Op.not) {
150
+ out.$nor = [translateWhereToMongo(val)];
151
+ }
152
+ }
153
+ for (const field of Object.keys(where)) {
154
+ const val = where[field];
155
+ if (hasOpSymbols(val)) {
156
+ out[field] = translateFieldOps(val);
157
+ }
158
+ else if (Array.isArray(val)) {
159
+ out[field] = { $in: val };
160
+ }
161
+ else {
162
+ out[field] = val;
163
+ }
164
+ }
165
+ return out;
166
+ }
167
+ /** Build a MongoDB `sort` document from ORM ordering terms. */
168
+ function translateOrderToMongo(order) {
169
+ if (order === undefined)
170
+ return undefined;
171
+ const single = Array.isArray(order) && order.length === 2 && typeof order[0] === 'string' && (order[1] === 'ASC' || order[1] === 'DESC');
172
+ const terms = (Array.isArray(order) && !single ? order : [order]);
173
+ const sort = {};
174
+ for (const term of terms) {
175
+ if (typeof term === 'string')
176
+ sort[term] = 1;
177
+ else
178
+ sort[term[0]] = term[1] === 'DESC' ? -1 : 1;
179
+ }
180
+ return sort;
181
+ }
@@ -0,0 +1,139 @@
1
+ /**
2
+ * NATS store implementation.
3
+ *
4
+ * NATS is a lightweight publish/subscribe and request/reply messaging system.
5
+ * Its JetStream layer adds persistence, including a key/value (KV) store built
6
+ * on top of streams. NATS has no query language and does not fit the
7
+ * SQL-shaped `Dialect` interface, so this class implements the minimal
8
+ * `NoSqlStore` marker interface and exposes NATS's real operations
9
+ * (core pub/sub, request/reply, and JetStream KV) instead of forcing
10
+ * everything into a `query(sql)` shape.
11
+ *
12
+ * Uses the `nats` driver (`nats.js`). The driver is lazy-loaded inside
13
+ * `connect()` via `require('nats')` so that importing this module never
14
+ * pulls in the driver unless a connection is actually opened; tests inject a
15
+ * pre-built connection through the `client` option and never touch the real
16
+ * driver or the network.
17
+ *
18
+ * Encoding: NATS messages are byte payloads (`Uint8Array`). `publish()` and
19
+ * `request()` accept either a `string` (UTF-8 encoded via `TextEncoder`) or a
20
+ * `Uint8Array` (passed through unchanged). `subscribe()` handlers and
21
+ * `request()` replies deliver the raw `Uint8Array` payload; decode with
22
+ * `TextDecoder` (or the message's own `.string()`/`.json()` helpers when using
23
+ * the real driver) as needed. JetStream KV values are encoded the same way on
24
+ * write, and `kvGet()` returns the entry's raw `Uint8Array` value (or `null`
25
+ * when the key is absent).
26
+ */
27
+ import { NoSqlStore } from '../store';
28
+ /**
29
+ * A NATS message payload accepted by `publish()`/`request()`/`kvPut()`.
30
+ * Strings are UTF-8 encoded; `Uint8Array` values are sent as-is.
31
+ */
32
+ export type NatsPayload = string | Uint8Array;
33
+ /**
34
+ * A minimal structural view of the pieces of a `nats` `NatsConnection` this
35
+ * store uses. Kept intentionally loose (`any`-returning) because the real
36
+ * driver's types are not available at build time (the package is optional).
37
+ */
38
+ export interface NatsConnectionLike {
39
+ publish(subject: string, data?: Uint8Array, opts?: unknown): void;
40
+ subscribe(subject: string, opts?: unknown): unknown;
41
+ request(subject: string, data?: Uint8Array, opts?: unknown): Promise<unknown>;
42
+ jetstream(opts?: unknown): {
43
+ views: {
44
+ kv(bucket: string, opts?: unknown): Promise<NatsKvLike>;
45
+ };
46
+ };
47
+ drain?(): Promise<void>;
48
+ close?(): Promise<void>;
49
+ }
50
+ /** A minimal structural view of a JetStream KV bucket view. */
51
+ export interface NatsKvLike {
52
+ put(key: string, value: Uint8Array): Promise<number>;
53
+ get(key: string): Promise<{
54
+ value: Uint8Array;
55
+ } | null>;
56
+ delete(key: string): Promise<void>;
57
+ }
58
+ /** A handler invoked for each message delivered to a `subscribe()` subject. */
59
+ export type NatsMessageHandler = (err: Error | null, msg: unknown) => void;
60
+ /** Connection options for `NatsStore`. */
61
+ export interface NatsStoreOptions {
62
+ /**
63
+ * One or more NATS server URLs (e.g. `nats://localhost:4222`). Passed
64
+ * straight through to the driver's `connect({ servers })`.
65
+ */
66
+ servers?: string | string[];
67
+ /** Token auth. */
68
+ token?: string;
69
+ /** Username for user/password auth. */
70
+ user?: string;
71
+ /** Password for user/password auth. */
72
+ pass?: string;
73
+ /**
74
+ * A pre-built `NatsConnection`. When provided, `connect()` adopts it
75
+ * directly and never calls `require('nats')` — this is how tests inject a
76
+ * mock connection without the real driver or a network.
77
+ */
78
+ client?: NatsConnectionLike;
79
+ }
80
+ /**
81
+ * `NatsStore` wraps a `nats` `NatsConnection` and exposes NATS's core
82
+ * publish/subscribe and request/reply operations plus JetStream KV
83
+ * (`kvPut`/`kvGet`/`kvDelete`) as a typed, promise-based API.
84
+ */
85
+ export declare class NatsStore implements NoSqlStore {
86
+ readonly name = "nats";
87
+ readonly library = "nats";
88
+ private readonly options;
89
+ private connection;
90
+ private connected;
91
+ /** Cached JetStream KV bucket views, keyed by bucket name. */
92
+ private readonly kvCache;
93
+ constructor(options?: NatsStoreOptions);
94
+ connect(): Promise<void>;
95
+ disconnect(): Promise<void>;
96
+ isConnected(): boolean;
97
+ /** Returns the underlying `nats` connection for anything not wrapped here. */
98
+ getClient(): NatsConnectionLike;
99
+ private requireConnection;
100
+ /**
101
+ * Publish `data` to `subject`. The payload is encoded per the module's
102
+ * encoding rules (string → UTF-8, `Uint8Array` → as-is).
103
+ */
104
+ publish(subject: string, data: NatsPayload): void;
105
+ /**
106
+ * Subscribe to `subject`, invoking `handler` for each message via the
107
+ * driver's callback option (`subscribe(subject, { callback })`). Returns the
108
+ * driver's `Subscription` (call `.unsubscribe()` / `.drain()` on it to stop).
109
+ * The callback style is chosen over the async-iterator style so a handler
110
+ * can be registered without spawning a consuming loop.
111
+ */
112
+ subscribe(subject: string, handler: NatsMessageHandler): unknown;
113
+ /**
114
+ * Send a request to `subject` and await a single reply. `opts` is passed
115
+ * straight through to the driver (e.g. `{ timeout }`). Resolves with the
116
+ * driver's reply `Msg`; read `.data` / `.string()` / `.json()` off it.
117
+ */
118
+ request(subject: string, data: NatsPayload, opts?: unknown): Promise<unknown>;
119
+ /**
120
+ * Lazily resolve (and cache) the JetStream KV bucket view for `bucket` via
121
+ * `connection.jetstream().views.kv(bucket)`. Subsequent calls for the same
122
+ * bucket return the cached view.
123
+ */
124
+ kv(bucket: string): Promise<NatsKvLike>;
125
+ /**
126
+ * Put `value` at `key` in `bucket`'s KV store (encoded per the module's
127
+ * encoding rules). Returns the revision number assigned by JetStream.
128
+ */
129
+ kvPut(bucket: string, key: string, value: NatsPayload): Promise<number>;
130
+ /**
131
+ * Get the raw value stored at `key` in `bucket`, or `null` if the key is
132
+ * absent (or holds a deleted/purged entry). Returns the entry's
133
+ * `Uint8Array` value; decode with `TextDecoder` as needed.
134
+ */
135
+ kvGet(bucket: string, key: string): Promise<Uint8Array | null>;
136
+ /** Delete `key` from `bucket`'s KV store. */
137
+ kvDelete(bucket: string, key: string): Promise<void>;
138
+ }
139
+ export default NatsStore;
@@ -0,0 +1,79 @@
1
+ import type { NoSqlStore } from '../store';
2
+ /** A single entry in a `batch()` write: a `put` (with document value) or a `del`. */
3
+ export type NedbBatchOp = {
4
+ type: 'put';
5
+ key: string;
6
+ value: Record<string, unknown>;
7
+ } | {
8
+ type: 'del';
9
+ key: string;
10
+ };
11
+ /** A NeDB document: an arbitrary record that carries an `_id`. */
12
+ export type NedbDoc = Record<string, unknown> & {
13
+ _id?: string;
14
+ };
15
+ type NodeCallback<T> = (err: Error | null, result?: T) => void;
16
+ /**
17
+ * Minimal structural type for the pieces of a `nedb` `Datastore` this store
18
+ * uses. Kept local (rather than importing from `nedb`) so this module
19
+ * type-checks without the optional driver installed.
20
+ */
21
+ export interface NedbClientLike {
22
+ insert(doc: NedbDoc, cb: NodeCallback<NedbDoc>): void;
23
+ findOne(query: Record<string, unknown>, cb: NodeCallback<NedbDoc | null>): void;
24
+ find(query: Record<string, unknown>, cb: NodeCallback<NedbDoc[]>): void;
25
+ remove(query: Record<string, unknown>, options: Record<string, unknown>, cb: NodeCallback<number>): void;
26
+ }
27
+ /** Connection options for `NedbStore`. */
28
+ export interface NedbStoreOptions {
29
+ /**
30
+ * Filesystem path for the NeDB datafile. Omit for a purely in-memory store.
31
+ */
32
+ filename?: string;
33
+ /**
34
+ * A pre-built `nedb` `Datastore` (or a compatible mock). When provided,
35
+ * `connect()` uses it directly and skips `require('nedb')` entirely — this
36
+ * is how tests inject a mock without the real driver installed.
37
+ */
38
+ client?: NedbClientLike;
39
+ }
40
+ /**
41
+ * `NedbStore` wraps a `nedb` `Datastore` and exposes both a common KV surface
42
+ * — `put`/`get`/`del` keyed on `_id`, `batch`, `list` — and NeDB's native
43
+ * document operations `insert`/`find`.
44
+ */
45
+ export declare class NedbStore implements NoSqlStore {
46
+ readonly name = "nedb";
47
+ readonly library = "nedb";
48
+ private readonly options;
49
+ private client;
50
+ private connected;
51
+ constructor(options?: NedbStoreOptions);
52
+ connect(): Promise<void>;
53
+ disconnect(): Promise<void>;
54
+ isConnected(): boolean;
55
+ /** Returns the underlying `nedb` `Datastore` for anything not wrapped here. */
56
+ getClient(): NedbClientLike;
57
+ private requireClient;
58
+ private wrapError;
59
+ /** Wrap a callback-style NeDB call into a Promise. */
60
+ private promisify;
61
+ /**
62
+ * Writes a document keyed by `_id = key`. Maps onto NeDB's `insert`, merging
63
+ * `key` into the document as its `_id`.
64
+ */
65
+ put(key: string, value: Record<string, unknown>): Promise<NedbDoc>;
66
+ /** Reads a document by `_id` (NeDB `findOne({ _id })`). Returns `null` if absent. */
67
+ get(key: string): Promise<NedbDoc | null>;
68
+ /** Deletes a document by `_id` (NeDB `remove({ _id })`). Returns the number removed. */
69
+ del(key: string): Promise<number>;
70
+ /** Native `insert`: adds a document (NeDB assigns an `_id` if omitted). */
71
+ insert(doc: NedbDoc): Promise<NedbDoc>;
72
+ /** Native `find`: returns every document matching the Mongo-style `query`. */
73
+ find(query?: Record<string, unknown>): Promise<NedbDoc[]>;
74
+ /** Applies a list of `put`/`del` operations sequentially. */
75
+ batch(ops: NedbBatchOp[]): Promise<void>;
76
+ /** Lists all document `_id`s (via `find({})`). */
77
+ list(): Promise<string[]>;
78
+ }
79
+ export default NedbStore;
@@ -0,0 +1,217 @@
1
+ /**
2
+ * Neo4j store implementation.
3
+ *
4
+ * Neo4j is a graph database: data is modeled as labeled nodes and typed
5
+ * relationships (both carrying arbitrary properties) instead of rows in
6
+ * tables, and queried with Cypher instead of SQL. It has no `Dialect`-shaped
7
+ * `query(sql)`/identifier-escaping/DDL surface, so this class implements the
8
+ * minimal `NoSqlStore` marker interface and exposes Neo4j's real primitives
9
+ * — sessions, (managed and explicit) transactions, and raw parameterized
10
+ * Cypher — plus a thin layer of Cypher-generating convenience helpers for
11
+ * common node/relationship CRUD, rather than forcing a graph database into
12
+ * a `query(sql)` shape.
13
+ *
14
+ * Uses the official `neo4j-driver` (Bolt protocol) driver.
15
+ */
16
+ import type { Driver, Session, ManagedTransaction, Config as Neo4jDriverConfig, AuthToken, Integer } from 'neo4j-driver';
17
+ import { NoSqlStore } from '../store';
18
+ /**
19
+ * Connection options for `Neo4jStore`.
20
+ *
21
+ * Accepts either a pre-built `AuthToken` (e.g. from `neo4j.auth.kerberos()`/
22
+ * `neo4j.auth.bearer()`) or a plain `username`/`password` pair, which is
23
+ * turned into a basic auth token. Any other `neo4j-driver` `Config` fields
24
+ * (`maxConnectionPoolSize`, `connectionTimeout`, `encrypted`, etc) are
25
+ * passed straight through via `config`.
26
+ */
27
+ export interface Neo4jStoreOptions {
28
+ /** Bolt/neo4j connection URI, e.g. `'neo4j://localhost:7687'` or `'bolt://localhost:7687'`. */
29
+ uri: string;
30
+ /** Basic-auth username. Ignored if `auth` is provided. */
31
+ username?: string;
32
+ /** Basic-auth password. Ignored if `auth` is provided. */
33
+ password?: string;
34
+ /** A pre-built auth token (`neo4j.auth.basic/kerberos/bearer/custom`). Overrides `username`/`password`. */
35
+ auth?: AuthToken;
36
+ /** Default database to run sessions/queries against (Neo4j 4.0+ multi-database). */
37
+ database?: string;
38
+ /** Any other `neo4j-driver` `Config` fields, passed straight through to `neo4j.driver()`. */
39
+ config?: Neo4jDriverConfig;
40
+ }
41
+ /** Parameters for a parameterized Cypher query. */
42
+ export type CypherParams = Record<string, unknown>;
43
+ /** Session-level options shared by `session()`, `run()`, `executeRead()`/`executeWrite()`, and `beginTransaction()`. */
44
+ export interface SessionOptions {
45
+ /** Database to run against; falls back to `Neo4jStoreOptions.database`, then the server default. */
46
+ database?: string;
47
+ /** `'READ'` or `'WRITE'` — determines routing in a cluster and eligibility for read-replica routing. */
48
+ defaultAccessMode?: 'READ' | 'WRITE';
49
+ }
50
+ /** A subset of `ResultSummary.counters` surfaced as plain numbers. */
51
+ export interface CypherSummary {
52
+ queryType: string;
53
+ nodesCreated: number;
54
+ nodesDeleted: number;
55
+ relationshipsCreated: number;
56
+ relationshipsDeleted: number;
57
+ propertiesSet: number;
58
+ labelsAdded: number;
59
+ labelsRemoved: number;
60
+ }
61
+ /** The result of running a Cypher query: mapped plain-object records plus a summary. */
62
+ export interface CypherResult<T = Record<string, unknown>> {
63
+ records: T[];
64
+ /** Field names present on each record, in order. */
65
+ keys: string[];
66
+ summary: CypherSummary;
67
+ }
68
+ /** A Neo4j node, mapped to a plain object (see "Result mapping" in the README). */
69
+ export interface GraphNode<P = Record<string, unknown>> {
70
+ elementId: string;
71
+ /** Legacy numeric ID (unwrapped from Neo4j's `Integer` type - see `intToNumber`/README "Known limitations"). */
72
+ identity: number;
73
+ labels: string[];
74
+ properties: P;
75
+ }
76
+ /** A Neo4j relationship, mapped to a plain object. */
77
+ export interface GraphRelationship<P = Record<string, unknown>> {
78
+ elementId: string;
79
+ identity: number;
80
+ type: string;
81
+ startElementId: string;
82
+ endElementId: string;
83
+ start: number;
84
+ end: number;
85
+ properties: P;
86
+ }
87
+ /** Pagination options for `findNodes()`/`findRelationships()`. */
88
+ export interface FindOptions {
89
+ skip?: number;
90
+ limit?: number;
91
+ }
92
+ /** Options for `deleteNode()`. */
93
+ export interface DeleteNodeOptions {
94
+ /** Also delete any relationships attached to the node (Cypher `DETACH DELETE`). Without this, deleting a node with existing relationships fails. */
95
+ detach?: boolean;
96
+ }
97
+ /**
98
+ * A handle to an explicit (begin/commit/rollback) transaction, returned by
99
+ * `beginTransaction()`. Unlike `executeRead()`/`executeWrite()`, this is not
100
+ * automatically retried on transient errors - the caller drives commit/
101
+ * rollback explicitly.
102
+ */
103
+ export interface Neo4jTransaction {
104
+ run<T = Record<string, unknown>>(cypher: string, params?: CypherParams): Promise<CypherResult<T>>;
105
+ commit(): Promise<void>;
106
+ rollback(): Promise<void>;
107
+ /** `true` until `commit()`/`rollback()` has completed. */
108
+ isOpen(): boolean;
109
+ }
110
+ /**
111
+ * Unwrap a single Neo4j `Integer` (its 64-bit integer type, used for
112
+ * identities, counts, and any Cypher `INTEGER` value) into a JS `number`.
113
+ * Values outside `Number.MAX_SAFE_INTEGER` lose precision on this
114
+ * conversion - see "Known limitations" in the README for the lossless
115
+ * alternative (`neo4j-driver`'s `disableLosslessIntegers`/`useBigInt`
116
+ * config, passed through via `Neo4jStoreOptions.config`).
117
+ */
118
+ export declare function intToNumber(value: Integer): number;
119
+ /**
120
+ * `Neo4jStore` wraps a `neo4j-driver` `Driver` and exposes:
121
+ * - raw parameterized Cypher (`run()`) - the general escape hatch,
122
+ * - session management (`session()`),
123
+ * - transaction functions with automatic retry (`executeRead()`/`executeWrite()`),
124
+ * - explicit begin/commit/rollback transactions (`beginTransaction()`),
125
+ * - and Cypher-generating node/relationship CRUD convenience helpers
126
+ * (`createNode()`, `findNodes()`, `createRelationship()`, etc) built on
127
+ * top of `run()` - these are thin Cypher generators, not a separate
128
+ * query engine, so anything they don't cover is one `run()` call away.
129
+ */
130
+ export declare class Neo4jStore implements NoSqlStore {
131
+ readonly name = "neo4j";
132
+ readonly library = "neo4j-driver";
133
+ private readonly options;
134
+ private driverInstance;
135
+ private connected;
136
+ constructor(options: Neo4jStoreOptions);
137
+ private resolveAuth;
138
+ connect(): Promise<void>;
139
+ disconnect(): Promise<void>;
140
+ isConnected(): boolean;
141
+ /** Returns the underlying `neo4j-driver` `Driver` for anything not wrapped here. */
142
+ getClient(): Driver;
143
+ private requireDriver;
144
+ /**
145
+ * Open a new `Session`. Sessions are lightweight and disposable - open
146
+ * one per logical unit of work and close it when done (`run()`,
147
+ * `executeRead()`/`executeWrite()`, and `beginTransaction()` all do this
148
+ * for you; call this directly only if you need the raw `Session`, e.g.
149
+ * for `session.run()`'s streaming `subscribe()` API).
150
+ */
151
+ session(options?: SessionOptions): Session;
152
+ /**
153
+ * Run a single parameterized Cypher statement as an auto-commit query,
154
+ * on a session opened and closed for just this call. Always parameterize
155
+ * user-supplied values (`$name`, not string concatenation) - the driver
156
+ * sends `params` separately from the query text, the same protection
157
+ * bind parameters give you against SQL injection.
158
+ */
159
+ run<T = Record<string, unknown>>(cypher: string, params?: CypherParams, options?: SessionOptions): Promise<CypherResult<T>>;
160
+ /**
161
+ * Run `work` inside a managed read transaction. The driver automatically
162
+ * retries `work` on transient errors (e.g. deadlocks, leader switches in
163
+ * a cluster) - `work` may run more than once, so it must be idempotent
164
+ * and side-effect-free outside of the transaction it's given.
165
+ */
166
+ executeRead<T>(work: (tx: ManagedTransaction) => Promise<T> | T, options?: SessionOptions): Promise<T>;
167
+ /** Like `executeRead()`, but for a managed write transaction (`defaultAccessMode: 'WRITE'`). */
168
+ executeWrite<T>(work: (tx: ManagedTransaction) => Promise<T> | T, options?: SessionOptions): Promise<T>;
169
+ /**
170
+ * Begin an explicit transaction spanning multiple `run()` calls, on a
171
+ * session held open until `commit()`/`rollback()`. Unlike
172
+ * `executeRead()`/`executeWrite()`, this is never retried automatically
173
+ * - use it when you need multiple round trips with logic in between, or
174
+ * full manual control over commit/rollback.
175
+ */
176
+ beginTransaction(options?: SessionOptions): Promise<Neo4jTransaction>;
177
+ /** `CREATE (n:Label1:Label2) SET n = $properties RETURN n` */
178
+ createNode<P extends Record<string, unknown> = Record<string, unknown>>(labels: string | string[], properties?: P): Promise<GraphNode<P>>;
179
+ /** `MATCH (n) WHERE elementId(n) = $elementId RETURN n` */
180
+ getNodeByElementId<P extends Record<string, unknown> = Record<string, unknown>>(elementId: string): Promise<GraphNode<P> | null>;
181
+ /**
182
+ * `MATCH (n:Label) WHERE n.k1 = $k1 AND ... RETURN n [SKIP $skip] [LIMIT $limit]`
183
+ *
184
+ * `where` is an equality-only match on node properties (no operators,
185
+ * ranges, or `OR`) - use `run()` directly for anything more expressive.
186
+ */
187
+ findNodes<P extends Record<string, unknown> = Record<string, unknown>>(labels?: string | string[], where?: Record<string, unknown>, options?: FindOptions): Promise<GraphNode<P>[]>;
188
+ /** `MATCH (n) WHERE elementId(n) = $elementId SET n += $properties RETURN n` (merges, does not replace, existing properties) */
189
+ updateNode<P extends Record<string, unknown> = Record<string, unknown>>(elementId: string, properties: Partial<P>): Promise<GraphNode<P> | null>;
190
+ /**
191
+ * `MATCH (n) WHERE elementId(n) = $elementId [DETACH] DELETE n`
192
+ *
193
+ * Without `options.detach`, deleting a node that still has relationships
194
+ * fails (Neo4j refuses to leave dangling relationships) - the underlying
195
+ * error surfaces as a `DatabaseError`. Returns whether a node was
196
+ * actually deleted (based on the query's `nodesDeleted` counter).
197
+ */
198
+ deleteNode(elementId: string, options?: DeleteNodeOptions): Promise<boolean>;
199
+ /** `MATCH (n:Label) WHERE ... RETURN count(n) AS count` */
200
+ countNodes(labels?: string | string[], where?: Record<string, unknown>): Promise<number>;
201
+ /**
202
+ * `MATCH (a), (b) WHERE elementId(a) = $fromElementId AND elementId(b) = $toElementId`
203
+ * `CREATE (a)-[r:TYPE]->(b) SET r = $properties RETURN r`
204
+ */
205
+ createRelationship<P extends Record<string, unknown> = Record<string, unknown>>(fromElementId: string, toElementId: string, type: string, properties?: P): Promise<GraphRelationship<P>>;
206
+ /** `MATCH ()-[r]->() WHERE elementId(r) = $elementId RETURN r` */
207
+ getRelationshipByElementId<P extends Record<string, unknown> = Record<string, unknown>>(elementId: string): Promise<GraphRelationship<P> | null>;
208
+ /**
209
+ * `MATCH (a)-[r:TYPE]->(b) WHERE r.k1 = $k1 AND ... RETURN r [SKIP $skip] [LIMIT $limit]`
210
+ *
211
+ * Omit `type` to match relationships of any type.
212
+ */
213
+ findRelationships<P extends Record<string, unknown> = Record<string, unknown>>(type?: string, where?: Record<string, unknown>, options?: FindOptions): Promise<GraphRelationship<P>[]>;
214
+ /** `MATCH (a)-[r]->(b) WHERE elementId(r) = $elementId DELETE r` - returns whether a relationship was actually deleted. */
215
+ deleteRelationship(elementId: string): Promise<boolean>;
216
+ }
217
+ export default Neo4jStore;