@c15t/backend 1.0.5 → 1.2.0-canary.0

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 (462) hide show
  1. package/.turbo/turbo-build.log +33 -39
  2. package/.turbo/turbo-fmt.log +3 -3
  3. package/.turbo/turbo-test.log +531 -0
  4. package/coverage/coverage-final.json +84 -0
  5. package/coverage/coverage-summary.json +85 -0
  6. package/coverage/html/backend/index.html +116 -0
  7. package/coverage/html/backend/rslib.config.ts.html +415 -0
  8. package/coverage/html/backend/src/contracts/consent/index.html +161 -0
  9. package/coverage/html/backend/src/contracts/consent/index.ts.html +112 -0
  10. package/coverage/html/backend/src/contracts/consent/post.contract.ts.html +559 -0
  11. package/coverage/html/backend/src/contracts/consent/show-banner.contract.ts.html +220 -0
  12. package/coverage/html/backend/src/contracts/consent/verify.contract.ts.html +463 -0
  13. package/coverage/html/backend/src/contracts/index.html +116 -0
  14. package/coverage/html/backend/src/contracts/index.ts.html +139 -0
  15. package/coverage/html/backend/src/contracts/meta/index.html +131 -0
  16. package/coverage/html/backend/src/contracts/meta/index.ts.html +100 -0
  17. package/coverage/html/backend/src/contracts/meta/status.contract.ts.html +196 -0
  18. package/coverage/html/backend/src/contracts/shared/index.html +116 -0
  19. package/coverage/html/backend/src/contracts/shared/jurisdiction.schema.ts.html +175 -0
  20. package/coverage/html/backend/src/core.ts.html +1624 -0
  21. package/coverage/html/backend/src/handlers/consent/index.html +161 -0
  22. package/coverage/html/backend/src/handlers/consent/index.ts.html +112 -0
  23. package/coverage/html/backend/src/handlers/consent/post.handler.ts.html +889 -0
  24. package/coverage/html/backend/src/handlers/consent/show-banner.handler.ts.html +535 -0
  25. package/coverage/html/backend/src/handlers/consent/verify.handler.ts.html +1000 -0
  26. package/coverage/html/backend/src/handlers/meta/index.html +131 -0
  27. package/coverage/html/backend/src/handlers/meta/index.ts.html +100 -0
  28. package/coverage/html/backend/src/handlers/meta/status.handler.ts.html +226 -0
  29. package/coverage/html/backend/src/index.html +161 -0
  30. package/coverage/html/backend/src/init.ts.html +1018 -0
  31. package/coverage/html/backend/src/pkgs/api-router/hooks/index.html +116 -0
  32. package/coverage/html/backend/src/pkgs/api-router/hooks/processor.ts.html +544 -0
  33. package/coverage/html/backend/src/pkgs/api-router/index.html +116 -0
  34. package/coverage/html/backend/src/pkgs/api-router/telemetry.ts.html +334 -0
  35. package/coverage/html/backend/src/pkgs/api-router/utils/cors.ts.html +304 -0
  36. package/coverage/html/backend/src/pkgs/api-router/utils/index.html +131 -0
  37. package/coverage/html/backend/src/pkgs/api-router/utils/ip.ts.html +361 -0
  38. package/coverage/html/backend/src/pkgs/data-model/fields/field-factory.ts.html +709 -0
  39. package/coverage/html/backend/src/pkgs/data-model/fields/id-generator.ts.html +256 -0
  40. package/coverage/html/backend/src/pkgs/data-model/fields/index.html +161 -0
  41. package/coverage/html/backend/src/pkgs/data-model/fields/superjson-utils.ts.html +136 -0
  42. package/coverage/html/backend/src/pkgs/data-model/fields/zod-fields.ts.html +496 -0
  43. package/coverage/html/backend/src/pkgs/data-model/hooks/create-hooks.ts.html +349 -0
  44. package/coverage/html/backend/src/pkgs/data-model/hooks/index.html +176 -0
  45. package/coverage/html/backend/src/pkgs/data-model/hooks/update-hooks.ts.html +358 -0
  46. package/coverage/html/backend/src/pkgs/data-model/hooks/update-many-hooks.ts.html +613 -0
  47. package/coverage/html/backend/src/pkgs/data-model/hooks/utils.ts.html +538 -0
  48. package/coverage/html/backend/src/pkgs/data-model/hooks/with-hooks-factory.ts.html +289 -0
  49. package/coverage/html/backend/src/pkgs/db-adapters/adapter-factory.ts.html +289 -0
  50. package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts.html +2203 -0
  51. package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/index.html +116 -0
  52. package/coverage/html/backend/src/pkgs/db-adapters/adapters/index.html +116 -0
  53. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/dialect.ts.html +670 -0
  54. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/index.html +131 -0
  55. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts.html +3634 -0
  56. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/index.html +116 -0
  57. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.ts.html +1417 -0
  58. package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/index.html +116 -0
  59. package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.ts.html +2071 -0
  60. package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/index.html +116 -0
  61. package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.ts.html +1834 -0
  62. package/coverage/html/backend/src/pkgs/db-adapters/adapters/test.ts.html +316 -0
  63. package/coverage/html/backend/src/pkgs/db-adapters/index.html +131 -0
  64. package/coverage/html/backend/src/pkgs/db-adapters/utils.ts.html +238 -0
  65. package/coverage/html/backend/src/pkgs/migrations/get-migration.ts.html +343 -0
  66. package/coverage/html/backend/src/pkgs/migrations/get-schema/get-schema.ts.html +217 -0
  67. package/coverage/html/backend/src/pkgs/migrations/get-schema/index.html +146 -0
  68. package/coverage/html/backend/src/pkgs/migrations/get-schema/process-fields.ts.html +280 -0
  69. package/coverage/html/backend/src/pkgs/migrations/get-schema/process-tables.ts.html +289 -0
  70. package/coverage/html/backend/src/pkgs/migrations/index.html +176 -0
  71. package/coverage/html/backend/src/pkgs/migrations/migration-builders.ts.html +595 -0
  72. package/coverage/html/backend/src/pkgs/migrations/migration-execution.ts.html +301 -0
  73. package/coverage/html/backend/src/pkgs/migrations/schema-comparison.ts.html +694 -0
  74. package/coverage/html/backend/src/pkgs/migrations/type-mapping.ts.html +817 -0
  75. package/coverage/html/backend/src/pkgs/results/core/error-class.ts.html +976 -0
  76. package/coverage/html/backend/src/pkgs/results/core/error-codes.ts.html +703 -0
  77. package/coverage/html/backend/src/pkgs/results/core/index.html +146 -0
  78. package/coverage/html/backend/src/pkgs/results/core/tracing.ts.html +280 -0
  79. package/coverage/html/backend/src/pkgs/results/create-telemetry-options.ts.html +271 -0
  80. package/coverage/html/backend/src/pkgs/results/index.html +131 -0
  81. package/coverage/html/backend/src/pkgs/results/orpc-error-handler.ts.html +496 -0
  82. package/coverage/html/backend/src/pkgs/results/results/index.html +131 -0
  83. package/coverage/html/backend/src/pkgs/results/results/recovery-utils.ts.html +628 -0
  84. package/coverage/html/backend/src/pkgs/results/results/result-helpers.ts.html +1234 -0
  85. package/coverage/html/backend/src/pkgs/utils/env.ts.html +337 -0
  86. package/coverage/html/backend/src/pkgs/utils/index.html +146 -0
  87. package/coverage/html/backend/src/pkgs/utils/logger.ts.html +199 -0
  88. package/coverage/html/backend/src/pkgs/utils/url.ts.html +400 -0
  89. package/coverage/html/backend/src/router.ts.html +109 -0
  90. package/coverage/html/backend/src/schema/audit-log/index.html +146 -0
  91. package/coverage/html/backend/src/schema/audit-log/registry.ts.html +436 -0
  92. package/coverage/html/backend/src/schema/audit-log/schema.ts.html +223 -0
  93. package/coverage/html/backend/src/schema/audit-log/table.ts.html +640 -0
  94. package/coverage/html/backend/src/schema/consent/index.html +146 -0
  95. package/coverage/html/backend/src/schema/consent/registry.ts.html +616 -0
  96. package/coverage/html/backend/src/schema/consent/schema.ts.html +238 -0
  97. package/coverage/html/backend/src/schema/consent/table.ts.html +748 -0
  98. package/coverage/html/backend/src/schema/consent-policy/index.html +146 -0
  99. package/coverage/html/backend/src/schema/consent-policy/registry.ts.html +1063 -0
  100. package/coverage/html/backend/src/schema/consent-policy/schema.ts.html +265 -0
  101. package/coverage/html/backend/src/schema/consent-policy/table.ts.html +535 -0
  102. package/coverage/html/backend/src/schema/consent-purpose/index.html +146 -0
  103. package/coverage/html/backend/src/schema/consent-purpose/registry.ts.html +589 -0
  104. package/coverage/html/backend/src/schema/consent-purpose/schema.ts.html +259 -0
  105. package/coverage/html/backend/src/schema/consent-purpose/table.ts.html +547 -0
  106. package/coverage/html/backend/src/schema/consent-record/index.html +131 -0
  107. package/coverage/html/backend/src/schema/consent-record/schema.ts.html +211 -0
  108. package/coverage/html/backend/src/schema/consent-record/table.ts.html +457 -0
  109. package/coverage/html/backend/src/schema/create-registry.ts.html +148 -0
  110. package/coverage/html/backend/src/schema/definition.ts.html +685 -0
  111. package/coverage/html/backend/src/schema/domain/index.html +146 -0
  112. package/coverage/html/backend/src/schema/domain/registry.ts.html +973 -0
  113. package/coverage/html/backend/src/schema/domain/schema.ts.html +214 -0
  114. package/coverage/html/backend/src/schema/domain/table.ts.html +496 -0
  115. package/coverage/html/backend/src/schema/index.html +146 -0
  116. package/coverage/html/backend/src/schema/schemas.ts.html +166 -0
  117. package/coverage/html/backend/src/schema/subject/index.html +146 -0
  118. package/coverage/html/backend/src/schema/subject/registry.ts.html +973 -0
  119. package/coverage/html/backend/src/schema/subject/schema.ts.html +208 -0
  120. package/coverage/html/backend/src/schema/subject/table.ts.html +499 -0
  121. package/coverage/html/backend/src/server.ts.html +475 -0
  122. package/coverage/html/backend/src/testing/contract-testing.ts.html +1348 -0
  123. package/coverage/html/backend/src/testing/index.html +116 -0
  124. package/coverage/html/base.css +224 -0
  125. package/coverage/html/block-navigation.js +87 -0
  126. package/coverage/html/favicon.png +0 -0
  127. package/coverage/html/index.html +626 -0
  128. package/coverage/html/prettify.css +1 -0
  129. package/coverage/html/prettify.js +2 -0
  130. package/coverage/html/sort-arrow-sprite.png +0 -0
  131. package/coverage/html/sorter.js +196 -0
  132. package/dist/contracts/consent/index.d.ts +401 -0
  133. package/dist/contracts/consent/index.d.ts.map +1 -0
  134. package/dist/contracts/consent/index.test.d.ts +2 -0
  135. package/dist/contracts/consent/index.test.d.ts.map +1 -0
  136. package/dist/contracts/consent/post.contract.d.ts +212 -0
  137. package/dist/contracts/consent/post.contract.d.ts.map +1 -0
  138. package/dist/contracts/consent/post.contract.test.d.ts +2 -0
  139. package/dist/contracts/consent/post.contract.test.d.ts.map +1 -0
  140. package/dist/contracts/consent/show-banner.contract.d.ts +45 -0
  141. package/dist/contracts/consent/show-banner.contract.d.ts.map +1 -0
  142. package/dist/contracts/consent/show-banner.contract.test.d.ts +2 -0
  143. package/dist/contracts/consent/show-banner.contract.test.d.ts.map +1 -0
  144. package/dist/contracts/consent/verify.contract.d.ts +147 -0
  145. package/dist/contracts/consent/verify.contract.d.ts.map +1 -0
  146. package/dist/contracts/consent/verify.contract.test.d.ts +2 -0
  147. package/dist/contracts/consent/verify.contract.test.d.ts.map +1 -0
  148. package/dist/contracts/index.d.ts +963 -0
  149. package/dist/contracts/index.d.ts.map +1 -0
  150. package/dist/contracts/meta/index.d.ts +78 -0
  151. package/dist/contracts/meta/index.d.ts.map +1 -0
  152. package/dist/contracts/meta/index.test.d.ts +2 -0
  153. package/dist/contracts/meta/index.test.d.ts.map +1 -0
  154. package/dist/contracts/meta/status.contract.d.ts +77 -0
  155. package/dist/contracts/meta/status.contract.d.ts.map +1 -0
  156. package/dist/contracts/meta/status.contract.test.d.ts +2 -0
  157. package/dist/contracts/meta/status.contract.test.d.ts.map +1 -0
  158. package/dist/contracts/shared/jurisdiction.schema.d.ts +24 -0
  159. package/dist/contracts/shared/jurisdiction.schema.d.ts.map +1 -0
  160. package/dist/core.cjs +3584 -0
  161. package/dist/core.d.ts +533 -76
  162. package/dist/core.d.ts.map +1 -1
  163. package/dist/{index.js → core.js} +1163 -1286
  164. package/dist/handlers/consent/index.d.ts +401 -0
  165. package/dist/handlers/consent/index.d.ts.map +1 -0
  166. package/dist/handlers/consent/post.handler.d.ts +234 -0
  167. package/dist/handlers/consent/post.handler.d.ts.map +1 -0
  168. package/dist/handlers/consent/show-banner.handler.d.ts +57 -0
  169. package/dist/handlers/consent/show-banner.handler.d.ts.map +1 -0
  170. package/dist/handlers/consent/show-banner.handler.test.d.ts +2 -0
  171. package/dist/handlers/consent/show-banner.handler.test.d.ts.map +1 -0
  172. package/dist/handlers/consent/verify.handler.d.ts +169 -0
  173. package/dist/handlers/consent/verify.handler.d.ts.map +1 -0
  174. package/dist/handlers/meta/index.d.ts +78 -0
  175. package/dist/handlers/meta/index.d.ts.map +1 -0
  176. package/dist/handlers/meta/status.handler.d.ts +76 -0
  177. package/dist/handlers/meta/status.handler.d.ts.map +1 -0
  178. package/dist/init.d.ts.map +1 -1
  179. package/dist/pkgs/api-router/hooks/processor.d.ts.map +1 -1
  180. package/dist/pkgs/api-router/types/router-props.d.ts +1 -1
  181. package/dist/pkgs/api-router/types/router-props.d.ts.map +1 -1
  182. package/dist/pkgs/api-router/utils/cors.d.ts +1 -1
  183. package/dist/pkgs/api-router/utils/cors.d.ts.map +1 -1
  184. package/dist/pkgs/data-model/fields/field-types.d.ts +1 -1
  185. package/dist/pkgs/data-model/fields/zod-fields.d.ts +32 -32
  186. package/dist/pkgs/data-model/index.cjs +1433 -1799
  187. package/dist/pkgs/data-model/index.js +20 -385
  188. package/dist/pkgs/data-model/schema/index.cjs +1402 -1768
  189. package/dist/pkgs/data-model/schema/index.js +20 -385
  190. package/dist/pkgs/db-adapters/adapter-factory.d.ts +2 -2
  191. package/dist/pkgs/db-adapters/adapter-factory.d.ts.map +1 -1
  192. package/dist/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.d.ts +4 -4
  193. package/dist/pkgs/db-adapters/adapters/drizzle-adapter/index.cjs +19 -151
  194. package/dist/pkgs/db-adapters/adapters/drizzle-adapter/index.js +19 -151
  195. package/dist/pkgs/db-adapters/adapters/kysely-adapter/dialect.d.ts +1 -1
  196. package/dist/pkgs/db-adapters/adapters/kysely-adapter/index.cjs +17 -149
  197. package/dist/pkgs/db-adapters/adapters/kysely-adapter/index.js +17 -149
  198. package/dist/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.d.ts +2 -2
  199. package/dist/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.d.ts.map +1 -1
  200. package/dist/pkgs/db-adapters/adapters/memory-adapter/index.cjs +17 -149
  201. package/dist/pkgs/db-adapters/adapters/memory-adapter/index.js +17 -149
  202. package/dist/pkgs/db-adapters/adapters/prisma-adapter/index.cjs +19 -151
  203. package/dist/pkgs/db-adapters/adapters/prisma-adapter/index.js +19 -151
  204. package/dist/pkgs/db-adapters/index.cjs +31 -153
  205. package/dist/pkgs/db-adapters/index.js +31 -153
  206. package/dist/pkgs/migrations/get-schema/get-schema.d.ts +2 -2
  207. package/dist/pkgs/migrations/get-schema/index.d.ts +1 -1
  208. package/dist/pkgs/migrations/index.cjs +30 -153
  209. package/dist/pkgs/migrations/index.js +30 -153
  210. package/dist/pkgs/migrations/schema-comparison.d.ts.map +1 -1
  211. package/dist/pkgs/results/core/error-class.d.ts +23 -21
  212. package/dist/pkgs/results/core/error-class.d.ts.map +1 -1
  213. package/dist/pkgs/results/index.cjs +17 -150
  214. package/dist/pkgs/results/index.d.ts +0 -3
  215. package/dist/pkgs/results/index.d.ts.map +1 -1
  216. package/dist/pkgs/results/index.js +17 -138
  217. package/dist/pkgs/results/orpc-error-handler.d.ts +65 -0
  218. package/dist/pkgs/results/orpc-error-handler.d.ts.map +1 -0
  219. package/dist/pkgs/results/types.d.ts +7 -7
  220. package/dist/pkgs/results/types.d.ts.map +1 -1
  221. package/dist/pkgs/types/context.d.ts +15 -4
  222. package/dist/pkgs/types/context.d.ts.map +1 -1
  223. package/dist/pkgs/types/endpoints.d.ts +3 -4
  224. package/dist/pkgs/types/endpoints.d.ts.map +1 -1
  225. package/dist/pkgs/types/options.d.ts +2 -3
  226. package/dist/pkgs/types/options.d.ts.map +1 -1
  227. package/dist/pkgs/types/plugins.d.ts +2 -3
  228. package/dist/pkgs/types/plugins.d.ts.map +1 -1
  229. package/dist/pkgs/utils/index.d.ts +1 -0
  230. package/dist/pkgs/utils/index.d.ts.map +1 -1
  231. package/dist/pkgs/utils/logger.d.ts +16 -0
  232. package/dist/pkgs/utils/logger.d.ts.map +1 -0
  233. package/dist/router.cjs +1213 -0
  234. package/dist/router.d.ts +480 -0
  235. package/dist/router.d.ts.map +1 -0
  236. package/dist/router.js +1169 -0
  237. package/dist/schema/audit-log/table.d.ts +1 -1
  238. package/dist/schema/consent/table.d.ts +1 -1
  239. package/dist/schema/consent-policy/registry.d.ts +12 -12
  240. package/dist/schema/consent-policy/schema.d.ts +6 -6
  241. package/dist/schema/consent-policy/table.d.ts +7 -7
  242. package/dist/schema/consent-purpose/registry.d.ts +6 -6
  243. package/dist/schema/consent-purpose/schema.d.ts +6 -6
  244. package/dist/schema/consent-purpose/table.d.ts +7 -7
  245. package/dist/schema/consent-record/table.d.ts +1 -1
  246. package/dist/schema/create-registry.d.ts +32 -32
  247. package/dist/schema/definition.d.ts +19 -19
  248. package/dist/schema/domain/registry.d.ts +10 -10
  249. package/dist/schema/domain/schema.d.ts +5 -5
  250. package/dist/schema/domain/table.d.ts +6 -6
  251. package/dist/schema/index.cjs +1409 -1775
  252. package/dist/schema/index.js +20 -385
  253. package/dist/schema/schemas.d.ts +19 -19
  254. package/dist/schema/subject/registry.d.ts +4 -4
  255. package/dist/schema/subject/schema.d.ts +2 -2
  256. package/dist/schema/subject/table.d.ts +3 -3
  257. package/dist/server.d.ts +2 -0
  258. package/dist/server.d.ts.map +1 -0
  259. package/dist/testing/contract-testing.d.ts +37 -0
  260. package/dist/testing/contract-testing.d.ts.map +1 -0
  261. package/dist/types/context.d.ts +1 -1
  262. package/dist/types/index.d.ts +2 -2
  263. package/dist/types/options.d.ts +33 -2
  264. package/dist/types/options.d.ts.map +1 -1
  265. package/dist/types/plugins.d.ts +3 -4
  266. package/dist/types/plugins.d.ts.map +1 -1
  267. package/package.json +22 -30
  268. package/rslib.config.ts +2 -5
  269. package/src/contracts/consent/index.test.ts +5 -0
  270. package/src/contracts/consent/index.ts +9 -0
  271. package/src/contracts/consent/post.contract.test.ts +526 -0
  272. package/src/contracts/consent/post.contract.ts +160 -0
  273. package/src/contracts/consent/show-banner.contract.test.ts +214 -0
  274. package/src/contracts/consent/show-banner.contract.ts +45 -0
  275. package/src/contracts/consent/verify.contract.test.ts +185 -0
  276. package/src/contracts/consent/verify.contract.ts +126 -0
  277. package/src/contracts/index.ts +18 -0
  278. package/src/contracts/meta/index.test.ts +5 -0
  279. package/src/contracts/meta/index.ts +5 -0
  280. package/src/contracts/meta/status.contract.test.ts +338 -0
  281. package/src/contracts/meta/status.contract.ts +37 -0
  282. package/src/contracts/shared/jurisdiction.schema.ts +30 -0
  283. package/src/core.ts +451 -159
  284. package/src/handlers/consent/index.ts +9 -0
  285. package/src/handlers/consent/post.handler.ts +273 -0
  286. package/src/handlers/consent/show-banner.handler.test.ts +148 -0
  287. package/src/handlers/consent/show-banner.handler.ts +150 -0
  288. package/src/handlers/consent/verify.handler.ts +305 -0
  289. package/src/handlers/meta/index.ts +5 -0
  290. package/src/handlers/meta/status.handler.ts +47 -0
  291. package/src/init.ts +8 -5
  292. package/src/pkgs/api-router/hooks/__tests__/processor.test.ts +6 -0
  293. package/src/pkgs/api-router/hooks/processor.ts +2 -0
  294. package/src/pkgs/api-router/types/router-props.ts +1 -1
  295. package/src/pkgs/api-router/utils/cors.ts +1 -1
  296. package/src/pkgs/data-model/fields/field-types.ts +1 -1
  297. package/src/pkgs/data-model/fields/id-generator.ts +1 -1
  298. package/src/pkgs/db-adapters/README.md +3 -3
  299. package/src/pkgs/db-adapters/adapter-factory.ts +8 -4
  300. package/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts +13 -13
  301. package/src/pkgs/db-adapters/adapters/kysely-adapter/dialect.ts +1 -1
  302. package/src/pkgs/db-adapters/adapters/kysely-adapter/tests/postgres.test.ts +1 -1
  303. package/src/pkgs/db-adapters/adapters/kysely-adapter/tests/sqlite.test.ts +1 -1
  304. package/src/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.ts +2 -2
  305. package/src/pkgs/migrations/get-migration.ts +3 -3
  306. package/src/pkgs/migrations/get-schema/get-schema.ts +2 -2
  307. package/src/pkgs/migrations/get-schema/index.ts +1 -1
  308. package/src/pkgs/migrations/migration-builders.ts +2 -2
  309. package/src/pkgs/migrations/migration-execution.ts +2 -2
  310. package/src/pkgs/migrations/schema-comparison.ts +5 -4
  311. package/src/pkgs/results/__tests__/error-class.test.ts +8 -7
  312. package/src/pkgs/results/core/error-class.ts +31 -43
  313. package/src/pkgs/results/index.ts +0 -10
  314. package/src/pkgs/results/orpc-error-handler.ts +137 -0
  315. package/src/pkgs/results/types.ts +8 -7
  316. package/src/pkgs/types/context.ts +18 -4
  317. package/src/pkgs/types/endpoints.ts +3 -5
  318. package/src/pkgs/types/options.ts +2 -3
  319. package/src/pkgs/types/plugins.ts +2 -3
  320. package/src/pkgs/utils/index.ts +1 -0
  321. package/src/pkgs/utils/logger.ts +38 -0
  322. package/src/router.ts +8 -0
  323. package/src/schema/audit-log/table.ts +1 -1
  324. package/src/schema/consent/table.ts +1 -1
  325. package/src/schema/consent-policy/table.ts +1 -1
  326. package/src/schema/consent-purpose/table.ts +1 -1
  327. package/src/schema/consent-record/table.ts +1 -1
  328. package/src/schema/definition.ts +2 -2
  329. package/src/schema/domain/table.ts +1 -1
  330. package/src/schema/subject/table.ts +1 -1
  331. package/src/server.ts +130 -0
  332. package/src/testing/contract-testing.ts +437 -0
  333. package/src/types/context.ts +1 -1
  334. package/src/types/index.ts +2 -2
  335. package/src/types/options.ts +38 -2
  336. package/src/types/plugins.ts +3 -4
  337. package/dist/index.cjs +0 -3701
  338. package/dist/index.d.ts +0 -11
  339. package/dist/index.d.ts.map +0 -1
  340. package/dist/init.test.d.ts +0 -2
  341. package/dist/init.test.d.ts.map +0 -1
  342. package/dist/integrations/cloudflare.cjs +0 -312
  343. package/dist/integrations/cloudflare.d.ts +0 -32
  344. package/dist/integrations/cloudflare.d.ts.map +0 -1
  345. package/dist/integrations/cloudflare.js +0 -278
  346. package/dist/integrations/next.cjs +0 -276
  347. package/dist/integrations/next.d.ts +0 -68
  348. package/dist/integrations/next.d.ts.map +0 -1
  349. package/dist/integrations/next.js +0 -239
  350. package/dist/integrations/node.cjs +0 -257
  351. package/dist/integrations/node.d.ts +0 -29
  352. package/dist/integrations/node.d.ts.map +0 -1
  353. package/dist/integrations/node.js +0 -223
  354. package/dist/pkgs/api-router/index.d.ts +0 -9
  355. package/dist/pkgs/api-router/index.d.ts.map +0 -1
  356. package/dist/pkgs/api-router/utils/define-route.d.ts +0 -87
  357. package/dist/pkgs/api-router/utils/define-route.d.ts.map +0 -1
  358. package/dist/pkgs/logger/__tests__/console-formatter.test.d.ts +0 -2
  359. package/dist/pkgs/logger/__tests__/console-formatter.test.d.ts.map +0 -1
  360. package/dist/pkgs/logger/__tests__/integration.test.d.ts +0 -2
  361. package/dist/pkgs/logger/__tests__/integration.test.d.ts.map +0 -1
  362. package/dist/pkgs/logger/__tests__/log-levels.test.d.ts +0 -2
  363. package/dist/pkgs/logger/__tests__/log-levels.test.d.ts.map +0 -1
  364. package/dist/pkgs/logger/__tests__/logger-factory.test.d.ts +0 -2
  365. package/dist/pkgs/logger/__tests__/logger-factory.test.d.ts.map +0 -1
  366. package/dist/pkgs/logger/__tests__/result-logging.test.d.ts +0 -2
  367. package/dist/pkgs/logger/__tests__/result-logging.test.d.ts.map +0 -1
  368. package/dist/pkgs/logger/__tests__/types.test.d.ts +0 -2
  369. package/dist/pkgs/logger/__tests__/types.test.d.ts.map +0 -1
  370. package/dist/pkgs/logger/console-formatter.d.ts +0 -56
  371. package/dist/pkgs/logger/console-formatter.d.ts.map +0 -1
  372. package/dist/pkgs/logger/index.cjs +0 -240
  373. package/dist/pkgs/logger/index.d.ts +0 -35
  374. package/dist/pkgs/logger/index.d.ts.map +0 -1
  375. package/dist/pkgs/logger/index.js +0 -185
  376. package/dist/pkgs/logger/log-levels.d.ts +0 -29
  377. package/dist/pkgs/logger/log-levels.d.ts.map +0 -1
  378. package/dist/pkgs/logger/logger-factory.d.ts +0 -42
  379. package/dist/pkgs/logger/logger-factory.d.ts.map +0 -1
  380. package/dist/pkgs/logger/result-logging.d.ts +0 -71
  381. package/dist/pkgs/logger/result-logging.d.ts.map +0 -1
  382. package/dist/pkgs/logger/telemetry.d.ts +0 -14
  383. package/dist/pkgs/logger/telemetry.d.ts.map +0 -1
  384. package/dist/pkgs/logger/types.d.ts +0 -121
  385. package/dist/pkgs/logger/types.d.ts.map +0 -1
  386. package/dist/pkgs/results/__tests__/retrieval-pipeline.test.d.ts +0 -2
  387. package/dist/pkgs/results/__tests__/retrieval-pipeline.test.d.ts.map +0 -1
  388. package/dist/pkgs/results/__tests__/validation-pipeline.test.d.ts +0 -2
  389. package/dist/pkgs/results/__tests__/validation-pipeline.test.d.ts.map +0 -1
  390. package/dist/pkgs/results/h3-integration.d.ts +0 -52
  391. package/dist/pkgs/results/h3-integration.d.ts.map +0 -1
  392. package/dist/pkgs/results/pipeline/retrieval-pipeline.d.ts +0 -101
  393. package/dist/pkgs/results/pipeline/retrieval-pipeline.d.ts.map +0 -1
  394. package/dist/pkgs/results/pipeline/validation-pipeline.d.ts +0 -89
  395. package/dist/pkgs/results/pipeline/validation-pipeline.d.ts.map +0 -1
  396. package/dist/response-types.d.ts +0 -19
  397. package/dist/response-types.d.ts.map +0 -1
  398. package/dist/routes/__test__/index.test.d.ts +0 -17
  399. package/dist/routes/__test__/index.test.d.ts.map +0 -1
  400. package/dist/routes/__test__/set-consent.test.d.ts +0 -2
  401. package/dist/routes/__test__/set-consent.test.d.ts.map +0 -1
  402. package/dist/routes/__test__/show-consent-banner.test.d.ts +0 -2
  403. package/dist/routes/__test__/show-consent-banner.test.d.ts.map +0 -1
  404. package/dist/routes/__test__/status.test.d.ts +0 -2
  405. package/dist/routes/__test__/status.test.d.ts.map +0 -1
  406. package/dist/routes/__test__/verify-consent.test.d.ts +0 -2
  407. package/dist/routes/__test__/verify-consent.test.d.ts.map +0 -1
  408. package/dist/routes/index.d.ts +0 -3
  409. package/dist/routes/index.d.ts.map +0 -1
  410. package/dist/routes/set-consent.d.ts +0 -89
  411. package/dist/routes/set-consent.d.ts.map +0 -1
  412. package/dist/routes/show-consent-banner.d.ts +0 -15
  413. package/dist/routes/show-consent-banner.d.ts.map +0 -1
  414. package/dist/routes/status.d.ts +0 -44
  415. package/dist/routes/status.d.ts.map +0 -1
  416. package/dist/routes/types.d.ts +0 -7
  417. package/dist/routes/types.d.ts.map +0 -1
  418. package/dist/routes/verify-consent.d.ts +0 -38
  419. package/dist/routes/verify-consent.d.ts.map +0 -1
  420. package/src/docs/ADVANCED_JSON_HANDLING.md +0 -99
  421. package/src/docs/neverthrow.md +0 -171
  422. package/src/index.ts +0 -34
  423. package/src/init.test.ts +0 -219
  424. package/src/integrations/cloudflare.ts +0 -269
  425. package/src/integrations/next.ts +0 -204
  426. package/src/integrations/node.ts +0 -141
  427. package/src/pkgs/api-router/index.ts +0 -148
  428. package/src/pkgs/api-router/types/h3.d.ts +0 -42
  429. package/src/pkgs/api-router/utils/define-route.ts +0 -410
  430. package/src/pkgs/logger/README.md +0 -213
  431. package/src/pkgs/logger/__tests__/console-formatter.test.ts +0 -67
  432. package/src/pkgs/logger/__tests__/integration.test.ts +0 -184
  433. package/src/pkgs/logger/__tests__/log-levels.test.ts +0 -77
  434. package/src/pkgs/logger/__tests__/logger-factory.test.ts +0 -156
  435. package/src/pkgs/logger/__tests__/result-logging.test.ts +0 -209
  436. package/src/pkgs/logger/__tests__/types.test.ts +0 -94
  437. package/src/pkgs/logger/console-formatter.ts +0 -75
  438. package/src/pkgs/logger/doc.md +0 -569
  439. package/src/pkgs/logger/index.ts +0 -59
  440. package/src/pkgs/logger/log-levels.ts +0 -46
  441. package/src/pkgs/logger/logger-factory.ts +0 -121
  442. package/src/pkgs/logger/result-logging.ts +0 -134
  443. package/src/pkgs/logger/telemetry.ts +0 -96
  444. package/src/pkgs/logger/types.ts +0 -138
  445. package/src/pkgs/results/__tests__/retrieval-pipeline.test.ts +0 -157
  446. package/src/pkgs/results/__tests__/validation-pipeline.test.ts +0 -151
  447. package/src/pkgs/results/h3-integration.ts +0 -142
  448. package/src/pkgs/results/pipeline/retrieval-pipeline.ts +0 -188
  449. package/src/pkgs/results/pipeline/validation-pipeline.ts +0 -164
  450. package/src/plugins/.keep +0 -0
  451. package/src/response-types.ts +0 -29
  452. package/src/routes/__test__/index.test.ts +0 -112
  453. package/src/routes/__test__/set-consent.test.ts +0 -242
  454. package/src/routes/__test__/show-consent-banner.test.ts +0 -98
  455. package/src/routes/__test__/status.test.ts +0 -64
  456. package/src/routes/__test__/verify-consent.test.ts +0 -266
  457. package/src/routes/index.ts +0 -12
  458. package/src/routes/set-consent.ts +0 -249
  459. package/src/routes/show-consent-banner.ts +0 -131
  460. package/src/routes/status.ts +0 -61
  461. package/src/routes/types.ts +0 -7
  462. package/src/routes/verify-consent.ts +0 -206
