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
@@ -39,6 +39,7 @@
39
39
  Object.defineProperty(exports, "__esModule", { value: true });
40
40
  exports.ModelValidator = exports.ModelInstance = exports.Model = void 0;
41
41
  exports.createModel = createModel;
42
+ const eager_load_1 = require("./eager-load");
42
43
  const operators_1 = require("./operators");
43
44
  const scopes_1 = require("./scopes");
44
45
  const associations_1 = require("./associations");
@@ -233,112 +234,25 @@ function resolveDuplicateColumns(includes, parentModel, parentAlias) {
233
234
  };
234
235
  }
235
236
  /**
236
- * Process nested includes and attach associated records to parent instances
237
- * This performs additional queries for nested associations not handled by JOINs
237
+ * Process nested includes and attach associated records to parent instances.
238
+ *
239
+ * Delegates to the shared eager-loader in `./eager-load`. This function used to
240
+ * carry its own implementation, which handled `belongsTo` exactly like `hasMany`
241
+ * (querying the target table for a foreign key that actually lives on the
242
+ * parent) and skipped `belongsToMany` with a bare `continue`. Models defined via
243
+ * `prorm.define()` went through a separate, differently-buggy copy in prorm.ts;
244
+ * both now share one implementation.
238
245
  */
239
246
  async function processNestedIncludes(instances, includes, prorm, parentModel) {
240
247
  if (!instances.length || !includes.length) {
241
248
  return;
242
249
  }
243
- for (const include of includes) {
244
- const model = include.model;
245
- const as = include.as || model.tableName || model.name;
246
- // Get the parent model's association for this include
247
- // First try by the 'as' alias, then by model name
248
- let association = parentModel.associations?.[as];
249
- if (!association) {
250
- // Try to find by model name
251
- for (const [, assoc] of Object.entries(parentModel.associations || {})) {
252
- const target = assoc.target;
253
- if (target === model || target.name === model.name) {
254
- association = assoc;
255
- break;
256
- }
257
- }
258
- }
259
- if (!association) {
260
- throw new Error(`Invalid include: '${as}' is not an association of ${parentModel.name}`);
261
- }
262
- // Get primary key values from parent instances
263
- const pkField = getPrimaryKeyField(parentModel);
264
- const parentIds = instances
265
- .map((instance) => instance.getDataValue(pkField))
266
- .filter((id) => id !== undefined && id !== null);
267
- if (!parentIds.length) {
268
- continue;
269
- }
270
- // Build where clause based on association type
271
- let whereClause = {};
272
- let foreignKey = '';
273
- if (association.type === 'belongsTo') {
274
- // For belongsTo, the foreign key is on the parent
275
- foreignKey = association.foreignKey;
276
- whereClause = { [foreignKey]: { $in: parentIds } };
277
- }
278
- else if (association.type === 'hasMany' || association.type === 'hasOne') {
279
- // For hasMany/hasOne, the foreign key is on the target model
280
- foreignKey = association.foreignKey;
281
- whereClause = { [foreignKey]: { $in: parentIds } };
282
- }
283
- else if (association.type === 'belongsToMany') {
284
- // For belongsToMany, we need to go through the junction table
285
- continue;
286
- }
287
- // Apply additional where conditions from include
288
- if (include.where) {
289
- whereClause = { ...whereClause, ...include.where };
290
- }
291
- // Build query options for the associated model
292
- const queryOptions = {
293
- where: whereClause,
294
- attributes: include.attributes,
295
- order: include.order,
296
- limit: include.limit,
297
- offset: include.offset,
298
- };
299
- // Fetch associated records
300
- const associatedRecords = await model.findAll(queryOptions);
301
- // Group associated records by foreign key value
302
- const groupedRecords = new Map();
303
- for (const record of associatedRecords) {
304
- const fkValue = record.getDataValue(foreignKey);
305
- if (!groupedRecords.has(fkValue)) {
306
- groupedRecords.set(fkValue, []);
307
- }
308
- groupedRecords.get(fkValue).push(record);
309
- }
310
- // Attach associated records to parent instances
311
- for (const instance of instances) {
312
- const pkValue = instance.getDataValue(pkField);
313
- const related = groupedRecords.get(pkValue);
314
- if (related) {
315
- // Set based on association type (hasMany returns array, hasOne returns single)
316
- if (association.type === 'hasMany') {
317
- instance.setDataValue(as, related);
318
- }
319
- else {
320
- instance.setDataValue(as, related[0] || null);
321
- }
322
- }
323
- else {
324
- // Set empty value if no related records
325
- if (association.type === 'hasMany') {
326
- instance.setDataValue(as, []);
327
- }
328
- else {
329
- instance.setDataValue(as, null);
330
- }
331
- }
332
- }
333
- // Recursively process nested includes
334
- if (include.include && include.include.length > 0) {
335
- // Get all unique associated records
336
- const allAssociated = Array.from(groupedRecords.values()).flat();
337
- if (allAssociated.length > 0) {
338
- await processNestedIncludes(allAssociated, include.include, prorm, model);
339
- }
340
- }
341
- }
250
+ await (0, eager_load_1.loadIncludes)({
251
+ // Array, not the Map iterator - the loader rescans this for every
252
+ // include and every nested level.
253
+ associations: Array.from(prorm.associations.values()),
254
+ models: prorm._models ?? prorm.models ?? {},
255
+ }, instances, parentModel, parentModel.name, includes);
342
256
  }
