ts-prorm-orm 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (460) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/README.md +194 -72
  3. package/dist/audit/history-query.d.ts +35 -0
  4. package/dist/audit/index.d.ts +16 -0
  5. package/dist/audit/logger.d.ts +126 -0
  6. package/dist/cache/cache-manager.d.ts +341 -0
  7. package/dist/cache/index.d.ts +8 -0
  8. package/dist/cache/redis-cluster-cache.d.ts +164 -0
  9. package/dist/cache/redis-cluster-cache.js +19 -36
  10. package/dist/cli/cloud.d.ts +55 -0
  11. package/dist/cli/cloud.js +318 -0
  12. package/dist/cli/commands/auth.d.ts +2 -0
  13. package/dist/cli/commands/auth.js +345 -0
  14. package/dist/cli/commands/billing.d.ts +2 -0
  15. package/dist/cli/commands/billing.js +135 -0
  16. package/dist/cli/commands/code.d.ts +2 -0
  17. package/dist/cli/commands/code.js +168 -0
  18. package/dist/cli/commands/config.d.ts +2 -0
  19. package/dist/cli/commands/config.js +154 -0
  20. package/dist/cli/commands/db.d.ts +2 -0
  21. package/dist/cli/commands/db.js +189 -0
  22. package/dist/cli/commands/index.d.ts +1 -0
  23. package/dist/cli/commands/index.js +22 -0
  24. package/dist/cli/commands/keys.d.ts +2 -0
  25. package/dist/cli/commands/keys.js +100 -0
  26. package/dist/cli/commands/misc.d.ts +2 -0
  27. package/dist/cli/commands/misc.js +282 -0
  28. package/dist/cli/commands/pull.d.ts +2 -0
  29. package/dist/cli/commands/pull.js +306 -0
  30. package/dist/cli/commands/runners.d.ts +2 -0
  31. package/dist/cli/commands/runners.js +218 -0
  32. package/dist/cli/commands/scaffold.d.ts +2 -0
  33. package/dist/cli/commands/scaffold.js +383 -0
  34. package/dist/cli/commands/secrets.d.ts +2 -0
  35. package/dist/cli/commands/secrets.js +162 -0
  36. package/dist/cli/commands/store.d.ts +2 -0
  37. package/dist/cli/commands/store.js +274 -0
  38. package/dist/cli/commands/system.d.ts +10 -0
  39. package/dist/cli/commands/system.js +169 -0
  40. package/dist/cli/commands/teams.d.ts +2 -0
  41. package/dist/cli/commands/teams.js +189 -0
  42. package/dist/cli/commands/user.d.ts +2 -0
  43. package/dist/cli/commands/user.js +171 -0
  44. package/dist/cli/framework.d.ts +103 -0
  45. package/dist/cli/framework.js +436 -0
  46. package/dist/cli/io.d.ts +26 -0
  47. package/dist/cli/io.js +181 -0
  48. package/dist/cli/keychain.d.ts +10 -0
  49. package/dist/cli/keychain.js +101 -0
  50. package/dist/cli/prompt.d.ts +20 -0
  51. package/dist/cli/prompt.js +111 -0
  52. package/dist/cli.d.ts +214 -0
  53. package/dist/cli.js +72 -5
  54. package/dist/compliance/audit-trail.d.ts +66 -0
  55. package/dist/compliance/backup-verification.d.ts +279 -0
  56. package/dist/compliance/breach-detector.d.ts +197 -0
  57. package/dist/compliance/consent-record.d.ts +107 -0
  58. package/dist/compliance/consent-versioning.d.ts +169 -0
  59. package/dist/compliance/cross-border-log.d.ts +254 -0
  60. package/dist/compliance/data-classifier.d.ts +127 -0
  61. package/dist/compliance/data-lineage.d.ts +268 -0
  62. package/dist/compliance/data-masker.d.ts +110 -0
  63. package/dist/compliance/data-portability.d.ts +98 -0
  64. package/dist/compliance/data-retention.d.ts +108 -0
  65. package/dist/compliance/dsar-workflow.d.ts +175 -0
  66. package/dist/compliance/field-encryption.d.ts +84 -0
  67. package/dist/compliance/immutable-record.d.ts +84 -0
  68. package/dist/compliance/index.d.ts +93 -0
  69. package/dist/compliance/privacy-impact-assessment.d.ts +196 -0
  70. package/dist/compliance/pseudonymization.d.ts +96 -0
  71. package/dist/compliance/query-firewall.d.ts +661 -0
  72. package/dist/compliance/rate-limiter.d.ts +203 -0
  73. package/dist/compliance/right-to-erasure.d.ts +96 -0
  74. package/dist/compliance/row-level-security.d.ts +152 -0
  75. package/dist/compliance/security-decorator.d.ts +388 -0
  76. package/dist/compliance/security-monitor.d.ts +170 -0
  77. package/dist/compliance/sensitive-data-discovery.d.ts +151 -0
  78. package/dist/compliance/session-isolation.d.ts +286 -0
  79. package/dist/compliance/tls-enforcer.d.ts +51 -0
  80. package/dist/compliance/worm-storage.d.ts +225 -0
  81. package/dist/connection-manager.d.ts +130 -0
  82. package/dist/connection-pool.d.ts +311 -0
  83. package/dist/decorators/audit.d.ts +49 -0
  84. package/dist/decorators/check.d.ts +218 -0
  85. package/dist/decorators/collate.d.ts +346 -0
  86. package/dist/decorators/comment.d.ts +51 -0
  87. package/dist/decorators/database-settings.d.ts +193 -0
  88. package/dist/decorators/default.d.ts +148 -0
  89. package/dist/decorators/encryption.d.ts +175 -0
  90. package/dist/decorators/engine.d.ts +97 -0
  91. package/dist/decorators/fk-constraints.d.ts +387 -0
  92. package/dist/decorators/foreign-table.d.ts +57 -0
  93. package/dist/decorators/generated.d.ts +232 -0
  94. package/dist/decorators/hstore.d.ts +96 -0
  95. package/dist/decorators/index.d.ts +57 -0
  96. package/dist/decorators/index.js +14 -30
  97. package/dist/decorators/json-column.d.ts +47 -0
  98. package/dist/decorators/jsonb.d.ts +83 -0
  99. package/dist/decorators/orm-decorators.d.ts +274 -0
  100. package/dist/decorators/permissions.d.ts +192 -0
  101. package/dist/decorators/procedure.d.ts +168 -0
  102. package/dist/decorators/procedure.js +31 -7
  103. package/dist/decorators/query-options.d.ts +527 -0
  104. package/dist/decorators/range.d.ts +122 -0
  105. package/dist/decorators/set-column.d.ts +43 -0
  106. package/dist/decorators/spatial.d.ts +60 -0
  107. package/dist/decorators/storage.d.ts +561 -0
  108. package/dist/decorators/timezone.d.ts +319 -0
  109. package/dist/decorators/trigger.d.ts +50 -0
  110. package/dist/decorators/uuid.d.ts +102 -0
  111. package/dist/decorators/view.d.ts +213 -0
  112. package/dist/diagrams/chen-diagram.d.ts +70 -0
  113. package/dist/diagrams/chen-diagram.js +33 -31
  114. package/dist/diagrams/class-diagram.d.ts +78 -0
  115. package/dist/diagrams/class-diagram.js +23 -27
  116. package/dist/diagrams/dependency-diagram.d.ts +82 -0
  117. package/dist/diagrams/dependency-diagram.js +18 -9
  118. package/dist/diagrams/er-diagram.d.ts +82 -0
  119. package/dist/diagrams/er-diagram.js +174 -231
  120. package/dist/diagrams/flow-diagram.d.ts +70 -0
  121. package/dist/diagrams/flow-diagram.js +23 -18
  122. package/dist/diagrams/gantt-diagram.d.ts +67 -0
  123. package/dist/diagrams/gantt-diagram.js +20 -18
  124. package/dist/diagrams/index-diagram.d.ts +61 -0
  125. package/dist/diagrams/index-diagram.js +36 -31
  126. package/dist/diagrams/index.d.ts +155 -0
  127. package/dist/diagrams/index.js +7 -1
  128. package/dist/diagrams/migration-diagram.d.ts +67 -0
  129. package/dist/diagrams/migration-diagram.js +45 -57
  130. package/dist/diagrams/model-diagram.d.ts +85 -0
  131. package/dist/diagrams/model-diagram.js +225 -287
  132. package/dist/diagrams/package-diagram.d.ts +69 -0
  133. package/dist/diagrams/package-diagram.js +30 -32
  134. package/dist/diagrams/palette.d.ts +138 -0
  135. package/dist/diagrams/palette.js +134 -25
  136. package/dist/diagrams/relational-diagram.d.ts +82 -0
  137. package/dist/diagrams/relational-diagram.js +51 -59
  138. package/dist/diagrams/schemadoc-diagram.d.ts +57 -0
  139. package/dist/diagrams/schemadoc-diagram.js +36 -28
  140. package/dist/diagrams/sequence-diagram.d.ts +61 -0
  141. package/dist/diagrams/sequence-diagram.js +20 -11
  142. package/dist/diagrams/state-diagram.d.ts +85 -0
  143. package/dist/diagrams/state-diagram.js +21 -17
  144. package/dist/diagrams/svg-dom.d.ts +62 -0
  145. package/dist/diagrams/svg-dom.js +11 -0
  146. package/dist/diagrams/tree-diagram.d.ts +47 -0
  147. package/dist/diagrams/tree-diagram.js +19 -10
  148. package/dist/dialects/clickhouse/index.d.ts +660 -0
  149. package/dist/dialects/clickhouse/index.js +107 -2
  150. package/dist/dialects/cockroachdb/index.d.ts +1708 -0
  151. package/dist/dialects/cockroachdb/index.js +139 -10
  152. package/dist/dialects/cratedb/index.d.ts +262 -0
  153. package/dist/dialects/cratedb/index.js +148 -0
  154. package/dist/dialects/databricks/index.d.ts +397 -0
  155. package/dist/dialects/databricks/index.js +233 -11
  156. package/dist/dialects/db2/index.d.ts +729 -0
  157. package/dist/dialects/db2/index.js +152 -2
  158. package/dist/dialects/dialect.d.ts +1653 -0
  159. package/dist/dialects/duckdb/index.d.ts +440 -0
  160. package/dist/dialects/duckdb/index.js +21 -37
  161. package/dist/dialects/exasol/index.d.ts +197 -0
  162. package/dist/dialects/exasol/index.js +14 -0
  163. package/dist/dialects/firebird/index.d.ts +286 -0
  164. package/dist/dialects/firebird/index.js +135 -0
  165. package/dist/dialects/greenplum/index.d.ts +336 -0
  166. package/dist/dialects/greenplum/index.js +168 -0
  167. package/dist/dialects/hana/index.d.ts +512 -0
  168. package/dist/dialects/hana/index.js +17 -35
  169. package/dist/dialects/mariadb/index.d.ts +1241 -0
  170. package/dist/dialects/mariadb/index.js +181 -43
  171. package/dist/dialects/mssql/index.d.ts +729 -0
  172. package/dist/dialects/mssql/index.js +76 -7
  173. package/dist/dialects/mysql/index.d.ts +1233 -0
  174. package/dist/dialects/mysql/index.js +87 -19
  175. package/dist/dialects/oracle/index.d.ts +1222 -0
  176. package/dist/dialects/oracle/index.js +210 -9
  177. package/dist/dialects/postgres/index.d.ts +1598 -0
  178. package/dist/dialects/postgres/index.js +34 -13
  179. package/dist/dialects/query-stream-helper.d.ts +58 -0
  180. package/dist/dialects/questdb/index.d.ts +430 -0
  181. package/dist/dialects/questdb/index.js +292 -0
  182. package/dist/dialects/redshift/index.d.ts +933 -0
  183. package/dist/dialects/redshift/index.js +17 -5
  184. package/dist/dialects/singlestore/index.d.ts +233 -0
  185. package/dist/dialects/singlestore/index.js +53 -0
  186. package/dist/dialects/snowflake/index.d.ts +727 -0
  187. package/dist/dialects/snowflake/index.js +154 -5
  188. package/dist/dialects/spanner/index.d.ts +660 -0
  189. package/dist/dialects/spanner/index.js +43 -21
  190. package/dist/dialects/sqlite/index.d.ts +1133 -0
  191. package/dist/dialects/sqlite/index.js +168 -30
  192. package/dist/dialects/tidb/index.d.ts +226 -0
  193. package/dist/dialects/tidb/index.js +10 -0
  194. package/dist/dialects/timescaledb/index.d.ts +286 -0
  195. package/dist/dialects/timescaledb/index.js +179 -0
  196. package/dist/dialects/trino/index.d.ts +230 -0
  197. package/dist/dialects/trino/index.js +85 -10
  198. package/dist/dialects/turso/index.d.ts +98 -0
  199. package/dist/dialects/turso/index.js +10 -0
  200. package/dist/dialects/vertica/index.d.ts +321 -0
  201. package/dist/dialects/vertica/index.js +161 -0
  202. package/dist/dialects/yugabytedb/index.d.ts +276 -0
  203. package/dist/dialects/yugabytedb/index.js +121 -0
  204. package/dist/errors/index.d.ts +378 -0
  205. package/dist/errors/index.js +29 -1
  206. package/dist/errors/utils.d.ts +53 -0
  207. package/dist/errors.d.ts +5 -0
  208. package/dist/extensions/catalog/cloud-warehouse-features.d.ts +27 -0
  209. package/dist/extensions/catalog/mssql-features.d.ts +20 -0
  210. package/dist/extensions/catalog/mysql-mariadb-plugins.d.ts +18 -0
  211. package/dist/extensions/catalog/oracle-db2-features.d.ts +17 -0
  212. package/dist/extensions/catalog/postgres-extensions.d.ts +15 -0
  213. package/dist/extensions/index.d.ts +34 -0
  214. package/dist/extensions/types.d.ts +43 -0
  215. package/dist/external-fields/adapters.d.ts +50 -0
  216. package/dist/external-fields/adapters.js +227 -0
  217. package/dist/external-fields/decorator.d.ts +77 -0
  218. package/dist/external-fields/decorator.js +80 -0
  219. package/dist/external-fields/index.d.ts +10 -0
  220. package/dist/external-fields/index.js +19 -0
  221. package/dist/external-fields/runtime.d.ts +39 -0
  222. package/dist/external-fields/runtime.js +221 -0
  223. package/dist/foreign-data.d.ts +168 -0
  224. package/dist/graph/base-graph-dialect.d.ts +250 -0
  225. package/dist/graph/base-graph-dialect.js +539 -0
  226. package/dist/graph/dgraph/index.d.ts +65 -0
  227. package/dist/graph/dgraph/index.js +559 -0
  228. package/dist/graph/gremlin/index.d.ts +59 -0
  229. package/dist/graph/gremlin/index.js +378 -0
  230. package/dist/graph/index.d.ts +60 -0
  231. package/dist/graph/index.js +67 -0
  232. package/dist/graph/neo4j/index.d.ts +50 -0
  233. package/dist/graph/neo4j/index.js +462 -0
  234. package/dist/graph/types.d.ts +213 -0
  235. package/dist/graph/types.js +234 -0
  236. package/dist/hooks/hooks-manager.d.ts +189 -0
  237. package/dist/hooks/index.d.ts +8 -0
  238. package/dist/index.d.ts +711 -0
  239. package/dist/index.js +19 -4
  240. package/dist/logging.d.ts +183 -0
  241. package/dist/migrations/index.d.ts +9 -0
  242. package/dist/migrations/migration.d.ts +143 -0
  243. package/dist/migrations/migrator.d.ts +199 -0
  244. package/dist/migrations/prormmigration.d.ts +131 -0
  245. package/dist/migrations/query-interface.d.ts +335 -0
  246. package/dist/migrations/seeder.d.ts +167 -0
  247. package/dist/models/associations.d.ts +131 -0
  248. package/dist/models/associations.js +7 -2
  249. package/dist/models/constraints.d.ts +175 -0
  250. package/dist/models/data-types.d.ts +1656 -0
  251. package/dist/models/decorators.d.ts +328 -0
  252. package/dist/models/decorators.js +61 -82
  253. package/dist/models/eager-load.d.ts +86 -0
  254. package/dist/models/eager-load.js +369 -0
  255. package/dist/models/index.d.ts +13 -0
  256. package/dist/models/indexes.d.ts +325 -0
  257. package/dist/models/methods.d.ts +419 -0
  258. package/dist/models/model-manager.d.ts +76 -0
  259. package/dist/models/model.d.ts +820 -0
  260. package/dist/models/model.js +15 -101
  261. package/dist/models/operators.d.ts +29 -0
  262. package/dist/models/scopes.d.ts +71 -0
  263. package/dist/models/typescript-types.d.ts +177 -0
  264. package/dist/nosql/aerospike/index.d.ts +126 -0
  265. package/dist/nosql/allegrograph/index.d.ts +86 -0
  266. package/dist/nosql/arangodb/index.d.ts +285 -0
  267. package/dist/nosql/arangodb/index.js +274 -2
  268. package/dist/nosql/arangodb/where.d.ts +38 -0
  269. package/dist/nosql/arangodb/where.js +94 -0
  270. package/dist/nosql/azure-blob/index.d.ts +104 -0
  271. package/dist/nosql/beanstalkd/index.d.ts +88 -0
  272. package/dist/nosql/beequeue/index.d.ts +99 -0
  273. package/dist/nosql/bigchaindb/index.d.ts +113 -0
  274. package/dist/nosql/bigtable/index.d.ts +144 -0
  275. package/dist/nosql/blazegraph/index.d.ts +88 -0
  276. package/dist/nosql/bullmq/index.d.ts +83 -0
  277. package/dist/nosql/cassandra/index.d.ts +119 -0
  278. package/dist/nosql/chroma/index.d.ts +151 -0
  279. package/dist/nosql/cloudflare-kv/index.d.ts +120 -0
  280. package/dist/nosql/coherence/index.d.ts +91 -0
  281. package/dist/nosql/cosmosdb/index.d.ts +78 -0
  282. package/dist/nosql/couchbase/index.d.ts +103 -0
  283. package/dist/nosql/dax/index.d.ts +118 -0
  284. package/dist/nosql/deno-kv/index.d.ts +109 -0
  285. package/dist/nosql/dgraph/index.d.ts +80 -0
  286. package/dist/nosql/doris/index.d.ts +88 -0
  287. package/dist/nosql/druid/index.d.ts +95 -0
  288. package/dist/nosql/dynamodb/index.d.ts +643 -0
  289. package/dist/nosql/dynamodb/index.js +423 -0
  290. package/dist/nosql/elasticsearch/index.d.ts +239 -0
  291. package/dist/nosql/etcd/index.d.ts +243 -0
  292. package/dist/nosql/eventhubs/index.d.ts +89 -0
  293. package/dist/nosql/eventstore/index.d.ts +102 -0
  294. package/dist/nosql/faunadb/index.d.ts +141 -0
  295. package/dist/nosql/faunadb/index.js +329 -0
  296. package/dist/nosql/firestore/index.d.ts +67 -0
  297. package/dist/nosql/fluree/index.d.ts +88 -0
  298. package/dist/nosql/fuseki/index.d.ts +94 -0
  299. package/dist/nosql/gcs/index.d.ts +62 -0
  300. package/dist/nosql/gearman/index.d.ts +77 -0
  301. package/dist/nosql/geode/index.d.ts +93 -0
  302. package/dist/nosql/graphdb/index.d.ts +86 -0
  303. package/dist/nosql/graylog/index.d.ts +118 -0
  304. package/dist/nosql/gridgain/index.d.ts +78 -0
  305. package/dist/nosql/hazelcast/index.d.ts +73 -0
  306. package/dist/nosql/hbase/index.d.ts +123 -0
  307. package/dist/nosql/ignite/index.d.ts +80 -0
  308. package/dist/nosql/immudb/index.d.ts +131 -0
  309. package/dist/nosql/index.d.ts +215 -0
  310. package/dist/nosql/infinispan/index.d.ts +95 -0
  311. package/dist/nosql/influxdb/flux-compiler.d.ts +23 -0
  312. package/dist/nosql/influxdb/flux-compiler.js +170 -0
  313. package/dist/nosql/influxdb/index.d.ts +300 -0
  314. package/dist/nosql/influxdb/index.js +0 -0
  315. package/dist/nosql/kafka/index.d.ts +113 -0
  316. package/dist/nosql/keyspaces/index.d.ts +122 -0
  317. package/dist/nosql/kinesis/index.d.ts +121 -0
  318. package/dist/nosql/leveldb/index.d.ts +112 -0
  319. package/dist/nosql/leveldb/index.js +103 -1
  320. package/dist/nosql/lmdb/index.d.ts +76 -0
  321. package/dist/nosql/loki/index.d.ts +126 -0
  322. package/dist/nosql/marklogic/index.d.ts +76 -0
  323. package/dist/nosql/materialize/index.d.ts +91 -0
  324. package/dist/nosql/meilisearch/index.d.ts +76 -0
  325. package/dist/nosql/memcached/index.d.ts +138 -0
  326. package/dist/nosql/milvus/index.d.ts +167 -0
  327. package/dist/nosql/minio/index.d.ts +122 -0
  328. package/dist/nosql/momento/index.d.ts +99 -0
  329. package/dist/nosql/mongodb/index.d.ts +265 -0
  330. package/dist/nosql/mongodb/index.js +139 -0
  331. package/dist/nosql/mongodb/where.d.ts +8 -0
  332. package/dist/nosql/mongodb/where.js +181 -0
  333. package/dist/nosql/nats/index.d.ts +139 -0
  334. package/dist/nosql/nedb/index.d.ts +79 -0
  335. package/dist/nosql/neo4j/index.d.ts +217 -0
  336. package/dist/nosql/neo4j/index.js +26 -14
  337. package/dist/nosql/neptune/index.d.ts +234 -0
  338. package/dist/nosql/neptune/index.js +23 -9
  339. package/dist/nosql/nsq/index.d.ts +93 -0
  340. package/dist/nosql/opensearch/index.d.ts +97 -0
  341. package/dist/nosql/orientdb/index.d.ts +72 -0
  342. package/dist/nosql/papertrail/index.d.ts +120 -0
  343. package/dist/nosql/pinecone/index.d.ts +148 -0
  344. package/dist/nosql/pinot/index.d.ts +90 -0
  345. package/dist/nosql/pouchdb/index.d.ts +95 -0
  346. package/dist/nosql/prometheus/index.d.ts +112 -0
  347. package/dist/nosql/provendb/index.d.ts +143 -0
  348. package/dist/nosql/provendb/index.js +262 -0
  349. package/dist/nosql/pubsub/index.d.ts +83 -0
  350. package/dist/nosql/pulsar/index.d.ts +105 -0
  351. package/dist/nosql/qdrant/index.d.ts +231 -0
  352. package/dist/nosql/qldb/index.d.ts +182 -0
  353. package/dist/nosql/qldb/index.js +302 -1
  354. package/dist/nosql/r2/index.d.ts +160 -0
  355. package/dist/nosql/rabbitmq/index.d.ts +131 -0
  356. package/dist/nosql/ravendb/index.d.ts +138 -0
  357. package/dist/nosql/ravendb/index.js +323 -9
  358. package/dist/nosql/ravendb/where.d.ts +38 -0
  359. package/dist/nosql/ravendb/where.js +94 -0
  360. package/dist/nosql/redis/index.d.ts +267 -0
  361. package/dist/nosql/redis/index.js +19 -5
  362. package/dist/nosql/redpanda/index.d.ts +117 -0
  363. package/dist/nosql/resque/index.d.ts +91 -0
  364. package/dist/nosql/rethinkdb/index.d.ts +194 -0
  365. package/dist/nosql/rethinkdb/index.js +290 -0
  366. package/dist/nosql/rethinkdb/where.d.ts +38 -0
  367. package/dist/nosql/rethinkdb/where.js +94 -0
  368. package/dist/nosql/rocksdb/document-layer.d.ts +162 -0
  369. package/dist/nosql/rocksdb/document-layer.js +338 -0
  370. package/dist/nosql/rocksdb/index.d.ts +112 -0
  371. package/dist/nosql/rocksdb/index.js +103 -1
  372. package/dist/nosql/rocksdb/where-match.d.ts +21 -0
  373. package/dist/nosql/rocksdb/where-match.js +238 -0
  374. package/dist/nosql/rockset/index.d.ts +84 -0
  375. package/dist/nosql/s3/index.d.ts +170 -0
  376. package/dist/nosql/scylladb/index.d.ts +117 -0
  377. package/dist/nosql/signoz/index.d.ts +116 -0
  378. package/dist/nosql/sns/index.d.ts +99 -0
  379. package/dist/nosql/solr/index.d.ts +129 -0
  380. package/dist/nosql/splunk/index.d.ts +125 -0
  381. package/dist/nosql/sqs/index.d.ts +116 -0
  382. package/dist/nosql/stardog/index.d.ts +86 -0
  383. package/dist/nosql/starrocks/index.d.ts +89 -0
  384. package/dist/nosql/store.d.ts +23 -0
  385. package/dist/nosql/sumologic/index.d.ts +119 -0
  386. package/dist/nosql/surrealdb/index.d.ts +156 -0
  387. package/dist/nosql/surrealdb/index.js +174 -1
  388. package/dist/nosql/surrealdb/query-compiler.d.ts +26 -0
  389. package/dist/nosql/surrealdb/query-compiler.js +193 -0
  390. package/dist/nosql/terminusdb/index.d.ts +95 -0
  391. package/dist/nosql/tigergraph/index.d.ts +314 -0
  392. package/dist/nosql/typesense/index.d.ts +82 -0
  393. package/dist/nosql/unqlite/index.d.ts +68 -0
  394. package/dist/nosql/upstash/index.d.ts +80 -0
  395. package/dist/nosql/vercel-kv/index.d.ts +82 -0
  396. package/dist/nosql/victoriametrics/index.d.ts +129 -0
  397. package/dist/nosql/virtuoso/index.d.ts +87 -0
  398. package/dist/nosql/weaviate/index.d.ts +196 -0
  399. package/dist/operators/index.d.ts +7 -0
  400. package/dist/operators.d.ts +2947 -0
  401. package/dist/operators.js +46 -1
  402. package/dist/prisma-migrate/index.d.ts +28 -0
  403. package/dist/prisma-migrate/migration-generator.d.ts +21 -0
  404. package/dist/prisma-migrate/model-generator.d.ts +12 -0
  405. package/dist/prisma-migrate/relations.d.ts +28 -0
  406. package/dist/prisma-migrate/schema-parser.d.ts +42 -0
  407. package/dist/prisma-migrate/type-mapper.d.ts +20 -0
  408. package/dist/prorm.d.ts +2093 -0
  409. package/dist/prorm.js +721 -302
  410. package/dist/query-builders/cte-builder.d.ts +104 -0
  411. package/dist/query-builders/functions/aggregate.d.ts +199 -0
  412. package/dist/query-builders/functions/conditional.d.ts +195 -0
  413. package/dist/query-builders/functions/datetime.d.ts +202 -0
  414. package/dist/query-builders/functions/fulltext.d.ts +220 -0
  415. package/dist/query-builders/functions/index.d.ts +17 -0
  416. package/dist/query-builders/functions/json.d.ts +157 -0
  417. package/dist/query-builders/functions/math.d.ts +215 -0
  418. package/dist/query-builders/functions/string.d.ts +233 -0
  419. package/dist/query-builders/functions/window.d.ts +209 -0
  420. package/dist/query-builders/include-builder.d.ts +85 -0
  421. package/dist/query-builders/index-expression-builder.d.ts +153 -0
  422. package/dist/query-builders/index.d.ts +121 -0
  423. package/dist/query-builders/index.js +10 -0
  424. package/dist/query-builders/insert-builder.d.ts +62 -0
  425. package/dist/query-builders/model-helpers.d.ts +28 -0
  426. package/dist/query-builders/order-limit-builder.d.ts +84 -0
  427. package/dist/query-builders/sql-compiler.d.ts +562 -0
  428. package/dist/query-builders/subquery-builder.d.ts +133 -0
  429. package/dist/query-builders/update-builder.d.ts +71 -0
  430. package/dist/query-builders/view-builder.d.ts +189 -0
  431. package/dist/query-builders/where-builder.d.ts +124 -0
  432. package/dist/query-interface.d.ts +407 -0
  433. package/dist/query-interface.js +84 -0
  434. package/dist/query-optimizers/batch-optimizer.d.ts +175 -0
  435. package/dist/query-optimizers/explain-plans.d.ts +187 -0
  436. package/dist/query-optimizers/index.d.ts +27 -0
  437. package/dist/query-optimizers/prepared-statement-cache.d.ts +252 -0
  438. package/dist/query-optimizers/query-hints.d.ts +201 -0
  439. package/dist/query-optimizers/query-optimizer.d.ts +162 -0
  440. package/dist/query-optimizers/slow-query-logger.d.ts +186 -0
  441. package/dist/replica-manager.d.ts +235 -0
  442. package/dist/schema/index.d.ts +7 -0
  443. package/dist/schema/migration-generator.d.ts +74 -0
  444. package/dist/schema/schema-differ.d.ts +114 -0
  445. package/dist/schema/types.d.ts +246 -0
  446. package/dist/schema-objects.d.ts +78 -0
  447. package/dist/schema-objects.js +203 -0
  448. package/dist/sql-constants.d.ts +240 -0
  449. package/dist/sqlite-advanced.d.ts +572 -0
  450. package/dist/streams/index.d.ts +5 -0
  451. package/dist/streams/transforms.d.ts +120 -0
  452. package/dist/transaction.d.ts +221 -0
  453. package/dist/types/index.d.ts +3123 -0
  454. package/dist/user-management.d.ts +141 -0
  455. package/dist/utils/date.d.ts +149 -0
  456. package/dist/utils/index.d.ts +359 -0
  457. package/dist/utils/string.d.ts +88 -0
  458. package/dist/validators/index.d.ts +7 -0
  459. package/dist/validators/validator.d.ts +306 -0
  460. package/package.json +20 -5
