@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,70 @@
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
+ * The fields of a search listing: what a search result and a share card say
19
+ * about one page or one product, and how long each may be.
20
+ *
21
+ * One catalog, because more than one surface edits these and more than one
22
+ * reader holds them to a length. The screen detail page's SEO card draws its
23
+ * inputs from it, the besigner's SEO panel shares the counts, the commerce
24
+ * product editor labels its search engine listing with it, and anything that
25
+ * proposes a value — a template, an import, a generator — reads the same
26
+ * limits the editor enforces instead of restating them. A limit written in
27
+ * two places is a limit the two places disagree about the first time one of
28
+ * them changes.
29
+ *
30
+ * The lengths are what a search result shows before it truncates: about 60
31
+ * characters of a title and 155 of a description. A breadcrumb label is the
32
+ * page's short name in a trail, so it is held shorter than the title it
33
+ * usually abbreviates. The image description is an `alt`, and takes the
34
+ * platform's one `alt` ceiling.
35
+ */
36
+ /** Every field a search listing editor may hold. */
37
+ export type SeoListingFieldKey = 'title' | 'description' | 'breadcrumb' | 'imageAlt';
38
+ export interface SeoListingFieldDefinition {
39
+ key: SeoListingFieldKey;
40
+ /** The input's label, as the editors draw it. */
41
+ label: string;
42
+ /** The longest value the editor accepts; a longer one is flagged, not trimmed. */
43
+ maxLength: number;
44
+ /** Drawn as a multi-line input. */
45
+ multiline?: boolean;
46
+ /** What the value is FOR, in a sentence an author or a generator can act on. */
47
+ purpose: string;
48
+ }
49
+ /** A breadcrumb label: the page's short name in a trail. */
50
+ export declare const SEO_BREADCRUMB_MAX_LENGTH = 40;
51
+ export declare const SEO_LISTING_FIELDS: Readonly<Record<SeoListingFieldKey, SeoListingFieldDefinition>>;
52
+ /**
53
+ * The fields the screen detail page's SEO card edits, in the order it draws
54
+ * them. `imageAlt` is the social image's own description and is only editable
55
+ * beside an image, which the card enforces.
56
+ */
57
+ export declare const SCREEN_SEO_LISTING_FIELDS: readonly SeoListingFieldKey[];
58
+ /**
59
+ * The screen card's plain text inputs: every field but the image's
60
+ * description. The listing's own title and description are the besigner's
61
+ * `SCREEN_SEO_TEXT_FIELDS`; the card adds the breadcrumb label beside them.
62
+ */
63
+ export declare const SCREEN_SEO_CARD_TEXT_FIELDS: readonly ["title", "description", "breadcrumb"];
64
+ export type ScreenSeoCardTextField = (typeof SCREEN_SEO_CARD_TEXT_FIELDS)[number];
65
+ /** Whether a string names a field of the catalog. */
66
+ export declare function isSeoListingFieldKey(value: unknown): value is SeoListingFieldKey;
67
+ /** A field's counter text, `12/60`, as every editor prints it. */
68
+ export declare function seoListingFieldCount(key: SeoListingFieldKey, value: string | null | undefined): string;
69
+ /** Whether a value is over its field's length. */
70
+ export declare function seoListingFieldTooLong(key: SeoListingFieldKey, value: string | null | undefined): boolean;
@@ -0,0 +1,75 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */ import { MEDIA_ALT_MAX_LENGTH } from "./media-alt.js";
17
+ import { SCREEN_SEO_TEXT_FIELDS, SCREEN_SEO_TEXT_GUIDANCE } from "./screen-seo-fields.js";
18
+ /** A breadcrumb label: the page's short name in a trail. */ export const SEO_BREADCRUMB_MAX_LENGTH = 40;
19
+ export const SEO_LISTING_FIELDS = {
20
+ title: {
21
+ key: 'title',
22
+ label: 'Title',
23
+ maxLength: SCREEN_SEO_TEXT_GUIDANCE.title,
24
+ purpose: 'The headline of the search result, published exactly as written; the site title is not appended to it.'
25
+ },
26
+ description: {
27
+ key: 'description',
28
+ label: 'Description',
29
+ maxLength: SCREEN_SEO_TEXT_GUIDANCE.description,
30
+ multiline: true,
31
+ purpose: 'The summary a search result shows under the headline.'
32
+ },
33
+ breadcrumb: {
34
+ key: 'breadcrumb',
35
+ label: 'Breadcrumb label',
36
+ maxLength: SEO_BREADCRUMB_MAX_LENGTH,
37
+ purpose: 'The short name of the page where a breadcrumb trail names it.'
38
+ },
39
+ imageAlt: {
40
+ key: 'imageAlt',
41
+ label: 'Image description',
42
+ maxLength: MEDIA_ALT_MAX_LENGTH,
43
+ multiline: true,
44
+ purpose: 'What the social image shows, read aloud in a share preview. It describes the picture, not the page.'
45
+ }
46
+ };
47
+ /**
48
+ * The fields the screen detail page's SEO card edits, in the order it draws
49
+ * them. `imageAlt` is the social image's own description and is only editable
50
+ * beside an image, which the card enforces.
51
+ */ export const SCREEN_SEO_LISTING_FIELDS = [
52
+ 'title',
53
+ 'description',
54
+ 'breadcrumb',
55
+ 'imageAlt'
56
+ ];
57
+ /**
58
+ * The screen card's plain text inputs: every field but the image's
59
+ * description. The listing's own title and description are the besigner's
60
+ * `SCREEN_SEO_TEXT_FIELDS`; the card adds the breadcrumb label beside them.
61
+ */ export const SCREEN_SEO_CARD_TEXT_FIELDS = [
62
+ ...SCREEN_SEO_TEXT_FIELDS,
63
+ 'breadcrumb'
64
+ ];
65
+ /** Whether a string names a field of the catalog. */ export function isSeoListingFieldKey(value) {
66
+ return typeof value === 'string' && Object.prototype.hasOwnProperty.call(SEO_LISTING_FIELDS, value);
67
+ }
68
+ /** A field's counter text, `12/60`, as every editor prints it. */ export function seoListingFieldCount(key, value) {
69
+ return `${String(value != null ? value : '').length}/${SEO_LISTING_FIELDS[key].maxLength}`;
70
+ }
71
+ /** Whether a value is over its field's length. */ export function seoListingFieldTooLong(key, value) {
72
+ return String(value != null ? value : '').length > SEO_LISTING_FIELDS[key].maxLength;
73
+ }
74
+
75
+ //# sourceMappingURL=seo-listing-fields.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/seo-listing-fields.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { MEDIA_ALT_MAX_LENGTH } from './media-alt'\nimport { SCREEN_SEO_TEXT_FIELDS, SCREEN_SEO_TEXT_GUIDANCE } from './screen-seo-fields'\n\n/**\n * The fields of a search listing: what a search result and a share card say\n * about one page or one product, and how long each may be.\n *\n * One catalog, because more than one surface edits these and more than one\n * reader holds them to a length. The screen detail page's SEO card draws its\n * inputs from it, the besigner's SEO panel shares the counts, the commerce\n * product editor labels its search engine listing with it, and anything that\n * proposes a value — a template, an import, a generator — reads the same\n * limits the editor enforces instead of restating them. A limit written in\n * two places is a limit the two places disagree about the first time one of\n * them changes.\n *\n * The lengths are what a search result shows before it truncates: about 60\n * characters of a title and 155 of a description. A breadcrumb label is the\n * page's short name in a trail, so it is held shorter than the title it\n * usually abbreviates. The image description is an `alt`, and takes the\n * platform's one `alt` ceiling.\n */\n\n/** Every field a search listing editor may hold. */\nexport type SeoListingFieldKey = 'title' | 'description' | 'breadcrumb' | 'imageAlt'\n\nexport interface SeoListingFieldDefinition {\n key: SeoListingFieldKey\n /** The input's label, as the editors draw it. */\n label: string\n /** The longest value the editor accepts; a longer one is flagged, not trimmed. */\n maxLength: number\n /** Drawn as a multi-line input. */\n multiline?: boolean\n /** What the value is FOR, in a sentence an author or a generator can act on. */\n purpose: string\n}\n\n/** A breadcrumb label: the page's short name in a trail. */\nexport const SEO_BREADCRUMB_MAX_LENGTH = 40\n\nexport const SEO_LISTING_FIELDS: Readonly<Record<SeoListingFieldKey, SeoListingFieldDefinition>> = {\n title: {\n key: 'title',\n label: 'Title',\n maxLength: SCREEN_SEO_TEXT_GUIDANCE.title,\n purpose:\n 'The headline of the search result, published exactly as written; the site title is not appended to it.',\n },\n description: {\n key: 'description',\n label: 'Description',\n maxLength: SCREEN_SEO_TEXT_GUIDANCE.description,\n multiline: true,\n purpose: 'The summary a search result shows under the headline.',\n },\n breadcrumb: {\n key: 'breadcrumb',\n label: 'Breadcrumb label',\n maxLength: SEO_BREADCRUMB_MAX_LENGTH,\n purpose: 'The short name of the page where a breadcrumb trail names it.',\n },\n imageAlt: {\n key: 'imageAlt',\n label: 'Image description',\n maxLength: MEDIA_ALT_MAX_LENGTH,\n multiline: true,\n purpose:\n 'What the social image shows, read aloud in a share preview. It describes the picture, not the page.',\n },\n}\n\n/**\n * The fields the screen detail page's SEO card edits, in the order it draws\n * them. `imageAlt` is the social image's own description and is only editable\n * beside an image, which the card enforces.\n */\nexport const SCREEN_SEO_LISTING_FIELDS: readonly SeoListingFieldKey[] = [\n 'title',\n 'description',\n 'breadcrumb',\n 'imageAlt',\n]\n\n/**\n * The screen card's plain text inputs: every field but the image's\n * description. The listing's own title and description are the besigner's\n * `SCREEN_SEO_TEXT_FIELDS`; the card adds the breadcrumb label beside them.\n */\nexport const SCREEN_SEO_CARD_TEXT_FIELDS = [...SCREEN_SEO_TEXT_FIELDS, 'breadcrumb'] as const\n\nexport type ScreenSeoCardTextField = (typeof SCREEN_SEO_CARD_TEXT_FIELDS)[number]\n\n/** Whether a string names a field of the catalog. */\nexport function isSeoListingFieldKey(value: unknown): value is SeoListingFieldKey {\n return typeof value === 'string' && Object.prototype.hasOwnProperty.call(SEO_LISTING_FIELDS, value)\n}\n\n/** A field's counter text, `12/60`, as every editor prints it. */\nexport function seoListingFieldCount(key: SeoListingFieldKey, value: string | null | undefined): string {\n return `${String(value ?? '').length}/${SEO_LISTING_FIELDS[key].maxLength}`\n}\n\n/** Whether a value is over its field's length. */\nexport function seoListingFieldTooLong(key: SeoListingFieldKey, value: string | null | undefined): boolean {\n return String(value ?? '').length > SEO_LISTING_FIELDS[key].maxLength\n}\n"],"names":["MEDIA_ALT_MAX_LENGTH","SCREEN_SEO_TEXT_FIELDS","SCREEN_SEO_TEXT_GUIDANCE","SEO_BREADCRUMB_MAX_LENGTH","SEO_LISTING_FIELDS","title","key","label","maxLength","purpose","description","multiline","breadcrumb","imageAlt","SCREEN_SEO_LISTING_FIELDS","SCREEN_SEO_CARD_TEXT_FIELDS","isSeoListingFieldKey","value","Object","prototype","hasOwnProperty","call","seoListingFieldCount","String","length","seoListingFieldTooLong"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,oBAAoB,QAAQ,iBAAa;AAClD,SAASC,sBAAsB,EAAEC,wBAAwB,QAAQ,yBAAqB;AAqCtF,0DAA0D,GAC1D,OAAO,MAAMC,4BAA4B,GAAE;AAE3C,OAAO,MAAMC,qBAAsF;IACjGC,OAAO;QACLC,KAAK;QACLC,OAAO;QACPC,WAAWN,yBAAyBG,KAAK;QACzCI,SACE;IACJ;IACAC,aAAa;QACXJ,KAAK;QACLC,OAAO;QACPC,WAAWN,yBAAyBQ,WAAW;QAC/CC,WAAW;QACXF,SAAS;IACX;IACAG,YAAY;QACVN,KAAK;QACLC,OAAO;QACPC,WAAWL;QACXM,SAAS;IACX;IACAI,UAAU;QACRP,KAAK;QACLC,OAAO;QACPC,WAAWR;QACXW,WAAW;QACXF,SACE;IACJ;AACF,EAAC;AAED;;;;CAIC,GACD,OAAO,MAAMK,4BAA2D;IACtE;IACA;IACA;IACA;CACD,CAAA;AAED;;;;CAIC,GACD,OAAO,MAAMC,8BAA8B;OAAId;IAAwB;CAAa,CAAS;AAI7F,mDAAmD,GACnD,OAAO,SAASe,qBAAqBC,KAAc;IACjD,OAAO,OAAOA,UAAU,YAAYC,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACjB,oBAAoBa;AAC/F;AAEA,gEAAgE,GAChE,OAAO,SAASK,qBAAqBhB,GAAuB,EAAEW,KAAgC;IAC5F,OAAO,GAAGM,OAAON,gBAAAA,QAAS,IAAIO,MAAM,CAAC,CAAC,EAAEpB,kBAAkB,CAACE,IAAI,CAACE,SAAS,EAAE;AAC7E;AAEA,gDAAgD,GAChD,OAAO,SAASiB,uBAAuBnB,GAAuB,EAAEW,KAAgC;IAC9F,OAAOM,OAAON,gBAAAA,QAAS,IAAIO,MAAM,GAAGpB,kBAAkB,CAACE,IAAI,CAACE,SAAS;AACvE"}
@@ -0,0 +1,119 @@
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 LANGUAGE A PAGE IS IN, answered once (AGL-3148).
19
+ *
20
+ * Three surfaces need this answer and none of them had it: `og:locale` and
21
+ * `og:locale:alternate` were absent from every page type on the platform,
22
+ * and `inLanguage` was absent from every JSON-LD node. The fourth surface,
23
+ * `<link rel="alternate" hreflang>`, has had its own copy of the fallback
24
+ * since AGL-164.
25
+ *
26
+ * They must agree. A page that declares `en` in its markup, `fr` in its Open
27
+ * Graph and nothing in its structured data has told three readers three
28
+ * things, and the one that matters — which language a searcher should be
29
+ * served — is the one they disagree about. So the chain lives here and every
30
+ * surface reads it.
31
+ */
32
+ /**
33
+ * The language a page is in when nothing on the site says otherwise.
34
+ *
35
+ * NOT a guess: it is the language the document actually declares. The
36
+ * `lang` attribute is no longer the literal `"en"` it was when this constant
37
+ * was written — `apps/tenant/app/[host]/layout.tsx` resolves it through
38
+ * `resolvePageLocale` and the two host-agnostic boundaries beside the root
39
+ * layout emit THIS value (AGL-3153) — so the coupling now runs the honest
40
+ * way round: the markup takes its answer from here rather than this constant
41
+ * restating a literal somewhere else.
42
+ *
43
+ * That is what keeps `og:locale` safe to emit unconditionally. A page derived
44
+ * from this chain can only ever repeat what the same chain put in the
45
+ * document's own `lang`.
46
+ *
47
+ * ⚠️ Still PINNED to that attribute, in the direction that is now true: this
48
+ * resolver is its SOURCE. A surface that needs a fallback language reads this
49
+ * constant; it never writes a second default of its own, and changing this
50
+ * value changes what every untranslated site declares.
51
+ *
52
+ * ⚠️ `<html lang>` is the SITE's language, not the screen's. A layout is the
53
+ * deepest thing that can render `<html>`, and no layout has the slug the
54
+ * screen is resolved from, so a locale variant's own language reaches the
55
+ * metadata surfaces below — which call this resolver WITH a screen — and not
56
+ * the document element. `apps/tenant/app/[host]/layout.tsx` records why
57
+ * closing that gap would cost the catch-all's ISR window.
58
+ */
59
+ export declare const PLATFORM_DEFAULT_LOCALE = "en";
60
+ /** The hreflang key for "no locale of its own", as `alternates.languages` spells it. */
61
+ export declare const LOCALE_X_DEFAULT = "x-default";
62
+ /**
63
+ * A language tag, or nothing.
64
+ *
65
+ * Validated rather than trusted: these values reach a `<meta>` and a JSON-LD
66
+ * document, and a locale field is free text in Firestore. An unparseable one
67
+ * is dropped so the chain falls through to the next candidate — a page with a
68
+ * corrupt locale emits the site's language, never the corruption.
69
+ *
70
+ * Accepts `language[-Script][-REGION]` — `en`, `en-GB`, `zh-Hant`,
71
+ * `zh-Hant-TW`, `es-419` — in any casing, and returns it in the canonical
72
+ * BCP-47 casing so two spellings of one locale cannot read as two locales.
73
+ */
74
+ export declare function normalizeLocaleTag(value: string | null | undefined): string | undefined;
75
+ /** The screen and host fields the language of a page is decided from. */
76
+ export interface PageLocaleSources {
77
+ /** The screen being rendered — its `locale` is the most specific answer. */
78
+ screen?: {
79
+ locale?: string;
80
+ } | null;
81
+ /** The host document — `defaultLocale`, then the first of `locales`. */
82
+ host?: {
83
+ defaultLocale?: string;
84
+ locales?: string[];
85
+ } | null;
86
+ }
87
+ /**
88
+ * The language THIS page is written in.
89
+ *
90
+ * Most specific first: the screen says what it was written in, the site says
91
+ * what it defaults to, and the platform default answers for the sites — today
92
+ * every one of them — that have configured neither.
93
+ *
94
+ * Never returns `undefined`. A page is always in some language, and a reader
95
+ * that finds no answer assumes one anyway; saying which one out loud is
96
+ * strictly more information than leaving it to be guessed.
97
+ */
98
+ export declare function resolvePageLocale(sources: PageLocaleSources): string;
99
+ /**
100
+ * A language tag in the form Open Graph spells it — `en_GB`, not `en-GB`.
101
+ *
102
+ * The one transformation, kept beside the normalizer so the two forms cannot
103
+ * drift: `alternates.languages` keys stay BCP-47 because that is what
104
+ * `hreflang` takes, and `og:locale` takes the underscore form.
105
+ */
106
+ export declare function toOpenGraphLocale(value: string | null | undefined): string | undefined;
107
+ /**
108
+ * The OTHER languages this page exists in, as `og:locale:alternate` values.
109
+ *
110
+ * Derived from the very keys that drive `alternates.languages`, deliberately,
111
+ * rather than from the site's configured `locales`: a language reaches that
112
+ * map only once its translated screen resolves to a real routed path, so
113
+ * every value returned here has a page behind it. A site that lists `fr`
114
+ * among its locales but has translated nothing advertises no French card.
115
+ *
116
+ * `x-default` is dropped — it is a routing instruction, not a language — and
117
+ * so is the page's own locale, which `og:locale` already carries.
118
+ */
119
+ export declare function openGraphAlternateLocales(languageKeys: readonly string[] | null | undefined, pageLocale?: string): string[];
@@ -0,0 +1,133 @@
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
+ * WHAT LANGUAGE A PAGE IS IN, answered once (AGL-3148).
18
+ *
19
+ * Three surfaces need this answer and none of them had it: `og:locale` and
20
+ * `og:locale:alternate` were absent from every page type on the platform,
21
+ * and `inLanguage` was absent from every JSON-LD node. The fourth surface,
22
+ * `<link rel="alternate" hreflang>`, has had its own copy of the fallback
23
+ * since AGL-164.
24
+ *
25
+ * They must agree. A page that declares `en` in its markup, `fr` in its Open
26
+ * Graph and nothing in its structured data has told three readers three
27
+ * things, and the one that matters — which language a searcher should be
28
+ * served — is the one they disagree about. So the chain lives here and every
29
+ * surface reads it.
30
+ */ /**
31
+ * The language a page is in when nothing on the site says otherwise.
32
+ *
33
+ * NOT a guess: it is the language the document actually declares. The
34
+ * `lang` attribute is no longer the literal `"en"` it was when this constant
35
+ * was written — `apps/tenant/app/[host]/layout.tsx` resolves it through
36
+ * `resolvePageLocale` and the two host-agnostic boundaries beside the root
37
+ * layout emit THIS value (AGL-3153) — so the coupling now runs the honest
38
+ * way round: the markup takes its answer from here rather than this constant
39
+ * restating a literal somewhere else.
40
+ *
41
+ * That is what keeps `og:locale` safe to emit unconditionally. A page derived
42
+ * from this chain can only ever repeat what the same chain put in the
43
+ * document's own `lang`.
44
+ *
45
+ * ⚠️ Still PINNED to that attribute, in the direction that is now true: this
46
+ * resolver is its SOURCE. A surface that needs a fallback language reads this
47
+ * constant; it never writes a second default of its own, and changing this
48
+ * value changes what every untranslated site declares.
49
+ *
50
+ * ⚠️ `<html lang>` is the SITE's language, not the screen's. A layout is the
51
+ * deepest thing that can render `<html>`, and no layout has the slug the
52
+ * screen is resolved from, so a locale variant's own language reaches the
53
+ * metadata surfaces below — which call this resolver WITH a screen — and not
54
+ * the document element. `apps/tenant/app/[host]/layout.tsx` records why
55
+ * closing that gap would cost the catch-all's ISR window.
56
+ */ export const PLATFORM_DEFAULT_LOCALE = 'en';
57
+ /** The hreflang key for "no locale of its own", as `alternates.languages` spells it. */ export const LOCALE_X_DEFAULT = 'x-default';
58
+ /**
59
+ * A language tag, or nothing.
60
+ *
61
+ * Validated rather than trusted: these values reach a `<meta>` and a JSON-LD
62
+ * document, and a locale field is free text in Firestore. An unparseable one
63
+ * is dropped so the chain falls through to the next candidate — a page with a
64
+ * corrupt locale emits the site's language, never the corruption.
65
+ *
66
+ * Accepts `language[-Script][-REGION]` — `en`, `en-GB`, `zh-Hant`,
67
+ * `zh-Hant-TW`, `es-419` — in any casing, and returns it in the canonical
68
+ * BCP-47 casing so two spellings of one locale cannot read as two locales.
69
+ */ export function normalizeLocaleTag(value) {
70
+ if (typeof value !== 'string') return undefined;
71
+ // `_` is the Open Graph separator and `-` the BCP-47 one; a stored value may
72
+ // legitimately arrive in either, and both name the same locale.
73
+ const raw = value.trim().replace(/_/g, '-');
74
+ if (!raw) return undefined;
75
+ const match = /^([A-Za-z]{2,3})(?:-([A-Za-z]{4}))?(?:-([A-Za-z]{2}|[0-9]{3}))?$/.exec(raw);
76
+ if (!match) return undefined;
77
+ const [, language, script, region] = match;
78
+ return [
79
+ language.toLowerCase(),
80
+ script ? script[0].toUpperCase() + script.slice(1).toLowerCase() : undefined,
81
+ region ? region.toUpperCase() : undefined
82
+ ].filter(Boolean).join('-');
83
+ }
84
+ /**
85
+ * The language THIS page is written in.
86
+ *
87
+ * Most specific first: the screen says what it was written in, the site says
88
+ * what it defaults to, and the platform default answers for the sites — today
89
+ * every one of them — that have configured neither.
90
+ *
91
+ * Never returns `undefined`. A page is always in some language, and a reader
92
+ * that finds no answer assumes one anyway; saying which one out loud is
93
+ * strictly more information than leaving it to be guessed.
94
+ */ export function resolvePageLocale(sources) {
95
+ var _ref, _ref1, _normalizeLocaleTag;
96
+ var _sources_screen, _sources_host, _sources_host_locales, _sources_host1;
97
+ return (_ref = (_ref1 = (_normalizeLocaleTag = normalizeLocaleTag((_sources_screen = sources.screen) == null ? void 0 : _sources_screen.locale)) != null ? _normalizeLocaleTag : normalizeLocaleTag((_sources_host = sources.host) == null ? void 0 : _sources_host.defaultLocale)) != null ? _ref1 : normalizeLocaleTag((_sources_host1 = sources.host) == null ? void 0 : (_sources_host_locales = _sources_host1.locales) == null ? void 0 : _sources_host_locales[0])) != null ? _ref : PLATFORM_DEFAULT_LOCALE;
98
+ }
99
+ /**
100
+ * A language tag in the form Open Graph spells it — `en_GB`, not `en-GB`.
101
+ *
102
+ * The one transformation, kept beside the normalizer so the two forms cannot
103
+ * drift: `alternates.languages` keys stay BCP-47 because that is what
104
+ * `hreflang` takes, and `og:locale` takes the underscore form.
105
+ */ export function toOpenGraphLocale(value) {
106
+ const tag = normalizeLocaleTag(value);
107
+ return tag ? tag.replace(/-/g, '_') : undefined;
108
+ }
109
+ /**
110
+ * The OTHER languages this page exists in, as `og:locale:alternate` values.
111
+ *
112
+ * Derived from the very keys that drive `alternates.languages`, deliberately,
113
+ * rather than from the site's configured `locales`: a language reaches that
114
+ * map only once its translated screen resolves to a real routed path, so
115
+ * every value returned here has a page behind it. A site that lists `fr`
116
+ * among its locales but has translated nothing advertises no French card.
117
+ *
118
+ * `x-default` is dropped — it is a routing instruction, not a language — and
119
+ * so is the page's own locale, which `og:locale` already carries.
120
+ */ export function openGraphAlternateLocales(languageKeys, pageLocale) {
121
+ const own = toOpenGraphLocale(pageLocale);
122
+ const alternates = new Set();
123
+ for (const key of languageKeys != null ? languageKeys : []){
124
+ if (key === LOCALE_X_DEFAULT) continue;
125
+ const tag = toOpenGraphLocale(key);
126
+ if (tag && tag !== own) alternates.add(tag);
127
+ }
128
+ return [
129
+ ...alternates
130
+ ];
131
+ }
132
+
133
+ //# sourceMappingURL=seo-locale.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/seo-locale.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 * WHAT LANGUAGE A PAGE IS IN, answered once (AGL-3148).\n *\n * Three surfaces need this answer and none of them had it: `og:locale` and\n * `og:locale:alternate` were absent from every page type on the platform,\n * and `inLanguage` was absent from every JSON-LD node. The fourth surface,\n * `<link rel=\"alternate\" hreflang>`, has had its own copy of the fallback\n * since AGL-164.\n *\n * They must agree. A page that declares `en` in its markup, `fr` in its Open\n * Graph and nothing in its structured data has told three readers three\n * things, and the one that matters — which language a searcher should be\n * served — is the one they disagree about. So the chain lives here and every\n * surface reads it.\n */\n\n/**\n * The language a page is in when nothing on the site says otherwise.\n *\n * NOT a guess: it is the language the document actually declares. The\n * `lang` attribute is no longer the literal `\"en\"` it was when this constant\n * was written — `apps/tenant/app/[host]/layout.tsx` resolves it through\n * `resolvePageLocale` and the two host-agnostic boundaries beside the root\n * layout emit THIS value (AGL-3153) — so the coupling now runs the honest\n * way round: the markup takes its answer from here rather than this constant\n * restating a literal somewhere else.\n *\n * That is what keeps `og:locale` safe to emit unconditionally. A page derived\n * from this chain can only ever repeat what the same chain put in the\n * document's own `lang`.\n *\n * ⚠️ Still PINNED to that attribute, in the direction that is now true: this\n * resolver is its SOURCE. A surface that needs a fallback language reads this\n * constant; it never writes a second default of its own, and changing this\n * value changes what every untranslated site declares.\n *\n * ⚠️ `<html lang>` is the SITE's language, not the screen's. A layout is the\n * deepest thing that can render `<html>`, and no layout has the slug the\n * screen is resolved from, so a locale variant's own language reaches the\n * metadata surfaces below — which call this resolver WITH a screen — and not\n * the document element. `apps/tenant/app/[host]/layout.tsx` records why\n * closing that gap would cost the catch-all's ISR window.\n */\nexport const PLATFORM_DEFAULT_LOCALE = 'en'\n\n/** The hreflang key for \"no locale of its own\", as `alternates.languages` spells it. */\nexport const LOCALE_X_DEFAULT = 'x-default'\n\n/**\n * A language tag, or nothing.\n *\n * Validated rather than trusted: these values reach a `<meta>` and a JSON-LD\n * document, and a locale field is free text in Firestore. An unparseable one\n * is dropped so the chain falls through to the next candidate — a page with a\n * corrupt locale emits the site's language, never the corruption.\n *\n * Accepts `language[-Script][-REGION]` — `en`, `en-GB`, `zh-Hant`,\n * `zh-Hant-TW`, `es-419` — in any casing, and returns it in the canonical\n * BCP-47 casing so two spellings of one locale cannot read as two locales.\n */\nexport function normalizeLocaleTag(\n value: string | null | undefined,\n): string | undefined {\n if (typeof value !== 'string') return undefined\n // `_` is the Open Graph separator and `-` the BCP-47 one; a stored value may\n // legitimately arrive in either, and both name the same locale.\n const raw = value.trim().replace(/_/g, '-')\n if (!raw) return undefined\n const match =\n /^([A-Za-z]{2,3})(?:-([A-Za-z]{4}))?(?:-([A-Za-z]{2}|[0-9]{3}))?$/.exec(raw)\n if (!match) return undefined\n const [, language, script, region] = match\n return [\n language.toLowerCase(),\n script ? script[0].toUpperCase() + script.slice(1).toLowerCase() : undefined,\n region ? region.toUpperCase() : undefined,\n ]\n .filter(Boolean)\n .join('-')\n}\n\n/** The screen and host fields the language of a page is decided from. */\nexport interface PageLocaleSources {\n /** The screen being rendered — its `locale` is the most specific answer. */\n screen?: { locale?: string } | null\n /** The host document — `defaultLocale`, then the first of `locales`. */\n host?: { defaultLocale?: string; locales?: string[] } | null\n}\n\n/**\n * The language THIS page is written in.\n *\n * Most specific first: the screen says what it was written in, the site says\n * what it defaults to, and the platform default answers for the sites — today\n * every one of them — that have configured neither.\n *\n * Never returns `undefined`. A page is always in some language, and a reader\n * that finds no answer assumes one anyway; saying which one out loud is\n * strictly more information than leaving it to be guessed.\n */\nexport function resolvePageLocale(sources: PageLocaleSources): string {\n return (\n normalizeLocaleTag(sources.screen?.locale) ??\n normalizeLocaleTag(sources.host?.defaultLocale) ??\n normalizeLocaleTag(sources.host?.locales?.[0]) ??\n PLATFORM_DEFAULT_LOCALE\n )\n}\n\n/**\n * A language tag in the form Open Graph spells it — `en_GB`, not `en-GB`.\n *\n * The one transformation, kept beside the normalizer so the two forms cannot\n * drift: `alternates.languages` keys stay BCP-47 because that is what\n * `hreflang` takes, and `og:locale` takes the underscore form.\n */\nexport function toOpenGraphLocale(\n value: string | null | undefined,\n): string | undefined {\n const tag = normalizeLocaleTag(value)\n return tag ? tag.replace(/-/g, '_') : undefined\n}\n\n/**\n * The OTHER languages this page exists in, as `og:locale:alternate` values.\n *\n * Derived from the very keys that drive `alternates.languages`, deliberately,\n * rather than from the site's configured `locales`: a language reaches that\n * map only once its translated screen resolves to a real routed path, so\n * every value returned here has a page behind it. A site that lists `fr`\n * among its locales but has translated nothing advertises no French card.\n *\n * `x-default` is dropped — it is a routing instruction, not a language — and\n * so is the page's own locale, which `og:locale` already carries.\n */\nexport function openGraphAlternateLocales(\n languageKeys: readonly string[] | null | undefined,\n pageLocale?: string,\n): string[] {\n const own = toOpenGraphLocale(pageLocale)\n const alternates = new Set<string>()\n for (const key of languageKeys ?? []) {\n if (key === LOCALE_X_DEFAULT) continue\n const tag = toOpenGraphLocale(key)\n if (tag && tag !== own) alternates.add(tag)\n }\n return [...alternates]\n}\n"],"names":["PLATFORM_DEFAULT_LOCALE","LOCALE_X_DEFAULT","normalizeLocaleTag","value","undefined","raw","trim","replace","match","exec","language","script","region","toLowerCase","toUpperCase","slice","filter","Boolean","join","resolvePageLocale","sources","screen","locale","host","defaultLocale","locales","toOpenGraphLocale","tag","openGraphAlternateLocales","languageKeys","pageLocale","own","alternates","Set","key","add"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;CAcC,GAED;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BC,GACD,OAAO,MAAMA,0BAA0B,KAAI;AAE3C,sFAAsF,GACtF,OAAO,MAAMC,mBAAmB,YAAW;AAE3C;;;;;;;;;;;CAWC,GACD,OAAO,SAASC,mBACdC,KAAgC;IAEhC,IAAI,OAAOA,UAAU,UAAU,OAAOC;IACtC,6EAA6E;IAC7E,gEAAgE;IAChE,MAAMC,MAAMF,MAAMG,IAAI,GAAGC,OAAO,CAAC,MAAM;IACvC,IAAI,CAACF,KAAK,OAAOD;IACjB,MAAMI,QACJ,mEAAmEC,IAAI,CAACJ;IAC1E,IAAI,CAACG,OAAO,OAAOJ;IACnB,MAAM,GAAGM,UAAUC,QAAQC,OAAO,GAAGJ;IACrC,OAAO;QACLE,SAASG,WAAW;QACpBF,SAASA,MAAM,CAAC,EAAE,CAACG,WAAW,KAAKH,OAAOI,KAAK,CAAC,GAAGF,WAAW,KAAKT;QACnEQ,SAASA,OAAOE,WAAW,KAAKV;KACjC,CACEY,MAAM,CAACC,SACPC,IAAI,CAAC;AACV;AAUA;;;;;;;;;;CAUC,GACD,OAAO,SAASC,kBAAkBC,OAA0B;QAExDlB,MAAAA,OAAAA;QAAmBkB,iBACAA,eACAA,uBAAAA;IAHrB,QACElB,QAAAA,SAAAA,sBAAAA,oBAAmBkB,kBAAAA,QAAQC,MAAM,qBAAdD,gBAAgBE,MAAM,aAAzCpB,sBACAA,oBAAmBkB,gBAAAA,QAAQG,IAAI,qBAAZH,cAAcI,aAAa,aAD9CtB,QAEAA,oBAAmBkB,iBAAAA,QAAQG,IAAI,sBAAZH,wBAAAA,eAAcK,OAAO,qBAArBL,qBAAuB,CAAC,EAAE,aAF7ClB,OAGAF;AAEJ;AAEA;;;;;;CAMC,GACD,OAAO,SAAS0B,kBACdvB,KAAgC;IAEhC,MAAMwB,MAAMzB,mBAAmBC;IAC/B,OAAOwB,MAAMA,IAAIpB,OAAO,CAAC,MAAM,OAAOH;AACxC;AAEA;;;;;;;;;;;CAWC,GACD,OAAO,SAASwB,0BACdC,YAAkD,EAClDC,UAAmB;IAEnB,MAAMC,MAAML,kBAAkBI;IAC9B,MAAME,aAAa,IAAIC;IACvB,KAAK,MAAMC,OAAOL,uBAAAA,eAAgB,EAAE,CAAE;QACpC,IAAIK,QAAQjC,kBAAkB;QAC9B,MAAM0B,MAAMD,kBAAkBQ;QAC9B,IAAIP,OAAOA,QAAQI,KAAKC,WAAWG,GAAG,CAACR;IACzC;IACA,OAAO;WAAIK;KAAW;AACxB"}
@@ -0,0 +1,149 @@
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
+ * The variables a page title may be written in terms of, and how a written
19
+ * title becomes a rendered one.
20
+ *
21
+ * ## Why this exists
22
+ *
23
+ * A title is verbatim (AGL-1341, and that rule is right — see `seo-title`), so
24
+ * an author who wants the brand in a title TYPES it. Fifty screens on the
25
+ * marketing site end in a literal ` | Aglyn`, which means the site name and
26
+ * the character in front of it are stored fifty times, and changing either one
27
+ * is fifty edits that nothing reminds you to make. `seo.separator` already
28
+ * exists as a setting and every one of those titles ignores it.
29
+ *
30
+ * So a title may now be WRITTEN in terms of what it depends on:
31
+ *
32
+ * ```
33
+ * {{page.name}} {{site.separator}} {{site.name}}
34
+ * ```
35
+ *
36
+ * and a site-name change is one edit in Host setup → SEO.
37
+ *
38
+ * ## ⛔ No rendered title changes because this shipped
39
+ *
40
+ * The whole feature is opt-in at the string level: a title with no `{{` in it
41
+ * is returned unchanged, character for character, by the same code path that
42
+ * returned it before. Nothing migrates the fifty existing titles — a migration
43
+ * could not be output-preserving anyway, because ` | Aglyn` is not what
44
+ * `{{site.separator}}{{site.name}}` resolves to on a host whose separator is
45
+ * `-` and whose site title is the long form. They keep working as literals
46
+ * until somebody decides otherwise, one at a time.
47
+ *
48
+ * `DEFAULT_TITLE_PATTERN` is held to the same standard: it is the composition
49
+ * `resolveSeoTitle` already performed for a page with no authored title, said
50
+ * in tokens instead of in code, and `seo-title.spec` pins that the two agree.
51
+ *
52
+ * ## The grammar is `{{…}}`, not `[…]`
53
+ *
54
+ * Because the platform already has one: the besigner's attribute fields, the
55
+ * markdown blocks and the campaign editors all serialize `{{…}}` and the
56
+ * people writing SEO titles are the same people who write those. A second
57
+ * grammar for the same idea is a second thing to learn and a second parser to
58
+ * keep in step.
59
+ *
60
+ * ## What is NOT a variable here
61
+ *
62
+ * Anything per-visitor or per-request. A `<title>` is rendered into a cached,
63
+ * shared HTML document and read by crawlers, so a variable that resolved to
64
+ * something about the reader would be wrong for everyone it was cached for.
65
+ * These three are properties of the page and the site, both of which are the
66
+ * same for everybody who asks for that URL.
67
+ */
68
+ /** A variable's name, as it is written between the braces. */
69
+ export type SeoTitleVariableName = 'page.name' | 'site.name' | 'site.separator';
70
+ export interface SeoTitleVariableDefinition {
71
+ name: SeoTitleVariableName;
72
+ /** What the insert menu calls it. */
73
+ label: string;
74
+ /** One line under the label, saying where the value comes from. */
75
+ description: string;
76
+ }
77
+ /**
78
+ * Every variable a title may use, in the order a picker should offer them —
79
+ * which is the order they appear in the default pattern, so the menu reads as
80
+ * the sentence it builds.
81
+ */
82
+ export declare const SEO_TITLE_VARIABLES: readonly SeoTitleVariableDefinition[];
83
+ /**
84
+ * The composition every untitled page gets when the site sets no pattern of
85
+ * its own.
86
+ *
87
+ * This is `resolveSeoTitle`'s previous hard-coded composition, written out:
88
+ * name, separator padded by a space on each side, site title. It is a constant
89
+ * rather than a string built at the call site so that the setting's default,
90
+ * the placeholder the editor shows and the value the renderer falls back to
91
+ * are one thing.
92
+ */
93
+ export declare const DEFAULT_TITLE_PATTERN = "{{page.name}} {{site.separator}} {{site.name}}";
94
+ /** The values the variables stand for, for one page of one site. */
95
+ export interface SeoTitleVariableValues {
96
+ 'page.name'?: string | null;
97
+ 'site.name'?: string | null;
98
+ 'site.separator'?: string | null;
99
+ }
100
+ /**
101
+ * The separator a site uses when it has set none.
102
+ *
103
+ * An en dash, which is what `seo-title` has padded around since AGL-1341. It
104
+ * lives here because `{{site.separator}}` has to resolve to the SAME character
105
+ * the code composed with — a variable that stood for "the separator, unless
106
+ * it is unset, in which case nothing" would silently change the title of every
107
+ * untitled page on every site that never filled the field in.
108
+ */
109
+ export declare const DEFAULT_TITLE_SEPARATOR = "\u2013";
110
+ /** The site's separator, defaulted the one way everything defaults it. */
111
+ export declare function seoSeparatorOrDefault(separator?: string | null): string;
112
+ /**
113
+ * Whether a written value uses any variable at all.
114
+ *
115
+ * The cheap gate in front of every path here: a title with no `{{` is returned
116
+ * by identity, which is what makes "nothing renders differently" a property of
117
+ * the code rather than a claim about the data.
118
+ */
119
+ export declare function hasSeoTitleVariables(value?: string | null): boolean;
120
+ /** Whether a name is one this catalog defines. */
121
+ export declare function isSeoTitleVariable(name: string): name is SeoTitleVariableName;
122
+ /**
123
+ * Resolve a written title into the one that is rendered.
124
+ *
125
+ * ## An unknown variable is left alone
126
+ *
127
+ * `{{page.subtitle}}` renders as itself, visibly, rather than as an empty gap.
128
+ * A typo that vanished would produce a title that is silently missing a piece,
129
+ * and the author's next look at the live page would show them a sentence that
130
+ * merely reads a bit short. Leaving it visible is the version somebody
131
+ * notices. The editor's picker and autocomplete are what keep it from
132
+ * happening; this is what happens when they are bypassed.
133
+ *
134
+ * ## A separator needs something on BOTH sides
135
+ *
136
+ * This is `resolveSeoTitle`'s own rule (AGL-1341) and it survives the move into
137
+ * a pattern, because it is the rule that stops `<title>` from beginning with a
138
+ * dash on a page whose name is missing. A `{{site.separator}}` with nothing
139
+ * rendered on one side of it is dropped, whatever order the pattern put the
140
+ * pieces in — which is why the parts are walked rather than regex-substituted:
141
+ * a substitution cannot see its neighbours.
142
+ *
143
+ * ## An empty variable takes its spacing with it
144
+ *
145
+ * Otherwise a site with no name set renders `Pricing ` — the gap where the
146
+ * missing piece was, and a trailing separator's worth of whitespace. Runs
147
+ * collapse to one space and the result is trimmed.
148
+ */
149
+ export declare function resolveSeoTitleVariables(written: string | null | undefined, values: SeoTitleVariableValues): string;