@c15t/backend 1.0.0 → 1.1.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 (478) hide show
  1. package/.turbo/turbo-build.log +33 -39
  2. package/.turbo/turbo-fmt.log +7 -0
  3. package/.turbo/turbo-test.log +531 -0
  4. package/README.md +19 -7
  5. package/coverage/coverage-final.json +84 -0
  6. package/coverage/coverage-summary.json +85 -0
  7. package/coverage/html/backend/index.html +116 -0
  8. package/coverage/html/backend/rslib.config.ts.html +415 -0
  9. package/coverage/html/backend/src/contracts/consent/index.html +161 -0
  10. package/coverage/html/backend/src/contracts/consent/index.ts.html +112 -0
  11. package/coverage/html/backend/src/contracts/consent/post.contract.ts.html +559 -0
  12. package/coverage/html/backend/src/contracts/consent/show-banner.contract.ts.html +220 -0
  13. package/coverage/html/backend/src/contracts/consent/verify.contract.ts.html +463 -0
  14. package/coverage/html/backend/src/contracts/index.html +116 -0
  15. package/coverage/html/backend/src/contracts/index.ts.html +139 -0
  16. package/coverage/html/backend/src/contracts/meta/index.html +131 -0
  17. package/coverage/html/backend/src/contracts/meta/index.ts.html +100 -0
  18. package/coverage/html/backend/src/contracts/meta/status.contract.ts.html +196 -0
  19. package/coverage/html/backend/src/contracts/shared/index.html +116 -0
  20. package/coverage/html/backend/src/contracts/shared/jurisdiction.schema.ts.html +175 -0
  21. package/coverage/html/backend/src/core.ts.html +1624 -0
  22. package/coverage/html/backend/src/handlers/consent/index.html +161 -0
  23. package/coverage/html/backend/src/handlers/consent/index.ts.html +112 -0
  24. package/coverage/html/backend/src/handlers/consent/post.handler.ts.html +889 -0
  25. package/coverage/html/backend/src/handlers/consent/show-banner.handler.ts.html +535 -0
  26. package/coverage/html/backend/src/handlers/consent/verify.handler.ts.html +1000 -0
  27. package/coverage/html/backend/src/handlers/meta/index.html +131 -0
  28. package/coverage/html/backend/src/handlers/meta/index.ts.html +100 -0
  29. package/coverage/html/backend/src/handlers/meta/status.handler.ts.html +226 -0
  30. package/coverage/html/backend/src/index.html +161 -0
  31. package/coverage/html/backend/src/init.ts.html +1018 -0
  32. package/coverage/html/backend/src/pkgs/api-router/hooks/index.html +116 -0
  33. package/coverage/html/backend/src/pkgs/api-router/hooks/processor.ts.html +544 -0
  34. package/coverage/html/backend/src/pkgs/api-router/index.html +116 -0
  35. package/coverage/html/backend/src/pkgs/api-router/telemetry.ts.html +334 -0
  36. package/coverage/html/backend/src/pkgs/api-router/utils/cors.ts.html +304 -0
  37. package/coverage/html/backend/src/pkgs/api-router/utils/index.html +131 -0
  38. package/coverage/html/backend/src/pkgs/api-router/utils/ip.ts.html +361 -0
  39. package/coverage/html/backend/src/pkgs/data-model/fields/field-factory.ts.html +709 -0
  40. package/coverage/html/backend/src/pkgs/data-model/fields/id-generator.ts.html +256 -0
  41. package/coverage/html/backend/src/pkgs/data-model/fields/index.html +161 -0
  42. package/coverage/html/backend/src/pkgs/data-model/fields/superjson-utils.ts.html +136 -0
  43. package/coverage/html/backend/src/pkgs/data-model/fields/zod-fields.ts.html +496 -0
  44. package/coverage/html/backend/src/pkgs/data-model/hooks/create-hooks.ts.html +349 -0
  45. package/coverage/html/backend/src/pkgs/data-model/hooks/index.html +176 -0
  46. package/coverage/html/backend/src/pkgs/data-model/hooks/update-hooks.ts.html +358 -0
  47. package/coverage/html/backend/src/pkgs/data-model/hooks/update-many-hooks.ts.html +613 -0
  48. package/coverage/html/backend/src/pkgs/data-model/hooks/utils.ts.html +538 -0
  49. package/coverage/html/backend/src/pkgs/data-model/hooks/with-hooks-factory.ts.html +289 -0
  50. package/coverage/html/backend/src/pkgs/db-adapters/adapter-factory.ts.html +289 -0
  51. package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts.html +2203 -0
  52. package/coverage/html/backend/src/pkgs/db-adapters/adapters/drizzle-adapter/index.html +116 -0
  53. package/coverage/html/backend/src/pkgs/db-adapters/adapters/index.html +116 -0
  54. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/dialect.ts.html +670 -0
  55. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/index.html +131 -0
  56. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts.html +3634 -0
  57. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/index.html +116 -0
  58. package/coverage/html/backend/src/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.ts.html +1417 -0
  59. package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/index.html +116 -0
  60. package/coverage/html/backend/src/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.ts.html +2071 -0
  61. package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/index.html +116 -0
  62. package/coverage/html/backend/src/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.ts.html +1834 -0
  63. package/coverage/html/backend/src/pkgs/db-adapters/adapters/test.ts.html +316 -0
  64. package/coverage/html/backend/src/pkgs/db-adapters/index.html +131 -0
  65. package/coverage/html/backend/src/pkgs/db-adapters/utils.ts.html +238 -0
  66. package/coverage/html/backend/src/pkgs/migrations/get-migration.ts.html +343 -0
  67. package/coverage/html/backend/src/pkgs/migrations/get-schema/get-schema.ts.html +217 -0
  68. package/coverage/html/backend/src/pkgs/migrations/get-schema/index.html +146 -0
  69. package/coverage/html/backend/src/pkgs/migrations/get-schema/process-fields.ts.html +280 -0
  70. package/coverage/html/backend/src/pkgs/migrations/get-schema/process-tables.ts.html +289 -0
  71. package/coverage/html/backend/src/pkgs/migrations/index.html +176 -0
  72. package/coverage/html/backend/src/pkgs/migrations/migration-builders.ts.html +595 -0
  73. package/coverage/html/backend/src/pkgs/migrations/migration-execution.ts.html +301 -0
  74. package/coverage/html/backend/src/pkgs/migrations/schema-comparison.ts.html +694 -0
  75. package/coverage/html/backend/src/pkgs/migrations/type-mapping.ts.html +817 -0
  76. package/coverage/html/backend/src/pkgs/results/core/error-class.ts.html +976 -0
  77. package/coverage/html/backend/src/pkgs/results/core/error-codes.ts.html +703 -0
  78. package/coverage/html/backend/src/pkgs/results/core/index.html +146 -0
  79. package/coverage/html/backend/src/pkgs/results/core/tracing.ts.html +280 -0
  80. package/coverage/html/backend/src/pkgs/results/create-telemetry-options.ts.html +271 -0
  81. package/coverage/html/backend/src/pkgs/results/index.html +131 -0
  82. package/coverage/html/backend/src/pkgs/results/orpc-error-handler.ts.html +496 -0
  83. package/coverage/html/backend/src/pkgs/results/results/index.html +131 -0
  84. package/coverage/html/backend/src/pkgs/results/results/recovery-utils.ts.html +628 -0
  85. package/coverage/html/backend/src/pkgs/results/results/result-helpers.ts.html +1234 -0
  86. package/coverage/html/backend/src/pkgs/utils/env.ts.html +337 -0
  87. package/coverage/html/backend/src/pkgs/utils/index.html +146 -0
  88. package/coverage/html/backend/src/pkgs/utils/logger.ts.html +199 -0
  89. package/coverage/html/backend/src/pkgs/utils/url.ts.html +400 -0
  90. package/coverage/html/backend/src/router.ts.html +109 -0
  91. package/coverage/html/backend/src/schema/audit-log/index.html +146 -0
  92. package/coverage/html/backend/src/schema/audit-log/registry.ts.html +436 -0
  93. package/coverage/html/backend/src/schema/audit-log/schema.ts.html +223 -0
  94. package/coverage/html/backend/src/schema/audit-log/table.ts.html +640 -0
  95. package/coverage/html/backend/src/schema/consent/index.html +146 -0
  96. package/coverage/html/backend/src/schema/consent/registry.ts.html +616 -0
  97. package/coverage/html/backend/src/schema/consent/schema.ts.html +238 -0
  98. package/coverage/html/backend/src/schema/consent/table.ts.html +748 -0
  99. package/coverage/html/backend/src/schema/consent-policy/index.html +146 -0
  100. package/coverage/html/backend/src/schema/consent-policy/registry.ts.html +1063 -0
  101. package/coverage/html/backend/src/schema/consent-policy/schema.ts.html +265 -0
  102. package/coverage/html/backend/src/schema/consent-policy/table.ts.html +535 -0
  103. package/coverage/html/backend/src/schema/consent-purpose/index.html +146 -0
  104. package/coverage/html/backend/src/schema/consent-purpose/registry.ts.html +589 -0
  105. package/coverage/html/backend/src/schema/consent-purpose/schema.ts.html +259 -0
  106. package/coverage/html/backend/src/schema/consent-purpose/table.ts.html +547 -0
  107. package/coverage/html/backend/src/schema/consent-record/index.html +131 -0
  108. package/coverage/html/backend/src/schema/consent-record/schema.ts.html +211 -0
  109. package/coverage/html/backend/src/schema/consent-record/table.ts.html +457 -0
  110. package/coverage/html/backend/src/schema/create-registry.ts.html +148 -0
  111. package/coverage/html/backend/src/schema/definition.ts.html +685 -0
  112. package/coverage/html/backend/src/schema/domain/index.html +146 -0
  113. package/coverage/html/backend/src/schema/domain/registry.ts.html +973 -0
  114. package/coverage/html/backend/src/schema/domain/schema.ts.html +214 -0
  115. package/coverage/html/backend/src/schema/domain/table.ts.html +496 -0
  116. package/coverage/html/backend/src/schema/index.html +146 -0
  117. package/coverage/html/backend/src/schema/schemas.ts.html +166 -0
  118. package/coverage/html/backend/src/schema/subject/index.html +146 -0
  119. package/coverage/html/backend/src/schema/subject/registry.ts.html +973 -0
  120. package/coverage/html/backend/src/schema/subject/schema.ts.html +208 -0
  121. package/coverage/html/backend/src/schema/subject/table.ts.html +499 -0
  122. package/coverage/html/backend/src/server.ts.html +475 -0
  123. package/coverage/html/backend/src/testing/contract-testing.ts.html +1348 -0
  124. package/coverage/html/backend/src/testing/index.html +116 -0
  125. package/coverage/html/base.css +224 -0
  126. package/coverage/html/block-navigation.js +87 -0
  127. package/coverage/html/favicon.png +0 -0
  128. package/coverage/html/index.html +626 -0
  129. package/coverage/html/prettify.css +1 -0
  130. package/coverage/html/prettify.js +2 -0
  131. package/coverage/html/sort-arrow-sprite.png +0 -0
  132. package/coverage/html/sorter.js +196 -0
  133. package/dist/contracts/consent/index.d.ts +401 -0
  134. package/dist/contracts/consent/index.d.ts.map +1 -0
  135. package/dist/contracts/consent/index.test.d.ts +2 -0
  136. package/dist/contracts/consent/index.test.d.ts.map +1 -0
  137. package/dist/contracts/consent/post.contract.d.ts +212 -0
  138. package/dist/contracts/consent/post.contract.d.ts.map +1 -0
  139. package/dist/contracts/consent/post.contract.test.d.ts +2 -0
  140. package/dist/contracts/consent/post.contract.test.d.ts.map +1 -0
  141. package/dist/contracts/consent/show-banner.contract.d.ts +45 -0
  142. package/dist/contracts/consent/show-banner.contract.d.ts.map +1 -0
  143. package/dist/contracts/consent/show-banner.contract.test.d.ts +2 -0
  144. package/dist/contracts/consent/show-banner.contract.test.d.ts.map +1 -0
  145. package/dist/contracts/consent/verify.contract.d.ts +147 -0
  146. package/dist/contracts/consent/verify.contract.d.ts.map +1 -0
  147. package/dist/contracts/consent/verify.contract.test.d.ts +2 -0
  148. package/dist/contracts/consent/verify.contract.test.d.ts.map +1 -0
  149. package/dist/contracts/index.d.ts +963 -0
  150. package/dist/contracts/index.d.ts.map +1 -0
  151. package/dist/contracts/meta/index.d.ts +78 -0
  152. package/dist/contracts/meta/index.d.ts.map +1 -0
  153. package/dist/contracts/meta/index.test.d.ts +2 -0
  154. package/dist/contracts/meta/index.test.d.ts.map +1 -0
  155. package/dist/contracts/meta/status.contract.d.ts +77 -0
  156. package/dist/contracts/meta/status.contract.d.ts.map +1 -0
  157. package/dist/contracts/meta/status.contract.test.d.ts +2 -0
  158. package/dist/contracts/meta/status.contract.test.d.ts.map +1 -0
  159. package/dist/contracts/shared/jurisdiction.schema.d.ts +24 -0
  160. package/dist/contracts/shared/jurisdiction.schema.d.ts.map +1 -0
  161. package/dist/core.cjs +3584 -0
  162. package/dist/core.d.ts +533 -78
  163. package/dist/core.d.ts.map +1 -1
  164. package/dist/{index.js → core.js} +1164 -1292
  165. package/dist/handlers/consent/index.d.ts +401 -0
  166. package/dist/handlers/consent/index.d.ts.map +1 -0
  167. package/dist/handlers/consent/post.handler.d.ts +234 -0
  168. package/dist/handlers/consent/post.handler.d.ts.map +1 -0
  169. package/dist/handlers/consent/show-banner.handler.d.ts +57 -0
  170. package/dist/handlers/consent/show-banner.handler.d.ts.map +1 -0
  171. package/dist/handlers/consent/show-banner.handler.test.d.ts +2 -0
  172. package/dist/handlers/consent/show-banner.handler.test.d.ts.map +1 -0
  173. package/dist/handlers/consent/verify.handler.d.ts +169 -0
  174. package/dist/handlers/consent/verify.handler.d.ts.map +1 -0
  175. package/dist/handlers/meta/index.d.ts +78 -0
  176. package/dist/handlers/meta/index.d.ts.map +1 -0
  177. package/dist/handlers/meta/status.handler.d.ts +76 -0
  178. package/dist/handlers/meta/status.handler.d.ts.map +1 -0
  179. package/dist/init.d.ts +0 -1
  180. package/dist/init.d.ts.map +1 -1
  181. package/dist/pkgs/api-router/hooks/processor.d.ts.map +1 -1
  182. package/dist/pkgs/api-router/types/router-props.d.ts +1 -1
  183. package/dist/pkgs/api-router/types/router-props.d.ts.map +1 -1
  184. package/dist/pkgs/api-router/utils/cors.d.ts +1 -1
  185. package/dist/pkgs/api-router/utils/cors.d.ts.map +1 -1
  186. package/dist/pkgs/data-model/fields/field-types.d.ts +1 -1
  187. package/dist/pkgs/data-model/fields/zod-fields.d.ts +32 -32
  188. package/dist/pkgs/data-model/index.cjs +1433 -1799
  189. package/dist/pkgs/data-model/index.js +20 -385
  190. package/dist/pkgs/data-model/schema/index.cjs +1402 -1768
  191. package/dist/pkgs/data-model/schema/index.js +20 -385
  192. package/dist/pkgs/db-adapters/adapter-factory.d.ts +2 -2
  193. package/dist/pkgs/db-adapters/adapter-factory.d.ts.map +1 -1
  194. package/dist/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.d.ts +4 -7
  195. package/dist/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.d.ts.map +1 -1
  196. package/dist/pkgs/db-adapters/adapters/drizzle-adapter/index.cjs +19 -151
  197. package/dist/pkgs/db-adapters/adapters/drizzle-adapter/index.js +19 -151
  198. package/dist/pkgs/db-adapters/adapters/kysely-adapter/dialect.d.ts +1 -3
  199. package/dist/pkgs/db-adapters/adapters/kysely-adapter/dialect.d.ts.map +1 -1
  200. package/dist/pkgs/db-adapters/adapters/kysely-adapter/index.cjs +17 -149
  201. package/dist/pkgs/db-adapters/adapters/kysely-adapter/index.js +17 -149
  202. package/dist/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.d.ts +0 -1
  203. package/dist/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.d.ts.map +1 -1
  204. package/dist/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.d.ts +2 -2
  205. package/dist/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.d.ts.map +1 -1
  206. package/dist/pkgs/db-adapters/adapters/kysely-adapter/types.d.ts +0 -2
  207. package/dist/pkgs/db-adapters/adapters/kysely-adapter/types.d.ts.map +1 -1
  208. package/dist/pkgs/db-adapters/adapters/memory-adapter/index.cjs +17 -149
  209. package/dist/pkgs/db-adapters/adapters/memory-adapter/index.js +17 -149
  210. package/dist/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.d.ts +0 -1
  211. package/dist/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.d.ts.map +1 -1
  212. package/dist/pkgs/db-adapters/adapters/prisma-adapter/index.cjs +19 -151
  213. package/dist/pkgs/db-adapters/adapters/prisma-adapter/index.js +19 -151
  214. package/dist/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.d.ts +0 -1
  215. package/dist/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.d.ts.map +1 -1
  216. package/dist/pkgs/db-adapters/index.cjs +31 -153
  217. package/dist/pkgs/db-adapters/index.js +31 -153
  218. package/dist/pkgs/migrations/get-schema/get-schema.d.ts +2 -2
  219. package/dist/pkgs/migrations/get-schema/index.d.ts +1 -1
  220. package/dist/pkgs/migrations/index.cjs +30 -153
  221. package/dist/pkgs/migrations/index.js +30 -153
  222. package/dist/pkgs/migrations/schema-comparison.d.ts.map +1 -1
  223. package/dist/pkgs/results/core/error-class.d.ts +23 -21
  224. package/dist/pkgs/results/core/error-class.d.ts.map +1 -1
  225. package/dist/pkgs/results/index.cjs +17 -150
  226. package/dist/pkgs/results/index.d.ts +0 -3
  227. package/dist/pkgs/results/index.d.ts.map +1 -1
  228. package/dist/pkgs/results/index.js +17 -138
  229. package/dist/pkgs/results/orpc-error-handler.d.ts +65 -0
  230. package/dist/pkgs/results/orpc-error-handler.d.ts.map +1 -0
  231. package/dist/pkgs/results/types.d.ts +7 -7
  232. package/dist/pkgs/results/types.d.ts.map +1 -1
  233. package/dist/pkgs/types/context.d.ts +15 -8
  234. package/dist/pkgs/types/context.d.ts.map +1 -1
  235. package/dist/pkgs/types/endpoints.d.ts +3 -4
  236. package/dist/pkgs/types/endpoints.d.ts.map +1 -1
  237. package/dist/pkgs/types/options.d.ts +2 -4
  238. package/dist/pkgs/types/options.d.ts.map +1 -1
  239. package/dist/pkgs/types/plugins.d.ts +2 -3
  240. package/dist/pkgs/types/plugins.d.ts.map +1 -1
  241. package/dist/pkgs/utils/index.d.ts +1 -0
  242. package/dist/pkgs/utils/index.d.ts.map +1 -1
  243. package/dist/pkgs/utils/logger.d.ts +16 -0
  244. package/dist/pkgs/utils/logger.d.ts.map +1 -0
  245. package/dist/router.cjs +1213 -0
  246. package/dist/router.d.ts +480 -0
  247. package/dist/router.d.ts.map +1 -0
  248. package/dist/router.js +1169 -0
  249. package/dist/schema/audit-log/table.d.ts +1 -1
  250. package/dist/schema/consent/table.d.ts +1 -1
  251. package/dist/schema/consent-policy/registry.d.ts +12 -12
  252. package/dist/schema/consent-policy/schema.d.ts +6 -6
  253. package/dist/schema/consent-policy/table.d.ts +7 -7
  254. package/dist/schema/consent-purpose/registry.d.ts +6 -6
  255. package/dist/schema/consent-purpose/schema.d.ts +6 -6
  256. package/dist/schema/consent-purpose/table.d.ts +7 -7
  257. package/dist/schema/consent-record/table.d.ts +1 -1
  258. package/dist/schema/create-registry.d.ts +32 -32
  259. package/dist/schema/definition.d.ts +19 -19
  260. package/dist/schema/domain/registry.d.ts +10 -10
  261. package/dist/schema/domain/schema.d.ts +5 -5
  262. package/dist/schema/domain/table.d.ts +6 -6
  263. package/dist/schema/index.cjs +1409 -1775
  264. package/dist/schema/index.js +20 -385
  265. package/dist/schema/schemas.d.ts +19 -19
  266. package/dist/schema/subject/registry.d.ts +4 -4
  267. package/dist/schema/subject/schema.d.ts +2 -2
  268. package/dist/schema/subject/table.d.ts +3 -3
  269. package/dist/server.d.ts +2 -0
  270. package/dist/server.d.ts.map +1 -0
  271. package/dist/testing/contract-testing.d.ts +37 -0
  272. package/dist/testing/contract-testing.d.ts.map +1 -0
  273. package/dist/types/context.d.ts +1 -1
  274. package/dist/types/index.d.ts +2 -2
  275. package/dist/types/options.d.ts +33 -3
  276. package/dist/types/options.d.ts.map +1 -1
  277. package/dist/types/plugins.d.ts +3 -4
  278. package/dist/types/plugins.d.ts.map +1 -1
  279. package/package.json +20 -28
  280. package/rslib.config.ts +2 -5
  281. package/src/contracts/consent/index.test.ts +5 -0
  282. package/src/contracts/consent/index.ts +9 -0
  283. package/src/contracts/consent/post.contract.test.ts +526 -0
  284. package/src/contracts/consent/post.contract.ts +160 -0
  285. package/src/contracts/consent/show-banner.contract.test.ts +214 -0
  286. package/src/contracts/consent/show-banner.contract.ts +45 -0
  287. package/src/contracts/consent/verify.contract.test.ts +185 -0
  288. package/src/contracts/consent/verify.contract.ts +126 -0
  289. package/src/contracts/index.ts +18 -0
  290. package/src/contracts/meta/index.test.ts +5 -0
  291. package/src/contracts/meta/index.ts +5 -0
  292. package/src/contracts/meta/status.contract.test.ts +338 -0
  293. package/src/contracts/meta/status.contract.ts +37 -0
  294. package/src/contracts/shared/jurisdiction.schema.ts +30 -0
  295. package/src/core.ts +451 -161
  296. package/src/handlers/consent/index.ts +9 -0
  297. package/src/handlers/consent/post.handler.ts +273 -0
  298. package/src/handlers/consent/show-banner.handler.test.ts +148 -0
  299. package/src/handlers/consent/show-banner.handler.ts +150 -0
  300. package/src/handlers/consent/verify.handler.ts +305 -0
  301. package/src/handlers/meta/index.ts +5 -0
  302. package/src/handlers/meta/status.handler.ts +47 -0
  303. package/src/init.ts +8 -26
  304. package/src/pkgs/api-router/hooks/__tests__/processor.test.ts +6 -0
  305. package/src/pkgs/api-router/hooks/processor.ts +2 -0
  306. package/src/pkgs/api-router/types/router-props.ts +1 -1
  307. package/src/pkgs/api-router/utils/cors.ts +1 -1
  308. package/src/pkgs/data-model/fields/field-types.ts +1 -1
  309. package/src/pkgs/data-model/fields/id-generator.ts +1 -1
  310. package/src/pkgs/db-adapters/README.md +3 -3
  311. package/src/pkgs/db-adapters/adapter-factory.ts +8 -4
  312. package/src/pkgs/db-adapters/adapters/drizzle-adapter/drizzle-adapter.ts +13 -16
  313. package/src/pkgs/db-adapters/adapters/kysely-adapter/dialect.ts +1 -3
  314. package/src/pkgs/db-adapters/adapters/kysely-adapter/kysely-adapter.ts +0 -1
  315. package/src/pkgs/db-adapters/adapters/kysely-adapter/tests/postgres.test.ts +1 -1
  316. package/src/pkgs/db-adapters/adapters/kysely-adapter/tests/sqlite.test.ts +1 -1
  317. package/src/pkgs/db-adapters/adapters/kysely-adapter/tests/test-utils.ts +2 -2
  318. package/src/pkgs/db-adapters/adapters/kysely-adapter/types.ts +0 -2
  319. package/src/pkgs/db-adapters/adapters/memory-adapter/memory-adapter.ts +0 -1
  320. package/src/pkgs/db-adapters/adapters/prisma-adapter/prisma-adapter.ts +0 -1
  321. package/src/pkgs/migrations/get-migration.ts +3 -3
  322. package/src/pkgs/migrations/get-schema/get-schema.ts +2 -2
  323. package/src/pkgs/migrations/get-schema/index.ts +1 -1
  324. package/src/pkgs/migrations/migration-builders.ts +2 -2
  325. package/src/pkgs/migrations/migration-execution.ts +2 -2
  326. package/src/pkgs/migrations/schema-comparison.ts +5 -4
  327. package/src/pkgs/results/__tests__/error-class.test.ts +8 -7
  328. package/src/pkgs/results/core/error-class.ts +31 -43
  329. package/src/pkgs/results/index.ts +0 -10
  330. package/src/pkgs/results/orpc-error-handler.ts +137 -0
  331. package/src/pkgs/results/types.ts +8 -7
  332. package/src/pkgs/types/context.ts +18 -9
  333. package/src/pkgs/types/endpoints.ts +3 -5
  334. package/src/pkgs/types/options.ts +2 -4
  335. package/src/pkgs/types/plugins.ts +2 -3
  336. package/src/pkgs/utils/index.ts +1 -0
  337. package/src/pkgs/utils/logger.ts +38 -0
  338. package/src/router.ts +8 -0
  339. package/src/schema/audit-log/table.ts +1 -1
  340. package/src/schema/consent/table.ts +1 -1
  341. package/src/schema/consent-policy/table.ts +1 -1
  342. package/src/schema/consent-purpose/table.ts +1 -1
  343. package/src/schema/consent-record/table.ts +1 -1
  344. package/src/schema/definition.ts +2 -2
  345. package/src/schema/domain/table.ts +1 -1
  346. package/src/schema/subject/table.ts +1 -1
  347. package/src/server.ts +130 -0
  348. package/src/testing/contract-testing.ts +437 -0
  349. package/src/types/context.ts +1 -1
  350. package/src/types/index.ts +2 -2
  351. package/src/types/options.ts +38 -3
  352. package/src/types/plugins.ts +3 -4
  353. package/dist/index.cjs +0 -3706
  354. package/dist/index.d.ts +0 -11
  355. package/dist/index.d.ts.map +0 -1
  356. package/dist/init.test.d.ts +0 -2
  357. package/dist/init.test.d.ts.map +0 -1
  358. package/dist/integrations/cloudflare.cjs +0 -312
  359. package/dist/integrations/cloudflare.d.ts +0 -32
  360. package/dist/integrations/cloudflare.d.ts.map +0 -1
  361. package/dist/integrations/cloudflare.js +0 -278
  362. package/dist/integrations/next.cjs +0 -276
  363. package/dist/integrations/next.d.ts +0 -68
  364. package/dist/integrations/next.d.ts.map +0 -1
  365. package/dist/integrations/next.js +0 -239
  366. package/dist/integrations/node.cjs +0 -257
  367. package/dist/integrations/node.d.ts +0 -29
  368. package/dist/integrations/node.d.ts.map +0 -1
  369. package/dist/integrations/node.js +0 -223
  370. package/dist/pkgs/api-router/index.d.ts +0 -9
  371. package/dist/pkgs/api-router/index.d.ts.map +0 -1
  372. package/dist/pkgs/api-router/utils/define-route.d.ts +0 -87
  373. package/dist/pkgs/api-router/utils/define-route.d.ts.map +0 -1
  374. package/dist/pkgs/logger/__tests__/console-formatter.test.d.ts +0 -2
  375. package/dist/pkgs/logger/__tests__/console-formatter.test.d.ts.map +0 -1
  376. package/dist/pkgs/logger/__tests__/integration.test.d.ts +0 -2
  377. package/dist/pkgs/logger/__tests__/integration.test.d.ts.map +0 -1
  378. package/dist/pkgs/logger/__tests__/log-levels.test.d.ts +0 -2
  379. package/dist/pkgs/logger/__tests__/log-levels.test.d.ts.map +0 -1
  380. package/dist/pkgs/logger/__tests__/logger-factory.test.d.ts +0 -2
  381. package/dist/pkgs/logger/__tests__/logger-factory.test.d.ts.map +0 -1
  382. package/dist/pkgs/logger/__tests__/result-logging.test.d.ts +0 -2
  383. package/dist/pkgs/logger/__tests__/result-logging.test.d.ts.map +0 -1
  384. package/dist/pkgs/logger/__tests__/types.test.d.ts +0 -2
  385. package/dist/pkgs/logger/__tests__/types.test.d.ts.map +0 -1
  386. package/dist/pkgs/logger/console-formatter.d.ts +0 -56
  387. package/dist/pkgs/logger/console-formatter.d.ts.map +0 -1
  388. package/dist/pkgs/logger/index.cjs +0 -240
  389. package/dist/pkgs/logger/index.d.ts +0 -35
  390. package/dist/pkgs/logger/index.d.ts.map +0 -1
  391. package/dist/pkgs/logger/index.js +0 -185
  392. package/dist/pkgs/logger/log-levels.d.ts +0 -29
  393. package/dist/pkgs/logger/log-levels.d.ts.map +0 -1
  394. package/dist/pkgs/logger/logger-factory.d.ts +0 -42
  395. package/dist/pkgs/logger/logger-factory.d.ts.map +0 -1
  396. package/dist/pkgs/logger/result-logging.d.ts +0 -71
  397. package/dist/pkgs/logger/result-logging.d.ts.map +0 -1
  398. package/dist/pkgs/logger/telemetry.d.ts +0 -14
  399. package/dist/pkgs/logger/telemetry.d.ts.map +0 -1
  400. package/dist/pkgs/logger/types.d.ts +0 -121
  401. package/dist/pkgs/logger/types.d.ts.map +0 -1
  402. package/dist/pkgs/results/__tests__/retrieval-pipeline.test.d.ts +0 -2
  403. package/dist/pkgs/results/__tests__/retrieval-pipeline.test.d.ts.map +0 -1
  404. package/dist/pkgs/results/__tests__/validation-pipeline.test.d.ts +0 -2
  405. package/dist/pkgs/results/__tests__/validation-pipeline.test.d.ts.map +0 -1
  406. package/dist/pkgs/results/h3-integration.d.ts +0 -52
  407. package/dist/pkgs/results/h3-integration.d.ts.map +0 -1
  408. package/dist/pkgs/results/pipeline/retrieval-pipeline.d.ts +0 -101
  409. package/dist/pkgs/results/pipeline/retrieval-pipeline.d.ts.map +0 -1
  410. package/dist/pkgs/results/pipeline/validation-pipeline.d.ts +0 -89
  411. package/dist/pkgs/results/pipeline/validation-pipeline.d.ts.map +0 -1
  412. package/dist/response-types.d.ts +0 -19
  413. package/dist/response-types.d.ts.map +0 -1
  414. package/dist/routes/__test__/index.test.d.ts +0 -17
  415. package/dist/routes/__test__/index.test.d.ts.map +0 -1
  416. package/dist/routes/__test__/set-consent.test.d.ts +0 -2
  417. package/dist/routes/__test__/set-consent.test.d.ts.map +0 -1
  418. package/dist/routes/__test__/show-consent-banner.test.d.ts +0 -2
  419. package/dist/routes/__test__/show-consent-banner.test.d.ts.map +0 -1
  420. package/dist/routes/__test__/status.test.d.ts +0 -2
  421. package/dist/routes/__test__/status.test.d.ts.map +0 -1
  422. package/dist/routes/__test__/verify-consent.test.d.ts +0 -2
  423. package/dist/routes/__test__/verify-consent.test.d.ts.map +0 -1
  424. package/dist/routes/index.d.ts +0 -3
  425. package/dist/routes/index.d.ts.map +0 -1
  426. package/dist/routes/set-consent.d.ts +0 -89
  427. package/dist/routes/set-consent.d.ts.map +0 -1
  428. package/dist/routes/show-consent-banner.d.ts +0 -15
  429. package/dist/routes/show-consent-banner.d.ts.map +0 -1
  430. package/dist/routes/status.d.ts +0 -44
  431. package/dist/routes/status.d.ts.map +0 -1
  432. package/dist/routes/types.d.ts +0 -7
  433. package/dist/routes/types.d.ts.map +0 -1
  434. package/dist/routes/verify-consent.d.ts +0 -38
  435. package/dist/routes/verify-consent.d.ts.map +0 -1
  436. package/src/docs/ADVANCED_JSON_HANDLING.md +0 -99
  437. package/src/docs/neverthrow.md +0 -171
  438. package/src/index.ts +0 -34
  439. package/src/init.test.ts +0 -236
  440. package/src/integrations/cloudflare.ts +0 -269
  441. package/src/integrations/next.ts +0 -204
  442. package/src/integrations/node.ts +0 -141
  443. package/src/pkgs/api-router/index.ts +0 -148
  444. package/src/pkgs/api-router/types/h3.d.ts +0 -42
  445. package/src/pkgs/api-router/utils/define-route.ts +0 -410
  446. package/src/pkgs/logger/README.md +0 -213
  447. package/src/pkgs/logger/__tests__/console-formatter.test.ts +0 -67
  448. package/src/pkgs/logger/__tests__/integration.test.ts +0 -184
  449. package/src/pkgs/logger/__tests__/log-levels.test.ts +0 -77
  450. package/src/pkgs/logger/__tests__/logger-factory.test.ts +0 -156
  451. package/src/pkgs/logger/__tests__/result-logging.test.ts +0 -209
  452. package/src/pkgs/logger/__tests__/types.test.ts +0 -94
  453. package/src/pkgs/logger/console-formatter.ts +0 -75
  454. package/src/pkgs/logger/doc.md +0 -569
  455. package/src/pkgs/logger/index.ts +0 -59
  456. package/src/pkgs/logger/log-levels.ts +0 -46
  457. package/src/pkgs/logger/logger-factory.ts +0 -121
  458. package/src/pkgs/logger/result-logging.ts +0 -134
  459. package/src/pkgs/logger/telemetry.ts +0 -96
  460. package/src/pkgs/logger/types.ts +0 -138
  461. package/src/pkgs/results/__tests__/retrieval-pipeline.test.ts +0 -157
  462. package/src/pkgs/results/__tests__/validation-pipeline.test.ts +0 -151
  463. package/src/pkgs/results/h3-integration.ts +0 -142
  464. package/src/pkgs/results/pipeline/retrieval-pipeline.ts +0 -188
  465. package/src/pkgs/results/pipeline/validation-pipeline.ts +0 -164
  466. package/src/plugins/.keep +0 -0
  467. package/src/response-types.ts +0 -29
  468. package/src/routes/__test__/index.test.ts +0 -112
  469. package/src/routes/__test__/set-consent.test.ts +0 -242
  470. package/src/routes/__test__/show-consent-banner.test.ts +0 -98
  471. package/src/routes/__test__/status.test.ts +0 -64
  472. package/src/routes/__test__/verify-consent.test.ts +0 -266
  473. package/src/routes/index.ts +0 -12
  474. package/src/routes/set-consent.ts +0 -249
  475. package/src/routes/show-consent-banner.ts +0 -131
  476. package/src/routes/status.ts +0 -61
  477. package/src/routes/types.ts +0 -7
  478. package/src/routes/verify-consent.ts +0 -206
