@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,131 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = function(exports1) {
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ toNextJsHandler: ()=>toNextJsHandler
28
+ });
29
+ const BASE_ERROR_CODES = {
30
+ NOT_FOUND: 'Resource not found',
31
+ BAD_REQUEST: 'Bad request',
32
+ CONFLICT: 'Conflict with current state',
33
+ CONSENT_NOT_FOUND: 'Consent not found',
34
+ CONSENT_EXPIRED: 'Consent has expired',
35
+ FAILED_TO_CREATE_CONSENT: 'Failed to create consent',
36
+ FAILED_TO_UPDATE_CONSENT: 'Failed to update consent',
37
+ FAILED_TO_GET_CONSENT: 'Failed to get consent',
38
+ FAILED_TO_CREATE_PURPOSE: 'Failed to create consentPurpose',
39
+ PURPOSE_NOT_FOUND: 'Consent Purpose not found',
40
+ INVALID_CONFIGURATION: 'Invalid configuration',
41
+ MISSING_REQUIRED_PARAMETER: 'Missing required parameter',
42
+ UNAUTHORIZED: 'Unauthorized',
43
+ FORBIDDEN: 'Forbidden',
44
+ INTERNAL_SERVER_ERROR: 'Internal server error',
45
+ INITIALIZATION_FAILED: 'Initialization failed',
46
+ PLUGIN_INITIALIZATION_FAILED: 'Plugin initialization failed',
47
+ DATABASE_CONNECTION_ERROR: 'Database connection error',
48
+ DATABASE_QUERY_ERROR: 'Database query error',
49
+ REQUEST_HANDLER_ERROR: 'Request handler error',
50
+ API_RETRIEVAL_ERROR: 'API retrieval error',
51
+ INVALID_REQUEST: 'Invalid request',
52
+ UNKNOWN_ERROR: 'Unknown error'
53
+ };
54
+ function toNextJsHandler(instance) {
55
+ const handler = async (initialRequest)=>{
56
+ try {
57
+ const request = initialRequest;
58
+ if ('POST' === request.method) try {
59
+ const clonedRequest = request.clone();
60
+ await clonedRequest.json();
61
+ } catch (error) {
62
+ return new Response(JSON.stringify({
63
+ error: true,
64
+ code: BASE_ERROR_CODES.REQUEST_HANDLER_ERROR,
65
+ message: 'Invalid JSON in request body',
66
+ details: error instanceof Error ? error.message : 'Unknown error'
67
+ }), {
68
+ status: 400,
69
+ headers: {
70
+ 'Content-Type': 'application/json'
71
+ }
72
+ });
73
+ }
74
+ if (instance.$context) {
75
+ const contextPromise = instance.$context;
76
+ try {
77
+ const contextResult = await contextPromise;
78
+ contextResult.match((context)=>{
79
+ if (!context.baseURL || '' === context.baseURL.trim()) {
80
+ const url = new URL(request.url);
81
+ const basePath = context.options?.basePath || '/api/c15t';
82
+ const baseURL = `${url.origin}${basePath}`;
83
+ context.baseURL = baseURL;
84
+ if (context.options) context.options.baseURL = baseURL;
85
+ }
86
+ }, ()=>{});
87
+ } catch {}
88
+ }
89
+ const result = await instance.handler(request);
90
+ return await result.match((response)=>response, (error)=>{
91
+ const status = error.status || 500;
92
+ const message = error.message || BASE_ERROR_CODES.INTERNAL_SERVER_ERROR;
93
+ return new Response(JSON.stringify({
94
+ error: true,
95
+ code: error.code || BASE_ERROR_CODES.INTERNAL_SERVER_ERROR,
96
+ message,
97
+ data: error.data
98
+ }), {
99
+ status,
100
+ headers: {
101
+ 'Content-Type': 'application/json'
102
+ }
103
+ });
104
+ });
105
+ } catch (error) {
106
+ console.error('Unexpected error in c15t handler:', error);
107
+ return new Response(JSON.stringify({
108
+ error: true,
109
+ code: BASE_ERROR_CODES.INTERNAL_SERVER_ERROR,
110
+ message: 'An unexpected error occurred',
111
+ data: {
112
+ error: String(error)
113
+ }
114
+ }), {
115
+ status: 500,
116
+ headers: {
117
+ 'Content-Type': 'application/json'
118
+ }
119
+ });
120
+ }
121
+ };
122
+ return {
123
+ GET: handler,
124
+ POST: handler
125
+ };
126
+ }
127
+ var __webpack_export_target__ = exports;
128
+ for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
129
+ if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
130
+ value: true
131
+ });
@@ -0,0 +1,29 @@
1
+ import type { C15TInstance } from '../core';
2
+ /**
3
+ * Convert a c15t handler to a Next.js API route handler.
4
+ *
5
+ * This function adapts a c15t instance to work with Next.js App Router API routes,
6
+ * providing GET and POST handler functions. It handles the conversion between
7
+ * c15t's Result types and Next.js Response objects.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * // app/api/c15t/route.ts
12
+ * import { toNextJsHandler } from '@c15t/integrations/next';
13
+ * import { c15t } from '@/lib/c15t';
14
+ *
15
+ * // Pass the entire c15t instance, not just the handler
16
+ * export const { GET, POST } = toNextJsHandler(c15t);
17
+ *
18
+ * // ❌ Don't do this:
19
+ * // export const { GET, POST } = toNextJsHandler(c15t.handler);
20
+ * ```
21
+ *
22
+ * @param instance - The complete c15t instance (not just the handler)
23
+ * @returns Next.js API route handler functions for GET and POST
24
+ */
25
+ export declare function toNextJsHandler(instance: C15TInstance): {
26
+ GET: (initialRequest: Request) => Promise<Response>;
27
+ POST: (initialRequest: Request) => Promise<Response>;
28
+ };
29
+ //# sourceMappingURL=next.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"next.d.ts","sourceRoot":"","sources":["../../src/integrations/next.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAI3C;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,YAAY;0BACd,OAAO;2BAAP,OAAO;EA2G9C"}
@@ -0,0 +1,99 @@
1
+ const BASE_ERROR_CODES = {
2
+ NOT_FOUND: 'Resource not found',
3
+ BAD_REQUEST: 'Bad request',
4
+ CONFLICT: 'Conflict with current state',
5
+ CONSENT_NOT_FOUND: 'Consent not found',
6
+ CONSENT_EXPIRED: 'Consent has expired',
7
+ FAILED_TO_CREATE_CONSENT: 'Failed to create consent',
8
+ FAILED_TO_UPDATE_CONSENT: 'Failed to update consent',
9
+ FAILED_TO_GET_CONSENT: 'Failed to get consent',
10
+ FAILED_TO_CREATE_PURPOSE: 'Failed to create consentPurpose',
11
+ PURPOSE_NOT_FOUND: 'Consent Purpose not found',
12
+ INVALID_CONFIGURATION: 'Invalid configuration',
13
+ MISSING_REQUIRED_PARAMETER: 'Missing required parameter',
14
+ UNAUTHORIZED: 'Unauthorized',
15
+ FORBIDDEN: 'Forbidden',
16
+ INTERNAL_SERVER_ERROR: 'Internal server error',
17
+ INITIALIZATION_FAILED: 'Initialization failed',
18
+ PLUGIN_INITIALIZATION_FAILED: 'Plugin initialization failed',
19
+ DATABASE_CONNECTION_ERROR: 'Database connection error',
20
+ DATABASE_QUERY_ERROR: 'Database query error',
21
+ REQUEST_HANDLER_ERROR: 'Request handler error',
22
+ API_RETRIEVAL_ERROR: 'API retrieval error',
23
+ INVALID_REQUEST: 'Invalid request',
24
+ UNKNOWN_ERROR: 'Unknown error'
25
+ };
26
+ function toNextJsHandler(instance) {
27
+ const handler = async (initialRequest)=>{
28
+ try {
29
+ const request = initialRequest;
30
+ if ('POST' === request.method) try {
31
+ const clonedRequest = request.clone();
32
+ await clonedRequest.json();
33
+ } catch (error) {
34
+ return new Response(JSON.stringify({
35
+ error: true,
36
+ code: BASE_ERROR_CODES.REQUEST_HANDLER_ERROR,
37
+ message: 'Invalid JSON in request body',
38
+ details: error instanceof Error ? error.message : 'Unknown error'
39
+ }), {
40
+ status: 400,
41
+ headers: {
42
+ 'Content-Type': 'application/json'
43
+ }
44
+ });
45
+ }
46
+ if (instance.$context) {
47
+ const contextPromise = instance.$context;
48
+ try {
49
+ const contextResult = await contextPromise;
50
+ contextResult.match((context)=>{
51
+ if (!context.baseURL || '' === context.baseURL.trim()) {
52
+ const url = new URL(request.url);
53
+ const basePath = context.options?.basePath || '/api/c15t';
54
+ const baseURL = `${url.origin}${basePath}`;
55
+ context.baseURL = baseURL;
56
+ if (context.options) context.options.baseURL = baseURL;
57
+ }
58
+ }, ()=>{});
59
+ } catch {}
60
+ }
61
+ const result = await instance.handler(request);
62
+ return await result.match((response)=>response, (error)=>{
63
+ const status = error.status || 500;
64
+ const message = error.message || BASE_ERROR_CODES.INTERNAL_SERVER_ERROR;
65
+ return new Response(JSON.stringify({
66
+ error: true,
67
+ code: error.code || BASE_ERROR_CODES.INTERNAL_SERVER_ERROR,
68
+ message,
69
+ data: error.data
70
+ }), {
71
+ status,
72
+ headers: {
73
+ 'Content-Type': 'application/json'
74
+ }
75
+ });
76
+ });
77
+ } catch (error) {
78
+ console.error('Unexpected error in c15t handler:', error);
79
+ return new Response(JSON.stringify({
80
+ error: true,
81
+ code: BASE_ERROR_CODES.INTERNAL_SERVER_ERROR,
82
+ message: 'An unexpected error occurred',
83
+ data: {
84
+ error: String(error)
85
+ }
86
+ }), {
87
+ status: 500,
88
+ headers: {
89
+ 'Content-Type': 'application/json'
90
+ }
91
+ });
92
+ }
93
+ };
94
+ return {
95
+ GET: handler,
96
+ POST: handler
97
+ };
98
+ }
99
+ export { toNextJsHandler };
@@ -0,0 +1,182 @@
1
+ "use strict";
2
+ var __webpack_require__ = {};
3
+ (()=>{
4
+ __webpack_require__.d = (exports1, definition)=>{
5
+ for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
+ enumerable: true,
7
+ get: definition[key]
8
+ });
9
+ };
10
+ })();
11
+ (()=>{
12
+ __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
+ })();
14
+ (()=>{
15
+ __webpack_require__.r = function(exports1) {
16
+ if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
+ value: 'Module'
18
+ });
19
+ Object.defineProperty(exports1, '__esModule', {
20
+ value: true
21
+ });
22
+ };
23
+ })();
24
+ var __webpack_exports__ = {};
25
+ __webpack_require__.r(__webpack_exports__);
26
+ __webpack_require__.d(__webpack_exports__, {
27
+ createConsentClient: ()=>createConsentClient
28
+ });
29
+ function createConsentClient(config = {}) {
30
+ const { baseUrl = '/api/c15t', refreshInterval = 0, defaultPreferences = {
31
+ analytics: true,
32
+ marketing: true,
33
+ preferences: true
34
+ } } = config;
35
+ function createStore(createState) {
36
+ let state;
37
+ const listeners = new Set();
38
+ const setState = (partial)=>{
39
+ const nextState = 'function' == typeof partial ? {
40
+ ...state,
41
+ ...partial(state)
42
+ } : {
43
+ ...state,
44
+ ...partial
45
+ };
46
+ state = nextState;
47
+ for (const listener of listeners)listener(state);
48
+ };
49
+ const getState = ()=>state;
50
+ const subscribe = (listener)=>{
51
+ listeners.add(listener);
52
+ return ()=>listeners.delete(listener);
53
+ };
54
+ state = createState(setState, getState);
55
+ return {
56
+ getState,
57
+ setState,
58
+ subscribe
59
+ };
60
+ }
61
+ const consentStore = createStore((set, get)=>({
62
+ isLoading: true,
63
+ hasConsented: null,
64
+ preferences: null,
65
+ error: null,
66
+ lastUpdated: null,
67
+ setConsent: async (preferences)=>{
68
+ try {
69
+ set({
70
+ isLoading: true,
71
+ error: null
72
+ });
73
+ const response = await fetch(`${baseUrl}/set`, {
74
+ method: 'POST',
75
+ headers: {
76
+ 'Content-Type': 'application/json'
77
+ },
78
+ body: JSON.stringify({
79
+ preferences
80
+ }),
81
+ credentials: 'same-origin'
82
+ });
83
+ if (!response.ok) throw new Error(`Failed to set consent: ${response.statusText}`);
84
+ const result = await response.json();
85
+ set({
86
+ isLoading: false,
87
+ hasConsented: true,
88
+ preferences: result.preferences || preferences,
89
+ lastUpdated: Date.now()
90
+ });
91
+ return result;
92
+ } catch (error) {
93
+ set({
94
+ isLoading: false,
95
+ error: error instanceof Error ? error : new Error(String(error))
96
+ });
97
+ throw error;
98
+ }
99
+ },
100
+ acceptAll: async ()=>{
101
+ const cleanPreferences = Object.entries(defaultPreferences).filter(([_, value])=>void 0 !== value).reduce((acc, [key, value])=>{
102
+ acc[key] = value;
103
+ return acc;
104
+ }, {});
105
+ return await get().setConsent(cleanPreferences);
106
+ },
107
+ declineAll: async ()=>{
108
+ const minimalConsent = Object.keys(defaultPreferences).reduce((acc, key)=>{
109
+ acc[key] = false;
110
+ return acc;
111
+ }, {});
112
+ return await get().setConsent(minimalConsent);
113
+ },
114
+ refreshStatus: async ()=>{
115
+ try {
116
+ set({
117
+ isLoading: true,
118
+ error: null
119
+ });
120
+ const response = await fetch(`${baseUrl}/status`, {
121
+ credentials: 'same-origin'
122
+ });
123
+ if (!response.ok) throw new Error(`Failed to get consent status: ${response.statusText}`);
124
+ const { consented, preferences } = await response.json();
125
+ set({
126
+ isLoading: false,
127
+ hasConsented: consented,
128
+ preferences: preferences,
129
+ lastUpdated: Date.now()
130
+ });
131
+ } catch (error) {
132
+ set({
133
+ isLoading: false,
134
+ error: error instanceof Error ? error : new Error(String(error))
135
+ });
136
+ }
137
+ },
138
+ clearError: ()=>{
139
+ set({
140
+ error: null
141
+ });
142
+ }
143
+ }));
144
+ const useConsent = ()=>{
145
+ const storeState = consentStore.getState();
146
+ if ('undefined' == typeof window) return storeState;
147
+ setTimeout(()=>{
148
+ if (null === storeState.hasConsented && !storeState.isLoading) storeState.refreshStatus();
149
+ if (refreshInterval > 0) {
150
+ const intervalId = setInterval(()=>{
151
+ storeState.refreshStatus();
152
+ }, refreshInterval);
153
+ window.addEventListener('unload', ()=>clearInterval(intervalId));
154
+ }
155
+ }, 0);
156
+ return storeState;
157
+ };
158
+ const useConditionalContent = (requiredConsent)=>{
159
+ const store = useConsent();
160
+ const canShow = ()=>{
161
+ if (store.isLoading || !store.hasConsented || !store.preferences) return false;
162
+ if (Array.isArray(requiredConsent)) return requiredConsent.every((key)=>store.preferences?.[key]);
163
+ return !!store.preferences[requiredConsent];
164
+ };
165
+ return {
166
+ isLoading: store.isLoading,
167
+ hasConsented: store.hasConsented,
168
+ canShow: canShow(),
169
+ preferences: store.preferences
170
+ };
171
+ };
172
+ return {
173
+ store: consentStore,
174
+ useConsent,
175
+ useConditionalContent
176
+ };
177
+ }
178
+ var __webpack_export_target__ = exports;
179
+ for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
180
+ if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
181
+ value: true
182
+ });
@@ -0,0 +1,257 @@
1
+ /**
2
+ * React integration for c15t consent management system
3
+ *
4
+ * This module provides React hooks and state management for the c15t consent system.
5
+ * It implements a lightweight store and hooks for integrating consent management
6
+ * into React applications without requiring specific React dependencies.
7
+ *
8
+ * The implementation is designed to work in various React environments and can
9
+ * also function in non-React environments by providing a fallback pattern.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * // Initialize in your app
14
+ * import { createConsentClient } from '@c15t/integrations/react';
15
+ *
16
+ * const consentClient = createConsentClient({
17
+ * baseUrl: '/api/c15t',
18
+ * refreshInterval: 60000, // Check every minute
19
+ * });
20
+ *
21
+ * // Use in components
22
+ * function ConsentBanner() {
23
+ * const { isLoading, hasConsented, acceptAll, declineAll } = consentClient.useConsent();
24
+ *
25
+ * if (isLoading) return <div>Loading...</div>;
26
+ * if (hasConsented) return null;
27
+ *
28
+ * return (
29
+ * <div className="consent-banner">
30
+ * <h2>We use cookies</h2>
31
+ * <button onClick={acceptAll}>Accept All</button>
32
+ * <button onClick={declineAll}>Decline All</button>
33
+ * </div>
34
+ * );
35
+ * }
36
+ * ```
37
+ */
38
+ /**
39
+ * Type definition for a React-like hook function
40
+ *
41
+ * This type facilitates compatibility with React's hooks pattern
42
+ * without requiring a direct dependency on React.
43
+ *
44
+ * @template T The return type of the hook
45
+ */
46
+ type ReactHook<T> = () => T;
47
+ /**
48
+ * State for the consent management store
49
+ *
50
+ * Contains the current consent status, preferences, and loading state.
51
+ */
52
+ interface ConsentState {
53
+ /**
54
+ * Whether consent data is currently being loaded
55
+ */
56
+ isLoading: boolean;
57
+ /**
58
+ * Whether the subject has provided consent
59
+ * - `true`: Subject has provided at least one consent
60
+ * - `false`: Subject has explicitly declined all consent
61
+ * - `null`: Consent status hasn't been determined yet
62
+ */
63
+ hasConsented: boolean | null;
64
+ /**
65
+ * Map of consent purposes to their consent status
66
+ * Key is the consentPurpose ID, value is a boolean indicating consent
67
+ */
68
+ preferences: Record<string, boolean> | null;
69
+ /**
70
+ * Error that occurred during consent operations
71
+ */
72
+ error: Error | null;
73
+ /**
74
+ * Timestamp of when consent was last updated
75
+ */
76
+ lastUpdated: number | null;
77
+ }
78
+ /**
79
+ * Actions that can be performed on the consent store
80
+ *
81
+ * These actions allow modifying the consent state and interacting
82
+ * with the consent management backend.
83
+ */
84
+ interface ConsentActions {
85
+ /**
86
+ * Set specific consent preferences
87
+ *
88
+ * @param preferences - Map of consentPurpose IDs to consent values
89
+ * @returns Promise that resolves when consent is updated
90
+ */
91
+ setConsent: (preferences: Record<string, boolean>) => Promise<void>;
92
+ /**
93
+ * Accept all consent purposes
94
+ * Uses the default preferences defined in configuration
95
+ *
96
+ * @returns Promise that resolves when consent is updated
97
+ */
98
+ acceptAll: () => Promise<void>;
99
+ /**
100
+ * Decline all consent purposes
101
+ * Sets all purposes to `false`
102
+ *
103
+ * @returns Promise that resolves when consent is updated
104
+ */
105
+ declineAll: () => Promise<void>;
106
+ /**
107
+ * Refresh the consent status from the server
108
+ *
109
+ * @returns Promise that resolves when consent status is refreshed
110
+ */
111
+ refreshStatus: () => Promise<void>;
112
+ /**
113
+ * Clear any error state in the store
114
+ */
115
+ clearError: () => void;
116
+ }
117
+ /**
118
+ * Combined type for the consent store containing both state and actions
119
+ */
120
+ type ConsentStore = ConsentState & ConsentActions;
121
+ /**
122
+ * Configuration options for the c15t React client
123
+ */
124
+ interface c15tClientConfig {
125
+ /**
126
+ * Base URL for API endpoints
127
+ * @default '/api/c15t'
128
+ */
129
+ baseUrl?: string;
130
+ /**
131
+ * Auto-refresh interval in milliseconds
132
+ * Set to 0 to disable auto-refresh
133
+ * @default 0 (disabled)
134
+ */
135
+ refreshInterval?: number;
136
+ /**
137
+ * Default preferences to use for acceptAll action
138
+ * These values determine what gets set when a subject accepts all consent
139
+ *
140
+ * @example
141
+ * ```ts
142
+ * {
143
+ * analytics: true,
144
+ * marketing: true,
145
+ * preferences: true
146
+ * }
147
+ * ```
148
+ */
149
+ defaultPreferences?: {
150
+ analytics?: boolean;
151
+ marketing?: boolean;
152
+ preferences?: boolean;
153
+ [key: string]: boolean | undefined;
154
+ };
155
+ }
156
+ /**
157
+ * Interface for basic store operations
158
+ *
159
+ * Provides a minimal store API similar to common state management libraries
160
+ *
161
+ * @template T The type of state stored in the store
162
+ */
163
+ interface StoreAPI<T> {
164
+ /**
165
+ * Get the current state
166
+ * @returns The current state
167
+ */
168
+ getState: () => T;
169
+ /**
170
+ * Update the state
171
+ * @param partial - Partial state or function that returns partial state
172
+ */
173
+ setState: (partial: Partial<T> | ((state: T) => Partial<T>)) => void;
174
+ /**
175
+ * Subscribe to state changes
176
+ * @param listener - Function to call when state changes
177
+ * @returns Unsubscribe function
178
+ */
179
+ subscribe: (listener: (state: T) => void) => () => void;
180
+ }
181
+ /**
182
+ * Result of the useConditionalContent hook
183
+ */
184
+ interface ConditionalContentResult {
185
+ /**
186
+ * Whether consent data is currently loading
187
+ */
188
+ isLoading: boolean;
189
+ /**
190
+ * Whether the subject has given any consent
191
+ */
192
+ hasConsented: boolean | null;
193
+ /**
194
+ * Whether content can be shown based on required consent
195
+ */
196
+ canShow: boolean;
197
+ /**
198
+ * Current consent preferences
199
+ */
200
+ preferences: Record<string, boolean> | null;
201
+ }
202
+ /**
203
+ * Result of the createConsentClient function
204
+ */
205
+ interface ConsentClient {
206
+ /**
207
+ * Store for managing consent state
208
+ */
209
+ store: StoreAPI<ConsentStore>;
210
+ /**
211
+ * Hook for accessing consent state and actions
212
+ */
213
+ useConsent: ReactHook<ConsentStore>;
214
+ /**
215
+ * Hook for conditionally showing content based on consent
216
+ */
217
+ useConditionalContent: (requiredConsent: string | string[]) => ConditionalContentResult;
218
+ }
219
+ /**
220
+ * Creates a c15t client for React applications
221
+ *
222
+ * This function creates a store and hooks for managing consent in React applications.
223
+ * It provides a lightweight implementation that works in various React environments
224
+ * and degrades gracefully in non-React environments.
225
+ *
226
+ * @example
227
+ * ```tsx
228
+ * // Create a client
229
+ * const client = createConsentClient({
230
+ * baseUrl: '/api/c15t',
231
+ * refreshInterval: 60000,
232
+ * defaultPreferences: {
233
+ * analytics: true,
234
+ * marketing: false
235
+ * }
236
+ * });
237
+ *
238
+ * // Use in a component
239
+ * function ConsentStatus() {
240
+ * const { preferences, refreshStatus } = client.useConsent();
241
+ *
242
+ * return (
243
+ * <div>
244
+ * <h2>Your consent preferences:</h2>
245
+ * <pre>{JSON.stringify(preferences, null, 2)}</pre>
246
+ * <button onClick={refreshStatus}>Refresh</button>
247
+ * </div>
248
+ * );
249
+ * }
250
+ * ```
251
+ *
252
+ * @param config - Client configuration options
253
+ * @returns A client object with store and hooks
254
+ */
255
+ export declare function createConsentClient(config?: c15tClientConfig): ConsentClient;
256
+ export {};
257
+ //# sourceMappingURL=react.d.ts.map