@c15t/backend 1.5.0 → 1.6.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 (489) hide show
  1. package/.turbo/turbo-build.log +63 -37
  2. package/CHANGELOG.md +4 -209
  3. package/README.md +86 -164
  4. package/dist/contracts/consent/index.d.ts +103 -615
  5. package/dist/contracts/consent/index.d.ts.map +1 -1
  6. package/dist/contracts/consent/post.contract.d.ts +42 -140
  7. package/dist/contracts/consent/post.contract.d.ts.map +1 -1
  8. package/dist/contracts/consent/show-banner.contract.d.ts +28 -376
  9. package/dist/contracts/consent/show-banner.contract.d.ts.map +1 -1
  10. package/dist/contracts/consent/verify.contract.d.ts +33 -99
  11. package/dist/contracts/consent/verify.contract.d.ts.map +1 -1
  12. package/dist/contracts/index.d.ts +222 -1356
  13. package/dist/contracts/index.d.ts.map +1 -1
  14. package/dist/contracts/meta/index.d.ts +8 -63
  15. package/dist/contracts/meta/index.d.ts.map +1 -1
  16. package/dist/contracts/meta/status.contract.d.ts +8 -63
  17. package/dist/contracts/meta/status.contract.d.ts.map +1 -1
  18. package/dist/contracts/shared/jurisdiction.schema.d.ts +21 -9
  19. package/dist/contracts/shared/jurisdiction.schema.d.ts.map +1 -1
  20. package/dist/contracts.cjs +100 -106
  21. package/dist/contracts.js +100 -106
  22. package/dist/core.cjs +681 -681
  23. package/dist/core.d.ts +118 -678
  24. package/dist/core.d.ts.map +1 -1
  25. package/dist/core.js +634 -637
  26. package/dist/handlers/consent/index.d.ts +103 -615
  27. package/dist/handlers/consent/index.d.ts.map +1 -1
  28. package/dist/handlers/consent/post.handler.d.ts +42 -140
  29. package/dist/handlers/consent/post.handler.d.ts.map +1 -1
  30. package/dist/handlers/consent/show-banner/handler.d.ts +28 -376
  31. package/dist/handlers/consent/show-banner/handler.d.ts.map +1 -1
  32. package/dist/handlers/consent/show-banner/translations.d.ts.map +1 -1
  33. package/dist/handlers/consent/verify.handler.d.ts +33 -99
  34. package/dist/handlers/consent/verify.handler.d.ts.map +1 -1
  35. package/dist/handlers/meta/index.d.ts +8 -63
  36. package/dist/handlers/meta/index.d.ts.map +1 -1
  37. package/dist/handlers/meta/status.handler.d.ts +8 -63
  38. package/dist/handlers/meta/status.handler.d.ts.map +1 -1
  39. package/dist/init.d.ts.map +1 -1
  40. package/dist/middleware/openapi/index.d.ts +2 -2
  41. package/dist/middleware/openapi/index.d.ts.map +1 -1
  42. package/dist/pkgs/data-model/fields/index.cjs +14 -26
  43. package/dist/pkgs/data-model/fields/index.d.ts +4 -4
  44. package/dist/pkgs/data-model/fields/index.d.ts.map +1 -1
  45. package/dist/pkgs/data-model/fields/index.js +14 -26
  46. package/dist/pkgs/data-model/fields/zod-fields.d.ts +195 -871
  47. package/dist/pkgs/data-model/fields/zod-fields.d.ts.map +1 -1
  48. package/dist/pkgs/data-model/hooks/index.d.ts +2 -2
  49. package/dist/pkgs/data-model/hooks/index.d.ts.map +1 -1
  50. package/dist/pkgs/data-model/index.cjs +346 -358
  51. package/dist/pkgs/data-model/index.d.ts +1 -1
  52. package/dist/pkgs/data-model/index.d.ts.map +1 -1
  53. package/dist/pkgs/data-model/index.js +345 -357
  54. package/dist/pkgs/data-model/schema/index.cjs +346 -358
  55. package/dist/pkgs/data-model/schema/index.d.ts +1 -1
  56. package/dist/pkgs/data-model/schema/index.d.ts.map +1 -1
  57. package/dist/pkgs/data-model/schema/index.js +345 -357
  58. package/dist/pkgs/data-model/schema/schemas.d.ts +2 -2
  59. package/dist/pkgs/data-model/schema/schemas.d.ts.map +1 -1
  60. package/dist/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.d.ts +3 -0
  61. package/dist/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.d.ts.map +1 -1
  62. package/dist/pkgs/db-adapters/adapters/drizzle-adapter/index.cjs +158 -170
  63. package/dist/pkgs/db-adapters/adapters/drizzle-adapter/index.js +157 -169
  64. package/dist/pkgs/db-adapters/adapters/index.d.ts +2 -2
  65. package/dist/pkgs/db-adapters/adapters/index.d.ts.map +1 -1
  66. package/dist/pkgs/db-adapters/adapters/kysely-adapter/index.cjs +215 -227
  67. package/dist/pkgs/db-adapters/adapters/kysely-adapter/index.d.ts +2 -2
  68. package/dist/pkgs/db-adapters/adapters/kysely-adapter/index.d.ts.map +1 -1
  69. package/dist/pkgs/db-adapters/adapters/kysely-adapter/index.js +213 -225
  70. package/dist/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.d.ts +2 -0
  71. package/dist/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.d.ts.map +1 -1
  72. package/dist/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.d.ts +1 -1
  73. package/dist/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.d.ts.map +1 -1
  74. package/dist/pkgs/db-adapters/adapters/memory-adapter/index.cjs +158 -170
  75. package/dist/pkgs/db-adapters/adapters/memory-adapter/index.js +157 -169
  76. package/dist/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.d.ts +3 -0
  77. package/dist/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.d.ts.map +1 -1
  78. package/dist/pkgs/db-adapters/adapters/prisma-adapter/index.cjs +243 -255
  79. package/dist/pkgs/db-adapters/adapters/prisma-adapter/index.d.ts +1 -1
  80. package/dist/pkgs/db-adapters/adapters/prisma-adapter/index.d.ts.map +1 -1
  81. package/dist/pkgs/db-adapters/adapters/prisma-adapter/index.js +241 -253
  82. package/dist/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.d.ts +3 -0
  83. package/dist/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.d.ts.map +1 -1
  84. package/dist/pkgs/db-adapters/index.cjs +714 -726
  85. package/dist/pkgs/db-adapters/index.d.ts +6 -6
  86. package/dist/pkgs/db-adapters/index.d.ts.map +1 -1
  87. package/dist/pkgs/db-adapters/index.js +708 -720
  88. package/dist/pkgs/migrations/get-migration.d.ts.map +1 -1
  89. package/dist/pkgs/migrations/get-schema/get-schema.d.ts.map +1 -1
  90. package/dist/pkgs/migrations/get-schema/process-tables.d.ts.map +1 -1
  91. package/dist/pkgs/migrations/index.cjs +236 -248
  92. package/dist/pkgs/migrations/index.d.ts +4 -4
  93. package/dist/pkgs/migrations/index.d.ts.map +1 -1
  94. package/dist/pkgs/migrations/index.js +235 -247
  95. package/dist/pkgs/results/index.cjs +67 -67
  96. package/dist/pkgs/results/index.d.ts +5 -5
  97. package/dist/pkgs/results/index.d.ts.map +1 -1
  98. package/dist/pkgs/results/index.js +67 -67
  99. package/dist/pkgs/results/orpc-error-handler.d.ts +1 -1
  100. package/dist/pkgs/results/orpc-error-handler.d.ts.map +1 -1
  101. package/dist/pkgs/types/index.d.ts +1 -2
  102. package/dist/pkgs/types/index.d.ts.map +1 -1
  103. package/dist/pkgs/types/options.d.ts +9 -2
  104. package/dist/pkgs/types/options.d.ts.map +1 -1
  105. package/dist/pkgs/utils/index.d.ts +1 -1
  106. package/dist/pkgs/utils/index.d.ts.map +1 -1
  107. package/dist/pkgs/utils/logger.d.ts +1 -1
  108. package/dist/pkgs/utils/logger.d.ts.map +1 -1
  109. package/dist/router.cjs +114 -117
  110. package/dist/router.d.ts +111 -678
  111. package/dist/router.d.ts.map +1 -1
  112. package/dist/router.js +114 -117
  113. package/dist/schema/audit-log/schema.d.ts +2 -24
  114. package/dist/schema/audit-log/schema.d.ts.map +1 -1
  115. package/dist/schema/audit-log/table.d.ts +2 -24
  116. package/dist/schema/audit-log/table.d.ts.map +1 -1
  117. package/dist/schema/consent/registry.d.ts +8 -8
  118. package/dist/schema/consent/schema.d.ts +9 -33
  119. package/dist/schema/consent/schema.d.ts.map +1 -1
  120. package/dist/schema/consent/table.d.ts +9 -33
  121. package/dist/schema/consent/table.d.ts.map +1 -1
  122. package/dist/schema/consent-policy/registry.d.ts +20 -20
  123. package/dist/schema/consent-policy/schema.d.ts +22 -30
  124. package/dist/schema/consent-policy/schema.d.ts.map +1 -1
  125. package/dist/schema/consent-policy/table.d.ts +13 -29
  126. package/dist/schema/consent-policy/table.d.ts.map +1 -1
  127. package/dist/schema/consent-purpose/registry.d.ts +6 -6
  128. package/dist/schema/consent-purpose/schema.d.ts +5 -27
  129. package/dist/schema/consent-purpose/schema.d.ts.map +1 -1
  130. package/dist/schema/consent-purpose/table.d.ts +5 -27
  131. package/dist/schema/consent-purpose/table.d.ts.map +1 -1
  132. package/dist/schema/consent-record/schema.d.ts +3 -19
  133. package/dist/schema/consent-record/schema.d.ts.map +1 -1
  134. package/dist/schema/consent-record/table.d.ts +3 -19
  135. package/dist/schema/consent-record/table.d.ts.map +1 -1
  136. package/dist/schema/create-registry.d.ts +58 -58
  137. package/dist/schema/definition.d.ts +42 -176
  138. package/dist/schema/definition.d.ts.map +1 -1
  139. package/dist/schema/domain/registry.d.ts +20 -20
  140. package/dist/schema/domain/schema.d.ts +6 -24
  141. package/dist/schema/domain/schema.d.ts.map +1 -1
  142. package/dist/schema/domain/table.d.ts +6 -24
  143. package/dist/schema/domain/table.d.ts.map +1 -1
  144. package/dist/schema/index.cjs +426 -438
  145. package/dist/schema/index.d.ts +12 -12
  146. package/dist/schema/index.d.ts.map +1 -1
  147. package/dist/schema/index.js +426 -438
  148. package/dist/schema/schemas.d.ts +42 -176
  149. package/dist/schema/schemas.d.ts.map +1 -1
  150. package/dist/schema/subject/registry.d.ts +4 -4
  151. package/dist/schema/subject/schema.d.ts +4 -20
  152. package/dist/schema/subject/schema.d.ts.map +1 -1
  153. package/dist/schema/subject/table.d.ts +4 -20
  154. package/dist/schema/subject/table.d.ts.map +1 -1
  155. package/dist/schema/types.d.ts +1 -1
  156. package/dist/schema/types.d.ts.map +1 -1
  157. package/dist/testing/contract-testing.d.ts +3 -2
  158. package/dist/testing/contract-testing.d.ts.map +1 -1
  159. package/dist/types/index.d.ts +5 -4
  160. package/dist/types/index.d.ts.map +1 -1
  161. package/dist/types/options.d.ts +2 -2
  162. package/dist/types/options.d.ts.map +1 -1
  163. package/dist/v2/contracts/consent/index.d.ts +260 -0
  164. package/dist/v2/contracts/consent/index.d.ts.map +1 -0
  165. package/dist/v2/contracts/consent/index.test.d.ts +2 -0
  166. package/dist/v2/contracts/consent/index.test.d.ts.map +1 -0
  167. package/dist/v2/contracts/consent/post.contract.d.ts +114 -0
  168. package/dist/v2/contracts/consent/post.contract.d.ts.map +1 -0
  169. package/dist/v2/contracts/consent/post.contract.test.d.ts +2 -0
  170. package/dist/v2/contracts/consent/post.contract.test.d.ts.map +1 -0
  171. package/dist/v2/contracts/consent/show-banner.contract.d.ts +68 -0
  172. package/dist/v2/contracts/consent/show-banner.contract.d.ts.map +1 -0
  173. package/dist/v2/contracts/consent/show-banner.contract.test.d.ts +2 -0
  174. package/dist/v2/contracts/consent/show-banner.contract.test.d.ts.map +1 -0
  175. package/dist/v2/contracts/consent/verify.contract.d.ts +81 -0
  176. package/dist/v2/contracts/consent/verify.contract.d.ts.map +1 -0
  177. package/dist/v2/contracts/consent/verify.contract.test.d.ts +2 -0
  178. package/dist/v2/contracts/consent/verify.contract.test.d.ts.map +1 -0
  179. package/dist/v2/contracts/index.cjs +644 -0
  180. package/dist/v2/contracts/index.d.ts +563 -0
  181. package/dist/v2/contracts/index.d.ts.map +1 -0
  182. package/dist/v2/contracts/index.js +607 -0
  183. package/dist/v2/contracts/meta/index.d.ts +19 -0
  184. package/dist/v2/contracts/meta/index.d.ts.map +1 -0
  185. package/dist/v2/contracts/meta/index.test.d.ts +2 -0
  186. package/dist/v2/contracts/meta/index.test.d.ts.map +1 -0
  187. package/dist/v2/contracts/meta/status.contract.d.ts +18 -0
  188. package/dist/v2/contracts/meta/status.contract.d.ts.map +1 -0
  189. package/dist/v2/contracts/meta/status.contract.test.d.ts +2 -0
  190. package/dist/v2/contracts/meta/status.contract.test.d.ts.map +1 -0
  191. package/dist/v2/contracts/shared/jurisdiction.schema.d.ts +36 -0
  192. package/dist/v2/contracts/shared/jurisdiction.schema.d.ts.map +1 -0
  193. package/dist/v2/contracts/test.utils.d.ts +38 -0
  194. package/dist/v2/contracts/test.utils.d.ts.map +1 -0
  195. package/dist/v2/core.cjs +2181 -0
  196. package/dist/v2/core.d.ts +364 -0
  197. package/dist/v2/core.d.ts.map +1 -0
  198. package/dist/v2/core.js +2130 -0
  199. package/dist/v2/db/adapters/drizzle.cjs +36 -0
  200. package/dist/v2/db/adapters/drizzle.d.ts +2 -0
  201. package/dist/v2/db/adapters/drizzle.d.ts.map +1 -0
  202. package/dist/v2/db/adapters/drizzle.js +3 -0
  203. package/dist/v2/db/adapters/index.cjs +18 -0
  204. package/dist/v2/db/adapters/index.d.ts +2 -0
  205. package/dist/v2/db/adapters/index.d.ts.map +1 -0
  206. package/dist/v2/db/adapters/index.js +0 -0
  207. package/dist/v2/db/adapters/kysely.cjs +36 -0
  208. package/dist/v2/db/adapters/kysely.d.ts +2 -0
  209. package/dist/v2/db/adapters/kysely.d.ts.map +1 -0
  210. package/dist/v2/db/adapters/kysely.js +3 -0
  211. package/dist/v2/db/adapters/mongo.cjs +36 -0
  212. package/dist/v2/db/adapters/mongo.d.ts +2 -0
  213. package/dist/v2/db/adapters/mongo.d.ts.map +1 -0
  214. package/dist/v2/db/adapters/mongo.js +3 -0
  215. package/dist/v2/db/adapters/prisma.cjs +36 -0
  216. package/dist/v2/db/adapters/prisma.d.ts +2 -0
  217. package/dist/v2/db/adapters/prisma.d.ts.map +1 -0
  218. package/dist/v2/db/adapters/prisma.js +3 -0
  219. package/dist/v2/db/adapters/typeorm.cjs +36 -0
  220. package/dist/v2/db/adapters/typeorm.d.ts +2 -0
  221. package/dist/v2/db/adapters/typeorm.d.ts.map +1 -0
  222. package/dist/v2/db/adapters/typeorm.js +3 -0
  223. package/dist/v2/db/migrator/index.cjs +61 -0
  224. package/dist/v2/db/migrator/index.d.ts +29 -0
  225. package/dist/v2/db/migrator/index.d.ts.map +1 -0
  226. package/dist/v2/db/migrator/index.js +27 -0
  227. package/dist/v2/db/registry/audit-log.d.ts +21 -0
  228. package/dist/v2/db/registry/audit-log.d.ts.map +1 -0
  229. package/dist/v2/db/registry/audit-log.test.d.ts +2 -0
  230. package/dist/v2/db/registry/audit-log.test.d.ts.map +1 -0
  231. package/dist/v2/db/registry/consent-policy.d.ts +29 -0
  232. package/dist/v2/db/registry/consent-policy.d.ts.map +1 -0
  233. package/dist/v2/db/registry/consent-policy.test.d.ts +2 -0
  234. package/dist/v2/db/registry/consent-policy.test.d.ts.map +1 -0
  235. package/dist/v2/db/registry/consent-purpose.d.ts +16 -0
  236. package/dist/v2/db/registry/consent-purpose.d.ts.map +1 -0
  237. package/dist/v2/db/registry/consent-purpose.test.d.ts +2 -0
  238. package/dist/v2/db/registry/consent-purpose.test.d.ts.map +1 -0
  239. package/dist/v2/db/registry/consent.d.ts +20 -0
  240. package/dist/v2/db/registry/consent.d.ts.map +1 -0
  241. package/dist/v2/db/registry/consent.test.d.ts +2 -0
  242. package/dist/v2/db/registry/consent.test.d.ts.map +1 -0
  243. package/dist/v2/db/registry/domain.d.ts +24 -0
  244. package/dist/v2/db/registry/domain.d.ts.map +1 -0
  245. package/dist/v2/db/registry/domain.test.d.ts +2 -0
  246. package/dist/v2/db/registry/domain.test.d.ts.map +1 -0
  247. package/dist/v2/db/registry/index.d.ts +102 -0
  248. package/dist/v2/db/registry/index.d.ts.map +1 -0
  249. package/dist/v2/db/registry/subject.d.ts +18 -0
  250. package/dist/v2/db/registry/subject.d.ts.map +1 -0
  251. package/dist/v2/db/registry/subject.test.d.ts +2 -0
  252. package/dist/v2/db/registry/subject.test.d.ts.map +1 -0
  253. package/dist/v2/db/registry/types.d.ts +10 -0
  254. package/dist/v2/db/registry/types.d.ts.map +1 -0
  255. package/dist/v2/db/registry/utils/generate-id.d.ts +25 -0
  256. package/dist/v2/db/registry/utils/generate-id.d.ts.map +1 -0
  257. package/dist/v2/db/registry/utils/generate-id.test.d.ts +2 -0
  258. package/dist/v2/db/registry/utils/generate-id.test.d.ts.map +1 -0
  259. package/dist/v2/db/registry/utils.d.ts +25 -0
  260. package/dist/v2/db/registry/utils.d.ts.map +1 -0
  261. package/dist/v2/db/schema/1.0.0/audit-log.d.ts +29 -0
  262. package/dist/v2/db/schema/1.0.0/audit-log.d.ts.map +1 -0
  263. package/dist/v2/db/schema/1.0.0/consent-policy.d.ts +45 -0
  264. package/dist/v2/db/schema/1.0.0/consent-policy.d.ts.map +1 -0
  265. package/dist/v2/db/schema/1.0.0/consent-purpose.d.ts +27 -0
  266. package/dist/v2/db/schema/1.0.0/consent-purpose.d.ts.map +1 -0
  267. package/dist/v2/db/schema/1.0.0/consent-record.d.ts +19 -0
  268. package/dist/v2/db/schema/1.0.0/consent-record.d.ts.map +1 -0
  269. package/dist/v2/db/schema/1.0.0/consent.d.ts +42 -0
  270. package/dist/v2/db/schema/1.0.0/consent.d.ts.map +1 -0
  271. package/dist/v2/db/schema/1.0.0/domain.d.ts +23 -0
  272. package/dist/v2/db/schema/1.0.0/domain.d.ts.map +1 -0
  273. package/dist/v2/db/schema/1.0.0/index.d.ts +1513 -0
  274. package/dist/v2/db/schema/1.0.0/index.d.ts.map +1 -0
  275. package/dist/v2/db/schema/1.0.0/subject.d.ts +23 -0
  276. package/dist/v2/db/schema/1.0.0/subject.d.ts.map +1 -0
  277. package/dist/v2/db/schema/index.cjs +326 -0
  278. package/dist/v2/db/schema/index.d.ts +1507 -0
  279. package/dist/v2/db/schema/index.d.ts.map +1 -0
  280. package/dist/v2/db/schema/index.js +241 -0
  281. package/dist/v2/define-config.cjs +36 -0
  282. package/dist/v2/define-config.d.ts +5 -0
  283. package/dist/v2/define-config.d.ts.map +1 -0
  284. package/dist/v2/define-config.js +2 -0
  285. package/dist/v2/handlers/consent/index.d.ts +260 -0
  286. package/dist/v2/handlers/consent/index.d.ts.map +1 -0
  287. package/dist/v2/handlers/consent/post.handler.d.ts +136 -0
  288. package/dist/v2/handlers/consent/post.handler.d.ts.map +1 -0
  289. package/dist/v2/handlers/consent/show-banner/geo.d.ts +10 -0
  290. package/dist/v2/handlers/consent/show-banner/geo.d.ts.map +1 -0
  291. package/dist/v2/handlers/consent/show-banner/geo.test.d.ts +2 -0
  292. package/dist/v2/handlers/consent/show-banner/geo.test.d.ts.map +1 -0
  293. package/dist/v2/handlers/consent/show-banner/handler.d.ts +71 -0
  294. package/dist/v2/handlers/consent/show-banner/handler.d.ts.map +1 -0
  295. package/dist/v2/handlers/consent/show-banner/handler.test.d.ts +2 -0
  296. package/dist/v2/handlers/consent/show-banner/handler.test.d.ts.map +1 -0
  297. package/dist/v2/handlers/consent/show-banner/translations.d.ts +13 -0
  298. package/dist/v2/handlers/consent/show-banner/translations.d.ts.map +1 -0
  299. package/dist/v2/handlers/consent/show-banner/translations.test.d.ts +2 -0
  300. package/dist/v2/handlers/consent/show-banner/translations.test.d.ts.map +1 -0
  301. package/dist/v2/handlers/consent/verify.handler.d.ts +103 -0
  302. package/dist/v2/handlers/consent/verify.handler.d.ts.map +1 -0
  303. package/dist/v2/handlers/meta/index.d.ts +19 -0
  304. package/dist/v2/handlers/meta/index.d.ts.map +1 -0
  305. package/dist/v2/handlers/meta/status.handler.d.ts +17 -0
  306. package/dist/v2/handlers/meta/status.handler.d.ts.map +1 -0
  307. package/dist/v2/init.d.ts +3 -0
  308. package/dist/v2/init.d.ts.map +1 -0
  309. package/dist/v2/init.test.d.ts +2 -0
  310. package/dist/v2/init.test.d.ts.map +1 -0
  311. package/dist/v2/middleware/cors/cors.d.ts +37 -0
  312. package/dist/v2/middleware/cors/cors.d.ts.map +1 -0
  313. package/dist/v2/middleware/cors/cors.test.d.ts +2 -0
  314. package/dist/v2/middleware/cors/cors.test.d.ts.map +1 -0
  315. package/dist/v2/middleware/cors/index.d.ts +30 -0
  316. package/dist/v2/middleware/cors/index.d.ts.map +1 -0
  317. package/dist/v2/middleware/cors/is-origin-trusted.d.ts +49 -0
  318. package/dist/v2/middleware/cors/is-origin-trusted.d.ts.map +1 -0
  319. package/dist/v2/middleware/cors/is-origin-trusted.test.d.ts +2 -0
  320. package/dist/v2/middleware/cors/is-origin-trusted.test.d.ts.map +1 -0
  321. package/dist/v2/middleware/cors/process-cors.d.ts +31 -0
  322. package/dist/v2/middleware/cors/process-cors.d.ts.map +1 -0
  323. package/dist/v2/middleware/openapi/config.d.ts +28 -0
  324. package/dist/v2/middleware/openapi/config.d.ts.map +1 -0
  325. package/dist/v2/middleware/openapi/handlers.d.ts +29 -0
  326. package/dist/v2/middleware/openapi/handlers.d.ts.map +1 -0
  327. package/dist/v2/middleware/openapi/index.d.ts +11 -0
  328. package/dist/v2/middleware/openapi/index.d.ts.map +1 -0
  329. package/dist/v2/middleware/process-ip/index.d.ts +3 -0
  330. package/dist/v2/middleware/process-ip/index.d.ts.map +1 -0
  331. package/dist/v2/router.cjs +1275 -0
  332. package/dist/v2/router.d.ts +280 -0
  333. package/dist/v2/router.d.ts.map +1 -0
  334. package/dist/v2/router.js +1231 -0
  335. package/dist/v2/types/api.d.ts +27 -0
  336. package/dist/v2/types/api.d.ts.map +1 -0
  337. package/dist/v2/types/index.cjs +40 -0
  338. package/dist/v2/types/index.d.ts +104 -0
  339. package/dist/v2/types/index.d.ts.map +1 -0
  340. package/dist/v2/types/index.js +6 -0
  341. package/dist/v2/utils/create-telemetry-options.d.ts +28 -0
  342. package/dist/v2/utils/create-telemetry-options.d.ts.map +1 -0
  343. package/dist/v2/utils/env.d.ts +60 -0
  344. package/dist/v2/utils/env.d.ts.map +1 -0
  345. package/dist/v2/utils/index.d.ts +3 -0
  346. package/dist/v2/utils/index.d.ts.map +1 -0
  347. package/dist/v2/utils/logger.d.ts +16 -0
  348. package/dist/v2/utils/logger.d.ts.map +1 -0
  349. package/dist/version.d.ts +1 -1
  350. package/package.json +106 -15
  351. package/readme.json +30 -0
  352. package/rslib.config.ts +13 -14
  353. package/src/__tests__/server.test.ts +1 -1
  354. package/src/contracts/consent/post.contract.test.ts +3 -8
  355. package/src/contracts/consent/post.contract.ts +13 -13
  356. package/src/contracts/consent/show-banner.contract.test.ts +9 -0
  357. package/src/contracts/consent/show-banner.contract.ts +2 -0
  358. package/src/contracts/consent/verify.contract.ts +19 -23
  359. package/src/core.ts +7 -0
  360. package/src/handlers/consent/show-banner/handler.ts +12 -9
  361. package/src/handlers/consent/show-banner/translations.ts +2 -2
  362. package/src/init.ts +9 -6
  363. package/src/middleware/openapi/index.ts +2 -2
  364. package/src/pkgs/api-router/hooks/__tests__/processor.test.ts +1 -1
  365. package/src/pkgs/data-model/fields/index.ts +17 -22
  366. package/src/pkgs/data-model/fields/zod-fields.ts +14 -26
  367. package/src/pkgs/data-model/hooks/index.ts +3 -2
  368. package/src/pkgs/data-model/index.ts +2 -4
  369. package/src/pkgs/data-model/schema/index.ts +6 -7
  370. package/src/pkgs/data-model/schema/schemas.ts +3 -3
  371. package/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts +4 -1
  372. package/src/pkgs/db-adapters/adapters/index.ts +2 -2
  373. package/src/pkgs/db-adapters/adapters/kysely-adapter/index.ts +4 -4
  374. package/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts +4 -5
  375. package/src/pkgs/db-adapters/adapters/kysely-adapter/tests/postgres.test.ts +2 -4
  376. package/src/pkgs/db-adapters/adapters/kysely-adapter/tests/sqlite.test.ts +2 -3
  377. package/src/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.ts +1 -6
  378. package/src/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.ts +4 -1
  379. package/src/pkgs/db-adapters/adapters/prisma-adapter/index.ts +1 -1
  380. package/src/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.ts +5 -2
  381. package/src/pkgs/db-adapters/index.ts +12 -13
  382. package/src/pkgs/migrations/get-migration.ts +4 -2
  383. package/src/pkgs/migrations/get-schema/get-schema.ts +0 -1
  384. package/src/pkgs/migrations/get-schema/process-fields.ts +1 -1
  385. package/src/pkgs/migrations/get-schema/process-tables.ts +0 -2
  386. package/src/pkgs/migrations/index.ts +7 -8
  387. package/src/pkgs/results/__tests__/error-codes.test.ts +2 -2
  388. package/src/pkgs/results/index.ts +22 -27
  389. package/src/pkgs/results/orpc-error-handler.ts +1 -1
  390. package/src/pkgs/results/results/result-helpers.ts +1 -1
  391. package/src/pkgs/types/index.ts +4 -4
  392. package/src/pkgs/types/options.ts +10 -3
  393. package/src/pkgs/utils/index.ts +1 -1
  394. package/src/pkgs/utils/logger.ts +1 -1
  395. package/src/schema/audit-log/schema.ts +3 -3
  396. package/src/schema/consent/schema.ts +4 -4
  397. package/src/schema/consent-policy/schema.ts +3 -3
  398. package/src/schema/consent-purpose/schema.ts +4 -4
  399. package/src/schema/consent-record/schema.ts +3 -3
  400. package/src/schema/definition.ts +1 -1
  401. package/src/schema/domain/schema.ts +5 -5
  402. package/src/schema/index.ts +14 -17
  403. package/src/schema/subject/schema.ts +3 -3
  404. package/src/schema/types.ts +1 -1
  405. package/src/testing/contract-testing.ts +15 -52
  406. package/src/types/index.ts +8 -8
  407. package/src/types/options.ts +2 -3
  408. package/src/v2/contracts/consent/index.test.ts +5 -0
  409. package/src/v2/contracts/consent/index.ts +9 -0
  410. package/src/v2/contracts/consent/post.contract.test.ts +521 -0
  411. package/src/v2/contracts/consent/post.contract.ts +155 -0
  412. package/src/v2/contracts/consent/show-banner.contract.test.ts +252 -0
  413. package/src/v2/contracts/consent/show-banner.contract.ts +73 -0
  414. package/src/v2/contracts/consent/verify.contract.test.ts +185 -0
  415. package/src/v2/contracts/consent/verify.contract.ts +122 -0
  416. package/src/v2/contracts/index.ts +20 -0
  417. package/src/v2/contracts/meta/index.test.ts +5 -0
  418. package/src/v2/contracts/meta/index.ts +5 -0
  419. package/src/v2/contracts/meta/status.contract.test.ts +226 -0
  420. package/src/v2/contracts/meta/status.contract.ts +34 -0
  421. package/src/v2/contracts/shared/jurisdiction.schema.ts +30 -0
  422. package/src/v2/contracts/test.utils.ts +400 -0
  423. package/src/v2/core.ts +379 -0
  424. package/src/v2/db/adapters/drizzle.ts +1 -0
  425. package/src/v2/db/adapters/index.ts +1 -0
  426. package/src/v2/db/adapters/kysely.ts +1 -0
  427. package/src/v2/db/adapters/mongo.ts +1 -0
  428. package/src/v2/db/adapters/prisma.ts +1 -0
  429. package/src/v2/db/adapters/typeorm.ts +1 -0
  430. package/src/v2/db/migrator/index.ts +80 -0
  431. package/src/v2/db/registry/audit-log.test.ts +77 -0
  432. package/src/v2/db/registry/audit-log.ts +46 -0
  433. package/src/v2/db/registry/consent-policy.test.ts +778 -0
  434. package/src/v2/db/registry/consent-policy.ts +74 -0
  435. package/src/v2/db/registry/consent-purpose.test.ts +485 -0
  436. package/src/v2/db/registry/consent-purpose.ts +41 -0
  437. package/src/v2/db/registry/consent.test.ts +843 -0
  438. package/src/v2/db/registry/consent.ts +42 -0
  439. package/src/v2/db/registry/domain.test.ts +463 -0
  440. package/src/v2/db/registry/domain.ts +51 -0
  441. package/src/v2/db/registry/index.ts +18 -0
  442. package/src/v2/db/registry/subject.test.ts +497 -0
  443. package/src/v2/db/registry/subject.ts +101 -0
  444. package/src/v2/db/registry/types.ts +10 -0
  445. package/src/v2/db/registry/utils/generate-id.test.ts +217 -0
  446. package/src/v2/db/registry/utils/generate-id.ts +134 -0
  447. package/src/v2/db/registry/utils.ts +134 -0
  448. package/src/v2/db/schema/1.0.0/audit-log.ts +32 -0
  449. package/src/v2/db/schema/1.0.0/consent-policy.ts +41 -0
  450. package/src/v2/db/schema/1.0.0/consent-purpose.ts +30 -0
  451. package/src/v2/db/schema/1.0.0/consent-record.ts +22 -0
  452. package/src/v2/db/schema/1.0.0/consent.ts +38 -0
  453. package/src/v2/db/schema/1.0.0/domain.ts +26 -0
  454. package/src/v2/db/schema/1.0.0/index.ts +56 -0
  455. package/src/v2/db/schema/1.0.0/subject.ts +26 -0
  456. package/src/v2/db/schema/index.ts +9 -0
  457. package/src/v2/define-config.ts +5 -0
  458. package/src/v2/handlers/consent/index.ts +9 -0
  459. package/src/v2/handlers/consent/post.handler.ts +254 -0
  460. package/src/v2/handlers/consent/show-banner/geo.test.ts +281 -0
  461. package/src/v2/handlers/consent/show-banner/geo.ts +96 -0
  462. package/src/v2/handlers/consent/show-banner/handler.test.ts +374 -0
  463. package/src/v2/handlers/consent/show-banner/handler.ts +123 -0
  464. package/src/v2/handlers/consent/show-banner/translations.test.ts +121 -0
  465. package/src/v2/handlers/consent/show-banner/translations.ts +79 -0
  466. package/src/v2/handlers/consent/verify.handler.ts +288 -0
  467. package/src/v2/handlers/meta/index.ts +5 -0
  468. package/src/v2/handlers/meta/status.handler.ts +43 -0
  469. package/src/v2/init.test.ts +114 -0
  470. package/src/v2/init.ts +126 -0
  471. package/src/v2/middleware/cors/cors.test.ts +111 -0
  472. package/src/v2/middleware/cors/cors.ts +192 -0
  473. package/src/v2/middleware/cors/index.ts +30 -0
  474. package/src/v2/middleware/cors/is-origin-trusted.test.ts +104 -0
  475. package/src/v2/middleware/cors/is-origin-trusted.ts +126 -0
  476. package/src/v2/middleware/cors/process-cors.ts +91 -0
  477. package/src/v2/middleware/openapi/config.ts +27 -0
  478. package/src/v2/middleware/openapi/handlers.ts +132 -0
  479. package/src/v2/middleware/openapi/index.ts +11 -0
  480. package/src/v2/middleware/process-ip/index.ts +39 -0
  481. package/src/v2/router.ts +8 -0
  482. package/src/v2/types/api.ts +32 -0
  483. package/src/v2/types/index.ts +121 -0
  484. package/src/v2/utils/create-telemetry-options.ts +115 -0
  485. package/src/v2/utils/env.ts +84 -0
  486. package/src/v2/utils/index.ts +2 -0
  487. package/src/v2/utils/logger.ts +38 -0
  488. package/src/version.ts +1 -1
  489. package/vitest.config.ts +11 -2
