@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.
- package/package.json +12 -12
- package/src/lib/app-utils/actions.d.ts +26 -433
- package/src/lib/app-utils/actions.js +108 -633
- package/src/lib/app-utils/actions.js.map +1 -1
- package/src/lib/app-utils/activity-presenter.d.ts +3 -3
- package/src/lib/app-utils/activity-presenter.js +36 -52
- package/src/lib/app-utils/activity-presenter.js.map +1 -1
- package/src/lib/app-utils/analytics-events.d.ts +1 -1
- package/src/lib/app-utils/analytics-events.js.map +1 -1
- package/src/lib/app-utils/analytics-provider.d.ts +182 -0
- package/src/lib/app-utils/analytics-provider.js +133 -0
- package/src/lib/app-utils/analytics-provider.js.map +1 -0
- package/src/lib/app-utils/api-plugins.d.ts +46 -0
- package/src/lib/app-utils/api-plugins.js +19 -0
- package/src/lib/app-utils/api-plugins.js.map +1 -1
- package/src/lib/app-utils/{marketplace-overrides.d.ts → artifact-overrides.d.ts} +9 -6
- package/src/lib/app-utils/{marketplace-overrides.js → artifact-overrides.js} +10 -7
- package/src/lib/app-utils/artifact-overrides.js.map +1 -0
- package/src/lib/app-utils/{marketplace-provenance.d.ts → artifact-provenance.d.ts} +12 -10
- package/src/lib/app-utils/{marketplace-provenance.js → artifact-provenance.js} +9 -7
- package/src/lib/app-utils/artifact-provenance.js.map +1 -0
- package/src/lib/app-utils/binding-token-catalog.d.ts +5 -13
- package/src/lib/app-utils/binding-token-catalog.js +17 -41
- package/src/lib/app-utils/binding-token-catalog.js.map +1 -1
- package/src/lib/app-utils/brand-support-line.d.ts +36 -0
- package/src/lib/app-utils/brand-support-line.js +38 -0
- package/src/lib/app-utils/brand-support-line.js.map +1 -0
- package/src/lib/app-utils/collection-entries.d.ts +2 -2
- package/src/lib/app-utils/collection-entries.js.map +1 -1
- package/src/lib/app-utils/consent-group-change.d.ts +4 -0
- package/src/lib/app-utils/consent-group-change.js.map +1 -1
- package/src/lib/app-utils/consent-groups.d.ts +1 -1
- package/src/lib/app-utils/consent-groups.js.map +1 -1
- package/src/lib/app-utils/console-routes.d.ts +15 -42
- package/src/lib/app-utils/console-routes.js +10 -39
- package/src/lib/app-utils/console-routes.js.map +1 -1
- package/src/lib/app-utils/contacts.d.ts +24 -2
- package/src/lib/app-utils/contacts.js +21 -5
- package/src/lib/app-utils/contacts.js.map +1 -1
- package/src/lib/app-utils/container-membership.d.ts +93 -0
- package/src/lib/app-utils/container-membership.js +165 -0
- package/src/lib/app-utils/container-membership.js.map +1 -0
- package/src/lib/app-utils/crm-task-reminders.d.ts +23 -6
- package/src/lib/app-utils/crm-task-reminders.js +32 -11
- package/src/lib/app-utils/crm-task-reminders.js.map +1 -1
- package/src/lib/app-utils/crm.d.ts +24 -4
- package/src/lib/app-utils/crm.js +23 -0
- package/src/lib/app-utils/crm.js.map +1 -1
- package/src/lib/app-utils/cross-pool-desync.d.ts +39 -0
- package/src/lib/app-utils/cross-pool-desync.js +47 -0
- package/src/lib/app-utils/cross-pool-desync.js.map +1 -0
- package/src/lib/app-utils/csv-upload.d.ts +29 -0
- package/src/lib/app-utils/csv-upload.js +29 -0
- package/src/lib/app-utils/csv-upload.js.map +1 -0
- package/src/lib/app-utils/{dataset-csv.d.ts → csv.d.ts} +10 -43
- package/src/lib/app-utils/{dataset-csv.js → csv.js} +10 -81
- package/src/lib/app-utils/csv.js.map +1 -0
- package/src/lib/app-utils/dataset-models.d.ts +5 -5
- package/src/lib/app-utils/dataset-models.js +19 -2
- package/src/lib/app-utils/dataset-models.js.map +1 -1
- package/src/lib/app-utils/datasets.d.ts +65 -30
- package/src/lib/app-utils/datasets.js +74 -24
- package/src/lib/app-utils/datasets.js.map +1 -1
- package/src/lib/app-utils/docs-deflection.d.ts +6 -6
- package/src/lib/app-utils/docs-deflection.js.map +1 -1
- package/src/lib/app-utils/docs-help.generated.d.ts +14 -8
- package/src/lib/app-utils/docs-help.generated.js +23 -6
- package/src/lib/app-utils/docs-help.generated.js.map +1 -1
- package/src/lib/app-utils/docs-index.generated.d.ts +2 -2
- package/src/lib/app-utils/docs-index.generated.js +570 -346
- package/src/lib/app-utils/docs-index.generated.js.map +1 -1
- package/src/lib/app-utils/docs-retrieval.d.ts +3 -3
- package/src/lib/app-utils/docs-retrieval.js +14 -10
- package/src/lib/app-utils/docs-retrieval.js.map +1 -1
- package/src/lib/app-utils/duplicate-resource.d.ts +4 -1
- package/src/lib/app-utils/duplicate-resource.js +7 -4
- package/src/lib/app-utils/duplicate-resource.js.map +1 -1
- package/src/lib/app-utils/dynamic-list-rule.d.ts +1 -1
- package/src/lib/app-utils/dynamic-list-rule.js +3 -3
- package/src/lib/app-utils/dynamic-list-rule.js.map +1 -1
- package/src/lib/app-utils/element-ui.d.ts +1 -1
- package/src/lib/app-utils/element-ui.js +1 -1
- package/src/lib/app-utils/element-ui.js.map +1 -1
- package/src/lib/app-utils/email-starter-policy.js +3 -3
- package/src/lib/app-utils/email-starter-policy.js.map +1 -1
- package/src/lib/app-utils/email-text.d.ts +80 -0
- package/src/lib/app-utils/email-text.js +189 -0
- package/src/lib/app-utils/email-text.js.map +1 -0
- package/src/lib/app-utils/{list-assignment-policy.d.ts → enrollment-basis.d.ts} +4 -0
- package/src/lib/app-utils/{list-assignment-policy.js → enrollment-basis.js} +5 -1
- package/src/lib/app-utils/enrollment-basis.js.map +1 -0
- package/src/lib/app-utils/entity-picker-context.d.ts +10 -5
- package/src/lib/app-utils/entity-picker-context.js.map +1 -1
- package/src/lib/app-utils/error-beacon.d.ts +75 -6
- package/src/lib/app-utils/error-beacon.js +160 -21
- package/src/lib/app-utils/error-beacon.js.map +1 -1
- package/src/lib/app-utils/expand-repeatables.d.ts +10 -10
- package/src/lib/app-utils/expand-repeatables.js +14 -14
- package/src/lib/app-utils/expand-repeatables.js.map +1 -1
- package/src/lib/app-utils/forms.js +2 -2
- package/src/lib/app-utils/forms.js.map +1 -1
- package/src/lib/app-utils/health-report.d.ts +2 -3
- package/src/lib/app-utils/health-report.js +8 -6
- package/src/lib/app-utils/health-report.js.map +1 -1
- package/src/lib/app-utils/host-events.d.ts +82 -0
- package/src/lib/app-utils/host-events.js +62 -0
- package/src/lib/app-utils/host-events.js.map +1 -0
- package/src/lib/app-utils/inbound-mail-domain.d.ts +27 -0
- package/src/lib/app-utils/inbound-mail-domain.js +31 -0
- package/src/lib/app-utils/inbound-mail-domain.js.map +1 -0
- package/src/lib/app-utils/lockdown.d.ts +11 -0
- package/src/lib/app-utils/lockdown.js +33 -3
- package/src/lib/app-utils/lockdown.js.map +1 -1
- package/src/lib/app-utils/margin-utilization.d.ts +4 -69
- package/src/lib/app-utils/margin-utilization.js +82 -69
- package/src/lib/app-utils/margin-utilization.js.map +1 -1
- package/src/lib/app-utils/member-email-aliases.d.ts +25 -0
- package/src/lib/app-utils/member-email-aliases.js +29 -0
- package/src/lib/app-utils/member-email-aliases.js.map +1 -1
- package/src/lib/app-utils/node-definition-sanitizer.d.ts +16 -16
- package/src/lib/app-utils/node-definition-sanitizer.js +24 -20
- package/src/lib/app-utils/node-definition-sanitizer.js.map +1 -1
- package/src/lib/app-utils/node-interactions.d.ts +7 -7
- package/src/lib/app-utils/node-interactions.js.map +1 -1
- package/src/lib/app-utils/notifications.d.ts +147 -47
- package/src/lib/app-utils/notifications.js +182 -44
- package/src/lib/app-utils/notifications.js.map +1 -1
- package/src/lib/app-utils/operator-alerts.d.ts +15 -1
- package/src/lib/app-utils/operator-alerts.js +47 -10
- package/src/lib/app-utils/operator-alerts.js.map +1 -1
- package/src/lib/app-utils/payments-configured.d.ts +8 -21
- package/src/lib/app-utils/payments-configured.js +8 -23
- package/src/lib/app-utils/payments-configured.js.map +1 -1
- package/src/lib/app-utils/plan-entitlements.d.ts +207 -306
- package/src/lib/app-utils/plan-entitlements.js +345 -528
- package/src/lib/app-utils/plan-entitlements.js.map +1 -1
- package/src/lib/app-utils/platform-brand.d.ts +10 -0
- package/src/lib/app-utils/platform-brand.js +14 -3
- package/src/lib/app-utils/platform-brand.js.map +1 -1
- package/src/lib/app-utils/platform-marketing-consent.d.ts +56 -2
- package/src/lib/app-utils/platform-marketing-consent.js +6 -5
- package/src/lib/app-utils/platform-marketing-consent.js.map +1 -1
- package/src/lib/app-utils/plugin-api-rate-limit.d.ts +7 -1
- package/src/lib/app-utils/plugin-api-rate-limit.js +11 -3
- package/src/lib/app-utils/plugin-api-rate-limit.js.map +1 -1
- package/src/lib/app-utils/plugin-bundle-checks.js +2 -2
- package/src/lib/app-utils/plugin-bundle-checks.js.map +1 -1
- package/src/lib/app-utils/plugin-host-events.generated.d.ts +12 -0
- package/src/lib/app-utils/plugin-host-events.generated.js +169 -0
- package/src/lib/app-utils/plugin-host-events.generated.js.map +1 -0
- package/src/lib/app-utils/plugin-release-flags.generated.d.ts +12 -0
- package/src/lib/app-utils/plugin-release-flags.generated.js +106 -0
- package/src/lib/app-utils/plugin-release-flags.generated.js.map +1 -0
- package/src/lib/app-utils/plugin-starter-templates.generated.d.ts +12 -0
- package/src/lib/app-utils/plugin-starter-templates.generated.js +711 -0
- package/src/lib/app-utils/plugin-starter-templates.generated.js.map +1 -0
- package/src/lib/app-utils/realm-host-surface.generated.js +2 -0
- package/src/lib/app-utils/realm-host-surface.generated.js.map +1 -1
- package/src/lib/app-utils/release-flags.d.ts +14 -5
- package/src/lib/app-utils/release-flags.js +21 -125
- package/src/lib/app-utils/release-flags.js.map +1 -1
- package/src/lib/app-utils/repeat-query.d.ts +56 -0
- package/src/lib/app-utils/{dataset-query.js → repeat-query.js} +16 -16
- package/src/lib/app-utils/repeat-query.js.map +1 -0
- package/src/lib/app-utils/repeat-sources.d.ts +9 -0
- package/src/lib/app-utils/repeat-sources.js.map +1 -1
- package/src/lib/app-utils/retained-refusals.d.ts +73 -0
- package/src/lib/app-utils/retained-refusals.js +186 -0
- package/src/lib/app-utils/retained-refusals.js.map +1 -0
- package/src/lib/app-utils/scope-tokens.d.ts +27 -0
- package/src/lib/app-utils/scope-tokens.js +61 -0
- package/src/lib/app-utils/scope-tokens.js.map +1 -1
- package/src/lib/app-utils/screen-link-context.js +3 -3
- package/src/lib/app-utils/screen-link-context.js.map +1 -1
- package/src/lib/app-utils/screen-route.js +1 -1
- package/src/lib/app-utils/screen-route.js.map +1 -1
- package/src/lib/app-utils/seo-audit.d.ts +132 -0
- package/src/lib/app-utils/seo-audit.js +246 -0
- package/src/lib/app-utils/seo-audit.js.map +1 -0
- package/src/lib/app-utils/seo-keywords.d.ts +48 -0
- package/src/lib/app-utils/seo-keywords.js +60 -0
- package/src/lib/app-utils/seo-keywords.js.map +1 -0
- package/src/lib/app-utils/seo-page-facts.d.ts +66 -0
- package/src/lib/app-utils/seo-page-facts.js +155 -0
- package/src/lib/app-utils/seo-page-facts.js.map +1 -0
- package/src/lib/app-utils/seo-site-scan.d.ts +126 -0
- package/src/lib/app-utils/seo-site-scan.js +162 -0
- package/src/lib/app-utils/seo-site-scan.js.map +1 -0
- package/src/lib/app-utils/seo-title-variables.js +1 -1
- package/src/lib/app-utils/seo-title-variables.js.map +1 -1
- package/src/lib/app-utils/server.d.ts +13 -18
- package/src/lib/app-utils/server.js +33 -51
- package/src/lib/app-utils/server.js.map +1 -1
- package/src/lib/app-utils/site-interactions.d.ts +501 -0
- package/src/lib/app-utils/site-interactions.js +554 -0
- package/src/lib/app-utils/site-interactions.js.map +1 -0
- package/src/lib/app-utils/{marketplace-theme.d.ts → site-theme.d.ts} +13 -2
- package/src/lib/app-utils/{marketplace-theme.js → site-theme.js} +2 -2
- package/src/lib/app-utils/site-theme.js.map +1 -0
- package/src/lib/app-utils/sitemap.d.ts +4 -3
- package/src/lib/app-utils/sitemap.js +9 -7
- package/src/lib/app-utils/sitemap.js.map +1 -1
- package/src/lib/app-utils/stale-build-error.d.ts +51 -0
- package/src/lib/app-utils/stale-build-error.js +100 -1
- package/src/lib/app-utils/stale-build-error.js.map +1 -1
- package/src/lib/app-utils/starter-template-nodes.d.ts +137 -0
- package/src/lib/app-utils/starter-template-nodes.js +129 -0
- package/src/lib/app-utils/starter-template-nodes.js.map +1 -0
- package/src/lib/app-utils/starter-templates.d.ts +11 -34
- package/src/lib/app-utils/starter-templates.js +19 -230
- package/src/lib/app-utils/starter-templates.js.map +1 -1
- package/src/lib/app-utils/{email-topics.d.ts → subscription-topics.d.ts} +64 -48
- package/src/lib/app-utils/{email-topics.js → subscription-topics.js} +39 -109
- package/src/lib/app-utils/subscription-topics.js.map +1 -0
- package/src/lib/app-utils/tax-jurisdiction-figures.d.ts +118 -0
- package/src/lib/app-utils/tax-jurisdiction-figures.js +123 -0
- package/src/lib/app-utils/tax-jurisdiction-figures.js.map +1 -0
- package/src/lib/app-utils/theme-library.d.ts +10 -3
- package/src/lib/app-utils/theme-library.js +13 -4
- package/src/lib/app-utils/theme-library.js.map +1 -1
- package/src/lib/app-utils/usage-budget.d.ts +73 -188
- package/src/lib/app-utils/usage-budget.js +58 -194
- package/src/lib/app-utils/usage-budget.js.map +1 -1
- package/src/lib/app-utils/{campaign-attribution.d.ts → utm-attribution.d.ts} +11 -6
- package/src/lib/app-utils/{campaign-attribution.js → utm-attribution.js} +13 -8
- package/src/lib/app-utils/utm-attribution.js.map +1 -0
- package/src/lib/app-utils/{campaign-forwarding.d.ts → utm-forwarding.d.ts} +14 -14
- package/src/lib/app-utils/{campaign-forwarding.js → utm-forwarding.js} +26 -26
- package/src/lib/app-utils/utm-forwarding.js.map +1 -0
- package/src/lib/app-utils/{campaign-touch.d.ts → utm-touch.d.ts} +25 -17
- package/src/lib/app-utils/{campaign-touch.js → utm-touch.js} +38 -30
- package/src/lib/app-utils/utm-touch.js.map +1 -0
- package/src/lib/app-utils/variables.d.ts +9 -9
- package/src/lib/app-utils/variables.js.map +1 -1
- package/src/lib/app-utils/video-object.js +6 -5
- package/src/lib/app-utils/video-object.js.map +1 -1
- package/src/lib/app-utils/visitor-consent.d.ts +41 -164
- package/src/lib/app-utils/visitor-consent.js +66 -277
- package/src/lib/app-utils/visitor-consent.js.map +1 -1
- package/src/lib/app-utils/visitor-record-ceiling.d.ts +32 -0
- package/src/lib/app-utils/visitor-record-ceiling.js +39 -0
- package/src/lib/app-utils/visitor-record-ceiling.js.map +1 -1
- package/src/lib/app-utils/web-vitals-rum.d.ts +7 -7
- package/src/lib/app-utils/web-vitals-rum.js +31 -63
- package/src/lib/app-utils/web-vitals-rum.js.map +1 -1
- package/src/lib/app-utils/where-used.d.ts +11 -6
- package/src/lib/app-utils/where-used.js +3 -8
- package/src/lib/app-utils/where-used.js.map +1 -1
- package/src/lib/foundation/definitions/components.types.d.ts +1 -1
- package/src/lib/foundation/definitions/components.types.js +1 -1
- package/src/lib/foundation/definitions/components.types.js.map +1 -1
- package/src/lib/foundation/definitions/org-billing.types.d.ts +11 -137
- package/src/lib/foundation/definitions/org-billing.types.js.map +1 -1
- package/src/lib/foundation/definitions/organization.types.d.ts +1 -3
- package/src/lib/foundation/definitions/organization.types.js.map +1 -1
- package/src/lib/foundation/definitions/platform.types.d.ts +11 -5
- package/src/lib/foundation/definitions/platform.types.js.map +1 -1
- package/src/lib/foundation/definitions/write-deny-coverage.util.d.ts +16 -0
- package/src/lib/foundation/definitions/write-deny-coverage.util.js +20 -0
- package/src/lib/foundation/definitions/write-deny-coverage.util.js.map +1 -1
- package/src/lib/foundation/index.d.ts +1 -1
- package/src/lib/foundation/index.js.map +1 -1
- package/src/lib/plugin-manager/besigner-documents.d.ts +96 -0
- package/src/lib/plugin-manager/besigner-documents.js +61 -0
- package/src/lib/plugin-manager/besigner-documents.js.map +1 -0
- package/src/lib/plugin-manager/computed-variables.d.ts +71 -0
- package/src/lib/plugin-manager/computed-variables.js +74 -0
- package/src/lib/plugin-manager/computed-variables.js.map +1 -0
- package/src/lib/plugin-manager/custom-fields.d.ts +29 -2
- package/src/lib/plugin-manager/custom-fields.js +47 -1
- package/src/lib/plugin-manager/custom-fields.js.map +1 -1
- package/src/lib/plugin-manager/feature-plugins.d.ts +372 -99
- package/src/lib/plugin-manager/feature-plugins.js +126 -51
- package/src/lib/plugin-manager/feature-plugins.js.map +1 -1
- package/src/lib/plugin-manager/first-party-plugins.generated.d.ts +134 -0
- package/src/lib/plugin-manager/first-party-plugins.generated.js +840 -10
- package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -1
- package/src/lib/plugin-manager/index.d.ts +0 -1
- package/src/lib/plugin-manager/index.js +0 -1
- package/src/lib/plugin-manager/index.js.map +1 -1
- package/src/lib/plugin-manager/plugin-activity-actions.d.ts +12 -0
- package/src/lib/plugin-manager/plugin-activity-actions.js +25 -0
- package/src/lib/plugin-manager/plugin-activity-actions.js.map +1 -1
- package/src/lib/plugin-manager/plugin-contact-capture.d.ts +9 -4
- package/src/lib/plugin-manager/plugin-contact-capture.js.map +1 -1
- package/src/lib/plugin-manager/plugin-containers.d.ts +68 -0
- package/src/lib/plugin-manager/plugin-containers.generated.d.ts +10 -0
- package/src/lib/plugin-manager/plugin-containers.generated.js +20 -0
- package/src/lib/plugin-manager/plugin-containers.generated.js.map +1 -0
- package/src/lib/plugin-manager/plugin-containers.js +27 -0
- package/src/lib/plugin-manager/plugin-containers.js.map +1 -0
- package/src/lib/plugin-manager/plugin-contributions.d.ts +1 -1
- package/src/lib/plugin-manager/plugin-contributions.js.map +1 -1
- package/src/lib/plugin-manager/plugin-declarations-repair.d.ts +36 -0
- package/src/lib/plugin-manager/plugin-declarations-repair.js +64 -0
- package/src/lib/plugin-manager/plugin-declarations-repair.js.map +1 -0
- package/src/lib/plugin-manager/plugin-dependents.d.ts +101 -0
- package/src/lib/plugin-manager/plugin-dependents.js +75 -0
- package/src/lib/plugin-manager/plugin-dependents.js.map +1 -0
- package/src/lib/plugin-manager/plugin-distribution.d.ts +55 -0
- package/src/lib/plugin-manager/plugin-distribution.js +45 -0
- package/src/lib/plugin-manager/plugin-distribution.js.map +1 -0
- package/src/lib/plugin-manager/plugin-entitlements.d.ts +8 -0
- package/src/lib/plugin-manager/plugin-entitlements.js.map +1 -1
- package/src/lib/plugin-manager/plugin-host-collections.d.ts +17 -0
- package/src/lib/plugin-manager/plugin-host-collections.js +6 -0
- package/src/lib/plugin-manager/plugin-host-collections.js.map +1 -1
- package/src/lib/plugin-manager/plugin-host-resources.d.ts +133 -0
- package/src/lib/plugin-manager/plugin-host-resources.js +52 -0
- package/src/lib/plugin-manager/plugin-host-resources.js.map +1 -0
- package/src/lib/plugin-manager/plugin-membership-detach.js +1 -1
- package/src/lib/plugin-manager/plugin-membership-detach.js.map +1 -1
- package/src/lib/plugin-manager/plugin-org-erasure.d.ts +28 -2
- package/src/lib/plugin-manager/plugin-org-erasure.js +61 -2
- package/src/lib/plugin-manager/plugin-org-erasure.js.map +1 -1
- package/src/lib/plugin-manager/plugin-plan-entitlements.d.ts +123 -0
- package/src/lib/plugin-manager/plugin-plan-entitlements.js +101 -0
- package/src/lib/plugin-manager/plugin-plan-entitlements.js.map +1 -0
- package/src/lib/plugin-manager/plugin-record-email-state.d.ts +69 -0
- package/src/lib/plugin-manager/plugin-record-email-state.js +32 -0
- package/src/lib/plugin-manager/plugin-record-email-state.js.map +1 -1
- package/src/lib/plugin-manager/plugin-record-index.d.ts +95 -0
- package/src/lib/plugin-manager/plugin-record-index.js +51 -0
- package/src/lib/plugin-manager/plugin-record-index.js.map +1 -0
- package/src/lib/plugin-manager/plugin-record-lists.d.ts +115 -0
- package/src/lib/plugin-manager/plugin-record-lists.js +75 -0
- package/src/lib/plugin-manager/plugin-record-lists.js.map +1 -0
- package/src/lib/plugin-manager/plugin-record-timeline.d.ts +42 -8
- package/src/lib/plugin-manager/plugin-record-timeline.js.map +1 -1
- package/src/lib/plugin-manager/plugin-record-written.d.ts +58 -0
- package/src/lib/plugin-manager/plugin-record-written.js +42 -0
- package/src/lib/plugin-manager/plugin-record-written.js.map +1 -0
- package/src/lib/plugin-manager/plugin-revenue-sources.d.ts +213 -0
- package/src/lib/plugin-manager/plugin-revenue-sources.js +194 -0
- package/src/lib/plugin-manager/plugin-revenue-sources.js.map +1 -0
- package/src/lib/plugin-manager/plugin-site-beacons.d.ts +71 -0
- package/src/lib/plugin-manager/plugin-site-beacons.js +54 -0
- package/src/lib/plugin-manager/plugin-site-beacons.js.map +1 -0
- package/src/lib/plugin-manager/plugin-site-bundle.d.ts +145 -0
- package/src/lib/plugin-manager/plugin-site-bundle.js +78 -0
- package/src/lib/plugin-manager/plugin-site-bundle.js.map +1 -0
- package/src/lib/plugin-manager/plugin-site-cache.d.ts +12 -0
- package/src/lib/plugin-manager/plugin-site-cache.js.map +1 -1
- package/src/lib/plugin-manager/plugin-site-export.d.ts +81 -0
- package/src/lib/plugin-manager/plugin-site-export.js +40 -0
- package/src/lib/plugin-manager/plugin-site-export.js.map +1 -0
- package/src/lib/plugin-manager/plugin-sitemap-sections.d.ts +88 -0
- package/src/lib/plugin-manager/plugin-sitemap-sections.js +29 -0
- package/src/lib/plugin-manager/plugin-sitemap-sections.js.map +1 -0
- package/src/lib/plugin-manager/plugin-subscription-topics.generated.d.ts +11 -0
- package/src/lib/plugin-manager/plugin-subscription-topics.generated.js +41 -0
- package/src/lib/plugin-manager/plugin-subscription-topics.generated.js.map +1 -0
- package/src/lib/plugin-manager/plugin-tax-profile.d.ts +20 -4
- package/src/lib/plugin-manager/plugin-tax-profile.js.map +1 -1
- package/src/lib/plugin-manager/plugin-tax-return-sources.d.ts +255 -0
- package/src/lib/plugin-manager/plugin-tax-return-sources.js +191 -0
- package/src/lib/plugin-manager/plugin-tax-return-sources.js.map +1 -0
- package/src/lib/plugin-manager/plugin-template-sources.d.ts +75 -0
- package/src/lib/plugin-manager/plugin-template-sources.js +37 -0
- package/src/lib/plugin-manager/plugin-template-sources.js.map +1 -0
- package/src/lib/plugin-manager/plugin-usage-axes.d.ts +319 -0
- package/src/lib/plugin-manager/plugin-usage-axes.js +186 -0
- package/src/lib/plugin-manager/plugin-usage-axes.js.map +1 -0
- package/src/lib/plugin-manager/plugin-usage-meters.d.ts +108 -0
- package/src/lib/plugin-manager/plugin-usage-meters.js +105 -0
- package/src/lib/plugin-manager/plugin-usage-meters.js.map +1 -0
- package/src/lib/plugin-manager/plugin-zones.d.ts +4 -5
- package/src/lib/plugin-manager/plugin-zones.js.map +1 -1
- package/src/lib/plugin-manager/realm-host-aglyn.generated.js +2 -0
- package/src/lib/plugin-manager/realm-host-aglyn.generated.js.map +1 -1
- package/src/lib/plugin-manager/record-captured-contact.d.ts +1 -14
- package/src/lib/plugin-manager/record-captured-contact.js +10 -32
- package/src/lib/plugin-manager/record-captured-contact.js.map +1 -1
- package/src/lib/plugin-manager/repeat-rows.d.ts +124 -0
- package/src/lib/plugin-manager/repeat-rows.js +108 -0
- package/src/lib/plugin-manager/repeat-rows.js.map +1 -0
- package/src/lib/plugin-manager/submission-record-target.d.ts +144 -0
- package/src/lib/plugin-manager/submission-record-target.js +125 -0
- package/src/lib/plugin-manager/submission-record-target.js.map +1 -0
- package/src/lib/plugin-manager/usage-alert-contributors.d.ts +76 -6
- package/src/lib/plugin-manager/usage-alert-contributors.js +23 -10
- package/src/lib/plugin-manager/usage-alert-contributors.js.map +1 -1
- package/src/lib/plugin-manager/video-embed-provider.d.ts +108 -0
- package/src/lib/plugin-manager/video-embed-provider.js +165 -0
- package/src/lib/plugin-manager/video-embed-provider.js.map +1 -0
- package/src/lib/types/nodes.d.ts +2 -2
- package/src/lib/types/nodes.js.map +1 -1
- package/src/lib/app-utils/assist-credits.d.ts +0 -482
- package/src/lib/app-utils/assist-credits.js +0 -509
- package/src/lib/app-utils/assist-credits.js.map +0 -1
- package/src/lib/app-utils/campaign-attribution.js.map +0 -1
- package/src/lib/app-utils/campaign-forwarding.js.map +0 -1
- package/src/lib/app-utils/campaign-membership.d.ts +0 -121
- package/src/lib/app-utils/campaign-membership.js +0 -189
- package/src/lib/app-utils/campaign-membership.js.map +0 -1
- package/src/lib/app-utils/campaign-touch.js.map +0 -1
- package/src/lib/app-utils/console-record-links.d.ts +0 -163
- package/src/lib/app-utils/console-record-links.js +0 -180
- package/src/lib/app-utils/console-record-links.js.map +0 -1
- package/src/lib/app-utils/contact-holder.d.ts +0 -68
- package/src/lib/app-utils/contact-holder.js +0 -129
- package/src/lib/app-utils/contact-holder.js.map +0 -1
- package/src/lib/app-utils/contact-merge.d.ts +0 -136
- package/src/lib/app-utils/contact-merge.js +0 -412
- package/src/lib/app-utils/contact-merge.js.map +0 -1
- package/src/lib/app-utils/crm-booking.d.ts +0 -75
- package/src/lib/app-utils/crm-booking.js +0 -133
- package/src/lib/app-utils/crm-booking.js.map +0 -1
- package/src/lib/app-utils/crm-csv.d.ts +0 -239
- package/src/lib/app-utils/crm-csv.js +0 -467
- package/src/lib/app-utils/crm-csv.js.map +0 -1
- package/src/lib/app-utils/crm-digest.d.ts +0 -185
- package/src/lib/app-utils/crm-digest.js +0 -272
- package/src/lib/app-utils/crm-digest.js.map +0 -1
- package/src/lib/app-utils/crm-inbound.d.ts +0 -245
- package/src/lib/app-utils/crm-inbound.js +0 -407
- package/src/lib/app-utils/crm-inbound.js.map +0 -1
- package/src/lib/app-utils/crm-reports.d.ts +0 -479
- package/src/lib/app-utils/crm-reports.js +0 -680
- package/src/lib/app-utils/crm-reports.js.map +0 -1
- package/src/lib/app-utils/dataset-csv.js.map +0 -1
- package/src/lib/app-utils/dataset-query.d.ts +0 -57
- package/src/lib/app-utils/dataset-query.js.map +0 -1
- package/src/lib/app-utils/email-topics.js.map +0 -1
- package/src/lib/app-utils/form-dataset-binding.d.ts +0 -50
- package/src/lib/app-utils/form-dataset-binding.js +0 -74
- package/src/lib/app-utils/form-dataset-binding.js.map +0 -1
- package/src/lib/app-utils/list-assignment-policy.js.map +0 -1
- package/src/lib/app-utils/list-import.d.ts +0 -158
- package/src/lib/app-utils/list-import.js +0 -332
- package/src/lib/app-utils/list-import.js.map +0 -1
- package/src/lib/app-utils/marketplace-listing-visibility.d.ts +0 -122
- package/src/lib/app-utils/marketplace-listing-visibility.js +0 -147
- package/src/lib/app-utils/marketplace-listing-visibility.js.map +0 -1
- package/src/lib/app-utils/marketplace-overrides.js.map +0 -1
- package/src/lib/app-utils/marketplace-provenance.js.map +0 -1
- package/src/lib/app-utils/marketplace-theme.js.map +0 -1
- package/src/lib/app-utils/marketplace-update-state.d.ts +0 -119
- package/src/lib/app-utils/marketplace-update-state.js +0 -132
- package/src/lib/app-utils/marketplace-update-state.js.map +0 -1
- package/src/lib/app-utils/publisher-agreement.d.ts +0 -289
- package/src/lib/app-utils/publisher-agreement.js +0 -321
- package/src/lib/app-utils/publisher-agreement.js.map +0 -1
- package/src/lib/app-utils/wistia-embed.d.ts +0 -104
- package/src/lib/app-utils/wistia-embed.js +0 -138
- package/src/lib/app-utils/wistia-embed.js.map +0 -1
- package/src/lib/app-utils/workflows.d.ts +0 -136
- package/src/lib/app-utils/workflows.js +0 -346
- package/src/lib/app-utils/workflows.js.map +0 -1
- package/src/lib/plugin-manager/commerce-zone-props.d.ts +0 -172
- package/src/lib/plugin-manager/commerce-zone-props.js +0 -31
- package/src/lib/plugin-manager/commerce-zone-props.js.map +0 -1
- package/src/lib/plugin-manager/plugin-metered-lines.d.ts +0 -97
- package/src/lib/plugin-manager/plugin-metered-lines.js +0 -123
- 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[];
|