@c15t/backend 0.0.1-rc.10

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 (521) hide show
  1. package/.turbo/turbo-build.log +11 -0
  2. package/.turbo/turbo-check-types.log +5 -0
  3. package/.turbo/turbo-fmt.log +7 -0
  4. package/.turbo/turbo-lint.log +6 -0
  5. package/.turbo/turbo-test.log +26 -0
  6. package/README-next.md +223 -0
  7. package/README.md +164 -0
  8. package/dist/api/call.d.ts +176 -0
  9. package/dist/api/call.d.ts.map +1 -0
  10. package/dist/api/index.d.ts +935 -0
  11. package/dist/api/index.d.ts.map +1 -0
  12. package/dist/api/middlewares/index.d.ts +39 -0
  13. package/dist/api/middlewares/index.d.ts.map +1 -0
  14. package/dist/api/middlewares/origin-check.d.ts +82 -0
  15. package/dist/api/middlewares/origin-check.d.ts.map +1 -0
  16. package/dist/api/middlewares/validate-context.d.ts +38 -0
  17. package/dist/api/middlewares/validate-context.d.ts.map +1 -0
  18. package/dist/api/routes/__tests__/consent.test.d.ts +2 -0
  19. package/dist/api/routes/__tests__/consent.test.d.ts.map +1 -0
  20. package/dist/api/routes/__tests__/status.test.d.ts +2 -0
  21. package/dist/api/routes/__tests__/status.test.d.ts.map +1 -0
  22. package/dist/api/routes/error.d.ts +57 -0
  23. package/dist/api/routes/error.d.ts.map +1 -0
  24. package/dist/api/routes/generate-consent-receipt.d.ts +130 -0
  25. package/dist/api/routes/generate-consent-receipt.d.ts.map +1 -0
  26. package/dist/api/routes/get-consent-history.d.ts +133 -0
  27. package/dist/api/routes/get-consent-history.d.ts.map +1 -0
  28. package/dist/api/routes/get-consent-policy.d.ts +164 -0
  29. package/dist/api/routes/get-consent-policy.d.ts.map +1 -0
  30. package/dist/api/routes/get-consent.d.ts +148 -0
  31. package/dist/api/routes/get-consent.d.ts.map +1 -0
  32. package/dist/api/routes/index.d.ts +339 -0
  33. package/dist/api/routes/index.d.ts.map +1 -0
  34. package/dist/api/routes/ok.d.ts +87 -0
  35. package/dist/api/routes/ok.d.ts.map +1 -0
  36. package/dist/api/routes/set-consent.d.ts +245 -0
  37. package/dist/api/routes/set-consent.d.ts.map +1 -0
  38. package/dist/api/routes/show-consent-banner.d.ts +127 -0
  39. package/dist/api/routes/show-consent-banner.d.ts.map +1 -0
  40. package/dist/api/routes/status.d.ts +61 -0
  41. package/dist/api/routes/status.d.ts.map +1 -0
  42. package/dist/api/routes/verify-consent.d.ts +179 -0
  43. package/dist/api/routes/verify-consent.d.ts.map +1 -0
  44. package/dist/api/routes/withdraw-consent.d.ts +194 -0
  45. package/dist/api/routes/withdraw-consent.d.ts.map +1 -0
  46. package/dist/api/to-endpoints.d.ts +35 -0
  47. package/dist/api/to-endpoints.d.ts.map +1 -0
  48. package/dist/client/index.cjs +139 -0
  49. package/dist/client/index.d.ts +203 -0
  50. package/dist/client/index.d.ts.map +1 -0
  51. package/dist/client/index.js +106 -0
  52. package/dist/client/types.d.ts +431 -0
  53. package/dist/client/types.d.ts.map +1 -0
  54. package/dist/core.d.ts +124 -0
  55. package/dist/core.d.ts.map +1 -0
  56. package/dist/core.test.d.ts +2 -0
  57. package/dist/core.test.d.ts.map +1 -0
  58. package/dist/db/adapters/drizzle-adapter/drizzle-adapter.d.ts +122 -0
  59. package/dist/db/adapters/drizzle-adapter/drizzle-adapter.d.ts.map +1 -0
  60. package/dist/db/adapters/drizzle-adapter/index.d.ts +2 -0
  61. package/dist/db/adapters/drizzle-adapter/index.d.ts.map +1 -0
  62. package/dist/db/adapters/drizzle.cjs +1531 -0
  63. package/dist/db/adapters/drizzle.js +1489 -0
  64. package/dist/db/adapters/kysely-adapter/dialect.d.ts +72 -0
  65. package/dist/db/adapters/kysely-adapter/dialect.d.ts.map +1 -0
  66. package/dist/db/adapters/kysely-adapter/index.d.ts +4 -0
  67. package/dist/db/adapters/kysely-adapter/index.d.ts.map +1 -0
  68. package/dist/db/adapters/kysely-adapter/kysely-adapter.d.ts +98 -0
  69. package/dist/db/adapters/kysely-adapter/kysely-adapter.d.ts.map +1 -0
  70. package/dist/db/adapters/kysely-adapter/types.d.ts +281 -0
  71. package/dist/db/adapters/kysely-adapter/types.d.ts.map +1 -0
  72. package/dist/db/adapters/kysely.cjs +1551 -0
  73. package/dist/db/adapters/kysely.js +1508 -0
  74. package/dist/db/adapters/memory-adapter/index.d.ts +2 -0
  75. package/dist/db/adapters/memory-adapter/index.d.ts.map +1 -0
  76. package/dist/db/adapters/memory-adapter/memory-adapter.d.ts +56 -0
  77. package/dist/db/adapters/memory-adapter/memory-adapter.d.ts.map +1 -0
  78. package/dist/db/adapters/memory.cjs +1391 -0
  79. package/dist/db/adapters/memory.js +1349 -0
  80. package/dist/db/adapters/prisma-adapter/index.d.ts +2 -0
  81. package/dist/db/adapters/prisma-adapter/index.d.ts.map +1 -0
  82. package/dist/db/adapters/prisma-adapter/prisma-adapter.d.ts +143 -0
  83. package/dist/db/adapters/prisma-adapter/prisma-adapter.d.ts.map +1 -0
  84. package/dist/db/adapters/prisma.cjs +1503 -0
  85. package/dist/db/adapters/prisma.js +1461 -0
  86. package/dist/db/adapters/types.d.ts +154 -0
  87. package/dist/db/adapters/types.d.ts.map +1 -0
  88. package/dist/db/adapters/utils.d.ts +36 -0
  89. package/dist/db/adapters/utils.d.ts.map +1 -0
  90. package/dist/db/core/fields/field-factory.d.ts +383 -0
  91. package/dist/db/core/fields/field-factory.d.ts.map +1 -0
  92. package/dist/db/core/fields/field-inference.d.ts +218 -0
  93. package/dist/db/core/fields/field-inference.d.ts.map +1 -0
  94. package/dist/db/core/fields/field-options-integration.d.ts +90 -0
  95. package/dist/db/core/fields/field-options-integration.d.ts.map +1 -0
  96. package/dist/db/core/fields/field-types.d.ts +182 -0
  97. package/dist/db/core/fields/field-types.d.ts.map +1 -0
  98. package/dist/db/core/fields/id-generator.d.ts +19 -0
  99. package/dist/db/core/fields/id-generator.d.ts.map +1 -0
  100. package/dist/db/core/fields/index.d.ts +8 -0
  101. package/dist/db/core/fields/index.d.ts.map +1 -0
  102. package/dist/db/core/fields/superjson-utils.d.ts +34 -0
  103. package/dist/db/core/fields/superjson-utils.d.ts.map +1 -0
  104. package/dist/db/core/fields/zod-fields.d.ts +1011 -0
  105. package/dist/db/core/fields/zod-fields.d.ts.map +1 -0
  106. package/dist/db/core/get-schema.d.ts +36 -0
  107. package/dist/db/core/get-schema.d.ts.map +1 -0
  108. package/dist/db/core/types.d.ts +41 -0
  109. package/dist/db/core/types.d.ts.map +1 -0
  110. package/dist/db/create-registry.d.ts +760 -0
  111. package/dist/db/create-registry.d.ts.map +1 -0
  112. package/dist/db/hooks/create-hooks.d.ts +32 -0
  113. package/dist/db/hooks/create-hooks.d.ts.map +1 -0
  114. package/dist/db/hooks/index.d.ts +40 -0
  115. package/dist/db/hooks/index.d.ts.map +1 -0
  116. package/dist/db/hooks/types.d.ts +133 -0
  117. package/dist/db/hooks/types.d.ts.map +1 -0
  118. package/dist/db/hooks/update-hooks.d.ts +33 -0
  119. package/dist/db/hooks/update-hooks.d.ts.map +1 -0
  120. package/dist/db/hooks/update-many-hooks.d.ts +55 -0
  121. package/dist/db/hooks/update-many-hooks.d.ts.map +1 -0
  122. package/dist/db/hooks/utils.d.ts +62 -0
  123. package/dist/db/hooks/utils.d.ts.map +1 -0
  124. package/dist/db/hooks/with-hooks-factory.d.ts +33 -0
  125. package/dist/db/hooks/with-hooks-factory.d.ts.map +1 -0
  126. package/dist/db/index.cjs +2458 -0
  127. package/dist/db/index.d.ts +11 -0
  128. package/dist/db/index.d.ts.map +1 -0
  129. package/dist/db/index.js +2404 -0
  130. package/dist/db/migration/get-migration.d.ts +32 -0
  131. package/dist/db/migration/get-migration.d.ts.map +1 -0
  132. package/dist/db/migration/get-schema/get-schema.d.ts +27 -0
  133. package/dist/db/migration/get-schema/get-schema.d.ts.map +1 -0
  134. package/dist/db/migration/get-schema/index.d.ts +21 -0
  135. package/dist/db/migration/get-schema/index.d.ts.map +1 -0
  136. package/dist/db/migration/get-schema/process-fields.d.ts +16 -0
  137. package/dist/db/migration/get-schema/process-fields.d.ts.map +1 -0
  138. package/dist/db/migration/get-schema/process-tables.d.ts +13 -0
  139. package/dist/db/migration/get-schema/process-tables.d.ts.map +1 -0
  140. package/dist/db/migration/get-schema/types.d.ts +17 -0
  141. package/dist/db/migration/get-schema/types.d.ts.map +1 -0
  142. package/dist/db/migration/index.cjs +1613 -0
  143. package/dist/db/migration/index.d.ts +14 -0
  144. package/dist/db/migration/index.d.ts.map +1 -0
  145. package/dist/db/migration/index.js +1571 -0
  146. package/dist/db/migration/migration-builders.d.ts +28 -0
  147. package/dist/db/migration/migration-builders.d.ts.map +1 -0
  148. package/dist/db/migration/migration-execution.d.ts +12 -0
  149. package/dist/db/migration/migration-execution.d.ts.map +1 -0
  150. package/dist/db/migration/schema-comparison.d.ts +54 -0
  151. package/dist/db/migration/schema-comparison.d.ts.map +1 -0
  152. package/dist/db/migration/type-mapping.d.ts +86 -0
  153. package/dist/db/migration/type-mapping.d.ts.map +1 -0
  154. package/dist/db/migration/types.d.ts +37 -0
  155. package/dist/db/migration/types.d.ts.map +1 -0
  156. package/dist/db/schema/audit-log/index.d.ts +4 -0
  157. package/dist/db/schema/audit-log/index.d.ts.map +1 -0
  158. package/dist/db/schema/audit-log/registry.d.ts +128 -0
  159. package/dist/db/schema/audit-log/registry.d.ts.map +1 -0
  160. package/dist/db/schema/audit-log/schema.d.ts +67 -0
  161. package/dist/db/schema/audit-log/schema.d.ts.map +1 -0
  162. package/dist/db/schema/audit-log/table.d.ts +175 -0
  163. package/dist/db/schema/audit-log/table.d.ts.map +1 -0
  164. package/dist/db/schema/audit-log/types.d.ts +29 -0
  165. package/dist/db/schema/audit-log/types.d.ts.map +1 -0
  166. package/dist/db/schema/consent/index.d.ts +4 -0
  167. package/dist/db/schema/consent/index.d.ts.map +1 -0
  168. package/dist/db/schema/consent/registry.d.ts +318 -0
  169. package/dist/db/schema/consent/registry.d.ts.map +1 -0
  170. package/dist/db/schema/consent/schema.d.ts +135 -0
  171. package/dist/db/schema/consent/schema.d.ts.map +1 -0
  172. package/dist/db/schema/consent/table.d.ts +245 -0
  173. package/dist/db/schema/consent/table.d.ts.map +1 -0
  174. package/dist/db/schema/consent/types.d.ts +37 -0
  175. package/dist/db/schema/consent/types.d.ts.map +1 -0
  176. package/dist/db/schema/consent-geo-location/index.d.ts +4 -0
  177. package/dist/db/schema/consent-geo-location/index.d.ts.map +1 -0
  178. package/dist/db/schema/consent-geo-location/registry.d.ts +96 -0
  179. package/dist/db/schema/consent-geo-location/registry.d.ts.map +1 -0
  180. package/dist/db/schema/consent-geo-location/schema.d.ts +71 -0
  181. package/dist/db/schema/consent-geo-location/schema.d.ts.map +1 -0
  182. package/dist/db/schema/consent-geo-location/table.d.ts +167 -0
  183. package/dist/db/schema/consent-geo-location/table.d.ts.map +1 -0
  184. package/dist/db/schema/consent-geo-location/types.d.ts +21 -0
  185. package/dist/db/schema/consent-geo-location/types.d.ts.map +1 -0
  186. package/dist/db/schema/consent-policy/index.d.ts +4 -0
  187. package/dist/db/schema/consent-policy/index.d.ts.map +1 -0
  188. package/dist/db/schema/consent-policy/registry.d.ts +186 -0
  189. package/dist/db/schema/consent-policy/registry.d.ts.map +1 -0
  190. package/dist/db/schema/consent-policy/schema.d.ts +68 -0
  191. package/dist/db/schema/consent-policy/schema.d.ts.map +1 -0
  192. package/dist/db/schema/consent-policy/table.d.ts +147 -0
  193. package/dist/db/schema/consent-policy/table.d.ts.map +1 -0
  194. package/dist/db/schema/consent-policy/types.d.ts +28 -0
  195. package/dist/db/schema/consent-policy/types.d.ts.map +1 -0
  196. package/dist/db/schema/consent-purpose/index.d.ts +4 -0
  197. package/dist/db/schema/consent-purpose/index.d.ts.map +1 -0
  198. package/dist/db/schema/consent-purpose/registry.d.ts +136 -0
  199. package/dist/db/schema/consent-purpose/registry.d.ts.map +1 -0
  200. package/dist/db/schema/consent-purpose/schema.d.ts +79 -0
  201. package/dist/db/schema/consent-purpose/schema.d.ts.map +1 -0
  202. package/dist/db/schema/consent-purpose/table.d.ts +161 -0
  203. package/dist/db/schema/consent-purpose/table.d.ts.map +1 -0
  204. package/dist/db/schema/consent-purpose/types.d.ts +16 -0
  205. package/dist/db/schema/consent-purpose/types.d.ts.map +1 -0
  206. package/dist/db/schema/consent-purpose-junction/index.d.ts +4 -0
  207. package/dist/db/schema/consent-purpose-junction/index.d.ts.map +1 -0
  208. package/dist/db/schema/consent-purpose-junction/registry.d.ts +109 -0
  209. package/dist/db/schema/consent-purpose-junction/registry.d.ts.map +1 -0
  210. package/dist/db/schema/consent-purpose-junction/schema.d.ts +57 -0
  211. package/dist/db/schema/consent-purpose-junction/schema.d.ts.map +1 -0
  212. package/dist/db/schema/consent-purpose-junction/table.d.ts +138 -0
  213. package/dist/db/schema/consent-purpose-junction/table.d.ts.map +1 -0
  214. package/dist/db/schema/consent-purpose-junction/types.d.ts +14 -0
  215. package/dist/db/schema/consent-purpose-junction/types.d.ts.map +1 -0
  216. package/dist/db/schema/consent-record/index.d.ts +4 -0
  217. package/dist/db/schema/consent-record/index.d.ts.map +1 -0
  218. package/dist/db/schema/consent-record/registry.d.ts +119 -0
  219. package/dist/db/schema/consent-record/registry.d.ts.map +1 -0
  220. package/dist/db/schema/consent-record/schema.d.ts +57 -0
  221. package/dist/db/schema/consent-record/schema.d.ts.map +1 -0
  222. package/dist/db/schema/consent-record/table.d.ts +123 -0
  223. package/dist/db/schema/consent-record/table.d.ts.map +1 -0
  224. package/dist/db/schema/consent-record/types.d.ts +21 -0
  225. package/dist/db/schema/consent-record/types.d.ts.map +1 -0
  226. package/dist/db/schema/consent-withdrawal/index.d.ts +4 -0
  227. package/dist/db/schema/consent-withdrawal/index.d.ts.map +1 -0
  228. package/dist/db/schema/consent-withdrawal/registry.d.ts +134 -0
  229. package/dist/db/schema/consent-withdrawal/registry.d.ts.map +1 -0
  230. package/dist/db/schema/consent-withdrawal/schema.d.ts +67 -0
  231. package/dist/db/schema/consent-withdrawal/schema.d.ts.map +1 -0
  232. package/dist/db/schema/consent-withdrawal/table.d.ts +170 -0
  233. package/dist/db/schema/consent-withdrawal/table.d.ts.map +1 -0
  234. package/dist/db/schema/consent-withdrawal/types.d.ts +28 -0
  235. package/dist/db/schema/consent-withdrawal/types.d.ts.map +1 -0
  236. package/dist/db/schema/definition.d.ts +1100 -0
  237. package/dist/db/schema/definition.d.ts.map +1 -0
  238. package/dist/db/schema/domain/index.d.ts +4 -0
  239. package/dist/db/schema/domain/index.d.ts.map +1 -0
  240. package/dist/db/schema/domain/registry.d.ts +169 -0
  241. package/dist/db/schema/domain/registry.d.ts.map +1 -0
  242. package/dist/db/schema/domain/schema.d.ts +60 -0
  243. package/dist/db/schema/domain/schema.d.ts.map +1 -0
  244. package/dist/db/schema/domain/table.d.ts +140 -0
  245. package/dist/db/schema/domain/table.d.ts.map +1 -0
  246. package/dist/db/schema/domain/types.d.ts +27 -0
  247. package/dist/db/schema/domain/types.d.ts.map +1 -0
  248. package/dist/db/schema/geo-location/index.d.ts +4 -0
  249. package/dist/db/schema/geo-location/index.d.ts.map +1 -0
  250. package/dist/db/schema/geo-location/registry.d.ts +114 -0
  251. package/dist/db/schema/geo-location/registry.d.ts.map +1 -0
  252. package/dist/db/schema/geo-location/schema.d.ts +58 -0
  253. package/dist/db/schema/geo-location/schema.d.ts.map +1 -0
  254. package/dist/db/schema/geo-location/table.d.ts +132 -0
  255. package/dist/db/schema/geo-location/table.d.ts.map +1 -0
  256. package/dist/db/schema/geo-location/types.d.ts +17 -0
  257. package/dist/db/schema/geo-location/types.d.ts.map +1 -0
  258. package/dist/db/schema/index.d.ts +85 -0
  259. package/dist/db/schema/index.d.ts.map +1 -0
  260. package/dist/db/schema/parser.d.ts +183 -0
  261. package/dist/db/schema/parser.d.ts.map +1 -0
  262. package/dist/db/schema/schemas.d.ts +383 -0
  263. package/dist/db/schema/schemas.d.ts.map +1 -0
  264. package/dist/db/schema/subject/index.d.ts +4 -0
  265. package/dist/db/schema/subject/index.d.ts.map +1 -0
  266. package/dist/db/schema/subject/registry.d.ts +141 -0
  267. package/dist/db/schema/subject/registry.d.ts.map +1 -0
  268. package/dist/db/schema/subject/schema.d.ts +56 -0
  269. package/dist/db/schema/subject/schema.d.ts.map +1 -0
  270. package/dist/db/schema/subject/table.d.ts +136 -0
  271. package/dist/db/schema/subject/table.d.ts.map +1 -0
  272. package/dist/db/schema/subject/types.d.ts +22 -0
  273. package/dist/db/schema/subject/types.d.ts.map +1 -0
  274. package/dist/db/schema/types.d.ts +136 -0
  275. package/dist/db/schema/types.d.ts.map +1 -0
  276. package/dist/db/utils/adapter-factory.d.ts +21 -0
  277. package/dist/db/utils/adapter-factory.d.ts.map +1 -0
  278. package/dist/db/utils/index.d.ts +10 -0
  279. package/dist/db/utils/index.d.ts.map +1 -0
  280. package/dist/db/utils.d.ts +4 -0
  281. package/dist/db/utils.d.ts.map +1 -0
  282. package/dist/error/codes.cjs +68 -0
  283. package/dist/error/codes.d.ts +175 -0
  284. package/dist/error/codes.d.ts.map +1 -0
  285. package/dist/error/codes.js +35 -0
  286. package/dist/error/error.d.ts +79 -0
  287. package/dist/error/error.d.ts.map +1 -0
  288. package/dist/error/index.cjs +172 -0
  289. package/dist/error/index.d.ts +9 -0
  290. package/dist/error/index.d.ts.map +1 -0
  291. package/dist/error/index.js +129 -0
  292. package/dist/error/logging.d.ts +25 -0
  293. package/dist/error/logging.d.ts.map +1 -0
  294. package/dist/error/pipeline.d.ts +19 -0
  295. package/dist/error/pipeline.d.ts.map +1 -0
  296. package/dist/error/recovery.d.ts +22 -0
  297. package/dist/error/recovery.d.ts.map +1 -0
  298. package/dist/error/results.d.ts +56 -0
  299. package/dist/error/results.d.ts.map +1 -0
  300. package/dist/index.cjs +4777 -0
  301. package/dist/index.d.ts +46 -0
  302. package/dist/index.d.ts.map +1 -0
  303. package/dist/index.js +4708 -0
  304. package/dist/init.d.ts +52 -0
  305. package/dist/init.d.ts.map +1 -0
  306. package/dist/init.test.d.ts +2 -0
  307. package/dist/init.test.d.ts.map +1 -0
  308. package/dist/integrations/index.cjs +281 -0
  309. package/dist/integrations/index.d.ts +7 -0
  310. package/dist/integrations/index.d.ts.map +1 -0
  311. package/dist/integrations/index.js +248 -0
  312. package/dist/integrations/next.cjs +131 -0
  313. package/dist/integrations/next.d.ts +29 -0
  314. package/dist/integrations/next.d.ts.map +1 -0
  315. package/dist/integrations/next.js +99 -0
  316. package/dist/integrations/react.cjs +182 -0
  317. package/dist/integrations/react.d.ts +257 -0
  318. package/dist/integrations/react.d.ts.map +1 -0
  319. package/dist/integrations/react.js +150 -0
  320. package/dist/plugins/geo/index.d.ts +2 -0
  321. package/dist/plugins/geo/index.d.ts.map +1 -0
  322. package/dist/test/utils.d.ts +65 -0
  323. package/dist/test/utils.d.ts.map +1 -0
  324. package/dist/types/api.d.ts +89 -0
  325. package/dist/types/api.d.ts.map +1 -0
  326. package/dist/types/context.d.ts +205 -0
  327. package/dist/types/context.d.ts.map +1 -0
  328. package/dist/types/helper.d.ts +78 -0
  329. package/dist/types/helper.d.ts.map +1 -0
  330. package/dist/types/index.cjs +19 -0
  331. package/dist/types/index.d.ts +6 -0
  332. package/dist/types/index.d.ts.map +1 -0
  333. package/dist/types/index.js +0 -0
  334. package/dist/types/options.d.ts +172 -0
  335. package/dist/types/options.d.ts.map +1 -0
  336. package/dist/types/plugins.d.ts +442 -0
  337. package/dist/types/plugins.d.ts.map +1 -0
  338. package/dist/utils/env.d.ts +77 -0
  339. package/dist/utils/env.d.ts.map +1 -0
  340. package/dist/utils/hide-metadata.d.ts +22 -0
  341. package/dist/utils/hide-metadata.d.ts.map +1 -0
  342. package/dist/utils/index.cjs +268 -0
  343. package/dist/utils/index.d.ts +18 -0
  344. package/dist/utils/index.d.ts.map +1 -0
  345. package/dist/utils/index.js +210 -0
  346. package/dist/utils/ip.d.ts +10 -0
  347. package/dist/utils/ip.d.ts.map +1 -0
  348. package/dist/utils/json.d.ts +14 -0
  349. package/dist/utils/json.d.ts.map +1 -0
  350. package/dist/utils/logger.d.ts +108 -0
  351. package/dist/utils/logger.d.ts.map +1 -0
  352. package/dist/utils/url.d.ts +87 -0
  353. package/dist/utils/url.d.ts.map +1 -0
  354. package/dist/utils/wildcard.d.ts +46 -0
  355. package/dist/utils/wildcard.d.ts.map +1 -0
  356. package/knip.json +37 -0
  357. package/package.json +146 -0
  358. package/rslib.config.ts +104 -0
  359. package/src/api/call.ts +177 -0
  360. package/src/api/index.ts +303 -0
  361. package/src/api/middlewares/index.ts +38 -0
  362. package/src/api/middlewares/origin-check.ts +260 -0
  363. package/src/api/middlewares/validate-context.ts +175 -0
  364. package/src/api/routes/__tests__/consent.test.ts +270 -0
  365. package/src/api/routes/__tests__/status.test.ts +36 -0
  366. package/src/api/routes/error.ts +130 -0
  367. package/src/api/routes/generate-consent-receipt.ts +244 -0
  368. package/src/api/routes/get-consent-history.ts +128 -0
  369. package/src/api/routes/get-consent-policy.ts +327 -0
  370. package/src/api/routes/get-consent.ts +230 -0
  371. package/src/api/routes/index.ts +12 -0
  372. package/src/api/routes/ok.ts +45 -0
  373. package/src/api/routes/set-consent.ts +328 -0
  374. package/src/api/routes/show-consent-banner.ts +149 -0
  375. package/src/api/routes/status.ts +62 -0
  376. package/src/api/routes/verify-consent.ts +272 -0
  377. package/src/api/routes/withdraw-consent.ts +293 -0
  378. package/src/api/to-endpoints.ts +371 -0
  379. package/src/client/index.ts +471 -0
  380. package/src/client/types.ts +458 -0
  381. package/src/core.test.ts +303 -0
  382. package/src/core.ts +267 -0
  383. package/src/db/adapters/drizzle-adapter/drizzle-adapter.ts +711 -0
  384. package/src/db/adapters/drizzle-adapter/index.ts +1 -0
  385. package/src/db/adapters/kysely-adapter/dialect.ts +192 -0
  386. package/src/db/adapters/kysely-adapter/index.ts +3 -0
  387. package/src/db/adapters/kysely-adapter/kysely-adapter.ts +1168 -0
  388. package/src/db/adapters/kysely-adapter/types.ts +307 -0
  389. package/src/db/adapters/memory-adapter/index.ts +1 -0
  390. package/src/db/adapters/memory-adapter/memory-adapter.ts +648 -0
  391. package/src/db/adapters/prisma-adapter/index.ts +1 -0
  392. package/src/db/adapters/prisma-adapter/prisma-adapter.ts +586 -0
  393. package/src/db/adapters/types.ts +203 -0
  394. package/src/db/adapters/utils.ts +51 -0
  395. package/src/db/core/fields/field-factory.ts +804 -0
  396. package/src/db/core/fields/field-inference.ts +298 -0
  397. package/src/db/core/fields/field-options-integration.ts +135 -0
  398. package/src/db/core/fields/field-types.ts +233 -0
  399. package/src/db/core/fields/id-generator.ts +57 -0
  400. package/src/db/core/fields/index.ts +56 -0
  401. package/src/db/core/fields/superjson-utils.ts +155 -0
  402. package/src/db/core/fields/zod-fields.ts +269 -0
  403. package/src/db/core/get-schema.ts +102 -0
  404. package/src/db/core/types.ts +52 -0
  405. package/src/db/create-registry.ts +31 -0
  406. package/src/db/hooks/create-hooks.ts +88 -0
  407. package/src/db/hooks/index.ts +39 -0
  408. package/src/db/hooks/types.ts +164 -0
  409. package/src/db/hooks/update-hooks.ts +91 -0
  410. package/src/db/hooks/update-many-hooks.ts +176 -0
  411. package/src/db/hooks/utils.ts +151 -0
  412. package/src/db/hooks/with-hooks-factory.ts +68 -0
  413. package/src/db/index.ts +32 -0
  414. package/src/db/migration/get-migration.ts +89 -0
  415. package/src/db/migration/get-schema/get-schema.ts +44 -0
  416. package/src/db/migration/get-schema/index.ts +20 -0
  417. package/src/db/migration/get-schema/process-fields.ts +66 -0
  418. package/src/db/migration/get-schema/process-tables.ts +68 -0
  419. package/src/db/migration/get-schema/types.ts +18 -0
  420. package/src/db/migration/index.ts +18 -0
  421. package/src/db/migration/migration-builders.ts +170 -0
  422. package/src/db/migration/migration-execution.ts +79 -0
  423. package/src/db/migration/schema-comparison.ts +216 -0
  424. package/src/db/migration/type-mapping.ts +255 -0
  425. package/src/db/migration/types.ts +46 -0
  426. package/src/db/schema/audit-log/index.ts +3 -0
  427. package/src/db/schema/audit-log/registry.ts +228 -0
  428. package/src/db/schema/audit-log/schema.ts +46 -0
  429. package/src/db/schema/audit-log/table.ts +185 -0
  430. package/src/db/schema/audit-log/types.ts +29 -0
  431. package/src/db/schema/consent/index.ts +3 -0
  432. package/src/db/schema/consent/registry.ts +381 -0
  433. package/src/db/schema/consent/schema.ts +65 -0
  434. package/src/db/schema/consent/table.ts +220 -0
  435. package/src/db/schema/consent/types.ts +39 -0
  436. package/src/db/schema/consent-geo-location/index.ts +3 -0
  437. package/src/db/schema/consent-geo-location/registry.ts +124 -0
  438. package/src/db/schema/consent-geo-location/schema.ts +51 -0
  439. package/src/db/schema/consent-geo-location/table.ts +169 -0
  440. package/src/db/schema/consent-geo-location/types.ts +21 -0
  441. package/src/db/schema/consent-policy/index.ts +3 -0
  442. package/src/db/schema/consent-policy/registry.ts +313 -0
  443. package/src/db/schema/consent-policy/schema.ts +47 -0
  444. package/src/db/schema/consent-policy/table.ts +141 -0
  445. package/src/db/schema/consent-policy/types.ts +28 -0
  446. package/src/db/schema/consent-purpose/index.ts +3 -0
  447. package/src/db/schema/consent-purpose/registry.ts +188 -0
  448. package/src/db/schema/consent-purpose/schema.ts +58 -0
  449. package/src/db/schema/consent-purpose/table.ts +154 -0
  450. package/src/db/schema/consent-purpose/types.ts +16 -0
  451. package/src/db/schema/consent-purpose-junction/index.ts +3 -0
  452. package/src/db/schema/consent-purpose-junction/registry.ts +189 -0
  453. package/src/db/schema/consent-purpose-junction/schema.ts +49 -0
  454. package/src/db/schema/consent-purpose-junction/table.ts +142 -0
  455. package/src/db/schema/consent-purpose-junction/types.ts +14 -0
  456. package/src/db/schema/consent-record/index.ts +3 -0
  457. package/src/db/schema/consent-record/registry.ts +209 -0
  458. package/src/db/schema/consent-record/schema.ts +42 -0
  459. package/src/db/schema/consent-record/table.ts +124 -0
  460. package/src/db/schema/consent-record/types.ts +21 -0
  461. package/src/db/schema/consent-withdrawal/index.ts +3 -0
  462. package/src/db/schema/consent-withdrawal/registry.ts +219 -0
  463. package/src/db/schema/consent-withdrawal/schema.ts +48 -0
  464. package/src/db/schema/consent-withdrawal/table.ts +181 -0
  465. package/src/db/schema/consent-withdrawal/types.ts +29 -0
  466. package/src/db/schema/definition.ts +196 -0
  467. package/src/db/schema/domain/index.ts +3 -0
  468. package/src/db/schema/domain/registry.ts +272 -0
  469. package/src/db/schema/domain/schema.ts +43 -0
  470. package/src/db/schema/domain/table.ts +137 -0
  471. package/src/db/schema/domain/types.ts +27 -0
  472. package/src/db/schema/geo-location/index.ts +3 -0
  473. package/src/db/schema/geo-location/registry.ts +159 -0
  474. package/src/db/schema/geo-location/schema.ts +45 -0
  475. package/src/db/schema/geo-location/table.ts +148 -0
  476. package/src/db/schema/geo-location/types.ts +18 -0
  477. package/src/db/schema/index.ts +96 -0
  478. package/src/db/schema/parser.ts +417 -0
  479. package/src/db/schema/schemas.ts +35 -0
  480. package/src/db/schema/subject/index.ts +3 -0
  481. package/src/db/schema/subject/registry.ts +371 -0
  482. package/src/db/schema/subject/schema.ts +41 -0
  483. package/src/db/schema/subject/table.ts +139 -0
  484. package/src/db/schema/subject/types.ts +22 -0
  485. package/src/db/schema/types.ts +154 -0
  486. package/src/db/utils/adapter-factory.ts +64 -0
  487. package/src/db/utils/index.ts +10 -0
  488. package/src/db/utils.ts +42 -0
  489. package/src/docs/ADVANCED_JSON_HANDLING.md +99 -0
  490. package/src/docs/neverthrow.md +171 -0
  491. package/src/error/codes.ts +201 -0
  492. package/src/error/error.ts +145 -0
  493. package/src/error/index.ts +23 -0
  494. package/src/error/logging.ts +52 -0
  495. package/src/error/pipeline.ts +57 -0
  496. package/src/error/recovery.ts +45 -0
  497. package/src/error/results.ts +100 -0
  498. package/src/index.ts +79 -0
  499. package/src/init.test.ts +235 -0
  500. package/src/init.ts +261 -0
  501. package/src/integrations/index.ts +10 -0
  502. package/src/integrations/next.ts +136 -0
  503. package/src/integrations/react.ts +567 -0
  504. package/src/plugins/geo/index.ts +563 -0
  505. package/src/test/utils.ts +244 -0
  506. package/src/types/api.ts +101 -0
  507. package/src/types/context.ts +235 -0
  508. package/src/types/helper.ts +87 -0
  509. package/src/types/index.ts +5 -0
  510. package/src/types/options.ts +189 -0
  511. package/src/types/plugins.ts +538 -0
  512. package/src/utils/env.ts +103 -0
  513. package/src/utils/hide-metadata.ts +21 -0
  514. package/src/utils/index.ts +17 -0
  515. package/src/utils/ip.ts +45 -0
  516. package/src/utils/json.ts +19 -0
  517. package/src/utils/logger.ts +252 -0
  518. package/src/utils/url.ts +194 -0
  519. package/src/utils/wildcard.ts +253 -0
  520. package/tsconfig.json +12 -0
  521. package/vitest.config.ts +14 -0
