@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,751 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ /**
3
+ * @license
4
+ * Copyright 2026 Aglyn LLC
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */ import { HOST_ERROR_SCREEN_SLOTS } from "../foundation/index.js";
18
+ import { collectionListUrl } from "./collection-entries.js";
19
+ import { PLATFORM_BRAND_NAME } from "./platform-brand.js";
20
+ import { formatCollectionLinkValue, formatEntryLinkValue, formatFeedLinkValue, parseEntryLinkValue } from "./screen-link-value.js";
21
+ /**
22
+ * Route path of a host's root screen. The tenant matcher joins the catch-all
23
+ * segments and collapses an empty one to this value (`load-page-data.ts`:
24
+ * `slugSegments.length ? slugSegments.join('/') : SCREEN_ROOT_PATH`), so the
25
+ * root is `'/'` and every other path is slash-joined segments WITHOUT a
26
+ * leading slash (`about`, later `company/about`).
27
+ */ export const SCREEN_ROOT_PATH = '/';
28
+ /**
29
+ * Normalizes user slug input into the routing-map path format described on
30
+ * {@link SCREEN_ROOT_PATH}. `'/'` normalizes to the root path; anything else
31
+ * becomes a single lowercase url-safe segment.
32
+ *
33
+ * Returns `undefined` for EMPTY input and for anything that sanitizes away
34
+ * (`'###'`) — the two cases are deliberately the same answer, and the caller
35
+ * decides what it means. In the Screens page's slug field an empty string
36
+ * means "no address typed"; in a starter template it meant "home". Two
37
+ * meanings for one value is what made AGL-1575 possible, so this function
38
+ * refuses to pick one: a caller that wants the root must say `'/'`.
39
+ *
40
+ * This docstring used to claim empty input normalized to the root, which the
41
+ * code has never done (see the spec, which asserts the `undefined`). A fix
42
+ * written against the docstring instead of the behaviour would have shipped
43
+ * broken; if you are here to make the code match the comment, do not.
44
+ */ export function normalizeScreenSlug(input) {
45
+ const trimmed = (input != null ? input : '').trim();
46
+ if (!trimmed) return undefined;
47
+ if (trimmed === SCREEN_ROOT_PATH) return SCREEN_ROOT_PATH;
48
+ const segment = trimmed.toLowerCase().replace(/^\/+|\/+$/g, '').replace(/\s+/g, '-').replace(/[^a-z0-9-_]/g, '').replace(/-{2,}/g, '-').replace(/^-+|-+$/g, '');
49
+ return segment || undefined;
50
+ }
51
+ /**
52
+ * Route segments the published site CANNOT serve, whatever the routing map
53
+ * says (AGL-2076).
54
+ *
55
+ * Every entry was measured against production on 2026-08-19 with a fresh
56
+ * `x-vercel-cache: MISS`, because a stale negative always passes. Two
57
+ * mechanisms, both of which resolve ahead of `[host]/[scheme]/[[...slug]]`:
58
+ *
59
+ * - `404`, `500` — Next emits `pages/404.html` and `pages/500.html` even for
60
+ * an app-router-only build, and the deployed filesystem answers them as
61
+ * static files (`content-disposition: inline; filename="404"`,
62
+ * `accept-ranges`, an `etag`, and no `x-nextjs-prerender`). The tenant
63
+ * middleware's own CSP headers are on those responses, so the middleware
64
+ * ran and its rewrite still lost. There is no rewrite this app can write
65
+ * that beats them, which is why the honest fix is to refuse the slug at
66
+ * authoring time rather than to keep promising an address that is dead.
67
+ * - `search`, `api`, `_next`, `_static` — routes and exclusions the tenant
68
+ * app owns. `/search` matches `app/[host]/[scheme]/search`; the other three are the
69
+ * middleware matcher's exclusions, so no host rewrite happens at all and
70
+ * the path is parsed as `[host]` with an empty slug.
71
+ *
72
+ * NOT reserved, and deliberately so, because measuring found them fine:
73
+ * `401`, `403`, `503` (`/401` returns 200 through the catch-all — two of the
74
+ * four designed error screens have always been viewable at their slugs, which
75
+ * is what made the `404` case look like a Next.js defect), and `index`.
76
+ *
77
+ * `fonts` and `examples` USED to be dead for the third reason and are not
78
+ * here: they were exclusions inherited from the Vercel platforms starter kit
79
+ * for directories `apps/tenant/public` has never contained. They are given
80
+ * back rather than reserved — see the matcher in `apps/tenant/middleware.ts`.
81
+ */ export const RESERVED_SCREEN_ROUTE_SEGMENTS = [
82
+ '404',
83
+ '500',
84
+ 'search',
85
+ 'api',
86
+ '_next',
87
+ '_static'
88
+ ];
89
+ /**
90
+ * The reserved segment a routing-map path would collide with, or `undefined`
91
+ * when the path is servable. The segment rather than a boolean, so a refusal
92
+ * can name what it is refusing over.
93
+ *
94
+ * Reads the FIRST segment only. For `api`/`_next`/`_static` that is exactly
95
+ * right — the middleware excludes the whole subtree, so `api/docs` is as dead
96
+ * as `api`. For `404`/`500`/`search` it over-refuses in principle (`/404/why`
97
+ * would serve), and that is deliberate: a child path only exists when its
98
+ * PARENT screen is published, the parent would sit at `404`, and this same
99
+ * rule refuses that. A second list to express a case that cannot arise would
100
+ * be a second list to keep correct.
101
+ *
102
+ * Takes a composed routing-map path (`about`, `company/about`, `'/'`), not a
103
+ * raw slug field — `'/'` is the home screen and is never reserved.
104
+ */ export function reservedScreenRouteSegment(path) {
105
+ if (!path || path === SCREEN_ROOT_PATH) return undefined;
106
+ const [first] = path.replace(/^\/+/, '').split('/');
107
+ return RESERVED_SCREEN_ROUTE_SEGMENTS.includes(first) ? first : undefined;
108
+ }
109
+ /**
110
+ * The refusal an author reads when {@link reservedScreenRouteSegment} names a
111
+ * segment. One sentence, in one place, because the Screens page, the version
112
+ * view and the besigner all have to say the same thing — three surfaces
113
+ * wording a platform constraint three ways is how AGL-2093's precheck drifted.
114
+ */ export function reservedScreenRouteMessage(segment) {
115
+ return `"/${segment}" is a reserved address on every ${PLATFORM_BRAND_NAME} site — pick another slug`;
116
+ }
117
+ /**
118
+ * Does a raw slug value carry a path separator the one segment it describes
119
+ * cannot hold (AGL-2572)?
120
+ *
121
+ * {@link normalizeScreenSlug} answers with a SINGLE segment, and it gets there
122
+ * by deleting every character outside `[a-z0-9-_]` — an interior `/` included.
123
+ * Whitespace becomes a `-`, but a `/` becomes nothing at all, so
124
+ * `alternatives/webflow` normalizes to `alternativeswebflow` and the two words
125
+ * are stored glued. Nothing about that is visible: the field accepts the
126
+ * keystroke, the composed path reads plausibly, and the screen ends up
127
+ * answering an address nobody typed. Two screens on `aglyn-marketing` carry a
128
+ * slug of that shape.
129
+ *
130
+ * So the separator is a question a slug field asks BEFORE normalizing, and the
131
+ * answer is a refusal rather than a silent repair — the caller cannot know
132
+ * which segment the author meant, and guessing is how the glue happened.
133
+ *
134
+ * LEADING and TRAILING slashes are not separators here. `normalizeScreenSlug`
135
+ * strips them deliberately (`/about/` → `about`), an author typing an address
136
+ * writes them without meaning a hierarchy, and refusing them would reject a
137
+ * value the normalizer has always handled correctly. `'/'` alone is the home
138
+ * page and is never a separator.
139
+ */ export function screenSlugHasPathSeparator(input) {
140
+ const trimmed = (input != null ? input : '').trim();
141
+ if (!trimmed || trimmed === SCREEN_ROOT_PATH) return false;
142
+ return trimmed.replace(/^\/+|\/+$/g, '').includes('/');
143
+ }
144
+ /**
145
+ * The refusal an author reads when {@link screenSlugHasPathSeparator} answers
146
+ * true. One sentence, in one place, for the same reason
147
+ * {@link reservedScreenRouteMessage} is: the Screens page, the version view
148
+ * and the besigner all take a slug, and a constraint worded three ways drifts
149
+ * into three different constraints.
150
+ *
151
+ * It names the alternative, because a `/` in this field almost always means
152
+ * "nest me" and the hierarchy is what actually composes the longer path.
153
+ */ export const SCREEN_SLUG_PATH_SEPARATOR_MESSAGE = 'A slug is one path segment — remove the "/" and nest the screen under a ' + 'parent screen instead';
154
+ /** Defensive cap: parent chains deeper than this are treated as invalid. */ const MAX_SCREEN_DEPTH = 32;
155
+ /**
156
+ * Composes a screen's routing-map path from its own slug plus its ancestor
157
+ * chain: parent `company` + own `about` → `company/about`. Root (`'/'`)
158
+ * segments contribute nothing, so children of the home screen sit at the
159
+ * top level. Returns `undefined` when the screen (or any ancestor) has no
160
+ * slug, when the screen's own slug is `'/'` while it has a parent, or when
161
+ * the chain has a cycle / exceeds {@link MAX_SCREEN_DEPTH}.
162
+ */ export function composeScreenRoutePath(screenId, screensById) {
163
+ const segments = [];
164
+ const visited = new Set();
165
+ let currentId = screenId;
166
+ while(currentId){
167
+ if (visited.has(currentId) || visited.size >= MAX_SCREEN_DEPTH) {
168
+ return undefined;
169
+ }
170
+ visited.add(currentId);
171
+ const screen = screensById[currentId];
172
+ if (!(screen == null ? void 0 : screen.slug)) return undefined;
173
+ if (screen.slug === SCREEN_ROOT_PATH) {
174
+ // The home screen's segment is empty (children of home sit at the top
175
+ // level), but a screen can't itself be the home page AND have a parent.
176
+ if (currentId === screenId && screen.parentId) return undefined;
177
+ } else {
178
+ segments.unshift(screen.slug);
179
+ }
180
+ currentId = screen.parentId;
181
+ }
182
+ if (!segments.length) {
183
+ var _screensById_screenId;
184
+ return ((_screensById_screenId = screensById[screenId]) == null ? void 0 : _screensById_screenId.slug) === SCREEN_ROOT_PATH ? SCREEN_ROOT_PATH : undefined;
185
+ }
186
+ return segments.join('/');
187
+ }
188
+ /**
189
+ * All screens whose parent chain passes through `screenId` (children,
190
+ * grandchildren, …). Used to cascade routing-map rewrites when a screen's
191
+ * slug or parent changes.
192
+ */ export function collectScreenDescendantIds(screenId, screensById) {
193
+ var _childrenByParent_get;
194
+ const childrenByParent = new Map();
195
+ for (const [id, screen] of Object.entries(screensById)){
196
+ var _childrenByParent_get1;
197
+ if (!(screen == null ? void 0 : screen.parentId)) continue;
198
+ const siblings = (_childrenByParent_get1 = childrenByParent.get(screen.parentId)) != null ? _childrenByParent_get1 : [];
199
+ siblings.push(id);
200
+ childrenByParent.set(screen.parentId, siblings);
201
+ }
202
+ const result = [];
203
+ const queue = [
204
+ ...(_childrenByParent_get = childrenByParent.get(screenId)) != null ? _childrenByParent_get : []
205
+ ];
206
+ while(queue.length){
207
+ var _childrenByParent_get2;
208
+ const id = queue.shift();
209
+ if (result.includes(id)) continue;
210
+ result.push(id);
211
+ queue.push(...(_childrenByParent_get2 = childrenByParent.get(id)) != null ? _childrenByParent_get2 : []);
212
+ }
213
+ return result;
214
+ }
215
+ /**
216
+ * True when making `nextParentId` the parent of `screenId` would create a
217
+ * loop — i.e. the candidate parent is the screen itself or one of its own
218
+ * descendants.
219
+ */ export function wouldCreateScreenCycle(screenId, nextParentId, screensById) {
220
+ if (!nextParentId) return false;
221
+ if (nextParentId === screenId) return true;
222
+ return collectScreenDescendantIds(screenId, screensById).includes(nextParentId);
223
+ }
224
+ /**
225
+ * Routing-map entries for a screen plus all its descendants under a
226
+ * candidate screens map: a composed path sets the entry, `null` marks an
227
+ * existing entry whose chain no longer resolves for removal. Callers apply
228
+ * the result in one write so slug/parent changes cascade atomically.
229
+ *
230
+ * See {@link BuildScreenRouteEntriesOptions.publish} for the difference
231
+ * between publishing a screen and merely moving one.
232
+ */ export function buildScreenRouteEntries(screenId, screensById, routingMap, options = {}) {
233
+ const { publish = true } = options;
234
+ const entries = {};
235
+ const ids = [
236
+ screenId,
237
+ ...collectScreenDescendantIds(screenId, screensById)
238
+ ];
239
+ for (const id of ids){
240
+ const routed = (routingMap == null ? void 0 : routingMap[id]) !== undefined;
241
+ const path = composeScreenRoutePath(id, screensById);
242
+ if (path) {
243
+ // A move rewrites what is live; it never puts something new there.
244
+ if (routed || publish) entries[id] = path;
245
+ } else if (routed) entries[id] = null;
246
+ }
247
+ return entries;
248
+ }
249
+ /**
250
+ * Looks up which screen currently owns a routing path, for sibling-slug
251
+ * uniqueness checks before publishing.
252
+ */ export function findScreenIdByRoutePath(screens, path) {
253
+ if (!screens) return undefined;
254
+ const entry = Object.entries(screens).find(([, value])=>value === path);
255
+ return entry == null ? void 0 : entry[0];
256
+ }
257
+ /** Human-facing URL for a routing-map path (`'/'` stays `/`, `about` → `/about`). */ export function screenRoutePathToUrl(path) {
258
+ return path === SCREEN_ROOT_PATH ? SCREEN_ROOT_PATH : `/${path}`;
259
+ }
260
+ /**
261
+ * A screen's OWN slug segment, read back off its composed routing-map path
262
+ * (`company/about` → `about`) — the inverse of the one step
263
+ * {@link composeScreenRoutePath} adds for this screen (AGL-2572).
264
+ *
265
+ * The slug field holds one segment; the routing map holds the whole composed
266
+ * path. A field that seeds itself from the map therefore has to take the last
267
+ * segment, and the besigner's seeded the whole path instead. Its value then
268
+ * went through {@link normalizeScreenSlug}, which DELETES an interior `/`
269
+ * rather than separating on it, so `alternatives/webflow` came back as the
270
+ * glued `alternativeswebflow` and was stored as the screen's own slug —
271
+ * without anyone typing it. Two screens on `aglyn-marketing` carry a slug of
272
+ * that shape.
273
+ *
274
+ * Not a general path parser: it answers only "which segment is this screen's
275
+ * own", which is always the last one.
276
+ */ export function ownScreenSlugFromRoutePath(path) {
277
+ if (!path) return undefined;
278
+ if (path === SCREEN_ROOT_PATH) return SCREEN_ROOT_PATH;
279
+ const segments = path.split('/').filter(Boolean);
280
+ return segments[segments.length - 1];
281
+ }
282
+ /**
283
+ * Where a collection's RSS feed is served, in the routing map's own format
284
+ * (no leading slash): `blog/rss.xml` for the collection at `/blog`.
285
+ */ export function collectionFeedRoutePath(collectionSlug) {
286
+ const listing = collectionListUrl({
287
+ collectionSlug
288
+ }).replace(/^\/+|\/+$/g, '');
289
+ return `${listing}/rss.xml`;
290
+ }
291
+ /**
292
+ * Where a collection ENTRY is served, in the routing map's own format (no
293
+ * leading slash): `blog/hello` for the entry slugged `hello` in the
294
+ * collection at `/blog` — the `/{collection}/{entry}` shape
295
+ * `parseCollectionRoute` reads back.
296
+ */ export function collectionEntryRoutePath(collectionSlug, entrySlug) {
297
+ const listing = collectionListUrl({
298
+ collectionSlug
299
+ }).replace(/^\/+|\/+$/g, '');
300
+ return `${listing}/${entrySlug.trim().replace(/^\/+|\/+$/g, '')}`;
301
+ }
302
+ /**
303
+ * The routing map as a LINK TARGET table (AGL-1998).
304
+ *
305
+ * The host's `screens` map is written by publishing, one entry per screen
306
+ * under its own composed slug, and the tenant router then edits it at serve
307
+ * time: template screens are dropped (see {@link LinkableScreenRouteSources})
308
+ * and a collection's list template is reached at `/{collectionSlug}` instead.
309
+ * Everything that RESOLVES a screen link — `resolveScreenHref` on the live
310
+ * site, the besigner's screen picker, every `Link`-typed component prop — was
311
+ * reading the raw map, so the two surfaces disagreed with the router in both
312
+ * directions at once:
313
+ *
314
+ * - `/blog` was UNOFFERABLE. The blog's list template is published under
315
+ * `blog-list-template` and serves `/blog`, so no screen link on aglyn.com
316
+ * could point at the site's own blog index.
317
+ * - Every template screen was offered at a path that 404s, and an author who
318
+ * picked one got a dead anchor that looks exactly like a live one.
319
+ *
320
+ * So the map every linking surface reads is derived here, from the same two
321
+ * facts the router uses, and the picker can no longer offer a path the router
322
+ * would refuse.
323
+ *
324
+ * A content collection's LISTING is a target in its own right (AGL-2799),
325
+ * keyed `collection:<collectionId>` beside the screen ids. Its path comes from
326
+ * `collectionListUrl`, the builder the pager, the canonical link and the
327
+ * sitemap already share, so a link cannot give a listing an address the rest
328
+ * of the site does not; and because the key is the collection's id rather than
329
+ * its slug, renaming the slug moves every link to it on the next render. A
330
+ * collection that is gone, or that has lost its slug, has no entry — the same
331
+ * absence `isScreenLinkBroken` reads as a dead target.
332
+ *
333
+ * A raw map with no source given comes back unchanged; an absent map with no
334
+ * overrides and no listings stays absent, because `undefined` means "nothing
335
+ * resolves yet" to {@link ScreenLinkContext} and `{}` would mean "resolved:
336
+ * nowhere".
337
+ */ export function linkableScreenRoutes(screens, sources = {}) {
338
+ const { routedElsewhere, unrouted, collectionListings, entryRoutes } = sources;
339
+ const overrides = Object.entries(routedElsewhere != null ? routedElsewhere : {});
340
+ const listings = Object.entries(collectionListings != null ? collectionListings : {});
341
+ const entries = Object.entries(entryRoutes != null ? entryRoutes : {});
342
+ if (!screens && !overrides.length && !listings.length && !entries.length) {
343
+ return undefined;
344
+ }
345
+ const next = _extends({}, screens != null ? screens : {});
346
+ for (const id of unrouted != null ? unrouted : [])delete next[id];
347
+ for (const [collectionId, collectionSlug] of listings){
348
+ const slug = typeof collectionSlug === 'string' ? collectionSlug.trim().replace(/^\/+|\/+$/g, '') : '';
349
+ if (!collectionId.trim() || !slug) continue;
350
+ // Built by the one listing-URL builder, then stored in the map's own
351
+ // format: no leading slash, which `resolveScreenHref` puts back.
352
+ next[formatCollectionLinkValue(collectionId)] = collectionListUrl({
353
+ collectionSlug: slug
354
+ }).replace(/^\/+/, '');
355
+ // The feed hangs off the same listing (AGL-3118), so it follows the same
356
+ // rename and disappears with the same collection.
357
+ next[formatFeedLinkValue(collectionId)] = collectionFeedRoutePath(slug);
358
+ }
359
+ for (const [key, path] of entries){
360
+ // Only well-formed entry keys, stored under their canonical spelling: this
361
+ // source must not be able to plant a screen id or a listing key the other
362
+ // sources own.
363
+ const entry = parseEntryLinkValue(key);
364
+ if (!entry) continue;
365
+ const normalized = typeof path === 'string' ? path.trim().replace(/^\/+|\/+$/g, '') : '';
366
+ if (!normalized) continue;
367
+ next[formatEntryLinkValue(entry.collectionId, entry.entryId)] = normalized;
368
+ }
369
+ for (const [id, path] of overrides){
370
+ // A collection slug (`blog`) arrives in the map's own format already, but
371
+ // the same fact is spelled `/blog` in half the places it is read from, and
372
+ // a stored `/blog` would resolve to `//blog` — an absolute URL to the host
373
+ // `blog`, i.e. off the site entirely.
374
+ const normalized = typeof path === 'string' && path !== SCREEN_ROOT_PATH ? path.replace(/^\/+|\/+$/g, '') : path;
375
+ if (!normalized) continue;
376
+ next[id] = normalized;
377
+ }
378
+ return next;
379
+ }
380
+ /**
381
+ * `kind` of a besigner email document (AGL-395): a screen authored on the
382
+ * Emails page and sent by a campaign, never served at a URL.
383
+ */ export const SCREEN_KIND_EMAIL = 'email';
384
+ /**
385
+ * `kind` of a collection ENTRY template (AGL-1400): a screen that composes
386
+ * `/{collection}/{entry}` for every entry and has no address of its own.
387
+ *
388
+ * The value exists so that "is this screen a page?" stops being a JOIN.
389
+ * Four issues (AGL-1173, AGL-1383, AGL-1387, AGL-1390) were the same sentence
390
+ * at different depths because the answer was derived from a mutable field on a
391
+ * DIFFERENT document — a collection's `entryScreenId` — and every new way to
392
+ * edit that pointer was a new bypass of `screensPerHost`. Here the fact is a
393
+ * property of the screen, server-stamped by /api/hosts/screens and frozen in
394
+ * the rules exactly as `kind: 'email'` has been since AGL-1383.
395
+ *
396
+ * NOT a collection's LIST template. `/{collectionSlug}` renders that exact
397
+ * screen with its entries, so it is a designed reachable page and AGL-1387
398
+ * made it count; converting one would take the page off the site.
399
+ */ export const SCREEN_KIND_TEMPLATE = 'template';
400
+ /**
401
+ * `kind` of a designed ERROR screen (AGL-2092): the screen a host assigns to
402
+ * one of `errorScreens`' four status slots, rendered on paths that did not
403
+ * match — and so, like an entry template, at no address of its own.
404
+ *
405
+ * the decision on 2026-08-18 was that these must not spend the plan's screen
406
+ * allowance, for the reason AGL-1173 excluded an entry template: the governing
407
+ * question is whether the screen occupies a URL of its own, and a 404 body does
408
+ * not. (A collection's LIST template does — `/{collectionSlug}` renders that
409
+ * exact screen — which is why AGL-1387 left it counting.)
410
+ *
411
+ * ## This value does NOT get `kind: 'template'`'s trust
412
+ *
413
+ * `billableScreenIds` short-circuits on `SCREEN_KIND_TEMPLATE` BEFORE it
414
+ * consults the routing map, because a template is routed on purpose. An error
415
+ * screen is not, so it deliberately falls through to the ordinary rule and
416
+ * **the routing map outranks this field**: a screen still published at an
417
+ * address of its own counts, whatever it says about itself. That is the whole
418
+ * migration story for the error screens that already exist — see
419
+ * {@link ERROR_SCREEN_MAX_PER_HOST}.
420
+ *
421
+ * Stamped only by /api/hosts/screens, as part of binding the screen to a slot,
422
+ * and frozen against the client by the same rule that has frozen `kind` since
423
+ * AGL-1383. Nothing about that is new for this value; what IS new is that the
424
+ * stamp is BOUNDED, because unlike a template there is no natural limit on how
425
+ * many screens somebody would like to declare as error pages.
426
+ */ export const SCREEN_KIND_ERROR = 'error';
427
+ /**
428
+ * How many screens one host may hold with `kind: 'error'` (AGL-2092).
429
+ *
430
+ * An exclusion the metered party can ask for is a free-screen generator unless
431
+ * something bounds it, and the four bindings in `HostErrorScreens` are the
432
+ * bound: at most one exempt screen per error slot. It is `.length` of the slot
433
+ * list rather than a literal `4` so the two can never disagree.
434
+ *
435
+ * Checked in TWO places, and the second is the one that makes the number true
436
+ * (AGL-2093). At the moment of the STAMP, against the post-state — the
437
+ * AGL-1390 shape, which produces the refusal worth reading because it can name
438
+ * the four slots. And inside `billableScreenIds` itself, where a live error
439
+ * screen past this bound is counted as an ordinary page: the stamp is not the
440
+ * only writer, and a crafted import bundle carrying `kind: 'error'` on all 200
441
+ * of its screens passed no bound at all until the rule owned one. An exclusion
442
+ * enforced only at the write paths somebody remembered is the sentence this arc
443
+ * has now repeated six times.
444
+ *
445
+ * The tempting alternative is to enforce "bound to a slot" as an
446
+ * invariant, promoting a screen back to a page whenever its slot is cleared;
447
+ * that is AGL-1390's refuse-the-clear bug wearing a different hat, because
448
+ * promotion raises the count and a host at its cap could then never unassign an
449
+ * error screen. So clearing a slot is always allowed and leaves the screen an
450
+ * error screen — unbilled, unrouted, and one deliberate click from being a page
451
+ * again — and what is bounded is how many of them can exist at once.
452
+ */ export const ERROR_SCREEN_MAX_PER_HOST = HOST_ERROR_SCREEN_SLOTS.length;
453
+ /**
454
+ * Whether a screen document claims to be a page of the site at all (AGL-1383).
455
+ *
456
+ * Four things say it is not: `deletedAt` (soft-deleted — delete stamps the
457
+ * field rather than removing the doc), `kind: 'email'` (an Emails-page
458
+ * document, which has no URL and is rendered only by the campaign sender,
459
+ * straight off the doc), `kind: 'template'` (a collection entry template,
460
+ * which composes `/{collection}/{entry}` and has no address of its own —
461
+ * AGL-1400) and `kind: 'error'` (a screen assigned to one of the host's four
462
+ * error slots, rendered on paths that matched nothing — AGL-2092). All four
463
+ * are also the exclusions `countBillableScreens` subtracts before enforcing
464
+ * `screensPerHost`, and since AGL-1400 they are the WHOLE of that subtraction:
465
+ * the count reads no other collection.
466
+ *
467
+ * Adding the fourth needed no edit to `billableScreenIds` and no edit to
468
+ * `nonPageScreenIds`, which is the property AGL-1439 wrote them for: the
469
+ * routing-map override applies to a new non-page `kind` by default, and the
470
+ * flat infrastructure cap is the complement, so there is no second list to
471
+ * remember. Only `kind: 'template'` is named anywhere else, because only it
472
+ * opts OUT of the routing-map override.
473
+ *
474
+ * That is exactly why this is ONE function with TWO callers rather than two
475
+ * matching filters. Both fields are ordinary client-writable fields on
476
+ * `hosts/{hostId}/screens/{screenId}`, and until AGL-1383 only the count read
477
+ * them: an editor on a Free site could `updateDoc(screenRef, {kind: 'email'})`
478
+ * and the screen stopped counting against the plan while the routing map still
479
+ * pointed at it and the runtime still served it — a live page, for free. An
480
+ * exclusion is only sound if an excluded screen genuinely is not a page, so the
481
+ * serve path asks this question too, and flipping either field now costs the
482
+ * page instead of the plan.
483
+ *
484
+ * A CLAIM, not the answer, for the two fields a client can still reach: the
485
+ * routing map decides reachability, and `countBillableScreens` trusts
486
+ * `deletedAt` / `kind: 'email'` only for screens the map does not route.
487
+ * `kind: 'error'` is in the client-can-still-reach group for counting purposes
488
+ * even though no client writes it either: an error screen that is ALSO
489
+ * published at an address is a page somebody is using as a page, so the map
490
+ * outranks the stamp and it counts. Serving is the other way round — see
491
+ * `getScreen`, which returns error screens rather than 404ing them, because
492
+ * refusing would break the customer's own designed error page without closing
493
+ * anything (they are already paying for it if it is routed).
494
+ *
495
+ * `kind: 'template'` is the exception, and the reason it can be one is that no
496
+ * client writes it — /api/hosts/screens stamps it, demotion lowers the count
497
+ * and promotion is checked exactly like a create, so there is no toggle to
498
+ * launder. A template is ROUTED on purpose (publishing is how the compose
499
+ * pipeline picks it up), which is why the map cannot be the arbiter for it.
500
+ */ export function screenClaimsToBeAPage(screen) {
501
+ if (!screen) return false;
502
+ return screen.deletedAt == null && screen.kind !== SCREEN_KIND_EMAIL && screen.kind !== SCREEN_KIND_TEMPLATE && screen.kind !== SCREEN_KIND_ERROR;
503
+ }
504
+ /**
505
+ * WHICH screens spend the plan's screen allowance (AGL-1173).
506
+ *
507
+ * The ids rather than the count, because an enforcement point that cannot name
508
+ * the screen it is refusing over is a refusal the person reading it cannot act
509
+ * on.
510
+ *
511
+ * A plain `screens.count()` charged for three things the subscriber never
512
+ * chose to author, and the screens list — which filters them out — then
513
+ * disagreed with the server about how much of the plan was used:
514
+ *
515
+ * - **Soft-deleted screens.** Delete stamps `deletedAt` rather than
516
+ * removing the doc, so deleting a screen never freed a slot. On the free
517
+ * plan (5 screens) that was a dead end with no way out from the UI.
518
+ * - **Email screens** (`kind: 'email'`), which live on the Emails page and
519
+ * were already excluded from the list count but not from enforcement.
520
+ * - **A collection's ENTRY template** — one screen serving every entry at no
521
+ * URL of its own. Adding a blog cost two of the free plan's five screens
522
+ * before the first page existed.
523
+ *
524
+ * ## Why it lives HERE, next to the predicate (AGL-2093)
525
+ *
526
+ * It was in /api/hosts/resources, and the console's Screens page — which runs
527
+ * the same rule as a precheck before it lets somebody add a page — could not
528
+ * import it from there (that module reaches `@aglyn/aglyn/server`, which pulls
529
+ * `node:stream` in through the API adapter). So the page restated it, and the
530
+ * restatement drifted: it never learned the error-screen bound below, and on a
531
+ * host holding five `kind: 'error'` screens the console offered room the API
532
+ * then refused. A precheck that warns on a different number than the API
533
+ * enforces is worse than no precheck at all, and a rule that has to be
534
+ * restated to be reused will be restated wrongly eventually. One function, two
535
+ * callers.
536
+ *
537
+ * ## ONE document answers it now (AGL-1400)
538
+ *
539
+ * The third exclusion used to be a JOIN: the count read the `collections`
540
+ * collection and subtracted whatever screen ids the template pointers named.
541
+ * That shape produced four issues in one arc, because the other side of the
542
+ * join is editable and each new way to edit it was a new bypass — AGL-1173
543
+ * created the exclusion, AGL-1383 froze the two fields the screen itself
544
+ * carried, AGL-1387 found the list template was a page after all, and AGL-1390
545
+ * found the pointer could be toggled to mint permanent slots and had to move
546
+ * the write server-side and evaluate the cap against the post-state.
547
+ *
548
+ * Since AGL-1400 an entry template says so on its own document
549
+ * (`kind: 'template'`), stamped by /api/hosts/screens and frozen in the rules
550
+ * exactly as `kind: 'email'` is. So this reads the `screens` collection and
551
+ * nothing else: the pointer is a pointer again, freely writable, and it excuses
552
+ * nothing. `screenClaimsToBeAPage` is the whole rule, which is the property
553
+ * that keeps the count and the serve path (`getScreen`) from ever disagreeing.
554
+ *
555
+ * What did NOT change is what anybody pays. A collection's LIST template stays
556
+ * a page — `/{collectionSlug}` renders that exact screen (AGL-1387) — so it is
557
+ * never stamped and still counts, and an entry template stays excluded
558
+ * (AGL-1173's charge is not reinstated).
559
+ *
560
+ * ## The routing map outranks the document, and ONLY ADDS (AGL-1383, AGL-1445)
561
+ *
562
+ * `deletedAt` and `kind: 'email'` are ordinary client-writable fields on the
563
+ * screen's OWN document, and the party they are subtracted on behalf of is the
564
+ * party being metered. `updateDoc(screenRef, {kind: 'email'})` — one write, no
565
+ * route change — used to take a live page off a Free plan's five and leave it
566
+ * serving, because nothing else read either field. So for those two the
567
+ * document's account of itself is consulted only for screens the routing map
568
+ * does not route: **a routed screen counts, whatever it says about itself**.
569
+ *
570
+ * The converse is NOT true and must not become true, which is AGL-1445's
571
+ * settlement. An unrouted screen with no slug — a draft, or an orphan left
572
+ * behind by an unpublish — serves nothing, and it still counts:
573
+ *
574
+ * - `screensPerHost` is a CREATE-TIME gate. /api/hosts/resources counts and
575
+ * refuses; `report-usage` re-measures monthly but RECORDS rather than
576
+ * enforces. The create is the only door.
577
+ * - A screen is born unrouted, and publishing is a separate later act — a
578
+ * client `updateDoc` on the host's `screens` map (`publishScreenRoute`),
579
+ * gated on `canPublishHostContent` and on nothing else.
580
+ *
581
+ * So subtracting unrouted screens would not make the count fairer, it would
582
+ * make every create free — the new document is unrouted by construction — and
583
+ * leave the publishes that follow ungated. A Free site would hold unlimited
584
+ * pages. AGL-1445's option 2 (server-stamping a non-page `kind` on orphans by
585
+ * a sweep) lands in the same place unless the promotion BACK passes a gate,
586
+ * and for an orphan the promotion is the publish. `kind: 'template'` can be
587
+ * trusted precisely because its promotion is `convertScreenKind`, checked
588
+ * exactly like a create; there is no equivalent door in front of the routing
589
+ * map. The price is one slot until somebody deletes the orphan, which is one
590
+ * click and which the Screens page lists like any other row —
591
+ * `unrouted-screen-counts.spec.ts` pins it at the enforcement point.
592
+ *
593
+ * `kind: 'template'` is deliberately outside the map's override, and it is the
594
+ * one value that can be. A template is routed ON PURPOSE — publishing is how
595
+ * the compose pipeline picks it up, and AGL-1267 drops it from routing when the
596
+ * request arrives — so the map cannot be the arbiter for it. What makes
597
+ * trusting it safe is that no client writes it: the demotion that sets it
598
+ * always succeeds (it lowers the count) and the promotion that clears it is
599
+ * checked exactly like a create (it raises it), so there is no toggle to run a
600
+ * loop through.
601
+ */ export function billableScreenIds(screens, routingMap) {
602
+ const routed = new Set(Object.keys(routingMap != null ? routingMap : {}));
603
+ const exemptErrors = exemptErrorScreenIds(screens);
604
+ const billable = new Set();
605
+ for (const screen of screens){
606
+ if (screen.kind === SCREEN_KIND_TEMPLATE) continue;
607
+ const claimsToBeAPage = screenClaimsToBeAPage({
608
+ kind: screen.kind,
609
+ deletedAt: screen.deletedAt
610
+ });
611
+ // A `kind: 'error'` screen OVER the slot bound is a page again (AGL-2093).
612
+ const exemptionSpent = screen.kind === SCREEN_KIND_ERROR && screen.deletedAt == null && !exemptErrors.has(screen.id);
613
+ if (routed.has(screen.id) || claimsToBeAPage || exemptionSpent) {
614
+ billable.add(screen.id);
615
+ }
616
+ }
617
+ return billable;
618
+ }
619
+ /**
620
+ * The live `kind: 'error'` screens whose billing exemption actually HOLDS —
621
+ * at most {@link ERROR_SCREEN_MAX_PER_HOST} of them (AGL-2093).
622
+ *
623
+ * ## Why the bound lives here and not at one endpoint
624
+ *
625
+ * AGL-2092 introduced the exemption and bounded it at four — one per
626
+ * `HostErrorScreens` slot — by checking the post-state at the moment
627
+ * /api/hosts/screens STAMPS the kind. That made the claim true of the assign
628
+ * route and false end to end, because the stamp is not the only writer:
629
+ * `SITE_EXPORT_FIELDS.screens` carries `kind`, so a hand-edited bundle could
630
+ * declare `kind: 'error'` on all 200 of its screens and /api/hosts/import
631
+ * excluded every one of them from `screensPerHost` — never passing the bound,
632
+ * never binding a slot. N unbilled screens, one file.
633
+ *
634
+ * That is the arc's fifth repetition of one sentence (AGL-1173, AGL-1383,
635
+ * AGL-1387, AGL-1390, AGL-1400): *an exclusion enforced at a write path is
636
+ * enforced only at the write paths somebody remembered.* So the bound moves
637
+ * into the rule the enforcement points SHARE. However a screen came to say
638
+ * `kind: 'error'` — assign, import, or the next writer — a host gets four
639
+ * unbilled ones and the rest spend the plan's allowance exactly as pages do.
640
+ *
641
+ * ## Which four
642
+ *
643
+ * The lowest ids, sorted. The choice is arbitrary and the DETERMINISM is not:
644
+ * every enforcement point models a post-state by re-running this over a
645
+ * different row set, and a rule that picked "the first four encountered" would
646
+ * hand two callers different answers for the same host. The SIZE of the exempt
647
+ * set never depends on the order — it is `min(live errors, 4)` — so only which
648
+ * ids a refusal message names can move, never whether one is refused.
649
+ *
650
+ * Tombstones are excluded for `nonPageScreenIds`' reason: a cap counting
651
+ * soft-deleted rows is AGL-1173's bug one cap over, where deleting an error
652
+ * screen never frees its slot.
653
+ *
654
+ * The stamp-time bound in /api/hosts/screens is deliberately KEPT. It is the
655
+ * better refusal — it names the four slots and arrives before the write — and
656
+ * this is the backstop under it, so no writer can mint a fifth unbilled error
657
+ * screen even by a path that never consults it.
658
+ */ export function exemptErrorScreenIds(screens) {
659
+ const live = [];
660
+ for (const screen of screens){
661
+ if (screen.kind !== SCREEN_KIND_ERROR) continue;
662
+ if (screen.deletedAt != null) continue;
663
+ live.push(screen.id);
664
+ }
665
+ if (live.length <= ERROR_SCREEN_MAX_PER_HOST) return new Set(live);
666
+ return new Set(live.sort().slice(0, ERROR_SCREEN_MAX_PER_HOST));
667
+ }
668
+ /**
669
+ * The screens the flat platform cap bounds (AGL-1399, AGL-1439): LIVE documents
670
+ * that are not billable pages — the exact complement of {@link billableScreenIds}.
671
+ *
672
+ * ## Why the complement, and not `kind === 'email' || kind === 'template'`
673
+ *
674
+ * Both issues are one sentence — *a `kind` value that excludes a document from
675
+ * billing, declarable by the metered party* — and a cap that enumerated the two
676
+ * values would be correct until the third arrived, which is how this arc has
677
+ * already gone four times (AGL-1173, AGL-1383, AGL-1387, AGL-1390). Written as
678
+ * the complement, a new non-page `kind` is bounded by the act of adding it to
679
+ * `screenClaimsToBeAPage`: there is no second list to remember.
680
+ *
681
+ * Two properties fall out of taking the complement rather than negating the
682
+ * predicate directly:
683
+ *
684
+ * - **A soft-deleted screen is in NEITHER set.** Delete stamps `deletedAt`
685
+ * rather than removing the doc, and a cap that counted tombstones would be
686
+ * the AGL-1173 bug one cap over — deleting an email document would never free
687
+ * a slot, and a host at the cap could never author another.
688
+ * - **A ROUTED email document counts once, against the plan.** The routing map
689
+ * outranks the document (AGL-1383), so such a screen is a page somebody is
690
+ * already paying for; charging it to the infrastructure cap as well would be
691
+ * counting one document twice. The two sets partition the live screens.
692
+ *
693
+ * Taking the complement is also what makes AGL-2093's bound arrive here for
694
+ * free: an error screen past `ERROR_SCREEN_MAX_PER_HOST` becomes billable
695
+ * above, so it leaves this set in the same act. The partition holds — every
696
+ * live screen is in exactly one of the two — and the fifth error screen is
697
+ * bounded by the PLAN rather than by the flat 5,000, which is the stronger of
698
+ * the two numbers on every finite tier.
699
+ */ export function nonPageScreenIds(screens, routingMap) {
700
+ const billable = billableScreenIds(screens, routingMap);
701
+ const nonPage = new Set();
702
+ for (const screen of screens){
703
+ if (screen.deletedAt != null) continue;
704
+ if (!billable.has(screen.id)) nonPage.add(screen.id);
705
+ }
706
+ return nonPage;
707
+ }
708
+ /**
709
+ * How many LIVE screen documents a host may hold that are NOT billable pages —
710
+ * email documents, entry templates, and whatever non-page `kind` comes next
711
+ * (AGL-1399, AGL-1439).
712
+ *
713
+ * ## Why a flat number and not a plan dimension
714
+ *
715
+ * Every exclusion `screenClaimsToBeAPage` names is declared by the party being
716
+ * metered: `kind: 'email'` is on the create allow-list because the email
717
+ * composer must send it, and AGL-1400 gave `kind: 'template'` the same
718
+ * billing-excluding meaning. So `POST /api/hosts/resources` with
719
+ * `kind: 'email'` created a document that no cap counted, without limit, on a
720
+ * free plan — unbounded Firestore documents rather than a bypass of anything we
721
+ * sell. AGL-1439 is the same sentence one value over, and a cap enumerating the
722
+ * two values would leave the hole open for the third.
723
+ *
724
+ * The shape is `WEBHOOK_MAX_PER_HOST`'s (AGL-1360): no `OrgEntitlements` key, no
725
+ * variation by plan, counted from a server read at the create path. An
726
+ * `emailDocumentsPerHost` would have been a **pricing** decision — a number the
727
+ * price list has to explain and support has to defend — for a limit whose only
728
+ * job is to bound infrastructure. This is not the charge AGL-1173 removed and it
729
+ * does not reinstate it: nothing here is billable, and `screensPerHost` counts
730
+ * exactly what it counted yesterday.
731
+ *
732
+ * ## Why 5,000
733
+ *
734
+ * Sized to the heaviest library anybody could plausibly author, not to what
735
+ * exists: production's busiest host holds FOUR non-page screens (one email,
736
+ * three entry templates) across five hosts, so any bar sized to today's data
737
+ * would be meaningless. The real quantity is campaigns, which accumulate and are
738
+ * never deleted — a DAILY newsletter reaches 5,000 after thirteen years, and a
739
+ * thrice-weekly one after thirty-two. Entry templates contribute one per
740
+ * collection, so tens at the outside. Nothing a real customer does approaches
741
+ * this, which is the property that matters: the failure mode of a too-low flat
742
+ * cap is blocking legitimate work with an error the price list cannot explain.
743
+ *
744
+ * A cheaper bound is not worth much either. What the number defends against is a
745
+ * script in a loop, and a loop stopped at 5,000 documents is stopped. It also
746
+ * bounds the cost of the count itself — `countBillableScreens` scans the screens
747
+ * collection on every create at one billed read per document (AGL-1440), and
748
+ * before this cap that scan had no ceiling at all.
749
+ */ export const NON_PAGE_SCREEN_MAX_PER_HOST = 5000;
750
+
751
+ //# sourceMappingURL=screen-route.js.map