@aglyn/aglyn 1.0.0-beta.218 → 1.0.0-beta.220

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 (455) hide show
  1. package/package.json +12 -12
  2. package/src/lib/app-utils/actions.d.ts +26 -433
  3. package/src/lib/app-utils/actions.js +108 -633
  4. package/src/lib/app-utils/actions.js.map +1 -1
  5. package/src/lib/app-utils/activity-presenter.d.ts +3 -3
  6. package/src/lib/app-utils/activity-presenter.js +36 -52
  7. package/src/lib/app-utils/activity-presenter.js.map +1 -1
  8. package/src/lib/app-utils/analytics-events.d.ts +1 -1
  9. package/src/lib/app-utils/analytics-events.js.map +1 -1
  10. package/src/lib/app-utils/analytics-provider.d.ts +182 -0
  11. package/src/lib/app-utils/analytics-provider.js +133 -0
  12. package/src/lib/app-utils/analytics-provider.js.map +1 -0
  13. package/src/lib/app-utils/api-plugins.d.ts +46 -0
  14. package/src/lib/app-utils/api-plugins.js +19 -0
  15. package/src/lib/app-utils/api-plugins.js.map +1 -1
  16. package/src/lib/app-utils/{marketplace-overrides.d.ts → artifact-overrides.d.ts} +9 -6
  17. package/src/lib/app-utils/{marketplace-overrides.js → artifact-overrides.js} +10 -7
  18. package/src/lib/app-utils/artifact-overrides.js.map +1 -0
  19. package/src/lib/app-utils/{marketplace-provenance.d.ts → artifact-provenance.d.ts} +12 -10
  20. package/src/lib/app-utils/{marketplace-provenance.js → artifact-provenance.js} +9 -7
  21. package/src/lib/app-utils/artifact-provenance.js.map +1 -0
  22. package/src/lib/app-utils/binding-token-catalog.d.ts +5 -13
  23. package/src/lib/app-utils/binding-token-catalog.js +17 -41
  24. package/src/lib/app-utils/binding-token-catalog.js.map +1 -1
  25. package/src/lib/app-utils/brand-support-line.d.ts +36 -0
  26. package/src/lib/app-utils/brand-support-line.js +38 -0
  27. package/src/lib/app-utils/brand-support-line.js.map +1 -0
  28. package/src/lib/app-utils/collection-entries.d.ts +2 -2
  29. package/src/lib/app-utils/collection-entries.js.map +1 -1
  30. package/src/lib/app-utils/consent-group-change.d.ts +4 -0
  31. package/src/lib/app-utils/consent-group-change.js.map +1 -1
  32. package/src/lib/app-utils/consent-groups.d.ts +1 -1
  33. package/src/lib/app-utils/consent-groups.js.map +1 -1
  34. package/src/lib/app-utils/console-routes.d.ts +15 -42
  35. package/src/lib/app-utils/console-routes.js +10 -39
  36. package/src/lib/app-utils/console-routes.js.map +1 -1
  37. package/src/lib/app-utils/contacts.d.ts +24 -2
  38. package/src/lib/app-utils/contacts.js +21 -5
  39. package/src/lib/app-utils/contacts.js.map +1 -1
  40. package/src/lib/app-utils/container-membership.d.ts +93 -0
  41. package/src/lib/app-utils/container-membership.js +165 -0
  42. package/src/lib/app-utils/container-membership.js.map +1 -0
  43. package/src/lib/app-utils/crm-task-reminders.d.ts +23 -6
  44. package/src/lib/app-utils/crm-task-reminders.js +32 -11
  45. package/src/lib/app-utils/crm-task-reminders.js.map +1 -1
  46. package/src/lib/app-utils/crm.d.ts +24 -4
  47. package/src/lib/app-utils/crm.js +23 -0
  48. package/src/lib/app-utils/crm.js.map +1 -1
  49. package/src/lib/app-utils/cross-pool-desync.d.ts +39 -0
  50. package/src/lib/app-utils/cross-pool-desync.js +47 -0
  51. package/src/lib/app-utils/cross-pool-desync.js.map +1 -0
  52. package/src/lib/app-utils/csv-upload.d.ts +29 -0
  53. package/src/lib/app-utils/csv-upload.js +29 -0
  54. package/src/lib/app-utils/csv-upload.js.map +1 -0
  55. package/src/lib/app-utils/{dataset-csv.d.ts → csv.d.ts} +10 -43
  56. package/src/lib/app-utils/{dataset-csv.js → csv.js} +10 -81
  57. package/src/lib/app-utils/csv.js.map +1 -0
  58. package/src/lib/app-utils/dataset-models.d.ts +5 -5
  59. package/src/lib/app-utils/dataset-models.js +19 -2
  60. package/src/lib/app-utils/dataset-models.js.map +1 -1
  61. package/src/lib/app-utils/datasets.d.ts +65 -30
  62. package/src/lib/app-utils/datasets.js +74 -24
  63. package/src/lib/app-utils/datasets.js.map +1 -1
  64. package/src/lib/app-utils/docs-deflection.d.ts +6 -6
  65. package/src/lib/app-utils/docs-deflection.js.map +1 -1
  66. package/src/lib/app-utils/docs-help.generated.d.ts +14 -8
  67. package/src/lib/app-utils/docs-help.generated.js +23 -6
  68. package/src/lib/app-utils/docs-help.generated.js.map +1 -1
  69. package/src/lib/app-utils/docs-index.generated.d.ts +2 -2
  70. package/src/lib/app-utils/docs-index.generated.js +570 -346
  71. package/src/lib/app-utils/docs-index.generated.js.map +1 -1
  72. package/src/lib/app-utils/docs-retrieval.d.ts +3 -3
  73. package/src/lib/app-utils/docs-retrieval.js +14 -10
  74. package/src/lib/app-utils/docs-retrieval.js.map +1 -1
  75. package/src/lib/app-utils/duplicate-resource.d.ts +4 -1
  76. package/src/lib/app-utils/duplicate-resource.js +7 -4
  77. package/src/lib/app-utils/duplicate-resource.js.map +1 -1
  78. package/src/lib/app-utils/dynamic-list-rule.d.ts +1 -1
  79. package/src/lib/app-utils/dynamic-list-rule.js +3 -3
  80. package/src/lib/app-utils/dynamic-list-rule.js.map +1 -1
  81. package/src/lib/app-utils/element-ui.d.ts +1 -1
  82. package/src/lib/app-utils/element-ui.js +1 -1
  83. package/src/lib/app-utils/element-ui.js.map +1 -1
  84. package/src/lib/app-utils/email-starter-policy.js +3 -3
  85. package/src/lib/app-utils/email-starter-policy.js.map +1 -1
  86. package/src/lib/app-utils/email-text.d.ts +80 -0
  87. package/src/lib/app-utils/email-text.js +189 -0
  88. package/src/lib/app-utils/email-text.js.map +1 -0
  89. package/src/lib/app-utils/{list-assignment-policy.d.ts → enrollment-basis.d.ts} +4 -0
  90. package/src/lib/app-utils/{list-assignment-policy.js → enrollment-basis.js} +5 -1
  91. package/src/lib/app-utils/enrollment-basis.js.map +1 -0
  92. package/src/lib/app-utils/entity-picker-context.d.ts +10 -5
  93. package/src/lib/app-utils/entity-picker-context.js.map +1 -1
  94. package/src/lib/app-utils/error-beacon.d.ts +75 -6
  95. package/src/lib/app-utils/error-beacon.js +160 -21
  96. package/src/lib/app-utils/error-beacon.js.map +1 -1
  97. package/src/lib/app-utils/expand-repeatables.d.ts +10 -10
  98. package/src/lib/app-utils/expand-repeatables.js +14 -14
  99. package/src/lib/app-utils/expand-repeatables.js.map +1 -1
  100. package/src/lib/app-utils/forms.js +2 -2
  101. package/src/lib/app-utils/forms.js.map +1 -1
  102. package/src/lib/app-utils/health-report.d.ts +2 -3
  103. package/src/lib/app-utils/health-report.js +8 -6
  104. package/src/lib/app-utils/health-report.js.map +1 -1
  105. package/src/lib/app-utils/host-events.d.ts +82 -0
  106. package/src/lib/app-utils/host-events.js +62 -0
  107. package/src/lib/app-utils/host-events.js.map +1 -0
  108. package/src/lib/app-utils/inbound-mail-domain.d.ts +27 -0
  109. package/src/lib/app-utils/inbound-mail-domain.js +31 -0
  110. package/src/lib/app-utils/inbound-mail-domain.js.map +1 -0
  111. package/src/lib/app-utils/lockdown.d.ts +11 -0
  112. package/src/lib/app-utils/lockdown.js +33 -3
  113. package/src/lib/app-utils/lockdown.js.map +1 -1
  114. package/src/lib/app-utils/margin-utilization.d.ts +4 -69
  115. package/src/lib/app-utils/margin-utilization.js +82 -69
  116. package/src/lib/app-utils/margin-utilization.js.map +1 -1
  117. package/src/lib/app-utils/member-email-aliases.d.ts +25 -0
  118. package/src/lib/app-utils/member-email-aliases.js +29 -0
  119. package/src/lib/app-utils/member-email-aliases.js.map +1 -1
  120. package/src/lib/app-utils/node-definition-sanitizer.d.ts +16 -16
  121. package/src/lib/app-utils/node-definition-sanitizer.js +24 -20
  122. package/src/lib/app-utils/node-definition-sanitizer.js.map +1 -1
  123. package/src/lib/app-utils/node-interactions.d.ts +7 -7
  124. package/src/lib/app-utils/node-interactions.js.map +1 -1
  125. package/src/lib/app-utils/notifications.d.ts +147 -47
  126. package/src/lib/app-utils/notifications.js +182 -44
  127. package/src/lib/app-utils/notifications.js.map +1 -1
  128. package/src/lib/app-utils/operator-alerts.d.ts +15 -1
  129. package/src/lib/app-utils/operator-alerts.js +47 -10
  130. package/src/lib/app-utils/operator-alerts.js.map +1 -1
  131. package/src/lib/app-utils/payments-configured.d.ts +8 -21
  132. package/src/lib/app-utils/payments-configured.js +8 -23
  133. package/src/lib/app-utils/payments-configured.js.map +1 -1
  134. package/src/lib/app-utils/plan-entitlements.d.ts +207 -306
  135. package/src/lib/app-utils/plan-entitlements.js +345 -528
  136. package/src/lib/app-utils/plan-entitlements.js.map +1 -1
  137. package/src/lib/app-utils/platform-brand.d.ts +10 -0
  138. package/src/lib/app-utils/platform-brand.js +14 -3
  139. package/src/lib/app-utils/platform-brand.js.map +1 -1
  140. package/src/lib/app-utils/platform-marketing-consent.d.ts +56 -2
  141. package/src/lib/app-utils/platform-marketing-consent.js +6 -5
  142. package/src/lib/app-utils/platform-marketing-consent.js.map +1 -1
  143. package/src/lib/app-utils/plugin-api-rate-limit.d.ts +7 -1
  144. package/src/lib/app-utils/plugin-api-rate-limit.js +11 -3
  145. package/src/lib/app-utils/plugin-api-rate-limit.js.map +1 -1
  146. package/src/lib/app-utils/plugin-bundle-checks.js +2 -2
  147. package/src/lib/app-utils/plugin-bundle-checks.js.map +1 -1
  148. package/src/lib/app-utils/plugin-host-events.generated.d.ts +12 -0
  149. package/src/lib/app-utils/plugin-host-events.generated.js +169 -0
  150. package/src/lib/app-utils/plugin-host-events.generated.js.map +1 -0
  151. package/src/lib/app-utils/plugin-release-flags.generated.d.ts +12 -0
  152. package/src/lib/app-utils/plugin-release-flags.generated.js +106 -0
  153. package/src/lib/app-utils/plugin-release-flags.generated.js.map +1 -0
  154. package/src/lib/app-utils/plugin-starter-templates.generated.d.ts +12 -0
  155. package/src/lib/app-utils/plugin-starter-templates.generated.js +711 -0
  156. package/src/lib/app-utils/plugin-starter-templates.generated.js.map +1 -0
  157. package/src/lib/app-utils/realm-host-surface.generated.js +2 -0
  158. package/src/lib/app-utils/realm-host-surface.generated.js.map +1 -1
  159. package/src/lib/app-utils/release-flags.d.ts +14 -5
  160. package/src/lib/app-utils/release-flags.js +21 -125
  161. package/src/lib/app-utils/release-flags.js.map +1 -1
  162. package/src/lib/app-utils/repeat-query.d.ts +56 -0
  163. package/src/lib/app-utils/{dataset-query.js → repeat-query.js} +16 -16
  164. package/src/lib/app-utils/repeat-query.js.map +1 -0
  165. package/src/lib/app-utils/repeat-sources.d.ts +9 -0
  166. package/src/lib/app-utils/repeat-sources.js.map +1 -1
  167. package/src/lib/app-utils/retained-refusals.d.ts +73 -0
  168. package/src/lib/app-utils/retained-refusals.js +186 -0
  169. package/src/lib/app-utils/retained-refusals.js.map +1 -0
  170. package/src/lib/app-utils/scope-tokens.d.ts +27 -0
  171. package/src/lib/app-utils/scope-tokens.js +61 -0
  172. package/src/lib/app-utils/scope-tokens.js.map +1 -1
  173. package/src/lib/app-utils/screen-link-context.js +3 -3
  174. package/src/lib/app-utils/screen-link-context.js.map +1 -1
  175. package/src/lib/app-utils/screen-route.js +1 -1
  176. package/src/lib/app-utils/screen-route.js.map +1 -1
  177. package/src/lib/app-utils/seo-audit.d.ts +132 -0
  178. package/src/lib/app-utils/seo-audit.js +246 -0
  179. package/src/lib/app-utils/seo-audit.js.map +1 -0
  180. package/src/lib/app-utils/seo-keywords.d.ts +48 -0
  181. package/src/lib/app-utils/seo-keywords.js +60 -0
  182. package/src/lib/app-utils/seo-keywords.js.map +1 -0
  183. package/src/lib/app-utils/seo-page-facts.d.ts +66 -0
  184. package/src/lib/app-utils/seo-page-facts.js +155 -0
  185. package/src/lib/app-utils/seo-page-facts.js.map +1 -0
  186. package/src/lib/app-utils/seo-site-scan.d.ts +126 -0
  187. package/src/lib/app-utils/seo-site-scan.js +162 -0
  188. package/src/lib/app-utils/seo-site-scan.js.map +1 -0
  189. package/src/lib/app-utils/seo-title-variables.js +1 -1
  190. package/src/lib/app-utils/seo-title-variables.js.map +1 -1
  191. package/src/lib/app-utils/server.d.ts +13 -18
  192. package/src/lib/app-utils/server.js +33 -51
  193. package/src/lib/app-utils/server.js.map +1 -1
  194. package/src/lib/app-utils/site-interactions.d.ts +501 -0
  195. package/src/lib/app-utils/site-interactions.js +554 -0
  196. package/src/lib/app-utils/site-interactions.js.map +1 -0
  197. package/src/lib/app-utils/{marketplace-theme.d.ts → site-theme.d.ts} +13 -2
  198. package/src/lib/app-utils/{marketplace-theme.js → site-theme.js} +2 -2
  199. package/src/lib/app-utils/site-theme.js.map +1 -0
  200. package/src/lib/app-utils/sitemap.d.ts +4 -3
  201. package/src/lib/app-utils/sitemap.js +9 -7
  202. package/src/lib/app-utils/sitemap.js.map +1 -1
  203. package/src/lib/app-utils/stale-build-error.d.ts +51 -0
  204. package/src/lib/app-utils/stale-build-error.js +100 -1
  205. package/src/lib/app-utils/stale-build-error.js.map +1 -1
  206. package/src/lib/app-utils/starter-template-nodes.d.ts +137 -0
  207. package/src/lib/app-utils/starter-template-nodes.js +129 -0
  208. package/src/lib/app-utils/starter-template-nodes.js.map +1 -0
  209. package/src/lib/app-utils/starter-templates.d.ts +11 -34
  210. package/src/lib/app-utils/starter-templates.js +19 -230
  211. package/src/lib/app-utils/starter-templates.js.map +1 -1
  212. package/src/lib/app-utils/{email-topics.d.ts → subscription-topics.d.ts} +64 -48
  213. package/src/lib/app-utils/{email-topics.js → subscription-topics.js} +39 -109
  214. package/src/lib/app-utils/subscription-topics.js.map +1 -0
  215. package/src/lib/app-utils/tax-jurisdiction-figures.d.ts +118 -0
  216. package/src/lib/app-utils/tax-jurisdiction-figures.js +123 -0
  217. package/src/lib/app-utils/tax-jurisdiction-figures.js.map +1 -0
  218. package/src/lib/app-utils/theme-library.d.ts +10 -3
  219. package/src/lib/app-utils/theme-library.js +13 -4
  220. package/src/lib/app-utils/theme-library.js.map +1 -1
  221. package/src/lib/app-utils/usage-budget.d.ts +73 -188
  222. package/src/lib/app-utils/usage-budget.js +58 -194
  223. package/src/lib/app-utils/usage-budget.js.map +1 -1
  224. package/src/lib/app-utils/{campaign-attribution.d.ts → utm-attribution.d.ts} +11 -6
  225. package/src/lib/app-utils/{campaign-attribution.js → utm-attribution.js} +13 -8
  226. package/src/lib/app-utils/utm-attribution.js.map +1 -0
  227. package/src/lib/app-utils/{campaign-forwarding.d.ts → utm-forwarding.d.ts} +14 -14
  228. package/src/lib/app-utils/{campaign-forwarding.js → utm-forwarding.js} +26 -26
  229. package/src/lib/app-utils/utm-forwarding.js.map +1 -0
  230. package/src/lib/app-utils/{campaign-touch.d.ts → utm-touch.d.ts} +25 -17
  231. package/src/lib/app-utils/{campaign-touch.js → utm-touch.js} +38 -30
  232. package/src/lib/app-utils/utm-touch.js.map +1 -0
  233. package/src/lib/app-utils/variables.d.ts +9 -9
  234. package/src/lib/app-utils/variables.js.map +1 -1
  235. package/src/lib/app-utils/video-object.js +6 -5
  236. package/src/lib/app-utils/video-object.js.map +1 -1
  237. package/src/lib/app-utils/visitor-consent.d.ts +41 -164
  238. package/src/lib/app-utils/visitor-consent.js +66 -277
  239. package/src/lib/app-utils/visitor-consent.js.map +1 -1
  240. package/src/lib/app-utils/visitor-record-ceiling.d.ts +32 -0
  241. package/src/lib/app-utils/visitor-record-ceiling.js +39 -0
  242. package/src/lib/app-utils/visitor-record-ceiling.js.map +1 -1
  243. package/src/lib/app-utils/web-vitals-rum.d.ts +7 -7
  244. package/src/lib/app-utils/web-vitals-rum.js +31 -63
  245. package/src/lib/app-utils/web-vitals-rum.js.map +1 -1
  246. package/src/lib/app-utils/where-used.d.ts +11 -6
  247. package/src/lib/app-utils/where-used.js +3 -8
  248. package/src/lib/app-utils/where-used.js.map +1 -1
  249. package/src/lib/foundation/definitions/components.types.d.ts +1 -1
  250. package/src/lib/foundation/definitions/components.types.js +1 -1
  251. package/src/lib/foundation/definitions/components.types.js.map +1 -1
  252. package/src/lib/foundation/definitions/org-billing.types.d.ts +11 -137
  253. package/src/lib/foundation/definitions/org-billing.types.js.map +1 -1
  254. package/src/lib/foundation/definitions/organization.types.d.ts +1 -3
  255. package/src/lib/foundation/definitions/organization.types.js.map +1 -1
  256. package/src/lib/foundation/definitions/platform.types.d.ts +11 -5
  257. package/src/lib/foundation/definitions/platform.types.js.map +1 -1
  258. package/src/lib/foundation/definitions/write-deny-coverage.util.d.ts +16 -0
  259. package/src/lib/foundation/definitions/write-deny-coverage.util.js +20 -0
  260. package/src/lib/foundation/definitions/write-deny-coverage.util.js.map +1 -1
  261. package/src/lib/foundation/index.d.ts +1 -1
  262. package/src/lib/foundation/index.js.map +1 -1
  263. package/src/lib/plugin-manager/besigner-documents.d.ts +96 -0
  264. package/src/lib/plugin-manager/besigner-documents.js +61 -0
  265. package/src/lib/plugin-manager/besigner-documents.js.map +1 -0
  266. package/src/lib/plugin-manager/computed-variables.d.ts +71 -0
  267. package/src/lib/plugin-manager/computed-variables.js +74 -0
  268. package/src/lib/plugin-manager/computed-variables.js.map +1 -0
  269. package/src/lib/plugin-manager/custom-fields.d.ts +29 -2
  270. package/src/lib/plugin-manager/custom-fields.js +47 -1
  271. package/src/lib/plugin-manager/custom-fields.js.map +1 -1
  272. package/src/lib/plugin-manager/feature-plugins.d.ts +372 -99
  273. package/src/lib/plugin-manager/feature-plugins.js +126 -51
  274. package/src/lib/plugin-manager/feature-plugins.js.map +1 -1
  275. package/src/lib/plugin-manager/first-party-plugins.generated.d.ts +134 -0
  276. package/src/lib/plugin-manager/first-party-plugins.generated.js +840 -10
  277. package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -1
  278. package/src/lib/plugin-manager/index.d.ts +0 -1
  279. package/src/lib/plugin-manager/index.js +0 -1
  280. package/src/lib/plugin-manager/index.js.map +1 -1
  281. package/src/lib/plugin-manager/plugin-activity-actions.d.ts +12 -0
  282. package/src/lib/plugin-manager/plugin-activity-actions.js +25 -0
  283. package/src/lib/plugin-manager/plugin-activity-actions.js.map +1 -1
  284. package/src/lib/plugin-manager/plugin-contact-capture.d.ts +9 -4
  285. package/src/lib/plugin-manager/plugin-contact-capture.js.map +1 -1
  286. package/src/lib/plugin-manager/plugin-containers.d.ts +68 -0
  287. package/src/lib/plugin-manager/plugin-containers.generated.d.ts +10 -0
  288. package/src/lib/plugin-manager/plugin-containers.generated.js +20 -0
  289. package/src/lib/plugin-manager/plugin-containers.generated.js.map +1 -0
  290. package/src/lib/plugin-manager/plugin-containers.js +27 -0
  291. package/src/lib/plugin-manager/plugin-containers.js.map +1 -0
  292. package/src/lib/plugin-manager/plugin-contributions.d.ts +1 -1
  293. package/src/lib/plugin-manager/plugin-contributions.js.map +1 -1
  294. package/src/lib/plugin-manager/plugin-declarations-repair.d.ts +36 -0
  295. package/src/lib/plugin-manager/plugin-declarations-repair.js +64 -0
  296. package/src/lib/plugin-manager/plugin-declarations-repair.js.map +1 -0
  297. package/src/lib/plugin-manager/plugin-dependents.d.ts +101 -0
  298. package/src/lib/plugin-manager/plugin-dependents.js +75 -0
  299. package/src/lib/plugin-manager/plugin-dependents.js.map +1 -0
  300. package/src/lib/plugin-manager/plugin-distribution.d.ts +55 -0
  301. package/src/lib/plugin-manager/plugin-distribution.js +45 -0
  302. package/src/lib/plugin-manager/plugin-distribution.js.map +1 -0
  303. package/src/lib/plugin-manager/plugin-entitlements.d.ts +8 -0
  304. package/src/lib/plugin-manager/plugin-entitlements.js.map +1 -1
  305. package/src/lib/plugin-manager/plugin-host-collections.d.ts +17 -0
  306. package/src/lib/plugin-manager/plugin-host-collections.js +6 -0
  307. package/src/lib/plugin-manager/plugin-host-collections.js.map +1 -1
  308. package/src/lib/plugin-manager/plugin-host-resources.d.ts +133 -0
  309. package/src/lib/plugin-manager/plugin-host-resources.js +52 -0
  310. package/src/lib/plugin-manager/plugin-host-resources.js.map +1 -0
  311. package/src/lib/plugin-manager/plugin-membership-detach.js +1 -1
  312. package/src/lib/plugin-manager/plugin-membership-detach.js.map +1 -1
  313. package/src/lib/plugin-manager/plugin-org-erasure.d.ts +28 -2
  314. package/src/lib/plugin-manager/plugin-org-erasure.js +61 -2
  315. package/src/lib/plugin-manager/plugin-org-erasure.js.map +1 -1
  316. package/src/lib/plugin-manager/plugin-plan-entitlements.d.ts +123 -0
  317. package/src/lib/plugin-manager/plugin-plan-entitlements.js +101 -0
  318. package/src/lib/plugin-manager/plugin-plan-entitlements.js.map +1 -0
  319. package/src/lib/plugin-manager/plugin-record-email-state.d.ts +69 -0
  320. package/src/lib/plugin-manager/plugin-record-email-state.js +32 -0
  321. package/src/lib/plugin-manager/plugin-record-email-state.js.map +1 -1
  322. package/src/lib/plugin-manager/plugin-record-index.d.ts +95 -0
  323. package/src/lib/plugin-manager/plugin-record-index.js +51 -0
  324. package/src/lib/plugin-manager/plugin-record-index.js.map +1 -0
  325. package/src/lib/plugin-manager/plugin-record-lists.d.ts +115 -0
  326. package/src/lib/plugin-manager/plugin-record-lists.js +75 -0
  327. package/src/lib/plugin-manager/plugin-record-lists.js.map +1 -0
  328. package/src/lib/plugin-manager/plugin-record-timeline.d.ts +42 -8
  329. package/src/lib/plugin-manager/plugin-record-timeline.js.map +1 -1
  330. package/src/lib/plugin-manager/plugin-record-written.d.ts +58 -0
  331. package/src/lib/plugin-manager/plugin-record-written.js +42 -0
  332. package/src/lib/plugin-manager/plugin-record-written.js.map +1 -0
  333. package/src/lib/plugin-manager/plugin-revenue-sources.d.ts +213 -0
  334. package/src/lib/plugin-manager/plugin-revenue-sources.js +194 -0
  335. package/src/lib/plugin-manager/plugin-revenue-sources.js.map +1 -0
  336. package/src/lib/plugin-manager/plugin-site-beacons.d.ts +71 -0
  337. package/src/lib/plugin-manager/plugin-site-beacons.js +54 -0
  338. package/src/lib/plugin-manager/plugin-site-beacons.js.map +1 -0
  339. package/src/lib/plugin-manager/plugin-site-bundle.d.ts +145 -0
  340. package/src/lib/plugin-manager/plugin-site-bundle.js +78 -0
  341. package/src/lib/plugin-manager/plugin-site-bundle.js.map +1 -0
  342. package/src/lib/plugin-manager/plugin-site-cache.d.ts +12 -0
  343. package/src/lib/plugin-manager/plugin-site-cache.js.map +1 -1
  344. package/src/lib/plugin-manager/plugin-site-export.d.ts +81 -0
  345. package/src/lib/plugin-manager/plugin-site-export.js +40 -0
  346. package/src/lib/plugin-manager/plugin-site-export.js.map +1 -0
  347. package/src/lib/plugin-manager/plugin-sitemap-sections.d.ts +88 -0
  348. package/src/lib/plugin-manager/plugin-sitemap-sections.js +29 -0
  349. package/src/lib/plugin-manager/plugin-sitemap-sections.js.map +1 -0
  350. package/src/lib/plugin-manager/plugin-subscription-topics.generated.d.ts +11 -0
  351. package/src/lib/plugin-manager/plugin-subscription-topics.generated.js +41 -0
  352. package/src/lib/plugin-manager/plugin-subscription-topics.generated.js.map +1 -0
  353. package/src/lib/plugin-manager/plugin-tax-profile.d.ts +20 -4
  354. package/src/lib/plugin-manager/plugin-tax-profile.js.map +1 -1
  355. package/src/lib/plugin-manager/plugin-tax-return-sources.d.ts +255 -0
  356. package/src/lib/plugin-manager/plugin-tax-return-sources.js +191 -0
  357. package/src/lib/plugin-manager/plugin-tax-return-sources.js.map +1 -0
  358. package/src/lib/plugin-manager/plugin-template-sources.d.ts +75 -0
  359. package/src/lib/plugin-manager/plugin-template-sources.js +37 -0
  360. package/src/lib/plugin-manager/plugin-template-sources.js.map +1 -0
  361. package/src/lib/plugin-manager/plugin-usage-axes.d.ts +319 -0
  362. package/src/lib/plugin-manager/plugin-usage-axes.js +186 -0
  363. package/src/lib/plugin-manager/plugin-usage-axes.js.map +1 -0
  364. package/src/lib/plugin-manager/plugin-usage-meters.d.ts +108 -0
  365. package/src/lib/plugin-manager/plugin-usage-meters.js +105 -0
  366. package/src/lib/plugin-manager/plugin-usage-meters.js.map +1 -0
  367. package/src/lib/plugin-manager/plugin-zones.d.ts +4 -5
  368. package/src/lib/plugin-manager/plugin-zones.js.map +1 -1
  369. package/src/lib/plugin-manager/realm-host-aglyn.generated.js +2 -0
  370. package/src/lib/plugin-manager/realm-host-aglyn.generated.js.map +1 -1
  371. package/src/lib/plugin-manager/record-captured-contact.d.ts +1 -14
  372. package/src/lib/plugin-manager/record-captured-contact.js +10 -32
  373. package/src/lib/plugin-manager/record-captured-contact.js.map +1 -1
  374. package/src/lib/plugin-manager/repeat-rows.d.ts +124 -0
  375. package/src/lib/plugin-manager/repeat-rows.js +108 -0
  376. package/src/lib/plugin-manager/repeat-rows.js.map +1 -0
  377. package/src/lib/plugin-manager/submission-record-target.d.ts +144 -0
  378. package/src/lib/plugin-manager/submission-record-target.js +125 -0
  379. package/src/lib/plugin-manager/submission-record-target.js.map +1 -0
  380. package/src/lib/plugin-manager/usage-alert-contributors.d.ts +76 -6
  381. package/src/lib/plugin-manager/usage-alert-contributors.js +23 -10
  382. package/src/lib/plugin-manager/usage-alert-contributors.js.map +1 -1
  383. package/src/lib/plugin-manager/video-embed-provider.d.ts +108 -0
  384. package/src/lib/plugin-manager/video-embed-provider.js +165 -0
  385. package/src/lib/plugin-manager/video-embed-provider.js.map +1 -0
  386. package/src/lib/types/nodes.d.ts +2 -2
  387. package/src/lib/types/nodes.js.map +1 -1
  388. package/src/lib/app-utils/assist-credits.d.ts +0 -482
  389. package/src/lib/app-utils/assist-credits.js +0 -509
  390. package/src/lib/app-utils/assist-credits.js.map +0 -1
  391. package/src/lib/app-utils/campaign-attribution.js.map +0 -1
  392. package/src/lib/app-utils/campaign-forwarding.js.map +0 -1
  393. package/src/lib/app-utils/campaign-membership.d.ts +0 -121
  394. package/src/lib/app-utils/campaign-membership.js +0 -189
  395. package/src/lib/app-utils/campaign-membership.js.map +0 -1
  396. package/src/lib/app-utils/campaign-touch.js.map +0 -1
  397. package/src/lib/app-utils/console-record-links.d.ts +0 -163
  398. package/src/lib/app-utils/console-record-links.js +0 -180
  399. package/src/lib/app-utils/console-record-links.js.map +0 -1
  400. package/src/lib/app-utils/contact-holder.d.ts +0 -68
  401. package/src/lib/app-utils/contact-holder.js +0 -129
  402. package/src/lib/app-utils/contact-holder.js.map +0 -1
  403. package/src/lib/app-utils/contact-merge.d.ts +0 -136
  404. package/src/lib/app-utils/contact-merge.js +0 -412
  405. package/src/lib/app-utils/contact-merge.js.map +0 -1
  406. package/src/lib/app-utils/crm-booking.d.ts +0 -75
  407. package/src/lib/app-utils/crm-booking.js +0 -133
  408. package/src/lib/app-utils/crm-booking.js.map +0 -1
  409. package/src/lib/app-utils/crm-csv.d.ts +0 -239
  410. package/src/lib/app-utils/crm-csv.js +0 -467
  411. package/src/lib/app-utils/crm-csv.js.map +0 -1
  412. package/src/lib/app-utils/crm-digest.d.ts +0 -185
  413. package/src/lib/app-utils/crm-digest.js +0 -272
  414. package/src/lib/app-utils/crm-digest.js.map +0 -1
  415. package/src/lib/app-utils/crm-inbound.d.ts +0 -245
  416. package/src/lib/app-utils/crm-inbound.js +0 -407
  417. package/src/lib/app-utils/crm-inbound.js.map +0 -1
  418. package/src/lib/app-utils/crm-reports.d.ts +0 -479
  419. package/src/lib/app-utils/crm-reports.js +0 -680
  420. package/src/lib/app-utils/crm-reports.js.map +0 -1
  421. package/src/lib/app-utils/dataset-csv.js.map +0 -1
  422. package/src/lib/app-utils/dataset-query.d.ts +0 -57
  423. package/src/lib/app-utils/dataset-query.js.map +0 -1
  424. package/src/lib/app-utils/email-topics.js.map +0 -1
  425. package/src/lib/app-utils/form-dataset-binding.d.ts +0 -50
  426. package/src/lib/app-utils/form-dataset-binding.js +0 -74
  427. package/src/lib/app-utils/form-dataset-binding.js.map +0 -1
  428. package/src/lib/app-utils/list-assignment-policy.js.map +0 -1
  429. package/src/lib/app-utils/list-import.d.ts +0 -158
  430. package/src/lib/app-utils/list-import.js +0 -332
  431. package/src/lib/app-utils/list-import.js.map +0 -1
  432. package/src/lib/app-utils/marketplace-listing-visibility.d.ts +0 -122
  433. package/src/lib/app-utils/marketplace-listing-visibility.js +0 -147
  434. package/src/lib/app-utils/marketplace-listing-visibility.js.map +0 -1
  435. package/src/lib/app-utils/marketplace-overrides.js.map +0 -1
  436. package/src/lib/app-utils/marketplace-provenance.js.map +0 -1
  437. package/src/lib/app-utils/marketplace-theme.js.map +0 -1
  438. package/src/lib/app-utils/marketplace-update-state.d.ts +0 -119
  439. package/src/lib/app-utils/marketplace-update-state.js +0 -132
  440. package/src/lib/app-utils/marketplace-update-state.js.map +0 -1
  441. package/src/lib/app-utils/publisher-agreement.d.ts +0 -289
  442. package/src/lib/app-utils/publisher-agreement.js +0 -321
  443. package/src/lib/app-utils/publisher-agreement.js.map +0 -1
  444. package/src/lib/app-utils/wistia-embed.d.ts +0 -104
  445. package/src/lib/app-utils/wistia-embed.js +0 -138
  446. package/src/lib/app-utils/wistia-embed.js.map +0 -1
  447. package/src/lib/app-utils/workflows.d.ts +0 -136
  448. package/src/lib/app-utils/workflows.js +0 -346
  449. package/src/lib/app-utils/workflows.js.map +0 -1
  450. package/src/lib/plugin-manager/commerce-zone-props.d.ts +0 -172
  451. package/src/lib/plugin-manager/commerce-zone-props.js +0 -31
  452. package/src/lib/plugin-manager/commerce-zone-props.js.map +0 -1
  453. package/src/lib/plugin-manager/plugin-metered-lines.d.ts +0 -97
  454. package/src/lib/plugin-manager/plugin-metered-lines.js +0 -123
  455. package/src/lib/plugin-manager/plugin-metered-lines.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/stale-build-error.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 * THE TAB THAT WAS OPEN ACROSS A DEPLOY (AGL-3279).\n *\n * Every build names its chunks by content hash and the previous build's are\n * not kept, so a tab loaded before a release asks for a file the origin no\n * longer serves the moment it navigates or opens a lazy route. The browser\n * rejects the import, the boundary above catches it, and the visitor is\n * shown a crash page with a **Try again** button that cannot possibly work:\n * `reset()` re-renders the same tree, which requests the same missing chunk.\n * It reported once in the 48h to 2026-09-23, on `aglyn.com`.\n *\n * A reload fixes it completely, because the fresh document names the chunks\n * the deploy actually shipped. What matters is that it may never LOOP: a\n * genuinely broken deploy would otherwise reload every visitor forever, and\n * an error reporter's first rule — never become the outage — applies twice\n * over to something that reloads pages.\n *\n * So the recovery is RATE-BOUND, held in session storage: at most one\n * reload per tab per {@link RECOVERY_INTERVAL_MS}, and a browser that\n * refuses storage gets none at all rather than an unbounded one. A second\n * failure inside that window renders the crash page and stays there, which\n * is the honest outcome — at that point the build really is broken and\n * reloading is not the answer.\n *\n * An interval rather than a once-ever mark, because a console tab lives for\n * days and this repo ships several times a day: a once-ever mark would\n * spend the tab's only recovery on the first deploy it survived and leave\n * it stranded on the third. Long enough that no plausible loop is\n * comfortable; short enough that the next release is covered.\n *\n * A module of its own, not a function in `error-beacon.ts`, for the reason\n * `redispatch-caught-error.ts` gives: an error boundary's chunk is\n * downloaded by every visitor, and importing one name off the beacon would\n * drag its whole installer in with it.\n */\n\nconst RELOADED_KEY = 'aglyn.staleBuildReloaded'\n\n/** How long one recovery suppresses the next, in this tab. */\nexport const RECOVERY_INTERVAL_MS = 30 * 60 * 1_000\n\n/**\n * Messages the browsers spell differently for one event — the module the\n * document names is not there.\n *\n * Matched on the MESSAGE as well as the name because only webpack's own\n * failure carries `name === 'ChunkLoadError'`; a native dynamic import that\n * 404s rejects with a plain `TypeError` whose wording is the browser's.\n */\nconst STALE_BUILD_MESSAGE =\n /Loading chunk .* failed|Failed to load chunk|Loading CSS chunk .* failed|error loading dynamically imported module|Importing a module script failed|Failed to fetch dynamically imported module/i\n\n/** Was this thrown because the document names a chunk the origin dropped? */\nexport function isStaleBuildError(error: unknown): boolean {\n if (!error) return false\n const thrown = error as { name?: unknown; message?: unknown }\n if (String(thrown.name ?? '') === 'ChunkLoadError') return true\n return STALE_BUILD_MESSAGE.test(String(thrown.message ?? ''))\n}\n\n/**\n * Should this tab reload itself for a stale build — and, if so, SPEND the\n * recovery, so asking twice cannot answer yes twice.\n *\n * The decision and the reload are separated on purpose. The decision is\n * the part with the rate limit in it, and the part that must be provable;\n * the reload is one line at the call site, which the boundary writes where\n * a reader can see it happen.\n *\n * Every storage path is guarded: an accessor may throw in a private window\n * or with site data blocked, and a failure to RECOVER from an error must\n * never be a second error.\n */\nexport function shouldReloadForStaleBuild(error: unknown): boolean {\n if (typeof window === 'undefined') return false\n if (!isStaleBuildError(error)) return false\n const now = Date.now()\n try {\n const last = Number(window.sessionStorage.getItem(RELOADED_KEY) ?? '')\n // An unreadable mark is not a recent one: a stored value we cannot\n // parse must not suppress the recovery forever.\n if (Number.isFinite(last) && last > 0 && now - last < RECOVERY_INTERVAL_MS) {\n return false\n }\n window.sessionStorage.setItem(RELOADED_KEY, String(now))\n } catch {\n // No storage is no rate limit, and an unbounded reload is worse than a\n // crash page: take the crash page.\n return false\n }\n return true\n}\n"],"names":["RELOADED_KEY","RECOVERY_INTERVAL_MS","STALE_BUILD_MESSAGE","isStaleBuildError","error","thrown","String","name","test","message","shouldReloadForStaleBuild","window","now","Date","last","Number","sessionStorage","getItem","isFinite","setItem"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCC,GAED,MAAMA,eAAe;AAErB,4DAA4D,GAC5D,OAAO,MAAMC,uBAAuB,KAAK,KAAK,KAAK;AAEnD;;;;;;;CAOC,GACD,MAAMC,sBACJ;AAEF,2EAA2E,GAC3E,OAAO,SAASC,kBAAkBC,KAAc;QAGnCC,cAC4BA;IAHvC,IAAI,CAACD,OAAO,OAAO;IACnB,MAAMC,SAASD;IACf,IAAIE,QAAOD,eAAAA,OAAOE,IAAI,YAAXF,eAAe,QAAQ,kBAAkB,OAAO;IAC3D,OAAOH,oBAAoBM,IAAI,CAACF,QAAOD,kBAAAA,OAAOI,OAAO,YAAdJ,kBAAkB;AAC3D;AAEA;;;;;;;;;;;;CAYC,GACD,OAAO,SAASK,0BAA0BN,KAAc;IACtD,IAAI,OAAOO,WAAW,aAAa,OAAO;IAC1C,IAAI,CAACR,kBAAkBC,QAAQ,OAAO;IACtC,MAAMQ,MAAMC,KAAKD,GAAG;IACpB,IAAI;YACkBD;QAApB,MAAMG,OAAOC,QAAOJ,iCAAAA,OAAOK,cAAc,CAACC,OAAO,CAACjB,yBAA9BW,iCAA+C;QACnE,mEAAmE;QACnE,gDAAgD;QAChD,IAAII,OAAOG,QAAQ,CAACJ,SAASA,OAAO,KAAKF,MAAME,OAAOb,sBAAsB;YAC1E,OAAO;QACT;QACAU,OAAOK,cAAc,CAACG,OAAO,CAACnB,cAAcM,OAAOM;IACrD,EAAE,eAAM;QACN,uEAAuE;QACvE,mCAAmC;QACnC,OAAO;IACT;IACA,OAAO;AACT"}
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/stale-build-error.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 * THE TAB THAT WAS OPEN ACROSS A DEPLOY (AGL-3279).\n *\n * Every build names its chunks by content hash and the previous build's are\n * not kept, so a tab loaded before a release asks for a file the origin no\n * longer serves the moment it navigates or opens a lazy route. The browser\n * rejects the import, the boundary above catches it, and the visitor is\n * shown a crash page with a **Try again** button that cannot possibly work:\n * `reset()` re-renders the same tree, which requests the same missing chunk.\n * It reported once in the 48h to 2026-09-23, on `aglyn.com`.\n *\n * A reload fixes it completely, because the fresh document names the chunks\n * the deploy actually shipped. What matters is that it may never LOOP: a\n * genuinely broken deploy would otherwise reload every visitor forever, and\n * an error reporter's first rule — never become the outage — applies twice\n * over to something that reloads pages.\n *\n * So the recovery is RATE-BOUND, held in session storage: at most one\n * reload per tab per {@link RECOVERY_INTERVAL_MS}, and a browser that\n * refuses storage gets none at all rather than an unbounded one. A second\n * failure inside that window renders the crash page and stays there, which\n * is the honest outcome — at that point the build really is broken and\n * reloading is not the answer.\n *\n * An interval rather than a once-ever mark, because a console tab lives for\n * days and this repo ships several times a day: a once-ever mark would\n * spend the tab's only recovery on the first deploy it survived and leave\n * it stranded on the third. Long enough that no plausible loop is\n * comfortable; short enough that the next release is covered.\n *\n * A module of its own, not a function in `error-beacon.ts`, for the reason\n * `redispatch-caught-error.ts` gives: an error boundary's chunk is\n * downloaded by every visitor, and importing one name off the beacon would\n * drag its whole installer in with it.\n */\n\nimport { redispatchCaughtError } from './redispatch-caught-error'\n\nconst RELOADED_KEY = 'aglyn.staleBuildReloaded'\n\n/** How long one recovery suppresses the next, in this tab. */\nexport const RECOVERY_INTERVAL_MS = 30 * 60 * 1_000\n\n/**\n * Messages the browsers spell differently for one event — the module the\n * document names is not there.\n *\n * Matched on the MESSAGE as well as the name because only webpack's own\n * failure carries `name === 'ChunkLoadError'`; a native dynamic import that\n * 404s rejects with a plain `TypeError` whose wording is the browser's.\n */\nconst STALE_BUILD_MESSAGE =\n /Loading chunk .* failed|Failed to load chunk|Loading CSS chunk .* failed|error loading dynamically imported module|Importing a module script failed|Failed to fetch dynamically imported module/i\n\n/** Was this thrown because the document names a chunk the origin dropped? */\nexport function isStaleBuildError(error: unknown): boolean {\n if (!error) return false\n const thrown = error as { name?: unknown; message?: unknown }\n if (String(thrown.name ?? '') === 'ChunkLoadError') return true\n return STALE_BUILD_MESSAGE.test(String(thrown.message ?? ''))\n}\n\n/**\n * Should this tab reload itself for a stale build — and, if so, SPEND the\n * recovery, so asking twice cannot answer yes twice.\n *\n * The decision and the reload are separated on purpose. The decision is\n * the part with the rate limit in it, and the part that must be provable;\n * the reload is one line at the call site, which the boundary writes where\n * a reader can see it happen.\n *\n * Every storage path is guarded: an accessor may throw in a private window\n * or with site data blocked, and a failure to RECOVER from an error must\n * never be a second error.\n */\nexport function shouldReloadForStaleBuild(error: unknown): boolean {\n if (typeof window === 'undefined') return false\n if (!isStaleBuildError(error)) return false\n const now = Date.now()\n try {\n const last = Number(window.sessionStorage.getItem(RELOADED_KEY) ?? '')\n // An unreadable mark is not a recent one: a stored value we cannot\n // parse must not suppress the recovery forever.\n if (Number.isFinite(last) && last > 0 && now - last < RECOVERY_INTERVAL_MS) {\n return false\n }\n window.sessionStorage.setItem(RELOADED_KEY, String(now))\n } catch {\n // No storage is no rate limit, and an unbounded reload is worse than a\n // crash page: take the crash page.\n return false\n }\n return true\n}\n\n/**\n * Withdraws the reload {@link recoverStaleBuildRejection} scheduled; true\n * when there was one.\n */\nlet cancelPending: (() => void) | null = null\n\nfunction cancelPendingReload(): boolean {\n if (!cancelPending) return false\n cancelPending()\n return true\n}\n\n/** Re-load the document; a refused reload leaves the tab where it was. */\nfunction reloadDocument(): void {\n try {\n window.location.reload()\n } catch {\n // Nothing to do: the crash page is already on screen.\n }\n}\n\n/**\n * What EVERY error boundary does with what it caught: reload once for a stale\n * build, and otherwise hand the error to the beacon. `global-error.tsx`\n * included: it catches what the root layout threw, and a stale tab's root\n * layout asks for its chunks like any other segment.\n *\n * One function so that no boundary can run half of it. The ones that matter\n * most are not the root boundaries but the two below them on a published\n * site — `PageBodyBoundary` around the page body and\n * `[host]/[scheme]/error.tsx` around the page — because a site plugin's chunk\n * is loaded by the page body, so those are what a stale tab reaches. A\n * boundary there that only re-dispatched would leave an empty body, or a\n * **Try again** that cannot work, and report a `ChunkLoadError` for it.\n *\n * A reloaded error is NOT reported; the fresh document is the fix, and the\n * tab it happened in is gone. What still reaches the beacon is the failure a\n * reload did not cure — a second one inside the recovery window, or a\n * browser that refuses storage — which the beacon labels `chunk-load`.\n *\n * `reload` is a parameter only so a spec can observe it: jsdom refuses to let\n * one redefine `location.reload`.\n *\n * @returns whether the tab is reloading.\n */\nexport function recoverStaleBuildOrReport(\n error: unknown,\n reload: () => void = reloadDocument,\n): boolean {\n // A rejection already spent this tab's recovery on a reload that waits for\n // the tab to be hidden. The page has crashed now, so there is nothing left\n // on screen to protect: take that reload immediately.\n if (isStaleBuildError(error) && cancelPendingReload()) {\n reload()\n return true\n }\n if (shouldReloadForStaleBuild(error)) {\n reload()\n return true\n }\n redispatchCaughtError(error)\n return false\n}\n\n/**\n * THE SAME TAB, WHEN NO BOUNDARY SAW IT (AGL-3423).\n *\n * An `import()` that nothing awaits inside a render, a click handler's lazy\n * module or an effect's, rejects past every boundary and reaches `window` as\n * an `unhandledrejection`. The beacon labels it `chunk-load`, and until now\n * that was all: the tab stayed on the old build with one feature silently\n * dead.\n *\n * The recovery differs from a boundary's in WHEN it reloads. A boundary\n * reloads a page that has already crashed. Here the page is still up and\n * may hold work the visitor has not saved: a Besigner edit, a half-typed\n * form. So the reload waits until the tab is hidden, the moment AGL-3280's\n * cross-pool recovery also uses, and runs at once only when the tab is\n * already hidden. The visitor comes back to the build that is deployed.\n *\n * It spends the same rate-bound mark as a boundary, so it can never loop,\n * and it absorbs every later stale-build rejection in the tab while the\n * reload is pending: they are the same stale document, not new failures.\n * A boundary that catches one meanwhile takes the pending reload at once.\n *\n * @returns whether the rejection was recovered, and so should not be\n * reported. False for any other rejection, and for a stale build whose\n * recovery is spent, which the beacon still reports as `chunk-load`.\n */\nexport function recoverStaleBuildRejection(\n reason: unknown,\n reload: () => void = reloadDocument,\n): boolean {\n if (typeof document === 'undefined' || !isStaleBuildError(reason)) return false\n if (cancelPending) return true\n if (!shouldReloadForStaleBuild(reason)) return false\n if (document.visibilityState === 'hidden') {\n reload()\n return true\n }\n const onVisibilityChange = () => {\n if (document.visibilityState !== 'hidden') return\n cancelPendingReload()\n reload()\n }\n cancelPending = () => {\n document.removeEventListener('visibilitychange', onVisibilityChange)\n cancelPending = null\n }\n document.addEventListener('visibilitychange', onVisibilityChange)\n return true\n}\n"],"names":["redispatchCaughtError","RELOADED_KEY","RECOVERY_INTERVAL_MS","STALE_BUILD_MESSAGE","isStaleBuildError","error","thrown","String","name","test","message","shouldReloadForStaleBuild","window","now","Date","last","Number","sessionStorage","getItem","isFinite","setItem","cancelPending","cancelPendingReload","reloadDocument","location","reload","recoverStaleBuildOrReport","recoverStaleBuildRejection","reason","document","visibilityState","onVisibilityChange","removeEventListener","addEventListener"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkCC,GAED,SAASA,qBAAqB,QAAQ,+BAA2B;AAEjE,MAAMC,eAAe;AAErB,4DAA4D,GAC5D,OAAO,MAAMC,uBAAuB,KAAK,KAAK,KAAK;AAEnD;;;;;;;CAOC,GACD,MAAMC,sBACJ;AAEF,2EAA2E,GAC3E,OAAO,SAASC,kBAAkBC,KAAc;QAGnCC,cAC4BA;IAHvC,IAAI,CAACD,OAAO,OAAO;IACnB,MAAMC,SAASD;IACf,IAAIE,QAAOD,eAAAA,OAAOE,IAAI,YAAXF,eAAe,QAAQ,kBAAkB,OAAO;IAC3D,OAAOH,oBAAoBM,IAAI,CAACF,QAAOD,kBAAAA,OAAOI,OAAO,YAAdJ,kBAAkB;AAC3D;AAEA;;;;;;;;;;;;CAYC,GACD,OAAO,SAASK,0BAA0BN,KAAc;IACtD,IAAI,OAAOO,WAAW,aAAa,OAAO;IAC1C,IAAI,CAACR,kBAAkBC,QAAQ,OAAO;IACtC,MAAMQ,MAAMC,KAAKD,GAAG;IACpB,IAAI;YACkBD;QAApB,MAAMG,OAAOC,QAAOJ,iCAAAA,OAAOK,cAAc,CAACC,OAAO,CAACjB,yBAA9BW,iCAA+C;QACnE,mEAAmE;QACnE,gDAAgD;QAChD,IAAII,OAAOG,QAAQ,CAACJ,SAASA,OAAO,KAAKF,MAAME,OAAOb,sBAAsB;YAC1E,OAAO;QACT;QACAU,OAAOK,cAAc,CAACG,OAAO,CAACnB,cAAcM,OAAOM;IACrD,EAAE,eAAM;QACN,uEAAuE;QACvE,mCAAmC;QACnC,OAAO;IACT;IACA,OAAO;AACT;AAEA;;;CAGC,GACD,IAAIQ,gBAAqC;AAEzC,SAASC;IACP,IAAI,CAACD,eAAe,OAAO;IAC3BA;IACA,OAAO;AACT;AAEA,wEAAwE,GACxE,SAASE;IACP,IAAI;QACFX,OAAOY,QAAQ,CAACC,MAAM;IACxB,EAAE,eAAM;IACN,sDAAsD;IACxD;AACF;AAEA;;;;;;;;;;;;;;;;;;;;;;;CAuBC,GACD,OAAO,SAASC,0BACdrB,KAAc,EACdoB,SAAqBF,cAAc;IAEnC,2EAA2E;IAC3E,2EAA2E;IAC3E,sDAAsD;IACtD,IAAInB,kBAAkBC,UAAUiB,uBAAuB;QACrDG;QACA,OAAO;IACT;IACA,IAAId,0BAA0BN,QAAQ;QACpCoB;QACA,OAAO;IACT;IACAzB,sBAAsBK;IACtB,OAAO;AACT;AAEA;;;;;;;;;;;;;;;;;;;;;;;;CAwBC,GACD,OAAO,SAASsB,2BACdC,MAAe,EACfH,SAAqBF,cAAc;IAEnC,IAAI,OAAOM,aAAa,eAAe,CAACzB,kBAAkBwB,SAAS,OAAO;IAC1E,IAAIP,eAAe,OAAO;IAC1B,IAAI,CAACV,0BAA0BiB,SAAS,OAAO;IAC/C,IAAIC,SAASC,eAAe,KAAK,UAAU;QACzCL;QACA,OAAO;IACT;IACA,MAAMM,qBAAqB;QACzB,IAAIF,SAASC,eAAe,KAAK,UAAU;QAC3CR;QACAG;IACF;IACAJ,gBAAgB;QACdQ,SAASG,mBAAmB,CAAC,oBAAoBD;QACjDV,gBAAgB;IAClB;IACAQ,SAASI,gBAAgB,CAAC,oBAAoBF;IAC9C,OAAO;AACT"}
@@ -0,0 +1,137 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ /**
18
+ * What a starter site is, and the kit its pages are built with (AGL-687,
19
+ * AGL-3080).
20
+ *
21
+ * A starter is a bundle of page templates the template gallery offers and
22
+ * the seed route copies into a site's library on first use. The platform's
23
+ * own starters live in `starter-templates.ts`; a plugin whose elements a
24
+ * starter is built around declares its own, built with this same kit, and
25
+ * the manifest generator compiles them into
26
+ * `plugin-starter-templates.generated.ts`.
27
+ *
28
+ * Leaf imports only, for the reason `starter-templates.ts` states: this is
29
+ * read from the console's client gallery, its seed route and a plugin's
30
+ * server alike, so it imports a canvas constant and nothing that drags in
31
+ * either barrel.
32
+ *
33
+ * PERSISTED IDENTIFIERS: `StarterTemplate.id`, `StarterTemplateScreen.key`
34
+ * and every node id a starter builds appear in stored documents (seeded
35
+ * template doc ids are derived from the first two). They must never be
36
+ * renamed.
37
+ */
38
+ export interface StarterTemplateScreen {
39
+ /**
40
+ * Stable, starter-local key. Part of the seeded document id, so it is a
41
+ * persisted identifier — never rename one.
42
+ */
43
+ key: string;
44
+ displayName: string;
45
+ description?: string;
46
+ /**
47
+ * Routing-map slug. `SCREEN_ROOT_PATH` (`'/'`) asks for the site root — the
48
+ * home page — and anything else is a single path segment.
49
+ *
50
+ * It used to be `''` that meant home, which no normalizer agreed with: both
51
+ * the apply path and the seed below read an empty string as "no address
52
+ * authored" and derived one from the display name, so the shop starters'
53
+ * home page was published at `/home` and the site 404'd at its own URL
54
+ * (AGL-1575).
55
+ */
56
+ slug: string;
57
+ seo?: {
58
+ title?: string;
59
+ description?: string;
60
+ };
61
+ /** Flat node map including the canvas root. */
62
+ nodes: Record<string, any>;
63
+ }
64
+ export interface StarterTemplate {
65
+ id: string;
66
+ displayName: string;
67
+ description: string;
68
+ category: string;
69
+ screens: StarterTemplateScreen[];
70
+ }
71
+ /** A materialized starter template document, keyed by its deterministic id. */
72
+ export type StarterNodeSpec = {
73
+ id: string;
74
+ componentId: string;
75
+ /** Bundle owning the component; defaults to 'mui' (AGL-300). */
76
+ pluginId?: string;
77
+ props?: Record<string, unknown>;
78
+ /**
79
+ * Node-level styles — a SIBLING of props, never `props.sx` (AGL-1346).
80
+ *
81
+ * Both records render (`Leaf` composes `(sx, props.sx, node.sx)`, later
82
+ * wins), but the Styles panel edits `node.sx`. A starter that seeded its
83
+ * styling into `props.sx` handed the author a document full of values
84
+ * the panel could show but no click could change or clear.
85
+ */
86
+ sx?: Record<string, unknown>;
87
+ children?: StarterNodeSpec[];
88
+ };
89
+ /** Builds the flat, persisted node map from a nested spec. */
90
+ export declare function buildStarterNodes(children: StarterNodeSpec[]): Record<string, any>;
91
+ /** One line of a starter's copy: a `muiTypography` of the given variant. */
92
+ export declare const starterText: (id: string, variant: string, children: string, extra?: Record<string, unknown>) => StarterNodeSpec;
93
+ /**
94
+ * The stock widths a starter band may be (AGL-1932, AGL-1298).
95
+ *
96
+ * Three cases, and only three, because the standard has three. There is no
97
+ * pixel case: `1328` is a CONTENT width, not a breakpoint, and the ban on
98
+ * bespoke numbers is the half of AGL-1298 these templates used to violate
99
+ * four times over.
100
+ */
101
+ export type StarterSectionWidth = 'md' | 'lg' | 'xl';
102
+ /**
103
+ * One page band: a `Container` at a stock width, carrying the band's own
104
+ * vertical rhythm (AGL-1932).
105
+ *
106
+ * The layout standard (AGL-1298): every section is a Container. Full-bleed is
107
+ * the Container's own full-width attribute, never the absence of a Container,
108
+ * and anything else is one of three stock widths. A template that seeds no
109
+ * Container hands every customer a site that starts outside the standard.
110
+ *
111
+ * How the three widths are chosen here, stated so the next audit does not
112
+ * have to guess:
113
+ *
114
+ * - `xl` — a marketing band: hero, feature row, product grid, gallery. The
115
+ * default width, and what an unremarkable page should be.
116
+ * - `lg` — the deliberate middle case: wide but text-led and interactive.
117
+ * Cart and account are the honest instances, not decoration.
118
+ * - `md` — long-form prose and narrow form columns, on READING grounds: at
119
+ * `xl` a paragraph runs 110–120 characters a line. This is the case the
120
+ * `Prose Container` preset exists for.
121
+ *
122
+ * Horizontal padding is the Container's own gutters, so bands no longer carry
123
+ * horizontal padding at all. Only the vertical rhythm rides here, which is
124
+ * rhythm rather than width.
125
+ *
126
+ * Written as the two longhands rather than MUI's `py` (AGL-2207/2208): the
127
+ * Styles panel's Padding control is named for the four sides, so a band
128
+ * seeded with `py` handed the customer a document whose padding the panel
129
+ * showed as empty and no click could clear.
130
+ */
131
+ export declare const starterSection: (id: string, maxWidth: StarterSectionWidth, verticalPadding: number, children: StarterNodeSpec[]) => StarterNodeSpec;
132
+ /**
133
+ * The hero band a starter page opens with: a headline, a tagline and a call
134
+ * to action, centered in an `xl` band. Its node ids are `prefix` plus fixed
135
+ * names, so a starter's prefix keeps them its own.
136
+ */
137
+ export declare const starterHeroSection: (prefix: string, headline: string, tagline: string) => StarterNodeSpec;
@@ -0,0 +1,129 @@
1
+ import { _ as _extends } from "@swc/helpers/_/_extends";
2
+ /**
3
+ * @license
4
+ * Copyright 2026 Aglyn LLC
5
+ *
6
+ * Licensed under the Apache License, Version 2.0 (the "License");
7
+ * you may not use this file except in compliance with the License.
8
+ * You may obtain a copy of the License at
9
+ *
10
+ * http://www.apache.org/licenses/LICENSE-2.0
11
+ *
12
+ * Unless required by applicable law or agreed to in writing, software
13
+ * distributed under the License is distributed on an "AS IS" BASIS,
14
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15
+ * See the License for the specific language governing permissions and
16
+ * limitations under the License.
17
+ */ import { CANVAS_ROOT_ELEMENT_ID } from "../foundation/constants/canvas.js";
18
+ /** Builds the flat, persisted node map from a nested spec. */ export function buildStarterNodes(children) {
19
+ const map = {
20
+ [CANVAS_ROOT_ELEMENT_ID]: {
21
+ $id: CANVAS_ROOT_ELEMENT_ID,
22
+ componentId: 'div',
23
+ nodes: children.map((child)=>child.id)
24
+ }
25
+ };
26
+ const walk = (spec, parentId)=>{
27
+ var _spec_pluginId, _spec_props, _spec_children, _spec_children1;
28
+ map[spec.id] = _extends({
29
+ $id: spec.id,
30
+ componentId: spec.componentId,
31
+ pluginId: (_spec_pluginId = spec.pluginId) != null ? _spec_pluginId : 'mui',
32
+ parentId,
33
+ props: (_spec_props = spec.props) != null ? _spec_props : {}
34
+ }, spec.sx ? {
35
+ sx: spec.sx
36
+ } : {}, {
37
+ nodes: ((_spec_children = spec.children) != null ? _spec_children : []).map((child)=>child.id)
38
+ });
39
+ for (const child of (_spec_children1 = spec.children) != null ? _spec_children1 : [])walk(child, spec.id);
40
+ };
41
+ for (const child of children)walk(child, CANVAS_ROOT_ELEMENT_ID);
42
+ return map;
43
+ }
44
+ /** One line of a starter's copy: a `muiTypography` of the given variant. */ export const starterText = (id, variant, children, extra)=>({
45
+ id,
46
+ componentId: 'muiTypography',
47
+ props: _extends({
48
+ variant,
49
+ children
50
+ }, extra)
51
+ });
52
+ /**
53
+ * One page band: a `Container` at a stock width, carrying the band's own
54
+ * vertical rhythm (AGL-1932).
55
+ *
56
+ * The layout standard (AGL-1298): every section is a Container. Full-bleed is
57
+ * the Container's own full-width attribute, never the absence of a Container,
58
+ * and anything else is one of three stock widths. A template that seeds no
59
+ * Container hands every customer a site that starts outside the standard.
60
+ *
61
+ * How the three widths are chosen here, stated so the next audit does not
62
+ * have to guess:
63
+ *
64
+ * - `xl` — a marketing band: hero, feature row, product grid, gallery. The
65
+ * default width, and what an unremarkable page should be.
66
+ * - `lg` — the deliberate middle case: wide but text-led and interactive.
67
+ * Cart and account are the honest instances, not decoration.
68
+ * - `md` — long-form prose and narrow form columns, on READING grounds: at
69
+ * `xl` a paragraph runs 110–120 characters a line. This is the case the
70
+ * `Prose Container` preset exists for.
71
+ *
72
+ * Horizontal padding is the Container's own gutters, so bands no longer carry
73
+ * horizontal padding at all. Only the vertical rhythm rides here, which is
74
+ * rhythm rather than width.
75
+ *
76
+ * Written as the two longhands rather than MUI's `py` (AGL-2207/2208): the
77
+ * Styles panel's Padding control is named for the four sides, so a band
78
+ * seeded with `py` handed the customer a document whose padding the panel
79
+ * showed as empty and no click could clear.
80
+ */ export const starterSection = (id, maxWidth, verticalPadding, children)=>({
81
+ id,
82
+ componentId: 'muiContainer',
83
+ props: {
84
+ maxWidth
85
+ },
86
+ sx: {
87
+ paddingTop: verticalPadding,
88
+ paddingBottom: verticalPadding
89
+ },
90
+ children
91
+ });
92
+ /**
93
+ * The hero band a starter page opens with: a headline, a tagline and a call
94
+ * to action, centered in an `xl` band. Its node ids are `prefix` plus fixed
95
+ * names, so a starter's prefix keeps them its own.
96
+ */ export const starterHeroSection = (prefix, headline, tagline)=>// The Container is a NEW node (`…heroSection`); `…hero` keeps its id and
97
+ // stays the Stack. Node ids here are persisted identifiers, so bands are
98
+ // wrapped rather than re-pointed.
99
+ starterSection(`${prefix}heroSection`, 'xl', 10, [
100
+ {
101
+ id: `${prefix}hero`,
102
+ componentId: 'muiStack',
103
+ props: {
104
+ spacing: 2
105
+ },
106
+ sx: {
107
+ alignItems: 'center'
108
+ },
109
+ children: [
110
+ starterText(`${prefix}heroTitle`, 'h2', headline, {
111
+ align: 'center'
112
+ }),
113
+ starterText(`${prefix}heroSub`, 'h6', tagline, {
114
+ align: 'center'
115
+ }),
116
+ {
117
+ id: `${prefix}heroCta`,
118
+ componentId: 'muiButton',
119
+ props: {
120
+ variant: 'contained',
121
+ size: 'large',
122
+ children: 'Get in touch'
123
+ }
124
+ }
125
+ ]
126
+ }
127
+ ]);
128
+
129
+ //# sourceMappingURL=starter-template-nodes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/starter-template-nodes.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 { CANVAS_ROOT_ELEMENT_ID } from '../foundation/constants/canvas'\n\n/**\n * What a starter site is, and the kit its pages are built with (AGL-687,\n * AGL-3080).\n *\n * A starter is a bundle of page templates the template gallery offers and\n * the seed route copies into a site's library on first use. The platform's\n * own starters live in `starter-templates.ts`; a plugin whose elements a\n * starter is built around declares its own, built with this same kit, and\n * the manifest generator compiles them into\n * `plugin-starter-templates.generated.ts`.\n *\n * Leaf imports only, for the reason `starter-templates.ts` states: this is\n * read from the console's client gallery, its seed route and a plugin's\n * server alike, so it imports a canvas constant and nothing that drags in\n * either barrel.\n *\n * PERSISTED IDENTIFIERS: `StarterTemplate.id`, `StarterTemplateScreen.key`\n * and every node id a starter builds appear in stored documents (seeded\n * template doc ids are derived from the first two). They must never be\n * renamed.\n */\nexport interface StarterTemplateScreen {\n /**\n * Stable, starter-local key. Part of the seeded document id, so it is a\n * persisted identifier — never rename one.\n */\n key: string\n displayName: string\n description?: string\n /**\n * Routing-map slug. `SCREEN_ROOT_PATH` (`'/'`) asks for the site root — the\n * home page — and anything else is a single path segment.\n *\n * It used to be `''` that meant home, which no normalizer agreed with: both\n * the apply path and the seed below read an empty string as \"no address\n * authored\" and derived one from the display name, so the shop starters'\n * home page was published at `/home` and the site 404'd at its own URL\n * (AGL-1575).\n */\n slug: string\n seo?: { title?: string; description?: string }\n /** Flat node map including the canvas root. */\n nodes: Record<string, any>\n}\n\nexport interface StarterTemplate {\n id: string\n displayName: string\n description: string\n category: string\n screens: StarterTemplateScreen[]\n}\n\n/** A materialized starter template document, keyed by its deterministic id. */\n\nexport type StarterNodeSpec = {\n id: string\n componentId: string\n /** Bundle owning the component; defaults to 'mui' (AGL-300). */\n pluginId?: string\n props?: Record<string, unknown>\n /**\n * Node-level styles — a SIBLING of props, never `props.sx` (AGL-1346).\n *\n * Both records render (`Leaf` composes `(sx, props.sx, node.sx)`, later\n * wins), but the Styles panel edits `node.sx`. A starter that seeded its\n * styling into `props.sx` handed the author a document full of values\n * the panel could show but no click could change or clear.\n */\n sx?: Record<string, unknown>\n children?: StarterNodeSpec[]\n}\n\n/** Builds the flat, persisted node map from a nested spec. */\nexport function buildStarterNodes(children: StarterNodeSpec[]): Record<string, any> {\n const map: Record<string, any> = {\n [CANVAS_ROOT_ELEMENT_ID]: {\n $id: CANVAS_ROOT_ELEMENT_ID,\n componentId: 'div',\n nodes: children.map((child) => child.id),\n },\n }\n const walk = (spec: StarterNodeSpec, parentId: string) => {\n map[spec.id] = {\n $id: spec.id,\n componentId: spec.componentId,\n pluginId: spec.pluginId ?? 'mui',\n parentId,\n props: spec.props ?? {},\n ...(spec.sx ? { sx: spec.sx } : {}),\n nodes: (spec.children ?? []).map((child) => child.id),\n }\n for (const child of spec.children ?? []) walk(child, spec.id)\n }\n for (const child of children) walk(child, CANVAS_ROOT_ELEMENT_ID)\n return map\n}\n\n/** One line of a starter's copy: a `muiTypography` of the given variant. */\nexport const starterText = (\n id: string,\n variant: string,\n children: string,\n extra?: Record<string, unknown>,\n): StarterNodeSpec => ({\n id,\n componentId: 'muiTypography',\n props: { variant, children, ...extra },\n})\n\n/**\n * The stock widths a starter band may be (AGL-1932, AGL-1298).\n *\n * Three cases, and only three, because the standard has three. There is no\n * pixel case: `1328` is a CONTENT width, not a breakpoint, and the ban on\n * bespoke numbers is the half of AGL-1298 these templates used to violate\n * four times over.\n */\nexport type StarterSectionWidth = 'md' | 'lg' | 'xl'\n\n/**\n * One page band: a `Container` at a stock width, carrying the band's own\n * vertical rhythm (AGL-1932).\n *\n * The layout standard (AGL-1298): every section is a Container. Full-bleed is\n * the Container's own full-width attribute, never the absence of a Container,\n * and anything else is one of three stock widths. A template that seeds no\n * Container hands every customer a site that starts outside the standard.\n *\n * How the three widths are chosen here, stated so the next audit does not\n * have to guess:\n *\n * - `xl` — a marketing band: hero, feature row, product grid, gallery. The\n * default width, and what an unremarkable page should be.\n * - `lg` — the deliberate middle case: wide but text-led and interactive.\n * Cart and account are the honest instances, not decoration.\n * - `md` — long-form prose and narrow form columns, on READING grounds: at\n * `xl` a paragraph runs 110–120 characters a line. This is the case the\n * `Prose Container` preset exists for.\n *\n * Horizontal padding is the Container's own gutters, so bands no longer carry\n * horizontal padding at all. Only the vertical rhythm rides here, which is\n * rhythm rather than width.\n *\n * Written as the two longhands rather than MUI's `py` (AGL-2207/2208): the\n * Styles panel's Padding control is named for the four sides, so a band\n * seeded with `py` handed the customer a document whose padding the panel\n * showed as empty and no click could clear.\n */\nexport const starterSection = (\n id: string,\n maxWidth: StarterSectionWidth,\n verticalPadding: number,\n children: StarterNodeSpec[],\n): StarterNodeSpec => ({\n id,\n componentId: 'muiContainer',\n props: { maxWidth },\n sx: { paddingTop: verticalPadding, paddingBottom: verticalPadding },\n children,\n})\n\n/**\n * The hero band a starter page opens with: a headline, a tagline and a call\n * to action, centered in an `xl` band. Its node ids are `prefix` plus fixed\n * names, so a starter's prefix keeps them its own.\n */\nexport const starterHeroSection = (\n prefix: string,\n headline: string,\n tagline: string,\n): StarterNodeSpec =>\n // The Container is a NEW node (`…heroSection`); `…hero` keeps its id and\n // stays the Stack. Node ids here are persisted identifiers, so bands are\n // wrapped rather than re-pointed.\n starterSection(`${prefix}heroSection`, 'xl', 10, [\n {\n id: `${prefix}hero`,\n componentId: 'muiStack',\n props: { spacing: 2 },\n sx: { alignItems: 'center' },\n children: [\n starterText(`${prefix}heroTitle`, 'h2', headline, { align: 'center' }),\n starterText(`${prefix}heroSub`, 'h6', tagline, { align: 'center' }),\n {\n id: `${prefix}heroCta`,\n componentId: 'muiButton',\n props: {\n variant: 'contained',\n size: 'large',\n children: 'Get in touch',\n },\n },\n ],\n },\n ])\n"],"names":["CANVAS_ROOT_ELEMENT_ID","buildStarterNodes","children","map","$id","componentId","nodes","child","id","walk","spec","parentId","pluginId","props","sx","starterText","variant","extra","starterSection","maxWidth","verticalPadding","paddingTop","paddingBottom","starterHeroSection","prefix","headline","tagline","spacing","alignItems","align","size"],"mappings":";AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,sBAAsB,QAAQ,oCAAgC;AA2EvE,4DAA4D,GAC5D,OAAO,SAASC,kBAAkBC,QAA2B;IAC3D,MAAMC,MAA2B;QAC/B,CAACH,uBAAuB,EAAE;YACxBI,KAAKJ;YACLK,aAAa;YACbC,OAAOJ,SAASC,GAAG,CAAC,CAACI,QAAUA,MAAMC,EAAE;QACzC;IACF;IACA,MAAMC,OAAO,CAACC,MAAuBC;YAIvBD,gBAEHA,aAECA,gBAEUA;QATpBP,GAAG,CAACO,KAAKF,EAAE,CAAC,GAAG;YACbJ,KAAKM,KAAKF,EAAE;YACZH,aAAaK,KAAKL,WAAW;YAC7BO,QAAQ,GAAEF,iBAAAA,KAAKE,QAAQ,YAAbF,iBAAiB;YAC3BC;YACAE,KAAK,GAAEH,cAAAA,KAAKG,KAAK,YAAVH,cAAc,CAAC;WAClBA,KAAKI,EAAE,GAAG;YAAEA,IAAIJ,KAAKI,EAAE;QAAC,IAAI,CAAC;YACjCR,OAAO,EAACI,iBAAAA,KAAKR,QAAQ,YAAbQ,iBAAiB,EAAE,EAAEP,GAAG,CAAC,CAACI,QAAUA,MAAMC,EAAE;;QAEtD,KAAK,MAAMD,UAASG,kBAAAA,KAAKR,QAAQ,YAAbQ,kBAAiB,EAAE,CAAED,KAAKF,OAAOG,KAAKF,EAAE;IAC9D;IACA,KAAK,MAAMD,SAASL,SAAUO,KAAKF,OAAOP;IAC1C,OAAOG;AACT;AAEA,0EAA0E,GAC1E,OAAO,MAAMY,cAAc,CACzBP,IACAQ,SACAd,UACAe,QACqB,CAAA;QACrBT;QACAH,aAAa;QACbQ,OAAO;YAAEG;YAASd;WAAae;IACjC,CAAA,EAAE;AAYF;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BC,GACD,OAAO,MAAMC,iBAAiB,CAC5BV,IACAW,UACAC,iBACAlB,WACqB,CAAA;QACrBM;QACAH,aAAa;QACbQ,OAAO;YAAEM;QAAS;QAClBL,IAAI;YAAEO,YAAYD;YAAiBE,eAAeF;QAAgB;QAClElB;IACF,CAAA,EAAE;AAEF;;;;CAIC,GACD,OAAO,MAAMqB,qBAAqB,CAChCC,QACAC,UACAC,UAEA,yEAAyE;IACzE,yEAAyE;IACzE,kCAAkC;IAClCR,eAAe,GAAGM,OAAO,WAAW,CAAC,EAAE,MAAM,IAAI;QAC/C;YACEhB,IAAI,GAAGgB,OAAO,IAAI,CAAC;YACnBnB,aAAa;YACbQ,OAAO;gBAAEc,SAAS;YAAE;YACpBb,IAAI;gBAAEc,YAAY;YAAS;YAC3B1B,UAAU;gBACRa,YAAY,GAAGS,OAAO,SAAS,CAAC,EAAE,MAAMC,UAAU;oBAAEI,OAAO;gBAAS;gBACpEd,YAAY,GAAGS,OAAO,OAAO,CAAC,EAAE,MAAME,SAAS;oBAAEG,OAAO;gBAAS;gBACjE;oBACErB,IAAI,GAAGgB,OAAO,OAAO,CAAC;oBACtBnB,aAAa;oBACbQ,OAAO;wBACLG,SAAS;wBACTc,MAAM;wBACN5B,UAAU;oBACZ;gBACF;aACD;QACH;KACD,EAAC"}
@@ -14,6 +14,9 @@
14
14
  * See the License for the specific language governing permissions and
15
15
  * limitations under the License.
16
16
  */
17
+ import { type StarterTemplate, type StarterTemplateScreen } from './starter-template-nodes';
18
+ export type { StarterNodeSpec, StarterSectionWidth, StarterTemplate, StarterTemplateScreen, } from './starter-template-nodes';
19
+ export { buildStarterNodes, starterHeroSection, starterSection, starterText, } from './starter-template-nodes';
17
20
  /**
18
21
  * First-party starter definitions (AGL-78/79), SEED INPUT (AGL-687).
19
22
  *
@@ -36,40 +39,6 @@
36
39
  * and every node id below appear in stored documents (seeded template doc
37
40
  * ids are derived from the first two). They must never be renamed.
38
41
  */
39
- export interface StarterTemplateScreen {
40
- /**
41
- * Stable, starter-local key. Part of the seeded document id, so it is a
42
- * persisted identifier — never rename one.
43
- */
44
- key: string;
45
- displayName: string;
46
- description?: string;
47
- /**
48
- * Routing-map slug. `SCREEN_ROOT_PATH` (`'/'`) asks for the site root — the
49
- * home page — and anything else is a single path segment.
50
- *
51
- * It used to be `''` that meant home, which no normalizer agreed with: both
52
- * the apply path and the seed below read an empty string as "no address
53
- * authored" and derived one from the display name, so the shop starters'
54
- * home page was published at `/home` and the site 404'd at its own URL
55
- * (AGL-1575).
56
- */
57
- slug: string;
58
- seo?: {
59
- title?: string;
60
- description?: string;
61
- };
62
- /** Flat node map including the canvas root. */
63
- nodes: Record<string, any>;
64
- }
65
- export interface StarterTemplate {
66
- id: string;
67
- displayName: string;
68
- description: string;
69
- category: string;
70
- screens: StarterTemplateScreen[];
71
- }
72
- /** A materialized starter template document, keyed by its deterministic id. */
73
42
  export interface StarterTemplateDoc {
74
43
  id: string;
75
44
  /** Which starter this page belongs to — lets one starter be selected. */
@@ -116,4 +85,12 @@ export declare function buildAllStarterTemplateDocs(): StarterTemplateDoc[];
116
85
  * PERSISTED IDENTIFIERS: every node id below is stored on every new site.
117
86
  */
118
87
  export declare function buildDefaultHomeScreen(siteName: string): StarterTemplateScreen;
88
+ /**
89
+ * Every starter in this build, in gallery order: the platform's own, then
90
+ * each plugin's in config order (AGL-3080). A plugin whose elements a starter
91
+ * is built around — a storefront's product grid and cart — declares it under
92
+ * `starterTemplates` in plugins.config.json, and the manifest generator
93
+ * compiles what it returns, so the gallery, the seed route and a model
94
+ * shown examples all read one list without loading any plugin.
95
+ */
119
96
  export declare const STARTER_TEMPLATES: StarterTemplate[];