@@ -0,0 +1,313 @@
1
+ import { createHash } from 'node:crypto';
2
+ import type { Where } from '~/db/adapters/types';
3
+ import { getWithHooks } from '~/db/hooks';
4
+ import type { GenericEndpointContext, RegistryContext } from '~/types';
5
+ import { validateEntityOutput } from '../definition';
6
+ import type { ConsentPolicy } from './schema';
7
+
8
+ export interface FindPolicyParams {
9
+ domainId?: string;
10
+ version?: string;
11
+ includeInactive?: boolean;
12
+ }
13
+
14
+ /**
15
+ * Generates placeholder content for a policy with its hash.
16
+ *
17
+ * @param name - Policy name
18
+ * @param date - Generation date
19
+ * @returns Object containing content and contentHash
20
+ */
21
+ function generatePolicyPlaceholder(name: string, date: Date) {
22
+ const content = `[PLACEHOLDER] This is an automatically generated version of the ${name} policy.\n\nThis placeholder content should be replaced with actual policy terms before being presented to users.\n\nGenerated on: ${date.toISOString()}`;
23
+ const contentHash = createHash('sha256').update(content).digest('hex');
24
+ return { content, contentHash };
25
+ }
26
+
27
+ /**
28
+ * Creates and returns a set of consent policy-related adapter methods to interact with the database.
29
+ * These methods provide a consistent interface for creating, finding, and updating
30
+ * consent policy records while applying hooks and enforcing data validation rules.
31
+ *
32
+ * @param adapter - The database adapter used for direct database operations
33
+ * @param ctx - The context object containing the database adapter, hooks, and options
34
+ * @returns An object containing type-safe consent policy operations
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const policyAdapter = createConsentPolicyAdapter(
39
+ * databaseAdapter,
40
+ * createWithHooks,
41
+ * updateWithHooks,
42
+ * c15tOptions
43
+ * );
44
+ *
45
+ * // Create a new consent policy
46
+ * const policy = await policyAdapter.createConsentPolicy({
47
+ * version: '1.0.0',
48
+ * name: 'Privacy Policy 2023',
49
+ * effectiveDate: new Date(),
50
+ * content: 'Full policy text...',
51
+ * contentHash: 'sha256-hash-of-content'
52
+ * });
53
+ * ```
54
+ */
55
+ export function policyRegistry({ adapter, ...ctx }: RegistryContext) {
56
+ const { createWithHooks, updateWithHooks } = getWithHooks(adapter, ctx);
57
+ const registry = {
58
+ /**
59
+ * Creates a new consent policy record in the database.
60
+ * Automatically sets creation timestamp and applies any
61
+ * configured hooks during the creation process.
62
+ *
63
+ * @param policy - Policy data to create (without id and timestamp)
64
+ * @param context - Optional endpoint context for hooks
65
+ * @returns The created policy with all fields populated
66
+ * @throws May throw an error if hooks prevent creation or if database operations fail
67
+ */
68
+ createConsentPolicy: async (
69
+ policy: Omit<ConsentPolicy, 'id' | 'createdAt'> & Partial<ConsentPolicy>,
70
+ context?: GenericEndpointContext
71
+ ) => {
72
+ const createdPolicy = await createWithHooks({
73
+ data: {
74
+ createdAt: new Date(),
75
+ ...policy,
76
+ },
77
+ model: 'consentPolicy',
78
+ context,
79
+ });
80
+
81
+ if (!createdPolicy) {
82
+ throw new Error(
83
+ 'Failed to create consent policy - operation returned null'
84
+ );
85
+ }
86
+
87
+ return createdPolicy as ConsentPolicy;
88
+ },
89
+
90
+ findPolicies: async (params: FindPolicyParams = {}) => {
91
+ const whereConditions: Where<'consentPolicy'> = [];
92
+
93
+ if (!params.includeInactive) {
94
+ whereConditions.push({
95
+ field: 'isActive',
96
+ value: true,
97
+ });
98
+ }
99
+
100
+ if (params.domainId) {
101
+ whereConditions.push({
102
+ field: 'id',
103
+ value: params.domainId,
104
+ });
105
+ }
106
+
107
+ if (params.version) {
108
+ whereConditions.push({
109
+ field: 'version',
110
+ value: params.version,
111
+ });
112
+ }
113
+
114
+ const policies = await adapter.findMany({
115
+ model: 'consentPolicy',
116
+ where: whereConditions,
117
+ sortBy: {
118
+ field: 'effectiveDate',
119
+ direction: 'desc',
120
+ },
121
+ });
122
+
123
+ return policies.map((policy) =>
124
+ validateEntityOutput('consentPolicy', policy, ctx.options)
125
+ );
126
+ },
127
+
128
+ findPolicy: async (domainId: string, version?: string) => {
129
+ const policies = await registry.findPolicies({ domainId, version });
130
+ return policies[0] || null;
131
+ },
132
+
133
+ /**
134
+ * Finds all active consent policies.
135
+ * Returns policies with processed output fields according to the schema configuration.
136
+ *
137
+ * @returns Array of active consent policies sorted by effective date
138
+ */
139
+ findActiveConsentPolicies: async () => {
140
+ const policies = await adapter.findMany({
141
+ model: 'consentPolicy',
142
+ where: [
143
+ {
144
+ field: 'isActive',
145
+ value: true,
146
+ },
147
+ ],
148
+ sortBy: {
149
+ field: 'effectiveDate',
150
+ direction: 'desc',
151
+ },
152
+ });
153
+
154
+ return policies.map((policy) =>
155
+ validateEntityOutput('consentPolicy', policy, ctx.options)
156
+ );
157
+ },
158
+
159
+ /**
160
+ * Finds a consent policy by its unique ID.
161
+ * Returns the policy with processed output fields according to the schema configuration.
162
+ *
163
+ * @param policyId - The unique identifier of the policy
164
+ * @returns The policy object if found, null otherwise
165
+ */
166
+ findConsentPolicyById: async (policyId: string) => {
167
+ const policy = await adapter.findOne({
168
+ model: 'consentPolicy',
169
+ where: [
170
+ {
171
+ field: 'id',
172
+ value: policyId,
173
+ },
174
+ ],
175
+ });
176
+ return policy
177
+ ? validateEntityOutput('consentPolicy', policy, ctx.options)
178
+ : null;
179
+ },
180
+
181
+ /**
182
+ * Finds a consent policy by its version string.
183
+ * Returns the policy with processed output fields according to the schema configuration.
184
+ *
185
+ * @param version - The version string of the policy
186
+ * @returns The policy object if found, null otherwise
187
+ */
188
+ findConsentPolicyByVersion: async (version: string) => {
189
+ const policy = await adapter.findOne({
190
+ model: 'consentPolicy',
191
+ where: [
192
+ {
193
+ field: 'version',
194
+ value: version,
195
+ },
196
+ ],
197
+ });
198
+ return policy
199
+ ? validateEntityOutput('consentPolicy', policy, ctx.options)
200
+ : null;
201
+ },
202
+
203
+ /**
204
+ * Updates an existing consent policy record by ID.
205
+ * Applies any configured hooks during the update process and
206
+ * processes the output according to schema configuration.
207
+ *
208
+ * @param policyId - The unique identifier of the policy to update
209
+ * @param data - The fields to update on the policy record
210
+ * @param context - Optional endpoint context for hooks
211
+ * @returns The updated policy if successful, null if not found or hooks prevented update
212
+ */
213
+ updateConsentPolicy: async (
214
+ policyId: string,
215
+ data: Partial<ConsentPolicy>,
216
+ context?: GenericEndpointContext
217
+ ) => {
218
+ const policy = await updateWithHooks<
219
+ Partial<ConsentPolicy>,
220
+ ConsentPolicy
221
+ >({
222
+ data,
223
+ where: [
224
+ {
225
+ field: 'id',
226
+ value: policyId,
227
+ },
228
+ ],
229
+ model: 'consentPolicy',
230
+ customFn: undefined,
231
+ context,
232
+ });
233
+ return policy
234
+ ? validateEntityOutput('consentPolicy', policy, ctx.options)
235
+ : null;
236
+ },
237
+
238
+ /**
239
+ * Finds the latest active policy or creates a new one if none exists.
240
+ * Uses a database transaction to prevent race conditions in multi-threaded environments.
241
+ *
242
+ * If multiple active policies with the same name exist, returns the most recent one
243
+ * based on effectiveDate. When creating a new policy, it assigns version '1.0.0'
244
+ * and generates placeholder content with a SHA-256 hash.
245
+ *
246
+ * @param name - The name of the policy to find/create
247
+ * @returns The policy object
248
+ * @throws {Error} If the transaction fails to complete
249
+ */
250
+ findOrCreatePolicy: async (name: string) => {
251
+ // Normalize name for comparison
252
+ const normalizedSearchName = name.toLowerCase().trim();
253
+
254
+ // Use a transaction to prevent race conditions
255
+ return adapter.transaction({
256
+ callback: async (txAdapter) => {
257
+ const now = new Date();
258
+ const txRegistry = policyRegistry({
259
+ adapter: txAdapter,
260
+ ...ctx,
261
+ });
262
+
263
+ // Find latest policy with exact name match directly from database
264
+ const matchingPolicies = await txAdapter.findMany({
265
+ model: 'consentPolicy',
266
+ where: [
267
+ { field: 'isActive', value: true },
268
+ {
269
+ field: 'name',
270
+ value: normalizedSearchName,
271
+ operator: 'ilike',
272
+ },
273
+ ],
274
+ sortBy: {
275
+ field: 'effectiveDate',
276
+ direction: 'desc',
277
+ },
278
+ limit: 1,
279
+ });
280
+
281
+ const latestPolicy = matchingPolicies[0]
282
+ ? validateEntityOutput(
283
+ 'consentPolicy',
284
+ matchingPolicies[0],
285
+ ctx.options
286
+ )
287
+ : null;
288
+
289
+ if (latestPolicy) {
290
+ return latestPolicy;
291
+ }
292
+
293
+ // Generate policy content and hash
294
+ const { content: defaultContent, contentHash } =
295
+ generatePolicyPlaceholder(name, now);
296
+
297
+ return txRegistry.createConsentPolicy({
298
+ version: '1.0.0',
299
+ name: normalizedSearchName,
300
+ effectiveDate: now,
301
+ content: defaultContent,
302
+ contentHash,
303
+ isActive: true,
304
+ updatedAt: now,
305
+ expirationDate: null,
306
+ });
307
+ },
308
+ });
309
+ },
310
+ };
311
+
312
+ return registry;
313
+ }
@@ -0,0 +1,47 @@
1
+ import { z } from 'zod';
2
+
3
+ /**
4
+ * Zod schema for validating consent policy entities.
5
+ *
6
+ * This defines the structure and validation rules for consent policy records:
7
+ * - Required fields: version, name, effectiveDate, content, contentHash
8
+ * - Optional fields: expirationDate
9
+ * - Default value of true for isActive
10
+ * - Default current date/time for creation and update timestamps
11
+ *
12
+ * @example
13
+ * ```typescript
14
+ * const policyData = {
15
+ * id: 'pol_w5qufx2a66m7xkn3ty',
16
+ * version: '1.0.0',
17
+ * name: 'Privacy Policy 2023',
18
+ * effectiveDate: new Date(),
19
+ * content: 'Full policy text...',
20
+ * contentHash: 'sha256-hash-of-content'
21
+ * };
22
+ *
23
+ * // Validate and parse the policy data
24
+ * const validPolicy = consentPolicySchema.parse(policyData);
25
+ * ```
26
+ */
27
+ export const consentPolicySchema = z.object({
28
+ id: z.string(),
29
+ version: z.string(),
30
+ name: z.string(),
31
+ effectiveDate: z.date(),
32
+ expirationDate: z.date().nullable().optional(),
33
+ content: z.string(),
34
+ contentHash: z.string(),
35
+ isActive: z.boolean().default(true),
36
+ createdAt: z.date().default(() => new Date()),
37
+ updatedAt: z.date().default(() => new Date()),
38
+ });
39
+
40
+ /**
41
+ * Type definition for ConsentPolicy
42
+ *
43
+ * This type represents the structure of a consent policy record
44
+ * as defined by the consentPolicySchema. It includes all fields
45
+ * that are part of the consent policy entity.
46
+ */
47
+ export type ConsentPolicy = z.infer<typeof consentPolicySchema>;
@@ -0,0 +1,141 @@
1
+ import type { Field } from '~/db/core/fields';
2
+ import type { C15TOptions } from '~/types';
3
+ import { consentPolicySchema } from './schema';
4
+
5
+ /**
6
+ * Generates the database table configuration for the consent policy entity.
7
+ *
8
+ * This function creates a schema definition that includes all standard consent policy fields
9
+ * and any additional fields from plugins or configuration. The resulting schema is used
10
+ * for database migrations, schema validation, and query building.
11
+ *
12
+ * @param options - C15T configuration options that may contain policy table customizations
13
+ * @param policyFields - Additional fields from plugins to include in the policy table
14
+ * @returns A complete table schema definition with fields, model name, and metadata
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * const policyTableSchema = getConsentPolicyTable(c15tOptions);
19
+ * // Use the schema for migrations or data access
20
+ * const migrationPlans = generateMigrations(policyTableSchema);
21
+ * ```
22
+ */
23
+ export function getConsentPolicyTable(
24
+ options: C15TOptions,
25
+ policyFields?: Record<string, Field>
26
+ ) {
27
+ const consentPolicyConfig = options.tables?.consentPolicy;
28
+
29
+ return {
30
+ /**
31
+ * The name of the policy table in the database, configurable through options
32
+ */
33
+ entityName: consentPolicyConfig?.entityName || 'consentPolicy',
34
+
35
+ /**
36
+ * The ID prefix for the consent policy table
37
+ * Used to generate unique prefixed IDs for consent policies
38
+ */
39
+ entityPrefix: consentPolicyConfig?.entityPrefix || 'pol',
40
+
41
+ /**
42
+ * The schema for the consent policy table
43
+ */
44
+ schema: consentPolicySchema,
45
+
46
+ /**
47
+ * Field definitions for the consent policy table
48
+ */
49
+ fields: {
50
+ /**
51
+ * Version identifier for the policy (e.g., "1.0.0")
52
+ */
53
+ version: {
54
+ type: 'string',
55
+ required: true,
56
+ fieldName: consentPolicyConfig?.fields?.version || 'version',
57
+ },
58
+
59
+ /**
60
+ * Human-readable name of the policy
61
+ */
62
+ name: {
63
+ type: 'string',
64
+ required: true,
65
+ fieldName: consentPolicyConfig?.fields?.name || 'name',
66
+ },
67
+
68
+ /**
69
+ * Date when the policy becomes effective
70
+ */
71
+ effectiveDate: {
72
+ type: 'date',
73
+ required: true,
74
+ fieldName:
75
+ consentPolicyConfig?.fields?.effectiveDate || 'effectiveDate',
76
+ },
77
+
78
+ /**
79
+ * Optional date when the policy expires
80
+ */
81
+ expirationDate: {
82
+ type: 'date',
83
+ required: false,
84
+ fieldName:
85
+ consentPolicyConfig?.fields?.expirationDate || 'expirationDate',
86
+ },
87
+
88
+ /**
89
+ * Full content of the policy document
90
+ */
91
+ content: {
92
+ type: 'string',
93
+ required: true,
94
+ fieldName: consentPolicyConfig?.fields?.content || 'content',
95
+ },
96
+
97
+ /**
98
+ * Hash of the content for integrity validation
99
+ */
100
+ contentHash: {
101
+ type: 'string',
102
+ required: true,
103
+ fieldName: consentPolicyConfig?.fields?.contentHash || 'contentHash',
104
+ },
105
+
106
+ /**
107
+ * Whether this policy is currently active
108
+ * Default: true
109
+ */
110
+ isActive: {
111
+ type: 'boolean',
112
+ defaultValue: true,
113
+ required: true,
114
+ fieldName: consentPolicyConfig?.fields?.isActive || 'isActive',
115
+ },
116
+
117
+ /**
118
+ * When the policy record was created
119
+ * Automatically set to current time by default
120
+ */
121
+ createdAt: {
122
+ type: 'date',
123
+ defaultValue: () => new Date(),
124
+ required: true,
125
+ fieldName: consentPolicyConfig?.fields?.createdAt || 'createdAt',
126
+ },
127
+
128
+ // Include additional fields from plugins
129
+ ...(policyFields || {}),
130
+
131
+ // Include additional fields from configuration
132
+ ...(consentPolicyConfig?.additionalFields || {}),
133
+ },
134
+
135
+ /**
136
+ * Execution order during migrations (lower numbers run first)
137
+ * Policy table needs to be created before tables that reference it (like consent)
138
+ */
139
+ order: 2,
140
+ };
141
+ }
@@ -0,0 +1,28 @@
1
+ import type { BaseEntityConfig } from '../types';
2
+
3
+ /**
4
+ * Consent policy entity configuration
5
+ * @default entityName: "consentPolicy", entityPrefix: "pol"
6
+ */
7
+ export interface ConsentPolicyEntityConfig extends BaseEntityConfig {
8
+ fields?: Record<string, string> & {
9
+ id?: string;
10
+ version?: string;
11
+ name?: string;
12
+ /**
13
+ * ISO format date string (e.g., "2024-04-15T00:00:00Z")
14
+ */
15
+ effectiveDate?: string;
16
+ /**
17
+ * ISO format date string (e.g., "2024-04-15T00:00:00Z")
18
+ */
19
+ expirationDate?: string;
20
+ content?: string;
21
+ contentHash?: string;
22
+ isActive?: string;
23
+ /**
24
+ * ISO format date string (e.g., "2024-04-15T00:00:00Z")
25
+ */
26
+ createdAt?: string;
27
+ };
28
+ }
@@ -0,0 +1,3 @@
1
+ export * from './registry';
2
+ export * from './schema';
3
+ export * from './table';