@@ -1,4 +1,4 @@
1
- import type { H3Error } from 'h3';
1
+ import type { ORPCError } from '@orpc/server';
2
2
  import type { Result, ResultAsync } from 'neverthrow';
3
3
 
4
4
  /**
@@ -46,17 +46,13 @@ export type ErrorMessageType = string;
46
46
  *
47
47
  * @remarks
48
48
  * This interface defines the public API of the DoubleTieError class.
49
- * It extends the H3Error class with additional properties and methods
49
+ * It extends the ORPCError class with additional properties and methods
50
50
  * specific to the DoubleTie error handling system.
51
51
  *
52
52
  * @see DoubleTieErrorOptions for the options used to construct a DoubleTieError
53
53
  */
54
54
  export interface DoubleTieError
55
- extends H3Error<{
56
- code: ErrorMessageType;
57
- category?: ErrorCategory;
58
- meta?: Record<string, unknown>;
59
- }> {
55
+ extends ORPCError<string, Record<string, unknown>> {
60
56
  /**
61
57
  * Error code identifying the error type
62
58
  */
@@ -72,6 +68,11 @@ export interface DoubleTieError
72
68
  */
73
69
  readonly meta: Record<string, unknown>;
74
70
 
71
+ /**
72
+ * HTTP status code for the error
73
+ */
74
+ readonly statusCode: number;
75
+
75
76
  /**
76
77
  * Creates a new error instance with additional metadata
77
78
  */
@@ -1,7 +1,6 @@
1
- import type { H3Event } from 'h3';
1
+ import type { createLogger } from '@doubletie/logger';
2
2
  import type { DatabaseHook, EntityName } from '~/pkgs/data-model';
3
3
  import type { Adapter } from '~/pkgs/db-adapters/types';
4
- import type { createLogger } from '~/pkgs/logger';
5
4
  import type { createRegistry } from '~/schema/create-registry';
6
5
  import type { getConsentTables } from '~/schema/definition';
7
6
  import type { DoubleTieOptions } from './options';
@@ -12,7 +11,12 @@ import type { DoubleTieOptions } from './options';
12
11
  * This type extends the standard endpoint context with additional properties
13
12
  * specific to DoubleTie hooks, allowing hooks to access the complete DoubleTie context.
14
13
  */
15
- export type HookEndpointContext = H3Event & {
14
+ export type HookEndpointContext = {
15
+ /**
16
+ * The request object
17
+ */
18
+ request: Request;
19
+
16
20
  /**
17
21
  * The DoubleTie context with possible hook-specific extensions
18
22
  */
@@ -35,7 +39,12 @@ export type HookEndpointContext = H3Event & {
35
39
  * A simplified context type for endpoint handlers that don't need
36
40
  * access to input-specific context properties.
37
41
  */
38
- export type GenericEndpointContext = H3Event & {
42
+ export type GenericEndpointContext = {
43
+ /**
44
+ * The request object
45
+ */
46
+ request: Request;
47
+
39
48
  /**
40
49
  * The DoubleTie application context
41
50
  */
@@ -112,11 +121,6 @@ export interface BaseDoubleTieContext {
112
121
  */
113
122
  baseURL: string;
114
123
 
115
- /**
116
- * Secret key used for signing cookies and tokens
117
- */
118
- secret: string;
119
-
120
124
  /**
121
125
  * Logger instance for recording events and errors
122
126
  */
@@ -154,6 +158,11 @@ export interface BaseDoubleTieContext {
154
158
  * User agent of the client
155
159
  */
156
160
  userAgent?: string | null;
161
+
162
+ /**
163
+ * Headers of the request
164
+ */
165
+ headers?: Headers;
157
166
  }
158
167
 
159
168
  /**
@@ -1,5 +1,3 @@
1
- import type { H3Event } from 'h3';
2
-
3
1
  export interface EndpointOptions {
4
2
  /**
5
3
  * Whether authentication is required for this endpoint
@@ -12,12 +10,12 @@ export interface EndpointOptions {
12
10
  middleware?: EndpointMiddleware[];
13
11
  }
14
12
 
15
- export type EndpointMiddleware = (event: H3Event) => Promise<void>;
13
+ export type EndpointMiddleware = (request: Request) => Promise<void>;
16
14
 
17
- export type EndpointHandler = (event: H3Event) => Promise<unknown>;
15
+ export type EndpointHandler = (request: Request) => Promise<unknown>;
18
16
 
19
17
  /**
20
- * Native H3 endpoint interface
18
+ * Native endpoint interface
21
19
  */
22
20
  export interface Endpoint {
23
21
  /**
@@ -1,11 +1,10 @@
1
1
  import type { DatabaseHook } from '~/pkgs/data-model';
2
2
  import type { DatabaseConfiguration } from '~/pkgs/db-adapters/adapters/kysely-adapter/types';
3
3
 
4
+ import type { LoggerOptions } from '@doubletie/logger';
4
5
  import type { Tracer } from '@opentelemetry/api';
5
- import type { H3Event } from 'h3';
6
6
  // Import table configuration types from the schema module
7
7
  import type { TablesConfig } from '~/schema/types';
8
- import type { LoggerOptions } from '../logger';
9
8
  import type { DoubleTiePlugin } from './plugins';
10
9
 
11
10
  /**
@@ -22,7 +21,6 @@ import type { DoubleTiePlugin } from './plugins';
22
21
  * // Basic configuration
23
22
  * const options: DoubleTieOptions = {
24
23
  * appName: "My App",
25
- * secret: process.env.SECRET_KEY,
26
24
  * baseURL: "https://example.com",
27
25
  * trustedOrigins: ["https://example.com"]
28
26
  * };
@@ -229,6 +227,6 @@ export interface DoubleTieOptions {
229
227
  * Middleware function for processing API requests
230
228
  */
231
229
  export type DoubleTieMiddleware = (
232
- event: H3Event,
230
+ request: Request,
233
231
  next: () => Promise<unknown>
234
232
  ) => Promise<unknown>;
@@ -1,4 +1,3 @@
1
- import type { H3Event } from 'h3';
2
1
  import type { Migration } from 'kysely';
3
2
  import type { Field } from '~/pkgs/data-model';
4
3
  import type { DoubleTieContext, HookEndpointContext } from './context';
@@ -75,12 +74,12 @@ export interface DoubleTiePlugin {
75
74
  /**
76
75
  * Handler for intercepting and potentially modifying incoming requests
77
76
  */
78
- onRequest?: (event: H3Event, ctx: DoubleTieContext) => Promise<unknown>;
77
+ onRequest?: (request: Request, ctx: DoubleTieContext) => Promise<unknown>;
79
78
 
80
79
  /**
81
80
  * Handler for intercepting and potentially modifying outgoing responses
82
81
  */
83
- onResponse?: (event: H3Event, ctx: DoubleTieContext) => Promise<unknown>;
82
+ onResponse?: (response: Response, ctx: DoubleTieContext) => Promise<unknown>;
84
83
 
85
84
  /**
86
85
  * Request lifecycle hooks for executing code before or after endpoint handling
@@ -1,2 +1,3 @@
1
1
  export { env, isProduction, isTest } from './env';
2
2
  export { getBaseURL } from './url';
3
+ export * from './logger';
@@ -0,0 +1,38 @@
1
+ import {
2
+ type LoggerOptions,
3
+ createLogger as createDTLogger,
4
+ } from '@doubletie/logger';
5
+
6
+ let globalLogger: ReturnType<typeof createDTLogger>;
7
+
8
+ /**
9
+ * Gets or creates a global logger instance
10
+ *
11
+ * @param options - Optional logger configuration options
12
+ * @returns The global logger instance
13
+ */
14
+ export function getLogger(
15
+ options?: LoggerOptions
16
+ ): ReturnType<typeof createDTLogger> {
17
+ if (!globalLogger) {
18
+ globalLogger = createDTLogger({
19
+ level: 'info',
20
+ appName: 'c15t',
21
+ ...options,
22
+ });
23
+ }
24
+ return globalLogger;
25
+ }
26
+
27
+ /**
28
+ * Initializes the global logger with specific options
29
+ *
30
+ * @param options - Logger configuration options
31
+ * @returns The initialized global logger instance
32
+ */
33
+ export function initLogger(
34
+ options: LoggerOptions
35
+ ): ReturnType<typeof createDTLogger> {
36
+ globalLogger = createDTLogger(options);
37
+ return globalLogger;
38
+ }
package/src/router.ts ADDED
@@ -0,0 +1,8 @@
1
+ import { os } from './contracts';
2
+ import { consentHandlers } from './handlers/consent';
3
+ import { metaHandlers } from './handlers/meta';
4
+
5
+ export const router = os.router({
6
+ consent: consentHandlers,
7
+ meta: metaHandlers,
8
+ });
@@ -9,7 +9,7 @@ import { auditLogSchema } from './schema';
9
9
  * and any additional fields from plugins or configuration. The resulting schema is used
10
10
  * for database migrations, schema validation, and query building.
11
11
  *
12
- * @param options - C15T configuration options that may contain audit log table customizations
12
+ * @param options - c15t configuration options that may contain audit log table customizations
13
13
  * @param auditLogFields - Additional fields from plugins to include in the audit log table
14
14
  * @returns A complete table schema definition with fields, model name, and metadata
15
15
  *
@@ -8,7 +8,7 @@ import { consentSchema } from './schema';
8
8
  * and any additional fields from plugins or configuration. The resulting schema is used
9
9
  * for database migrations, schema validation, and query building.
10
10
  *
11
- * @param options - C15T configuration options that may contain consent table customizations
11
+ * @param options - c15t configuration options that may contain consent table customizations
12
12
  * @param consentFields - Additional fields from plugins to include in the consent table
13
13
  * @returns A complete table schema definition with fields, model name, and metadata
14
14
  *
@@ -9,7 +9,7 @@ import { consentPolicySchema } from './schema';
9
9
  * and any additional fields from plugins or configuration. The resulting schema is used
10
10
  * for database migrations, schema validation, and query building.
11
11
  *
12
- * @param options - C15T configuration options that may contain policy table customizations
12
+ * @param options - c15t configuration options that may contain policy table customizations
13
13
  * @param policyFields - Additional fields from plugins to include in the policy table
14
14
  * @returns A complete table schema definition with fields, model name, and metadata
15
15
  *
@@ -9,7 +9,7 @@ import { purposeSchema } from './schema';
9
9
  * and any additional fields from plugins or configuration. The resulting schema is used
10
10
  * for database migrations, schema validation, and query building.
11
11
  *
12
- * @param options - C15T configuration options that may contain consentPurpose table customizations
12
+ * @param options - c15t configuration options that may contain consentPurpose table customizations
13
13
  * @param purposeFields - Additional fields from plugins to include in the consentPurpose table
14
14
  * @returns A complete table schema definition with fields, model name, and metadata
15
15
  *
@@ -9,7 +9,7 @@ import { consentRecordSchema } from './schema';
9
9
  * and any additional fields from plugins or configuration. The resulting schema is used
10
10
  * for database migrations, schema validation, and query building.
11
11
  *
12
- * @param options - C15T configuration options that may contain consent record table customizations
12
+ * @param options - c15t configuration options that may contain consent record table customizations
13
13
  * @param recordFields - Additional fields from plugins to include in the consent record table
14
14
  * @returns A complete table schema definition with fields, model name, and metadata
15
15
  *
@@ -1,6 +1,6 @@
1
- import { ZodError } from 'node_modules/zod/lib/ZodError';
1
+ import { logger } from '@doubletie/logger';
2
+ import { ZodError } from 'zod';
2
3
  import type { Field, PluginSchema } from '~/pkgs/data-model';
3
- import { logger } from '~/pkgs/logger';
4
4
  import type { C15TOptions } from '~/types';
5
5
  import { getAuditLogTable } from './audit-log/table';
6
6
  import { getConsentPolicyTable } from './consent-policy/table';
@@ -9,7 +9,7 @@ import { domainSchema } from './schema';
9
9
  * and any additional fields from plugins or configuration. The resulting schema is used
10
10
  * for database migrations, schema validation, and query building.
11
11
  *
12
- * @param options - C15T configuration options that may contain domain table customizations
12
+ * @param options - c15t configuration options that may contain domain table customizations
13
13
  * @param domainFields - Additional fields from plugins to include in the domain table
14
14
  * @returns A complete table schema definition with fields, model name, and metadata
15
15
  *
@@ -9,7 +9,7 @@ import { subjectSchema } from './schema';
9
9
  * and any additional fields from plugins or configuration. The resulting schema is used
10
10
  * for database migrations, schema validation, and query building.
11
11
  *
12
- * @param options - C15T configuration options that may contain subject table customizations
12
+ * @param options - c15t configuration options that may contain subject table customizations
13
13
  * @param subjectFields - Additional fields from plugins to include in the subject table
14
14
  * @returns A complete table schema definition with fields, model name, and metadata
15
15
  *
package/src/server.ts ADDED
@@ -0,0 +1,130 @@
1
+ import { createServer } from 'node:http';
2
+ import { c15tInstance } from './core';
3
+ import { DoubleTieError } from './pkgs/results';
4
+ import { getLogger } from './pkgs/utils/logger';
5
+
6
+ // Use the centralized logger
7
+ const logger = getLogger({
8
+ level: 'info',
9
+ // appName: 'c15t-server'
10
+ });
11
+
12
+ // Create the c15t instance with our configuration
13
+ const instance = c15tInstance({
14
+ advanced: {
15
+ cors: {
16
+ allowedOrigins: ['*'], // Allow all origins for development
17
+ },
18
+ },
19
+ // Add OpenAPI configuration
20
+ openapi: {
21
+ enabled: true, // Set to true to enable docs
22
+ // Additional OpenAPI options can be added here
23
+ },
24
+ // Add logger
25
+ logger: {
26
+ level: 'info',
27
+ },
28
+ });
29
+
30
+ // Create HTTP server
31
+ const server = createServer(async (req, res) => {
32
+ // Convert Node.js request to Web Request
33
+ const url = new URL(req.url || '/', `http://${req.headers.host}`);
34
+ const headers = new Headers();
35
+
36
+ // Convert Node.js headers to Headers object
37
+ for (const [key, value] of Object.entries(req.headers)) {
38
+ if (value) {
39
+ headers.set(key, Array.isArray(value) ? value.join(', ') : value);
40
+ }
41
+ }
42
+
43
+ // Create a Request object compatible with oRPC
44
+ const request = new Request(url.toString(), {
45
+ method: req.method || 'GET',
46
+ headers,
47
+ // Handle request body for POST/PUT/PATCH requests
48
+ ...(req.method !== 'GET' &&
49
+ req.method !== 'HEAD' && {
50
+ body: req,
51
+ }),
52
+ });
53
+
54
+ try {
55
+ // Use c15tInstance handler to process the request
56
+ // It will automatically handle OpenAPI spec and docs UI
57
+ const response = await instance.handler(request);
58
+
59
+ // Convert Web API Response to Node.js response
60
+ res.writeHead(
61
+ response.status,
62
+ response.statusText,
63
+ Object.fromEntries(response.headers.entries())
64
+ );
65
+
66
+ // Handle different response types
67
+ if (response.body) {
68
+ // Stream the response body
69
+ const reader = response.body.getReader();
70
+ const processChunk = async () => {
71
+ try {
72
+ const { done, value } = await reader.read();
73
+ if (done) {
74
+ res.end();
75
+ return;
76
+ }
77
+
78
+ // Check if response already ended
79
+ if (!res.writableEnded) {
80
+ const canContinue = res.write(value);
81
+ if (canContinue) {
82
+ processChunk();
83
+ } else {
84
+ // If the buffer is full, wait for the drain event
85
+ res.once('drain', processChunk);
86
+ }
87
+ }
88
+ } catch (err) {
89
+ logger.error('Error while streaming response:', err);
90
+ if (!res.writableEnded) {
91
+ res.end();
92
+ }
93
+ }
94
+ };
95
+ processChunk();
96
+ } else {
97
+ res.end();
98
+ }
99
+ } catch (error) {
100
+ logger.error('Error handling request:', error);
101
+
102
+ // Return a proper error response based on the error type
103
+ if (error instanceof DoubleTieError) {
104
+ res.writeHead(error.statusCode, { 'Content-Type': 'application/json' });
105
+ res.end(
106
+ JSON.stringify({
107
+ code: error.code,
108
+ message: error.message,
109
+ data: error.meta,
110
+ })
111
+ );
112
+ } else {
113
+ // Generic error handler
114
+ res.writeHead(500, { 'Content-Type': 'application/json' });
115
+ res.end(
116
+ JSON.stringify({
117
+ error: 'Internal Server Error',
118
+ message: error instanceof Error ? error.message : String(error),
119
+ })
120
+ );
121
+ }
122
+ }
123
+ });
124
+
125
+ // Start the server
126
+ const PORT = process.env.PORT ? Number.parseInt(process.env.PORT, 10) : 3000;
127
+ server.listen(PORT, () => {
128
+ logger.info(`c15t server is running at http://localhost:${PORT}`);
129
+ logger.info(`API documentation available at http://localhost:${PORT}/docs`);
130
+ });