@@ -1,128 +1,12 @@
1
- import * as __WEBPACK_EXTERNAL_MODULE_superjson__ from "superjson";
2
- import * as __WEBPACK_EXTERNAL_MODULE_base_x_aeb88370__ from "base-x";
3
- import * as __WEBPACK_EXTERNAL_MODULE_zod__ from "zod";
4
1
  import "neverthrow";
5
2
  import * as __WEBPACK_EXTERNAL_MODULE__orpc_server_0dae8408__ from "@orpc/server";
6
3
  import * as __WEBPACK_EXTERNAL_MODULE__opentelemetry_api_87359e78__ from "@opentelemetry/api";
7
4
  import * as __WEBPACK_EXTERNAL_MODULE__doubletie_logger_91c58a8f__ from "@doubletie/logger";
8
- import * as __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__ from "drizzle-orm";
5
+ import * as __WEBPACK_EXTERNAL_MODULE_base_x_aeb88370__ from "base-x";
6
+ import * as __WEBPACK_EXTERNAL_MODULE_zod__ from "zod";
9
7
  import * as __WEBPACK_EXTERNAL_MODULE_kysely__ from "kysely";
10
- function applyDefaultValue(inputValue, field, operation) {
11
- if ('update' === operation) return inputValue;
12
- if (null == inputValue && field.defaultValue) {
13
- if ('function' == typeof field.defaultValue) return field.defaultValue();
14
- return field.defaultValue;
15
- }
16
- return inputValue;
17
- }
18
- const COMMON_TIMEZONES = {
19
- UTC: 'UTC',
20
- GMT: 'GMT',
21
- EASTERN: 'America/New_York',
22
- CENTRAL: 'America/Chicago',
23
- MOUNTAIN: 'America/Denver',
24
- PACIFIC: 'America/Los_Angeles',
25
- LONDON: 'Europe/London',
26
- PARIS: 'Europe/Paris',
27
- BERLIN: 'Europe/Berlin',
28
- TOKYO: 'Asia/Tokyo',
29
- SHANGHAI: 'Asia/Shanghai',
30
- SINGAPORE: 'Asia/Singapore',
31
- SYDNEY: 'Australia/Sydney',
32
- SAO_PAULO: 'America/Sao_Paulo'
33
- };
34
- const b58 = (0, __WEBPACK_EXTERNAL_MODULE_base_x_aeb88370__["default"])('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');
35
- function generateId(prefix) {
36
- const buf = crypto.getRandomValues(new Uint8Array(20));
37
- const EPOCH_TIMESTAMP = 1700000000000;
38
- const t = Date.now() - EPOCH_TIMESTAMP;
39
- const high = Math.floor(t / 0x100000000);
40
- const low = t >>> 0;
41
- buf[0] = high >>> 24 & 255;
42
- buf[1] = high >>> 16 & 255;
43
- buf[2] = high >>> 8 & 255;
44
- buf[3] = 255 & high;
45
- buf[4] = low >>> 24 & 255;
46
- buf[5] = low >>> 16 & 255;
47
- buf[6] = low >>> 8 & 255;
48
- buf[7] = 255 & low;
49
- return `${prefix}_${b58.encode(buf)}`;
50
- }
51
- const fieldConfigSchema = __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
52
- required: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(true),
53
- returned: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(true),
54
- input: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(true),
55
- defaultValue: __WEBPACK_EXTERNAL_MODULE_zod__.z.union([
56
- __WEBPACK_EXTERNAL_MODULE_zod__.z.any(),
57
- __WEBPACK_EXTERNAL_MODULE_zod__.z["function"]().returns(__WEBPACK_EXTERNAL_MODULE_zod__.z.any())
58
- ]).optional(),
59
- transform: __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
60
- input: __WEBPACK_EXTERNAL_MODULE_zod__.z["function"]().args(__WEBPACK_EXTERNAL_MODULE_zod__.z.any()).returns(__WEBPACK_EXTERNAL_MODULE_zod__.z.union([
61
- __WEBPACK_EXTERNAL_MODULE_zod__.z.any(),
62
- __WEBPACK_EXTERNAL_MODULE_zod__.z.promise(__WEBPACK_EXTERNAL_MODULE_zod__.z.any())
63
- ])).optional(),
64
- output: __WEBPACK_EXTERNAL_MODULE_zod__.z["function"]().args(__WEBPACK_EXTERNAL_MODULE_zod__.z.any()).returns(__WEBPACK_EXTERNAL_MODULE_zod__.z.union([
65
- __WEBPACK_EXTERNAL_MODULE_zod__.z.any(),
66
- __WEBPACK_EXTERNAL_MODULE_zod__.z.promise(__WEBPACK_EXTERNAL_MODULE_zod__.z.any())
67
- ])).optional()
68
- }).optional(),
69
- validator: __WEBPACK_EXTERNAL_MODULE_zod__.z["function"]().args(__WEBPACK_EXTERNAL_MODULE_zod__.z.any()).returns(__WEBPACK_EXTERNAL_MODULE_zod__.z.union([
70
- __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
71
- __WEBPACK_EXTERNAL_MODULE_zod__.z["null"]()
72
- ])).optional(),
73
- unique: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().optional(),
74
- indexed: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().optional(),
75
- sortable: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(true),
76
- fieldName: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().optional(),
77
- bigint: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(false)
78
- });
79
- const stringFieldSchema = fieldConfigSchema.extend({
80
- type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('string'),
81
- minLength: __WEBPACK_EXTERNAL_MODULE_zod__.z.number().optional(),
82
- maxLength: __WEBPACK_EXTERNAL_MODULE_zod__.z.number().optional(),
83
- pattern: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().optional()
84
- });
85
- const numberFieldSchema = fieldConfigSchema.extend({
86
- type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('number'),
87
- min: __WEBPACK_EXTERNAL_MODULE_zod__.z.number().optional(),
88
- max: __WEBPACK_EXTERNAL_MODULE_zod__.z.number().optional()
89
- });
90
- const booleanFieldSchema = fieldConfigSchema.extend({
91
- type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('boolean')
92
- });
93
- const dateFieldSchema = fieldConfigSchema.extend({
94
- type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('date'),
95
- minDate: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().optional(),
96
- maxDate: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().optional(),
97
- dateOnly: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(false),
98
- format: __WEBPACK_EXTERNAL_MODULE_zod__.z.record(__WEBPACK_EXTERNAL_MODULE_zod__.z.unknown()).optional()
99
- });
100
- const timezoneFieldSchema = fieldConfigSchema.extend({
101
- type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('timezone'),
102
- validateTimezone: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(true),
103
- suggestedValues: __WEBPACK_EXTERNAL_MODULE_zod__.z.array(__WEBPACK_EXTERNAL_MODULE_zod__.z.string()).optional(),
104
- restrictToSuggestedValues: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(false)
105
- });
106
- const jsonFieldSchema = fieldConfigSchema.extend({
107
- type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('json'),
108
- validateJson: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(true)
109
- });
110
- const stringArrayFieldSchema = fieldConfigSchema.extend({
111
- type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('string[]')
112
- });
113
- const numberArrayFieldSchema = fieldConfigSchema.extend({
114
- type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('number[]')
115
- });
116
- __WEBPACK_EXTERNAL_MODULE_zod__.z.discriminatedUnion('type', [
117
- stringFieldSchema,
118
- numberFieldSchema,
119
- booleanFieldSchema,
120
- dateFieldSchema,
121
- timezoneFieldSchema,
122
- jsonFieldSchema,
123
- stringArrayFieldSchema,
124
- numberArrayFieldSchema
125
- ]);
8
+ import * as __WEBPACK_EXTERNAL_MODULE_superjson__ from "superjson";
9
+ import * as __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__ from "drizzle-orm";
126
10
  const error_codes_ERROR_CODES = Object.freeze({
127
11
  NOT_FOUND: 'Resource not found',
128
12
  BAD_REQUEST: 'Bad request',
@@ -304,6 +188,111 @@ class error_class_DoubleTieError extends __WEBPACK_EXTERNAL_MODULE__orpc_server_
304
188
  return formattedMessage;
305
189
  }
306
190
  }
