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
@@ -19,6 +19,188 @@
19
19
  Object.defineProperty(exports, "__esModule", { value: true });
20
20
  exports.FaunaDbStore = void 0;
21
21
  const errors_1 = require("../../errors");
22
+ /** Parse an ORM `where` object (string + `Op` symbol keys) into a tree. */
23
+ function parseWhere(where) {
24
+ if (!where || typeof where !== 'object')
25
+ return null;
26
+ const nodes = [];
27
+ for (const sym of Object.getOwnPropertySymbols(where)) {
28
+ const name = sym.description;
29
+ const val = where[sym];
30
+ if (name === 'and' && Array.isArray(val)) {
31
+ nodes.push({ kind: 'and', nodes: val.map(parseWhere).filter(Boolean) });
32
+ }
33
+ else if (name === 'or' && Array.isArray(val)) {
34
+ nodes.push({ kind: 'or', nodes: val.map(parseWhere).filter(Boolean) });
35
+ }
36
+ else if (name === 'not') {
37
+ const inner = parseWhere(val);
38
+ if (inner)
39
+ nodes.push({ kind: 'not', node: inner });
40
+ }
41
+ }
42
+ for (const field of Object.keys(where)) {
43
+ nodes.push(parseFieldCondition(field, where[field]));
44
+ }
45
+ const flat = nodes.filter(Boolean);
46
+ if (flat.length === 0)
47
+ return null;
48
+ return flat.length === 1 ? flat[0] : { kind: 'and', nodes: flat };
49
+ }
50
+ /** Parse the value for a single field into a comparison (or AND of them). */
51
+ function parseFieldCondition(field, value) {
52
+ if (value !== null && typeof value === 'object' && !Array.isArray(value)) {
53
+ const symbols = Object.getOwnPropertySymbols(value);
54
+ if (symbols.length > 0) {
55
+ const cmps = symbols.map((sym) => ({
56
+ kind: 'cmp',
57
+ field,
58
+ op: sym.description ?? 'eq',
59
+ value: value[sym],
60
+ }));
61
+ return cmps.length === 1 ? cmps[0] : { kind: 'and', nodes: cmps };
62
+ }
63
+ }
64
+ return { kind: 'cmp', field, op: value === null ? 'isNull' : 'eq', value };
65
+ }
66
+ /** Escape a string for safe embedding in a Fauna `ContainsStrRegex` pattern. */
67
+ function escapeRegex(value) {
68
+ return String(value).replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
69
+ }
70
+ /** Convert a SQL `LIKE` pattern (`%`/`_` wildcards) to a regex source. */
71
+ function likeToRegex(pattern) {
72
+ let out = '^';
73
+ for (const ch of String(pattern)) {
74
+ if (ch === '%')
75
+ out += '.*';
76
+ else if (ch === '_')
77
+ out += '.';
78
+ else
79
+ out += ch.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
80
+ }
81
+ return out + '$';
82
+ }
83
+ /**
84
+ * Build an FQL boolean predicate over the bound document variable `doc`
85
+ * (a materialized Fauna document, so fields live under `data`). Returns a
86
+ * raw FQL expression built with the injected query builder `q`.
87
+ */
88
+ function buildFaunaPredicate(q, doc, node) {
89
+ if (!node)
90
+ return true;
91
+ const sel = (field) => q.Select(['data', ...field.split('.')], doc, null);
92
+ switch (node.kind) {
93
+ case 'and': {
94
+ if (node.nodes.length === 0)
95
+ return true;
96
+ if (node.nodes.length === 1)
97
+ return buildFaunaPredicate(q, doc, node.nodes[0]);
98
+ return q.And(...node.nodes.map((n) => buildFaunaPredicate(q, doc, n)));
99
+ }
100
+ case 'or': {
101
+ if (node.nodes.length === 0)
102
+ return false;
103
+ if (node.nodes.length === 1)
104
+ return buildFaunaPredicate(q, doc, node.nodes[0]);
105
+ return q.Or(...node.nodes.map((n) => buildFaunaPredicate(q, doc, n)));
106
+ }
107
+ case 'not':
108
+ return q.Not(buildFaunaPredicate(q, doc, node.node));
109
+ case 'cmp':
110
+ return buildFaunaCmp(q, sel(node.field), node.op, node.value);
111
+ }
112
+ }
113
+ function buildFaunaCmp(q, sel, op, value) {
114
+ switch (op) {
115
+ case 'eq':
116
+ return q.Equals(sel, value ?? null);
117
+ case 'ne':
118
+ return q.Not(q.Equals(sel, value ?? null));
119
+ case 'gt':
120
+ return q.GT(sel, value);
121
+ case 'gte':
122
+ return q.GTE(sel, value);
123
+ case 'lt':
124
+ return q.LT(sel, value);
125
+ case 'lte':
126
+ return q.LTE(sel, value);
127
+ case 'in': {
128
+ const arr = value ?? [];
129
+ if (arr.length === 0)
130
+ return false;
131
+ return q.Or(...arr.map((v) => q.Equals(sel, v)));
132
+ }
133
+ case 'notIn': {
134
+ const arr = value ?? [];
135
+ if (arr.length === 0)
136
+ return true;
137
+ return q.Not(q.Or(...arr.map((v) => q.Equals(sel, v))));
138
+ }
139
+ case 'between': {
140
+ const [a, b] = value;
141
+ return q.And(q.GTE(sel, a), q.LTE(sel, b));
142
+ }
143
+ case 'notBetween': {
144
+ const [a, b] = value;
145
+ return q.Not(q.And(q.GTE(sel, a), q.LTE(sel, b)));
146
+ }
147
+ case 'like':
148
+ return q.ContainsStrRegex(sel, likeToRegex(value));
149
+ case 'notLike':
150
+ return q.Not(q.ContainsStrRegex(sel, likeToRegex(value)));
151
+ case 'startsWith':
152
+ return q.ContainsStrRegex(sel, `^${escapeRegex(value)}`);
153
+ case 'endsWith':
154
+ return q.ContainsStrRegex(sel, `${escapeRegex(value)}$`);
155
+ case 'substring':
156
+ return q.ContainsStr(sel, String(value));
157
+ case 'regexp':
158
+ return q.ContainsStrRegex(sel, String(value));
159
+ case 'isNull':
160
+ return q.Equals(sel, null);
161
+ case 'isNotNull':
162
+ return q.Not(q.Equals(sel, null));
163
+ default:
164
+ throw new errors_1.DatabaseError(`FaunaDB ORM layer does not support operator "${op}"`, {
165
+ code: 'QUERY_ERROR',
166
+ });
167
+ }
168
+ }
169
+ /** A raw Fauna document (`{ ref, data, ts }`); normalize to `data` + `id`. */
170
+ function normalizeFaunaDoc(doc) {
171
+ const data = (doc?.data ?? {});
172
+ const id = doc?.ref?.id ?? doc?.ref?.value?.id;
173
+ return (id !== undefined ? { id, ...data } : data);
174
+ }
175
+ /** Apply ORM order/limit/offset to already-fetched documents, client-side. */
176
+ function applyClientSideShape(rows, options) {
177
+ let out = rows;
178
+ if (options.order && options.order.length > 0) {
179
+ const order = options.order;
180
+ out = [...out].sort((a, b) => {
181
+ for (const [field, dir] of order) {
182
+ const av = a?.[field];
183
+ const bv = b?.[field];
184
+ if (av === bv)
185
+ continue;
186
+ const cmp = av === undefined || av === null
187
+ ? -1
188
+ : bv === undefined || bv === null
189
+ ? 1
190
+ : av < bv
191
+ ? -1
192
+ : 1;
193
+ return dir.toUpperCase() === 'DESC' ? -cmp : cmp;
194
+ }
195
+ return 0;
196
+ });
197
+ }
198
+ if (typeof options.offset === 'number')
199
+ out = out.slice(options.offset);
200
+ if (typeof options.limit === 'number')
201
+ out = out.slice(0, options.limit);
202
+ return out;
203
+ }
22
204
  class FaunaDbStore {
23
205
  constructor(options = {}) {
24
206
  this.name = 'faunadb';
@@ -176,6 +358,153 @@ class FaunaDbStore {
176
358
  throw wrapDatabaseError(err, 'FaunaDB query failed');
177
359
  }
178
360
  }
361
+ // ---------------------------------------------------------------------
362
+ // ORM model surface (no hand-written FQL needed)
363
+ // ---------------------------------------------------------------------
364
+ /**
365
+ * Fetch every document in `collection` matching the ORM `where` clause. The
366
+ * `where` is compiled to an FQL predicate applied via `Filter` over the
367
+ * collection's documents; `order`/`limit`/`offset` are applied client-side.
368
+ * Each result is normalized to its `data` fields plus an `id`.
369
+ *
370
+ * This scans the collection (bounded by `pageSize`). For large collections,
371
+ * define a Fauna index and use the raw {@link query} escape hatch for an
372
+ * index-driven read.
373
+ */
374
+ async findAll(collection, options = {}) {
375
+ const client = this.requireClient();
376
+ const q = this.requireQuery();
377
+ const node = parseWhere(options.where);
378
+ const size = options.pageSize ?? 100000;
379
+ try {
380
+ const materialized = q.Map(q.Paginate(q.Documents(q.Collection(collection)), { size }), q.Lambda('ref', q.Get(q.Var('ref'))));
381
+ const filtered = node
382
+ ? q.Filter(materialized, q.Lambda('doc', buildFaunaPredicate(q, q.Var('doc'), node)))
383
+ : materialized;
384
+ const result = await client.query(filtered);
385
+ const docs = result?.data ?? [];
386
+ const rows = docs.map((d) => normalizeFaunaDoc(d));
387
+ return applyClientSideShape(rows, options);
388
+ }
389
+ catch (err) {
390
+ throw wrapDatabaseError(err, 'FaunaDB findAll failed');
391
+ }
392
+ }
393
+ /** Fetch the first document matching `where` (client-side `limit 1`), or `null`. */
394
+ async findOne(collection, options = {}) {
395
+ const rows = await this.findAll(collection, { ...options, limit: 1 });
396
+ return rows[0] ?? null;
397
+ }
398
+ /** Count documents in `collection` matching `where`. */
399
+ async count(collection, where) {
400
+ const rows = await this.findAll(collection, { where });
401
+ return rows.length;
402
+ }
403
+ /** Insert `data` and return the new document's id. Alias of {@link insert}. */
404
+ async create(collection, data) {
405
+ return this.insert(collection, data);
406
+ }
407
+ /**
408
+ * Insert many documents atomically in a single FQL `Map`/`Create`, returning
409
+ * the new document ids in order.
410
+ */
411
+ async bulkCreate(collection, docs) {
412
+ if (docs.length === 0)
413
+ return [];
414
+ const client = this.requireClient();
415
+ const q = this.requireQuery();
416
+ try {
417
+ const result = await client.query(q.Map(docs, q.Lambda('d', q.Create(q.Collection(collection), { data: q.Var('d') }))));
418
+ const created = Array.isArray(result) ? result : (result?.data ?? []);
419
+ return created.map((r) => r?.ref?.id ?? r?.data?.id);
420
+ }
421
+ catch (err) {
422
+ throw wrapDatabaseError(err, 'FaunaDB bulkCreate failed');
423
+ }
424
+ }
425
+ /**
426
+ * Update every document matching `where`, merging `values` into each match's
427
+ * `data`, all in a single atomic FQL expression. Returns the number of
428
+ * documents updated.
429
+ */
430
+ async updateMany(collection, values, where) {
431
+ const client = this.requireClient();
432
+ const q = this.requireQuery();
433
+ const node = parseWhere(where);
434
+ try {
435
+ const materialized = q.Map(q.Paginate(q.Documents(q.Collection(collection)), { size: 100000 }), q.Lambda('ref', q.Get(q.Var('ref'))));
436
+ const filtered = node
437
+ ? q.Filter(materialized, q.Lambda('doc', buildFaunaPredicate(q, q.Var('doc'), node)))
438
+ : materialized;
439
+ const result = await client.query(q.Map(filtered, q.Lambda('doc', q.Update(q.Select('ref', q.Var('doc')), { data: values }))));
440
+ const updated = Array.isArray(result) ? result : (result?.data ?? []);
441
+ return updated.length;
442
+ }
443
+ catch (err) {
444
+ throw wrapDatabaseError(err, 'FaunaDB updateMany failed');
445
+ }
446
+ }
447
+ /**
448
+ * Delete every document matching `where` in a single atomic FQL expression.
449
+ * Returns the number of documents deleted.
450
+ */
451
+ async destroy(collection, where) {
452
+ const client = this.requireClient();
453
+ const q = this.requireQuery();
454
+ const node = parseWhere(where);
455
+ try {
456
+ const materialized = q.Map(q.Paginate(q.Documents(q.Collection(collection)), { size: 100000 }), q.Lambda('ref', q.Get(q.Var('ref'))));
457
+ const filtered = node
458
+ ? q.Filter(materialized, q.Lambda('doc', buildFaunaPredicate(q, q.Var('doc'), node)))
459
+ : materialized;
460
+ const result = await client.query(q.Map(filtered, q.Lambda('doc', q.Delete(q.Select('ref', q.Var('doc'))))));
461
+ const deleted = Array.isArray(result) ? result : (result?.data ?? []);
462
+ return deleted.length;
463
+ }
464
+ catch (err) {
465
+ throw wrapDatabaseError(err, 'FaunaDB destroy failed');
466
+ }
467
+ }
468
+ /**
469
+ * Insert-or-update: if a document matching `where` exists, merge `data` into
470
+ * the first match; otherwise create a new document seeded with the `where`
471
+ * equality keys plus `data`. Returns `{ created }`.
472
+ */
473
+ async upsert(collection, data, where) {
474
+ const existing = await this.findAll(collection, { where, limit: 1 });
475
+ if (existing.length > 0 && existing[0].id !== undefined) {
476
+ await this.update(collection, String(existing[0].id), data);
477
+ return { created: false };
478
+ }
479
+ const seed = {};
480
+ for (const field of Object.keys(where)) {
481
+ const val = where[field];
482
+ if (val === null || typeof val !== 'object' || Array.isArray(val))
483
+ seed[field] = val;
484
+ }
485
+ await this.insert(collection, { ...seed, ...data });
486
+ return { created: true };
487
+ }
488
+ /**
489
+ * Run several FQL write expressions atomically in a single transaction via
490
+ * FQL's `Do` (Fauna evaluates a single query as one serializable
491
+ * transaction). Pass expressions built with the query builder from
492
+ * {@link getQuery}. Returns the value of the last expression.
493
+ */
494
+ async transaction(expressions) {
495
+ const client = this.requireClient();
496
+ const q = this.requireQuery();
497
+ try {
498
+ return await client.query(q.Do(...expressions));
499
+ }
500
+ catch (err) {
501
+ throw wrapDatabaseError(err, 'FaunaDB transaction failed');
502
+ }
503
+ }
504
+ /** Exposes the FQL query builder (`faunadb.query`) for building raw expressions. */
505
+ getQuery() {
506
+ return this.requireQuery();
507
+ }
179
508
  }
