@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,197 @@
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
+ * The GA4 event parameter GA's built-in internal-traffic data filter matches
19
+ * on, and the value its default rule uses.
20
+ *
21
+ * Named here rather than inlined because the strings have to agree with a
22
+ * setting in the GA UI that nothing in this repo can typecheck against — see
23
+ * `docs/ANALYTICS.md` §8 — and because THREE surfaces now stamp them: the
24
+ * console through Firebase's `setDefaultEventParameters`, the tenant runtime
25
+ * and the docs site through a raw `gtag('set', …)`. One definition is what
26
+ * keeps the console's parameter and the marketing site's parameter the same
27
+ * parameter; two spellings would read as two dimensions in GA and the filter
28
+ * would catch one of them.
29
+ */
30
+ export declare const INTERNAL_TRAFFIC_PARAM = "traffic_type";
31
+ export declare const INTERNAL_TRAFFIC_VALUE = "internal";
32
+ /**
33
+ * Where a browser's opt-in is remembered, and the query parameter that sets
34
+ * it (AGL-2064 / AGL-2065).
35
+ *
36
+ * ## Why an explicit override exists at all
37
+ *
38
+ * The AGL-1582 predicate keys on ID-token claims — `staff` or `impersonatedBy`
39
+ * — which is right, and insufficient. Several release drills REQUIRE a
40
+ * non-staff account: the marketplace publisher drill cannot be run by staff at
41
+ * all, because the thing being exercised is a publisher installing their own
42
+ * unreviewed version. Those sessions emit `sign_up`, `org_created`,
43
+ * `host_created`, `site_published` and `begin_checkout` — precisely the
44
+ * activation and revenue events the September funnel is read from — and the
45
+ * claims predicate correctly declines to flag them.
46
+ *
47
+ * Widening the predicate would be the wrong repair. It would flag by identity,
48
+ * and a customer identity is the point of the drill. So the override is a
49
+ * property of the BROWSER, not of the account: a browser we have declared to
50
+ * be ours stays ours across sign-outs, re-auths and whichever test account is
51
+ * currently signed in.
52
+ *
53
+ * And the marketing surface has no account to consult in the first place —
54
+ * `aglyn.com`, `/pricing` and every published site are browsed logged out,
55
+ * which is why that leak is the larger one and why this is the only mechanism
56
+ * that can close it.
57
+ *
58
+ * ## Why `localStorage`, and what being origin-scoped costs
59
+ *
60
+ * It has to survive a reload and a full page navigation, which rules out
61
+ * module state, and it has to be readable by an inline script before the tag
62
+ * library loads, which rules out anything asynchronous. `localStorage` is
63
+ * both, and it was deliberately NOT a cookie: a cookie rides to the server on
64
+ * every request and ends up in logs.
65
+ *
66
+ * ## Why a cookie now rides ALONGSIDE it (AGL-3175)
67
+ *
68
+ * That reasoning held while the surfaces were a fixed list. They are not. The
69
+ * console is served on every `*.aglyn.com` hostname, and `WORKSPACE_DOMAIN` is
70
+ * `aglyn.com`, so EVERY ORG WORKSPACE IS ITS OWN ORIGIN — fourteen distinct
71
+ * hostnames have sent events to the property, among them generated slugs like
72
+ * `34kwy7hnbr`. Per-origin storage cannot be opted into on a hostname that
73
+ * does not exist yet, so the opt-in list was not merely incomplete, it was
74
+ * uncompletable. `auth.aglyn.com` sat unpinned for a month on exactly that.
75
+ *
76
+ * So the opt-in is ALSO written as a cookie scoped to the workspace domain,
77
+ * and either source turning it on is enough. What the cookie costs is what the
78
+ * paragraph above says it costs: the constant string `internal` now appears in
79
+ * request headers to our own hosts. It carries no identity — it says "this
80
+ * browser is ours" and nothing about who is using it — and it rides beside
81
+ * `__session`, which the same domain already carries.
82
+ *
83
+ * ## What still bounds it
84
+ *
85
+ * The cookie is written ONLY where a call site passes `cookieDomain`, and the
86
+ * console's helper passes it only when the current hostname is under that
87
+ * domain. Nothing here writes a cookie on a customer's custom domain, and
88
+ * nothing needs to: published sites are on `aglyn.app` and custom domains,
89
+ * which a `.aglyn.com` cookie cannot reach. That registrable-domain boundary
90
+ * — not per-origin storage — is what keeps an opt-in on our console out of a
91
+ * CUSTOMER's Analytics property while we click through their published site.
92
+ *
93
+ * `INTERNAL_TRAFFIC_GTAG_SNIPPET` is deliberately left on storage alone. It is
94
+ * a constant string inlined into ISR-cached customer HTML (with a verbatim
95
+ * copy in the docs site's config), it cannot be made hostname-aware, and every
96
+ * surface that uses it is a fixed origin that can be pinned directly.
97
+ *
98
+ * ## Bias
99
+ *
100
+ * Opt-in only, never inferred. Wrongly flagging a real customer erases them
101
+ * from every report and a GA4 data filter is not retroactive, so every
102
+ * ambiguous case here resolves to "not internal".
103
+ */
104
+ export declare const INTERNAL_TRAFFIC_STORAGE_KEY = "aglyn_traffic_type";
105
+ export declare const INTERNAL_TRAFFIC_QUERY_PARAM = "aglyn_internal";
106
+ /**
107
+ * The cookie that carries the same opt-in across every origin under one
108
+ * domain. Same name as the storage key on purpose: one concept, and a browser
109
+ * inspector shows the two halves of it side by side under one label.
110
+ */
111
+ export declare const INTERNAL_TRAFFIC_COOKIE_KEY = "aglyn_traffic_type";
112
+ /** The browser bits `readInternalTrafficOverride` needs, so a test can supply them. */
113
+ export interface InternalTrafficOverrideSource {
114
+ /** `window.location.search`, leading `?` optional. */
115
+ search?: string | null;
116
+ /** `window.localStorage`, or null where the browser refuses one. */
117
+ storage?: Pick<Storage, 'getItem' | 'setItem' | 'removeItem'> | null;
118
+ /** `document.cookie`, for the READ half. Absent means no cookie source. */
119
+ cookie?: string | null;
120
+ /**
121
+ * The domain to scope the cookie WRITE to, bare (`aglyn.com`). Absent means
122
+ * this call site does not write cookies at all, which is the default and
123
+ * what every shared caller does — see the module comment. Only a call site
124
+ * that has already established it is on a first-party host passes it.
125
+ */
126
+ cookieDomain?: string | null;
127
+ /** Where a written cookie goes. Defaults to `document.cookie`. */
128
+ writeCookie?: ((serialized: string) => void) | null;
129
+ }
130
+ /**
131
+ * Whether THIS BROWSER has been declared one of ours, applying `?aglyn_internal`
132
+ * first if it is on the URL.
133
+ *
134
+ * Reading and writing in one call is deliberate: the query parameter has to
135
+ * take effect on the pageview that carries it, not on the next one, because
136
+ * the pageview that carries it is already a hit. Persisting it here is what
137
+ * makes the single `?aglyn_internal=1` visit enough.
138
+ *
139
+ * Never throws. A browser with `localStorage` disabled, a sandboxed iframe and
140
+ * a server render all resolve to `false` — the not-internal direction, which
141
+ * is the safe one.
142
+ */
143
+ export declare function readInternalTrafficOverride(source?: InternalTrafficOverrideSource): boolean;
144
+ /**
145
+ * The override, pinned domain-wide rather than per origin (AGL-3175).
146
+ *
147
+ * For the console, which is the surface served on an open-ended set of
148
+ * `*.aglyn.com` origins. The hostname check is the gate the module comment
149
+ * describes: it is what guarantees no cookie is ever written on a customer's
150
+ * custom domain, and it also keeps `localhost` and preview deployments — where
151
+ * a `Secure` cookie for another domain would be rejected anyway — writing
152
+ * nothing but `localStorage`, exactly as before.
153
+ */
154
+ export declare function readInternalTrafficOverrideForDomain(domain: string | null | undefined): boolean;
155
+ /**
156
+ * The same decision as `readInternalTrafficOverride`, as a CONSTANT string of
157
+ * JavaScript, for the surfaces that drive gtag directly (AGL-2064).
158
+ *
159
+ * ## Why a string, and why it must stay constant
160
+ *
161
+ * The tenant runtime serves ISR-cached HTML: one cached document is handed to
162
+ * every visitor, so nothing about this decision may be made while rendering.
163
+ * A server-side branch would bake one browser's answer into the cache for
164
+ * everyone, and a first-client-render branch would break hydration. Emitting
165
+ * the same bytes to everyone and letting them decide AT RUNTIME, in the
166
+ * browser, is the only shape that is both correct and cacheable — the same
167
+ * move `consent.ready` makes one layer up.
168
+ *
169
+ * ## Why it must run before `gtag('config', …)`
170
+ *
171
+ * GA4's internal-traffic filter matches per EVENT, and the events that leak
172
+ * are the ones no call site writes: `session_start`, `first_visit`,
173
+ * `user_engagement` and the automatic `page_view`. A `gtag('set', …)` applies
174
+ * to every hit gtag processes AFTER it in queue order, so placed between the
175
+ * `dataLayer` shim and the `config` call it rides all of them. Placed after
176
+ * `config` it would miss the session's first pageview — which is the whole
177
+ * session, for a marketing visit.
178
+ *
179
+ * ## Safe to inline
180
+ *
181
+ * No interpolation, so nothing can inject; contains no `<` at all, so it
182
+ * cannot close its own `<script>` element. It assumes only that a `gtag`
183
+ * function is already defined, which is the line immediately above it in every
184
+ * call site.
185
+ */
186
+ export declare const INTERNAL_TRAFFIC_GTAG_SNIPPET: string;
187
+ /**
188
+ * The stamp with no opt-in check at all, for a build that has already decided
189
+ * every one of its hits is ours (AGL-2067).
190
+ *
191
+ * Used only where `analyticsEnvironmentForcesInternal()` holds: a
192
+ * non-production build running with the analytics escape hatch on. Nobody
193
+ * reaches that state by accident, so consulting the browser as well would only
194
+ * create a way for it to be wrong.
195
+ */
196
+ export declare const INTERNAL_TRAFFIC_FORCED_SNIPPET = "gtag('set',{'traffic_type':'internal'});";
197
+ export default readInternalTrafficOverride;
@@ -0,0 +1,288 @@
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 GA4 event parameter GA's built-in internal-traffic data filter matches
18
+ * on, and the value its default rule uses.
19
+ *
20
+ * Named here rather than inlined because the strings have to agree with a
21
+ * setting in the GA UI that nothing in this repo can typecheck against — see
22
+ * `docs/ANALYTICS.md` §8 — and because THREE surfaces now stamp them: the
23
+ * console through Firebase's `setDefaultEventParameters`, the tenant runtime
24
+ * and the docs site through a raw `gtag('set', …)`. One definition is what
25
+ * keeps the console's parameter and the marketing site's parameter the same
26
+ * parameter; two spellings would read as two dimensions in GA and the filter
27
+ * would catch one of them.
28
+ */ export const INTERNAL_TRAFFIC_PARAM = 'traffic_type';
29
+ export const INTERNAL_TRAFFIC_VALUE = 'internal';
30
+ /**
31
+ * Where a browser's opt-in is remembered, and the query parameter that sets
32
+ * it (AGL-2064 / AGL-2065).
33
+ *
34
+ * ## Why an explicit override exists at all
35
+ *
36
+ * The AGL-1582 predicate keys on ID-token claims — `staff` or `impersonatedBy`
37
+ * — which is right, and insufficient. Several release drills REQUIRE a
38
+ * non-staff account: the marketplace publisher drill cannot be run by staff at
39
+ * all, because the thing being exercised is a publisher installing their own
40
+ * unreviewed version. Those sessions emit `sign_up`, `org_created`,
41
+ * `host_created`, `site_published` and `begin_checkout` — precisely the
42
+ * activation and revenue events the September funnel is read from — and the
43
+ * claims predicate correctly declines to flag them.
44
+ *
45
+ * Widening the predicate would be the wrong repair. It would flag by identity,
46
+ * and a customer identity is the point of the drill. So the override is a
47
+ * property of the BROWSER, not of the account: a browser we have declared to
48
+ * be ours stays ours across sign-outs, re-auths and whichever test account is
49
+ * currently signed in.
50
+ *
51
+ * And the marketing surface has no account to consult in the first place —
52
+ * `aglyn.com`, `/pricing` and every published site are browsed logged out,
53
+ * which is why that leak is the larger one and why this is the only mechanism
54
+ * that can close it.
55
+ *
56
+ * ## Why `localStorage`, and what being origin-scoped costs
57
+ *
58
+ * It has to survive a reload and a full page navigation, which rules out
59
+ * module state, and it has to be readable by an inline script before the tag
60
+ * library loads, which rules out anything asynchronous. `localStorage` is
61
+ * both, and it was deliberately NOT a cookie: a cookie rides to the server on
62
+ * every request and ends up in logs.
63
+ *
64
+ * ## Why a cookie now rides ALONGSIDE it (AGL-3175)
65
+ *
66
+ * That reasoning held while the surfaces were a fixed list. They are not. The
67
+ * console is served on every `*.aglyn.com` hostname, and `WORKSPACE_DOMAIN` is
68
+ * `aglyn.com`, so EVERY ORG WORKSPACE IS ITS OWN ORIGIN — fourteen distinct
69
+ * hostnames have sent events to the property, among them generated slugs like
70
+ * `34kwy7hnbr`. Per-origin storage cannot be opted into on a hostname that
71
+ * does not exist yet, so the opt-in list was not merely incomplete, it was
72
+ * uncompletable. `auth.aglyn.com` sat unpinned for a month on exactly that.
73
+ *
74
+ * So the opt-in is ALSO written as a cookie scoped to the workspace domain,
75
+ * and either source turning it on is enough. What the cookie costs is what the
76
+ * paragraph above says it costs: the constant string `internal` now appears in
77
+ * request headers to our own hosts. It carries no identity — it says "this
78
+ * browser is ours" and nothing about who is using it — and it rides beside
79
+ * `__session`, which the same domain already carries.
80
+ *
81
+ * ## What still bounds it
82
+ *
83
+ * The cookie is written ONLY where a call site passes `cookieDomain`, and the
84
+ * console's helper passes it only when the current hostname is under that
85
+ * domain. Nothing here writes a cookie on a customer's custom domain, and
86
+ * nothing needs to: published sites are on `aglyn.app` and custom domains,
87
+ * which a `.aglyn.com` cookie cannot reach. That registrable-domain boundary
88
+ * — not per-origin storage — is what keeps an opt-in on our console out of a
89
+ * CUSTOMER's Analytics property while we click through their published site.
90
+ *
91
+ * `INTERNAL_TRAFFIC_GTAG_SNIPPET` is deliberately left on storage alone. It is
92
+ * a constant string inlined into ISR-cached customer HTML (with a verbatim
93
+ * copy in the docs site's config), it cannot be made hostname-aware, and every
94
+ * surface that uses it is a fixed origin that can be pinned directly.
95
+ *
96
+ * ## Bias
97
+ *
98
+ * Opt-in only, never inferred. Wrongly flagging a real customer erases them
99
+ * from every report and a GA4 data filter is not retroactive, so every
100
+ * ambiguous case here resolves to "not internal".
101
+ */ export const INTERNAL_TRAFFIC_STORAGE_KEY = 'aglyn_traffic_type';
102
+ export const INTERNAL_TRAFFIC_QUERY_PARAM = 'aglyn_internal';
103
+ /**
104
+ * The cookie that carries the same opt-in across every origin under one
105
+ * domain. Same name as the storage key on purpose: one concept, and a browser
106
+ * inspector shows the two halves of it side by side under one label.
107
+ */ export const INTERNAL_TRAFFIC_COOKIE_KEY = 'aglyn_traffic_type';
108
+ /**
109
+ * 400 days, which is the ceiling Chrome clamps `Max-Age` to anyway. Expiry is
110
+ * not a feature here — the opt-in is meant to be permanent, and a browser that
111
+ * quietly forgets it puts our own browsing back into the launch metrics, which
112
+ * a GA4 data filter cannot undo after the fact.
113
+ */ const INTERNAL_TRAFFIC_COOKIE_MAX_AGE = 34560000;
114
+ /**
115
+ * The values of `?aglyn_internal=` that turn the override OFF again. Anything
116
+ * else present turns it on, so `?aglyn_internal` with no value works — that is
117
+ * the form someone types from memory.
118
+ */ const OFF_VALUES = new Set([
119
+ '0',
120
+ 'false',
121
+ 'off',
122
+ 'no'
123
+ ]);
124
+ /** Whether a `document.cookie` string carries our opt-in. Never throws. */ function cookieSaysInternal(cookie) {
125
+ if (!cookie) return false;
126
+ for (const part of cookie.split(';')){
127
+ const eq = part.indexOf('=');
128
+ if (eq < 0) continue;
129
+ if (part.slice(0, eq).trim() !== INTERNAL_TRAFFIC_COOKIE_KEY) continue;
130
+ return part.slice(eq + 1).trim() === INTERNAL_TRAFFIC_VALUE;
131
+ }
132
+ return false;
133
+ }
134
+ /**
135
+ * Mirror the opt-in into the domain-wide cookie, when the call site asked for
136
+ * it. A no-op everywhere else, which is every shared caller.
137
+ *
138
+ * `SameSite=Lax` and `Secure` because this rides to our own hosts and has no
139
+ * cross-site job; clearing writes the same attributes with `Max-Age=0`,
140
+ * because a cookie is only replaced by one whose domain and path match.
141
+ */ function writeInternalTrafficCookie(source, on) {
142
+ var _source_writeCookie;
143
+ const domain = source.cookieDomain;
144
+ if (!domain) return;
145
+ const write = (_source_writeCookie = source.writeCookie) != null ? _source_writeCookie : typeof document === 'undefined' ? null : (serialized)=>{
146
+ document.cookie = serialized;
147
+ };
148
+ if (!write) return;
149
+ try {
150
+ write(`${INTERNAL_TRAFFIC_COOKIE_KEY}=${on ? INTERNAL_TRAFFIC_VALUE : ''}` + `; Domain=.${domain}; Path=/; SameSite=Lax; Secure` + `; Max-Age=${on ? INTERNAL_TRAFFIC_COOKIE_MAX_AGE : 0}`);
151
+ } catch (unused) {
152
+ // A refused cookie jar leaves `localStorage` holding the opt-in for this
153
+ // origin, which is where it lived before this existed.
154
+ }
155
+ }
156
+ /**
157
+ * Whether THIS BROWSER has been declared one of ours, applying `?aglyn_internal`
158
+ * first if it is on the URL.
159
+ *
160
+ * Reading and writing in one call is deliberate: the query parameter has to
161
+ * take effect on the pageview that carries it, not on the next one, because
162
+ * the pageview that carries it is already a hit. Persisting it here is what
163
+ * makes the single `?aglyn_internal=1` visit enough.
164
+ *
165
+ * Never throws. A browser with `localStorage` disabled, a sandboxed iframe and
166
+ * a server render all resolve to `false` — the not-internal direction, which
167
+ * is the safe one.
168
+ */ export function readInternalTrafficOverride(source) {
169
+ var _window_location;
170
+ const resolved = source != null ? source : typeof window === 'undefined' ? {} : {
171
+ search: (_window_location = window.location) == null ? void 0 : _window_location.search,
172
+ storage: safeLocalStorage(),
173
+ cookie: safeDocumentCookie()
174
+ };
175
+ const storage = resolved.storage;
176
+ // Read the cookie BEFORE the storage gate. A browser that refuses
177
+ // `localStorage` outright — Safari private mode, a partitioned frame — can
178
+ // still be one of ours, and before AGL-3175 that browser was unpinnable.
179
+ let cookieOn = cookieSaysInternal(resolved.cookie);
180
+ if (!storage) return cookieOn;
181
+ try {
182
+ const search = resolved.search;
183
+ if (search) {
184
+ const requested = new URLSearchParams(search.startsWith('?') ? search.slice(1) : search).get(INTERNAL_TRAFFIC_QUERY_PARAM);
185
+ if (requested !== null) {
186
+ // Both halves move together, so `?aglyn_internal=0` really is an
187
+ // off switch: clearing storage while the cookie still said `internal`
188
+ // would leave the browser pinned with nothing local to show for it.
189
+ if (OFF_VALUES.has(requested.toLowerCase())) {
190
+ storage.removeItem(INTERNAL_TRAFFIC_STORAGE_KEY);
191
+ writeInternalTrafficCookie(resolved, false);
192
+ cookieOn = false;
193
+ } else {
194
+ storage.setItem(INTERNAL_TRAFFIC_STORAGE_KEY, INTERNAL_TRAFFIC_VALUE);
195
+ writeInternalTrafficCookie(resolved, true);
196
+ cookieOn = true;
197
+ }
198
+ }
199
+ }
200
+ return cookieOn || storage.getItem(INTERNAL_TRAFFIC_STORAGE_KEY) === INTERNAL_TRAFFIC_VALUE;
201
+ } catch (unused) {
202
+ // Storage access can throw outright (Safari private mode, a partitioned
203
+ // third-party context). The cookie is the other half and may still answer.
204
+ return cookieOn;
205
+ }
206
+ }
207
+ /** `document.cookie` where reaching for it does not throw, else null. */ function safeDocumentCookie() {
208
+ try {
209
+ return typeof document === 'undefined' ? null : document.cookie;
210
+ } catch (unused) {
211
+ return null;
212
+ }
213
+ }
214
+ /**
215
+ * The override, pinned domain-wide rather than per origin (AGL-3175).
216
+ *
217
+ * For the console, which is the surface served on an open-ended set of
218
+ * `*.aglyn.com` origins. The hostname check is the gate the module comment
219
+ * describes: it is what guarantees no cookie is ever written on a customer's
220
+ * custom domain, and it also keeps `localhost` and preview deployments — where
221
+ * a `Secure` cookie for another domain would be rejected anyway — writing
222
+ * nothing but `localStorage`, exactly as before.
223
+ */ export function readInternalTrafficOverrideForDomain(domain) {
224
+ var _ref;
225
+ var _window_location, _window_location1;
226
+ if (typeof window === 'undefined') return false;
227
+ const host = (_ref = (_window_location = window.location) == null ? void 0 : _window_location.hostname) != null ? _ref : '';
228
+ const underDomain = !!domain && (host === domain || host.endsWith(`.${domain}`));
229
+ return readInternalTrafficOverride({
230
+ search: (_window_location1 = window.location) == null ? void 0 : _window_location1.search,
231
+ storage: safeLocalStorage(),
232
+ cookie: safeDocumentCookie(),
233
+ cookieDomain: underDomain ? domain : null
234
+ });
235
+ }
236
+ /** `window.localStorage` where reaching for it does not throw, else null. */ function safeLocalStorage() {
237
+ try {
238
+ var _window_localStorage;
239
+ return (_window_localStorage = window.localStorage) != null ? _window_localStorage : null;
240
+ } catch (unused) {
241
+ return null;
242
+ }
243
+ }
244
+ /**
245
+ * The same decision as `readInternalTrafficOverride`, as a CONSTANT string of
246
+ * JavaScript, for the surfaces that drive gtag directly (AGL-2064).
247
+ *
248
+ * ## Why a string, and why it must stay constant
249
+ *
250
+ * The tenant runtime serves ISR-cached HTML: one cached document is handed to
251
+ * every visitor, so nothing about this decision may be made while rendering.
252
+ * A server-side branch would bake one browser's answer into the cache for
253
+ * everyone, and a first-client-render branch would break hydration. Emitting
254
+ * the same bytes to everyone and letting them decide AT RUNTIME, in the
255
+ * browser, is the only shape that is both correct and cacheable — the same
256
+ * move `consent.ready` makes one layer up.
257
+ *
258
+ * ## Why it must run before `gtag('config', …)`
259
+ *
260
+ * GA4's internal-traffic filter matches per EVENT, and the events that leak
261
+ * are the ones no call site writes: `session_start`, `first_visit`,
262
+ * `user_engagement` and the automatic `page_view`. A `gtag('set', …)` applies
263
+ * to every hit gtag processes AFTER it in queue order, so placed between the
264
+ * `dataLayer` shim and the `config` call it rides all of them. Placed after
265
+ * `config` it would miss the session's first pageview — which is the whole
266
+ * session, for a marketing visit.
267
+ *
268
+ * ## Safe to inline
269
+ *
270
+ * No interpolation, so nothing can inject; contains no `<` at all, so it
271
+ * cannot close its own `<script>` element. It assumes only that a `gtag`
272
+ * function is already defined, which is the line immediately above it in every
273
+ * call site.
274
+ */ export const INTERNAL_TRAFFIC_GTAG_SNIPPET = 'try{' + `var aq=new URLSearchParams(location.search).get('${INTERNAL_TRAFFIC_QUERY_PARAM}');` + 'if(aq!==null){' + `if(['${[
275
+ ...OFF_VALUES
276
+ ].join("','")}'].indexOf(aq.toLowerCase())>=0)` + `localStorage.removeItem('${INTERNAL_TRAFFIC_STORAGE_KEY}');` + `else localStorage.setItem('${INTERNAL_TRAFFIC_STORAGE_KEY}','${INTERNAL_TRAFFIC_VALUE}');` + '}' + `if(localStorage.getItem('${INTERNAL_TRAFFIC_STORAGE_KEY}')==='${INTERNAL_TRAFFIC_VALUE}')` + `gtag('set',{'${INTERNAL_TRAFFIC_PARAM}':'${INTERNAL_TRAFFIC_VALUE}'});` + '}catch(e){}';
277
+ /**
278
+ * The stamp with no opt-in check at all, for a build that has already decided
279
+ * every one of its hits is ours (AGL-2067).
280
+ *
281
+ * Used only where `analyticsEnvironmentForcesInternal()` holds: a
282
+ * non-production build running with the analytics escape hatch on. Nobody
283
+ * reaches that state by accident, so consulting the browser as well would only
284
+ * create a way for it to be wrong.
285
+ */ export const INTERNAL_TRAFFIC_FORCED_SNIPPET = `gtag('set',{'${INTERNAL_TRAFFIC_PARAM}':'${INTERNAL_TRAFFIC_VALUE}'});`;
286
+ export default readInternalTrafficOverride;
287
+
288
+ //# sourceMappingURL=internal-traffic.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/internal-traffic.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 GA4 event parameter GA's built-in internal-traffic data filter matches\n * on, and the value its default rule uses.\n *\n * Named here rather than inlined because the strings have to agree with a\n * setting in the GA UI that nothing in this repo can typecheck against — see\n * `docs/ANALYTICS.md` §8 — and because THREE surfaces now stamp them: the\n * console through Firebase's `setDefaultEventParameters`, the tenant runtime\n * and the docs site through a raw `gtag('set', …)`. One definition is what\n * keeps the console's parameter and the marketing site's parameter the same\n * parameter; two spellings would read as two dimensions in GA and the filter\n * would catch one of them.\n */\nexport const INTERNAL_TRAFFIC_PARAM = 'traffic_type'\nexport const INTERNAL_TRAFFIC_VALUE = 'internal'\n\n/**\n * Where a browser's opt-in is remembered, and the query parameter that sets\n * it (AGL-2064 / AGL-2065).\n *\n * ## Why an explicit override exists at all\n *\n * The AGL-1582 predicate keys on ID-token claims — `staff` or `impersonatedBy`\n * — which is right, and insufficient. Several release drills REQUIRE a\n * non-staff account: the marketplace publisher drill cannot be run by staff at\n * all, because the thing being exercised is a publisher installing their own\n * unreviewed version. Those sessions emit `sign_up`, `org_created`,\n * `host_created`, `site_published` and `begin_checkout` — precisely the\n * activation and revenue events the September funnel is read from — and the\n * claims predicate correctly declines to flag them.\n *\n * Widening the predicate would be the wrong repair. It would flag by identity,\n * and a customer identity is the point of the drill. So the override is a\n * property of the BROWSER, not of the account: a browser we have declared to\n * be ours stays ours across sign-outs, re-auths and whichever test account is\n * currently signed in.\n *\n * And the marketing surface has no account to consult in the first place —\n * `aglyn.com`, `/pricing` and every published site are browsed logged out,\n * which is why that leak is the larger one and why this is the only mechanism\n * that can close it.\n *\n * ## Why `localStorage`, and what being origin-scoped costs\n *\n * It has to survive a reload and a full page navigation, which rules out\n * module state, and it has to be readable by an inline script before the tag\n * library loads, which rules out anything asynchronous. `localStorage` is\n * both, and it was deliberately NOT a cookie: a cookie rides to the server on\n * every request and ends up in logs.\n *\n * ## Why a cookie now rides ALONGSIDE it (AGL-3175)\n *\n * That reasoning held while the surfaces were a fixed list. They are not. The\n * console is served on every `*.aglyn.com` hostname, and `WORKSPACE_DOMAIN` is\n * `aglyn.com`, so EVERY ORG WORKSPACE IS ITS OWN ORIGIN — fourteen distinct\n * hostnames have sent events to the property, among them generated slugs like\n * `34kwy7hnbr`. Per-origin storage cannot be opted into on a hostname that\n * does not exist yet, so the opt-in list was not merely incomplete, it was\n * uncompletable. `auth.aglyn.com` sat unpinned for a month on exactly that.\n *\n * So the opt-in is ALSO written as a cookie scoped to the workspace domain,\n * and either source turning it on is enough. What the cookie costs is what the\n * paragraph above says it costs: the constant string `internal` now appears in\n * request headers to our own hosts. It carries no identity — it says \"this\n * browser is ours\" and nothing about who is using it — and it rides beside\n * `__session`, which the same domain already carries.\n *\n * ## What still bounds it\n *\n * The cookie is written ONLY where a call site passes `cookieDomain`, and the\n * console's helper passes it only when the current hostname is under that\n * domain. Nothing here writes a cookie on a customer's custom domain, and\n * nothing needs to: published sites are on `aglyn.app` and custom domains,\n * which a `.aglyn.com` cookie cannot reach. That registrable-domain boundary\n * — not per-origin storage — is what keeps an opt-in on our console out of a\n * CUSTOMER's Analytics property while we click through their published site.\n *\n * `INTERNAL_TRAFFIC_GTAG_SNIPPET` is deliberately left on storage alone. It is\n * a constant string inlined into ISR-cached customer HTML (with a verbatim\n * copy in the docs site's config), it cannot be made hostname-aware, and every\n * surface that uses it is a fixed origin that can be pinned directly.\n *\n * ## Bias\n *\n * Opt-in only, never inferred. Wrongly flagging a real customer erases them\n * from every report and a GA4 data filter is not retroactive, so every\n * ambiguous case here resolves to \"not internal\".\n */\nexport const INTERNAL_TRAFFIC_STORAGE_KEY = 'aglyn_traffic_type'\nexport const INTERNAL_TRAFFIC_QUERY_PARAM = 'aglyn_internal'\n\n/**\n * The cookie that carries the same opt-in across every origin under one\n * domain. Same name as the storage key on purpose: one concept, and a browser\n * inspector shows the two halves of it side by side under one label.\n */\nexport const INTERNAL_TRAFFIC_COOKIE_KEY = 'aglyn_traffic_type'\n\n/**\n * 400 days, which is the ceiling Chrome clamps `Max-Age` to anyway. Expiry is\n * not a feature here — the opt-in is meant to be permanent, and a browser that\n * quietly forgets it puts our own browsing back into the launch metrics, which\n * a GA4 data filter cannot undo after the fact.\n */\nconst INTERNAL_TRAFFIC_COOKIE_MAX_AGE = 34_560_000\n\n/**\n * The values of `?aglyn_internal=` that turn the override OFF again. Anything\n * else present turns it on, so `?aglyn_internal` with no value works — that is\n * the form someone types from memory.\n */\nconst OFF_VALUES = new Set(['0', 'false', 'off', 'no'])\n\n/** The browser bits `readInternalTrafficOverride` needs, so a test can supply them. */\nexport interface InternalTrafficOverrideSource {\n /** `window.location.search`, leading `?` optional. */\n search?: string | null\n /** `window.localStorage`, or null where the browser refuses one. */\n storage?: Pick<Storage, 'getItem' | 'setItem' | 'removeItem'> | null\n /** `document.cookie`, for the READ half. Absent means no cookie source. */\n cookie?: string | null\n /**\n * The domain to scope the cookie WRITE to, bare (`aglyn.com`). Absent means\n * this call site does not write cookies at all, which is the default and\n * what every shared caller does — see the module comment. Only a call site\n * that has already established it is on a first-party host passes it.\n */\n cookieDomain?: string | null\n /** Where a written cookie goes. Defaults to `document.cookie`. */\n writeCookie?: ((serialized: string) => void) | null\n}\n\n/** Whether a `document.cookie` string carries our opt-in. Never throws. */\nfunction cookieSaysInternal(cookie: string | null | undefined): boolean {\n if (!cookie) return false\n for (const part of cookie.split(';')) {\n const eq = part.indexOf('=')\n if (eq < 0) continue\n if (part.slice(0, eq).trim() !== INTERNAL_TRAFFIC_COOKIE_KEY) continue\n return part.slice(eq + 1).trim() === INTERNAL_TRAFFIC_VALUE\n }\n return false\n}\n\n/**\n * Mirror the opt-in into the domain-wide cookie, when the call site asked for\n * it. A no-op everywhere else, which is every shared caller.\n *\n * `SameSite=Lax` and `Secure` because this rides to our own hosts and has no\n * cross-site job; clearing writes the same attributes with `Max-Age=0`,\n * because a cookie is only replaced by one whose domain and path match.\n */\nfunction writeInternalTrafficCookie(\n source: InternalTrafficOverrideSource,\n on: boolean,\n): void {\n const domain = source.cookieDomain\n if (!domain) return\n const write =\n source.writeCookie ??\n (typeof document === 'undefined'\n ? null\n : (serialized: string): void => {\n document.cookie = serialized\n })\n if (!write) return\n try {\n write(\n `${INTERNAL_TRAFFIC_COOKIE_KEY}=${on ? INTERNAL_TRAFFIC_VALUE : ''}` +\n `; Domain=.${domain}; Path=/; SameSite=Lax; Secure` +\n `; Max-Age=${on ? INTERNAL_TRAFFIC_COOKIE_MAX_AGE : 0}`,\n )\n } catch {\n // A refused cookie jar leaves `localStorage` holding the opt-in for this\n // origin, which is where it lived before this existed.\n }\n}\n\n/**\n * Whether THIS BROWSER has been declared one of ours, applying `?aglyn_internal`\n * first if it is on the URL.\n *\n * Reading and writing in one call is deliberate: the query parameter has to\n * take effect on the pageview that carries it, not on the next one, because\n * the pageview that carries it is already a hit. Persisting it here is what\n * makes the single `?aglyn_internal=1` visit enough.\n *\n * Never throws. A browser with `localStorage` disabled, a sandboxed iframe and\n * a server render all resolve to `false` — the not-internal direction, which\n * is the safe one.\n */\nexport function readInternalTrafficOverride(\n source?: InternalTrafficOverrideSource,\n): boolean {\n const resolved: InternalTrafficOverrideSource =\n source ??\n (typeof window === 'undefined'\n ? {}\n : {\n search: window.location?.search,\n storage: safeLocalStorage(),\n cookie: safeDocumentCookie(),\n })\n const storage = resolved.storage\n // Read the cookie BEFORE the storage gate. A browser that refuses\n // `localStorage` outright — Safari private mode, a partitioned frame — can\n // still be one of ours, and before AGL-3175 that browser was unpinnable.\n let cookieOn = cookieSaysInternal(resolved.cookie)\n if (!storage) return cookieOn\n try {\n const search = resolved.search\n if (search) {\n const requested = new URLSearchParams(\n search.startsWith('?') ? search.slice(1) : search,\n ).get(INTERNAL_TRAFFIC_QUERY_PARAM)\n if (requested !== null) {\n // Both halves move together, so `?aglyn_internal=0` really is an\n // off switch: clearing storage while the cookie still said `internal`\n // would leave the browser pinned with nothing local to show for it.\n if (OFF_VALUES.has(requested.toLowerCase())) {\n storage.removeItem(INTERNAL_TRAFFIC_STORAGE_KEY)\n writeInternalTrafficCookie(resolved, false)\n cookieOn = false\n } else {\n storage.setItem(INTERNAL_TRAFFIC_STORAGE_KEY, INTERNAL_TRAFFIC_VALUE)\n writeInternalTrafficCookie(resolved, true)\n cookieOn = true\n }\n }\n }\n return (\n cookieOn ||\n storage.getItem(INTERNAL_TRAFFIC_STORAGE_KEY) === INTERNAL_TRAFFIC_VALUE\n )\n } catch {\n // Storage access can throw outright (Safari private mode, a partitioned\n // third-party context). The cookie is the other half and may still answer.\n return cookieOn\n }\n}\n\n/** `document.cookie` where reaching for it does not throw, else null. */\nfunction safeDocumentCookie(): string | null {\n try {\n return typeof document === 'undefined' ? null : document.cookie\n } catch {\n return null\n }\n}\n\n/**\n * The override, pinned domain-wide rather than per origin (AGL-3175).\n *\n * For the console, which is the surface served on an open-ended set of\n * `*.aglyn.com` origins. The hostname check is the gate the module comment\n * describes: it is what guarantees no cookie is ever written on a customer's\n * custom domain, and it also keeps `localhost` and preview deployments — where\n * a `Secure` cookie for another domain would be rejected anyway — writing\n * nothing but `localStorage`, exactly as before.\n */\nexport function readInternalTrafficOverrideForDomain(\n domain: string | null | undefined,\n): boolean {\n if (typeof window === 'undefined') return false\n const host = window.location?.hostname ?? ''\n const underDomain =\n !!domain && (host === domain || host.endsWith(`.${domain}`))\n return readInternalTrafficOverride({\n search: window.location?.search,\n storage: safeLocalStorage(),\n cookie: safeDocumentCookie(),\n cookieDomain: underDomain ? domain : null,\n })\n}\n\n/** `window.localStorage` where reaching for it does not throw, else null. */\nfunction safeLocalStorage(): Storage | null {\n try {\n return window.localStorage ?? null\n } catch {\n return null\n }\n}\n\n/**\n * The same decision as `readInternalTrafficOverride`, as a CONSTANT string of\n * JavaScript, for the surfaces that drive gtag directly (AGL-2064).\n *\n * ## Why a string, and why it must stay constant\n *\n * The tenant runtime serves ISR-cached HTML: one cached document is handed to\n * every visitor, so nothing about this decision may be made while rendering.\n * A server-side branch would bake one browser's answer into the cache for\n * everyone, and a first-client-render branch would break hydration. Emitting\n * the same bytes to everyone and letting them decide AT RUNTIME, in the\n * browser, is the only shape that is both correct and cacheable — the same\n * move `consent.ready` makes one layer up.\n *\n * ## Why it must run before `gtag('config', …)`\n *\n * GA4's internal-traffic filter matches per EVENT, and the events that leak\n * are the ones no call site writes: `session_start`, `first_visit`,\n * `user_engagement` and the automatic `page_view`. A `gtag('set', …)` applies\n * to every hit gtag processes AFTER it in queue order, so placed between the\n * `dataLayer` shim and the `config` call it rides all of them. Placed after\n * `config` it would miss the session's first pageview — which is the whole\n * session, for a marketing visit.\n *\n * ## Safe to inline\n *\n * No interpolation, so nothing can inject; contains no `<` at all, so it\n * cannot close its own `<script>` element. It assumes only that a `gtag`\n * function is already defined, which is the line immediately above it in every\n * call site.\n */\nexport const INTERNAL_TRAFFIC_GTAG_SNIPPET =\n 'try{' +\n `var aq=new URLSearchParams(location.search).get('${INTERNAL_TRAFFIC_QUERY_PARAM}');` +\n 'if(aq!==null){' +\n `if(['${[...OFF_VALUES].join(\"','\")}'].indexOf(aq.toLowerCase())>=0)` +\n `localStorage.removeItem('${INTERNAL_TRAFFIC_STORAGE_KEY}');` +\n `else localStorage.setItem('${INTERNAL_TRAFFIC_STORAGE_KEY}','${INTERNAL_TRAFFIC_VALUE}');` +\n '}' +\n `if(localStorage.getItem('${INTERNAL_TRAFFIC_STORAGE_KEY}')==='${INTERNAL_TRAFFIC_VALUE}')` +\n `gtag('set',{'${INTERNAL_TRAFFIC_PARAM}':'${INTERNAL_TRAFFIC_VALUE}'});` +\n '}catch(e){}'\n\n/**\n * The stamp with no opt-in check at all, for a build that has already decided\n * every one of its hits is ours (AGL-2067).\n *\n * Used only where `analyticsEnvironmentForcesInternal()` holds: a\n * non-production build running with the analytics escape hatch on. Nobody\n * reaches that state by accident, so consulting the browser as well would only\n * create a way for it to be wrong.\n */\nexport const INTERNAL_TRAFFIC_FORCED_SNIPPET =\n `gtag('set',{'${INTERNAL_TRAFFIC_PARAM}':'${INTERNAL_TRAFFIC_VALUE}'});`\n\nexport default readInternalTrafficOverride\n"],"names":["INTERNAL_TRAFFIC_PARAM","INTERNAL_TRAFFIC_VALUE","INTERNAL_TRAFFIC_STORAGE_KEY","INTERNAL_TRAFFIC_QUERY_PARAM","INTERNAL_TRAFFIC_COOKIE_KEY","INTERNAL_TRAFFIC_COOKIE_MAX_AGE","OFF_VALUES","Set","cookieSaysInternal","cookie","part","split","eq","indexOf","slice","trim","writeInternalTrafficCookie","source","on","domain","cookieDomain","write","writeCookie","document","serialized","readInternalTrafficOverride","window","resolved","search","location","storage","safeLocalStorage","safeDocumentCookie","cookieOn","requested","URLSearchParams","startsWith","get","has","toLowerCase","removeItem","setItem","getItem","readInternalTrafficOverrideForDomain","host","hostname","underDomain","endsWith","localStorage","INTERNAL_TRAFFIC_GTAG_SNIPPET","join","INTERNAL_TRAFFIC_FORCED_SNIPPET"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;CAYC,GACD,OAAO,MAAMA,yBAAyB,eAAc;AACpD,OAAO,MAAMC,yBAAyB,WAAU;AAEhD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuEC,GACD,OAAO,MAAMC,+BAA+B,qBAAoB;AAChE,OAAO,MAAMC,+BAA+B,iBAAgB;AAE5D;;;;CAIC,GACD,OAAO,MAAMC,8BAA8B,qBAAoB;AAE/D;;;;;CAKC,GACD,MAAMC,kCAAkC;AAExC;;;;CAIC,GACD,MAAMC,aAAa,IAAIC,IAAI;IAAC;IAAK;IAAS;IAAO;CAAK;AAqBtD,yEAAyE,GACzE,SAASC,mBAAmBC,MAAiC;IAC3D,IAAI,CAACA,QAAQ,OAAO;IACpB,KAAK,MAAMC,QAAQD,OAAOE,KAAK,CAAC,KAAM;QACpC,MAAMC,KAAKF,KAAKG,OAAO,CAAC;QACxB,IAAID,KAAK,GAAG;QACZ,IAAIF,KAAKI,KAAK,CAAC,GAAGF,IAAIG,IAAI,OAAOX,6BAA6B;QAC9D,OAAOM,KAAKI,KAAK,CAACF,KAAK,GAAGG,IAAI,OAAOd;IACvC;IACA,OAAO;AACT;AAEA;;;;;;;CAOC,GACD,SAASe,2BACPC,MAAqC,EACrCC,EAAW;QAKTD;IAHF,MAAME,SAASF,OAAOG,YAAY;IAClC,IAAI,CAACD,QAAQ;IACb,MAAME,SACJJ,sBAAAA,OAAOK,WAAW,YAAlBL,sBACC,OAAOM,aAAa,cACjB,OACA,CAACC;QACCD,SAASd,MAAM,GAAGe;IACpB;IACN,IAAI,CAACH,OAAO;IACZ,IAAI;QACFA,MACE,GAAGjB,4BAA4B,CAAC,EAAEc,KAAKjB,yBAAyB,IAAI,GAClE,CAAC,UAAU,EAAEkB,OAAO,8BAA8B,CAAC,GACnD,CAAC,UAAU,EAAED,KAAKb,kCAAkC,GAAG;IAE7D,EAAE,eAAM;IACN,yEAAyE;IACzE,uDAAuD;IACzD;AACF;AAEA;;;;;;;;;;;;CAYC,GACD,OAAO,SAASoB,4BACdR,MAAsC;QAOtBS;IALhB,MAAMC,WACJV,iBAAAA,SACC,OAAOS,WAAW,cACf,CAAC,IACD;QACEE,MAAM,GAAEF,mBAAAA,OAAOG,QAAQ,qBAAfH,iBAAiBE,MAAM;QAC/BE,SAASC;QACTtB,QAAQuB;IACV;IACN,MAAMF,UAAUH,SAASG,OAAO;IAChC,kEAAkE;IAClE,2EAA2E;IAC3E,yEAAyE;IACzE,IAAIG,WAAWzB,mBAAmBmB,SAASlB,MAAM;IACjD,IAAI,CAACqB,SAAS,OAAOG;IACrB,IAAI;QACF,MAAML,SAASD,SAASC,MAAM;QAC9B,IAAIA,QAAQ;YACV,MAAMM,YAAY,IAAIC,gBACpBP,OAAOQ,UAAU,CAAC,OAAOR,OAAOd,KAAK,CAAC,KAAKc,QAC3CS,GAAG,CAAClC;YACN,IAAI+B,cAAc,MAAM;gBACtB,iEAAiE;gBACjE,sEAAsE;gBACtE,oEAAoE;gBACpE,IAAI5B,WAAWgC,GAAG,CAACJ,UAAUK,WAAW,KAAK;oBAC3CT,QAAQU,UAAU,CAACtC;oBACnBc,2BAA2BW,UAAU;oBACrCM,WAAW;gBACb,OAAO;oBACLH,QAAQW,OAAO,CAACvC,8BAA8BD;oBAC9Ce,2BAA2BW,UAAU;oBACrCM,WAAW;gBACb;YACF;QACF;QACA,OACEA,YACAH,QAAQY,OAAO,CAACxC,kCAAkCD;IAEtD,EAAE,eAAM;QACN,wEAAwE;QACxE,2EAA2E;QAC3E,OAAOgC;IACT;AACF;AAEA,uEAAuE,GACvE,SAASD;IACP,IAAI;QACF,OAAO,OAAOT,aAAa,cAAc,OAAOA,SAASd,MAAM;IACjE,EAAE,eAAM;QACN,OAAO;IACT;AACF;AAEA;;;;;;;;;CASC,GACD,OAAO,SAASkC,qCACdxB,MAAiC;;QAGpBO,kBAIHA;IALV,IAAI,OAAOA,WAAW,aAAa,OAAO;IAC1C,MAAMkB,gBAAOlB,mBAAAA,OAAOG,QAAQ,qBAAfH,iBAAiBmB,QAAQ,mBAAI;IAC1C,MAAMC,cACJ,CAAC,CAAC3B,UAAWyB,CAAAA,SAASzB,UAAUyB,KAAKG,QAAQ,CAAC,CAAC,CAAC,EAAE5B,QAAQ,CAAA;IAC5D,OAAOM,4BAA4B;QACjCG,MAAM,GAAEF,oBAAAA,OAAOG,QAAQ,qBAAfH,kBAAiBE,MAAM;QAC/BE,SAASC;QACTtB,QAAQuB;QACRZ,cAAc0B,cAAc3B,SAAS;IACvC;AACF;AAEA,2EAA2E,GAC3E,SAASY;IACP,IAAI;YACKL;QAAP,QAAOA,uBAAAA,OAAOsB,YAAY,YAAnBtB,uBAAuB;IAChC,EAAE,eAAM;QACN,OAAO;IACT;AACF;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8BC,GACD,OAAO,MAAMuB,gCACX,SACA,CAAC,iDAAiD,EAAE9C,6BAA6B,GAAG,CAAC,GACrF,mBACA,CAAC,KAAK,EAAE;OAAIG;CAAW,CAAC4C,IAAI,CAAC,OAAO,gCAAgC,CAAC,GACrE,CAAC,yBAAyB,EAAEhD,6BAA6B,GAAG,CAAC,GAC7D,CAAC,2BAA2B,EAAEA,6BAA6B,GAAG,EAAED,uBAAuB,GAAG,CAAC,GAC3F,MACA,CAAC,yBAAyB,EAAEC,6BAA6B,MAAM,EAAED,uBAAuB,EAAE,CAAC,GAC3F,CAAC,aAAa,EAAED,uBAAuB,GAAG,EAAEC,uBAAuB,IAAI,CAAC,GACxE,cAAa;AAEf;;;;;;;;CAQC,GACD,OAAO,MAAMkD,kCACX,CAAC,aAAa,EAAEnD,uBAAuB,GAAG,EAAEC,uBAAuB,IAAI,CAAC,CAAA;AAE1E,eAAewB,4BAA2B"}
@@ -0,0 +1,62 @@
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
+ import { LinealDirectiveFlag } from '../foundation/definitions/components.types';
18
+ import type { ComponentId, ComponentsLinealOrder, PluginId } from '../foundation/definitions/components.types';
19
+ /** A directive as a schema declares it, or as the generated palette carries it. */
20
+ /**
21
+ * A lineal order as a JSON emitter writes it (AGL-2905): the directive as
22
+ * the enum's string value rather than the enum, so a generated catalog can
23
+ * carry it and a validator can read it back without the enum in scope.
24
+ */
25
+ export type JsonLinealOrder = [
26
+ directiveType: `${LinealDirectiveFlag}`,
27
+ directiveDefinition: string[] | {
28
+ plugins?: string[];
29
+ components?: string[];
30
+ }
31
+ ];
32
+ export type LinealOrderLike = ComponentsLinealOrder | JsonLinealOrder;
33
+ /**
34
+ * Which half of a lineal directive a candidate fails, or `null` when the
35
+ * directive admits it.
36
+ *
37
+ * `restrictChildren` and `restrictParent` are one grammar — a `limitedTo` or
38
+ * `forbid` flag over a component list, a plugin list, or both — read from two
39
+ * sides: the besigner's drop check asks it about a dragged element, and the
40
+ * AI node-tree validator asks it about a node a model emitted. The answer has
41
+ * to be the same answer, so the rule lives here with no editor attached and
42
+ * both callers read it (AGL-2905).
43
+ *
44
+ * A `limitedTo` list that is present but empty admits nothing — that is how a
45
+ * component declares it takes no children at all (`layoutSlot`), and the
46
+ * child-contract audit reads the same shape the same way.
47
+ */
48
+ export declare function checkLinealOrder(componentId: ComponentId | undefined, pluginId: PluginId | undefined, order: LinealOrderLike): 'component' | 'plugin' | null;
49
+ /**
50
+ * Whether `child` may sit directly under `parent`, reading the child's
51
+ * `restrictParent` and the parent's `restrictChildren` — the two directives
52
+ * the besigner's drop check consults, in that order.
53
+ */
54
+ export declare function linealRelationshipPermits(child: {
55
+ componentId?: ComponentId;
56
+ pluginId?: PluginId;
57
+ restrictParent?: LinealOrderLike;
58
+ }, parent: {
59
+ componentId?: ComponentId;
60
+ pluginId?: PluginId;
61
+ restrictChildren?: LinealOrderLike;
62
+ }): boolean;
@@ -0,0 +1,65 @@
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
+ */ import { LinealDirectiveFlag } from "../foundation/definitions/components.types.js";
17
+ /**
18
+ * Which half of a lineal directive a candidate fails, or `null` when the
19
+ * directive admits it.
20
+ *
21
+ * `restrictChildren` and `restrictParent` are one grammar — a `limitedTo` or
22
+ * `forbid` flag over a component list, a plugin list, or both — read from two
23
+ * sides: the besigner's drop check asks it about a dragged element, and the
24
+ * AI node-tree validator asks it about a node a model emitted. The answer has
25
+ * to be the same answer, so the rule lives here with no editor attached and
26
+ * both callers read it (AGL-2905).
27
+ *
28
+ * A `limitedTo` list that is present but empty admits nothing — that is how a
29
+ * component declares it takes no children at all (`layoutSlot`), and the
30
+ * child-contract audit reads the same shape the same way.
31
+ */ export function checkLinealOrder(componentId, pluginId, order) {
32
+ const [directiveType, directiveDefinition] = order;
33
+ const flag = directiveType;
34
+ const components = Array.isArray(directiveDefinition) ? directiveDefinition : directiveDefinition == null ? void 0 : directiveDefinition.components;
35
+ const plugins = Array.isArray(directiveDefinition) ? undefined : directiveDefinition == null ? void 0 : directiveDefinition.plugins;
36
+ if (flag === LinealDirectiveFlag.DISALLOW) {
37
+ if (components == null ? void 0 : components.some((id)=>id === componentId)) return 'component';
38
+ if (plugins == null ? void 0 : plugins.some((id)=>id === pluginId)) return 'plugin';
39
+ return null;
40
+ }
41
+ if (flag === LinealDirectiveFlag.LIMIT_TO) {
42
+ if (Array.isArray(components) && (components.length === 0 || !components.some((id)=>id === componentId))) {
43
+ return 'component';
44
+ }
45
+ if (Array.isArray(plugins) && (plugins.length === 0 || !plugins.some((id)=>id === pluginId))) {
46
+ return 'plugin';
47
+ }
48
+ }
49
+ return null;
50
+ }
51
+ /**
52
+ * Whether `child` may sit directly under `parent`, reading the child's
53
+ * `restrictParent` and the parent's `restrictChildren` — the two directives
54
+ * the besigner's drop check consults, in that order.
55
+ */ export function linealRelationshipPermits(child, parent) {
56
+ if (child.restrictParent && checkLinealOrder(parent.componentId, parent.pluginId, child.restrictParent)) {
57
+ return false;
58
+ }
59
+ if (parent.restrictChildren && checkLinealOrder(child.componentId, child.pluginId, parent.restrictChildren)) {
60
+ return false;
61
+ }
62
+ return true;
63
+ }
64
+
65
+ //# sourceMappingURL=lineal-order.js.map