191
+ let globalLogger;
192
+ function getLogger(options) {
193
+ if (!globalLogger) globalLogger = (0, __WEBPACK_EXTERNAL_MODULE__doubletie_logger_91c58a8f__.createLogger)({
194
+ level: 'info',
195
+ appName: 'c15t',
196
+ ...options
197
+ });
198
+ return globalLogger;
199
+ }
200
+ const COMMON_TIMEZONES = {
201
+ UTC: 'UTC',
202
+ GMT: 'GMT',
203
+ EASTERN: 'America/New_York',
204
+ CENTRAL: 'America/Chicago',
205
+ MOUNTAIN: 'America/Denver',
206
+ PACIFIC: 'America/Los_Angeles',
207
+ LONDON: 'Europe/London',
208
+ PARIS: 'Europe/Paris',
209
+ BERLIN: 'Europe/Berlin',
210
+ TOKYO: 'Asia/Tokyo',
211
+ SHANGHAI: 'Asia/Shanghai',
212
+ SINGAPORE: 'Asia/Singapore',
213
+ SYDNEY: 'Australia/Sydney',
214
+ SAO_PAULO: 'America/Sao_Paulo'
215
+ };
216
+ const b58 = (0, __WEBPACK_EXTERNAL_MODULE_base_x_aeb88370__["default"])('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');
217
+ function generateId(prefix) {
218
+ const buf = crypto.getRandomValues(new Uint8Array(20));
219
+ const EPOCH_TIMESTAMP = 1700000000000;
220
+ const t = Date.now() - EPOCH_TIMESTAMP;
221
+ const high = Math.floor(t / 0x100000000);
222
+ const low = t >>> 0;
223
+ buf[0] = high >>> 24 & 255;
224
+ buf[1] = high >>> 16 & 255;
225
+ buf[2] = high >>> 8 & 255;
226
+ buf[3] = 255 & high;
227
+ buf[4] = low >>> 24 & 255;
228
+ buf[5] = low >>> 16 & 255;
229
+ buf[6] = low >>> 8 & 255;
230
+ buf[7] = 255 & low;
231
+ return `${prefix}_${b58.encode(buf)}`;
232
+ }
233
+ const fieldConfigSchema = __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
234
+ required: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(true),
235
+ returned: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(true),
236
+ input: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(true),
237
+ defaultValue: __WEBPACK_EXTERNAL_MODULE_zod__.z.any().optional(),
238
+ transform: __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
239
+ input: __WEBPACK_EXTERNAL_MODULE_zod__.z.any().optional(),
240
+ output: __WEBPACK_EXTERNAL_MODULE_zod__.z.any().optional()
241
+ }).optional(),
242
+ validator: __WEBPACK_EXTERNAL_MODULE_zod__.z.any().optional(),
243
+ unique: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().optional(),
244
+ indexed: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().optional(),
245
+ sortable: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(true),
246
+ fieldName: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().optional(),
247
+ bigint: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(false)
248
+ });
249
+ const stringFieldSchema = fieldConfigSchema.extend({
250
+ type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('string'),
251
+ minLength: __WEBPACK_EXTERNAL_MODULE_zod__.z.number().optional(),
252
+ maxLength: __WEBPACK_EXTERNAL_MODULE_zod__.z.number().optional(),
253
+ pattern: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().optional()
254
+ });
255
+ const numberFieldSchema = fieldConfigSchema.extend({
256
+ type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('number'),
257
+ min: __WEBPACK_EXTERNAL_MODULE_zod__.z.number().optional(),
258
+ max: __WEBPACK_EXTERNAL_MODULE_zod__.z.number().optional()
259
+ });
260
+ const booleanFieldSchema = fieldConfigSchema.extend({
261
+ type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('boolean')
262
+ });
263
+ const dateFieldSchema = fieldConfigSchema.extend({
264
+ type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('date'),
265
+ minDate: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().optional(),
266
+ maxDate: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().optional(),
267
+ dateOnly: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(false),
268
+ format: __WEBPACK_EXTERNAL_MODULE_zod__.z.record(__WEBPACK_EXTERNAL_MODULE_zod__.z.string(), __WEBPACK_EXTERNAL_MODULE_zod__.z.unknown()).optional()
269
+ });
270
+ const timezoneFieldSchema = fieldConfigSchema.extend({
271
+ type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('timezone'),
272
+ validateTimezone: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(true),
273
+ suggestedValues: __WEBPACK_EXTERNAL_MODULE_zod__.z.array(__WEBPACK_EXTERNAL_MODULE_zod__.z.string()).optional(),
274
+ restrictToSuggestedValues: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(false)
275
+ });
276
+ const jsonFieldSchema = fieldConfigSchema.extend({
277
+ type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('json'),
278
+ validateJson: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(true)
279
+ });
280
+ const stringArrayFieldSchema = fieldConfigSchema.extend({
281
+ type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('string[]')
282
+ });
283
+ const numberArrayFieldSchema = fieldConfigSchema.extend({
284
+ type: __WEBPACK_EXTERNAL_MODULE_zod__.z.literal('number[]')
285
+ });
286
+ __WEBPACK_EXTERNAL_MODULE_zod__.z.discriminatedUnion('type', [
287
+ stringFieldSchema,
288
+ numberFieldSchema,
289
+ booleanFieldSchema,
290
+ dateFieldSchema,
291
+ timezoneFieldSchema,
292
+ jsonFieldSchema,
293
+ stringArrayFieldSchema,
294
+ numberArrayFieldSchema
295
+ ]);
307
296
  const schema_auditLogSchema = __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
