@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,385 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ /**
17
+ * A published page as Markdown — the representation an agent gets when it
18
+ * sends `Accept: text/markdown` (acceptmarkdown.com).
19
+ *
20
+ * ## Why serialize the NODE TREE and not the rendered HTML
21
+ *
22
+ * The obvious implementation is to render the page and run an HTML-to-Markdown
23
+ * converter over it. Every site on this platform is a node document, and the
24
+ * tree carries what the HTML has already thrown away: which text is a heading
25
+ * because the author said so rather than because it is large, which container
26
+ * is the page's content region, and which subtree is navigation. Converting
27
+ * the HTML back would be reconstructing, by heuristic, information we are
28
+ * holding.
29
+ *
30
+ * It is also cheaper by a wide margin — no React render, no plugin registry,
31
+ * no MUI — which is what makes this affordable to serve from a cached route on
32
+ * every site rather than only where somebody enabled it.
33
+ *
34
+ * ## The content region, not the document
35
+ *
36
+ * Serialization starts at the document's `main` landmark, which
37
+ * `stampDocumentLandmark` has already placed on the layout slot (the page
38
+ * content between the chrome) or on the screen root. That is what makes the
39
+ * output nav-free and footer-free without this module knowing anything about
40
+ * how a particular site builds its header — the same property that makes a
41
+ * Markdown variant worth serving at all.
42
+ *
43
+ * A page with no landmark falls back to the whole tree. Some content is always
44
+ * better than an empty document, and a page that shipped no landmark
45
+ * deliberately (see `document-landmark.ts`) has no content region to prefer.
46
+ *
47
+ * ## Chrome that lives INSIDE the content region
48
+ *
49
+ * A handful of components are navigation wherever they sit — an app bar, a nav
50
+ * menu, a language switcher, a pagination strip. They are skipped by id, and
51
+ * the list is deliberately short: everything not named recurses, so a plugin
52
+ * block nobody here has heard of still contributes its text instead of
53
+ * vanishing. Silence is the one failure mode that would be invisible to the
54
+ * author.
55
+ */ import { NODE_ROOT_ID } from "../canvas-manager/canvas-manager.js";
56
+ import { authorHtmlToMarkdown, inlineAuthorHtmlToMarkdown } from "./author-html-markdown.js";
57
+ import { resolveMarkdownSourceLinks } from "./markdown-lite.js";
58
+ import { absoluteMediaSrc } from "./media-ref.js";
59
+ import { SAFE_HREF_PATTERN, resolveScreenHref, splitLinkValue } from "./screen-link-value.js";
60
+ /** The element name a node was told to render as (`props.component`). */ const elementOf = (node)=>{
61
+ var _ref;
62
+ var _node_props;
63
+ return String((_ref = node == null ? void 0 : (_node_props = node.props) == null ? void 0 : _node_props['component']) != null ? _ref : '').toLowerCase();
64
+ };
65
+ /** Components that are navigation wherever they appear. See the module note. */ const CHROME_COMPONENTS = new Set([
66
+ 'muiAppBar',
67
+ 'muiToolbar',
68
+ 'muiDrawer',
69
+ 'muiBreadcrumbs',
70
+ 'navMenu',
71
+ 'searchBox',
72
+ 'languageSwitcher',
73
+ 'themeModeSwitcher',
74
+ 'muiPagination',
75
+ // An icon is decoration with no accessible text of its own. Its LABEL, where
76
+ // one exists, belongs to the control around it and is emitted there.
77
+ 'icon'
78
+ ]);
79
+ /**
80
+ * Whether a node is navigation rather than content: a chrome component, or
81
+ * an element its author declared `nav`, `header` or `footer`. Exported so a
82
+ * reader of a page's CONTENT — the SEO audit's heading and image scan
83
+ * (AGL-2910) — skips exactly what this serializer skips.
84
+ */ export function isPageChromeNode(node) {
85
+ var _node_componentId;
86
+ if (!node) return false;
87
+ if (CHROME_COMPONENTS.has(String((_node_componentId = node.componentId) != null ? _node_componentId : ''))) return true;
88
+ const element = elementOf(node);
89
+ return element === 'nav' || element === 'header' || element === 'footer';
90
+ }
91
+ /** Heading levels, as either `props.component` or `props.variant` spells them. */ const HEADING = /^h([1-6])$/;
92
+ /**
93
+ * The heading level a text node publishes, or 0 for body copy.
94
+ *
95
+ * `component` wins over `variant` because they answer different questions and
96
+ * the platform lets them disagree: `variant` is the type STYLE (what size it is
97
+ * drawn at) and `component` is the ELEMENT (what it means). An author who set a
98
+ * hero line to look like an h1 but render as a `p` said it is not a heading,
99
+ * and the Markdown has to agree with the HTML or the two documents describe
100
+ * different pages.
101
+ */ export function headingLevelOf(props) {
102
+ var _ref, _ref1;
103
+ const element = String((_ref = props == null ? void 0 : props['component']) != null ? _ref : '').toLowerCase();
104
+ if (element) {
105
+ const asElement = HEADING.exec(element);
106
+ return asElement ? Number(asElement[1]) : 0;
107
+ }
108
+ const variant = String((_ref1 = props == null ? void 0 : props['variant']) != null ? _ref1 : '').toLowerCase();
109
+ const asVariant = HEADING.exec(variant);
110
+ return asVariant ? Number(asVariant[1]) : 0;
111
+ }
112
+ /**
113
+ * Escape the Markdown control characters that would otherwise re-parse.
114
+ *
115
+ * Only the characters that START a construct at the position they can occur in:
116
+ * a leading `#`, `>`, `-`, `+` or `1.` on its own line, and the emphasis,
117
+ * backtick and bracket characters anywhere. Escaping more than that produces
118
+ * output littered with backslashes, which is worse to read and worse to embed
119
+ * than the rare false heading it prevents.
120
+ */ export function escapeMarkdownText(value) {
121
+ return value.replace(/([\\`*_[\]<>])/g, '\\$1').replace(/^(\s*)([#>])/gm, '$1\\$2').replace(/^(\s*)([-+])(\s)/gm, '$1\\$2$3').replace(/^(\s*)(\d+)\.(\s)/gm, '$1$2\\.$3');
122
+ }
123
+ /** Collapse runs of whitespace to single spaces, as inline text renders. */ const collapse = (value)=>value.replace(/\s+/g, ' ').trim();
124
+ /**
125
+ * A link target as Markdown should carry it: absolute where we can make it so.
126
+ *
127
+ * Site-relative is fine in a page — the browser has a document to resolve
128
+ * against. A Markdown body has no such context by the time an agent has copied
129
+ * it into a prompt, so a relative href there is a link to nowhere.
130
+ */ function absoluteHref(href, context) {
131
+ var _ref;
132
+ var _context_origin;
133
+ const value = href.trim();
134
+ if (!value) return '';
135
+ if (/^[a-z][a-z0-9+.-]*:/i.test(value) || value.startsWith('//')) return value;
136
+ const origin = (_ref = context == null ? void 0 : (_context_origin = context.origin) == null ? void 0 : _context_origin.replace(/\/+$/, '')) != null ? _ref : '';
137
+ if (!origin) return value;
138
+ return value.startsWith('/') ? `${origin}${value}` : `${origin}/${value}`;
139
+ }
140
+ /** The text a control shows, preferring its rich label over the plain one. */ function labelOf(props, context) {
141
+ const html = props == null ? void 0 : props['html'];
142
+ if (typeof html === 'string' && html.trim()) {
143
+ const rich = inlineAuthorHtmlToMarkdown(html, context);
144
+ if (rich.trim()) return collapse(rich);
145
+ }
146
+ const children = props == null ? void 0 : props['children'];
147
+ return typeof children === 'string' ? collapse(escapeMarkdownText(children)) : '';
148
+ }
149
+ /**
150
+ * Serialize the subtree at `rootId` into Markdown blocks.
151
+ *
152
+ * A depth budget and a visited set, because a node map is data: a document
153
+ * restored from a backup, or written through the REST API, can name a child
154
+ * that names it back. Recursing that tree is a stack overflow inside a request
155
+ * handler, i.e. a 500 on a page that renders fine — the renderer tolerates it
156
+ * because React unmounts a cycle, and this has nothing to stop it but itself.
157
+ */ function walk(nodes, rootId, context, blocks, seen, depth) {
158
+ var _node_componentId, _node_props;
159
+ if (depth > 64 || seen.has(rootId)) return;
160
+ const node = nodes[rootId];
161
+ if (!node) return;
162
+ seen.add(rootId);
163
+ const componentId = String((_node_componentId = node.componentId) != null ? _node_componentId : '');
164
+ // Chrome components, and `nav`, `header` and `footer` by their OWN
165
+ // declaration — an author who set the element picker to one of them named
166
+ // it navigation, and that is a stronger signal than any component-id list
167
+ // can be.
168
+ if (isPageChromeNode(node)) return;
169
+ const props = (_node_props = node.props) != null ? _node_props : {};
170
+ const childIds = Array.isArray(node.nodes) ? node.nodes.filter((id)=>typeof id === 'string') : [];
171
+ const recurse = ()=>{
172
+ for (const childId of childIds){
173
+ walk(nodes, childId, context, blocks, seen, depth + 1);
174
+ }
175
+ };
176
+ const push = (text)=>{
177
+ if (text.trim()) blocks.push({
178
+ text: text.trim()
179
+ });
180
+ };
181
+ switch(componentId){
182
+ case 'muiTypography':
183
+ case 'muiInlineText':
184
+ case 'muiListItemText':
185
+ {
186
+ const level = headingLevelOf(props);
187
+ const text = labelOf(props, context);
188
+ if (!text) {
189
+ // A Typography with no text of its own but children beneath it is a
190
+ // wrapper, which is how rich composites are built. Recurse rather than
191
+ // dropping the subtree.
192
+ recurse();
193
+ return;
194
+ }
195
+ push(level > 0 ? `${'#'.repeat(level)} ${text}` : text);
196
+ return;
197
+ }
198
+ case 'markdown':
199
+ {
200
+ /*
201
+ Already Markdown. Emitted VERBATIM and never re-escaped: `content` is
202
+ the markdown-lite source an author typed, so escaping it would turn
203
+ their headings into literal `#` characters — the one transformation
204
+ that can only make this output worse. Its link REFERENCES are the one
205
+ exception (AGL-3118), resolved as the page resolves them.
206
+ */ const content = props['content'];
207
+ if (typeof content === 'string') push(authoredMarkdown(content, context));
208
+ return;
209
+ }
210
+ case 'custom-html':
211
+ {
212
+ var _props_html;
213
+ const html = (_props_html = props['html']) != null ? _props_html : props['children'];
214
+ if (typeof html === 'string') push(authorHtmlToMarkdown(html, context));
215
+ return;
216
+ }
217
+ case 'image':
218
+ {
219
+ var _props_src, _props_alt;
220
+ const src = absoluteMediaSrc(String((_props_src = props['src']) != null ? _props_src : '').trim(), {
221
+ hostId: context == null ? void 0 : context.hostId,
222
+ origin: context == null ? void 0 : context.origin
223
+ });
224
+ if (!src) return;
225
+ const alt = collapse(String((_props_alt = props['alt']) != null ? _props_alt : ''));
226
+ push(`![${escapeMarkdownText(alt)}](${src})`);
227
+ return;
228
+ }
229
+ case 'video':
230
+ case 'videoEmbed':
231
+ {
232
+ var _ref, _props_src1;
233
+ const src = String((_ref = (_props_src1 = props['src']) != null ? _props_src1 : props['url']) != null ? _ref : '').trim();
234
+ if (!src) return;
235
+ push(`[Video](${absoluteHref(src, context)})`);
236
+ return;
237
+ }
238
+ case 'muiButton':
239
+ case 'muiScreenLink':
240
+ {
241
+ const label = labelOf(props, context) || 'Link';
242
+ const href = screenLinkHref(props, context);
243
+ push(href ? `[${label}](${href})` : label);
244
+ return;
245
+ }
246
+ case 'muiList':
247
+ {
248
+ /*
249
+ The items are gathered into ONE block so they join as a list. Walking
250
+ them as siblings would put a blank line between every bullet, which is
251
+ a sequence of paragraphs beginning with a dash rather than a list.
252
+ */ const items = [];
253
+ for (const childId of childIds){
254
+ walk(nodes, childId, context, items, seen, depth + 1);
255
+ }
256
+ const lines = items.map((item)=>item.text.replace(/\n/g, '\n ')).filter(Boolean).map((text)=>`- ${text}`);
257
+ push(lines.join('\n'));
258
+ return;
259
+ }
260
+ default:
261
+ recurse();
262
+ }
263
+ }
264
+ /**
265
+ * Where a Button or Screen Link points.
266
+ *
267
+ * A screen link stores a SCREEN ID, not a path, and the path it resolves to is
268
+ * a per-request question — `screenRoutes` is the routing map the router
269
+ * actually honors, which is not the map publishing wrote (a collection's list
270
+ * template answers at the collection's slug, template screens answer nowhere).
271
+ * Emitting `href` alone would publish, in Markdown, the dead links AGL-1998
272
+ * removed from the HTML.
273
+ *
274
+ * `splitLinkValue` + `resolveScreenHref` rather than a local reading of the
275
+ * two props, because WHICH SLOT a screen reference arrives in is not fixed
276
+ * (AGL-1335): a `Link`-typed component prop is bound to whichever of
277
+ * `screenId`/`href` the author reached for, and a value in the `href` slot
278
+ * carries the stored `screen:<id>` spelling. Reading `screenId` alone published
279
+ * that token verbatim as a link target on every page built from a prop-fed
280
+ * CTA — ten of them on aglyn.com, unfollowable by the agents `/llms.txt` sends
281
+ * here (AGL-2740). These are the same two functions `useLinkTarget` resolves
282
+ * the HTML with, so the two representations of a page cannot drift again.
283
+ *
284
+ * An authored screen id that the map has lost resolves to NO link, exactly as
285
+ * the HTML renders it: falling back to the stored `href` there would re-publish
286
+ * the dead path AGL-1998 removed, which is the failure this function's own
287
+ * contract exists to prevent.
288
+ */ function screenLinkHref(props, context) {
289
+ const target = splitLinkValue(typeof props['screenId'] === 'string' ? props['screenId'] : undefined, typeof props['href'] === 'string' ? props['href'] : undefined);
290
+ if (target.screenId) {
291
+ var _ref;
292
+ const path = resolveScreenHref((_ref = context == null ? void 0 : context.screenRoutes) != null ? _ref : undefined, target.screenId);
293
+ return path ? absoluteHref(path, context) : '';
294
+ }
295
+ // The same protocol guard the linking elements apply. A `javascript:` href
296
+ // is inert in a Markdown body, but it is still a target an agent may be
297
+ // asked to follow, and a representation that offers one the page refuses to
298
+ // render is describing a different document.
299
+ return target.href && SAFE_HREF_PATTERN.test(target.href) ? absoluteHref(target.href, context) : '';
300
+ }
301
+ /**
302
+ * Authored markdown-lite — a Markdown element's content, an entry's body —
303
+ * as this document carries it: verbatim, except that each link REFERENCE
304
+ * (AGL-3118) points where the page's own link does, through the same routing
305
+ * map and the same `resolveScreenHref` as {@link screenLinkHref}, made
306
+ * absolute for the reason {@link absoluteHref} gives. A reference the map
307
+ * does not have becomes the link's text, as the page renders it: the stored
308
+ * `entry:…` is not a URL any reader can follow.
309
+ */ function authoredMarkdown(source, context) {
310
+ return resolveMarkdownSourceLinks(source, (reference)=>{
311
+ var _ref;
312
+ const path = resolveScreenHref((_ref = context == null ? void 0 : context.screenRoutes) != null ? _ref : undefined, reference);
313
+ return path ? absoluteHref(path, context) : undefined;
314
+ });
315
+ }
316
+ /**
317
+ * The node the document's content begins at.
318
+ *
319
+ * The `main` landmark first — `stampDocumentLandmark` puts it on the layout
320
+ * slot or the screen root — then the layout slot by component id, then the
321
+ * document root. Each fallback is wider than the last, so a tree that is
322
+ * missing the marker still serializes rather than returning nothing.
323
+ */ export function pageContentRootId(nodes, rootId = NODE_ROOT_ID) {
324
+ if (!nodes) return null;
325
+ for(const id in nodes){
326
+ if (elementOf(nodes[id]) === 'main') return id;
327
+ }
328
+ for(const id in nodes){
329
+ var _nodes_id;
330
+ if (((_nodes_id = nodes[id]) == null ? void 0 : _nodes_id.componentId) === 'layoutSlot') return id;
331
+ }
332
+ return nodes[rootId] ? rootId : null;
333
+ }
334
+ /**
335
+ * The whole Markdown representation of a page.
336
+ *
337
+ * @param body - already-Markdown body to use INSTEAD of walking nodes; the
338
+ * content-entry case, where the stored body is markdown-lite source and
339
+ * round-tripping it through the node tree could only lose fidelity.
340
+ */ export function buildPageMarkdown(options) {
341
+ var _options_front, _front_title, _front_description;
342
+ const front = (_options_front = options.front) != null ? _options_front : {};
343
+ const parts = [];
344
+ const title = collapse(String((_front_title = front.title) != null ? _front_title : ''));
345
+ if (title) parts.push(`# ${escapeMarkdownText(title)}`);
346
+ const description = collapse(String((_front_description = front.description) != null ? _front_description : ''));
347
+ if (description) parts.push(`> ${escapeMarkdownText(description)}`);
348
+ /*
349
+ The dateline is one line rather than YAML front matter. Front matter is
350
+ unparsed text to every Markdown reader that has not opted into it, so it
351
+ arrives in an agent's context as a block of `key: value` noise above the
352
+ content; a sentence is read correctly by all of them.
353
+ */ const meta = [];
354
+ if (front.author) meta.push(`By ${collapse(front.author)}`);
355
+ if (front.publishedAt) meta.push(`Published ${front.publishedAt}`);
356
+ if (front.updatedAt && front.updatedAt !== front.publishedAt) {
357
+ meta.push(`Updated ${front.updatedAt}`);
358
+ }
359
+ if (meta.length) parts.push(`_${meta.join(' · ')}_`);
360
+ if (typeof options.body === 'string' && options.body.trim()) {
361
+ parts.push(authoredMarkdown(options.body.trim(), options.context));
362
+ } else if (options.nodes) {
363
+ const contentRoot = pageContentRootId(options.nodes, options.rootId);
364
+ if (contentRoot) {
365
+ const blocks = [];
366
+ walk(options.nodes, contentRoot, options.context, blocks, new Set(), 0);
367
+ for (const block of blocks)parts.push(block.text);
368
+ }
369
+ }
370
+ if (front.canonicalUrl) {
371
+ // A source line, and the reason it is worth the two lines it costs: an
372
+ // agent that has copied this body into a prompt has no URL bar, so without
373
+ // it the document cannot be cited, re-fetched, or linked to by whatever
374
+ // reads it next.
375
+ parts.push('---', `Source: ${front.canonicalUrl}`);
376
+ }
377
+ /*
378
+ Collapse the runs of blank lines a nested walk leaves behind, and end with
379
+ exactly one newline. A Markdown body is compared byte-for-byte by caches
380
+ and by the conformance checkers agents run, so "tidy" here is a contract
381
+ rather than an aesthetic.
382
+ */ return `${parts.join('\n\n').replace(/\n{3,}/g, '\n\n').trim()}\n`;
383
+ }
384
+
385
+ //# sourceMappingURL=page-markdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/page-markdown.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * A published page as Markdown — the representation an agent gets when it\n * sends `Accept: text/markdown` (acceptmarkdown.com).\n *\n * ## Why serialize the NODE TREE and not the rendered HTML\n *\n * The obvious implementation is to render the page and run an HTML-to-Markdown\n * converter over it. Every site on this platform is a node document, and the\n * tree carries what the HTML has already thrown away: which text is a heading\n * because the author said so rather than because it is large, which container\n * is the page's content region, and which subtree is navigation. Converting\n * the HTML back would be reconstructing, by heuristic, information we are\n * holding.\n *\n * It is also cheaper by a wide margin — no React render, no plugin registry,\n * no MUI — which is what makes this affordable to serve from a cached route on\n * every site rather than only where somebody enabled it.\n *\n * ## The content region, not the document\n *\n * Serialization starts at the document's `main` landmark, which\n * `stampDocumentLandmark` has already placed on the layout slot (the page\n * content between the chrome) or on the screen root. That is what makes the\n * output nav-free and footer-free without this module knowing anything about\n * how a particular site builds its header — the same property that makes a\n * Markdown variant worth serving at all.\n *\n * A page with no landmark falls back to the whole tree. Some content is always\n * better than an empty document, and a page that shipped no landmark\n * deliberately (see `document-landmark.ts`) has no content region to prefer.\n *\n * ## Chrome that lives INSIDE the content region\n *\n * A handful of components are navigation wherever they sit — an app bar, a nav\n * menu, a language switcher, a pagination strip. They are skipped by id, and\n * the list is deliberately short: everything not named recurses, so a plugin\n * block nobody here has heard of still contributes its text instead of\n * vanishing. Silence is the one failure mode that would be invisible to the\n * author.\n */\n\nimport { NODE_ROOT_ID } from '../canvas-manager/canvas-manager'\nimport { authorHtmlToMarkdown, inlineAuthorHtmlToMarkdown } from './author-html-markdown'\nimport { resolveMarkdownSourceLinks } from './markdown-lite'\nimport { absoluteMediaSrc } from './media-ref'\nimport {\n SAFE_HREF_PATTERN,\n resolveScreenHref,\n splitLinkValue,\n} from './screen-link-value'\n\n/** The node shape this serializer reads; keeps callers free of the full type. */\nexport interface PageMarkdownNode {\n componentId?: string\n props?: Record<string, unknown> | null\n /** Normalized documents carry child IDS; this never reads a denormalized tree. */\n nodes?: unknown\n}\n\n/** A flat node map keyed by node id — exactly what the page route already holds. */\nexport type PageMarkdownNodes = Record<string, PageMarkdownNode>\n\n/** The element name a node was told to render as (`props.component`). */\nconst elementOf = (node: PageMarkdownNode | undefined): string =>\n String(node?.props?.['component'] ?? '').toLowerCase()\n\n/** Components that are navigation wherever they appear. See the module note. */\nconst CHROME_COMPONENTS: ReadonlySet<string> = new Set([\n 'muiAppBar',\n 'muiToolbar',\n 'muiDrawer',\n 'muiBreadcrumbs',\n 'navMenu',\n 'searchBox',\n 'languageSwitcher',\n 'themeModeSwitcher',\n 'muiPagination',\n // An icon is decoration with no accessible text of its own. Its LABEL, where\n // one exists, belongs to the control around it and is emitted there.\n 'icon',\n])\n\n/**\n * Whether a node is navigation rather than content: a chrome component, or\n * an element its author declared `nav`, `header` or `footer`. Exported so a\n * reader of a page's CONTENT — the SEO audit's heading and image scan\n * (AGL-2910) — skips exactly what this serializer skips.\n */\nexport function isPageChromeNode(node: PageMarkdownNode | undefined): boolean {\n if (!node) return false\n if (CHROME_COMPONENTS.has(String(node.componentId ?? ''))) return true\n const element = elementOf(node)\n return element === 'nav' || element === 'header' || element === 'footer'\n}\n\n/** Heading levels, as either `props.component` or `props.variant` spells them. */\nconst HEADING = /^h([1-6])$/\n\n/**\n * The heading level a text node publishes, or 0 for body copy.\n *\n * `component` wins over `variant` because they answer different questions and\n * the platform lets them disagree: `variant` is the type STYLE (what size it is\n * drawn at) and `component` is the ELEMENT (what it means). An author who set a\n * hero line to look like an h1 but render as a `p` said it is not a heading,\n * and the Markdown has to agree with the HTML or the two documents describe\n * different pages.\n */\nexport function headingLevelOf(props: Record<string, unknown> | null | undefined): number {\n const element = String(props?.['component'] ?? '').toLowerCase()\n if (element) {\n const asElement = HEADING.exec(element)\n return asElement ? Number(asElement[1]) : 0\n }\n const variant = String(props?.['variant'] ?? '').toLowerCase()\n const asVariant = HEADING.exec(variant)\n return asVariant ? Number(asVariant[1]) : 0\n}\n\n/**\n * Escape the Markdown control characters that would otherwise re-parse.\n *\n * Only the characters that START a construct at the position they can occur in:\n * a leading `#`, `>`, `-`, `+` or `1.` on its own line, and the emphasis,\n * backtick and bracket characters anywhere. Escaping more than that produces\n * output littered with backslashes, which is worse to read and worse to embed\n * than the rare false heading it prevents.\n */\nexport function escapeMarkdownText(value: string): string {\n return value\n .replace(/([\\\\`*_[\\]<>])/g, '\\\\$1')\n .replace(/^(\\s*)([#>])/gm, '$1\\\\$2')\n .replace(/^(\\s*)([-+])(\\s)/gm, '$1\\\\$2$3')\n .replace(/^(\\s*)(\\d+)\\.(\\s)/gm, '$1$2\\\\.$3')\n}\n\n/** Collapse runs of whitespace to single spaces, as inline text renders. */\nconst collapse = (value: string): string => value.replace(/\\s+/g, ' ').trim()\n\n/** Resolution context for values that are stored as references, not URLs. */\nexport interface PageMarkdownContext {\n /** Site origin, for absolutizing media and site-relative links. */\n origin?: string | null\n /** Host id, so a restricted org asset resolves for the site rendering it. */\n hostId?: string\n /**\n * The routing map screen links resolve against (`screenRoutes`), and the\n * link references in authored markdown with them (AGL-3118).\n */\n screenRoutes?: Record<string, string> | null\n}\n\n/**\n * A link target as Markdown should carry it: absolute where we can make it so.\n *\n * Site-relative is fine in a page — the browser has a document to resolve\n * against. A Markdown body has no such context by the time an agent has copied\n * it into a prompt, so a relative href there is a link to nowhere.\n */\nfunction absoluteHref(href: string, context?: PageMarkdownContext): string {\n const value = href.trim()\n if (!value) return ''\n if (/^[a-z][a-z0-9+.-]*:/i.test(value) || value.startsWith('//')) return value\n const origin = context?.origin?.replace(/\\/+$/, '') ?? ''\n if (!origin) return value\n return value.startsWith('/') ? `${origin}${value}` : `${origin}/${value}`\n}\n\n/** The text a control shows, preferring its rich label over the plain one. */\nfunction labelOf(\n props: Record<string, unknown> | null | undefined,\n context?: PageMarkdownContext,\n): string {\n const html = props?.['html']\n if (typeof html === 'string' && html.trim()) {\n const rich = inlineAuthorHtmlToMarkdown(html, context)\n if (rich.trim()) return collapse(rich)\n }\n const children = props?.['children']\n return typeof children === 'string' ? collapse(escapeMarkdownText(children)) : ''\n}\n\n/** A block emitted by the walk, before the blocks are joined. */\ninterface Block {\n /** Markdown text of the block, already escaped. */\n text: string\n}\n\n/**\n * Serialize the subtree at `rootId` into Markdown blocks.\n *\n * A depth budget and a visited set, because a node map is data: a document\n * restored from a backup, or written through the REST API, can name a child\n * that names it back. Recursing that tree is a stack overflow inside a request\n * handler, i.e. a 500 on a page that renders fine — the renderer tolerates it\n * because React unmounts a cycle, and this has nothing to stop it but itself.\n */\nfunction walk(\n nodes: PageMarkdownNodes,\n rootId: string,\n context: PageMarkdownContext | undefined,\n blocks: Block[],\n seen: Set<string>,\n depth: number,\n): void {\n if (depth > 64 || seen.has(rootId)) return\n const node = nodes[rootId]\n if (!node) return\n seen.add(rootId)\n\n const componentId = String(node.componentId ?? '')\n // Chrome components, and `nav`, `header` and `footer` by their OWN\n // declaration — an author who set the element picker to one of them named\n // it navigation, and that is a stronger signal than any component-id list\n // can be.\n if (isPageChromeNode(node)) return\n\n const props = node.props ?? {}\n const childIds = Array.isArray(node.nodes)\n ? node.nodes.filter((id): id is string => typeof id === 'string')\n : []\n const recurse = (): void => {\n for (const childId of childIds) {\n walk(nodes, childId, context, blocks, seen, depth + 1)\n }\n }\n const push = (text: string): void => {\n if (text.trim()) blocks.push({ text: text.trim() })\n }\n\n switch (componentId) {\n case 'muiTypography':\n case 'muiInlineText':\n case 'muiListItemText': {\n const level = headingLevelOf(props)\n const text = labelOf(props, context)\n if (!text) {\n // A Typography with no text of its own but children beneath it is a\n // wrapper, which is how rich composites are built. Recurse rather than\n // dropping the subtree.\n recurse()\n return\n }\n push(level > 0 ? `${'#'.repeat(level)} ${text}` : text)\n return\n }\n case 'markdown': {\n /*\n Already Markdown. Emitted VERBATIM and never re-escaped: `content` is\n the markdown-lite source an author typed, so escaping it would turn\n their headings into literal `#` characters — the one transformation\n that can only make this output worse. Its link REFERENCES are the one\n exception (AGL-3118), resolved as the page resolves them.\n */\n const content = props['content']\n if (typeof content === 'string') push(authoredMarkdown(content, context))\n return\n }\n case 'custom-html': {\n const html = props['html'] ?? props['children']\n if (typeof html === 'string') push(authorHtmlToMarkdown(html, context))\n return\n }\n case 'image': {\n const src = absoluteMediaSrc(String(props['src'] ?? '').trim(), {\n hostId: context?.hostId,\n origin: context?.origin,\n })\n if (!src) return\n const alt = collapse(String(props['alt'] ?? ''))\n push(`![${escapeMarkdownText(alt)}](${src})`)\n return\n }\n case 'video':\n case 'videoEmbed': {\n const src = String(props['src'] ?? props['url'] ?? '').trim()\n if (!src) return\n push(`[Video](${absoluteHref(src, context)})`)\n return\n }\n case 'muiButton':\n case 'muiScreenLink': {\n const label = labelOf(props, context) || 'Link'\n const href = screenLinkHref(props, context)\n push(href ? `[${label}](${href})` : label)\n return\n }\n case 'muiList': {\n /*\n The items are gathered into ONE block so they join as a list. Walking\n them as siblings would put a blank line between every bullet, which is\n a sequence of paragraphs beginning with a dash rather than a list.\n */\n const items: Block[] = []\n for (const childId of childIds) {\n walk(nodes, childId, context, items, seen, depth + 1)\n }\n const lines = items\n .map((item) => item.text.replace(/\\n/g, '\\n '))\n .filter(Boolean)\n .map((text) => `- ${text}`)\n push(lines.join('\\n'))\n return\n }\n default:\n recurse()\n }\n}\n\n/**\n * Where a Button or Screen Link points.\n *\n * A screen link stores a SCREEN ID, not a path, and the path it resolves to is\n * a per-request question — `screenRoutes` is the routing map the router\n * actually honors, which is not the map publishing wrote (a collection's list\n * template answers at the collection's slug, template screens answer nowhere).\n * Emitting `href` alone would publish, in Markdown, the dead links AGL-1998\n * removed from the HTML.\n *\n * `splitLinkValue` + `resolveScreenHref` rather than a local reading of the\n * two props, because WHICH SLOT a screen reference arrives in is not fixed\n * (AGL-1335): a `Link`-typed component prop is bound to whichever of\n * `screenId`/`href` the author reached for, and a value in the `href` slot\n * carries the stored `screen:<id>` spelling. Reading `screenId` alone published\n * that token verbatim as a link target on every page built from a prop-fed\n * CTA — ten of them on aglyn.com, unfollowable by the agents `/llms.txt` sends\n * here (AGL-2740). These are the same two functions `useLinkTarget` resolves\n * the HTML with, so the two representations of a page cannot drift again.\n *\n * An authored screen id that the map has lost resolves to NO link, exactly as\n * the HTML renders it: falling back to the stored `href` there would re-publish\n * the dead path AGL-1998 removed, which is the failure this function's own\n * contract exists to prevent.\n */\nfunction screenLinkHref(\n props: Record<string, unknown>,\n context?: PageMarkdownContext,\n): string {\n const target = splitLinkValue(\n typeof props['screenId'] === 'string' ? props['screenId'] : undefined,\n typeof props['href'] === 'string' ? props['href'] : undefined,\n )\n if (target.screenId) {\n const path = resolveScreenHref(context?.screenRoutes ?? undefined, target.screenId)\n return path ? absoluteHref(path, context) : ''\n }\n // The same protocol guard the linking elements apply. A `javascript:` href\n // is inert in a Markdown body, but it is still a target an agent may be\n // asked to follow, and a representation that offers one the page refuses to\n // render is describing a different document.\n return target.href && SAFE_HREF_PATTERN.test(target.href)\n ? absoluteHref(target.href, context)\n : ''\n}\n\n/**\n * Authored markdown-lite — a Markdown element's content, an entry's body —\n * as this document carries it: verbatim, except that each link REFERENCE\n * (AGL-3118) points where the page's own link does, through the same routing\n * map and the same `resolveScreenHref` as {@link screenLinkHref}, made\n * absolute for the reason {@link absoluteHref} gives. A reference the map\n * does not have becomes the link's text, as the page renders it: the stored\n * `entry:…` is not a URL any reader can follow.\n */\nfunction authoredMarkdown(\n source: string,\n context?: PageMarkdownContext,\n): string {\n return resolveMarkdownSourceLinks(source, (reference) => {\n const path = resolveScreenHref(context?.screenRoutes ?? undefined, reference)\n return path ? absoluteHref(path, context) : undefined\n })\n}\n\n/**\n * The node the document's content begins at.\n *\n * The `main` landmark first — `stampDocumentLandmark` puts it on the layout\n * slot or the screen root — then the layout slot by component id, then the\n * document root. Each fallback is wider than the last, so a tree that is\n * missing the marker still serializes rather than returning nothing.\n */\nexport function pageContentRootId(\n nodes: PageMarkdownNodes | null | undefined,\n rootId: string = NODE_ROOT_ID,\n): string | null {\n if (!nodes) return null\n for (const id in nodes) {\n if (elementOf(nodes[id]) === 'main') return id\n }\n for (const id in nodes) {\n if (nodes[id]?.componentId === 'layoutSlot') return id\n }\n return nodes[rootId] ? rootId : null\n}\n\n/** What a Markdown page carries above its body. */\nexport interface PageMarkdownFrontMatter {\n /** The `# ` heading. The page's own title, never the site's. */\n title?: string\n /** The meta description, emitted as the summary blockquote. */\n description?: string\n /** Canonical absolute URL, emitted as the source line. */\n canonicalUrl?: string\n /** ISO-8601 publication date, for a content entry. */\n publishedAt?: string\n /** ISO-8601 last-modified date, for a content entry. */\n updatedAt?: string\n /** Byline, for a content entry. */\n author?: string\n}\n\n/**\n * The whole Markdown representation of a page.\n *\n * @param body - already-Markdown body to use INSTEAD of walking nodes; the\n * content-entry case, where the stored body is markdown-lite source and\n * round-tripping it through the node tree could only lose fidelity.\n */\nexport function buildPageMarkdown(options: {\n nodes?: PageMarkdownNodes | null\n rootId?: string\n body?: string | null\n front?: PageMarkdownFrontMatter\n context?: PageMarkdownContext\n}): string {\n const front = options.front ?? {}\n const parts: string[] = []\n\n const title = collapse(String(front.title ?? ''))\n if (title) parts.push(`# ${escapeMarkdownText(title)}`)\n\n const description = collapse(String(front.description ?? ''))\n if (description) parts.push(`> ${escapeMarkdownText(description)}`)\n\n /*\n The dateline is one line rather than YAML front matter. Front matter is\n unparsed text to every Markdown reader that has not opted into it, so it\n arrives in an agent's context as a block of `key: value` noise above the\n content; a sentence is read correctly by all of them.\n */\n const meta: string[] = []\n if (front.author) meta.push(`By ${collapse(front.author)}`)\n if (front.publishedAt) meta.push(`Published ${front.publishedAt}`)\n if (front.updatedAt && front.updatedAt !== front.publishedAt) {\n meta.push(`Updated ${front.updatedAt}`)\n }\n if (meta.length) parts.push(`_${meta.join(' · ')}_`)\n\n if (typeof options.body === 'string' && options.body.trim()) {\n parts.push(authoredMarkdown(options.body.trim(), options.context))\n } else if (options.nodes) {\n const contentRoot = pageContentRootId(options.nodes, options.rootId)\n if (contentRoot) {\n const blocks: Block[] = []\n walk(options.nodes, contentRoot, options.context, blocks, new Set(), 0)\n for (const block of blocks) parts.push(block.text)\n }\n }\n\n if (front.canonicalUrl) {\n // A source line, and the reason it is worth the two lines it costs: an\n // agent that has copied this body into a prompt has no URL bar, so without\n // it the document cannot be cited, re-fetched, or linked to by whatever\n // reads it next.\n parts.push('---', `Source: ${front.canonicalUrl}`)\n }\n\n /*\n Collapse the runs of blank lines a nested walk leaves behind, and end with\n exactly one newline. A Markdown body is compared byte-for-byte by caches\n and by the conformance checkers agents run, so \"tidy\" here is a contract\n rather than an aesthetic.\n */\n return `${parts.join('\\n\\n').replace(/\\n{3,}/g, '\\n\\n').trim()}\\n`\n}\n"],"names":["NODE_ROOT_ID","authorHtmlToMarkdown","inlineAuthorHtmlToMarkdown","resolveMarkdownSourceLinks","absoluteMediaSrc","SAFE_HREF_PATTERN","resolveScreenHref","splitLinkValue","elementOf","node","String","props","toLowerCase","CHROME_COMPONENTS","Set","isPageChromeNode","has","componentId","element","HEADING","headingLevelOf","asElement","exec","Number","variant","asVariant","escapeMarkdownText","value","replace","collapse","trim","absoluteHref","href","context","test","startsWith","origin","labelOf","html","rich","children","walk","nodes","rootId","blocks","seen","depth","add","childIds","Array","isArray","filter","id","recurse","childId","push","text","level","repeat","content","authoredMarkdown","src","hostId","alt","label","screenLinkHref","items","lines","map","item","Boolean","join","target","undefined","screenId","path","screenRoutes","source","reference","pageContentRootId","buildPageMarkdown","options","front","parts","title","description","meta","author","publishedAt","updatedAt","length","body","contentRoot","block","canonicalUrl"],"mappings":"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"}
@@ -0,0 +1,90 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * What a URL stored on a product's paid media names (AGL-2814).
19
+ *
20
+ * A members video is stored as whatever wrote it: the paid-media picker's
21
+ * reference, an older picker's CDN path, the raw Storage download URL a
22
+ * free-tier library hands out, or a hotlink typed into an import. Three
23
+ * places have to agree on which ASSET that is: the stream route that signs
24
+ * it, the console that shows the author whether it is protected, and the
25
+ * media route that refuses to publish a file a product still sells. One
26
+ * grammar, here, so they cannot disagree.
27
+ *
28
+ * Pure and environment-light: nothing here reads Firestore, Storage or a
29
+ * secret, so the console bundle can carry it.
30
+ */
31
+ export type PaidMediaSource =
32
+ /** A media-library asset, named by scope segment and id. */
33
+ {
34
+ kind: 'asset';
35
+ scope: string;
36
+ mediaId: string;
37
+ }
38
+ /** An object in a Storage bucket, from a download or GCS URL. */
39
+ | {
40
+ kind: 'storage-object';
41
+ bucket: string;
42
+ objectPath: string;
43
+ }
44
+ /** Somebody else's server. */
45
+ | {
46
+ kind: 'external';
47
+ url: string;
48
+ }
49
+ /** Nothing that can be delivered, including a Storage URL we cannot read. */
50
+ | {
51
+ kind: 'malformed';
52
+ };
53
+ /**
54
+ * Classifies a stored value. The same input always gives the same answer, so
55
+ * every branch is checkable without a project.
56
+ */
57
+ export declare function parsePaidMediaSource(stored: unknown): PaidMediaSource;
58
+ /**
59
+ * The library asset a media object key belongs to, or null.
60
+ *
61
+ * Every writer keys an asset's object as `{base}/media/[folders/]{mediaId}`,
62
+ * with `base` either `hosts/{hostId}` or `orgs/{orgId}`. So a key in that
63
+ * shape whose last segment is id-shaped IS that asset, wherever a folder move
64
+ * has since put it. Derived objects (`…__r720p.mp4`, `…__poster.webp`) carry
65
+ * a dot and are no asset's key.
66
+ *
67
+ * This names the asset and decides nothing about access: a caller that signs
68
+ * still has to check the bucket and that the library is its own.
69
+ */
70
+ export declare function paidMediaAssetOfObject(objectPath: string): {
71
+ scope: string;
72
+ mediaId: string;
73
+ } | null;
74
+ /**
75
+ * The library asset a stored paid-media URL names, in whichever form it was
76
+ * written, or null for a hotlink, a malformed value, or a Storage URL that
77
+ * names no asset. Pass `bucket` to refuse a download URL from any other
78
+ * bucket, which is what every server-side caller should do.
79
+ */
80
+ export declare function paidMediaAssetOf(stored: unknown, options?: {
81
+ bucket?: string;
82
+ }): {
83
+ scope: string;
84
+ mediaId: string;
85
+ } | null;
86
+ /**
87
+ * Whether two scope segments name the same library: the same host, or the
88
+ * same org whatever site either is qualified with.
89
+ */
90
+ export declare function samePaidMediaLibrary(a: string, b: string): boolean;