@owlmeans/consent 0.1.18-rc.9 → 0.1.18

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 (115) hide show
  1. package/README.md +229 -0
  2. package/build/consts.d.ts +78 -3
  3. package/build/consts.d.ts.map +1 -1
  4. package/build/consts.js +104 -0
  5. package/build/consts.js.map +1 -1
  6. package/build/consts.local.d.ts +12 -0
  7. package/build/consts.local.d.ts.map +1 -0
  8. package/build/consts.local.js +12 -0
  9. package/build/consts.local.js.map +1 -0
  10. package/build/geo/types.d.ts +47 -0
  11. package/build/geo/types.d.ts.map +1 -0
  12. package/build/geo/types.js +2 -0
  13. package/build/geo/types.js.map +1 -0
  14. package/build/geo.d.ts +4 -0
  15. package/build/geo.d.ts.map +1 -0
  16. package/build/geo.js +96 -0
  17. package/build/geo.js.map +1 -0
  18. package/build/gtobserver/types.d.ts +75 -0
  19. package/build/gtobserver/types.d.ts.map +1 -0
  20. package/build/gtobserver/types.js +2 -0
  21. package/build/gtobserver/types.js.map +1 -0
  22. package/build/gtobserver.d.ts +7 -0
  23. package/build/gtobserver.d.ts.map +1 -0
  24. package/build/gtobserver.js +142 -0
  25. package/build/gtobserver.js.map +1 -0
  26. package/build/i18n/be.json +8 -1
  27. package/build/i18n/de.json +8 -1
  28. package/build/i18n/en.json +8 -1
  29. package/build/i18n/es.json +8 -1
  30. package/build/i18n/fr.json +8 -1
  31. package/build/i18n/pl.json +8 -1
  32. package/build/i18n/ru.json +8 -1
  33. package/build/i18n/types.d.ts +11 -0
  34. package/build/i18n/types.d.ts.map +1 -0
  35. package/build/i18n/types.js +2 -0
  36. package/build/i18n/types.js.map +1 -0
  37. package/build/i18n/uk.json +8 -1
  38. package/build/i18n.d.ts +4 -14
  39. package/build/i18n.d.ts.map +1 -1
  40. package/build/i18n.js +12 -27
  41. package/build/i18n.js.map +1 -1
  42. package/build/index.d.ts +13 -5
  43. package/build/index.d.ts.map +1 -1
  44. package/build/index.js +5 -3
  45. package/build/index.js.map +1 -1
  46. package/build/linker/types.d.ts +59 -0
  47. package/build/linker/types.d.ts.map +1 -0
  48. package/build/linker/types.js +2 -0
  49. package/build/linker/types.js.map +1 -0
  50. package/build/linker.d.ts +5 -74
  51. package/build/linker.d.ts.map +1 -1
  52. package/build/linker.js +290 -324
  53. package/build/linker.js.map +1 -1
  54. package/build/plugins/types.d.ts +42 -0
  55. package/build/plugins/types.d.ts.map +1 -0
  56. package/build/plugins/types.js +2 -0
  57. package/build/plugins/types.js.map +1 -0
  58. package/build/plugins.d.ts +4 -68
  59. package/build/plugins.d.ts.map +1 -1
  60. package/build/plugins.js +73 -61
  61. package/build/plugins.js.map +1 -1
  62. package/build/storage/types.d.ts +31 -0
  63. package/build/storage/types.d.ts.map +1 -0
  64. package/build/storage/types.js +2 -0
  65. package/build/storage/types.js.map +1 -0
  66. package/build/storage.d.ts +6 -22
  67. package/build/storage.d.ts.map +1 -1
  68. package/build/storage.js +72 -81
  69. package/build/storage.js.map +1 -1
  70. package/build/store.d.ts +2 -2
  71. package/build/store.d.ts.map +1 -1
  72. package/build/store.js +115 -31
  73. package/build/store.js.map +1 -1
  74. package/build/types.d.ts +141 -5
  75. package/build/types.d.ts.map +1 -1
  76. package/build/types.local.d.ts +9 -0
  77. package/build/types.local.d.ts.map +1 -0
  78. package/build/types.local.js +2 -0
  79. package/build/types.local.js.map +1 -0
  80. package/package.json +3 -3
  81. package/src/consts.local.ts +16 -0
  82. package/src/consts.ts +120 -3
  83. package/src/geo/types.ts +49 -0
  84. package/src/geo.ts +122 -0
  85. package/src/gtobserver/types.ts +73 -0
  86. package/src/gtobserver.ts +182 -0
  87. package/src/i18n/be.json +8 -1
  88. package/src/i18n/de.json +8 -1
  89. package/src/i18n/en.json +8 -1
  90. package/src/i18n/es.json +8 -1
  91. package/src/i18n/fr.json +8 -1
  92. package/src/i18n/pl.json +8 -1
  93. package/src/i18n/ru.json +8 -1
  94. package/src/i18n/types.ts +11 -0
  95. package/src/i18n/uk.json +8 -1
  96. package/src/i18n.ts +20 -32
  97. package/src/index.ts +13 -12
  98. package/src/linker/types.ts +59 -0
  99. package/src/linker.ts +301 -349
  100. package/src/plugins/types.ts +42 -0
  101. package/src/plugins.ts +82 -105
  102. package/src/storage/types.ts +31 -0
  103. package/src/storage.ts +75 -77
  104. package/src/store.ts +125 -31
  105. package/src/types.local.ts +9 -0
  106. package/src/types.ts +148 -5
  107. package/tests/consent.spec.ts +26 -28
  108. package/tests/geo.spec.ts +474 -0
  109. package/tests/linker.spec.ts +68 -74
  110. package/tests/tracking.spec.ts +14 -14
  111. package/build/gtm.d.ts +0 -72
  112. package/build/gtm.d.ts.map +0 -1
  113. package/build/gtm.js +0 -182
  114. package/build/gtm.js.map +0 -1
  115. package/src/gtm.ts +0 -220
