@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,244 @@
1
+ import { vi } from 'vitest';
2
+ import type { C15TContext } from '~/types';
3
+
4
+ /**
5
+ * Creates a mock context for testing API endpoints
6
+ *
7
+ * @returns A mock C15TContext with default values
8
+ */
9
+ export function createMockContext(): C15TContext {
10
+ return {
11
+ version: '1.0.0',
12
+ appName: 'test-app',
13
+ db: {
14
+ setConsent: vi.fn(),
15
+ getConsent: vi.fn(),
16
+ withdrawConsent: vi.fn(),
17
+ verifyConsent: vi.fn(),
18
+ getConsentHistory: vi.fn(),
19
+ getConsentPolicy: vi.fn(),
20
+ generateConsentReceipt: vi.fn(),
21
+ },
22
+ registry: {
23
+ findConsents: vi.fn().mockResolvedValue({
24
+ success: true,
25
+ data: {
26
+ consents: [
27
+ {
28
+ id: 'test-consent-id',
29
+ domainId: 'example.com',
30
+ status: 'active',
31
+ givenAt: new Date().toISOString(),
32
+ consentWithdrawals: [],
33
+ records: [],
34
+ },
35
+ ],
36
+ auditLogs: [],
37
+ pagination: { total: 1, offset: 0, limit: 100 },
38
+ },
39
+ }),
40
+ findConsentWithdrawals: vi.fn().mockResolvedValue({
41
+ success: true,
42
+ data: {
43
+ consentWithdrawals: [],
44
+ auditLogs: [],
45
+ pagination: { total: 0, offset: 0, limit: 100 },
46
+ },
47
+ }),
48
+ findPolicies: vi.fn().mockResolvedValue({
49
+ success: true,
50
+ data: {
51
+ policies: [],
52
+ auditLogs: [],
53
+ pagination: { total: 0, offset: 0, limit: 100 },
54
+ },
55
+ }),
56
+ findDomains: vi.fn().mockResolvedValue({
57
+ success: true,
58
+ data: {
59
+ domains: [],
60
+ auditLogs: [],
61
+ pagination: { total: 0, offset: 0, limit: 100 },
62
+ },
63
+ }),
64
+ //@ts-expect-error
65
+ findJurisdictions: vi.fn().mockResolvedValue({
66
+ success: true,
67
+ data: {
68
+ jurisdictions: [],
69
+ auditLogs: [],
70
+ pagination: { total: 0, offset: 0, limit: 100 },
71
+ },
72
+ }),
73
+ createConsent: vi.fn(),
74
+ createConsentWithdrawal: vi.fn(),
75
+ createDomain: vi.fn(),
76
+ updateConsent: vi.fn(),
77
+ updateWithdrawal: vi.fn(),
78
+ updateDomain: vi.fn(),
79
+ getConsent: vi.fn().mockResolvedValue({
80
+ success: true,
81
+ data: {
82
+ id: 'test-consent-id',
83
+ subjectId: 'test-subject',
84
+ domainId: 'example.com',
85
+ status: 'active',
86
+ givenAt: new Date().toISOString(),
87
+ preferences: {
88
+ marketing: 'granted',
89
+ analytics: 'granted',
90
+ preferences: 'granted',
91
+ },
92
+ },
93
+ }),
94
+ getWithdrawal: vi.fn(),
95
+ getPolicy: vi.fn().mockResolvedValue({
96
+ success: true,
97
+ data: {
98
+ id: 'test-policy-id',
99
+ domain: 'example.com',
100
+ version: '1.0',
101
+ content: 'Test policy content',
102
+ availablePreferences: {
103
+ marketing: ['granted', 'denied'],
104
+ analytics: ['granted', 'denied'],
105
+ preferences: ['granted', 'denied'],
106
+ },
107
+ createdAt: new Date().toISOString(),
108
+ },
109
+ }),
110
+ getDomain: vi.fn().mockResolvedValue({
111
+ success: true,
112
+ data: {
113
+ id: 'example.com',
114
+ name: 'Example Domain',
115
+ policyId: 'test-policy-id',
116
+ createdAt: new Date().toISOString(),
117
+ },
118
+ }),
119
+ getJurisdiction: vi.fn().mockResolvedValue({
120
+ success: true,
121
+ data: {
122
+ code: 'EU',
123
+ name: 'European Union',
124
+ requiresConsent: true,
125
+ createdAt: new Date().toISOString(),
126
+ },
127
+ }),
128
+ },
129
+ logger: {
130
+ info: vi.fn(),
131
+ error: vi.fn(),
132
+ warn: vi.fn(),
133
+ debug: vi.fn(),
134
+ success: vi.fn(),
135
+ },
136
+ options: {
137
+ plugins: [],
138
+ logger: {
139
+ level: 'info',
140
+ disabled: false,
141
+ },
142
+ },
143
+ baseURL: 'http://localhost:3000',
144
+ ipAddress: '127.0.0.1',
145
+ };
146
+ }
147
+
148
+ /**
149
+ * Creates a mock request for testing
150
+ *
151
+ * @param url - The request URL
152
+ * @param method - The HTTP method
153
+ * @param body - Optional request body
154
+ * @returns A mock Request object
155
+ */
156
+ export function createMockRequest(
157
+ url: string,
158
+ method = 'GET',
159
+ body?: unknown
160
+ ): Request {
161
+ return new Request(url, {
162
+ method,
163
+ headers: {
164
+ 'Content-Type': 'application/json',
165
+ },
166
+ body: body ? JSON.stringify(body) : undefined,
167
+ });
168
+ }
169
+
170
+ /**
171
+ * Creates a mock response for testing
172
+ *
173
+ * @param status - The HTTP status code
174
+ * @param body - The response body
175
+ * @returns A mock Response object
176
+ */
177
+ export function createMockResponse(status: number, body: unknown): Response {
178
+ return new Response(JSON.stringify(body), {
179
+ status,
180
+ headers: {
181
+ 'Content-Type': 'application/json',
182
+ },
183
+ });
184
+ }
185
+
186
+ /**
187
+ * Helper to create a mock consent object
188
+ *
189
+ * @param overrides - Optional overrides for the default consent object
190
+ * @returns A mock consent object
191
+ */
192
+ export function createMockConsent(
193
+ overrides: Partial<{
194
+ subjectId: string;
195
+ domain: string;
196
+ preferences: Record<string, string>;
197
+ status: string;
198
+ givenAt: string;
199
+ }> = {}
200
+ ) {
201
+ return {
202
+ subjectId: 'test-subject',
203
+ domain: 'example.com',
204
+ preferences: {
205
+ marketing: 'granted',
206
+ analytics: 'granted',
207
+ preferences: 'granted',
208
+ },
209
+ status: 'active',
210
+ givenAt: new Date().toISOString(),
211
+ ...overrides,
212
+ };
213
+ }
214
+
215
+ /**
216
+ * Helper to create a mock consent policy
217
+ *
218
+ * @param overrides - Optional overrides for the default policy object
219
+ * @returns A mock consent policy object
220
+ */
221
+ export function createMockPolicy(
222
+ overrides: Partial<{
223
+ id: string;
224
+ domain: string;
225
+ version: string;
226
+ content: string;
227
+ availablePreferences: Record<string, string[]>;
228
+ createdAt: string;
229
+ }> = {}
230
+ ) {
231
+ return {
232
+ id: 'test-policy-id',
233
+ domain: 'example.com',
234
+ version: '1.0',
235
+ content: 'Test policy content',
236
+ availablePreferences: {
237
+ marketing: ['granted', 'denied'],
238
+ analytics: ['granted', 'denied'],
239
+ preferences: ['granted', 'denied'],
240
+ },
241
+ createdAt: new Date().toISOString(),
242
+ ...overrides,
243
+ };
244
+ }
@@ -0,0 +1,101 @@
1
+ /**
2
+ * API Types for c15t
3
+ *
4
+ * Definitions for API routes, request handlers, and endpoint configuration
5
+ */
6
+ import type { Endpoint } from 'better-call';
7
+
8
+ /**
9
+ * Filter action methods from an object type
10
+ *
11
+ * This type utility extracts only the method properties from an object type,
12
+ * useful for API type inference.
13
+ *
14
+ * @typeParam TObject - The object type to filter action methods from
15
+ *
16
+ * @example
17
+ * ```ts
18
+ * interface APIHandlers {
19
+ * getSubject: (id: string) => Promise<Subject>;
20
+ * userData: Subject;
21
+ * updateSubject: (subject: Subject) => Promise<void>;
22
+ * }
23
+ *
24
+ * // ActionKeys will be 'getSubject' | 'updateSubject'
25
+ * type ActionKeys = FilterActions<APIHandlers>[keyof FilterActions<APIHandlers>];
26
+ * ```
27
+ */
28
+ export type FilterActions<TObject extends Record<string, unknown>> = {
29
+ [Key in keyof TObject]: TObject[Key] extends (...args: unknown[]) => unknown
30
+ ? Key
31
+ : never;
32
+ };
33
+
34
+ /**
35
+ * Base API path template literal for c15t endpoints
36
+ *
37
+ * This type defines the base path for all API routes in the c15t system.
38
+ * Used as a foundation for building type-safe API route paths.
39
+ *
40
+ * @see ApiPath for complete path patterns
41
+ */
42
+ export type ApiPathBase = `/api/c15t`;
43
+
44
+ /**
45
+ * API route path with strict type checking
46
+ *
47
+ * This type union represents all valid API paths in the system.
48
+ * It enforces type safety when defining routes or middlewares to
49
+ * prevent typos and ensure consistency.
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * // Valid API path
54
+ * const consentPath: ApiPath = '/api/c15t/consent';
55
+ *
56
+ * // Invalid - would cause a type error
57
+ * const invalidPath: ApiPath = '/api/c15t/unknown-endpoint';
58
+ * ```
59
+ */
60
+ export type ApiPath =
61
+ | `${ApiPathBase}`
62
+ | `${ApiPathBase}/consent`
63
+ | `${ApiPathBase}/consent/:id`
64
+ | `${ApiPathBase}/jurisdictions`
65
+ | `${ApiPathBase}/jurisdictions/:code`
66
+ | `${ApiPathBase}/plugins/:id`;
67
+
68
+ /**
69
+ * Strongly-typed middleware configuration
70
+ *
71
+ * Defines the structure for API middleware registrations,
72
+ * ensuring that both the path and middleware function are properly typed.
73
+ *
74
+ * @see ApiPath for valid path patterns
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * // Register a middleware for the consent endpoint
79
+ * const authMiddleware: ApiMiddleware = {
80
+ * path: '/api/c15t/consent',
81
+ * middleware: async (ctx, next) => {
82
+ * // Verify authentication
83
+ * if (!ctx.request.headers.get('Authorization')) {
84
+ * return ctx.json({ error: 'Unauthorized' }, { status: 401 });
85
+ * }
86
+ * return next();
87
+ * }
88
+ * };
89
+ * ```
90
+ */
91
+ export interface ApiMiddleware {
92
+ /**
93
+ * The API path to apply this middleware to
94
+ */
95
+ path: ApiPath;
96
+
97
+ /**
98
+ * The middleware function to execute
99
+ */
100
+ middleware: Endpoint;
101
+ }
@@ -0,0 +1,235 @@
1
+ import type {
2
+ EndpointContext,
3
+ EndpointOptions,
4
+ InputContext,
5
+ } from 'better-call';
6
+ import type { getConsentTables } from '~/db';
7
+ import type { Adapter } from '~/db/adapters/types';
8
+ import type { EntityName } from '~/db/core/types';
9
+ import type { createRegistry } from '~/db/create-registry';
10
+ import type { DatabaseHook } from '~/db/hooks/types';
11
+ import type { createLogger } from '~/utils';
12
+ import type { C15TOptions } from './index';
13
+
14
+ /**
15
+ * Extended endpoint context for hooks
16
+ *
17
+ * This type extends the standard endpoint context with additional properties
18
+ * specific to c15t hooks, allowing hooks to access the complete c15t context.
19
+ *
20
+ * @typeParam TOptions - Endpoint configuration options type
21
+ *
22
+ * @see GenericEndpointContext for a simpler context type without input context inclusion
23
+ */
24
+ export type HookEndpointContext<
25
+ TOptions extends EndpointOptions = EndpointOptions,
26
+ > = EndpointContext<string, TOptions> &
27
+ Omit<InputContext<string, TOptions>, 'method'> & {
28
+ /**
29
+ * The c15t context with possible hook-specific extensions
30
+ */
31
+ context: C15TContext & {
32
+ /**
33
+ * Value returned by the endpoint handler, available in 'after' hooks
34
+ */
35
+ returned?: unknown;
36
+
37
+ /**
38
+ * Response headers, available in 'after' hooks
39
+ */
40
+ responseHeaders?: Headers;
41
+ };
42
+
43
+ /**
44
+ * Request headers
45
+ */
46
+ headers?: Headers;
47
+ };
48
+
49
+ /**
50
+ * Standard endpoint context for c15t handlers
51
+ *
52
+ * A simplified context type that includes the c15t context,
53
+ * used by endpoint handlers throughout the system.
54
+ *
55
+ * @typeParam TOptions - Endpoint configuration options type
56
+ */
57
+ export type GenericEndpointContext<
58
+ TOptions extends EndpointOptions = EndpointOptions,
59
+ > = EndpointContext<string, TOptions> & {
60
+ /**
61
+ * The c15t application context
62
+ */
63
+ context: C15TContext;
64
+ };
65
+
66
+ /**
67
+ * Base shared context for all c15t components
68
+ *
69
+ * Contains the minimal set of properties needed by all components
70
+ * in the c15t system, including configuration options and logging.
71
+ */
72
+ export interface BaseContext {
73
+ /**
74
+ * Configuration options for the c15t system
75
+ */
76
+ options: C15TOptions;
77
+
78
+ /**
79
+ * Logger instance for recording events and errors
80
+ */
81
+ logger: ReturnType<typeof createLogger>;
82
+ }
83
+
84
+ /**
85
+ * Registry-specific context for database adapters
86
+ *
87
+ * Extends the base context with properties needed for
88
+ * database operations and entity management.
89
+ */
90
+ export interface RegistryContext extends BaseContext {
91
+ /**
92
+ * Database adapter instance
93
+ */
94
+ adapter: Adapter;
95
+
96
+ /**
97
+ * Database lifecycle hooks
98
+ */
99
+ hooks: DatabaseHook[];
100
+
101
+ /**
102
+ * Function to generate unique IDs for entities
103
+ *
104
+ * @param options - Options for ID generation including entity type and length
105
+ * @returns A unique ID string
106
+ */
107
+ generateId: (options: { model: EntityName; size?: number }) => string;
108
+ }
109
+
110
+ /**
111
+ * Base context without plugin-specific extensions
112
+ *
113
+ * This interface defines the core context properties available to all
114
+ * components in the c15t system before plugin extensions are applied.
115
+ */
116
+ export interface BaseC15TContext {
117
+ /**
118
+ * Application name displayed in consent dialogs
119
+ */
120
+ appName: string;
121
+
122
+ /**
123
+ * Configuration options for the c15t system
124
+ */
125
+ options: C15TOptions;
126
+
127
+ /**
128
+ * List of origins that are trusted for CORS and CSRF protection
129
+ */
130
+ trustedOrigins: string[];
131
+
132
+ /**
133
+ * Base URL for API requests
134
+ */
135
+ baseURL: string;
136
+
137
+ /**
138
+ * Secret key used for signing cookies and tokens
139
+ */
140
+ secret: string;
141
+
142
+ /**
143
+ * Logger instance for recording events and errors
144
+ */
145
+ logger: ReturnType<typeof createLogger>;
146
+
147
+ /**
148
+ * Function to generate unique IDs for entities
149
+ *
150
+ * @param options - Options for ID generation including entity type and length
151
+ * @returns A unique ID string
152
+ */
153
+ generateId: (options: { model: EntityName; size?: number }) => string;
154
+
155
+ /**
156
+ * Database adapter instance
157
+ */
158
+ adapter: Adapter;
159
+
160
+ /**
161
+ * Entity registry for database operations
162
+ */
163
+ registry: ReturnType<typeof createRegistry>;
164
+
165
+ /**
166
+ * Database tables for the consent system
167
+ */
168
+ tables: ReturnType<typeof getConsentTables>;
169
+
170
+ /**
171
+ * IP address of the client
172
+ */
173
+ ipAddress?: string | null;
174
+
175
+ /**
176
+ * Subject agent of the client
177
+ */
178
+ userAgent?: string | null;
179
+ }
180
+
181
+ /**
182
+ * Extended context type with plugin extensions
183
+ *
184
+ * This type extends the base context with plugin-specific properties,
185
+ * allowing plugins to add their own functionality to the context.
186
+ *
187
+ * @typeParam TPluginContext - Record of plugin-specific context extensions
188
+ *
189
+ * @example
190
+ * ```ts
191
+ * // Plugin extending the context with analytics capabilities
192
+ * interface AnalyticsContext {
193
+ * analytics: {
194
+ * trackEvent: (event: string, data: unknown) => void;
195
+ * getSessionId: () => string;
196
+ * }
197
+ * }
198
+ *
199
+ * // Using the extended context in a component
200
+ * function handleConsent(ctx: C15TContext<AnalyticsContext>) {
201
+ * // Base context is available
202
+ * const { baseURL, logger } = ctx;
203
+ *
204
+ * // Plugin context is also available
205
+ * ctx.analytics.trackEvent('consent_given', { timestamp: Date.now() });
206
+ * }
207
+ * ```
208
+ */
209
+ export type C15TContext<
210
+ TPluginContext extends Record<string, unknown> = Record<string, unknown>,
211
+ > = BaseC15TContext & TPluginContext;
212
+
213
+ /**
214
+ * Helper to extract context with a specific plugin's context type
215
+ *
216
+ * This utility type makes it easier to work with context that has been
217
+ * extended by a specific plugin, providing proper type information.
218
+ *
219
+ * @typeParam TPluginName - The name of the plugin providing the context extension
220
+ * @typeParam TPluginContext - The type of the context extension provided by the plugin
221
+ *
222
+ * @example
223
+ * ```ts
224
+ * // Working with a specific plugin's context
225
+ * function useGeoPlugin(ctx: ContextWithPlugin<'geo', GeoPluginContext>) {
226
+ * // TypeScript knows that ctx.geo exists and has the right type
227
+ * const country = ctx.geo.getCurrentCountry();
228
+ * return country;
229
+ * }
230
+ * ```
231
+ */
232
+ export type ContextWithPlugin<
233
+ TPluginName extends string,
234
+ TPluginContext extends Record<string, unknown>,
235
+ > = C15TContext<Record<TPluginName, TPluginContext>>;
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Represents a string literal type
3
+ *
4
+ * This type ensures that only string literals are accepted, not general string types.
5
+ * It's useful for ensuring type safety with specific string values.
6
+ *
7
+ * @example
8
+ * ```ts
9
+ * // Function that only accepts literal strings, not string variables
10
+ * function doSomething(value: LiteralString) {
11
+ * // Implementation
12
+ * }
13
+ *
14
+ * // Valid usage:
15
+ * doSomething('specific-value');
16
+ *
17
+ * // Invalid usage:
18
+ * const dynamicString = getStringFromSomewhere();
19
+ * doSomething(dynamicString); // Type error
20
+ * ```
21
+ */
22
+ export type LiteralString = '' | (string & Record<never, never>);
23
+
24
+ /**
25
+ * Extracts all required keys from an object type
26
+ *
27
+ * This utility type identifies which keys in an object type are required
28
+ * (not optional or undefined). Useful for type manipulation in complex types.
29
+ *
30
+ * @typeParam BaseType - The object type to extract required keys from
31
+ *
32
+ * @example
33
+ * ```ts
34
+ * interface Subject {
35
+ * id: number;
36
+ * name: string;
37
+ * email?: string;
38
+ * }
39
+ *
40
+ * // RequiredKeysOf<Subject> will be 'id' | 'name'
41
+ * type RequiredsubjectFields = RequiredKeysOf<Subject>;
42
+ * ```
43
+ */
44
+ export type RequiredKeysOf<BaseType extends object> = Exclude<
45
+ {
46
+ [Key in keyof BaseType]: BaseType extends Record<Key, BaseType[Key]>
47
+ ? Key
48
+ : never;
49
+ }[keyof BaseType],
50
+ undefined
51
+ >;
52
+
53
+ /**
54
+ * Makes all properties in an object type optional recursively
55
+ *
56
+ * Unlike TypeScript's built-in Partial<T>, this type makes nested object
57
+ * properties optional as well. Functions are preserved as-is.
58
+ *
59
+ * @typeParam T - The type to make deeply partial
60
+ */
61
+ export type DeepPartial<T> = T extends (...args: unknown[]) => unknown
62
+ ? T
63
+ : T extends object
64
+ ? { [K in keyof T]?: DeepPartial<T[K]> }
65
+ : T;
66
+
67
+ /**
68
+ * Recursively expands object types for better IntelliSense
69
+ *
70
+ * This utility improves type display in editors by expanding nested type
71
+ * definitions. Particularly useful when working with complex types
72
+ * created through composition or manipulation.
73
+ *
74
+ * @typeParam T - The type to expand recursively
75
+ *
76
+ * @example
77
+ * ```ts
78
+ * // Before expansion: Intersection of multiple types
79
+ * type ComplexType = TypeA & TypeB & { extraProp: string };
80
+ *
81
+ * // After expansion: Flat object type with all properties visible
82
+ * type ExpandedType = ExpandRecursively<ComplexType>;
83
+ * ```
84
+ */
85
+ export type ExpandRecursively<T> = T extends infer O
86
+ ? { [K in keyof O]: O[K] }
87
+ : never;
@@ -0,0 +1,5 @@
1
+ export type * from './api';
2
+ export type * from './context';
3
+ export type * from './helper';
4
+ export type * from './options';
5
+ export type * from './plugins';