@c15t/backend 0.0.1-rc.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (521) hide show
  1. package/.turbo/turbo-build.log +11 -0
  2. package/.turbo/turbo-check-types.log +5 -0
  3. package/.turbo/turbo-fmt.log +7 -0
  4. package/.turbo/turbo-lint.log +6 -0
  5. package/.turbo/turbo-test.log +26 -0
  6. package/README-next.md +223 -0
  7. package/README.md +164 -0
  8. package/dist/api/call.d.ts +176 -0
  9. package/dist/api/call.d.ts.map +1 -0
  10. package/dist/api/index.d.ts +935 -0
  11. package/dist/api/index.d.ts.map +1 -0
  12. package/dist/api/middlewares/index.d.ts +39 -0
  13. package/dist/api/middlewares/index.d.ts.map +1 -0
  14. package/dist/api/middlewares/origin-check.d.ts +82 -0
  15. package/dist/api/middlewares/origin-check.d.ts.map +1 -0
  16. package/dist/api/middlewares/validate-context.d.ts +38 -0
  17. package/dist/api/middlewares/validate-context.d.ts.map +1 -0
  18. package/dist/api/routes/__tests__/consent.test.d.ts +2 -0
  19. package/dist/api/routes/__tests__/consent.test.d.ts.map +1 -0
  20. package/dist/api/routes/__tests__/status.test.d.ts +2 -0
  21. package/dist/api/routes/__tests__/status.test.d.ts.map +1 -0
  22. package/dist/api/routes/error.d.ts +57 -0
  23. package/dist/api/routes/error.d.ts.map +1 -0
  24. package/dist/api/routes/generate-consent-receipt.d.ts +130 -0
  25. package/dist/api/routes/generate-consent-receipt.d.ts.map +1 -0
  26. package/dist/api/routes/get-consent-history.d.ts +133 -0
  27. package/dist/api/routes/get-consent-history.d.ts.map +1 -0
  28. package/dist/api/routes/get-consent-policy.d.ts +164 -0
  29. package/dist/api/routes/get-consent-policy.d.ts.map +1 -0
  30. package/dist/api/routes/get-consent.d.ts +148 -0
  31. package/dist/api/routes/get-consent.d.ts.map +1 -0
  32. package/dist/api/routes/index.d.ts +339 -0
  33. package/dist/api/routes/index.d.ts.map +1 -0
  34. package/dist/api/routes/ok.d.ts +87 -0
  35. package/dist/api/routes/ok.d.ts.map +1 -0
  36. package/dist/api/routes/set-consent.d.ts +245 -0
  37. package/dist/api/routes/set-consent.d.ts.map +1 -0
  38. package/dist/api/routes/show-consent-banner.d.ts +127 -0
  39. package/dist/api/routes/show-consent-banner.d.ts.map +1 -0
  40. package/dist/api/routes/status.d.ts +61 -0
  41. package/dist/api/routes/status.d.ts.map +1 -0
  42. package/dist/api/routes/verify-consent.d.ts +179 -0
  43. package/dist/api/routes/verify-consent.d.ts.map +1 -0
  44. package/dist/api/routes/withdraw-consent.d.ts +194 -0
  45. package/dist/api/routes/withdraw-consent.d.ts.map +1 -0
  46. package/dist/api/to-endpoints.d.ts +35 -0
  47. package/dist/api/to-endpoints.d.ts.map +1 -0
  48. package/dist/client/index.cjs +139 -0
  49. package/dist/client/index.d.ts +203 -0
  50. package/dist/client/index.d.ts.map +1 -0
  51. package/dist/client/index.js +106 -0
  52. package/dist/client/types.d.ts +431 -0
  53. package/dist/client/types.d.ts.map +1 -0
  54. package/dist/core.d.ts +124 -0
  55. package/dist/core.d.ts.map +1 -0
  56. package/dist/core.test.d.ts +2 -0
  57. package/dist/core.test.d.ts.map +1 -0
  58. package/dist/db/adapters/drizzle-adapter/drizzle-adapter.d.ts +122 -0
  59. package/dist/db/adapters/drizzle-adapter/drizzle-adapter.d.ts.map +1 -0
  60. package/dist/db/adapters/drizzle-adapter/index.d.ts +2 -0
  61. package/dist/db/adapters/drizzle-adapter/index.d.ts.map +1 -0
  62. package/dist/db/adapters/drizzle.cjs +1531 -0
  63. package/dist/db/adapters/drizzle.js +1489 -0
  64. package/dist/db/adapters/kysely-adapter/dialect.d.ts +72 -0
  65. package/dist/db/adapters/kysely-adapter/dialect.d.ts.map +1 -0
  66. package/dist/db/adapters/kysely-adapter/index.d.ts +4 -0
  67. package/dist/db/adapters/kysely-adapter/index.d.ts.map +1 -0
  68. package/dist/db/adapters/kysely-adapter/kysely-adapter.d.ts +98 -0
  69. package/dist/db/adapters/kysely-adapter/kysely-adapter.d.ts.map +1 -0
  70. package/dist/db/adapters/kysely-adapter/types.d.ts +281 -0
  71. package/dist/db/adapters/kysely-adapter/types.d.ts.map +1 -0
  72. package/dist/db/adapters/kysely.cjs +1551 -0
  73. package/dist/db/adapters/kysely.js +1508 -0
  74. package/dist/db/adapters/memory-adapter/index.d.ts +2 -0
  75. package/dist/db/adapters/memory-adapter/index.d.ts.map +1 -0
  76. package/dist/db/adapters/memory-adapter/memory-adapter.d.ts +56 -0
  77. package/dist/db/adapters/memory-adapter/memory-adapter.d.ts.map +1 -0
  78. package/dist/db/adapters/memory.cjs +1391 -0
  79. package/dist/db/adapters/memory.js +1349 -0
  80. package/dist/db/adapters/prisma-adapter/index.d.ts +2 -0
  81. package/dist/db/adapters/prisma-adapter/index.d.ts.map +1 -0
  82. package/dist/db/adapters/prisma-adapter/prisma-adapter.d.ts +143 -0
  83. package/dist/db/adapters/prisma-adapter/prisma-adapter.d.ts.map +1 -0
  84. package/dist/db/adapters/prisma.cjs +1503 -0
  85. package/dist/db/adapters/prisma.js +1461 -0
  86. package/dist/db/adapters/types.d.ts +154 -0
  87. package/dist/db/adapters/types.d.ts.map +1 -0
  88. package/dist/db/adapters/utils.d.ts +36 -0
  89. package/dist/db/adapters/utils.d.ts.map +1 -0
  90. package/dist/db/core/fields/field-factory.d.ts +383 -0
  91. package/dist/db/core/fields/field-factory.d.ts.map +1 -0
  92. package/dist/db/core/fields/field-inference.d.ts +218 -0
  93. package/dist/db/core/fields/field-inference.d.ts.map +1 -0
  94. package/dist/db/core/fields/field-options-integration.d.ts +90 -0
  95. package/dist/db/core/fields/field-options-integration.d.ts.map +1 -0
  96. package/dist/db/core/fields/field-types.d.ts +182 -0
  97. package/dist/db/core/fields/field-types.d.ts.map +1 -0
  98. package/dist/db/core/fields/id-generator.d.ts +19 -0
  99. package/dist/db/core/fields/id-generator.d.ts.map +1 -0
  100. package/dist/db/core/fields/index.d.ts +8 -0
  101. package/dist/db/core/fields/index.d.ts.map +1 -0
  102. package/dist/db/core/fields/superjson-utils.d.ts +34 -0
  103. package/dist/db/core/fields/superjson-utils.d.ts.map +1 -0
  104. package/dist/db/core/fields/zod-fields.d.ts +1011 -0
  105. package/dist/db/core/fields/zod-fields.d.ts.map +1 -0
  106. package/dist/db/core/get-schema.d.ts +36 -0
  107. package/dist/db/core/get-schema.d.ts.map +1 -0
  108. package/dist/db/core/types.d.ts +41 -0
  109. package/dist/db/core/types.d.ts.map +1 -0
  110. package/dist/db/create-registry.d.ts +760 -0
  111. package/dist/db/create-registry.d.ts.map +1 -0
  112. package/dist/db/hooks/create-hooks.d.ts +32 -0
  113. package/dist/db/hooks/create-hooks.d.ts.map +1 -0
  114. package/dist/db/hooks/index.d.ts +40 -0
  115. package/dist/db/hooks/index.d.ts.map +1 -0
  116. package/dist/db/hooks/types.d.ts +133 -0
  117. package/dist/db/hooks/types.d.ts.map +1 -0
  118. package/dist/db/hooks/update-hooks.d.ts +33 -0
  119. package/dist/db/hooks/update-hooks.d.ts.map +1 -0
  120. package/dist/db/hooks/update-many-hooks.d.ts +55 -0
  121. package/dist/db/hooks/update-many-hooks.d.ts.map +1 -0
  122. package/dist/db/hooks/utils.d.ts +62 -0
  123. package/dist/db/hooks/utils.d.ts.map +1 -0
  124. package/dist/db/hooks/with-hooks-factory.d.ts +33 -0
  125. package/dist/db/hooks/with-hooks-factory.d.ts.map +1 -0
  126. package/dist/db/index.cjs +2458 -0
  127. package/dist/db/index.d.ts +11 -0
  128. package/dist/db/index.d.ts.map +1 -0
  129. package/dist/db/index.js +2404 -0
  130. package/dist/db/migration/get-migration.d.ts +32 -0
  131. package/dist/db/migration/get-migration.d.ts.map +1 -0
  132. package/dist/db/migration/get-schema/get-schema.d.ts +27 -0
  133. package/dist/db/migration/get-schema/get-schema.d.ts.map +1 -0
  134. package/dist/db/migration/get-schema/index.d.ts +21 -0
  135. package/dist/db/migration/get-schema/index.d.ts.map +1 -0
  136. package/dist/db/migration/get-schema/process-fields.d.ts +16 -0
  137. package/dist/db/migration/get-schema/process-fields.d.ts.map +1 -0
  138. package/dist/db/migration/get-schema/process-tables.d.ts +13 -0
  139. package/dist/db/migration/get-schema/process-tables.d.ts.map +1 -0
  140. package/dist/db/migration/get-schema/types.d.ts +17 -0
  141. package/dist/db/migration/get-schema/types.d.ts.map +1 -0
  142. package/dist/db/migration/index.cjs +1613 -0
  143. package/dist/db/migration/index.d.ts +14 -0
  144. package/dist/db/migration/index.d.ts.map +1 -0
  145. package/dist/db/migration/index.js +1571 -0
  146. package/dist/db/migration/migration-builders.d.ts +28 -0
  147. package/dist/db/migration/migration-builders.d.ts.map +1 -0
  148. package/dist/db/migration/migration-execution.d.ts +12 -0
  149. package/dist/db/migration/migration-execution.d.ts.map +1 -0
  150. package/dist/db/migration/schema-comparison.d.ts +54 -0
  151. package/dist/db/migration/schema-comparison.d.ts.map +1 -0
  152. package/dist/db/migration/type-mapping.d.ts +86 -0
  153. package/dist/db/migration/type-mapping.d.ts.map +1 -0
  154. package/dist/db/migration/types.d.ts +37 -0
  155. package/dist/db/migration/types.d.ts.map +1 -0
  156. package/dist/db/schema/audit-log/index.d.ts +4 -0
  157. package/dist/db/schema/audit-log/index.d.ts.map +1 -0
  158. package/dist/db/schema/audit-log/registry.d.ts +128 -0
  159. package/dist/db/schema/audit-log/registry.d.ts.map +1 -0
  160. package/dist/db/schema/audit-log/schema.d.ts +67 -0
  161. package/dist/db/schema/audit-log/schema.d.ts.map +1 -0
  162. package/dist/db/schema/audit-log/table.d.ts +175 -0
  163. package/dist/db/schema/audit-log/table.d.ts.map +1 -0
  164. package/dist/db/schema/audit-log/types.d.ts +29 -0
  165. package/dist/db/schema/audit-log/types.d.ts.map +1 -0
  166. package/dist/db/schema/consent/index.d.ts +4 -0
  167. package/dist/db/schema/consent/index.d.ts.map +1 -0
  168. package/dist/db/schema/consent/registry.d.ts +318 -0
  169. package/dist/db/schema/consent/registry.d.ts.map +1 -0
  170. package/dist/db/schema/consent/schema.d.ts +135 -0
  171. package/dist/db/schema/consent/schema.d.ts.map +1 -0
  172. package/dist/db/schema/consent/table.d.ts +245 -0
  173. package/dist/db/schema/consent/table.d.ts.map +1 -0
  174. package/dist/db/schema/consent/types.d.ts +37 -0
  175. package/dist/db/schema/consent/types.d.ts.map +1 -0
  176. package/dist/db/schema/consent-geo-location/index.d.ts +4 -0
  177. package/dist/db/schema/consent-geo-location/index.d.ts.map +1 -0
  178. package/dist/db/schema/consent-geo-location/registry.d.ts +96 -0
  179. package/dist/db/schema/consent-geo-location/registry.d.ts.map +1 -0
  180. package/dist/db/schema/consent-geo-location/schema.d.ts +71 -0
  181. package/dist/db/schema/consent-geo-location/schema.d.ts.map +1 -0
  182. package/dist/db/schema/consent-geo-location/table.d.ts +167 -0
  183. package/dist/db/schema/consent-geo-location/table.d.ts.map +1 -0
  184. package/dist/db/schema/consent-geo-location/types.d.ts +21 -0
  185. package/dist/db/schema/consent-geo-location/types.d.ts.map +1 -0
  186. package/dist/db/schema/consent-policy/index.d.ts +4 -0
  187. package/dist/db/schema/consent-policy/index.d.ts.map +1 -0
  188. package/dist/db/schema/consent-policy/registry.d.ts +186 -0
  189. package/dist/db/schema/consent-policy/registry.d.ts.map +1 -0
  190. package/dist/db/schema/consent-policy/schema.d.ts +68 -0
  191. package/dist/db/schema/consent-policy/schema.d.ts.map +1 -0
  192. package/dist/db/schema/consent-policy/table.d.ts +147 -0
  193. package/dist/db/schema/consent-policy/table.d.ts.map +1 -0
  194. package/dist/db/schema/consent-policy/types.d.ts +28 -0
  195. package/dist/db/schema/consent-policy/types.d.ts.map +1 -0
  196. package/dist/db/schema/consent-purpose/index.d.ts +4 -0
  197. package/dist/db/schema/consent-purpose/index.d.ts.map +1 -0
  198. package/dist/db/schema/consent-purpose/registry.d.ts +136 -0
  199. package/dist/db/schema/consent-purpose/registry.d.ts.map +1 -0
  200. package/dist/db/schema/consent-purpose/schema.d.ts +79 -0
  201. package/dist/db/schema/consent-purpose/schema.d.ts.map +1 -0
  202. package/dist/db/schema/consent-purpose/table.d.ts +161 -0
  203. package/dist/db/schema/consent-purpose/table.d.ts.map +1 -0
  204. package/dist/db/schema/consent-purpose/types.d.ts +16 -0
  205. package/dist/db/schema/consent-purpose/types.d.ts.map +1 -0
  206. package/dist/db/schema/consent-purpose-junction/index.d.ts +4 -0
  207. package/dist/db/schema/consent-purpose-junction/index.d.ts.map +1 -0
  208. package/dist/db/schema/consent-purpose-junction/registry.d.ts +109 -0
  209. package/dist/db/schema/consent-purpose-junction/registry.d.ts.map +1 -0
  210. package/dist/db/schema/consent-purpose-junction/schema.d.ts +57 -0
  211. package/dist/db/schema/consent-purpose-junction/schema.d.ts.map +1 -0
  212. package/dist/db/schema/consent-purpose-junction/table.d.ts +138 -0
  213. package/dist/db/schema/consent-purpose-junction/table.d.ts.map +1 -0
  214. package/dist/db/schema/consent-purpose-junction/types.d.ts +14 -0
  215. package/dist/db/schema/consent-purpose-junction/types.d.ts.map +1 -0
  216. package/dist/db/schema/consent-record/index.d.ts +4 -0
  217. package/dist/db/schema/consent-record/index.d.ts.map +1 -0
  218. package/dist/db/schema/consent-record/registry.d.ts +119 -0
  219. package/dist/db/schema/consent-record/registry.d.ts.map +1 -0
  220. package/dist/db/schema/consent-record/schema.d.ts +57 -0
  221. package/dist/db/schema/consent-record/schema.d.ts.map +1 -0
  222. package/dist/db/schema/consent-record/table.d.ts +123 -0
  223. package/dist/db/schema/consent-record/table.d.ts.map +1 -0
  224. package/dist/db/schema/consent-record/types.d.ts +21 -0
  225. package/dist/db/schema/consent-record/types.d.ts.map +1 -0
  226. package/dist/db/schema/consent-withdrawal/index.d.ts +4 -0
  227. package/dist/db/schema/consent-withdrawal/index.d.ts.map +1 -0
  228. package/dist/db/schema/consent-withdrawal/registry.d.ts +134 -0
  229. package/dist/db/schema/consent-withdrawal/registry.d.ts.map +1 -0
  230. package/dist/db/schema/consent-withdrawal/schema.d.ts +67 -0
  231. package/dist/db/schema/consent-withdrawal/schema.d.ts.map +1 -0
  232. package/dist/db/schema/consent-withdrawal/table.d.ts +170 -0
  233. package/dist/db/schema/consent-withdrawal/table.d.ts.map +1 -0
  234. package/dist/db/schema/consent-withdrawal/types.d.ts +28 -0
  235. package/dist/db/schema/consent-withdrawal/types.d.ts.map +1 -0
  236. package/dist/db/schema/definition.d.ts +1100 -0
  237. package/dist/db/schema/definition.d.ts.map +1 -0
  238. package/dist/db/schema/domain/index.d.ts +4 -0
  239. package/dist/db/schema/domain/index.d.ts.map +1 -0
  240. package/dist/db/schema/domain/registry.d.ts +169 -0
  241. package/dist/db/schema/domain/registry.d.ts.map +1 -0
  242. package/dist/db/schema/domain/schema.d.ts +60 -0
  243. package/dist/db/schema/domain/schema.d.ts.map +1 -0
  244. package/dist/db/schema/domain/table.d.ts +140 -0
  245. package/dist/db/schema/domain/table.d.ts.map +1 -0
  246. package/dist/db/schema/domain/types.d.ts +27 -0
  247. package/dist/db/schema/domain/types.d.ts.map +1 -0
  248. package/dist/db/schema/geo-location/index.d.ts +4 -0
  249. package/dist/db/schema/geo-location/index.d.ts.map +1 -0
  250. package/dist/db/schema/geo-location/registry.d.ts +114 -0
  251. package/dist/db/schema/geo-location/registry.d.ts.map +1 -0
  252. package/dist/db/schema/geo-location/schema.d.ts +58 -0
  253. package/dist/db/schema/geo-location/schema.d.ts.map +1 -0
  254. package/dist/db/schema/geo-location/table.d.ts +132 -0
  255. package/dist/db/schema/geo-location/table.d.ts.map +1 -0
  256. package/dist/db/schema/geo-location/types.d.ts +17 -0
  257. package/dist/db/schema/geo-location/types.d.ts.map +1 -0
  258. package/dist/db/schema/index.d.ts +85 -0
  259. package/dist/db/schema/index.d.ts.map +1 -0
  260. package/dist/db/schema/parser.d.ts +183 -0
  261. package/dist/db/schema/parser.d.ts.map +1 -0
  262. package/dist/db/schema/schemas.d.ts +383 -0
  263. package/dist/db/schema/schemas.d.ts.map +1 -0
  264. package/dist/db/schema/subject/index.d.ts +4 -0
  265. package/dist/db/schema/subject/index.d.ts.map +1 -0
  266. package/dist/db/schema/subject/registry.d.ts +141 -0
  267. package/dist/db/schema/subject/registry.d.ts.map +1 -0
  268. package/dist/db/schema/subject/schema.d.ts +56 -0
  269. package/dist/db/schema/subject/schema.d.ts.map +1 -0
  270. package/dist/db/schema/subject/table.d.ts +136 -0
  271. package/dist/db/schema/subject/table.d.ts.map +1 -0
  272. package/dist/db/schema/subject/types.d.ts +22 -0
  273. package/dist/db/schema/subject/types.d.ts.map +1 -0
  274. package/dist/db/schema/types.d.ts +136 -0
  275. package/dist/db/schema/types.d.ts.map +1 -0
  276. package/dist/db/utils/adapter-factory.d.ts +21 -0
  277. package/dist/db/utils/adapter-factory.d.ts.map +1 -0
  278. package/dist/db/utils/index.d.ts +10 -0
  279. package/dist/db/utils/index.d.ts.map +1 -0
  280. package/dist/db/utils.d.ts +4 -0
  281. package/dist/db/utils.d.ts.map +1 -0
  282. package/dist/error/codes.cjs +68 -0
  283. package/dist/error/codes.d.ts +175 -0
  284. package/dist/error/codes.d.ts.map +1 -0
  285. package/dist/error/codes.js +35 -0
  286. package/dist/error/error.d.ts +79 -0
  287. package/dist/error/error.d.ts.map +1 -0
  288. package/dist/error/index.cjs +172 -0
  289. package/dist/error/index.d.ts +9 -0
  290. package/dist/error/index.d.ts.map +1 -0
  291. package/dist/error/index.js +129 -0
  292. package/dist/error/logging.d.ts +25 -0
  293. package/dist/error/logging.d.ts.map +1 -0
  294. package/dist/error/pipeline.d.ts +19 -0
  295. package/dist/error/pipeline.d.ts.map +1 -0
  296. package/dist/error/recovery.d.ts +22 -0
  297. package/dist/error/recovery.d.ts.map +1 -0
  298. package/dist/error/results.d.ts +56 -0
  299. package/dist/error/results.d.ts.map +1 -0
  300. package/dist/index.cjs +4777 -0
  301. package/dist/index.d.ts +46 -0
  302. package/dist/index.d.ts.map +1 -0
  303. package/dist/index.js +4708 -0
  304. package/dist/init.d.ts +52 -0
  305. package/dist/init.d.ts.map +1 -0
  306. package/dist/init.test.d.ts +2 -0
  307. package/dist/init.test.d.ts.map +1 -0
  308. package/dist/integrations/index.cjs +281 -0
  309. package/dist/integrations/index.d.ts +7 -0
  310. package/dist/integrations/index.d.ts.map +1 -0
  311. package/dist/integrations/index.js +248 -0
  312. package/dist/integrations/next.cjs +131 -0
  313. package/dist/integrations/next.d.ts +29 -0
  314. package/dist/integrations/next.d.ts.map +1 -0
  315. package/dist/integrations/next.js +99 -0
  316. package/dist/integrations/react.cjs +182 -0
  317. package/dist/integrations/react.d.ts +257 -0
  318. package/dist/integrations/react.d.ts.map +1 -0
  319. package/dist/integrations/react.js +150 -0
  320. package/dist/plugins/geo/index.d.ts +2 -0
  321. package/dist/plugins/geo/index.d.ts.map +1 -0
  322. package/dist/test/utils.d.ts +65 -0
  323. package/dist/test/utils.d.ts.map +1 -0
  324. package/dist/types/api.d.ts +89 -0
  325. package/dist/types/api.d.ts.map +1 -0
  326. package/dist/types/context.d.ts +205 -0
  327. package/dist/types/context.d.ts.map +1 -0
  328. package/dist/types/helper.d.ts +78 -0
  329. package/dist/types/helper.d.ts.map +1 -0
  330. package/dist/types/index.cjs +19 -0
  331. package/dist/types/index.d.ts +6 -0
  332. package/dist/types/index.d.ts.map +1 -0
  333. package/dist/types/index.js +0 -0
  334. package/dist/types/options.d.ts +172 -0
  335. package/dist/types/options.d.ts.map +1 -0
  336. package/dist/types/plugins.d.ts +442 -0
  337. package/dist/types/plugins.d.ts.map +1 -0
  338. package/dist/utils/env.d.ts +77 -0
  339. package/dist/utils/env.d.ts.map +1 -0
  340. package/dist/utils/hide-metadata.d.ts +22 -0
  341. package/dist/utils/hide-metadata.d.ts.map +1 -0
  342. package/dist/utils/index.cjs +268 -0
  343. package/dist/utils/index.d.ts +18 -0
  344. package/dist/utils/index.d.ts.map +1 -0
  345. package/dist/utils/index.js +210 -0
  346. package/dist/utils/ip.d.ts +10 -0
  347. package/dist/utils/ip.d.ts.map +1 -0
  348. package/dist/utils/json.d.ts +14 -0
  349. package/dist/utils/json.d.ts.map +1 -0
  350. package/dist/utils/logger.d.ts +108 -0
  351. package/dist/utils/logger.d.ts.map +1 -0
  352. package/dist/utils/url.d.ts +87 -0
  353. package/dist/utils/url.d.ts.map +1 -0
  354. package/dist/utils/wildcard.d.ts +46 -0
  355. package/dist/utils/wildcard.d.ts.map +1 -0
  356. package/knip.json +37 -0
  357. package/package.json +146 -0
  358. package/rslib.config.ts +104 -0
  359. package/src/api/call.ts +177 -0
  360. package/src/api/index.ts +303 -0
  361. package/src/api/middlewares/index.ts +38 -0
  362. package/src/api/middlewares/origin-check.ts +260 -0
  363. package/src/api/middlewares/validate-context.ts +175 -0
  364. package/src/api/routes/__tests__/consent.test.ts +270 -0
  365. package/src/api/routes/__tests__/status.test.ts +36 -0
  366. package/src/api/routes/error.ts +130 -0
  367. package/src/api/routes/generate-consent-receipt.ts +244 -0
  368. package/src/api/routes/get-consent-history.ts +128 -0
  369. package/src/api/routes/get-consent-policy.ts +327 -0
  370. package/src/api/routes/get-consent.ts +230 -0
  371. package/src/api/routes/index.ts +12 -0
  372. package/src/api/routes/ok.ts +45 -0
  373. package/src/api/routes/set-consent.ts +328 -0
  374. package/src/api/routes/show-consent-banner.ts +149 -0
  375. package/src/api/routes/status.ts +62 -0
  376. package/src/api/routes/verify-consent.ts +272 -0
  377. package/src/api/routes/withdraw-consent.ts +293 -0
  378. package/src/api/to-endpoints.ts +371 -0
  379. package/src/client/index.ts +471 -0
  380. package/src/client/types.ts +458 -0
  381. package/src/core.test.ts +303 -0
  382. package/src/core.ts +267 -0
  383. package/src/db/adapters/drizzle-adapter/drizzle-adapter.ts +711 -0
  384. package/src/db/adapters/drizzle-adapter/index.ts +1 -0
  385. package/src/db/adapters/kysely-adapter/dialect.ts +192 -0
  386. package/src/db/adapters/kysely-adapter/index.ts +3 -0
  387. package/src/db/adapters/kysely-adapter/kysely-adapter.ts +1168 -0
  388. package/src/db/adapters/kysely-adapter/types.ts +307 -0
  389. package/src/db/adapters/memory-adapter/index.ts +1 -0
  390. package/src/db/adapters/memory-adapter/memory-adapter.ts +648 -0
  391. package/src/db/adapters/prisma-adapter/index.ts +1 -0
  392. package/src/db/adapters/prisma-adapter/prisma-adapter.ts +586 -0
  393. package/src/db/adapters/types.ts +203 -0
  394. package/src/db/adapters/utils.ts +51 -0
  395. package/src/db/core/fields/field-factory.ts +804 -0
  396. package/src/db/core/fields/field-inference.ts +298 -0
  397. package/src/db/core/fields/field-options-integration.ts +135 -0
  398. package/src/db/core/fields/field-types.ts +233 -0
  399. package/src/db/core/fields/id-generator.ts +57 -0
  400. package/src/db/core/fields/index.ts +56 -0
  401. package/src/db/core/fields/superjson-utils.ts +155 -0
  402. package/src/db/core/fields/zod-fields.ts +269 -0
  403. package/src/db/core/get-schema.ts +102 -0
  404. package/src/db/core/types.ts +52 -0
  405. package/src/db/create-registry.ts +31 -0
  406. package/src/db/hooks/create-hooks.ts +88 -0
  407. package/src/db/hooks/index.ts +39 -0
  408. package/src/db/hooks/types.ts +164 -0
  409. package/src/db/hooks/update-hooks.ts +91 -0
  410. package/src/db/hooks/update-many-hooks.ts +176 -0
  411. package/src/db/hooks/utils.ts +151 -0
  412. package/src/db/hooks/with-hooks-factory.ts +68 -0
  413. package/src/db/index.ts +32 -0
  414. package/src/db/migration/get-migration.ts +89 -0
  415. package/src/db/migration/get-schema/get-schema.ts +44 -0
  416. package/src/db/migration/get-schema/index.ts +20 -0
  417. package/src/db/migration/get-schema/process-fields.ts +66 -0
  418. package/src/db/migration/get-schema/process-tables.ts +68 -0
  419. package/src/db/migration/get-schema/types.ts +18 -0
  420. package/src/db/migration/index.ts +18 -0
  421. package/src/db/migration/migration-builders.ts +170 -0
  422. package/src/db/migration/migration-execution.ts +79 -0
  423. package/src/db/migration/schema-comparison.ts +216 -0
  424. package/src/db/migration/type-mapping.ts +255 -0
  425. package/src/db/migration/types.ts +46 -0
  426. package/src/db/schema/audit-log/index.ts +3 -0
  427. package/src/db/schema/audit-log/registry.ts +228 -0
  428. package/src/db/schema/audit-log/schema.ts +46 -0
  429. package/src/db/schema/audit-log/table.ts +185 -0
  430. package/src/db/schema/audit-log/types.ts +29 -0
  431. package/src/db/schema/consent/index.ts +3 -0
  432. package/src/db/schema/consent/registry.ts +381 -0
  433. package/src/db/schema/consent/schema.ts +65 -0
  434. package/src/db/schema/consent/table.ts +220 -0
  435. package/src/db/schema/consent/types.ts +39 -0
  436. package/src/db/schema/consent-geo-location/index.ts +3 -0
  437. package/src/db/schema/consent-geo-location/registry.ts +124 -0
  438. package/src/db/schema/consent-geo-location/schema.ts +51 -0
  439. package/src/db/schema/consent-geo-location/table.ts +169 -0
  440. package/src/db/schema/consent-geo-location/types.ts +21 -0
  441. package/src/db/schema/consent-policy/index.ts +3 -0
  442. package/src/db/schema/consent-policy/registry.ts +313 -0
  443. package/src/db/schema/consent-policy/schema.ts +47 -0
  444. package/src/db/schema/consent-policy/table.ts +141 -0
  445. package/src/db/schema/consent-policy/types.ts +28 -0
  446. package/src/db/schema/consent-purpose/index.ts +3 -0
  447. package/src/db/schema/consent-purpose/registry.ts +188 -0
  448. package/src/db/schema/consent-purpose/schema.ts +58 -0
  449. package/src/db/schema/consent-purpose/table.ts +154 -0
  450. package/src/db/schema/consent-purpose/types.ts +16 -0
  451. package/src/db/schema/consent-purpose-junction/index.ts +3 -0
  452. package/src/db/schema/consent-purpose-junction/registry.ts +189 -0
  453. package/src/db/schema/consent-purpose-junction/schema.ts +49 -0
  454. package/src/db/schema/consent-purpose-junction/table.ts +142 -0
  455. package/src/db/schema/consent-purpose-junction/types.ts +14 -0
  456. package/src/db/schema/consent-record/index.ts +3 -0
  457. package/src/db/schema/consent-record/registry.ts +209 -0
  458. package/src/db/schema/consent-record/schema.ts +42 -0
  459. package/src/db/schema/consent-record/table.ts +124 -0
  460. package/src/db/schema/consent-record/types.ts +21 -0
  461. package/src/db/schema/consent-withdrawal/index.ts +3 -0
  462. package/src/db/schema/consent-withdrawal/registry.ts +219 -0
  463. package/src/db/schema/consent-withdrawal/schema.ts +48 -0
  464. package/src/db/schema/consent-withdrawal/table.ts +181 -0
  465. package/src/db/schema/consent-withdrawal/types.ts +29 -0
  466. package/src/db/schema/definition.ts +196 -0
  467. package/src/db/schema/domain/index.ts +3 -0
  468. package/src/db/schema/domain/registry.ts +272 -0
  469. package/src/db/schema/domain/schema.ts +43 -0
  470. package/src/db/schema/domain/table.ts +137 -0
  471. package/src/db/schema/domain/types.ts +27 -0
  472. package/src/db/schema/geo-location/index.ts +3 -0
  473. package/src/db/schema/geo-location/registry.ts +159 -0
  474. package/src/db/schema/geo-location/schema.ts +45 -0
  475. package/src/db/schema/geo-location/table.ts +148 -0
  476. package/src/db/schema/geo-location/types.ts +18 -0
  477. package/src/db/schema/index.ts +96 -0
  478. package/src/db/schema/parser.ts +417 -0
  479. package/src/db/schema/schemas.ts +35 -0
  480. package/src/db/schema/subject/index.ts +3 -0
  481. package/src/db/schema/subject/registry.ts +371 -0
  482. package/src/db/schema/subject/schema.ts +41 -0
  483. package/src/db/schema/subject/table.ts +139 -0
  484. package/src/db/schema/subject/types.ts +22 -0
  485. package/src/db/schema/types.ts +154 -0
  486. package/src/db/utils/adapter-factory.ts +64 -0
  487. package/src/db/utils/index.ts +10 -0
  488. package/src/db/utils.ts +42 -0
  489. package/src/docs/ADVANCED_JSON_HANDLING.md +99 -0
  490. package/src/docs/neverthrow.md +171 -0
  491. package/src/error/codes.ts +201 -0
  492. package/src/error/error.ts +145 -0
  493. package/src/error/index.ts +23 -0
  494. package/src/error/logging.ts +52 -0
  495. package/src/error/pipeline.ts +57 -0
  496. package/src/error/recovery.ts +45 -0
  497. package/src/error/results.ts +100 -0
  498. package/src/index.ts +79 -0
  499. package/src/init.test.ts +235 -0
  500. package/src/init.ts +261 -0
  501. package/src/integrations/index.ts +10 -0
  502. package/src/integrations/next.ts +136 -0
  503. package/src/integrations/react.ts +567 -0
  504. package/src/plugins/geo/index.ts +563 -0
  505. package/src/test/utils.ts +244 -0
  506. package/src/types/api.ts +101 -0
  507. package/src/types/context.ts +235 -0
  508. package/src/types/helper.ts +87 -0
  509. package/src/types/index.ts +5 -0
  510. package/src/types/options.ts +189 -0
  511. package/src/types/plugins.ts +538 -0
  512. package/src/utils/env.ts +103 -0
  513. package/src/utils/hide-metadata.ts +21 -0
  514. package/src/utils/index.ts +17 -0
  515. package/src/utils/ip.ts +45 -0
  516. package/src/utils/json.ts +19 -0
  517. package/src/utils/logger.ts +252 -0
  518. package/src/utils/url.ts +194 -0
  519. package/src/utils/wildcard.ts +253 -0
  520. package/tsconfig.json +12 -0
  521. package/vitest.config.ts +14 -0
