@aglyn/aglyn 1.0.0-beta.143

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 (963) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +11 -0
  3. package/package.json +66 -0
  4. package/src/index.d.ts +25 -0
  5. package/src/index.js +26 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/aglyn.d.ts +31 -0
  8. package/src/lib/aglyn.js +114 -0
  9. package/src/lib/aglyn.js.map +1 -0
  10. package/src/lib/app-utils/abuse-report.d.ts +193 -0
  11. package/src/lib/app-utils/abuse-report.js +321 -0
  12. package/src/lib/app-utils/abuse-report.js.map +1 -0
  13. package/src/lib/app-utils/accept-negotiation.d.ts +129 -0
  14. package/src/lib/app-utils/accept-negotiation.js +266 -0
  15. package/src/lib/app-utils/accept-negotiation.js.map +1 -0
  16. package/src/lib/app-utils/account-emails.d.ts +263 -0
  17. package/src/lib/app-utils/account-emails.js +264 -0
  18. package/src/lib/app-utils/account-emails.js.map +1 -0
  19. package/src/lib/app-utils/actions.d.ts +717 -0
  20. package/src/lib/app-utils/actions.js +1031 -0
  21. package/src/lib/app-utils/actions.js.map +1 -0
  22. package/src/lib/app-utils/activity-presenter.d.ts +152 -0
  23. package/src/lib/app-utils/activity-presenter.js +326 -0
  24. package/src/lib/app-utils/activity-presenter.js.map +1 -0
  25. package/src/lib/app-utils/advertising-tag-mounts.d.ts +133 -0
  26. package/src/lib/app-utils/advertising-tag-mounts.js +118 -0
  27. package/src/lib/app-utils/advertising-tag-mounts.js.map +1 -0
  28. package/src/lib/app-utils/advertising-tags.d.ts +307 -0
  29. package/src/lib/app-utils/advertising-tags.js +525 -0
  30. package/src/lib/app-utils/advertising-tags.js.map +1 -0
  31. package/src/lib/app-utils/agent-api-catalog.d.ts +94 -0
  32. package/src/lib/app-utils/agent-api-catalog.js +106 -0
  33. package/src/lib/app-utils/agent-api-catalog.js.map +1 -0
  34. package/src/lib/app-utils/agent-openapi.d.ts +103 -0
  35. package/src/lib/app-utils/agent-openapi.js +1128 -0
  36. package/src/lib/app-utils/agent-openapi.js.map +1 -0
  37. package/src/lib/app-utils/analytics-beacon.d.ts +154 -0
  38. package/src/lib/app-utils/analytics-beacon.js +152 -0
  39. package/src/lib/app-utils/analytics-beacon.js.map +1 -0
  40. package/src/lib/app-utils/analytics-environment.d.ts +133 -0
  41. package/src/lib/app-utils/analytics-environment.js +152 -0
  42. package/src/lib/app-utils/analytics-environment.js.map +1 -0
  43. package/src/lib/app-utils/analytics-events.d.ts +744 -0
  44. package/src/lib/app-utils/analytics-events.js +650 -0
  45. package/src/lib/app-utils/analytics-events.js.map +1 -0
  46. package/src/lib/app-utils/analytics-link-clicks.d.ts +102 -0
  47. package/src/lib/app-utils/analytics-link-clicks.js +267 -0
  48. package/src/lib/app-utils/analytics-link-clicks.js.map +1 -0
  49. package/src/lib/app-utils/analytics-path-key.d.ts +46 -0
  50. package/src/lib/app-utils/analytics-path-key.js +46 -0
  51. package/src/lib/app-utils/analytics-path-key.js.map +1 -0
  52. package/src/lib/app-utils/api-adapter.d.ts +47 -0
  53. package/src/lib/app-utils/api-adapter.js +367 -0
  54. package/src/lib/app-utils/api-adapter.js.map +1 -0
  55. package/src/lib/app-utils/api-idempotency.d.ts +169 -0
  56. package/src/lib/app-utils/api-idempotency.js +213 -0
  57. package/src/lib/app-utils/api-idempotency.js.map +1 -0
  58. package/src/lib/app-utils/api-plugins.d.ts +210 -0
  59. package/src/lib/app-utils/api-plugins.js +221 -0
  60. package/src/lib/app-utils/api-plugins.js.map +1 -0
  61. package/src/lib/app-utils/assist-credits.d.ts +482 -0
  62. package/src/lib/app-utils/assist-credits.js +509 -0
  63. package/src/lib/app-utils/assist-credits.js.map +1 -0
  64. package/src/lib/app-utils/attribution-attribute.d.ts +34 -0
  65. package/src/lib/app-utils/attribution-attribute.js +34 -0
  66. package/src/lib/app-utils/attribution-attribute.js.map +1 -0
  67. package/src/lib/app-utils/attribution-guard.d.ts +130 -0
  68. package/src/lib/app-utils/attribution-guard.js +410 -0
  69. package/src/lib/app-utils/attribution-guard.js.map +1 -0
  70. package/src/lib/app-utils/author-css.d.ts +123 -0
  71. package/src/lib/app-utils/author-css.js +275 -0
  72. package/src/lib/app-utils/author-css.js.map +1 -0
  73. package/src/lib/app-utils/author-html-markdown.d.ts +31 -0
  74. package/src/lib/app-utils/author-html-markdown.js +497 -0
  75. package/src/lib/app-utils/author-html-markdown.js.map +1 -0
  76. package/src/lib/app-utils/author-html.d.ts +135 -0
  77. package/src/lib/app-utils/author-html.js +1037 -0
  78. package/src/lib/app-utils/author-html.js.map +1 -0
  79. package/src/lib/app-utils/automation-placeholders.d.ts +72 -0
  80. package/src/lib/app-utils/automation-placeholders.js +207 -0
  81. package/src/lib/app-utils/automation-placeholders.js.map +1 -0
  82. package/src/lib/app-utils/bandwidth-cap.d.ts +183 -0
  83. package/src/lib/app-utils/bandwidth-cap.js +193 -0
  84. package/src/lib/app-utils/bandwidth-cap.js.map +1 -0
  85. package/src/lib/app-utils/binding-token-catalog.d.ts +82 -0
  86. package/src/lib/app-utils/binding-token-catalog.js +293 -0
  87. package/src/lib/app-utils/binding-token-catalog.js.map +1 -0
  88. package/src/lib/app-utils/binding-tokens.d.ts +157 -0
  89. package/src/lib/app-utils/binding-tokens.js +251 -0
  90. package/src/lib/app-utils/binding-tokens.js.map +1 -0
  91. package/src/lib/app-utils/breadcrumb-json-ld.d.ts +57 -0
  92. package/src/lib/app-utils/breadcrumb-json-ld.js +67 -0
  93. package/src/lib/app-utils/breadcrumb-json-ld.js.map +1 -0
  94. package/src/lib/app-utils/campaign-attribution.d.ts +117 -0
  95. package/src/lib/app-utils/campaign-attribution.js +162 -0
  96. package/src/lib/app-utils/campaign-attribution.js.map +1 -0
  97. package/src/lib/app-utils/campaign-forwarding.d.ts +220 -0
  98. package/src/lib/app-utils/campaign-forwarding.js +332 -0
  99. package/src/lib/app-utils/campaign-forwarding.js.map +1 -0
  100. package/src/lib/app-utils/campaign-membership.d.ts +109 -0
  101. package/src/lib/app-utils/campaign-membership.js +176 -0
  102. package/src/lib/app-utils/campaign-membership.js.map +1 -0
  103. package/src/lib/app-utils/campaign-touch.d.ts +206 -0
  104. package/src/lib/app-utils/campaign-touch.js +326 -0
  105. package/src/lib/app-utils/campaign-touch.js.map +1 -0
  106. package/src/lib/app-utils/child-contract-compose.d.ts +28 -0
  107. package/src/lib/app-utils/child-contract-compose.js +140 -0
  108. package/src/lib/app-utils/child-contract-compose.js.map +1 -0
  109. package/src/lib/app-utils/child-contract.d.ts +129 -0
  110. package/src/lib/app-utils/child-contract.js +153 -0
  111. package/src/lib/app-utils/child-contract.js.map +1 -0
  112. package/src/lib/app-utils/collection-delete.d.ts +113 -0
  113. package/src/lib/app-utils/collection-delete.js +120 -0
  114. package/src/lib/app-utils/collection-delete.js.map +1 -0
  115. package/src/lib/app-utils/collection-entries.d.ts +833 -0
  116. package/src/lib/app-utils/collection-entries.js +1285 -0
  117. package/src/lib/app-utils/collection-entries.js.map +1 -0
  118. package/src/lib/app-utils/collection-entry-date.d.ts +129 -0
  119. package/src/lib/app-utils/collection-entry-date.js +183 -0
  120. package/src/lib/app-utils/collection-entry-date.js.map +1 -0
  121. package/src/lib/app-utils/collection-kind.d.ts +55 -0
  122. package/src/lib/app-utils/collection-kind.js +69 -0
  123. package/src/lib/app-utils/collection-kind.js.map +1 -0
  124. package/src/lib/app-utils/collection-slug.d.ts +79 -0
  125. package/src/lib/app-utils/collection-slug.js +70 -0
  126. package/src/lib/app-utils/collection-slug.js.map +1 -0
  127. package/src/lib/app-utils/compose-layout-nodes.d.ts +147 -0
  128. package/src/lib/app-utils/compose-layout-nodes.js +261 -0
  129. package/src/lib/app-utils/compose-layout-nodes.js.map +1 -0
  130. package/src/lib/app-utils/compose-layout-props.d.ts +71 -0
  131. package/src/lib/app-utils/compose-layout-props.js +61 -0
  132. package/src/lib/app-utils/compose-layout-props.js.map +1 -0
  133. package/src/lib/app-utils/compose-reusable-components.d.ts +504 -0
  134. package/src/lib/app-utils/compose-reusable-components.js +1366 -0
  135. package/src/lib/app-utils/compose-reusable-components.js.map +1 -0
  136. package/src/lib/app-utils/compress.d.ts +35 -0
  137. package/src/lib/app-utils/compress.js +38 -0
  138. package/src/lib/app-utils/compress.js.map +1 -0
  139. package/src/lib/app-utils/consent-banner-ui.d.ts +226 -0
  140. package/src/lib/app-utils/consent-banner-ui.js +583 -0
  141. package/src/lib/app-utils/consent-banner-ui.js.map +1 -0
  142. package/src/lib/app-utils/consent-groups.d.ts +189 -0
  143. package/src/lib/app-utils/consent-groups.js +219 -0
  144. package/src/lib/app-utils/consent-groups.js.map +1 -0
  145. package/src/lib/app-utils/consent-preferences-dialog.d.ts +58 -0
  146. package/src/lib/app-utils/consent-preferences-dialog.js +106 -0
  147. package/src/lib/app-utils/consent-preferences-dialog.js.map +1 -0
  148. package/src/lib/app-utils/console-record-links.d.ts +163 -0
  149. package/src/lib/app-utils/console-record-links.js +178 -0
  150. package/src/lib/app-utils/console-record-links.js.map +1 -0
  151. package/src/lib/app-utils/console-routes.d.ts +658 -0
  152. package/src/lib/app-utils/console-routes.js +489 -0
  153. package/src/lib/app-utils/console-routes.js.map +1 -0
  154. package/src/lib/app-utils/console-widget-slot-context.d.ts +46 -0
  155. package/src/lib/app-utils/console-widget-slot-context.js +23 -0
  156. package/src/lib/app-utils/console-widget-slot-context.js.map +1 -0
  157. package/src/lib/app-utils/contact-custom-fields.d.ts +191 -0
  158. package/src/lib/app-utils/contact-custom-fields.js +349 -0
  159. package/src/lib/app-utils/contact-custom-fields.js.map +1 -0
  160. package/src/lib/app-utils/contact-holder.d.ts +52 -0
  161. package/src/lib/app-utils/contact-holder.js +98 -0
  162. package/src/lib/app-utils/contact-holder.js.map +1 -0
  163. package/src/lib/app-utils/contact-merge.d.ts +136 -0
  164. package/src/lib/app-utils/contact-merge.js +379 -0
  165. package/src/lib/app-utils/contact-merge.js.map +1 -0
  166. package/src/lib/app-utils/contacts.d.ts +554 -0
  167. package/src/lib/app-utils/contacts.js +401 -0
  168. package/src/lib/app-utils/contacts.js.map +1 -0
  169. package/src/lib/app-utils/content-author-profile.d.ts +68 -0
  170. package/src/lib/app-utils/content-author-profile.js +118 -0
  171. package/src/lib/app-utils/content-author-profile.js.map +1 -0
  172. package/src/lib/app-utils/content-authors.d.ts +662 -0
  173. package/src/lib/app-utils/content-authors.js +771 -0
  174. package/src/lib/app-utils/content-authors.js.map +1 -0
  175. package/src/lib/app-utils/content-schema-type.d.ts +81 -0
  176. package/src/lib/app-utils/content-schema-type.js +87 -0
  177. package/src/lib/app-utils/content-schema-type.js.map +1 -0
  178. package/src/lib/app-utils/contexts.d.ts +35 -0
  179. package/src/lib/app-utils/contexts.js +35 -0
  180. package/src/lib/app-utils/contexts.js.map +1 -0
  181. package/src/lib/app-utils/create-resource-uid.d.ts +18 -0
  182. package/src/lib/app-utils/create-resource-uid.js +23 -0
  183. package/src/lib/app-utils/create-resource-uid.js.map +1 -0
  184. package/src/lib/app-utils/crm-booking.d.ts +75 -0
  185. package/src/lib/app-utils/crm-booking.js +133 -0
  186. package/src/lib/app-utils/crm-booking.js.map +1 -0
  187. package/src/lib/app-utils/crm-csv.d.ts +232 -0
  188. package/src/lib/app-utils/crm-csv.js +432 -0
  189. package/src/lib/app-utils/crm-csv.js.map +1 -0
  190. package/src/lib/app-utils/crm-digest.d.ts +179 -0
  191. package/src/lib/app-utils/crm-digest.js +271 -0
  192. package/src/lib/app-utils/crm-digest.js.map +1 -0
  193. package/src/lib/app-utils/crm-email-templates.d.ts +172 -0
  194. package/src/lib/app-utils/crm-email-templates.js +382 -0
  195. package/src/lib/app-utils/crm-email-templates.js.map +1 -0
  196. package/src/lib/app-utils/crm-inbound.d.ts +245 -0
  197. package/src/lib/app-utils/crm-inbound.js +407 -0
  198. package/src/lib/app-utils/crm-inbound.js.map +1 -0
  199. package/src/lib/app-utils/crm-kinds.d.ts +73 -0
  200. package/src/lib/app-utils/crm-kinds.js +92 -0
  201. package/src/lib/app-utils/crm-kinds.js.map +1 -0
  202. package/src/lib/app-utils/crm-next-activity.d.ts +107 -0
  203. package/src/lib/app-utils/crm-next-activity.js +140 -0
  204. package/src/lib/app-utils/crm-next-activity.js.map +1 -0
  205. package/src/lib/app-utils/crm-reports.d.ts +479 -0
  206. package/src/lib/app-utils/crm-reports.js +680 -0
  207. package/src/lib/app-utils/crm-reports.js.map +1 -0
  208. package/src/lib/app-utils/crm-task-reminders.d.ts +129 -0
  209. package/src/lib/app-utils/crm-task-reminders.js +139 -0
  210. package/src/lib/app-utils/crm-task-reminders.js.map +1 -0
  211. package/src/lib/app-utils/crm.d.ts +1546 -0
  212. package/src/lib/app-utils/crm.js +1814 -0
  213. package/src/lib/app-utils/crm.js.map +1 -0
  214. package/src/lib/app-utils/csp-report.d.ts +84 -0
  215. package/src/lib/app-utils/csp-report.js +177 -0
  216. package/src/lib/app-utils/csp-report.js.map +1 -0
  217. package/src/lib/app-utils/csv-import.d.ts +192 -0
  218. package/src/lib/app-utils/csv-import.js +279 -0
  219. package/src/lib/app-utils/csv-import.js.map +1 -0
  220. package/src/lib/app-utils/dataset-csv.d.ts +109 -0
  221. package/src/lib/app-utils/dataset-csv.js +235 -0
  222. package/src/lib/app-utils/dataset-csv.js.map +1 -0
  223. package/src/lib/app-utils/dataset-models.d.ts +194 -0
  224. package/src/lib/app-utils/dataset-models.js +409 -0
  225. package/src/lib/app-utils/dataset-models.js.map +1 -0
  226. package/src/lib/app-utils/dataset-query.d.ts +57 -0
  227. package/src/lib/app-utils/dataset-query.js +126 -0
  228. package/src/lib/app-utils/dataset-query.js.map +1 -0
  229. package/src/lib/app-utils/datasets.d.ts +136 -0
  230. package/src/lib/app-utils/datasets.js +177 -0
  231. package/src/lib/app-utils/datasets.js.map +1 -0
  232. package/src/lib/app-utils/decompress.d.ts +36 -0
  233. package/src/lib/app-utils/decompress.js +32 -0
  234. package/src/lib/app-utils/decompress.js.map +1 -0
  235. package/src/lib/app-utils/dedicated-sending-domain.d.ts +47 -0
  236. package/src/lib/app-utils/dedicated-sending-domain.js +114 -0
  237. package/src/lib/app-utils/dedicated-sending-domain.js.map +1 -0
  238. package/src/lib/app-utils/deferred-image.d.ts +86 -0
  239. package/src/lib/app-utils/deferred-image.js +83 -0
  240. package/src/lib/app-utils/deferred-image.js.map +1 -0
  241. package/src/lib/app-utils/definition-canvas-tree.d.ts +61 -0
  242. package/src/lib/app-utils/definition-canvas-tree.js +126 -0
  243. package/src/lib/app-utils/definition-canvas-tree.js.map +1 -0
  244. package/src/lib/app-utils/deployment-shape.d.ts +167 -0
  245. package/src/lib/app-utils/deployment-shape.js +238 -0
  246. package/src/lib/app-utils/deployment-shape.js.map +1 -0
  247. package/src/lib/app-utils/detect-template-placeholders.d.ts +30 -0
  248. package/src/lib/app-utils/detect-template-placeholders.js +53 -0
  249. package/src/lib/app-utils/detect-template-placeholders.js.map +1 -0
  250. package/src/lib/app-utils/dmca-counter-notice.d.ts +185 -0
  251. package/src/lib/app-utils/dmca-counter-notice.js +277 -0
  252. package/src/lib/app-utils/dmca-counter-notice.js.map +1 -0
  253. package/src/lib/app-utils/docs-deflection.d.ts +156 -0
  254. package/src/lib/app-utils/docs-deflection.js +547 -0
  255. package/src/lib/app-utils/docs-deflection.js.map +1 -0
  256. package/src/lib/app-utils/docs-help.d.ts +57 -0
  257. package/src/lib/app-utils/docs-help.generated.d.ts +303 -0
  258. package/src/lib/app-utils/docs-help.generated.js +867 -0
  259. package/src/lib/app-utils/docs-help.generated.js.map +1 -0
  260. package/src/lib/app-utils/docs-help.js +46 -0
  261. package/src/lib/app-utils/docs-help.js.map +1 -0
  262. package/src/lib/app-utils/docs-index.generated.d.ts +29 -0
  263. package/src/lib/app-utils/docs-index.generated.js +8388 -0
  264. package/src/lib/app-utils/docs-index.generated.js.map +1 -0
  265. package/src/lib/app-utils/docs-retrieval.d.ts +67 -0
  266. package/src/lib/app-utils/docs-retrieval.js +188 -0
  267. package/src/lib/app-utils/docs-retrieval.js.map +1 -0
  268. package/src/lib/app-utils/document-landmark.d.ts +50 -0
  269. package/src/lib/app-utils/document-landmark.js +100 -0
  270. package/src/lib/app-utils/document-landmark.js.map +1 -0
  271. package/src/lib/app-utils/duplicate-resource.d.ts +101 -0
  272. package/src/lib/app-utils/duplicate-resource.js +206 -0
  273. package/src/lib/app-utils/duplicate-resource.js.map +1 -0
  274. package/src/lib/app-utils/dynamic-list-rule.d.ts +471 -0
  275. package/src/lib/app-utils/dynamic-list-rule.js +914 -0
  276. package/src/lib/app-utils/dynamic-list-rule.js.map +1 -0
  277. package/src/lib/app-utils/element-animation.d.ts +200 -0
  278. package/src/lib/app-utils/element-animation.js +233 -0
  279. package/src/lib/app-utils/element-animation.js.map +1 -0
  280. package/src/lib/app-utils/element-hidden-style.d.ts +46 -0
  281. package/src/lib/app-utils/element-hidden-style.js +48 -0
  282. package/src/lib/app-utils/element-hidden-style.js.map +1 -0
  283. package/src/lib/app-utils/element-ui.d.ts +243 -0
  284. package/src/lib/app-utils/element-ui.js +459 -0
  285. package/src/lib/app-utils/element-ui.js.map +1 -0
  286. package/src/lib/app-utils/email-starter-policy.d.ts +160 -0
  287. package/src/lib/app-utils/email-starter-policy.js +327 -0
  288. package/src/lib/app-utils/email-starter-policy.js.map +1 -0
  289. package/src/lib/app-utils/email-topics.d.ts +310 -0
  290. package/src/lib/app-utils/email-topics.js +336 -0
  291. package/src/lib/app-utils/email-topics.js.map +1 -0
  292. package/src/lib/app-utils/enabled-plugins-context.d.ts +100 -0
  293. package/src/lib/app-utils/enabled-plugins-context.js +113 -0
  294. package/src/lib/app-utils/enabled-plugins-context.js.map +1 -0
  295. package/src/lib/app-utils/ensure-canvas-root.d.ts +38 -0
  296. package/src/lib/app-utils/ensure-canvas-root.js +61 -0
  297. package/src/lib/app-utils/ensure-canvas-root.js.map +1 -0
  298. package/src/lib/app-utils/entity-picker-context.d.ts +199 -0
  299. package/src/lib/app-utils/entity-picker-context.js +93 -0
  300. package/src/lib/app-utils/entity-picker-context.js.map +1 -0
  301. package/src/lib/app-utils/error-beacon.d.ts +107 -0
  302. package/src/lib/app-utils/error-beacon.js +296 -0
  303. package/src/lib/app-utils/error-beacon.js.map +1 -0
  304. package/src/lib/app-utils/expand-repeatables.d.ts +172 -0
  305. package/src/lib/app-utils/expand-repeatables.js +299 -0
  306. package/src/lib/app-utils/expand-repeatables.js.map +1 -0
  307. package/src/lib/app-utils/foreign-script.d.ts +82 -0
  308. package/src/lib/app-utils/foreign-script.js +102 -0
  309. package/src/lib/app-utils/foreign-script.js.map +1 -0
  310. package/src/lib/app-utils/form-abuse-ceiling.d.ts +146 -0
  311. package/src/lib/app-utils/form-abuse-ceiling.js +158 -0
  312. package/src/lib/app-utils/form-abuse-ceiling.js.map +1 -0
  313. package/src/lib/app-utils/form-contract.d.ts +198 -0
  314. package/src/lib/app-utils/form-contract.js +282 -0
  315. package/src/lib/app-utils/form-contract.js.map +1 -0
  316. package/src/lib/app-utils/form-dataset-binding.d.ts +50 -0
  317. package/src/lib/app-utils/form-dataset-binding.js +74 -0
  318. package/src/lib/app-utils/form-dataset-binding.js.map +1 -0
  319. package/src/lib/app-utils/forms.d.ts +727 -0
  320. package/src/lib/app-utils/forms.js +777 -0
  321. package/src/lib/app-utils/forms.js.map +1 -0
  322. package/src/lib/app-utils/functions.d.ts +188 -0
  323. package/src/lib/app-utils/functions.js +529 -0
  324. package/src/lib/app-utils/functions.js.map +1 -0
  325. package/src/lib/app-utils/guarded-version-save.d.ts +91 -0
  326. package/src/lib/app-utils/guarded-version-save.js +131 -0
  327. package/src/lib/app-utils/guarded-version-save.js.map +1 -0
  328. package/src/lib/app-utils/health-report.d.ts +1766 -0
  329. package/src/lib/app-utils/health-report.js +2072 -0
  330. package/src/lib/app-utils/health-report.js.map +1 -0
  331. package/src/lib/app-utils/host-naming.d.ts +135 -0
  332. package/src/lib/app-utils/host-naming.js +188 -0
  333. package/src/lib/app-utils/host-naming.js.map +1 -0
  334. package/src/lib/app-utils/host-permissions.d.ts +76 -0
  335. package/src/lib/app-utils/host-permissions.js +119 -0
  336. package/src/lib/app-utils/host-permissions.js.map +1 -0
  337. package/src/lib/app-utils/host-tokens.d.ts +228 -0
  338. package/src/lib/app-utils/host-tokens.js +304 -0
  339. package/src/lib/app-utils/host-tokens.js.map +1 -0
  340. package/src/lib/app-utils/idp-profile.d.ts +83 -0
  341. package/src/lib/app-utils/idp-profile.js +268 -0
  342. package/src/lib/app-utils/idp-profile.js.map +1 -0
  343. package/src/lib/app-utils/image-upload-types.d.ts +49 -0
  344. package/src/lib/app-utils/image-upload-types.js +86 -0
  345. package/src/lib/app-utils/image-upload-types.js.map +1 -0
  346. package/src/lib/app-utils/index.d.ts +18 -0
  347. package/src/lib/app-utils/index.js +23 -0
  348. package/src/lib/app-utils/index.js.map +1 -0
  349. package/src/lib/app-utils/internal-traffic.d.ts +197 -0
  350. package/src/lib/app-utils/internal-traffic.js +288 -0
  351. package/src/lib/app-utils/internal-traffic.js.map +1 -0
  352. package/src/lib/app-utils/lineal-order.d.ts +62 -0
  353. package/src/lib/app-utils/lineal-order.js +65 -0
  354. package/src/lib/app-utils/lineal-order.js.map +1 -0
  355. package/src/lib/app-utils/link-references.d.ts +36 -0
  356. package/src/lib/app-utils/link-references.js +89 -0
  357. package/src/lib/app-utils/link-references.js.map +1 -0
  358. package/src/lib/app-utils/link-target-search-context.d.ts +123 -0
  359. package/src/lib/app-utils/link-target-search-context.js +221 -0
  360. package/src/lib/app-utils/link-target-search-context.js.map +1 -0
  361. package/src/lib/app-utils/list-assignment-policy.d.ts +169 -0
  362. package/src/lib/app-utils/list-assignment-policy.js +170 -0
  363. package/src/lib/app-utils/list-assignment-policy.js.map +1 -0
  364. package/src/lib/app-utils/list-import.d.ts +158 -0
  365. package/src/lib/app-utils/list-import.js +332 -0
  366. package/src/lib/app-utils/list-import.js.map +1 -0
  367. package/src/lib/app-utils/llms-txt.d.ts +104 -0
  368. package/src/lib/app-utils/llms-txt.js +144 -0
  369. package/src/lib/app-utils/llms-txt.js.map +1 -0
  370. package/src/lib/app-utils/local-storage-budget.d.ts +75 -0
  371. package/src/lib/app-utils/local-storage-budget.js +153 -0
  372. package/src/lib/app-utils/local-storage-budget.js.map +1 -0
  373. package/src/lib/app-utils/lockdown.d.ts +698 -0
  374. package/src/lib/app-utils/lockdown.js +929 -0
  375. package/src/lib/app-utils/lockdown.js.map +1 -0
  376. package/src/lib/app-utils/margin-utilization.d.ts +267 -0
  377. package/src/lib/app-utils/margin-utilization.js +351 -0
  378. package/src/lib/app-utils/margin-utilization.js.map +1 -0
  379. package/src/lib/app-utils/markdown-lite.d.ts +297 -0
  380. package/src/lib/app-utils/markdown-lite.js +705 -0
  381. package/src/lib/app-utils/markdown-lite.js.map +1 -0
  382. package/src/lib/app-utils/marketing-consent.d.ts +704 -0
  383. package/src/lib/app-utils/marketing-consent.js +783 -0
  384. package/src/lib/app-utils/marketing-consent.js.map +1 -0
  385. package/src/lib/app-utils/marketplace-listing-visibility.d.ts +120 -0
  386. package/src/lib/app-utils/marketplace-listing-visibility.js +139 -0
  387. package/src/lib/app-utils/marketplace-listing-visibility.js.map +1 -0
  388. package/src/lib/app-utils/marketplace-overrides.d.ts +271 -0
  389. package/src/lib/app-utils/marketplace-overrides.js +462 -0
  390. package/src/lib/app-utils/marketplace-overrides.js.map +1 -0
  391. package/src/lib/app-utils/marketplace-provenance.d.ts +150 -0
  392. package/src/lib/app-utils/marketplace-provenance.js +136 -0
  393. package/src/lib/app-utils/marketplace-provenance.js.map +1 -0
  394. package/src/lib/app-utils/marketplace-theme.d.ts +237 -0
  395. package/src/lib/app-utils/marketplace-theme.js +525 -0
  396. package/src/lib/app-utils/marketplace-theme.js.map +1 -0
  397. package/src/lib/app-utils/marketplace-update-state.d.ts +119 -0
  398. package/src/lib/app-utils/marketplace-update-state.js +132 -0
  399. package/src/lib/app-utils/marketplace-update-state.js.map +1 -0
  400. package/src/lib/app-utils/marketplace-verification.d.ts +95 -0
  401. package/src/lib/app-utils/marketplace-verification.js +81 -0
  402. package/src/lib/app-utils/marketplace-verification.js.map +1 -0
  403. package/src/lib/app-utils/measure-node-map.d.ts +76 -0
  404. package/src/lib/app-utils/measure-node-map.js +111 -0
  405. package/src/lib/app-utils/measure-node-map.js.map +1 -0
  406. package/src/lib/app-utils/media-alt.d.ts +55 -0
  407. package/src/lib/app-utils/media-alt.js +58 -0
  408. package/src/lib/app-utils/media-alt.js.map +1 -0
  409. package/src/lib/app-utils/media-asset-facts.d.ts +125 -0
  410. package/src/lib/app-utils/media-asset-facts.js +467 -0
  411. package/src/lib/app-utils/media-asset-facts.js.map +1 -0
  412. package/src/lib/app-utils/media-cdn-scope.d.ts +65 -0
  413. package/src/lib/app-utils/media-cdn-scope.js +75 -0
  414. package/src/lib/app-utils/media-cdn-scope.js.map +1 -0
  415. package/src/lib/app-utils/media-folders.d.ts +161 -0
  416. package/src/lib/app-utils/media-folders.js +230 -0
  417. package/src/lib/app-utils/media-folders.js.map +1 -0
  418. package/src/lib/app-utils/media-metadata.d.ts +277 -0
  419. package/src/lib/app-utils/media-metadata.js +388 -0
  420. package/src/lib/app-utils/media-metadata.js.map +1 -0
  421. package/src/lib/app-utils/media-picker-context.d.ts +93 -0
  422. package/src/lib/app-utils/media-picker-context.js +26 -0
  423. package/src/lib/app-utils/media-picker-context.js.map +1 -0
  424. package/src/lib/app-utils/media-quarantine.d.ts +247 -0
  425. package/src/lib/app-utils/media-quarantine.js +323 -0
  426. package/src/lib/app-utils/media-quarantine.js.map +1 -0
  427. package/src/lib/app-utils/media-ref.d.ts +661 -0
  428. package/src/lib/app-utils/media-ref.js +1055 -0
  429. package/src/lib/app-utils/media-ref.js.map +1 -0
  430. package/src/lib/app-utils/media-takedown-reach.d.ts +126 -0
  431. package/src/lib/app-utils/media-takedown-reach.js +143 -0
  432. package/src/lib/app-utils/media-takedown-reach.js.map +1 -0
  433. package/src/lib/app-utils/member-email-aliases.d.ts +180 -0
  434. package/src/lib/app-utils/member-email-aliases.js +217 -0
  435. package/src/lib/app-utils/member-email-aliases.js.map +1 -0
  436. package/src/lib/app-utils/merge-node-sx.d.ts +47 -0
  437. package/src/lib/app-utils/merge-node-sx.js +123 -0
  438. package/src/lib/app-utils/merge-node-sx.js.map +1 -0
  439. package/src/lib/app-utils/name-match.d.ts +155 -0
  440. package/src/lib/app-utils/name-match.js +175 -0
  441. package/src/lib/app-utils/name-match.js.map +1 -0
  442. package/src/lib/app-utils/name-search.d.ts +117 -0
  443. package/src/lib/app-utils/name-search.js +145 -0
  444. package/src/lib/app-utils/name-search.js.map +1 -0
  445. package/src/lib/app-utils/node-capabilities.d.ts +85 -0
  446. package/src/lib/app-utils/node-capabilities.js +88 -0
  447. package/src/lib/app-utils/node-capabilities.js.map +1 -0
  448. package/src/lib/app-utils/node-definition-sanitizer.d.ts +164 -0
  449. package/src/lib/app-utils/node-definition-sanitizer.js +402 -0
  450. package/src/lib/app-utils/node-definition-sanitizer.js.map +1 -0
  451. package/src/lib/app-utils/node-identity.d.ts +47 -0
  452. package/src/lib/app-utils/node-identity.js +50 -0
  453. package/src/lib/app-utils/node-identity.js.map +1 -0
  454. package/src/lib/app-utils/node-interactions.d.ts +102 -0
  455. package/src/lib/app-utils/node-interactions.js +192 -0
  456. package/src/lib/app-utils/node-interactions.js.map +1 -0
  457. package/src/lib/app-utils/node-url-policy.d.ts +54 -0
  458. package/src/lib/app-utils/node-url-policy.js +72 -0
  459. package/src/lib/app-utils/node-url-policy.js.map +1 -0
  460. package/src/lib/app-utils/notifications.d.ts +71 -0
  461. package/src/lib/app-utils/notifications.js +101 -0
  462. package/src/lib/app-utils/notifications.js.map +1 -0
  463. package/src/lib/app-utils/onboarding-deep-link.d.ts +120 -0
  464. package/src/lib/app-utils/onboarding-deep-link.js +142 -0
  465. package/src/lib/app-utils/onboarding-deep-link.js.map +1 -0
  466. package/src/lib/app-utils/operator-identity.d.ts +207 -0
  467. package/src/lib/app-utils/operator-identity.js +186 -0
  468. package/src/lib/app-utils/operator-identity.js.map +1 -0
  469. package/src/lib/app-utils/org-billing-doc.d.ts +231 -0
  470. package/src/lib/app-utils/org-billing-doc.js +238 -0
  471. package/src/lib/app-utils/org-billing-doc.js.map +1 -0
  472. package/src/lib/app-utils/org-override-reason.d.ts +100 -0
  473. package/src/lib/app-utils/org-override-reason.js +116 -0
  474. package/src/lib/app-utils/org-override-reason.js.map +1 -0
  475. package/src/lib/app-utils/org-permissions.d.ts +194 -0
  476. package/src/lib/app-utils/org-permissions.js +357 -0
  477. package/src/lib/app-utils/org-permissions.js.map +1 -0
  478. package/src/lib/app-utils/org-roles.d.ts +72 -0
  479. package/src/lib/app-utils/org-roles.js +131 -0
  480. package/src/lib/app-utils/org-roles.js.map +1 -0
  481. package/src/lib/app-utils/organizations.d.ts +407 -0
  482. package/src/lib/app-utils/organizations.js +511 -0
  483. package/src/lib/app-utils/organizations.js.map +1 -0
  484. package/src/lib/app-utils/page-header-actions-context.d.ts +83 -0
  485. package/src/lib/app-utils/page-header-actions-context.js +58 -0
  486. package/src/lib/app-utils/page-header-actions-context.js.map +1 -0
  487. package/src/lib/app-utils/page-header-record-context.d.ts +80 -0
  488. package/src/lib/app-utils/page-header-record-context.js +64 -0
  489. package/src/lib/app-utils/page-header-record-context.js.map +1 -0
  490. package/src/lib/app-utils/page-markdown.d.ts +103 -0
  491. package/src/lib/app-utils/page-markdown.js +385 -0
  492. package/src/lib/app-utils/page-markdown.js.map +1 -0
  493. package/src/lib/app-utils/paid-media-source.d.ts +90 -0
  494. package/src/lib/app-utils/paid-media-source.js +184 -0
  495. package/src/lib/app-utils/paid-media-source.js.map +1 -0
  496. package/src/lib/app-utils/palette-sx.d.ts +34 -0
  497. package/src/lib/app-utils/palette-sx.js +150 -0
  498. package/src/lib/app-utils/palette-sx.js.map +1 -0
  499. package/src/lib/app-utils/password-policy.d.ts +47 -0
  500. package/src/lib/app-utils/password-policy.js +46 -0
  501. package/src/lib/app-utils/password-policy.js.map +1 -0
  502. package/src/lib/app-utils/payments-configured.d.ts +84 -0
  503. package/src/lib/app-utils/payments-configured.js +88 -0
  504. package/src/lib/app-utils/payments-configured.js.map +1 -0
  505. package/src/lib/app-utils/person-erasure.d.ts +126 -0
  506. package/src/lib/app-utils/person-erasure.js +121 -0
  507. package/src/lib/app-utils/person-erasure.js.map +1 -0
  508. package/src/lib/app-utils/person-key.d.ts +32 -0
  509. package/src/lib/app-utils/person-key.js +62 -0
  510. package/src/lib/app-utils/person-key.js.map +1 -0
  511. package/src/lib/app-utils/plan-entitlements.d.ts +2756 -0
  512. package/src/lib/app-utils/plan-entitlements.js +4085 -0
  513. package/src/lib/app-utils/plan-entitlements.js.map +1 -0
  514. package/src/lib/app-utils/platform-ad-conversions.d.ts +122 -0
  515. package/src/lib/app-utils/platform-ad-conversions.js +174 -0
  516. package/src/lib/app-utils/platform-ad-conversions.js.map +1 -0
  517. package/src/lib/app-utils/platform-advertising-tags.d.ts +139 -0
  518. package/src/lib/app-utils/platform-advertising-tags.js +203 -0
  519. package/src/lib/app-utils/platform-advertising-tags.js.map +1 -0
  520. package/src/lib/app-utils/platform-brand.d.ts +151 -0
  521. package/src/lib/app-utils/platform-brand.js +175 -0
  522. package/src/lib/app-utils/platform-brand.js.map +1 -0
  523. package/src/lib/app-utils/platform-consent-default.d.ts +142 -0
  524. package/src/lib/app-utils/platform-consent-default.js +295 -0
  525. package/src/lib/app-utils/platform-consent-default.js.map +1 -0
  526. package/src/lib/app-utils/platform-marketing-consent.d.ts +151 -0
  527. package/src/lib/app-utils/platform-marketing-consent.js +182 -0
  528. package/src/lib/app-utils/platform-marketing-consent.js.map +1 -0
  529. package/src/lib/app-utils/platform-marketing-host.d.ts +33 -0
  530. package/src/lib/app-utils/platform-marketing-host.js +97 -0
  531. package/src/lib/app-utils/platform-marketing-host.js.map +1 -0
  532. package/src/lib/app-utils/platform-visitor-consent.d.ts +252 -0
  533. package/src/lib/app-utils/platform-visitor-consent.js +533 -0
  534. package/src/lib/app-utils/platform-visitor-consent.js.map +1 -0
  535. package/src/lib/app-utils/plugin-api-cross-origin.d.ts +61 -0
  536. package/src/lib/app-utils/plugin-api-cross-origin.js +202 -0
  537. package/src/lib/app-utils/plugin-api-cross-origin.js.map +1 -0
  538. package/src/lib/app-utils/plugin-api-rate-limit.d.ts +192 -0
  539. package/src/lib/app-utils/plugin-api-rate-limit.js +270 -0
  540. package/src/lib/app-utils/plugin-api-rate-limit.js.map +1 -0
  541. package/src/lib/app-utils/plugin-artifact-path.d.ts +32 -0
  542. package/src/lib/app-utils/plugin-artifact-path.js +33 -0
  543. package/src/lib/app-utils/plugin-artifact-path.js.map +1 -0
  544. package/src/lib/app-utils/plugin-bundle-checks.d.ts +148 -0
  545. package/src/lib/app-utils/plugin-bundle-checks.js +989 -0
  546. package/src/lib/app-utils/plugin-bundle-checks.js.map +1 -0
  547. package/src/lib/app-utils/plugin-manifest.d.ts +516 -0
  548. package/src/lib/app-utils/plugin-manifest.js +687 -0
  549. package/src/lib/app-utils/plugin-manifest.js.map +1 -0
  550. package/src/lib/app-utils/published-legal-pages.d.ts +71 -0
  551. package/src/lib/app-utils/published-legal-pages.js +90 -0
  552. package/src/lib/app-utils/published-legal-pages.js.map +1 -0
  553. package/src/lib/app-utils/publisher-agreement.d.ts +254 -0
  554. package/src/lib/app-utils/publisher-agreement.js +274 -0
  555. package/src/lib/app-utils/publisher-agreement.js.map +1 -0
  556. package/src/lib/app-utils/publisher-attestation.d.ts +99 -0
  557. package/src/lib/app-utils/publisher-attestation.js +158 -0
  558. package/src/lib/app-utils/publisher-attestation.js.map +1 -0
  559. package/src/lib/app-utils/recipient-email-render.d.ts +216 -0
  560. package/src/lib/app-utils/recipient-email-render.js +221 -0
  561. package/src/lib/app-utils/recipient-email-render.js.map +1 -0
  562. package/src/lib/app-utils/redispatch-caught-error.d.ts +38 -0
  563. package/src/lib/app-utils/redispatch-caught-error.js +46 -0
  564. package/src/lib/app-utils/redispatch-caught-error.js.map +1 -0
  565. package/src/lib/app-utils/registering-plugin.d.ts +19 -0
  566. package/src/lib/app-utils/registering-plugin.js +38 -0
  567. package/src/lib/app-utils/registering-plugin.js.map +1 -0
  568. package/src/lib/app-utils/release-flags.d.ts +283 -0
  569. package/src/lib/app-utils/release-flags.js +518 -0
  570. package/src/lib/app-utils/release-flags.js.map +1 -0
  571. package/src/lib/app-utils/repair-canvas-nodes.d.ts +130 -0
  572. package/src/lib/app-utils/repair-canvas-nodes.js +298 -0
  573. package/src/lib/app-utils/repair-canvas-nodes.js.map +1 -0
  574. package/src/lib/app-utils/repeat-infringer.d.ts +166 -0
  575. package/src/lib/app-utils/repeat-infringer.js +188 -0
  576. package/src/lib/app-utils/repeat-infringer.js.map +1 -0
  577. package/src/lib/app-utils/repeat-sources.d.ts +115 -0
  578. package/src/lib/app-utils/repeat-sources.js +86 -0
  579. package/src/lib/app-utils/repeat-sources.js.map +1 -0
  580. package/src/lib/app-utils/request-geo.d.ts +114 -0
  581. package/src/lib/app-utils/request-geo.js +247 -0
  582. package/src/lib/app-utils/request-geo.js.map +1 -0
  583. package/src/lib/app-utils/request-ip.d.ts +213 -0
  584. package/src/lib/app-utils/request-ip.js +344 -0
  585. package/src/lib/app-utils/request-ip.js.map +1 -0
  586. package/src/lib/app-utils/resolve-named-tokens.d.ts +26 -0
  587. package/src/lib/app-utils/resolve-named-tokens.js +59 -0
  588. package/src/lib/app-utils/resolve-named-tokens.js.map +1 -0
  589. package/src/lib/app-utils/responsive-typography-sx.d.ts +77 -0
  590. package/src/lib/app-utils/responsive-typography-sx.js +122 -0
  591. package/src/lib/app-utils/responsive-typography-sx.js.map +1 -0
  592. package/src/lib/app-utils/reusable-component-keys.d.ts +135 -0
  593. package/src/lib/app-utils/reusable-component-keys.js +140 -0
  594. package/src/lib/app-utils/reusable-component-keys.js.map +1 -0
  595. package/src/lib/app-utils/reusable-prop-values.d.ts +199 -0
  596. package/src/lib/app-utils/reusable-prop-values.js +494 -0
  597. package/src/lib/app-utils/reusable-prop-values.js.map +1 -0
  598. package/src/lib/app-utils/safe-json-ld.d.ts +29 -0
  599. package/src/lib/app-utils/safe-json-ld.js +37 -0
  600. package/src/lib/app-utils/safe-json-ld.js.map +1 -0
  601. package/src/lib/app-utils/sanitize-svg.d.ts +55 -0
  602. package/src/lib/app-utils/sanitize-svg.js +460 -0
  603. package/src/lib/app-utils/sanitize-svg.js.map +1 -0
  604. package/src/lib/app-utils/scheme-sx.d.ts +84 -0
  605. package/src/lib/app-utils/scheme-sx.js +148 -0
  606. package/src/lib/app-utils/scheme-sx.js.map +1 -0
  607. package/src/lib/app-utils/scope-tokens.d.ts +249 -0
  608. package/src/lib/app-utils/scope-tokens.js +331 -0
  609. package/src/lib/app-utils/scope-tokens.js.map +1 -0
  610. package/src/lib/app-utils/screen-link-context-value.d.ts +57 -0
  611. package/src/lib/app-utils/screen-link-context-value.js +43 -0
  612. package/src/lib/app-utils/screen-link-context-value.js.map +1 -0
  613. package/src/lib/app-utils/screen-link-context.d.ts +185 -0
  614. package/src/lib/app-utils/screen-link-context.js +304 -0
  615. package/src/lib/app-utils/screen-link-context.js.map +1 -0
  616. package/src/lib/app-utils/screen-link-value.d.ts +269 -0
  617. package/src/lib/app-utils/screen-link-value.js +384 -0
  618. package/src/lib/app-utils/screen-link-value.js.map +1 -0
  619. package/src/lib/app-utils/screen-route.d.ts +669 -0
  620. package/src/lib/app-utils/screen-route.js +751 -0
  621. package/src/lib/app-utils/screen-route.js.map +1 -0
  622. package/src/lib/app-utils/screen-seo-fields.d.ts +37 -0
  623. package/src/lib/app-utils/screen-seo-fields.js +42 -0
  624. package/src/lib/app-utils/screen-seo-fields.js.map +1 -0
  625. package/src/lib/app-utils/search-indexing.d.ts +162 -0
  626. package/src/lib/app-utils/search-indexing.js +207 -0
  627. package/src/lib/app-utils/search-indexing.js.map +1 -0
  628. package/src/lib/app-utils/seo-listing-fields.d.ts +70 -0
  629. package/src/lib/app-utils/seo-listing-fields.js +75 -0
  630. package/src/lib/app-utils/seo-listing-fields.js.map +1 -0
  631. package/src/lib/app-utils/seo-locale.d.ts +119 -0
  632. package/src/lib/app-utils/seo-locale.js +133 -0
  633. package/src/lib/app-utils/seo-locale.js.map +1 -0
  634. package/src/lib/app-utils/seo-title-variables.d.ts +149 -0
  635. package/src/lib/app-utils/seo-title-variables.js +190 -0
  636. package/src/lib/app-utils/seo-title-variables.js.map +1 -0
  637. package/src/lib/app-utils/seo-title.d.ts +70 -0
  638. package/src/lib/app-utils/seo-title.js +117 -0
  639. package/src/lib/app-utils/seo-title.js.map +1 -0
  640. package/src/lib/app-utils/server.d.ts +174 -0
  641. package/src/lib/app-utils/server.js +314 -0
  642. package/src/lib/app-utils/server.js.map +1 -0
  643. package/src/lib/app-utils/site-context.d.ts +106 -0
  644. package/src/lib/app-utils/site-context.js +100 -0
  645. package/src/lib/app-utils/site-context.js.map +1 -0
  646. package/src/lib/app-utils/sitemap.d.ts +117 -0
  647. package/src/lib/app-utils/sitemap.js +183 -0
  648. package/src/lib/app-utils/sitemap.js.map +1 -0
  649. package/src/lib/app-utils/social-image.d.ts +112 -0
  650. package/src/lib/app-utils/social-image.js +191 -0
  651. package/src/lib/app-utils/social-image.js.map +1 -0
  652. package/src/lib/app-utils/starter-templates.d.ts +99 -0
  653. package/src/lib/app-utils/starter-templates.js +579 -0
  654. package/src/lib/app-utils/starter-templates.js.map +1 -0
  655. package/src/lib/app-utils/stored-nodes.d.ts +120 -0
  656. package/src/lib/app-utils/stored-nodes.js +174 -0
  657. package/src/lib/app-utils/stored-nodes.js.map +1 -0
  658. package/src/lib/app-utils/strip-undefined.d.ts +59 -0
  659. package/src/lib/app-utils/strip-undefined.js +95 -0
  660. package/src/lib/app-utils/strip-undefined.js.map +1 -0
  661. package/src/lib/app-utils/stripe-deployment-mode.d.ts +47 -0
  662. package/src/lib/app-utils/stripe-deployment-mode.js +70 -0
  663. package/src/lib/app-utils/stripe-deployment-mode.js.map +1 -0
  664. package/src/lib/app-utils/support-tiers.d.ts +108 -0
  665. package/src/lib/app-utils/support-tiers.js +201 -0
  666. package/src/lib/app-utils/support-tiers.js.map +1 -0
  667. package/src/lib/app-utils/timezone-geo-hint.d.ts +36 -0
  668. package/src/lib/app-utils/timezone-geo-hint.js +180 -0
  669. package/src/lib/app-utils/timezone-geo-hint.js.map +1 -0
  670. package/src/lib/app-utils/upload-cors.d.ts +155 -0
  671. package/src/lib/app-utils/upload-cors.js +254 -0
  672. package/src/lib/app-utils/upload-cors.js.map +1 -0
  673. package/src/lib/app-utils/upload-inspection.d.ts +159 -0
  674. package/src/lib/app-utils/upload-inspection.js +539 -0
  675. package/src/lib/app-utils/upload-inspection.js.map +1 -0
  676. package/src/lib/app-utils/url-slug.d.ts +40 -0
  677. package/src/lib/app-utils/url-slug.js +42 -0
  678. package/src/lib/app-utils/url-slug.js.map +1 -0
  679. package/src/lib/app-utils/usage-budget.d.ts +429 -0
  680. package/src/lib/app-utils/usage-budget.js +421 -0
  681. package/src/lib/app-utils/usage-budget.js.map +1 -0
  682. package/src/lib/app-utils/variables.d.ts +96 -0
  683. package/src/lib/app-utils/variables.js +233 -0
  684. package/src/lib/app-utils/variables.js.map +1 -0
  685. package/src/lib/app-utils/video-asset-facts.d.ts +61 -0
  686. package/src/lib/app-utils/video-asset-facts.js +70 -0
  687. package/src/lib/app-utils/video-asset-facts.js.map +1 -0
  688. package/src/lib/app-utils/video-object.d.ts +89 -0
  689. package/src/lib/app-utils/video-object.js +245 -0
  690. package/src/lib/app-utils/video-object.js.map +1 -0
  691. package/src/lib/app-utils/visitor-consent.d.ts +757 -0
  692. package/src/lib/app-utils/visitor-consent.js +981 -0
  693. package/src/lib/app-utils/visitor-consent.js.map +1 -0
  694. package/src/lib/app-utils/visitor-record-ceiling.d.ts +223 -0
  695. package/src/lib/app-utils/visitor-record-ceiling.js +215 -0
  696. package/src/lib/app-utils/visitor-record-ceiling.js.map +1 -0
  697. package/src/lib/app-utils/web-vitals-rum.d.ts +53 -0
  698. package/src/lib/app-utils/web-vitals-rum.js +278 -0
  699. package/src/lib/app-utils/web-vitals-rum.js.map +1 -0
  700. package/src/lib/app-utils/webhook-delivery.d.ts +324 -0
  701. package/src/lib/app-utils/webhook-delivery.js +413 -0
  702. package/src/lib/app-utils/webhook-delivery.js.map +1 -0
  703. package/src/lib/app-utils/where-used.d.ts +57 -0
  704. package/src/lib/app-utils/where-used.js +59 -0
  705. package/src/lib/app-utils/where-used.js.map +1 -0
  706. package/src/lib/app-utils/wistia-embed.d.ts +86 -0
  707. package/src/lib/app-utils/wistia-embed.js +119 -0
  708. package/src/lib/app-utils/wistia-embed.js.map +1 -0
  709. package/src/lib/app-utils/workflows.d.ts +136 -0
  710. package/src/lib/app-utils/workflows.js +346 -0
  711. package/src/lib/app-utils/workflows.js.map +1 -0
  712. package/src/lib/canvas-manager/canvas-manager-tree.d.ts +109 -0
  713. package/src/lib/canvas-manager/canvas-manager-tree.js +139 -0
  714. package/src/lib/canvas-manager/canvas-manager-tree.js.map +1 -0
  715. package/src/lib/canvas-manager/canvas-manager.d.ts +549 -0
  716. package/src/lib/canvas-manager/canvas-manager.js +1311 -0
  717. package/src/lib/canvas-manager/canvas-manager.js.map +1 -0
  718. package/src/lib/canvas-manager/index.d.ts +20 -0
  719. package/src/lib/canvas-manager/index.js +21 -0
  720. package/src/lib/canvas-manager/index.js.map +1 -0
  721. package/src/lib/canvas-manager/stores/index.d.ts +17 -0
  722. package/src/lib/canvas-manager/stores/index.js +18 -0
  723. package/src/lib/canvas-manager/stores/index.js.map +1 -0
  724. package/src/lib/canvas-manager/stores/node.store.d.ts +30 -0
  725. package/src/lib/canvas-manager/stores/node.store.js +45 -0
  726. package/src/lib/canvas-manager/stores/node.store.js.map +1 -0
  727. package/src/lib/components-manager/components-manager.d.ts +56 -0
  728. package/src/lib/components-manager/components-manager.js +191 -0
  729. package/src/lib/components-manager/components-manager.js.map +1 -0
  730. package/src/lib/components-manager/index.d.ts +18 -0
  731. package/src/lib/components-manager/index.js +19 -0
  732. package/src/lib/components-manager/index.js.map +1 -0
  733. package/src/lib/emit-manager/emit-manager.d.ts +56 -0
  734. package/src/lib/emit-manager/emit-manager.js +60 -0
  735. package/src/lib/emit-manager/emit-manager.js.map +1 -0
  736. package/src/lib/emit-manager/index.d.ts +18 -0
  737. package/src/lib/emit-manager/index.js +19 -0
  738. package/src/lib/emit-manager/index.js.map +1 -0
  739. package/src/lib/foundation/constants/_internal.d.ts +18 -0
  740. package/src/lib/foundation/constants/_internal.js +62 -0
  741. package/src/lib/foundation/constants/_internal.js.map +1 -0
  742. package/src/lib/foundation/constants/app.d.ts +23 -0
  743. package/src/lib/foundation/constants/app.js +25 -0
  744. package/src/lib/foundation/constants/app.js.map +1 -0
  745. package/src/lib/foundation/constants/canvas.d.ts +18 -0
  746. package/src/lib/foundation/constants/canvas.js +18 -0
  747. package/src/lib/foundation/constants/canvas.js.map +1 -0
  748. package/src/lib/foundation/constants/components.d.ts +54 -0
  749. package/src/lib/foundation/constants/components.js +61 -0
  750. package/src/lib/foundation/constants/components.js.map +1 -0
  751. package/src/lib/foundation/constants/shared.d.ts +50 -0
  752. package/src/lib/foundation/constants/shared.js +49 -0
  753. package/src/lib/foundation/constants/shared.js.map +1 -0
  754. package/src/lib/foundation/constants/symbol.d.ts +63 -0
  755. package/src/lib/foundation/constants/symbol.js +75 -0
  756. package/src/lib/foundation/constants/symbol.js.map +1 -0
  757. package/src/lib/foundation/definitions/components.types.d.ts +372 -0
  758. package/src/lib/foundation/definitions/components.types.js +180 -0
  759. package/src/lib/foundation/definitions/components.types.js.map +1 -0
  760. package/src/lib/foundation/definitions/contact.types.d.ts +73 -0
  761. package/src/lib/foundation/definitions/contact.types.js +107 -0
  762. package/src/lib/foundation/definitions/contact.types.js.map +1 -0
  763. package/src/lib/foundation/definitions/host-content-collections.d.ts +137 -0
  764. package/src/lib/foundation/definitions/host-content-collections.js +219 -0
  765. package/src/lib/foundation/definitions/host-content-collections.js.map +1 -0
  766. package/src/lib/foundation/definitions/org-billing.types.d.ts +1361 -0
  767. package/src/lib/foundation/definitions/org-billing.types.js +77 -0
  768. package/src/lib/foundation/definitions/org-billing.types.js.map +1 -0
  769. package/src/lib/foundation/definitions/organization.types.d.ts +307 -0
  770. package/src/lib/foundation/definitions/organization.types.js +42 -0
  771. package/src/lib/foundation/definitions/organization.types.js.map +1 -0
  772. package/src/lib/foundation/definitions/platform.types.d.ts +1326 -0
  773. package/src/lib/foundation/definitions/platform.types.js +124 -0
  774. package/src/lib/foundation/definitions/platform.types.js.map +1 -0
  775. package/src/lib/foundation/definitions/property-kinds.d.ts +189 -0
  776. package/src/lib/foundation/definitions/property-kinds.js +565 -0
  777. package/src/lib/foundation/definitions/property-kinds.js.map +1 -0
  778. package/src/lib/foundation/definitions/shared.d.ts +23 -0
  779. package/src/lib/foundation/definitions/shared.js +18 -0
  780. package/src/lib/foundation/definitions/shared.js.map +1 -0
  781. package/src/lib/foundation/definitions/write-deny-coverage.util.d.ts +249 -0
  782. package/src/lib/foundation/definitions/write-deny-coverage.util.js +499 -0
  783. package/src/lib/foundation/definitions/write-deny-coverage.util.js.map +1 -0
  784. package/src/lib/foundation/index.d.ts +32 -0
  785. package/src/lib/foundation/index.js +67 -0
  786. package/src/lib/foundation/index.js.map +1 -0
  787. package/src/lib/lifecycle.d.ts +24 -0
  788. package/src/lib/lifecycle.js +39 -0
  789. package/src/lib/lifecycle.js.map +1 -0
  790. package/src/lib/mst/common.d.ts +17 -0
  791. package/src/lib/mst/common.js +23 -0
  792. package/src/lib/mst/common.js.map +1 -0
  793. package/src/lib/mst/index.d.ts +19 -0
  794. package/src/lib/mst/index.js +20 -0
  795. package/src/lib/mst/index.js.map +1 -0
  796. package/src/lib/mst/json.d.ts +22 -0
  797. package/src/lib/mst/json.js +23 -0
  798. package/src/lib/mst/json.js.map +1 -0
  799. package/src/lib/mst/types.d.ts +20 -0
  800. package/src/lib/mst/types.js +18 -0
  801. package/src/lib/mst/types.js.map +1 -0
  802. package/src/lib/plugin-manager/billing-webhook-hooks.d.ts +77 -0
  803. package/src/lib/plugin-manager/billing-webhook-hooks.js +55 -0
  804. package/src/lib/plugin-manager/billing-webhook-hooks.js.map +1 -0
  805. package/src/lib/plugin-manager/commerce-zone-props.d.ts +172 -0
  806. package/src/lib/plugin-manager/commerce-zone-props.js +31 -0
  807. package/src/lib/plugin-manager/commerce-zone-props.js.map +1 -0
  808. package/src/lib/plugin-manager/custom-fields.d.ts +60 -0
  809. package/src/lib/plugin-manager/custom-fields.js +39 -0
  810. package/src/lib/plugin-manager/custom-fields.js.map +1 -0
  811. package/src/lib/plugin-manager/editor-sessions.d.ts +109 -0
  812. package/src/lib/plugin-manager/editor-sessions.js +137 -0
  813. package/src/lib/plugin-manager/editor-sessions.js.map +1 -0
  814. package/src/lib/plugin-manager/enabled-plugins.d.ts +438 -0
  815. package/src/lib/plugin-manager/enabled-plugins.js +403 -0
  816. package/src/lib/plugin-manager/enabled-plugins.js.map +1 -0
  817. package/src/lib/plugin-manager/feature-plugins.d.ts +1314 -0
  818. package/src/lib/plugin-manager/feature-plugins.js +609 -0
  819. package/src/lib/plugin-manager/feature-plugins.js.map +1 -0
  820. package/src/lib/plugin-manager/first-party-plugins.generated.d.ts +11 -0
  821. package/src/lib/plugin-manager/first-party-plugins.generated.js +149 -0
  822. package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -0
  823. package/src/lib/plugin-manager/index.d.ts +42 -0
  824. package/src/lib/plugin-manager/index.js +46 -0
  825. package/src/lib/plugin-manager/index.js.map +1 -0
  826. package/src/lib/plugin-manager/install-presets.d.ts +93 -0
  827. package/src/lib/plugin-manager/install-presets.js +86 -0
  828. package/src/lib/plugin-manager/install-presets.js.map +1 -0
  829. package/src/lib/plugin-manager/media-delivery-provider.d.ts +124 -0
  830. package/src/lib/plugin-manager/media-delivery-provider.js +53 -0
  831. package/src/lib/plugin-manager/media-delivery-provider.js.map +1 -0
  832. package/src/lib/plugin-manager/order-fulfilment.d.ts +142 -0
  833. package/src/lib/plugin-manager/order-fulfilment.js +104 -0
  834. package/src/lib/plugin-manager/order-fulfilment.js.map +1 -0
  835. package/src/lib/plugin-manager/plugin-activity-actions.d.ts +122 -0
  836. package/src/lib/plugin-manager/plugin-activity-actions.js +140 -0
  837. package/src/lib/plugin-manager/plugin-activity-actions.js.map +1 -0
  838. package/src/lib/plugin-manager/plugin-bridge.d.ts +98 -0
  839. package/src/lib/plugin-manager/plugin-bridge.js +154 -0
  840. package/src/lib/plugin-manager/plugin-bridge.js.map +1 -0
  841. package/src/lib/plugin-manager/plugin-config.d.ts +148 -0
  842. package/src/lib/plugin-manager/plugin-config.js +228 -0
  843. package/src/lib/plugin-manager/plugin-config.js.map +1 -0
  844. package/src/lib/plugin-manager/plugin-console-crons.d.ts +139 -0
  845. package/src/lib/plugin-manager/plugin-console-crons.js +177 -0
  846. package/src/lib/plugin-manager/plugin-console-crons.js.map +1 -0
  847. package/src/lib/plugin-manager/plugin-contact-capture.d.ts +220 -0
  848. package/src/lib/plugin-manager/plugin-contact-capture.js +89 -0
  849. package/src/lib/plugin-manager/plugin-contact-capture.js.map +1 -0
  850. package/src/lib/plugin-manager/plugin-contributions.d.ts +244 -0
  851. package/src/lib/plugin-manager/plugin-contributions.js +283 -0
  852. package/src/lib/plugin-manager/plugin-contributions.js.map +1 -0
  853. package/src/lib/plugin-manager/plugin-entitlement-keys.d.ts +169 -0
  854. package/src/lib/plugin-manager/plugin-entitlement-keys.js +84 -0
  855. package/src/lib/plugin-manager/plugin-entitlement-keys.js.map +1 -0
  856. package/src/lib/plugin-manager/plugin-entitlements.d.ts +181 -0
  857. package/src/lib/plugin-manager/plugin-entitlements.js +188 -0
  858. package/src/lib/plugin-manager/plugin-entitlements.js.map +1 -0
  859. package/src/lib/plugin-manager/plugin-events.d.ts +145 -0
  860. package/src/lib/plugin-manager/plugin-events.js +79 -0
  861. package/src/lib/plugin-manager/plugin-events.js.map +1 -0
  862. package/src/lib/plugin-manager/plugin-figures.d.ts +251 -0
  863. package/src/lib/plugin-manager/plugin-figures.js +252 -0
  864. package/src/lib/plugin-manager/plugin-figures.js.map +1 -0
  865. package/src/lib/plugin-manager/plugin-host-collections.d.ts +146 -0
  866. package/src/lib/plugin-manager/plugin-host-collections.js +116 -0
  867. package/src/lib/plugin-manager/plugin-host-collections.js.map +1 -0
  868. package/src/lib/plugin-manager/plugin-jobs.d.ts +130 -0
  869. package/src/lib/plugin-manager/plugin-jobs.js +182 -0
  870. package/src/lib/plugin-manager/plugin-jobs.js.map +1 -0
  871. package/src/lib/plugin-manager/plugin-loader.d.ts +86 -0
  872. package/src/lib/plugin-manager/plugin-loader.js +223 -0
  873. package/src/lib/plugin-manager/plugin-loader.js.map +1 -0
  874. package/src/lib/plugin-manager/plugin-manager.d.ts +95 -0
  875. package/src/lib/plugin-manager/plugin-manager.js +343 -0
  876. package/src/lib/plugin-manager/plugin-manager.js.map +1 -0
  877. package/src/lib/plugin-manager/plugin-metered-lines.d.ts +97 -0
  878. package/src/lib/plugin-manager/plugin-metered-lines.js +123 -0
  879. package/src/lib/plugin-manager/plugin-metered-lines.js.map +1 -0
  880. package/src/lib/plugin-manager/plugin-org-erasure.d.ts +52 -0
  881. package/src/lib/plugin-manager/plugin-org-erasure.js +100 -0
  882. package/src/lib/plugin-manager/plugin-org-erasure.js.map +1 -0
  883. package/src/lib/plugin-manager/plugin-permissions.d.ts +69 -0
  884. package/src/lib/plugin-manager/plugin-permissions.js +77 -0
  885. package/src/lib/plugin-manager/plugin-permissions.js.map +1 -0
  886. package/src/lib/plugin-manager/plugin-person-erasure.d.ts +58 -0
  887. package/src/lib/plugin-manager/plugin-person-erasure.js +109 -0
  888. package/src/lib/plugin-manager/plugin-person-erasure.js.map +1 -0
  889. package/src/lib/plugin-manager/plugin-record-cards.d.ts +99 -0
  890. package/src/lib/plugin-manager/plugin-record-cards.js +59 -0
  891. package/src/lib/plugin-manager/plugin-record-cards.js.map +1 -0
  892. package/src/lib/plugin-manager/plugin-record-facts.d.ts +111 -0
  893. package/src/lib/plugin-manager/plugin-record-facts.js +51 -0
  894. package/src/lib/plugin-manager/plugin-record-facts.js.map +1 -0
  895. package/src/lib/plugin-manager/plugin-record-routes.d.ts +129 -0
  896. package/src/lib/plugin-manager/plugin-record-routes.js +93 -0
  897. package/src/lib/plugin-manager/plugin-record-routes.js.map +1 -0
  898. package/src/lib/plugin-manager/plugin-record-timeline.d.ts +147 -0
  899. package/src/lib/plugin-manager/plugin-record-timeline.js +39 -0
  900. package/src/lib/plugin-manager/plugin-record-timeline.js.map +1 -0
  901. package/src/lib/plugin-manager/plugin-resource-drafts.d.ts +137 -0
  902. package/src/lib/plugin-manager/plugin-resource-drafts.js +51 -0
  903. package/src/lib/plugin-manager/plugin-resource-drafts.js.map +1 -0
  904. package/src/lib/plugin-manager/plugin-services.d.ts +94 -0
  905. package/src/lib/plugin-manager/plugin-services.js +153 -0
  906. package/src/lib/plugin-manager/plugin-services.js.map +1 -0
  907. package/src/lib/plugin-manager/plugin-styles-ui.d.ts +71 -0
  908. package/src/lib/plugin-manager/plugin-styles-ui.js +80 -0
  909. package/src/lib/plugin-manager/plugin-styles-ui.js.map +1 -0
  910. package/src/lib/plugin-manager/plugin-styles.d.ts +176 -0
  911. package/src/lib/plugin-manager/plugin-styles.js +186 -0
  912. package/src/lib/plugin-manager/plugin-styles.js.map +1 -0
  913. package/src/lib/plugin-manager/plugin-subprocessors.d.ts +135 -0
  914. package/src/lib/plugin-manager/plugin-subprocessors.js +129 -0
  915. package/src/lib/plugin-manager/plugin-subprocessors.js.map +1 -0
  916. package/src/lib/plugin-manager/plugin-tax-profile.d.ts +84 -0
  917. package/src/lib/plugin-manager/plugin-tax-profile.js +39 -0
  918. package/src/lib/plugin-manager/plugin-tax-profile.js.map +1 -0
  919. package/src/lib/plugin-manager/plugin-user-erasure.d.ts +53 -0
  920. package/src/lib/plugin-manager/plugin-user-erasure.js +84 -0
  921. package/src/lib/plugin-manager/plugin-user-erasure.js.map +1 -0
  922. package/src/lib/plugin-manager/plugin-zones.d.ts +121 -0
  923. package/src/lib/plugin-manager/plugin-zones.js +74 -0
  924. package/src/lib/plugin-manager/plugin-zones.js.map +1 -0
  925. package/src/lib/plugin-manager/realm-plugins.d.ts +112 -0
  926. package/src/lib/plugin-manager/realm-plugins.js +196 -0
  927. package/src/lib/plugin-manager/realm-plugins.js.map +1 -0
  928. package/src/lib/plugin-manager/realm-server.d.ts +54 -0
  929. package/src/lib/plugin-manager/realm-server.js +88 -0
  930. package/src/lib/plugin-manager/realm-server.js.map +1 -0
  931. package/src/lib/plugin-manager/record-zone-props.d.ts +126 -0
  932. package/src/lib/plugin-manager/record-zone-props.js +31 -0
  933. package/src/lib/plugin-manager/record-zone-props.js.map +1 -0
  934. package/src/lib/plugin-manager/site-page-hooks.d.ts +102 -0
  935. package/src/lib/plugin-manager/site-page-hooks.js +114 -0
  936. package/src/lib/plugin-manager/site-page-hooks.js.map +1 -0
  937. package/src/lib/plugin-manager/site-runtime.d.ts +57 -0
  938. package/src/lib/plugin-manager/site-runtime.js +25 -0
  939. package/src/lib/plugin-manager/site-runtime.js.map +1 -0
  940. package/src/lib/plugin-manager/usage-alert-contributors.d.ts +115 -0
  941. package/src/lib/plugin-manager/usage-alert-contributors.js +106 -0
  942. package/src/lib/plugin-manager/usage-alert-contributors.js.map +1 -0
  943. package/src/lib/types/ast.d.ts +199 -0
  944. package/src/lib/types/ast.js +20 -0
  945. package/src/lib/types/ast.js.map +1 -0
  946. package/src/lib/types/index.d.ts +20 -0
  947. package/src/lib/types/index.js +21 -0
  948. package/src/lib/types/index.js.map +1 -0
  949. package/src/lib/types/nodes.d.ts +608 -0
  950. package/src/lib/types/nodes.js +28 -0
  951. package/src/lib/types/nodes.js.map +1 -0
  952. package/src/lib/types/routing.d.ts +17 -0
  953. package/src/lib/types/routing.js +18 -0
  954. package/src/lib/types/routing.js.map +1 -0
  955. package/src/lib/types/screen.d.ts +23 -0
  956. package/src/lib/types/screen.js +18 -0
  957. package/src/lib/types/screen.js.map +1 -0
  958. package/src/lib/utils.d.ts +25 -0
  959. package/src/lib/utils.js +42 -0
  960. package/src/lib/utils.js.map +1 -0
  961. package/src/server.d.ts +37 -0
  962. package/src/server.js +55 -0
  963. package/src/server.js.map +1 -0