308
297
  id: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
309
298
  entityType: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
@@ -312,9 +301,9 @@ const schema_auditLogSchema = __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
312
301
  subjectId: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().optional(),
313
302
  ipAddress: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().optional(),
314
303
  userAgent: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().optional(),
315
- changes: __WEBPACK_EXTERNAL_MODULE_zod__.z.record(__WEBPACK_EXTERNAL_MODULE_zod__.z.unknown()).optional(),
316
- metadata: __WEBPACK_EXTERNAL_MODULE_zod__.z.record(__WEBPACK_EXTERNAL_MODULE_zod__.z.unknown()).optional(),
317
- createdAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().default(()=>new Date())
304
+ changes: __WEBPACK_EXTERNAL_MODULE_zod__.z.record(__WEBPACK_EXTERNAL_MODULE_zod__.z.string(), __WEBPACK_EXTERNAL_MODULE_zod__.z.unknown()).optional(),
305
+ metadata: __WEBPACK_EXTERNAL_MODULE_zod__.z.record(__WEBPACK_EXTERNAL_MODULE_zod__.z.string(), __WEBPACK_EXTERNAL_MODULE_zod__.z.unknown()).optional(),
306
+ createdAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().prefault(()=>new Date())
318
307
  });
319
308
  function getAuditLogTable(options, auditLogFields) {
320
309
  const auditLogConfig = options.tables?.auditLog;
@@ -413,49 +402,171 @@ function getAuditLogTable(options, auditLogFields) {
413
402
  order: 5
414
403
  };
415
404
  }
416
- const PolicyTypeSchema = __WEBPACK_EXTERNAL_MODULE_zod__.z["enum"]([
417
- 'cookie_banner',
418
- 'privacy_policy',
419
- 'dpa',
420
- 'terms_and_conditions',
421
- 'marketing_communications',
422
- 'age_verification',
423
- 'other'
424
- ]);
425
- const schema_consentPolicySchema = __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
405
+ const schema_consentSchema = __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
426
406
  id: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
427
- version: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
428
- type: PolicyTypeSchema,
429
- name: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
430
- effectiveDate: __WEBPACK_EXTERNAL_MODULE_zod__.z.date(),
431
- expirationDate: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().nullable().optional(),
432
- content: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
433
- contentHash: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
434
- isActive: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(true),
435
- createdAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().default(()=>new Date()),
436
- updatedAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().default(()=>new Date())
407
+ subjectId: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
408
+ domainId: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
409
+ purposeIds: __WEBPACK_EXTERNAL_MODULE_zod__.z.array(__WEBPACK_EXTERNAL_MODULE_zod__.z.string()),
410
+ metadata: __WEBPACK_EXTERNAL_MODULE_zod__.z.record(__WEBPACK_EXTERNAL_MODULE_zod__.z.string(), __WEBPACK_EXTERNAL_MODULE_zod__.z.unknown()).nullable().optional(),
411
+ policyId: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().optional(),
412
+ ipAddress: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().nullable().optional(),
413
+ userAgent: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().nullable().optional(),
414
+ status: __WEBPACK_EXTERNAL_MODULE_zod__.z["enum"]([
415
+ 'active',
416
+ 'withdrawn',
417
+ 'expired'
418
+ ]).prefault('active'),
419
+ withdrawalReason: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().nullable().optional(),
420
+ givenAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().prefault(()=>new Date()),
421
+ validUntil: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().nullable().optional(),
422
+ isActive: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(true)
437
423
  });