@@ -0,0 +1,1613 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.n = (module)=>{
5
+ var getter = module && module.__esModule ? ()=>module['default'] : ()=>module;
6
+ __webpack_require__.d(getter, {
7
+ a: getter
8
+ });
9
+ return getter;
10
+ };
11
+ })();
12
+ (()=>{
13
+ __webpack_require__.d = (exports1, definition)=>{
14
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
15
+ enumerable: true,
16
+ get: definition[key]
17
+ });
18
+ };
19
+ })();
20
+ (()=>{
21
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
22
+ })();
23
+ (()=>{
24
+ __webpack_require__.r = function(exports1) {
25
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
26
+ value: 'Module'
27
+ });
28
+ Object.defineProperty(exports1, '__esModule', {
29
+ value: true
30
+ });
31
+ };
32
+ })();
33
+ var __webpack_exports__ = {};
34
+ __webpack_require__.r(__webpack_exports__);
35
+ __webpack_require__.d(__webpack_exports__, {
36
+ getMigrations: ()=>getMigrations
37
+ });
38
+ const levels = [
39
+ 'info',
40
+ 'success',
41
+ 'warn',
42
+ 'error',
43
+ 'debug'
44
+ ];
45
+ function shouldPublishLog(currentLogLevel, logLevel) {
46
+ return levels.indexOf(logLevel) <= levels.indexOf(currentLogLevel);
47
+ }
48
+ const colors = {
49
+ reset: '\x1b[0m',
50
+ bright: '\x1b[1m',
51
+ dim: '\x1b[2m',
52
+ underscore: '\x1b[4m',
53
+ blink: '\x1b[5m',
54
+ reverse: '\x1b[7m',
55
+ hidden: '\x1b[8m',
56
+ fg: {
57
+ black: '\x1b[30m',
58
+ red: '\x1b[31m',
59
+ green: '\x1b[32m',
60
+ yellow: '\x1b[33m',
61
+ blue: '\x1b[34m',
62
+ magenta: '\x1b[35m',
63
+ cyan: '\x1b[36m',
64
+ white: '\x1b[37m'
65
+ },
66
+ bg: {
67
+ black: '\x1b[40m',
68
+ red: '\x1b[41m',
69
+ green: '\x1b[42m',
70
+ yellow: '\x1b[43m',
71
+ blue: '\x1b[44m',
72
+ magenta: '\x1b[45m',
73
+ cyan: '\x1b[46m',
74
+ white: '\x1b[47m'
75
+ }
76
+ };
77
+ const levelColors = {
78
+ info: colors.fg.blue,
79
+ success: colors.fg.green,
80
+ warn: colors.fg.yellow,
81
+ error: colors.fg.red,
82
+ debug: colors.fg.magenta
83
+ };
84
+ const formatMessage = (level, message)=>{
85
+ const timestamp = new Date().toISOString();
86
+ return `${colors.dim}${timestamp}${colors.reset} ${levelColors[level]}${level.toUpperCase()}${colors.reset} ${colors.bright}[c15t]:${colors.reset} ${message}`;
87
+ };
88
+ const logger_createLogger = (options)=>{
89
+ const enabled = options?.disabled !== true;
90
+ const logLevel = options?.level ?? 'error';
91
+ const LogFunc = (level, message, args = [])=>{
92
+ if (!enabled || !shouldPublishLog(logLevel, level)) return;
93
+ const formattedMessage = formatMessage(level, message);
94
+ if (!options || 'function' != typeof options.log) {
95
+ if ('error' === level) console.error(formattedMessage, ...args);
96
+ else if ('warn' === level) console.warn(formattedMessage, ...args);
97
+ else if ('info' === level) console.log(formattedMessage, ...args);
98
+ else if ('debug' === level) console.debug(formattedMessage, ...args);
99
+ else if ('success' === level) console.log(formattedMessage, ...args);
100
+ return;
101
+ }
102
+ options.log('success' === level ? 'info' : level, message, ...args);
103
+ };
104
+ return Object.fromEntries(levels.map((level)=>[
105
+ level,
106
+ (...[message, ...args])=>LogFunc(level, message, args)
107
+ ]));
108
+ };
109
+ logger_createLogger();
110
+ const external_kysely_namespaceObject = require("kysely");
111
+ function dialect_getDatabaseType(db) {
112
+ if (!db) return null;
113
+ if ('dialect' in db) return dialect_getDatabaseType(db.dialect);
114
+ if ('createDriver' in db) {
115
+ if (db instanceof external_kysely_namespaceObject.SqliteDialect) return 'sqlite';
116
+ if (db instanceof external_kysely_namespaceObject.MysqlDialect) return 'mysql';
117
+ if (db instanceof external_kysely_namespaceObject.PostgresDialect) return 'postgres';
118
+ if (db instanceof external_kysely_namespaceObject.MssqlDialect) return 'mssql';
119
+ }
120
+ if ('aggregate' in db) return 'sqlite';
121
+ if ('getConnection' in db) return 'mysql';
122
+ if ('connect' in db) return 'postgres';
123
+ return null;
124
+ }
125
+ const dialect_createKyselyAdapter = async (config)=>{
126
+ const db = config.database;
127
+ if (!db) return {
128
+ kysely: null,
129
+ databaseType: null
130
+ };
131
+ if ('db' in db) {
132
+ const kyselyConfig = db;
133
+ return {
134
+ kysely: kyselyConfig.db,
135
+ databaseType: kyselyConfig.type
136
+ };
137
+ }
138
+ if ('dialect' in db) {
139
+ const dialectConfig = db;
140
+ return {
141
+ kysely: new external_kysely_namespaceObject.Kysely({
142
+ dialect: dialectConfig.dialect
143
+ }),
144
+ databaseType: dialectConfig.type
145
+ };
146
+ }
147
+ let dialect;
148
+ const databaseType = dialect_getDatabaseType(db);
149
+ if ('createDriver' in db) dialect = db;
150
+ if ('aggregate' in db) dialect = new external_kysely_namespaceObject.SqliteDialect({
151
+ database: db
152
+ });
153
+ if ('getConnection' in db) dialect = new external_kysely_namespaceObject.MysqlDialect({
154
+ pool: db
155
+ });
156
+ if ('connect' in db) dialect = new external_kysely_namespaceObject.PostgresDialect({
157
+ pool: db
158
+ });
159
+ return {
160
+ kysely: dialect ? new external_kysely_namespaceObject.Kysely({
161
+ dialect
162
+ }) : null,
163
+ databaseType
164
+ };
165
+ };
166
+ const postgresMap = {
167
+ string: [
168
+ 'character varying',
169
+ 'text'
170
+ ],
171
+ number: [
172
+ 'int4',
173
+ 'integer',
174
+ 'bigint',
175
+ 'smallint',
176
+ 'numeric',
177
+ 'real',
178
+ 'double precision'
179
+ ],
180
+ boolean: [
181
+ 'bool',
182
+ 'boolean'
183
+ ],
184
+ date: [
185
+ 'timestamp',
186
+ 'date'
187
+ ],
188
+ json: [
189
+ 'json',
190
+ 'jsonb'
191
+ ],
192
+ timezone: [
193
+ 'text',
194
+ 'character varying'
195
+ ]
196
+ };
197
+ const mysqlMap = {
198
+ string: [
199
+ 'varchar(255)',
200
+ 'varchar(36)',
201
+ 'text'
202
+ ],
203
+ number: [
204
+ 'integer',
205
+ 'int',
206
+ 'bigint',
207
+ 'smallint',
208
+ 'decimal',
209
+ 'float',
210
+ 'double'
211
+ ],
212
+ boolean: [
213
+ 'boolean',
214
+ 'tinyint'
215
+ ],
216
+ date: [
217
+ 'timestamp',
218
+ 'datetime',
219
+ 'date'
220
+ ],
221
+ json: [
222
+ 'json'
223
+ ],
224
+ timezone: [
225
+ 'varchar(50)'
226
+ ]
227
+ };
228
+ const sqliteMap = {
229
+ string: [
230
+ 'TEXT'
231
+ ],
232
+ number: [
233
+ 'INTEGER',
234
+ 'REAL'
235
+ ],
236
+ boolean: [
237
+ 'INTEGER',
238
+ 'BOOLEAN'
239
+ ],
240
+ date: [
241
+ 'DATE',
242
+ 'INTEGER'
243
+ ],
244
+ json: [
245
+ 'TEXT'
246
+ ],
247
+ timezone: [
248
+ 'TEXT'
249
+ ]
250
+ };
251
+ const mssqlMap = {
252
+ string: [
253
+ 'text',
254
+ 'varchar'
255
+ ],
256
+ number: [
257
+ 'int',
258
+ 'bigint',
259
+ 'smallint',
260
+ 'decimal',
261
+ 'float(53)',
262
+ 'float(24)'
263
+ ],
264
+ boolean: [
265
+ 'bit',
266
+ 'smallint'
267
+ ],
268
+ date: [
269
+ 'datetime',
270
+ 'date'
271
+ ],
272
+ json: [
273
+ 'nvarchar(max)'
274
+ ],
275
+ timezone: [
276
+ 'varchar',
277
+ 'text'
278
+ ]
279
+ };
280
+ const map = {
281
+ postgres: postgresMap,
282
+ mysql: mysqlMap,
283
+ sqlite: sqliteMap,
284
+ mssql: mssqlMap
285
+ };
286
+ function getMySqlStringType(field) {
287
+ if (field.unique) return 'varchar(255)';
288
+ if (field.references) return 'varchar(36)';
289
+ return 'text';
290
+ }
291
+ function matchType(columnDataType, fieldType, dbType) {
292
+ if ('string[]' === fieldType || 'number[]' === fieldType) return columnDataType.toLowerCase().includes('json');
293
+ const types = map[dbType];
294
+ const type = Array.isArray(fieldType) ? types.string.map((t)=>t.toLowerCase()) : types[fieldType].map((t)=>t.toLowerCase());
295
+ const matches = type.includes(columnDataType.toLowerCase());
296
+ return matches;
297
+ }
298
+ function getType(field, dbType = 'sqlite') {
299
+ const type = field.type;
300
+ const typeMap = {
301
+ string: {
302
+ sqlite: 'text',
303
+ postgres: 'text',
304
+ mysql: getMySqlStringType(field),
305
+ mssql: getMySqlStringType(field)
306
+ },
307
+ boolean: {
308
+ sqlite: 'integer',
309
+ postgres: 'boolean',
310
+ mysql: 'boolean',
311
+ mssql: 'smallint'
312
+ },
313
+ number: {
314
+ sqlite: field.bigint ? 'bigint' : 'integer',
315
+ postgres: field.bigint ? 'bigint' : 'integer',
316
+ mysql: field.bigint ? 'bigint' : 'integer',
317
+ mssql: field.bigint ? 'bigint' : 'integer'
318
+ },
319
+ date: {
320
+ sqlite: 'date',
321
+ postgres: 'timestamp',
322
+ mysql: 'datetime',
323
+ mssql: 'datetime'
324
+ },
325
+ timezone: {
326
+ sqlite: 'text',
327
+ postgres: 'text',
328
+ mysql: 'varchar(50)',
329
+ mssql: 'nvarchar(50)'
330
+ },
331
+ json: {
332
+ sqlite: 'text',
333
+ postgres: 'jsonb',
334
+ mysql: 'json',
335
+ mssql: 'nvarchar(max)'
336
+ }
337
+ };
338
+ if ('sqlite' === dbType && ('string[]' === type || 'number[]' === type)) return 'text';
339
+ if ('string[]' === type || 'number[]' === type) switch(dbType){
340
+ case 'postgres':
341
+ return 'jsonb';
342
+ case 'mysql':
343
+ case 'mssql':
344
+ return 'json';
345
+ default:
346
+ return 'text';
347
+ }
348
+ if ('json' === type) return typeMap.json[dbType];
349
+ return typeMap[type][dbType];
350
+ }
351
+ function buildColumnAddMigrations(db, toBeAdded, dbType) {
352
+ const migrations = [];
353
+ for (const table of toBeAdded)for (const [fieldName, field] of Object.entries(table.fields)){
354
+ const type = getType(field, dbType);
355
+ const exec = db.schema.alterTable(table.table).addColumn(fieldName, type, (col)=>{
356
+ let column = false !== field.required ? col.notNull() : col;
357
+ if (field.references) column = column.references(`${field.references.model}.${field.references.field}`);
358
+ if (field.unique) column = column.unique();
359
+ return column;
360
+ });
361
+ migrations.push(exec);
362
+ }
363
+ return migrations;
364
+ }
365
+ function buildTableCreateMigrations(db, toBeCreated, dbType) {
366
+ const logger = logger_createLogger();
367
+ const migrations = [];
368
+ for (const table of toBeCreated){
369
+ const fieldNames = Object.keys(table.fields);
370
+ logger.info(`Creating table ${table.table} with fields: ${fieldNames.join(', ')}`);
371
+ if (fieldNames.includes('id')) logger.warn(`⚠️ Table ${table.table} already has an explicit 'id' field, which may conflict with the auto-generated primary key`);
372
+ for (const [fieldName, field] of Object.entries(table.fields))if ('id' === field.fieldName && 'id' !== fieldName) logger.error(`❌ ERROR: Table ${table.table} has field '${fieldName}' with fieldName 'id' - this will cause a duplicate column error`);
373
+ let dbT = db.schema.createTable(table.table).addColumn('id', 'mysql' === dbType || 'mssql' === dbType ? 'varchar(36)' : 'text', (col)=>col.primaryKey().notNull());
374
+ for (const [fieldName, field] of Object.entries(table.fields)){
375
+ const type = getType(field, dbType);
376
+ logger.info(`Adding column ${fieldName} (fieldName: ${field.fieldName || fieldName}) to table ${table.table}`);
377
+ dbT = dbT.addColumn(fieldName, type, (col)=>{
378
+ let column = false !== field.required ? col.notNull() : col;
379
+ if (field.references) column = column.references(`${field.references.model}.${field.references.field}`);
380
+ if (field.unique) column = column.unique();
381
+ return column;
382
+ });
383
+ }
384
+ const sqlDebug = dbT.compile().sql;
385
+ logger.info(`SQL for table ${table.table}:\n${sqlDebug}`);
386
+ migrations.push(dbT);
387
+ }
388
+ return migrations;
389
+ }
390
+ function createMigrationExecutors(migrations) {
391
+ const logger = logger_createLogger();
392
+ async function runMigrations() {
393
+ for (const migration of migrations)try {
394
+ await migration.execute();
395
+ } catch (error) {
396
+ const sql = migration.compile().sql;
397
+ logger.error(`Migration failed! SQL:\n${sql}`);
398
+ throw error;
399
+ }
400
+ }
401
+ async function compileMigrations() {
402
+ const compiled = migrations.map((m)=>m.compile().sql);
403
+ return `${compiled.join(';\n\n')};`;
404
+ }
405
+ return {
406
+ runMigrations,
407
+ compileMigrations
408
+ };
409
+ }
410
+ const definition_getConsentTables = (options)=>{
411
+ const pluginSchema = options.plugins?.reduce((acc, plugin)=>{
412
+ const schema = plugin.schema;
413
+ if (!schema) return acc;
414
+ for (const [key, value] of Object.entries(schema))acc[key] = {
415
+ fields: {
416
+ ...acc[key]?.fields,
417
+ ...value.fields
418
+ },
419
+ entityName: value.entityName || key
420
+ };
421
+ return acc;
422
+ }, {});
423
+ const { subject, consentPurpose, consentPolicy, domain, geoLocation, consent, consentPurposeJunction, record, consentGeoLocation, consentWithdrawal, auditLog, ...pluginTables } = pluginSchema || {};
424
+ return {
425
+ subject: getSubjectTable(options, subject?.fields),
426
+ consentPurpose: getPurposeTable(options, consentPurpose?.fields),
427
+ consentPolicy: getConsentPolicyTable(options, consentPolicy?.fields),
428
+ domain: getDomainTable(options, domain?.fields),
429
+ consent: getConsentTable(options, consent?.fields),
430
+ consentPurposeJunction: getPurposeJunctionTable(options, consentPurposeJunction?.fields),
431
+ consentRecord: getConsentRecordTable(options, record?.fields),
432
+ consentGeoLocation: getConsentGeoLocationTable(options, consentGeoLocation?.fields),
433
+ consentWithdrawal: getConsentWithdrawalTable(options, consentWithdrawal?.fields),
434
+ auditLog: getAuditLogTable(options, auditLog?.fields),
435
+ geoLocation: getGeoLocationTable(options, geoLocation?.fields),
436
+ ...pluginTables
437
+ };
438
+ };
439
+ const external_zod_namespaceObject = require("zod");
440
+ const auditLogSchema = external_zod_namespaceObject.z.object({
441
+ id: external_zod_namespaceObject.z.string(),
442
+ entityType: external_zod_namespaceObject.z.string(),
443
+ entityId: external_zod_namespaceObject.z.string(),
444
+ actionType: external_zod_namespaceObject.z.string(),
445
+ subjectId: external_zod_namespaceObject.z.string().optional(),
446
+ ipAddress: external_zod_namespaceObject.z.string().optional(),
447
+ userAgent: external_zod_namespaceObject.z.string().optional(),
448
+ changes: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.unknown()).optional(),
449
+ metadata: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.unknown()).optional(),
450
+ createdAt: external_zod_namespaceObject.z.date().default(()=>new Date())
451
+ });
452
+ require("superjson");
453
+ const fieldConfigSchema = external_zod_namespaceObject.z.object({
454
+ required: external_zod_namespaceObject.z.boolean().default(true),
455
+ returned: external_zod_namespaceObject.z.boolean().default(true),
456
+ input: external_zod_namespaceObject.z.boolean().default(true),
457
+ defaultValue: external_zod_namespaceObject.z.union([
458
+ external_zod_namespaceObject.z.any(),
459
+ external_zod_namespaceObject.z["function"]().returns(external_zod_namespaceObject.z.any())
460
+ ]).optional(),
461
+ transform: external_zod_namespaceObject.z.object({
462
+ input: external_zod_namespaceObject.z["function"]().args(external_zod_namespaceObject.z.any()).returns(external_zod_namespaceObject.z.union([
463
+ external_zod_namespaceObject.z.any(),
464
+ external_zod_namespaceObject.z.promise(external_zod_namespaceObject.z.any())
465
+ ])).optional(),
466
+ output: external_zod_namespaceObject.z["function"]().args(external_zod_namespaceObject.z.any()).returns(external_zod_namespaceObject.z.union([
467
+ external_zod_namespaceObject.z.any(),
468
+ external_zod_namespaceObject.z.promise(external_zod_namespaceObject.z.any())
469
+ ])).optional()
470
+ }).optional(),
471
+ validator: external_zod_namespaceObject.z["function"]().args(external_zod_namespaceObject.z.any()).returns(external_zod_namespaceObject.z.union([
472
+ external_zod_namespaceObject.z.string(),
473
+ external_zod_namespaceObject.z["null"]()
474
+ ])).optional(),
475
+ unique: external_zod_namespaceObject.z.boolean().optional(),
476
+ indexed: external_zod_namespaceObject.z.boolean().optional(),
477
+ sortable: external_zod_namespaceObject.z.boolean().default(true),
478
+ fieldName: external_zod_namespaceObject.z.string().optional(),
479
+ bigint: external_zod_namespaceObject.z.boolean().default(false)
480
+ });
481
+ const stringFieldSchema = fieldConfigSchema.extend({
482
+ type: external_zod_namespaceObject.z.literal('string'),
483
+ minLength: external_zod_namespaceObject.z.number().optional(),
484
+ maxLength: external_zod_namespaceObject.z.number().optional(),
485
+ pattern: external_zod_namespaceObject.z.string().optional()
486
+ });
487
+ const numberFieldSchema = fieldConfigSchema.extend({
488
+ type: external_zod_namespaceObject.z.literal('number'),
489
+ min: external_zod_namespaceObject.z.number().optional(),
490
+ max: external_zod_namespaceObject.z.number().optional()
491
+ });
492
+ const booleanFieldSchema = fieldConfigSchema.extend({
493
+ type: external_zod_namespaceObject.z.literal('boolean')
494
+ });
495
+ const dateFieldSchema = fieldConfigSchema.extend({
496
+ type: external_zod_namespaceObject.z.literal('date'),
497
+ minDate: external_zod_namespaceObject.z.date().optional(),
498
+ maxDate: external_zod_namespaceObject.z.date().optional(),
499
+ dateOnly: external_zod_namespaceObject.z.boolean().default(false),
500
+ format: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.unknown()).optional()
501
+ });
502
+ const timezoneFieldSchema = fieldConfigSchema.extend({
503
+ type: external_zod_namespaceObject.z.literal('timezone'),
504
+ validateTimezone: external_zod_namespaceObject.z.boolean().default(true),
505
+ suggestedValues: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).optional(),
506
+ restrictToSuggestedValues: external_zod_namespaceObject.z.boolean().default(false)
507
+ });
508
+ const jsonFieldSchema = fieldConfigSchema.extend({
509
+ type: external_zod_namespaceObject.z.literal('json'),
510
+ validateJson: external_zod_namespaceObject.z.boolean().default(true)
511
+ });
512
+ const stringArrayFieldSchema = fieldConfigSchema.extend({
513
+ type: external_zod_namespaceObject.z.literal('string[]')
514
+ });
515
+ const numberArrayFieldSchema = fieldConfigSchema.extend({
516
+ type: external_zod_namespaceObject.z.literal('number[]')
517
+ });
518
+ external_zod_namespaceObject.z.discriminatedUnion('type', [
519
+ stringFieldSchema,
520
+ numberFieldSchema,
521
+ booleanFieldSchema,
522
+ dateFieldSchema,
523
+ timezoneFieldSchema,
524
+ jsonFieldSchema,
525
+ stringArrayFieldSchema,
526
+ numberArrayFieldSchema
527
+ ]);
528
+ const COMMON_TIMEZONES = {
529
+ UTC: 'UTC',
530
+ GMT: 'GMT',
531
+ EASTERN: 'America/New_York',
532
+ CENTRAL: 'America/Chicago',
533
+ MOUNTAIN: 'America/Denver',
534
+ PACIFIC: 'America/Los_Angeles',
535
+ LONDON: 'Europe/London',
536
+ PARIS: 'Europe/Paris',
537
+ BERLIN: 'Europe/Berlin',
538
+ TOKYO: 'Asia/Tokyo',
539
+ SHANGHAI: 'Asia/Shanghai',
540
+ SINGAPORE: 'Asia/Singapore',
541
+ SYDNEY: 'Australia/Sydney',
542
+ SAO_PAULO: 'America/Sao_Paulo'
543
+ };
544
+ const external_base_x_namespaceObject = require("base-x");
545
+ var external_base_x_default = /*#__PURE__*/ __webpack_require__.n(external_base_x_namespaceObject);
546
+ external_base_x_default()('123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz');
547
+ function getAuditLogTable(options, auditLogFields) {
548
+ const auditLogConfig = options.tables?.auditLog;
549
+ const subjectConfig = options.tables?.subject;
550
+ return {
551
+ entityName: auditLogConfig?.entityName || 'auditLog',
552
+ entityPrefix: auditLogConfig?.entityPrefix || 'log',
553
+ schema: auditLogSchema,
554
+ fields: {
555
+ entityType: {
556
+ type: 'string',
557
+ required: true,
558
+ fieldName: auditLogConfig?.fields?.entityType || 'entityType'
559
+ },
560
+ entityId: {
561
+ type: 'string',
562
+ required: true,
563
+ fieldName: auditLogConfig?.fields?.entityId || 'entityId'
564
+ },
565
+ actionType: {
566
+ type: 'string',
567
+ required: true,
568
+ fieldName: auditLogConfig?.fields?.actionType || 'actionType'
569
+ },
570
+ subjectId: {
571
+ type: 'string',
572
+ required: false,
573
+ fieldName: auditLogConfig?.fields?.subjectId || 'subjectId',
574
+ references: {
575
+ model: subjectConfig?.entityName || 'subject',
576
+ field: 'id'
577
+ }
578
+ },
579
+ ipAddress: {
580
+ type: 'string',
581
+ required: false,
582
+ fieldName: auditLogConfig?.fields?.ipAddress || 'ipAddress'
583
+ },
584
+ userAgent: {
585
+ type: 'string',
586
+ required: false,
587
+ fieldName: auditLogConfig?.fields?.userAgent || 'userAgent'
588
+ },
589
+ changes: {
590
+ type: 'json',
591
+ required: false,
592
+ fieldName: auditLogConfig?.fields?.changes || 'changes'
593
+ },
594
+ metadata: {
595
+ type: 'json',
596
+ required: false,
597
+ fieldName: auditLogConfig?.fields?.metadata || 'metadata'
598
+ },
599
+ createdAt: {
600
+ type: 'date',
601
+ defaultValue: ()=>new Date(),
602
+ required: true,
603
+ fieldName: auditLogConfig?.fields?.createdAt || 'createdAt'
604
+ },
605
+ eventTimezone: {
606
+ type: 'timezone',
607
+ required: true,
608
+ defaultValue: COMMON_TIMEZONES.UTC,
609
+ fieldName: auditLogConfig?.fields?.eventTimezone || 'eventTimezone'
610
+ },
611
+ ...auditLogFields || {},
612
+ ...auditLogConfig?.additionalFields || {}
613
+ },
614
+ indexes: [
615
+ {
616
+ name: 'entity_index',
617
+ fields: [
618
+ 'entityType',
619
+ 'entityId'
620
+ ]
621
+ },
622
+ {
623
+ name: 'action_type_index',
624
+ fields: [
625
+ 'actionType'
626
+ ]
627
+ },
628
+ {
629
+ name: 'subject_id_index',
630
+ fields: [
631
+ 'subjectId'
632
+ ]
633
+ },
634
+ {
635
+ name: 'created_at_index',
636
+ fields: [
637
+ 'createdAt'
638
+ ]
639
+ }
640
+ ],
641
+ order: 5
642
+ };
643
+ }
644
+ const consentGeoLocationSchema = external_zod_namespaceObject.z.object({
645
+ id: external_zod_namespaceObject.z.string(),
646
+ consentId: external_zod_namespaceObject.z.string(),
647
+ ip: external_zod_namespaceObject.z.string().ip(),
648
+ country: external_zod_namespaceObject.z.string().optional(),
649
+ region: external_zod_namespaceObject.z.string().optional(),
650
+ city: external_zod_namespaceObject.z.string().optional(),
651
+ latitude: external_zod_namespaceObject.z.number().min(-90).max(90).optional(),
652
+ longitude: external_zod_namespaceObject.z.number().min(-180).max(180).optional(),
653
+ timezone: external_zod_namespaceObject.z.string().regex(/^[A-Za-z_]+\/[A-Za-z_]+$/).optional(),
654
+ createdAt: external_zod_namespaceObject.z.date().default(()=>new Date()),
655
+ updatedAt: external_zod_namespaceObject.z.date().default(()=>new Date())
656
+ });
657
+ function getConsentGeoLocationTable(options, geoLocationFields) {
658
+ const consentGeoLocationConfig = options.tables?.consentGeoLocation;
659
+ const consentConfig = options.tables?.consent;
660
+ return {
661
+ entityName: consentGeoLocationConfig?.entityName || 'consentGeoLocation',
662
+ entityPrefix: consentGeoLocationConfig?.entityPrefix || 'cgl',
663
+ schema: consentGeoLocationSchema,
664
+ fields: {
665
+ consentId: {
666
+ type: 'string',
667
+ required: true,
668
+ fieldName: consentGeoLocationConfig?.fields?.consentId || 'consentId',
669
+ references: {
670
+ model: consentConfig?.entityName || 'consent',
671
+ field: 'id'
672
+ }
673
+ },
674
+ ip: {
675
+ type: 'string',
676
+ required: true,
677
+ fieldName: consentGeoLocationConfig?.fields?.ip || 'ip'
678
+ },
679
+ country: {
680
+ type: 'string',
681
+ required: false,
682
+ fieldName: consentGeoLocationConfig?.fields?.country || 'country'
683
+ },
684
+ region: {
685
+ type: 'string',
686
+ required: false,
687
+ fieldName: consentGeoLocationConfig?.fields?.region || 'region'
688
+ },
689
+ city: {
690
+ type: 'string',
691
+ required: false,
692
+ fieldName: consentGeoLocationConfig?.fields?.city || 'city'
693
+ },
694
+ latitude: {
695
+ type: 'number',
696
+ required: false,
697
+ fieldName: consentGeoLocationConfig?.fields?.latitude || 'latitude'
698
+ },
699
+ longitude: {
700
+ type: 'number',
701
+ required: false,
702
+ fieldName: consentGeoLocationConfig?.fields?.longitude || 'longitude'
703
+ },
704
+ timezone: {
705
+ type: 'string',
706
+ required: false,
707
+ fieldName: consentGeoLocationConfig?.fields?.timezone || 'timezone'
708
+ },
709
+ createdAt: {
710
+ type: 'date',
711
+ defaultValue: ()=>new Date(),
712
+ required: true,
713
+ fieldName: consentGeoLocationConfig?.fields?.createdAt || 'createdAt'
714
+ },
715
+ ...geoLocationFields || {},
716
+ ...consentGeoLocationConfig?.additionalFields || {}
717
+ },
718
+ indexes: [
719
+ {
720
+ name: 'consent_id_index',
721
+ fields: [
722
+ 'consentId'
723
+ ]
724
+ },
725
+ {
726
+ name: 'country_index',
727
+ fields: [
728
+ 'country'
729
+ ]
730
+ },
731
+ {
732
+ name: 'created_at_index',
733
+ fields: [
734
+ 'createdAt'
735
+ ]
736
+ }
737
+ ],
738
+ order: 4
739
+ };
740
+ }
741
+ require("node:crypto");
742
+ const consentPolicySchema = external_zod_namespaceObject.z.object({
743
+ id: external_zod_namespaceObject.z.string(),
744
+ version: external_zod_namespaceObject.z.string(),
745
+ name: external_zod_namespaceObject.z.string(),
746
+ effectiveDate: external_zod_namespaceObject.z.date(),
747
+ expirationDate: external_zod_namespaceObject.z.date().nullable().optional(),
748
+ content: external_zod_namespaceObject.z.string(),
749
+ contentHash: external_zod_namespaceObject.z.string(),
750
+ isActive: external_zod_namespaceObject.z.boolean().default(true),
751
+ createdAt: external_zod_namespaceObject.z.date().default(()=>new Date()),
752
+ updatedAt: external_zod_namespaceObject.z.date().default(()=>new Date())
753
+ });
754
+ function getConsentPolicyTable(options, policyFields) {
755
+ const consentPolicyConfig = options.tables?.consentPolicy;
756
+ return {
757
+ entityName: consentPolicyConfig?.entityName || 'consentPolicy',
758
+ entityPrefix: consentPolicyConfig?.entityPrefix || 'pol',
759
+ schema: consentPolicySchema,
760
+ fields: {
761
+ version: {
762
+ type: 'string',
763
+ required: true,
764
+ fieldName: consentPolicyConfig?.fields?.version || 'version'
765
+ },
766
+ name: {
767
+ type: 'string',
768
+ required: true,
769
+ fieldName: consentPolicyConfig?.fields?.name || 'name'
770
+ },
771
+ effectiveDate: {
772
+ type: 'date',
773
+ required: true,
774
+ fieldName: consentPolicyConfig?.fields?.effectiveDate || 'effectiveDate'
775
+ },
776
+ expirationDate: {
777
+ type: 'date',
778
+ required: false,
779
+ fieldName: consentPolicyConfig?.fields?.expirationDate || 'expirationDate'
780
+ },
781
+ content: {
782
+ type: 'string',
783
+ required: true,
784
+ fieldName: consentPolicyConfig?.fields?.content || 'content'
785
+ },
786
+ contentHash: {
787
+ type: 'string',
788
+ required: true,
789
+ fieldName: consentPolicyConfig?.fields?.contentHash || 'contentHash'
790
+ },
791
+ isActive: {
792
+ type: 'boolean',
793
+ defaultValue: true,
794
+ required: true,
795
+ fieldName: consentPolicyConfig?.fields?.isActive || 'isActive'
796
+ },
797
+ createdAt: {
798
+ type: 'date',
799
+ defaultValue: ()=>new Date(),
800
+ required: true,
801
+ fieldName: consentPolicyConfig?.fields?.createdAt || 'createdAt'
802
+ },
803
+ ...policyFields || {},
804
+ ...consentPolicyConfig?.additionalFields || {}
805
+ },
806
+ order: 2
807
+ };
808
+ }
809
+ const consentPurposeJunctionSchema = external_zod_namespaceObject.z.object({
810
+ id: external_zod_namespaceObject.z.string(),
811
+ consentId: external_zod_namespaceObject.z.string(),
812
+ consentPurposeId: external_zod_namespaceObject.z.string(),
813
+ status: external_zod_namespaceObject.z["enum"]([
814
+ 'active',
815
+ 'withdrawn'
816
+ ], {
817
+ errorMap: ()=>({
818
+ message: "Status must be either 'active' or 'withdrawn'"
819
+ })
820
+ }).default('active'),
821
+ metadata: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.union([
822
+ external_zod_namespaceObject.z.string(),
823
+ external_zod_namespaceObject.z.number(),
824
+ external_zod_namespaceObject.z.boolean()
825
+ ])).optional(),
826
+ createdAt: external_zod_namespaceObject.z.date().default(()=>new Date()),
827
+ updatedAt: external_zod_namespaceObject.z.date().default(()=>new Date())
828
+ });
829
+ function getPurposeJunctionTable(options, junctionFields) {
830
+ const purposeJunctionConfig = options.tables?.consentPurposeJunction;
831
+ const consentConfig = options.tables?.consent;
832
+ const purposeConfig = options.tables?.consentPurpose;
833
+ return {
834
+ entityName: purposeJunctionConfig?.entityName || 'consentPurposeJunction',
835
+ entityPrefix: purposeJunctionConfig?.entityPrefix || 'pjx',
836
+ schema: consentPurposeJunctionSchema,
837
+ fields: {
838
+ consentId: {
839
+ type: 'string',
840
+ required: true,
841
+ fieldName: purposeJunctionConfig?.fields?.consentId || 'consentId',
842
+ references: {
843
+ model: consentConfig?.entityName || 'consent',
844
+ field: 'id'
845
+ }
846
+ },
847
+ purposeId: {
848
+ type: 'string',
849
+ required: true,
850
+ fieldName: purposeJunctionConfig?.fields?.purposeId || 'purposeId',
851
+ references: {
852
+ model: purposeConfig?.entityName || 'consentPurpose',
853
+ field: 'id'
854
+ }
855
+ },
856
+ status: {
857
+ type: 'string',
858
+ defaultValue: ()=>'active',
859
+ required: true,
860
+ fieldName: purposeJunctionConfig?.fields?.status || 'status'
861
+ },
862
+ metadata: {
863
+ type: 'json',
864
+ required: false,
865
+ fieldName: purposeJunctionConfig?.fields?.metadata || 'metadata'
866
+ },
867
+ createdAt: {
868
+ type: 'date',
869
+ defaultValue: ()=>new Date(),
870
+ required: true,
871
+ fieldName: purposeJunctionConfig?.fields?.createdAt || 'createdAt'
872
+ },
873
+ updatedAt: {
874
+ type: 'date',
875
+ required: false,
876
+ fieldName: purposeJunctionConfig?.fields?.updatedAt || 'updatedAt'
877
+ },
878
+ ...junctionFields || {},
879
+ ...purposeJunctionConfig?.additionalFields || {}
880
+ },
881
+ uniqueConstraints: [
882
+ {
883
+ name: 'unique_consent_purpose',
884
+ fields: [
885
+ 'consentId',
886
+ 'purposeId'
887
+ ]
888
+ }
889
+ ],
890
+ order: 4
891
+ };
892
+ }
893
+ const purposeSchema = external_zod_namespaceObject.z.object({
894
+ id: external_zod_namespaceObject.z.string(),
895
+ code: external_zod_namespaceObject.z.string(),
896
+ name: external_zod_namespaceObject.z.string(),
897
+ description: external_zod_namespaceObject.z.string(),
898
+ isEssential: external_zod_namespaceObject.z.boolean().default(false),
899
+ dataCategory: external_zod_namespaceObject.z.string().optional(),
900
+ legalBasis: external_zod_namespaceObject.z.string().optional(),
901
+ isActive: external_zod_namespaceObject.z.boolean().default(true),
902
+ createdAt: external_zod_namespaceObject.z.date().default(()=>new Date()),
903
+ updatedAt: external_zod_namespaceObject.z.date().default(()=>new Date())
904
+ });
905
+ function getPurposeTable(options, purposeFields) {
906
+ const purposeConfig = options.tables?.consentPurpose;
907
+ return {
908
+ entityName: purposeConfig?.entityName || 'consentPurpose',
909
+ entityPrefix: purposeConfig?.entityPrefix || 'pur',
910
+ schema: purposeSchema,
911
+ fields: {
912
+ code: {
913
+ type: 'string',
914
+ required: true,
915
+ fieldName: purposeConfig?.fields?.code || 'code'
916
+ },
917
+ name: {
918
+ type: 'string',
919
+ required: true,
920
+ fieldName: purposeConfig?.fields?.name || 'name'
921
+ },
922
+ description: {
923
+ type: 'string',
924
+ required: true,
925
+ fieldName: purposeConfig?.fields?.description || "description"
926
+ },
927
+ isEssential: {
928
+ type: 'boolean',
929
+ defaultValue: ()=>false,
930
+ required: true,
931
+ fieldName: purposeConfig?.fields?.isEssential || 'isEssential'
932
+ },
933
+ dataCategory: {
934
+ type: 'string',
935
+ required: false,
936
+ fieldName: purposeConfig?.fields?.dataCategory || 'dataCategory'
937
+ },
938
+ legalBasis: {
939
+ type: 'string',
940
+ required: false,
941
+ fieldName: purposeConfig?.fields?.legalBasis || 'legalBasis'
942
+ },
943
+ isActive: {
944
+ type: 'boolean',
945
+ defaultValue: true,
946
+ required: true,
947
+ fieldName: purposeConfig?.fields?.isActive || 'isActive'
948
+ },
949
+ createdAt: {
950
+ type: 'date',
951
+ defaultValue: ()=>new Date(),
952
+ required: true,
953
+ fieldName: purposeConfig?.fields?.createdAt || 'createdAt'
954
+ },
955
+ updatedAt: {
956
+ type: 'date',
957
+ defaultValue: ()=>new Date(),
958
+ required: true,
959
+ fieldName: purposeConfig?.fields?.updatedAt || 'updatedAt'
960
+ },
961
+ ...purposeFields || {},
962
+ ...purposeConfig?.additionalFields || {}
963
+ },
964
+ order: 1
965
+ };
966
+ }
967
+ const consentRecordSchema = external_zod_namespaceObject.z.object({
968
+ id: external_zod_namespaceObject.z.string(),
969
+ subjectId: external_zod_namespaceObject.z.string(),
970
+ consentId: external_zod_namespaceObject.z.string().optional(),
971
+ actionType: external_zod_namespaceObject.z.string(),
972
+ details: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.unknown()).optional(),
973
+ createdAt: external_zod_namespaceObject.z.date().default(()=>new Date()),
974
+ updatedAt: external_zod_namespaceObject.z.date().default(()=>new Date())
975
+ });
976
+ function getConsentRecordTable(options, recordFields) {
977
+ const recordConfig = options.tables?.record;
978
+ const subjectConfig = options.tables?.subject;
979
+ const consentConfig = options.tables?.consent;
980
+ return {
981
+ entityName: recordConfig?.entityName || 'consentRecord',
982
+ entityPrefix: recordConfig?.entityPrefix || 'rec',
983
+ schema: consentRecordSchema,
984
+ fields: {
985
+ subjectId: {
986
+ type: 'string',
987
+ required: true,
988
+ fieldName: recordConfig?.fields?.subjectId || 'subjectId',
989
+ references: {
990
+ model: subjectConfig?.entityName || 'subject',
991
+ field: 'id'
992
+ }
993
+ },
994
+ consentId: {
995
+ type: 'string',
996
+ required: false,
997
+ fieldName: recordConfig?.fields?.consentId || 'consentId',
998
+ references: {
999
+ model: consentConfig?.entityName || 'consent',
1000
+ field: 'id'
1001
+ }
1002
+ },
1003
+ actionType: {
1004
+ type: 'string',
1005
+ required: true,
1006
+ fieldName: recordConfig?.fields?.actionType || 'actionType'
1007
+ },
1008
+ details: {
1009
+ type: 'json',
1010
+ required: false,
1011
+ fieldName: recordConfig?.fields?.details || 'details'
1012
+ },
1013
+ createdAt: {
1014
+ type: 'date',
1015
+ defaultValue: ()=>new Date(),
1016
+ required: true,
1017
+ fieldName: recordConfig?.fields?.createdAt || 'createdAt'
1018
+ },
1019
+ ...recordFields || {},
1020
+ ...recordConfig?.additionalFields || {}
1021
+ },
1022
+ order: 4
1023
+ };
1024
+ }
1025
+ const consentWithdrawalSchema = external_zod_namespaceObject.z.object({
1026
+ id: external_zod_namespaceObject.z.string(),
1027
+ consentId: external_zod_namespaceObject.z.string(),
1028
+ subjectId: external_zod_namespaceObject.z.string(),
1029
+ withdrawalReason: external_zod_namespaceObject.z.string().optional(),
1030
+ withdrawalMethod: external_zod_namespaceObject.z["enum"]([
1031
+ 'subject-initiated',
1032
+ 'automatic-expiry',
1033
+ 'admin',
1034
+ 'api',
1035
+ 'other'
1036
+ ]).default('subject-initiated'),
1037
+ ipAddress: external_zod_namespaceObject.z.string().optional(),
1038
+ userAgent: external_zod_namespaceObject.z.string().optional(),
1039
+ metadata: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.unknown()).optional(),
1040
+ createdAt: external_zod_namespaceObject.z.date().default(()=>new Date()),
1041
+ updatedAt: external_zod_namespaceObject.z.date().default(()=>new Date())
1042
+ });
1043
+ function getConsentWithdrawalTable(options, withdrawalFields) {
1044
+ const consentWithdrawalConfig = options.tables?.consentWithdrawal;
1045
+ const consentConfig = options.tables?.consent;
1046
+ const subjectConfig = options.tables?.subject;
1047
+ return {
1048
+ entityName: consentWithdrawalConfig?.entityName || 'consentWithdrawal',
1049
+ entityPrefix: consentWithdrawalConfig?.entityPrefix || 'wdr',
1050
+ schema: consentWithdrawalSchema,
1051
+ fields: {
1052
+ consentId: {
1053
+ type: 'string',
1054
+ required: true,
1055
+ fieldName: consentWithdrawalConfig?.fields?.consentId || 'consentId',
1056
+ references: {
1057
+ model: consentConfig?.entityName || 'consent',
1058
+ field: 'id'
1059
+ }
1060
+ },
1061
+ subjectId: {
1062
+ type: 'string',
1063
+ required: true,
1064
+ fieldName: consentWithdrawalConfig?.fields?.subjectId || 'subjectId',
1065
+ references: {
1066
+ model: subjectConfig?.entityName || 'subject',
1067
+ field: 'id'
1068
+ }
1069
+ },
1070
+ withdrawalReason: {
1071
+ type: 'string',
1072
+ required: false,
1073
+ fieldName: consentWithdrawalConfig?.fields?.withdrawalReason || 'withdrawalReason'
1074
+ },
1075
+ withdrawalMethod: {
1076
+ type: 'string',
1077
+ defaultValue: ()=>'subject-initiated',
1078
+ required: true,
1079
+ fieldName: consentWithdrawalConfig?.fields?.withdrawalMethod || 'withdrawalMethod'
1080
+ },
1081
+ ipAddress: {
1082
+ type: 'string',
1083
+ required: false,
1084
+ fieldName: consentWithdrawalConfig?.fields?.ipAddress || 'ipAddress'
1085
+ },
1086
+ userAgent: {
1087
+ type: 'string',
1088
+ required: false,
1089
+ fieldName: consentWithdrawalConfig?.fields?.userAgent || 'userAgent'
1090
+ },
1091
+ metadata: {
1092
+ type: 'json',
1093
+ required: false,
1094
+ fieldName: consentWithdrawalConfig?.fields?.metadata || 'metadata'
1095
+ },
1096
+ createdAt: {
1097
+ type: 'date',
1098
+ defaultValue: ()=>new Date(),
1099
+ required: true,
1100
+ fieldName: consentWithdrawalConfig?.fields?.createdAt || 'createdAt'
1101
+ },
1102
+ ...withdrawalFields || {},
1103
+ ...consentWithdrawalConfig?.additionalFields || {}
1104
+ },
1105
+ uniqueConstraints: consentWithdrawalConfig?.preventMultipleWithdrawals !== false ? [
1106
+ {
1107
+ name: 'unique_consent_withdrawal',
1108
+ fields: [
1109
+ 'consentId'
1110
+ ]
1111
+ }
1112
+ ] : [],
1113
+ indexes: [
1114
+ {
1115
+ name: 'subject_id_index',
1116
+ fields: [
1117
+ 'subjectId'
1118
+ ]
1119
+ },
1120
+ {
1121
+ name: 'created_at_index',
1122
+ fields: [
1123
+ 'createdAt'
1124
+ ]
1125
+ }
1126
+ ],
1127
+ order: 4
1128
+ };
1129
+ }
1130
+ const consentHistorySchema = external_zod_namespaceObject.z.object({
1131
+ actionType: external_zod_namespaceObject.z["enum"]([
1132
+ 'given',
1133
+ 'withdrawn',
1134
+ 'updated',
1135
+ 'expired'
1136
+ ]),
1137
+ timestamp: external_zod_namespaceObject.z.date(),
1138
+ details: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.unknown()).optional(),
1139
+ previousState: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.unknown()).optional(),
1140
+ newState: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.unknown()).optional()
1141
+ });
1142
+ const consentSchema = external_zod_namespaceObject.z.object({
1143
+ id: external_zod_namespaceObject.z.string(),
1144
+ subjectId: external_zod_namespaceObject.z.string(),
1145
+ domainId: external_zod_namespaceObject.z.string(),
1146
+ purposeIds: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()),
1147
+ metadata: external_zod_namespaceObject.z.record(external_zod_namespaceObject.z.unknown()).optional(),
1148
+ policyId: external_zod_namespaceObject.z.string().optional(),
1149
+ ipAddress: external_zod_namespaceObject.z.string().optional(),
1150
+ userAgent: external_zod_namespaceObject.z.string().optional(),
1151
+ status: external_zod_namespaceObject.z["enum"]([
1152
+ 'active',
1153
+ 'withdrawn',
1154
+ 'expired'
1155
+ ]).default('active'),
1156
+ withdrawalReason: external_zod_namespaceObject.z.string().optional(),
1157
+ givenAt: external_zod_namespaceObject.z.date().default(()=>new Date()),
1158
+ validUntil: external_zod_namespaceObject.z.date().optional(),
1159
+ isActive: external_zod_namespaceObject.z.boolean().default(true),
1160
+ history: external_zod_namespaceObject.z.array(consentHistorySchema).default([])
1161
+ });
1162
+ function getConsentTable(options, consentFields) {
1163
+ const consentConfig = options.tables?.consent;
1164
+ const subjectConfig = options.tables?.subject;
1165
+ const domainConfig = options.tables?.domain;
1166
+ const policyConfig = options.tables?.consentPolicy;
1167
+ const purposeConfig = options.tables?.consentPurpose;
1168
+ return {
1169
+ entityName: consentConfig?.entityName || 'consent',
1170
+ entityPrefix: consentConfig?.entityPrefix || 'cns',
1171
+ schema: consentSchema,
1172
+ fields: {
1173
+ subjectId: {
1174
+ type: 'string',
1175
+ required: true,
1176
+ fieldName: consentConfig?.fields?.subjectId || 'subjectId',
1177
+ references: {
1178
+ model: subjectConfig?.entityName || 'subject',
1179
+ field: 'id'
1180
+ }
1181
+ },
1182
+ domainId: {
1183
+ type: 'string',
1184
+ required: true,
1185
+ fieldName: consentConfig?.fields?.domainId || 'domainId',
1186
+ references: {
1187
+ model: domainConfig?.entityName || 'domain',
1188
+ field: 'id'
1189
+ }
1190
+ },
1191
+ purposeIds: {
1192
+ type: 'json',
1193
+ required: false,
1194
+ fieldName: consentConfig?.fields?.purposeIds || 'purposeIds',
1195
+ references: {
1196
+ model: purposeConfig?.entityName || 'consentPurpose',
1197
+ field: 'id',
1198
+ type: 'array'
1199
+ }
1200
+ },
1201
+ metadata: {
1202
+ type: 'json',
1203
+ required: false,
1204
+ fieldName: consentConfig?.fields?.metadata || 'metadata'
1205
+ },
1206
+ policyId: {
1207
+ type: 'string',
1208
+ required: false,
1209
+ fieldName: consentConfig?.fields?.policyId || 'policyId',
1210
+ references: {
1211
+ model: policyConfig?.entityName || 'consentPolicy',
1212
+ field: 'id'
1213
+ }
1214
+ },
1215
+ ipAddress: {
1216
+ type: 'string',
1217
+ required: false,
1218
+ fieldName: consentConfig?.fields?.ipAddress || 'ipAddress'
1219
+ },
1220
+ userAgent: {
1221
+ type: 'string',
1222
+ required: false,
1223
+ fieldName: consentConfig?.fields?.userAgent || 'userAgent'
1224
+ },
1225
+ status: {
1226
+ type: 'string',
1227
+ defaultValue: ()=>'active',
1228
+ required: true,
1229
+ fieldName: consentConfig?.fields?.status || 'status'
1230
+ },
1231
+ withdrawalReason: {
1232
+ type: 'string',
1233
+ required: false,
1234
+ fieldName: consentConfig?.fields?.withdrawalReason || 'withdrawalReason'
1235
+ },
1236
+ givenAt: {
1237
+ type: 'date',
1238
+ defaultValue: ()=>new Date(),
1239
+ required: true,
1240
+ fieldName: consentConfig?.fields?.givenAt || 'givenAt'
1241
+ },
1242
+ validUntil: {
1243
+ type: 'date',
1244
+ required: false,
1245
+ fieldName: consentConfig?.fields?.validUntil || 'validUntil',
1246
+ transform: {
1247
+ input: (val, data)=>{
1248
+ if (val) return val;
1249
+ const expiresIn = consentConfig?.expiresIn || 31536000;
1250
+ const givenAt = data.givenAt instanceof Date ? data.givenAt : new Date();
1251
+ if (expiresIn > 0) {
1252
+ const validUntil = new Date(givenAt);
1253
+ validUntil.setSeconds(validUntil.getSeconds() + expiresIn);
1254
+ return validUntil;
1255
+ }
1256
+ }
1257
+ }
1258
+ },
1259
+ isActive: {
1260
+ type: 'boolean',
1261
+ defaultValue: true,
1262
+ required: true,
1263
+ fieldName: consentConfig?.fields?.isActive || 'isActive'
1264
+ },
1265
+ ...consentFields || {},
1266
+ ...consentConfig?.additionalFields || {}
1267
+ },
1268
+ order: 3
1269
+ };
1270
+ }
1271
+ require("neverthrow");
1272
+ const domainSchema = external_zod_namespaceObject.z.object({
1273
+ id: external_zod_namespaceObject.z.string(),
1274
+ name: external_zod_namespaceObject.z.string().min(1),
1275
+ description: external_zod_namespaceObject.z.string().optional(),
1276
+ allowedOrigins: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z.string()).optional().default([]),
1277
+ isVerified: external_zod_namespaceObject.z.boolean().default(true),
1278
+ isActive: external_zod_namespaceObject.z.boolean().default(true),
1279
+ createdAt: external_zod_namespaceObject.z.date().default(()=>new Date()),
1280
+ updatedAt: external_zod_namespaceObject.z.date().default(()=>new Date())
1281
+ });
1282
+ function getDomainTable(options, domainFields) {
1283
+ const domainConfig = options.tables?.domain;
1284
+ return {
1285
+ entityName: domainConfig?.entityName || 'domain',
1286
+ entityPrefix: domainConfig?.entityPrefix || 'dom',
1287
+ schema: domainSchema,
1288
+ fields: {
1289
+ name: {
1290
+ type: 'string',
1291
+ required: true,
1292
+ unique: true,
1293
+ fieldName: domainConfig?.fields?.name || 'name'
1294
+ },
1295
+ description: {
1296
+ type: 'string',
1297
+ required: false,
1298
+ fieldName: domainConfig?.fields?.description || "description"
1299
+ },
1300
+ allowedOrigins: {
1301
+ type: 'json',
1302
+ defaultValue: ()=>[],
1303
+ required: false,
1304
+ fieldName: domainConfig?.fields?.allowedOrigins || 'allowedOrigins'
1305
+ },
1306
+ isVerified: {
1307
+ type: 'boolean',
1308
+ defaultValue: true,
1309
+ required: true,
1310
+ fieldName: domainConfig?.fields?.isVerified || 'isVerified'
1311
+ },
1312
+ isActive: {
1313
+ type: 'boolean',
1314
+ defaultValue: true,
1315
+ required: true,
1316
+ fieldName: domainConfig?.fields?.isActive || 'isActive'
1317
+ },
1318
+ createdAt: {
1319
+ type: 'date',
1320
+ defaultValue: ()=>new Date(),
1321
+ required: true,
1322
+ fieldName: domainConfig?.fields?.createdAt || 'createdAt'
1323
+ },
1324
+ updatedAt: {
1325
+ type: 'date',
1326
+ required: false,
1327
+ fieldName: domainConfig?.fields?.updatedAt || 'updatedAt'
1328
+ },
1329
+ ...domainFields || {},
1330
+ ...domainConfig?.additionalFields || {}
1331
+ },
1332
+ order: 1
1333
+ };
1334
+ }
1335
+ const geoLocationSchema = external_zod_namespaceObject.z.object({
1336
+ id: external_zod_namespaceObject.z.string(),
1337
+ countryCode: external_zod_namespaceObject.z.string().length(2).toUpperCase(),
1338
+ countryName: external_zod_namespaceObject.z.string(),
1339
+ regionCode: external_zod_namespaceObject.z.string().optional(),
1340
+ regionName: external_zod_namespaceObject.z.string().optional(),
1341
+ regulatoryZones: external_zod_namespaceObject.z.array(external_zod_namespaceObject.z["enum"]([
1342
+ 'GDPR',
1343
+ 'CCPA',
1344
+ 'CPRA',
1345
+ 'LGPD',
1346
+ 'PIPEDA'
1347
+ ])).optional(),
1348
+ createdAt: external_zod_namespaceObject.z.date().default(()=>new Date())
1349
+ });
1350
+ function getGeoLocationTable(options, geoLocationFields) {
1351
+ const geoLocationConfig = options.tables?.geoLocation;
1352
+ return {
1353
+ entityName: geoLocationConfig?.entityName || 'geoLocation',
1354
+ entityPrefix: geoLocationConfig?.entityPrefix || 'geo',
1355
+ schema: geoLocationSchema,
1356
+ fields: {
1357
+ countryCode: {
1358
+ type: 'string',
1359
+ required: true,
1360
+ fieldName: geoLocationConfig?.fields?.countryCode || 'countryCode'
1361
+ },
1362
+ countryName: {
1363
+ type: 'string',
1364
+ required: true,
1365
+ fieldName: geoLocationConfig?.fields?.countryName || 'countryName'
1366
+ },
1367
+ regionCode: {
1368
+ type: 'string',
1369
+ required: false,
1370
+ fieldName: geoLocationConfig?.fields?.regionCode || 'regionCode'
1371
+ },
1372
+ regionName: {
1373
+ type: 'string',
1374
+ required: false,
1375
+ fieldName: geoLocationConfig?.fields?.regionName || 'regionName'
1376
+ },
1377
+ regulatoryZones: {
1378
+ type: 'json',
1379
+ required: false,
1380
+ fieldName: geoLocationConfig?.fields?.regulatoryZones || 'regulatoryZones',
1381
+ transformer: {
1382
+ input: (value)=>JSON.stringify(value),
1383
+ output: (value)=>{
1384
+ try {
1385
+ return JSON.parse(value);
1386
+ } catch {
1387
+ return [];
1388
+ }
1389
+ }
1390
+ }
1391
+ },
1392
+ createdAt: {
1393
+ type: 'date',
1394
+ defaultValue: ()=>new Date(),
1395
+ required: true,
1396
+ fieldName: geoLocationConfig?.fields?.createdAt || 'createdAt'
1397
+ },
1398
+ ...geoLocationFields || {},
1399
+ ...geoLocationConfig?.additionalFields || {}
1400
+ },
1401
+ indexes: [
1402
+ {
1403
+ name: 'country_code_index',
1404
+ fields: [
1405
+ 'countryCode'
1406
+ ]
1407
+ },
1408
+ {
1409
+ name: 'region_code_index',
1410
+ fields: [
1411
+ 'regionCode'
1412
+ ]
1413
+ },
1414
+ {
1415
+ name: 'created_at_index',
1416
+ fields: [
1417
+ 'createdAt'
1418
+ ]
1419
+ }
1420
+ ],
1421
+ order: 1
1422
+ };
1423
+ }
1424
+ const subjectSchema = external_zod_namespaceObject.z.object({
1425
+ id: external_zod_namespaceObject.z.string(),
1426
+ isIdentified: external_zod_namespaceObject.z.boolean().default(false),
1427
+ externalId: external_zod_namespaceObject.z.string().nullable().optional(),
1428
+ identityProvider: external_zod_namespaceObject.z.string().optional(),
1429
+ lastIpAddress: external_zod_namespaceObject.z.string().optional(),
1430
+ createdAt: external_zod_namespaceObject.z.date().default(()=>new Date()),
1431
+ updatedAt: external_zod_namespaceObject.z.date().default(()=>new Date())
1432
+ });
1433
+ function getSubjectTable(options, subjectFields) {
1434
+ const subjectConfig = options.tables?.subject;
1435
+ return {
1436
+ entityName: subjectConfig?.entityName || 'subject',
1437
+ entityPrefix: subjectConfig?.entityPrefix || 'sub',
1438
+ schema: subjectSchema,
1439
+ fields: {
1440
+ isIdentified: {
1441
+ type: 'boolean',
1442
+ defaultValue: ()=>false,
1443
+ required: true,
1444
+ fieldName: subjectConfig?.fields?.isIdentified || 'isIdentified'
1445
+ },
1446
+ externalId: {
1447
+ type: 'string',
1448
+ required: false,
1449
+ fieldName: subjectConfig?.fields?.externalId || 'externalId'
1450
+ },
1451
+ identityProvider: {
1452
+ type: 'string',
1453
+ required: false,
1454
+ fieldName: subjectConfig?.fields?.identityProvider || 'identityProvider'
1455
+ },
1456
+ lastIpAddress: {
1457
+ type: 'string',
1458
+ required: false,
1459
+ fieldName: subjectConfig?.fields?.lastIpAddress || 'lastIpAddress'
1460
+ },
1461
+ createdAt: {
1462
+ type: 'date',
1463
+ defaultValue: ()=>new Date(),
1464
+ required: true,
1465
+ fieldName: subjectConfig?.fields?.createdAt || 'createdAt'
1466
+ },
1467
+ updatedAt: {
1468
+ type: 'date',
1469
+ defaultValue: ()=>new Date(),
1470
+ required: true,
1471
+ fieldName: subjectConfig?.fields?.updatedAt || 'updatedAt'
1472
+ },
1473
+ subjectTimezone: {
1474
+ type: 'timezone',
1475
+ required: false,
1476
+ defaultValue: COMMON_TIMEZONES.UTC,
1477
+ fieldName: subjectConfig?.fields?.subjectTimezone || 'subjectTimezone'
1478
+ },
1479
+ ...subjectFields || {},
1480
+ ...subjectConfig?.additionalFields || {}
1481
+ },
1482
+ order: 1
1483
+ };
1484
+ }
1485
+ function getSchema(config) {
1486
+ const entities = definition_getConsentTables(config);
1487
+ const schema = {};
1488
+ for (const [key, entity] of Object.entries(entities)){
1489
+ if (!entity) continue;
1490
+ const fields = entity.fields || {};
1491
+ const processedFields = {};
1492
+ for (const [fieldKey, field] of Object.entries(fields)){
1493
+ if (!field) continue;
1494
+ const fieldName = field.fieldName || fieldKey;
1495
+ const typedField = field;
1496
+ processedFields[fieldName] = typedField;
1497
+ if (typedField && 'references' in typedField && typedField.references) {
1498
+ const entityName = typedField.references.model;
1499
+ const referencedEntity = entities[entityName];
1500
+ if (referencedEntity) processedFields[fieldName] = {
1501
+ ...typedField,
1502
+ references: {
1503
+ model: referencedEntity.entityName,
1504
+ entity: referencedEntity.entityName,
1505
+ field: typedField.references.field,
1506
+ onDelete: typedField.references.onDelete
1507
+ }
1508
+ };
1509
+ }
1510
+ }
1511
+ const entityName = entity.entityName || key;
1512
+ if (entityName in schema) {
1513
+ const existingEntry = schema[entityName];
1514
+ schema[entityName] = {
1515
+ ...existingEntry,
1516
+ order: existingEntry?.order ?? Number.POSITIVE_INFINITY,
1517
+ fields: {
1518
+ ...existingEntry?.fields,
1519
+ ...processedFields
1520
+ }
1521
+ };
1522
+ } else schema[entityName] = {
1523
+ fields: processedFields,
1524
+ order: entity.order ?? Number.POSITIVE_INFINITY
1525
+ };
1526
+ }
1527
+ return schema;
1528
+ }
1529
+ function analyzeSchemaChanges(config, tableMetadata, dbType) {
1530
+ const betterAuthSchema = getSchema(config);
1531
+ const logger = logger_createLogger(config.logger);
1532
+ const toBeCreated = [];
1533
+ const toBeAdded = [];
1534
+ for (const [key, value] of Object.entries(betterAuthSchema)){
1535
+ const table = tableMetadata.find((t)=>t.name === key);
1536
+ if (!table) {
1537
+ handleNewTable(key, value, toBeCreated);
1538
+ continue;
1539
+ }
1540
+ handleExistingTable(key, value, table, toBeAdded, dbType, logger);
1541
+ }
1542
+ return {
1543
+ toBeCreated,
1544
+ toBeAdded
1545
+ };
1546
+ }
1547
+ function handleNewTable(tableName, value, toBeCreated) {
1548
+ const tIndex = toBeCreated.findIndex((t)=>t.table === tableName);
1549
+ const tableData = {
1550
+ table: tableName,
1551
+ fields: value.fields,
1552
+ order: value.order || Number.POSITIVE_INFINITY
1553
+ };
1554
+ const insertIndex = toBeCreated.findIndex((t)=>(t.order || Number.POSITIVE_INFINITY) > tableData.order);
1555
+ if (-1 === insertIndex) {
1556
+ if (-1 === tIndex) toBeCreated.push(tableData);
1557
+ else {
1558
+ const existingTable = toBeCreated[tIndex];
1559
+ if (existingTable) existingTable.fields = {
1560
+ ...existingTable.fields,
1561
+ ...value.fields
1562
+ };
1563
+ }
1564
+ } else toBeCreated.splice(insertIndex, 0, tableData);
1565
+ }
1566
+ function handleExistingTable(tableName, value, table, toBeAdded, dbType, logger) {
1567
+ const toBeAddedFields = {};
1568
+ for (const [fieldName, field] of Object.entries(value.fields)){
1569
+ const column = table.columns.find((c)=>c.name === fieldName);
1570
+ if (!column) {
1571
+ toBeAddedFields[fieldName] = field;
1572
+ continue;
1573
+ }
1574
+ if (!matchType(column.dataType, field.type, dbType)) logger.warn(`Field ${fieldName} in table ${tableName} has a different type in the database. Expected ${field.type} but got ${column.dataType}.`);
1575
+ }
1576
+ if (Object.keys(toBeAddedFields).length > 0) toBeAdded.push({
1577
+ table: tableName,
1578
+ fields: toBeAddedFields,
1579
+ order: value.order || Number.POSITIVE_INFINITY
1580
+ });
1581
+ }
1582
+ async function getMigrations(config) {
1583
+ const logger = logger_createLogger(config.logger);
1584
+ let { kysely: db, databaseType: dbType } = await dialect_createKyselyAdapter(config);
1585
+ if (!dbType) {
1586
+ logger.warn('Could not determine database type, defaulting to sqlite. Please provide a type in the database options to avoid this.');
1587
+ dbType = 'sqlite';
1588
+ }
1589
+ if (!db) {
1590
+ logger.error("Only kysely adapter is supported for migrations. You can use `generate` command to generate the schema, if you're using a different adapter.");
1591
+ process.exit(1);
1592
+ }
1593
+ const tableMetadata = await db.introspection.getTables();
1594
+ const { toBeCreated, toBeAdded } = analyzeSchemaChanges(config, tableMetadata, dbType);
1595
+ const columnMigrations = buildColumnAddMigrations(db, toBeAdded, dbType);
1596
+ const tableMigrations = buildTableCreateMigrations(db, toBeCreated, dbType);
1597
+ const migrations = [
1598
+ ...columnMigrations,
1599
+ ...tableMigrations
1600
+ ];
1601
+ const { runMigrations, compileMigrations } = createMigrationExecutors(migrations);
1602
+ return {
1603
+ toBeCreated,
1604
+ toBeAdded,
1605
+ runMigrations,
1606
+ compileMigrations
1607
+ };
1608
+ }
1609
+ var __webpack_export_target__ = exports;
1610
+ for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
1611
+ if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
1612
+ value: true
1613
+ });