@@ -0,0 +1,286 @@
1
+ /**
2
+ * SessionIsolation
3
+ *
4
+ * Provides multi-tenant data isolation using AsyncLocalStorage for automatic
5
+ * tenant context propagation. Implements tenant-specific encryption keys,
6
+ * session management, and tenant-aware audit logging.
7
+ *
8
+ * Covers compliance frameworks including:
9
+ * ISO 27017, FedRAMP, CPRA, GDPR, HIPAA, SOC 2, NIST SP 800-53, and more.
10
+ *
11
+ * Usage:
12
+ * // At app startup, initialize session isolation:
13
+ * SessionIsolation.init({ sessionTimeout: 30 * 60 * 1000 });
14
+ *
15
+ * // Register tenant encryption keys:
16
+ * SessionIsolation.registerTenantKey('tenant-123', 'encryption-key-32-bytes');
17
+ *
18
+ * // In your authentication middleware:
19
+ * SessionIsolation.setTenant({
20
+ * tenantId: 'tenant-123',
21
+ * sessionId: 'session-abc',
22
+ * userId: 'user-456',
23
+ * roles: ['admin']
24
+ * });
25
+ *
26
+ * // Run operations in a specific tenant context:
27
+ * const result = SessionIsolation.runInTenant('tenant-123', () => {
28
+ * return db.User.findAll();
29
+ * });
30
+ *
31
+ * // Use the decorator on models:
32
+ * @TenantIsolation({ tenantId: 'tenantId', auditEnabled: true })
33
+ * class Document extends Model { ... }
34
+ */
35
+ export interface TenantContext {
36
+ /** The tenant identifier */
37
+ tenantId: string;
38
+ /** The current session ID */
39
+ sessionId: string;
40
+ /** The user ID */
41
+ userId?: string;
42
+ /** User roles within this tenant */
43
+ roles?: string[];
44
+ /** Session creation timestamp */
45
+ sessionCreatedAt?: Date;
46
+ /** Last activity timestamp */
47
+ lastActivityAt?: Date;
48
+ /** Custom tenant metadata */
49
+ metadata?: Record<string, any>;
50
+ }
51
+ export interface TenantKey {
52
+ /** The tenant ID this key belongs to */
53
+ tenantId: string;
54
+ /** The encryption key (32 bytes for AES-256) */
55
+ key: string;
56
+ /** Key version/rotation identifier */
57
+ keyVersion?: string;
58
+ /** When this key was registered */
59
+ createdAt: Date;
60
+ /** When this key expires (for rotation) */
61
+ expiresAt?: Date;
62
+ }
63
+ export interface SessionInfo {
64
+ /** Session identifier */
65
+ sessionId: string;
66
+ /** Tenant ID */
67
+ tenantId: string;
68
+ /** User ID */
69
+ userId: string;
70
+ /** When session was created */
71
+ createdAt: Date;
72
+ /** When session expires */
73
+ expiresAt: Date;
74
+ /** Last activity timestamp */
75
+ lastActivityAt: Date;
76
+ /** Whether session is active */
77
+ isActive: boolean;
78
+ /** IP address of session creation */
79
+ ipAddress?: string;
80
+ /** User agent of session creation */
81
+ userAgent?: string;
82
+ }
83
+ export interface SessionIsolationOptions {
84
+ /** Session timeout in milliseconds. Default: 30 minutes */
85
+ sessionTimeout?: number;
86
+ /** Maximum number of concurrent sessions per tenant. Default: unlimited */
87
+ maxSessionsPerTenant?: number;
88
+ /** Maximum sessions per user. Default: 5 */
89
+ maxSessionsPerUser?: number;
90
+ /** Enable automatic session cleanup. Default: true */
91
+ autoCleanup?: boolean;
92
+ /** Cleanup interval in milliseconds. Default: 5 minutes */
93
+ cleanupInterval?: number;
94
+ /** Enable tenant-aware audit logging. Default: true */
95
+ auditEnabled?: boolean;
96
+ /** Custom session storage (for distributed setups) */
97
+ sessionStore?: SessionStore;
98
+ /** Custom key storage (for distributed setups) */
99
+ keyStore?: KeyStore;
100
+ }
101
+ export interface TenantIsolationDecoratorOptions {
102
+ /** The field name that holds the tenant ID */
103
+ tenantId: string;
104
+ /** Enable audit logging for this model */
105
+ auditEnabled?: boolean;
106
+ /** Fields to encrypt */
107
+ encryptFields?: string[];
108
+ /** Required roles to access */
109
+ requiredRoles?: string[];
110
+ }
111
+ export interface SessionStore {
112
+ get(sessionId: string): Promise<SessionInfo | null>;
113
+ set(sessionId: string, info: SessionInfo): Promise<void>;
114
+ delete(sessionId: string): Promise<void>;
115
+ getByTenant(tenantId: string): Promise<SessionInfo[]>;
116
+ getByUser(userId: string): Promise<SessionInfo[]>;
117
+ cleanup(expiredBefore: Date): Promise<number>;
118
+ }
119
+ export interface KeyStore {
120
+ get(tenantId: string): Promise<TenantKey | null>;
121
+ set(tenantId: string, key: TenantKey): Promise<void>;
122
+ delete(tenantId: string): Promise<void>;
123
+ getAll(): Promise<TenantKey[]>;
124
+ }
125
+ export declare class SessionIsolation {
126
+ /**
127
+ * Initialize session isolation. Call once at application startup.
128
+ *
129
+ * @param opts - Configuration options
130
+ */
131
+ static init(opts?: SessionIsolationOptions): void;
132
+ /**
133
+ * Reset the session isolation system. Useful for testing.
134
+ */
135
+ static reset(): void;
136
+ /**
137
+ * Set the current tenant context for this request/operation.
138
+ *
139
+ * @param ctx - The tenant context
140
+ */
141
+ static setTenant(ctx: TenantContext): void;
142
+ /**
143
+ * Get the current tenant context.
144
+ *
145
+ * @returns The current tenant context, or undefined if not set
146
+ */
147
+ static getTenant(): TenantContext | undefined;
148
+ /**
149
+ * Clear the current tenant context.
150
+ */
151
+ static clearTenant(): void;
152
+ /**
153
+ * Run a function within a specific tenant context.
154
+ *
155
+ * @param tenantId - The tenant ID to run in
156
+ * @param fn - The function to execute
157
+ * @returns The result of the function
158
+ */
159
+ static runInTenant<T>(tenantId: string, fn: () => T): T;
160
+ /**
161
+ * Register an encryption key for a tenant.
162
+ *
163
+ * @param tenantId - The tenant ID
164
+ * @param key - The encryption key (32 bytes recommended for AES-256)
165
+ * @param keyVersion - Optional key version for rotation
166
+ */
167
+ static registerTenantKey(tenantId: string, key: string, keyVersion?: string): Promise<void>;
168
+ /**
169
+ * Get the encryption key for a tenant.
170
+ *
171
+ * @param tenantId - The tenant ID
172
+ * @returns The tenant key, or undefined if not found
173
+ */
174
+ static getTenantKey(tenantId: string): Promise<TenantKey | undefined>;
175
+ /**
176
+ * Validate a session.
177
+ *
178
+ * @param sessionId - The session ID to validate
179
+ * @returns SessionInfo if valid, null if invalid/expired
180
+ */
181
+ static validateSession(sessionId: string): Promise<SessionInfo | null>;
182
+ /**
183
+ * Manually expire a session.
184
+ *
185
+ * @param sessionId - The session ID to expire
186
+ */
187
+ static expireSession(sessionId: string): Promise<void>;
188
+ /**
189
+ * Create a new session for a tenant.
190
+ *
191
+ * @param tenantId - The tenant ID
192
+ * @param userId - The user ID
193
+ * @param options - Additional session options
194
+ * @returns The created session info
195
+ */
196
+ static createSession(tenantId: string, userId: string, options?: {
197
+ ipAddress?: string;
198
+ userAgent?: string;
199
+ customExpiresAt?: Date;
200
+ }): Promise<SessionInfo>;
201
+ /**
202
+ * Get all active sessions for a tenant.
203
+ *
204
+ * @param tenantId - The tenant ID
205
+ * @returns Array of session info
206
+ */
207
+ static getTenantSessions(tenantId: string): Promise<SessionInfo[]>;
208
+ /**
209
+ * Get all active sessions for a user.
210
+ *
211
+ * @param userId - The user ID
212
+ * @returns Array of session info
213
+ */
214
+ static getUserSessions(userId: string): Promise<SessionInfo[]>;
215
+ /**
216
+ * Clean up all expired sessions.
217
+ *
218
+ * @returns Number of sessions cleaned up
219
+ */
220
+ static cleanupExpiredSessions(): Promise<number>;
221
+ /**
222
+ * Get the current session timeout value.
223
+ *
224
+ * @returns Timeout in milliseconds
225
+ */
226
+ static getSessionTimeout(): number;
227
+ /**
228
+ * Check if session isolation is initialized.
229
+ *
230
+ * @returns True if initialized
231
+ */
232
+ static isReady(): boolean;
233
+ }
234
+ /**
235
+ * Decorator to apply tenant isolation to a model.
236
+ *
237
+ * @TenantIsolation({ tenantId: 'tenantId', auditEnabled: true })
238
+ * class Document extends Model {
239
+ * tenantId: string;
240
+ * title: string;
241
+ * }
242
+ *
243
+ * @param options - Tenant isolation options
244
+ */
245
+ export declare function TenantIsolation(options: TenantIsolationDecoratorOptions): (target: any) => void;
246
+ /**
247
+ * Get tenant isolation options from a decorated model.
248
+ *
249
+ * @param model - The model class
250
+ * @returns The decorator options, or undefined if not decorated
251
+ */
252
+ export declare function getTenantIsolationOptions(model: any): TenantIsolationDecoratorOptions | undefined;
253
+ /**
254
+ * Express/Koa middleware to automatically set tenant context from request.
255
+ *
256
+ * app.use(authMiddleware); // sets req.user
257
+ * app.use(sessionIsolationMiddleware);
258
+ *
259
+ * @param options - Middleware options
260
+ */
261
+ export declare function sessionIsolationMiddleware(req: any, res: any, next: () => void): void;
262
+ /**
263
+ * Get tenant-aware audit metadata for the current context.
264
+ * Use this to include tenant information in audit logs.
265
+ *
266
+ * @returns Audit metadata object
267
+ */
268
+ export declare function getTenantAuditMetadata(): Record<string, any>;
269
+ export declare const TenantIsolationManager: {
270
+ init: typeof SessionIsolation.init;
271
+ reset: typeof SessionIsolation.reset;
272
+ setTenant: typeof SessionIsolation.setTenant;
273
+ getTenant: typeof SessionIsolation.getTenant;
274
+ clearTenant: typeof SessionIsolation.clearTenant;
275
+ runInTenant: typeof SessionIsolation.runInTenant;
276
+ registerTenantKey: typeof SessionIsolation.registerTenantKey;
277
+ getTenantKey: typeof SessionIsolation.getTenantKey;
278
+ validateSession: typeof SessionIsolation.validateSession;
279
+ expireSession: typeof SessionIsolation.expireSession;
280
+ createSession: typeof SessionIsolation.createSession;
281
+ getTenantSessions: typeof SessionIsolation.getTenantSessions;
282
+ getUserSessions: typeof SessionIsolation.getUserSessions;
283
+ cleanupExpiredSessions: typeof SessionIsolation.cleanupExpiredSessions;
284
+ getSessionTimeout: typeof SessionIsolation.getSessionTimeout;
285
+ isReady: typeof SessionIsolation.isReady;
286
+ };
@@ -0,0 +1,51 @@
1
+ /**
2
+ * TLSEnforcer
3
+ *
4
+ * Validates and enforces TLS/SSL on database connections at startup.
5
+ * Throws a descriptive error if the connection is not encrypted,
6
+ * preventing insecure deployments from reaching production.
7
+ *
8
+ * Covers ~54 compliance frameworks including:
9
+ * GDPR Art 32, HIPAA, PCI DSS, NIST SP 800-53, FedRAMP, SOC 2,
10
+ * ISO 27001, NYDFS 23 NYCRR 500, HITRUST, NIS2, DORA, and more.
11
+ *
12
+ * Usage:
13
+ * const prorm = new Prorm({ ... });
14
+ * TLSEnforcer.enforce(prorm); // strict
15
+ * TLSEnforcer.enforce(prorm, { mode: 'warn' }); // log only
16
+ * TLSEnforcer.enforce(prorm, { allowLocal: true }); // skip for localhost
17
+ */
18
+ export type TLSMode = 'strict' | 'warn' | 'off';
19
+ export interface TLSEnforcerOptions {
20
+ /**
21
+ * 'strict' (default) — throw if TLS is not configured.
22
+ * 'warn' — log a warning but continue.
23
+ * 'off' — disable enforcement entirely.
24
+ */
25
+ mode?: TLSMode;
26
+ /**
27
+ * If true, skip enforcement for localhost / 127.0.0.1 / ::1 connections.
28
+ * Useful for local development without a dev certificate. Default: false.
29
+ */
30
+ allowLocal?: boolean;
31
+ /** Custom logger. Defaults to console.warn. */
32
+ logger?: (message: string) => void;
33
+ }
34
+ export declare class TLSEnforcer {
35
+ /**
36
+ * Enforce TLS on the given Prorm instance.
37
+ * Call immediately after constructing the Prorm instance.
38
+ *
39
+ * @param prorm - The Prorm instance to inspect
40
+ * @param options - Enforcement mode and options
41
+ */
42
+ static enforce(prorm: any, options?: TLSEnforcerOptions): void;
43
+ /**
44
+ * Return recommended SSL dialectOptions for a given dialect.
45
+ * Use this as a starting point when configuring your connection.
46
+ */
47
+ static recommendedOptions(dialect: 'postgres' | 'mysql' | 'mariadb' | 'mssql', options?: {
48
+ rejectUnauthorized?: boolean;
49
+ ca?: string;
50
+ }): Record<string, any>;
51
+ }
@@ -0,0 +1,225 @@
1
+ /**
2
+ * WORMStorage (Write Once Read Many)
3
+ *
4
+ * Immutable archival storage that prevents UPDATE and DELETE operations after commit.
5
+ * Provides tamper-evident audit trails and retention period enforcement.
6
+ *
7
+ * Covers compliance frameworks including:
8
+ * SEC 17a-4 (WORM), FINRA, SOX, DORA, MiFID II, GDPR Art 32,
9
+ * ALCOA+, 21 CFR Part 11, and financial audit requirements.
10
+ *
11
+ * Usage:
12
+ * // Enable WORM on a model:
13
+ * WORMStorage.enable(FinancialRecord, {
14
+ * retentionPeriod: { years: 7 },
15
+ * tamperEvident: true,
16
+ * });
17
+ *
18
+ * // Archive a record (moves to archived state):
19
+ * await WORMStorage.archive(record);
20
+ *
21
+ * // Freeze a record (fully immutable):
22
+ * await WORMStorage.freeze(record);
23
+ *
24
+ * // Verify integrity of a record:
25
+ * const isValid = await WORMStorage.verifyIntegrity(recordId, 'FinancialRecords');
26
+ *
27
+ * // Get tamper evidence log:
28
+ * const log = await WORMStorage.getTamperLog(recordId, 'FinancialRecords');
29
+ *
30
+ * // Enforce retention policy:
31
+ * await WORMStorage.enforceRetention(FinancialRecord, prorm);
32
+ *
33
+ * // Using the decorator:
34
+ * @WORM({ retentionPeriod: { years: 7 }, tamperEvident: true })
35
+ * class FinancialRecord extends Model { ... }
36
+ */
37
+ import { ModelStatic, Prorm } from '../prorm';
38
+ import { RetentionDuration } from './data-retention';
39
+ /** Archive state machine states */
40
+ export type ArchiveState = 'active' | 'archived' | 'frozen';
41
+ /** WORM configuration options */
42
+ export interface WORMOptions {
43
+ /** Retention period for the records */
44
+ retentionPeriod: RetentionDuration;
45
+ /** Enable tamper-evident audit trail. Default: true */
46
+ tamperEvident?: boolean;
47
+ /** Custom table name for WORM metadata. Default: 'WORMMetadata' */
48
+ tableName?: string;
49
+ /** State field name. Default: 'wormState' */
50
+ stateField?: string;
51
+ /** Timestamp field for archive. Default: 'archivedAt' */
52
+ timestampField?: string;
53
+ /** Allow soft deletes instead of hard blocks. Default: false */
54
+ allowSoftDelete?: boolean;
55
+ /** Automatically archive after creation. Default: false */
56
+ autoArchive?: boolean;
57
+ /** Auto-freeze after retention period. Default: false */
58
+ autoFreeze?: boolean;
59
+ /** Integrate with DataRetentionPolicy. Default: true */
60
+ integrateWithRetention?: boolean;
61
+ }
62
+ /** Tamper log entry for chain verification */
63
+ export interface WORMTamperLog {
64
+ /** Unique identifier */
65
+ id: number;
66
+ /** Record ID this log applies to */
67
+ recordId: string | number;
68
+ /** Table name */
69
+ tableName: string;
70
+ /** Operation performed */
71
+ operation: 'create' | 'archive' | 'freeze' | 'unfreeze' | 'tamper_detected';
72
+ /** Hash of record state at this point */
73
+ hash: string;
74
+ /** Previous hash in chain */
75
+ previousHash: string;
76
+ /** Timestamp of operation */
77
+ timestamp: Date;
78
+ /** User who performed the operation */
79
+ performedBy?: string | number;
80
+ /** Additional metadata */
81
+ metadata?: Record<string, any>;
82
+ }
83
+ /** WORM configuration stored in registry */
84
+ interface WORMConfig {
85
+ model: any;
86
+ prorm: Prorm;
87
+ options: Required<WORMOptions>;
88
+ metadataModel: ModelStatic<any>;
89
+ tamperLogModel: ModelStatic<any>;
90
+ }
91
+ /**
92
+ * Decorator to mark a model for WORM storage.
93
+ *
94
+ * @WORM({ retentionPeriod: { years: 7 }, tamperEvident: true })
95
+ * class FinancialRecord extends Model { ... }
96
+ */
97
+ export declare function WORM(options: WORMOptions): (target: Function) => void;
98
+ /**
99
+ * Get the WORM options for a model.
100
+ */
101
+ export declare function getWORMOptions(Model: any): WORMOptions | undefined;
102
+ export declare class WORMStorage {
103
+ /**
104
+ * Enable WORM storage on a model.
105
+ * Creates necessary metadata tables and registers hooks.
106
+ *
107
+ * @param model - The model class to protect
108
+ * @param prorm - The Prorm instance
109
+ * @param options - WORM configuration options
110
+ */
111
+ static enable(model: any, prorm: Prorm, options: WORMOptions): void;
112
+ /**
113
+ * Apply hooks to a model for WORM protection.
114
+ * Called automatically by enable().
115
+ *
116
+ * @param model - The model class
117
+ * @param config - The WORM configuration
118
+ */
119
+ static applyHooks(model: any, config?: WORMConfig): void;
120
+ /**
121
+ * Archive a record (moves to archived state).
122
+ * Archived records are read-only but can still be queried.
123
+ *
124
+ * @param record - The record instance to archive
125
+ */
126
+ static archive(record: any): Promise<void>;
127
+ /**
128
+ * Freeze a record (fully immutable).
129
+ * Frozen records cannot be modified or deleted.
130
+ *
131
+ * @param record - The record instance to freeze
132
+ */
133
+ static freeze(record: any): Promise<void>;
134
+ /**
135
+ * Get the tamper evidence log for a record.
136
+ *
137
+ * @param recordId - The record ID
138
+ * @param tableName - The table name
139
+ */
140
+ static getTamperLog(recordId: string | number, tableName: string): Promise<WORMTamperLog[]>;
141
+ /**
142
+ * Verify the integrity of a record's tamper chain.
143
+ *
144
+ * @param recordId - The record ID
145
+ * @param tableName - The table name
146
+ * @returns True if chain is valid, false if tampering detected
147
+ */
148
+ static verifyIntegrity(recordId: string | number, tableName: string): Promise<boolean>;
149
+ /**
150
+ * Check if WORM is enabled on a model.
151
+ *
152
+ * @param model - The model class
153
+ */
154
+ static isWORMEnabled(model: any): boolean;
155
+ /**
156
+ * Get the WORM configuration for a model.
157
+ *
158
+ * @param model - The model class
159
+ */
160
+ static getConfig(model: any): WORMOptions | undefined;
161
+ /**
162
+ * Enforce retention policy on a model.
163
+ * This will delete or anonymize records that have exceeded their retention period.
164
+ *
165
+ * @param model - The model class
166
+ * @param prorm - The Prorm instance
167
+ */
168
+ static enforceRetention(model: any, prorm: any): Promise<{
169
+ affected: number;
170
+ mode: string;
171
+ }>;
172
+ /**
173
+ * Get the archive state of a record.
174
+ *
175
+ * @param recordId - The record ID
176
+ * @param tableName - The table name
177
+ */
178
+ static getState(recordId: string | number, tableName: string): Promise<ArchiveState | null>;
179
+ /**
180
+ * Disable WORM storage for a model.
181
+ *
182
+ * @param model - The model class
183
+ */
184
+ static disable(model: any): void;
185
+ /**
186
+ * Get the WORM metadata model for a model.
187
+ *
188
+ * @param model - The model class
189
+ */
190
+ static getMetadataModel(model: any): ModelStatic<any> | undefined;
191
+ /**
192
+ * Get the tamper log model for a model.
193
+ *
194
+ * @param model - The model class
195
+ */
196
+ static getTamperLogModel(model: any): ModelStatic<any> | undefined;
197
+ /**
198
+ * List all models with WORM storage enabled.
199
+ */
200
+ static listWORMModels(): Array<{
201
+ modelName: string;
202
+ options: WORMOptions;
203
+ }>;
204
+ }
205
+ /**
206
+ * Apply WORM hooks to a model (exported for convenience).
207
+ *
208
+ * @param model - The model class
209
+ */
210
+ export declare function applyWORMHooks(model: any): void;
211
+ /**
212
+ * Check if a specific record is frozen.
213
+ *
214
+ * @param recordId - The record ID
215
+ * @param tableName - The table name
216
+ */
217
+ export declare function isFrozen(recordId: string | number, tableName: string): Promise<boolean>;
218
+ /**
219
+ * Check if a specific record is archived.
220
+ *
221
+ * @param recordId - The record ID
222
+ * @param tableName - The table name
223
+ */
224
+ export declare function isArchived(recordId: string | number, tableName: string): Promise<boolean>;
225
+ export {};
@@ -0,0 +1,130 @@
1
+ /**
2
+ * Connection Manager for managing multiple named database connections
3
+ * Supports cross-database queries and SQLite ATTACH DATABASE
4
+ */
5
+ import { Prorm, PrormOptions } from './prorm';
6
+ /**
7
+ * Named connection options for adding a new database connection
8
+ */
9
+ export interface NamedConnectionOptions {
10
+ /** Unique name to identify this connection */
11
+ name: string;
12
+ /** Prorm options for the connection */
13
+ options: PrormOptions;
14
+ }
15
+ /**
16
+ * Connection Manager class for managing multiple database connections
17
+ * Allows switching between different databases in the same application
18
+ */
19
+ export declare class ConnectionManager {
20
+ private connections;
21
+ private _defaultConnection;
22
+ /**
23
+ * Create a new ConnectionManager instance
24
+ */
25
+ constructor();
26
+ /**
27
+ * Add a new named database connection
28
+ * @param name - Unique name to identify this connection
29
+ * @param options - Prorm options for the connection
30
+ * @returns The Prorm instance for the new connection
31
+ * @example
32
+ * // Add a secondary SQLite database
33
+ * const manager = new ConnectionManager();
34
+ * await manager.addConnection('analytics', {
35
+ * dialect: 'sqlite',
36
+ * storage: './analytics.db'
37
+ * });
38
+ */
39
+ addConnection(name: string, options: PrormOptions): Promise<Prorm>;
40
+ /**
41
+ * Get a connection by name
42
+ * @param name - The connection name
43
+ * @returns The Prorm instance or undefined if not found
44
+ * @example
45
+ * const analyticsDb = manager.getConnection('analytics');
46
+ */
47
+ getConnection(name: string): Prorm | undefined;
48
+ /**
49
+ * Check if a connection exists
50
+ * @param name - The connection name to check
51
+ * @returns True if the connection exists
52
+ * @example
53
+ * if (manager.hasConnection('analytics')) {
54
+ * // Use analytics connection
55
+ * }
56
+ */
57
+ hasConnection(name: string): boolean;
58
+ /**
59
+ * Remove a connection by name
60
+ * @param name - The connection name to remove
61
+ * @returns True if the connection was removed
62
+ * @example
63
+ * await manager.removeConnection('analytics');
64
+ */
65
+ removeConnection(name: string): Promise<boolean>;
66
+ /**
67
+ * Get all connection names
68
+ * @returns Array of connection names
69
+ * @example
70
+ * const names = manager.getConnectionNames();
71
+ * // ['main', 'analytics', 'logs']
72
+ */
73
+ getConnectionNames(): string[];
74
+ /**
75
+ * Get or set the default connection name
76
+ */
77
+ get defaultConnection(): string | null;
78
+ set defaultConnection(name: string | null);
79
+ /**
80
+ * Get all connections
81
+ * @returns Map of connection names to Prorm instances
82
+ */
83
+ get connectionsMap(): Map<string, Prorm>;
84
+ /**
85
+ * Attach a SQLite database using ATTACH DATABASE
86
+ * This allows querying across multiple SQLite files
87
+ * @param mainConnectionName - The name of the main connection to attach to
88
+ * @param alias - The alias to use for the attached database
89
+ * @param path - Path to the SQLite file to attach
90
+ * @example
91
+ * // Attach analytics database to main connection
92
+ * await manager.attachDatabase('main', 'analytics', './analytics.db');
93
+ * // Now you can query: SELECT * FROM analytics.users
94
+ */
95
+ attachDatabase(mainConnectionName: string, alias: string, path: string): Promise<void>;
96
+ /**
97
+ * Detach a SQLite database
98
+ * @param mainConnectionName - The name of the main connection
99
+ * @param alias - The alias of the database to detach
100
+ * @example
101
+ * await manager.detachDatabase('main', 'analytics');
102
+ */
103
+ detachDatabase(mainConnectionName: string, alias: string): Promise<void>;
104
+ /**
105
+ * Close all connections
106
+ * @example
107
+ * await manager.closeAll();
108
+ */
109
+ closeAll(): Promise<void>;
110
+ /**
111
+ * Execute a raw query on a specific connection
112
+ * @param connectionName - The name of the connection to use
113
+ * @param sql - The SQL query to execute
114
+ * @param options - Optional query options
115
+ * @returns Query results
116
+ * @example
117
+ * const results = await manager.query('main', 'SELECT * FROM users');
118
+ */
119
+ query(connectionName: string, sql: string, options?: {
120
+ raw?: boolean;
121
+ replacements?: Record<string, any>;
122
+ bind?: Record<string, any>;
123
+ }): Promise<any>;
124
+ }
125
+ /**
126
+ * Create a new ConnectionManager instance
127
+ * @example
128
+ * const manager = createConnectionManager();
129
+ */
130
+ export declare function createConnectionManager(): ConnectionManager;