438
- function getConsentPolicyTable(options, policyFields) {
439
- const consentPolicyConfig = options.tables?.consentPolicy;
424
+ function getConsentTable(options, consentFields) {
425
+ const consentConfig = options.tables?.consent;
426
+ const subjectConfig = options.tables?.subject;
427
+ const domainConfig = options.tables?.domain;
428
+ const policyConfig = options.tables?.consentPolicy;
440
429
  return {
441
- entityName: consentPolicyConfig?.entityName || 'consentPolicy',
442
- entityPrefix: consentPolicyConfig?.entityPrefix || 'pol',
443
- schema: schema_consentPolicySchema,
430
+ entityName: consentConfig?.entityName || 'consent',
431
+ entityPrefix: consentConfig?.entityPrefix || 'cns',
432
+ schema: schema_consentSchema,
444
433
  fields: {
445
- version: {
434
+ subjectId: {
446
435
  type: 'string',
447
436
  required: true,
448
- fieldName: consentPolicyConfig?.fields?.version || 'version'
437
+ fieldName: consentConfig?.fields?.subjectId || 'subjectId',
438
+ references: {
439
+ model: subjectConfig?.entityName || 'subject',
440
+ field: 'id'
441
+ }
449
442
  },
450
- type: {
443
+ domainId: {
451
444
  type: 'string',
452
445
  required: true,
453
- fieldName: consentPolicyConfig?.fields?.type || 'type'
446
+ fieldName: consentConfig?.fields?.domainId || 'domainId',
447
+ references: {
448
+ model: domainConfig?.entityName || 'domain',
449
+ field: 'id'
450
+ }
454
451
  },
455
- name: {
456
- type: 'string',
457
- required: true,
458
- fieldName: consentPolicyConfig?.fields?.name || 'name'
452
+ purposeIds: {
453
+ type: 'json',
454
+ required: false,
455
+ fieldName: consentConfig?.fields?.purposeIds || 'purposeIds'
456
+ },
457
+ metadata: {
458
+ type: 'json',
459
+ required: false,
460
+ fieldName: consentConfig?.fields?.metadata || 'metadata'
461
+ },
462
+ policyId: {
463
+ type: 'string',
464
+ required: false,
465
+ fieldName: consentConfig?.fields?.policyId || 'policyId',
466
+ references: {
467
+ model: policyConfig?.entityName || 'consentPolicy',
468
+ field: 'id'
469
+ }
470
+ },
471
+ ipAddress: {
472
+ type: 'string',
473
+ required: false,
474
+ fieldName: consentConfig?.fields?.ipAddress || 'ipAddress'
475
+ },
476
+ userAgent: {
477
+ type: 'string',
478
+ required: false,
479
+ fieldName: consentConfig?.fields?.userAgent || 'userAgent'
480
+ },
481
+ status: {
482
+ type: 'string',
483
+ defaultValue: ()=>'active',
484
+ required: true,
485
+ fieldName: consentConfig?.fields?.status || 'status'
486
+ },
487
+ withdrawalReason: {
488
+ type: 'string',
489
+ required: false,
490
+ fieldName: consentConfig?.fields?.withdrawalReason || 'withdrawalReason'
491
+ },
492
+ givenAt: {
493
+ type: 'date',
494
+ defaultValue: ()=>new Date(),
495
+ required: true,
496
+ fieldName: consentConfig?.fields?.givenAt || 'givenAt'
497
+ },
498
+ validUntil: {
499
+ type: 'date',
500
+ required: false,
501
+ fieldName: consentConfig?.fields?.validUntil || 'validUntil',
502
+ transform: {
503
+ input: (val, data)=>{
504
+ if (val) return val;
505
+ const expiresIn = consentConfig?.expiresIn || 31536000;
506
+ const givenAt = data.givenAt instanceof Date ? data.givenAt : new Date();
507
+ if (expiresIn > 0) {
508
+ const validUntil = new Date(givenAt);
509
+ validUntil.setSeconds(validUntil.getSeconds() + expiresIn);
510
+ return validUntil;
511
+ }
512
+ }
513
+ }
514
+ },
515
+ isActive: {
516
+ type: 'boolean',
517
+ defaultValue: true,
518
+ required: true,
519
+ fieldName: consentConfig?.fields?.isActive || 'isActive'
520
+ },
521
+ ...consentFields || {},
522
+ ...consentConfig?.additionalFields || {}
523
+ },
524
+ order: 3
525
+ };
526
+ }
527
+ const PolicyTypeSchema = __WEBPACK_EXTERNAL_MODULE_zod__.z["enum"]([
528
+ 'cookie_banner',
529
+ 'privacy_policy',
530
+ 'dpa',
531
+ 'terms_and_conditions',
532
+ 'marketing_communications',
533
+ 'age_verification',
534
+ 'other'
535
+ ]);
536
+ const schema_consentPolicySchema = __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
537
+ id: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
538
+ version: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
539
+ type: PolicyTypeSchema,
540
+ name: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
541
+ effectiveDate: __WEBPACK_EXTERNAL_MODULE_zod__.z.date(),
542
+ expirationDate: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().nullable().optional(),
543
+ content: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
544
+ contentHash: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
545
+ isActive: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(true),
546
+ createdAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().prefault(()=>new Date()),
547
+ updatedAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().prefault(()=>new Date())
548
+ });
549
+ function getConsentPolicyTable(options, policyFields) {
550
+ const consentPolicyConfig = options.tables?.consentPolicy;
551
+ return {
552
+ entityName: consentPolicyConfig?.entityName || 'consentPolicy',
553
+ entityPrefix: consentPolicyConfig?.entityPrefix || 'pol',
554
+ schema: schema_consentPolicySchema,
555
+ fields: {
556
+ version: {
557
+ type: 'string',
558
+ required: true,
559
+ fieldName: consentPolicyConfig?.fields?.version || 'version'
560
+ },
561
+ type: {
562
+ type: 'string',
563
+ required: true,
564
+ fieldName: consentPolicyConfig?.fields?.type || 'type'
565
+ },
566
+ name: {
567
+ type: 'string',
568
+ required: true,
569
+ fieldName: consentPolicyConfig?.fields?.name || 'name'
459
570
  },
460
571
  effectiveDate: {
461
572
  type: 'date',
@@ -500,12 +611,12 @@ const schema_purposeSchema = __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
500
611
  code: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
501
612
  name: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
502
613
  description: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
503
- isEssential: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(false),
614
+ isEssential: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(false),
504
615
  dataCategory: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().nullish(),
505
616
  legalBasis: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().nullish(),
506
- isActive: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(true),
507
- createdAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().default(()=>new Date()),
508
- updatedAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().default(()=>new Date())
617
+ isActive: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(true),
618
+ createdAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().prefault(()=>new Date()),
619
+ updatedAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().prefault(()=>new Date())
509
620
  });
510
621
  function getPurposeTable(options, purposeFields) {
511
622
  const purposeConfig = options.tables?.consentPurpose;
@@ -574,9 +685,9 @@ const schema_consentRecordSchema = __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
574
685
  subjectId: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
575
686
  consentId: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().optional(),
576
687
  actionType: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
577
- details: __WEBPACK_EXTERNAL_MODULE_zod__.z.record(__WEBPACK_EXTERNAL_MODULE_zod__.z.unknown()).optional(),
578
- createdAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().default(()=>new Date()),
579
- updatedAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().default(()=>new Date())
688
+ details: __WEBPACK_EXTERNAL_MODULE_zod__.z.record(__WEBPACK_EXTERNAL_MODULE_zod__.z.string(), __WEBPACK_EXTERNAL_MODULE_zod__.z.unknown()).optional(),
689
+ createdAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().prefault(()=>new Date()),
690
+ updatedAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().prefault(()=>new Date())
580
691
  });
581
692
  function getConsentRecordTable(options, recordFields) {
582
693
  const recordConfig = options.tables?.record;
@@ -627,137 +738,15 @@ function getConsentRecordTable(options, recordFields) {
627
738
  order: 4
628
739
  };
629
740
  }
630
- const schema_consentSchema = __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
631
- id: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
632
- subjectId: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
633
- domainId: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
634
- purposeIds: __WEBPACK_EXTERNAL_MODULE_zod__.z.array(__WEBPACK_EXTERNAL_MODULE_zod__.z.string()),
635
- metadata: __WEBPACK_EXTERNAL_MODULE_zod__.z.record(__WEBPACK_EXTERNAL_MODULE_zod__.z.unknown()).nullable().optional(),
636
- policyId: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().optional(),
637
- ipAddress: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().nullable().optional(),
638
- userAgent: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().nullable().optional(),
639
- status: __WEBPACK_EXTERNAL_MODULE_zod__.z["enum"]([
640
- 'active',
641
- 'withdrawn',
642
- 'expired'
643
- ]).default('active'),
644
- withdrawalReason: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().nullable().optional(),
645
- givenAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().default(()=>new Date()),
646
- validUntil: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().nullable().optional(),
647
- isActive: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(true)
648
- });
649
- function getConsentTable(options, consentFields) {
650
- const consentConfig = options.tables?.consent;
651
- const subjectConfig = options.tables?.subject;
652
- const domainConfig = options.tables?.domain;
653
- const policyConfig = options.tables?.consentPolicy;
654
- return {
655
- entityName: consentConfig?.entityName || 'consent',
656
- entityPrefix: consentConfig?.entityPrefix || 'cns',
657
- schema: schema_consentSchema,
658
- fields: {
659
- subjectId: {
660
- type: 'string',
661
- required: true,
662
- fieldName: consentConfig?.fields?.subjectId || 'subjectId',
663
- references: {
664
- model: subjectConfig?.entityName || 'subject',
665
- field: 'id'
666
- }
667
- },
668
- domainId: {
669
- type: 'string',
670
- required: true,
671
- fieldName: consentConfig?.fields?.domainId || 'domainId',
672
- references: {
673
- model: domainConfig?.entityName || 'domain',
674
- field: 'id'
675
- }
676
- },
677
- purposeIds: {
678
- type: 'json',
679
- required: false,
680
- fieldName: consentConfig?.fields?.purposeIds || 'purposeIds'
681
- },
682
- metadata: {
683
- type: 'json',
684
- required: false,
685
- fieldName: consentConfig?.fields?.metadata || 'metadata'
686
- },
687
- policyId: {
688
- type: 'string',
689
- required: false,
690
- fieldName: consentConfig?.fields?.policyId || 'policyId',
691
- references: {
692
- model: policyConfig?.entityName || 'consentPolicy',
693
- field: 'id'
694
- }
695
- },
696
- ipAddress: {
697
- type: 'string',
698
- required: false,
699
- fieldName: consentConfig?.fields?.ipAddress || 'ipAddress'
700
- },
701
- userAgent: {
702
- type: 'string',
703
- required: false,
704
- fieldName: consentConfig?.fields?.userAgent || 'userAgent'
705
- },
706
- status: {
707
- type: 'string',
708
- defaultValue: ()=>'active',
709
- required: true,
710
- fieldName: consentConfig?.fields?.status || 'status'
711
- },
712
- withdrawalReason: {
713
- type: 'string',
714
- required: false,
715
- fieldName: consentConfig?.fields?.withdrawalReason || 'withdrawalReason'
716
- },
717
- givenAt: {
718
- type: 'date',
719
- defaultValue: ()=>new Date(),
720
- required: true,
721
- fieldName: consentConfig?.fields?.givenAt || 'givenAt'
722
- },
723
- validUntil: {
724
- type: 'date',
725
- required: false,
726
- fieldName: consentConfig?.fields?.validUntil || 'validUntil',
727
- transform: {
728
- input: (val, data)=>{
729
- if (val) return val;
730
- const expiresIn = consentConfig?.expiresIn || 31536000;
731
- const givenAt = data.givenAt instanceof Date ? data.givenAt : new Date();
732
- if (expiresIn > 0) {
733
- const validUntil = new Date(givenAt);
734
- validUntil.setSeconds(validUntil.getSeconds() + expiresIn);
735
- return validUntil;
736
- }
737
- }
738
- }
739
- },
740
- isActive: {
741
- type: 'boolean',
742
- defaultValue: true,
743
- required: true,
744
- fieldName: consentConfig?.fields?.isActive || 'isActive'
745
- },
746
- ...consentFields || {},
747
- ...consentConfig?.additionalFields || {}
748
- },
749
- order: 3
750
- };
751
- }
752
741
  const schema_domainSchema = __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
753
742
  id: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
754
743
  name: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().min(1),
755
744
  description: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().optional(),
756
- allowedOrigins: __WEBPACK_EXTERNAL_MODULE_zod__.z.array(__WEBPACK_EXTERNAL_MODULE_zod__.z.string()).optional().default([]),
757
- isVerified: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(true),
758
- isActive: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(true),
759
- createdAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().default(()=>new Date()),
760
- updatedAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().default(()=>new Date())
745
+ allowedOrigins: __WEBPACK_EXTERNAL_MODULE_zod__.z.array(__WEBPACK_EXTERNAL_MODULE_zod__.z.string()).optional().prefault([]),
746
+ isVerified: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(true),
747
+ isActive: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(true),
748
+ createdAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().prefault(()=>new Date()),
749
+ updatedAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().prefault(()=>new Date())
761
750
  });
