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
@@ -18,8 +18,14 @@
18
18
  * `require` is skipped entirely.
19
19
  */
20
20
  Object.defineProperty(exports, "__esModule", { value: true });
21
- exports.SurrealStore = void 0;
21
+ exports.SurrealStore = exports.PushdownUnsupported = exports.compileOrder = exports.compileWhere = void 0;
22
22
  const errors_1 = require("../../errors");
23
+ const query_compiler_1 = require("./query-compiler");
24
+ const where_match_1 = require("../rocksdb/where-match");
25
+ var query_compiler_2 = require("./query-compiler");
26
+ Object.defineProperty(exports, "compileWhere", { enumerable: true, get: function () { return query_compiler_2.compileWhere; } });
27
+ Object.defineProperty(exports, "compileOrder", { enumerable: true, get: function () { return query_compiler_2.compileOrder; } });
28
+ Object.defineProperty(exports, "PushdownUnsupported", { enumerable: true, get: function () { return query_compiler_2.PushdownUnsupported; } });
23
29
  /**
24
30
  * `SurrealStore` wraps the `surrealdb` driver's `Surreal` client, exposing
25
31
  * record CRUD (`create`/`select`/`update`/`merge`/`delete`) and raw
@@ -174,6 +180,173 @@ class SurrealStore {
174
180
  async query(surql, vars) {
175
181
  return this.exec('query', (db) => db.query(surql, vars));
176
182
  }
183
+ // ---------------------------------------------------------------------
184
+ // ORM model layer (SurrealQL generation - no hand-written SurrealQL)
185
+ // ---------------------------------------------------------------------
186
+ //
187
+ // These map the ORM model API onto SurrealQL. `where`/`order`/`limit`/
188
+ // `offset` are compiled to a bound `SELECT ... WHERE ... ORDER BY ... LIMIT
189
+ // ... START` statement; operators SurrealQL can't express fall back to
190
+ // client-side evaluation with the shared matcher (see ./query-compiler.ts),
191
+ // so every standard query succeeds without the caller writing SurrealQL.
192
+ /** Unwrap the driver's per-statement query result into a row array. */
193
+ static rows(res, index = 0) {
194
+ const arr = Array.isArray(res) ? res : [res];
195
+ let entry = arr[index];
196
+ // Older drivers wrap results as `{ status, result, time }`.
197
+ if (entry && typeof entry === 'object' && 'result' in entry) {
198
+ entry = entry.result;
199
+ }
200
+ if (entry == null)
201
+ return [];
202
+ return (Array.isArray(entry) ? entry : [entry]);
203
+ }
204
+ /**
205
+ * ORM `findAll`. Compiles `where`/`order`/`limit`/`offset` to a bound
206
+ * SurrealQL `SELECT`; on an un-pushable operator it selects the table and
207
+ * filters/sorts/paginates client-side, so the result is always correct.
208
+ */
209
+ async findAll(table, options = {}) {
210
+ const { where, order, limit, offset, fetch } = options;
211
+ try {
212
+ const vars = { tb: table };
213
+ let surql = `SELECT * FROM type::table($tb)`;
214
+ if (where) {
215
+ const compiled = (0, query_compiler_1.compileWhere)(where);
216
+ Object.assign(vars, compiled.vars);
217
+ surql += ` WHERE ${compiled.clause}`;
218
+ }
219
+ if (order)
220
+ surql += ` ORDER BY ${(0, query_compiler_1.compileOrder)(order)}`;
221
+ if (typeof limit === 'number')
222
+ surql += ` LIMIT ${Math.trunc(limit)}`;
223
+ if (typeof offset === 'number' && offset > 0)
224
+ surql += ` START ${Math.trunc(offset)}`;
225
+ if (fetch && fetch.length > 0) {
226
+ // FETCH targets are interpolated, not bound — restrict to identifier
227
+ // paths (field / dotted link) to avoid SurrealQL injection.
228
+ for (const f of fetch) {
229
+ if (!/^[A-Za-z_][A-Za-z0-9_]*(\.[A-Za-z_][A-Za-z0-9_]*)*$/.test(f)) {
230
+ throw new errors_1.DatabaseError(`SurrealDB: invalid FETCH target "${f}"`);
231
+ }
232
+ }
233
+ surql += ` FETCH ${fetch.join(', ')}`;
234
+ }
235
+ const res = await this.query(surql, vars);
236
+ return SurrealStore.rows(res);
237
+ }
238
+ catch (error) {
239
+ if (error instanceof query_compiler_1.PushdownUnsupported) {
240
+ return this.findAllClientSide(table, options);
241
+ }
242
+ throw error;
243
+ }
244
+ }
245
+ /** Client-side fallback: fetch the table, then filter/sort/page in memory. */
246
+ async findAllClientSide(table, options) {
247
+ let rows = SurrealStore.rows(await this.query(`SELECT * FROM type::table($tb)`, { tb: table }));
248
+ if (options.where)
249
+ rows = rows.filter((r) => (0, where_match_1.matchWhere)(r, options.where));
250
+ if (options.order)
251
+ rows = (0, where_match_1.applyOrder)(rows, options.order);
252
+ if (options.offset && options.offset > 0)
253
+ rows = rows.slice(options.offset);
254
+ if (typeof options.limit === 'number')
255
+ rows = rows.slice(0, options.limit);
256
+ return rows;
257
+ }
258
+ /** ORM `findOne`: the first row matching `where` (respecting order). */
259
+ async findOne(table, options = {}) {
260
+ const rows = await this.findAll(table, { ...options, limit: 1 });
261
+ return rows.length > 0 ? rows[0] : null;
262
+ }
263
+ /** ORM `findByPk`: select a single `table:id` record, or `null`. */
264
+ async findByPk(table, id) {
265
+ const thing = String(id).includes(':') ? String(id) : `${table}:${id}`;
266
+ const res = await this.select(thing);
267
+ const rows = Array.isArray(res) ? res : res == null ? [] : [res];
268
+ return rows.length > 0 ? rows[0] : null;
269
+ }
270
+ /** ORM `count`: number of records matching `where`. */
271
+ async count(table, where) {
272
+ try {
273
+ const vars = { tb: table };
274
+ let surql = `SELECT count() AS count FROM type::table($tb)`;
275
+ if (where) {
276
+ const compiled = (0, query_compiler_1.compileWhere)(where);
277
+ Object.assign(vars, compiled.vars);
278
+ surql += ` WHERE ${compiled.clause}`;
279
+ }
280
+ surql += ` GROUP ALL`;
281
+ const rows = SurrealStore.rows(await this.query(surql, vars));
282
+ return rows.length > 0 ? Number(rows[0].count) : 0;
283
+ }
284
+ catch (error) {
285
+ if (error instanceof query_compiler_1.PushdownUnsupported) {
286
+ return (await this.findAllClientSide(table, { where })).length;
287
+ }
288
+ throw error;
289
+ }
290
+ }
291
+ /** ORM `bulkCreate`: insert many records in one `INSERT` statement. */
292
+ async bulkCreate(table, rows) {
293
+ const res = await this.query(`INSERT INTO type::table($tb) $rows`, { tb: table, rows });
294
+ return SurrealStore.rows(res);
295
+ }
296
+ /**
297
+ * ORM `update`: merge `values` into every record matching `where` (or the
298
+ * whole table when `where` is omitted). Returns the updated records.
299
+ */
300
+ async updateWhere(table, values, where) {
301
+ const vars = { tb: table, values };
302
+ let surql = `UPDATE type::table($tb) MERGE $values`;
303
+ if (where) {
304
+ const compiled = (0, query_compiler_1.compileWhere)(where);
305
+ Object.assign(vars, compiled.vars);
306
+ surql += ` WHERE ${compiled.clause}`;
307
+ }
308
+ const res = await this.query(surql, vars);
309
+ return SurrealStore.rows(res);
310
+ }
311
+ /**
312
+ * ORM `destroy`: delete every record matching `where` (or the whole table
313
+ * when `where` is omitted). Returns the number of records deleted.
314
+ */
315
+ async destroy(table, where) {
316
+ const vars = { tb: table };
317
+ let surql = `DELETE type::table($tb)`;
318
+ if (where) {
319
+ const compiled = (0, query_compiler_1.compileWhere)(where);
320
+ Object.assign(vars, compiled.vars);
321
+ surql += ` WHERE ${compiled.clause}`;
322
+ }
323
+ surql += ` RETURN BEFORE`;
324
+ const res = await this.query(surql, vars);
325
+ return SurrealStore.rows(res).length;
326
+ }
327
+ /** ORM `truncate`: delete every record in a table. */
328
+ async truncate(table) {
329
+ return this.destroy(table);
330
+ }
331
+ /**
332
+ * Create a graph edge (association) between two records:
333
+ * `RELATE $from->edge->$to CONTENT $data`. This is how many-to-many /
334
+ * graph associations are expressed in SurrealDB, exposed through the ORM
335
+ * API so callers never hand-write the `RELATE` themselves.
336
+ */
337
+ async relate(from, edge, to, data) {
338
+ // `edge` is interpolated directly into the query (from/to/data are bound as
339
+ // $params), so it must be a bare identifier — reject anything else to avoid
340
+ // SurrealQL injection.
341
+ if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(edge)) {
342
+ throw new errors_1.DatabaseError(`SurrealDB: invalid edge name "${edge}"`);
343
+ }
344
+ const surql = data
345
+ ? `RELATE type::thing($from)->${edge}->type::thing($to) CONTENT $data`
346
+ : `RELATE type::thing($from)->${edge}->type::thing($to)`;
347
+ const res = await this.query(surql, { from, to, data });
348
+ return SurrealStore.rows(res)[0];
349
+ }
177
350
  }
