@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,107 @@
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
+ * ONE postal address shape (AGL-1133).
18
+ *
19
+ * The failure this prevents is not "there is no address field" — it is a phone
20
+ * number stored three ways in three collections. So every place that grows an
21
+ * address stores this, and the Stripe mapping is a field rename in one file
22
+ * rather than in each caller.
23
+ *
24
+ * NOTE ON `state`: the issue specified `region`. Using it would have created a
25
+ * THIRD spelling — Stripe's customer address uses `state`, and the commerce
26
+ * plugin's `OrderAddress` already uses `state` too. A canonical type whose
27
+ * whole purpose is to stop variants should not open with a new variant, so
28
+ * this matches the two shapes it has to interoperate with.
29
+ */ /** Every field of a postal address, absent or blank. */ export function isBlankAddress(address) {
30
+ if (!address) return true;
31
+ return ![
32
+ 'line1',
33
+ 'line2',
34
+ 'city',
35
+ 'state',
36
+ 'postalCode',
37
+ 'country'
38
+ ].some((key)=>{
39
+ var _address_key;
40
+ return String((_address_key = address[key]) != null ? _address_key : '').trim();
41
+ });
42
+ }
43
+ /**
44
+ * Trim, drop empties, and uppercase the country code.
45
+ *
46
+ * Returns `null` for an address with nothing in it, so a cleared form stores
47
+ * an absent field rather than an object full of empty strings — which would
48
+ * read as "has an address" to every `if (address)` in the codebase.
49
+ */ export function normalizeAddress(address) {
50
+ if (!address) return null;
51
+ const clean = (value)=>String(value != null ? value : '').trim();
52
+ const next = {};
53
+ const line1 = clean(address.line1);
54
+ const line2 = clean(address.line2);
55
+ const city = clean(address.city);
56
+ const state = clean(address.state);
57
+ const postalCode = clean(address.postalCode);
58
+ const country = clean(address.country).toUpperCase();
59
+ if (line1) next.line1 = line1;
60
+ if (line2) next.line2 = line2;
61
+ if (city) next.city = city;
62
+ if (state) next.state = state;
63
+ if (postalCode) next.postalCode = postalCode;
64
+ // Only a real alpha-2 shape is stored; anything else is a typed country
65
+ // name and is worse than absent, because Stripe would reject the customer
66
+ // update and take the rest of the address down with it.
67
+ if (/^[A-Z]{2}$/.test(country)) next.country = country;
68
+ return isBlankAddress(next) ? null : next;
69
+ }
70
+ /**
71
+ * Best-effort E.164 (`+15125550123`).
72
+ *
73
+ * Measured on production 2026-07-30: the one populated profile stored a bare
74
+ * ten-digit US number with no country code — `5550107788` in the examples
75
+ * below, standing in for the value actually measured. That is unusable for SMS
76
+ * or for a Stripe customer, and it is what "phone already exists but is stored
77
+ * unnormalized" in AGL-1133 refers to.
78
+ *
79
+ * `defaultCountry` only applies to a number with NO country code of its own,
80
+ * and only US/CA (+1) are inferred — guessing a country for a bare national
81
+ * number anywhere else silently invents a different subscriber.
82
+ *
83
+ * @returns E.164, or `null` when the input cannot be normalized confidently.
84
+ * Never a partially-cleaned string: a half-normalized phone is the
85
+ * same bug in a new format.
86
+ */ export function normalizePhone(input, defaultCountry = 'US') {
87
+ const raw = String(input != null ? input : '').trim();
88
+ if (!raw) return null;
89
+ // A leading + is the user telling us the country; keep it and just strip
90
+ // the punctuation humans put in numbers.
91
+ if (raw.startsWith('+')) {
92
+ const digits = raw.slice(1).replace(/\D/g, '');
93
+ // E.164 allows at most 15 digits, and a country code is at least 1 —
94
+ // 8 is below any real international number and signals a typo.
95
+ return digits.length >= 8 && digits.length <= 15 ? `+${digits}` : null;
96
+ }
97
+ const digits = raw.replace(/\D/g, '');
98
+ if (!digits) return null;
99
+ const inferable = defaultCountry === 'US' || defaultCountry === 'CA';
100
+ if (!inferable) return null;
101
+ // 10 digits is NANP without the country code; 11 starting with 1 is with it.
102
+ if (digits.length === 10) return `+1${digits}`;
103
+ if (digits.length === 11 && digits.startsWith('1')) return `+${digits}`;
104
+ return null;
105
+ }
106
+
107
+ //# sourceMappingURL=contact.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/aglyn/src/lib/foundation/definitions/contact.types.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * ONE postal address shape (AGL-1133).\n *\n * The failure this prevents is not \"there is no address field\" — it is a phone\n * number stored three ways in three collections. So every place that grows an\n * address stores this, and the Stripe mapping is a field rename in one file\n * rather than in each caller.\n *\n * NOTE ON `state`: the issue specified `region`. Using it would have created a\n * THIRD spelling — Stripe's customer address uses `state`, and the commerce\n * plugin's `OrderAddress` already uses `state` too. A canonical type whose\n * whole purpose is to stop variants should not open with a new variant, so\n * this matches the two shapes it has to interoperate with.\n */\nexport interface AglynPostalAddress {\n line1?: string\n line2?: string\n city?: string\n /** State, province, prefecture or county. Stripe calls this `state`. */\n state?: string\n postalCode?: string\n /**\n * ISO-3166-1 alpha-2, uppercase (`US`, `GB`, `DE`).\n *\n * Two letters because that is what Stripe Tax and every address validator\n * expect; a free-text country name cannot be used to compute tax.\n */\n country?: string\n}\n\n/** Every field of a postal address, absent or blank. */\nexport function isBlankAddress(\n address: AglynPostalAddress | null | undefined,\n): boolean {\n if (!address) return true\n return !(\n ['line1', 'line2', 'city', 'state', 'postalCode', 'country'] as const\n ).some((key) => String(address[key] ?? '').trim())\n}\n\n/**\n * Trim, drop empties, and uppercase the country code.\n *\n * Returns `null` for an address with nothing in it, so a cleared form stores\n * an absent field rather than an object full of empty strings — which would\n * read as \"has an address\" to every `if (address)` in the codebase.\n */\nexport function normalizeAddress(\n address: AglynPostalAddress | null | undefined,\n): AglynPostalAddress | null {\n if (!address) return null\n const clean = (value: unknown) => String(value ?? '').trim()\n const next: AglynPostalAddress = {}\n const line1 = clean(address.line1)\n const line2 = clean(address.line2)\n const city = clean(address.city)\n const state = clean(address.state)\n const postalCode = clean(address.postalCode)\n const country = clean(address.country).toUpperCase()\n if (line1) next.line1 = line1\n if (line2) next.line2 = line2\n if (city) next.city = city\n if (state) next.state = state\n if (postalCode) next.postalCode = postalCode\n // Only a real alpha-2 shape is stored; anything else is a typed country\n // name and is worse than absent, because Stripe would reject the customer\n // update and take the rest of the address down with it.\n if (/^[A-Z]{2}$/.test(country)) next.country = country\n return isBlankAddress(next) ? null : next\n}\n\n/**\n * Best-effort E.164 (`+15125550123`).\n *\n * Measured on production 2026-07-30: the one populated profile stored a bare\n * ten-digit US number with no country code — `5550107788` in the examples\n * below, standing in for the value actually measured. That is unusable for SMS\n * or for a Stripe customer, and it is what \"phone already exists but is stored\n * unnormalized\" in AGL-1133 refers to.\n *\n * `defaultCountry` only applies to a number with NO country code of its own,\n * and only US/CA (+1) are inferred — guessing a country for a bare national\n * number anywhere else silently invents a different subscriber.\n *\n * @returns E.164, or `null` when the input cannot be normalized confidently.\n * Never a partially-cleaned string: a half-normalized phone is the\n * same bug in a new format.\n */\nexport function normalizePhone(\n input: string | null | undefined,\n defaultCountry = 'US',\n): string | null {\n const raw = String(input ?? '').trim()\n if (!raw) return null\n // A leading + is the user telling us the country; keep it and just strip\n // the punctuation humans put in numbers.\n if (raw.startsWith('+')) {\n const digits = raw.slice(1).replace(/\\D/g, '')\n // E.164 allows at most 15 digits, and a country code is at least 1 —\n // 8 is below any real international number and signals a typo.\n return digits.length >= 8 && digits.length <= 15 ? `+${digits}` : null\n }\n const digits = raw.replace(/\\D/g, '')\n if (!digits) return null\n const inferable = defaultCountry === 'US' || defaultCountry === 'CA'\n if (!inferable) return null\n // 10 digits is NANP without the country code; 11 starting with 1 is with it.\n if (digits.length === 10) return `+1${digits}`\n if (digits.length === 11 && digits.startsWith('1')) return `+${digits}`\n return null\n}\n"],"names":["isBlankAddress","address","some","key","String","trim","normalizeAddress","clean","value","next","line1","line2","city","state","postalCode","country","toUpperCase","test","normalizePhone","input","defaultCountry","raw","startsWith","digits","slice","replace","length","inferable"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;CAaC,GAiBD,sDAAsD,GACtD,OAAO,SAASA,eACdC,OAA8C;IAE9C,IAAI,CAACA,SAAS,OAAO;IACrB,OAAO,CAAC,AACN;QAAC;QAAS;QAAS;QAAQ;QAAS;QAAc;KAAU,CAC5DC,IAAI,CAAC,CAACC;YAAeF;eAAPG,QAAOH,eAAAA,OAAO,CAACE,IAAI,YAAZF,eAAgB,IAAII,IAAI;;AACjD;AAEA;;;;;;CAMC,GACD,OAAO,SAASC,iBACdL,OAA8C;IAE9C,IAAI,CAACA,SAAS,OAAO;IACrB,MAAMM,QAAQ,CAACC,QAAmBJ,OAAOI,gBAAAA,QAAS,IAAIH,IAAI;IAC1D,MAAMI,OAA2B,CAAC;IAClC,MAAMC,QAAQH,MAAMN,QAAQS,KAAK;IACjC,MAAMC,QAAQJ,MAAMN,QAAQU,KAAK;IACjC,MAAMC,OAAOL,MAAMN,QAAQW,IAAI;IAC/B,MAAMC,QAAQN,MAAMN,QAAQY,KAAK;IACjC,MAAMC,aAAaP,MAAMN,QAAQa,UAAU;IAC3C,MAAMC,UAAUR,MAAMN,QAAQc,OAAO,EAAEC,WAAW;IAClD,IAAIN,OAAOD,KAAKC,KAAK,GAAGA;IACxB,IAAIC,OAAOF,KAAKE,KAAK,GAAGA;IACxB,IAAIC,MAAMH,KAAKG,IAAI,GAAGA;IACtB,IAAIC,OAAOJ,KAAKI,KAAK,GAAGA;IACxB,IAAIC,YAAYL,KAAKK,UAAU,GAAGA;IAClC,wEAAwE;IACxE,0EAA0E;IAC1E,wDAAwD;IACxD,IAAI,aAAaG,IAAI,CAACF,UAAUN,KAAKM,OAAO,GAAGA;IAC/C,OAAOf,eAAeS,QAAQ,OAAOA;AACvC;AAEA;;;;;;;;;;;;;;;;CAgBC,GACD,OAAO,SAASS,eACdC,KAAgC,EAChCC,iBAAiB,IAAI;IAErB,MAAMC,MAAMjB,OAAOe,gBAAAA,QAAS,IAAId,IAAI;IACpC,IAAI,CAACgB,KAAK,OAAO;IACjB,yEAAyE;IACzE,yCAAyC;IACzC,IAAIA,IAAIC,UAAU,CAAC,MAAM;QACvB,MAAMC,SAASF,IAAIG,KAAK,CAAC,GAAGC,OAAO,CAAC,OAAO;QAC3C,qEAAqE;QACrE,+DAA+D;QAC/D,OAAOF,OAAOG,MAAM,IAAI,KAAKH,OAAOG,MAAM,IAAI,KAAK,CAAC,CAAC,EAAEH,QAAQ,GAAG;IACpE;IACA,MAAMA,SAASF,IAAII,OAAO,CAAC,OAAO;IAClC,IAAI,CAACF,QAAQ,OAAO;IACpB,MAAMI,YAAYP,mBAAmB,QAAQA,mBAAmB;IAChE,IAAI,CAACO,WAAW,OAAO;IACvB,6EAA6E;IAC7E,IAAIJ,OAAOG,MAAM,KAAK,IAAI,OAAO,CAAC,EAAE,EAAEH,QAAQ;IAC9C,IAAIA,OAAOG,MAAM,KAAK,MAAMH,OAAOD,UAAU,CAAC,MAAM,OAAO,CAAC,CAAC,EAAEC,QAAQ;IACvE,OAAO;AACT"}
@@ -0,0 +1,137 @@
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
+ * Which host subcollections the media usage scan reads (AGL-1867).
19
+ *
20
+ * ## Why this exists, and why it is shaped the way it is
21
+ *
22
+ * `scanMediaReferences` answers "what uses this asset" immediately before an
23
+ * author deletes it, and every way it can be wrong points at "unused". AGL-1413
24
+ * closed the screen/layout/component/host-field half. AGL-1867 closed emails.
25
+ * What was left was plugin-owned content: a commerce product carries `imageUrl`
26
+ * and `mediaUrls`, so a product photo used nowhere else reported as unused, and
27
+ * the panel said so with a straight face.
28
+ *
29
+ * An earlier pass at this issue concluded the gap could not be closed by hand,
30
+ * because closing it looked like classifying fifty-odd collection names as
31
+ * media-bearing or not — "a large list of guesses dressed as decisions, and the
32
+ * first stale entry is where the next hole hides". That reasoning was right
33
+ * about the hazard and wrong about the shape of the fix. The classification it
34
+ * feared is only necessary if the default is NOT to scan. So the default here
35
+ * is inverted:
36
+ *
37
+ * **Every host subcollection is scanned unless it is named below with a
38
+ * reason it is not.**
39
+ *
40
+ * That turns the open question from "does this carry media?" — which needs a
41
+ * judgement about a schema nobody wrote down — into "is scanning this wasteful
42
+ * or wrong?", which is answerable from the collection's own volume and who
43
+ * writes it. It also puts the failure on the safe side: a collection nobody has
44
+ * thought about is READ, so a plugin shipping a new media-bearing collection is
45
+ * covered the day it lands rather than the day somebody remembers it.
46
+ *
47
+ * ## What keeps the list from rotting
48
+ *
49
+ * `host-content-media-coverage.spec.ts` sweeps `apps/**` and `libs/**` for host
50
+ * subcollection names — the same derived sweep
51
+ * `host-subcollection-write-deny-coverage.spec.ts` uses, for the same reason —
52
+ * and asserts {@link PLUGIN_CONTENT_COLLECTIONS} is EXACTLY that sweep minus
53
+ * {@link CORE_CONTENT_COLLECTIONS} minus {@link MEDIA_SCAN_EXCLUDED}. A new
54
+ * collection fails the build with a one-line decision to make, and the default
55
+ * answer — add it to the scanned list — is also the safe one.
56
+ *
57
+ * ## The plugin boundary was NOT crossed to do this
58
+ *
59
+ * Worth stating, because "read plugin data into a first-party corpus" sounds
60
+ * like it should be. It is not, and the reason is that "plugin" means two
61
+ * disjoint things:
62
+ *
63
+ * - a SANDBOXED marketplace plugin runs in an iframe on a separate origin and
64
+ * has no Firestore access at all — `plugin-bridge.ts` is the whole protocol
65
+ * and its guest verbs are `ready`, `resize`, `event`, `fetch-request` and
66
+ * `error`, with `parseGuestMessage` rejecting anything else. It owns no
67
+ * documents, so there is nothing here to reach into.
68
+ * - a FIRST-PARTY feature plugin under `libs/plugins/*` is compiled into the
69
+ * apps and writes ORDINARY host subcollections with the ordinary SDKs. Those
70
+ * documents already sit under the same `hosts/{hostId}` rules as a screen,
71
+ * are already read by first-party console pages, and are already covered by
72
+ * the same scope check the scan runs before it reads anything.
73
+ *
74
+ * So the corpus grows to include documents the caller could already read
75
+ * through the console, under an authorization decision that has not changed.
76
+ * Nothing in the sandbox boundary is bypassed, because no sandboxed guest owns
77
+ * any of this.
78
+ */
79
+ /**
80
+ * Host subcollections the media scan reads through its own dedicated machinery.
81
+ *
82
+ * Not "excluded" — covered, by a pass that knows their shape. Screens, layouts,
83
+ * components and email templates each hang a node tree off
84
+ * `…/versions/{versionId}` and get the published-version and history passes;
85
+ * `collections` is walked one level deeper, into `…/entries`.
86
+ */
87
+ export declare const CORE_CONTENT_COLLECTIONS: readonly ["screens", "layouts", "components", "emailTemplates", "collections"];
88
+ /**
89
+ * Host subcollections deliberately NOT read by the media scan, and why.
90
+ *
91
+ * Every entry has to answer one of two questions: what would scanning it cost,
92
+ * or what would scanning it get wrong. "It probably has no images in it" is not
93
+ * an accepted reason — that is the guess this file is arranged to avoid making.
94
+ */
95
+ export declare const MEDIA_SCAN_EXCLUDED: Record<string, string>;
96
+ /**
97
+ * Host subcollections the media scan reads generically.
98
+ *
99
+ * Generically: no per-collection field list and no per-collection decoder.
100
+ * Each document is flattened by `documentHaystack` — which decodes `nodes` and
101
+ * `elements` through `decodeStoredNodes` first, so a plugin that adopts the
102
+ * compressed storage form is covered without touching this file — and the
103
+ * matching field's dotted path is recovered by walking the document. A field
104
+ * list here would be the same staleness trap `referencingFieldPath` was written
105
+ * to avoid one level down.
106
+ *
107
+ * MUST equal the repo-wide host subcollection sweep minus
108
+ * {@link CORE_CONTENT_COLLECTIONS} minus {@link MEDIA_SCAN_EXCLUDED}. The guard
109
+ * spec asserts exactly that, in both directions, so this list can neither miss
110
+ * a new collection nor keep naming a deleted one.
111
+ */
112
+ export declare const PLUGIN_CONTENT_COLLECTIONS: readonly ["actions", "authors", "campaigns", "coupons", "discounts", "events", "experiments", "forms", "functions", "installs", "locations", "memberPosts", "overlays", "pluginSettings", "productCategories", "products", "redirects", "resources", "reviews", "services", "settings", "siteMembers", "suppliers", "templates", "variables", "webhooks", "workflows"];
113
+ export type PluginContentCollection = (typeof PLUGIN_CONTENT_COLLECTIONS)[number];
114
+ /**
115
+ * Console page slug a plugin-content reference row deep-links to.
116
+ *
117
+ * Optional on purpose, and deliberately not required for a collection to be
118
+ * scanned. A row with no destination still renders — as text rather than a
119
+ * link — and that is strictly better than the row not existing, which is the
120
+ * bug this issue is about. Requiring a slug would have made the deep link a
121
+ * precondition for coverage and quietly re-created the hole for every
122
+ * collection nobody had got round to routing.
123
+ *
124
+ * Keyed by collection, valued with the `[pluginSlug]` segment of
125
+ * `Route.HOST_PLUGIN`.
126
+ */
127
+ export declare const PLUGIN_CONTENT_ROUTE_SLUG: Partial<Record<PluginContentCollection, string>>;
128
+ /**
129
+ * What to call one of these in a reference row.
130
+ *
131
+ * Derived from the collection name rather than declared, so a newly scanned
132
+ * collection gets a readable label without a second list to keep in step —
133
+ * `productCategories` reads as "Product category". Singularised with the two
134
+ * rules English spells consistently enough to be worth automating; anything
135
+ * else keeps its name, which is a cosmetic miss rather than a coverage one.
136
+ */
137
+ export declare function hostContentCollectionLabel(collection: string): string;
@@ -0,0 +1,219 @@
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
+ * Which host subcollections the media usage scan reads (AGL-1867).
18
+ *
19
+ * ## Why this exists, and why it is shaped the way it is
20
+ *
21
+ * `scanMediaReferences` answers "what uses this asset" immediately before an
22
+ * author deletes it, and every way it can be wrong points at "unused". AGL-1413
23
+ * closed the screen/layout/component/host-field half. AGL-1867 closed emails.
24
+ * What was left was plugin-owned content: a commerce product carries `imageUrl`
25
+ * and `mediaUrls`, so a product photo used nowhere else reported as unused, and
26
+ * the panel said so with a straight face.
27
+ *
28
+ * An earlier pass at this issue concluded the gap could not be closed by hand,
29
+ * because closing it looked like classifying fifty-odd collection names as
30
+ * media-bearing or not — "a large list of guesses dressed as decisions, and the
31
+ * first stale entry is where the next hole hides". That reasoning was right
32
+ * about the hazard and wrong about the shape of the fix. The classification it
33
+ * feared is only necessary if the default is NOT to scan. So the default here
34
+ * is inverted:
35
+ *
36
+ * **Every host subcollection is scanned unless it is named below with a
37
+ * reason it is not.**
38
+ *
39
+ * That turns the open question from "does this carry media?" — which needs a
40
+ * judgement about a schema nobody wrote down — into "is scanning this wasteful
41
+ * or wrong?", which is answerable from the collection's own volume and who
42
+ * writes it. It also puts the failure on the safe side: a collection nobody has
43
+ * thought about is READ, so a plugin shipping a new media-bearing collection is
44
+ * covered the day it lands rather than the day somebody remembers it.
45
+ *
46
+ * ## What keeps the list from rotting
47
+ *
48
+ * `host-content-media-coverage.spec.ts` sweeps `apps/**` and `libs/**` for host
49
+ * subcollection names — the same derived sweep
50
+ * `host-subcollection-write-deny-coverage.spec.ts` uses, for the same reason —
51
+ * and asserts {@link PLUGIN_CONTENT_COLLECTIONS} is EXACTLY that sweep minus
52
+ * {@link CORE_CONTENT_COLLECTIONS} minus {@link MEDIA_SCAN_EXCLUDED}. A new
53
+ * collection fails the build with a one-line decision to make, and the default
54
+ * answer — add it to the scanned list — is also the safe one.
55
+ *
56
+ * ## The plugin boundary was NOT crossed to do this
57
+ *
58
+ * Worth stating, because "read plugin data into a first-party corpus" sounds
59
+ * like it should be. It is not, and the reason is that "plugin" means two
60
+ * disjoint things:
61
+ *
62
+ * - a SANDBOXED marketplace plugin runs in an iframe on a separate origin and
63
+ * has no Firestore access at all — `plugin-bridge.ts` is the whole protocol
64
+ * and its guest verbs are `ready`, `resize`, `event`, `fetch-request` and
65
+ * `error`, with `parseGuestMessage` rejecting anything else. It owns no
66
+ * documents, so there is nothing here to reach into.
67
+ * - a FIRST-PARTY feature plugin under `libs/plugins/*` is compiled into the
68
+ * apps and writes ORDINARY host subcollections with the ordinary SDKs. Those
69
+ * documents already sit under the same `hosts/{hostId}` rules as a screen,
70
+ * are already read by first-party console pages, and are already covered by
71
+ * the same scope check the scan runs before it reads anything.
72
+ *
73
+ * So the corpus grows to include documents the caller could already read
74
+ * through the console, under an authorization decision that has not changed.
75
+ * Nothing in the sandbox boundary is bypassed, because no sandboxed guest owns
76
+ * any of this.
77
+ */ /**
78
+ * Host subcollections the media scan reads through its own dedicated machinery.
79
+ *
80
+ * Not "excluded" — covered, by a pass that knows their shape. Screens, layouts,
81
+ * components and email templates each hang a node tree off
82
+ * `…/versions/{versionId}` and get the published-version and history passes;
83
+ * `collections` is walked one level deeper, into `…/entries`.
84
+ */ export const CORE_CONTENT_COLLECTIONS = [
85
+ 'screens',
86
+ 'layouts',
87
+ 'components',
88
+ 'emailTemplates',
89
+ 'collections'
90
+ ];
91
+ /**
92
+ * Host subcollections deliberately NOT read by the media scan, and why.
93
+ *
94
+ * Every entry has to answer one of two questions: what would scanning it cost,
95
+ * or what would scanning it get wrong. "It probably has no images in it" is not
96
+ * an accepted reason — that is the guess this file is arranged to avoid making.
97
+ */ export const MEDIA_SCAN_EXCLUDED = {
98
+ // ── Scanning these would be WRONG, not merely expensive ────────────────
99
+ media: 'The library itself. The asset under audit IS a document in here, and its ' + 'own record holds its own url, cdnPath and storage path — every needle ' + 'the scan carries. Reading this collection would report every asset as ' + 'referencing itself, which turns a deletion-safety control into noise ' + 'that nobody reads.',
100
+ mediaFolders: 'Folder records: a name, a parent pointer and a scope. A folder never ' + 'holds an asset reference, and it is not a dependent either — deleting a ' + 'file does not break the folder it sat in.',
101
+ emailCampaigns: 'The campaign CONTAINER — a name, a date window, the list ids it is ' + 'aimed at and a topic. Distinct from `campaigns`, which holds the sends ' + 'and IS scanned because a send carries the copy that went out. A ' + 'container carries no copy and no asset reference: the design a send ' + 'renders is a screen, and the screen is where the picker writes.',
102
+ // ── Machine-written telemetry: unbounded, and no author picks into it ──
103
+ analytics: 'Per-day traffic rollups written by the tenant collector. One document ' + 'per day per site forever, no author-editable field, and no surface that ' + 'can pick an asset into one.',
104
+ screenAnalytics: 'Per-screen traffic history behind the Pro+ panel, written by the same ' + 'collector on the same unbounded per-day cadence.',
105
+ counters: 'Quota and usage counters, server-owned (AGL-1367) and denied to client ' + 'writes outright. Numbers, not content.',
106
+ activity: 'The site activity feed — an append-only audit log the console writes a ' + 'row into on every change. Unbounded by design, and a row that quotes an ' + 'asset id is a record that somebody touched it, not a place it is used.',
107
+ // ── Transaction and ledger rows: unbounded, and a SNAPSHOT is not a use ─
108
+ orders: 'Completed orders. Line items COPY a product\'s `imageUrl` at purchase ' + 'time, so these would match — and matching would be the wrong answer: an ' + 'order is an immutable record of what was sold, deleting the asset ' + 'changes nothing about it, and no author can edit one. A busy store also ' + 'holds more of these than the whole read budget.',
109
+ carts: 'Live and abandoned carts, with the same copied line-item image and the ' + 'same reasoning, at higher volume — one document per shopper session.',
110
+ checkouts: 'In-flight checkout sessions. Transient buyer state carrying the same ' + 'line-item snapshot as `carts`.',
111
+ formSubmissions: 'Visitor form submissions. Unbounded, PII-heavy, and a file attached to ' + 'one is the visitor\'s upload — not a library asset an author picked, and ' + 'not something deleting a library asset would break.',
112
+ leads: 'Captured leads, on the same footing as `formSubmissions`: visitor-' + 'submitted, unbounded, and never a place an author places an asset.',
113
+ bookings: 'Booking records — a customer, a time and a service pointer. The service ' + 'holds the imagery and IS scanned; a booking is the transaction against ' + 'it.',
114
+ campaignAttributions: 'One row per conversion — a form submission, a lead, a contact or a ' + 'booking — recording which campaign the visitor arrived from. Written ' + 'only by the Admin SDK, and the whole record is three sanitized UTM ' + 'strings capped at a hundred characters: there is no field an asset ' + 'could occupy and no surface that could pick one into it. Unbounded on ' + 'the same footing as the conversions it credits.',
115
+ reservations: 'POS and booking holds. Short-lived transaction rows pointing at a ' + 'resource that is itself scanned.',
116
+ stockHolds: 'Inventory holds taken during checkout. Machine-written, short-lived, ' + 'and a quantity rather than content.',
117
+ subscriptions: 'Site membership subscriptions: a plan pointer, a status and Stripe ' + 'ids. Server-written from the billing webhook.',
118
+ registers: 'POS register allocations — a count against the register add-on, read by ' + 'billing (AGL-1775). No content field at all.',
119
+ giftCards: 'Gift card balances and redemption history. Money, not content.',
120
+ licenseKeys: 'Digital-product license keys issued at fulfilment: a code, an order ' + 'pointer and a revocation flag.',
121
+ inventoryAdjustments: 'The append-only stock adjustment ledger (AGL-2269). One row per manual ' + 'stock edit and per cancellation release, unbounded over a store\'s life.',
122
+ inventoryReconciliation: 'Reconciliation runs comparing counted stock against recorded stock. ' + 'Machine-written totals.',
123
+ restockAlerts: 'Back-in-stock requests: an email address and a product pointer, written ' + 'by visitors.',
124
+ suppressions: 'Unsubscribes, bounces and spam complaints. Email addresses and a ' + 'reason.',
125
+ stripeTaxRates: 'Cached Stripe tax rate ids, written by the tax sync. Vendor ids.',
126
+ members: 'The ORG-facing member roster mirrored onto the site, server-owned ' + '(AGL-1367). A member\'s photo is their own account photo, uploaded ' + 'through /api/account/photo and stored outside any site\'s library, so it ' + 'is not an asset this scan can be asked about.'
127
+ };
128
+ /**
129
+ * Host subcollections the media scan reads generically.
130
+ *
131
+ * Generically: no per-collection field list and no per-collection decoder.
132
+ * Each document is flattened by `documentHaystack` — which decodes `nodes` and
133
+ * `elements` through `decodeStoredNodes` first, so a plugin that adopts the
134
+ * compressed storage form is covered without touching this file — and the
135
+ * matching field's dotted path is recovered by walking the document. A field
136
+ * list here would be the same staleness trap `referencingFieldPath` was written
137
+ * to avoid one level down.
138
+ *
139
+ * MUST equal the repo-wide host subcollection sweep minus
140
+ * {@link CORE_CONTENT_COLLECTIONS} minus {@link MEDIA_SCAN_EXCLUDED}. The guard
141
+ * spec asserts exactly that, in both directions, so this list can neither miss
142
+ * a new collection nor keep naming a deleted one.
143
+ */ export const PLUGIN_CONTENT_COLLECTIONS = [
144
+ 'actions',
145
+ 'authors',
146
+ 'campaigns',
147
+ 'coupons',
148
+ 'discounts',
149
+ 'events',
150
+ 'experiments',
151
+ 'forms',
152
+ 'functions',
153
+ 'installs',
154
+ 'locations',
155
+ 'memberPosts',
156
+ 'overlays',
157
+ 'pluginSettings',
158
+ 'productCategories',
159
+ 'products',
160
+ 'redirects',
161
+ 'resources',
162
+ 'reviews',
163
+ 'services',
164
+ 'settings',
165
+ 'siteMembers',
166
+ 'suppliers',
167
+ 'templates',
168
+ 'variables',
169
+ 'webhooks',
170
+ 'workflows'
171
+ ];
172
+ /**
173
+ * Console page slug a plugin-content reference row deep-links to.
174
+ *
175
+ * Optional on purpose, and deliberately not required for a collection to be
176
+ * scanned. A row with no destination still renders — as text rather than a
177
+ * link — and that is strictly better than the row not existing, which is the
178
+ * bug this issue is about. Requiring a slug would have made the deep link a
179
+ * precondition for coverage and quietly re-created the hole for every
180
+ * collection nobody had got round to routing.
181
+ *
182
+ * Keyed by collection, valued with the `[pluginSlug]` segment of
183
+ * `Route.HOST_PLUGIN`.
184
+ */ export const PLUGIN_CONTENT_ROUTE_SLUG = {
185
+ products: 'products',
186
+ productCategories: 'products',
187
+ suppliers: 'products',
188
+ locations: 'products',
189
+ coupons: 'products',
190
+ discounts: 'products',
191
+ reviews: 'products',
192
+ memberPosts: 'products',
193
+ events: 'events',
194
+ services: 'bookings',
195
+ resources: 'bookings',
196
+ redirects: 'redirects',
197
+ campaigns: 'marketing',
198
+ experiments: 'marketing',
199
+ workflows: 'workflows',
200
+ webhooks: 'workflows',
201
+ functions: 'logic',
202
+ variables: 'logic',
203
+ actions: 'logic'
204
+ };
205
+ /**
206
+ * What to call one of these in a reference row.
207
+ *
208
+ * Derived from the collection name rather than declared, so a newly scanned
209
+ * collection gets a readable label without a second list to keep in step —
210
+ * `productCategories` reads as "Product category". Singularised with the two
211
+ * rules English spells consistently enough to be worth automating; anything
212
+ * else keeps its name, which is a cosmetic miss rather than a coverage one.
213
+ */ export function hostContentCollectionLabel(collection) {
214
+ const singular = /ies$/.test(collection) ? collection.replace(/ies$/, 'y') : /(ss|s)$/.test(collection) ? collection.replace(/s$/, '') : collection;
215
+ const spaced = singular.replace(/([a-z0-9])([A-Z])/g, '$1 $2').toLowerCase();
216
+ return spaced.charAt(0).toUpperCase() + spaced.slice(1);
217
+ }
218
+
219
+ //# sourceMappingURL=host-content-collections.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../../libs/aglyn/src/lib/foundation/definitions/host-content-collections.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Which host subcollections the media usage scan reads (AGL-1867).\n *\n * ## Why this exists, and why it is shaped the way it is\n *\n * `scanMediaReferences` answers \"what uses this asset\" immediately before an\n * author deletes it, and every way it can be wrong points at \"unused\". AGL-1413\n * closed the screen/layout/component/host-field half. AGL-1867 closed emails.\n * What was left was plugin-owned content: a commerce product carries `imageUrl`\n * and `mediaUrls`, so a product photo used nowhere else reported as unused, and\n * the panel said so with a straight face.\n *\n * An earlier pass at this issue concluded the gap could not be closed by hand,\n * because closing it looked like classifying fifty-odd collection names as\n * media-bearing or not — \"a large list of guesses dressed as decisions, and the\n * first stale entry is where the next hole hides\". That reasoning was right\n * about the hazard and wrong about the shape of the fix. The classification it\n * feared is only necessary if the default is NOT to scan. So the default here\n * is inverted:\n *\n * **Every host subcollection is scanned unless it is named below with a\n * reason it is not.**\n *\n * That turns the open question from \"does this carry media?\" — which needs a\n * judgement about a schema nobody wrote down — into \"is scanning this wasteful\n * or wrong?\", which is answerable from the collection's own volume and who\n * writes it. It also puts the failure on the safe side: a collection nobody has\n * thought about is READ, so a plugin shipping a new media-bearing collection is\n * covered the day it lands rather than the day somebody remembers it.\n *\n * ## What keeps the list from rotting\n *\n * `host-content-media-coverage.spec.ts` sweeps `apps/**` and `libs/**` for host\n * subcollection names — the same derived sweep\n * `host-subcollection-write-deny-coverage.spec.ts` uses, for the same reason —\n * and asserts {@link PLUGIN_CONTENT_COLLECTIONS} is EXACTLY that sweep minus\n * {@link CORE_CONTENT_COLLECTIONS} minus {@link MEDIA_SCAN_EXCLUDED}. A new\n * collection fails the build with a one-line decision to make, and the default\n * answer — add it to the scanned list — is also the safe one.\n *\n * ## The plugin boundary was NOT crossed to do this\n *\n * Worth stating, because \"read plugin data into a first-party corpus\" sounds\n * like it should be. It is not, and the reason is that \"plugin\" means two\n * disjoint things:\n *\n * - a SANDBOXED marketplace plugin runs in an iframe on a separate origin and\n * has no Firestore access at all — `plugin-bridge.ts` is the whole protocol\n * and its guest verbs are `ready`, `resize`, `event`, `fetch-request` and\n * `error`, with `parseGuestMessage` rejecting anything else. It owns no\n * documents, so there is nothing here to reach into.\n * - a FIRST-PARTY feature plugin under `libs/plugins/*` is compiled into the\n * apps and writes ORDINARY host subcollections with the ordinary SDKs. Those\n * documents already sit under the same `hosts/{hostId}` rules as a screen,\n * are already read by first-party console pages, and are already covered by\n * the same scope check the scan runs before it reads anything.\n *\n * So the corpus grows to include documents the caller could already read\n * through the console, under an authorization decision that has not changed.\n * Nothing in the sandbox boundary is bypassed, because no sandboxed guest owns\n * any of this.\n */\n\n/**\n * Host subcollections the media scan reads through its own dedicated machinery.\n *\n * Not \"excluded\" — covered, by a pass that knows their shape. Screens, layouts,\n * components and email templates each hang a node tree off\n * `…/versions/{versionId}` and get the published-version and history passes;\n * `collections` is walked one level deeper, into `…/entries`.\n */\nexport const CORE_CONTENT_COLLECTIONS = [\n 'screens',\n 'layouts',\n 'components',\n 'emailTemplates',\n 'collections',\n] as const\n\n/**\n * Host subcollections deliberately NOT read by the media scan, and why.\n *\n * Every entry has to answer one of two questions: what would scanning it cost,\n * or what would scanning it get wrong. \"It probably has no images in it\" is not\n * an accepted reason — that is the guess this file is arranged to avoid making.\n */\nexport const MEDIA_SCAN_EXCLUDED: Record<string, string> = {\n // ── Scanning these would be WRONG, not merely expensive ────────────────\n media:\n 'The library itself. The asset under audit IS a document in here, and its ' +\n 'own record holds its own url, cdnPath and storage path — every needle ' +\n 'the scan carries. Reading this collection would report every asset as ' +\n 'referencing itself, which turns a deletion-safety control into noise ' +\n 'that nobody reads.',\n mediaFolders:\n 'Folder records: a name, a parent pointer and a scope. A folder never ' +\n 'holds an asset reference, and it is not a dependent either — deleting a ' +\n 'file does not break the folder it sat in.',\n emailCampaigns:\n 'The campaign CONTAINER — a name, a date window, the list ids it is ' +\n 'aimed at and a topic. Distinct from `campaigns`, which holds the sends ' +\n 'and IS scanned because a send carries the copy that went out. A ' +\n 'container carries no copy and no asset reference: the design a send ' +\n 'renders is a screen, and the screen is where the picker writes.',\n\n // ── Machine-written telemetry: unbounded, and no author picks into it ──\n analytics:\n 'Per-day traffic rollups written by the tenant collector. One document ' +\n 'per day per site forever, no author-editable field, and no surface that ' +\n 'can pick an asset into one.',\n screenAnalytics:\n 'Per-screen traffic history behind the Pro+ panel, written by the same ' +\n 'collector on the same unbounded per-day cadence.',\n counters:\n 'Quota and usage counters, server-owned (AGL-1367) and denied to client ' +\n 'writes outright. Numbers, not content.',\n activity:\n 'The site activity feed — an append-only audit log the console writes a ' +\n 'row into on every change. Unbounded by design, and a row that quotes an ' +\n 'asset id is a record that somebody touched it, not a place it is used.',\n\n // ── Transaction and ledger rows: unbounded, and a SNAPSHOT is not a use ─\n orders:\n 'Completed orders. Line items COPY a product\\'s `imageUrl` at purchase ' +\n 'time, so these would match — and matching would be the wrong answer: an ' +\n 'order is an immutable record of what was sold, deleting the asset ' +\n 'changes nothing about it, and no author can edit one. A busy store also ' +\n 'holds more of these than the whole read budget.',\n carts:\n 'Live and abandoned carts, with the same copied line-item image and the ' +\n 'same reasoning, at higher volume — one document per shopper session.',\n checkouts:\n 'In-flight checkout sessions. Transient buyer state carrying the same ' +\n 'line-item snapshot as `carts`.',\n formSubmissions:\n 'Visitor form submissions. Unbounded, PII-heavy, and a file attached to ' +\n 'one is the visitor\\'s upload — not a library asset an author picked, and ' +\n 'not something deleting a library asset would break.',\n leads:\n 'Captured leads, on the same footing as `formSubmissions`: visitor-' +\n 'submitted, unbounded, and never a place an author places an asset.',\n bookings:\n 'Booking records — a customer, a time and a service pointer. The service ' +\n 'holds the imagery and IS scanned; a booking is the transaction against ' +\n 'it.',\n campaignAttributions:\n 'One row per conversion — a form submission, a lead, a contact or a ' +\n 'booking — recording which campaign the visitor arrived from. Written ' +\n 'only by the Admin SDK, and the whole record is three sanitized UTM ' +\n 'strings capped at a hundred characters: there is no field an asset ' +\n 'could occupy and no surface that could pick one into it. Unbounded on ' +\n 'the same footing as the conversions it credits.',\n reservations:\n 'POS and booking holds. Short-lived transaction rows pointing at a ' +\n 'resource that is itself scanned.',\n stockHolds:\n 'Inventory holds taken during checkout. Machine-written, short-lived, ' +\n 'and a quantity rather than content.',\n subscriptions:\n 'Site membership subscriptions: a plan pointer, a status and Stripe ' +\n 'ids. Server-written from the billing webhook.',\n registers:\n 'POS register allocations — a count against the register add-on, read by ' +\n 'billing (AGL-1775). No content field at all.',\n giftCards:\n 'Gift card balances and redemption history. Money, not content.',\n licenseKeys:\n 'Digital-product license keys issued at fulfilment: a code, an order ' +\n 'pointer and a revocation flag.',\n inventoryAdjustments:\n 'The append-only stock adjustment ledger (AGL-2269). One row per manual ' +\n 'stock edit and per cancellation release, unbounded over a store\\'s life.',\n inventoryReconciliation:\n 'Reconciliation runs comparing counted stock against recorded stock. ' +\n 'Machine-written totals.',\n restockAlerts:\n 'Back-in-stock requests: an email address and a product pointer, written ' +\n 'by visitors.',\n suppressions:\n 'Unsubscribes, bounces and spam complaints. Email addresses and a ' +\n 'reason.',\n stripeTaxRates:\n 'Cached Stripe tax rate ids, written by the tax sync. Vendor ids.',\n members:\n 'The ORG-facing member roster mirrored onto the site, server-owned ' +\n '(AGL-1367). A member\\'s photo is their own account photo, uploaded ' +\n 'through /api/account/photo and stored outside any site\\'s library, so it ' +\n 'is not an asset this scan can be asked about.',\n}\n\n/**\n * Host subcollections the media scan reads generically.\n *\n * Generically: no per-collection field list and no per-collection decoder.\n * Each document is flattened by `documentHaystack` — which decodes `nodes` and\n * `elements` through `decodeStoredNodes` first, so a plugin that adopts the\n * compressed storage form is covered without touching this file — and the\n * matching field's dotted path is recovered by walking the document. A field\n * list here would be the same staleness trap `referencingFieldPath` was written\n * to avoid one level down.\n *\n * MUST equal the repo-wide host subcollection sweep minus\n * {@link CORE_CONTENT_COLLECTIONS} minus {@link MEDIA_SCAN_EXCLUDED}. The guard\n * spec asserts exactly that, in both directions, so this list can neither miss\n * a new collection nor keep naming a deleted one.\n */\nexport const PLUGIN_CONTENT_COLLECTIONS = [\n 'actions',\n 'authors',\n 'campaigns',\n 'coupons',\n 'discounts',\n 'events',\n 'experiments',\n 'forms',\n 'functions',\n 'installs',\n 'locations',\n 'memberPosts',\n 'overlays',\n 'pluginSettings',\n 'productCategories',\n 'products',\n 'redirects',\n 'resources',\n 'reviews',\n 'services',\n 'settings',\n 'siteMembers',\n 'suppliers',\n 'templates',\n 'variables',\n 'webhooks',\n 'workflows',\n] as const\n\nexport type PluginContentCollection =\n (typeof PLUGIN_CONTENT_COLLECTIONS)[number]\n\n/**\n * Console page slug a plugin-content reference row deep-links to.\n *\n * Optional on purpose, and deliberately not required for a collection to be\n * scanned. A row with no destination still renders — as text rather than a\n * link — and that is strictly better than the row not existing, which is the\n * bug this issue is about. Requiring a slug would have made the deep link a\n * precondition for coverage and quietly re-created the hole for every\n * collection nobody had got round to routing.\n *\n * Keyed by collection, valued with the `[pluginSlug]` segment of\n * `Route.HOST_PLUGIN`.\n */\nexport const PLUGIN_CONTENT_ROUTE_SLUG: Partial<\n Record<PluginContentCollection, string>\n> = {\n products: 'products',\n productCategories: 'products',\n suppliers: 'products',\n locations: 'products',\n coupons: 'products',\n discounts: 'products',\n reviews: 'products',\n memberPosts: 'products',\n events: 'events',\n services: 'bookings',\n resources: 'bookings',\n redirects: 'redirects',\n campaigns: 'marketing',\n experiments: 'marketing',\n workflows: 'workflows',\n webhooks: 'workflows',\n functions: 'logic',\n variables: 'logic',\n actions: 'logic',\n}\n\n/**\n * What to call one of these in a reference row.\n *\n * Derived from the collection name rather than declared, so a newly scanned\n * collection gets a readable label without a second list to keep in step —\n * `productCategories` reads as \"Product category\". Singularised with the two\n * rules English spells consistently enough to be worth automating; anything\n * else keeps its name, which is a cosmetic miss rather than a coverage one.\n */\nexport function hostContentCollectionLabel(collection: string): string {\n const singular = /ies$/.test(collection)\n ? collection.replace(/ies$/, 'y')\n : /(ss|s)$/.test(collection)\n ? collection.replace(/s$/, '')\n : collection\n const spaced = singular.replace(/([a-z0-9])([A-Z])/g, '$1 $2').toLowerCase()\n return spaced.charAt(0).toUpperCase() + spaced.slice(1)\n}\n"],"names":["CORE_CONTENT_COLLECTIONS","MEDIA_SCAN_EXCLUDED","media","mediaFolders","emailCampaigns","analytics","screenAnalytics","counters","activity","orders","carts","checkouts","formSubmissions","leads","bookings","campaignAttributions","reservations","stockHolds","subscriptions","registers","giftCards","licenseKeys","inventoryAdjustments","inventoryReconciliation","restockAlerts","suppressions","stripeTaxRates","members","PLUGIN_CONTENT_COLLECTIONS","PLUGIN_CONTENT_ROUTE_SLUG","products","productCategories","suppliers","locations","coupons","discounts","reviews","memberPosts","events","services","resources","redirects","campaigns","experiments","workflows","webhooks","functions","variables","actions","hostContentCollectionLabel","collection","singular","test","replace","spaced","toLowerCase","charAt","toUpperCase","slice"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6DC,GAED;;;;;;;CAOC,GACD,OAAO,MAAMA,2BAA2B;IACtC;IACA;IACA;IACA;IACA;CACD,CAAS;AAEV;;;;;;CAMC,GACD,OAAO,MAAMC,sBAA8C;IACzD,0EAA0E;IAC1EC,OACE,8EACA,2EACA,2EACA,0EACA;IACFC,cACE,0EACA,6EACA;IACFC,gBACE,wEACA,4EACA,qEACA,yEACA;IAEF,0EAA0E;IAC1EC,WACE,2EACA,6EACA;IACFC,iBACE,2EACA;IACFC,UACE,4EACA;IACFC,UACE,4EACA,6EACA;IAEF,2EAA2E;IAC3EC,QACE,2EACA,6EACA,uEACA,6EACA;IACFC,OACE,4EACA;IACFC,WACE,0EACA;IACFC,iBACE,4EACA,8EACA;IACFC,OACE,uEACA;IACFC,UACE,6EACA,4EACA;IACFC,sBACE,wEACA,0EACA,wEACA,wEACA,2EACA;IACFC,cACE,uEACA;IACFC,YACE,0EACA;IACFC,eACE,wEACA;IACFC,WACE,6EACA;IACFC,WACE;IACFC,aACE,yEACA;IACFC,sBACE,4EACA;IACFC,yBACE,yEACA;IACFC,eACE,6EACA;IACFC,cACE,sEACA;IACFC,gBACE;IACFC,SACE,uEACA,wEACA,8EACA;AACJ,EAAC;AAED;;;;;;;;;;;;;;;CAeC,GACD,OAAO,MAAMC,6BAA6B;IACxC;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;CACD,CAAS;AAKV;;;;;;;;;;;;CAYC,GACD,OAAO,MAAMC,4BAET;IACFC,UAAU;IACVC,mBAAmB;IACnBC,WAAW;IACXC,WAAW;IACXC,SAAS;IACTC,WAAW;IACXC,SAAS;IACTC,aAAa;IACbC,QAAQ;IACRC,UAAU;IACVC,WAAW;IACXC,WAAW;IACXC,WAAW;IACXC,aAAa;IACbC,WAAW;IACXC,UAAU;IACVC,WAAW;IACXC,WAAW;IACXC,SAAS;AACX,EAAC;AAED;;;;;;;;CAQC,GACD,OAAO,SAASC,2BAA2BC,UAAkB;IAC3D,MAAMC,WAAW,OAAOC,IAAI,CAACF,cACzBA,WAAWG,OAAO,CAAC,QAAQ,OAC3B,UAAUD,IAAI,CAACF,cACbA,WAAWG,OAAO,CAAC,MAAM,MACzBH;IACN,MAAMI,SAASH,SAASE,OAAO,CAAC,sBAAsB,SAASE,WAAW;IAC1E,OAAOD,OAAOE,MAAM,CAAC,GAAGC,WAAW,KAAKH,OAAOI,KAAK,CAAC;AACvD"}