@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,201 @@
1
+ /**
2
+ * Standardized error codes for the c15t consent management system.
3
+ *
4
+ * These error codes are used throughout the application to provide consistent
5
+ * error messages and enable proper error handling in client applications.
6
+ * Each error code represents a specific type of error that can occur during
7
+ * consent management operations.
8
+ *
9
+ * @example
10
+ * ```typescript
11
+ * import { BASE_ERROR_CODES, C15TError } from '@c15t/error';
12
+ *
13
+ * // Handle a specific error
14
+ * try {
15
+ * await consentManager.updateConsent(consentId, preferences);
16
+ * } catch (error) {
17
+ * if (error instanceof C15TError && error.code === BASE_ERROR_CODES.CONSENT_NOT_FOUND) {
18
+ * // Handle the specific case where consent is not found
19
+ * console.error('Cannot update: consent record does not exist');
20
+ * } else {
21
+ * // Handle other errors
22
+ * console.error('Failed to update consent:', error.message);
23
+ * }
24
+ * }
25
+ * ```
26
+ */
27
+ export const BASE_ERROR_CODES = {
28
+ /**
29
+ * The requested resource could not be found.
30
+ * This is a general error for when a requested entity does not exist.
31
+ */
32
+ NOT_FOUND: 'Resource not found',
33
+
34
+ /**
35
+ * The request is invalid or malformed.
36
+ * This is a general error for requests that do not meet the expected format.
37
+ */
38
+ BAD_REQUEST: 'Bad request',
39
+
40
+ /**
41
+ * The request conflicts with the current state of the server.
42
+ * This may occur when trying to create a resource that already exists or
43
+ * when attempting to modify a resource in a way that conflicts with its current state.
44
+ */
45
+ CONFLICT: 'Conflict with current state',
46
+
47
+ /**
48
+ * The requested consent record could not be found.
49
+ * This may occur when attempting to retrieve, update, or delete a non-existent consent record.
50
+ */
51
+ CONSENT_NOT_FOUND: 'Consent not found',
52
+
53
+ /**
54
+ * The consent record has expired and is no longer valid.
55
+ * This may occur when attempting to use a consent record after its expiration date.
56
+ */
57
+ CONSENT_EXPIRED: 'Consent has expired',
58
+
59
+ /**
60
+ * An error occurred while attempting to create a new consent record.
61
+ * This may be due to validation errors, storage issues, or other internal errors.
62
+ */
63
+ FAILED_TO_CREATE_CONSENT: 'Failed to create consent',
64
+
65
+ /**
66
+ * An error occurred while attempting to update an existing consent record.
67
+ * This may be due to validation errors, storage issues, or concurrent modifications.
68
+ */
69
+ FAILED_TO_UPDATE_CONSENT: 'Failed to update consent',
70
+
71
+ /**
72
+ * An error occurred while attempting to retrieve a consent record.
73
+ * This may be due to storage issues, permissions, or other internal errors.
74
+ */
75
+ FAILED_TO_GET_CONSENT: 'Failed to get consent',
76
+
77
+ /**
78
+ * An error occurred while attempting to create a new consent consentPurpose.
79
+ * This may be due to validation errors, duplicate consentPurpose IDs, or other internal errors.
80
+ */
81
+ FAILED_TO_CREATE_PURPOSE: 'Failed to create consentPurpose',
82
+
83
+ /**
84
+ * The requested consent consentPurpose could not be found.
85
+ * This may occur when attempting to retrieve, update, or delete a non-existent consentPurpose.
86
+ */
87
+ PURPOSE_NOT_FOUND: 'Consent Purpose not found',
88
+
89
+ /**
90
+ * The provided configuration is invalid or contains errors.
91
+ * This may occur when initializing the system with incorrect settings.
92
+ */
93
+ INVALID_CONFIGURATION: 'Invalid configuration',
94
+
95
+ /**
96
+ * A required parameter is missing from the request.
97
+ * This may occur when API calls are made without all necessary data.
98
+ */
99
+ MISSING_REQUIRED_PARAMETER: 'Missing required parameter',
100
+
101
+ /**
102
+ * The request requires authentication that was not provided or is invalid.
103
+ * This may occur when attempting to access protected resources without proper credentials.
104
+ */
105
+ UNAUTHORIZED: 'Unauthorized',
106
+
107
+ /**
108
+ * The requester does not have permission to perform the requested operation.
109
+ * This may occur when authenticated subjects attempt operations beyond their permission level.
110
+ */
111
+ FORBIDDEN: 'Forbidden',
112
+
113
+ /**
114
+ * An unexpected internal error occurred on the server.
115
+ * This is a general error for unexpected exceptions during request processing.
116
+ */
117
+ INTERNAL_SERVER_ERROR: 'Internal server error',
118
+
119
+ /**
120
+ * Initialization of the system failed.
121
+ * This may occur when the system cannot be initialized due to configuration
122
+ * errors, missing dependencies, or other setup issues.
123
+ */
124
+ INITIALIZATION_FAILED: 'Initialization failed',
125
+
126
+ /**
127
+ * Plugin initialization failed.
128
+ * This may occur when a plugin cannot be initialized due to configuration
129
+ * errors, missing dependencies, or other setup issues.
130
+ */
131
+ PLUGIN_INITIALIZATION_FAILED: 'Plugin initialization failed',
132
+
133
+ /**
134
+ * Database connection error.
135
+ * This may occur when the system cannot connect to the database due to
136
+ * connection issues, authentication failures, or other database-related problems.
137
+ */
138
+ DATABASE_CONNECTION_ERROR: 'Database connection error',
139
+
140
+ /**
141
+ * Database query error.
142
+ * This may occur when a database query fails due to syntax errors,
143
+ * constraint violations, or other database-related issues.
144
+ */
145
+ DATABASE_QUERY_ERROR: 'Database query error',
146
+
147
+ /**
148
+ * An error occurred while attempting to handle a request.
149
+ * This may occur when a request cannot be processed due to invalid input,
150
+ * internal errors, or other issues.
151
+ */
152
+ REQUEST_HANDLER_ERROR: 'Request handler error',
153
+
154
+ /**
155
+ * Error retrieving API endpoints.
156
+ * This may occur when the system cannot retrieve API endpoints due to
157
+ * configuration errors or other internal issues.
158
+ */
159
+ API_RETRIEVAL_ERROR: 'API retrieval error',
160
+
161
+ /**
162
+ * The request is invalid or malformed.
163
+ * This is a specific error for requests that do not meet the expected format.
164
+ */
165
+ INVALID_REQUEST: 'Invalid request',
166
+
167
+ /**
168
+ * Unknown or unclassified error.
169
+ * Used when an error occurs that doesn't match any other error code.
170
+ */
171
+ UNKNOWN_ERROR: 'Unknown error',
172
+ } as const;
173
+
174
+ /**
175
+ * Error categories for organizing errors by domain
176
+ */
177
+ export const ERROR_CATEGORIES = {
178
+ VALIDATION: 'validation',
179
+ AUTHORIZATION: 'authorization',
180
+ STORAGE: 'storage',
181
+ NETWORK: 'network',
182
+ PLUGIN: 'plugin',
183
+ CONFIGURATION: 'configuration',
184
+ UNEXPECTED: 'unexpected',
185
+ } as const;
186
+
187
+ /**
188
+ * Type for error categories
189
+ */
190
+ export type ErrorCategory =
191
+ (typeof ERROR_CATEGORIES)[keyof typeof ERROR_CATEGORIES];
192
+
193
+ /**
194
+ * Type containing all possible error codes from the BASE_ERROR_CODES object
195
+ */
196
+ export type ErrorCode = keyof typeof BASE_ERROR_CODES;
197
+
198
+ /**
199
+ * Type for the error message values in BASE_ERROR_CODES
200
+ */
201
+ export type ErrorMessage = (typeof BASE_ERROR_CODES)[ErrorCode];
@@ -0,0 +1,145 @@
1
+ import {
2
+ BASE_ERROR_CODES,
3
+ type ErrorCategory,
4
+ type ErrorMessage,
5
+ } from './codes';
6
+
7
+ /**
8
+ * Custom error class for c15t consent management errors.
9
+ *
10
+ * This class extends the standard Error object with additional properties
11
+ * specific to the c15t consent management system, such as error codes,
12
+ * status codes, and contextual data.
13
+ *
14
+ * @example
15
+ * ```typescript
16
+ * // Create and throw a c15t error
17
+ * throw new C15TError('Failed to update subject preferences', {
18
+ * code: BASE_ERROR_CODES.FAILED_TO_UPDATE_CONSENT,
19
+ * status: 400,
20
+ * data: { subjectId: 'sub_x1pftyoufsm7xgo1kv', preferences: { analytics: true } }
21
+ * });
22
+ *
23
+ * // Create an error from an HTTP response
24
+ * const error = C15TError.fromResponse(response, await response.json());
25
+ * ```
26
+ */
27
+ export class C15TError extends Error {
28
+ /**
29
+ * The error code identifying the type of error
30
+ */
31
+ code?: ErrorMessage;
32
+
33
+ /**
34
+ * HTTP status code associated with this error
35
+ */
36
+ status?: number;
37
+
38
+ /**
39
+ * Additional data providing context about the error
40
+ */
41
+ data?: Record<string, unknown>;
42
+
43
+ /**
44
+ * Category of the error for better organization
45
+ */
46
+ category?: ErrorCategory;
47
+
48
+ /**
49
+ * Creates a new C15TError instance.
50
+ *
51
+ * @param message - Human-readable error message
52
+ * @param options - Additional error options including code, status, and data
53
+ */
54
+ constructor(
55
+ message: string,
56
+ options?: {
57
+ /**
58
+ * The error code identifying the type of error
59
+ */
60
+ code?: ErrorMessage;
61
+
62
+ /**
63
+ * HTTP status code associated with this error
64
+ */
65
+ status?: number;
66
+
67
+ /**
68
+ * Additional data providing context about the error
69
+ */
70
+ data?: Record<string, unknown>;
71
+
72
+ /**
73
+ * Category of the error for better organization
74
+ */
75
+ category?: ErrorCategory;
76
+ }
77
+ ) {
78
+ super(message);
79
+ this.name = 'C15TError';
80
+
81
+ if (options) {
82
+ this.code = options.code;
83
+ this.status = options.status;
84
+ this.data = options.data;
85
+ this.category = options.category;
86
+ }
87
+
88
+ // Ensure prototype chain works correctly
89
+ Object.setPrototypeOf(this, C15TError.prototype);
90
+ }
91
+
92
+ /**
93
+ * Creates a C15TError from an HTTP response and optional response data.
94
+ *
95
+ * @param response - The HTTP Response object
96
+ * @param data - Optional parsed response data
97
+ * @returns A new C15TError instance with appropriate properties
98
+ */
99
+ static fromResponse(response: Response, data?: unknown): C15TError {
100
+ // Extract error message from response or data
101
+ let message = `HTTP error ${response.status}`;
102
+ let code: ErrorMessage | undefined;
103
+ let errorData: Record<string, unknown> | undefined;
104
+
105
+ // Try to extract more specific error details from the response data
106
+ if (data && typeof data === 'object' && data !== null) {
107
+ const errorObj = data as Record<string, unknown>;
108
+
109
+ if (typeof errorObj.message === 'string') {
110
+ message = errorObj.message;
111
+ }
112
+
113
+ if (typeof errorObj.code === 'string') {
114
+ // Check if the code matches one of our known error codes
115
+ const isKnownCode = Object.values(BASE_ERROR_CODES).includes(
116
+ errorObj.code as ErrorMessage
117
+ );
118
+ if (isKnownCode) {
119
+ code = errorObj.code as ErrorMessage;
120
+ }
121
+ }
122
+
123
+ // Include any additional error data
124
+ if (typeof errorObj.data === 'object' && errorObj.data !== null) {
125
+ errorData = errorObj.data as Record<string, unknown>;
126
+ }
127
+ }
128
+
129
+ return new C15TError(message, {
130
+ code,
131
+ status: response.status,
132
+ data: errorData,
133
+ });
134
+ }
135
+
136
+ /**
137
+ * Determines if an unknown error is a C15TError.
138
+ *
139
+ * @param error - The error to check
140
+ * @returns True if the error is a C15TError instance
141
+ */
142
+ static isC15TError(error: unknown): error is C15TError {
143
+ return error instanceof C15TError;
144
+ }
145
+ }
@@ -0,0 +1,23 @@
1
+ export { BASE_ERROR_CODES } from './codes';
2
+ export type { ErrorCategory, ErrorCode, ErrorMessage } from './codes';
3
+ export { C15TError } from './error';
4
+ export {
5
+ fail,
6
+ failAsync,
7
+ safeResult,
8
+ safeResultAsync,
9
+ } from './results';
10
+ export {
11
+ recoverFromCodes,
12
+ recoverFromCategory,
13
+ } from './recovery';
14
+ export {
15
+ logError,
16
+ logErrorAsync,
17
+ } from './logging';
18
+ export {
19
+ validationPipeline,
20
+ retrievalPipeline,
21
+ } from './pipeline';
22
+
23
+ export { fromPromise, okAsync, ok, Result } from 'neverthrow';
@@ -0,0 +1,52 @@
1
+ import type { Result, ResultAsync } from 'neverthrow';
2
+ import type { C15TError } from './error';
3
+
4
+ /**
5
+ * Logs any errors in a Result without changing the Result
6
+ *
7
+ * @param result - The Result that may contain an error
8
+ * @param logger - Logger instance
9
+ * @param message - Optional message prefix
10
+ * @returns The original Result unchanged
11
+ */
12
+ export const logError = <T>(
13
+ result: Result<T, C15TError>,
14
+ logger: { error: (message: string, ...args: unknown[]) => void },
15
+ message = 'Error occurred:'
16
+ ): Result<T, C15TError> => {
17
+ return result.mapErr((error) => {
18
+ logger.error(`${message} ${error.message}`, {
19
+ code: error.code,
20
+ status: error.status,
21
+ data: error.data,
22
+ category: error.category,
23
+ stack: error.stack,
24
+ });
25
+ return error;
26
+ });
27
+ };
28
+
29
+ /**
30
+ * Logs any errors in a ResultAsync without changing the ResultAsync
31
+ *
32
+ * @param resultAsync - The ResultAsync that may contain an error
33
+ * @param logger - Logger instance
34
+ * @param message - Optional message prefix
35
+ * @returns The original ResultAsync unchanged
36
+ */
37
+ export const logErrorAsync = <T>(
38
+ resultAsync: ResultAsync<T, C15TError>,
39
+ logger: { error: (message: string, ...args: unknown[]) => void },
40
+ message = 'Error occurred:'
41
+ ): ResultAsync<T, C15TError> => {
42
+ return resultAsync.mapErr((error) => {
43
+ logger.error(`${message} ${error.message}`, {
44
+ code: error.code,
45
+ status: error.status,
46
+ data: error.data,
47
+ category: error.category,
48
+ stack: error.stack,
49
+ });
50
+ return error;
51
+ });
52
+ };
@@ -0,0 +1,57 @@
1
+ import type { Result, ResultAsync } from 'neverthrow';
2
+ import { BASE_ERROR_CODES } from './codes';
3
+ import type { C15TError } from './error';
4
+ import { safeResult, safeResultAsync } from './results';
5
+
6
+ /**
7
+ * Creates a standard validation pipeline
8
+ *
9
+ * @param validator - Function that validates input
10
+ * @param processor - Function that processes validated input
11
+ * @returns A function that validates and processes input in a Result chain
12
+ */
13
+ export const validationPipeline = <Input, Output>(
14
+ validator: (input: Input) => boolean | string,
15
+ processor: (input: Input) => Output
16
+ ): ((input: Input) => Result<Output, C15TError>) => {
17
+ return (input: Input) => {
18
+ const validationResult = safeResult(() => {
19
+ const validationOutcome = validator(input);
20
+ if (validationOutcome === false) {
21
+ throw new Error('Validation failed');
22
+ }
23
+ if (typeof validationOutcome === 'string') {
24
+ throw new Error(validationOutcome);
25
+ }
26
+ return input;
27
+ }, BASE_ERROR_CODES.INVALID_REQUEST);
28
+
29
+ return validationResult.andThen((validInput) =>
30
+ safeResult(() => processor(validInput))
31
+ );
32
+ };
33
+ };
34
+
35
+ /**
36
+ * Creates a standard async data retrieval pipeline
37
+ *
38
+ * @param fetcher - Function that fetches data
39
+ * @param transformer - Function that transforms fetched data
40
+ * @returns A function that fetches and transforms data in a ResultAsync chain
41
+ */
42
+ export const retrievalPipeline = <RawData, TransformedData>(
43
+ fetcher: () => Promise<RawData>,
44
+ transformer: (data: RawData) => TransformedData
45
+ ): (() => ResultAsync<TransformedData, C15TError>) => {
46
+ return () => {
47
+ return safeResultAsync(
48
+ fetcher(),
49
+ BASE_ERROR_CODES.FAILED_TO_GET_CONSENT
50
+ ).andThen((data) =>
51
+ safeResult(
52
+ () => transformer(data),
53
+ BASE_ERROR_CODES.INVALID_CONFIGURATION
54
+ )
55
+ );
56
+ };
57
+ };
@@ -0,0 +1,45 @@
1
+ import { type Result, err, ok } from 'neverthrow';
2
+ import type { ErrorCategory, ErrorMessage } from './codes';
3
+ import type { C15TError } from './error';
4
+
5
+ /**
6
+ * Recovers from specific error codes by transforming to a default value
7
+ *
8
+ * @param result - The result that may contain an error
9
+ * @param errorCodes - Array of error codes to recover from
10
+ * @param defaultValue - Value to use if error matches specified codes
11
+ * @returns A new Result with the error recovered if it matches specified codes
12
+ */
13
+ export const recoverFromCodes = <T>(
14
+ result: Result<T, C15TError>,
15
+ errorCodes: ErrorMessage[],
16
+ defaultValue: T
17
+ ): Result<T, C15TError> => {
18
+ return result.orElse((error) => {
19
+ if (error.code && errorCodes.includes(error.code)) {
20
+ return ok(defaultValue);
21
+ }
22
+ return err(error);
23
+ });
24
+ };
25
+
26
+ /**
27
+ * Recovers from errors of a specific category
28
+ *
29
+ * @param result - The result that may contain an error
30
+ * @param category - Error category to recover from
31
+ * @param defaultValue - Value to use if error matches specified category
32
+ * @returns A new Result with the error recovered if it matches the category
33
+ */
34
+ export const recoverFromCategory = <T>(
35
+ result: Result<T, C15TError>,
36
+ category: ErrorCategory,
37
+ defaultValue: T
38
+ ): Result<T, C15TError> => {
39
+ return result.orElse((error) => {
40
+ if (error.category === category) {
41
+ return ok(defaultValue);
42
+ }
43
+ return err(error);
44
+ });
45
+ };
@@ -0,0 +1,100 @@
1
+ import { type Result, ResultAsync, err, ok as neverOk } from 'neverthrow';
2
+ import { BASE_ERROR_CODES, type ErrorMessage } from './codes';
3
+ import { C15TError } from './error';
4
+
5
+ /**
6
+ * Type for C15T results that can contain any error
7
+ */
8
+ export type C15TResult<T> = Result<T, C15TError>;
9
+
10
+ /**
11
+ * Type for C15T async results that can contain any error
12
+ */
13
+ export type C15TResultAsync<T> = ResultAsync<T, C15TError>;
14
+
15
+ /**
16
+ * Creates a successful result
17
+ */
18
+ export const ok = <T>(value: T): C15TResult<T> => neverOk(value);
19
+
20
+ /**
21
+ * Creates a standardized failure Result with a C15TError
22
+ *
23
+ * @param message - Error message
24
+ * @param options - Additional error options
25
+ * @returns A Result containing the error
26
+ */
27
+ export const fail = <T>(
28
+ message: string,
29
+ options?: {
30
+ code?: ErrorMessage;
31
+ status?: number;
32
+ data?: Record<string, unknown>;
33
+ }
34
+ ): Result<T, C15TError> => {
35
+ return err(new C15TError(message, options));
36
+ };
37
+
38
+ /**
39
+ * Creates a standardized failure ResultAsync with a C15TError
40
+ *
41
+ * @param message - Error message
42
+ * @param options - Additional error options
43
+ * @returns A ResultAsync containing the error
44
+ */
45
+ export const failAsync = <T>(
46
+ message: string,
47
+ options?: {
48
+ code?: ErrorMessage;
49
+ status?: number;
50
+ data?: Record<string, unknown>;
51
+ }
52
+ ): ResultAsync<T, C15TError> => {
53
+ return ResultAsync.fromSafePromise(
54
+ Promise.reject(new C15TError(message, options))
55
+ );
56
+ };
57
+
58
+ /**
59
+ * Wraps a potentially throwing function in a Result
60
+ *
61
+ * @param fn - Function that might throw
62
+ * @param errorCode - Optional error code to use if fn throws
63
+ * @returns A Result containing either the function result or a C15TError
64
+ */
65
+ export const safeResult = <T>(
66
+ fn: () => T,
67
+ errorCode: ErrorMessage = BASE_ERROR_CODES.UNKNOWN_ERROR
68
+ ): Result<T, C15TError> => {
69
+ try {
70
+ return ok(fn());
71
+ } catch (error) {
72
+ return err(
73
+ new C15TError(error instanceof Error ? error.message : String(error), {
74
+ code: errorCode,
75
+ data: { originalError: error },
76
+ })
77
+ );
78
+ }
79
+ };
80
+
81
+ /**
82
+ * Wraps a Promise in a ResultAsync
83
+ *
84
+ * @param promise - Promise that might reject
85
+ * @param errorCode - Optional error code to use if promise rejects
86
+ * @returns A ResultAsync containing either the promise result or a C15TError
87
+ */
88
+ export const safeResultAsync = <T>(
89
+ promise: Promise<T>,
90
+ errorCode: ErrorMessage = BASE_ERROR_CODES.UNKNOWN_ERROR
91
+ ): ResultAsync<T, C15TError> => {
92
+ return ResultAsync.fromPromise(
93
+ promise,
94
+ (error): C15TError =>
95
+ new C15TError(error instanceof Error ? error.message : String(error), {
96
+ code: errorCode,
97
+ data: { originalError: error },
98
+ })
99
+ );
100
+ };
package/src/index.ts ADDED
@@ -0,0 +1,79 @@
1
+ /**
2
+ * c15t Consent Management System
3
+ *
4
+ * This is the main entry point for the c15t library, exporting all public APIs,
5
+ * components, and types needed to implement consent management in your application.
6
+ */
7
+
8
+ //------------------------------------------------------------------------------
9
+ // Core API
10
+ //------------------------------------------------------------------------------
11
+
12
+ /**
13
+ * Core factory function and types for creating c15t instances
14
+ */
15
+ export * from './core';
16
+
17
+ /**
18
+ * Error codes used throughout the system for consistent error handling
19
+ */
20
+ export * from './error/codes';
21
+
22
+ //------------------------------------------------------------------------------
23
+ // Utilities and Helpers
24
+ //------------------------------------------------------------------------------
25
+
26
+ /**
27
+ * General utility functions used throughout the library
28
+ */
29
+ export * from './utils';
30
+
31
+ //------------------------------------------------------------------------------
32
+ // Client
33
+ //------------------------------------------------------------------------------
34
+
35
+ /**
36
+ * Client-side integration for implementing consent in browsers
37
+ */
38
+ export * from './client';
39
+
40
+ /**
41
+ * All client-related types bundled under a namespace to avoid conflicts
42
+ */
43
+ export * as ClientTypes from './client/types';
44
+
45
+ /**
46
+ * Selected client types needed for common use cases
47
+ */
48
+ export type {
49
+ c15tClientOptions,
50
+ FetchOptions,
51
+ ResponseContext,
52
+ } from './client/types';
53
+
54
+ //------------------------------------------------------------------------------
55
+ // Plugins
56
+ //------------------------------------------------------------------------------
57
+
58
+ /**
59
+ * Geo plugin for jurisdiction-based consent management
60
+ */
61
+ export * from './plugins/geo';
62
+
63
+ //------------------------------------------------------------------------------
64
+ // Types
65
+ //------------------------------------------------------------------------------
66
+
67
+ /**
68
+ * All system types bundled under a namespace to avoid conflicts
69
+ */
70
+ export * as Types from './types';
71
+
72
+ /**
73
+ * Plugin type extension point for type augmentation
74
+ */
75
+ declare module './types/plugins' {
76
+ interface PluginTypes {
77
+ // Plugin type interfaces will be added here
78
+ }
79
+ }