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,279 @@
1
+ /**
2
+ * BackupVerification
3
+ *
4
+ * Automated backup integrity verification and test restore capabilities.
5
+ * Supports scheduled verification for compliance with DORA, NERC CIP,
6
+ * NIST CSF, and other regulatory frameworks requiring backup validation.
7
+ *
8
+ * Usage:
9
+ * // Configure backup sources
10
+ * BackupVerification.configure({
11
+ * primary: { type: 's3', bucket: 'backups', path: 'primary/' },
12
+ * secondary: { type: 'filesystem', path: '/backup/secondary' },
13
+ * });
14
+ *
15
+ * // Verify a backup
16
+ * const result = await BackupVerification.verifyBackup('backup-2024-01-15');
17
+ *
18
+ * // Test restore to staging
19
+ * const restoreResult = await BackupVerification.testRestore('backup-2024-01-15');
20
+ *
21
+ * // Schedule periodic verification
22
+ * BackupVerification.scheduleVerification('backup-2024-01-15', {
23
+ * frequency: 'weekly',
24
+ * dayOfWeek: 'sunday',
25
+ * time: '02:00',
26
+ * });
27
+ *
28
+ * // Get verification history
29
+ * const history = await BackupVerification.getVerificationHistory('backup-2024-01-15');
30
+ */
31
+ import { Prorm } from '../prorm';
32
+ export interface BackupSource {
33
+ /** Storage type */
34
+ type: 's3' | 'filesystem' | 'azure' | 'gcp' | 'nfs';
35
+ /** Storage location - bucket name or path */
36
+ bucket?: string;
37
+ /** Path prefix or directory path */
38
+ path: string;
39
+ /** Optional credentials */
40
+ credentials?: {
41
+ accessKeyId?: string;
42
+ secretAccessKey?: string;
43
+ region?: string;
44
+ };
45
+ /** Encryption settings */
46
+ encryption?: {
47
+ enabled: boolean;
48
+ algorithm?: 'AES-256' | 'AES-256-GCM';
49
+ keyId?: string;
50
+ };
51
+ /**
52
+ * Optional callback that computes the real checksum (e.g. sha256 hex
53
+ * digest) of the backup content for `backupId`. Required for non-
54
+ * filesystem source types (s3/azure/gcp/nfs) if you want real checksum
55
+ * verification, since this library does not bundle any cloud SDKs.
56
+ * Without it, checksum verification for those types is inconclusive
57
+ * (reported as a 'warning', never fabricated as a pass).
58
+ */
59
+ computeChecksum?: (backupId: string) => Promise<string>;
60
+ /**
61
+ * Optional callback that returns true if the backup content for
62
+ * `backupId` actually exists and is readable/non-corrupted at the
63
+ * source. Required for non-filesystem source types to get a real
64
+ * integrity check; otherwise integrity verification is inconclusive.
65
+ */
66
+ checkReadable?: (backupId: string) => Promise<boolean>;
67
+ }
68
+ export interface BackupConfig {
69
+ /** Primary backup source */
70
+ primary: BackupSource;
71
+ /** Secondary/backup backup source (for redundancy check) */
72
+ secondary?: BackupSource;
73
+ /** Staging environment for test restores */
74
+ staging?: {
75
+ database: string;
76
+ host: string;
77
+ port?: number;
78
+ username: string;
79
+ password: string;
80
+ };
81
+ /** Verification settings */
82
+ verification?: {
83
+ /** Verify checksum integrity (default: true) */
84
+ verifyChecksum?: boolean;
85
+ /** Verify encryption (default: true) */
86
+ verifyEncryption?: boolean;
87
+ /** Verify backup is not corrupted (default: true) */
88
+ verifyIntegrity?: boolean;
89
+ /** Minimum backup age to verify (default: 0) */
90
+ minAgeHours?: number;
91
+ };
92
+ /** Notification settings */
93
+ notifications?: {
94
+ onSuccess?: boolean;
95
+ onFailure?: boolean;
96
+ emailRecipients?: string[];
97
+ webhookUrl?: string;
98
+ };
99
+ }
100
+ export interface BackupMetadata {
101
+ backupId: string;
102
+ source: string;
103
+ timestamp: Date;
104
+ size: number;
105
+ checksum?: string;
106
+ encrypted: boolean;
107
+ compression?: string;
108
+ retentionDays?: number;
109
+ /**
110
+ * Optional snapshot of database state captured at backup time (e.g. via
111
+ * BackupVerification.captureSnapshot()). Used by testRestore() to
112
+ * compare row counts against current live state, since this library
113
+ * cannot perform a true restore-and-diff without a real backup/restore
114
+ * engine or a second staging database connection.
115
+ */
116
+ snapshot?: {
117
+ rowCounts: Record<string, number>;
118
+ capturedAt: Date;
119
+ };
120
+ }
121
+ export interface VerificationResult {
122
+ /** Unique verification ID */
123
+ verificationId: string;
124
+ /** The backup ID being verified */
125
+ backupId: string;
126
+ /** Verification status */
127
+ status: 'passed' | 'failed' | 'warning';
128
+ /** Timestamp of verification */
129
+ timestamp: Date;
130
+ /** Checksum verification result */
131
+ checksumValid?: boolean;
132
+ /** Encryption verification result */
133
+ encryptionValid?: boolean;
134
+ /** Integrity check result */
135
+ integrityValid?: boolean;
136
+ /** Test restore result */
137
+ restoreResult?: {
138
+ success: boolean;
139
+ rowsRestored?: number;
140
+ duration?: number;
141
+ errorMessage?: string;
142
+ /**
143
+ * Clarifying note about what this restore check does/does not
144
+ * guarantee (e.g. "reachability-only, no snapshot to compare"). May be
145
+ * present alongside success: true.
146
+ */
147
+ note?: string;
148
+ };
149
+ /** Detailed messages */
150
+ messages: string[];
151
+ /** Compliance frameworks this verification satisfies */
152
+ complianceFrameworks: string[];
153
+ /** Duration of verification in milliseconds */
154
+ durationMs: number;
155
+ }
156
+ export interface VerificationSchedule {
157
+ /** Frequency of verification */
158
+ frequency: 'daily' | 'weekly' | 'monthly';
159
+ /** Day of week for weekly (0=sunday, 6=saturday) */
160
+ dayOfWeek?: number;
161
+ /** Day of month for monthly (1-31) */
162
+ dayOfMonth?: number;
163
+ /** Time in HH:MM format (24-hour) */
164
+ time: string;
165
+ /** Next scheduled run */
166
+ nextRun?: Date;
167
+ /** Whether the schedule is active */
168
+ active: boolean;
169
+ }
170
+ export interface VerificationHistoryEntry {
171
+ verificationId: string;
172
+ backupId: string;
173
+ status: 'passed' | 'failed' | 'warning';
174
+ timestamp: Date;
175
+ durationMs: number;
176
+ checksumValid?: boolean;
177
+ integrityValid?: boolean;
178
+ restoreSuccess?: boolean;
179
+ }
180
+ export declare class BackupVerification {
181
+ /**
182
+ * Configure backup sources and verification settings.
183
+ *
184
+ * @param config - Backup configuration including primary/secondary sources,
185
+ * staging environment, and verification options
186
+ */
187
+ static configure(config: BackupConfig): void;
188
+ /**
189
+ * Register a backup in the system for tracking.
190
+ *
191
+ * @param metadata - Backup metadata including ID, source, timestamp, etc.
192
+ * @param source - Source identifier ('primary' or 'secondary')
193
+ */
194
+ static registerBackup(metadata: BackupMetadata, source?: string): void;
195
+ /**
196
+ * Capture a real row-count snapshot of a live database, intended to be
197
+ * taken at (or immediately before/after) backup time and stored on
198
+ * `BackupMetadata.snapshot`. This is the "strongest achievable"
199
+ * verification baseline this library can produce without a real
200
+ * restore/import engine: it lets testRestore() report what the backup
201
+ * *should* contain, even though it cannot prove the backup file itself
202
+ * restores to that state.
203
+ *
204
+ * @param prorm - A connected Prorm instance to query
205
+ * @param tables - Table names to count rows for
206
+ * @returns A snapshot with real row counts per table
207
+ */
208
+ static captureSnapshot(prorm: Prorm, tables: string[]): Promise<NonNullable<BackupMetadata['snapshot']>>;
209
+ /**
210
+ * Verify the integrity of a backup without performing a full restore.
211
+ *
212
+ * @param backupId - The backup ID to verify
213
+ * @returns Verification result with status and details
214
+ */
215
+ static verifyBackup(backupId: string): Promise<VerificationResult>;
216
+ /**
217
+ * Test restore a backup to a staging environment.
218
+ * This performs an actual restore to verify backup is valid.
219
+ *
220
+ * @param backupId - The backup ID to test restore
221
+ * @returns Verification result including restore details
222
+ */
223
+ static testRestore(backupId: string): Promise<VerificationResult>;
224
+ /**
225
+ * Schedule periodic verification for a backup.
226
+ *
227
+ * @param backupId - The backup ID to schedule verification for
228
+ * @param schedule - Verification schedule configuration
229
+ */
230
+ static scheduleVerification(backupId: string, schedule: VerificationSchedule): void;
231
+ /**
232
+ * Remove a scheduled verification.
233
+ *
234
+ * @param backupId - The backup ID to remove schedule for
235
+ */
236
+ static removeScheduledVerification(backupId: string): boolean;
237
+ /**
238
+ * Get all scheduled verifications.
239
+ *
240
+ * @returns Array of scheduled verification entries
241
+ */
242
+ static getScheduledVerifications(): Array<{
243
+ backupId: string;
244
+ schedule: VerificationSchedule;
245
+ nextRun: Date;
246
+ }>;
247
+ /**
248
+ * Get verification history for a backup.
249
+ *
250
+ * @param backupId - The backup ID to get history for
251
+ * @returns Array of verification history entries
252
+ */
253
+ static getVerificationHistory(backupId: string): VerificationHistoryEntry[];
254
+ /**
255
+ * Get all backups registered in the system.
256
+ *
257
+ * @returns Array of backup entries
258
+ */
259
+ static listBackups(): Array<{
260
+ backupId: string;
261
+ metadata: BackupMetadata;
262
+ source: string;
263
+ }>;
264
+ /**
265
+ * Get the current configuration.
266
+ *
267
+ * @returns Current backup configuration
268
+ */
269
+ static getConfiguration(): {
270
+ sources: Map<string, BackupSource>;
271
+ staging: BackupConfig['staging'] | undefined;
272
+ verification: BackupConfig['verification'] | undefined;
273
+ notifications: BackupConfig['notifications'] | undefined;
274
+ };
275
+ /**
276
+ * Clear all configuration (useful for testing).
277
+ */
278
+ static clear(): void;
279
+ }
@@ -0,0 +1,197 @@
1
+ /**
2
+ * BreachDetector
3
+ *
4
+ * A comprehensive breach detection and monitoring system for identifying
5
+ * unusual access patterns, mass exports, failed authentication attempts,
6
+ * and suspicious query patterns.
7
+ *
8
+ * Required for compliance with:
9
+ * - NIST CSF (PR.AC-1, PR.AC-2, PR.DS-5)
10
+ * - CIS Controls (CIS 3.4, 8.2, 8.5)
11
+ * - MITRE ATT&CK (TA0001, TA0009, TA0010)
12
+ *
13
+ * Usage:
14
+ * // Initialize breach detection
15
+ * const detector = BreachDetector.create(prorm, {
16
+ * alertCallback: (alert) => securityTeam.notify(alert),
17
+ * massExportThreshold: 1000,
18
+ * rateLimitWindow: 60000,
19
+ * rateLimitMax: 100,
20
+ * });
21
+ *
22
+ * // Start monitoring
23
+ * await detector.start();
24
+ *
25
+ * // Query alerts and stats
26
+ * const alerts = detector.getAlerts();
27
+ * const stats = detector.getStats();
28
+ */
29
+ import { Prorm } from '../prorm';
30
+ /** Alert severity levels */
31
+ export type BreachSeverity = 'low' | 'medium' | 'high' | 'critical';
32
+ /** Categories of breaches detected */
33
+ export type BreachCategory = 'mass_export' | 'failed_auth' | 'unusual_access_time' | 'rate_limit_exceeded' | 'suspicious_query_pattern' | 'bulk_download';
34
+ /** A breach alert */
35
+ export interface BreachAlert {
36
+ id: string;
37
+ timestamp: Date;
38
+ severity: BreachSeverity;
39
+ category: BreachCategory;
40
+ message: string;
41
+ details: Record<string, unknown>;
42
+ userId?: string;
43
+ ipAddress?: string;
44
+ query?: string;
45
+ }
46
+ /** Configuration options for BreachDetector */
47
+ export interface BreachDetectorOptions {
48
+ /** Callback for real-time alerts to security team */
49
+ alertCallback?: (alert: BreachAlert) => void;
50
+ /** Maximum records that can be exported in a single query before alerting */
51
+ massExportThreshold?: number;
52
+ /** Time window for rate limiting in milliseconds */
53
+ rateLimitWindow?: number;
54
+ /** Maximum queries allowed per rate limit window */
55
+ rateLimitMax?: number;
56
+ /** Number of failed auth attempts before alerting */
57
+ failedAuthThreshold?: number;
58
+ /** Time window for failed auth tracking in milliseconds */
59
+ failedAuthWindow?: number;
60
+ /** Enable detection of unusual access times */
61
+ detectUnusualAccessTime?: boolean;
62
+ /** Allowed hours (24h format) for normal access */
63
+ allowedHours?: number[];
64
+ /** Enable suspicious query pattern detection */
65
+ detectSuspiciousPatterns?: boolean;
66
+ /** Maximum alerts to keep in memory */
67
+ maxAlerts?: number;
68
+ /** Minimum severity to trigger alert callback */
69
+ minAlertSeverity?: BreachSeverity;
70
+ /** Custom suspicious query patterns (regex) */
71
+ customPatterns?: RegExp[];
72
+ /** Track queries by user ID */
73
+ trackByUser?: boolean;
74
+ /** Track queries by IP address */
75
+ trackByIP?: boolean;
76
+ }
77
+ export declare class BreachDetector {
78
+ private prorm;
79
+ private options;
80
+ private alerts;
81
+ private isRunning;
82
+ private originalQuery;
83
+ private queryTimestamps;
84
+ private failedAuthAttempts;
85
+ private accessPatterns;
86
+ private startTime;
87
+ private stats;
88
+ private constructor();
89
+ /**
90
+ * Create a new BreachDetector instance
91
+ */
92
+ static create(prorm: Prorm, options?: BreachDetectorOptions): BreachDetector;
93
+ /**
94
+ * Start monitoring queries for breaches
95
+ */
96
+ start(): Promise<void>;
97
+ /**
98
+ * Stop monitoring
99
+ */
100
+ stop(): void;
101
+ /**
102
+ * Setup hooks for bulk operation monitoring
103
+ */
104
+ private setupBulkOperationHooks;
105
+ /**
106
+ * Analyze a query for breach patterns
107
+ */
108
+ private analyzeQuery;
109
+ /**
110
+ * Analyze errors for security events
111
+ */
112
+ private analyzeError;
113
+ /**
114
+ * Check for bulk operations
115
+ */
116
+ private checkBulkOperation;
117
+ /**
118
+ * Check rate limiting
119
+ */
120
+ private checkRateLimit;
121
+ /**
122
+ * Check for unusual access time
123
+ */
124
+ private checkUnusualAccessTime;
125
+ /**
126
+ * Check for suspicious query patterns
127
+ */
128
+ private checkSuspiciousPatterns;
129
+ /**
130
+ * Track failed authentication attempts
131
+ */
132
+ private trackFailedAuth;
133
+ /**
134
+ * Get identifier key for rate limiting
135
+ */
136
+ private getIdentifierKey;
137
+ /**
138
+ * Add an alert
139
+ */
140
+ private addAlert;
141
+ /**
142
+ * Check if alert severity meets callback threshold
143
+ */
144
+ private shouldTriggerCallback;
145
+ /**
146
+ * Get all breach alerts
147
+ */
148
+ getAlerts(options?: {
149
+ severity?: BreachSeverity;
150
+ category?: BreachCategory;
151
+ limit?: number;
152
+ }): BreachAlert[];
153
+ /**
154
+ * Get detection statistics
155
+ */
156
+ getStats(): {
157
+ uptime: number;
158
+ totalQueries: number;
159
+ totalAlerts: number;
160
+ massExportAlerts: number;
161
+ failedAuthAlerts: number;
162
+ rateLimitAlerts: number;
163
+ unusualTimeAlerts: number;
164
+ suspiciousPatternAlerts: number;
165
+ bulkDownloadAlerts: number;
166
+ alertsBySeverity: Record<BreachSeverity, number>;
167
+ alertsByCategory: Record<BreachCategory, number>;
168
+ };
169
+ /**
170
+ * Clear all alerts
171
+ */
172
+ clearAlerts(): void;
173
+ /**
174
+ * Check if monitoring is active
175
+ */
176
+ isActive(): boolean;
177
+ /**
178
+ * Manually trigger an alert (for custom checks)
179
+ */
180
+ alert(options: Omit<BreachAlert, 'id' | 'timestamp'>): void;
181
+ /**
182
+ * Record a query execution (for external tracking)
183
+ */
184
+ recordQuery(userId?: string, ipAddress?: string, recordsAffected?: number): void;
185
+ /**
186
+ * Record authentication failure
187
+ */
188
+ recordAuthFailure(userId?: string, ipAddress?: string): void;
189
+ }
190
+ /**
191
+ * Get the global BreachDetector instance
192
+ */
193
+ export declare function getGlobalBreachDetector(): BreachDetector | null;
194
+ /**
195
+ * Initialize the global BreachDetector instance
196
+ */
197
+ export declare function initBreachDetector(prorm: Prorm, options?: BreachDetectorOptions): BreachDetector;
@@ -0,0 +1,107 @@
1
+ /**
2
+ * ConsentRecord
3
+ *
4
+ * A ready-made model and service for storing, managing, and querying
5
+ * data subject consent — including purpose, legal basis, version, and withdrawal.
6
+ *
7
+ * Covers ~62 compliance frameworks including:
8
+ * GDPR Art 6/7, CCPA, CPRA, LGPD, APPI, ePrivacy Directive, CASL,
9
+ * PDPA (Thailand, Singapore, Philippines, Malaysia, Indonesia, Vietnam),
10
+ * DPDP India, PIPA South Korea, PIPL, KVKK, PoPI, and more.
11
+ *
12
+ * Usage:
13
+ * // Initialize once (creates the consent_records table):
14
+ * await ConsentRecord.initialize(prorm);
15
+ *
16
+ * // Record consent:
17
+ * await ConsentRecord.grant({
18
+ * subjectId: 'user-123',
19
+ * purpose: 'marketing_emails',
20
+ * legalBasis: 'consent',
21
+ * version: '2.1',
22
+ * ipAddress: req.ip,
23
+ * });
24
+ *
25
+ * // Check active consent:
26
+ * const active = await ConsentRecord.isActive('user-123', 'marketing_emails');
27
+ *
28
+ * // Withdraw consent (GDPR Art 7(3)):
29
+ * await ConsentRecord.withdraw('user-123', 'marketing_emails');
30
+ *
31
+ * // Get full consent history for a subject:
32
+ * const history = await ConsentRecord.getHistory('user-123');
33
+ */
34
+ export type LegalBasis = 'consent' | 'contract' | 'legal_obligation' | 'vital_interests' | 'public_task' | 'legitimate_interests';
35
+ /**
36
+ * Companion enum for {@link LegalBasis}. Provided for callers who prefer
37
+ * enum-based ergonomics (autocomplete, refactor-safety) over raw string
38
+ * literals. The underlying values are identical to the `LegalBasis`
39
+ * string literals, so either form may be used interchangeably.
40
+ */
41
+ export declare enum LegalBasisEnum {
42
+ Consent = "consent",
43
+ Contract = "contract",
44
+ LegalObligation = "legal_obligation",
45
+ VitalInterests = "vital_interests",
46
+ PublicTask = "public_task",
47
+ LegitimateInterests = "legitimate_interests"
48
+ }
49
+ export interface ConsentGrantOptions {
50
+ /** Unique identifier of the data subject */
51
+ subjectId: string;
52
+ /** Purpose of the processing (e.g. 'marketing_emails', 'analytics') */
53
+ purpose: string;
54
+ /** GDPR/equivalent legal basis for processing */
55
+ legalBasis?: LegalBasis | LegalBasisEnum;
56
+ /** Version of the privacy notice / consent form shown */
57
+ version?: string;
58
+ /** IP address of the consenting user */
59
+ ipAddress?: string;
60
+ /** Additional metadata (e.g. consent UI element ID, A/B test variant) */
61
+ metadata?: Record<string, any>;
62
+ }
63
+ export interface ConsentWithdrawOptions {
64
+ /** Reason for withdrawal, if provided by the user */
65
+ reason?: string;
66
+ }
67
+ export declare class ConsentRecord {
68
+ /**
69
+ * Initialize the ConsentRecord model and sync the table.
70
+ * Call once at application startup.
71
+ *
72
+ * @param prorm - The Prorm instance
73
+ * @param tableName - Override the default table name 'consent_records'
74
+ */
75
+ static initialize(prorm: any, tableName?: string): Promise<void>;
76
+ private static requireModel;
77
+ /**
78
+ * Record a new consent grant.
79
+ * If an active consent already exists for the same subject + purpose,
80
+ * a new record is created (audit trail is preserved).
81
+ */
82
+ static grant(options: ConsentGrantOptions): Promise<any>;
83
+ /**
84
+ * Withdraw consent for a subject + purpose.
85
+ * Sets withdrawnAt on the most recent active consent record.
86
+ *
87
+ * @returns true if a consent record was found and updated, false if none existed.
88
+ */
89
+ static withdraw(subjectId: string, purpose: string, options?: ConsentWithdrawOptions): Promise<boolean>;
90
+ /**
91
+ * Check whether an active (non-withdrawn) consent exists.
92
+ */
93
+ static isActive(subjectId: string, purpose: string): Promise<boolean>;
94
+ /**
95
+ * Get the full consent history for a subject (all purposes).
96
+ */
97
+ static getHistory(subjectId: string): Promise<any[]>;
98
+ /**
99
+ * Get active consents for a subject grouped by purpose.
100
+ */
101
+ static getActiveConsents(subjectId: string): Promise<any[]>;
102
+ /**
103
+ * List all subjects who have active consent for a specific purpose.
104
+ * Useful for marketing campaign validation.
105
+ */
106
+ static getConsented(purpose: string): Promise<string[]>;
107
+ }