@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
|
@@ -57,11 +57,108 @@ export interface AglynNotification {
|
|
|
57
57
|
* `tools/scripts/backfill-notification-read.mjs` stamps.
|
|
58
58
|
*/
|
|
59
59
|
read?: boolean;
|
|
60
|
+
/**
|
|
61
|
+
* How urgently this one notification asks to be read (AGL-3437), stamped
|
|
62
|
+
* by its emitter. Absent on a notification whose emitter has no reason to
|
|
63
|
+
* say more than its type does, and on everything written before the field
|
|
64
|
+
* existed; read it through {@link notificationLevel}, never directly.
|
|
65
|
+
*/
|
|
66
|
+
level?: NotificationLevel;
|
|
60
67
|
}
|
|
61
68
|
export declare const NOTIFICATION_TYPE_LABELS: Record<AglynNotificationType, string>;
|
|
62
|
-
/**
|
|
63
|
-
|
|
64
|
-
|
|
69
|
+
/**
|
|
70
|
+
* HOW LOUD A NOTIFICATION IS (AGL-3437), which the console draws as its
|
|
71
|
+
* color, icon and accent.
|
|
72
|
+
*
|
|
73
|
+
* - `critical` — something stopped, money is moving with nobody looking, or
|
|
74
|
+
* fraud: a fraud signal, a failed payment, a form that stopped accepting.
|
|
75
|
+
* - `warning` — something degraded or is close to stopping: a health check
|
|
76
|
+
* degraded, a limit reached, low stock.
|
|
77
|
+
* - `success` — good news: an account, a workspace or a subscription
|
|
78
|
+
* started, an order or a booking arrived, a health check recovered.
|
|
79
|
+
* - `info` — worth reading, nothing wrong: an invite, a ticket reply, a
|
|
80
|
+
* usage step on the way to a limit.
|
|
81
|
+
* - `neutral` — routine work arriving: a form submission, an assignment, a
|
|
82
|
+
* digest.
|
|
83
|
+
*
|
|
84
|
+
* A level is a property of the NOTIFICATION, not only of its type: one
|
|
85
|
+
* `system.operatorAlert` says a check degraded and the next says it
|
|
86
|
+
* recovered, and a usage notice at 75% is not the one at 100%. The emitter
|
|
87
|
+
* stamps `level` when it knows more than the type; the type's default in
|
|
88
|
+
* {@link NOTIFICATION_TYPE_LEVELS} answers for everything else.
|
|
89
|
+
*/
|
|
90
|
+
export type NotificationLevel = 'critical' | 'warning' | 'success' | 'info' | 'neutral';
|
|
91
|
+
/** Every level, loudest first — the order {@link loudestNotificationLevel} ranks by. */
|
|
92
|
+
export declare const NOTIFICATION_LEVELS: readonly NotificationLevel[];
|
|
93
|
+
export declare const NOTIFICATION_LEVEL_LABELS: Record<NotificationLevel, string>;
|
|
94
|
+
/**
|
|
95
|
+
* Each core type's level when its emitter stamps none. A plugin's types are
|
|
96
|
+
* not listed: a plugin emitter stamps `level` itself, and an unstamped one
|
|
97
|
+
* reads as `neutral`.
|
|
98
|
+
*
|
|
99
|
+
* A type the operator alert registry raises under its own notification type
|
|
100
|
+
* must agree with that alert's level, so the backlog written before `level`
|
|
101
|
+
* existed reads the same as what the registry writes today
|
|
102
|
+
* (`notification-levels.spec.ts` holds the two together).
|
|
103
|
+
*/
|
|
104
|
+
export declare const NOTIFICATION_TYPE_LEVELS: Record<AglynNotificationType, NotificationLevel>;
|
|
105
|
+
/** Whether a stored value is a level this build knows. */
|
|
106
|
+
export declare function isNotificationLevel(value: unknown): value is NotificationLevel;
|
|
107
|
+
/**
|
|
108
|
+
* A notification's level: what its emitter stamped, else its type's
|
|
109
|
+
* default, else `neutral`. A stamped value this build does not know — a
|
|
110
|
+
* level added later, read by an older console — falls back the same way
|
|
111
|
+
* rather than drawing nothing.
|
|
112
|
+
*/
|
|
113
|
+
export declare function notificationLevel(notification: {
|
|
114
|
+
type?: string;
|
|
115
|
+
level?: unknown;
|
|
116
|
+
} | null | undefined): NotificationLevel;
|
|
117
|
+
/**
|
|
118
|
+
* A usage notice's level at `percent` of its allowance: `info` on a step
|
|
119
|
+
* toward it, `warning` once it is reached. Every usage, budget and allotment
|
|
120
|
+
* notice says the same thing at the same step, so they share this.
|
|
121
|
+
*/
|
|
122
|
+
export declare function usageNotificationLevel(percent: number): NotificationLevel;
|
|
123
|
+
/** The loudest of several levels, or `neutral` for none. */
|
|
124
|
+
export declare function loudestNotificationLevel(levels: Iterable<NotificationLevel>): NotificationLevel;
|
|
125
|
+
/**
|
|
126
|
+
* The preference buckets the platform owns (AGL-267): the prefix before the
|
|
127
|
+
* dot. A plugin adds its own through {@link NotificationCategoryDeclaration},
|
|
128
|
+
* so this union is the core's and nothing else's.
|
|
129
|
+
*/
|
|
130
|
+
export type CoreNotificationCategory = 'billing' | 'team' | 'content' | 'support' | 'system' | 'staff';
|
|
131
|
+
/**
|
|
132
|
+
* A preference bucket: one of the core's, or one a first-party plugin
|
|
133
|
+
* declares. The id is persisted — it keys every stored preference map — so a
|
|
134
|
+
* declared id keeps its meaning only while its declaration keeps its spelling.
|
|
135
|
+
*/
|
|
136
|
+
export type NotificationCategory = CoreNotificationCategory | (string & {});
|
|
137
|
+
/**
|
|
138
|
+
* A notification category a plugin declares for the notifications it sends
|
|
139
|
+
* (AGL-3080), under `notificationCategories` in `plugins.config.json`.
|
|
140
|
+
*
|
|
141
|
+
* Compiled rather than registered: `notifyUsers` resolves a recipient's
|
|
142
|
+
* channels in server processes that load no plugin, and the settings page
|
|
143
|
+
* draws its rows before any plugin could register. A category that had to
|
|
144
|
+
* wait for its plugin would read as `system` until then — so a person who had
|
|
145
|
+
* muted it would be told, and a person who had asked for its email would not.
|
|
146
|
+
* The generator refuses an id the core owns or another plugin declares.
|
|
147
|
+
*/
|
|
148
|
+
export interface NotificationCategoryDeclaration {
|
|
149
|
+
/** The plugin whose notifications carry this prefix. */
|
|
150
|
+
pluginId: string;
|
|
151
|
+
/** The type prefix, and the key every stored preference is written under. */
|
|
152
|
+
id: string;
|
|
153
|
+
/** The row's name on the settings page. */
|
|
154
|
+
label: string;
|
|
155
|
+
/** What arrives under it, in the reader's words — see {@link NOTIFICATION_CATEGORY_DESCRIPTIONS}. */
|
|
156
|
+
description: string;
|
|
157
|
+
/** What each channel does before anybody says — see {@link NOTIFICATION_CHANNEL_DEFAULTS}. */
|
|
158
|
+
defaults: Record<NotificationChannel, boolean>;
|
|
159
|
+
}
|
|
160
|
+
/** Every category's row name, the core's and the declared, in page order. */
|
|
161
|
+
export declare const NOTIFICATION_CATEGORY_LABELS: Readonly<Record<NotificationCategory, string>>;
|
|
65
162
|
/**
|
|
66
163
|
* The categories only staff can receive (AGL-3225).
|
|
67
164
|
*
|
|
@@ -71,21 +168,13 @@ export declare const NOTIFICATION_CATEGORY_LABELS: Record<NotificationCategory,
|
|
|
71
168
|
* enumerates the `staff` claim rather than reading this.
|
|
72
169
|
*/
|
|
73
170
|
export declare const STAFF_NOTIFICATION_CATEGORIES: ReadonlySet<NotificationCategory>;
|
|
171
|
+
export declare const NOTIFICATION_CATEGORY_DESCRIPTIONS: Readonly<Record<NotificationCategory, string>>;
|
|
74
172
|
/**
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
*
|
|
78
|
-
*
|
|
79
|
-
* type labels beneath each row now name the contents exactly; this is the
|
|
80
|
-
* one-line answer for somebody who does not want to expand anything.
|
|
81
|
-
*
|
|
82
|
-
* Written as what ARRIVES rather than as what the bucket is called: "someone
|
|
83
|
-
* joins, a role changes" is checkable against your own feed in a way that
|
|
84
|
-
* "team and access events" is not. Exhaustive `Record`, like the channel
|
|
85
|
-
* defaults below — a new category cannot ship without somebody saying in
|
|
86
|
-
* plain words what lands in it.
|
|
173
|
+
* The bucket a type falls in: its prefix, when a category of that id exists,
|
|
174
|
+
* and `system` otherwise — the bucket nobody mutes to reduce noise, so a type
|
|
175
|
+
* nothing claims still reaches the person rather than riding a mute they set
|
|
176
|
+
* for something else.
|
|
87
177
|
*/
|
|
88
|
-
export declare const NOTIFICATION_CATEGORY_DESCRIPTIONS: Record<NotificationCategory, string>;
|
|
89
178
|
export declare function notificationCategory(type: AglynNotificationType | string): NotificationCategory;
|
|
90
179
|
/**
|
|
91
180
|
* Per-user mute map stored at `users/{uid}.notificationPrefs`
|
|
@@ -94,26 +183,42 @@ export declare function notificationCategory(type: AglynNotificationType | strin
|
|
|
94
183
|
export declare function notificationMuted(prefs: Record<string, boolean> | null | undefined, type: AglynNotificationType | string): boolean;
|
|
95
184
|
/**
|
|
96
185
|
* The field on `users/{uid}` that holds a person's digest switches
|
|
97
|
-
* (AGL-2619): `{
|
|
98
|
-
*
|
|
99
|
-
*
|
|
100
|
-
*
|
|
101
|
-
*
|
|
102
|
-
* notification and the email it travels with.
|
|
186
|
+
* (AGL-2619): `{ [digestKey]: false }` turns one digest off, and an absent key
|
|
187
|
+
* leaves it on. Its own map rather than a key in `notificationPrefs`, because
|
|
188
|
+
* that map is keyed by CATEGORY and read by {@link notificationMuted} — a
|
|
189
|
+
* digest is a schedule a person keeps or drops, not a bucket of types, and one
|
|
190
|
+
* switch governs both the console notification and the email it travels with.
|
|
103
191
|
*/
|
|
104
192
|
export declare const DIGEST_PREFS_FIELD = "digestPrefs";
|
|
105
193
|
/**
|
|
106
|
-
*
|
|
194
|
+
* A digest a plugin sends on its own schedule (AGL-3080), declared under
|
|
195
|
+
* `notificationDigests` in `plugins.config.json` so the settings page can draw
|
|
196
|
+
* its switch without loading the plugin, and the plugin's sender and that
|
|
197
|
+
* switch read one key.
|
|
107
198
|
*
|
|
108
|
-
*
|
|
109
|
-
*
|
|
110
|
-
*
|
|
111
|
-
*
|
|
112
|
-
|
|
113
|
-
|
|
199
|
+
* On until the person turns it off: the key is stored in
|
|
200
|
+
* {@link DIGEST_PREFS_FIELD} only once somebody has said no. The key is
|
|
201
|
+
* persisted, so it keeps its spelling for as long as anybody's switch is
|
|
202
|
+
* stored under it.
|
|
203
|
+
*/
|
|
204
|
+
export interface NotificationDigestDeclaration {
|
|
205
|
+
/** The plugin that composes and sends it. */
|
|
206
|
+
pluginId: string;
|
|
207
|
+
/** The key its switch is stored under in {@link DIGEST_PREFS_FIELD}. */
|
|
208
|
+
key: string;
|
|
209
|
+
/** The switch's name. */
|
|
210
|
+
label: string;
|
|
211
|
+
/** When it arrives and what it holds, in the reader's words. */
|
|
212
|
+
description: string;
|
|
213
|
+
}
|
|
214
|
+
/** Every declared digest, in the order the settings page lists them. */
|
|
215
|
+
export declare const NOTIFICATION_DIGESTS: readonly NotificationDigestDeclaration[];
|
|
216
|
+
/**
|
|
217
|
+
* Whether a person keeps one digest: on unless its key is stored `false`. It
|
|
218
|
+
* reads only its own key — a category mute lives in a different map and does
|
|
219
|
+
* not reach it.
|
|
114
220
|
*/
|
|
115
|
-
export declare
|
|
116
|
-
export declare function crmDailyDigestEnabled(prefs: Record<string, boolean> | null | undefined): boolean;
|
|
221
|
+
export declare function digestEnabled(prefs: Record<string, boolean> | null | undefined, key: string): boolean;
|
|
117
222
|
/**
|
|
118
223
|
* The field on `users/{uid}` naming the workspaces whose weekly insights a
|
|
119
224
|
* person asked for (AGL-2915): `{ [orgId]: true }`. OPT-IN, unlike the CRM
|
|
@@ -217,33 +322,28 @@ export interface NotificationSettings {
|
|
|
217
322
|
hostTypes?: Record<string, NotificationTypePrefs>;
|
|
218
323
|
}
|
|
219
324
|
export declare const NOTIFICATION_SETTINGS_FIELD = "notificationSettings";
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
* not ours to fill: the product already sends transactional mail nobody opted
|
|
225
|
-
* into — welcome, verification, invites, dunning, usage alerts — and every one
|
|
226
|
-
* of those leaves on the same domain a customer's password reset depends on.
|
|
227
|
-
* Turning a busy site's form submissions into mail by default would put that
|
|
228
|
-
* domain's reputation behind traffic the recipient never asked for.
|
|
229
|
-
*
|
|
230
|
-
* Exhaustive `Record` deliberately: a new {@link NotificationCategory} is a
|
|
231
|
-
* compile error here until somebody decides what it does by default, which is
|
|
232
|
-
* the one question a new category must not be able to ship without answering.
|
|
233
|
-
*/
|
|
234
|
-
export declare const NOTIFICATION_CHANNEL_DEFAULTS: Record<NotificationCategory, Record<NotificationChannel, boolean>>;
|
|
325
|
+
export declare const NOTIFICATION_CHANNEL_DEFAULTS: Readonly<Record<NotificationCategory, {
|
|
326
|
+
email: boolean;
|
|
327
|
+
console: boolean;
|
|
328
|
+
}>>;
|
|
235
329
|
/**
|
|
236
330
|
* The types that send their OWN email and must never be mailed again by the
|
|
237
331
|
* generic channel (AGL-3224).
|
|
238
332
|
*
|
|
239
333
|
* Both digests compose a message the fan-out could not reproduce — a day's
|
|
240
334
|
* owed tasks, a week's figures — and send it from their own route under their
|
|
241
|
-
* own switch (`digestPrefs
|
|
335
|
+
* own switch (a key in `digestPrefs`, `insightDigests.{orgId}`). A recipient
|
|
242
336
|
* who switches the `content` email channel on would otherwise receive the
|
|
243
337
|
* digest twice: once as the digest, once as a one-line "Daily CRM digest"
|
|
244
338
|
* notification saying that the digest happened.
|
|
245
339
|
*/
|
|
246
340
|
export declare const NOTIFICATION_SELF_SENT_EMAIL_TYPES: ReadonlySet<string>;
|
|
341
|
+
/**
|
|
342
|
+
* The tooltip on a self-sent type's disabled email switch: it names what
|
|
343
|
+
* DOES govern that mail, which differs by type (AGL-3432). Calling a task
|
|
344
|
+
* reminder a digest sent people looking for a Digests switch that is not it.
|
|
345
|
+
*/
|
|
346
|
+
export declare function selfSentEmailNote(type: string): string;
|
|
247
347
|
/**
|
|
248
348
|
* Whether a channel is on for one notification, at its own scope.
|
|
249
349
|
*
|
|
@@ -13,7 +13,9 @@
|
|
|
13
13
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
14
|
* See the License for the specific language governing permissions and
|
|
15
15
|
* limitations under the License.
|
|
16
|
-
*/ import {
|
|
16
|
+
*/ import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
17
|
+
import { buildRoute, Route } from "./console-routes.js";
|
|
18
|
+
import { PLUGIN_NOTIFICATION_CATEGORIES_DECLARED, PLUGIN_NOTIFICATION_DIGESTS_DECLARED } from "../plugin-manager/first-party-plugins.generated.js";
|
|
17
19
|
export const NOTIFICATION_TYPE_LABELS = {
|
|
18
20
|
'billing.invoice': 'Invoice available',
|
|
19
21
|
'billing.paymentFailed': 'Payment failed',
|
|
@@ -57,15 +59,142 @@ export const NOTIFICATION_TYPE_LABELS = {
|
|
|
57
59
|
'staff.planChanged': 'Plan changed',
|
|
58
60
|
'staff.paymentFailed': 'Payment failed (workspace)'
|
|
59
61
|
};
|
|
60
|
-
export const
|
|
62
|
+
/** Every level, loudest first — the order {@link loudestNotificationLevel} ranks by. */ export const NOTIFICATION_LEVELS = [
|
|
63
|
+
'critical',
|
|
64
|
+
'warning',
|
|
65
|
+
'success',
|
|
66
|
+
'info',
|
|
67
|
+
'neutral'
|
|
68
|
+
];
|
|
69
|
+
export const NOTIFICATION_LEVEL_LABELS = {
|
|
70
|
+
critical: 'Critical',
|
|
71
|
+
warning: 'Warning',
|
|
72
|
+
success: 'Good news',
|
|
73
|
+
info: 'Info',
|
|
74
|
+
neutral: 'Routine'
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Each core type's level when its emitter stamps none. A plugin's types are
|
|
78
|
+
* not listed: a plugin emitter stamps `level` itself, and an unstamped one
|
|
79
|
+
* reads as `neutral`.
|
|
80
|
+
*
|
|
81
|
+
* A type the operator alert registry raises under its own notification type
|
|
82
|
+
* must agree with that alert's level, so the backlog written before `level`
|
|
83
|
+
* existed reads the same as what the registry writes today
|
|
84
|
+
* (`notification-levels.spec.ts` holds the two together).
|
|
85
|
+
*/ export const NOTIFICATION_TYPE_LEVELS = {
|
|
86
|
+
'billing.invoice': 'neutral',
|
|
87
|
+
'billing.paymentFailed': 'critical',
|
|
88
|
+
'billing.subscriptionCanceled': 'critical',
|
|
89
|
+
// At a limit. A step on the way to it is stamped `info` by its emitter.
|
|
90
|
+
'billing.usage': 'warning',
|
|
91
|
+
'team.invite': 'info',
|
|
92
|
+
'team.roleChanged': 'info',
|
|
93
|
+
'team.hostAccessGranted': 'info',
|
|
94
|
+
'content.formSubmission': 'neutral',
|
|
95
|
+
'content.booking': 'success',
|
|
96
|
+
'content.order': 'success',
|
|
97
|
+
'content.lowStock': 'warning',
|
|
98
|
+
'content.taskAssigned': 'neutral',
|
|
99
|
+
'content.taskReminder': 'info',
|
|
100
|
+
'content.contactAssigned': 'neutral',
|
|
101
|
+
'content.leadAssigned': 'neutral',
|
|
102
|
+
'content.crmDailyDigest': 'neutral',
|
|
103
|
+
'content.insightsDigest': 'neutral',
|
|
104
|
+
'marketplace.review': 'info',
|
|
105
|
+
'support.ticketOpened': 'info',
|
|
106
|
+
'support.ticketReply': 'info',
|
|
107
|
+
'system.announcement': 'info',
|
|
108
|
+
'system.pluginVerifierRegression': 'warning',
|
|
109
|
+
'system.signInMethodRemoved': 'warning',
|
|
110
|
+
'system.scopeDrift': 'info',
|
|
111
|
+
'system.ssoDomainUnverified': 'warning',
|
|
112
|
+
'system.formSubmissionsPaused': 'critical',
|
|
113
|
+
'system.visitorRecordsPaused': 'critical',
|
|
114
|
+
'system.abuseReportUrgent': 'critical',
|
|
115
|
+
'system.riskNotice': 'critical',
|
|
116
|
+
'system.dmcaCounterNotice': 'critical',
|
|
117
|
+
'system.bandwidthCeilingTripped': 'warning',
|
|
118
|
+
// The site is serving the capped notice to its visitors.
|
|
119
|
+
'system.bandwidthCapEngaged': 'critical',
|
|
120
|
+
'system.billingWebhookHalfApplied': 'critical',
|
|
121
|
+
'system.disputeUnattributed': 'critical',
|
|
122
|
+
// The registry stamps each alert's own level; this answers only for one
|
|
123
|
+
// written before it did.
|
|
124
|
+
'system.operatorAlert': 'warning',
|
|
125
|
+
'staff.userSignedUp': 'success',
|
|
126
|
+
'staff.orgCreated': 'success',
|
|
127
|
+
'staff.subscriptionStarted': 'success',
|
|
128
|
+
'staff.subscriptionCanceled': 'warning',
|
|
129
|
+
'staff.planChanged': 'info',
|
|
130
|
+
'staff.paymentFailed': 'warning'
|
|
131
|
+
};
|
|
132
|
+
const LEVEL_SET = new Set(NOTIFICATION_LEVELS);
|
|
133
|
+
/** Whether a stored value is a level this build knows. */ export function isNotificationLevel(value) {
|
|
134
|
+
return typeof value === 'string' && LEVEL_SET.has(value);
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* A notification's level: what its emitter stamped, else its type's
|
|
138
|
+
* default, else `neutral`. A stamped value this build does not know — a
|
|
139
|
+
* level added later, read by an older console — falls back the same way
|
|
140
|
+
* rather than drawing nothing.
|
|
141
|
+
*/ export function notificationLevel(notification) {
|
|
142
|
+
var _ref;
|
|
143
|
+
const stamped = notification == null ? void 0 : notification.level;
|
|
144
|
+
if (isNotificationLevel(stamped)) return stamped;
|
|
145
|
+
const byType = NOTIFICATION_TYPE_LEVELS[(_ref = notification == null ? void 0 : notification.type) != null ? _ref : ''];
|
|
146
|
+
return byType != null ? byType : 'neutral';
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* A usage notice's level at `percent` of its allowance: `info` on a step
|
|
150
|
+
* toward it, `warning` once it is reached. Every usage, budget and allotment
|
|
151
|
+
* notice says the same thing at the same step, so they share this.
|
|
152
|
+
*/ export function usageNotificationLevel(percent) {
|
|
153
|
+
return percent >= 100 ? 'warning' : 'info';
|
|
154
|
+
}
|
|
155
|
+
/** The loudest of several levels, or `neutral` for none. */ export function loudestNotificationLevel(levels) {
|
|
156
|
+
let best = NOTIFICATION_LEVELS.length - 1;
|
|
157
|
+
for (const level of levels){
|
|
158
|
+
const rank = NOTIFICATION_LEVELS.indexOf(level);
|
|
159
|
+
if (rank >= 0 && rank < best) best = rank;
|
|
160
|
+
}
|
|
161
|
+
return NOTIFICATION_LEVELS[best];
|
|
162
|
+
}
|
|
163
|
+
/**
|
|
164
|
+
* The declared categories, in the order the settings page lists them: after
|
|
165
|
+
* the workspace's own work and before the platform's notices, which is where
|
|
166
|
+
* a plugin's traffic sits in a reader's day.
|
|
167
|
+
*/ const DECLARED_CATEGORIES = PLUGIN_NOTIFICATION_CATEGORIES_DECLARED;
|
|
168
|
+
/**
|
|
169
|
+
* The core's rows listed before the declared ones. Every other core category
|
|
170
|
+
* follows them, in the order its `Record` spells it, so a new core category
|
|
171
|
+
* cannot be left off the page.
|
|
172
|
+
*/ const LEADING_CATEGORIES = [
|
|
173
|
+
'billing',
|
|
174
|
+
'team',
|
|
175
|
+
'content'
|
|
176
|
+
];
|
|
177
|
+
function inCategoryOrder(core, declared) {
|
|
178
|
+
// Every core id is written below, so the keys the type promises are there.
|
|
179
|
+
const out = {};
|
|
180
|
+
for (const id of LEADING_CATEGORIES)out[id] = core[id];
|
|
181
|
+
for (const declaration of DECLARED_CATEGORIES){
|
|
182
|
+
out[declaration.id] = declared(declaration);
|
|
183
|
+
}
|
|
184
|
+
for (const id of Object.keys(core)){
|
|
185
|
+
if (!LEADING_CATEGORIES.includes(id)) out[id] = core[id];
|
|
186
|
+
}
|
|
187
|
+
return out;
|
|
188
|
+
}
|
|
189
|
+
const CORE_CATEGORY_LABELS = {
|
|
61
190
|
billing: 'Billing',
|
|
62
191
|
team: 'Team & access',
|
|
63
192
|
content: 'Forms & bookings',
|
|
64
|
-
marketplace: 'Marketplace',
|
|
65
193
|
support: 'Support',
|
|
66
194
|
system: 'Product & system',
|
|
67
195
|
staff: 'Platform growth'
|
|
68
196
|
};
|
|
197
|
+
/** Every category's row name, the core's and the declared, in page order. */ export const NOTIFICATION_CATEGORY_LABELS = inCategoryOrder(CORE_CATEGORY_LABELS, (declaration)=>declaration.label);
|
|
69
198
|
/**
|
|
70
199
|
* The categories only staff can receive (AGL-3225).
|
|
71
200
|
*
|
|
@@ -86,29 +215,27 @@ export const NOTIFICATION_CATEGORY_LABELS = {
|
|
|
86
215
|
*
|
|
87
216
|
* Written as what ARRIVES rather than as what the bucket is called: "someone
|
|
88
217
|
* joins, a role changes" is checkable against your own feed in a way that
|
|
89
|
-
* "team and access events" is not. Exhaustive
|
|
90
|
-
* defaults below
|
|
91
|
-
* plain words what lands in
|
|
92
|
-
|
|
218
|
+
* "team and access events" is not. Exhaustive over the core's categories,
|
|
219
|
+
* like the channel defaults below, and required of every declaration — a new
|
|
220
|
+
* category cannot ship without somebody saying in plain words what lands in
|
|
221
|
+
* it.
|
|
222
|
+
*/ const CORE_CATEGORY_DESCRIPTIONS = {
|
|
93
223
|
billing: 'Invoices, failed payments, cancellations, and usage that crosses a plan limit.',
|
|
94
224
|
team: 'Somebody joins or leaves, a role changes, or a site is shared with you.',
|
|
95
225
|
content: 'Work arriving on your sites: form submissions, bookings, orders, low stock, and the tasks and leads assigned to you.',
|
|
96
|
-
marketplace: 'Decisions on plugin listings you submitted for review.',
|
|
97
226
|
support: 'New support tickets and replies on tickets you are following.',
|
|
98
227
|
system: 'Announcements, and the faults the platform finds in your account: sign-in methods removed, traffic limits reached, billing or sharing left in a broken state.',
|
|
99
228
|
staff: 'New accounts, new workspaces, and money moving — subscriptions starting, changing, failing and ending — across the whole platform. Only staff receive these.'
|
|
100
229
|
};
|
|
101
|
-
export
|
|
230
|
+
export const NOTIFICATION_CATEGORY_DESCRIPTIONS = inCategoryOrder(CORE_CATEGORY_DESCRIPTIONS, (declaration)=>declaration.description);
|
|
231
|
+
/**
|
|
232
|
+
* The bucket a type falls in: its prefix, when a category of that id exists,
|
|
233
|
+
* and `system` otherwise — the bucket nobody mutes to reduce noise, so a type
|
|
234
|
+
* nothing claims still reaches the person rather than riding a mute they set
|
|
235
|
+
* for something else.
|
|
236
|
+
*/ export function notificationCategory(type) {
|
|
102
237
|
const prefix = String(type).split('.')[0];
|
|
103
|
-
return
|
|
104
|
-
'billing',
|
|
105
|
-
'team',
|
|
106
|
-
'content',
|
|
107
|
-
'marketplace',
|
|
108
|
-
'support',
|
|
109
|
-
'system',
|
|
110
|
-
'staff'
|
|
111
|
-
].includes(prefix) ? prefix : 'system';
|
|
238
|
+
return Object.prototype.hasOwnProperty.call(NOTIFICATION_CATEGORY_LABELS, prefix) ? prefix : 'system';
|
|
112
239
|
}
|
|
113
240
|
/**
|
|
114
241
|
* Per-user mute map stored at `users/{uid}.notificationPrefs`
|
|
@@ -118,25 +245,19 @@ export function notificationCategory(type) {
|
|
|
118
245
|
}
|
|
119
246
|
/**
|
|
120
247
|
* The field on `users/{uid}` that holds a person's digest switches
|
|
121
|
-
* (AGL-2619): `{
|
|
122
|
-
*
|
|
123
|
-
*
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
* notification and the email it travels with.
|
|
248
|
+
* (AGL-2619): `{ [digestKey]: false }` turns one digest off, and an absent key
|
|
249
|
+
* leaves it on. Its own map rather than a key in `notificationPrefs`, because
|
|
250
|
+
* that map is keyed by CATEGORY and read by {@link notificationMuted} — a
|
|
251
|
+
* digest is a schedule a person keeps or drops, not a bucket of types, and one
|
|
252
|
+
* switch governs both the console notification and the email it travels with.
|
|
127
253
|
*/ export const DIGEST_PREFS_FIELD = 'digestPrefs';
|
|
254
|
+
/** Every declared digest, in the order the settings page lists them. */ export const NOTIFICATION_DIGESTS = PLUGIN_NOTIFICATION_DIGESTS_DECLARED;
|
|
128
255
|
/**
|
|
129
|
-
*
|
|
130
|
-
*
|
|
131
|
-
*
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
* preference comes to be written under one key and read under another — and
|
|
135
|
-
* it kept the plugin's vocabulary in a console page, where
|
|
136
|
-
* `check:plugin-domain-in-core` rightly refuses it.
|
|
137
|
-
*/ export const CRM_DAILY_DIGEST_KEY = 'crmDaily';
|
|
138
|
-
export function crmDailyDigestEnabled(prefs) {
|
|
139
|
-
return (prefs == null ? void 0 : prefs[CRM_DAILY_DIGEST_KEY]) !== false;
|
|
256
|
+
* Whether a person keeps one digest: on unless its key is stored `false`. It
|
|
257
|
+
* reads only its own key — a category mute lives in a different map and does
|
|
258
|
+
* not reach it.
|
|
259
|
+
*/ export function digestEnabled(prefs, key) {
|
|
260
|
+
return (prefs == null ? void 0 : prefs[key]) !== false;
|
|
140
261
|
}
|
|
141
262
|
/**
|
|
142
263
|
* The field on `users/{uid}` naming the workspaces whose weekly insights a
|
|
@@ -161,10 +282,12 @@ export const NOTIFICATION_SETTINGS_FIELD = 'notificationSettings';
|
|
|
161
282
|
* Turning a busy site's form submissions into mail by default would put that
|
|
162
283
|
* domain's reputation behind traffic the recipient never asked for.
|
|
163
284
|
*
|
|
164
|
-
* Exhaustive
|
|
165
|
-
* compile error here until somebody
|
|
166
|
-
*
|
|
167
|
-
|
|
285
|
+
* Exhaustive over the core's categories deliberately: a new
|
|
286
|
+
* {@link CoreNotificationCategory} is a compile error here until somebody
|
|
287
|
+
* decides what it does by default, which is the one question a new category
|
|
288
|
+
* must not be able to ship without answering — and a declared category may not
|
|
289
|
+
* compile without its `defaults` for the same reason.
|
|
290
|
+
*/ const CORE_CHANNEL_DEFAULTS = {
|
|
168
291
|
billing: {
|
|
169
292
|
console: true,
|
|
170
293
|
email: false
|
|
@@ -177,10 +300,6 @@ export const NOTIFICATION_SETTINGS_FIELD = 'notificationSettings';
|
|
|
177
300
|
console: true,
|
|
178
301
|
email: false
|
|
179
302
|
},
|
|
180
|
-
marketplace: {
|
|
181
|
-
console: true,
|
|
182
|
-
email: false
|
|
183
|
-
},
|
|
184
303
|
support: {
|
|
185
304
|
console: true,
|
|
186
305
|
email: false
|
|
@@ -198,22 +317,41 @@ export const NOTIFICATION_SETTINGS_FIELD = 'notificationSettings';
|
|
|
198
317
|
email: false
|
|
199
318
|
}
|
|
200
319
|
};
|
|
320
|
+
export const NOTIFICATION_CHANNEL_DEFAULTS = inCategoryOrder(CORE_CHANNEL_DEFAULTS, (declaration)=>_extends({}, declaration.defaults));
|
|
201
321
|
/**
|
|
202
322
|
* The types that send their OWN email and must never be mailed again by the
|
|
203
323
|
* generic channel (AGL-3224).
|
|
204
324
|
*
|
|
205
325
|
* Both digests compose a message the fan-out could not reproduce — a day's
|
|
206
326
|
* owed tasks, a week's figures — and send it from their own route under their
|
|
207
|
-
* own switch (`digestPrefs
|
|
327
|
+
* own switch (a key in `digestPrefs`, `insightDigests.{orgId}`). A recipient
|
|
208
328
|
* who switches the `content` email channel on would otherwise receive the
|
|
209
329
|
* digest twice: once as the digest, once as a one-line "Daily CRM digest"
|
|
210
330
|
* notification saying that the digest happened.
|
|
211
331
|
*/ export const NOTIFICATION_SELF_SENT_EMAIL_TYPES = new Set([
|
|
212
332
|
'content.crmDailyDigest',
|
|
213
333
|
'content.insightsDigest',
|
|
334
|
+
// The task-reminders route mails one reminder per member per run, listing
|
|
335
|
+
// every task due, and writes one notification per task; mailed again
|
|
336
|
+
// here, each task would arrive a second time as its own email (AGL-3432).
|
|
337
|
+
'content.taskReminder',
|
|
214
338
|
// Emailed by `notifyRiskEvent` itself, as account mail (AGL-3368).
|
|
215
339
|
'system.riskNotice'
|
|
216
340
|
]);
|
|
341
|
+
/**
|
|
342
|
+
* The tooltip on a self-sent type's disabled email switch: it names what
|
|
343
|
+
* DOES govern that mail, which differs by type (AGL-3432). Calling a task
|
|
344
|
+
* reminder a digest sent people looking for a Digests switch that is not it.
|
|
345
|
+
*/ export function selfSentEmailNote(type) {
|
|
346
|
+
switch(type){
|
|
347
|
+
case 'content.taskReminder':
|
|
348
|
+
return 'Task reminders send their own email, one per run listing every task due. Mute this category to stop them.';
|
|
349
|
+
case 'system.riskNotice':
|
|
350
|
+
return 'Risk and account notices are always emailed, whatever this switch says.';
|
|
351
|
+
default:
|
|
352
|
+
return 'This digest sends its own email, under its switch in Digests.';
|
|
353
|
+
}
|
|
354
|
+
}
|
|
217
355
|
/**
|
|
218
356
|
* Whether a channel is on for one notification, at its own scope.
|
|
219
357
|
*
|