@@ -1 +1 @@
1
- {"version":3,"file":"linker.js","sourceRoot":"","sources":["../src/linker.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EAAE,WAAW,EAAE,oBAAoB,EAAE,sBAAsB,EAC9E,0BAA0B,GAC3B,MAAM,aAAa,CAAA;AAEpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AACjD,OAAO,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AAG1C,sFAAsF;AACtF,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAA;AACzC,wGAAwG;AACxG,MAAM,CAAC,MAAM,oBAAoB,GAAG,GAAG,CAAA;AACvC,oGAAoG;AACpG,MAAM,CAAC,MAAM,iBAAiB,GAAG,EAAE,CAAA;AAEnC,MAAM,oBAAoB,GAAG,CAAC,CAAA;AAiB9B,wGAAwG;AACxG,MAAM,YAAY,GAAG,yCAAyC,CAAA;AAE9D,MAAM,YAAY,GAAG,CAAC,IAAqB,EAAqB,EAAE,CAChE,IAAI,EAAE,UAAU,IAAI,0BAA0B,CAAA;AAEhD,MAAM,UAAU,GAAG,CAAC,IAAqB,EAAqB,EAAE,CAC9D,YAAY,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,QAAQ,KAAK,IAAI,CAAC,CAAA;AAEnE,MAAM,WAAW,GAAG,CAAC,IAAY,EAAU,EAAE,CAC3C,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;AAEvE,MAAM,aAAa,GAAG,CAAC,KAAa,EAAiB,EAAE;IACrD,IAAI,CAAC;QACH,IAAI,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;QACxD,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,GAAG,CAAA;QACf,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,CAAA;IACrB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,+FAA+F;AAC/F,MAAM,gBAAgB,GAAG,GAAkB,EAAE;IAC3C,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACpC,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,IAAI,GAAG,QAAQ,CAAC,eAAe,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,CAAA;IAEzD,OAAO,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;AAC5D,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,MAA4B,EAAE,IAAqB,EAAU,EAAE;IAC/F,MAAM,CAAC,GAA0B,EAAE,CAAA;IACnC,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,KAAK,MAAM,QAAQ,IAAI,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACxC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACzD,CAAC;IACH,CAAC;IACD,MAAM,QAAQ,GAAG,IAAI,EAAE,MAAM,EAAE,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3E,MAAM,OAAO,GAAuB;QAClC,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,EAAE,GAAG,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3G,CAAA;IAED,OAAO,WAAW,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAA;AAC7C,CAAC,CAAA;AAED,oGAAoG;AACpG,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAA6B,EAAE;IAC5E,MAAM,IAAI,GAAG,aAAa,CAAC,KAAK,CAAC,CAAA;IACjC,IAAI,IAAI,IAAI,IAAI,EAAE,CAAC;QACjB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAA;QAC1C,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;YACjD,OAAO,IAAI,CAAA;QACb,CAAC;QACD,MAAM,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,GAAG,MAAiC,CAAA;QACxD,IAAI,CAAC,KAAK,oBAAoB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC9F,OAAO,IAAI,CAAA;QACb,CAAC;QAED,OAAO;YACL,CAAC,EAAE,oBAAoB,EAAE,CAAC,EAAE,CAA0B,EAAE,CAAC;YACzD,oFAAoF;YACpF,GAAG,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjF,CAAA;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED,MAAM,gBAAgB,GAAG,GAAkB,EAAE;IAC3C,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,QAAQ,CAAC,QAAQ,KAAK,EAAE,EAAE,CAAC;QAChE,OAAO,IAAI,CAAA;IACb,CAAC;IACD,IAAI,CAAC;QACH,OAAO,IAAI,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,QAAQ,CAAA;IAC5C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,cAAc,GAAG,CAAC,IAAoB,EAA6B,EAAE;IACzE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,QAAQ,KAAK,WAAW,EAAE,CAAC;QACtD,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,kBAAkB,CAAC,CAAA;IACxF,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;QAChB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,OAAO,GAAG,iBAAiB,CAAC,GAAG,CAAC,CAAA;IACtC,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;QACpB,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAA;IACzC,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,oBAAoB,CAAA;IACpD,IAAI,GAAG,GAAG,OAAO,CAAC,CAAC,GAAG,MAAM,IAAI,OAAO,CAAC,CAAC,GAAG,GAAG,GAAG,iBAAiB,EAAE,CAAC;QACpE,OAAO,IAAI,CAAA;IACb,CAAC;IACD,MAAM,QAAQ,GAAG,gBAAgB,EAAE,CAAA;IACnC,IAAI,QAAQ,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,OAAO,OAAO,CAAA;AAChB,CAAC,CAAA;AAED,kGAAkG;AAClG,MAAM,iBAAiB,GAAG,CAAC,QAAgB,EAAE,SAAmB,EAAiB,EAAE;IACjF,MAAM,MAAM,GAAG,QAAQ,CAAC,WAAW,EAAE,CAAA;IACrC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAA;IAC7E,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC;QAClB,OAAO,KAAK,CAAA;IACd,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;IAEpC,OAAO,SAAS,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,KAAK,IAAI,CAAC,IAAI,IAAI,CAAA;AAC9E,CAAC,CAAA;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,QAAgB,EAAE,IAAqB,EAAW,EAAE;IACvF,IAAI,CAAC;QACH,YAAY,CAAC,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,UAAU,IAAI,oBAAoB,EAAE,QAAQ,CAAC,CAAA;QAE1F,OAAO,IAAI,CAAA;IACb,CAAC;IAAC,MAAM,CAAC;QACP,gGAAgG;QAChG,OAAO,KAAK,CAAA;IACd,CAAC;AACH,CAAC,CAAA;AAED;;;mFAGmF;AACnF,MAAM,aAAa,GAAG,CAAC,KAAc,EAAU,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAA;AAEhG;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,GAAkB,EAAE;IAC/C,IAAI,SAAS,GAAG,KAAK,CAAA;IAErB,OAAO;QACL,KAAK,EAAE,QAAQ;QAEf,KAAK,EAAE,IAAI,CAAC,EAAE;YACZ,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,SAAS,IAAI,IAAI,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;gBACxE,OAAM;YACR,CAAC;YACD,SAAS,GAAG,IAAI,CAAA;YAEhB,MAAM,UAAU,GAAG,CAAC,KAAY,EAAQ,EAAE;gBACxC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAA;gBAC3B,MAAM,MAAM,GAAG,MAAM,YAAY,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;gBAC3E,IAAI,CAAC,CAAC,MAAM,YAAY,iBAAiB,CAAC,EAAE,CAAC;oBAC3C,OAAM;gBACR,CAAC;gBACD,yFAAyF;gBACzF,0FAA0F;gBAC1F,IAAI,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;oBAC5D,OAAM;gBACR,CAAC;gBACD,mFAAmF;gBACnF,MAAM,MAAM,GAAG,WAAW,CAAC,IAAI,CAAC,CAAA;gBAChC,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,QAAQ,IAAI,IAAI,EAAE,CAAC;oBACpD,OAAM;gBACR,CAAC;gBACD,IAAI,GAAQ,CAAA;gBACZ,IAAI,CAAC;oBACH,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;gBAC3C,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAM;gBACR,CAAC;gBACD,MAAM,SAAS,GAAG,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;gBACvD,IAAI,SAAS,CAAC,QAAQ,EAAE,KAAK,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC;oBAC5C,MAAM,CAAC,IAAI,GAAG,SAAS,CAAC,QAAQ,EAAE,CAAA;gBACpC,CAAC;YACH,CAAC,CAAA;YAED,2FAA2F;YAC3F,8FAA8F;YAC9F,8FAA8F;YAC9F,QAAQ,CAAC,gBAAgB,CAAC,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;YACpD,QAAQ,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;YACvD,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,UAAU,EAAE,IAAI,CAAC,CAAA;QAC5D,CAAC;QAED,QAAQ,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YAC9B,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;YAC1B,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;YACrE,IAAI,MAAM,IAAI,IAAI,IAAI,GAAG,CAAC,QAAQ,KAAK,IAAI,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACtF,OAAO,IAAI,CAAA;YACb,CAAC;YACD,wFAAwF;YACxF,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,IAAI,gBAAgB,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC;gBAC9E,OAAO,IAAI,CAAA;YACb,CAAC;YACD,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAA;YACpC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,kBAAkB,EAAE,iBAAiB,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;YAE1F,OAAO,IAAI,CAAA;QACb,CAAC;QAED,KAAK,EAAE,IAAI,CAAC,EAAE;YACZ,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;YACpC,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,OAAO,IAAI,CAAA;YACb,CAAC;YACD,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,CAAC,CAAA;YACjC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;gBAChG,OAAO,IAAI,CAAA;YACb,CAAC;YAED,MAAM,MAAM,GAAkB,EAAE,CAAC,EAAE,sBAAsB,EAAE,CAAA;YAC3D,KAAK,MAAM,QAAQ,IAAI,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1C,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACpF,CAAC;YAED,OAAO,MAAM,CAAA;QACf,CAAC;QAED,aAAa,EAAE,IAAI,CAAC,EAAE;YACpB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAA;YAClD,MAAM,OAAO,GAAG,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;YAE/D,OAAO,OAAO,EAAE,CAAC,IAAI,IAAI,IAAI,SAAS,IAAI,IAAI,CAAC,CAAC,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;QACjG,CAAC;QAED,OAAO,EAAE,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,OAAO,IAAI,EAAE;KAC5C,CAAA;AACH,CAAC,CAAA;AAED;;;;;GAKG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,IAAoB,EAAQ,EAAE;IAClE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,MAAM,IAAI,IAAI,IAAI,OAAO,QAAQ,KAAK,WAAW,IAAI,OAAO,OAAO,KAAK,WAAW,EAAE,CAAC;QACxF,OAAM;IACR,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,kBAAkB,CAAA;IAChD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;IAClC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACjC,OAAM;IACR,CAAC;IACD,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC9B,IAAI,CAAC;QACH,OAAO,CAAC,YAAY,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,CAAA;IACpF,CAAC;IAAC,MAAM,CAAC;QACP,4FAA4F;IAC9F,CAAC;AACH,CAAC,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAoB,EAAU,EAAE;IAClE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAA;IAC1B,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,CAAA;IACX,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,CAAC,KAAK,IAAI,kBAAkB,CAAC,CAAA;IAC/D,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IAC7C,MAAM,UAAU,GAAG,aAAa,CAAC,IAAI,CAAC,UAAU,IAAI,WAAW,CAAC,CAAA;IAChE,MAAM,YAAY,GAAG,aAAa,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAA;IAClF,MAAM,aAAa,GAAG,aAAa,CACjC,YAAY,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE,QAAQ,EAAE,QAAQ,CAAC,QAAQ,KAAK,IAAI,EAAE,CAAC,CAAC,CAClG,CAAA;IACD,MAAM,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,oBAAoB,CAAA;IACpD,MAAM,IAAI,GAAG,iBAAiB,CAAA;IAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,mBAAmB,CAAA;IACzD,MAAM,OAAO,GAAG,oBAAoB,CAAA;IACpC,6FAA6F;IAC7F,oFAAoF;IACpF,6EAA6E;IAC7E,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,EAAE,SAAS,IAAI,IAAI;QACjD,CAAC,CAAC,SAAS,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG;YACpD,+DAA+D;YAC/D,6EAA6E;YAC7E,6GAA6G;YAC7G,qCAAqC,aAAa,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,IAAI,oBAAoB,CAAC,mBAAmB;QAC3H,CAAC,CAAC,EAAE,CAAA;IAEN,OAAO,iBAAiB;QACtB,SAAS,KAAK,sEAAsE;QACpF,wCAAwC;QACxC,sCAAsC;QACtC,+DAA+D;QAC/D,2DAA2D;QAC3D,MAAM;QACJ,wEAAwE;QACxE,4BAA4B;QAC5B,gBAAgB,OAAO,8DAA8D;QACrF,sCAAsC;QACtC,cAAc,MAAM,aAAa,IAAI,UAAU;QAC/C,8DAA8D;QAC9D,YAAY,OAAO,yBAAyB;QAC5C,yDAAyD,UAAU,cAAc;QACjF,mDAAmD,UAAU,QAAQ;QACnE,wDAAwD;QAC1D,gBAAgB;QACd,YAAY,YAAY,WAAW;QACnC,wFAAwF;QACxF,SAAS;QACP,YAAY,aAAa,WAAW,OAAO,IAAI;QAC/C,qFAAqF;QACrF,8BAA8B;QAC9B,8BAA8B,UAAU,kBAAkB;QAC1D,+BAA+B,UAAU,2BAA2B;QACpE,YAAY,UAAU,iDAAiD;QACzE,GAAG;QACL,GAAG;QACH,QAAQ;QACV,aAAa;QACf,qBAAqB,CAAA;AACvB,CAAC,CAAA"}
1
+ {"version":3,"file":"linker.js","sourceRoot":"","sources":["../src/linker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,42 @@
1
+ import type { ConsentGeoLocation, ConsentOptions, ConsentPlugin, ConsentRecord } from '../types.js';
2
+ /** The document's consent-plugin registry and the hooks run over every registered plugin. */
3
+ export interface ConsentPluginHelper {
4
+ /** Register a plugin. Replace-by-alias; sorted by priority (higher first) on every read. */
5
+ registerConsentPlugin: (plugin: ConsentPlugin) => void;
6
+ /** Remove a plugin by alias — for a test, or an application tearing a locator down. */
7
+ unregisterConsentPlugin: (alias: string) => void;
8
+ /** Every registered plugin, priority-sorted (higher first, ties keep insertion order). */
9
+ consentPlugins: () => ConsentPlugin[];
10
+ /**
11
+ * Ask every registered plugin to decorate `url` with this document's decision, in priority order,
12
+ * stopping at the first one that actually changes it. A plugin whose own rules refuse (a foreign
13
+ * host, a `noreferrer` link, no local decision yet) returns `null` and is skipped, not an error.
14
+ */
15
+ decorateConsentUrl: (url: string | URL, record: ConsentRecord | null, opts: ConsentOptions) => URL;
16
+ /**
17
+ * Every domain this document's decision is disclosed to, current host first, deduplicated — what a
18
+ * dialog or a policy page lists. A plugin that runs on this host but names no domains of its own
19
+ * (nothing registered, or `domains` not implemented) leaves the list at just the current host,
20
+ * which is always correct to show even with no plugin at all.
21
+ */
22
+ consentDomains: (opts: ConsentOptions) => string[];
23
+ /** Try every registered plugin's `adopt`, in priority order, and use the first decision offered. */
24
+ adoptConsent: (opts: ConsentOptions) => ConsentRecord | null;
25
+ /**
26
+ * Try every registered plugin's `adoptLanguage`, in priority order, and use the first language
27
+ * offered. The caller persists it (`writeConsentLanguage`) — and has to do that BEFORE its i18n
28
+ * layer reads storage, which is why the inline `<head>` fragment (`consentLinkerScript`) is the
29
+ * one that normally does.
30
+ */
31
+ adoptConsentLanguage: (opts: ConsentOptions) => string | null;
32
+ /** Run every registered plugin's `start`, in priority order. `consentStore.init` calls this once. */
33
+ startConsentPlugins: (opts: ConsentOptions) => void;
34
+ /**
35
+ * Ask every registered plugin's `locate`, in priority order, for the visitor's country: the first
36
+ * usable ISO alpha-2 code wins (upper-cased). A throw, or a code that names no country
37
+ * (`CONSENT_GEO_UNKNOWN`, anything malformed), hands over to the next locator; with none left it
38
+ * rejects with the last failure. Timeouts are the caller's (`consentGeoHelper.decide`).
39
+ */
40
+ locateConsent: (opts: ConsentOptions) => Promise<ConsentGeoLocation>;
41
+ }
42
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,cAAc,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEnG,6FAA6F;AAC7F,MAAM,WAAW,mBAAmB;IAClC,4FAA4F;IAC5F,qBAAqB,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,IAAI,CAAA;IACtD,uFAAuF;IACvF,uBAAuB,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,0FAA0F;IAC1F,cAAc,EAAE,MAAM,aAAa,EAAE,CAAA;IACrC;;;;OAIG;IACH,kBAAkB,EAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,cAAc,KAAK,GAAG,CAAA;IAClG;;;;;OAKG;IACH,cAAc,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,MAAM,EAAE,CAAA;IAClD,oGAAoG;IACpG,YAAY,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,aAAa,GAAG,IAAI,CAAA;IAC5D;;;;;OAKG;IACH,oBAAoB,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,MAAM,GAAG,IAAI,CAAA;IAC7D,qGAAqG;IACrG,mBAAmB,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;IACnD;;;;;OAKG;IACH,aAAa,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,OAAO,CAAC,kBAAkB,CAAC,CAAA;CACrE"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/plugins/types.ts"],"names":[],"mappings":""}
@@ -1,71 +1,7 @@
1
1
  import type { ConsentOptions, ConsentRecord } from './types.js';
2
- /**
3
- * An extension seam for `@owlmeans/consent`: something that reacts to this document's consent
4
- * decision, or supplies one from elsewhere, without the core store knowing anything about where
5
- * that decision came from.
6
- *
7
- * `consentLinker` (`./linker.js`) is the one built-in plugin — cross-domain consent through
8
- * decorated links — but nothing here is specific to it. A registry rather than a fixed option on
9
- * `ConsentOptions` because the store has zero dependencies today and stays that way: a plugin is
10
- * opt-in code an application imports for its own reason, never a bundled feature this package
11
- * pulls in whether or not anything uses it.
12
- */
13
- export interface ConsentPlugin {
14
- /** Stable identity. Registering the same alias again REPLACES the earlier plugin. */
15
- alias: string;
16
- /** Run order when more than one plugin implements the same hook. Higher first. Defaults to 0. */
17
- priority?: number;
18
- /** Installed once, the first time `consentStore.init` runs with this plugin registered. */
19
- start?: (opts: ConsentOptions) => void;
20
- /**
21
- * Offer a decision from outside this document's own storage — e.g. one carried on the URL that
22
- * led here. Returns a full record to adopt, or `null` to defer to the next plugin / the ordinary
23
- * "ask" path. Never called once a stored record already exists.
24
- */
25
- adopt?: (opts: ConsentOptions) => ConsentRecord | null;
26
- /**
27
- * Offer an interface language from outside this document's own storage — e.g. the one the page
28
- * that led here was read in. Returns a language the application supports, or `null` to keep
29
- * choosing its own. Only a CANDIDATE: it says what the link carried, and `writeConsentLanguage`
30
- * stores it — unconditionally, since the interface language is strictly necessary storage.
31
- */
32
- adoptLanguage?: (opts: ConsentOptions) => string | null;
33
- /**
34
- * Rewrite an outgoing URL to carry this document's current decision — and its language — or
35
- * `null` to leave it untouched (a foreign host, a link that opts out, nothing to carry yet).
36
- * `record` is `null` while the visitor has not decided: a plugin that also carries something
37
- * else (the language) still has a reason to decorate then.
38
- */
39
- decorate?: (url: URL, record: ConsentRecord | null, opts: ConsentOptions) => URL | null;
40
- /** Extra domains this decision is understood to apply to, for disclosure — never deduplicated here. */
41
- domains?: (opts: ConsentOptions) => string[];
42
- }
43
- /** Register a plugin. Replace-by-alias; sorted by priority (higher first) on every read. */
44
- export declare const registerConsentPlugin: (plugin: ConsentPlugin) => void;
45
- /** Every registered plugin, priority-sorted (higher first, ties keep insertion order). */
46
- export declare const consentPlugins: () => ConsentPlugin[];
47
- /**
48
- * Ask every registered plugin to decorate `url` with this document's decision, in priority order,
49
- * stopping at the first one that actually changes it. A plugin whose own rules refuse (a foreign
50
- * host, a `noreferrer` link, no local decision yet) returns `null` and is skipped, not an error.
51
- */
2
+ import type { ConsentPluginHelper } from './plugins/types.js';
3
+ export declare const createConsentPluginHelper: () => ConsentPluginHelper;
4
+ export declare const consentPluginHelper: ConsentPluginHelper;
5
+ /** @deprecated compat:factory-refactor — use `consentPluginHelper.decorateConsentUrl(…)` */
52
6
  export declare const decorateConsentUrl: (url: string | URL, record: ConsentRecord | null, opts: ConsentOptions) => URL;
53
- /**
54
- * Every domain this document's decision is disclosed to, current host first, deduplicated — what a
55
- * dialog or a policy page lists. A plugin that runs on this host but names no domains of its own
56
- * (nothing registered, or `domains` not implemented) leaves the list at just the current host,
57
- * which is always correct to show even with no plugin at all.
58
- */
59
- export declare const consentDomains: (opts: ConsentOptions) => string[];
60
- /** Try every registered plugin's `adopt`, in priority order, and use the first decision offered. */
61
- export declare const adoptConsent: (opts: ConsentOptions) => ConsentRecord | null;
62
- /**
63
- * Try every registered plugin's `adoptLanguage`, in priority order, and use the first language
64
- * offered. The caller persists it (`writeConsentLanguage`) — and has to do that BEFORE its i18n
65
- * layer reads storage, which is why the inline `<head>` fragment (`consentLinkerScript`) is the
66
- * one that normally does.
67
- */
68
- export declare const adoptConsentLanguage: (opts: ConsentOptions) => string | null;
69
- /** Run every registered plugin's `start`, in priority order. `consentStore.init` calls this once. */
70
- export declare const startConsentPlugins: (opts: ConsentOptions) => void;
71
7
  //# sourceMappingURL=plugins.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAE/D;;;;;;;;;;GAUG;AACH,MAAM,WAAW,aAAa;IAC5B,qFAAqF;IACrF,KAAK,EAAE,MAAM,CAAA;IACb,iGAAiG;IACjG,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,2FAA2F;IAC3F,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,IAAI,CAAA;IACtC;;;;OAIG;IACH,KAAK,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,aAAa,GAAG,IAAI,CAAA;IACtD;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,MAAM,GAAG,IAAI,CAAA;IACvD;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,GAAG,IAAI,EAAE,IAAI,EAAE,cAAc,KAAK,GAAG,GAAG,IAAI,CAAA;IACvF,uGAAuG;IACvG,OAAO,CAAC,EAAE,CAAC,IAAI,EAAE,cAAc,KAAK,MAAM,EAAE,CAAA;CAC7C;AASD,4FAA4F;AAC5F,eAAO,MAAM,qBAAqB,WAAY,aAAa,KAAG,IAE7D,CAAA;AAED,0FAA0F;AAC1F,eAAO,MAAM,cAAc,QAAO,aAAa,EAC8B,CAAA;AAE7E;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,QACxB,MAAM,GAAG,GAAG,UAAU,aAAa,GAAG,IAAI,QAAQ,cAAc,KACpE,GAaF,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,SAAU,cAAc,KAAG,MAAM,EAK3D,CAAA;AAED,oGAAoG;AACpG,eAAO,MAAM,YAAY,SAAU,cAAc,KAAG,aAAa,GAAG,IASnE,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,SAAU,cAAc,KAAG,MAAM,GAAG,IASpE,CAAA;AAED,qGAAqG;AACrG,eAAO,MAAM,mBAAmB,SAAU,cAAc,KAAG,IAI1D,CAAA"}
1
+ {"version":3,"file":"plugins.d.ts","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAsB,cAAc,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAA;AAClG,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AAS7D,eAAO,MAAM,yBAAyB,QAAO,mBAwF5C,CAAA;AAED,eAAO,MAAM,mBAAmB,qBAA8B,CAAA;AAE9D,4FAA4F;AAC5F,eAAO,MAAM,kBAAkB,QAAS,MAAM,GAAG,GAAG,UAAU,aAAa,GAAG,IAAI,QAAQ,cAAc,KAAG,GAChD,CAAA"}
package/build/plugins.js CHANGED
@@ -1,73 +1,85 @@
1
+ import { CONSENT_GEO_UNKNOWN } from './consts.js';
2
+ import { COUNTRY_CODE } from './consts.local.js';
1
3
  /**
2
4
  * Module-global by design, like `@owlmeans/client-auth/login`'s method/step registries: consent is
3
5
  * one thing per document, not per component tree, and a plugin is installed once at bundle scope
4
6
  * (an Astro island, a script tag, a React app) regardless of how many components read the store.
5
7
  */
6
8
  const plugins = new Map();
7
- /** Register a plugin. Replace-by-alias; sorted by priority (higher first) on every read. */
8
- export const registerConsentPlugin = (plugin) => {
9
- plugins.set(plugin.alias, plugin);
10
- };
11
- /** Every registered plugin, priority-sorted (higher first, ties keep insertion order). */
12
- export const consentPlugins = () => [...plugins.values()].sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
13
- /**
14
- * Ask every registered plugin to decorate `url` with this document's decision, in priority order,
15
- * stopping at the first one that actually changes it. A plugin whose own rules refuse (a foreign
16
- * host, a `noreferrer` link, no local decision yet) returns `null` and is skipped, not an error.
17
- */
18
- export const decorateConsentUrl = (url, record, opts) => {
19
- let result = url instanceof URL ? url : new URL(url);
20
- for (const plugin of consentPlugins()) {
21
- if (plugin.decorate == null) {
22
- continue;
9
+ export const createConsentPluginHelper = () => {
10
+ const registerConsentPlugin = (plugin) => {
11
+ plugins.set(plugin.alias, plugin);
12
+ };
13
+ const unregisterConsentPlugin = (alias) => {
14
+ plugins.delete(alias);
15
+ };
16
+ const consentPlugins = () => [...plugins.values()].sort((a, b) => (b.priority ?? 0) - (a.priority ?? 0));
17
+ const decorateConsentUrl = (url, record, opts) => {
18
+ let result = url instanceof URL ? url : new URL(url);
19
+ for (const plugin of consentPlugins()) {
20
+ if (plugin.decorate == null) {
21
+ continue;
22
+ }
23
+ const decorated = plugin.decorate(result, record, opts);
24
+ if (decorated != null) {
25
+ result = decorated;
26
+ }
23
27
  }
24
- const decorated = plugin.decorate(result, record, opts);
25
- if (decorated != null) {
26
- result = decorated;
28
+ return result;
29
+ };
30
+ const consentDomains = (opts) => {
31
+ const host = typeof location !== 'undefined' ? location.hostname : '';
32
+ const named = consentPlugins().flatMap(plugin => plugin.domains?.(opts) ?? []);
33
+ return [...new Set([host, ...named].filter(domain => domain !== ''))];
34
+ };
35
+ const adoptConsent = (opts) => {
36
+ for (const plugin of consentPlugins()) {
37
+ const adopted = plugin.adopt?.(opts);
38
+ if (adopted != null) {
39
+ return adopted;
40
+ }
27
41
  }
28
- }
29
- return result;
30
- };
31
- /**
32
- * Every domain this document's decision is disclosed to, current host first, deduplicated — what a
33
- * dialog or a policy page lists. A plugin that runs on this host but names no domains of its own
34
- * (nothing registered, or `domains` not implemented) leaves the list at just the current host,
35
- * which is always correct to show even with no plugin at all.
36
- */
37
- export const consentDomains = (opts) => {
38
- const host = typeof location !== 'undefined' ? location.hostname : '';
39
- const named = consentPlugins().flatMap(plugin => plugin.domains?.(opts) ?? []);
40
- return [...new Set([host, ...named].filter(domain => domain !== ''))];
41
- };
42
- /** Try every registered plugin's `adopt`, in priority order, and use the first decision offered. */
43
- export const adoptConsent = (opts) => {
44
- for (const plugin of consentPlugins()) {
45
- const adopted = plugin.adopt?.(opts);
46
- if (adopted != null) {
47
- return adopted;
42
+ return null;
43
+ };
44
+ const adoptConsentLanguage = (opts) => {
45
+ for (const plugin of consentPlugins()) {
46
+ const adopted = plugin.adoptLanguage?.(opts);
47
+ if (adopted != null) {
48
+ return adopted;
49
+ }
48
50
  }
49
- }
50
- return null;
51
- };
52
- /**
53
- * Try every registered plugin's `adoptLanguage`, in priority order, and use the first language
54
- * offered. The caller persists it (`writeConsentLanguage`) — and has to do that BEFORE its i18n
55
- * layer reads storage, which is why the inline `<head>` fragment (`consentLinkerScript`) is the
56
- * one that normally does.
57
- */
58
- export const adoptConsentLanguage = (opts) => {
59
- for (const plugin of consentPlugins()) {
60
- const adopted = plugin.adoptLanguage?.(opts);
61
- if (adopted != null) {
62
- return adopted;
51
+ return null;
52
+ };
53
+ const startConsentPlugins = (opts) => {
54
+ for (const plugin of consentPlugins()) {
55
+ plugin.start?.(opts);
63
56
  }
64
- }
65
- return null;
66
- };
67
- /** Run every registered plugin's `start`, in priority order. `consentStore.init` calls this once. */
68
- export const startConsentPlugins = (opts) => {
69
- for (const plugin of consentPlugins()) {
70
- plugin.start?.(opts);
71
- }
57
+ };
58
+ const locateConsent = async (opts) => {
59
+ let failure = new Error('consent:geo:no-locator');
60
+ for (const plugin of consentPlugins()) {
61
+ if (plugin.locate == null) {
62
+ continue;
63
+ }
64
+ try {
65
+ const country = (await plugin.locate(opts))?.country?.trim().toUpperCase() ?? '';
66
+ if (COUNTRY_CODE.test(country) && !CONSENT_GEO_UNKNOWN.includes(country)) {
67
+ return { country };
68
+ }
69
+ failure = new Error(`consent:geo:unusable-country:${plugin.alias}`);
70
+ }
71
+ catch (error) {
72
+ failure = error;
73
+ }
74
+ }
75
+ throw failure;
76
+ };
77
+ return {
78
+ registerConsentPlugin, unregisterConsentPlugin, consentPlugins, decorateConsentUrl,
79
+ consentDomains, adoptConsent, adoptConsentLanguage, startConsentPlugins, locateConsent,
80
+ };
72
81
  };
82
+ export const consentPluginHelper = createConsentPluginHelper();
83
+ /** @deprecated compat:factory-refactor — use `consentPluginHelper.decorateConsentUrl(…)` */
84
+ export const decorateConsentUrl = (url, record, opts) => consentPluginHelper.decorateConsentUrl(url, record, opts);
73
85
  //# sourceMappingURL=plugins.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AACjD,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAIhD;;;;GAIG;AACH,MAAM,OAAO,GAAG,IAAI,GAAG,EAAyB,CAAA;AAEhD,MAAM,CAAC,MAAM,yBAAyB,GAAG,GAAwB,EAAE;IACjE,MAAM,qBAAqB,GAAG,CAAC,MAAqB,EAAQ,EAAE;QAC5D,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,CAAA;IACnC,CAAC,CAAA;IAED,MAAM,uBAAuB,GAAG,CAAC,KAAa,EAAQ,EAAE;QACtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACvB,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,GAAoB,EAAE,CAC3C,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAA;IAE7E,MAAM,kBAAkB,GAAG,CACzB,GAAiB,EAAE,MAA4B,EAAE,IAAoB,EAChE,EAAE;QACP,IAAI,MAAM,GAAG,GAAG,YAAY,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAA;QACpD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,QAAQ,IAAI,IAAI,EAAE,CAAC;gBAC5B,SAAQ;YACV,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA;YACvD,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;gBACtB,MAAM,GAAG,SAAS,CAAA;YACpB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC,CAAA;IAED,MAAM,cAAc,GAAG,CAAC,IAAoB,EAAY,EAAE;QACxD,MAAM,IAAI,GAAG,OAAO,QAAQ,KAAK,WAAW,CAAC,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAA;QACrE,MAAM,KAAK,GAAG,cAAc,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QAE9E,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,CAAA;IACvE,CAAC,CAAA;IAED,MAAM,YAAY,GAAG,CAAC,IAAoB,EAAwB,EAAE;QAClE,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAA;YACpC,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,OAAO,OAAO,CAAA;YAChB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,MAAM,oBAAoB,GAAG,CAAC,IAAoB,EAAiB,EAAE;QACnE,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,EAAE,CAAC;YACtC,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAA;YAC5C,IAAI,OAAO,IAAI,IAAI,EAAE,CAAC;gBACpB,OAAO,OAAO,CAAA;YAChB,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC,CAAA;IAED,MAAM,mBAAmB,GAAG,CAAC,IAAoB,EAAQ,EAAE;QACzD,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,KAAK,EAAE,CAAC,IAAI,CAAC,CAAA;QACtB,CAAC;IACH,CAAC,CAAA;IAED,MAAM,aAAa,GAAG,KAAK,EAAE,IAAoB,EAA+B,EAAE;QAChF,IAAI,OAAO,GAAY,IAAI,KAAK,CAAC,wBAAwB,CAAC,CAAA;QAC1D,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,EAAE,CAAC;YACtC,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,EAAE,CAAC;gBAC1B,SAAQ;YACV,CAAC;YACD,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,IAAI,EAAE,CAAA;gBAChF,IAAI,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACzE,OAAO,EAAE,OAAO,EAAE,CAAA;gBACpB,CAAC;gBACD,OAAO,GAAG,IAAI,KAAK,CAAC,gCAAgC,MAAM,CAAC,KAAK,EAAE,CAAC,CAAA;YACrE,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,OAAO,GAAG,KAAK,CAAA;YACjB,CAAC;QACH,CAAC;QAED,MAAM,OAAO,CAAA;IACf,CAAC,CAAA;IAED,OAAO;QACL,qBAAqB,EAAE,uBAAuB,EAAE,cAAc,EAAE,kBAAkB;QAClF,cAAc,EAAE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,aAAa;KACvF,CAAA;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,mBAAmB,GAAG,yBAAyB,EAAE,CAAA;AAE9D,4FAA4F;AAC5F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAiB,EAAE,MAA4B,EAAE,IAAoB,EAAO,EAAE,CAC/G,mBAAmB,CAAC,kBAAkB,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAA"}
@@ -0,0 +1,31 @@
1
+ import type { ConsentOptions, ConsentRecord } from '../types.js';
2
+ /** Where a visitor's choice is kept: localStorage first, the cookie second. */
3
+ export interface ConsentStorageHelper {
4
+ /**
5
+ * Bring a stored record up to the current shape.
6
+ *
7
+ * A record with no `v` was written before the essential category existed, when it was implicitly
8
+ * always granted. The visitor DID choose; upgrading in place honours that choice, where treating
9
+ * the record as unusable would re-prompt everyone who has ever visited.
10
+ */
11
+ migrateConsent: (raw: ConsentRecord | null) => ConsentRecord | null;
12
+ /**
13
+ * What this browser has already chosen, or null.
14
+ *
15
+ * localStorage first and the cookie second, because that is the order the widget this generalises
16
+ * used and the two can disagree: a visitor who cleared site data but kept cookies still has an
17
+ * answer, and asking them again would be wrong.
18
+ */
19
+ readConsent: (opts?: ConsentOptions) => ConsentRecord | null;
20
+ /**
21
+ * Record the choice in both places.
22
+ *
23
+ * Two stores rather than one because neither is reliable alone: localStorage is cleared by "clear
24
+ * site data" while the cookie survives it, and the cookie is refused where third-party storage is
25
+ * blocked while localStorage may not be.
26
+ */
27
+ writeConsent: (record: ConsentRecord, opts?: ConsentOptions) => void;
28
+ /** Forget the choice in both places. */
29
+ clearConsent: (opts?: ConsentOptions) => void;
30
+ }
31
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AAEhE,+EAA+E;AAC/E,MAAM,WAAW,oBAAoB;IACnC;;;;;;OAMG;IACH,cAAc,EAAE,CAAC,GAAG,EAAE,aAAa,GAAG,IAAI,KAAK,aAAa,GAAG,IAAI,CAAA;IACnE;;;;;;OAMG;IACH,WAAW,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,KAAK,aAAa,GAAG,IAAI,CAAA;IAC5D;;;;;;OAMG;IACH,YAAY,EAAE,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,cAAc,KAAK,IAAI,CAAA;IACpE,wCAAwC;IACxC,YAAY,EAAE,CAAC,IAAI,CAAC,EAAE,cAAc,KAAK,IAAI,CAAA;CAC9C"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/storage/types.ts"],"names":[],"mappings":""}
@@ -1,27 +1,11 @@
1
1
  import type { ConsentOptions, ConsentRecord } from './types.js';
2
- /**
3
- * Bring a stored record up to the current shape.
4
- *
5
- * A record with no `v` was written before the essential category existed, when it was implicitly
6
- * always granted. The visitor DID choose; upgrading in place honours that choice, where treating
7
- * the record as unusable would re-prompt everyone who has ever visited.
8
- */
9
- export declare const migrateConsent: (raw: ConsentRecord | null) => ConsentRecord | null;
10
- /**
11
- * What this browser has already chosen, or null.
12
- *
13
- * localStorage first and the cookie second, because that is the order the widget this generalises
14
- * used and the two can disagree: a visitor who cleared site data but kept cookies still has an
15
- * answer, and asking them again would be wrong.
16
- */
2
+ import type { ConsentStorageHelper } from './storage/types.js';
3
+ export declare const createConsentStorageHelper: () => ConsentStorageHelper;
4
+ export declare const consentStorageHelper: ConsentStorageHelper;
5
+ /** @deprecated compat:factory-refactor — use `consentStorageHelper.readConsent(…)` */
17
6
  export declare const readConsent: (opts?: ConsentOptions) => ConsentRecord | null;
18
- /**
19
- * Record the choice in both places.
20
- *
21
- * Two stores rather than one because neither is reliable alone: localStorage is cleared by "clear
22
- * site data" while the cookie survives it, and the cookie is refused where third-party storage is
23
- * blocked while localStorage may not be.
24
- */
7
+ /** @deprecated compat:factory-refactor — use `consentStorageHelper.writeConsent(…)` */
25
8
  export declare const writeConsent: (record: ConsentRecord, opts?: ConsentOptions) => void;
9
+ /** @deprecated compat:factory-refactor — use `consentStorageHelper.clearConsent(…)` */
26
10
  export declare const clearConsent: (opts?: ConsentOptions) => void;
27
11
  //# sourceMappingURL=storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAiB/D;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,QAAS,aAAa,GAAG,IAAI,KAAG,aAAa,GAAG,IAGH,CAAA;AAWxE;;;;;;GAMG;AACH,eAAO,MAAM,WAAW,UAAW,cAAc,KAAG,aAAa,GAAG,IAQnE,CAAA;AAED;;;;;;GAMG;AACH,eAAO,MAAM,YAAY,WAAY,aAAa,SAAS,cAAc,KAAG,IAkB3E,CAAA;AAED,eAAO,MAAM,YAAY,UAAW,cAAc,KAAG,IAUpD,CAAA"}
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,YAAY,CAAA;AAC/D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AAE9D,eAAO,MAAM,0BAA0B,QAAO,oBA2E7C,CAAA;AAED,eAAO,MAAM,oBAAoB,sBAA+B,CAAA;AAEhE,sFAAsF;AACtF,eAAO,MAAM,WAAW,UAAW,cAAc,KAAG,aAAa,GAAG,IAA8C,CAAA;AAElH,uFAAuF;AACvF,eAAO,MAAM,YAAY,WAAY,aAAa,SAAS,cAAc,KAAG,IAC3B,CAAA;AAEjD,uFAAuF;AACvF,eAAO,MAAM,YAAY,UAAW,cAAc,KAAG,IAA+C,CAAA"}
package/build/storage.js CHANGED
@@ -1,86 +1,77 @@
1
1
  import { CONSENT_COOKIE_DAYS, CONSENT_ESSENTIAL, CONSENT_KEY, CONSENT_SCHEMA_VERSION, } from './consts.js';
2
- const key = (opts) => opts?.storageKey ?? CONSENT_KEY;
3
- const parse = (raw) => {
4
- if (raw == null || raw === '') {
5
- return null;
6
- }
7
- try {
8
- const value = JSON.parse(raw);
9
- return value != null && typeof value === 'object' ? value : null;
10
- }
11
- catch {
12
- return null;
13
- }
14
- };
15
- /**
16
- * Bring a stored record up to the current shape.
17
- *
18
- * A record with no `v` was written before the essential category existed, when it was implicitly
19
- * always granted. The visitor DID choose; upgrading in place honours that choice, where treating
20
- * the record as unusable would re-prompt everyone who has ever visited.
21
- */
22
- export const migrateConsent = (raw) => raw == null ? null
23
- : raw.v === CONSENT_SCHEMA_VERSION ? raw
24
- : { ...raw, [CONSENT_ESSENTIAL]: true, v: CONSENT_SCHEMA_VERSION };
25
- const fromCookie = (name) => {
26
- if (typeof document === 'undefined') {
27
- return null;
28
- }
29
- const parts = `; ${document.cookie}`.split(`; ${name}=`);
30
- return parts.length === 2 ? parts.pop()?.split(';').shift() ?? null : null;
31
- };
32
- /**
33
- * What this browser has already chosen, or null.
34
- *
35
- * localStorage first and the cookie second, because that is the order the widget this generalises
36
- * used and the two can disagree: a visitor who cleared site data but kept cookies still has an
37
- * answer, and asking them again would be wrong.
38
- */
39
- export const readConsent = (opts) => {
40
- const name = key(opts);
41
- let raw = null;
42
- try {
43
- raw = typeof localStorage !== 'undefined' ? localStorage.getItem(name) : null;
44
- }
45
- catch { /* private modes and blocked storage both throw; the cookie may still answer */ }
46
- return migrateConsent(parse(raw) ?? parse(fromCookie(name)));
47
- };
48
- /**
49
- * Record the choice in both places.
50
- *
51
- * Two stores rather than one because neither is reliable alone: localStorage is cleared by "clear
52
- * site data" while the cookie survives it, and the cookie is refused where third-party storage is
53
- * blocked while localStorage may not be.
54
- */
55
- export const writeConsent = (record, opts) => {
56
- const name = key(opts);
57
- const value = JSON.stringify({ ...record, v: CONSENT_SCHEMA_VERSION });
58
- try {
59
- if (typeof localStorage !== 'undefined') {
60
- localStorage.setItem(name, value);
2
+ export const createConsentStorageHelper = () => {
3
+ const key = (opts) => opts?.storageKey ?? CONSENT_KEY;
4
+ const parse = (raw) => {
5
+ if (raw == null || raw === '') {
6
+ return null;
61
7
  }
62
- }
63
- catch { /* the cookie below is the fallback */ }
64
- if (typeof document === 'undefined') {
65
- return;
66
- }
67
- const days = opts?.cookieDays ?? CONSENT_COOKIE_DAYS;
68
- const expires = new Date(Date.now() + days * 24 * 60 * 60 * 1000).toUTCString();
69
- const domain = opts?.cookieDomain != null ? `;domain=${opts.cookieDomain}` : '';
70
- // `SameSite=Lax` is stated rather than left to the browser default, which differs between them.
71
- // This cookie is never sent cross-site on purpose — it records a preference, not a session.
72
- document.cookie = `${name}=${value};expires=${expires};path=/;SameSite=Lax${domain}`;
73
- };
74
- export const clearConsent = (opts) => {
75
- const name = key(opts);
76
- try {
77
- if (typeof localStorage !== 'undefined') {
78
- localStorage.removeItem(name);
8
+ try {
9
+ const value = JSON.parse(raw);
10
+ return value != null && typeof value === 'object' ? value : null;
11
+ }
12
+ catch {
13
+ return null;
14
+ }
15
+ };
16
+ const migrateConsent = (raw) => raw == null ? null
17
+ : raw.v === CONSENT_SCHEMA_VERSION ? raw
18
+ : { ...raw, [CONSENT_ESSENTIAL]: true, v: CONSENT_SCHEMA_VERSION };
19
+ const fromCookie = (name) => {
20
+ if (typeof document === 'undefined') {
21
+ return null;
22
+ }
23
+ const parts = `; ${document.cookie}`.split(`; ${name}=`);
24
+ return parts.length === 2 ? parts.pop()?.split(';').shift() ?? null : null;
25
+ };
26
+ const readConsent = (opts) => {
27
+ const name = key(opts);
28
+ let raw = null;
29
+ try {
30
+ raw = typeof localStorage !== 'undefined' ? localStorage.getItem(name) : null;
31
+ }
32
+ catch { /* private modes and blocked storage both throw; the cookie may still answer */ }
33
+ return migrateConsent(parse(raw) ?? parse(fromCookie(name)));
34
+ };
35
+ const writeConsent = (record, opts) => {
36
+ const name = key(opts);
37
+ const value = JSON.stringify({ ...record, v: CONSENT_SCHEMA_VERSION });
38
+ try {
39
+ if (typeof localStorage !== 'undefined') {
40
+ localStorage.setItem(name, value);
41
+ }
42
+ }
43
+ catch { /* the cookie below is the fallback */ }
44
+ if (typeof document === 'undefined') {
45
+ return;
46
+ }
47
+ const days = opts?.cookieDays ?? CONSENT_COOKIE_DAYS;
48
+ const expires = new Date(Date.now() + days * 24 * 60 * 60 * 1000).toUTCString();
49
+ const domain = opts?.cookieDomain != null ? `;domain=${opts.cookieDomain}` : '';
50
+ // `SameSite=Lax` is stated rather than left to the browser default, which differs between them.
51
+ // This cookie is never sent cross-site on purpose — it records a preference, not a session.
52
+ document.cookie = `${name}=${value};expires=${expires};path=/;SameSite=Lax${domain}`;
53
+ };
54
+ const clearConsent = (opts) => {
55
+ const name = key(opts);
56
+ try {
57
+ if (typeof localStorage !== 'undefined') {
58
+ localStorage.removeItem(name);
59
+ }
60
+ }
61
+ catch { /* nothing to remove if storage was never available */ }
62
+ if (typeof document !== 'undefined') {
63
+ // The same `domain` the write used — a cookie is only replaced by one that names its domain.
64
+ const domain = opts?.cookieDomain != null ? `;domain=${opts.cookieDomain}` : '';
65
+ document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/${domain}`;
79
66
  }
80
- }
81
- catch { /* nothing to remove if storage was never available */ }
82
- if (typeof document !== 'undefined') {
83
- document.cookie = `${name}=;expires=Thu, 01 Jan 1970 00:00:00 GMT;path=/`;
84
- }
67
+ };
68
+ return { migrateConsent, readConsent, writeConsent, clearConsent };
85
69
  };
70
+ export const consentStorageHelper = createConsentStorageHelper();
71
+ /** @deprecated compat:factory-refactor — use `consentStorageHelper.readConsent(…)` */
72
+ export const readConsent = (opts) => consentStorageHelper.readConsent(opts);
73
+ /** @deprecated compat:factory-refactor — use `consentStorageHelper.writeConsent(…)` */
74
+ export const writeConsent = (record, opts) => consentStorageHelper.writeConsent(record, opts);
75
+ /** @deprecated compat:factory-refactor — use `consentStorageHelper.clearConsent(…)` */
76
+ export const clearConsent = (opts) => consentStorageHelper.clearConsent(opts);
86
77
  //# sourceMappingURL=storage.js.map