package/dist/index.d.ts DELETED
@@ -1,11 +0,0 @@
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
- export { c15tInstance, type C15TInstance } from './core';
8
- export * as Types from './pkgs/types';
9
- export type { C15TContext, C15TOptions, C15TPlugin, InferPluginContexts, ApiPathBase, ApiPath, } from './types';
10
- export type { SetConsentResponse, ShowConsentBannerResponse, VerifyConsentResponse, SetConsentRequestBody, VerifyConsentRequestBody, } from './response-types';
11
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,EAAE,YAAY,EAAE,KAAK,YAAY,EAAE,MAAM,QAAQ,CAAC;AAKzD,OAAO,KAAK,KAAK,MAAM,cAAc,CAAC;AAEtC,YAAY,EACX,WAAW,EACX,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,WAAW,EACX,OAAO,GACP,MAAM,SAAS,CAAC;AAGjB,YAAY,EACX,kBAAkB,EAClB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,wBAAwB,GACxB,MAAM,kBAAkB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=init.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"init.test.d.ts","sourceRoot":"","sources":["../src/init.test.ts"],"names":[],"mappings":""}
@@ -1,312 +0,0 @@
1
- "use strict";
2
- var __webpack_require__ = {};
3
- (()=>{
4
- __webpack_require__.d = (exports1, definition)=>{
5
- for(var key in definition)if (__webpack_require__.o(definition, key) && !__webpack_require__.o(exports1, key)) Object.defineProperty(exports1, key, {
6
- enumerable: true,
7
- get: definition[key]
8
- });
9
- };
10
- })();
11
- (()=>{
12
- __webpack_require__.o = (obj, prop)=>Object.prototype.hasOwnProperty.call(obj, prop);
13
- })();
14
- (()=>{
15
- __webpack_require__.r = (exports1)=>{
16
- if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
- value: 'Module'
18
- });
19
- Object.defineProperty(exports1, '__esModule', {
20
- value: true
21
- });
22
- };
23
- })();
24
- var __webpack_exports__ = {};
25
- __webpack_require__.r(__webpack_exports__);
26
- __webpack_require__.d(__webpack_exports__, {
27
- toCloudflareHandler: ()=>toCloudflareHandler
28
- });
29
- require("neverthrow");
30
- const external_h3_namespaceObject = require("h3");
31
- const error_codes_ERROR_CODES = Object.freeze({
32
- NOT_FOUND: 'Resource not found',
33
- BAD_REQUEST: 'Bad request',
34
- CONFLICT: 'Conflict with current state',
35
- MISSING_REQUIRED_PARAMETER: 'Missing required parameter',
36
- UNAUTHORIZED: 'Unauthorized',
37
- FORBIDDEN: 'Forbidden',
38
- INTERNAL_SERVER_ERROR: 'Internal server error',
39
- INITIALIZATION_FAILED: 'Initialization failed',
40
- DATABASE_CONNECTION_ERROR: 'Database connection error',
41
- DATABASE_QUERY_ERROR: 'Database query error',
42
- INVALID_CONFIGURATION: 'Invalid configuration',
43
- REQUEST_HANDLER_ERROR: 'Request handler error',
44
- INVALID_REQUEST: 'Invalid request',
45
- UNKNOWN_ERROR: 'Unknown error',
46
- NETWORK_ERROR: 'Network error',
47
- PLUGIN_INITIALIZATION_FAILED: 'Plugin initialization failed',
48
- API_RETRIEVAL_ERROR: 'API retrieval error',
49
- VALIDATION_ERROR: 'Validation error',
50
- UNEXPECTED: 'Unexpected error'
51
- });
52
- const ERROR_CATEGORIES = Object.freeze({
53
- VALIDATION: 'validation',
54
- AUTHORIZATION: 'authorization',
55
- STORAGE: 'storage',
56
- NETWORK: 'network',
57
- PLUGIN: 'plugin',
58
- CONFIGURATION: 'configuration',
59
- UNEXPECTED: 'unexpected'
60
- });
61
- const api_namespaceObject = require("@opentelemetry/api");
62
- api_namespaceObject.trace.getTracer('@doubletie/results');
63
- class error_class_DoubleTieError extends external_h3_namespaceObject.H3Error {
64
- code;
65
- category;
66
- meta;
67
- constructor(message, options = {
68
- code: error_codes_ERROR_CODES.UNKNOWN_ERROR,
69
- status: 500,
70
- category: ERROR_CATEGORIES.UNEXPECTED,
71
- cause: void 0,
72
- meta: {}
73
- }){
74
- super(message, {
75
- cause: options.cause
76
- });
77
- this.name = this.constructor.name;
78
- this.code = options.code ?? error_codes_ERROR_CODES.UNKNOWN_ERROR;
79
- this.statusCode = options.status ?? 500;
80
- this.category = options.category ?? ERROR_CATEGORIES.UNEXPECTED;
81
- this.meta = options.meta ?? {};
82
- this.data = {
83
- code: this.code,
84
- category: this.category,
85
- meta: this.meta
86
- };
87
- tracing_withSpan('create_doubletie_error', async (span)=>{
88
- span.setAttributes({
89
- 'error.name': this.name,
90
- 'error.message': message,
91
- 'error.code': this.code,
92
- 'error.status': this.statusCode,
93
- 'error.category': this.category,
94
- 'error.has_cause': !!this.cause,
95
- 'error.cause_type': this.cause instanceof Error ? this.cause.constructor.name : typeof this.cause,
96
- 'error.has_meta': !!this.meta
97
- });
98
- if (this.cause instanceof Error) span.recordException(this.cause);
99
- });
100
- if (Error.captureStackTrace) Error.captureStackTrace(this, this.constructor);
101
- }
102
- static isDoubleTieError(error) {
103
- return error instanceof error_class_DoubleTieError;
104
- }
105
- toJSON() {
106
- const validationErrorMessage = this.meta?.validationErrors ? String(this.meta.validationErrors) : void 0;
107
- const stackTrace = this.stack ? this.stack.split('\n').map((line)=>line.trim()).filter((line)=>line && !line.includes('Error: ')) : [];
108
- return {
109
- statusCode: this.statusCode,
110
- message: validationErrorMessage || this.message,
111
- statusMessage: this.statusMessage,
112
- data: {
113
- code: this.code,
114
- category: this.category,
115
- meta: this.meta,
116
- ...'production' === process.env.NODE_ENV ? {} : {
117
- stack: stackTrace
118
- },
119
- ...validationErrorMessage && this.message ? {
120
- originalMessage: this.message
121
- } : {},
122
- ...this.cause ? {
123
- cause: this.cause instanceof Error ? {
124
- name: this.cause.name,
125
- message: this.cause.message,
126
- stack: this.cause.stack ? this.cause.stack.split('\n').map((line)=>line.trim()) : void 0
127
- } : this.cause
128
- } : {}
129
- }
130
- };
131
- }
132
- static fromResponse(response, data) {
133
- let message = `HTTP error ${response.status}`;
134
- let errorCode = `HTTP ${response.status}`;
135
- let errorMeta = {};
136
- if (data && 'object' == typeof data && null !== data) {
137
- const errorObj = data;
138
- if ('string' == typeof errorObj.message) message = errorObj.message;
139
- if ('string' == typeof errorObj.code) errorCode = errorObj.code;
140
- if ('object' == typeof errorObj.data && null !== errorObj.data) errorMeta = errorObj.data;
141
- }
142
- return new error_class_DoubleTieError(message, {
143
- code: errorCode,
144
- status: response.status,
145
- meta: errorMeta
146
- });
147
- }
148
- withMeta(additionalMeta) {
149
- return new error_class_DoubleTieError(this.message, {
150
- code: this.code,
151
- status: this.statusCode,
152
- category: this.category,
153
- cause: this.cause instanceof Error ? this.cause : void 0,
154
- meta: {
155
- ...this.meta,
156
- ...additionalMeta
157
- }
158
- });
159
- }
160
- static createSubclass(name) {
161
- const ErrorSubclass = class extends error_class_DoubleTieError {
162
- constructor(message, options){
163
- super(message, options);
164
- this.name = name;
165
- }
166
- };
167
- Object.defineProperty(ErrorSubclass, 'name', {
168
- value: name
169
- });
170
- return ErrorSubclass;
171
- }
172
- static formatValidationError(error) {
173
- if (!error.meta) return error.message;
174
- let formattedMessage = `${error.message} (${error.code})`;
175
- if (error.meta.validationErrors) formattedMessage += `\nValidation Errors: ${JSON.stringify(error.meta.validationErrors, null, 2)}`;
176
- const otherMeta = Object.fromEntries(Object.entries(error.meta).filter(([key])=>'validationErrors' !== key));
177
- if (Object.keys(otherMeta).length > 0) formattedMessage += `\nAdditional Context: ${JSON.stringify(otherMeta, null, 2)}`;
178
- return formattedMessage;
179
- }
180
- }
181
- function toCloudflareHandler(instance) {
182
- return async (request)=>{
183
- try {
184
- const basePath = instance.options?.basePath || '/api/c15t';
185
- const originalUrl = new URL(request.url);
186
- let pathWithoutBase = originalUrl.pathname;
187
- if ('OPTIONS' === request.method) return handleCorsPreflightRequest(request, instance);
188
- if (pathWithoutBase.startsWith(basePath)) {
189
- pathWithoutBase = pathWithoutBase.substring(basePath.length);
190
- if (!pathWithoutBase.startsWith('/')) pathWithoutBase = `/${pathWithoutBase}`;
191
- }
192
- const rewrittenUrl = new URL(originalUrl.toString());
193
- rewrittenUrl.pathname = pathWithoutBase;
194
- const headers = new Headers();
195
- for (const [key, value] of request.headers.entries())headers.set(key, value);
196
- const rewrittenRequest = new Request(rewrittenUrl.toString(), {
197
- method: request.method,
198
- headers,
199
- body: [
200
- 'GET',
201
- 'HEAD'
202
- ].includes(request.method) ? void 0 : request.body,
203
- duplex: [
204
- 'GET',
205
- 'HEAD'
206
- ].includes(request.method) ? void 0 : 'half'
207
- });
208
- const result = await instance.handler(rewrittenRequest);
209
- return await result.match((response)=>addCorsHeaders(response, request, instance), (error)=>{
210
- const status = error.statusCode || 500;
211
- const message = error.message || error_codes_ERROR_CODES.INTERNAL_SERVER_ERROR;
212
- const errorResponse = new Response(JSON.stringify({
213
- error: true,
214
- code: error.code || error_codes_ERROR_CODES.INTERNAL_SERVER_ERROR,
215
- message,
216
- meta: error.meta
217
- }), {
218
- status,
219
- headers: {
220
- 'Content-Type': 'application/json'
221
- }
222
- });
223
- return addCorsHeaders(errorResponse, request, instance);
224
- });
225
- } catch (error) {
226
- const errorResponse = new Response(JSON.stringify({
227
- error: true,
228
- code: error_codes_ERROR_CODES.INTERNAL_SERVER_ERROR,
229
- message: 'An unexpected error occurred',
230
- meta: {
231
- error: String(error)
232
- }
233
- }), {
234
- status: 500,
235
- headers: {
236
- 'Content-Type': 'application/json'
237
- }
238
- });
239
- return addCorsHeaders(errorResponse, request, instance);
240
- }
241
- };
242
- function handleCorsPreflightRequest(request, instance) {
243
- const origin = request.headers.get('Origin');
244
- const isTrusted = isTrustedOrigin(origin, instance);
245
- const headers = new Headers({
246
- 'Access-Control-Allow-Origin': isTrusted && origin ? origin : '*',
247
- 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
248
- 'Access-Control-Allow-Headers': 'Content-Type, Authorization, x-request-id',
249
- 'Access-Control-Max-Age': '86400'
250
- });
251
- if (isTrusted) headers.set('Access-Control-Allow-Credentials', 'true');
252
- return new Response(null, {
253
- status: 204,
254
- headers
255
- });
256
- }
257
- function addCorsHeaders(response, request, instance) {
258
- const origin = request.headers.get('Origin');
259
- const isTrusted = isTrustedOrigin(origin, instance);
260
- const newResponse = new Response(response.body, {
261
- status: response.status,
262
- statusText: response.statusText,
263
- headers: response.headers
264
- });
265
- newResponse.headers.set('Access-Control-Allow-Origin', isTrusted && origin ? origin : '*');
266
- if (isTrusted) newResponse.headers.set('Access-Control-Allow-Credentials', 'true');
267
- return newResponse;
268
- }
269
- function isTrustedOrigin(origin, instance) {
270
- if (!origin) return false;
271
- const { trustedOrigins = [] } = instance.options || {};
272
- let originsArray = [];
273
- if (Array.isArray(trustedOrigins)) originsArray = trustedOrigins.map((item)=>{
274
- if ('string' == typeof item && (item.startsWith('"') && item.endsWith('"') || item.startsWith('[') && item.endsWith(']'))) try {
275
- const parsed = JSON.parse(item);
276
- return 'string' == typeof parsed ? parsed : item;
277
- } catch {}
278
- return item;
279
- });
280
- else if ('string' == typeof trustedOrigins) if (trustedOrigins.startsWith('[') && trustedOrigins.endsWith(']')) try {
281
- const parsed = JSON.parse(trustedOrigins);
282
- originsArray = Array.isArray(parsed) ? parsed : [
283
- trustedOrigins
284
- ];
285
- } catch {
286
- originsArray = [
287
- trustedOrigins
288
- ];
289
- }
290
- else originsArray = [
291
- trustedOrigins
292
- ];
293
- if (originsArray.includes('*')) return true;
294
- const isExactMatch = originsArray.includes(origin);
295
- if (isExactMatch) return true;
296
- try {
297
- const originUrl = new URL(origin);
298
- const originHostname = originUrl.hostname;
299
- if (originsArray.includes(originHostname)) return true;
300
- return false;
301
- } catch {
302
- return false;
303
- }
304
- }
305
- }
306
- exports.toCloudflareHandler = __webpack_exports__.toCloudflareHandler;
307
- for(var __webpack_i__ in __webpack_exports__)if (-1 === [
308
- "toCloudflareHandler"
309
- ].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
310
- Object.defineProperty(exports, '__esModule', {
311
- value: true
312
- });
@@ -1,32 +0,0 @@
1
- import type { C15TInstance } from '../core';
2
- /**
3
- * Convert a c15t handler to a Cloudflare Worker handler.
4
- *
5
- * This adapter is specifically designed for Cloudflare Workers environments,
6
- * avoiding Node.js-specific dependencies and APIs.
7
- *
8
- * @example
9
- * ```typescript
10
- * import { toCloudflareHandler } from '@c15t/backend/integrations';
11
- * import { c15tInstance } from '@c15t/backend';
12
- *
13
- * // Create c15t instance
14
- * const c15t = c15tInstance({
15
- * basePath: '/',
16
- * cors: true,
17
- * // other options...
18
- * });
19
- *
20
- * // Export the worker handler
21
- * export default {
22
- * async fetch(request, env, ctx) {
23
- * return await toCloudflareHandler(c15t)(request);
24
- * }
25
- * };
26
- * ```
27
- *
28
- * @param instance - The c15t instance to adapt
29
- * @returns A handler function suitable for Cloudflare Workers
30
- */
31
- export declare function toCloudflareHandler(instance: C15TInstance): (request: Request) => Promise<Response>;
32
- //# sourceMappingURL=cloudflare.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"cloudflare.d.ts","sourceRoot":"","sources":["../../src/integrations/cloudflare.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAG3C;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,YAAY,IAC3C,SAAS,OAAO,KAAG,OAAO,CAAC,QAAQ,CAAC,CA2OlD"}
@@ -1,278 +0,0 @@
1
- import "neverthrow";
2
- import * as __WEBPACK_EXTERNAL_MODULE_h3__ from "h3";
3
- import * as __WEBPACK_EXTERNAL_MODULE__opentelemetry_api_87359e78__ from "@opentelemetry/api";
4
- const error_codes_ERROR_CODES = Object.freeze({
5
- NOT_FOUND: 'Resource not found',
6
- BAD_REQUEST: 'Bad request',
7
- CONFLICT: 'Conflict with current state',
8
- MISSING_REQUIRED_PARAMETER: 'Missing required parameter',
9
- UNAUTHORIZED: 'Unauthorized',
10
- FORBIDDEN: 'Forbidden',
11
- INTERNAL_SERVER_ERROR: 'Internal server error',
12
- INITIALIZATION_FAILED: 'Initialization failed',
13
- DATABASE_CONNECTION_ERROR: 'Database connection error',
14
- DATABASE_QUERY_ERROR: 'Database query error',
15
- INVALID_CONFIGURATION: 'Invalid configuration',
16
- REQUEST_HANDLER_ERROR: 'Request handler error',
17
- INVALID_REQUEST: 'Invalid request',
18
- UNKNOWN_ERROR: 'Unknown error',
19
- NETWORK_ERROR: 'Network error',
20
- PLUGIN_INITIALIZATION_FAILED: 'Plugin initialization failed',
21
- API_RETRIEVAL_ERROR: 'API retrieval error',
22
- VALIDATION_ERROR: 'Validation error',
23
- UNEXPECTED: 'Unexpected error'
24
- });
25
- const ERROR_CATEGORIES = Object.freeze({
26
- VALIDATION: 'validation',
27
- AUTHORIZATION: 'authorization',
28
- STORAGE: 'storage',
29
- NETWORK: 'network',
30
- PLUGIN: 'plugin',
31
- CONFIGURATION: 'configuration',
32
- UNEXPECTED: 'unexpected'
33
- });
34
- __WEBPACK_EXTERNAL_MODULE__opentelemetry_api_87359e78__.trace.getTracer('@doubletie/results');
35
- class error_class_DoubleTieError extends __WEBPACK_EXTERNAL_MODULE_h3__.H3Error {
36
- code;
37
- category;
38
- meta;
39
- constructor(message, options = {
40
- code: error_codes_ERROR_CODES.UNKNOWN_ERROR,
41
- status: 500,
42
- category: ERROR_CATEGORIES.UNEXPECTED,
43
- cause: void 0,
44
- meta: {}
45
- }){
46
- super(message, {
47
- cause: options.cause
48
- });
49
- this.name = this.constructor.name;
50
- this.code = options.code ?? error_codes_ERROR_CODES.UNKNOWN_ERROR;
51
- this.statusCode = options.status ?? 500;
52
- this.category = options.category ?? ERROR_CATEGORIES.UNEXPECTED;
53
- this.meta = options.meta ?? {};
54
- this.data = {
55
- code: this.code,
56
- category: this.category,
57
- meta: this.meta
58
- };
59
- tracing_withSpan('create_doubletie_error', async (span)=>{
60
- span.setAttributes({
61
- 'error.name': this.name,
62
- 'error.message': message,
63
- 'error.code': this.code,
64
- 'error.status': this.statusCode,
65
- 'error.category': this.category,
66
- 'error.has_cause': !!this.cause,
67
- 'error.cause_type': this.cause instanceof Error ? this.cause.constructor.name : typeof this.cause,
68
- 'error.has_meta': !!this.meta
69
- });
70
- if (this.cause instanceof Error) span.recordException(this.cause);
71
- });
72
- if (Error.captureStackTrace) Error.captureStackTrace(this, this.constructor);
73
- }
74
- static isDoubleTieError(error) {
75
- return error instanceof error_class_DoubleTieError;
76
- }
77
- toJSON() {
78
- const validationErrorMessage = this.meta?.validationErrors ? String(this.meta.validationErrors) : void 0;
79
- const stackTrace = this.stack ? this.stack.split('\n').map((line)=>line.trim()).filter((line)=>line && !line.includes('Error: ')) : [];
80
- return {
81
- statusCode: this.statusCode,
82
- message: validationErrorMessage || this.message,
83
- statusMessage: this.statusMessage,
84
- data: {
85
- code: this.code,
86
- category: this.category,
87
- meta: this.meta,
88
- ...'production' === process.env.NODE_ENV ? {} : {
89
- stack: stackTrace
90
- },
91
- ...validationErrorMessage && this.message ? {
92
- originalMessage: this.message
93
- } : {},
94
- ...this.cause ? {
95
- cause: this.cause instanceof Error ? {
96
- name: this.cause.name,
97
- message: this.cause.message,
98
- stack: this.cause.stack ? this.cause.stack.split('\n').map((line)=>line.trim()) : void 0
99
- } : this.cause
100
- } : {}
101
- }
102
- };
103
- }
104
- static fromResponse(response, data) {
105
- let message = `HTTP error ${response.status}`;
106
- let errorCode = `HTTP ${response.status}`;
107
- let errorMeta = {};
108
- if (data && 'object' == typeof data && null !== data) {
109
- const errorObj = data;
110
- if ('string' == typeof errorObj.message) message = errorObj.message;
111
- if ('string' == typeof errorObj.code) errorCode = errorObj.code;
112
- if ('object' == typeof errorObj.data && null !== errorObj.data) errorMeta = errorObj.data;
113
- }
114
- return new error_class_DoubleTieError(message, {
115
- code: errorCode,
116
- status: response.status,
117
- meta: errorMeta
118
- });
119
- }
120
- withMeta(additionalMeta) {
121
- return new error_class_DoubleTieError(this.message, {
122
- code: this.code,
123
- status: this.statusCode,
124
- category: this.category,
125
- cause: this.cause instanceof Error ? this.cause : void 0,
126
- meta: {
127
- ...this.meta,
128
- ...additionalMeta
129
- }
130
- });
131
- }
132
- static createSubclass(name) {
133
- const ErrorSubclass = class extends error_class_DoubleTieError {
134
- constructor(message, options){
135
- super(message, options);
136
- this.name = name;
137
- }
138
- };
139
- Object.defineProperty(ErrorSubclass, 'name', {
140
- value: name
141
- });
142
- return ErrorSubclass;
143
- }
144
- static formatValidationError(error) {
145
- if (!error.meta) return error.message;
146
- let formattedMessage = `${error.message} (${error.code})`;
147
- if (error.meta.validationErrors) formattedMessage += `\nValidation Errors: ${JSON.stringify(error.meta.validationErrors, null, 2)}`;
148
- const otherMeta = Object.fromEntries(Object.entries(error.meta).filter(([key])=>'validationErrors' !== key));
149
- if (Object.keys(otherMeta).length > 0) formattedMessage += `\nAdditional Context: ${JSON.stringify(otherMeta, null, 2)}`;
150
- return formattedMessage;
151
- }
152
- }
153
- function toCloudflareHandler(instance) {
154
- return async (request)=>{
155
- try {
156
- const basePath = instance.options?.basePath || '/api/c15t';
157
- const originalUrl = new URL(request.url);
158
- let pathWithoutBase = originalUrl.pathname;
159
- if ('OPTIONS' === request.method) return handleCorsPreflightRequest(request, instance);
160
- if (pathWithoutBase.startsWith(basePath)) {
161
- pathWithoutBase = pathWithoutBase.substring(basePath.length);
162
- if (!pathWithoutBase.startsWith('/')) pathWithoutBase = `/${pathWithoutBase}`;
163
- }
164
- const rewrittenUrl = new URL(originalUrl.toString());
165
- rewrittenUrl.pathname = pathWithoutBase;
166
- const headers = new Headers();
167
- for (const [key, value] of request.headers.entries())headers.set(key, value);
168
- const rewrittenRequest = new Request(rewrittenUrl.toString(), {
169
- method: request.method,
170
- headers,
171
- body: [
172
- 'GET',
173
- 'HEAD'
174
- ].includes(request.method) ? void 0 : request.body,
175
- duplex: [
176
- 'GET',
177
- 'HEAD'
178
- ].includes(request.method) ? void 0 : 'half'
179
- });
180
- const result = await instance.handler(rewrittenRequest);
181
- return await result.match((response)=>addCorsHeaders(response, request, instance), (error)=>{
182
- const status = error.statusCode || 500;
183
- const message = error.message || error_codes_ERROR_CODES.INTERNAL_SERVER_ERROR;
184
- const errorResponse = new Response(JSON.stringify({
185
- error: true,
186
- code: error.code || error_codes_ERROR_CODES.INTERNAL_SERVER_ERROR,
187
- message,
188
- meta: error.meta
189
- }), {
190
- status,
191
- headers: {
192
- 'Content-Type': 'application/json'
193
- }
194
- });
195
- return addCorsHeaders(errorResponse, request, instance);
196
- });
197
- } catch (error) {
198
- const errorResponse = new Response(JSON.stringify({
199
- error: true,
200
- code: error_codes_ERROR_CODES.INTERNAL_SERVER_ERROR,
201
- message: 'An unexpected error occurred',
202
- meta: {
203
- error: String(error)
204
- }
205
- }), {
206
- status: 500,
207
- headers: {
208
- 'Content-Type': 'application/json'
209
- }
210
- });
211
- return addCorsHeaders(errorResponse, request, instance);
212
- }
213
- };
214
- function handleCorsPreflightRequest(request, instance) {
215
- const origin = request.headers.get('Origin');
216
- const isTrusted = isTrustedOrigin(origin, instance);
217
- const headers = new Headers({
218
- 'Access-Control-Allow-Origin': isTrusted && origin ? origin : '*',
219
- 'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE, OPTIONS',
220
- 'Access-Control-Allow-Headers': 'Content-Type, Authorization, x-request-id',
221
- 'Access-Control-Max-Age': '86400'
222
- });
223
- if (isTrusted) headers.set('Access-Control-Allow-Credentials', 'true');
224
- return new Response(null, {
225
- status: 204,
226
- headers
227
- });
228
- }
229
- function addCorsHeaders(response, request, instance) {
230
- const origin = request.headers.get('Origin');
231
- const isTrusted = isTrustedOrigin(origin, instance);
232
- const newResponse = new Response(response.body, {
233
- status: response.status,
234
- statusText: response.statusText,
235
- headers: response.headers
236
- });
237
- newResponse.headers.set('Access-Control-Allow-Origin', isTrusted && origin ? origin : '*');
238
- if (isTrusted) newResponse.headers.set('Access-Control-Allow-Credentials', 'true');
239
- return newResponse;
240
- }
241
- function isTrustedOrigin(origin, instance) {
242
- if (!origin) return false;
243
- const { trustedOrigins = [] } = instance.options || {};
244
- let originsArray = [];
245
- if (Array.isArray(trustedOrigins)) originsArray = trustedOrigins.map((item)=>{
246
- if ('string' == typeof item && (item.startsWith('"') && item.endsWith('"') || item.startsWith('[') && item.endsWith(']'))) try {
247
- const parsed = JSON.parse(item);
248
- return 'string' == typeof parsed ? parsed : item;
249
- } catch {}
250
- return item;
251
- });
252
- else if ('string' == typeof trustedOrigins) if (trustedOrigins.startsWith('[') && trustedOrigins.endsWith(']')) try {
253
- const parsed = JSON.parse(trustedOrigins);
254
- originsArray = Array.isArray(parsed) ? parsed : [
255
- trustedOrigins
256
- ];
257
- } catch {
258
- originsArray = [
259
- trustedOrigins
260
- ];
261
- }
262
- else originsArray = [
263
- trustedOrigins
264
- ];
265
- if (originsArray.includes('*')) return true;
266
- const isExactMatch = originsArray.includes(origin);
267
- if (isExactMatch) return true;
268
- try {
269
- const originUrl = new URL(origin);
270
- const originHostname = originUrl.hostname;
271
- if (originsArray.includes(originHostname)) return true;
272
- return false;
273
- } catch {
274
- return false;
275
- }
276
- }
277
- }
278
- export { toCloudflareHandler };