@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,11 @@
1
+
2
+ 
3
+ > @c15t/backend@0.0.1-rc.10 build /Users/christopherburns/glados/k/c15t/packages/backend
4
+ > rslib build
5
+
6
+   Rslib v0.5.3
7
+ 
8
+ ready  built in 0.69 s (esm)
9
+ ready  built in 0.69 s (cjs)
10
+ start  Generating DTS... (esm)
11
+ start  Generating DTS... (cjs)
@@ -0,0 +1,5 @@
1
+
2
+ 
3
+ > @c15t/backend@0.0.1-rc.10 check-types /Users/christopherburns/glados/k/c15t/packages/backend
4
+ > tsc --noEmit
5
+
@@ -0,0 +1,7 @@
1
+
2
+ 
3
+ > @c15t/backend@0.0.1-rc.10 fmt /Users/christopherburns/glados/k/c15t/packages/backend
4
+ > pnpm biome format --write . && biome check --formatter-enabled=false --linter-enabled=false --organize-imports-enabled=true --write
5
+
6
+ Formatted 164 files in 40ms. No fixes applied.
7
+ Checked 194 files in 32ms. Fixed 3 files.
@@ -0,0 +1,6 @@
1
+
2
+ 
3
+ > @c15t/backend@0.0.1-rc.10 lint /Users/christopherburns/glados/k/c15t/packages/backend
4
+ > pnpm biome lint ./src
5
+
6
+ Checked 160 files in 59ms. No fixes applied.
@@ -0,0 +1,26 @@
1
+
2
+ 
3
+ > @c15t/backend@0.0.1-rc.10 test /Users/christopherburns/glados/k/c15t/packages/backend
4
+ > vitest
5
+
6
+ [?25l
7
+  DEV  v3.0.8 /Users/christopherburns/glados/k/c15t/packages/backend
8
+
9
+ [?2026h
10
+  ❯ src/api/routes/__tests__/status.test.ts [queued]
11
+
12
+  Test Files 0 passed (4)
13
+  Tests 0 passed (0)
14
+  Start at 13:42:20
15
+  Duration 204ms
16
+ [?2026l[?2026h ✓ src/api/routes/__tests__/status.test.ts (2 tests) 16ms
17
+
18
+  ❯ src/api/routes/__tests__/consent.test.ts [queued]
19
+  ❯ src/core.test.ts [queued]
20
+  ❯ src/init.test.ts [queued]
21
+
22
+  Test Files 1 passed (4)
23
+  Tests 2 passed (2)
24
+  Start at 13:42:20
25
+  Duration 705ms
26
+ [?2026l[?25h ELIFECYCLE  Test failed. See above for more details.
package/README-next.md ADDED
@@ -0,0 +1,223 @@
1
+ # c15t Next.js Integration
2
+
3
+ This guide shows how to integrate c15t into your Next.js application for consent management.
4
+
5
+ ## Quick Start
6
+
7
+ Follow these steps to add c15t to your Next.js project:
8
+
9
+ 1. Install the c15t package:
10
+ ```bash
11
+ npm install @c15t/backend
12
+ # or
13
+ yarn add @c15t/backend
14
+ # or
15
+ pnpm add @c15t/backend
16
+ ```
17
+
18
+ 2. Create a shared c15t instance:
19
+ ```typescript
20
+ // lib/c15t.ts
21
+ import { c15tInstance } from '@c15t/backend';
22
+ import { memoryAdapter } from '@c15t/backend/storage/memory';
23
+
24
+ export const C15TInstance = c15tInstance({
25
+ appName: 'My Next.js App',
26
+ trustedOrigins: ['http://localhost:3000'],
27
+ storage: memoryAdapter(), // Use a persistent adapter for production
28
+ consent: {
29
+ expiresIn: 60 * 60 * 24 * 365, // 1 year
30
+ updateAge: 60 * 60 * 24, // 24 hours
31
+ },
32
+ });
33
+ ```
34
+
35
+ 3. Create the API route handler:
36
+ ```typescript
37
+ // app/api/c15t/[...route]/route.ts
38
+ import { toNextJsHandler } from '@c15t/backend/integrations/next';
39
+ import { C15TInstance } from '@/lib/c15t';
40
+
41
+ // Export all HTTP methods
42
+ export const { GET, POST, PUT, DELETE, OPTIONS } = toNextJsHandler(C15TInstance);
43
+ ```
44
+
45
+ 4. Create a React client for client components:
46
+ ```typescript
47
+ // lib/consent-client.ts
48
+ import { createConsentClient } from '@c15t/backend/integrations/react';
49
+
50
+ export const consentClient = createConsentClient({
51
+ baseUrl: '/api/c15t',
52
+ refreshInterval: 60 * 1000, // Check every minute (optional)
53
+ });
54
+
55
+ // Export hooks for use in components
56
+ export const { useConsent, useConditionalContent } = consentClient;
57
+ ```
58
+
59
+ ## Usage Examples
60
+
61
+ ### Client Components
62
+
63
+ #### Consent Banner
64
+ ```tsx
65
+ // components/ConsentBanner.tsx
66
+ 'use client';
67
+ import { useConsent } from '@/lib/consent-client';
68
+
69
+ export function ConsentBanner() {
70
+ const { isLoading, hasConsented, acceptAll, declineAll } = useConsent();
71
+
72
+ if (isLoading || hasConsented) {
73
+ return null;
74
+ }
75
+
76
+ return (
77
+ <div className="fixed bottom-0 left-0 right-0 bg-white p-4 shadow-lg">
78
+ <h3>Cookie Consent</h3>
79
+ <p>We use cookies to improve your experience.</p>
80
+ <div className="flex gap-2 mt-2">
81
+ <button onClick={() => acceptAll()}>Accept All</button>
82
+ <button onClick={() => declineAll()}>Decline All</button>
83
+ </div>
84
+ </div>
85
+ );
86
+ }
87
+ ```
88
+
89
+ #### Conditional Content
90
+ ```tsx
91
+ // components/AnalyticsContent.tsx
92
+ 'use client';
93
+ import { useConditionalContent } from '@/lib/consent-client';
94
+
95
+ export function AnalyticsContent() {
96
+ const { isLoading, canShow } = useConditionalContent('analytics');
97
+
98
+ if (isLoading) {
99
+ return <div>Loading...</div>;
100
+ }
101
+
102
+ if (!canShow) {
103
+ return <div>Please accept analytics cookies to view this content.</div>;
104
+ }
105
+
106
+ return <div>Analytics content visible!</div>;
107
+ }
108
+ ```
109
+
110
+ ### Server Components and Actions
111
+
112
+ #### Server Component with Consent Check
113
+ ```tsx
114
+ // app/protected-content/page.tsx
115
+ import { getServerConsent } from '@c15t/backend/integrations/server';
116
+ import { headers } from 'next/headers';
117
+ import { C15TInstance } from '@/lib/c15t';
118
+
119
+ export default async function ProtectedPage() {
120
+ const consent = await getServerConsent(C15TInstance, { headers: headers() });
121
+
122
+ if (!consent.consented) {
123
+ return (
124
+ <div>
125
+ <h1>Consent Required</h1>
126
+ <p>Please accept cookies to view this content.</p>
127
+ </div>
128
+ );
129
+ }
130
+
131
+ // User has consented, show protected content
132
+ return (
133
+ <div>
134
+ <h1>Protected Content</h1>
135
+ <p>This content is only visible to users who have provided consent.</p>
136
+ </div>
137
+ );
138
+ }
139
+ ```
140
+
141
+ #### Server Action to Update Consent
142
+ ```tsx
143
+ // app/actions.ts
144
+ 'use server'
145
+ import { setServerConsent } from '@c15t/backend/integrations/server';
146
+ import { cookies } from 'next/headers';
147
+ import { C15TInstance } from '@/lib/c15t';
148
+
149
+ export async function acceptAllCookies() {
150
+ return await setServerConsent(
151
+ C15TInstance,
152
+ {
153
+ preferences: { analytics: true, marketing: true, preferences: true }
154
+ },
155
+ { cookies: cookies() }
156
+ );
157
+ }
158
+
159
+ export async function rejectAllCookies() {
160
+ return await setServerConsent(
161
+ C15TInstance,
162
+ {
163
+ preferences: { analytics: false, marketing: false, preferences: false }
164
+ },
165
+ { cookies: cookies() }
166
+ );
167
+ }
168
+ ```
169
+
170
+ ### Middleware for Consent Checking
171
+
172
+ ```typescript
173
+ // middleware.ts
174
+ import { NextResponse } from 'next/server';
175
+ import { checkConsentCookie } from '@c15t/backend/integrations/next';
176
+
177
+ export function middleware(request) {
178
+ // Check if user has provided consent
179
+ const hasConsent = checkConsentCookie(request);
180
+
181
+ // For routes that require consent, redirect to consent page if not consented
182
+ if (!hasConsent && request.nextUrl.pathname.startsWith('/protected')) {
183
+ return NextResponse.redirect(new URL('/consent', request.url));
184
+ }
185
+
186
+ return NextResponse.next();
187
+ }
188
+
189
+ export const config = {
190
+ matcher: ['/protected/:path*'],
191
+ };
192
+ ```
193
+
194
+ ## Advanced Configuration
195
+
196
+ ### Custom Consent Preferences
197
+
198
+ You can define custom consent categories beyond the standard ones:
199
+
200
+ ```typescript
201
+ // lib/consent-client.ts
202
+ import { createConsentClient } from '@c15t/backend/integrations/react';
203
+
204
+ export const consentClient = createConsentClient({
205
+ defaultPreferences: {
206
+ analytics: true,
207
+ marketing: true,
208
+ preferences: true,
209
+ thirdParty: true, // Custom category
210
+ personalization: true, // Custom category
211
+ },
212
+ });
213
+ ```
214
+
215
+ ## Troubleshooting
216
+
217
+ ### Common Issues
218
+
219
+ 1. **API Route Not Found**: Make sure your route file is placed correctly at `app/api/c15t/[...route]/route.ts` or adjust your c15t configuration to match your route path.
220
+
221
+ 2. **Cookie Not Set**: Ensure your API calls include `credentials: 'same-origin'` to allow cookies to be set. For server actions, make sure you're using the `cookies()` helper.
222
+
223
+ 3. **CORS Issues**: If accessing the API from a different origin, configure the `trustedOrigins` in your c15t instance.
package/README.md ADDED
@@ -0,0 +1,164 @@
1
+ # C15T Backend
2
+
3
+ A robust consent management system backend that provides flexible database adapters, comprehensive audit logging, and a powerful plugin system.
4
+
5
+ ## Features
6
+
7
+ ### Database Adapters
8
+ - **Memory Adapter**: In-memory storage for development and testing
9
+ - **Kysely Adapter**: Type-safe SQL query builder with support for multiple databases
10
+ - **Prisma Adapter**: Integration with Prisma ORM
11
+ - **Drizzle Adapter**: Integration with Drizzle ORM
12
+
13
+ ### Core Functionality
14
+ - **Consent Management**: Track and manage user consent preferences
15
+ - **Audit Logging**: Comprehensive logging of all consent-related actions
16
+ - **Geo-location Support**: Track user locations for compliance
17
+ - **Domain Management**: Handle multiple domains and subdomains
18
+ - **Policy Management**: Version and manage consent policies
19
+
20
+ ### API Endpoints
21
+ - `/api/c15t/status`: System status and configuration
22
+ - `/api/c15t/consent`: Consent management endpoints
23
+ - `/api/c15t/policy`: Policy management endpoints
24
+ - `/api/c15t/audit`: Audit log access
25
+ - `/api/c15t/domain`: Domain management
26
+ - `/api/c15t/geo-location`: Geo-location tracking
27
+
28
+ ## Getting Started
29
+
30
+ ### Installation
31
+
32
+ ```bash
33
+ npm install @c15t/backend
34
+ ```
35
+
36
+ ### Basic Usage
37
+
38
+ ```typescript
39
+ import { c15tInstance } from '@c15t/backend';
40
+ import { memoryAdapter } from '@c15t/backend/db/adapters/memory';
41
+
42
+ const instance = c15tInstance({
43
+ baseURL: 'http://localhost:3000',
44
+ database: memoryAdapter({}),
45
+ });
46
+
47
+ // Handle requests
48
+ const response = await instance.handler(request);
49
+ ```
50
+
51
+ ### Database Configuration
52
+
53
+ ```typescript
54
+ // Using Kysely adapter
55
+ import { kyselyAdapter } from '@c15t/backend/db/adapters/kysely';
56
+
57
+ const instance = c15tInstance({
58
+ baseURL: 'http://localhost:3000',
59
+ database: kyselyAdapter({
60
+ dialect: 'postgres',
61
+ connection: {
62
+ host: 'localhost',
63
+ port: 5432,
64
+ database: 'c15t',
65
+ user: 'postgres',
66
+ password: 'password',
67
+ },
68
+ }),
69
+ });
70
+ ```
71
+
72
+ ### Plugin System
73
+
74
+ ```typescript
75
+ const customPlugin = {
76
+ id: 'custom-plugin',
77
+ name: 'Custom Plugin',
78
+ type: 'test',
79
+ init: () => ({
80
+ context: {
81
+ customField: 'value',
82
+ },
83
+ }),
84
+ onRequest: async (request, ctx) => {
85
+ // Modify request
86
+ return { request: modifiedRequest };
87
+ },
88
+ onResponse: async (response, ctx) => {
89
+ // Modify response
90
+ return { response: modifiedResponse };
91
+ },
92
+ };
93
+
94
+ const instance = c15tInstance({
95
+ baseURL: 'http://localhost:3000',
96
+ database: memoryAdapter({}),
97
+ plugins: [customPlugin],
98
+ });
99
+ ```
100
+
101
+ ## API Documentation
102
+
103
+ ### Core Instance
104
+
105
+ ```typescript
106
+ interface C15TInstance {
107
+ options: C15TOptions;
108
+ $context: Promise<Result<C15TContext, C15TError>>;
109
+ handler: (request: Request) => Promise<Result<Response, C15TError>>;
110
+ getApi: () => Promise<Result<Record<string, unknown>, C15TError>>;
111
+ }
112
+ ```
113
+
114
+ ### Database Adapters
115
+
116
+ Each adapter provides a consistent interface for database operations:
117
+
118
+ ```typescript
119
+ interface DatabaseAdapter {
120
+ create: <T extends Record<string, unknown>>(table: string, data: T) => Promise<T>;
121
+ find: <T extends Record<string, unknown>>(table: string, query: Query) => Promise<T[]>;
122
+ update: <T extends Record<string, unknown>>(table: string, query: Query, data: Partial<T>) => Promise<T>;
123
+ delete: (table: string, query: Query) => Promise<void>;
124
+ }
125
+ ```
126
+
127
+ ### Plugin System
128
+
129
+ Plugins can extend the system's functionality:
130
+
131
+ ```typescript
132
+ interface C15TPlugin {
133
+ id: string;
134
+ name: string;
135
+ type: string;
136
+ init?: () => Promise<{ context: Record<string, unknown> }>;
137
+ onRequest?: (request: Request, ctx: C15TContext) => Promise<{ request: Request } | { response: Response } | undefined>;
138
+ onResponse?: (response: Response, ctx: C15TContext) => Promise<{ response: Response } | undefined>;
139
+ }
140
+ ```
141
+
142
+ ## Error Handling
143
+
144
+ The system uses a Result type for error handling:
145
+
146
+ ```typescript
147
+ type Result<T, E> = { isOk: true; value: T } | { isOk: false; error: E };
148
+ ```
149
+
150
+ ## Security Features
151
+
152
+ - Origin validation for CORS
153
+ - Request validation
154
+ - Audit logging
155
+ - Secure ID generation
156
+ - Input sanitization
157
+
158
+ ## Contributing
159
+
160
+ 1. Fork the repository
161
+ 2. Create your feature branch
162
+ 3. Commit your changes
163
+ 4. Push to the branch
164
+ 5. Create a new Pull Request
@@ -0,0 +1,176 @@
1
+ import type { C15TContext } from '../types';
2
+ /**
3
+ * Middleware that provides access to the C15T context
4
+ *
5
+ * This middleware is used as a base for all endpoint handlers to provide
6
+ * access to the C15T context.
7
+ *
8
+ * @returns A Promise resolving to the C15T context
9
+ * @internal This is primarily meant for internal use by the C15T system
10
+ *
11
+ * @remarks
12
+ * This middleware serves as the foundation for context propagation throughout
13
+ * the consent management system. It's typically not used directly but is
14
+ * composed within other middleware and endpoint factories.
15
+ *
16
+ * @example
17
+ * ```typescript
18
+ * // This middleware is typically used internally by createAuthMiddleware and createAuthEndpoint
19
+ * const myMiddleware = createMiddleware.create({
20
+ * use: [optionsMiddleware]
21
+ * });
22
+ * ```
23
+ */
24
+ export declare const optionsMiddleware: <InputCtx extends import("better-call").MiddlewareInputContext<import("better-call").MiddlewareOptions>>(inputContext: InputCtx) => Promise<C15TContext>;
25
+ /**
26
+ * Creates an authentication middleware with pre-configured context access
27
+ *
28
+ * This factory combines the options middleware with post-hook functionality,
29
+ * allowing handlers to modify responses by setting headers.
30
+ *
31
+ * @returns A configured middleware for authentication endpoints
32
+ * @throws May propagate errors from underlying middleware implementations
33
+ * @throws Errors from your middleware handler will be propagated unless explicitly caught
34
+ *
35
+ * @remarks
36
+ * The middleware created by this factory automatically receives the C15T context
37
+ * and manages response header manipulation. It's particularly useful for
38
+ * authentication, authorization, and other cross-cutting concerns.
39
+ *
40
+ * @example
41
+ * ```typescript
42
+ * // Create a custom authentication middleware
43
+ * const verifySubjectMiddleware = createAuthMiddleware(async (context) => {
44
+ * const { subjectId } = context.params;
45
+ *
46
+ * // Verify the subject exists
47
+ * const subject = await getSubjectById(subjectId);
48
+ * if (!subject) {
49
+ * throw new APIError({
50
+ * message: 'Subject not found',
51
+ * status: 'NOT_FOUND'
52
+ * });
53
+ * }
54
+ *
55
+ * // Add subject to context
56
+ * return {
57
+ * context: {
58
+ * subject
59
+ * }
60
+ * };
61
+ * });
62
+ *
63
+ * // Apply the middleware to specific routes in router configuration
64
+ * router.use('/subjects/**', verifySubjectMiddleware);
65
+ * ```
66
+ */
67
+ export declare const createAuthMiddleware: {
68
+ <Options extends import("better-call").MiddlewareOptions, R>(options: Options, handler: (ctx: import("better-call").MiddlewareContext<Options, {
69
+ returned?: unknown;
70
+ responseHeaders?: Headers;
71
+ } & import("../types").BaseC15TContext & Record<string, unknown>>) => Promise<R>): (inputContext: import("better-call").MiddlewareInputContext<Options>) => Promise<R>;
72
+ <Options extends import("better-call").MiddlewareOptions, R_1>(handler: (ctx: import("better-call").MiddlewareContext<Options, {
73
+ returned?: unknown;
74
+ responseHeaders?: Headers;
75
+ } & import("../types").BaseC15TContext & Record<string, unknown>>) => Promise<R_1>): (inputContext: import("better-call").MiddlewareInputContext<Options>) => Promise<R_1>;
76
+ };
77
+ /**
78
+ * Creates an authentication endpoint with pre-configured context access
79
+ *
80
+ * This factory provides a standardized way to create endpoints with access
81
+ * to the C15T context.
82
+ *
83
+ * @returns A configured endpoint creator for authentication endpoints
84
+ * @throws May propagate errors from endpoint handler implementations
85
+ * @throws Any uncaught errors in the endpoint handler will be propagated through the system
86
+ *
87
+ * @remarks
88
+ * Endpoints created with this factory are automatically configured with
89
+ * the C15T context, making them ideal for building consent management APIs.
90
+ * These endpoints can be used in route configurations or with the toEndpoints
91
+ * function for automatic API generation.
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * // Create a consent status endpoint
96
+ * export const getConsentStatus = createAuthEndpoint(async (context) => {
97
+ * const { subjectId, domain } = context.params;
98
+ *
99
+ * // Get consent status from storage
100
+ * const status = await context.context.storage.getConsentStatus(subjectId, domain);
101
+ *
102
+ * return {
103
+ * subjectId,
104
+ * domain,
105
+ * hasConsented: status.consented,
106
+ * purposes: status.purposes,
107
+ * updatedAt: status.timestamp
108
+ * };
109
+ * });
110
+ *
111
+ * // Create a consent update endpoint with error handling
112
+ * export const updateConsent = createAuthEndpoint(async (context) => {
113
+ * const { subjectId, domain, purposes } = context.params;
114
+ *
115
+ * try {
116
+ * // Update consent status in storage
117
+ * await context.context.storage.updateConsentStatus(subjectId, domain, {
118
+ * consented: true,
119
+ * purposes,
120
+ * timestamp: new Date().toISOString()
121
+ * });
122
+ *
123
+ * return { success: true, subjectId, domain };
124
+ * } catch (error) {
125
+ * throw new APIError({
126
+ * message: 'Failed to update consent status',
127
+ * status: 'INTERNAL_SERVER_ERROR',
128
+ * cause: error
129
+ * });
130
+ * }
131
+ * });
132
+ * ```
133
+ */
134
+ export declare const createAuthEndpoint: <Path extends string, Opts extends import("better-call").EndpointOptions, R>(path: Path, options: Opts, handler: (ctx: import("better-call").EndpointContext<Path, Opts, import("../types").BaseC15TContext & Record<string, unknown>>) => Promise<R>) => {
135
+ <C extends import("better-call").HasRequiredKeys<import("better-call").InputContext<Path, Opts & {
136
+ use: any[];
137
+ }>> extends true ? [import("better-call").InputContext<Path, Opts & {
138
+ use: any[];
139
+ }>] : [(import("better-call").InputContext<Path, Opts & {
140
+ use: any[];
141
+ }> | undefined)?]>(...inputCtx: C): Promise<C extends [{
142
+ asResponse: true;
143
+ }] ? Response : C extends [{
144
+ returnHeaders: true;
145
+ }] ? {
146
+ headers: Headers;
147
+ response: R;
148
+ } : R>;
149
+ options: Opts & {
150
+ use: any[];
151
+ };
152
+ path: Path;
153
+ };
154
+ /**
155
+ * Type definition for a C15T endpoint handler
156
+ *
157
+ * Represents the function signature returned by createAuthEndpoint.
158
+ * Used for type checking when building API endpoints.
159
+ *
160
+ * @remarks
161
+ * This type is used extensively in the toEndpoints function and
162
+ * when defining route handlers for the consent management system.
163
+ */
164
+ export type C15TEndpoint = ReturnType<typeof createAuthEndpoint>;
165
+ /**
166
+ * Type definition for a C15T middleware handler
167
+ *
168
+ * Represents the function signature returned by createAuthMiddleware.
169
+ * Used for type checking when building middleware chains.
170
+ *
171
+ * @remarks
172
+ * This type is used when defining hooks and custom middleware
173
+ * for the consent management system pipeline.
174
+ */
175
+ export type C15TMiddleware = ReturnType<typeof createAuthMiddleware>;
176
+ //# sourceMappingURL=call.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call.d.ts","sourceRoot":"","sources":["../../src/api/call.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,iBAAiB,0JAQ5B,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAyCG;AACH,eAAO,MAAM,oBAAoB;;mBASlB,OAAO;0BACA,OAAO;;;mBADd,OAAO;0BACA,OAAO;;CAI3B,CAAC;AAEH;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwDG;AACH,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;CAE7B,CAAC;AAEH;;;;;;;;;GASG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEjE;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,oBAAoB,CAAC,CAAC"}