@c15t/backend 2.0.0-rc.1 → 2.0.0-rc.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/README.md +3 -3
  2. package/dist/302.js +473 -0
  3. package/dist/583.js +540 -0
  4. package/dist/915.js +1771 -0
  5. package/dist/cache.cjs +5 -5
  6. package/dist/cache.js +4 -415
  7. package/dist/core.cjs +1356 -120
  8. package/dist/core.js +163 -1981
  9. package/dist/db/adapters/drizzle.cjs +1 -1
  10. package/dist/db/adapters/drizzle.js +1 -2
  11. package/dist/db/adapters/kysely.cjs +1 -1
  12. package/dist/db/adapters/kysely.js +1 -2
  13. package/dist/db/adapters/mongo.cjs +1 -1
  14. package/dist/db/adapters/mongo.js +1 -2
  15. package/dist/db/adapters/prisma.cjs +1 -1
  16. package/dist/db/adapters/prisma.js +1 -2
  17. package/dist/db/adapters/typeorm.cjs +1 -1
  18. package/dist/db/adapters/typeorm.js +1 -2
  19. package/dist/db/adapters.cjs +1 -1
  20. package/dist/db/migrator.cjs +1 -1
  21. package/dist/db/schema.cjs +43 -3
  22. package/dist/db/schema.js +35 -4
  23. package/dist/define-config.cjs +1 -1
  24. package/dist/edge.cjs +1106 -0
  25. package/dist/edge.js +190 -0
  26. package/dist/router.cjs +885 -123
  27. package/dist/router.js +1 -1507
  28. package/dist/{types.cjs → types/index.cjs} +1 -1
  29. package/{dist → dist-types}/cache/adapters/cloudflare-kv.d.ts +0 -1
  30. package/{dist → dist-types}/cache/adapters/index.d.ts +0 -1
  31. package/{dist → dist-types}/cache/adapters/memory.d.ts +0 -1
  32. package/{dist → dist-types}/cache/adapters/upstash-redis.d.ts +0 -1
  33. package/{dist → dist-types}/cache/gvl-resolver.d.ts +0 -1
  34. package/{dist → dist-types}/cache/index.d.ts +0 -1
  35. package/{dist → dist-types}/cache/keys.d.ts +0 -1
  36. package/{dist → dist-types}/cache/types.d.ts +0 -1
  37. package/{dist → dist-types}/core.d.ts +8 -1
  38. package/{dist → dist-types}/db/migrator/index.d.ts +0 -1
  39. package/dist-types/db/registry/consent-policy.d.ts +78 -0
  40. package/{dist → dist-types}/db/registry/consent-purpose.d.ts +0 -1
  41. package/{dist → dist-types}/db/registry/domain.d.ts +0 -1
  42. package/dist-types/db/registry/index.d.ts +118 -0
  43. package/dist-types/db/registry/runtime-policy-decision.d.ts +60 -0
  44. package/{dist → dist-types}/db/registry/subject.d.ts +0 -2
  45. package/{dist → dist-types}/db/registry/types.d.ts +1 -1
  46. package/{dist → dist-types}/db/registry/utils/generate-id.d.ts +0 -1
  47. package/{dist → dist-types}/db/registry/utils.d.ts +0 -1
  48. package/{dist → dist-types}/db/schema/1.0.0/audit-log.d.ts +0 -1
  49. package/{dist → dist-types}/db/schema/1.0.0/consent-policy.d.ts +0 -1
  50. package/{dist → dist-types}/db/schema/1.0.0/consent-purpose.d.ts +0 -1
  51. package/{dist → dist-types}/db/schema/1.0.0/consent-record.d.ts +0 -1
  52. package/{dist → dist-types}/db/schema/1.0.0/consent.d.ts +1 -2
  53. package/{dist → dist-types}/db/schema/1.0.0/domain.d.ts +0 -1
  54. package/{dist → dist-types}/db/schema/1.0.0/index.d.ts +0 -32
  55. package/{dist → dist-types}/db/schema/1.0.0/subject.d.ts +0 -2
  56. package/{dist → dist-types}/db/schema/2.0.0/audit-log.d.ts +1 -2
  57. package/{dist → dist-types}/db/schema/2.0.0/consent-policy.d.ts +3 -3
  58. package/{dist → dist-types}/db/schema/2.0.0/consent-purpose.d.ts +1 -2
  59. package/{dist → dist-types}/db/schema/2.0.0/consent.d.ts +7 -2
  60. package/{dist → dist-types}/db/schema/2.0.0/domain.d.ts +1 -2
  61. package/{dist → dist-types}/db/schema/2.0.0/index.d.ts +455 -28
  62. package/dist-types/db/schema/2.0.0/runtime-policy-decision.d.ts +23 -0
  63. package/{dist → dist-types}/db/schema/2.0.0/subject.d.ts +1 -3
  64. package/{dist → dist-types}/db/schema/index.d.ts +908 -86
  65. package/{dist → dist-types}/db/tenant-scope.d.ts +0 -1
  66. package/dist-types/define-config.d.ts +17 -0
  67. package/dist-types/edge/index.d.ts +5 -0
  68. package/dist-types/edge/init-handler.d.ts +40 -0
  69. package/dist-types/edge/resolve-consent.d.ts +80 -0
  70. package/dist-types/edge/types.d.ts +13 -0
  71. package/{dist → dist-types}/handlers/consent/check.handler.d.ts +0 -1
  72. package/{src/handlers/consent/index.ts → dist-types/handlers/consent/index.d.ts} +0 -1
  73. package/{dist → dist-types}/handlers/init/geo.d.ts +2 -3
  74. package/{dist → dist-types}/handlers/init/index.d.ts +2 -3
  75. package/dist-types/handlers/init/policy.d.ts +26 -0
  76. package/dist-types/handlers/init/resolve-init.d.ts +44 -0
  77. package/dist-types/handlers/init/translations.d.ts +48 -0
  78. package/dist-types/handlers/legal-document/current.handler.d.ts +11 -0
  79. package/dist-types/handlers/legal-document/snapshot.d.ts +39 -0
  80. package/dist-types/handlers/policy/snapshot.d.ts +99 -0
  81. package/{src/handlers/status/index.ts → dist-types/handlers/status/index.d.ts} +0 -1
  82. package/{dist → dist-types}/handlers/status/status.handler.d.ts +0 -1
  83. package/{dist → dist-types}/handlers/subject/get.handler.d.ts +3 -2
  84. package/{src/handlers/subject/index.ts → dist-types/handlers/subject/index.d.ts} +0 -1
  85. package/{dist → dist-types}/handlers/subject/list.handler.d.ts +3 -2
  86. package/{dist → dist-types}/handlers/subject/patch.handler.d.ts +0 -2
  87. package/{dist → dist-types}/handlers/subject/post.handler.d.ts +12 -1
  88. package/{dist → dist-types}/handlers/utils/consent-enrichment.d.ts +3 -1
  89. package/{dist → dist-types}/init.d.ts +4 -7
  90. package/{dist → dist-types}/middleware/auth/index.d.ts +0 -1
  91. package/{dist → dist-types}/middleware/auth/validate-api-key.d.ts +0 -1
  92. package/{dist → dist-types}/middleware/cors/cors.d.ts +0 -1
  93. package/{src/middleware/cors/index.ts → dist-types/middleware/cors/index.d.ts} +0 -1
  94. package/{dist → dist-types}/middleware/cors/is-origin-trusted.d.ts +0 -1
  95. package/{dist → dist-types}/middleware/cors/process-cors.d.ts +0 -1
  96. package/{dist → dist-types}/middleware/openapi/config.d.ts +0 -1
  97. package/{dist → dist-types}/middleware/openapi/handlers.d.ts +0 -1
  98. package/{src/middleware/openapi/index.ts → dist-types/middleware/openapi/index.d.ts} +0 -1
  99. package/{dist → dist-types}/middleware/process-ip/index.d.ts +0 -1
  100. package/dist-types/policies/builder.d.ts +127 -0
  101. package/dist-types/policies/defaults.d.ts +2 -0
  102. package/dist-types/policies/matchers.d.ts +3 -0
  103. package/{dist → dist-types}/router.d.ts +0 -1
  104. package/{dist → dist-types}/routes/consent.d.ts +0 -1
  105. package/{dist → dist-types}/routes/index.d.ts +1 -1
  106. package/{dist → dist-types}/routes/init.d.ts +0 -1
  107. package/dist-types/routes/legal-document.d.ts +7 -0
  108. package/{dist → dist-types}/routes/status.d.ts +0 -1
  109. package/{dist → dist-types}/routes/subject.d.ts +0 -1
  110. package/{dist → dist-types}/types/api.d.ts +0 -1
  111. package/dist-types/types/index.d.ts +464 -0
  112. package/dist-types/utils/background.d.ts +6 -0
  113. package/{dist → dist-types}/utils/create-telemetry-options.d.ts +1 -2
  114. package/{dist → dist-types}/utils/env.d.ts +0 -1
  115. package/{dist → dist-types}/utils/extract-error-message.d.ts +0 -1
  116. package/{dist → dist-types}/utils/instrumentation.d.ts +2 -3
  117. package/{dist → dist-types}/utils/logger.d.ts +0 -1
  118. package/{dist → dist-types}/utils/metrics.d.ts +0 -1
  119. package/dist-types/version.d.ts +1 -0
  120. package/docs/README.md +49 -0
  121. package/docs/api/configuration.md +208 -0
  122. package/docs/api/endpoints.md +211 -0
  123. package/docs/guides/caching.md +85 -0
  124. package/docs/guides/database-setup.md +128 -0
  125. package/docs/guides/edge-deployment.md +251 -0
  126. package/docs/guides/framework-integration.md +142 -0
  127. package/docs/guides/iab-tcf.md +89 -0
  128. package/docs/guides/observability.md +96 -0
  129. package/docs/guides/policy-packs.md +396 -0
  130. package/docs/quickstart.md +129 -0
  131. package/package.json +51 -37
  132. package/.turbo/turbo-build.log +0 -49
  133. package/CHANGELOG.md +0 -99
  134. package/dist/cache/adapters/cloudflare-kv.d.ts.map +0 -1
  135. package/dist/cache/adapters/index.d.ts.map +0 -1
  136. package/dist/cache/adapters/memory.d.ts.map +0 -1
  137. package/dist/cache/adapters/upstash-redis.d.ts.map +0 -1
  138. package/dist/cache/gvl-resolver.d.ts.map +0 -1
  139. package/dist/cache/index.d.ts.map +0 -1
  140. package/dist/cache/keys.d.ts.map +0 -1
  141. package/dist/cache/types.d.ts.map +0 -1
  142. package/dist/core.d.ts.map +0 -1
  143. package/dist/db/adapters/drizzle.d.ts +0 -2
  144. package/dist/db/adapters/drizzle.d.ts.map +0 -1
  145. package/dist/db/adapters/index.d.ts +0 -2
  146. package/dist/db/adapters/index.d.ts.map +0 -1
  147. package/dist/db/adapters/kysely.d.ts +0 -2
  148. package/dist/db/adapters/kysely.d.ts.map +0 -1
  149. package/dist/db/adapters/mongo.d.ts +0 -2
  150. package/dist/db/adapters/mongo.d.ts.map +0 -1
  151. package/dist/db/adapters/prisma.d.ts +0 -2
  152. package/dist/db/adapters/prisma.d.ts.map +0 -1
  153. package/dist/db/adapters/typeorm.d.ts +0 -2
  154. package/dist/db/adapters/typeorm.d.ts.map +0 -1
  155. package/dist/db/migrator/index.d.ts.map +0 -1
  156. package/dist/db/registry/consent-policy.d.ts +0 -23
  157. package/dist/db/registry/consent-policy.d.ts.map +0 -1
  158. package/dist/db/registry/consent-purpose.d.ts.map +0 -1
  159. package/dist/db/registry/domain.d.ts.map +0 -1
  160. package/dist/db/registry/index.d.ts +0 -57
  161. package/dist/db/registry/index.d.ts.map +0 -1
  162. package/dist/db/registry/subject.d.ts.map +0 -1
  163. package/dist/db/registry/types.d.ts.map +0 -1
  164. package/dist/db/registry/utils/generate-id.d.ts.map +0 -1
  165. package/dist/db/registry/utils.d.ts.map +0 -1
  166. package/dist/db/schema/1.0.0/audit-log.d.ts.map +0 -1
  167. package/dist/db/schema/1.0.0/consent-policy.d.ts.map +0 -1
  168. package/dist/db/schema/1.0.0/consent-purpose.d.ts.map +0 -1
  169. package/dist/db/schema/1.0.0/consent-record.d.ts.map +0 -1
  170. package/dist/db/schema/1.0.0/consent.d.ts.map +0 -1
  171. package/dist/db/schema/1.0.0/domain.d.ts.map +0 -1
  172. package/dist/db/schema/1.0.0/index.d.ts.map +0 -1
  173. package/dist/db/schema/1.0.0/subject.d.ts.map +0 -1
  174. package/dist/db/schema/2.0.0/audit-log.d.ts.map +0 -1
  175. package/dist/db/schema/2.0.0/consent-policy.d.ts.map +0 -1
  176. package/dist/db/schema/2.0.0/consent-purpose.d.ts.map +0 -1
  177. package/dist/db/schema/2.0.0/consent.d.ts.map +0 -1
  178. package/dist/db/schema/2.0.0/domain.d.ts.map +0 -1
  179. package/dist/db/schema/2.0.0/index.d.ts.map +0 -1
  180. package/dist/db/schema/2.0.0/subject.d.ts.map +0 -1
  181. package/dist/db/schema/index.d.ts.map +0 -1
  182. package/dist/db/tenant-scope.d.ts.map +0 -1
  183. package/dist/define-config.d.ts +0 -5
  184. package/dist/define-config.d.ts.map +0 -1
  185. package/dist/handlers/consent/check.handler.d.ts.map +0 -1
  186. package/dist/handlers/consent/index.d.ts +0 -12
  187. package/dist/handlers/consent/index.d.ts.map +0 -1
  188. package/dist/handlers/init/geo.d.ts.map +0 -1
  189. package/dist/handlers/init/index.d.ts.map +0 -1
  190. package/dist/handlers/init/translations.d.ts +0 -28
  191. package/dist/handlers/init/translations.d.ts.map +0 -1
  192. package/dist/handlers/status/index.d.ts +0 -7
  193. package/dist/handlers/status/index.d.ts.map +0 -1
  194. package/dist/handlers/status/status.handler.d.ts.map +0 -1
  195. package/dist/handlers/subject/get.handler.d.ts.map +0 -1
  196. package/dist/handlers/subject/index.d.ts +0 -10
  197. package/dist/handlers/subject/index.d.ts.map +0 -1
  198. package/dist/handlers/subject/list.handler.d.ts.map +0 -1
  199. package/dist/handlers/subject/patch.handler.d.ts.map +0 -1
  200. package/dist/handlers/subject/post.handler.d.ts.map +0 -1
  201. package/dist/handlers/utils/consent-enrichment.d.ts.map +0 -1
  202. package/dist/init.d.ts.map +0 -1
  203. package/dist/middleware/auth/index.d.ts.map +0 -1
  204. package/dist/middleware/auth/validate-api-key.d.ts.map +0 -1
  205. package/dist/middleware/cors/cors.d.ts.map +0 -1
  206. package/dist/middleware/cors/index.d.ts +0 -30
  207. package/dist/middleware/cors/index.d.ts.map +0 -1
  208. package/dist/middleware/cors/is-origin-trusted.d.ts.map +0 -1
  209. package/dist/middleware/cors/process-cors.d.ts.map +0 -1
  210. package/dist/middleware/openapi/config.d.ts.map +0 -1
  211. package/dist/middleware/openapi/handlers.d.ts.map +0 -1
  212. package/dist/middleware/openapi/index.d.ts +0 -12
  213. package/dist/middleware/openapi/index.d.ts.map +0 -1
  214. package/dist/middleware/process-ip/index.d.ts.map +0 -1
  215. package/dist/router.d.ts.map +0 -1
  216. package/dist/routes/consent.d.ts.map +0 -1
  217. package/dist/routes/index.d.ts.map +0 -1
  218. package/dist/routes/init.d.ts.map +0 -1
  219. package/dist/routes/status.d.ts.map +0 -1
  220. package/dist/routes/subject.d.ts.map +0 -1
  221. package/dist/types/api.d.ts.map +0 -1
  222. package/dist/types/index.d.ts +0 -255
  223. package/dist/types/index.d.ts.map +0 -1
  224. package/dist/utils/create-telemetry-options.d.ts.map +0 -1
  225. package/dist/utils/env.d.ts.map +0 -1
  226. package/dist/utils/extract-error-message.d.ts.map +0 -1
  227. package/dist/utils/index.d.ts +0 -4
  228. package/dist/utils/index.d.ts.map +0 -1
  229. package/dist/utils/instrumentation.d.ts.map +0 -1
  230. package/dist/utils/logger.d.ts.map +0 -1
  231. package/dist/utils/metrics.d.ts.map +0 -1
  232. package/dist/version.d.ts +0 -2
  233. package/dist/version.d.ts.map +0 -1
  234. package/knip.json +0 -31
  235. package/rslib.config.ts +0 -93
  236. package/src/cache/adapters/cloudflare-kv.ts +0 -71
  237. package/src/cache/adapters/index.ts +0 -22
  238. package/src/cache/adapters/memory.ts +0 -111
  239. package/src/cache/adapters/upstash-redis.ts +0 -113
  240. package/src/cache/gvl-resolver.ts +0 -289
  241. package/src/cache/index.ts +0 -34
  242. package/src/cache/keys.ts +0 -68
  243. package/src/cache/types.ts +0 -66
  244. package/src/core.ts +0 -368
  245. package/src/db/migrator/index.ts +0 -80
  246. package/src/db/registry/consent-policy.test.ts +0 -451
  247. package/src/db/registry/consent-policy.ts +0 -82
  248. package/src/db/registry/consent-purpose.test.ts +0 -428
  249. package/src/db/registry/consent-purpose.ts +0 -61
  250. package/src/db/registry/domain.test.ts +0 -445
  251. package/src/db/registry/domain.ts +0 -91
  252. package/src/db/registry/index.ts +0 -14
  253. package/src/db/registry/subject.test.ts +0 -388
  254. package/src/db/registry/subject.ts +0 -129
  255. package/src/db/registry/types.ts +0 -10
  256. package/src/db/registry/utils/generate-id.test.ts +0 -216
  257. package/src/db/registry/utils/generate-id.ts +0 -133
  258. package/src/db/registry/utils.ts +0 -133
  259. package/src/db/schema/1.0.0/audit-log.ts +0 -15
  260. package/src/db/schema/1.0.0/consent-policy.ts +0 -14
  261. package/src/db/schema/1.0.0/consent-purpose.ts +0 -14
  262. package/src/db/schema/1.0.0/consent-record.ts +0 -10
  263. package/src/db/schema/1.0.0/consent.ts +0 -20
  264. package/src/db/schema/1.0.0/domain.ts +0 -12
  265. package/src/db/schema/1.0.0/index.ts +0 -48
  266. package/src/db/schema/1.0.0/subject.ts +0 -12
  267. package/src/db/schema/2.0.0/audit-log.ts +0 -18
  268. package/src/db/schema/2.0.0/consent-policy.ts +0 -28
  269. package/src/db/schema/2.0.0/consent-purpose.ts +0 -12
  270. package/src/db/schema/2.0.0/consent.ts +0 -26
  271. package/src/db/schema/2.0.0/domain.ts +0 -12
  272. package/src/db/schema/2.0.0/index.ts +0 -47
  273. package/src/db/schema/2.0.0/subject.ts +0 -14
  274. package/src/db/schema/index.ts +0 -15
  275. package/src/db/tenant-scope.test.ts +0 -750
  276. package/src/db/tenant-scope.ts +0 -103
  277. package/src/define-config.ts +0 -5
  278. package/src/handlers/consent/check.handler.ts +0 -126
  279. package/src/handlers/init/geo.test.ts +0 -317
  280. package/src/handlers/init/geo.ts +0 -195
  281. package/src/handlers/init/index.test.ts +0 -205
  282. package/src/handlers/init/index.ts +0 -114
  283. package/src/handlers/init/translations.test.ts +0 -121
  284. package/src/handlers/init/translations.ts +0 -72
  285. package/src/handlers/status/status.handler.test.ts +0 -155
  286. package/src/handlers/status/status.handler.ts +0 -51
  287. package/src/handlers/subject/get.handler.ts +0 -93
  288. package/src/handlers/subject/list.handler.ts +0 -93
  289. package/src/handlers/subject/patch.handler.ts +0 -122
  290. package/src/handlers/subject/post.handler.test.ts +0 -294
  291. package/src/handlers/subject/post.handler.ts +0 -254
  292. package/src/handlers/utils/consent-enrichment.test.ts +0 -380
  293. package/src/handlers/utils/consent-enrichment.ts +0 -218
  294. package/src/init.test.ts +0 -126
  295. package/src/init.ts +0 -87
  296. package/src/middleware/auth/index.ts +0 -11
  297. package/src/middleware/auth/validate-api-key.test.ts +0 -86
  298. package/src/middleware/auth/validate-api-key.ts +0 -107
  299. package/src/middleware/cors/cors.test.ts +0 -135
  300. package/src/middleware/cors/cors.ts +0 -186
  301. package/src/middleware/cors/is-origin-trusted.test.ts +0 -164
  302. package/src/middleware/cors/is-origin-trusted.ts +0 -130
  303. package/src/middleware/cors/process-cors.ts +0 -91
  304. package/src/middleware/openapi/config.ts +0 -29
  305. package/src/middleware/openapi/handlers.ts +0 -34
  306. package/src/middleware/process-ip/index.test.ts +0 -195
  307. package/src/middleware/process-ip/index.ts +0 -199
  308. package/src/router.ts +0 -15
  309. package/src/routes/consent.ts +0 -52
  310. package/src/routes/index.ts +0 -10
  311. package/src/routes/init.ts +0 -102
  312. package/src/routes/status.ts +0 -46
  313. package/src/routes/subject.ts +0 -152
  314. package/src/types/api.ts +0 -48
  315. package/src/types/index.ts +0 -288
  316. package/src/utils/create-telemetry-options.test.ts +0 -302
  317. package/src/utils/create-telemetry-options.ts +0 -229
  318. package/src/utils/env.ts +0 -84
  319. package/src/utils/extract-error-message.ts +0 -21
  320. package/src/utils/instrumentation.test.ts +0 -185
  321. package/src/utils/instrumentation.ts +0 -196
  322. package/src/utils/logger.ts +0 -41
  323. package/src/utils/metrics.test.ts +0 -323
  324. package/src/utils/metrics.ts +0 -402
  325. package/src/utils/telemetry-pii.test.ts +0 -325
  326. package/src/version.ts +0 -2
  327. package/tsconfig.json +0 -11
  328. package/vitest.config.ts +0 -28
  329. /package/dist/{types.js → types/index.js} +0 -0
  330. /package/{src/db/adapters/drizzle.ts → dist-types/db/adapters/drizzle.d.ts} +0 -0
  331. /package/{src/db/adapters/index.ts → dist-types/db/adapters/index.d.ts} +0 -0
  332. /package/{src/db/adapters/kysely.ts → dist-types/db/adapters/kysely.d.ts} +0 -0
  333. /package/{src/db/adapters/mongo.ts → dist-types/db/adapters/mongo.d.ts} +0 -0
  334. /package/{src/db/adapters/prisma.ts → dist-types/db/adapters/prisma.d.ts} +0 -0
  335. /package/{src/db/adapters/typeorm.ts → dist-types/db/adapters/typeorm.d.ts} +0 -0
  336. /package/{src/utils/index.ts → dist-types/utils/index.d.ts} +0 -0
