@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,180 @@
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
+ * A MEMBER'S OWN ADDRESSES (AGL-2975): the pure half.
19
+ *
20
+ * A member signs in with one address and may write from others — a Gmail
21
+ * send-as alias on an outbound domain, a role mailbox their client lets them
22
+ * send as. Anything that asks "did one of our own people write this?" by the
23
+ * sign-in address alone answers no for every one of those messages. This
24
+ * module is what such a reader needs instead: the addresses a member has
25
+ * added in a workspace, which of them the member has CONFIRMED, and which
26
+ * member an address belongs to.
27
+ *
28
+ * ## Confirmed, or nothing
29
+ *
30
+ * An address a member merely typed is a claim. Treating it as theirs would
31
+ * let a typo — or a prospect's address pasted into the wrong field — decide
32
+ * whose timeline a stranger's mail lands on. So an address counts only once
33
+ * a confirmation link sent TO it was opened by the member who added it, and
34
+ * every reader here that answers "whose is this" reads confirmed addresses
35
+ * and nothing else. `verifiedAtMs` is written by the server alone; the
36
+ * rules deny the whole collection to every client.
37
+ *
38
+ * ## Org-scoped, beside the roster
39
+ *
40
+ * `orgs/{orgId}/memberEmailAliases/{uid}` — one document per member who has
41
+ * added an address, keyed like the roster row it belongs to. Kept OFF the
42
+ * roster row on purpose: `orgs/{orgId}/members/{uid}` is the permissions
43
+ * document every rules evaluation reads, it is readable by every org-wide
44
+ * member, and a write that lands on it while the member is being removed
45
+ * can conjure a membership back into existence (AGL-1766). An address
46
+ * somebody has not yet confirmed is not the team's business, and a stray
47
+ * write here grants nothing: every reader intersects it with the roster.
48
+ *
49
+ * ## Normalized the way member addresses are
50
+ *
51
+ * Trimmed and lower-cased by `normalizeContactEmail`, the function every
52
+ * member address and every message address is compared through, so an
53
+ * alias typed `Avery@Example.ORG ` matches a From of `avery@example.org`. Plus
54
+ * addressing is NOT folded, for the reason `account-emails.ts` gives:
55
+ * `a+b@x.com` is another mailbox almost everywhere but Gmail, so
56
+ * `avery+news@example.org` is a different address from a confirmed
57
+ * `avery@example.org`, exactly as it is from a sign-in address of that name.
58
+ */
59
+ /** The collection under an org that holds each member's added addresses. */
60
+ export declare const MEMBER_EMAIL_ALIASES_COLLECTION = "memberEmailAliases";
61
+ /**
62
+ * How many addresses one member may add in one workspace, unconfirmed
63
+ * ones included. Each costs a confirmation email, and the point is "the
64
+ * address my outreach leaves from", not address collecting — the same
65
+ * ceiling `MAX_ACCOUNT_EMAILS` puts on an account.
66
+ */
67
+ export declare const MEMBER_EMAIL_ALIASES_MAX = 5;
68
+ /** How long a confirmation link works: a day, as an account address's does. */
69
+ export declare const MEMBER_EMAIL_ALIAS_CONFIRM_TTL_MS: number;
70
+ /** The query parameter a confirmation link carries its token in. */
71
+ export declare const MEMBER_EMAIL_ALIAS_CONFIRM_PARAM = "confirmEmailAlias";
72
+ /**
73
+ * The console route a member manages their addresses through. One spelling
74
+ * for the route file's readers and every card that calls it.
75
+ */
76
+ export declare const MEMBER_EMAIL_ALIASES_ROUTE = "/api/orgs/members/email-aliases";
77
+ /** One address a member added. */
78
+ export interface MemberEmailAlias {
79
+ /** Normalized — see the module comment. */
80
+ address: string;
81
+ /**
82
+ * When the member added it. A confirmation link names this instant, so
83
+ * removing the address and adding it again retires every link sent for
84
+ * the earlier one.
85
+ */
86
+ addedAtMs: number;
87
+ /**
88
+ * When the member who added it opened a confirmation link. Absent until
89
+ * then, and an address without it is never treated as theirs.
90
+ */
91
+ verifiedAtMs?: number;
92
+ }
93
+ /** `orgs/{orgId}/memberEmailAliases/{uid}`. */
94
+ export interface MemberEmailAliasesDocument {
95
+ uid: string;
96
+ aliases: MemberEmailAlias[];
97
+ updatedAtMs: number;
98
+ }
99
+ /** A stored or typed address, normalized, or `null` when it is not one. */
100
+ export declare function normalizeMemberEmailAlias(input: unknown): string | null;
101
+ /**
102
+ * The addresses a stored document holds, read defensively: an entry that is
103
+ * not an address is skipped, a repeated address keeps its first entry, and
104
+ * the list is bounded by {@link MEMBER_EMAIL_ALIASES_MAX}, so no reader walks
105
+ * more than the writer could ever have stored.
106
+ */
107
+ export declare function readMemberEmailAliases(document: unknown): MemberEmailAlias[];
108
+ /** Whether the member who added the address has confirmed it. */
109
+ export declare function isVerifiedMemberEmailAlias(alias: Pick<MemberEmailAlias, 'verifiedAtMs'> | null | undefined): boolean;
110
+ /**
111
+ * The CONFIRMED addresses a stored document holds — the only answer any
112
+ * reader deciding "whose address is this" may use.
113
+ */
114
+ export declare function verifiedMemberEmailAliases(document: unknown): string[];
115
+ /** One member, as a reader of their addresses needs them. */
116
+ export interface MemberAddresses {
117
+ /** The address they sign in with, as their roster row carries it. */
118
+ email?: string | null;
119
+ /**
120
+ * The addresses they have confirmed — {@link verifiedMemberEmailAliases}.
121
+ * An unconfirmed address never belongs here.
122
+ */
123
+ verifiedAliases?: readonly string[];
124
+ }
125
+ /**
126
+ * Every address that is this member's — the sign-in address first, then
127
+ * each confirmed alias — normalized, each once.
128
+ */
129
+ export declare function memberEmailAddresses(member: MemberAddresses | null | undefined): string[];
130
+ /**
131
+ * The member an address belongs to, or `null`.
132
+ *
133
+ * A sign-in address decides first: one account signs in with it, so it
134
+ * names one person. Otherwise the member who confirmed it as an alias —
135
+ * when exactly one did. Two members who each confirmed a shared mailbox
136
+ * both own it, and naming either as the author of its mail would be a
137
+ * guess, so the answer is nobody in particular. Whether the address is
138
+ * the TEAM's is a different question, which {@link memberEmailAddresses}
139
+ * over the whole roster answers yes to either way.
140
+ */
141
+ export declare function findMemberByEmailAddress<T extends MemberAddresses>(members: readonly T[], address: unknown): T | null;
142
+ /** Why an address could not be added. */
143
+ export type MemberEmailAliasAddRefusal = 'invalid-address' | 'sign-in-address' | 'reserved-domain' | 'already-confirmed' | 'limit-reached';
144
+ export type MemberEmailAliasAddVerdict = {
145
+ ok: true;
146
+ address: string;
147
+ /**
148
+ * The unconfirmed entry already holding the address, or `null` when it
149
+ * is new. Adding an address again is how a member asks for another
150
+ * link, so an unconfirmed duplicate is not a refusal.
151
+ */
152
+ existing: MemberEmailAlias | null;
153
+ } | {
154
+ ok: false;
155
+ refusal: MemberEmailAliasAddRefusal;
156
+ message: string;
157
+ };
158
+ /**
159
+ * May this member add this address? Pure, so the card that greys out the
160
+ * field and the route that refuses the write give one answer.
161
+ *
162
+ * `reservedDomains` are domains the deployment itself receives mail at —
163
+ * the capture domain — whose addresses are the platform's, and a
164
+ * confirmation email sent to one would only be read back by the platform.
165
+ */
166
+ export declare function evaluateMemberEmailAliasAdd(input: {
167
+ address: unknown;
168
+ signInEmail?: string | null;
169
+ aliases: readonly MemberEmailAlias[];
170
+ reservedDomains?: readonly string[];
171
+ }): MemberEmailAliasAddVerdict;
172
+ /** One address as the management route answers it. */
173
+ export interface MemberEmailAliasRow {
174
+ address: string;
175
+ addedAtMs: number;
176
+ verified: boolean;
177
+ verifiedAtMs: number | null;
178
+ }
179
+ /** The rows the management route answers with, in the order they were added. */
180
+ export declare function memberEmailAliasRows(aliases: readonly MemberEmailAlias[]): MemberEmailAliasRow[];
@@ -0,0 +1,217 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ /**
3
+ * @license
4
+ * Copyright 2026 Aglyn LLC
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */ import { ACCOUNT_EMAIL_MAX_LENGTH, ACCOUNT_EMAIL_PATTERN } from "./account-emails.js";
18
+ import { normalizeContactEmail } from "./contacts.js";
19
+ /**
20
+ * A MEMBER'S OWN ADDRESSES (AGL-2975): the pure half.
21
+ *
22
+ * A member signs in with one address and may write from others — a Gmail
23
+ * send-as alias on an outbound domain, a role mailbox their client lets them
24
+ * send as. Anything that asks "did one of our own people write this?" by the
25
+ * sign-in address alone answers no for every one of those messages. This
26
+ * module is what such a reader needs instead: the addresses a member has
27
+ * added in a workspace, which of them the member has CONFIRMED, and which
28
+ * member an address belongs to.
29
+ *
30
+ * ## Confirmed, or nothing
31
+ *
32
+ * An address a member merely typed is a claim. Treating it as theirs would
33
+ * let a typo — or a prospect's address pasted into the wrong field — decide
34
+ * whose timeline a stranger's mail lands on. So an address counts only once
35
+ * a confirmation link sent TO it was opened by the member who added it, and
36
+ * every reader here that answers "whose is this" reads confirmed addresses
37
+ * and nothing else. `verifiedAtMs` is written by the server alone; the
38
+ * rules deny the whole collection to every client.
39
+ *
40
+ * ## Org-scoped, beside the roster
41
+ *
42
+ * `orgs/{orgId}/memberEmailAliases/{uid}` — one document per member who has
43
+ * added an address, keyed like the roster row it belongs to. Kept OFF the
44
+ * roster row on purpose: `orgs/{orgId}/members/{uid}` is the permissions
45
+ * document every rules evaluation reads, it is readable by every org-wide
46
+ * member, and a write that lands on it while the member is being removed
47
+ * can conjure a membership back into existence (AGL-1766). An address
48
+ * somebody has not yet confirmed is not the team's business, and a stray
49
+ * write here grants nothing: every reader intersects it with the roster.
50
+ *
51
+ * ## Normalized the way member addresses are
52
+ *
53
+ * Trimmed and lower-cased by `normalizeContactEmail`, the function every
54
+ * member address and every message address is compared through, so an
55
+ * alias typed `Avery@Example.ORG ` matches a From of `avery@example.org`. Plus
56
+ * addressing is NOT folded, for the reason `account-emails.ts` gives:
57
+ * `a+b@x.com` is another mailbox almost everywhere but Gmail, so
58
+ * `avery+news@example.org` is a different address from a confirmed
59
+ * `avery@example.org`, exactly as it is from a sign-in address of that name.
60
+ */ /** The collection under an org that holds each member's added addresses. */ export const MEMBER_EMAIL_ALIASES_COLLECTION = 'memberEmailAliases';
61
+ /**
62
+ * How many addresses one member may add in one workspace, unconfirmed
63
+ * ones included. Each costs a confirmation email, and the point is "the
64
+ * address my outreach leaves from", not address collecting — the same
65
+ * ceiling `MAX_ACCOUNT_EMAILS` puts on an account.
66
+ */ export const MEMBER_EMAIL_ALIASES_MAX = 5;
67
+ /** How long a confirmation link works: a day, as an account address's does. */ export const MEMBER_EMAIL_ALIAS_CONFIRM_TTL_MS = 24 * 60 * 60 * 1000;
68
+ /** The query parameter a confirmation link carries its token in. */ export const MEMBER_EMAIL_ALIAS_CONFIRM_PARAM = 'confirmEmailAlias';
69
+ /**
70
+ * The console route a member manages their addresses through. One spelling
71
+ * for the route file's readers and every card that calls it.
72
+ */ export const MEMBER_EMAIL_ALIASES_ROUTE = '/api/orgs/members/email-aliases';
73
+ /** A stored or typed address, normalized, or `null` when it is not one. */ export function normalizeMemberEmailAlias(input) {
74
+ return normalizeContactEmail(input);
75
+ }
76
+ const positiveMs = (value)=>typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : null;
77
+ /**
78
+ * The addresses a stored document holds, read defensively: an entry that is
79
+ * not an address is skipped, a repeated address keeps its first entry, and
80
+ * the list is bounded by {@link MEMBER_EMAIL_ALIASES_MAX}, so no reader walks
81
+ * more than the writer could ever have stored.
82
+ */ export function readMemberEmailAliases(document) {
83
+ const raw = document == null ? void 0 : document.aliases;
84
+ if (!Array.isArray(raw)) return [];
85
+ const seen = new Set();
86
+ const aliases = [];
87
+ for (const entry of raw){
88
+ if (aliases.length >= MEMBER_EMAIL_ALIASES_MAX) break;
89
+ const record = entry != null ? entry : {};
90
+ const address = normalizeMemberEmailAlias(record['address']);
91
+ const addedAtMs = positiveMs(record['addedAtMs']);
92
+ if (!address || addedAtMs === null || seen.has(address)) continue;
93
+ seen.add(address);
94
+ const verifiedAtMs = positiveMs(record['verifiedAtMs']);
95
+ aliases.push(_extends({
96
+ address,
97
+ addedAtMs
98
+ }, verifiedAtMs !== null ? {
99
+ verifiedAtMs
100
+ } : {}));
101
+ }
102
+ return aliases;
103
+ }
104
+ /** Whether the member who added the address has confirmed it. */ export function isVerifiedMemberEmailAlias(alias) {
105
+ return positiveMs(alias == null ? void 0 : alias.verifiedAtMs) !== null;
106
+ }
107
+ /**
108
+ * The CONFIRMED addresses a stored document holds — the only answer any
109
+ * reader deciding "whose address is this" may use.
110
+ */ export function verifiedMemberEmailAliases(document) {
111
+ return readMemberEmailAliases(document).filter(isVerifiedMemberEmailAlias).map((alias)=>alias.address);
112
+ }
113
+ /**
114
+ * Every address that is this member's — the sign-in address first, then
115
+ * each confirmed alias — normalized, each once.
116
+ */ export function memberEmailAddresses(member) {
117
+ var _ref;
118
+ const addresses = [];
119
+ const add = (value)=>{
120
+ const address = normalizeMemberEmailAlias(value);
121
+ if (address && !addresses.includes(address)) addresses.push(address);
122
+ };
123
+ add(member == null ? void 0 : member.email);
124
+ for (const alias of (_ref = member == null ? void 0 : member.verifiedAliases) != null ? _ref : [])add(alias);
125
+ return addresses;
126
+ }
127
+ /**
128
+ * The member an address belongs to, or `null`.
129
+ *
130
+ * A sign-in address decides first: one account signs in with it, so it
131
+ * names one person. Otherwise the member who confirmed it as an alias —
132
+ * when exactly one did. Two members who each confirmed a shared mailbox
133
+ * both own it, and naming either as the author of its mail would be a
134
+ * guess, so the answer is nobody in particular. Whether the address is
135
+ * the TEAM's is a different question, which {@link memberEmailAddresses}
136
+ * over the whole roster answers yes to either way.
137
+ */ export function findMemberByEmailAddress(members, address) {
138
+ const wanted = normalizeMemberEmailAlias(address);
139
+ if (!wanted) return null;
140
+ const bySignIn = members.find((member)=>normalizeMemberEmailAlias(member.email) === wanted);
141
+ if (bySignIn) return bySignIn;
142
+ const holders = members.filter((member)=>{
143
+ var _member_verifiedAliases;
144
+ return ((_member_verifiedAliases = member.verifiedAliases) != null ? _member_verifiedAliases : []).some((alias)=>normalizeMemberEmailAlias(alias) === wanted);
145
+ });
146
+ return holders.length === 1 ? holders[0] : null;
147
+ }
148
+ /**
149
+ * May this member add this address? Pure, so the card that greys out the
150
+ * field and the route that refuses the write give one answer.
151
+ *
152
+ * `reservedDomains` are domains the deployment itself receives mail at —
153
+ * the capture domain — whose addresses are the platform's, and a
154
+ * confirmation email sent to one would only be read back by the platform.
155
+ */ export function evaluateMemberEmailAliasAdd(input) {
156
+ var _input_reservedDomains, _input_aliases_find;
157
+ // Stored only when it is a mailbox address in the narrower shape an
158
+ // account address must have: the address is mailed a link and printed in
159
+ // the console, so a string the loose comparison pattern admits — quotes,
160
+ // angle brackets, commas — is refused here rather than carried around.
161
+ const address = normalizeMemberEmailAlias(input.address);
162
+ if (!address || address.length > ACCOUNT_EMAIL_MAX_LENGTH || !ACCOUNT_EMAIL_PATTERN.test(address)) {
163
+ return {
164
+ ok: false,
165
+ refusal: 'invalid-address',
166
+ message: 'Enter a valid email address.'
167
+ };
168
+ }
169
+ if (address === normalizeMemberEmailAlias(input.signInEmail)) {
170
+ return {
171
+ ok: false,
172
+ refusal: 'sign-in-address',
173
+ message: 'That is the address you sign in with, which already counts as yours.'
174
+ };
175
+ }
176
+ const domain = address.slice(address.lastIndexOf('@') + 1);
177
+ const reserved = ((_input_reservedDomains = input.reservedDomains) != null ? _input_reservedDomains : []).map((value)=>String(value).trim().toLowerCase());
178
+ if (reserved.includes(domain)) {
179
+ return {
180
+ ok: false,
181
+ refusal: 'reserved-domain',
182
+ message: 'Addresses at that domain belong to the platform and cannot be added.'
183
+ };
184
+ }
185
+ const existing = (_input_aliases_find = input.aliases.find((alias)=>alias.address === address)) != null ? _input_aliases_find : null;
186
+ if (existing && isVerifiedMemberEmailAlias(existing)) {
187
+ return {
188
+ ok: false,
189
+ refusal: 'already-confirmed',
190
+ message: 'That address is already confirmed.'
191
+ };
192
+ }
193
+ if (!existing && input.aliases.length >= MEMBER_EMAIL_ALIASES_MAX) {
194
+ return {
195
+ ok: false,
196
+ refusal: 'limit-reached',
197
+ message: `You can add up to ${MEMBER_EMAIL_ALIASES_MAX} addresses. Remove one before adding another.`
198
+ };
199
+ }
200
+ return {
201
+ ok: true,
202
+ address,
203
+ existing
204
+ };
205
+ }
206
+ /** The rows the management route answers with, in the order they were added. */ export function memberEmailAliasRows(aliases) {
207
+ return [
208
+ ...aliases
209
+ ].sort((a, b)=>a.addedAtMs - b.addedAtMs).map((alias)=>({
210
+ address: alias.address,
211
+ addedAtMs: alias.addedAtMs,
212
+ verified: isVerifiedMemberEmailAlias(alias),
213
+ verifiedAtMs: positiveMs(alias.verifiedAtMs)
214
+ }));
215
+ }
216
+
217
+ //# sourceMappingURL=member-email-aliases.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/member-email-aliases.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 { ACCOUNT_EMAIL_MAX_LENGTH, ACCOUNT_EMAIL_PATTERN } from './account-emails'\nimport { normalizeContactEmail } from './contacts'\n\n/**\n * A MEMBER'S OWN ADDRESSES (AGL-2975): the pure half.\n *\n * A member signs in with one address and may write from others — a Gmail\n * send-as alias on an outbound domain, a role mailbox their client lets them\n * send as. Anything that asks \"did one of our own people write this?\" by the\n * sign-in address alone answers no for every one of those messages. This\n * module is what such a reader needs instead: the addresses a member has\n * added in a workspace, which of them the member has CONFIRMED, and which\n * member an address belongs to.\n *\n * ## Confirmed, or nothing\n *\n * An address a member merely typed is a claim. Treating it as theirs would\n * let a typo — or a prospect's address pasted into the wrong field — decide\n * whose timeline a stranger's mail lands on. So an address counts only once\n * a confirmation link sent TO it was opened by the member who added it, and\n * every reader here that answers \"whose is this\" reads confirmed addresses\n * and nothing else. `verifiedAtMs` is written by the server alone; the\n * rules deny the whole collection to every client.\n *\n * ## Org-scoped, beside the roster\n *\n * `orgs/{orgId}/memberEmailAliases/{uid}` — one document per member who has\n * added an address, keyed like the roster row it belongs to. Kept OFF the\n * roster row on purpose: `orgs/{orgId}/members/{uid}` is the permissions\n * document every rules evaluation reads, it is readable by every org-wide\n * member, and a write that lands on it while the member is being removed\n * can conjure a membership back into existence (AGL-1766). An address\n * somebody has not yet confirmed is not the team's business, and a stray\n * write here grants nothing: every reader intersects it with the roster.\n *\n * ## Normalized the way member addresses are\n *\n * Trimmed and lower-cased by `normalizeContactEmail`, the function every\n * member address and every message address is compared through, so an\n * alias typed `Avery@Example.ORG ` matches a From of `avery@example.org`. Plus\n * addressing is NOT folded, for the reason `account-emails.ts` gives:\n * `a+b@x.com` is another mailbox almost everywhere but Gmail, so\n * `avery+news@example.org` is a different address from a confirmed\n * `avery@example.org`, exactly as it is from a sign-in address of that name.\n */\n\n/** The collection under an org that holds each member's added addresses. */\nexport const MEMBER_EMAIL_ALIASES_COLLECTION = 'memberEmailAliases'\n\n/**\n * How many addresses one member may add in one workspace, unconfirmed\n * ones included. Each costs a confirmation email, and the point is \"the\n * address my outreach leaves from\", not address collecting — the same\n * ceiling `MAX_ACCOUNT_EMAILS` puts on an account.\n */\nexport const MEMBER_EMAIL_ALIASES_MAX = 5\n\n/** How long a confirmation link works: a day, as an account address's does. */\nexport const MEMBER_EMAIL_ALIAS_CONFIRM_TTL_MS = 24 * 60 * 60 * 1000\n\n/** The query parameter a confirmation link carries its token in. */\nexport const MEMBER_EMAIL_ALIAS_CONFIRM_PARAM = 'confirmEmailAlias'\n\n/**\n * The console route a member manages their addresses through. One spelling\n * for the route file's readers and every card that calls it.\n */\nexport const MEMBER_EMAIL_ALIASES_ROUTE = '/api/orgs/members/email-aliases'\n\n/** One address a member added. */\nexport interface MemberEmailAlias {\n /** Normalized — see the module comment. */\n address: string\n /**\n * When the member added it. A confirmation link names this instant, so\n * removing the address and adding it again retires every link sent for\n * the earlier one.\n */\n addedAtMs: number\n /**\n * When the member who added it opened a confirmation link. Absent until\n * then, and an address without it is never treated as theirs.\n */\n verifiedAtMs?: number\n}\n\n/** `orgs/{orgId}/memberEmailAliases/{uid}`. */\nexport interface MemberEmailAliasesDocument {\n uid: string\n aliases: MemberEmailAlias[]\n updatedAtMs: number\n}\n\n/** A stored or typed address, normalized, or `null` when it is not one. */\nexport function normalizeMemberEmailAlias(input: unknown): string | null {\n return normalizeContactEmail(input)\n}\n\nconst positiveMs = (value: unknown): number | null =>\n typeof value === 'number' && Number.isFinite(value) && value > 0 ? value : null\n\n/**\n * The addresses a stored document holds, read defensively: an entry that is\n * not an address is skipped, a repeated address keeps its first entry, and\n * the list is bounded by {@link MEMBER_EMAIL_ALIASES_MAX}, so no reader walks\n * more than the writer could ever have stored.\n */\nexport function readMemberEmailAliases(document: unknown): MemberEmailAlias[] {\n const raw = (document as { aliases?: unknown } | null | undefined)?.aliases\n if (!Array.isArray(raw)) return []\n const seen = new Set<string>()\n const aliases: MemberEmailAlias[] = []\n for (const entry of raw) {\n if (aliases.length >= MEMBER_EMAIL_ALIASES_MAX) break\n const record = (entry ?? {}) as Record<string, unknown>\n const address = normalizeMemberEmailAlias(record['address'])\n const addedAtMs = positiveMs(record['addedAtMs'])\n if (!address || addedAtMs === null || seen.has(address)) continue\n seen.add(address)\n const verifiedAtMs = positiveMs(record['verifiedAtMs'])\n aliases.push({ address, addedAtMs, ...(verifiedAtMs !== null ? { verifiedAtMs } : {}) })\n }\n return aliases\n}\n\n/** Whether the member who added the address has confirmed it. */\nexport function isVerifiedMemberEmailAlias(\n alias: Pick<MemberEmailAlias, 'verifiedAtMs'> | null | undefined,\n): boolean {\n return positiveMs(alias?.verifiedAtMs) !== null\n}\n\n/**\n * The CONFIRMED addresses a stored document holds — the only answer any\n * reader deciding \"whose address is this\" may use.\n */\nexport function verifiedMemberEmailAliases(document: unknown): string[] {\n return readMemberEmailAliases(document)\n .filter(isVerifiedMemberEmailAlias)\n .map((alias) => alias.address)\n}\n\n/** One member, as a reader of their addresses needs them. */\nexport interface MemberAddresses {\n /** The address they sign in with, as their roster row carries it. */\n email?: string | null\n /**\n * The addresses they have confirmed — {@link verifiedMemberEmailAliases}.\n * An unconfirmed address never belongs here.\n */\n verifiedAliases?: readonly string[]\n}\n\n/**\n * Every address that is this member's — the sign-in address first, then\n * each confirmed alias — normalized, each once.\n */\nexport function memberEmailAddresses(member: MemberAddresses | null | undefined): string[] {\n const addresses: string[] = []\n const add = (value: unknown) => {\n const address = normalizeMemberEmailAlias(value)\n if (address && !addresses.includes(address)) addresses.push(address)\n }\n add(member?.email)\n for (const alias of member?.verifiedAliases ?? []) add(alias)\n return addresses\n}\n\n/**\n * The member an address belongs to, or `null`.\n *\n * A sign-in address decides first: one account signs in with it, so it\n * names one person. Otherwise the member who confirmed it as an alias —\n * when exactly one did. Two members who each confirmed a shared mailbox\n * both own it, and naming either as the author of its mail would be a\n * guess, so the answer is nobody in particular. Whether the address is\n * the TEAM's is a different question, which {@link memberEmailAddresses}\n * over the whole roster answers yes to either way.\n */\nexport function findMemberByEmailAddress<T extends MemberAddresses>(\n members: readonly T[],\n address: unknown,\n): T | null {\n const wanted = normalizeMemberEmailAlias(address)\n if (!wanted) return null\n const bySignIn = members.find((member) => normalizeMemberEmailAlias(member.email) === wanted)\n if (bySignIn) return bySignIn\n const holders = members.filter((member) =>\n (member.verifiedAliases ?? []).some((alias) => normalizeMemberEmailAlias(alias) === wanted),\n )\n return holders.length === 1 ? holders[0] : null\n}\n\n/** Why an address could not be added. */\nexport type MemberEmailAliasAddRefusal =\n | 'invalid-address'\n | 'sign-in-address'\n | 'reserved-domain'\n | 'already-confirmed'\n | 'limit-reached'\n\nexport type MemberEmailAliasAddVerdict =\n | {\n ok: true\n address: string\n /**\n * The unconfirmed entry already holding the address, or `null` when it\n * is new. Adding an address again is how a member asks for another\n * link, so an unconfirmed duplicate is not a refusal.\n */\n existing: MemberEmailAlias | null\n }\n | { ok: false; refusal: MemberEmailAliasAddRefusal; message: string }\n\n/**\n * May this member add this address? Pure, so the card that greys out the\n * field and the route that refuses the write give one answer.\n *\n * `reservedDomains` are domains the deployment itself receives mail at —\n * the capture domain — whose addresses are the platform's, and a\n * confirmation email sent to one would only be read back by the platform.\n */\nexport function evaluateMemberEmailAliasAdd(input: {\n address: unknown\n signInEmail?: string | null\n aliases: readonly MemberEmailAlias[]\n reservedDomains?: readonly string[]\n}): MemberEmailAliasAddVerdict {\n // Stored only when it is a mailbox address in the narrower shape an\n // account address must have: the address is mailed a link and printed in\n // the console, so a string the loose comparison pattern admits — quotes,\n // angle brackets, commas — is refused here rather than carried around.\n const address = normalizeMemberEmailAlias(input.address)\n if (!address || address.length > ACCOUNT_EMAIL_MAX_LENGTH || !ACCOUNT_EMAIL_PATTERN.test(address)) {\n return { ok: false, refusal: 'invalid-address', message: 'Enter a valid email address.' }\n }\n if (address === normalizeMemberEmailAlias(input.signInEmail)) {\n return {\n ok: false,\n refusal: 'sign-in-address',\n message: 'That is the address you sign in with, which already counts as yours.',\n }\n }\n const domain = address.slice(address.lastIndexOf('@') + 1)\n const reserved = (input.reservedDomains ?? []).map((value) => String(value).trim().toLowerCase())\n if (reserved.includes(domain)) {\n return {\n ok: false,\n refusal: 'reserved-domain',\n message: 'Addresses at that domain belong to the platform and cannot be added.',\n }\n }\n const existing = input.aliases.find((alias) => alias.address === address) ?? null\n if (existing && isVerifiedMemberEmailAlias(existing)) {\n return { ok: false, refusal: 'already-confirmed', message: 'That address is already confirmed.' }\n }\n if (!existing && input.aliases.length >= MEMBER_EMAIL_ALIASES_MAX) {\n return {\n ok: false,\n refusal: 'limit-reached',\n message: `You can add up to ${MEMBER_EMAIL_ALIASES_MAX} addresses. Remove one before adding another.`,\n }\n }\n return { ok: true, address, existing }\n}\n\n/** One address as the management route answers it. */\nexport interface MemberEmailAliasRow {\n address: string\n addedAtMs: number\n verified: boolean\n verifiedAtMs: number | null\n}\n\n/** The rows the management route answers with, in the order they were added. */\nexport function memberEmailAliasRows(aliases: readonly MemberEmailAlias[]): MemberEmailAliasRow[] {\n return [...aliases]\n .sort((a, b) => a.addedAtMs - b.addedAtMs)\n .map((alias) => ({\n address: alias.address,\n addedAtMs: alias.addedAtMs,\n verified: isVerifiedMemberEmailAlias(alias),\n verifiedAtMs: positiveMs(alias.verifiedAtMs),\n }))\n}\n"],"names":["ACCOUNT_EMAIL_MAX_LENGTH","ACCOUNT_EMAIL_PATTERN","normalizeContactEmail","MEMBER_EMAIL_ALIASES_COLLECTION","MEMBER_EMAIL_ALIASES_MAX","MEMBER_EMAIL_ALIAS_CONFIRM_TTL_MS","MEMBER_EMAIL_ALIAS_CONFIRM_PARAM","MEMBER_EMAIL_ALIASES_ROUTE","normalizeMemberEmailAlias","input","positiveMs","value","Number","isFinite","readMemberEmailAliases","document","raw","aliases","Array","isArray","seen","Set","entry","length","record","address","addedAtMs","has","add","verifiedAtMs","push","isVerifiedMemberEmailAlias","alias","verifiedMemberEmailAliases","filter","map","memberEmailAddresses","member","addresses","includes","email","verifiedAliases","findMemberByEmailAddress","members","wanted","bySignIn","find","holders","some","evaluateMemberEmailAliasAdd","test","ok","refusal","message","signInEmail","domain","slice","lastIndexOf","reserved","reservedDomains","String","trim","toLowerCase","existing","memberEmailAliasRows","sort","a","b","verified"],"mappings":";AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,wBAAwB,EAAEC,qBAAqB,QAAQ,sBAAkB;AAClF,SAASC,qBAAqB,QAAQ,gBAAY;AAElD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCC,GAED,0EAA0E,GAC1E,OAAO,MAAMC,kCAAkC,qBAAoB;AAEnE;;;;;CAKC,GACD,OAAO,MAAMC,2BAA2B,EAAC;AAEzC,6EAA6E,GAC7E,OAAO,MAAMC,oCAAoC,KAAK,KAAK,KAAK,KAAI;AAEpE,kEAAkE,GAClE,OAAO,MAAMC,mCAAmC,oBAAmB;AAEnE;;;CAGC,GACD,OAAO,MAAMC,6BAA6B,kCAAiC;AA0B3E,yEAAyE,GACzE,OAAO,SAASC,0BAA0BC,KAAc;IACtD,OAAOP,sBAAsBO;AAC/B;AAEA,MAAMC,aAAa,CAACC,QAClB,OAAOA,UAAU,YAAYC,OAAOC,QAAQ,CAACF,UAAUA,QAAQ,IAAIA,QAAQ;AAE7E;;;;;CAKC,GACD,OAAO,SAASG,uBAAuBC,QAAiB;IACtD,MAAMC,MAAOD,4BAAD,AAACA,SAAuDE,OAAO;IAC3E,IAAI,CAACC,MAAMC,OAAO,CAACH,MAAM,OAAO,EAAE;IAClC,MAAMI,OAAO,IAAIC;IACjB,MAAMJ,UAA8B,EAAE;IACtC,KAAK,MAAMK,SAASN,IAAK;QACvB,IAAIC,QAAQM,MAAM,IAAInB,0BAA0B;QAChD,MAAMoB,SAAUF,gBAAAA,QAAS,CAAC;QAC1B,MAAMG,UAAUjB,0BAA0BgB,MAAM,CAAC,UAAU;QAC3D,MAAME,YAAYhB,WAAWc,MAAM,CAAC,YAAY;QAChD,IAAI,CAACC,WAAWC,cAAc,QAAQN,KAAKO,GAAG,CAACF,UAAU;QACzDL,KAAKQ,GAAG,CAACH;QACT,MAAMI,eAAenB,WAAWc,MAAM,CAAC,eAAe;QACtDP,QAAQa,IAAI,CAAC;YAAEL;YAASC;WAAeG,iBAAiB,OAAO;YAAEA;QAAa,IAAI,CAAC;IACrF;IACA,OAAOZ;AACT;AAEA,+DAA+D,GAC/D,OAAO,SAASc,2BACdC,KAAgE;IAEhE,OAAOtB,WAAWsB,yBAAAA,MAAOH,YAAY,MAAM;AAC7C;AAEA;;;CAGC,GACD,OAAO,SAASI,2BAA2BlB,QAAiB;IAC1D,OAAOD,uBAAuBC,UAC3BmB,MAAM,CAACH,4BACPI,GAAG,CAAC,CAACH,QAAUA,MAAMP,OAAO;AACjC;AAaA;;;CAGC,GACD,OAAO,SAASW,qBAAqBC,MAA0C;;IAC7E,MAAMC,YAAsB,EAAE;IAC9B,MAAMV,MAAM,CAACjB;QACX,MAAMc,UAAUjB,0BAA0BG;QAC1C,IAAIc,WAAW,CAACa,UAAUC,QAAQ,CAACd,UAAUa,UAAUR,IAAI,CAACL;IAC9D;IACAG,IAAIS,0BAAAA,OAAQG,KAAK;IACjB,KAAK,MAAMR,iBAASK,0BAAAA,OAAQI,eAAe,mBAAI,EAAE,CAAEb,IAAII;IACvD,OAAOM;AACT;AAEA;;;;;;;;;;CAUC,GACD,OAAO,SAASI,yBACdC,OAAqB,EACrBlB,OAAgB;IAEhB,MAAMmB,SAASpC,0BAA0BiB;IACzC,IAAI,CAACmB,QAAQ,OAAO;IACpB,MAAMC,WAAWF,QAAQG,IAAI,CAAC,CAACT,SAAW7B,0BAA0B6B,OAAOG,KAAK,MAAMI;IACtF,IAAIC,UAAU,OAAOA;IACrB,MAAME,UAAUJ,QAAQT,MAAM,CAAC,CAACG;YAC7BA;eAAD,EAACA,0BAAAA,OAAOI,eAAe,YAAtBJ,0BAA0B,EAAE,EAAEW,IAAI,CAAC,CAAChB,QAAUxB,0BAA0BwB,WAAWY;;IAEtF,OAAOG,QAAQxB,MAAM,KAAK,IAAIwB,OAAO,CAAC,EAAE,GAAG;AAC7C;AAuBA;;;;;;;CAOC,GACD,OAAO,SAASE,4BAA4BxC,KAK3C;QAiBmBA,wBAQDA;IAxBjB,oEAAoE;IACpE,yEAAyE;IACzE,yEAAyE;IACzE,uEAAuE;IACvE,MAAMgB,UAAUjB,0BAA0BC,MAAMgB,OAAO;IACvD,IAAI,CAACA,WAAWA,QAAQF,MAAM,GAAGvB,4BAA4B,CAACC,sBAAsBiD,IAAI,CAACzB,UAAU;QACjG,OAAO;YAAE0B,IAAI;YAAOC,SAAS;YAAmBC,SAAS;QAA+B;IAC1F;IACA,IAAI5B,YAAYjB,0BAA0BC,MAAM6C,WAAW,GAAG;QAC5D,OAAO;YACLH,IAAI;YACJC,SAAS;YACTC,SAAS;QACX;IACF;IACA,MAAME,SAAS9B,QAAQ+B,KAAK,CAAC/B,QAAQgC,WAAW,CAAC,OAAO;IACxD,MAAMC,WAAW,EAACjD,yBAAAA,MAAMkD,eAAe,YAArBlD,yBAAyB,EAAE,EAAE0B,GAAG,CAAC,CAACxB,QAAUiD,OAAOjD,OAAOkD,IAAI,GAAGC,WAAW;IAC9F,IAAIJ,SAASnB,QAAQ,CAACgB,SAAS;QAC7B,OAAO;YACLJ,IAAI;YACJC,SAAS;YACTC,SAAS;QACX;IACF;IACA,MAAMU,YAAWtD,sBAAAA,MAAMQ,OAAO,CAAC6B,IAAI,CAAC,CAACd,QAAUA,MAAMP,OAAO,KAAKA,oBAAhDhB,sBAA4D;IAC7E,IAAIsD,YAAYhC,2BAA2BgC,WAAW;QACpD,OAAO;YAAEZ,IAAI;YAAOC,SAAS;YAAqBC,SAAS;QAAqC;IAClG;IACA,IAAI,CAACU,YAAYtD,MAAMQ,OAAO,CAACM,MAAM,IAAInB,0BAA0B;QACjE,OAAO;YACL+C,IAAI;YACJC,SAAS;YACTC,SAAS,CAAC,kBAAkB,EAAEjD,yBAAyB,6CAA6C,CAAC;QACvG;IACF;IACA,OAAO;QAAE+C,IAAI;QAAM1B;QAASsC;IAAS;AACvC;AAUA,8EAA8E,GAC9E,OAAO,SAASC,qBAAqB/C,OAAoC;IACvE,OAAO;WAAIA;KAAQ,CAChBgD,IAAI,CAAC,CAACC,GAAGC,IAAMD,EAAExC,SAAS,GAAGyC,EAAEzC,SAAS,EACxCS,GAAG,CAAC,CAACH,QAAW,CAAA;YACfP,SAASO,MAAMP,OAAO;YACtBC,WAAWM,MAAMN,SAAS;YAC1B0C,UAAUrC,2BAA2BC;YACrCH,cAAcnB,WAAWsB,MAAMH,YAAY;QAC7C,CAAA;AACJ"}
@@ -0,0 +1,47 @@
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
+ * Merges an sx-shaped override over a base sx record with REAL merge
19
+ * semantics — the compose point for a component instance's root style
20
+ * overrides (AGL-1306): the component root's own sx is the base, the
21
+ * instance's `styleOverrides.root` is the override, and the grafted root
22
+ * renders the merged result on every surface (canvas, Preview, tenant
23
+ * SSR) because the graft itself calls this.
24
+ *
25
+ * Property-level behaviour (see {@link mergeSxProperty}):
26
+ *
27
+ * - A plain property replaces exactly the leaf it names; the base's
28
+ * other properties survive.
29
+ * - Responsive breakpoint objects merge with mobile-first cascade
30
+ * semantics via `mergeSchemeValue` — a partial `{ md: … }` override
31
+ * keeps the base's values below `md` instead of silently dropping
32
+ * them.
33
+ * - The `@scheme dark` slice is a plain record of style properties, so
34
+ * it merges key-by-key: overriding one dark colour keeps the base
35
+ * slice's siblings. A base-scope override does NOT erase the base's
36
+ * dark slice — the slice is a more specific selector of the same
37
+ * stylesheet, exactly as it behaves within a single node's sx.
38
+ * - Nested selector records (`&:hover`, `@media …`) merge key-by-key
39
+ * for the same reason.
40
+ *
41
+ * Non-record forms degrade honestly: when either side is an array, a
42
+ * function, or a scalar there is no record to merge into, so the pair
43
+ * composes in MUI's array form (later entries win per property at style
44
+ * resolution). Inputs are never mutated.
45
+ */
46
+ export declare function mergeNodeSx(base: unknown, override: unknown): unknown;
47
+ export default mergeNodeSx;
@@ -0,0 +1,123 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ /**
3
+ * @license
4
+ * Copyright 2026 Aglyn LLC
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */ // Subpath, NOT the `@aglyn/shared-data-enums` barrel (AGL-2486). That barrel
18
+ // re-exports `lib/firebase-auth`, which imports `AuthErrorCodes` from
19
+ // `firebase/auth` as a VALUE — so a styling helper on the node-render path
20
+ // dragged the Firebase auth graph into the client bundle of every published
21
+ // customer page. This module and `palette-sx` were the only two edges from
22
+ // `@aglyn/aglyn` to that barrel; pointing both at the file they actually want
23
+ // measured -48,643 B GZIPPED off the `/[host]/[scheme]/[[...slug]]` route's client
24
+ // chunks (694,808 -> 646,165 B gz, Turbopack production build).
25
+ import { expandSxAliases } from "@aglyn/shared-data-enums/sx-property-aliases";
26
+ import { isResponsiveSxObject, mergeSchemeValue } from "./scheme-sx.js";
27
+ const isPlainObject = (value)=>typeof value === 'object' && value !== null && !Array.isArray(value);
28
+ /**
29
+ * Merges one sx PROPERTY value over another, following the two house
30
+ * rules this codebase already enforces elsewhere:
31
+ *
32
+ * - `mergeThemeOptions` (host-theme): an override replaces the LEAF it
33
+ * names, never the whole record — so two plain objects (a `&:hover`
34
+ * block, a `@media` block) merge key-by-key rather than the override
35
+ * clobbering the base's siblings.
36
+ * - `mergeSchemeValue` (scheme-sx): responsive breakpoint objects merge
37
+ * with real mobile-first cascade semantics — a `{ md: … }` override
38
+ * keeps the base's xs–sm values, and a plain override applies at every
39
+ * width.
40
+ *
41
+ * Everything else (scalars, arrays, theme callbacks) is a leaf: the
42
+ * override replaces it.
43
+ */ function mergeSxProperty(base, override) {
44
+ if (override === undefined) return base;
45
+ if (base === undefined) return override;
46
+ if (isResponsiveSxObject(base) || isResponsiveSxObject(override)) {
47
+ return mergeSchemeValue(base, override);
48
+ }
49
+ if (isPlainObject(base) && isPlainObject(override)) {
50
+ const merged = _extends({}, base);
51
+ for (const [key, value] of Object.entries(override)){
52
+ const next = mergeSxProperty(base[key], value);
53
+ if (next === undefined) delete merged[key];
54
+ else merged[key] = next;
55
+ }
56
+ return merged;
57
+ }
58
+ return override;
59
+ }
60
+ /**
61
+ * Merges an sx-shaped override over a base sx record with REAL merge
62
+ * semantics — the compose point for a component instance's root style
63
+ * overrides (AGL-1306): the component root's own sx is the base, the
64
+ * instance's `styleOverrides.root` is the override, and the grafted root
65
+ * renders the merged result on every surface (canvas, Preview, tenant
66
+ * SSR) because the graft itself calls this.
67
+ *
68
+ * Property-level behaviour (see {@link mergeSxProperty}):
69
+ *
70
+ * - A plain property replaces exactly the leaf it names; the base's
71
+ * other properties survive.
72
+ * - Responsive breakpoint objects merge with mobile-first cascade
73
+ * semantics via `mergeSchemeValue` — a partial `{ md: … }` override
74
+ * keeps the base's values below `md` instead of silently dropping
75
+ * them.
76
+ * - The `@scheme dark` slice is a plain record of style properties, so
77
+ * it merges key-by-key: overriding one dark colour keeps the base
78
+ * slice's siblings. A base-scope override does NOT erase the base's
79
+ * dark slice — the slice is a more specific selector of the same
80
+ * stylesheet, exactly as it behaves within a single node's sx.
81
+ * - Nested selector records (`&:hover`, `@media …`) merge key-by-key
82
+ * for the same reason.
83
+ *
84
+ * Non-record forms degrade honestly: when either side is an array, a
85
+ * function, or a scalar there is no record to merge into, so the pair
86
+ * composes in MUI's array form (later entries win per property at style
87
+ * resolution). Inputs are never mutated.
88
+ */ export function mergeNodeSx(base, override) {
89
+ if (override === null || override === undefined) return base;
90
+ if (isPlainObject(override) && Object.keys(override).length === 0) {
91
+ return base;
92
+ }
93
+ if (base === null || base === undefined) return override;
94
+ if (!isPlainObject(base) || !isPlainObject(override)) {
95
+ return [
96
+ base,
97
+ override
98
+ ].flat();
99
+ }
100
+ // Both sides speak ONE spelling before the key-level merge (AGL-2209).
101
+ // `py` and `paddingTop` are different keys, so without this an instance
102
+ // override never REPLACES an aliased definition value — it lands beside
103
+ // it, and a Padding Top override on a node whose definition says `py: 8`
104
+ // moves the top edge while the bottom silently keeps the component's 8.
105
+ // Semantics-preserving and identity-returning: an sx with no alias is the
106
+ // same object, so a corpus that never used one pays a key scan.
107
+ const canonicalBase = expandSxAliases(base, {
108
+ deep: true
109
+ });
110
+ const canonicalOverride = expandSxAliases(override, {
111
+ deep: true
112
+ });
113
+ const merged = _extends({}, canonicalBase);
114
+ for (const [key, value] of Object.entries(canonicalOverride)){
115
+ const next = mergeSxProperty(canonicalBase[key], value);
116
+ if (next === undefined) delete merged[key];
117
+ else merged[key] = next;
118
+ }
119
+ return merged;
120
+ }
121
+ export default mergeNodeSx;
122
+
123
+ //# sourceMappingURL=merge-node-sx.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/merge-node-sx.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// Subpath, NOT the `@aglyn/shared-data-enums` barrel (AGL-2486). That barrel\n// re-exports `lib/firebase-auth`, which imports `AuthErrorCodes` from\n// `firebase/auth` as a VALUE — so a styling helper on the node-render path\n// dragged the Firebase auth graph into the client bundle of every published\n// customer page. This module and `palette-sx` were the only two edges from\n// `@aglyn/aglyn` to that barrel; pointing both at the file they actually want\n// measured -48,643 B GZIPPED off the `/[host]/[scheme]/[[...slug]]` route's client\n// chunks (694,808 -> 646,165 B gz, Turbopack production build).\nimport { expandSxAliases } from '@aglyn/shared-data-enums/sx-property-aliases'\nimport {\n isResponsiveSxObject,\n mergeSchemeValue,\n} from './scheme-sx'\n\nconst isPlainObject = (value: unknown): value is Record<string, unknown> =>\n typeof value === 'object' && value !== null && !Array.isArray(value)\n\n/**\n * Merges one sx PROPERTY value over another, following the two house\n * rules this codebase already enforces elsewhere:\n *\n * - `mergeThemeOptions` (host-theme): an override replaces the LEAF it\n * names, never the whole record — so two plain objects (a `&:hover`\n * block, a `@media` block) merge key-by-key rather than the override\n * clobbering the base's siblings.\n * - `mergeSchemeValue` (scheme-sx): responsive breakpoint objects merge\n * with real mobile-first cascade semantics — a `{ md: … }` override\n * keeps the base's xs–sm values, and a plain override applies at every\n * width.\n *\n * Everything else (scalars, arrays, theme callbacks) is a leaf: the\n * override replaces it.\n */\nfunction mergeSxProperty(base: unknown, override: unknown): unknown {\n if (override === undefined) return base\n if (base === undefined) return override\n if (isResponsiveSxObject(base) || isResponsiveSxObject(override)) {\n return mergeSchemeValue(base, override)\n }\n if (isPlainObject(base) && isPlainObject(override)) {\n const merged: Record<string, unknown> = { ...base }\n for (const [key, value] of Object.entries(override)) {\n const next = mergeSxProperty(base[key], value)\n if (next === undefined) delete merged[key]\n else merged[key] = next\n }\n return merged\n }\n return override\n}\n\n/**\n * Merges an sx-shaped override over a base sx record with REAL merge\n * semantics — the compose point for a component instance's root style\n * overrides (AGL-1306): the component root's own sx is the base, the\n * instance's `styleOverrides.root` is the override, and the grafted root\n * renders the merged result on every surface (canvas, Preview, tenant\n * SSR) because the graft itself calls this.\n *\n * Property-level behaviour (see {@link mergeSxProperty}):\n *\n * - A plain property replaces exactly the leaf it names; the base's\n * other properties survive.\n * - Responsive breakpoint objects merge with mobile-first cascade\n * semantics via `mergeSchemeValue` — a partial `{ md: … }` override\n * keeps the base's values below `md` instead of silently dropping\n * them.\n * - The `@scheme dark` slice is a plain record of style properties, so\n * it merges key-by-key: overriding one dark colour keeps the base\n * slice's siblings. A base-scope override does NOT erase the base's\n * dark slice — the slice is a more specific selector of the same\n * stylesheet, exactly as it behaves within a single node's sx.\n * - Nested selector records (`&:hover`, `@media …`) merge key-by-key\n * for the same reason.\n *\n * Non-record forms degrade honestly: when either side is an array, a\n * function, or a scalar there is no record to merge into, so the pair\n * composes in MUI's array form (later entries win per property at style\n * resolution). Inputs are never mutated.\n */\nexport function mergeNodeSx(base: unknown, override: unknown): unknown {\n if (override === null || override === undefined) return base\n if (isPlainObject(override) && Object.keys(override).length === 0) {\n return base\n }\n if (base === null || base === undefined) return override\n if (!isPlainObject(base) || !isPlainObject(override)) {\n return [base, override].flat()\n }\n // Both sides speak ONE spelling before the key-level merge (AGL-2209).\n // `py` and `paddingTop` are different keys, so without this an instance\n // override never REPLACES an aliased definition value — it lands beside\n // it, and a Padding Top override on a node whose definition says `py: 8`\n // moves the top edge while the bottom silently keeps the component's 8.\n // Semantics-preserving and identity-returning: an sx with no alias is the\n // same object, so a corpus that never used one pays a key scan.\n const canonicalBase = expandSxAliases(base, { deep: true })\n const canonicalOverride = expandSxAliases(override, { deep: true })\n const merged: Record<string, unknown> = { ...canonicalBase }\n for (const [key, value] of Object.entries(canonicalOverride)) {\n const next = mergeSxProperty(canonicalBase[key], value)\n if (next === undefined) delete merged[key]\n else merged[key] = next\n }\n return merged\n}\n\nexport default mergeNodeSx\n"],"names":["expandSxAliases","isResponsiveSxObject","mergeSchemeValue","isPlainObject","value","Array","isArray","mergeSxProperty","base","override","undefined","merged","key","Object","entries","next","mergeNodeSx","keys","length","flat","canonicalBase","deep","canonicalOverride"],"mappings":";AAAA;;;;;;;;;;;;;;;CAeC,GAED,6EAA6E;AAC7E,sEAAsE;AACtE,2EAA2E;AAC3E,4EAA4E;AAC5E,2EAA2E;AAC3E,8EAA8E;AAC9E,mFAAmF;AACnF,gEAAgE;AAChE,SAASA,eAAe,QAAQ,+CAA8C;AAC9E,SACEC,oBAAoB,EACpBC,gBAAgB,QACX,iBAAa;AAEpB,MAAMC,gBAAgB,CAACC,QACrB,OAAOA,UAAU,YAAYA,UAAU,QAAQ,CAACC,MAAMC,OAAO,CAACF;AAEhE;;;;;;;;;;;;;;;CAeC,GACD,SAASG,gBAAgBC,IAAa,EAAEC,QAAiB;IACvD,IAAIA,aAAaC,WAAW,OAAOF;IACnC,IAAIA,SAASE,WAAW,OAAOD;IAC/B,IAAIR,qBAAqBO,SAASP,qBAAqBQ,WAAW;QAChE,OAAOP,iBAAiBM,MAAMC;IAChC;IACA,IAAIN,cAAcK,SAASL,cAAcM,WAAW;QAClD,MAAME,SAAkC,aAAKH;QAC7C,KAAK,MAAM,CAACI,KAAKR,MAAM,IAAIS,OAAOC,OAAO,CAACL,UAAW;YACnD,MAAMM,OAAOR,gBAAgBC,IAAI,CAACI,IAAI,EAAER;YACxC,IAAIW,SAASL,WAAW,OAAOC,MAAM,CAACC,IAAI;iBACrCD,MAAM,CAACC,IAAI,GAAGG;QACrB;QACA,OAAOJ;IACT;IACA,OAAOF;AACT;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BC,GACD,OAAO,SAASO,YAAYR,IAAa,EAAEC,QAAiB;IAC1D,IAAIA,aAAa,QAAQA,aAAaC,WAAW,OAAOF;IACxD,IAAIL,cAAcM,aAAaI,OAAOI,IAAI,CAACR,UAAUS,MAAM,KAAK,GAAG;QACjE,OAAOV;IACT;IACA,IAAIA,SAAS,QAAQA,SAASE,WAAW,OAAOD;IAChD,IAAI,CAACN,cAAcK,SAAS,CAACL,cAAcM,WAAW;QACpD,OAAO;YAACD;YAAMC;SAAS,CAACU,IAAI;IAC9B;IACA,uEAAuE;IACvE,wEAAwE;IACxE,wEAAwE;IACxE,yEAAyE;IACzE,wEAAwE;IACxE,0EAA0E;IAC1E,gEAAgE;IAChE,MAAMC,gBAAgBpB,gBAAgBQ,MAAM;QAAEa,MAAM;IAAK;IACzD,MAAMC,oBAAoBtB,gBAAgBS,UAAU;QAAEY,MAAM;IAAK;IACjE,MAAMV,SAAkC,aAAKS;IAC7C,KAAK,MAAM,CAACR,KAAKR,MAAM,IAAIS,OAAOC,OAAO,CAACQ,mBAAoB;QAC5D,MAAMP,OAAOR,gBAAgBa,aAAa,CAACR,IAAI,EAAER;QACjD,IAAIW,SAASL,WAAW,OAAOC,MAAM,CAACC,IAAI;aACrCD,MAAM,CAACC,IAAI,GAAGG;IACrB;IACA,OAAOJ;AACT;AAEA,eAAeK,YAAW"}