@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
package/dist/init.d.ts ADDED
@@ -0,0 +1,52 @@
1
+ import { type C15TResult } from './error/results';
2
+ /**
3
+ * c15t Initialization Module
4
+ *
5
+ * This module handles the initialization of the c15t consent management system.
6
+ * It sets up the consent context, configures storage adapters, initializes plugins,
7
+ * and establishes security settings like secrets and trusted origins.
8
+ *
9
+ * The initialization process includes:
10
+ * - Setting up storage adapters for consent data
11
+ * - Configuring security credentials and trusted origins
12
+ * - Initializing core and custom plugins
13
+ * - Creating the consent context object that serves as the foundation for the system
14
+ *
15
+ * This is an internal module typically not used directly by consumers of the c15t library.
16
+ */
17
+ import type { C15TContext, C15TOptions, C15TPlugin } from './types';
18
+ /**
19
+ * Initializes the c15t consent management system using Result pattern
20
+ *
21
+ * This function creates and configures the consent context based on the provided options.
22
+ * It sets up storage adapters, initializes plugins, configures security settings,
23
+ * and establishes the foundation for the consent management system.
24
+ *
25
+ * This version uses the neverthrow Result pattern for error handling.
26
+ *
27
+ * @template P - The plugin types used in the configuration
28
+ * @param options - Configuration options for the c15t instance
29
+ * @returns A Promise resolving to a Result containing the initialized consent context
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * const contextResult = await init({
34
+ * secret: process.env.CONSENT_SECRET,
35
+ * storage: memoryAdapter(),
36
+ * plugins: [geoPlugin()]
37
+ * });
38
+ *
39
+ * // Handle success and error cases explicitly
40
+ * contextResult.match(
41
+ * (context) => {
42
+ * // Use the successfully initialized context
43
+ * },
44
+ * (error) => {
45
+ * // Handle the initialization error
46
+ * console.error('Failed to initialize:', error.message);
47
+ * }
48
+ * );
49
+ * ```
50
+ */
51
+ export declare const init: <P extends C15TPlugin[]>(options: C15TOptions<P>) => Promise<C15TResult<C15TContext>>;
52
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../src/init.ts"],"names":[],"mappings":"AAYA,OAAO,EAAE,KAAK,UAAU,EAAY,MAAM,iBAAiB,CAAC;AAC5D;;;;;;;;;;;;;;GAcG;AACH,OAAO,KAAK,EACX,WAAW,EACX,WAAW,EACX,UAAU,EAEV,MAAM,SAAS,CAAC;AA2BjB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,eAAO,MAAM,IAAI,GAAU,CAAC,SAAS,UAAU,EAAE,EAChD,SAAS,WAAW,CAAC,CAAC,CAAC,KACrB,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,CA4EjC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=init.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.test.d.ts","sourceRoot":"","sources":["../src/init.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,281 @@
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
+ createConsentClient: ()=>createConsentClient
29
+ });
30
+ const BASE_ERROR_CODES = {
31
+ NOT_FOUND: 'Resource not found',
32
+ BAD_REQUEST: 'Bad request',
33
+ CONFLICT: 'Conflict with current state',
34
+ CONSENT_NOT_FOUND: 'Consent not found',
35
+ CONSENT_EXPIRED: 'Consent has expired',
36
+ FAILED_TO_CREATE_CONSENT: 'Failed to create consent',
37
+ FAILED_TO_UPDATE_CONSENT: 'Failed to update consent',
38
+ FAILED_TO_GET_CONSENT: 'Failed to get consent',
39
+ FAILED_TO_CREATE_PURPOSE: 'Failed to create consentPurpose',
40
+ PURPOSE_NOT_FOUND: 'Consent Purpose not found',
41
+ INVALID_CONFIGURATION: 'Invalid configuration',
42
+ MISSING_REQUIRED_PARAMETER: 'Missing required parameter',
43
+ UNAUTHORIZED: 'Unauthorized',
44
+ FORBIDDEN: 'Forbidden',
45
+ INTERNAL_SERVER_ERROR: 'Internal server error',
46
+ INITIALIZATION_FAILED: 'Initialization failed',
47
+ PLUGIN_INITIALIZATION_FAILED: 'Plugin initialization failed',
48
+ DATABASE_CONNECTION_ERROR: 'Database connection error',
49
+ DATABASE_QUERY_ERROR: 'Database query error',
50
+ REQUEST_HANDLER_ERROR: 'Request handler error',
51
+ API_RETRIEVAL_ERROR: 'API retrieval error',
52
+ INVALID_REQUEST: 'Invalid request',
53
+ UNKNOWN_ERROR: 'Unknown error'
54
+ };
55
+ function toNextJsHandler(instance) {
56
+ const handler = async (initialRequest)=>{
57
+ try {
58
+ const request = initialRequest;
59
+ if ('POST' === request.method) try {
60
+ const clonedRequest = request.clone();
61
+ await clonedRequest.json();
62
+ } catch (error) {
63
+ return new Response(JSON.stringify({
64
+ error: true,
65
+ code: BASE_ERROR_CODES.REQUEST_HANDLER_ERROR,
66
+ message: 'Invalid JSON in request body',
67
+ details: error instanceof Error ? error.message : 'Unknown error'
68
+ }), {
69
+ status: 400,
70
+ headers: {
71
+ 'Content-Type': 'application/json'
72
+ }
73
+ });
74
+ }
75
+ if (instance.$context) {
76
+ const contextPromise = instance.$context;
77
+ try {
78
+ const contextResult = await contextPromise;
79
+ contextResult.match((context)=>{
80
+ if (!context.baseURL || '' === context.baseURL.trim()) {
81
+ const url = new URL(request.url);
82
+ const basePath = context.options?.basePath || '/api/c15t';
83
+ const baseURL = `${url.origin}${basePath}`;
84
+ context.baseURL = baseURL;
85
+ if (context.options) context.options.baseURL = baseURL;
86
+ }
87
+ }, ()=>{});
88
+ } catch {}
89
+ }
90
+ const result = await instance.handler(request);
91
+ return await result.match((response)=>response, (error)=>{
92
+ const status = error.status || 500;
93
+ const message = error.message || BASE_ERROR_CODES.INTERNAL_SERVER_ERROR;
94
+ return new Response(JSON.stringify({
95
+ error: true,
96
+ code: error.code || BASE_ERROR_CODES.INTERNAL_SERVER_ERROR,
97
+ message,
98
+ data: error.data
99
+ }), {
100
+ status,
101
+ headers: {
102
+ 'Content-Type': 'application/json'
103
+ }
104
+ });
105
+ });
106
+ } catch (error) {
107
+ console.error('Unexpected error in c15t handler:', error);
108
+ return new Response(JSON.stringify({
109
+ error: true,
110
+ code: BASE_ERROR_CODES.INTERNAL_SERVER_ERROR,
111
+ message: 'An unexpected error occurred',
112
+ data: {
113
+ error: String(error)
114
+ }
115
+ }), {
116
+ status: 500,
117
+ headers: {
118
+ 'Content-Type': 'application/json'
119
+ }
120
+ });
121
+ }
122
+ };
123
+ return {
124
+ GET: handler,
125
+ POST: handler
126
+ };
127
+ }
128
+ function createConsentClient(config = {}) {
129
+ const { baseUrl = '/api/c15t', refreshInterval = 0, defaultPreferences = {
130
+ analytics: true,
131
+ marketing: true,
132
+ preferences: true
133
+ } } = config;
134
+ function createStore(createState) {
135
+ let state;
136
+ const listeners = new Set();
137
+ const setState = (partial)=>{
138
+ const nextState = 'function' == typeof partial ? {
139
+ ...state,
140
+ ...partial(state)
141
+ } : {
142
+ ...state,
143
+ ...partial
144
+ };
145
+ state = nextState;
146
+ for (const listener of listeners)listener(state);
147
+ };
148
+ const getState = ()=>state;
149
+ const subscribe = (listener)=>{
150
+ listeners.add(listener);
151
+ return ()=>listeners.delete(listener);
152
+ };
153
+ state = createState(setState, getState);
154
+ return {
155
+ getState,
156
+ setState,
157
+ subscribe
158
+ };
159
+ }
160
+ const consentStore = createStore((set, get)=>({
161
+ isLoading: true,
162
+ hasConsented: null,
163
+ preferences: null,
164
+ error: null,
165
+ lastUpdated: null,
166
+ setConsent: async (preferences)=>{
167
+ try {
168
+ set({
169
+ isLoading: true,
170
+ error: null
171
+ });
172
+ const response = await fetch(`${baseUrl}/set`, {
173
+ method: 'POST',
174
+ headers: {
175
+ 'Content-Type': 'application/json'
176
+ },
177
+ body: JSON.stringify({
178
+ preferences
179
+ }),
180
+ credentials: 'same-origin'
181
+ });
182
+ if (!response.ok) throw new Error(`Failed to set consent: ${response.statusText}`);
183
+ const result = await response.json();
184
+ set({
185
+ isLoading: false,
186
+ hasConsented: true,
187
+ preferences: result.preferences || preferences,
188
+ lastUpdated: Date.now()
189
+ });
190
+ return result;
191
+ } catch (error) {
192
+ set({
193
+ isLoading: false,
194
+ error: error instanceof Error ? error : new Error(String(error))
195
+ });
196
+ throw error;
197
+ }
198
+ },
199
+ acceptAll: async ()=>{
200
+ const cleanPreferences = Object.entries(defaultPreferences).filter(([_, value])=>void 0 !== value).reduce((acc, [key, value])=>{
201
+ acc[key] = value;
202
+ return acc;
203
+ }, {});
204
+ return await get().setConsent(cleanPreferences);
205
+ },
206
+ declineAll: async ()=>{
207
+ const minimalConsent = Object.keys(defaultPreferences).reduce((acc, key)=>{
208
+ acc[key] = false;
209
+ return acc;
210
+ }, {});
211
+ return await get().setConsent(minimalConsent);
212
+ },
213
+ refreshStatus: async ()=>{
214
+ try {
215
+ set({
216
+ isLoading: true,
217
+ error: null
218
+ });
219
+ const response = await fetch(`${baseUrl}/status`, {
220
+ credentials: 'same-origin'
221
+ });
222
+ if (!response.ok) throw new Error(`Failed to get consent status: ${response.statusText}`);
223
+ const { consented, preferences } = await response.json();
224
+ set({
225
+ isLoading: false,
226
+ hasConsented: consented,
227
+ preferences: preferences,
228
+ lastUpdated: Date.now()
229
+ });
230
+ } catch (error) {
231
+ set({
232
+ isLoading: false,
233
+ error: error instanceof Error ? error : new Error(String(error))
234
+ });
235
+ }
236
+ },
237
+ clearError: ()=>{
238
+ set({
239
+ error: null
240
+ });
241
+ }
242
+ }));
243
+ const useConsent = ()=>{
244
+ const storeState = consentStore.getState();
245
+ if ('undefined' == typeof window) return storeState;
246
+ setTimeout(()=>{
247
+ if (null === storeState.hasConsented && !storeState.isLoading) storeState.refreshStatus();
248
+ if (refreshInterval > 0) {
249
+ const intervalId = setInterval(()=>{
250
+ storeState.refreshStatus();
251
+ }, refreshInterval);
252
+ window.addEventListener('unload', ()=>clearInterval(intervalId));
253
+ }
254
+ }, 0);
255
+ return storeState;
256
+ };
257
+ const useConditionalContent = (requiredConsent)=>{
258
+ const store = useConsent();
259
+ const canShow = ()=>{
260
+ if (store.isLoading || !store.hasConsented || !store.preferences) return false;
261
+ if (Array.isArray(requiredConsent)) return requiredConsent.every((key)=>store.preferences?.[key]);
262
+ return !!store.preferences[requiredConsent];
263
+ };
264
+ return {
265
+ isLoading: store.isLoading,
266
+ hasConsented: store.hasConsented,
267
+ canShow: canShow(),
268
+ preferences: store.preferences
269
+ };
270
+ };
271
+ return {
272
+ store: consentStore,
273
+ useConsent,
274
+ useConditionalContent
275
+ };
276
+ }
277
+ var __webpack_export_target__ = exports;
278
+ for(var __webpack_i__ in __webpack_exports__)__webpack_export_target__[__webpack_i__] = __webpack_exports__[__webpack_i__];
279
+ if (__webpack_exports__.__esModule) Object.defineProperty(__webpack_export_target__, '__esModule', {
280
+ value: true
281
+ });
@@ -0,0 +1,7 @@
1
+ /**
2
+ * c15t Framework Integrations
3
+ * This module exports integrations with various frameworks and libraries
4
+ */
5
+ export * from './next';
6
+ export * from './react';
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/integrations/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,cAAc,QAAQ,CAAC;AAGvB,cAAc,SAAS,CAAC"}
@@ -0,0 +1,248 @@
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
+ function createConsentClient(config = {}) {
100
+ const { baseUrl = '/api/c15t', refreshInterval = 0, defaultPreferences = {
101
+ analytics: true,
102
+ marketing: true,
103
+ preferences: true
104
+ } } = config;
105
+ function createStore(createState) {
106
+ let state;
107
+ const listeners = new Set();
108
+ const setState = (partial)=>{
109
+ const nextState = 'function' == typeof partial ? {
110
+ ...state,
111
+ ...partial(state)
112
+ } : {
113
+ ...state,
114
+ ...partial
115
+ };
116
+ state = nextState;
117
+ for (const listener of listeners)listener(state);
118
+ };
119
+ const getState = ()=>state;
120
+ const subscribe = (listener)=>{
121
+ listeners.add(listener);
122
+ return ()=>listeners.delete(listener);
123
+ };
124
+ state = createState(setState, getState);
125
+ return {
126
+ getState,
127
+ setState,
128
+ subscribe
129
+ };
130
+ }
131
+ const consentStore = createStore((set, get)=>({
132
+ isLoading: true,
133
+ hasConsented: null,
134
+ preferences: null,
135
+ error: null,
136
+ lastUpdated: null,
137
+ setConsent: async (preferences)=>{
138
+ try {
139
+ set({
140
+ isLoading: true,
141
+ error: null
142
+ });
143
+ const response = await fetch(`${baseUrl}/set`, {
144
+ method: 'POST',
145
+ headers: {
146
+ 'Content-Type': 'application/json'
147
+ },
148
+ body: JSON.stringify({
149
+ preferences
150
+ }),
151
+ credentials: 'same-origin'
152
+ });
153
+ if (!response.ok) throw new Error(`Failed to set consent: ${response.statusText}`);
154
+ const result = await response.json();
155
+ set({
156
+ isLoading: false,
157
+ hasConsented: true,
158
+ preferences: result.preferences || preferences,
159
+ lastUpdated: Date.now()
160
+ });
161
+ return result;
162
+ } catch (error) {
163
+ set({
164
+ isLoading: false,
165
+ error: error instanceof Error ? error : new Error(String(error))
166
+ });
167
+ throw error;
168
+ }
169
+ },
170
+ acceptAll: async ()=>{
171
+ const cleanPreferences = Object.entries(defaultPreferences).filter(([_, value])=>void 0 !== value).reduce((acc, [key, value])=>{
172
+ acc[key] = value;
173
+ return acc;
174
+ }, {});
175
+ return await get().setConsent(cleanPreferences);
176
+ },
177
+ declineAll: async ()=>{
178
+ const minimalConsent = Object.keys(defaultPreferences).reduce((acc, key)=>{
179
+ acc[key] = false;
180
+ return acc;
181
+ }, {});
182
+ return await get().setConsent(minimalConsent);
183
+ },
184
+ refreshStatus: async ()=>{
185
+ try {
186
+ set({
187
+ isLoading: true,
188
+ error: null
189
+ });
190
+ const response = await fetch(`${baseUrl}/status`, {
191
+ credentials: 'same-origin'
192
+ });
193
+ if (!response.ok) throw new Error(`Failed to get consent status: ${response.statusText}`);
194
+ const { consented, preferences } = await response.json();
195
+ set({
196
+ isLoading: false,
197
+ hasConsented: consented,
198
+ preferences: preferences,
199
+ lastUpdated: Date.now()
200
+ });
201
+ } catch (error) {
202
+ set({
203
+ isLoading: false,
204
+ error: error instanceof Error ? error : new Error(String(error))
205
+ });
206
+ }
207
+ },
208
+ clearError: ()=>{
209
+ set({
210
+ error: null
211
+ });
212
+ }
213
+ }));
214
+ const useConsent = ()=>{
215
+ const storeState = consentStore.getState();
216
+ if ('undefined' == typeof window) return storeState;
217
+ setTimeout(()=>{
218
+ if (null === storeState.hasConsented && !storeState.isLoading) storeState.refreshStatus();
219
+ if (refreshInterval > 0) {
220
+ const intervalId = setInterval(()=>{
221
+ storeState.refreshStatus();
222
+ }, refreshInterval);
223
+ window.addEventListener('unload', ()=>clearInterval(intervalId));
224
+ }
225
+ }, 0);
226
+ return storeState;
227
+ };
228
+ const useConditionalContent = (requiredConsent)=>{
229
+ const store = useConsent();
230
+ const canShow = ()=>{
231
+ if (store.isLoading || !store.hasConsented || !store.preferences) return false;
232
+ if (Array.isArray(requiredConsent)) return requiredConsent.every((key)=>store.preferences?.[key]);
233
+ return !!store.preferences[requiredConsent];
234
+ };
235
+ return {
236
+ isLoading: store.isLoading,
237
+ hasConsented: store.hasConsented,
238
+ canShow: canShow(),
239
+ preferences: store.preferences
240
+ };
241
+ };
242
+ return {
243
+ store: consentStore,
244
+ useConsent,
245
+ useConditionalContent
246
+ };
247
+ }
248
+ export { createConsentClient, toNextJsHandler };