180
509
  exports.FaunaDbStore = FaunaDbStore;
181
510
  function wrapDatabaseError(err, message) {
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Google Cloud Firestore store implementation for the Prorm NoSQL layer.
3
+ *
4
+ * Firestore is a document database organized as collections of documents,
5
+ * each addressed by an id, with rich structured querying. It does not fit the
6
+ * SQL-shaped `Dialect` interface, so this class implements the minimal
7
+ * `NoSqlStore` marker interface for connection lifecycle and exposes
8
+ * Firestore's real `collection().doc()` CRUD plus `where()` query API through
9
+ * a small convenience layer.
10
+ *
11
+ * Uses the official `@google-cloud/firestore` driver. That driver is an
12
+ * optional peer dependency and is loaded lazily inside `connect()` so
13
+ * importing this module never requires it to be installed. Tests inject a
14
+ * pre-built mock `client` via `options.client`, which bypasses the lazy
15
+ * `require` entirely - no real driver and no network are needed.
16
+ */
17
+ import { NoSqlStore } from '../store';
18
+ /** A native `Firestore` handle, left untyped because the driver is an optional
19
+ * dependency not imported here. */
20
+ type Firestore = any;
21
+ /** A single Firestore query condition: `[field, operator, value]`. */
22
+ export type FirestoreCondition = [string, string, unknown];
23
+ /**
24
+ * Connection options for `FirestoreStore`.
25
+ *
26
+ * `projectId`/`keyFilename` configure the underlying `Firestore` client. When
27
+ * a pre-built `client` is supplied (e.g. in tests), `connect()` uses it
28
+ * directly and skips loading the `@google-cloud/firestore` driver.
29
+ */
30
+ export interface FirestoreStoreOptions {
31
+ projectId?: string;
32
+ keyFilename?: string;
33
+ /** A pre-built `Firestore` client to use instead of the driver. */
34
+ client?: Firestore;
35
+ }
36
+ export declare class FirestoreStore implements NoSqlStore {
37
+ readonly name = "firestore";
38
+ readonly library = "@google-cloud/firestore";
39
+ private readonly options;
40
+ private client;
41
+ private connected;
42
+ constructor(options?: FirestoreStoreOptions);
43
+ connect(): Promise<void>;
44
+ disconnect(): Promise<void>;
45
+ isConnected(): boolean;
46
+ getClient(): Firestore;
47
+ private requireClient;
48
+ /**
49
+ * Add a document to `collection`. If `doc.id` is set the document is written
50
+ * to that id via `doc(id).set(doc)`; otherwise Firestore auto-assigns one
51
+ * via `collection.add(doc)`. Returns the resulting document id.
52
+ */
53
+ insert(collection: string, doc: Record<string, unknown>): Promise<unknown>;
54
+ /** Fetch a document by id, returning its data (or `undefined` if missing). */
55
+ get(collection: string, id: string): Promise<unknown>;
56
+ /** Partially update a document by id, returning the applied `patch`. */
57
+ update(collection: string, id: string, patch: Record<string, unknown>): Promise<unknown>;
58
+ /** Delete a document by id. */
59
+ delete(collection: string, id: string): Promise<unknown>;
60
+ /**
61
+ * Query `collection`. `filter` may be an array of `[field, op, value]`
62
+ * conditions or a plain object (treated as equality on each key). Returns
63
+ * the matched documents, each shaped as `{ id, ...data }`.
64
+ */
65
+ query(collection: string, filter?: FirestoreCondition[] | Record<string, unknown>): Promise<unknown[]>;
66
+ }
67
+ export default FirestoreStore;
@@ -0,0 +1,88 @@
1
+ /**
2
+ * Fluree store implementation.
3
+ *
4
+ * Fluree is an immutable, time-travel ledger database: every transaction is
5
+ * appended as a set of cryptographically-hashed "flakes" into a blockchain-
6
+ * like log, so no data is ever overwritten and any past state (by block or
7
+ * time) is queryable. It speaks a JSON query/transaction API (FlureeQL) over
8
+ * HTTP, not SQL.
9
+ *
10
+ * ## No canonical driver - HTTP over `fetch`
11
+ *
12
+ * Fluree has no single canonical npm client; it is an HTTP/JSON API. Like the
13
+ * Prometheus store, this class talks to the server with the global `fetch`
14
+ * (so `library === 'fetch'`) and accepts an injected HTTP client via
15
+ * `FlureeStoreOptions.client` for tests / custom transports. It implements the
16
+ * minimal `NoSqlStore` marker interface plus the shared ledger surface:
17
+ * - `append(collection, data)` -> `POST /fdb/<ledger>/transact`.
18
+ * - `get(collection, id)` -> `POST /fdb/<ledger>/query`.
19
+ * - `history(collection, id)` -> `POST /fdb/<ledger>/history`.
20
+ * - `verify(collection, id)` -> `POST /fdb/<ledger>/history` with block
21
+ * metadata (the flake's block hash is its tamper-evidence proof).
22
+ * - `query(flureeql)` -> raw `POST /fdb/<ledger>/query`.
23
+ */
24
+ import { NoSqlStore } from '../store';
25
+ /** Default Fluree HTTP API base URL. */
26
+ export declare const DEFAULT_FLUREE_BASE_URL = "http://localhost:8090";
27
+ /** The subset of an HTTP client this store needs. */
28
+ export interface FlureeHttpClient {
29
+ /** Issue a POST with a JSON body and return the parsed JSON response. */
30
+ post(path: string, body: unknown): Promise<any>;
31
+ }
32
+ /** Connection options for `FlureeStore`. */
33
+ export interface FlureeStoreOptions {
34
+ /** Base URL of the Fluree server. Defaults to `http://localhost:8090`. */
35
+ baseURL?: string;
36
+ /** Ledger (network/db) name, e.g. `'my/ledger'`. */
37
+ ledger: string;
38
+ /** Optional pre-built HTTP client; when provided, `baseURL` is ignored. */
39
+ client?: FlureeHttpClient;
40
+ /** Extra HTTP headers (e.g. an auth `Authorization` bearer). */
41
+ headers?: Record<string, string>;
42
+ }
43
+ /** Build a `fetch`-backed JSON client for the given base URL. */
44
+ export declare function createFlureeFetchClient(baseURL: string, headers?: Record<string, string>): FlureeHttpClient;
45
+ /**
46
+ * `FlureeStore` wraps Fluree's HTTP query/transact API behind the shared
47
+ * ledger surface.
48
+ */
49
+ export declare class FlureeStore implements NoSqlStore {
50
+ readonly name = "fluree";
51
+ readonly library = "fetch";
52
+ private readonly baseURL;
53
+ private readonly ledger;
54
+ private readonly injectedClient?;
55
+ private readonly headers?;
56
+ private client;
57
+ private connected;
58
+ constructor(options: FlureeStoreOptions);
59
+ connect(): Promise<void>;
60
+ disconnect(): Promise<void>;
61
+ isConnected(): boolean;
62
+ /** Returns the underlying (internal or injected) HTTP client. */
63
+ getClient(): FlureeHttpClient;
64
+ private requireClient;
65
+ private endpoint;
66
+ private post;
67
+ /**
68
+ * Append `data` to `collection` as a transaction (`POST .../transact`).
69
+ * Returns the transaction response (block, flakes, temp-id map, and the
70
+ * block hash that anchors the write into the immutable log).
71
+ */
72
+ append(collection: string, data: Record<string, unknown>): Promise<unknown>;
73
+ /** Read subject `id` from `collection` (`POST .../query`). */
74
+ get(collection: string, id: string | number): Promise<unknown>;
75
+ /** Return the flake-level history of subject `id` (`POST .../history`). */
76
+ history(collection: string, id: string | number): Promise<unknown>;
77
+ /**
78
+ * Return the provenance/proof for subject `id`: its history with block
79
+ * metadata (`meta: true`), so callers see the block hash and instant that
80
+ * cryptographically anchor each revision into Fluree's tamper-evident log.
81
+ */
82
+ verify(collection: string, id: string | number): Promise<unknown>;
83
+ /** Run a raw FlureeQL query object (`POST .../query`). */
84
+ query(flureeql: unknown): Promise<unknown>;
85
+ /** Run a raw FlureeQL transaction (`POST .../transact`). */
86
+ transact(transaction: unknown): Promise<unknown>;
87
+ }
88
+ export default FlureeStore;
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Apache Jena Fuseki store implementation.
3
+ *
4
+ * Fuseki is a SPARQL server over the Jena RDF triplestore. It is queried and
5
+ * updated entirely over HTTP using the SPARQL 1.1 Protocol: a dataset exposes
6
+ * a query endpoint (`/<dataset>/query`) and an update endpoint
7
+ * (`/<dataset>/update`). There is no SQL-shaped surface (no rows, no DDL, no
8
+ * identifier escaping), so it implements the minimal `NoSqlStore` marker
9
+ * interface (`src/nosql/store.ts`) rather than the SQL `Dialect` interface.
10
+ *
11
+ * ## No canonical driver - HTTP over `fetch`
12
+ *
13
+ * Fuseki has no dedicated npm client; it is just a SPARQL/HTTP endpoint.
14
+ * Rather than depend on any package, this store talks to the server with the
15
+ * global `fetch`. For tests (and for callers who want their own transport) an
16
+ * alternative client can be injected via `FusekiStoreOptions.client`; when
17
+ * omitted, a tiny internal client over `fetch` + `endpoint` is built at
18
+ * connect time.
19
+ *
20
+ * ## Surface
21
+ *
22
+ * - `query(sparql)` -> POST to `/<dataset>/query`, returns result bindings
23
+ * - `update(sparql)` -> POST to `/<dataset>/update`
24
+ * - `ask(sparql)` -> POST an ASK query, returns the boolean
25
+ * - `add(triples)` -> `INSERT DATA { ... }` update
26
+ * - `drop(graph?)` -> `DROP GRAPH <g>` / `DROP ALL` update
27
+ */
28
+ import { NoSqlStore } from '../store';
29
+ /** Default Fuseki base URL. */
30
+ export declare const DEFAULT_FUSEKI_ENDPOINT = "http://localhost:3030";
31
+ /** Default dataset name. */
32
+ export declare const DEFAULT_FUSEKI_DATASET = "ds";
33
+ /**
34
+ * The subset of a SPARQL HTTP client this store needs. The internal
35
+ * `fetch`-based client implements this; tests inject a mock with the shape.
36
+ */
37
+ export interface SparqlHttpClient {
38
+ /** POST a SPARQL query to `path`; returns the parsed results envelope. */
39
+ query(path: string, sparql: string): Promise<any>;
40
+ /** POST a SPARQL update to `path`. */
41
+ update(path: string, sparql: string): Promise<any>;
42
+ }
43
+ /** Connection options for `FusekiStore`. */
44
+ export interface FusekiStoreOptions {
45
+ /** Base URL of the Fuseki server. Defaults to `http://localhost:3030`. */
46
+ endpoint?: string;
47
+ /** Dataset name. Defaults to `ds`. */
48
+ dataset?: string;
49
+ /**
50
+ * Optional pre-built SPARQL HTTP client. When provided it is used verbatim
51
+ * and `endpoint` is ignored; otherwise an internal `fetch`-based client is
52
+ * built against `endpoint` on `connect()`.
53
+ */
54
+ client?: SparqlHttpClient;
55
+ /** Extra HTTP headers sent with every internal-client request. */
56
+ headers?: Record<string, string>;
57
+ }
58
+ /** Build a `fetch`-backed SPARQL client for the given endpoint. */
59
+ export declare function createFetchClient(endpoint: string, headers?: Record<string, string>): SparqlHttpClient;
60
+ /**
61
+ * `FusekiStore` wraps a Fuseki dataset's SPARQL query/update endpoints behind
62
+ * the `NoSqlStore` lifecycle.
63
+ */
64
+ export declare class FusekiStore implements NoSqlStore {
65
+ readonly name = "fuseki";
66
+ readonly library = "fetch";
67
+ private readonly endpoint;
68
+ private readonly dataset;
69
+ private readonly injectedClient?;
70
+ private readonly headers?;
71
+ private client;
72
+ private connected;
73
+ constructor(options?: FusekiStoreOptions);
74
+ /** SPARQL query endpoint path for the configured dataset. */
75
+ get queryPath(): string;
76
+ /** SPARQL update endpoint path for the configured dataset. */
77
+ get updatePath(): string;
78
+ connect(): Promise<void>;
79
+ disconnect(): Promise<void>;
80
+ isConnected(): boolean;
81
+ /** Returns the underlying (internal or injected) SPARQL HTTP client. */
82
+ getClient(): SparqlHttpClient;
83
+ private requireClient;
84
+ /** Runs a SPARQL SELECT/CONSTRUCT query; returns the result bindings. */
85
+ query(sparql: string): Promise<any[]>;
86
+ /** Runs a SPARQL ASK query; returns the boolean answer. */
87
+ ask(sparql: string): Promise<boolean>;
88
+ /** Runs a SPARQL UPDATE (INSERT/DELETE/DROP/...). */
89
+ update(sparql: string): Promise<any>;
90
+ /** Inserts triples via `INSERT DATA { ... }`. Accepts a triple string or array. */
91
+ add(triples: string | string[], graph?: string): Promise<any>;
92
+ /** Drops a named graph, or all graphs when no graph is given. */
93
+ drop(graph?: string): Promise<any>;
94
+ }
@@ -0,0 +1,62 @@
1
+ import type { NoSqlStore } from '../store';
2
+ /**
3
+ * Connection options for `GCSStore`.
4
+ */
5
+ export interface GCSStoreOptions {
6
+ /** GCP project ID. Falls back to the ambient credentials' project when omitted. */
7
+ projectId?: string;
8
+ /** Path to a service-account key JSON file. Omit to use Application Default Credentials. */
9
+ keyFilename?: string;
10
+ /**
11
+ * A pre-built `Storage` instance (from `new Storage(...)`). When provided,
12
+ * `connect()` uses it directly and skips loading `@google-cloud/storage`.
13
+ * Primarily an injection seam for tests, but also useful for sharing a
14
+ * client or supplying custom constructor options.
15
+ */
16
+ client?: unknown;
17
+ }
18
+ /** Options passed straight through to `file.save()` (contentType, metadata, resumable, etc). */
19
+ export type UploadObjectOptions = Record<string, unknown>;
20
+ /**
21
+ * Google Cloud Storage store, implementing the minimal `NoSqlStore` marker
22
+ * interface. Unlike the SQL dialects there is no `query(sql)` - GCS's
23
+ * operations are object-shaped (`bucket(name).file(key).<op>()`) and that
24
+ * shape is preserved here rather than forced into a SQL string.
25
+ */
26
+ export declare class GCSStore implements NoSqlStore {
27
+ readonly name = "gcs";
28
+ readonly library = "@google-cloud/storage";
29
+ private readonly options;
30
+ private client;
31
+ private connected;
32
+ constructor(options?: GCSStoreOptions);
33
+ connect(): Promise<void>;
34
+ disconnect(): Promise<void>;
35
+ isConnected(): boolean;
36
+ /** Returns the underlying `@google-cloud/storage` `Storage` client for anything not wrapped here. */
37
+ getClient(): unknown;
38
+ private requireClient;
39
+ /** Resolve a `File` handle for `(bucket, key)` off the live client. */
40
+ private file;
41
+ private wrapError;
42
+ /**
43
+ * Upload (or overwrite) an object. `data` may be a `Buffer` or string;
44
+ * `options` is passed straight through to `file.save()` (e.g.
45
+ * `{ contentType, metadata, resumable }`).
46
+ */
47
+ uploadObject(bucket: string, key: string, data: Buffer | string, options?: UploadObjectOptions): Promise<void>;
48
+ /** Download an object's contents as a `Buffer`. Throws if the object does not exist. */
49
+ downloadObject(bucket: string, key: string): Promise<Buffer>;
50
+ /** Delete an object. Throws if the object does not exist. */
51
+ deleteObject(bucket: string, key: string): Promise<void>;
52
+ /** Returns whether an object exists. */
53
+ objectExists(bucket: string, key: string): Promise<boolean>;
54
+ /**
55
+ * List objects in a bucket, optionally restricted to those whose name
56
+ * starts with `prefix`. Returns the raw `File` objects from the driver.
57
+ */
58
+ listObjects(bucket: string, prefix?: string): Promise<any[]>;
59
+ /** Fetch an object's metadata (size, contentType, updated, custom metadata, etc). */
60
+ getMetadata(bucket: string, key: string): Promise<Record<string, unknown>>;
61
+ }
62
+ export default GCSStore;