@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,177 @@
1
+ import { createEndpoint, createMiddleware } from 'better-call';
2
+ import type { C15TContext } from '~/types';
3
+
4
+ /**
5
+ * Middleware that provides access to the C15T context
6
+ *
7
+ * This middleware is used as a base for all endpoint handlers to provide
8
+ * access to the C15T context.
9
+ *
10
+ * @returns A Promise resolving to the C15T context
11
+ * @internal This is primarily meant for internal use by the C15T system
12
+ *
13
+ * @remarks
14
+ * This middleware serves as the foundation for context propagation throughout
15
+ * the consent management system. It's typically not used directly but is
16
+ * composed within other middleware and endpoint factories.
17
+ *
18
+ * @example
19
+ * ```typescript
20
+ * // This middleware is typically used internally by createAuthMiddleware and createAuthEndpoint
21
+ * const myMiddleware = createMiddleware.create({
22
+ * use: [optionsMiddleware]
23
+ * });
24
+ * ```
25
+ */
26
+ export const optionsMiddleware = createMiddleware(async () => {
27
+ /**
28
+ * This will be passed on the instance of
29
+ * the context. Used to infer the type
30
+ * here.
31
+ * @internal
32
+ */
33
+ return {} as C15TContext;
34
+ });
35
+
36
+ /**
37
+ * Creates an authentication middleware with pre-configured context access
38
+ *
39
+ * This factory combines the options middleware with post-hook functionality,
40
+ * allowing handlers to modify responses by setting headers.
41
+ *
42
+ * @returns A configured middleware for authentication endpoints
43
+ * @throws May propagate errors from underlying middleware implementations
44
+ * @throws Errors from your middleware handler will be propagated unless explicitly caught
45
+ *
46
+ * @remarks
47
+ * The middleware created by this factory automatically receives the C15T context
48
+ * and manages response header manipulation. It's particularly useful for
49
+ * authentication, authorization, and other cross-cutting concerns.
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * // Create a custom authentication middleware
54
+ * const verifySubjectMiddleware = createAuthMiddleware(async (context) => {
55
+ * const { subjectId } = context.params;
56
+ *
57
+ * // Verify the subject exists
58
+ * const subject = await getSubjectById(subjectId);
59
+ * if (!subject) {
60
+ * throw new APIError({
61
+ * message: 'Subject not found',
62
+ * status: 'NOT_FOUND'
63
+ * });
64
+ * }
65
+ *
66
+ * // Add subject to context
67
+ * return {
68
+ * context: {
69
+ * subject
70
+ * }
71
+ * };
72
+ * });
73
+ *
74
+ * // Apply the middleware to specific routes in router configuration
75
+ * router.use('/subjects/**', verifySubjectMiddleware);
76
+ * ```
77
+ */
78
+ export const createAuthMiddleware = createMiddleware.create({
79
+ use: [
80
+ optionsMiddleware,
81
+ /**
82
+ * Only use for post hooks
83
+ * @internal
84
+ */
85
+ createMiddleware(async () => {
86
+ return {} as {
87
+ returned?: unknown;
88
+ responseHeaders?: Headers;
89
+ };
90
+ }),
91
+ ],
92
+ });
93
+
94
+ /**
95
+ * Creates an authentication endpoint with pre-configured context access
96
+ *
97
+ * This factory provides a standardized way to create endpoints with access
98
+ * to the C15T context.
99
+ *
100
+ * @returns A configured endpoint creator for authentication endpoints
101
+ * @throws May propagate errors from endpoint handler implementations
102
+ * @throws Any uncaught errors in the endpoint handler will be propagated through the system
103
+ *
104
+ * @remarks
105
+ * Endpoints created with this factory are automatically configured with
106
+ * the C15T context, making them ideal for building consent management APIs.
107
+ * These endpoints can be used in route configurations or with the toEndpoints
108
+ * function for automatic API generation.
109
+ *
110
+ * @example
111
+ * ```typescript
112
+ * // Create a consent status endpoint
113
+ * export const getConsentStatus = createAuthEndpoint(async (context) => {
114
+ * const { subjectId, domain } = context.params;
115
+ *
116
+ * // Get consent status from storage
117
+ * const status = await context.context.storage.getConsentStatus(subjectId, domain);
118
+ *
119
+ * return {
120
+ * subjectId,
121
+ * domain,
122
+ * hasConsented: status.consented,
123
+ * purposes: status.purposes,
124
+ * updatedAt: status.timestamp
125
+ * };
126
+ * });
127
+ *
128
+ * // Create a consent update endpoint with error handling
129
+ * export const updateConsent = createAuthEndpoint(async (context) => {
130
+ * const { subjectId, domain, purposes } = context.params;
131
+ *
132
+ * try {
133
+ * // Update consent status in storage
134
+ * await context.context.storage.updateConsentStatus(subjectId, domain, {
135
+ * consented: true,
136
+ * purposes,
137
+ * timestamp: new Date().toISOString()
138
+ * });
139
+ *
140
+ * return { success: true, subjectId, domain };
141
+ * } catch (error) {
142
+ * throw new APIError({
143
+ * message: 'Failed to update consent status',
144
+ * status: 'INTERNAL_SERVER_ERROR',
145
+ * cause: error
146
+ * });
147
+ * }
148
+ * });
149
+ * ```
150
+ */
151
+ export const createAuthEndpoint = createEndpoint.create({
152
+ use: [optionsMiddleware],
153
+ });
154
+
155
+ /**
156
+ * Type definition for a C15T endpoint handler
157
+ *
158
+ * Represents the function signature returned by createAuthEndpoint.
159
+ * Used for type checking when building API endpoints.
160
+ *
161
+ * @remarks
162
+ * This type is used extensively in the toEndpoints function and
163
+ * when defining route handlers for the consent management system.
164
+ */
165
+ export type C15TEndpoint = ReturnType<typeof createAuthEndpoint>;
166
+
167
+ /**
168
+ * Type definition for a C15T middleware handler
169
+ *
170
+ * Represents the function signature returned by createAuthMiddleware.
171
+ * Used for type checking when building middleware chains.
172
+ *
173
+ * @remarks
174
+ * This type is used when defining hooks and custom middleware
175
+ * for the consent management system pipeline.
176
+ */
177
+ export type C15TMiddleware = ReturnType<typeof createAuthMiddleware>;
@@ -0,0 +1,303 @@
1
+ import {
2
+ APIError,
3
+ type Endpoint,
4
+ type Middleware,
5
+ type UnionToIntersection,
6
+ createRouter,
7
+ } from 'better-call';
8
+ import type { C15TContext, C15TOptions, C15TPlugin } from '~/types';
9
+ import { getIp } from '~/utils/ip';
10
+
11
+ import { logger } from '~/utils/logger';
12
+ import { originCheckMiddleware } from './middlewares/origin-check';
13
+ import { validateContextMiddleware } from './middlewares/validate-context';
14
+ import { baseEndpoints } from './routes';
15
+ import { ok } from './routes/ok';
16
+ import { toEndpoints } from './to-endpoints';
17
+
18
+ /**
19
+ * Retrieves and configures endpoints from plugins and core functionality
20
+ *
21
+ * This function collects endpoints from plugins, combines them with
22
+ * base endpoints, and builds an API object with properly configured
23
+ * handlers.
24
+ *
25
+ * @remarks
26
+ * Plugin endpoints are merged with core endpoints, with core endpoints
27
+ * taking precedence in case of naming conflicts.
28
+ *
29
+ * @typeParam ContextType - The specific context type extending C15TContext
30
+ * @typeParam OptionsType - Configuration options type extending C15TOptions
31
+ * @param ctx - The consent management context (or promise resolving to it)
32
+ * @param options - Configuration options for the consent system
33
+ * @returns Object containing API handlers and middleware configurations
34
+ *
35
+ * @example
36
+ * ```typescript
37
+ * const { api, middlewares } = getEndpoints(contextInstance, {
38
+ * plugins: [analyticsPlugin(), geoPlugin()]
39
+ * });
40
+ *
41
+ * // Use the configured API
42
+ * const response = await api.getConsentStatus({
43
+ * params: { subjectId: "sub_x1pftyoufsm7xgo1kv" }
44
+ * });
45
+ * ```
46
+ */
47
+ export function getEndpoints<
48
+ ContextType extends C15TContext,
49
+ OptionsType extends C15TOptions,
50
+ >(ctx: Promise<ContextType> | ContextType, options: OptionsType) {
51
+ const pluginEndpoints = options.plugins?.reduce<Record<string, Endpoint>>(
52
+ (acc, plugin) => {
53
+ if (plugin.endpoints) {
54
+ Object.assign(acc, plugin.endpoints);
55
+ }
56
+ return acc;
57
+ },
58
+ {}
59
+ );
60
+
61
+ /**
62
+ * Type representing the intersection of all plugin endpoint types
63
+ *
64
+ * @internal
65
+ */
66
+ type PluginEndpoint = UnionToIntersection<
67
+ OptionsType['plugins'] extends Array<infer PluginType>
68
+ ? PluginType extends C15TPlugin
69
+ ? PluginType extends {
70
+ endpoints: infer EndpointType;
71
+ }
72
+ ? EndpointType
73
+ : Record<string, never>
74
+ : Record<string, never>
75
+ : Record<string, never>
76
+ >;
77
+
78
+ const middlewares =
79
+ options.plugins
80
+ ?.map((plugin) =>
81
+ plugin.middlewares?.map((m) => {
82
+ const middleware = (async (context: { context: ContextType }) => {
83
+ return m.middleware({
84
+ ...context,
85
+ context: {
86
+ ...ctx,
87
+ ...context.context,
88
+ },
89
+ });
90
+ }) as Middleware;
91
+ middleware.options = m.middleware.options;
92
+ return {
93
+ path: m.path,
94
+ middleware,
95
+ };
96
+ })
97
+ )
98
+ .filter(
99
+ (plugin): plugin is NonNullable<typeof plugin> => plugin !== undefined
100
+ )
101
+ .flat() || [];
102
+
103
+ const endpoints = {
104
+ ...baseEndpoints,
105
+ ...pluginEndpoints,
106
+ ok,
107
+ // error,
108
+ };
109
+ const api = toEndpoints(endpoints, ctx);
110
+ return {
111
+ api: api as typeof endpoints & PluginEndpoint,
112
+ middlewares,
113
+ };
114
+ }
115
+
116
+ /**
117
+ * Creates a router for handling API requests
118
+ *
119
+ * Sets up routing with proper error handling, CORS, and response processing.
120
+ * Integrates plugin-provided middlewares and response handlers.
121
+ *
122
+ * @remarks
123
+ * This router automatically applies the origin check middleware to all routes
124
+ * and handles error conditions appropriately based on configuration.
125
+ *
126
+ * @typeParam ContextType - The specific context type extending C15TContext
127
+ * @typeParam OptionsType - Configuration options type extending C15TOptions
128
+ * @param ctx - The initialized consent management context
129
+ * @param options - Configuration options for the consent system
130
+ * @returns A configured router with handler and endpoint functions
131
+ * @throws May throw errors in the onError handler if options.onAPIError.throw is true
132
+ *
133
+ * @example
134
+ * ```typescript
135
+ * const consentRouter = router(contextInstance, {
136
+ * logger: { level: 'error' },
137
+ * plugins: [analyticsPlugin()]
138
+ * });
139
+ *
140
+ * // Use the router to handle incoming requests
141
+ * app.use('/api/consent', async (req, res) => {
142
+ * const response = await consentRouter.handler(
143
+ * new Request(`https://example.com${req.url}`, {
144
+ * method: req.method,
145
+ * headers: req.headers,
146
+ * body: req.body ? JSON.stringify(req.body) : undefined
147
+ * })
148
+ * );
149
+ *
150
+ * // Send the response back
151
+ * res.status(response.status);
152
+ * response.headers.forEach((value, key) => {
153
+ * res.setHeader(key, value);
154
+ * });
155
+ * const body = await response.text();
156
+ * res.send(body);
157
+ * });
158
+ * ```
159
+ */
160
+ export const router = <
161
+ ContextType extends C15TContext,
162
+ OptionsType extends C15TOptions,
163
+ >(
164
+ ctx: ContextType,
165
+ options: OptionsType
166
+ ) => {
167
+ const { api, middlewares } = getEndpoints(ctx, options);
168
+
169
+ // Check for baseURL and properly handle it
170
+ let basePath = '';
171
+ try {
172
+ if (ctx.baseURL) {
173
+ const url = new URL(ctx.baseURL);
174
+ basePath = url.pathname;
175
+ }
176
+ } catch {
177
+ basePath = '/api/c15t';
178
+ }
179
+ // Ensure we have a valid basePath
180
+ if (!basePath || basePath === '/') {
181
+ basePath = '/api/c15t';
182
+ }
183
+
184
+ /**
185
+ * Configure and create the router instance
186
+ *
187
+ * @internal
188
+ */
189
+ const routerInstance = createRouter(api, {
190
+ routerContext: ctx,
191
+ openapi: {
192
+ disabled: false,
193
+ },
194
+ basePath,
195
+ routerMiddleware: [
196
+ {
197
+ path: '/**',
198
+ middleware: validateContextMiddleware,
199
+ },
200
+ {
201
+ path: '/**',
202
+ middleware: originCheckMiddleware,
203
+ },
204
+ ...middlewares,
205
+ ],
206
+ async onRequest(req) {
207
+ // Add IP address to context
208
+ (ctx as C15TContext).ipAddress = getIp(req, options);
209
+ (ctx as C15TContext).userAgent = req.headers.get('user-agent');
210
+
211
+ for (const plugin of ctx.options.plugins || []) {
212
+ if (plugin.onRequest) {
213
+ const response = await plugin.onRequest(req, ctx);
214
+ if (response && 'response' in response) {
215
+ return response.response;
216
+ }
217
+ }
218
+ }
219
+ return req;
220
+ },
221
+
222
+ /**
223
+ * Handle response processing through plugins
224
+ *
225
+ * @internal
226
+ * @param res - The response to process
227
+ * @returns The processed response
228
+ */
229
+ async onResponse(res) {
230
+ for (const plugin of ctx.options.plugins || []) {
231
+ if (plugin.onResponse) {
232
+ const response = await plugin.onResponse(res, ctx);
233
+ if (response) {
234
+ return response.response;
235
+ }
236
+ }
237
+ }
238
+ return res;
239
+ },
240
+
241
+ /**
242
+ * Handle errors that occur during request processing
243
+ *
244
+ * @internal
245
+ * @param e - The error that occurred
246
+ */
247
+ onError(e) {
248
+ if (e instanceof APIError && e.status === 'FOUND') {
249
+ return;
250
+ }
251
+ if (options.onAPIError?.throw) {
252
+ throw e;
253
+ }
254
+ if (options.onAPIError?.onError) {
255
+ options.onAPIError.onError(e, ctx);
256
+ return;
257
+ }
258
+
259
+ const optLogLevel = options.logger?.level;
260
+ const log =
261
+ optLogLevel === 'error' ||
262
+ optLogLevel === 'warn' ||
263
+ optLogLevel === 'debug'
264
+ ? logger
265
+ : undefined;
266
+ if (options.logger?.disabled !== true) {
267
+ if (
268
+ e &&
269
+ typeof e === 'object' &&
270
+ 'message' in e &&
271
+ typeof e.message === 'string' &&
272
+ (e.message.includes('no column') ||
273
+ e.message.includes('column') ||
274
+ e.message.includes('relation') ||
275
+ e.message.includes('table') ||
276
+ e.message.includes('does not exist'))
277
+ ) {
278
+ ctx.logger?.error(e.message);
279
+ return;
280
+ }
281
+
282
+ if (e instanceof APIError) {
283
+ if (e.status === 'INTERNAL_SERVER_ERROR') {
284
+ ctx.logger.error(e.status, e);
285
+ }
286
+ log?.error(e.message);
287
+ } else {
288
+ ctx.logger?.error(
289
+ e && typeof e === 'object' && 'name' in e ? (e.name as string) : '',
290
+ e
291
+ );
292
+ }
293
+ }
294
+ },
295
+ });
296
+
297
+ return routerInstance;
298
+ };
299
+
300
+ // export * from './routes';
301
+ // export * from './middlewares';
302
+ export * from './call';
303
+ export { APIError } from 'better-call';
@@ -0,0 +1,38 @@
1
+ /**
2
+ * C15T Middleware Exports
3
+ *
4
+ * This barrel file exports all middlewares used by the C15T consent management system.
5
+ * Middlewares handle cross-cutting concerns like security, validation, and context
6
+ * enrichment for API endpoints.
7
+ *
8
+ * @module middlewares
9
+ *
10
+ * @remarks
11
+ * The middlewares in this directory implement various security and validation
12
+ * requirements for the consent management API. They can be applied globally to
13
+ * all routes or selectively to specific endpoint groups.
14
+ *
15
+ * Currently included middlewares:
16
+ * - Origin check middleware: Validates URLs against trusted origins to prevent CSRF
17
+ * and open redirect vulnerabilities
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * // Import all middlewares
22
+ * import { originCheckMiddleware, originCheck } from '~/api/middlewares';
23
+ *
24
+ * // Apply middleware to a router
25
+ * const router = createRouter(endpoints, {
26
+ * routerMiddleware: [
27
+ * {
28
+ * path: '/**',
29
+ * middleware: originCheckMiddleware
30
+ * }
31
+ * ]
32
+ * });
33
+ *
34
+ * // Create a targeted middleware for a specific field
35
+ * const validateReturnUrl = originCheck(ctx => ctx.body?.returnUrl);
36
+ * ```
37
+ */
38
+ export * from './origin-check';