@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,172 @@
1
+ import type { C15TMiddleware } from '../api/call';
2
+ /**
3
+ * c15t Consent Management System Configuration Types
4
+ *
5
+ * This module defines the configuration options for the c15t consent management system.
6
+ * It includes types for setting up storage, API endpoints, cookies, rate limiting,
7
+ * analytics, geo-targeting, plugins, logging, and other advanced features.
8
+ */
9
+ import type { Logger } from '../utils/logger';
10
+ import type { C15TContext, C15TPlugin } from './index';
11
+ import type { DatabaseConfiguration } from '../db/adapters/kysely-adapter/types';
12
+ import type { EntityName } from '../db/core/types';
13
+ import type { DatabaseHook } from '../db/hooks/types';
14
+ import type { TablesConfig } from '../db/schema/types';
15
+ /**
16
+ * Main configuration options for the c15t consent management system
17
+ *
18
+ * This interface provides a comprehensive set of options for configuring
19
+ * all aspects of the consent management system, including core functionality,
20
+ * database settings, UI components, and plugin extensions.
21
+ *
22
+ * @typeParam P - Array of plugin types to be used with this configuration
23
+ *
24
+ * @example
25
+ * ```ts
26
+ * // Basic configuration
27
+ * const config: C15TOptions = {
28
+ * appName: 'My Application',
29
+ * baseURL: 'https://example.com',
30
+ * secret: 'strong-secret-key',
31
+ * plugins: [geoPlugin, analyticsPlugin]
32
+ * };
33
+ * ```
34
+ */
35
+ export interface C15TOptions<P extends C15TPlugin[] = C15TPlugin[]> {
36
+ /**
37
+ * The base URL for the API (optional if running in a browser)
38
+ * @example "https://example.com"
39
+ */
40
+ baseURL?: string;
41
+ /**
42
+ * The base path for API endpoints
43
+ * @default "/api/c15t"
44
+ * @example "/api/c15t"
45
+ */
46
+ basePath?: string;
47
+ /**
48
+ * Application name shown in consent dialogs
49
+ * @example "My App"
50
+ */
51
+ appName?: string;
52
+ /**
53
+ * Secret used for signing cookies and tokens
54
+ * Should be a strong, unique string in production environments
55
+ */
56
+ secret?: string;
57
+ /**
58
+ * Database configuration
59
+ */
60
+ database?: DatabaseConfiguration;
61
+ /**
62
+ * Enable CORS support
63
+ * @default true
64
+ */
65
+ cors?: boolean;
66
+ /**
67
+ * Trusted origins for CORS
68
+ * Can be an array of origin strings or a function that returns origins based on the request
69
+ * @example ["https://example.com", "https://www.example.com"]
70
+ */
71
+ trustedOrigins?: string[] | ((request: Request) => string[]);
72
+ /**
73
+ * Plugins to extend functionality
74
+ * Array of plugin objects that add features to the consent system
75
+ */
76
+ plugins?: P;
77
+ /**
78
+ * Logger configuration
79
+ * Controls how events are logged
80
+ */
81
+ logger?: Logger;
82
+ /**
83
+ * allows you to define custom hooks that can be
84
+ * executed during lifecycle of core database
85
+ * operations.
86
+ */
87
+ databaseHooks?: DatabaseHook[];
88
+ advanced?: {
89
+ /**
90
+ * Ip address configuration
91
+ */
92
+ ipAddress?: {
93
+ /**
94
+ * List of headers to use for ip address
95
+ *
96
+ * Ip address is used for rate limiting and session tracking
97
+ *
98
+ * @example ["x-client-ip", "x-forwarded-for"]
99
+ *
100
+ * @default
101
+ * @link https://github.com/c15t/c15t/blob/main/packages/c15t/src/utils/get-request-ip.ts#L8
102
+ */
103
+ ipAddressHeaders?: string[];
104
+ /**
105
+ * Disable ip tracking
106
+ *
107
+ * ⚠︎ This is a security risk and it may expose your application to abuse
108
+ */
109
+ disableIpTracking?: boolean;
110
+ };
111
+ /**
112
+ * Disable trusted origins check
113
+ *
114
+ * ⚠︎ This is a security risk and it may expose your application to CSRF attacks
115
+ */
116
+ disableCSRFCheck?: boolean;
117
+ /**
118
+ * Function to generate IDs
119
+ * Custom ID generation for consent records and other entities
120
+ */
121
+ generateId?: (options: {
122
+ model: EntityName;
123
+ size?: number;
124
+ }) => string;
125
+ /**
126
+ * Disable database transactions
127
+ *
128
+ * When true, operations will execute directly without transaction support.
129
+ * Useful for databases that don't support transactions or when you want to bypass transaction overhead.
130
+ *
131
+ * @default false
132
+ */
133
+ disableTransactions?: boolean;
134
+ };
135
+ /**
136
+ * API error handling
137
+ */
138
+ onAPIError?: {
139
+ /**
140
+ * Throw an error on API error
141
+ *
142
+ * @default false
143
+ */
144
+ throw?: boolean;
145
+ /**
146
+ * Custom error handler
147
+ *
148
+ * @param error
149
+ * @param ctx - Auth context
150
+ */
151
+ onError?: (error: unknown, ctx: C15TContext) => void | Promise<void>;
152
+ };
153
+ /**
154
+ * Hooks
155
+ */
156
+ hooks?: {
157
+ /**
158
+ * Before a request is processed
159
+ */
160
+ before?: C15TMiddleware;
161
+ /**
162
+ * After a request is processed
163
+ */
164
+ after?: C15TMiddleware;
165
+ };
166
+ /**
167
+ * Database tables configuration
168
+ * Contains all entity table configurations
169
+ */
170
+ tables?: TablesConfig;
171
+ }
172
+ //# sourceMappingURL=options.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"options.d.ts","sourceRoot":"","sources":["../../src/types/options.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAEvD,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAGrD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAEtD;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,WAAW,CAAC,CAAC,SAAS,UAAU,EAAE,GAAG,UAAU,EAAE;IACjE;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,QAAQ,CAAC,EAAE,qBAAqB,CAAC;IAEjC;;;OAGG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;IAEf;;;;OAIG;IACH,cAAc,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC;IAE7D;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC;IAEZ;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,aAAa,CAAC,EAAE,YAAY,EAAE,CAAC;IAK/B,QAAQ,CAAC,EAAE;QACV;;WAEG;QACH,SAAS,CAAC,EAAE;YACX;;;;;;;;;eASG;YACH,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;YAC5B;;;;eAIG;YACH,iBAAiB,CAAC,EAAE,OAAO,CAAC;SAC5B,CAAC;QAEF;;;;WAIG;QACH,gBAAgB,CAAC,EAAE,OAAO,CAAC;QAE3B;;;WAGG;QACH,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE;YAAE,KAAK,EAAE,UAAU,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,CAAA;SAAE,KAAK,MAAM,CAAC;QAEvE;;;;;;;WAOG;QACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;KAC9B,CAAC;IACF;;OAEG;IACH,UAAU,CAAC,EAAE;QACZ;;;;WAIG;QACH,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB;;;;;WAKG;QACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;KACrE,CAAC;IACF;;OAEG;IACH,KAAK,CAAC,EAAE;QACP;;WAEG;QACH,MAAM,CAAC,EAAE,cAAc,CAAC;QACxB;;WAEG;QACH,KAAK,CAAC,EAAE,cAAc,CAAC;KACvB,CAAC;IAEF;;;OAGG;IACH,MAAM,CAAC,EAAE,YAAY,CAAC;CACtB"}
@@ -0,0 +1,442 @@
1
+ import type { UnionToIntersection } from '@better-fetch/fetch';
2
+ /**
3
+ * Plugin System for c15t Consent Management
4
+ *
5
+ * This module defines the plugin system architecture for the c15t consent management system.
6
+ * Plugins provide a way to extend functionality with additional features like analytics,
7
+ * geolocation, custom consent flows, and more.
8
+ */
9
+ import type { Endpoint } from 'better-call';
10
+ import type { Migration } from 'kysely';
11
+ import type { C15TMiddleware } from '../api/call';
12
+ import type { Field } from '../db/core/fields';
13
+ import type { C15TContext, C15TOptions, DeepPartial, HookEndpointContext, LiteralString } from './index';
14
+ /**
15
+ * Context object provided to plugin hooks
16
+ *
17
+ * This extends the standard endpoint context with additional properties
18
+ * specific to plugin hooks, such as the request path and geolocation data.
19
+ */
20
+ export interface PluginHookContext {
21
+ /**
22
+ * The path of the current request
23
+ */
24
+ path: string;
25
+ /**
26
+ * Geolocation information (added by the geo plugin)
27
+ */
28
+ geo?: {
29
+ /**
30
+ * IP address of the request
31
+ */
32
+ ip: string;
33
+ /**
34
+ * Country code (ISO 3166-1 alpha-2)
35
+ */
36
+ country?: string;
37
+ /**
38
+ * Region or state code
39
+ */
40
+ region?: string;
41
+ /**
42
+ * Source of the geolocation data
43
+ */
44
+ source: string;
45
+ };
46
+ }
47
+ /**
48
+ * Plugin hook definition
49
+ *
50
+ * Hooks are used to run custom logic at specific points in the request lifecycle.
51
+ * Each hook includes a matcher function to determine when it should run and
52
+ * a handler function that contains the actual logic.
53
+ */
54
+ export interface PluginHook {
55
+ /**
56
+ * A function to determine if this hook should run for the current request
57
+ *
58
+ * @param context - The hook context with request details
59
+ * @returns True if the hook should run, false otherwise
60
+ */
61
+ matcher: (context: PluginHookContext) => boolean;
62
+ /**
63
+ * The hook handler that runs if matcher returns true
64
+ *
65
+ * @param context - The hook context with request details
66
+ * @returns A Promise that resolves when the hook completes, or void
67
+ */
68
+ handler: (context: PluginHookContext) => Promise<void> | void;
69
+ }
70
+ /**
71
+ * c15t Plugin Definition
72
+ *
73
+ * This interface defines the structure of a plugin for the c15t consent management system.
74
+ * Plugins can add endpoints, hooks, error codes, and custom functionality.
75
+ *
76
+ * @example
77
+ * ```typescript
78
+ * const myPlugin: C15TPlugin = {
79
+ * id: 'my-plugin',
80
+ * init: (context) => {
81
+ * // Initialize plugin
82
+ * },
83
+ * endpoints: {
84
+ * myEndpoint: createEndpoint('/my-endpoint', async (ctx) => {
85
+ * return ctx.json({ success: true });
86
+ * })
87
+ * }
88
+ * };
89
+ * ```
90
+ */
91
+ export interface C15TPlugin {
92
+ /**
93
+ * Unique identifier for the plugin
94
+ * Must be a string literal for type safety
95
+ */
96
+ id: LiteralString;
97
+ /**
98
+ * Name of the plugin
99
+ */
100
+ name: string;
101
+ /**
102
+ * Type of plugin for classification and type guards
103
+ */
104
+ type: string;
105
+ /**
106
+ * The init function is called when the plugin is initialized.
107
+ * You can return a new context or modify the existing context.
108
+ *
109
+ * @param ctx - The c15t context
110
+ * @returns An object with context or options modifications, or undefined
111
+ */
112
+ init?: (ctx: C15TContext) => {
113
+ context?: DeepPartial<Omit<C15TContext, 'options'>>;
114
+ options?: Partial<C15TOptions>;
115
+ } | undefined;
116
+ /**
117
+ * Custom API endpoints provided by this plugin
118
+ * Each key is the endpoint name, and the value is the endpoint handler
119
+ */
120
+ endpoints?: {
121
+ [key: string]: Endpoint;
122
+ };
123
+ /**
124
+ * Middleware functions to process requests for specific paths
125
+ * Each middleware includes a path pattern and the middleware function
126
+ */
127
+ middlewares?: {
128
+ path: string;
129
+ middleware: Endpoint;
130
+ }[];
131
+ /**
132
+ * Handler for intercepting and potentially modifying incoming requests
133
+ *
134
+ * @param request - The incoming HTTP request
135
+ * @param ctx - The c15t context
136
+ * @returns A modified request, a response to short-circuit handling, or undefined to continue
137
+ */
138
+ onRequest?: (request: Request, ctx: C15TContext) => Promise<{
139
+ response: Response;
140
+ } | {
141
+ request: Request;
142
+ } | undefined>;
143
+ /**
144
+ * Handler for intercepting and potentially modifying outgoing responses
145
+ *
146
+ * @param response - The outgoing HTTP response
147
+ * @param ctx - The c15t context
148
+ * @returns A modified response or undefined to continue with the original
149
+ */
150
+ onResponse?: (response: Response, ctx: C15TContext) => Promise<{
151
+ response: Response;
152
+ } | undefined>;
153
+ /**
154
+ * Request lifecycle hooks for executing code before or after endpoint handling
155
+ */
156
+ hooks?: {
157
+ /**
158
+ * Hooks that run before the endpoint handler
159
+ * Each hook has a matcher to determine when it should run
160
+ */
161
+ before?: {
162
+ matcher: (context: HookEndpointContext) => boolean;
163
+ handler: C15TMiddleware;
164
+ }[];
165
+ /**
166
+ * Hooks that run after the endpoint handler has completed
167
+ * Each hook has a matcher to determine when it should run
168
+ */
169
+ after?: {
170
+ matcher: (context: HookEndpointContext) => boolean;
171
+ handler: C15TMiddleware;
172
+ }[];
173
+ };
174
+ /**
175
+ * Schema the plugin needs
176
+ *
177
+ * This will also be used to migrate the database. If the fields are dynamic from the plugins
178
+ * configuration each time the configuration is changed a new migration will be created.
179
+ *
180
+ * NOTE: If you want to create migrations manually using
181
+ * migrations option or any other way you
182
+ * can disable migration per table basis.
183
+ *
184
+ * @example
185
+ * ```ts
186
+ * schema: {
187
+ * subject: {
188
+ * fields: {
189
+ * email: {
190
+ * type: "string",
191
+ * },
192
+ * emailVerified: {
193
+ * type: "boolean",
194
+ * defaultValue: false,
195
+ * },
196
+ * },
197
+ * }
198
+ * } as AuthPluginSchema
199
+ * ```
200
+ */
201
+ schema?: C15TPluginSchema;
202
+ /**
203
+ * The migrations of the plugin. If you define schema that will automatically create
204
+ * migrations for you.
205
+ *
206
+ * ⚠️ Only uses this if you dont't want to use the schema option and you disabled migrations for
207
+ * the tables.
208
+ */
209
+ migrations?: Record<string, Migration>;
210
+ /**
211
+ * The options of the plugin
212
+ */
213
+ options?: Record<string, unknown>;
214
+ /**
215
+ * Types to be inferred by the type system
216
+ * Used for type information in the plugin system
217
+ */
218
+ $Infer?: Record<string, unknown>;
219
+ /**
220
+ * The error codes returned by the plugin
221
+ * Used for consistent error handling across the system
222
+ */
223
+ $ERROR_CODES?: Record<string, string>;
224
+ /**
225
+ * Type information for context extensions provided by this plugin
226
+ * This will be used to properly type the context in hooks and methods
227
+ */
228
+ $InferContext?: Record<string, unknown>;
229
+ }
230
+ /**
231
+ * Improved type inference for plugin types
232
+ *
233
+ * This type utility extracts all plugin type definitions from configuration options,
234
+ * allowing for comprehensive type checking of plugin features.
235
+ *
236
+ * @typeParam TOptions - The c15t configuration options type
237
+ *
238
+ * @example
239
+ * ```ts
240
+ * // Get all plugin types from configuration
241
+ * type AllPluginTypes = ExtractPluginTypeDefinitions<MyAppOptions>;
242
+ *
243
+ * // Types will include all properties from all plugins' $Infer fields
244
+ * ```
245
+ */
246
+ export type ExtractPluginTypeDefinitions<TOptions extends C15TOptions> = TOptions['plugins'] extends Array<infer Plugin> ? Plugin extends C15TPlugin ? Plugin extends {
247
+ $Infer: infer PluginTypes;
248
+ } ? PluginTypes extends Record<string, unknown> ? PluginTypes : Record<string, never> : Record<string, never> : Record<string, never> : Record<string, never>;
249
+ /**
250
+ * Helper to extract specific plugin type from options
251
+ *
252
+ * This type utility finds plugins of a specific type from a configuration
253
+ * object, enabling type-safe access to plugin instances.
254
+ *
255
+ * @typeParam O - The c15t configuration options type
256
+ * @typeParam T - The plugin type string to extract
257
+ *
258
+ * @example
259
+ * ```ts
260
+ * // Extract all analytics plugins from configuration
261
+ * type MyAnalyticsPlugins = ExtractPluginType<MyAppOptions, 'analytics'>;
262
+ * ```
263
+ */
264
+ export type ExtractPluginType<O extends C15TOptions, T extends string> = O['plugins'] extends Array<infer P> ? P extends C15TPlugin ? P extends {
265
+ type: T;
266
+ } ? P : never : never : never;
267
+ /**
268
+ * Type-safe plugin factory function
269
+ *
270
+ * A type definition for functions that create plugin instances with proper typing.
271
+ *
272
+ * @typeParam T - The specific plugin type being created
273
+ *
274
+ * @example
275
+ * ```ts
276
+ * // Create a type-safe plugin factory
277
+ * const createAnalyticsPlugin: PluginFactory<AnalyticsPlugin> =
278
+ * (options) => ({
279
+ * id: options?.id || 'analytics',
280
+ * type: 'analytics',
281
+ * // Other plugin properties
282
+ * analyticsOptions: options?.analyticsOptions
283
+ * });
284
+ * ```
285
+ */
286
+ export type PluginFactory<T extends C15TPlugin> = (options?: Omit<T, 'id' | 'type'> & {
287
+ id?: string;
288
+ }) => T;
289
+ /**
290
+ * Infer plugin error codes from configuration options
291
+ *
292
+ * This type utility extracts the error codes defined by plugins from a configuration object,
293
+ * allowing TypeScript to understand the possible error codes.
294
+ *
295
+ * @typeParam O - The c15t configuration options type
296
+ *
297
+ * @example
298
+ * ```ts
299
+ * // Get all error codes from plugins
300
+ * type AllErrorCodes = InferPluginErrorCodes<MyAppOptions>;
301
+ * ```
302
+ */
303
+ export type InferPluginErrorCodes<O extends C15TOptions> = O['plugins'] extends Array<infer P> ? P extends C15TPlugin ? P['$ERROR_CODES'] extends infer EC ? EC extends Record<string, unknown> ? EC : Record<string, never> : Record<string, never> : Record<string, never> : Record<string, never>;
304
+ /**
305
+ * Schema type for plugin database extensions
306
+ *
307
+ * This defines the structure for database schema extensions provided by plugins,
308
+ * including table definitions, fields, and migration controls.
309
+ */
310
+ export type C15TPluginSchema = {
311
+ [table in string]: {
312
+ /**
313
+ * Field definitions for this table
314
+ */
315
+ fields: {
316
+ [field in string]: Field;
317
+ };
318
+ /**
319
+ * Whether to disable automatic migration generation for this table
320
+ */
321
+ disableMigration?: boolean;
322
+ /**
323
+ * Custom entity name for this table
324
+ */
325
+ entityName?: string;
326
+ };
327
+ };
328
+ /**
329
+ * Analytics plugin type definition
330
+ *
331
+ * Specialized plugin type for analytics functionality with type-safe options.
332
+ *
333
+ * @example
334
+ * ```ts
335
+ * // Create an analytics plugin
336
+ * const analytics: AnalyticsPlugin = {
337
+ * id: 'google-analytics',
338
+ * type: 'analytics',
339
+ * analyticsOptions: {
340
+ * trackingEvents: ['consent_given', 'consent_withdrawn'],
341
+ * anonymizeData: true
342
+ * }
343
+ * };
344
+ * ```
345
+ */
346
+ export interface AnalyticsPlugin extends C15TPlugin {
347
+ type: 'analytics';
348
+ analyticsOptions?: {
349
+ /**
350
+ * List of events to track
351
+ */
352
+ trackingEvents: string[];
353
+ /**
354
+ * Whether to anonymize subject data
355
+ */
356
+ anonymizeData?: boolean;
357
+ };
358
+ }
359
+ /**
360
+ * Geolocation plugin type definition
361
+ *
362
+ * Specialized plugin type for geolocation functionality with type-safe options.
363
+ *
364
+ * @example
365
+ * ```ts
366
+ * // Create a geolocation plugin
367
+ * const geo: GeoPlugin = {
368
+ * id: 'maxmind',
369
+ * type: 'geo',
370
+ * geoOptions: {
371
+ * defaultJurisdiction: 'EU',
372
+ * ipLookupService: 'https://geo.example.com'
373
+ * }
374
+ * };
375
+ * ```
376
+ */
377
+ export interface GeoPlugin extends C15TPlugin {
378
+ type: 'geo';
379
+ geoOptions?: {
380
+ /**
381
+ * Default jurisdiction to use when geolocation fails
382
+ */
383
+ defaultJurisdiction?: string;
384
+ /**
385
+ * Service URL for IP address lookups
386
+ */
387
+ ipLookupService?: string;
388
+ };
389
+ }
390
+ /**
391
+ * Type guard to check if a plugin is an analytics plugin
392
+ *
393
+ * @param plugin - The plugin to check
394
+ * @returns True if the plugin is an analytics plugin
395
+ *
396
+ * @example
397
+ * ```ts
398
+ * if (isAnalyticsPlugin(plugin)) {
399
+ * // Can safely access analyticsOptions
400
+ * const events = plugin.analyticsOptions?.trackingEvents;
401
+ * }
402
+ * ```
403
+ */
404
+ export declare function isAnalyticsPlugin(plugin: C15TPlugin): plugin is AnalyticsPlugin;
405
+ /**
406
+ * Type guard to check if a plugin is a geo plugin
407
+ *
408
+ * @param plugin - The plugin to check
409
+ * @returns True if the plugin is a geo plugin
410
+ *
411
+ * @example
412
+ * ```ts
413
+ * if (isGeoPlugin(plugin)) {
414
+ * // Can safely access geoOptions
415
+ * const defaultRegion = plugin.geoOptions?.defaultJurisdiction;
416
+ * }
417
+ * ```
418
+ */
419
+ export declare function isGeoPlugin(plugin: C15TPlugin): plugin is GeoPlugin;
420
+ /**
421
+ * Helper to extract plugin context types from plugin array
422
+ *
423
+ * This utility combines all context extensions from an array of plugins
424
+ * into a single type, allowing for proper typing of the complete context.
425
+ *
426
+ * @typeParam PluginArray - Array of plugin types
427
+ *
428
+ * @example
429
+ * ```ts
430
+ * // Given plugins array with plugins that extend context
431
+ * const plugins = [authPlugin, geoPlugin, analyticsPlugin];
432
+ *
433
+ * // Get combined context type from all plugins
434
+ * type MyAppContext = InferPluginContexts<typeof plugins>;
435
+ *
436
+ * // Context will have auth, geo, and analytics properties with correct types
437
+ * ```
438
+ */
439
+ export type InferPluginContexts<PluginArray extends C15TPlugin[]> = UnionToIntersection<PluginArray extends Array<infer SinglePlugin> ? SinglePlugin extends C15TPlugin ? SinglePlugin extends {
440
+ $InferContext: infer ContextType;
441
+ } ? ContextType extends Record<string, unknown> ? ContextType : Record<string, never> : Record<string, never> : Record<string, never> : Record<string, never>> & Record<string, unknown>;
442
+ //# sourceMappingURL=plugins.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../../src/types/plugins.ts"],"names":[],"mappings":"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"}