762
751
  function getDomainTable(options, domainFields) {
763
752
  const domainConfig = options.tables?.domain;
@@ -814,12 +803,12 @@ function getDomainTable(options, domainFields) {
814
803
  }
815
804
  const schema_subjectSchema = __WEBPACK_EXTERNAL_MODULE_zod__.z.object({
816
805
  id: __WEBPACK_EXTERNAL_MODULE_zod__.z.string(),
817
- isIdentified: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().default(false),
806
+ isIdentified: __WEBPACK_EXTERNAL_MODULE_zod__.z.boolean().prefault(false),
818
807
  externalId: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().nullable().optional(),
819
808
  identityProvider: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().optional(),
820
809
  lastIpAddress: __WEBPACK_EXTERNAL_MODULE_zod__.z.string().optional(),
821
- createdAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().default(()=>new Date()),
822
- updatedAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().default(()=>new Date())
810
+ createdAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().prefault(()=>new Date()),
811
+ updatedAt: __WEBPACK_EXTERNAL_MODULE_zod__.z.date().prefault(()=>new Date())
823
812
  });
824
813
  function getSubjectTable(options, subjectFields) {
825
814
  const subjectConfig = options.tables?.subject;
@@ -898,28 +887,177 @@ const getConsentTables = (options)=>{
898
887
  ...pluginTables
899
888
  };
900
889
  };
901
- const createEntityTransformer = (_config, options)=>{
902
- const schema = getConsentTables(options);
903
- function getField(model, field) {
904
- if ('id' === field) return field;
905
- const f = schema[model].fields[field];
906
- return f.fieldName || field;
907
- }
908
- function operatorToPrismaOperator(operator) {
909
- switch(operator){
910
- case 'starts_with':
911
- return 'startsWith';
912
- case 'ends_with':
913
- return 'endsWith';
914
- default:
915
- return operator;
916
- }
917
- }
918
- function getEntityName(model) {
919
- return schema[model].entityName;
890
+ function dialect_getDatabaseType(db) {
891
+ if (!db) return null;
892
+ if ('dialect' in db) return dialect_getDatabaseType(db.dialect);
893
+ if (db && 'object' == typeof db && 'createDriver' in db) {
894
+ if (db instanceof __WEBPACK_EXTERNAL_MODULE_kysely__.SqliteDialect) return 'sqlite';
895
+ if (db instanceof __WEBPACK_EXTERNAL_MODULE_kysely__.MysqlDialect) return 'mysql';
896
+ if (db instanceof __WEBPACK_EXTERNAL_MODULE_kysely__.PostgresDialect) return 'postgres';
897
+ if (db instanceof __WEBPACK_EXTERNAL_MODULE_kysely__.MssqlDialect) return 'mssql';
920
898
  }
921
- const useDatabaseGeneratedId = options?.advanced?.generateId === false;
899
+ if (db && 'object' == typeof db && 'aggregate' in db) return 'sqlite';
900
+ if (db && 'object' == typeof db && 'getConnection' in db) return 'mysql';
901
+ if (db && 'object' == typeof db && 'connect' in db) return 'postgres';
902
+ return null;
903
+ }
904
+ const createKyselyAdapter = async (config)=>{
905
+ const db = config.database;
906
+ if (!db) return {
907
+ kysely: null,
908
+ databaseType: null
909
+ };
910
+ if (db && 'object' == typeof db && 'db' in db) {
911
+ const kyselyConfig = db;
912
+ return {
913
+ kysely: kyselyConfig.db,
914
+ databaseType: kyselyConfig.type
915
+ };
916
+ }
917
+ if (db && 'object' == typeof db && 'dialect' in db) {
918
+ const dialectConfig = db;
919
+ return {
920
+ kysely: new __WEBPACK_EXTERNAL_MODULE_kysely__.Kysely({
921
+ dialect: dialectConfig.dialect
922
+ }),
923
+ databaseType: dialectConfig.type
924
+ };
925
+ }
926
+ let dialect;
927
+ const databaseType = dialect_getDatabaseType(db);
928
+ if (db && 'object' == typeof db && 'createDriver' in db) dialect = db;
929
+ if (db && 'object' == typeof db && 'aggregate' in db) dialect = new __WEBPACK_EXTERNAL_MODULE_kysely__.SqliteDialect({
930
+ database: db
931
+ });
932
+ if (db && 'object' == typeof db && 'getConnection' in db) dialect = new __WEBPACK_EXTERNAL_MODULE_kysely__.MysqlDialect({
933
+ pool: db
934
+ });
935
+ if (db && 'object' == typeof db && 'connect' in db) dialect = new __WEBPACK_EXTERNAL_MODULE_kysely__.PostgresDialect({
936
+ pool: db
937
+ });
938
+ return {
939
+ kysely: dialect ? new __WEBPACK_EXTERNAL_MODULE_kysely__.Kysely({
940
+ dialect
941
+ }) : null,
942
+ databaseType
943
+ };
944
+ };
945
+ function applyDefaultValue(inputValue, field, operation) {
946
+ if ('update' === operation) return inputValue;
947
+ if (null == inputValue && field.defaultValue) {
948
+ if ('function' == typeof field.defaultValue) return field.defaultValue();
949
+ return field.defaultValue;
950
+ }
951
+ return inputValue;
952
+ }
953
+ const createEntityTransformer = (db, config, options)=>{
954
+ const schema = getConsentTables(options);
955
+ function getField(model, field) {
956
+ if ('id' === field) return field;
957
+ const f = schema[model].fields[field];
958
+ return f.fieldName || field;
959
+ }
960
+ function getSchema(entityName) {
961
+ const schema = config.schema || db._.fullSchema;
962
+ if (!schema) throw new error_class_DoubleTieError('The schema could not be found. Please ensure the schema is properly configured in the adapter.', {
963
+ code: error_codes_ERROR_CODES.DATABASE_CONNECTION_ERROR,
964
+ status: 500,
965
+ meta: {
966
+ provider: config.provider
967
+ }
968
+ });
969
+ const model = getEntityName(entityName);
970
+ const schemaModel = schema[model];
971
+ if (!schemaModel) throw new error_class_DoubleTieError(`The model "${model}" does not exist in the schema. Please verify the model name and ensure it is defined in your schema.`, {
972
+ code: error_codes_ERROR_CODES.DATABASE_QUERY_ERROR,
973
+ status: 404,
974
+ meta: {
975
+ model,
976
+ availableModels: Object.keys(schema)
977
+ }
978
+ });
979
+ return schemaModel;
980
+ }
981
+ const getEntityName = (model)=>{
982
+ if (schema[model].entityName !== model) return schema[model].entityName;
983
+ if (config.usePlural) return `${model}s`;
984
+ return model;
985
+ };
986
+ function convertWhereClause(where, model) {
987
+ const schemaModel = getSchema(model);
988
+ if (!where) return [];
989
+ if (1 === where.length) {
990
+ const w = where[0];
991
+ if (!w) return [];
992
+ const field = getField(model, w.field);
993
+ if (!schemaModel[field]) throw new error_class_DoubleTieError(`The field "${field}" does not exist in model "${model}". Please verify the field name and ensure it is defined in your schema.`, {
994
+ code: error_codes_ERROR_CODES.DATABASE_QUERY_ERROR,
995
+ status: 404,
996
+ meta: {
997
+ model,
998
+ field,
999
+ availableFields: Object.keys(schemaModel)
1000
+ }
1001
+ });
1002
+ if ('in' === w.operator) {
1003
+ if (!Array.isArray(w.value)) throw new error_class_DoubleTieError(`The value for the field "${field}" must be an array when using the "in" operator.`, {
1004
+ code: error_codes_ERROR_CODES.BAD_REQUEST,
1005
+ status: 400,
1006
+ meta: {
1007
+ field,
1008
+ operator: w.operator,
1009
+ expectedType: 'array',
1010
+ actualType: typeof w.value
1011
+ }
1012
+ });
1013
+ return [
1014
+ (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.inArray)(schemaModel[field], w.value)
1015
+ ];
1016
+ }
1017
+ if ('contains' === w.operator) return [
1018
+ (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.like)(schemaModel[field], `%${w.value}%`)
1019
+ ];
1020
+ if ('starts_with' === w.operator) return [
1021
+ (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.like)(schemaModel[field], `${w.value}%`)
1022
+ ];
1023
+ if ('ends_with' === w.operator) return [
1024
+ (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.like)(schemaModel[field], `%${w.value}`)
1025
+ ];
1026
+ return [
1027
+ (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.eq)(schemaModel[field], w.value)
1028
+ ];
1029
+ }
1030
+ const andGroup = where.filter((w)=>'AND' === w.connector || !w.connector);
1031
+ const orGroup = where.filter((w)=>'OR' === w.connector);
1032
+ const andClause = (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.and)(...andGroup.map((w)=>{
1033
+ const field = getField(model, w.field);
1034
+ if ('in' === w.operator) {
1035
+ if (!Array.isArray(w.value)) throw new error_class_DoubleTieError(`The value for the field "${field}" must be an array when using the "in" operator.`, {
1036
+ code: error_codes_ERROR_CODES.BAD_REQUEST,
1037
+ status: 400,
1038
+ meta: {
1039
+ field,
1040
+ operator: w.operator,
1041
+ expectedType: 'array',
1042
+ actualType: typeof w.value
1043
+ }
1044
+ });
1045
+ return (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.inArray)(schemaModel[field], w.value);
1046
+ }
1047
+ return (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.eq)(schemaModel[field], w.value);
1048
+ }));
1049
+ const orClause = (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.or)(...orGroup.map((w)=>{
1050
+ const field = getField(model, w.field);
1051
+ return (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.eq)(schemaModel[field], w.value);
1052
+ }));
1053
+ const clause = [];
1054
+ if (andGroup.length && andClause) clause.push(andClause);
1055
+ if (orGroup.length && orClause) clause.push(orClause);
1056
+ return clause;
1057
+ }
1058
+ const useDatabaseGeneratedId = options?.advanced?.generateId === false;
922
1059
  return {
1060
+ getSchema,
923
1061
  transformInput (data, model, action) {
924
1062
  const transformedData = useDatabaseGeneratedId || 'update' === action ? {} : {
925
1063
  id: options.advanced?.generateId ? options.advanced.generateId({
@@ -929,7 +1067,7 @@ const createEntityTransformer = (_config, options)=>{
929
1067
  const fields = schema[model].fields;
930
1068
  for(const field in fields)if (Object.hasOwn(fields, field)) {
931
1069
  const value = data[field];
932
- if (void 0 === value && (!fields[field].defaultValue || 'update' === action)) continue;
1070
+ if (void 0 === value && !fields[field].defaultValue) continue;
933
1071
  transformedData[fields[field].fieldName || field] = applyDefaultValue(value, fields[field], action);
934
1072
  }
935
1073
  return transformedData;
@@ -948,175 +1086,116 @@ const createEntityTransformer = (_config, options)=>{
948
1086
  }
949
1087
  return transformedData;
950
1088
  },
951
- convertWhereClause (model, where) {
952
- if (!where) return {};
953
- if (1 === where.length) {
954
- const w = where[0];
955
- if (!w) return;
956
- return {
957
- [getField(model, w.field)]: 'eq' !== w.operator && w.operator ? {
958
- [operatorToPrismaOperator(w.operator)]: w.value
959
- } : w.value
960
- };
1089
+ convertWhereClause,
1090
+ withReturning: async (model, builder, data, where)=>{
1091
+ if ('mysql' !== config.provider) {
1092
+ const c = await builder.returning();
1093
+ return c[0];
1094
+ }
1095
+ await builder.execute();
1096
+ const schemaModel = getSchema(model);
1097
+ const builderVal = builder.config?.values;
1098
+ if (where?.length) {
1099
+ const clause = convertWhereClause(where, model);
1100
+ const res = await db.select().from(schemaModel).where(...clause);
1101
+ return res[0];
1102
+ }
1103
+ if (builderVal) {
1104
+ const tId = builderVal[0]?.id.value;
1105
+ const res = await db.select().from(schemaModel).where((0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.eq)(schemaModel.id, tId));
1106
+ return res[0];
1107
+ }
1108
+ if (data.id) {
1109
+ const res = await db.select().from(schemaModel).where((0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.eq)(schemaModel.id, data.id));
1110
+ return res[0];
961
1111
  }
962
- const and = where.filter((w)=>'AND' === w.connector || !w.connector);
963
- const or = where.filter((w)=>'OR' === w.connector);
964
- const andClause = and.map((w)=>({
965
- [getField(model, w.field)]: 'eq' !== w.operator && w.operator ? {
966
- [operatorToPrismaOperator(w.operator)]: w.value
967
- } : w.value
968
- }));
969
- const orClause = or.map((w)=>({
970
- [getField(model, w.field)]: {
971
- [w.operator || 'eq']: w.value
972
- }
973
- }));
974
- return {
975
- ...andClause.length ? {
976
- AND: andClause
977
- } : {},
978
- ...orClause.length ? {
979
- OR: orClause
980
- } : {}
981
- };
982
- },
983
- convertSelect: (select, model)=>{
984
- if (!select || !model) return;
985
- return select.reduce((prev, cur)=>{
986
- const field = getField(model, cur);
987
- return Object.assign({}, prev, {
988
- [field]: true
989
- });
990
- }, {});
991
1112
  },
992
- getEntityName,
993
- getField
1113
+ getField,
1114
+ getEntityName
994
1115
  };
995
1116
  };
996
- const prismaAdapter = (prisma, config)=>(options)=>{
997
- const db = prisma;
998
- const { transformInput, transformOutput, convertWhereClause, convertSelect, getEntityName, getField } = createEntityTransformer(config, options);
1117
+ function checkMissingFields(schema, model, values) {
1118
+ if (!schema) throw new error_class_DoubleTieError('The schema could not be found. Please ensure the schema is properly configured in the adapter.', {
1119
+ code: error_codes_ERROR_CODES.DATABASE_CONNECTION_ERROR,
1120
+ status: 500
1121
+ });
1122
+ for(const key in values)if (!schema[key]) throw new error_class_DoubleTieError(`The field "${key}" does not exist in the "${model}" schema. Please update your drizzle schema or re-generate using "npx @c15t/cli generate".`);
1123
+ }
1124
+ const drizzleAdapter = (db, config)=>(options)=>{
1125
+ const { transformInput, transformOutput, convertWhereClause, getSchema, withReturning, getField, getEntityName } = createEntityTransformer(db, config, options);
999
1126
  return {
1000
- id: 'prisma',
1127
+ id: 'drizzle',
1001
1128
  async create (data) {
1002
- const { model, data: values, select } = data;
1129
+ const { model, data: values } = data;
1003
1130
  const transformed = transformInput(values, model, 'create');
1004
- if (!db[getEntityName(model)]) throw new error_class_DoubleTieError(`The model "${model}" does not exist in the Prisma client. Please verify the model name and ensure it is defined in your Prisma schema.`, {
1005
- code: error_codes_ERROR_CODES.DATABASE_QUERY_ERROR,
1006
- status: 500,
1007
- meta: {
1008
- model,
1009
- availableModels: Object.keys(prisma).filter((key)=>!key.startsWith('$') && !key.startsWith('_'))
1010
- }
1011
- });
1012
- const result = await db[getEntityName(model)].create({
1013
- data: transformed,
1014
- select: convertSelect(select, model)
1015
- });
1016
- return transformOutput(result, model, select);
1131
+ const schemaModel = getSchema(model);
1132
+ checkMissingFields(schemaModel, getEntityName(model), transformed);
1133
+ const builder = db.insert(schemaModel).values(transformed);
1134
+ const returned = await withReturning(model, builder, transformed);
1135
+ return transformOutput(returned, model);
1017
1136
  },
1018
1137
  async findOne (data) {
1019
1138
  const { model, where, select } = data;
1020
- const whereClause = convertWhereClause(model, where);
1021
- if (!db[getEntityName(model)]) throw new error_class_DoubleTieError(`The model "${model}" does not exist in the Prisma client. Please verify the model name and ensure it is defined in your Prisma schema.`, {
1022
- code: error_codes_ERROR_CODES.DATABASE_QUERY_ERROR,
1023
- status: 500,
1024
- meta: {
1025
- model,
1026
- availableModels: Object.keys(prisma).filter((key)=>!key.startsWith('$') && !key.startsWith('_'))
1027
- }
1028
- });
1029
- const result = await db[getEntityName(model)].findFirst({
1030
- where: whereClause,
1031
- select: convertSelect(select, model)
1032
- });
1033
- return transformOutput(result, model, select);
1139
+ const schemaModel = getSchema(model);
1140
+ const clause = convertWhereClause(where, model);
1141
+ const res = await db.select().from(schemaModel).where(...clause);
1142
+ if (!res.length) return null;
1143
+ return transformOutput(res[0], model, select);
1034
1144
  },
1035
1145
  async findMany (data) {
1036
- const { model, where, limit, offset, sortBy } = data;
1037
- const whereClause = convertWhereClause(model, where);
1038
- if (!db[getEntityName(model)]) throw new error_class_DoubleTieError(`The model "${model}" does not exist in the Prisma client. Please verify the model name and ensure it is defined in your Prisma schema.`, {
1039
- code: error_codes_ERROR_CODES.DATABASE_QUERY_ERROR,
1040
- status: 500,
1041
- meta: {
1042
- model,
1043
- availableModels: Object.keys(prisma).filter((key)=>!key.startsWith('$') && !key.startsWith('_'))
1044
- }
1045
- });
1046
- const result = await db[getEntityName(model)].findMany({
1047
- where: whereClause,
1048
- take: limit || 100,
1049
- skip: offset || 0,
1050
- ...sortBy?.field ? {
1051
- orderBy: {
1052
- [getField(model, sortBy.field)]: 'desc' === sortBy.direction ? 'desc' : 'asc'
1053
- }
1054
- } : {}
1055
- });
1056
- return result.map((r)=>transformOutput(r, model));
1146
+ const { model, where, sortBy, limit, offset } = data;
1147
+ const schemaModel = getSchema(model);
1148
+ const clause = where ? convertWhereClause(where, model) : [];
1149
+ const sortFn = sortBy?.direction === 'desc' ? __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.desc : __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.asc;
1150
+ const builder = db.select().from(schemaModel).limit(limit || 100).offset(offset || 0);
1151
+ if (sortBy?.field) builder.orderBy(sortFn(schemaModel[getField(model, sortBy?.field)]));
1152
+ const res = await builder.where(...clause);
1153
+ return res.map((r)=>transformOutput(r, model));
1057
1154
  },
1058
1155
  async count (data) {
1059
1156
  const { model, where } = data;
1060
- const whereClause = convertWhereClause(model, where);
1061
- if (!db[getEntityName(model)]) throw new error_class_DoubleTieError(`The model "${model}" does not exist in the Prisma client. Please verify the model name and ensure it is defined in your Prisma schema.`, {
1062
- code: error_codes_ERROR_CODES.DATABASE_QUERY_ERROR,
1063
- status: 500,
1064
- meta: {
1065
- model,
1066
- availableModels: Object.keys(prisma).filter((key)=>!key.startsWith('$') && !key.startsWith('_'))
1067
- }
1068
- });
1069
- const result = await db[getEntityName(model)].count({
1070
- where: whereClause
1071
- });
1072
- return result;
1157
+ const schemaModel = getSchema(model);
1158
+ const clause = where ? convertWhereClause(where, model) : [];
1159
+ const res = await db.select({
1160
+ count: (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.count)()
1161
+ }).from(schemaModel).where(...clause);
1162
+ return res[0].count;
1073
1163
  },
1074
1164
  async update (data) {
1075
1165
  const { model, where, update } = data;
1076
- const whereClause = convertWhereClause(model, where);
1166
+ const schemaModel = getSchema(model);
1167
+ const clause = convertWhereClause(where, model);
1077
1168
  const transformed = transformInput(update, model, 'update');
1078
- try {
1079
- const result = await db[getEntityName(model)].update({
1080
- where: whereClause,
1081
- data: transformed
1082
- });
1083
- return transformOutput(result, model);
1084
- } catch {
1085
- return null;
1086
- }
1169
+ const result = await db.update(schemaModel).set(transformed).where(clause).returning();
1170
+ return result.length ? transformOutput(result[0], model) : null;
1087
1171
  },
1088
1172
  async updateMany (data) {
1089
- const { model, where, update } = data;
1090
- const whereClause = convertWhereClause(model, where);
1091
- const transformed = transformInput(update, model, 'update');
1092
- const result = await db[getEntityName(model)].updateMany({
1093
- where: whereClause,
1094
- data: transformed
1095
- });
1096
- return result ? result.count : 0;
1173
+ const { model, where, update: values } = data;
1174
+ const schemaModel = getSchema(model);
1175
+ const clause = convertWhereClause(where, model);
1176
+ const transformed = transformInput(values, model, 'update');
1177
+ const builder = db.update(schemaModel).set(transformed).where(...clause);
1178
+ const res = await builder;
1179
+ return res ? res.changes : 0;
1097
1180
  },
1098
1181
  async delete (data) {
1099
1182
  const { model, where } = data;
1100
- const whereClause = convertWhereClause(model, where);
1101
- try {
1102
- await db[getEntityName(model)].delete({
1103
- where: whereClause
1104
- });
1105
- } catch {}
1183
+ const schemaModel = getSchema(model);
1184
+ const clause = convertWhereClause(where, model);
1185
+ const builder = db.delete(schemaModel).where(...clause);
1186
+ await builder;
1106
1187
  },
1107
1188
  async deleteMany (data) {
1108
1189
  const { model, where } = data;
1109
- const whereClause = convertWhereClause(model, where);
1110
- const result = await db[getEntityName(model)].deleteMany({
1111
- where: whereClause
1112
- });
1113
- return result ? result.count : 0;
1190
+ const schemaModel = getSchema(model);
1191
+ const clause = convertWhereClause(where, model);
1192
+ const result = await db.delete(schemaModel).where(clause);
1193
+ return result ? result.rowCount : 0;
1114
1194
  },
1115
1195
  async transaction (data) {
1116
1196
  const { callback } = data;
1117
- return db.$transaction(async (tx)=>{
1118
- const txClient = tx;
1119
- const transactionAdapter = prismaAdapter(txClient, config)(options);
1197
+ return await db.transaction(async (tx)=>{
1198
+ const transactionAdapter = drizzleAdapter(tx, config)(options);
1120
1199
  return await callback(transactionAdapter);
1121
1200
  });
1122
1201
  },
@@ -1303,114 +1382,28 @@ const memoryAdapter = (db)=>(options)=>{
1303
1382
  }
1304
1383
  };
1305
1384
  };
1306
- const drizzle_adapter_createEntityTransformer = (db, config, options)=>{
1385
+ const prisma_adapter_createEntityTransformer = (_config, options)=>{
1307
1386
  const schema = getConsentTables(options);
1308
1387
  function getField(model, field) {
1309
1388
  if ('id' === field) return field;
1310
1389
  const f = schema[model].fields[field];
1311
1390
  return f.fieldName || field;
1312
1391
  }
1313
- function getSchema(entityName) {
1314
- const schema = config.schema || db._.fullSchema;
1315
- if (!schema) throw new error_class_DoubleTieError('The schema could not be found. Please ensure the schema is properly configured in the adapter.', {
1316
- code: error_codes_ERROR_CODES.DATABASE_CONNECTION_ERROR,
1317
- status: 500,
1318
- meta: {
1319
- provider: config.provider
1320
- }
1321
- });
1322
- const model = getEntityName(entityName);
1323
- const schemaModel = schema[model];
1324
- if (!schemaModel) throw new error_class_DoubleTieError(`The model "${model}" does not exist in the schema. Please verify the model name and ensure it is defined in your schema.`, {
1325
- code: error_codes_ERROR_CODES.DATABASE_QUERY_ERROR,
1326
- status: 404,
1327
- meta: {
1328
- model,
1329
- availableModels: Object.keys(schema)
1330
- }
1331
- });
1332
- return schemaModel;
1333
- }
1334
- const getEntityName = (model)=>{
1335
- if (schema[model].entityName !== model) return schema[model].entityName;
1336
- if (config.usePlural) return `${model}s`;
1337
- return model;
1338
- };
1339
- function convertWhereClause(where, model) {
1340
- const schemaModel = getSchema(model);
1341
- if (!where) return [];
1342
- if (1 === where.length) {
1343
- const w = where[0];
1344
- if (!w) return [];
1345
- const field = getField(model, w.field);
1346
- if (!schemaModel[field]) throw new error_class_DoubleTieError(`The field "${field}" does not exist in model "${model}". Please verify the field name and ensure it is defined in your schema.`, {
1347
- code: error_codes_ERROR_CODES.DATABASE_QUERY_ERROR,
1348
- status: 404,
1349
- meta: {
1350
- model,
1351
- field,
1352
- availableFields: Object.keys(schemaModel)
1353
- }
1354
- });
1355
- if ('in' === w.operator) {
1356
- if (!Array.isArray(w.value)) throw new error_class_DoubleTieError(`The value for the field "${field}" must be an array when using the "in" operator.`, {
1357
- code: error_codes_ERROR_CODES.BAD_REQUEST,
1358
- status: 400,
1359
- meta: {
1360
- field,
1361
- operator: w.operator,
1362
- expectedType: 'array',
1363
- actualType: typeof w.value
1364
- }
1365
- });
1366
- return [
1367
- (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.inArray)(schemaModel[field], w.value)
1368
- ];
1369
- }
1370
- if ('contains' === w.operator) return [
1371
- (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.like)(schemaModel[field], `%${w.value}%`)
1372
- ];
1373
- if ('starts_with' === w.operator) return [
1374
- (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.like)(schemaModel[field], `${w.value}%`)
1375
- ];
1376
- if ('ends_with' === w.operator) return [
1377
- (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.like)(schemaModel[field], `%${w.value}`)
1378
- ];
1379
- return [
1380
- (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.eq)(schemaModel[field], w.value)
1381
- ];
1392
+ function operatorToPrismaOperator(operator) {
1393
+ switch(operator){
1394
+ case 'starts_with':
1395
+ return 'startsWith';
1396
+ case 'ends_with':
1397
+ return 'endsWith';
1398
+ default:
1399
+ return operator;
1382
1400
  }
1383
- const andGroup = where.filter((w)=>'AND' === w.connector || !w.connector);
1384
- const orGroup = where.filter((w)=>'OR' === w.connector);
1385
- const andClause = (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.and)(...andGroup.map((w)=>{
1386
- const field = getField(model, w.field);
1387
- if ('in' === w.operator) {
1388
- if (!Array.isArray(w.value)) throw new error_class_DoubleTieError(`The value for the field "${field}" must be an array when using the "in" operator.`, {
1389
- code: error_codes_ERROR_CODES.BAD_REQUEST,
1390
- status: 400,
1391
- meta: {
1392
- field,
1393
- operator: w.operator,
1394
- expectedType: 'array',
1395
- actualType: typeof w.value
1396
- }
1397
- });
1398
- return (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.inArray)(schemaModel[field], w.value);
1399
- }
1400
- return (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.eq)(schemaModel[field], w.value);
1401
- }));
1402
- const orClause = (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.or)(...orGroup.map((w)=>{
1403
- const field = getField(model, w.field);
1404
- return (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.eq)(schemaModel[field], w.value);
1405
- }));
1406
- const clause = [];
1407
- if (andGroup.length && andClause) clause.push(andClause);
1408
- if (orGroup.length && orClause) clause.push(orClause);
1409
- return clause;
1401
+ }
1402
+ function getEntityName(model) {
1403
+ return schema[model].entityName;
1410
1404
  }
1411
1405
  const useDatabaseGeneratedId = options?.advanced?.generateId === false;
1412
1406
  return {
1413
- getSchema,
1414
1407
  transformInput (data, model, action) {
1415
1408
  const transformedData = useDatabaseGeneratedId || 'update' === action ? {} : {
1416
1409
  id: options.advanced?.generateId ? options.advanced.generateId({
@@ -1420,7 +1413,7 @@ const drizzle_adapter_createEntityTransformer = (db, config, options)=>{
1420
1413
  const fields = schema[model].fields;
1421
1414
  for(const field in fields)if (Object.hasOwn(fields, field)) {
1422
1415
  const value = data[field];
1423
- if (void 0 === value && !fields[field].defaultValue) continue;
1416
+ if (void 0 === value && (!fields[field].defaultValue || 'update' === action)) continue;
1424
1417
  transformedData[fields[field].fieldName || field] = applyDefaultValue(value, fields[field], action);
1425
1418
  }
1426
1419
  return transformedData;
@@ -1439,210 +1432,181 @@ const drizzle_adapter_createEntityTransformer = (db, config, options)=>{
1439
1432
  }
1440
1433
  return transformedData;
1441
1434
  },
1442
- convertWhereClause,
1443
- withReturning: async (model, builder, data, where)=>{
1444
- if ('mysql' !== config.provider) {
1445
- const c = await builder.returning();
1446
- return c[0];
1447
- }
1448
- await builder.execute();
1449
- const schemaModel = getSchema(model);
1450
- const builderVal = builder.config?.values;
1451
- if (where?.length) {
1452
- const clause = convertWhereClause(where, model);
1453
- const res = await db.select().from(schemaModel).where(...clause);
1454
- return res[0];
1455
- }
1456
- if (builderVal) {
1457
- const tId = builderVal[0]?.id.value;
1458
- const res = await db.select().from(schemaModel).where((0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.eq)(schemaModel.id, tId));
1459
- return res[0];
1460
- }
1461
- if (data.id) {
1462
- const res = await db.select().from(schemaModel).where((0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.eq)(schemaModel.id, data.id));
1463
- return res[0];
1435
+ convertWhereClause (model, where) {
1436
+ if (!where) return {};
1437
+ if (1 === where.length) {
1438
+ const w = where[0];
1439
+ if (!w) return;
1440
+ return {
1441
+ [getField(model, w.field)]: 'eq' !== w.operator && w.operator ? {
1442
+ [operatorToPrismaOperator(w.operator)]: w.value
1443
+ } : w.value
1444
+ };
1464
1445
  }
1446
+ const and = where.filter((w)=>'AND' === w.connector || !w.connector);
1447
+ const or = where.filter((w)=>'OR' === w.connector);
1448
+ const andClause = and.map((w)=>({
1449
+ [getField(model, w.field)]: 'eq' !== w.operator && w.operator ? {
1450
+ [operatorToPrismaOperator(w.operator)]: w.value
1451
+ } : w.value
1452
+ }));
1453
+ const orClause = or.map((w)=>({
1454
+ [getField(model, w.field)]: {
1455
+ [w.operator || 'eq']: w.value
1456
+ }
1457
+ }));
1458
+ return {
1459
+ ...andClause.length ? {
1460
+ AND: andClause
1461
+ } : {},
1462
+ ...orClause.length ? {
1463
+ OR: orClause
1464
+ } : {}
1465
+ };
1465
1466
  },
1466
- getField,
1467
- getEntityName
1467
+ convertSelect: (select, model)=>{
1468
+ if (!select || !model) return;
1469
+ return select.reduce((prev, cur)=>{
1470
+ const field = getField(model, cur);
1471
+ return Object.assign({}, prev, {
1472
+ [field]: true
1473
+ });
1474
+ }, {});
1475
+ },
1476
+ getEntityName,
1477
+ getField
1468
1478
  };
1469
1479
  };
1470
- function checkMissingFields(schema, model, values) {
1471
- if (!schema) throw new error_class_DoubleTieError('The schema could not be found. Please ensure the schema is properly configured in the adapter.', {
1472
- code: error_codes_ERROR_CODES.DATABASE_CONNECTION_ERROR,
1473
- status: 500
1474
- });
1475
- for(const key in values)if (!schema[key]) throw new error_class_DoubleTieError(`The field "${key}" does not exist in the "${model}" schema. Please update your drizzle schema or re-generate using "npx @c15t/cli generate".`);
1476
- }
1477
- const drizzleAdapter = (db, config)=>(options)=>{
1478
- const { transformInput, transformOutput, convertWhereClause, getSchema, withReturning, getField, getEntityName } = drizzle_adapter_createEntityTransformer(db, config, options);
1480
+ const prismaAdapter = (prisma, config)=>(options)=>{
1481
+ const db = prisma;
1482
+ const { transformInput, transformOutput, convertWhereClause, convertSelect, getEntityName, getField } = prisma_adapter_createEntityTransformer(config, options);
1479
1483
  return {
1480
- id: 'drizzle',
1484
+ id: 'prisma',
1481
1485
  async create (data) {
1482
- const { model, data: values } = data;
1486
+ const { model, data: values, select } = data;
1483
1487
  const transformed = transformInput(values, model, 'create');
1484
- const schemaModel = getSchema(model);
1485
- checkMissingFields(schemaModel, getEntityName(model), transformed);
1486
- const builder = db.insert(schemaModel).values(transformed);
1487
- const returned = await withReturning(model, builder, transformed);
1488
- return transformOutput(returned, model);
1488
+ if (!db[getEntityName(model)]) throw new error_class_DoubleTieError(`The model "${model}" does not exist in the Prisma client. Please verify the model name and ensure it is defined in your Prisma schema.`, {
1489
+ code: error_codes_ERROR_CODES.DATABASE_QUERY_ERROR,
1490
+ status: 500,
1491
+ meta: {
1492
+ model,
1493
+ availableModels: Object.keys(prisma).filter((key)=>!key.startsWith('$') && !key.startsWith('_'))
1494
+ }
1495
+ });
1496
+ const result = await db[getEntityName(model)].create({
1497
+ data: transformed,
1498
+ select: convertSelect(select, model)
1499
+ });
1500
+ return transformOutput(result, model, select);
1489
1501
  },
1490
1502
  async findOne (data) {
1491
1503
  const { model, where, select } = data;
1492
- const schemaModel = getSchema(model);
1493
- const clause = convertWhereClause(where, model);
1494
- const res = await db.select().from(schemaModel).where(...clause);
1495
- if (!res.length) return null;
1496
- return transformOutput(res[0], model, select);
1504
+ const whereClause = convertWhereClause(model, where);
1505
+ if (!db[getEntityName(model)]) throw new error_class_DoubleTieError(`The model "${model}" does not exist in the Prisma client. Please verify the model name and ensure it is defined in your Prisma schema.`, {
1506
+ code: error_codes_ERROR_CODES.DATABASE_QUERY_ERROR,
1507
+ status: 500,
1508
+ meta: {
1509
+ model,
1510
+ availableModels: Object.keys(prisma).filter((key)=>!key.startsWith('$') && !key.startsWith('_'))
1511
+ }
1512
+ });
1513
+ const result = await db[getEntityName(model)].findFirst({
1514
+ where: whereClause,
1515
+ select: convertSelect(select, model)
1516
+ });
1517
+ return transformOutput(result, model, select);
1497
1518
  },
1498
1519
  async findMany (data) {
1499
- const { model, where, sortBy, limit, offset } = data;
1500
- const schemaModel = getSchema(model);
1501
- const clause = where ? convertWhereClause(where, model) : [];
1502
- const sortFn = sortBy?.direction === 'desc' ? __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.desc : __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.asc;
1503
- const builder = db.select().from(schemaModel).limit(limit || 100).offset(offset || 0);
1504
- if (sortBy?.field) builder.orderBy(sortFn(schemaModel[getField(model, sortBy?.field)]));
1505
- const res = await builder.where(...clause);
1506
- return res.map((r)=>transformOutput(r, model));
1520
+ const { model, where, limit, offset, sortBy } = data;
1521
+ const whereClause = convertWhereClause(model, where);
1522
+ if (!db[getEntityName(model)]) throw new error_class_DoubleTieError(`The model "${model}" does not exist in the Prisma client. Please verify the model name and ensure it is defined in your Prisma schema.`, {
1523
+ code: error_codes_ERROR_CODES.DATABASE_QUERY_ERROR,
1524
+ status: 500,
1525
+ meta: {
1526
+ model,
1527
+ availableModels: Object.keys(prisma).filter((key)=>!key.startsWith('$') && !key.startsWith('_'))
1528
+ }
1529
+ });
1530
+ const result = await db[getEntityName(model)].findMany({
1531
+ where: whereClause,
1532
+ take: limit || 100,
1533
+ skip: offset || 0,
1534
+ ...sortBy?.field ? {
1535
+ orderBy: {
1536
+ [getField(model, sortBy.field)]: 'desc' === sortBy.direction ? 'desc' : 'asc'
1537
+ }
1538
+ } : {}
1539
+ });
1540
+ return result.map((r)=>transformOutput(r, model));
1507
1541
  },
1508
1542
  async count (data) {
1509
1543
  const { model, where } = data;
1510
- const schemaModel = getSchema(model);
1511
- const clause = where ? convertWhereClause(where, model) : [];
1512
- const res = await db.select({
1513
- count: (0, __WEBPACK_EXTERNAL_MODULE_drizzle_orm_51e552b8__.count)()
1514
- }).from(schemaModel).where(...clause);
1515
- return res[0].count;
1544
+ const whereClause = convertWhereClause(model, where);
1545
+ if (!db[getEntityName(model)]) throw new error_class_DoubleTieError(`The model "${model}" does not exist in the Prisma client. Please verify the model name and ensure it is defined in your Prisma schema.`, {
1546
+ code: error_codes_ERROR_CODES.DATABASE_QUERY_ERROR,
1547
+ status: 500,
1548
+ meta: {
1549
+ model,
1550
+ availableModels: Object.keys(prisma).filter((key)=>!key.startsWith('$') && !key.startsWith('_'))
1551
+ }
1552
+ });
1553
+ const result = await db[getEntityName(model)].count({
1554
+ where: whereClause
1555
+ });
1556
+ return result;
1516
1557
  },
1517
1558
  async update (data) {
1518
1559
  const { model, where, update } = data;
1519
- const schemaModel = getSchema(model);
1520
- const clause = convertWhereClause(where, model);
1560
+ const whereClause = convertWhereClause(model, where);
1521
1561
  const transformed = transformInput(update, model, 'update');
1522
- const result = await db.update(schemaModel).set(transformed).where(clause).returning();
1523
- return result.length ? transformOutput(result[0], model) : null;
1562
+ try {
1563
+ const result = await db[getEntityName(model)].update({
1564
+ where: whereClause,
1565
+ data: transformed
1566
+ });
1567
+ return transformOutput(result, model);
1568
+ } catch {
1569
+ return null;
1570
+ }
1524
1571
  },
1525
1572
  async updateMany (data) {
1526
- const { model, where, update: values } = data;
1527
- const schemaModel = getSchema(model);
1528
- const clause = convertWhereClause(where, model);
1529
- const transformed = transformInput(values, model, 'update');
1530
- const builder = db.update(schemaModel).set(transformed).where(...clause);
1531
- const res = await builder;
1532
- return res ? res.changes : 0;
1573
+ const { model, where, update } = data;
1574
+ const whereClause = convertWhereClause(model, where);
1575
+ const transformed = transformInput(update, model, 'update');
1576
+ const result = await db[getEntityName(model)].updateMany({
1577
+ where: whereClause,
1578
+ data: transformed
1579
+ });
1580
+ return result ? result.count : 0;
1533
1581
  },
1534
1582
  async delete (data) {
1535
1583
  const { model, where } = data;
1536
- const schemaModel = getSchema(model);
1537
- const clause = convertWhereClause(where, model);
1538
- const builder = db.delete(schemaModel).where(...clause);
1539
- await builder;
1584
+ const whereClause = convertWhereClause(model, where);
1585
+ try {
1586
+ await db[getEntityName(model)].delete({
1587
+ where: whereClause
1588
+ });
1589
+ } catch {}
1540
1590
  },
1541
1591
  async deleteMany (data) {
1542
1592
  const { model, where } = data;
1543
- const schemaModel = getSchema(model);
1544
- const clause = convertWhereClause(where, model);
1545
- const result = await db.delete(schemaModel).where(clause);
1546
- return result ? result.rowCount : 0;
1593
+ const whereClause = convertWhereClause(model, where);
1594
+ const result = await db[getEntityName(model)].deleteMany({
1595
+ where: whereClause
1596
+ });
1597
+ return result ? result.count : 0;
1547
1598
  },
1548
1599
  async transaction (data) {
1549
1600
  const { callback } = data;
1550
- return await db.transaction(async (tx)=>{
1551
- const transactionAdapter = drizzleAdapter(tx, config)(options);
1601
+ return db.$transaction(async (tx)=>{
1602
+ const txClient = tx;
1603
+ const transactionAdapter = prismaAdapter(txClient, config)(options);
1552
1604
  return await callback(transactionAdapter);
1553
1605
  });
1554
1606
  },
1555
1607
  options: config
1556
1608
  };
1557
1609
  };
1558
- function dialect_getDatabaseType(db) {
1559
- if (!db) return null;
1560
- if ('dialect' in db) return dialect_getDatabaseType(db.dialect);
1561
- if (db && 'object' == typeof db && 'createDriver' in db) {
1562
- if (db instanceof __WEBPACK_EXTERNAL_MODULE_kysely__.SqliteDialect) return 'sqlite';
1563
- if (db instanceof __WEBPACK_EXTERNAL_MODULE_kysely__.MysqlDialect) return 'mysql';
1564
- if (db instanceof __WEBPACK_EXTERNAL_MODULE_kysely__.PostgresDialect) return 'postgres';
1565
- if (db instanceof __WEBPACK_EXTERNAL_MODULE_kysely__.MssqlDialect) return 'mssql';
1566
- }
1567
- if (db && 'object' == typeof db && 'aggregate' in db) return 'sqlite';
1568
- if (db && 'object' == typeof db && 'getConnection' in db) return 'mysql';
1569
- if (db && 'object' == typeof db && 'connect' in db) return 'postgres';
1570
- return null;
1571
- }
1572
- const createKyselyAdapter = async (config)=>{
1573
- const db = config.database;
1574
- if (!db) return {
1575
- kysely: null,
1576
- databaseType: null
1577
- };
1578
- if (db && 'object' == typeof db && 'db' in db) {
1579
- const kyselyConfig = db;
1580
- return {
1581
- kysely: kyselyConfig.db,
1582
- databaseType: kyselyConfig.type
1583
- };
1584
- }
1585
- if (db && 'object' == typeof db && 'dialect' in db) {
1586
- const dialectConfig = db;
1587
- return {
1588
- kysely: new __WEBPACK_EXTERNAL_MODULE_kysely__.Kysely({
1589
- dialect: dialectConfig.dialect
1590
- }),
1591
- databaseType: dialectConfig.type
1592
- };
1593
- }
1594
- let dialect;
1595
- const databaseType = dialect_getDatabaseType(db);
1596
- if (db && 'object' == typeof db && 'createDriver' in db) dialect = db;
1597
- if (db && 'object' == typeof db && 'aggregate' in db) dialect = new __WEBPACK_EXTERNAL_MODULE_kysely__.SqliteDialect({
1598
- database: db
1599
- });
1600
- if (db && 'object' == typeof db && 'getConnection' in db) dialect = new __WEBPACK_EXTERNAL_MODULE_kysely__.MysqlDialect({
1601
- pool: db
1602
- });
1603
- if (db && 'object' == typeof db && 'connect' in db) dialect = new __WEBPACK_EXTERNAL_MODULE_kysely__.PostgresDialect({
1604
- pool: db
1605
- });
1606
- return {
1607
- kysely: dialect ? new __WEBPACK_EXTERNAL_MODULE_kysely__.Kysely({
1608
- dialect
1609
- }) : null,
1610
- databaseType
1611
- };
1612
- };
1613
- let globalLogger;
1614
- function getLogger(options) {
1615
- if (!globalLogger) globalLogger = (0, __WEBPACK_EXTERNAL_MODULE__doubletie_logger_91c58a8f__.createLogger)({
1616
- level: 'info',
1617
- appName: 'c15t',
1618
- ...options
1619
- });
1620
- return globalLogger;
1621
- }
1622
- async function getAdapter(options) {
1623
- const logger = getLogger({
1624
- appName: options.appName ?? 'c15t',
1625
- ...options.logger
1626
- });
1627
- if (!options.database) {
1628
- const tables = getConsentTables(options);
1629
- const memoryDB = Object.keys(tables).reduce((acc, key)=>{
1630
- acc[key] = [];
1631
- return acc;
1632
- }, {});
1633
- logger.warn('No database configuration provided. Using memory adapter in development');
1634
- return memoryAdapter(memoryDB)(options);
1635
- }
1636
- if ('function' == typeof options.database) return options.database(options);
1637
- const { kysely, databaseType } = await createKyselyAdapter(options);
1638
- if (!kysely) throw new error_class_DoubleTieError('Failed to initialize database adapter', {
1639
- code: error_codes_ERROR_CODES.INTERNAL_SERVER_ERROR,
1640
- status: 500
1641
- });
1642
- return kyselyAdapter(kysely, {
1643
- type: databaseType || 'sqlite'
1644
- })(options);
1645
- }
1646
1610
  const kysely_adapter_createEntityTransformer = (db, options, config)=>{
1647
1611
  const schema = getConsentTables(options);
1648
1612
  function getField(model, field) {
@@ -1981,4 +1945,28 @@ const kyselyAdapter = (db, config)=>(opts)=>{
1981
1945
  options: config
1982
1946
  };
1983
1947
  };
1948
+ async function getAdapter(options) {
1949
+ const logger = getLogger({
1950
+ appName: options.appName ?? 'c15t',
1951
+ ...options.logger
1952
+ });
1953
+ if (!options.database) {
1954
+ const tables = getConsentTables(options);
1955
+ const memoryDB = Object.keys(tables).reduce((acc, key)=>{
1956
+ acc[key] = [];
1957
+ return acc;
1958
+ }, {});
1959
+ logger.warn('No database configuration provided. Using memory adapter in development');
1960
+ return memoryAdapter(memoryDB)(options);
1961
+ }
1962
+ if ('function' == typeof options.database) return options.database(options);
1963
+ const { kysely, databaseType } = await createKyselyAdapter(options);
1964
+ if (!kysely) throw new error_class_DoubleTieError('Failed to initialize database adapter', {
1965
+ code: error_codes_ERROR_CODES.INTERNAL_SERVER_ERROR,
1966
+ status: 500
1967
+ });
1968
+ return kyselyAdapter(kysely, {
1969
+ type: databaseType || 'sqlite'
1970
+ })(options);
1971
+ }
1984
1972
  export { applyDefaultValue, createKyselyAdapter, drizzleAdapter, getAdapter, kyselyAdapter, memoryAdapter, prismaAdapter };