178
351
  exports.SurrealStore = SurrealStore;
179
352
  exports.default = SurrealStore;
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Compiles the ORM `where`/`order` shape into SurrealQL, so callers query
3
+ * SurrealDB through the model API instead of hand-writing SurrealQL for
4
+ * standard CRUD/reads.
5
+ *
6
+ * Every operand is emitted as a bound `$paramN` parameter (never string-
7
+ * interpolated) to keep the generated query injection-safe. Not every ORM
8
+ * operator has a first-class SurrealQL form; when {@link compileWhere} meets
9
+ * one it cannot push down safely it throws {@link PushdownUnsupported}, which
10
+ * the store catches to fall back to client-side filtering with the shared
11
+ * in-memory matcher - so the operation still succeeds, just evaluated locally.
12
+ */
13
+ import type { WhereClause, OrderSpec } from '../rocksdb/where-match';
14
+ /** Thrown when a where clause cannot be fully translated to SurrealQL. */
15
+ export declare class PushdownUnsupported extends Error {
16
+ constructor(message: string);
17
+ }
18
+ /** Result of compiling a where clause: a SurrealQL boolean expr + its bound vars. */
19
+ export interface CompiledWhere {
20
+ clause: string;
21
+ vars: Record<string, unknown>;
22
+ }
23
+ /** Compile a where clause to a SurrealQL boolean expression plus bound vars. */
24
+ export declare function compileWhere(where: WhereClause): CompiledWhere;
25
+ /** Compile an `order` spec to a SurrealQL `ORDER BY` list (without the keyword). */
26
+ export declare function compileOrder(order: OrderSpec): string;
@@ -0,0 +1,193 @@
1
+ "use strict";
2
+ /**
3
+ * Compiles the ORM `where`/`order` shape into SurrealQL, so callers query
4
+ * SurrealDB through the model API instead of hand-writing SurrealQL for
5
+ * standard CRUD/reads.
6
+ *
7
+ * Every operand is emitted as a bound `$paramN` parameter (never string-
8
+ * interpolated) to keep the generated query injection-safe. Not every ORM
9
+ * operator has a first-class SurrealQL form; when {@link compileWhere} meets
10
+ * one it cannot push down safely it throws {@link PushdownUnsupported}, which
11
+ * the store catches to fall back to client-side filtering with the shared
12
+ * in-memory matcher - so the operation still succeeds, just evaluated locally.
13
+ */
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.PushdownUnsupported = void 0;
16
+ exports.compileWhere = compileWhere;
17
+ exports.compileOrder = compileOrder;
18
+ /** Thrown when a where clause cannot be fully translated to SurrealQL. */
19
+ class PushdownUnsupported extends Error {
20
+ constructor(message) {
21
+ super(message);
22
+ this.name = 'PushdownUnsupported';
23
+ }
24
+ }
25
+ exports.PushdownUnsupported = PushdownUnsupported;
26
+ function opName(key) {
27
+ if (typeof key === 'symbol')
28
+ return key.description ?? '';
29
+ return key.startsWith('$') ? key.slice(1) : key;
30
+ }
31
+ /** Escape a field path into a SurrealQL identifier (dotted paths preserved). */
32
+ function ident(field) {
33
+ return field
34
+ .split('.')
35
+ .map((part) => (/^[A-Za-z_][A-Za-z0-9_]*$/.test(part) ? part : '`' + part.replace(/`/g, '\\`') + '`'))
36
+ .join('.');
37
+ }
38
+ class Compiler {
39
+ constructor() {
40
+ this.counter = 0;
41
+ this.vars = {};
42
+ }
43
+ bind(value) {
44
+ const name = `p${this.counter++}`;
45
+ this.vars[name] = value;
46
+ return `$${name}`;
47
+ }
48
+ compileClause(where) {
49
+ const parts = [];
50
+ for (const key of Reflect.ownKeys(where)) {
51
+ const op = opName(key);
52
+ const value = where[key];
53
+ if (op === 'and') {
54
+ const arr = Array.isArray(value) ? value : [value];
55
+ parts.push('(' + arr.map((s) => this.compileClause(s)).join(' AND ') + ')');
56
+ }
57
+ else if (op === 'or') {
58
+ const arr = Array.isArray(value) ? value : [value];
59
+ parts.push('(' + arr.map((s) => this.compileClause(s)).join(' OR ') + ')');
60
+ }
61
+ else if (op === 'not') {
62
+ const arr = Array.isArray(value) ? value : [value];
63
+ parts.push('!(' + arr.map((s) => this.compileClause(s)).join(' AND ') + ')');
64
+ }
65
+ else if (typeof key === 'symbol') {
66
+ // A symbol operator at clause level with no field: unsupported.
67
+ throw new PushdownUnsupported(`operator ${op} without a field`);
68
+ }
69
+ else {
70
+ parts.push(this.compileField(key, value));
71
+ }
72
+ }
73
+ return parts.length > 1 ? '(' + parts.join(' AND ') + ')' : parts[0] ?? 'true';
74
+ }
75
+ compileField(field, condition) {
76
+ const id = ident(field);
77
+ if (condition === null ||
78
+ typeof condition !== 'object' ||
79
+ condition instanceof Date ||
80
+ Array.isArray(condition)) {
81
+ return `${id} = ${this.bind(condition)}`;
82
+ }
83
+ const clauses = [];
84
+ for (const key of Reflect.ownKeys(condition)) {
85
+ const op = opName(key);
86
+ const operand = condition[key];
87
+ clauses.push(this.compileOperator(id, op, operand));
88
+ }
89
+ return clauses.length > 1 ? '(' + clauses.join(' AND ') + ')' : clauses[0] ?? 'true';
90
+ }
91
+ compileOperator(id, op, operand) {
92
+ switch (op) {
93
+ case 'eq':
94
+ case 'is':
95
+ return operand === null ? `${id} = NONE` : `${id} = ${this.bind(operand)}`;
96
+ case 'ne':
97
+ return operand === null ? `${id} != NONE` : `${id} != ${this.bind(operand)}`;
98
+ case 'gt':
99
+ return `${id} > ${this.bind(operand)}`;
100
+ case 'gte':
101
+ return `${id} >= ${this.bind(operand)}`;
102
+ case 'lt':
103
+ return `${id} < ${this.bind(operand)}`;
104
+ case 'lte':
105
+ return `${id} <= ${this.bind(operand)}`;
106
+ case 'in':
107
+ return `${id} IN ${this.bind(operand)}`;
108
+ case 'notIn':
109
+ return `${id} NOT IN ${this.bind(operand)}`;
110
+ case 'between': {
111
+ const [a, b] = operand;
112
+ return `(${id} >= ${this.bind(a)} AND ${id} <= ${this.bind(b)})`;
113
+ }
114
+ case 'notBetween': {
115
+ const [a, b] = operand;
116
+ return `!(${id} >= ${this.bind(a)} AND ${id} <= ${this.bind(b)})`;
117
+ }
118
+ case 'isNull':
119
+ return operand === false ? `${id} != NONE` : `${id} = NONE`;
120
+ case 'isNotNull':
121
+ return operand === false ? `${id} = NONE` : `${id} != NONE`;
122
+ case 'startsWith':
123
+ return `string::starts_with(${id}, ${this.bind(operand)})`;
124
+ case 'notStartsWith':
125
+ return `!string::starts_with(${id}, ${this.bind(operand)})`;
126
+ case 'endsWith':
127
+ return `string::ends_with(${id}, ${this.bind(operand)})`;
128
+ case 'notEndsWith':
129
+ return `!string::ends_with(${id}, ${this.bind(operand)})`;
130
+ case 'substring':
131
+ return `string::contains(${id}, ${this.bind(operand)})`;
132
+ case 'notSubstring':
133
+ return `!string::contains(${id}, ${this.bind(operand)})`;
134
+ case 'like':
135
+ case 'notLike':
136
+ case 'iLike':
137
+ case 'notILike':
138
+ return this.compileLike(id, op, String(operand));
139
+ case 'arrayContains':
140
+ case 'contains':
141
+ return `${id} CONTAINSALL ${this.bind(Array.isArray(operand) ? operand : [operand])}`;
142
+ case 'arrayOverlaps':
143
+ return `${id} CONTAINSANY ${this.bind(operand)}`;
144
+ case 'arrayContainedBy':
145
+ return `${id} ALLINSIDE ${this.bind(operand)}`;
146
+ default:
147
+ // Push the rest (regexp, json-path ops, etc.) to client-side eval.
148
+ throw new PushdownUnsupported(`operator ${op}`);
149
+ }
150
+ }
151
+ /** Translate simple LIKE patterns to SurrealDB `string::` calls; else fall back. */
152
+ compileLike(id, op, pattern) {
153
+ const negate = op === 'notLike' || op === 'notILike';
154
+ // Only prefix/suffix/contains patterns push down cleanly. Anything with
155
+ // internal wildcards or `_` is left to client-side evaluation.
156
+ const inner = pattern.slice(1, -1);
157
+ if (inner.includes('%') || inner.includes('_') || pattern.includes('_')) {
158
+ throw new PushdownUnsupported('complex LIKE pattern');
159
+ }
160
+ let expr;
161
+ if (pattern.startsWith('%') && pattern.endsWith('%')) {
162
+ expr = `string::contains(${id}, ${this.bind(inner)})`;
163
+ }
164
+ else if (pattern.endsWith('%')) {
165
+ expr = `string::starts_with(${id}, ${this.bind(pattern.slice(0, -1))})`;
166
+ }
167
+ else if (pattern.startsWith('%')) {
168
+ expr = `string::ends_with(${id}, ${this.bind(pattern.slice(1))})`;
169
+ }
170
+ else {
171
+ expr = `${id} = ${this.bind(pattern)}`;
172
+ }
173
+ return negate ? `!${expr}` : expr;
174
+ }
175
+ }
176
+ /** Compile a where clause to a SurrealQL boolean expression plus bound vars. */
177
+ function compileWhere(where) {
178
+ const c = new Compiler();
179
+ const clause = c.compileClause(where);
180
+ return { clause, vars: c.vars };
181
+ }
182
+ /** Compile an `order` spec to a SurrealQL `ORDER BY` list (without the keyword). */
183
+ function compileOrder(order) {
184
+ const entries = typeof order === 'string' ? [order] : order;
185
+ return entries
186
+ .map((entry) => {
187
+ if (typeof entry === 'string')
188
+ return `${ident(entry)} ASC`;
189
+ const [field, dir] = entry;
190
+ return `${ident(field)} ${String(dir).toUpperCase() === 'DESC' ? 'DESC' : 'ASC'}`;
191
+ })
192
+ .join(', ');
193
+ }
@@ -0,0 +1,95 @@
1
+ /**
2
+ * TerminusDB store implementation.
3
+ *
4
+ * TerminusDB is an immutable, versioned document/graph database with a
5
+ * git-like data model: every write produces a new commit on a branch, and
6
+ * the full commit history is retained, so past states are always
7
+ * reconstructable and the store is effectively append-only/auditable.
8
+ * Documents are typed JSON objects; queries are expressed in WOQL (the Web
9
+ * Object Query Language).
10
+ *
11
+ * TerminusDB is not a SQL `Dialect`, so this class implements the minimal
12
+ * `NoSqlStore` marker interface plus the shared ledger surface:
13
+ * - `append(table, data)` -> `addDocument` of `{ '@type': table, ...data }`.
14
+ * - `get(table, id)` -> `getDocument` by `<table>/<id>`.
15
+ * - `history(table, id)` -> commit-log WOQL query for the document.
16
+ * - `verify(table, id)` -> fetch the document + report existence (its
17
+ * presence in the immutable commit graph is its provenance).
18
+ * - `query(woql)` -> raw WOQL passthrough.
19
+ *
20
+ * ## Lazy driver loading
21
+ *
22
+ * `@terminusdb/terminusdb-client` is loaded lazily inside `connect()`. Tests
23
+ * inject a pre-built, already-connected `WOQLClient` via
24
+ * `TerminusdbStoreOptions.client`, bypassing the `require`.
25
+ */
26
+ import { NoSqlStore } from '../store';
27
+ /** The subset of a `@terminusdb/terminusdb-client` `WOQLClient` this store uses. */
28
+ export interface TerminusClientLike {
29
+ connect?(): Promise<unknown>;
30
+ db?(dbName: string): unknown;
31
+ organization?(org: string): unknown;
32
+ addDocument(document: unknown, params?: unknown, dbId?: string, message?: string): Promise<any>;
33
+ getDocument(query: unknown, params?: unknown): Promise<any>;
34
+ updateDocument?(document: unknown, params?: unknown): Promise<any>;
35
+ deleteDocument?(query: unknown, params?: unknown): Promise<any>;
36
+ query(woql: unknown, commitMsg?: string): Promise<any>;
37
+ }
38
+ /** Connection options for `TerminusdbStore`. */
39
+ export interface TerminusdbStoreOptions {
40
+ /** TerminusDB server URL, e.g. `'http://localhost:6363'`. */
41
+ url?: string;
42
+ user?: string;
43
+ /** API key / password. */
44
+ key?: string;
45
+ organization?: string;
46
+ /** Database (data product) to operate against. */
47
+ db?: string;
48
+ /** A pre-built `WOQLClient` to use instead of the lazy `require`. */
49
+ client?: TerminusClientLike;
50
+ }
51
+ /**
52
+ * `TerminusdbStore` wraps a `WOQLClient` behind the shared ledger surface.
53
+ */
54
+ export declare class TerminusdbStore implements NoSqlStore {
55
+ readonly name = "terminusdb";
56
+ readonly library = "@terminusdb/terminusdb-client";
57
+ private readonly options;
58
+ private client;
59
+ private connected;
60
+ constructor(options?: TerminusdbStoreOptions);
61
+ connect(): Promise<void>;
62
+ disconnect(): Promise<void>;
63
+ isConnected(): boolean;
64
+ /** Returns the underlying `WOQLClient` for anything not wrapped here. */
65
+ getClient(): TerminusClientLike;
66
+ private requireClient;
67
+ private fullId;
68
+ private run;
69
+ /**
70
+ * Insert `data` as a new document of type `table` (a new commit). Returns
71
+ * whatever `addDocument` reports (typically the inserted document id(s)).
72
+ */
73
+ append(table: string, data: Record<string, unknown>): Promise<unknown>;
74
+ /** Fetch the current revision of document `<table>/<id>`. */
75
+ get(table: string, id: string): Promise<unknown>;
76
+ /**
77
+ * Return the commit history for document `<table>/<id>` via a WOQL query
78
+ * over the commit graph. Every past revision lives in the immutable commit
79
+ * chain, so this surfaces the document's provenance.
80
+ */
81
+ history(table: string, id: string): Promise<unknown>;
82
+ /**
83
+ * Verify document `<table>/<id>` by reading it back from the immutable
84
+ * store. Returns `{ id, exists, document }` - existence in the commit graph
85
+ * is the provenance guarantee (TerminusDB never mutates past commits).
86
+ */
87
+ verify(table: string, id: string): Promise<{
88
+ id: string;
89
+ exists: boolean;
90
+ document: unknown;
91
+ }>;
92
+ /** Run a raw WOQL query object. */
93
+ query(woql: unknown, commitMsg?: string): Promise<unknown>;
94
+ }
95
+ export default TerminusdbStore;