@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,102 @@
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 type { HostAction } from './actions';
18
+ /**
19
+ * Interactions stored on the element that carries them.
20
+ *
21
+ * An interaction is what an ELEMENT does — clicked, hovered, scrolled into
22
+ * view. A host action is what the SITE does — an order was placed, a form was
23
+ * submitted. Both compile to the same runtime shape, and until now both were
24
+ * stored the same way too, as rows in `hosts/{hostId}/actions` bound to an
25
+ * element by selector. That made an interaction a site-wide object that
26
+ * merely happened to point at one element, with all four consequences an
27
+ * author would be surprised by: it did not publish or roll back with its
28
+ * screen, it did not travel with a copied component or a packaged template,
29
+ * deleting the element orphaned it, and it cluttered the site's automation
30
+ * list with a nav menu's hover timing.
31
+ *
32
+ * Here the node owns them, so all four answer themselves — the node is the
33
+ * thing that versions, travels, and is deleted.
34
+ *
35
+ * ## The selector is not stored
36
+ *
37
+ * `trigger.selector` is derived from the node's id at compose time, never
38
+ * persisted. A stored selector is a second name for the element that can
39
+ * disagree with the first: a duplicate, a re-key, or a paste into another
40
+ * document would carry a selector still naming the ORIGINAL element, and the
41
+ * interaction would silently drive someone else's button. Deriving it means
42
+ * the copy binds to the copy, which is the whole reason for moving the
43
+ * storage.
44
+ */
45
+ export interface NodeInteraction extends Omit<HostAction, 'trigger'> {
46
+ /** Stable within its node, so an edit updates rather than appends. */
47
+ id: string;
48
+ trigger: Omit<HostAction['trigger'], 'selector'>;
49
+ }
50
+ /** Cap per element. Ten triggers on one button is a bug, not a design. */
51
+ export declare const NODE_MAX_INTERACTIONS = 10;
52
+ /** The selector the renderer stamps for a node, and the runtime targets. */
53
+ export declare function nodeInteractionSelector(nodeId: string): string;
54
+ /** The node a derived selector names, or undefined for anything else. */
55
+ export declare function nodeIdFromInteractionSelector(selector: unknown): string | undefined;
56
+ /**
57
+ * The prefix that makes a collected id say where it lives.
58
+ *
59
+ * Every surface that can toggle, edit or delete an interaction is handed an
60
+ * id and nothing else, and there are now two places one can be stored. A
61
+ * self-describing id is what lets those surfaces route without a second
62
+ * lookup — and, more to the point, without GUESSING, which during the
63
+ * migration would mean writing a node interaction into the actions
64
+ * collection or vice versa.
65
+ */
66
+ export declare const NODE_INTERACTION_ID_PREFIX = "node:";
67
+ /** The node and interaction a collected id names, or null for a host action. */
68
+ export declare function parseNodeInteractionId(id: unknown): {
69
+ nodeId: string;
70
+ interactionId: string;
71
+ } | null;
72
+ /** The collected id for one interaction on one node. */
73
+ export declare function nodeInteractionId(nodeId: string, interactionId: string): string;
74
+ /** Minimal node shape this module reads; the canvas node satisfies it. */
75
+ export interface InteractionNode {
76
+ $id?: string;
77
+ interactions?: NodeInteraction[] | null;
78
+ /** Denormalized children. Ids are the normalized form and carry nothing. */
79
+ nodes?: unknown;
80
+ }
81
+ export declare function walkInteractionNodes(root: InteractionNode | null | undefined): Generator<InteractionNode>;
82
+ /** One interaction resolved into the runtime's own shape. */
83
+ export interface CollectedNodeInteraction {
84
+ /**
85
+ * Namespaced with the node id, so two elements carrying the same preset —
86
+ * two Dropdown Panels inserted from the same source — cannot collide, and
87
+ * so a runtime keyed on this id (the once-per-visitor and cooldown caps
88
+ * are) treats them as the separate things they are.
89
+ */
90
+ id: string;
91
+ action: HostAction;
92
+ }
93
+ export declare function collectNodeInteractions(nodes: Iterable<InteractionNode | null | undefined>): CollectedNodeInteraction[];
94
+ /**
95
+ * The interactions on one node with one entry added or replaced.
96
+ *
97
+ * Returns a new array; never mutates the one passed in, which is a MobX
98
+ * observable on the canvas and a plain array everywhere else.
99
+ */
100
+ export declare function upsertNodeInteraction(interactions: readonly NodeInteraction[] | undefined, interaction: NodeInteraction): NodeInteraction[];
101
+ /** The interactions on one node with one removed. */
102
+ export declare function removeNodeInteraction(interactions: readonly NodeInteraction[] | undefined, id: string): NodeInteraction[];
@@ -0,0 +1,192 @@
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 { _ as _extends } from "@swc/helpers/_/_extends";
17
+ /** Cap per element. Ten triggers on one button is a bug, not a design. */ export const NODE_MAX_INTERACTIONS = 10;
18
+ /** The selector the renderer stamps for a node, and the runtime targets. */ export function nodeInteractionSelector(nodeId) {
19
+ return `[data-aglyn="leaf:${nodeId}"]`;
20
+ }
21
+ /** The node a derived selector names, or undefined for anything else. */ export function nodeIdFromInteractionSelector(selector) {
22
+ const match = /^\[data-aglyn="leaf:(.+)"\]$/.exec(String(selector != null ? selector : ''));
23
+ return (match == null ? void 0 : match[1]) || undefined;
24
+ }
25
+ /**
26
+ * The prefix that makes a collected id say where it lives.
27
+ *
28
+ * Every surface that can toggle, edit or delete an interaction is handed an
29
+ * id and nothing else, and there are now two places one can be stored. A
30
+ * self-describing id is what lets those surfaces route without a second
31
+ * lookup — and, more to the point, without GUESSING, which during the
32
+ * migration would mean writing a node interaction into the actions
33
+ * collection or vice versa.
34
+ */ export const NODE_INTERACTION_ID_PREFIX = 'node:';
35
+ /** The node and interaction a collected id names, or null for a host action. */ export function parseNodeInteractionId(id) {
36
+ const value = String(id != null ? id : '');
37
+ if (!value.startsWith(NODE_INTERACTION_ID_PREFIX)) return null;
38
+ const rest = value.slice(NODE_INTERACTION_ID_PREFIX.length);
39
+ // The node id comes first and cannot contain a colon; the interaction id
40
+ // takes the remainder, so a colon inside one survives the round trip.
41
+ const separator = rest.indexOf(':');
42
+ if (separator <= 0 || separator === rest.length - 1) return null;
43
+ return {
44
+ nodeId: rest.slice(0, separator),
45
+ interactionId: rest.slice(separator + 1)
46
+ };
47
+ }
48
+ /** The collected id for one interaction on one node. */ export function nodeInteractionId(nodeId, interactionId) {
49
+ return `${NODE_INTERACTION_ID_PREFIX}${nodeId}:${interactionId}`;
50
+ }
51
+ /**
52
+ * Every node in a DENORMALIZED tree, depth-first, parents before children.
53
+ *
54
+ * Composition is what makes this the right input: a layout's chrome and a
55
+ * reusable component's internals are grafted in by then, and their node ids
56
+ * are the graft ids the renderer actually stamps. Collecting from the raw
57
+ * screen document instead would derive a selector for an id that is never on
58
+ * the page — which is the same bug as a stored selector, arrived at from the
59
+ * other direction.
60
+ *
61
+ * A normalized tree (children as id strings) yields only the node it was
62
+ * given; there is nothing to follow, and guessing at a lookup table this
63
+ * module does not have would be worse than answering honestly.
64
+ */ /** A single node rather than a map of them: it names itself. */ function isInteractionNodeLike(value) {
65
+ return !!value && typeof value === 'object' && typeof value.$id === 'string';
66
+ }
67
+ export function* walkInteractionNodes(root) {
68
+ /*
69
+ * A NORMALIZED map is the shape the tenant actually composes.
70
+ *
71
+ * `composeScreenNodes` returns `{ [id]: node }` with children as id
72
+ * STRINGS, and the enricher handed that straight here. The old code took
73
+ * the map itself for a node: it carries no `$id` and no `interactions`, its
74
+ * `nodes` property does not exist, so the walk yielded one useless object
75
+ * and stopped. Every node interaction on every published page was dropped —
76
+ * silently, because an empty automation list is what a page with none looks
77
+ * like.
78
+ *
79
+ * A map is recognisable without guessing: no `$id`, no `nodes` array, and
80
+ * every value an object carrying its own `$id`. Yielding its values is
81
+ * exact rather than a lookup this module would have to invent — the map is
82
+ * already flat, so there is nothing to follow.
83
+ */ if (root && typeof root === 'object' && !isInteractionNodeLike(root)) {
84
+ const values = Object.values(root);
85
+ if (values.length && values.every((v)=>isInteractionNodeLike(v))) {
86
+ for (const node of values)yield node;
87
+ return;
88
+ }
89
+ }
90
+ if (!root || typeof root !== 'object') return;
91
+ yield root;
92
+ const children = root.nodes;
93
+ if (!Array.isArray(children)) return;
94
+ for (const child of children){
95
+ if (child && typeof child === 'object') {
96
+ yield* walkInteractionNodes(child);
97
+ }
98
+ }
99
+ }
100
+ /**
101
+ * Every interaction in a composed tree, in the runtime's shape.
102
+ *
103
+ * Order follows the nodes, which is document order — a page with two
104
+ * elements listening for the same event fires them in the order they appear,
105
+ * which is the only ordering an author can predict.
106
+ *
107
+ * Disabled interactions are kept, not dropped. The compiler downstream is the
108
+ * one place that decides what runs (it also applies the plan trims), and two
109
+ * places deciding is how a step gets dropped for a reason nobody can find.
110
+ */ /**
111
+ * Step selectors, re-pointed at the ids the graft actually stamped.
112
+ *
113
+ * A trigger needs no help: the node IS the selector, derived above from the
114
+ * composed id. A STEP is different — it names another element, and it was
115
+ * written when the component was authored, so it holds that component's own
116
+ * id. Grafting an instance re-stamps every id with the instance's prefix, so
117
+ * `[data-aglyn="leaf:panel"]` names nothing on a page that renders
118
+ * `leaf:cmp__inst__panel`, and a mega menu opens nothing.
119
+ *
120
+ * Rewritten only when the bare id is absent AND exactly the prefixed sibling
121
+ * is present: an interaction that legitimately targets a page-level element
122
+ * from inside a component keeps working, and an unresolvable selector is left
123
+ * exactly as written rather than pointed somewhere plausible.
124
+ */ function regraftStepSelectors(steps, nodeId, present) {
125
+ const boundary = nodeId.lastIndexOf('__');
126
+ if (boundary < 0) return steps;
127
+ const prefix = nodeId.slice(0, boundary + 2);
128
+ if (!prefix) return steps;
129
+ return (steps != null ? steps : []).map((step)=>{
130
+ const targetId = nodeIdFromInteractionSelector(step == null ? void 0 : step.selector);
131
+ if (!targetId || present.has(targetId)) return step;
132
+ const grafted = `${prefix}${targetId}`;
133
+ if (!present.has(grafted)) return step;
134
+ return _extends({}, step, {
135
+ selector: nodeInteractionSelector(grafted)
136
+ });
137
+ });
138
+ }
139
+ export function collectNodeInteractions(nodes) {
140
+ const collected = [];
141
+ const all = [
142
+ ...nodes
143
+ ];
144
+ const present = new Set(all.map((node)=>node == null ? void 0 : node.$id).filter((id)=>!!id));
145
+ for (const node of all){
146
+ const nodeId = node == null ? void 0 : node.$id;
147
+ if (!nodeId || !Array.isArray(node == null ? void 0 : node.interactions)) continue;
148
+ let index = 0;
149
+ for (const interaction of node.interactions){
150
+ var _interaction_trigger;
151
+ if (index >= NODE_MAX_INTERACTIONS) break;
152
+ if (!(interaction == null ? void 0 : (_interaction_trigger = interaction.trigger) == null ? void 0 : _interaction_trigger.event)) continue;
153
+ index += 1;
154
+ collected.push({
155
+ id: nodeInteractionId(nodeId, interaction.id || String(index)),
156
+ action: _extends({}, interaction, Array.isArray(interaction.steps) ? {
157
+ steps: regraftStepSelectors(interaction.steps, nodeId, present)
158
+ } : {}, {
159
+ trigger: _extends({}, interaction.trigger, {
160
+ // Derived here and nowhere else — see the note above on why it
161
+ // is not stored.
162
+ selector: nodeInteractionSelector(nodeId)
163
+ })
164
+ })
165
+ });
166
+ }
167
+ }
168
+ return collected;
169
+ }
170
+ /**
171
+ * The interactions on one node with one entry added or replaced.
172
+ *
173
+ * Returns a new array; never mutates the one passed in, which is a MobX
174
+ * observable on the canvas and a plain array everywhere else.
175
+ */ export function upsertNodeInteraction(interactions, interaction) {
176
+ const current = interactions != null ? interactions : [];
177
+ const existing = current.findIndex((entry)=>entry.id === interaction.id);
178
+ if (existing < 0) return [
179
+ ...current,
180
+ interaction
181
+ ].slice(0, NODE_MAX_INTERACTIONS);
182
+ const next = [
183
+ ...current
184
+ ];
185
+ next[existing] = interaction;
186
+ return next;
187
+ }
188
+ /** The interactions on one node with one removed. */ export function removeNodeInteraction(interactions, id) {
189
+ return (interactions != null ? interactions : []).filter((entry)=>entry.id !== id);
190
+ }
191
+
192
+ //# sourceMappingURL=node-interactions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/node-interactions.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\nimport type { HostAction } from './actions'\n\n/**\n * Interactions stored on the element that carries them.\n *\n * An interaction is what an ELEMENT does — clicked, hovered, scrolled into\n * view. A host action is what the SITE does — an order was placed, a form was\n * submitted. Both compile to the same runtime shape, and until now both were\n * stored the same way too, as rows in `hosts/{hostId}/actions` bound to an\n * element by selector. That made an interaction a site-wide object that\n * merely happened to point at one element, with all four consequences an\n * author would be surprised by: it did not publish or roll back with its\n * screen, it did not travel with a copied component or a packaged template,\n * deleting the element orphaned it, and it cluttered the site's automation\n * list with a nav menu's hover timing.\n *\n * Here the node owns them, so all four answer themselves — the node is the\n * thing that versions, travels, and is deleted.\n *\n * ## The selector is not stored\n *\n * `trigger.selector` is derived from the node's id at compose time, never\n * persisted. A stored selector is a second name for the element that can\n * disagree with the first: a duplicate, a re-key, or a paste into another\n * document would carry a selector still naming the ORIGINAL element, and the\n * interaction would silently drive someone else's button. Deriving it means\n * the copy binds to the copy, which is the whole reason for moving the\n * storage.\n */\nexport interface NodeInteraction extends Omit<HostAction, 'trigger'> {\n /** Stable within its node, so an edit updates rather than appends. */\n id: string\n trigger: Omit<HostAction['trigger'], 'selector'>\n}\n\n/** Cap per element. Ten triggers on one button is a bug, not a design. */\nexport const NODE_MAX_INTERACTIONS = 10\n\n/** The selector the renderer stamps for a node, and the runtime targets. */\nexport function nodeInteractionSelector(nodeId: string): string {\n return `[data-aglyn=\"leaf:${nodeId}\"]`\n}\n\n/** The node a derived selector names, or undefined for anything else. */\nexport function nodeIdFromInteractionSelector(\n selector: unknown,\n): string | undefined {\n const match = /^\\[data-aglyn=\"leaf:(.+)\"\\]$/.exec(String(selector ?? ''))\n return match?.[1] || undefined\n}\n\n/**\n * The prefix that makes a collected id say where it lives.\n *\n * Every surface that can toggle, edit or delete an interaction is handed an\n * id and nothing else, and there are now two places one can be stored. A\n * self-describing id is what lets those surfaces route without a second\n * lookup — and, more to the point, without GUESSING, which during the\n * migration would mean writing a node interaction into the actions\n * collection or vice versa.\n */\nexport const NODE_INTERACTION_ID_PREFIX = 'node:'\n\n/** The node and interaction a collected id names, or null for a host action. */\nexport function parseNodeInteractionId(\n id: unknown,\n): { nodeId: string; interactionId: string } | null {\n const value = String(id ?? '')\n if (!value.startsWith(NODE_INTERACTION_ID_PREFIX)) return null\n const rest = value.slice(NODE_INTERACTION_ID_PREFIX.length)\n // The node id comes first and cannot contain a colon; the interaction id\n // takes the remainder, so a colon inside one survives the round trip.\n const separator = rest.indexOf(':')\n if (separator <= 0 || separator === rest.length - 1) return null\n return {\n nodeId: rest.slice(0, separator),\n interactionId: rest.slice(separator + 1),\n }\n}\n\n/** The collected id for one interaction on one node. */\nexport function nodeInteractionId(\n nodeId: string,\n interactionId: string,\n): string {\n return `${NODE_INTERACTION_ID_PREFIX}${nodeId}:${interactionId}`\n}\n\n/** Minimal node shape this module reads; the canvas node satisfies it. */\nexport interface InteractionNode {\n $id?: string\n interactions?: NodeInteraction[] | null\n /** Denormalized children. Ids are the normalized form and carry nothing. */\n nodes?: unknown\n}\n\n/**\n * Every node in a DENORMALIZED tree, depth-first, parents before children.\n *\n * Composition is what makes this the right input: a layout's chrome and a\n * reusable component's internals are grafted in by then, and their node ids\n * are the graft ids the renderer actually stamps. Collecting from the raw\n * screen document instead would derive a selector for an id that is never on\n * the page — which is the same bug as a stored selector, arrived at from the\n * other direction.\n *\n * A normalized tree (children as id strings) yields only the node it was\n * given; there is nothing to follow, and guessing at a lookup table this\n * module does not have would be worse than answering honestly.\n */\n/** A single node rather than a map of them: it names itself. */\nfunction isInteractionNodeLike(value: unknown): boolean {\n return (\n !!value &&\n typeof value === 'object' &&\n typeof (value as { $id?: unknown }).$id === 'string'\n )\n}\n\nexport function* walkInteractionNodes(\n root: InteractionNode | null | undefined,\n): Generator<InteractionNode> {\n /*\n * A NORMALIZED map is the shape the tenant actually composes.\n *\n * `composeScreenNodes` returns `{ [id]: node }` with children as id\n * STRINGS, and the enricher handed that straight here. The old code took\n * the map itself for a node: it carries no `$id` and no `interactions`, its\n * `nodes` property does not exist, so the walk yielded one useless object\n * and stopped. Every node interaction on every published page was dropped —\n * silently, because an empty automation list is what a page with none looks\n * like.\n *\n * A map is recognisable without guessing: no `$id`, no `nodes` array, and\n * every value an object carrying its own `$id`. Yielding its values is\n * exact rather than a lookup this module would have to invent — the map is\n * already flat, so there is nothing to follow.\n */\n if (root && typeof root === 'object' && !isInteractionNodeLike(root)) {\n const values = Object.values(root as Record<string, unknown>)\n if (values.length && values.every((v) => isInteractionNodeLike(v))) {\n for (const node of values) yield node as InteractionNode\n return\n }\n }\n if (!root || typeof root !== 'object') return\n yield root\n const children = (root as { nodes?: unknown }).nodes\n if (!Array.isArray(children)) return\n for (const child of children) {\n if (child && typeof child === 'object') {\n yield* walkInteractionNodes(child as InteractionNode)\n }\n }\n}\n\n/** One interaction resolved into the runtime's own shape. */\nexport interface CollectedNodeInteraction {\n /**\n * Namespaced with the node id, so two elements carrying the same preset —\n * two Dropdown Panels inserted from the same source — cannot collide, and\n * so a runtime keyed on this id (the once-per-visitor and cooldown caps\n * are) treats them as the separate things they are.\n */\n id: string\n action: HostAction\n}\n\n/**\n * Every interaction in a composed tree, in the runtime's shape.\n *\n * Order follows the nodes, which is document order — a page with two\n * elements listening for the same event fires them in the order they appear,\n * which is the only ordering an author can predict.\n *\n * Disabled interactions are kept, not dropped. The compiler downstream is the\n * one place that decides what runs (it also applies the plan trims), and two\n * places deciding is how a step gets dropped for a reason nobody can find.\n */\n/**\n * Step selectors, re-pointed at the ids the graft actually stamped.\n *\n * A trigger needs no help: the node IS the selector, derived above from the\n * composed id. A STEP is different — it names another element, and it was\n * written when the component was authored, so it holds that component's own\n * id. Grafting an instance re-stamps every id with the instance's prefix, so\n * `[data-aglyn=\"leaf:panel\"]` names nothing on a page that renders\n * `leaf:cmp__inst__panel`, and a mega menu opens nothing.\n *\n * Rewritten only when the bare id is absent AND exactly the prefixed sibling\n * is present: an interaction that legitimately targets a page-level element\n * from inside a component keeps working, and an unresolvable selector is left\n * exactly as written rather than pointed somewhere plausible.\n */\nfunction regraftStepSelectors(\n steps: HostAction['steps'],\n nodeId: string,\n present: ReadonlySet<string>,\n): HostAction['steps'] {\n const boundary = nodeId.lastIndexOf('__')\n if (boundary < 0) return steps\n const prefix = nodeId.slice(0, boundary + 2)\n if (!prefix) return steps\n return (steps ?? []).map((step) => {\n const targetId = nodeIdFromInteractionSelector(\n (step as { selector?: unknown })?.selector,\n )\n if (!targetId || present.has(targetId)) return step\n const grafted = `${prefix}${targetId}`\n if (!present.has(grafted)) return step\n return { ...step, selector: nodeInteractionSelector(grafted) }\n }) as HostAction['steps']\n}\n\nexport function collectNodeInteractions(\n nodes: Iterable<InteractionNode | null | undefined>,\n): CollectedNodeInteraction[] {\n const collected: CollectedNodeInteraction[] = []\n const all = [...nodes]\n const present = new Set(\n all.map((node) => node?.$id).filter((id): id is string => !!id),\n )\n for (const node of all) {\n const nodeId = node?.$id\n if (!nodeId || !Array.isArray(node?.interactions)) continue\n let index = 0\n for (const interaction of node.interactions) {\n if (index >= NODE_MAX_INTERACTIONS) break\n if (!interaction?.trigger?.event) continue\n index += 1\n collected.push({\n id: nodeInteractionId(nodeId, interaction.id || String(index)),\n action: {\n ...interaction,\n ...(Array.isArray((interaction as { steps?: unknown }).steps)\n ? {\n steps: regraftStepSelectors(\n (interaction as unknown as HostAction).steps,\n nodeId,\n present,\n ),\n }\n : {}),\n trigger: {\n ...interaction.trigger,\n // Derived here and nowhere else — see the note above on why it\n // is not stored.\n selector: nodeInteractionSelector(nodeId),\n },\n } as HostAction,\n })\n }\n }\n return collected\n}\n\n/**\n * The interactions on one node with one entry added or replaced.\n *\n * Returns a new array; never mutates the one passed in, which is a MobX\n * observable on the canvas and a plain array everywhere else.\n */\nexport function upsertNodeInteraction(\n interactions: readonly NodeInteraction[] | undefined,\n interaction: NodeInteraction,\n): NodeInteraction[] {\n const current = interactions ?? []\n const existing = current.findIndex((entry) => entry.id === interaction.id)\n if (existing < 0) return [...current, interaction].slice(0, NODE_MAX_INTERACTIONS)\n const next = [...current]\n next[existing] = interaction\n return next\n}\n\n/** The interactions on one node with one removed. */\nexport function removeNodeInteraction(\n interactions: readonly NodeInteraction[] | undefined,\n id: string,\n): NodeInteraction[] {\n return (interactions ?? []).filter((entry) => entry.id !== id)\n}\n"],"names":["NODE_MAX_INTERACTIONS","nodeInteractionSelector","nodeId","nodeIdFromInteractionSelector","selector","match","exec","String","undefined","NODE_INTERACTION_ID_PREFIX","parseNodeInteractionId","id","value","startsWith","rest","slice","length","separator","indexOf","interactionId","nodeInteractionId","isInteractionNodeLike","$id","walkInteractionNodes","root","values","Object","every","v","node","children","nodes","Array","isArray","child","regraftStepSelectors","steps","present","boundary","lastIndexOf","prefix","map","step","targetId","has","grafted","collectNodeInteractions","collected","all","Set","filter","interactions","index","interaction","trigger","event","push","action","upsertNodeInteraction","current","existing","findIndex","entry","next","removeNodeInteraction"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC;AAqCD,wEAAwE,GACxE,OAAO,MAAMA,wBAAwB,GAAE;AAEvC,0EAA0E,GAC1E,OAAO,SAASC,wBAAwBC,MAAc;IACpD,OAAO,CAAC,kBAAkB,EAAEA,OAAO,EAAE,CAAC;AACxC;AAEA,uEAAuE,GACvE,OAAO,SAASC,8BACdC,QAAiB;IAEjB,MAAMC,QAAQ,+BAA+BC,IAAI,CAACC,OAAOH,mBAAAA,WAAY;IACrE,OAAOC,CAAAA,yBAAAA,KAAO,CAAC,EAAE,KAAIG;AACvB;AAEA;;;;;;;;;CASC,GACD,OAAO,MAAMC,6BAA6B,QAAO;AAEjD,8EAA8E,GAC9E,OAAO,SAASC,uBACdC,EAAW;IAEX,MAAMC,QAAQL,OAAOI,aAAAA,KAAM;IAC3B,IAAI,CAACC,MAAMC,UAAU,CAACJ,6BAA6B,OAAO;IAC1D,MAAMK,OAAOF,MAAMG,KAAK,CAACN,2BAA2BO,MAAM;IAC1D,yEAAyE;IACzE,sEAAsE;IACtE,MAAMC,YAAYH,KAAKI,OAAO,CAAC;IAC/B,IAAID,aAAa,KAAKA,cAAcH,KAAKE,MAAM,GAAG,GAAG,OAAO;IAC5D,OAAO;QACLd,QAAQY,KAAKC,KAAK,CAAC,GAAGE;QACtBE,eAAeL,KAAKC,KAAK,CAACE,YAAY;IACxC;AACF;AAEA,sDAAsD,GACtD,OAAO,SAASG,kBACdlB,MAAc,EACdiB,aAAqB;IAErB,OAAO,GAAGV,6BAA6BP,OAAO,CAAC,EAAEiB,eAAe;AAClE;AAUA;;;;;;;;;;;;;CAaC,GACD,8DAA8D,GAC9D,SAASE,sBAAsBT,KAAc;IAC3C,OACE,CAAC,CAACA,SACF,OAAOA,UAAU,YACjB,OAAO,AAACA,MAA4BU,GAAG,KAAK;AAEhD;AAEA,OAAO,UAAUC,qBACfC,IAAwC;IAExC;;;;;;;;;;;;;;;GAeC,GACD,IAAIA,QAAQ,OAAOA,SAAS,YAAY,CAACH,sBAAsBG,OAAO;QACpE,MAAMC,SAASC,OAAOD,MAAM,CAACD;QAC7B,IAAIC,OAAOT,MAAM,IAAIS,OAAOE,KAAK,CAAC,CAACC,IAAMP,sBAAsBO,KAAK;YAClE,KAAK,MAAMC,QAAQJ,OAAQ,MAAMI;YACjC;QACF;IACF;IACA,IAAI,CAACL,QAAQ,OAAOA,SAAS,UAAU;IACvC,MAAMA;IACN,MAAMM,WAAW,AAACN,KAA6BO,KAAK;IACpD,IAAI,CAACC,MAAMC,OAAO,CAACH,WAAW;IAC9B,KAAK,MAAMI,SAASJ,SAAU;QAC5B,IAAII,SAAS,OAAOA,UAAU,UAAU;YACtC,OAAOX,qBAAqBW;QAC9B;IACF;AACF;AAcA;;;;;;;;;;CAUC,GACD;;;;;;;;;;;;;;CAcC,GACD,SAASC,qBACPC,KAA0B,EAC1BlC,MAAc,EACdmC,OAA4B;IAE5B,MAAMC,WAAWpC,OAAOqC,WAAW,CAAC;IACpC,IAAID,WAAW,GAAG,OAAOF;IACzB,MAAMI,SAAStC,OAAOa,KAAK,CAAC,GAAGuB,WAAW;IAC1C,IAAI,CAACE,QAAQ,OAAOJ;IACpB,OAAO,CAACA,gBAAAA,QAAS,EAAE,EAAEK,GAAG,CAAC,CAACC;QACxB,MAAMC,WAAWxC,8BACduC,wBAAD,AAACA,KAAiCtC,QAAQ;QAE5C,IAAI,CAACuC,YAAYN,QAAQO,GAAG,CAACD,WAAW,OAAOD;QAC/C,MAAMG,UAAU,GAAGL,SAASG,UAAU;QACtC,IAAI,CAACN,QAAQO,GAAG,CAACC,UAAU,OAAOH;QAClC,OAAO,aAAKA;YAAMtC,UAAUH,wBAAwB4C;;IACtD;AACF;AAEA,OAAO,SAASC,wBACdf,KAAmD;IAEnD,MAAMgB,YAAwC,EAAE;IAChD,MAAMC,MAAM;WAAIjB;KAAM;IACtB,MAAMM,UAAU,IAAIY,IAClBD,IAAIP,GAAG,CAAC,CAACZ,OAASA,wBAAAA,KAAMP,GAAG,EAAE4B,MAAM,CAAC,CAACvC,KAAqB,CAAC,CAACA;IAE9D,KAAK,MAAMkB,QAAQmB,IAAK;QACtB,MAAM9C,SAAS2B,wBAAAA,KAAMP,GAAG;QACxB,IAAI,CAACpB,UAAU,CAAC8B,MAAMC,OAAO,CAACJ,wBAAAA,KAAMsB,YAAY,GAAG;QACnD,IAAIC,QAAQ;QACZ,KAAK,MAAMC,eAAexB,KAAKsB,YAAY,CAAE;gBAEtCE;YADL,IAAID,SAASpD,uBAAuB;YACpC,IAAI,EAACqD,gCAAAA,uBAAAA,YAAaC,OAAO,qBAApBD,qBAAsBE,KAAK,GAAE;YAClCH,SAAS;YACTL,UAAUS,IAAI,CAAC;gBACb7C,IAAIS,kBAAkBlB,QAAQmD,YAAY1C,EAAE,IAAIJ,OAAO6C;gBACvDK,QAAQ,aACHJ,aACCrB,MAAMC,OAAO,CAAC,AAACoB,YAAoCjB,KAAK,IACxD;oBACEA,OAAOD,qBACL,AAACkB,YAAsCjB,KAAK,EAC5ClC,QACAmC;gBAEJ,IACA,CAAC;oBACLiB,SAAS,aACJD,YAAYC,OAAO;wBACtB,+DAA+D;wBAC/D,iBAAiB;wBACjBlD,UAAUH,wBAAwBC;;;YAGxC;QACF;IACF;IACA,OAAO6C;AACT;AAEA;;;;;CAKC,GACD,OAAO,SAASW,sBACdP,YAAoD,EACpDE,WAA4B;IAE5B,MAAMM,UAAUR,uBAAAA,eAAgB,EAAE;IAClC,MAAMS,WAAWD,QAAQE,SAAS,CAAC,CAACC,QAAUA,MAAMnD,EAAE,KAAK0C,YAAY1C,EAAE;IACzE,IAAIiD,WAAW,GAAG,OAAO;WAAID;QAASN;KAAY,CAACtC,KAAK,CAAC,GAAGf;IAC5D,MAAM+D,OAAO;WAAIJ;KAAQ;IACzBI,IAAI,CAACH,SAAS,GAAGP;IACjB,OAAOU;AACT;AAEA,mDAAmD,GACnD,OAAO,SAASC,sBACdb,YAAoD,EACpDxC,EAAU;IAEV,OAAO,CAACwC,uBAAAA,eAAgB,EAAE,EAAED,MAAM,CAAC,CAACY,QAAUA,MAAMnD,EAAE,KAAKA;AAC7D"}
@@ -0,0 +1,54 @@
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
+ * An image address: `https:`, an inline image, a site path or a fragment.
19
+ *
20
+ * `https:` only, unlike {@link SAFE_HREF_PATTERN} (AGL-1701). An `http:` href is
21
+ * a link a reader chooses to follow and their browser will warn about; an
22
+ * `http:` image is fetched automatically, and on the authenticated console —
23
+ * or on any tenant page served over TLS — it is mixed content, which every
24
+ * current browser blocks outright. The permissive form bought nothing: the
25
+ * image did not render either way, it just failed at the viewer.
26
+ */
27
+ export declare const SAFE_SRC_PATTERN: RegExp;
28
+ /** The props that carry an address. */
29
+ export type NodeUrlProp = 'href' | 'src';
30
+ /** Every prop {@link isSafeNodeUrl} judges, in one place for a walker. */
31
+ export declare const NODE_URL_PROPS: readonly NodeUrlProp[];
32
+ /**
33
+ * Whether `value` is an address this prop may carry.
34
+ *
35
+ * `siteReferences` also admits what the site resolves on its own — a screen
36
+ * or collection link (`screen:…`, `collection:…`) for `href`, a media-library
37
+ * reference (`media:…`) for `src`. The linking elements route the first
38
+ * through the routing map and the image element turns the second into a CDN
39
+ * path, so neither reaches the DOM as written. A page on its own site renders
40
+ * with them; a tree published to another workspace may not carry them, since
41
+ * they name the publisher's screens and files.
42
+ *
43
+ * Judged on the value with its surrounding whitespace removed, which is how
44
+ * the linking elements read a link too.
45
+ */
46
+ export declare function isSafeNodeUrl(prop: NodeUrlProp, value: unknown, options?: {
47
+ siteReferences?: boolean;
48
+ }): boolean;
49
+ /**
50
+ * Whether an address names a scheme, read the way a browser reads one: with
51
+ * the controls and spaces it strips from a URL removed first, so
52
+ * `java\tscript:` names `javascript`. An address with none is relative.
53
+ */
54
+ export declare function hasUrlScheme(value: string): boolean;
@@ -0,0 +1,72 @@
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 addresses an element's `href` and `src` may hold (AGL-784, AGL-2933).
18
+ *
19
+ * `Leaf` spreads a node's props onto its component, and a component passes
20
+ * what it does not consume to its root DOM element, so an `href` or `src`
21
+ * that survives composition is a browser navigating or fetching. One rule
22
+ * says which addresses may get that far, read by the two places a value is
23
+ * handed to a page it was not written on: publishing a tree to another
24
+ * workspace, and substituting a property's value into the tree that binds it.
25
+ */ import { parseMediaRef } from "./media-ref.js";
26
+ import { parseScreenLinkValue, SAFE_HREF_PATTERN } from "./screen-link-value.js";
27
+ /**
28
+ * An image address: `https:`, an inline image, a site path or a fragment.
29
+ *
30
+ * `https:` only, unlike {@link SAFE_HREF_PATTERN} (AGL-1701). An `http:` href is
31
+ * a link a reader chooses to follow and their browser will warn about; an
32
+ * `http:` image is fetched automatically, and on the authenticated console —
33
+ * or on any tenant page served over TLS — it is mixed content, which every
34
+ * current browser blocks outright. The permissive form bought nothing: the
35
+ * image did not render either way, it just failed at the viewer.
36
+ */ export const SAFE_SRC_PATTERN = /^(https:\/\/|data:image\/|\/|#)/i;
37
+ /** Every prop {@link isSafeNodeUrl} judges, in one place for a walker. */ export const NODE_URL_PROPS = [
38
+ 'href',
39
+ 'src'
40
+ ];
41
+ /**
42
+ * Whether `value` is an address this prop may carry.
43
+ *
44
+ * `siteReferences` also admits what the site resolves on its own — a screen
45
+ * or collection link (`screen:…`, `collection:…`) for `href`, a media-library
46
+ * reference (`media:…`) for `src`. The linking elements route the first
47
+ * through the routing map and the image element turns the second into a CDN
48
+ * path, so neither reaches the DOM as written. A page on its own site renders
49
+ * with them; a tree published to another workspace may not carry them, since
50
+ * they name the publisher's screens and files.
51
+ *
52
+ * Judged on the value with its surrounding whitespace removed, which is how
53
+ * the linking elements read a link too.
54
+ */ export function isSafeNodeUrl(prop, value, options) {
55
+ if (typeof value !== 'string') return false;
56
+ const address = value.trim();
57
+ const pattern = prop === 'href' ? SAFE_HREF_PATTERN : SAFE_SRC_PATTERN;
58
+ if (pattern.test(address)) return true;
59
+ if (!(options == null ? void 0 : options.siteReferences)) return false;
60
+ return prop === 'href' ? parseScreenLinkValue(address) !== undefined : parseMediaRef(address) !== null;
61
+ }
62
+ /**
63
+ * Whether an address names a scheme, read the way a browser reads one: with
64
+ * the controls and spaces it strips from a URL removed first, so
65
+ * `java\tscript:` names `javascript`. An address with none is relative.
66
+ */ export function hasUrlScheme(value) {
67
+ // eslint-disable-next-line no-control-regex
68
+ const compact = value.replace(/[\u0000-\u0020\u007f]/g, '');
69
+ return /^[a-z][a-z0-9+.-]*:/i.test(compact);
70
+ }
71
+
72
+ //# sourceMappingURL=node-url-policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/node-url-policy.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 addresses an element's `href` and `src` may hold (AGL-784, AGL-2933).\n *\n * `Leaf` spreads a node's props onto its component, and a component passes\n * what it does not consume to its root DOM element, so an `href` or `src`\n * that survives composition is a browser navigating or fetching. One rule\n * says which addresses may get that far, read by the two places a value is\n * handed to a page it was not written on: publishing a tree to another\n * workspace, and substituting a property's value into the tree that binds it.\n */\n\nimport { parseMediaRef } from './media-ref'\nimport { parseScreenLinkValue, SAFE_HREF_PATTERN } from './screen-link-value'\n\n/**\n * An image address: `https:`, an inline image, a site path or a fragment.\n *\n * `https:` only, unlike {@link SAFE_HREF_PATTERN} (AGL-1701). An `http:` href is\n * a link a reader chooses to follow and their browser will warn about; an\n * `http:` image is fetched automatically, and on the authenticated console —\n * or on any tenant page served over TLS — it is mixed content, which every\n * current browser blocks outright. The permissive form bought nothing: the\n * image did not render either way, it just failed at the viewer.\n */\nexport const SAFE_SRC_PATTERN = /^(https:\\/\\/|data:image\\/|\\/|#)/i\n\n/** The props that carry an address. */\nexport type NodeUrlProp = 'href' | 'src'\n\n/** Every prop {@link isSafeNodeUrl} judges, in one place for a walker. */\nexport const NODE_URL_PROPS: readonly NodeUrlProp[] = ['href', 'src']\n\n/**\n * Whether `value` is an address this prop may carry.\n *\n * `siteReferences` also admits what the site resolves on its own — a screen\n * or collection link (`screen:…`, `collection:…`) for `href`, a media-library\n * reference (`media:…`) for `src`. The linking elements route the first\n * through the routing map and the image element turns the second into a CDN\n * path, so neither reaches the DOM as written. A page on its own site renders\n * with them; a tree published to another workspace may not carry them, since\n * they name the publisher's screens and files.\n *\n * Judged on the value with its surrounding whitespace removed, which is how\n * the linking elements read a link too.\n */\nexport function isSafeNodeUrl(\n prop: NodeUrlProp,\n value: unknown,\n options?: { siteReferences?: boolean },\n): boolean {\n if (typeof value !== 'string') return false\n const address = value.trim()\n const pattern = prop === 'href' ? SAFE_HREF_PATTERN : SAFE_SRC_PATTERN\n if (pattern.test(address)) return true\n if (!options?.siteReferences) return false\n return prop === 'href'\n ? parseScreenLinkValue(address) !== undefined\n : parseMediaRef(address) !== null\n}\n\n/**\n * Whether an address names a scheme, read the way a browser reads one: with\n * the controls and spaces it strips from a URL removed first, so\n * `java\\tscript:` names `javascript`. An address with none is relative.\n */\nexport function hasUrlScheme(value: string): boolean {\n // eslint-disable-next-line no-control-regex\n const compact = value.replace(/[\\u0000-\\u0020\\u007f]/g, '')\n return /^[a-z][a-z0-9+.-]*:/i.test(compact)\n}\n"],"names":["parseMediaRef","parseScreenLinkValue","SAFE_HREF_PATTERN","SAFE_SRC_PATTERN","NODE_URL_PROPS","isSafeNodeUrl","prop","value","options","address","trim","pattern","test","siteReferences","undefined","hasUrlScheme","compact","replace"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;CASC,GAED,SAASA,aAAa,QAAQ,iBAAa;AAC3C,SAASC,oBAAoB,EAAEC,iBAAiB,QAAQ,yBAAqB;AAE7E;;;;;;;;;CASC,GACD,OAAO,MAAMC,mBAAmB,mCAAkC;AAKlE,wEAAwE,GACxE,OAAO,MAAMC,iBAAyC;IAAC;IAAQ;CAAM,CAAA;AAErE;;;;;;;;;;;;;CAaC,GACD,OAAO,SAASC,cACdC,IAAiB,EACjBC,KAAc,EACdC,OAAsC;IAEtC,IAAI,OAAOD,UAAU,UAAU,OAAO;IACtC,MAAME,UAAUF,MAAMG,IAAI;IAC1B,MAAMC,UAAUL,SAAS,SAASJ,oBAAoBC;IACtD,IAAIQ,QAAQC,IAAI,CAACH,UAAU,OAAO;IAClC,IAAI,EAACD,2BAAAA,QAASK,cAAc,GAAE,OAAO;IACrC,OAAOP,SAAS,SACZL,qBAAqBQ,aAAaK,YAClCd,cAAcS,aAAa;AACjC;AAEA;;;;CAIC,GACD,OAAO,SAASM,aAAaR,KAAa;IACxC,4CAA4C;IAC5C,MAAMS,UAAUT,MAAMU,OAAO,CAAC,0BAA0B;IACxD,OAAO,uBAAuBL,IAAI,CAACI;AACrC"}
@@ -0,0 +1,71 @@
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 type { ITimestamp } from '@aglyn/shared-util-timestamp';
18
+ /**
19
+ * In-app notifications (AGL-259): per-user docs at
20
+ * `users/{uid}/notifications/{id}`, written by the Admin SDK (emitters in
21
+ * the API routes + the `notifyAdmins` automation step) and read/marked by
22
+ * their owner. Types follow the common SaaS taxonomy so the console can
23
+ * icon/group them without a registry.
24
+ */
25
+ export type AglynNotificationType = 'billing.invoice' | 'billing.paymentFailed' | 'billing.subscriptionCanceled' | 'billing.usage' | 'team.invite' | 'team.roleChanged' | 'team.hostAccessGranted' | 'content.formSubmission' | 'content.booking' | 'content.order' | 'content.lowStock' | 'content.taskAssigned' | 'content.taskReminder' | 'content.contactAssigned' | 'content.leadAssigned' | 'content.crmDailyDigest' | 'content.insightsDigest' | 'marketplace.review' | 'support.ticketOpened' | 'support.ticketReply' | 'system.announcement' | 'system.pluginVerifierRegression' | 'system.signInMethodRemoved' | 'system.scopeDrift' | 'system.ssoDomainUnverified' | 'system.formSubmissionsPaused' | 'system.visitorRecordsPaused' | 'system.abuseReportUrgent' | 'system.dmcaCounterNotice' | 'system.bandwidthCeilingTripped' | 'system.bandwidthCapEngaged' | 'system.billingWebhookHalfApplied' | 'system.disputeUnattributed';
26
+ export interface AglynNotification {
27
+ $id?: string;
28
+ type: AglynNotificationType;
29
+ title: string;
30
+ body?: string;
31
+ /** Console path the notification opens (e.g. a host inbox). */
32
+ link?: string;
33
+ orgId?: string;
34
+ hostId?: string;
35
+ createdAt?: ITimestamp;
36
+ /** Set by the owner when read; unread while absent. */
37
+ readAt?: ITimestamp | null;
38
+ }
39
+ export declare const NOTIFICATION_TYPE_LABELS: Record<AglynNotificationType, string>;
40
+ /** Preference buckets (AGL-267): the prefix before the dot. */
41
+ export type NotificationCategory = 'billing' | 'team' | 'content' | 'marketplace' | 'support' | 'system';
42
+ export declare const NOTIFICATION_CATEGORY_LABELS: Record<NotificationCategory, string>;
43
+ export declare function notificationCategory(type: AglynNotificationType | string): NotificationCategory;
44
+ /**
45
+ * Per-user mute map stored at `users/{uid}.notificationPrefs`
46
+ * (`{ [category]: false }` mutes); absent categories stay on.
47
+ */
48
+ export declare function notificationMuted(prefs: Record<string, boolean> | null | undefined, type: AglynNotificationType | string): boolean;
49
+ /**
50
+ * The field on `users/{uid}` that holds a person's digest switches
51
+ * (AGL-2619): `{ crmDaily: false }` turns the daily CRM digest off, and an
52
+ * absent key leaves it on. Its own map rather than a key in
53
+ * `notificationPrefs`, because that map is keyed by CATEGORY and read by
54
+ * {@link notificationMuted} — a digest is a schedule a person keeps or
55
+ * drops, not a bucket of types, and one switch governs both the console
56
+ * notification and the email it travels with.
57
+ */
58
+ export declare const DIGEST_PREFS_FIELD = "digestPrefs";
59
+ export declare function crmDailyDigestEnabled(prefs: Record<string, boolean> | null | undefined): boolean;
60
+ /**
61
+ * The field on `users/{uid}` naming the workspaces whose weekly insights a
62
+ * person asked for (AGL-2915): `{ [orgId]: true }`. OPT-IN, unlike the CRM
63
+ * digest — an absent key is off — because a weekly insight is generated, and a
64
+ * generation spends the workspace's credits. The person turns it on beside the
65
+ * answers themselves, where the plan, the release and their permission have
66
+ * already been checked, and off again there or in Notifications; the weekly
67
+ * sweep checks all three again before it spends anything.
68
+ */
69
+ export declare const INSIGHT_DIGESTS_FIELD = "insightDigests";
70
+ /** Whether a person asked for a workspace's weekly insights. */
71
+ export declare function insightDigestSubscribed(value: Record<string, boolean> | null | undefined, orgId: string): boolean;
@@ -0,0 +1,101 @@
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
+ */ export const NOTIFICATION_TYPE_LABELS = {
17
+ 'billing.invoice': 'Invoice available',
18
+ 'billing.paymentFailed': 'Payment failed',
19
+ 'billing.subscriptionCanceled': 'Subscription canceled',
20
+ 'billing.usage': 'Usage threshold',
21
+ 'team.invite': 'Team invite',
22
+ 'team.roleChanged': 'Role changed',
23
+ 'team.hostAccessGranted': 'Site access granted',
24
+ 'content.formSubmission': 'Form submission',
25
+ 'content.booking': 'New booking',
26
+ 'content.order': 'New order',
27
+ 'content.lowStock': 'Low stock',
28
+ 'content.taskAssigned': 'Task assigned to you',
29
+ 'content.taskReminder': 'Task reminder',
30
+ 'content.contactAssigned': 'Contact assigned to you',
31
+ 'content.leadAssigned': 'Lead assigned to you',
32
+ 'content.crmDailyDigest': 'Daily CRM digest',
33
+ 'content.insightsDigest': 'Weekly insights',
34
+ 'marketplace.review': 'Listing review',
35
+ 'support.ticketOpened': 'New support ticket',
36
+ 'support.ticketReply': 'Support ticket reply',
37
+ 'system.announcement': 'Announcement',
38
+ 'system.pluginVerifierRegression': 'Plugin verifier regression',
39
+ 'system.signInMethodRemoved': 'Sign-in method removed',
40
+ 'system.scopeDrift': 'Resources missing a sharing scope',
41
+ 'system.ssoDomainUnverified': 'SSO domain no longer proves ownership',
42
+ 'system.formSubmissionsPaused': 'Form submissions paused',
43
+ 'system.visitorRecordsPaused': 'Sign-ups or leads paused',
44
+ 'system.abuseReportUrgent': 'Urgent abuse report',
45
+ 'system.dmcaCounterNotice': 'DMCA counter-notice',
46
+ 'system.bandwidthCeilingTripped': 'Bandwidth ceiling reached',
47
+ 'system.bandwidthCapEngaged': 'Monthly traffic limit reached',
48
+ 'system.billingWebhookHalfApplied': 'Billing webhook half applied',
49
+ 'system.disputeUnattributed': 'Card dispute with no owner'
50
+ };
51
+ export const NOTIFICATION_CATEGORY_LABELS = {
52
+ billing: 'Billing',
53
+ team: 'Team & access',
54
+ content: 'Forms & bookings',
55
+ marketplace: 'Marketplace',
56
+ support: 'Support',
57
+ system: 'Product & system'
58
+ };
59
+ export function notificationCategory(type) {
60
+ const prefix = String(type).split('.')[0];
61
+ return [
62
+ 'billing',
63
+ 'team',
64
+ 'content',
65
+ 'marketplace',
66
+ 'support',
67
+ 'system'
68
+ ].includes(prefix) ? prefix : 'system';
69
+ }
70
+ /**
71
+ * Per-user mute map stored at `users/{uid}.notificationPrefs`
72
+ * (`{ [category]: false }` mutes); absent categories stay on.
73
+ */ export function notificationMuted(prefs, type) {
74
+ return (prefs == null ? void 0 : prefs[notificationCategory(type)]) === false;
75
+ }
76
+ /**
77
+ * The field on `users/{uid}` that holds a person's digest switches
78
+ * (AGL-2619): `{ crmDaily: false }` turns the daily CRM digest off, and an
79
+ * absent key leaves it on. Its own map rather than a key in
80
+ * `notificationPrefs`, because that map is keyed by CATEGORY and read by
81
+ * {@link notificationMuted} — a digest is a schedule a person keeps or
82
+ * drops, not a bucket of types, and one switch governs both the console
83
+ * notification and the email it travels with.
84
+ */ export const DIGEST_PREFS_FIELD = 'digestPrefs';
85
+ export function crmDailyDigestEnabled(prefs) {
86
+ return (prefs == null ? void 0 : prefs['crmDaily']) !== false;
87
+ }
88
+ /**
89
+ * The field on `users/{uid}` naming the workspaces whose weekly insights a
90
+ * person asked for (AGL-2915): `{ [orgId]: true }`. OPT-IN, unlike the CRM
91
+ * digest — an absent key is off — because a weekly insight is generated, and a
92
+ * generation spends the workspace's credits. The person turns it on beside the
93
+ * answers themselves, where the plan, the release and their permission have
94
+ * already been checked, and off again there or in Notifications; the weekly
95
+ * sweep checks all three again before it spends anything.
96
+ */ export const INSIGHT_DIGESTS_FIELD = 'insightDigests';
97
+ /** Whether a person asked for a workspace's weekly insights. */ export function insightDigestSubscribed(value, orgId) {
98
+ return Boolean(orgId) && (value == null ? void 0 : value[orgId]) === true;
99
+ }
100
+
101
+ //# sourceMappingURL=notifications.js.map