@@ -0,0 +1,142 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /** A single consent-mode signal value. */
18
+ export type PlatformConsentSignal = 'granted' | 'denied';
19
+ /**
20
+ * Switzerland, and why it is here but NOT in the tenant's set.
21
+ *
22
+ * Aglyn's own consent brief treats the EEA, the UK **and Switzerland** as
23
+ * prior opt-in, and none of those regions may be defaulted on. The tenant's
24
+ * {@link PRIOR_CONSENT_COUNTRY_CODES} does not include `CH` — defensibly, the
25
+ * revised FADP has no ePrivacy-style prior-consent rule and regulates on a
26
+ * transparency/opt-out basis — so the two sets genuinely disagree.
27
+ *
28
+ * That disagreement is resolved in the only direction that is safe to resolve
29
+ * unilaterally: Aglyn's OWN surfaces take the stricter reading, and the tenant
30
+ * set is left exactly as it is. Widening
31
+ * `PRIOR_CONSENT_COUNTRY_CODES` would flip Swiss visitors on every CUSTOMER
32
+ * site from tracked to banner-gated — a change to customers' compliance
33
+ * posture, made on their behalf, which is the specific thing this work is
34
+ * scoped out of.
35
+ */
36
+ export declare const PLATFORM_EXTRA_PRIOR_CONSENT_CODES: readonly string[];
37
+ /**
38
+ * The regions whose analytics default is DENIED on Aglyn's own surfaces.
39
+ *
40
+ * DERIVED from the tenant's canonical prior-consent set rather than retyped
41
+ * beside it. Two hand-maintained country lists is how one of them ends up a
42
+ * year behind the other, and the failure is silent in both directions: a
43
+ * missing code tracks a European visitor by default, a stale extra one just
44
+ * loses data. Deriving means an EU membership change is edited once.
45
+ *
46
+ * Sorted so the emitted snippet is byte-stable across builds — the docs
47
+ * site's copy of it is checked character-for-character.
48
+ */
49
+ export declare const PLATFORM_PRIOR_CONSENT_REGIONS: readonly string[];
50
+ /**
51
+ * The four signals a consent-mode declaration carries.
52
+ *
53
+ * All four are the full signal type. Pinning the three advertising ones to the
54
+ * literal `'denied'` made the type a second, silent policy — a declaration that
55
+ * granted advertising anywhere would not compile, so the surface could never
56
+ * take an ad tag without someone first noticing the type was the thing
57
+ * refusing. The policy belongs in the values below, where it can be read.
58
+ */
59
+ export interface PlatformConsentSignals {
60
+ analytics_storage: PlatformConsentSignal;
61
+ ad_storage: PlatformConsentSignal;
62
+ ad_user_data: PlatformConsentSignal;
63
+ ad_personalization: PlatformConsentSignal;
64
+ }
65
+ /**
66
+ * One `gtag('consent', 'default', …)` payload. `region` absent means the
67
+ * declaration applies wherever no region-scoped one matches.
68
+ */
69
+ export interface PlatformConsentDefaultCommand extends PlatformConsentSignals {
70
+ region?: readonly string[];
71
+ }
72
+ /**
73
+ * The declaration, in emission order.
74
+ *
75
+ * The global default comes first and grants analytics — the implied-consent
76
+ * posture, lawful in the US and most of the world. The region-scoped
77
+ * declaration follows and denies it for the prior-consent regions. Both are
78
+ * `default` (never `update`): a default is read before the tag's first hit,
79
+ * whereas an update arrives after `config` and would leave the session's
80
+ * first pageview — often the whole session — in the wrong state.
81
+ */
82
+ export declare const PLATFORM_CONSENT_DEFAULT_COMMANDS: readonly PlatformConsentDefaultCommand[];
83
+ /**
84
+ * What the declaration above actually MEANS for a visitor in `country`.
85
+ *
86
+ * This exists so the defaults can be tested against the thing that ships
87
+ * rather than against a second copy of the same opinion. It reads
88
+ * {@link PLATFORM_CONSENT_DEFAULT_COMMANDS} and applies Google's documented
89
+ * resolution rule — the most specific matching `region` wins, and a
90
+ * declaration with no `region` is the fallback — so a test that asserts
91
+ * "DE is denied" fails the moment `DE` stops being in the emitted payload.
92
+ *
93
+ * `null`/unknown resolves to the GLOBAL default, which is `granted`. That is
94
+ * the declaration modelled honestly, not a wish: region matching is done by
95
+ * Google from the request IP, not by us, so "we do not know the country" is
96
+ * not a state this mechanism can act on. It is also the one place this module
97
+ * is weaker than the tenant gate, which resolves unknown-region to opt-in —
98
+ * another reason the tenant gate is the better mechanism where it can run.
99
+ */
100
+ export declare function resolvePlatformConsentDefault(country: string | null | undefined): PlatformConsentSignals;
101
+ /**
102
+ * The declaration as an inline-script snippet.
103
+ *
104
+ * Built by serializing {@link PLATFORM_CONSENT_DEFAULT_COMMANDS} — no caller
105
+ * input reaches it and every value is a literal fixed at module load, which
106
+ * matters because it lands inside an inline `<script>` (the AGL-138 concern).
107
+ *
108
+ * Assumes the canonical `function gtag(){dataLayer.push(arguments);}` shim is
109
+ * already defined ABOVE it. gtag.js processes `arguments` objects, not plain
110
+ * arrays, so a `dataLayer.push([...])` here would be the classic silent
111
+ * no-op: no error, no consent declaration, and nothing in any GA report to
112
+ * show for it.
113
+ *
114
+ * `apps/docs` cannot import from `libs/` (AGL-1595), so the docs site carries
115
+ * a VERBATIM COPY of this string and
116
+ * `apps/console/specs/docs-platform-consent-snippet.spec.ts` fails if the two
117
+ * ever drift — the same treatment `INTERNAL_TRAFFIC_GTAG_SNIPPET` gets, and
118
+ * for the same reason: a stale copy still runs without error and still reads
119
+ * like a working declaration.
120
+ */
121
+ export declare const PLATFORM_CONSENT_DEFAULT_SNIPPET: string;
122
+ /** The `dataLayer`-bearing window this module writes to. */
123
+ export interface ConsentDataLayerWindow {
124
+ dataLayer?: unknown[];
125
+ }
126
+ /**
127
+ * Declare the defaults on a window, for surfaces that boot their tag from JS
128
+ * rather than from an inline script — i.e. the console, whose gtag is
129
+ * injected by the Firebase Analytics SDK.
130
+ *
131
+ * MUST be called before the SDK initializes, because a `default` read after
132
+ * the tag's `config` is not a default at all. The queue is what makes that
133
+ * orderable: pushing here lands the declaration in `dataLayer` ahead of
134
+ * everything gtag.js later processes, even though gtag.js is not loaded yet.
135
+ *
136
+ * Pushes a real `arguments` object, never an array literal — see the snippet
137
+ * note above for what the array form silently does.
138
+ *
139
+ * Idempotent per window: a second call is a no-op, so a remount or a
140
+ * re-entrant services boot cannot stack duplicate declarations.
141
+ */
142
+ export declare function pushPlatformConsentDefault(win: ConsentDataLayerWindow | null | undefined): boolean;
@@ -0,0 +1,295 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ /**
17
+ * The Consent Mode v2 `default` declaration for AGLYN'S OWN surfaces — the
18
+ * console (`app.aglyn.com`) and the docs site (`docs.aglyn.com`) (AGL-1597).
19
+ *
20
+ * the decision, 2026-08-20: analytics is ENABLED BY DEFAULT with implied
21
+ * consent **where that is lawful**, and denied by default where prior consent
22
+ * is required. This module is the "where applicable" half, expressed in the
23
+ * one mechanism that can carry it on a surface with no consent gate: a
24
+ * region-scoped `gtag('consent', 'default', …)`.
25
+ *
26
+ * ## Which surfaces this is for, and — load-bearing — which it is NOT
27
+ *
28
+ * Aglyn runs GA4 `G-YW5PG16YTM` on three of its own domains, and they did not
29
+ * arrive at the same posture:
30
+ *
31
+ * - **`aglyn.com`** — served by the TENANT runtime, so it already runs the
32
+ * full AGL-1498 gate: a Firestore `consent.mode`, `/api/consent/region`, a
33
+ * per-visitor record in localStorage, and a tag that never LOADS for a
34
+ * visitor who has not granted. It is already default-on outside the
35
+ * prior-consent regions. **This module does not touch it and must not.**
36
+ *
37
+ * ⚠️ Its AD signals DIVERGE from this module's, and that is expected rather
38
+ * than a defect — the two domains answer to different rules and always have.
39
+ * The history is worth carrying because the divergence has flipped twice:
40
+ * AGL-2402 (2026-08-21) let the implied default carry advertising, the
41
+ * marketing host had opted into asking, and a US visitor was measured on
42
+ * 2026-08-23 with the record
43
+ * `{"status":"implied","analytics":true,"advertising":true,"country":"US"}`
44
+ * and a collect hit carrying `gcs=G111` — ad storage GRANTED. That was
45
+ * narrowed back on 2026-08-24 and widened again on 2026-08-25 once the
46
+ * Cookie Policy master was rewritten to match the Privacy Policy's opt-out
47
+ * description, so the 2026-08-23 measurement is once more the shape the
48
+ * current rule produces.
49
+ *
50
+ * This module now takes the SAME advertising posture for `app.aglyn.com`,
51
+ * which stopped being the asymmetry it once was once the console grew the
52
+ * surfaces an implied grant rests on: a per-visitor record, an account-menu
53
+ * control, and the CCPA §7015 pill on the unauthenticated pages. An implied
54
+ * grant needs a visitor who COULD have said no, and there they can.
55
+ *
56
+ * `docs.aglyn.com` still cannot ask anybody anything, which is exactly why
57
+ * its non-Google advertising tags do not run on this declaration at all —
58
+ * they run on the console's record, mirrored across the registrable domain.
59
+ * This declaration reaches the tags that read Consent Mode, and nothing
60
+ * else does read it.
61
+ *
62
+ * ⛔ Re-measure `aglyn.com` before relying on any comparison here; the
63
+ * numbers above are a record of what was seen, not a claim about today.
64
+ * - **`app.aglyn.com` and `docs.aglyn.com`** — GA loads unconditionally on
65
+ * both (no gate can run here), and BEFORE this module they carried no
66
+ * consent declaration of any kind. That was not "default on where lawful";
67
+ * it was default on EVERYWHERE, prior-consent regions included, which is the
68
+ * gap AGL-1597 was filed for. These two are what this module is wired into.
69
+ *
70
+ * On the docs side, being wired in was not enough on its own: the
71
+ * declaration was emitted but landed AFTER the gtag preset's `config`, which
72
+ * makes it a no-op. See the `ssrTemplate` note in
73
+ * `apps/docs/docusaurus.config.ts` — position matters as much as presence.
74
+ * - **Customer/tenant sites** — NOT in scope by a wide margin. Aglyn ships
75
+ * the consent gate to customers as a product (AGL-1498) and the host
76
+ * chooses the posture. Changing their default would configure a customer's
77
+ * compliance posture for them, for visitors who may well be European. The
78
+ * separation here is structural rather than a matter of care: this module
79
+ * is imported only by the console's Firebase Analytics boot and copied into
80
+ * the docs site's `ssrTemplate` bootstrap. Nothing in the tenant runtime
81
+ * reads it, and
82
+ * `visitor-consent.ts` — the tenant's decision module — is unchanged.
83
+ *
84
+ * ## Why a region-scoped `default` here, and not the tenant's gate
85
+ *
86
+ * The tenant gate is strictly stronger: the tag never loads at all for a
87
+ * gated visitor. It is also unavailable here. It needs a host document, a
88
+ * per-host storage key and a region endpoint, none of which exist on a static
89
+ * Docusaurus build or on the console's Firebase-owned tag — and porting it
90
+ * would be a third implementation of consent, the outcome AGL-1579 explicitly
91
+ * ruled out. So this is the weaker mechanism applied where the stronger one
92
+ * cannot reach, and it is strictly better than what it replaces (nothing).
93
+ *
94
+ * It is NOT equivalent, and the difference should be stated rather than
95
+ * glossed: under a denied `analytics_storage` the tag still LOADS and still
96
+ * sends cookieless pings. That is a real residual question for the EEA/UK,
97
+ * and it is flagged on AGL-1597 rather than papered over here.
98
+ *
99
+ * ## The ad signals
100
+ *
101
+ * `ad_storage`, `ad_user_data` and `ad_personalization` are GRANTED in the
102
+ * global default and DENIED in the region-scoped one, which is the same split
103
+ * `analytics_storage` takes and for the same reason: outside the prior-consent
104
+ * regions the posture is implied consent, and Aglyn advertises, remarkets and
105
+ * retargets across all of its own surfaces. A visitor in the EEA, the UK or
106
+ * Switzerland gets all four denied until they accept.
107
+ *
108
+ * All three signals matter separately and Google treats them separately. A
109
+ * declaration granting `ad_storage` alone leaves remarketing collecting
110
+ * nothing while the tag looks perfectly healthy in GA4 — hits are sent, the
111
+ * property fills up, and the audience stays empty. Read
112
+ * {@link PLATFORM_CONSENT_DEFAULT_COMMANDS} rather than this paragraph if the
113
+ * two ever disagree; the commands are what ships.
114
+ *
115
+ * The console does have a place to record an answer — a per-visitor record,
116
+ * an account-menu control and the CCPA §7015 pill on its unauthenticated
117
+ * pages — and {@link platformAsksAboutAdvertising} derives the question from
118
+ * these very commands, so the control and the declaration cannot drift apart.
119
+ * The docs site has neither, which is why the tags it mounts are gated on the
120
+ * console's record rather than on this declaration; see
121
+ * `apps/docs/src/advertising-tags.ts`.
122
+ *
123
+ * Before this module these surfaces declared nothing at all, which left a
124
+ * freshly loaded tag with ad storage UNRESTRICTED in every region — so the
125
+ * region-scoped denial below was a tightening, not a preference.
126
+ */ import { PRIOR_CONSENT_COUNTRY_CODES } from "./visitor-consent.js";
127
+ /**
128
+ * Switzerland, and why it is here but NOT in the tenant's set.
129
+ *
130
+ * Aglyn's own consent brief treats the EEA, the UK **and Switzerland** as
131
+ * prior opt-in, and none of those regions may be defaulted on. The tenant's
132
+ * {@link PRIOR_CONSENT_COUNTRY_CODES} does not include `CH` — defensibly, the
133
+ * revised FADP has no ePrivacy-style prior-consent rule and regulates on a
134
+ * transparency/opt-out basis — so the two sets genuinely disagree.
135
+ *
136
+ * That disagreement is resolved in the only direction that is safe to resolve
137
+ * unilaterally: Aglyn's OWN surfaces take the stricter reading, and the tenant
138
+ * set is left exactly as it is. Widening
139
+ * `PRIOR_CONSENT_COUNTRY_CODES` would flip Swiss visitors on every CUSTOMER
140
+ * site from tracked to banner-gated — a change to customers' compliance
141
+ * posture, made on their behalf, which is the specific thing this work is
142
+ * scoped out of.
143
+ */ export const PLATFORM_EXTRA_PRIOR_CONSENT_CODES = [
144
+ 'CH'
145
+ ];
146
+ /**
147
+ * The regions whose analytics default is DENIED on Aglyn's own surfaces.
148
+ *
149
+ * DERIVED from the tenant's canonical prior-consent set rather than retyped
150
+ * beside it. Two hand-maintained country lists is how one of them ends up a
151
+ * year behind the other, and the failure is silent in both directions: a
152
+ * missing code tracks a European visitor by default, a stale extra one just
153
+ * loses data. Deriving means an EU membership change is edited once.
154
+ *
155
+ * Sorted so the emitted snippet is byte-stable across builds — the docs
156
+ * site's copy of it is checked character-for-character.
157
+ */ export const PLATFORM_PRIOR_CONSENT_REGIONS = [
158
+ ...new Set([
159
+ ...PRIOR_CONSENT_COUNTRY_CODES,
160
+ ...PLATFORM_EXTRA_PRIOR_CONSENT_CODES
161
+ ])
162
+ ].sort();
163
+ /**
164
+ * The declaration, in emission order.
165
+ *
166
+ * The global default comes first and grants analytics — the implied-consent
167
+ * posture, lawful in the US and most of the world. The region-scoped
168
+ * declaration follows and denies it for the prior-consent regions. Both are
169
+ * `default` (never `update`): a default is read before the tag's first hit,
170
+ * whereas an update arrives after `config` and would leave the session's
171
+ * first pageview — often the whole session — in the wrong state.
172
+ */ export const PLATFORM_CONSENT_DEFAULT_COMMANDS = [
173
+ {
174
+ analytics_storage: 'granted',
175
+ /*
176
+ * Advertising is granted here for the same reason analytics is: outside
177
+ * the prior-consent regions the posture is implied consent, and Aglyn
178
+ * advertises, remarkets and retargets across all of its own surfaces —
179
+ * the marketing site, this console and the docs. The Privacy Policy names
180
+ * the console among them.
181
+ *
182
+ * The region-scoped declaration below still denies all four for the
183
+ * UK/EU/EEA/CH set, and a visitor there gets nothing until they accept.
184
+ */ ad_storage: 'granted',
185
+ ad_user_data: 'granted',
186
+ ad_personalization: 'granted'
187
+ },
188
+ {
189
+ analytics_storage: 'denied',
190
+ ad_storage: 'denied',
191
+ ad_user_data: 'denied',
192
+ ad_personalization: 'denied',
193
+ region: PLATFORM_PRIOR_CONSENT_REGIONS
194
+ }
195
+ ];
196
+ /**
197
+ * What the declaration above actually MEANS for a visitor in `country`.
198
+ *
199
+ * This exists so the defaults can be tested against the thing that ships
200
+ * rather than against a second copy of the same opinion. It reads
201
+ * {@link PLATFORM_CONSENT_DEFAULT_COMMANDS} and applies Google's documented
202
+ * resolution rule — the most specific matching `region` wins, and a
203
+ * declaration with no `region` is the fallback — so a test that asserts
204
+ * "DE is denied" fails the moment `DE` stops being in the emitted payload.
205
+ *
206
+ * `null`/unknown resolves to the GLOBAL default, which is `granted`. That is
207
+ * the declaration modelled honestly, not a wish: region matching is done by
208
+ * Google from the request IP, not by us, so "we do not know the country" is
209
+ * not a state this mechanism can act on. It is also the one place this module
210
+ * is weaker than the tenant gate, which resolves unknown-region to opt-in —
211
+ * another reason the tenant gate is the better mechanism where it can run.
212
+ */ export function resolvePlatformConsentDefault(country) {
213
+ const code = typeof country === 'string' ? country.trim().toUpperCase() : '';
214
+ let fallback = null;
215
+ let matched = null;
216
+ for (const command of PLATFORM_CONSENT_DEFAULT_COMMANDS){
217
+ if (command.region === undefined) {
218
+ fallback = command;
219
+ continue;
220
+ }
221
+ // `strictNullChecks` is off repo-wide, so `!code` would also swallow a
222
+ // genuine miss; compare explicitly.
223
+ if (code !== '' && command.region.indexOf(code) >= 0) matched = command;
224
+ }
225
+ const winner = matched === null ? fallback : matched;
226
+ /*
227
+ * Every signal is READ off the winning command. Restating the advertising
228
+ * three as literals here made this resolver a second declaration that could
229
+ * disagree with the one that ships — and it did: the emitted global default
230
+ * granted them while this said denied, so a test asserting the resolver
231
+ * proved nothing about the snippet in the page.
232
+ */ return {
233
+ analytics_storage: winner.analytics_storage,
234
+ ad_storage: winner.ad_storage,
235
+ ad_user_data: winner.ad_user_data,
236
+ ad_personalization: winner.ad_personalization
237
+ };
238
+ }
239
+ /**
240
+ * The declaration as an inline-script snippet.
241
+ *
242
+ * Built by serializing {@link PLATFORM_CONSENT_DEFAULT_COMMANDS} — no caller
243
+ * input reaches it and every value is a literal fixed at module load, which
244
+ * matters because it lands inside an inline `<script>` (the AGL-138 concern).
245
+ *
246
+ * Assumes the canonical `function gtag(){dataLayer.push(arguments);}` shim is
247
+ * already defined ABOVE it. gtag.js processes `arguments` objects, not plain
248
+ * arrays, so a `dataLayer.push([...])` here would be the classic silent
249
+ * no-op: no error, no consent declaration, and nothing in any GA report to
250
+ * show for it.
251
+ *
252
+ * `apps/docs` cannot import from `libs/` (AGL-1595), so the docs site carries
253
+ * a VERBATIM COPY of this string and
254
+ * `apps/console/specs/docs-platform-consent-snippet.spec.ts` fails if the two
255
+ * ever drift — the same treatment `INTERNAL_TRAFFIC_GTAG_SNIPPET` gets, and
256
+ * for the same reason: a stale copy still runs without error and still reads
257
+ * like a working declaration.
258
+ */ export const PLATFORM_CONSENT_DEFAULT_SNIPPET = PLATFORM_CONSENT_DEFAULT_COMMANDS.map((command)=>`gtag('consent','default',${JSON.stringify(command)});`).join('');
259
+ /**
260
+ * Declare the defaults on a window, for surfaces that boot their tag from JS
261
+ * rather than from an inline script — i.e. the console, whose gtag is
262
+ * injected by the Firebase Analytics SDK.
263
+ *
264
+ * MUST be called before the SDK initializes, because a `default` read after
265
+ * the tag's `config` is not a default at all. The queue is what makes that
266
+ * orderable: pushing here lands the declaration in `dataLayer` ahead of
267
+ * everything gtag.js later processes, even though gtag.js is not loaded yet.
268
+ *
269
+ * Pushes a real `arguments` object, never an array literal — see the snippet
270
+ * note above for what the array form silently does.
271
+ *
272
+ * Idempotent per window: a second call is a no-op, so a remount or a
273
+ * re-entrant services boot cannot stack duplicate declarations.
274
+ */ export function pushPlatformConsentDefault(win) {
275
+ if (!win) return false;
276
+ const marked = win;
277
+ if (marked.__aglynConsentDefaultPushed === true) return false;
278
+ const layer = win.dataLayer === undefined ? [] : win.dataLayer;
279
+ win.dataLayer = layer;
280
+ // Declared without parameters ON PURPOSE: the body forwards the live
281
+ // `arguments` object, and a rest parameter would hand gtag.js a plain
282
+ // array instead.
283
+ function gtag() {
284
+ // eslint-disable-next-line prefer-rest-params
285
+ layer.push(arguments);
286
+ }
287
+ const queue = gtag;
288
+ for (const command of PLATFORM_CONSENT_DEFAULT_COMMANDS){
289
+ queue('consent', 'default', command);
290
+ }
291
+ marked.__aglynConsentDefaultPushed = true;
292
+ return true;
293
+ }
294
+
295
+ //# sourceMappingURL=platform-consent-default.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/platform-consent-default.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The Consent Mode v2 `default` declaration for AGLYN'S OWN surfaces — the\n * console (`app.aglyn.com`) and the docs site (`docs.aglyn.com`) (AGL-1597).\n *\n * the decision, 2026-08-20: analytics is ENABLED BY DEFAULT with implied\n * consent **where that is lawful**, and denied by default where prior consent\n * is required. This module is the \"where applicable\" half, expressed in the\n * one mechanism that can carry it on a surface with no consent gate: a\n * region-scoped `gtag('consent', 'default', …)`.\n *\n * ## Which surfaces this is for, and — load-bearing — which it is NOT\n *\n * Aglyn runs GA4 `G-YW5PG16YTM` on three of its own domains, and they did not\n * arrive at the same posture:\n *\n * - **`aglyn.com`** — served by the TENANT runtime, so it already runs the\n * full AGL-1498 gate: a Firestore `consent.mode`, `/api/consent/region`, a\n * per-visitor record in localStorage, and a tag that never LOADS for a\n * visitor who has not granted. It is already default-on outside the\n * prior-consent regions. **This module does not touch it and must not.**\n *\n * ⚠️ Its AD signals DIVERGE from this module's, and that is expected rather\n * than a defect — the two domains answer to different rules and always have.\n * The history is worth carrying because the divergence has flipped twice:\n * AGL-2402 (2026-08-21) let the implied default carry advertising, the\n * marketing host had opted into asking, and a US visitor was measured on\n * 2026-08-23 with the record\n * `{\"status\":\"implied\",\"analytics\":true,\"advertising\":true,\"country\":\"US\"}`\n * and a collect hit carrying `gcs=G111` — ad storage GRANTED. That was\n * narrowed back on 2026-08-24 and widened again on 2026-08-25 once the\n * Cookie Policy master was rewritten to match the Privacy Policy's opt-out\n * description, so the 2026-08-23 measurement is once more the shape the\n * current rule produces.\n *\n * This module now takes the SAME advertising posture for `app.aglyn.com`,\n * which stopped being the asymmetry it once was once the console grew the\n * surfaces an implied grant rests on: a per-visitor record, an account-menu\n * control, and the CCPA §7015 pill on the unauthenticated pages. An implied\n * grant needs a visitor who COULD have said no, and there they can.\n *\n * `docs.aglyn.com` still cannot ask anybody anything, which is exactly why\n * its non-Google advertising tags do not run on this declaration at all —\n * they run on the console's record, mirrored across the registrable domain.\n * This declaration reaches the tags that read Consent Mode, and nothing\n * else does read it.\n *\n * ⛔ Re-measure `aglyn.com` before relying on any comparison here; the\n * numbers above are a record of what was seen, not a claim about today.\n * - **`app.aglyn.com` and `docs.aglyn.com`** — GA loads unconditionally on\n * both (no gate can run here), and BEFORE this module they carried no\n * consent declaration of any kind. That was not \"default on where lawful\";\n * it was default on EVERYWHERE, prior-consent regions included, which is the\n * gap AGL-1597 was filed for. These two are what this module is wired into.\n *\n * On the docs side, being wired in was not enough on its own: the\n * declaration was emitted but landed AFTER the gtag preset's `config`, which\n * makes it a no-op. See the `ssrTemplate` note in\n * `apps/docs/docusaurus.config.ts` — position matters as much as presence.\n * - **Customer/tenant sites** — NOT in scope by a wide margin. Aglyn ships\n * the consent gate to customers as a product (AGL-1498) and the host\n * chooses the posture. Changing their default would configure a customer's\n * compliance posture for them, for visitors who may well be European. The\n * separation here is structural rather than a matter of care: this module\n * is imported only by the console's Firebase Analytics boot and copied into\n * the docs site's `ssrTemplate` bootstrap. Nothing in the tenant runtime\n * reads it, and\n * `visitor-consent.ts` — the tenant's decision module — is unchanged.\n *\n * ## Why a region-scoped `default` here, and not the tenant's gate\n *\n * The tenant gate is strictly stronger: the tag never loads at all for a\n * gated visitor. It is also unavailable here. It needs a host document, a\n * per-host storage key and a region endpoint, none of which exist on a static\n * Docusaurus build or on the console's Firebase-owned tag — and porting it\n * would be a third implementation of consent, the outcome AGL-1579 explicitly\n * ruled out. So this is the weaker mechanism applied where the stronger one\n * cannot reach, and it is strictly better than what it replaces (nothing).\n *\n * It is NOT equivalent, and the difference should be stated rather than\n * glossed: under a denied `analytics_storage` the tag still LOADS and still\n * sends cookieless pings. That is a real residual question for the EEA/UK,\n * and it is flagged on AGL-1597 rather than papered over here.\n *\n * ## The ad signals\n *\n * `ad_storage`, `ad_user_data` and `ad_personalization` are GRANTED in the\n * global default and DENIED in the region-scoped one, which is the same split\n * `analytics_storage` takes and for the same reason: outside the prior-consent\n * regions the posture is implied consent, and Aglyn advertises, remarkets and\n * retargets across all of its own surfaces. A visitor in the EEA, the UK or\n * Switzerland gets all four denied until they accept.\n *\n * All three signals matter separately and Google treats them separately. A\n * declaration granting `ad_storage` alone leaves remarketing collecting\n * nothing while the tag looks perfectly healthy in GA4 — hits are sent, the\n * property fills up, and the audience stays empty. Read\n * {@link PLATFORM_CONSENT_DEFAULT_COMMANDS} rather than this paragraph if the\n * two ever disagree; the commands are what ships.\n *\n * The console does have a place to record an answer — a per-visitor record,\n * an account-menu control and the CCPA §7015 pill on its unauthenticated\n * pages — and {@link platformAsksAboutAdvertising} derives the question from\n * these very commands, so the control and the declaration cannot drift apart.\n * The docs site has neither, which is why the tags it mounts are gated on the\n * console's record rather than on this declaration; see\n * `apps/docs/src/advertising-tags.ts`.\n *\n * Before this module these surfaces declared nothing at all, which left a\n * freshly loaded tag with ad storage UNRESTRICTED in every region — so the\n * region-scoped denial below was a tightening, not a preference.\n */\n\nimport { PRIOR_CONSENT_COUNTRY_CODES } from './visitor-consent'\n\n/** A single consent-mode signal value. */\nexport type PlatformConsentSignal = 'granted' | 'denied'\n\n/**\n * Switzerland, and why it is here but NOT in the tenant's set.\n *\n * Aglyn's own consent brief treats the EEA, the UK **and Switzerland** as\n * prior opt-in, and none of those regions may be defaulted on. The tenant's\n * {@link PRIOR_CONSENT_COUNTRY_CODES} does not include `CH` — defensibly, the\n * revised FADP has no ePrivacy-style prior-consent rule and regulates on a\n * transparency/opt-out basis — so the two sets genuinely disagree.\n *\n * That disagreement is resolved in the only direction that is safe to resolve\n * unilaterally: Aglyn's OWN surfaces take the stricter reading, and the tenant\n * set is left exactly as it is. Widening\n * `PRIOR_CONSENT_COUNTRY_CODES` would flip Swiss visitors on every CUSTOMER\n * site from tracked to banner-gated — a change to customers' compliance\n * posture, made on their behalf, which is the specific thing this work is\n * scoped out of.\n */\nexport const PLATFORM_EXTRA_PRIOR_CONSENT_CODES: readonly string[] = ['CH']\n\n/**\n * The regions whose analytics default is DENIED on Aglyn's own surfaces.\n *\n * DERIVED from the tenant's canonical prior-consent set rather than retyped\n * beside it. Two hand-maintained country lists is how one of them ends up a\n * year behind the other, and the failure is silent in both directions: a\n * missing code tracks a European visitor by default, a stale extra one just\n * loses data. Deriving means an EU membership change is edited once.\n *\n * Sorted so the emitted snippet is byte-stable across builds — the docs\n * site's copy of it is checked character-for-character.\n */\nexport const PLATFORM_PRIOR_CONSENT_REGIONS: readonly string[] = [\n ...new Set([\n ...PRIOR_CONSENT_COUNTRY_CODES,\n ...PLATFORM_EXTRA_PRIOR_CONSENT_CODES,\n ]),\n].sort()\n\n/**\n * The four signals a consent-mode declaration carries.\n *\n * All four are the full signal type. Pinning the three advertising ones to the\n * literal `'denied'` made the type a second, silent policy — a declaration that\n * granted advertising anywhere would not compile, so the surface could never\n * take an ad tag without someone first noticing the type was the thing\n * refusing. The policy belongs in the values below, where it can be read.\n */\nexport interface PlatformConsentSignals {\n analytics_storage: PlatformConsentSignal\n ad_storage: PlatformConsentSignal\n ad_user_data: PlatformConsentSignal\n ad_personalization: PlatformConsentSignal\n}\n\n/**\n * One `gtag('consent', 'default', …)` payload. `region` absent means the\n * declaration applies wherever no region-scoped one matches.\n */\nexport interface PlatformConsentDefaultCommand extends PlatformConsentSignals {\n region?: readonly string[]\n}\n\n/**\n * The declaration, in emission order.\n *\n * The global default comes first and grants analytics — the implied-consent\n * posture, lawful in the US and most of the world. The region-scoped\n * declaration follows and denies it for the prior-consent regions. Both are\n * `default` (never `update`): a default is read before the tag's first hit,\n * whereas an update arrives after `config` and would leave the session's\n * first pageview — often the whole session — in the wrong state.\n */\nexport const PLATFORM_CONSENT_DEFAULT_COMMANDS: readonly PlatformConsentDefaultCommand[] =\n [\n {\n analytics_storage: 'granted',\n /*\n * Advertising is granted here for the same reason analytics is: outside\n * the prior-consent regions the posture is implied consent, and Aglyn\n * advertises, remarkets and retargets across all of its own surfaces —\n * the marketing site, this console and the docs. The Privacy Policy names\n * the console among them.\n *\n * The region-scoped declaration below still denies all four for the\n * UK/EU/EEA/CH set, and a visitor there gets nothing until they accept.\n */\n ad_storage: 'granted',\n ad_user_data: 'granted',\n ad_personalization: 'granted',\n },\n {\n analytics_storage: 'denied',\n ad_storage: 'denied',\n ad_user_data: 'denied',\n ad_personalization: 'denied',\n region: PLATFORM_PRIOR_CONSENT_REGIONS,\n },\n ]\n\n/**\n * What the declaration above actually MEANS for a visitor in `country`.\n *\n * This exists so the defaults can be tested against the thing that ships\n * rather than against a second copy of the same opinion. It reads\n * {@link PLATFORM_CONSENT_DEFAULT_COMMANDS} and applies Google's documented\n * resolution rule — the most specific matching `region` wins, and a\n * declaration with no `region` is the fallback — so a test that asserts\n * \"DE is denied\" fails the moment `DE` stops being in the emitted payload.\n *\n * `null`/unknown resolves to the GLOBAL default, which is `granted`. That is\n * the declaration modelled honestly, not a wish: region matching is done by\n * Google from the request IP, not by us, so \"we do not know the country\" is\n * not a state this mechanism can act on. It is also the one place this module\n * is weaker than the tenant gate, which resolves unknown-region to opt-in —\n * another reason the tenant gate is the better mechanism where it can run.\n */\nexport function resolvePlatformConsentDefault(\n country: string | null | undefined,\n): PlatformConsentSignals {\n const code = typeof country === 'string' ? country.trim().toUpperCase() : ''\n let fallback: PlatformConsentDefaultCommand | null = null\n let matched: PlatformConsentDefaultCommand | null = null\n for (const command of PLATFORM_CONSENT_DEFAULT_COMMANDS) {\n if (command.region === undefined) {\n fallback = command\n continue\n }\n // `strictNullChecks` is off repo-wide, so `!code` would also swallow a\n // genuine miss; compare explicitly.\n if (code !== '' && command.region.indexOf(code) >= 0) matched = command\n }\n const winner = matched === null ? fallback : matched\n /*\n * Every signal is READ off the winning command. Restating the advertising\n * three as literals here made this resolver a second declaration that could\n * disagree with the one that ships — and it did: the emitted global default\n * granted them while this said denied, so a test asserting the resolver\n * proved nothing about the snippet in the page.\n */\n return {\n analytics_storage: winner.analytics_storage,\n ad_storage: winner.ad_storage,\n ad_user_data: winner.ad_user_data,\n ad_personalization: winner.ad_personalization,\n }\n}\n\n/**\n * The declaration as an inline-script snippet.\n *\n * Built by serializing {@link PLATFORM_CONSENT_DEFAULT_COMMANDS} — no caller\n * input reaches it and every value is a literal fixed at module load, which\n * matters because it lands inside an inline `<script>` (the AGL-138 concern).\n *\n * Assumes the canonical `function gtag(){dataLayer.push(arguments);}` shim is\n * already defined ABOVE it. gtag.js processes `arguments` objects, not plain\n * arrays, so a `dataLayer.push([...])` here would be the classic silent\n * no-op: no error, no consent declaration, and nothing in any GA report to\n * show for it.\n *\n * `apps/docs` cannot import from `libs/` (AGL-1595), so the docs site carries\n * a VERBATIM COPY of this string and\n * `apps/console/specs/docs-platform-consent-snippet.spec.ts` fails if the two\n * ever drift — the same treatment `INTERNAL_TRAFFIC_GTAG_SNIPPET` gets, and\n * for the same reason: a stale copy still runs without error and still reads\n * like a working declaration.\n */\nexport const PLATFORM_CONSENT_DEFAULT_SNIPPET =\n PLATFORM_CONSENT_DEFAULT_COMMANDS.map(\n (command) => `gtag('consent','default',${JSON.stringify(command)});`,\n ).join('')\n\n/** The `dataLayer`-bearing window this module writes to. */\nexport interface ConsentDataLayerWindow {\n dataLayer?: unknown[]\n}\n\n/**\n * Declare the defaults on a window, for surfaces that boot their tag from JS\n * rather than from an inline script — i.e. the console, whose gtag is\n * injected by the Firebase Analytics SDK.\n *\n * MUST be called before the SDK initializes, because a `default` read after\n * the tag's `config` is not a default at all. The queue is what makes that\n * orderable: pushing here lands the declaration in `dataLayer` ahead of\n * everything gtag.js later processes, even though gtag.js is not loaded yet.\n *\n * Pushes a real `arguments` object, never an array literal — see the snippet\n * note above for what the array form silently does.\n *\n * Idempotent per window: a second call is a no-op, so a remount or a\n * re-entrant services boot cannot stack duplicate declarations.\n */\nexport function pushPlatformConsentDefault(\n win: ConsentDataLayerWindow | null | undefined,\n): boolean {\n if (!win) return false\n const marked = win as { __aglynConsentDefaultPushed?: boolean }\n if (marked.__aglynConsentDefaultPushed === true) return false\n const layer = win.dataLayer === undefined ? [] : win.dataLayer\n win.dataLayer = layer\n // Declared without parameters ON PURPOSE: the body forwards the live\n // `arguments` object, and a rest parameter would hand gtag.js a plain\n // array instead.\n function gtag(): void {\n // eslint-disable-next-line prefer-rest-params\n layer.push(arguments)\n }\n const queue = gtag as (...args: unknown[]) => void\n for (const command of PLATFORM_CONSENT_DEFAULT_COMMANDS) {\n queue('consent', 'default', command)\n }\n marked.__aglynConsentDefaultPushed = true\n return true\n}\n"],"names":["PRIOR_CONSENT_COUNTRY_CODES","PLATFORM_EXTRA_PRIOR_CONSENT_CODES","PLATFORM_PRIOR_CONSENT_REGIONS","Set","sort","PLATFORM_CONSENT_DEFAULT_COMMANDS","analytics_storage","ad_storage","ad_user_data","ad_personalization","region","resolvePlatformConsentDefault","country","code","trim","toUpperCase","fallback","matched","command","undefined","indexOf","winner","PLATFORM_CONSENT_DEFAULT_SNIPPET","map","JSON","stringify","join","pushPlatformConsentDefault","win","marked","__aglynConsentDefaultPushed","layer","dataLayer","gtag","push","arguments","queue"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8GC,GAED,SAASA,2BAA2B,QAAQ,uBAAmB;AAK/D;;;;;;;;;;;;;;;;CAgBC,GACD,OAAO,MAAMC,qCAAwD;IAAC;CAAK,CAAA;AAE3E;;;;;;;;;;;CAWC,GACD,OAAO,MAAMC,iCAAoD;OAC5D,IAAIC,IAAI;WACNH;WACAC;KACJ;CACF,CAACG,IAAI,GAAE;AA0BR;;;;;;;;;CASC,GACD,OAAO,MAAMC,oCACX;IACE;QACEC,mBAAmB;QACnB;;;;;;;;;OASC,GACDC,YAAY;QACZC,cAAc;QACdC,oBAAoB;IACtB;IACA;QACEH,mBAAmB;QACnBC,YAAY;QACZC,cAAc;QACdC,oBAAoB;QACpBC,QAAQR;IACV;CACD,CAAA;AAEH;;;;;;;;;;;;;;;;CAgBC,GACD,OAAO,SAASS,8BACdC,OAAkC;IAElC,MAAMC,OAAO,OAAOD,YAAY,WAAWA,QAAQE,IAAI,GAAGC,WAAW,KAAK;IAC1E,IAAIC,WAAiD;IACrD,IAAIC,UAAgD;IACpD,KAAK,MAAMC,WAAWb,kCAAmC;QACvD,IAAIa,QAAQR,MAAM,KAAKS,WAAW;YAChCH,WAAWE;YACX;QACF;QACA,uEAAuE;QACvE,oCAAoC;QACpC,IAAIL,SAAS,MAAMK,QAAQR,MAAM,CAACU,OAAO,CAACP,SAAS,GAAGI,UAAUC;IAClE;IACA,MAAMG,SAASJ,YAAY,OAAOD,WAAWC;IAC7C;;;;;;GAMC,GACD,OAAO;QACLX,mBAAmBe,OAAOf,iBAAiB;QAC3CC,YAAYc,OAAOd,UAAU;QAC7BC,cAAca,OAAOb,YAAY;QACjCC,oBAAoBY,OAAOZ,kBAAkB;IAC/C;AACF;AAEA;;;;;;;;;;;;;;;;;;;CAmBC,GACD,OAAO,MAAMa,mCACXjB,kCAAkCkB,GAAG,CACnC,CAACL,UAAY,CAAC,yBAAyB,EAAEM,KAAKC,SAAS,CAACP,SAAS,EAAE,CAAC,EACpEQ,IAAI,CAAC,IAAG;AAOZ;;;;;;;;;;;;;;;CAeC,GACD,OAAO,SAASC,2BACdC,GAA8C;IAE9C,IAAI,CAACA,KAAK,OAAO;IACjB,MAAMC,SAASD;IACf,IAAIC,OAAOC,2BAA2B,KAAK,MAAM,OAAO;IACxD,MAAMC,QAAQH,IAAII,SAAS,KAAKb,YAAY,EAAE,GAAGS,IAAII,SAAS;IAC9DJ,IAAII,SAAS,GAAGD;IAChB,qEAAqE;IACrE,sEAAsE;IACtE,iBAAiB;IACjB,SAASE;QACP,8CAA8C;QAC9CF,MAAMG,IAAI,CAACC;IACb;IACA,MAAMC,QAAQH;IACd,KAAK,MAAMf,WAAWb,kCAAmC;QACvD+B,MAAM,WAAW,WAAWlB;IAC9B;IACAW,OAAOC,2BAA2B,GAAG;IACrC,OAAO;AACT"}
@@ -0,0 +1,151 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * Marketing consent for the PLATFORM's own product email (AGL-3185).
19
+ *
20
+ * The strict policy (`marketing-consent.ts`) means a person with no declared
21
+ * basis is unsendable, and until this module the only doors that declared
22
+ * one were the marketing site's forms. Somebody who created a console account
23
+ * — the warmest audience the platform has — was never asked. Three console
24
+ * doors ask now: a checkbox on the sign-up form, a switch in the account
25
+ * preferences, and a one-time prompt for accounts that predate the checkbox.
26
+ *
27
+ * ## One wording, versioned
28
+ *
29
+ * Every door shows {@link PLATFORM_MARKETING_CONSENT_TEXT} and every record
30
+ * stores {@link PLATFORM_MARKETING_CONSENT_TEXT_VERSION} beside the exact
31
+ * timestamp, so "what did this person agree to" is answered by a version and
32
+ * not by whatever the checkbox says today. Changing the sentence is a bump of
33
+ * the version in the same edit.
34
+ *
35
+ * ## The record lives in two places, and the two do not disagree
36
+ *
37
+ * The decision is written by the server onto the person's own `users/{uid}`
38
+ * document, so the console can show a preference without reading the
39
+ * operator's CRM, and onto the operator's marketing contact for the same
40
+ * person, so the send path sees a declared basis with provenance. The
41
+ * contact half is written only when the deployment names a marketing host
42
+ * (`PLATFORM_MARKETING_HOST_ID`, read in `@aglyn/tenant-data-admin`); a
43
+ * self-hosted install with no audience of its own records the preference
44
+ * and skips the contact.
45
+ *
46
+ * ## Absence is not refusal
47
+ *
48
+ * An unticked sign-up checkbox records nothing. A switch turned off and a
49
+ * prompt answered "no" record a refusal, which the strict policy already
50
+ * honors. A prompt dismissed without an answer records only the dismissal,
51
+ * and the prompt stays away for {@link PLATFORM_MARKETING_PROMPT_SNOOZE_MS}.
52
+ *
53
+ * Pure and dependency-light on purpose: the sign-up page renders the text,
54
+ * the console route validates the body, and the server library writes the
55
+ * record, all from this one module.
56
+ */
57
+ import { type MarketingConsentSource } from './marketing-consent';
58
+ /** The console doors a decision can come through, as the record names them. */
59
+ export declare const PLATFORM_MARKETING_CONSENT_SOURCE_KINDS: readonly ["console-signup", "console-preferences", "console-prompt"];
60
+ export type PlatformMarketingConsentSourceKind = (typeof PLATFORM_MARKETING_CONSENT_SOURCE_KINDS)[number];
61
+ export declare function isPlatformMarketingConsentSourceKind(value: unknown): value is PlatformMarketingConsentSourceKind;
62
+ /** What a door records: a grant or a refusal. Absence is never recorded. */
63
+ export declare const PLATFORM_MARKETING_CONSENT_DECISIONS: readonly ["granted", "declined"];
64
+ export type PlatformMarketingConsentDecision = (typeof PLATFORM_MARKETING_CONSENT_DECISIONS)[number];
65
+ export declare function isPlatformMarketingConsentDecision(value: unknown): value is PlatformMarketingConsentDecision;
66
+ /**
67
+ * The version of the consent wording every door shows. Bumped in the same
68
+ * edit as {@link platformMarketingConsentText}; a record stores the version
69
+ * it was shown under, so the two must move together.
70
+ */
71
+ export declare const PLATFORM_MARKETING_CONSENT_TEXT_VERSION = "2026-09-20";
72
+ /**
73
+ * The sentence the person agrees to, with the deployment's brand in it.
74
+ *
75
+ * Affirmative and standalone: it names what is sent, who sends it, and that
76
+ * it can be stopped — never bundled with the terms acceptance, and never
77
+ * pre-ticked anywhere it is rendered.
78
+ */
79
+ export declare function platformMarketingConsentText(brandName: string): string;
80
+ /** {@link platformMarketingConsentText} for the brand this deployment wears. */
81
+ export declare const PLATFORM_MARKETING_CONSENT_TEXT: string;
82
+ /**
83
+ * The `users/{uid}` fields the decision is mirrored onto.
84
+ *
85
+ * The same names the contact record uses for the same facts, so one reader
86
+ * can parse either document. The prompt-dismissal stamp has no contact
87
+ * counterpart: it is about what the console asked, not what the person
88
+ * agreed to.
89
+ */
90
+ export declare const USER_MARKETING_CONSENT_FIELD = "marketingConsent";
91
+ export declare const USER_MARKETING_CONSENT_AT_FIELD = "marketingConsentAtMs";
92
+ export declare const USER_MARKETING_CONSENT_SOURCE_FIELD = "marketingConsentSource";
93
+ export declare const USER_MARKETING_PROMPT_DISMISSED_AT_FIELD = "marketingConsentPromptDismissedAtMs";
94
+ /** How long a dismissed prompt stays away: ninety days. */
95
+ export declare const PLATFORM_MARKETING_PROMPT_SNOOZE_MS: number;
96
+ /** What the person's own document says about product email. */
97
+ export interface PlatformMarketingConsentState {
98
+ /** `null` when nothing has been recorded — asked, but not answered. */
99
+ decision: PlatformMarketingConsentDecision | null;
100
+ /** When the decision was recorded. */
101
+ atMs: number | null;
102
+ /** The wording version the decision was made under. */
103
+ textVersion: string | null;
104
+ /** Which console door recorded it; `null` for a record another writer left. */
105
+ sourceKind: PlatformMarketingConsentSourceKind | null;
106
+ /** When the prompt was last dismissed without an answer. */
107
+ promptDismissedAtMs: number | null;
108
+ }
109
+ /**
110
+ * Reads the decision off a `users/{uid}` document, or off no document.
111
+ *
112
+ * Every unusable value reads as its absent case rather than throwing: a
113
+ * malformed field must degrade to "nothing recorded", which asks again,
114
+ * never to a grant.
115
+ */
116
+ export declare function readPlatformMarketingConsent(document: Record<string, unknown> | null | undefined): PlatformMarketingConsentState;
117
+ /**
118
+ * Whether the console should ask this person now.
119
+ *
120
+ * Never after a decision, in either direction: a "no" is an answer and a
121
+ * "yes" needs no repeating. A dismissal is not an answer, so the prompt
122
+ * returns once the snooze has run out.
123
+ */
124
+ export declare function platformMarketingPromptDue(state: Pick<PlatformMarketingConsentState, 'decision' | 'promptDismissedAtMs'>, nowMs: number): boolean;
125
+ /**
126
+ * The provenance stored with a console decision, on both documents.
127
+ *
128
+ * `actor: 'person'` is what keeps {@link MarketingConsentSource} honest here:
129
+ * the reader treats provenance as an operator's assertion unless it says
130
+ * otherwise, and this is the person's own click, carrying which door and
131
+ * which wording. `by` is the account that clicked — the subject and the
132
+ * actor are the same human, which is the fact the field records.
133
+ */
134
+ export declare function platformMarketingConsentSource(input: {
135
+ kind: PlatformMarketingConsentSourceKind;
136
+ decision: PlatformMarketingConsentDecision;
137
+ uid: string;
138
+ atMs: number;
139
+ textVersion: string;
140
+ }): MarketingConsentSource;
141
+ /**
142
+ * The `users/{uid}` fields a decision writes, as one merge-able object.
143
+ *
144
+ * `false` for a refusal, not a deleted field: absence is the third state and
145
+ * means "never asked", which a person who said no must never read as again.
146
+ */
147
+ export declare function platformMarketingUserFields(input: {
148
+ decision: PlatformMarketingConsentDecision;
149
+ atMs: number;
150
+ source: MarketingConsentSource;
151
+ }): Record<string, unknown>;