343
257
  /**
344
258
  * Get the primary key field name for a model
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Operator symbols for the ORM
3
+ * Provides all Prorm operators for query building
4
+ * This file re-exports from the main operators.ts for consistency
5
+ *
6
+ * Usage Examples:
7
+ * ```typescript
8
+ * import { Op, and, or, eq, gte } from 'orm';
9
+ *
10
+ * // Using Op directly (recommended)
11
+ * User.findAll({ where: { age: { [Op.gte]: 18 } } })
12
+ * User.findAll({ where: { name: { [Op.like]: '%john%' } } })
13
+ *
14
+ * // Using helper functions
15
+ * User.findAll({ where: and({ name: 'John' }, { age: gte('age', 18) }) })
16
+ *
17
+ * // Column comparison
18
+ * User.findAll({ where: { balance: { [Op.eq]: Op.col('credit_limit') } } })
19
+ *
20
+ * // JSON column queries
21
+ * User.findAll({ where: { settings: Op.json({ theme: 'dark' }) } })
22
+ * ```
23
+ */
24
+ export { and, or, not, eq, ne, gt, gte, lt, lte, like, notLike, inOp as in, notIn, between, notBetween, isNull, isNotNull, where, operatorToWhereKey, isOperator, iLike, notILike, regexp, notRegexp, iRegexp, notIRegexp, contains, overlap, cast, Cast, asc, desc, random, isOrderExpression, } from '../operators';
25
+ export type { OperatorSymbol, WhereConditionOptions, OpType, OrderExpression, FnExpression, CastExpression, ExtractExpression, ConvExpression, } from '../operators';
26
+ import { Op } from '../operators';
27
+ export { Op };
28
+ export { Op as default };
29
+ export type Operator = symbol;
@@ -0,0 +1,71 @@
1
+ /**
2
+ * Scope management for the ORM
3
+ * Provides defaultScope, named scopes, and scoped model access
4
+ */
5
+ import { ModelStatic, Model, ScopeOptions, FindOptions } from '../types';
6
+ /**
7
+ * Scope manager for model scoping
8
+ */
9
+ export declare class ScopeManager {
10
+ private scopes;
11
+ private defaultScope;
12
+ private model;
13
+ private _currentScope;
14
+ constructor(model: ModelStatic<Model>);
15
+ /**
16
+ * Add a named scope
17
+ */
18
+ addScope(name: string, options: ScopeOptions): void;
19
+ /**
20
+ * Set the default scope
21
+ */
22
+ setDefaultScope(options: ScopeOptions): void;
23
+ /**
24
+ * Get a scope by name
25
+ */
26
+ getScope(name: string): ScopeOptions | undefined;
27
+ /**
28
+ * Check if a scope exists
29
+ */
30
+ hasScope(name: string): boolean;
31
+ /**
32
+ * Remove a scope by name
33
+ */
34
+ removeScope(name: string): boolean;
35
+ /**
36
+ * Clear all named scopes
37
+ */
38
+ clearScopes(): void;
39
+ /**
40
+ * Get the count of defined scopes
41
+ */
42
+ getScopeCount(): number;
43
+ /**
44
+ * Get all defined scopes
45
+ */
46
+ getAllScopes(): Map<string, ScopeOptions>;
47
+ /**
48
+ * Get the default scope
49
+ */
50
+ getDefaultScope(): ScopeOptions | null;
51
+ /**
52
+ * Apply a scope to options
53
+ */
54
+ applyScope(scopeName: string, options?: FindOptions): FindOptions;
55
+ /**
56
+ * Get the current active scope name
57
+ */
58
+ getCurrentScope(): string | null;
59
+ /**
60
+ * Clear the current scope
61
+ */
62
+ clearScope(): void;
63
+ /**
64
+ * Merge scope options with query options
65
+ */
66
+ mergeScopeOptions(options: FindOptions, scope: ScopeOptions): FindOptions;
67
+ /**
68
+ * Merge where conditions
69
+ */
70
+ private mergeWhere;
71
+ }
@@ -0,0 +1,177 @@
1
+ /**
2
+ * TypeScript Type Utilities for Model Definitions
3
+ *
4
+ * This module provides TypeScript type utilities:
5
+ * - InferAttributes<T>: Extracts attribute types from a Model
6
+ * - InferCreationAttributes<T>: Extracts creation attributes (with optional ID, etc.)
7
+ * - CreationOptional<T>: Marks an attribute as optional during creation
8
+ * - NonAttribute<T>: Excludes non-database fields (methods, getters)
9
+ * - ForeignKey<T, TModel>: Branded type for foreign key relationships
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { Model, InferAttributes, InferCreationAttributes, CreationOptional } from 'orm';
14
+ *
15
+ * export class User extends Model<InferAttributes<User>, InferCreationAttributes<User>> {
16
+ * declare id: CreationOptional<number>;
17
+ * declare name: string;
18
+ * declare email: string;
19
+ *
20
+ * // Non-database property
21
+ * declare getFullName(): NonAttribute<string>;
22
+ * }
23
+ * ```
24
+ */
25
+ import type { IndexOptions } from '../dialects/dialect';
26
+ /**
27
+ * Marks an attribute as optional when creating a model instance.
28
+ * Used for auto-incrementing IDs, default values, etc.
29
+ *
30
+ * @example
31
+ * declare id: CreationOptional<number>;
32
+ * declare createdAt: CreationOptional<Date>;
33
+ */
34
+ export type CreationOptional<T> = T | undefined;
35
+ /**
36
+ * Excludes a property from being treated as a database attribute.
37
+ * Use for instance methods, getters, setters, and non-persisted properties.
38
+ *
39
+ * @example
40
+ * declare fullName: NonAttribute<string>;
41
+ * declare getFullName(): NonAttribute<string>;
42
+ */
43
+ export type NonAttribute<T> = T;
44
+ /**
45
+ * Branded type for foreign key relationships.
46
+ * Provides type safety when defining associations.
47
+ *
48
+ * @example
49
+ * declare userId: ForeignKey<User['id']>;
50
+ */
51
+ export interface ForeignKey<T> {
52
+ __brand: 'ForeignKey';
53
+ value: T;
54
+ }
55
+ /**
56
+ * PartialBy - Constructs a type with all properties of T except those in K set to optional.
57
+ *
58
+ * @example
59
+ * type UserCreationAttributes = PartialBy<UserAttributes, 'id'>;
60
+ * // { id?: number, name: string, email: string }
61
+ */
62
+ export type PartialBy<T, K extends keyof T> = Omit<T, K> & Partial<Pick<T, K>>;
63
+ /**
64
+ * RequiredBy - Constructs a type with all properties of T having the opposite optionality of K.
65
+ *
66
+ * @example
67
+ * type RequiredUser = RequiredBy<UserAttributes, 'name'>;
68
+ * // { id: number, name: string, email?: string }
69
+ */
70
+ export type RequiredBy<T, K extends keyof T> = Omit<T, K> & Required<Pick<T, K>>;
71
+ /**
72
+ * InferAttributes - Extracts attribute types from a Model
73
+ *
74
+ * Use this type to extract the attribute types when defining a Model class.
75
+ * This type should be used as the first type parameter to Model.
76
+ *
77
+ * @example
78
+ * export class User extends Model<InferAttributes<User>, InferCreationAttributes<User>> {
79
+ * declare id: CreationOptional<number>;
80
+ * declare name: string;
81
+ * }
82
+ */
83
+ export type InferAttributes<T> = {
84
+ [K in keyof T]: T[K] extends NonAttribute<any> ? never : T[K];
85
+ };
86
+ /**
87
+ * InferCreationAttributes - Extracts creation attribute types from a Model
88
+ *
89
+ * Use this type to extract the attribute types that can be used when creating
90
+ * a model instance. By default, all attributes are optional since creation
91
+ * may only require a subset.
92
+ *
93
+ * @example
94
+ * export class User extends Model<InferAttributes<User>, InferCreationAttributes<User>> {
95
+ * declare id: CreationOptional<number>;
96
+ * declare name: string;
97
+ * }
98
+ */
99
+ export type InferCreationAttributes<T> = {
100
+ [K in keyof T]: T[K] extends NonAttribute<any> ? never : T[K] extends CreationOptional<infer U> ? U | undefined : T[K];
101
+ };
102
+ /**
103
+ * Model static type with all required properties
104
+ */
105
+ export interface ModelStatic<T = any> {
106
+ /** Model name */
107
+ name: string;
108
+ /** Table name */
109
+ tableName?: string;
110
+ /** Schema (if applicable) */
111
+ schema?: string;
112
+ /** Primary key attribute name */
113
+ primaryKeyAttribute?: string;
114
+ /** Unique attributes */
115
+ uniqueKeys?: Record<string, string[]>;
116
+ /** Attributes definition */
117
+ attributes: Record<string, any>;
118
+ /** Associations */
119
+ associations: Record<string, any>;
120
+ /** Options */
121
+ options: ModelOptions;
122
+ /** Get the table name */
123
+ getTableName(): string;
124
+ /** Get the attribute names */
125
+ getAttributes(): string[];
126
+ /** Get the primary key attribute */
127
+ getPrimaryKeyAttribute(): string | undefined;
128
+ }
129
+ /**
130
+ * Model options type
131
+ */
132
+ export interface ModelOptions {
133
+ /** Table name */
134
+ tableName?: string;
135
+ /** Schema name */
136
+ schema?: string;
137
+ /** Schema delimiter */
138
+ schemaDelimiter?: string;
139
+ /** Engine (for MySQL) */
140
+ engine?: string;
141
+ /** Model name */
142
+ modelName?: string;
143
+ /** Enable hooks */
144
+ hooks?: boolean;
145
+ /** Override default timestamp columns */
146
+ underscored?: boolean;
147
+ /** Use pluralized table name */
148
+ freezeTableName?: boolean;
149
+ /** Indexes */
150
+ indexes?: IndexOptions[];
151
+ /** Comment */
152
+ comment?: string;
153
+ /** Default collation (MySQL) */
154
+ collate?: string;
155
+ /** Validation */
156
+ validate?: Record<string, any>;
157
+ /** Timestamps */
158
+ timestamps?: boolean;
159
+ /** CreatedAt column name */
160
+ createdAt?: string | false;
161
+ /** UpdatedAt column name */
162
+ updatedAt?: string | false;
163
+ /** DeletedAt column name (paranoid) */
164
+ deletedAt?: string | false;
165
+ /** Primary key option */
166
+ primaryKey?: boolean;
167
+ /** Column names */
168
+ columnNames?: Record<string, string>;
169
+ }
170
+ /**
171
+ * Type for belongsTo association target
172
+ */
173
+ export type BelongsToManyTarget<T> = T;
174
+ /**
175
+ * Type for foreign key attribute
176
+ */
177
+ export type ForeignKeyAttribute<T extends number | string = number> = T;
@@ -0,0 +1,126 @@
1
+ import type { NoSqlStore } from '../store';
2
+ /** A single Aerospike host descriptor (`{ addr, port }`), matching the driver's config shape. */
3
+ export interface AerospikeHost {
4
+ addr: string;
5
+ port?: number;
6
+ }
7
+ /**
8
+ * A key may be given as a bare string/number (resolved against the store's
9
+ * default `namespace`/`set`), or as an explicit `(namespace, set, key)` tuple
10
+ * that overrides either of those per call.
11
+ */
12
+ export type AerospikeKeyInput = string | number | {
13
+ namespace?: string;
14
+ set?: string;
15
+ key: string | number;
16
+ };
17
+ /** The `(namespace, set, key)` tuple used to address a record, as built by `makeKey()`. */
18
+ export interface AerospikeKeyTuple {
19
+ ns: string;
20
+ set: string;
21
+ key: string | number;
22
+ }
23
+ /** Optional per-record write metadata (TTL, generation) forwarded to `put()`. */
24
+ export interface AerospikeMeta {
25
+ /** Time-to-live in seconds. */
26
+ ttl?: number;
27
+ /** Expected record generation, for optimistic-concurrency writes. */
28
+ gen?: number;
29
+ [key: string]: unknown;
30
+ }
31
+ /**
32
+ * Minimal structural type for the pieces of an `aerospike` client this store
33
+ * uses. Kept local (rather than importing from `aerospike`) so this module
34
+ * type-checks without the optional driver installed.
35
+ */
36
+ export interface AerospikeClientLike {
37
+ put(key: unknown, bins: Record<string, unknown>, meta?: unknown): Promise<unknown>;
38
+ get(key: unknown): Promise<{
39
+ bins: Record<string, unknown>;
40
+ }>;
41
+ remove(key: unknown): Promise<unknown>;
42
+ exists(key: unknown): Promise<boolean>;
43
+ operate(key: unknown, ops: unknown[]): Promise<unknown>;
44
+ truncate?(namespace: string, set: string | null, beforeNanos: number): Promise<unknown>;
45
+ close(release?: boolean): void;
46
+ }
47
+ /** Connection options for `AerospikeStore`. */
48
+ export interface AerospikeStoreOptions {
49
+ /** One or more Aerospike hosts, e.g. `[{ addr: '127.0.0.1', port: 3000 }]`. */
50
+ hosts?: AerospikeHost[];
51
+ /** Default namespace applied to keys that don't specify one. */
52
+ namespace?: string;
53
+ /** Default set applied to keys that don't specify one. Defaults to `''`. */
54
+ set?: string;
55
+ /**
56
+ * Escape hatch for any other `aerospike` config field (policies, auth,
57
+ * TLS, ...). Merged into the config passed to `Aerospike.connect()`.
58
+ */
59
+ config?: Record<string, unknown>;
60
+ /**
61
+ * A pre-built `aerospike` client (or a compatible mock). When provided,
62
+ * `connect()` uses it directly and skips `require('aerospike')` entirely —
63
+ * this is how tests inject a mock without the real driver installed.
64
+ */
65
+ client?: AerospikeClientLike;
66
+ }
67
+ /**
68
+ * `AerospikeStore` wraps an `aerospike` client and exposes Aerospike's record
69
+ * surface: `put`/`get`/`remove`/`exists` for single-record operations,
70
+ * `operate` for atomic multi-op transactions on a record, and `truncate` for
71
+ * clearing a set. Records are addressed by a `(namespace, set, key)` tuple,
72
+ * built by `makeKey()`.
73
+ */
74
+ export declare class AerospikeStore implements NoSqlStore {
75
+ readonly name = "aerospike";
76
+ readonly library = "aerospike";
77
+ private readonly options;
78
+ private readonly namespace;
79
+ private readonly set;
80
+ private client;
81
+ private connected;
82
+ /**
83
+ * The required `aerospike` module, kept so `makeKey()` can build a real
84
+ * `Aerospike.Key`. Stays `null` when a client is injected (tests), in which
85
+ * case `makeKey()` returns a plain `{ ns, set, key }` tuple instead.
86
+ */
87
+ private aerospike;
88
+ constructor(options?: AerospikeStoreOptions);
89
+ connect(): Promise<void>;
90
+ disconnect(): Promise<void>;
91
+ isConnected(): boolean;
92
+ /** Returns the underlying `aerospike` client for anything not wrapped here. */
93
+ getClient(): AerospikeClientLike;
94
+ private requireClient;
95
+ private wrapError;
96
+ /**
97
+ * Builds the key object the driver expects from a `(namespace, set, key)`
98
+ * tuple, filling in the store's default namespace/set for anything the
99
+ * caller omits. When the real driver is loaded this returns a
100
+ * `new Aerospike.Key(namespace, set, key)`; when a mock client is injected
101
+ * (no module) it returns a plain `{ ns, set, key }` tuple.
102
+ */
103
+ makeKey(input: AerospikeKeyInput): AerospikeKeyTuple | unknown;
104
+ /** Writes (puts) a record's bins. Optionally accepts write metadata (TTL/generation). */
105
+ put(key: AerospikeKeyInput, bins: Record<string, unknown>, meta?: AerospikeMeta): Promise<unknown>;
106
+ /** Reads a record by key, returning its bins (`record.bins`), or throws if it doesn't exist. */
107
+ get(key: AerospikeKeyInput): Promise<Record<string, unknown>>;
108
+ /** Removes a record by key. */
109
+ remove(key: AerospikeKeyInput): Promise<unknown>;
110
+ /** Returns whether a record exists for the given key. */
111
+ exists(key: AerospikeKeyInput): Promise<boolean>;
112
+ /**
113
+ * Runs an ordered list of operations atomically against a single record
114
+ * (Aerospike's `operate` — increment, append, read-back, etc). `ops` is
115
+ * passed straight through to the driver; build them with the driver's own
116
+ * operation helpers.
117
+ */
118
+ operate(key: AerospikeKeyInput, ops: unknown[]): Promise<unknown>;
119
+ /**
120
+ * Truncates a set (or the store's default set), deleting every record in it.
121
+ * `beforeNanos` of `0` means "everything up to now". Requires a driver whose
122
+ * client exposes `truncate()`.
123
+ */
124
+ truncate(set?: string): Promise<unknown>;
125
+ }
126
+ export default AerospikeStore;
@@ -0,0 +1,86 @@
1
+ /**
2
+ * AllegroGraph store implementation.
3
+ *
4
+ * AllegroGraph is a semantic-graph / RDF triplestore. Its repositories are
5
+ * queried over the SPARQL 1.1 Protocol via a per-repository HTTP endpoint
6
+ * (`/repositories/<repo>`) used for both queries and updates. There is no
7
+ * SQL-shaped surface, so it implements the minimal `NoSqlStore` marker
8
+ * interface (`src/nosql/store.ts`) rather than the SQL `Dialect` interface.
9
+ *
10
+ * ## Driver strategy - prefer HTTP over `fetch`
11
+ *
12
+ * AllegroGraph ships an `agraph-js` client, but this store prefers the plain
13
+ * SPARQL/HTTP protocol over the global `fetch` so it has no hard dependency
14
+ * (`library='fetch'`). For tests (and for callers who want their own
15
+ * transport) an alternative client can be injected via
16
+ * `AllegrographStoreOptions.client`; when omitted, a tiny internal client over
17
+ * `fetch` + `endpoint` is built at connect time.
18
+ *
19
+ * ## Surface
20
+ *
21
+ * - `query(sparql)` -> POST to `/repositories/<repo>`, returns bindings
22
+ * - `update(sparql)` -> POST to `/repositories/<repo>`
23
+ * - `ask(sparql)` -> POST an ASK query, returns the boolean
24
+ * - `add(triples)` -> `INSERT DATA { ... }` update
25
+ * - `drop(graph?)` -> `DROP GRAPH <g>` / `DROP ALL` update
26
+ */
27
+ import { NoSqlStore } from '../store';
28
+ /** Default AllegroGraph base URL. */
29
+ export declare const DEFAULT_ALLEGROGRAPH_ENDPOINT = "http://localhost:10035";
30
+ /** Default repository id. */
31
+ export declare const DEFAULT_ALLEGROGRAPH_REPOSITORY = "repo";
32
+ /** The subset of a SPARQL HTTP client this store needs. */
33
+ export interface SparqlHttpClient {
34
+ /** POST a SPARQL query to `path`; returns the parsed results envelope. */
35
+ query(path: string, sparql: string): Promise<any>;
36
+ /** POST a SPARQL update to `path`. */
37
+ update(path: string, sparql: string): Promise<any>;
38
+ }
39
+ /** Connection options for `AllegrographStore`. */
40
+ export interface AllegrographStoreOptions {
41
+ /** Base URL of the AllegroGraph server. Defaults to `http://localhost:10035`. */
42
+ endpoint?: string;
43
+ /** Repository id. Defaults to `repo`. */
44
+ repository?: string;
45
+ /** Optional pre-built SPARQL HTTP client (used verbatim; `endpoint` ignored). */
46
+ client?: SparqlHttpClient;
47
+ /** Extra HTTP headers sent with every internal-client request. */
48
+ headers?: Record<string, string>;
49
+ }
50
+ /** Build a `fetch`-backed SPARQL client for the given endpoint. */
51
+ export declare function createFetchClient(endpoint: string, headers?: Record<string, string>): SparqlHttpClient;
52
+ /**
53
+ * `AllegrographStore` wraps an AllegroGraph repository's SPARQL endpoint behind
54
+ * the `NoSqlStore` lifecycle.
55
+ */
56
+ export declare class AllegrographStore implements NoSqlStore {
57
+ readonly name = "allegrograph";
58
+ readonly library = "fetch";
59
+ private readonly endpoint;
60
+ private readonly repository;
61
+ private readonly injectedClient?;
62
+ private readonly headers?;
63
+ private client;
64
+ private connected;
65
+ constructor(options?: AllegrographStoreOptions);
66
+ /** SPARQL query endpoint path for the configured repository. */
67
+ get queryPath(): string;
68
+ /** SPARQL update endpoint path for the configured repository (same endpoint). */
69
+ get updatePath(): string;
70
+ connect(): Promise<void>;
71
+ disconnect(): Promise<void>;
72
+ isConnected(): boolean;
73
+ /** Returns the underlying (internal or injected) SPARQL HTTP client. */
74
+ getClient(): SparqlHttpClient;
75
+ private requireClient;
76
+ /** Runs a SPARQL SELECT/CONSTRUCT query; returns the result bindings. */
77
+ query(sparql: string): Promise<any[]>;
78
+ /** Runs a SPARQL ASK query; returns the boolean answer. */
79
+ ask(sparql: string): Promise<boolean>;
80
+ /** Runs a SPARQL UPDATE (INSERT/DELETE/DROP/...). */
81
+ update(sparql: string): Promise<any>;
82
+ /** Inserts triples via `INSERT DATA { ... }`. Accepts a triple string or array. */
83
+ add(triples: string | string[], graph?: string): Promise<any>;
84
+ /** Drops a named graph, or all graphs when no graph is given. */
85
+ drop(graph?: string): Promise<any>;
86
+ }