package/dist/cache.cjs CHANGED
@@ -13,7 +13,7 @@ var __webpack_require__ = {};
13
13
  })();
14
14
  (()=>{
15
15
  __webpack_require__.r = (exports1)=>{
16
- if ('undefined' != typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
16
+ if ("u" > typeof Symbol && Symbol.toStringTag) Object.defineProperty(exports1, Symbol.toStringTag, {
17
17
  value: 'Module'
18
18
  });
19
19
  Object.defineProperty(exports1, '__esModule', {
@@ -139,18 +139,18 @@ function extractErrorMessage(error) {
139
139
  let cachedConfig = null;
140
140
  let cachedDefaultAttributes = {};
141
141
  function create_telemetry_options_isTelemetryEnabled(options) {
142
- if (options) return options.advanced?.telemetry?.enabled === true;
142
+ if (options) return options.telemetry?.enabled === true;
143
143
  return cachedConfig?.enabled === true;
144
144
  }
145
145
  const create_telemetry_options_getTracer = (options)=>{
146
146
  if (!create_telemetry_options_isTelemetryEnabled(options)) return api_namespaceObject.trace.getTracer('c15t-noop');
147
- const tracer = options?.advanced?.telemetry?.tracer ?? cachedConfig?.tracer;
147
+ const tracer = options?.telemetry?.tracer ?? cachedConfig?.tracer;
148
148
  if (tracer) return tracer;
149
149
  return api_namespaceObject.trace.getTracer(options?.appName ?? 'c15t');
150
150
  };
151
151
  const getMeter = (options)=>{
152
152
  if (!create_telemetry_options_isTelemetryEnabled(options)) return api_namespaceObject.metrics.getMeter('c15t-noop');
153
- const meter = options?.advanced?.telemetry?.meter ?? cachedConfig?.meter;
153
+ const meter = options?.telemetry?.meter ?? cachedConfig?.meter;
154
154
  if (meter) return meter;
155
155
  return api_namespaceObject.metrics.getMeter(options?.appName ?? 'c15t');
156
156
  };
@@ -180,7 +180,7 @@ async function executeWithSpan(span, operation) {
180
180
  }
181
181
  }
182
182
  function resolveDefaultAttributes(options) {
183
- return options?.advanced?.telemetry?.defaultAttributes || getDefaultAttributes();
183
+ return options?.telemetry?.defaultAttributes || getDefaultAttributes();
184
184
  }
185
185
  async function withExternalSpan(attributes, operation, options) {
186
186
  if (!create_telemetry_options_isTelemetryEnabled(options)) return operation();
package/dist/cache.js CHANGED
@@ -1,6 +1,5 @@
1
1
  import { Redis } from "@upstash/redis";
2
- import { SpanKind as api_SpanKind, SpanStatusCode as api_SpanStatusCode, context, metrics, trace as api_trace } from "@opentelemetry/api";
3
- const GVL_TTL_MS = 259200000;
2
+ import { GVL_TTL_MS } from "./302.js";
4
3
  function createCloudflareKVAdapter(kv) {
5
4
  return {
6
5
  async get (key) {
@@ -24,44 +23,6 @@ function createCloudflareKVAdapter(kv) {
24
23
  }
25
24
  };
26
25
  }
27
- const memory_memoryCache = new Map();
28
- function createMemoryCacheAdapter() {
29
- return {
30
- async get (key) {
31
- const entry = memory_memoryCache.get(key);
32
- if (!entry) return null;
33
- if (Date.now() > entry.expiresAt) {
34
- memory_memoryCache.delete(key);
35
- return null;
36
- }
37
- return entry.value;
38
- },
39
- async set (key, value, ttlMs = 300000) {
40
- memory_memoryCache.set(key, {
41
- value,
42
- expiresAt: Date.now() + ttlMs
43
- });
44
- },
45
- async delete (key) {
46
- memory_memoryCache.delete(key);
47
- },
48
- async has (key) {
49
- const entry = memory_memoryCache.get(key);
50
- if (!entry) return false;
51
- if (Date.now() > entry.expiresAt) {
52
- memory_memoryCache.delete(key);
53
- return false;
54
- }
55
- return true;
56
- }
57
- };
58
- }
59
- function clearMemoryCache() {
60
- memory_memoryCache.clear();
61
- }
62
- function getMemoryCacheSize() {
63
- return memory_memoryCache.size;
64
- }
65
26
  function createUpstashRedisAdapter(options) {
66
27
  const client = new Redis({
67
28
  url: options.url,
@@ -90,378 +51,6 @@ function createUpstashRedisAdapterFromClient(client) {
90
51
  }
91
52
  };
92
53
  }
93
- function extractErrorMessage(error) {
94
- if (error instanceof AggregateError && error.errors?.length > 0) {
95
- const inner = error.errors.map((e)=>e instanceof Error ? e.message : String(e)).join('; ');
96
- return `AggregateError: ${inner}`;
97
- }
98
- if (error instanceof Error) return error.message || error.name;
99
- return String(error);
100
- }
101
- let cachedConfig = null;
102
- let cachedDefaultAttributes = {};
103
- function create_telemetry_options_isTelemetryEnabled(options) {
104
- if (options) return options.advanced?.telemetry?.enabled === true;
105
- return cachedConfig?.enabled === true;
106
- }
107
- const create_telemetry_options_getTracer = (options)=>{
108
- if (!create_telemetry_options_isTelemetryEnabled(options)) return api_trace.getTracer('c15t-noop');
109
- const tracer = options?.advanced?.telemetry?.tracer ?? cachedConfig?.tracer;
110
- if (tracer) return tracer;
111
- return api_trace.getTracer(options?.appName ?? 'c15t');
112
- };
113
- const getMeter = (options)=>{
114
- if (!create_telemetry_options_isTelemetryEnabled(options)) return metrics.getMeter('c15t-noop');
115
- const meter = options?.advanced?.telemetry?.meter ?? cachedConfig?.meter;
116
- if (meter) return meter;
117
- return metrics.getMeter(options?.appName ?? 'c15t');
118
- };
119
- function getDefaultAttributes() {
120
- return cachedDefaultAttributes;
121
- }
122
- const handleSpanError = (span, error)=>{
123
- span.setStatus({
124
- code: api_SpanStatusCode.ERROR,
125
- message: extractErrorMessage(error)
126
- });
127
- if (error instanceof Error) span.setAttribute('error.type', error.name);
128
- };
129
- const withSpanContext = async (span, operation)=>context["with"](api_trace.setSpan(context.active(), span), operation);
130
- async function executeWithSpan(span, operation) {
131
- try {
132
- const result = await withSpanContext(span, operation);
133
- span.setStatus({
134
- code: api_SpanStatusCode.OK
135
- });
136
- return result;
137
- } catch (error) {
138
- handleSpanError(span, error);
139
- throw error;
140
- } finally{
141
- span.end();
142
- }
143
- }
144
- function resolveDefaultAttributes(options) {
145
- return options?.advanced?.telemetry?.defaultAttributes || getDefaultAttributes();
146
- }
147
- async function withExternalSpan(attributes, operation, options) {
148
- if (!create_telemetry_options_isTelemetryEnabled(options)) return operation();
149
- const tracer = create_telemetry_options_getTracer(options);
150
- const url = new URL(attributes.url);
151
- const spanName = `HTTP ${attributes.method} ${url.hostname}`;
152
- const span = tracer.startSpan(spanName, {
153
- kind: api_SpanKind.CLIENT,
154
- attributes: {
155
- 'http.method': attributes.method,
156
- 'http.url': `${url.origin}${url.pathname}`,
157
- 'http.host': url.hostname,
158
- ...resolveDefaultAttributes(options),
159
- ...Object.fromEntries(Object.entries(attributes).filter(([key])=>![
160
- 'url',
161
- 'method'
162
- ].includes(key)))
163
- }
164
- });
165
- return executeWithSpan(span, operation);
166
- }
167
- async function withCacheSpan(operation, layer, fn, options) {
168
- if (!create_telemetry_options_isTelemetryEnabled(options)) return fn();
169
- const tracer = create_telemetry_options_getTracer(options);
170
- const spanName = `cache.${layer}.${operation}`;
171
- const span = tracer.startSpan(spanName, {
172
- kind: api_SpanKind.CLIENT,
173
- attributes: {
174
- 'cache.operation': operation,
175
- 'cache.layer': layer,
176
- ...resolveDefaultAttributes(options)
177
- }
178
- });
179
- return executeWithSpan(span, fn);
180
- }
181
- function sanitizeAttributes(attrs) {
182
- return Object.fromEntries(Object.entries(attrs).filter(([_, v])=>null != v));
183
- }
184
- function createMetrics(meter) {
185
- const consentCreated = meter.createCounter('c15t.consent.created', {
186
- description: 'Number of consent submissions',
187
- unit: '1'
188
- });
189
- const consentAccepted = meter.createCounter('c15t.consent.accepted', {
190
- description: 'Number of consents accepted',
191
- unit: '1'
192
- });
193
- const consentRejected = meter.createCounter('c15t.consent.rejected', {
194
- description: 'Number of consents rejected',
195
- unit: '1'
196
- });
197
- const subjectCreated = meter.createCounter('c15t.subject.created', {
198
- description: 'Number of new subjects created',
199
- unit: '1'
200
- });
201
- const subjectLinked = meter.createCounter('c15t.subject.linked', {
202
- description: 'Number of subjects linked to external ID',
203
- unit: '1'
204
- });
205
- const consentCheckCount = meter.createCounter('c15t.consent_check.count', {
206
- description: 'Number of cross-device consent checks',
207
- unit: '1'
208
- });
209
- const initCount = meter.createCounter('c15t.init.count', {
210
- description: 'Number of init endpoint calls',
211
- unit: '1'
212
- });
213
- const httpRequestDuration = meter.createHistogram('c15t.http.request.duration', {
214
- description: 'HTTP request latency',
215
- unit: 'ms'
216
- });
217
- const httpRequestCount = meter.createCounter('c15t.http.request.count', {
218
- description: 'Number of HTTP requests',
219
- unit: '1'
220
- });
221
- const httpErrorCount = meter.createCounter('c15t.http.error.count', {
222
- description: 'Number of HTTP errors',
223
- unit: '1'
224
- });
225
- const dbQueryDuration = meter.createHistogram('c15t.db.query.duration', {
226
- description: 'Database query latency',
227
- unit: 'ms'
228
- });
229
- const dbQueryCount = meter.createCounter('c15t.db.query.count', {
230
- description: 'Number of database queries',
231
- unit: '1'
232
- });
233
- const dbErrorCount = meter.createCounter('c15t.db.error.count', {
234
- description: 'Number of database errors',
235
- unit: '1'
236
- });
237
- const cacheHit = meter.createCounter('c15t.cache.hit', {
238
- description: 'Number of cache hits',
239
- unit: '1'
240
- });
241
- const cacheMiss = meter.createCounter('c15t.cache.miss', {
242
- description: 'Number of cache misses',
243
- unit: '1'
244
- });
245
- const cacheLatency = meter.createHistogram('c15t.cache.latency', {
246
- description: 'Cache operation latency',
247
- unit: 'ms'
248
- });
249
- const gvlFetchDuration = meter.createHistogram('c15t.gvl.fetch.duration', {
250
- description: 'GVL fetch latency',
251
- unit: 'ms'
252
- });
253
- const gvlFetchCount = meter.createCounter('c15t.gvl.fetch.count', {
254
- description: 'Number of GVL fetches',
255
- unit: '1'
256
- });
257
- const gvlFetchError = meter.createCounter('c15t.gvl.fetch.error', {
258
- description: 'Number of GVL fetch errors',
259
- unit: '1'
260
- });
261
- return {
262
- consentCreated,
263
- consentAccepted,
264
- consentRejected,
265
- subjectCreated,
266
- subjectLinked,
267
- consentCheckCount,
268
- initCount,
269
- httpRequestDuration,
270
- httpRequestCount,
271
- httpErrorCount,
272
- dbQueryDuration,
273
- dbQueryCount,
274
- dbErrorCount,
275
- cacheHit,
276
- cacheMiss,
277
- cacheLatency,
278
- gvlFetchDuration,
279
- gvlFetchCount,
280
- gvlFetchError,
281
- recordConsentCreated (attributes) {
282
- consentCreated.add(1, sanitizeAttributes(attributes));
283
- },
284
- recordConsentAccepted (attributes) {
285
- consentAccepted.add(1, sanitizeAttributes(attributes));
286
- },
287
- recordConsentRejected (attributes) {
288
- consentRejected.add(1, sanitizeAttributes(attributes));
289
- },
290
- recordSubjectCreated (attributes) {
291
- subjectCreated.add(1, sanitizeAttributes(attributes));
292
- },
293
- recordSubjectLinked (identityProvider) {
294
- subjectLinked.add(1, {
295
- identityProvider: identityProvider || 'unknown'
296
- });
297
- },
298
- recordConsentCheck (type, found) {
299
- consentCheckCount.add(1, {
300
- type,
301
- found: String(found)
302
- });
303
- },
304
- recordInit (attributes) {
305
- initCount.add(1, sanitizeAttributes(attributes));
306
- },
307
- recordHttpRequest (attributes, durationMs) {
308
- const attrs = sanitizeAttributes(attributes);
309
- httpRequestCount.add(1, attrs);
310
- httpRequestDuration.record(durationMs, attrs);
311
- if (attributes.status >= 400) httpErrorCount.add(1, attrs);
312
- },
313
- recordDbQuery (attributes, durationMs) {
314
- const attrs = sanitizeAttributes(attributes);
315
- dbQueryCount.add(1, attrs);
316
- dbQueryDuration.record(durationMs, attrs);
317
- },
318
- recordDbError (attributes) {
319
- dbErrorCount.add(1, sanitizeAttributes(attributes));
320
- },
321
- recordCacheHit (layer) {
322
- cacheHit.add(1, {
323
- layer
324
- });
325
- },
326
- recordCacheMiss (layer) {
327
- cacheMiss.add(1, {
328
- layer
329
- });
330
- },
331
- recordCacheLatency (attributes, durationMs) {
332
- cacheLatency.record(durationMs, sanitizeAttributes(attributes));
333
- },
334
- recordGvlFetch (attributes, durationMs) {
335
- const attrs = sanitizeAttributes(attributes);
336
- gvlFetchCount.add(1, attrs);
337
- gvlFetchDuration.record(durationMs, attrs);
338
- },
339
- recordGvlError (attributes) {
340
- gvlFetchError.add(1, sanitizeAttributes(attributes));
341
- }
342
- };
343
- }
344
- let metricsInstance = null;
345
- function getMetrics(options) {
346
- if (metricsInstance) return metricsInstance;
347
- if (!create_telemetry_options_isTelemetryEnabled(options)) return null;
348
- metricsInstance = createMetrics(getMeter(options));
349
- return metricsInstance;
350
- }
351
- function createGVLCacheKey(appName, language, vendorIds) {
352
- const sortedIds = vendorIds ? [
353
- ...vendorIds
354
- ].sort((a, b)=>a - b).join(',') : 'all';
355
- return `${appName}:gvl:${language}:${sortedIds}`;
356
- }
357
- function createCacheKey(appName, namespace, ...parts) {
358
- const allParts = [
359
- appName,
360
- namespace,
361
- ...parts
362
- ];
363
- return allParts.join(':');
364
- }
365
- const GVL_ENDPOINT = 'https://gvl.consent.io';
366
- const inflightRequests = new Map();
367
- async function fetchGVLWithLanguage(language, vendorIds, endpoint = GVL_ENDPOINT) {
368
- const sortedVendorIds = vendorIds ? [
369
- ...vendorIds
370
- ].sort((a, b)=>a - b) : [];
371
- const dedupeKey = `${endpoint}|${language}|${sortedVendorIds.join(',')}`;
372
- const existingRequest = inflightRequests.get(dedupeKey);
373
- if (existingRequest) return existingRequest;
374
- const url = new URL(endpoint);
375
- if (sortedVendorIds.length > 0) url.searchParams.set('vendorIds', sortedVendorIds.join(','));
376
- const promise = (async ()=>{
377
- const fetchStart = Date.now();
378
- try {
379
- const gvl = await withExternalSpan({
380
- url: url.toString(),
381
- method: 'GET'
382
- }, async ()=>{
383
- const response = await fetch(url.toString(), {
384
- headers: {
385
- 'Accept-Language': language
386
- }
387
- });
388
- if (204 === response.status) return null;
389
- if (!response.ok) throw new Error(`Failed to fetch GVL: ${response.status} ${response.statusText}`);
390
- const text = await response.text();
391
- const trimmed = text.trim().replace(/^\uFEFF/, '');
392
- let parsed;
393
- try {
394
- parsed = JSON.parse(trimmed);
395
- } catch {
396
- let depth = 0;
397
- let end = -1;
398
- const start = trimmed.indexOf('{');
399
- if (start >= 0) for(let i = start; i < trimmed.length; i++){
400
- const c = trimmed[i];
401
- if ('{' === c) depth++;
402
- else if ('}' === c) {
403
- depth--;
404
- if (0 === depth) {
405
- end = i + 1;
406
- break;
407
- }
408
- }
409
- }
410
- if (end > 0) parsed = JSON.parse(trimmed.slice(0, end));
411
- else throw new SyntaxError('Invalid GVL response: not valid JSON');
412
- }
413
- if (!parsed.vendorListVersion || !parsed.purposes || !parsed.vendors) throw new Error('Invalid GVL response: missing required fields');
414
- return parsed;
415
- });
416
- getMetrics()?.recordGvlFetch({
417
- language,
418
- source: 'fetch',
419
- status: 200
420
- }, Date.now() - fetchStart);
421
- return gvl;
422
- } catch (error) {
423
- getMetrics()?.recordGvlError({
424
- language,
425
- errorType: error instanceof Error ? error.name : 'UnknownError'
426
- });
427
- throw error;
428
- } finally{
429
- inflightRequests.delete(dedupeKey);
430
- }
431
- })();
432
- inflightRequests.set(dedupeKey, promise);
433
- return promise;
434
- }
435
- function createGVLResolver(options) {
436
- const { appName, bundled, cacheAdapter, vendorIds, endpoint } = options;
437
- const memoryCache = createMemoryCacheAdapter();
438
- return {
439
- async get (language) {
440
- const cacheKey = createGVLCacheKey(appName, language, vendorIds);
441
- if (bundled?.[language]) return bundled[language];
442
- const memoryHit = await withCacheSpan('get', 'memory', ()=>memoryCache.get(cacheKey));
443
- if (memoryHit) {
444
- getMetrics()?.recordCacheHit('memory');
445
- return memoryHit;
446
- }
447
- getMetrics()?.recordCacheMiss('memory');
448
- if (cacheAdapter) {
449
- const externalHit = await withCacheSpan('get', 'external', ()=>cacheAdapter.get(cacheKey));
450
- if (externalHit) {
451
- getMetrics()?.recordCacheHit('external');
452
- await withCacheSpan('set', 'memory', ()=>memoryCache.set(cacheKey, externalHit, 300000));
453
- return externalHit;
454
- }
455
- getMetrics()?.recordCacheMiss('external');
456
- }
457
- const gvl = await fetchGVLWithLanguage(language, vendorIds, endpoint);
458
- if (gvl) {
459
- await withCacheSpan('set', 'memory', ()=>memoryCache.set(cacheKey, gvl, 300000));
460
- if (cacheAdapter) await withCacheSpan('set', 'external', ()=>cacheAdapter.set(cacheKey, gvl, GVL_TTL_MS));
461
- }
462
- return gvl;
463
- }
464
- };
465
- }
466
- var __webpack_exports__MEMORY_TTL_MS = 300000;
467
- export { GVL_TTL_MS, clearMemoryCache, createCacheKey, createCloudflareKVAdapter, createGVLCacheKey, createGVLResolver, createMemoryCacheAdapter, createUpstashRedisAdapter, createUpstashRedisAdapterFromClient, getMemoryCacheSize, __webpack_exports__MEMORY_TTL_MS as MEMORY_TTL_MS };
54
+ var cache_MEMORY_TTL_MS = 300000;
55
+ export { GVL_TTL_MS, clearMemoryCache, createCacheKey, createGVLCacheKey, createGVLResolver, createMemoryCacheAdapter, getMemoryCacheSize } from "./302.js";
56
+ export { cache_MEMORY_TTL_MS as MEMORY_TTL_MS, createCloudflareKVAdapter, createUpstashRedisAdapter, createUpstashRedisAdapterFromClient };