@aglyn/aglyn 1.0.0-beta.143
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +201 -0
- package/README.md +11 -0
- package/package.json +66 -0
- package/src/index.d.ts +25 -0
- package/src/index.js +26 -0
- package/src/index.js.map +1 -0
- package/src/lib/aglyn.d.ts +31 -0
- package/src/lib/aglyn.js +114 -0
- package/src/lib/aglyn.js.map +1 -0
- package/src/lib/app-utils/abuse-report.d.ts +193 -0
- package/src/lib/app-utils/abuse-report.js +321 -0
- package/src/lib/app-utils/abuse-report.js.map +1 -0
- package/src/lib/app-utils/accept-negotiation.d.ts +129 -0
- package/src/lib/app-utils/accept-negotiation.js +266 -0
- package/src/lib/app-utils/accept-negotiation.js.map +1 -0
- package/src/lib/app-utils/account-emails.d.ts +263 -0
- package/src/lib/app-utils/account-emails.js +264 -0
- package/src/lib/app-utils/account-emails.js.map +1 -0
- package/src/lib/app-utils/actions.d.ts +717 -0
- package/src/lib/app-utils/actions.js +1031 -0
- package/src/lib/app-utils/actions.js.map +1 -0
- package/src/lib/app-utils/activity-presenter.d.ts +152 -0
- package/src/lib/app-utils/activity-presenter.js +326 -0
- package/src/lib/app-utils/activity-presenter.js.map +1 -0
- package/src/lib/app-utils/advertising-tag-mounts.d.ts +133 -0
- package/src/lib/app-utils/advertising-tag-mounts.js +118 -0
- package/src/lib/app-utils/advertising-tag-mounts.js.map +1 -0
- package/src/lib/app-utils/advertising-tags.d.ts +307 -0
- package/src/lib/app-utils/advertising-tags.js +525 -0
- package/src/lib/app-utils/advertising-tags.js.map +1 -0
- package/src/lib/app-utils/agent-api-catalog.d.ts +94 -0
- package/src/lib/app-utils/agent-api-catalog.js +106 -0
- package/src/lib/app-utils/agent-api-catalog.js.map +1 -0
- package/src/lib/app-utils/agent-openapi.d.ts +103 -0
- package/src/lib/app-utils/agent-openapi.js +1128 -0
- package/src/lib/app-utils/agent-openapi.js.map +1 -0
- package/src/lib/app-utils/analytics-beacon.d.ts +154 -0
- package/src/lib/app-utils/analytics-beacon.js +152 -0
- package/src/lib/app-utils/analytics-beacon.js.map +1 -0
- package/src/lib/app-utils/analytics-environment.d.ts +133 -0
- package/src/lib/app-utils/analytics-environment.js +152 -0
- package/src/lib/app-utils/analytics-environment.js.map +1 -0
- package/src/lib/app-utils/analytics-events.d.ts +744 -0
- package/src/lib/app-utils/analytics-events.js +650 -0
- package/src/lib/app-utils/analytics-events.js.map +1 -0
- package/src/lib/app-utils/analytics-link-clicks.d.ts +102 -0
- package/src/lib/app-utils/analytics-link-clicks.js +267 -0
- package/src/lib/app-utils/analytics-link-clicks.js.map +1 -0
- package/src/lib/app-utils/analytics-path-key.d.ts +46 -0
- package/src/lib/app-utils/analytics-path-key.js +46 -0
- package/src/lib/app-utils/analytics-path-key.js.map +1 -0
- package/src/lib/app-utils/api-adapter.d.ts +47 -0
- package/src/lib/app-utils/api-adapter.js +367 -0
- package/src/lib/app-utils/api-adapter.js.map +1 -0
- package/src/lib/app-utils/api-idempotency.d.ts +169 -0
- package/src/lib/app-utils/api-idempotency.js +213 -0
- package/src/lib/app-utils/api-idempotency.js.map +1 -0
- package/src/lib/app-utils/api-plugins.d.ts +210 -0
- package/src/lib/app-utils/api-plugins.js +221 -0
- package/src/lib/app-utils/api-plugins.js.map +1 -0
- package/src/lib/app-utils/assist-credits.d.ts +482 -0
- package/src/lib/app-utils/assist-credits.js +509 -0
- package/src/lib/app-utils/assist-credits.js.map +1 -0
- package/src/lib/app-utils/attribution-attribute.d.ts +34 -0
- package/src/lib/app-utils/attribution-attribute.js +34 -0
- package/src/lib/app-utils/attribution-attribute.js.map +1 -0
- package/src/lib/app-utils/attribution-guard.d.ts +130 -0
- package/src/lib/app-utils/attribution-guard.js +410 -0
- package/src/lib/app-utils/attribution-guard.js.map +1 -0
- package/src/lib/app-utils/author-css.d.ts +123 -0
- package/src/lib/app-utils/author-css.js +275 -0
- package/src/lib/app-utils/author-css.js.map +1 -0
- package/src/lib/app-utils/author-html-markdown.d.ts +31 -0
- package/src/lib/app-utils/author-html-markdown.js +497 -0
- package/src/lib/app-utils/author-html-markdown.js.map +1 -0
- package/src/lib/app-utils/author-html.d.ts +135 -0
- package/src/lib/app-utils/author-html.js +1037 -0
- package/src/lib/app-utils/author-html.js.map +1 -0
- package/src/lib/app-utils/automation-placeholders.d.ts +72 -0
- package/src/lib/app-utils/automation-placeholders.js +207 -0
- package/src/lib/app-utils/automation-placeholders.js.map +1 -0
- package/src/lib/app-utils/bandwidth-cap.d.ts +183 -0
- package/src/lib/app-utils/bandwidth-cap.js +193 -0
- package/src/lib/app-utils/bandwidth-cap.js.map +1 -0
- package/src/lib/app-utils/binding-token-catalog.d.ts +82 -0
- package/src/lib/app-utils/binding-token-catalog.js +293 -0
- package/src/lib/app-utils/binding-token-catalog.js.map +1 -0
- package/src/lib/app-utils/binding-tokens.d.ts +157 -0
- package/src/lib/app-utils/binding-tokens.js +251 -0
- package/src/lib/app-utils/binding-tokens.js.map +1 -0
- package/src/lib/app-utils/breadcrumb-json-ld.d.ts +57 -0
- package/src/lib/app-utils/breadcrumb-json-ld.js +67 -0
- package/src/lib/app-utils/breadcrumb-json-ld.js.map +1 -0
- package/src/lib/app-utils/campaign-attribution.d.ts +117 -0
- package/src/lib/app-utils/campaign-attribution.js +162 -0
- package/src/lib/app-utils/campaign-attribution.js.map +1 -0
- package/src/lib/app-utils/campaign-forwarding.d.ts +220 -0
- package/src/lib/app-utils/campaign-forwarding.js +332 -0
- package/src/lib/app-utils/campaign-forwarding.js.map +1 -0
- package/src/lib/app-utils/campaign-membership.d.ts +109 -0
- package/src/lib/app-utils/campaign-membership.js +176 -0
- package/src/lib/app-utils/campaign-membership.js.map +1 -0
- package/src/lib/app-utils/campaign-touch.d.ts +206 -0
- package/src/lib/app-utils/campaign-touch.js +326 -0
- package/src/lib/app-utils/campaign-touch.js.map +1 -0
- package/src/lib/app-utils/child-contract-compose.d.ts +28 -0
- package/src/lib/app-utils/child-contract-compose.js +140 -0
- package/src/lib/app-utils/child-contract-compose.js.map +1 -0
- package/src/lib/app-utils/child-contract.d.ts +129 -0
- package/src/lib/app-utils/child-contract.js +153 -0
- package/src/lib/app-utils/child-contract.js.map +1 -0
- package/src/lib/app-utils/collection-delete.d.ts +113 -0
- package/src/lib/app-utils/collection-delete.js +120 -0
- package/src/lib/app-utils/collection-delete.js.map +1 -0
- package/src/lib/app-utils/collection-entries.d.ts +833 -0
- package/src/lib/app-utils/collection-entries.js +1285 -0
- package/src/lib/app-utils/collection-entries.js.map +1 -0
- package/src/lib/app-utils/collection-entry-date.d.ts +129 -0
- package/src/lib/app-utils/collection-entry-date.js +183 -0
- package/src/lib/app-utils/collection-entry-date.js.map +1 -0
- package/src/lib/app-utils/collection-kind.d.ts +55 -0
- package/src/lib/app-utils/collection-kind.js +69 -0
- package/src/lib/app-utils/collection-kind.js.map +1 -0
- package/src/lib/app-utils/collection-slug.d.ts +79 -0
- package/src/lib/app-utils/collection-slug.js +70 -0
- package/src/lib/app-utils/collection-slug.js.map +1 -0
- package/src/lib/app-utils/compose-layout-nodes.d.ts +147 -0
- package/src/lib/app-utils/compose-layout-nodes.js +261 -0
- package/src/lib/app-utils/compose-layout-nodes.js.map +1 -0
- package/src/lib/app-utils/compose-layout-props.d.ts +71 -0
- package/src/lib/app-utils/compose-layout-props.js +61 -0
- package/src/lib/app-utils/compose-layout-props.js.map +1 -0
- package/src/lib/app-utils/compose-reusable-components.d.ts +504 -0
- package/src/lib/app-utils/compose-reusable-components.js +1366 -0
- package/src/lib/app-utils/compose-reusable-components.js.map +1 -0
- package/src/lib/app-utils/compress.d.ts +35 -0
- package/src/lib/app-utils/compress.js +38 -0
- package/src/lib/app-utils/compress.js.map +1 -0
- package/src/lib/app-utils/consent-banner-ui.d.ts +226 -0
- package/src/lib/app-utils/consent-banner-ui.js +583 -0
- package/src/lib/app-utils/consent-banner-ui.js.map +1 -0
- package/src/lib/app-utils/consent-groups.d.ts +189 -0
- package/src/lib/app-utils/consent-groups.js +219 -0
- package/src/lib/app-utils/consent-groups.js.map +1 -0
- package/src/lib/app-utils/consent-preferences-dialog.d.ts +58 -0
- package/src/lib/app-utils/consent-preferences-dialog.js +106 -0
- package/src/lib/app-utils/consent-preferences-dialog.js.map +1 -0
- package/src/lib/app-utils/console-record-links.d.ts +163 -0
- package/src/lib/app-utils/console-record-links.js +178 -0
- package/src/lib/app-utils/console-record-links.js.map +1 -0
- package/src/lib/app-utils/console-routes.d.ts +658 -0
- package/src/lib/app-utils/console-routes.js +489 -0
- package/src/lib/app-utils/console-routes.js.map +1 -0
- package/src/lib/app-utils/console-widget-slot-context.d.ts +46 -0
- package/src/lib/app-utils/console-widget-slot-context.js +23 -0
- package/src/lib/app-utils/console-widget-slot-context.js.map +1 -0
- package/src/lib/app-utils/contact-custom-fields.d.ts +191 -0
- package/src/lib/app-utils/contact-custom-fields.js +349 -0
- package/src/lib/app-utils/contact-custom-fields.js.map +1 -0
- package/src/lib/app-utils/contact-holder.d.ts +52 -0
- package/src/lib/app-utils/contact-holder.js +98 -0
- package/src/lib/app-utils/contact-holder.js.map +1 -0
- package/src/lib/app-utils/contact-merge.d.ts +136 -0
- package/src/lib/app-utils/contact-merge.js +379 -0
- package/src/lib/app-utils/contact-merge.js.map +1 -0
- package/src/lib/app-utils/contacts.d.ts +554 -0
- package/src/lib/app-utils/contacts.js +401 -0
- package/src/lib/app-utils/contacts.js.map +1 -0
- package/src/lib/app-utils/content-author-profile.d.ts +68 -0
- package/src/lib/app-utils/content-author-profile.js +118 -0
- package/src/lib/app-utils/content-author-profile.js.map +1 -0
- package/src/lib/app-utils/content-authors.d.ts +662 -0
- package/src/lib/app-utils/content-authors.js +771 -0
- package/src/lib/app-utils/content-authors.js.map +1 -0
- package/src/lib/app-utils/content-schema-type.d.ts +81 -0
- package/src/lib/app-utils/content-schema-type.js +87 -0
- package/src/lib/app-utils/content-schema-type.js.map +1 -0
- package/src/lib/app-utils/contexts.d.ts +35 -0
- package/src/lib/app-utils/contexts.js +35 -0
- package/src/lib/app-utils/contexts.js.map +1 -0
- package/src/lib/app-utils/create-resource-uid.d.ts +18 -0
- package/src/lib/app-utils/create-resource-uid.js +23 -0
- package/src/lib/app-utils/create-resource-uid.js.map +1 -0
- package/src/lib/app-utils/crm-booking.d.ts +75 -0
- package/src/lib/app-utils/crm-booking.js +133 -0
- package/src/lib/app-utils/crm-booking.js.map +1 -0
- package/src/lib/app-utils/crm-csv.d.ts +232 -0
- package/src/lib/app-utils/crm-csv.js +432 -0
- package/src/lib/app-utils/crm-csv.js.map +1 -0
- package/src/lib/app-utils/crm-digest.d.ts +179 -0
- package/src/lib/app-utils/crm-digest.js +271 -0
- package/src/lib/app-utils/crm-digest.js.map +1 -0
- package/src/lib/app-utils/crm-email-templates.d.ts +172 -0
- package/src/lib/app-utils/crm-email-templates.js +382 -0
- package/src/lib/app-utils/crm-email-templates.js.map +1 -0
- package/src/lib/app-utils/crm-inbound.d.ts +245 -0
- package/src/lib/app-utils/crm-inbound.js +407 -0
- package/src/lib/app-utils/crm-inbound.js.map +1 -0
- package/src/lib/app-utils/crm-kinds.d.ts +73 -0
- package/src/lib/app-utils/crm-kinds.js +92 -0
- package/src/lib/app-utils/crm-kinds.js.map +1 -0
- package/src/lib/app-utils/crm-next-activity.d.ts +107 -0
- package/src/lib/app-utils/crm-next-activity.js +140 -0
- package/src/lib/app-utils/crm-next-activity.js.map +1 -0
- package/src/lib/app-utils/crm-reports.d.ts +479 -0
- package/src/lib/app-utils/crm-reports.js +680 -0
- package/src/lib/app-utils/crm-reports.js.map +1 -0
- package/src/lib/app-utils/crm-task-reminders.d.ts +129 -0
- package/src/lib/app-utils/crm-task-reminders.js +139 -0
- package/src/lib/app-utils/crm-task-reminders.js.map +1 -0
- package/src/lib/app-utils/crm.d.ts +1546 -0
- package/src/lib/app-utils/crm.js +1814 -0
- package/src/lib/app-utils/crm.js.map +1 -0
- package/src/lib/app-utils/csp-report.d.ts +84 -0
- package/src/lib/app-utils/csp-report.js +177 -0
- package/src/lib/app-utils/csp-report.js.map +1 -0
- package/src/lib/app-utils/csv-import.d.ts +192 -0
- package/src/lib/app-utils/csv-import.js +279 -0
- package/src/lib/app-utils/csv-import.js.map +1 -0
- package/src/lib/app-utils/dataset-csv.d.ts +109 -0
- package/src/lib/app-utils/dataset-csv.js +235 -0
- package/src/lib/app-utils/dataset-csv.js.map +1 -0
- package/src/lib/app-utils/dataset-models.d.ts +194 -0
- package/src/lib/app-utils/dataset-models.js +409 -0
- package/src/lib/app-utils/dataset-models.js.map +1 -0
- package/src/lib/app-utils/dataset-query.d.ts +57 -0
- package/src/lib/app-utils/dataset-query.js +126 -0
- package/src/lib/app-utils/dataset-query.js.map +1 -0
- package/src/lib/app-utils/datasets.d.ts +136 -0
- package/src/lib/app-utils/datasets.js +177 -0
- package/src/lib/app-utils/datasets.js.map +1 -0
- package/src/lib/app-utils/decompress.d.ts +36 -0
- package/src/lib/app-utils/decompress.js +32 -0
- package/src/lib/app-utils/decompress.js.map +1 -0
- package/src/lib/app-utils/dedicated-sending-domain.d.ts +47 -0
- package/src/lib/app-utils/dedicated-sending-domain.js +114 -0
- package/src/lib/app-utils/dedicated-sending-domain.js.map +1 -0
- package/src/lib/app-utils/deferred-image.d.ts +86 -0
- package/src/lib/app-utils/deferred-image.js +83 -0
- package/src/lib/app-utils/deferred-image.js.map +1 -0
- package/src/lib/app-utils/definition-canvas-tree.d.ts +61 -0
- package/src/lib/app-utils/definition-canvas-tree.js +126 -0
- package/src/lib/app-utils/definition-canvas-tree.js.map +1 -0
- package/src/lib/app-utils/deployment-shape.d.ts +167 -0
- package/src/lib/app-utils/deployment-shape.js +238 -0
- package/src/lib/app-utils/deployment-shape.js.map +1 -0
- package/src/lib/app-utils/detect-template-placeholders.d.ts +30 -0
- package/src/lib/app-utils/detect-template-placeholders.js +53 -0
- package/src/lib/app-utils/detect-template-placeholders.js.map +1 -0
- package/src/lib/app-utils/dmca-counter-notice.d.ts +185 -0
- package/src/lib/app-utils/dmca-counter-notice.js +277 -0
- package/src/lib/app-utils/dmca-counter-notice.js.map +1 -0
- package/src/lib/app-utils/docs-deflection.d.ts +156 -0
- package/src/lib/app-utils/docs-deflection.js +547 -0
- package/src/lib/app-utils/docs-deflection.js.map +1 -0
- package/src/lib/app-utils/docs-help.d.ts +57 -0
- package/src/lib/app-utils/docs-help.generated.d.ts +303 -0
- package/src/lib/app-utils/docs-help.generated.js +867 -0
- package/src/lib/app-utils/docs-help.generated.js.map +1 -0
- package/src/lib/app-utils/docs-help.js +46 -0
- package/src/lib/app-utils/docs-help.js.map +1 -0
- package/src/lib/app-utils/docs-index.generated.d.ts +29 -0
- package/src/lib/app-utils/docs-index.generated.js +8388 -0
- package/src/lib/app-utils/docs-index.generated.js.map +1 -0
- package/src/lib/app-utils/docs-retrieval.d.ts +67 -0
- package/src/lib/app-utils/docs-retrieval.js +188 -0
- package/src/lib/app-utils/docs-retrieval.js.map +1 -0
- package/src/lib/app-utils/document-landmark.d.ts +50 -0
- package/src/lib/app-utils/document-landmark.js +100 -0
- package/src/lib/app-utils/document-landmark.js.map +1 -0
- package/src/lib/app-utils/duplicate-resource.d.ts +101 -0
- package/src/lib/app-utils/duplicate-resource.js +206 -0
- package/src/lib/app-utils/duplicate-resource.js.map +1 -0
- package/src/lib/app-utils/dynamic-list-rule.d.ts +471 -0
- package/src/lib/app-utils/dynamic-list-rule.js +914 -0
- package/src/lib/app-utils/dynamic-list-rule.js.map +1 -0
- package/src/lib/app-utils/element-animation.d.ts +200 -0
- package/src/lib/app-utils/element-animation.js +233 -0
- package/src/lib/app-utils/element-animation.js.map +1 -0
- package/src/lib/app-utils/element-hidden-style.d.ts +46 -0
- package/src/lib/app-utils/element-hidden-style.js +48 -0
- package/src/lib/app-utils/element-hidden-style.js.map +1 -0
- package/src/lib/app-utils/element-ui.d.ts +243 -0
- package/src/lib/app-utils/element-ui.js +459 -0
- package/src/lib/app-utils/element-ui.js.map +1 -0
- package/src/lib/app-utils/email-starter-policy.d.ts +160 -0
- package/src/lib/app-utils/email-starter-policy.js +327 -0
- package/src/lib/app-utils/email-starter-policy.js.map +1 -0
- package/src/lib/app-utils/email-topics.d.ts +310 -0
- package/src/lib/app-utils/email-topics.js +336 -0
- package/src/lib/app-utils/email-topics.js.map +1 -0
- package/src/lib/app-utils/enabled-plugins-context.d.ts +100 -0
- package/src/lib/app-utils/enabled-plugins-context.js +113 -0
- package/src/lib/app-utils/enabled-plugins-context.js.map +1 -0
- package/src/lib/app-utils/ensure-canvas-root.d.ts +38 -0
- package/src/lib/app-utils/ensure-canvas-root.js +61 -0
- package/src/lib/app-utils/ensure-canvas-root.js.map +1 -0
- package/src/lib/app-utils/entity-picker-context.d.ts +199 -0
- package/src/lib/app-utils/entity-picker-context.js +93 -0
- package/src/lib/app-utils/entity-picker-context.js.map +1 -0
- package/src/lib/app-utils/error-beacon.d.ts +107 -0
- package/src/lib/app-utils/error-beacon.js +296 -0
- package/src/lib/app-utils/error-beacon.js.map +1 -0
- package/src/lib/app-utils/expand-repeatables.d.ts +172 -0
- package/src/lib/app-utils/expand-repeatables.js +299 -0
- package/src/lib/app-utils/expand-repeatables.js.map +1 -0
- package/src/lib/app-utils/foreign-script.d.ts +82 -0
- package/src/lib/app-utils/foreign-script.js +102 -0
- package/src/lib/app-utils/foreign-script.js.map +1 -0
- package/src/lib/app-utils/form-abuse-ceiling.d.ts +146 -0
- package/src/lib/app-utils/form-abuse-ceiling.js +158 -0
- package/src/lib/app-utils/form-abuse-ceiling.js.map +1 -0
- package/src/lib/app-utils/form-contract.d.ts +198 -0
- package/src/lib/app-utils/form-contract.js +282 -0
- package/src/lib/app-utils/form-contract.js.map +1 -0
- package/src/lib/app-utils/form-dataset-binding.d.ts +50 -0
- package/src/lib/app-utils/form-dataset-binding.js +74 -0
- package/src/lib/app-utils/form-dataset-binding.js.map +1 -0
- package/src/lib/app-utils/forms.d.ts +727 -0
- package/src/lib/app-utils/forms.js +777 -0
- package/src/lib/app-utils/forms.js.map +1 -0
- package/src/lib/app-utils/functions.d.ts +188 -0
- package/src/lib/app-utils/functions.js +529 -0
- package/src/lib/app-utils/functions.js.map +1 -0
- package/src/lib/app-utils/guarded-version-save.d.ts +91 -0
- package/src/lib/app-utils/guarded-version-save.js +131 -0
- package/src/lib/app-utils/guarded-version-save.js.map +1 -0
- package/src/lib/app-utils/health-report.d.ts +1766 -0
- package/src/lib/app-utils/health-report.js +2072 -0
- package/src/lib/app-utils/health-report.js.map +1 -0
- package/src/lib/app-utils/host-naming.d.ts +135 -0
- package/src/lib/app-utils/host-naming.js +188 -0
- package/src/lib/app-utils/host-naming.js.map +1 -0
- package/src/lib/app-utils/host-permissions.d.ts +76 -0
- package/src/lib/app-utils/host-permissions.js +119 -0
- package/src/lib/app-utils/host-permissions.js.map +1 -0
- package/src/lib/app-utils/host-tokens.d.ts +228 -0
- package/src/lib/app-utils/host-tokens.js +304 -0
- package/src/lib/app-utils/host-tokens.js.map +1 -0
- package/src/lib/app-utils/idp-profile.d.ts +83 -0
- package/src/lib/app-utils/idp-profile.js +268 -0
- package/src/lib/app-utils/idp-profile.js.map +1 -0
- package/src/lib/app-utils/image-upload-types.d.ts +49 -0
- package/src/lib/app-utils/image-upload-types.js +86 -0
- package/src/lib/app-utils/image-upload-types.js.map +1 -0
- package/src/lib/app-utils/index.d.ts +18 -0
- package/src/lib/app-utils/index.js +23 -0
- package/src/lib/app-utils/index.js.map +1 -0
- package/src/lib/app-utils/internal-traffic.d.ts +197 -0
- package/src/lib/app-utils/internal-traffic.js +288 -0
- package/src/lib/app-utils/internal-traffic.js.map +1 -0
- package/src/lib/app-utils/lineal-order.d.ts +62 -0
- package/src/lib/app-utils/lineal-order.js +65 -0
- package/src/lib/app-utils/lineal-order.js.map +1 -0
- package/src/lib/app-utils/link-references.d.ts +36 -0
- package/src/lib/app-utils/link-references.js +89 -0
- package/src/lib/app-utils/link-references.js.map +1 -0
- package/src/lib/app-utils/link-target-search-context.d.ts +123 -0
- package/src/lib/app-utils/link-target-search-context.js +221 -0
- package/src/lib/app-utils/link-target-search-context.js.map +1 -0
- package/src/lib/app-utils/list-assignment-policy.d.ts +169 -0
- package/src/lib/app-utils/list-assignment-policy.js +170 -0
- package/src/lib/app-utils/list-assignment-policy.js.map +1 -0
- package/src/lib/app-utils/list-import.d.ts +158 -0
- package/src/lib/app-utils/list-import.js +332 -0
- package/src/lib/app-utils/list-import.js.map +1 -0
- package/src/lib/app-utils/llms-txt.d.ts +104 -0
- package/src/lib/app-utils/llms-txt.js +144 -0
- package/src/lib/app-utils/llms-txt.js.map +1 -0
- package/src/lib/app-utils/local-storage-budget.d.ts +75 -0
- package/src/lib/app-utils/local-storage-budget.js +153 -0
- package/src/lib/app-utils/local-storage-budget.js.map +1 -0
- package/src/lib/app-utils/lockdown.d.ts +698 -0
- package/src/lib/app-utils/lockdown.js +929 -0
- package/src/lib/app-utils/lockdown.js.map +1 -0
- package/src/lib/app-utils/margin-utilization.d.ts +267 -0
- package/src/lib/app-utils/margin-utilization.js +351 -0
- package/src/lib/app-utils/margin-utilization.js.map +1 -0
- package/src/lib/app-utils/markdown-lite.d.ts +297 -0
- package/src/lib/app-utils/markdown-lite.js +705 -0
- package/src/lib/app-utils/markdown-lite.js.map +1 -0
- package/src/lib/app-utils/marketing-consent.d.ts +704 -0
- package/src/lib/app-utils/marketing-consent.js +783 -0
- package/src/lib/app-utils/marketing-consent.js.map +1 -0
- package/src/lib/app-utils/marketplace-listing-visibility.d.ts +120 -0
- package/src/lib/app-utils/marketplace-listing-visibility.js +139 -0
- package/src/lib/app-utils/marketplace-listing-visibility.js.map +1 -0
- package/src/lib/app-utils/marketplace-overrides.d.ts +271 -0
- package/src/lib/app-utils/marketplace-overrides.js +462 -0
- package/src/lib/app-utils/marketplace-overrides.js.map +1 -0
- package/src/lib/app-utils/marketplace-provenance.d.ts +150 -0
- package/src/lib/app-utils/marketplace-provenance.js +136 -0
- package/src/lib/app-utils/marketplace-provenance.js.map +1 -0
- package/src/lib/app-utils/marketplace-theme.d.ts +237 -0
- package/src/lib/app-utils/marketplace-theme.js +525 -0
- package/src/lib/app-utils/marketplace-theme.js.map +1 -0
- package/src/lib/app-utils/marketplace-update-state.d.ts +119 -0
- package/src/lib/app-utils/marketplace-update-state.js +132 -0
- package/src/lib/app-utils/marketplace-update-state.js.map +1 -0
- package/src/lib/app-utils/marketplace-verification.d.ts +95 -0
- package/src/lib/app-utils/marketplace-verification.js +81 -0
- package/src/lib/app-utils/marketplace-verification.js.map +1 -0
- package/src/lib/app-utils/measure-node-map.d.ts +76 -0
- package/src/lib/app-utils/measure-node-map.js +111 -0
- package/src/lib/app-utils/measure-node-map.js.map +1 -0
- package/src/lib/app-utils/media-alt.d.ts +55 -0
- package/src/lib/app-utils/media-alt.js +58 -0
- package/src/lib/app-utils/media-alt.js.map +1 -0
- package/src/lib/app-utils/media-asset-facts.d.ts +125 -0
- package/src/lib/app-utils/media-asset-facts.js +467 -0
- package/src/lib/app-utils/media-asset-facts.js.map +1 -0
- package/src/lib/app-utils/media-cdn-scope.d.ts +65 -0
- package/src/lib/app-utils/media-cdn-scope.js +75 -0
- package/src/lib/app-utils/media-cdn-scope.js.map +1 -0
- package/src/lib/app-utils/media-folders.d.ts +161 -0
- package/src/lib/app-utils/media-folders.js +230 -0
- package/src/lib/app-utils/media-folders.js.map +1 -0
- package/src/lib/app-utils/media-metadata.d.ts +277 -0
- package/src/lib/app-utils/media-metadata.js +388 -0
- package/src/lib/app-utils/media-metadata.js.map +1 -0
- package/src/lib/app-utils/media-picker-context.d.ts +93 -0
- package/src/lib/app-utils/media-picker-context.js +26 -0
- package/src/lib/app-utils/media-picker-context.js.map +1 -0
- package/src/lib/app-utils/media-quarantine.d.ts +247 -0
- package/src/lib/app-utils/media-quarantine.js +323 -0
- package/src/lib/app-utils/media-quarantine.js.map +1 -0
- package/src/lib/app-utils/media-ref.d.ts +661 -0
- package/src/lib/app-utils/media-ref.js +1055 -0
- package/src/lib/app-utils/media-ref.js.map +1 -0
- package/src/lib/app-utils/media-takedown-reach.d.ts +126 -0
- package/src/lib/app-utils/media-takedown-reach.js +143 -0
- package/src/lib/app-utils/media-takedown-reach.js.map +1 -0
- package/src/lib/app-utils/member-email-aliases.d.ts +180 -0
- package/src/lib/app-utils/member-email-aliases.js +217 -0
- package/src/lib/app-utils/member-email-aliases.js.map +1 -0
- package/src/lib/app-utils/merge-node-sx.d.ts +47 -0
- package/src/lib/app-utils/merge-node-sx.js +123 -0
- package/src/lib/app-utils/merge-node-sx.js.map +1 -0
- package/src/lib/app-utils/name-match.d.ts +155 -0
- package/src/lib/app-utils/name-match.js +175 -0
- package/src/lib/app-utils/name-match.js.map +1 -0
- package/src/lib/app-utils/name-search.d.ts +117 -0
- package/src/lib/app-utils/name-search.js +145 -0
- package/src/lib/app-utils/name-search.js.map +1 -0
- package/src/lib/app-utils/node-capabilities.d.ts +85 -0
- package/src/lib/app-utils/node-capabilities.js +88 -0
- package/src/lib/app-utils/node-capabilities.js.map +1 -0
- package/src/lib/app-utils/node-definition-sanitizer.d.ts +164 -0
- package/src/lib/app-utils/node-definition-sanitizer.js +402 -0
- package/src/lib/app-utils/node-definition-sanitizer.js.map +1 -0
- package/src/lib/app-utils/node-identity.d.ts +47 -0
- package/src/lib/app-utils/node-identity.js +50 -0
- package/src/lib/app-utils/node-identity.js.map +1 -0
- package/src/lib/app-utils/node-interactions.d.ts +102 -0
- package/src/lib/app-utils/node-interactions.js +192 -0
- package/src/lib/app-utils/node-interactions.js.map +1 -0
- package/src/lib/app-utils/node-url-policy.d.ts +54 -0
- package/src/lib/app-utils/node-url-policy.js +72 -0
- package/src/lib/app-utils/node-url-policy.js.map +1 -0
- package/src/lib/app-utils/notifications.d.ts +71 -0
- package/src/lib/app-utils/notifications.js +101 -0
- package/src/lib/app-utils/notifications.js.map +1 -0
- package/src/lib/app-utils/onboarding-deep-link.d.ts +120 -0
- package/src/lib/app-utils/onboarding-deep-link.js +142 -0
- package/src/lib/app-utils/onboarding-deep-link.js.map +1 -0
- package/src/lib/app-utils/operator-identity.d.ts +207 -0
- package/src/lib/app-utils/operator-identity.js +186 -0
- package/src/lib/app-utils/operator-identity.js.map +1 -0
- package/src/lib/app-utils/org-billing-doc.d.ts +231 -0
- package/src/lib/app-utils/org-billing-doc.js +238 -0
- package/src/lib/app-utils/org-billing-doc.js.map +1 -0
- package/src/lib/app-utils/org-override-reason.d.ts +100 -0
- package/src/lib/app-utils/org-override-reason.js +116 -0
- package/src/lib/app-utils/org-override-reason.js.map +1 -0
- package/src/lib/app-utils/org-permissions.d.ts +194 -0
- package/src/lib/app-utils/org-permissions.js +357 -0
- package/src/lib/app-utils/org-permissions.js.map +1 -0
- package/src/lib/app-utils/org-roles.d.ts +72 -0
- package/src/lib/app-utils/org-roles.js +131 -0
- package/src/lib/app-utils/org-roles.js.map +1 -0
- package/src/lib/app-utils/organizations.d.ts +407 -0
- package/src/lib/app-utils/organizations.js +511 -0
- package/src/lib/app-utils/organizations.js.map +1 -0
- package/src/lib/app-utils/page-header-actions-context.d.ts +83 -0
- package/src/lib/app-utils/page-header-actions-context.js +58 -0
- package/src/lib/app-utils/page-header-actions-context.js.map +1 -0
- package/src/lib/app-utils/page-header-record-context.d.ts +80 -0
- package/src/lib/app-utils/page-header-record-context.js +64 -0
- package/src/lib/app-utils/page-header-record-context.js.map +1 -0
- package/src/lib/app-utils/page-markdown.d.ts +103 -0
- package/src/lib/app-utils/page-markdown.js +385 -0
- package/src/lib/app-utils/page-markdown.js.map +1 -0
- package/src/lib/app-utils/paid-media-source.d.ts +90 -0
- package/src/lib/app-utils/paid-media-source.js +184 -0
- package/src/lib/app-utils/paid-media-source.js.map +1 -0
- package/src/lib/app-utils/palette-sx.d.ts +34 -0
- package/src/lib/app-utils/palette-sx.js +150 -0
- package/src/lib/app-utils/palette-sx.js.map +1 -0
- package/src/lib/app-utils/password-policy.d.ts +47 -0
- package/src/lib/app-utils/password-policy.js +46 -0
- package/src/lib/app-utils/password-policy.js.map +1 -0
- package/src/lib/app-utils/payments-configured.d.ts +84 -0
- package/src/lib/app-utils/payments-configured.js +88 -0
- package/src/lib/app-utils/payments-configured.js.map +1 -0
- package/src/lib/app-utils/person-erasure.d.ts +126 -0
- package/src/lib/app-utils/person-erasure.js +121 -0
- package/src/lib/app-utils/person-erasure.js.map +1 -0
- package/src/lib/app-utils/person-key.d.ts +32 -0
- package/src/lib/app-utils/person-key.js +62 -0
- package/src/lib/app-utils/person-key.js.map +1 -0
- package/src/lib/app-utils/plan-entitlements.d.ts +2756 -0
- package/src/lib/app-utils/plan-entitlements.js +4085 -0
- package/src/lib/app-utils/plan-entitlements.js.map +1 -0
- package/src/lib/app-utils/platform-ad-conversions.d.ts +122 -0
- package/src/lib/app-utils/platform-ad-conversions.js +174 -0
- package/src/lib/app-utils/platform-ad-conversions.js.map +1 -0
- package/src/lib/app-utils/platform-advertising-tags.d.ts +139 -0
- package/src/lib/app-utils/platform-advertising-tags.js +203 -0
- package/src/lib/app-utils/platform-advertising-tags.js.map +1 -0
- package/src/lib/app-utils/platform-brand.d.ts +151 -0
- package/src/lib/app-utils/platform-brand.js +175 -0
- package/src/lib/app-utils/platform-brand.js.map +1 -0
- package/src/lib/app-utils/platform-consent-default.d.ts +142 -0
- package/src/lib/app-utils/platform-consent-default.js +295 -0
- package/src/lib/app-utils/platform-consent-default.js.map +1 -0
- package/src/lib/app-utils/platform-marketing-consent.d.ts +151 -0
- package/src/lib/app-utils/platform-marketing-consent.js +182 -0
- package/src/lib/app-utils/platform-marketing-consent.js.map +1 -0
- package/src/lib/app-utils/platform-marketing-host.d.ts +33 -0
- package/src/lib/app-utils/platform-marketing-host.js +97 -0
- package/src/lib/app-utils/platform-marketing-host.js.map +1 -0
- package/src/lib/app-utils/platform-visitor-consent.d.ts +252 -0
- package/src/lib/app-utils/platform-visitor-consent.js +533 -0
- package/src/lib/app-utils/platform-visitor-consent.js.map +1 -0
- package/src/lib/app-utils/plugin-api-cross-origin.d.ts +61 -0
- package/src/lib/app-utils/plugin-api-cross-origin.js +202 -0
- package/src/lib/app-utils/plugin-api-cross-origin.js.map +1 -0
- package/src/lib/app-utils/plugin-api-rate-limit.d.ts +192 -0
- package/src/lib/app-utils/plugin-api-rate-limit.js +270 -0
- package/src/lib/app-utils/plugin-api-rate-limit.js.map +1 -0
- package/src/lib/app-utils/plugin-artifact-path.d.ts +32 -0
- package/src/lib/app-utils/plugin-artifact-path.js +33 -0
- package/src/lib/app-utils/plugin-artifact-path.js.map +1 -0
- package/src/lib/app-utils/plugin-bundle-checks.d.ts +148 -0
- package/src/lib/app-utils/plugin-bundle-checks.js +989 -0
- package/src/lib/app-utils/plugin-bundle-checks.js.map +1 -0
- package/src/lib/app-utils/plugin-manifest.d.ts +516 -0
- package/src/lib/app-utils/plugin-manifest.js +687 -0
- package/src/lib/app-utils/plugin-manifest.js.map +1 -0
- package/src/lib/app-utils/published-legal-pages.d.ts +71 -0
- package/src/lib/app-utils/published-legal-pages.js +90 -0
- package/src/lib/app-utils/published-legal-pages.js.map +1 -0
- package/src/lib/app-utils/publisher-agreement.d.ts +254 -0
- package/src/lib/app-utils/publisher-agreement.js +274 -0
- package/src/lib/app-utils/publisher-agreement.js.map +1 -0
- package/src/lib/app-utils/publisher-attestation.d.ts +99 -0
- package/src/lib/app-utils/publisher-attestation.js +158 -0
- package/src/lib/app-utils/publisher-attestation.js.map +1 -0
- package/src/lib/app-utils/recipient-email-render.d.ts +216 -0
- package/src/lib/app-utils/recipient-email-render.js +221 -0
- package/src/lib/app-utils/recipient-email-render.js.map +1 -0
- package/src/lib/app-utils/redispatch-caught-error.d.ts +38 -0
- package/src/lib/app-utils/redispatch-caught-error.js +46 -0
- package/src/lib/app-utils/redispatch-caught-error.js.map +1 -0
- package/src/lib/app-utils/registering-plugin.d.ts +19 -0
- package/src/lib/app-utils/registering-plugin.js +38 -0
- package/src/lib/app-utils/registering-plugin.js.map +1 -0
- package/src/lib/app-utils/release-flags.d.ts +283 -0
- package/src/lib/app-utils/release-flags.js +518 -0
- package/src/lib/app-utils/release-flags.js.map +1 -0
- package/src/lib/app-utils/repair-canvas-nodes.d.ts +130 -0
- package/src/lib/app-utils/repair-canvas-nodes.js +298 -0
- package/src/lib/app-utils/repair-canvas-nodes.js.map +1 -0
- package/src/lib/app-utils/repeat-infringer.d.ts +166 -0
- package/src/lib/app-utils/repeat-infringer.js +188 -0
- package/src/lib/app-utils/repeat-infringer.js.map +1 -0
- package/src/lib/app-utils/repeat-sources.d.ts +115 -0
- package/src/lib/app-utils/repeat-sources.js +86 -0
- package/src/lib/app-utils/repeat-sources.js.map +1 -0
- package/src/lib/app-utils/request-geo.d.ts +114 -0
- package/src/lib/app-utils/request-geo.js +247 -0
- package/src/lib/app-utils/request-geo.js.map +1 -0
- package/src/lib/app-utils/request-ip.d.ts +213 -0
- package/src/lib/app-utils/request-ip.js +344 -0
- package/src/lib/app-utils/request-ip.js.map +1 -0
- package/src/lib/app-utils/resolve-named-tokens.d.ts +26 -0
- package/src/lib/app-utils/resolve-named-tokens.js +59 -0
- package/src/lib/app-utils/resolve-named-tokens.js.map +1 -0
- package/src/lib/app-utils/responsive-typography-sx.d.ts +77 -0
- package/src/lib/app-utils/responsive-typography-sx.js +122 -0
- package/src/lib/app-utils/responsive-typography-sx.js.map +1 -0
- package/src/lib/app-utils/reusable-component-keys.d.ts +135 -0
- package/src/lib/app-utils/reusable-component-keys.js +140 -0
- package/src/lib/app-utils/reusable-component-keys.js.map +1 -0
- package/src/lib/app-utils/reusable-prop-values.d.ts +199 -0
- package/src/lib/app-utils/reusable-prop-values.js +494 -0
- package/src/lib/app-utils/reusable-prop-values.js.map +1 -0
- package/src/lib/app-utils/safe-json-ld.d.ts +29 -0
- package/src/lib/app-utils/safe-json-ld.js +37 -0
- package/src/lib/app-utils/safe-json-ld.js.map +1 -0
- package/src/lib/app-utils/sanitize-svg.d.ts +55 -0
- package/src/lib/app-utils/sanitize-svg.js +460 -0
- package/src/lib/app-utils/sanitize-svg.js.map +1 -0
- package/src/lib/app-utils/scheme-sx.d.ts +84 -0
- package/src/lib/app-utils/scheme-sx.js +148 -0
- package/src/lib/app-utils/scheme-sx.js.map +1 -0
- package/src/lib/app-utils/scope-tokens.d.ts +249 -0
- package/src/lib/app-utils/scope-tokens.js +331 -0
- package/src/lib/app-utils/scope-tokens.js.map +1 -0
- package/src/lib/app-utils/screen-link-context-value.d.ts +57 -0
- package/src/lib/app-utils/screen-link-context-value.js +43 -0
- package/src/lib/app-utils/screen-link-context-value.js.map +1 -0
- package/src/lib/app-utils/screen-link-context.d.ts +185 -0
- package/src/lib/app-utils/screen-link-context.js +304 -0
- package/src/lib/app-utils/screen-link-context.js.map +1 -0
- package/src/lib/app-utils/screen-link-value.d.ts +269 -0
- package/src/lib/app-utils/screen-link-value.js +384 -0
- package/src/lib/app-utils/screen-link-value.js.map +1 -0
- package/src/lib/app-utils/screen-route.d.ts +669 -0
- package/src/lib/app-utils/screen-route.js +751 -0
- package/src/lib/app-utils/screen-route.js.map +1 -0
- package/src/lib/app-utils/screen-seo-fields.d.ts +37 -0
- package/src/lib/app-utils/screen-seo-fields.js +42 -0
- package/src/lib/app-utils/screen-seo-fields.js.map +1 -0
- package/src/lib/app-utils/search-indexing.d.ts +162 -0
- package/src/lib/app-utils/search-indexing.js +207 -0
- package/src/lib/app-utils/search-indexing.js.map +1 -0
- package/src/lib/app-utils/seo-listing-fields.d.ts +70 -0
- package/src/lib/app-utils/seo-listing-fields.js +75 -0
- package/src/lib/app-utils/seo-listing-fields.js.map +1 -0
- package/src/lib/app-utils/seo-locale.d.ts +119 -0
- package/src/lib/app-utils/seo-locale.js +133 -0
- package/src/lib/app-utils/seo-locale.js.map +1 -0
- package/src/lib/app-utils/seo-title-variables.d.ts +149 -0
- package/src/lib/app-utils/seo-title-variables.js +190 -0
- package/src/lib/app-utils/seo-title-variables.js.map +1 -0
- package/src/lib/app-utils/seo-title.d.ts +70 -0
- package/src/lib/app-utils/seo-title.js +117 -0
- package/src/lib/app-utils/seo-title.js.map +1 -0
- package/src/lib/app-utils/server.d.ts +174 -0
- package/src/lib/app-utils/server.js +314 -0
- package/src/lib/app-utils/server.js.map +1 -0
- package/src/lib/app-utils/site-context.d.ts +106 -0
- package/src/lib/app-utils/site-context.js +100 -0
- package/src/lib/app-utils/site-context.js.map +1 -0
- package/src/lib/app-utils/sitemap.d.ts +117 -0
- package/src/lib/app-utils/sitemap.js +183 -0
- package/src/lib/app-utils/sitemap.js.map +1 -0
- package/src/lib/app-utils/social-image.d.ts +112 -0
- package/src/lib/app-utils/social-image.js +191 -0
- package/src/lib/app-utils/social-image.js.map +1 -0
- package/src/lib/app-utils/starter-templates.d.ts +99 -0
- package/src/lib/app-utils/starter-templates.js +579 -0
- package/src/lib/app-utils/starter-templates.js.map +1 -0
- package/src/lib/app-utils/stored-nodes.d.ts +120 -0
- package/src/lib/app-utils/stored-nodes.js +174 -0
- package/src/lib/app-utils/stored-nodes.js.map +1 -0
- package/src/lib/app-utils/strip-undefined.d.ts +59 -0
- package/src/lib/app-utils/strip-undefined.js +95 -0
- package/src/lib/app-utils/strip-undefined.js.map +1 -0
- package/src/lib/app-utils/stripe-deployment-mode.d.ts +47 -0
- package/src/lib/app-utils/stripe-deployment-mode.js +70 -0
- package/src/lib/app-utils/stripe-deployment-mode.js.map +1 -0
- package/src/lib/app-utils/support-tiers.d.ts +108 -0
- package/src/lib/app-utils/support-tiers.js +201 -0
- package/src/lib/app-utils/support-tiers.js.map +1 -0
- package/src/lib/app-utils/timezone-geo-hint.d.ts +36 -0
- package/src/lib/app-utils/timezone-geo-hint.js +180 -0
- package/src/lib/app-utils/timezone-geo-hint.js.map +1 -0
- package/src/lib/app-utils/upload-cors.d.ts +155 -0
- package/src/lib/app-utils/upload-cors.js +254 -0
- package/src/lib/app-utils/upload-cors.js.map +1 -0
- package/src/lib/app-utils/upload-inspection.d.ts +159 -0
- package/src/lib/app-utils/upload-inspection.js +539 -0
- package/src/lib/app-utils/upload-inspection.js.map +1 -0
- package/src/lib/app-utils/url-slug.d.ts +40 -0
- package/src/lib/app-utils/url-slug.js +42 -0
- package/src/lib/app-utils/url-slug.js.map +1 -0
- package/src/lib/app-utils/usage-budget.d.ts +429 -0
- package/src/lib/app-utils/usage-budget.js +421 -0
- package/src/lib/app-utils/usage-budget.js.map +1 -0
- package/src/lib/app-utils/variables.d.ts +96 -0
- package/src/lib/app-utils/variables.js +233 -0
- package/src/lib/app-utils/variables.js.map +1 -0
- package/src/lib/app-utils/video-asset-facts.d.ts +61 -0
- package/src/lib/app-utils/video-asset-facts.js +70 -0
- package/src/lib/app-utils/video-asset-facts.js.map +1 -0
- package/src/lib/app-utils/video-object.d.ts +89 -0
- package/src/lib/app-utils/video-object.js +245 -0
- package/src/lib/app-utils/video-object.js.map +1 -0
- package/src/lib/app-utils/visitor-consent.d.ts +757 -0
- package/src/lib/app-utils/visitor-consent.js +981 -0
- package/src/lib/app-utils/visitor-consent.js.map +1 -0
- package/src/lib/app-utils/visitor-record-ceiling.d.ts +223 -0
- package/src/lib/app-utils/visitor-record-ceiling.js +215 -0
- package/src/lib/app-utils/visitor-record-ceiling.js.map +1 -0
- package/src/lib/app-utils/web-vitals-rum.d.ts +53 -0
- package/src/lib/app-utils/web-vitals-rum.js +278 -0
- package/src/lib/app-utils/web-vitals-rum.js.map +1 -0
- package/src/lib/app-utils/webhook-delivery.d.ts +324 -0
- package/src/lib/app-utils/webhook-delivery.js +413 -0
- package/src/lib/app-utils/webhook-delivery.js.map +1 -0
- package/src/lib/app-utils/where-used.d.ts +57 -0
- package/src/lib/app-utils/where-used.js +59 -0
- package/src/lib/app-utils/where-used.js.map +1 -0
- package/src/lib/app-utils/wistia-embed.d.ts +86 -0
- package/src/lib/app-utils/wistia-embed.js +119 -0
- package/src/lib/app-utils/wistia-embed.js.map +1 -0
- package/src/lib/app-utils/workflows.d.ts +136 -0
- package/src/lib/app-utils/workflows.js +346 -0
- package/src/lib/app-utils/workflows.js.map +1 -0
- package/src/lib/canvas-manager/canvas-manager-tree.d.ts +109 -0
- package/src/lib/canvas-manager/canvas-manager-tree.js +139 -0
- package/src/lib/canvas-manager/canvas-manager-tree.js.map +1 -0
- package/src/lib/canvas-manager/canvas-manager.d.ts +549 -0
- package/src/lib/canvas-manager/canvas-manager.js +1311 -0
- package/src/lib/canvas-manager/canvas-manager.js.map +1 -0
- package/src/lib/canvas-manager/index.d.ts +20 -0
- package/src/lib/canvas-manager/index.js +21 -0
- package/src/lib/canvas-manager/index.js.map +1 -0
- package/src/lib/canvas-manager/stores/index.d.ts +17 -0
- package/src/lib/canvas-manager/stores/index.js +18 -0
- package/src/lib/canvas-manager/stores/index.js.map +1 -0
- package/src/lib/canvas-manager/stores/node.store.d.ts +30 -0
- package/src/lib/canvas-manager/stores/node.store.js +45 -0
- package/src/lib/canvas-manager/stores/node.store.js.map +1 -0
- package/src/lib/components-manager/components-manager.d.ts +56 -0
- package/src/lib/components-manager/components-manager.js +191 -0
- package/src/lib/components-manager/components-manager.js.map +1 -0
- package/src/lib/components-manager/index.d.ts +18 -0
- package/src/lib/components-manager/index.js +19 -0
- package/src/lib/components-manager/index.js.map +1 -0
- package/src/lib/emit-manager/emit-manager.d.ts +56 -0
- package/src/lib/emit-manager/emit-manager.js +60 -0
- package/src/lib/emit-manager/emit-manager.js.map +1 -0
- package/src/lib/emit-manager/index.d.ts +18 -0
- package/src/lib/emit-manager/index.js +19 -0
- package/src/lib/emit-manager/index.js.map +1 -0
- package/src/lib/foundation/constants/_internal.d.ts +18 -0
- package/src/lib/foundation/constants/_internal.js +62 -0
- package/src/lib/foundation/constants/_internal.js.map +1 -0
- package/src/lib/foundation/constants/app.d.ts +23 -0
- package/src/lib/foundation/constants/app.js +25 -0
- package/src/lib/foundation/constants/app.js.map +1 -0
- package/src/lib/foundation/constants/canvas.d.ts +18 -0
- package/src/lib/foundation/constants/canvas.js +18 -0
- package/src/lib/foundation/constants/canvas.js.map +1 -0
- package/src/lib/foundation/constants/components.d.ts +54 -0
- package/src/lib/foundation/constants/components.js +61 -0
- package/src/lib/foundation/constants/components.js.map +1 -0
- package/src/lib/foundation/constants/shared.d.ts +50 -0
- package/src/lib/foundation/constants/shared.js +49 -0
- package/src/lib/foundation/constants/shared.js.map +1 -0
- package/src/lib/foundation/constants/symbol.d.ts +63 -0
- package/src/lib/foundation/constants/symbol.js +75 -0
- package/src/lib/foundation/constants/symbol.js.map +1 -0
- package/src/lib/foundation/definitions/components.types.d.ts +372 -0
- package/src/lib/foundation/definitions/components.types.js +180 -0
- package/src/lib/foundation/definitions/components.types.js.map +1 -0
- package/src/lib/foundation/definitions/contact.types.d.ts +73 -0
- package/src/lib/foundation/definitions/contact.types.js +107 -0
- package/src/lib/foundation/definitions/contact.types.js.map +1 -0
- package/src/lib/foundation/definitions/host-content-collections.d.ts +137 -0
- package/src/lib/foundation/definitions/host-content-collections.js +219 -0
- package/src/lib/foundation/definitions/host-content-collections.js.map +1 -0
- package/src/lib/foundation/definitions/org-billing.types.d.ts +1361 -0
- package/src/lib/foundation/definitions/org-billing.types.js +77 -0
- package/src/lib/foundation/definitions/org-billing.types.js.map +1 -0
- package/src/lib/foundation/definitions/organization.types.d.ts +307 -0
- package/src/lib/foundation/definitions/organization.types.js +42 -0
- package/src/lib/foundation/definitions/organization.types.js.map +1 -0
- package/src/lib/foundation/definitions/platform.types.d.ts +1326 -0
- package/src/lib/foundation/definitions/platform.types.js +124 -0
- package/src/lib/foundation/definitions/platform.types.js.map +1 -0
- package/src/lib/foundation/definitions/property-kinds.d.ts +189 -0
- package/src/lib/foundation/definitions/property-kinds.js +565 -0
- package/src/lib/foundation/definitions/property-kinds.js.map +1 -0
- package/src/lib/foundation/definitions/shared.d.ts +23 -0
- package/src/lib/foundation/definitions/shared.js +18 -0
- package/src/lib/foundation/definitions/shared.js.map +1 -0
- package/src/lib/foundation/definitions/write-deny-coverage.util.d.ts +249 -0
- package/src/lib/foundation/definitions/write-deny-coverage.util.js +499 -0
- package/src/lib/foundation/definitions/write-deny-coverage.util.js.map +1 -0
- package/src/lib/foundation/index.d.ts +32 -0
- package/src/lib/foundation/index.js +67 -0
- package/src/lib/foundation/index.js.map +1 -0
- package/src/lib/lifecycle.d.ts +24 -0
- package/src/lib/lifecycle.js +39 -0
- package/src/lib/lifecycle.js.map +1 -0
- package/src/lib/mst/common.d.ts +17 -0
- package/src/lib/mst/common.js +23 -0
- package/src/lib/mst/common.js.map +1 -0
- package/src/lib/mst/index.d.ts +19 -0
- package/src/lib/mst/index.js +20 -0
- package/src/lib/mst/index.js.map +1 -0
- package/src/lib/mst/json.d.ts +22 -0
- package/src/lib/mst/json.js +23 -0
- package/src/lib/mst/json.js.map +1 -0
- package/src/lib/mst/types.d.ts +20 -0
- package/src/lib/mst/types.js +18 -0
- package/src/lib/mst/types.js.map +1 -0
- package/src/lib/plugin-manager/billing-webhook-hooks.d.ts +77 -0
- package/src/lib/plugin-manager/billing-webhook-hooks.js +55 -0
- package/src/lib/plugin-manager/billing-webhook-hooks.js.map +1 -0
- package/src/lib/plugin-manager/commerce-zone-props.d.ts +172 -0
- package/src/lib/plugin-manager/commerce-zone-props.js +31 -0
- package/src/lib/plugin-manager/commerce-zone-props.js.map +1 -0
- package/src/lib/plugin-manager/custom-fields.d.ts +60 -0
- package/src/lib/plugin-manager/custom-fields.js +39 -0
- package/src/lib/plugin-manager/custom-fields.js.map +1 -0
- package/src/lib/plugin-manager/editor-sessions.d.ts +109 -0
- package/src/lib/plugin-manager/editor-sessions.js +137 -0
- package/src/lib/plugin-manager/editor-sessions.js.map +1 -0
- package/src/lib/plugin-manager/enabled-plugins.d.ts +438 -0
- package/src/lib/plugin-manager/enabled-plugins.js +403 -0
- package/src/lib/plugin-manager/enabled-plugins.js.map +1 -0
- package/src/lib/plugin-manager/feature-plugins.d.ts +1314 -0
- package/src/lib/plugin-manager/feature-plugins.js +609 -0
- package/src/lib/plugin-manager/feature-plugins.js.map +1 -0
- package/src/lib/plugin-manager/first-party-plugins.generated.d.ts +11 -0
- package/src/lib/plugin-manager/first-party-plugins.generated.js +149 -0
- package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -0
- package/src/lib/plugin-manager/index.d.ts +42 -0
- package/src/lib/plugin-manager/index.js +46 -0
- package/src/lib/plugin-manager/index.js.map +1 -0
- package/src/lib/plugin-manager/install-presets.d.ts +93 -0
- package/src/lib/plugin-manager/install-presets.js +86 -0
- package/src/lib/plugin-manager/install-presets.js.map +1 -0
- package/src/lib/plugin-manager/media-delivery-provider.d.ts +124 -0
- package/src/lib/plugin-manager/media-delivery-provider.js +53 -0
- package/src/lib/plugin-manager/media-delivery-provider.js.map +1 -0
- package/src/lib/plugin-manager/order-fulfilment.d.ts +142 -0
- package/src/lib/plugin-manager/order-fulfilment.js +104 -0
- package/src/lib/plugin-manager/order-fulfilment.js.map +1 -0
- package/src/lib/plugin-manager/plugin-activity-actions.d.ts +122 -0
- package/src/lib/plugin-manager/plugin-activity-actions.js +140 -0
- package/src/lib/plugin-manager/plugin-activity-actions.js.map +1 -0
- package/src/lib/plugin-manager/plugin-bridge.d.ts +98 -0
- package/src/lib/plugin-manager/plugin-bridge.js +154 -0
- package/src/lib/plugin-manager/plugin-bridge.js.map +1 -0
- package/src/lib/plugin-manager/plugin-config.d.ts +148 -0
- package/src/lib/plugin-manager/plugin-config.js +228 -0
- package/src/lib/plugin-manager/plugin-config.js.map +1 -0
- package/src/lib/plugin-manager/plugin-console-crons.d.ts +139 -0
- package/src/lib/plugin-manager/plugin-console-crons.js +177 -0
- package/src/lib/plugin-manager/plugin-console-crons.js.map +1 -0
- package/src/lib/plugin-manager/plugin-contact-capture.d.ts +220 -0
- package/src/lib/plugin-manager/plugin-contact-capture.js +89 -0
- package/src/lib/plugin-manager/plugin-contact-capture.js.map +1 -0
- package/src/lib/plugin-manager/plugin-contributions.d.ts +244 -0
- package/src/lib/plugin-manager/plugin-contributions.js +283 -0
- package/src/lib/plugin-manager/plugin-contributions.js.map +1 -0
- package/src/lib/plugin-manager/plugin-entitlement-keys.d.ts +169 -0
- package/src/lib/plugin-manager/plugin-entitlement-keys.js +84 -0
- package/src/lib/plugin-manager/plugin-entitlement-keys.js.map +1 -0
- package/src/lib/plugin-manager/plugin-entitlements.d.ts +181 -0
- package/src/lib/plugin-manager/plugin-entitlements.js +188 -0
- package/src/lib/plugin-manager/plugin-entitlements.js.map +1 -0
- package/src/lib/plugin-manager/plugin-events.d.ts +145 -0
- package/src/lib/plugin-manager/plugin-events.js +79 -0
- package/src/lib/plugin-manager/plugin-events.js.map +1 -0
- package/src/lib/plugin-manager/plugin-figures.d.ts +251 -0
- package/src/lib/plugin-manager/plugin-figures.js +252 -0
- package/src/lib/plugin-manager/plugin-figures.js.map +1 -0
- package/src/lib/plugin-manager/plugin-host-collections.d.ts +146 -0
- package/src/lib/plugin-manager/plugin-host-collections.js +116 -0
- package/src/lib/plugin-manager/plugin-host-collections.js.map +1 -0
- package/src/lib/plugin-manager/plugin-jobs.d.ts +130 -0
- package/src/lib/plugin-manager/plugin-jobs.js +182 -0
- package/src/lib/plugin-manager/plugin-jobs.js.map +1 -0
- package/src/lib/plugin-manager/plugin-loader.d.ts +86 -0
- package/src/lib/plugin-manager/plugin-loader.js +223 -0
- package/src/lib/plugin-manager/plugin-loader.js.map +1 -0
- package/src/lib/plugin-manager/plugin-manager.d.ts +95 -0
- package/src/lib/plugin-manager/plugin-manager.js +343 -0
- package/src/lib/plugin-manager/plugin-manager.js.map +1 -0
- package/src/lib/plugin-manager/plugin-metered-lines.d.ts +97 -0
- package/src/lib/plugin-manager/plugin-metered-lines.js +123 -0
- package/src/lib/plugin-manager/plugin-metered-lines.js.map +1 -0
- package/src/lib/plugin-manager/plugin-org-erasure.d.ts +52 -0
- package/src/lib/plugin-manager/plugin-org-erasure.js +100 -0
- package/src/lib/plugin-manager/plugin-org-erasure.js.map +1 -0
- package/src/lib/plugin-manager/plugin-permissions.d.ts +69 -0
- package/src/lib/plugin-manager/plugin-permissions.js +77 -0
- package/src/lib/plugin-manager/plugin-permissions.js.map +1 -0
- package/src/lib/plugin-manager/plugin-person-erasure.d.ts +58 -0
- package/src/lib/plugin-manager/plugin-person-erasure.js +109 -0
- package/src/lib/plugin-manager/plugin-person-erasure.js.map +1 -0
- package/src/lib/plugin-manager/plugin-record-cards.d.ts +99 -0
- package/src/lib/plugin-manager/plugin-record-cards.js +59 -0
- package/src/lib/plugin-manager/plugin-record-cards.js.map +1 -0
- package/src/lib/plugin-manager/plugin-record-facts.d.ts +111 -0
- package/src/lib/plugin-manager/plugin-record-facts.js +51 -0
- package/src/lib/plugin-manager/plugin-record-facts.js.map +1 -0
- package/src/lib/plugin-manager/plugin-record-routes.d.ts +129 -0
- package/src/lib/plugin-manager/plugin-record-routes.js +93 -0
- package/src/lib/plugin-manager/plugin-record-routes.js.map +1 -0
- package/src/lib/plugin-manager/plugin-record-timeline.d.ts +147 -0
- package/src/lib/plugin-manager/plugin-record-timeline.js +39 -0
- package/src/lib/plugin-manager/plugin-record-timeline.js.map +1 -0
- package/src/lib/plugin-manager/plugin-resource-drafts.d.ts +137 -0
- package/src/lib/plugin-manager/plugin-resource-drafts.js +51 -0
- package/src/lib/plugin-manager/plugin-resource-drafts.js.map +1 -0
- package/src/lib/plugin-manager/plugin-services.d.ts +94 -0
- package/src/lib/plugin-manager/plugin-services.js +153 -0
- package/src/lib/plugin-manager/plugin-services.js.map +1 -0
- package/src/lib/plugin-manager/plugin-styles-ui.d.ts +71 -0
- package/src/lib/plugin-manager/plugin-styles-ui.js +80 -0
- package/src/lib/plugin-manager/plugin-styles-ui.js.map +1 -0
- package/src/lib/plugin-manager/plugin-styles.d.ts +176 -0
- package/src/lib/plugin-manager/plugin-styles.js +186 -0
- package/src/lib/plugin-manager/plugin-styles.js.map +1 -0
- package/src/lib/plugin-manager/plugin-subprocessors.d.ts +135 -0
- package/src/lib/plugin-manager/plugin-subprocessors.js +129 -0
- package/src/lib/plugin-manager/plugin-subprocessors.js.map +1 -0
- package/src/lib/plugin-manager/plugin-tax-profile.d.ts +84 -0
- package/src/lib/plugin-manager/plugin-tax-profile.js +39 -0
- package/src/lib/plugin-manager/plugin-tax-profile.js.map +1 -0
- package/src/lib/plugin-manager/plugin-user-erasure.d.ts +53 -0
- package/src/lib/plugin-manager/plugin-user-erasure.js +84 -0
- package/src/lib/plugin-manager/plugin-user-erasure.js.map +1 -0
- package/src/lib/plugin-manager/plugin-zones.d.ts +121 -0
- package/src/lib/plugin-manager/plugin-zones.js +74 -0
- package/src/lib/plugin-manager/plugin-zones.js.map +1 -0
- package/src/lib/plugin-manager/realm-plugins.d.ts +112 -0
- package/src/lib/plugin-manager/realm-plugins.js +196 -0
- package/src/lib/plugin-manager/realm-plugins.js.map +1 -0
- package/src/lib/plugin-manager/realm-server.d.ts +54 -0
- package/src/lib/plugin-manager/realm-server.js +88 -0
- package/src/lib/plugin-manager/realm-server.js.map +1 -0
- package/src/lib/plugin-manager/record-zone-props.d.ts +126 -0
- package/src/lib/plugin-manager/record-zone-props.js +31 -0
- package/src/lib/plugin-manager/record-zone-props.js.map +1 -0
- package/src/lib/plugin-manager/site-page-hooks.d.ts +102 -0
- package/src/lib/plugin-manager/site-page-hooks.js +114 -0
- package/src/lib/plugin-manager/site-page-hooks.js.map +1 -0
- package/src/lib/plugin-manager/site-runtime.d.ts +57 -0
- package/src/lib/plugin-manager/site-runtime.js +25 -0
- package/src/lib/plugin-manager/site-runtime.js.map +1 -0
- package/src/lib/plugin-manager/usage-alert-contributors.d.ts +115 -0
- package/src/lib/plugin-manager/usage-alert-contributors.js +106 -0
- package/src/lib/plugin-manager/usage-alert-contributors.js.map +1 -0
- package/src/lib/types/ast.d.ts +199 -0
- package/src/lib/types/ast.js +20 -0
- package/src/lib/types/ast.js.map +1 -0
- package/src/lib/types/index.d.ts +20 -0
- package/src/lib/types/index.js +21 -0
- package/src/lib/types/index.js.map +1 -0
- package/src/lib/types/nodes.d.ts +608 -0
- package/src/lib/types/nodes.js +28 -0
- package/src/lib/types/nodes.js.map +1 -0
- package/src/lib/types/routing.d.ts +17 -0
- package/src/lib/types/routing.js +18 -0
- package/src/lib/types/routing.js.map +1 -0
- package/src/lib/types/screen.d.ts +23 -0
- package/src/lib/types/screen.js +18 -0
- package/src/lib/types/screen.js.map +1 -0
- package/src/lib/utils.d.ts +25 -0
- package/src/lib/utils.js +42 -0
- package/src/lib/utils.js.map +1 -0
- package/src/server.d.ts +37 -0
- package/src/server.js +55 -0
- package/src/server.js.map +1 -0
|
@@ -0,0 +1,1314 @@
|
|
|
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
|
+
import type { OrgPermissions } from '../app-utils/org-permissions';
|
|
18
|
+
import type { SeoListingFieldKey } from '../app-utils/seo-listing-fields';
|
|
19
|
+
import type { AglynOrgBilling, OrgFeatureFlags } from '../foundation';
|
|
20
|
+
import type { ComponentSchema, MdiIconProps, PresetSchema } from '../types/nodes';
|
|
21
|
+
import type { Plugin, PluginId } from './plugin-manager';
|
|
22
|
+
import type { HostThemeSource } from '../app-utils/marketplace-theme';
|
|
23
|
+
import type { HostTheme, HostThemeScheme } from '@aglyn/shared-data-types';
|
|
24
|
+
import type { ComponentType } from 'react';
|
|
25
|
+
export type { ConsoleProductCopyValues, ConsoleProductDraft, ConsoleProductEditorZoneProps, ConsoleProductImportZoneProps, ConsoleProductOption, ConsoleProductSummary, ConsoleProductType, ConsoleProductsHubZoneProps, ConsoleProposedDiscount, ConsoleProposedProduct, } from './commerce-zone-props';
|
|
26
|
+
export type { ConsoleImportMappingZoneProps, ConsoleRecordEmailZoneProps, ConsoleRecordInsightsZoneProps, } from './record-zone-props';
|
|
27
|
+
/** The mui bundle id every UI feature bundle depends on. */
|
|
28
|
+
export declare const MUI_BUNDLE_ID: PluginId;
|
|
29
|
+
export interface FeatureBundleEntry {
|
|
30
|
+
component: any;
|
|
31
|
+
schema: ComponentSchema<any>;
|
|
32
|
+
presets?: PresetSchema[];
|
|
33
|
+
}
|
|
34
|
+
/** The slice of ComponentManager a feature bundle needs (structural). */
|
|
35
|
+
export interface ComponentRegistrar {
|
|
36
|
+
registerComponent(component: any, schema: ComponentSchema<any>): void;
|
|
37
|
+
registerPreset(presets: PresetSchema[]): void;
|
|
38
|
+
unregisterComponent(componentId: string): void;
|
|
39
|
+
unregisterPreset(presetIds: string[]): void;
|
|
40
|
+
}
|
|
41
|
+
export interface UiFeatureBundleOptions {
|
|
42
|
+
/** Stable bundle id — persisted as `pluginId` in screen docs; never rename. */
|
|
43
|
+
bundleId: PluginId;
|
|
44
|
+
displayName: string;
|
|
45
|
+
description?: string;
|
|
46
|
+
icon?: MdiIconProps;
|
|
47
|
+
/** Extra bundle ids this feature needs beyond mui. */
|
|
48
|
+
dependsOn?: PluginId[];
|
|
49
|
+
components: FeatureBundleEntry[];
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* UI half of the pattern: a plugin-registry bundle whose load/destroy
|
|
53
|
+
* register the feature's components + presets against the given
|
|
54
|
+
* registrar (`Aglyn.components` in apps), declared as depending on the
|
|
55
|
+
* mui bundle so the registry loads mui first.
|
|
56
|
+
*/
|
|
57
|
+
export declare function defineUiFeatureBundle(options: UiFeatureBundleOptions, registrar: ComponentRegistrar): Plugin;
|
|
58
|
+
/**
|
|
59
|
+
* One of the organization's sites, as the shell hands them to a surface
|
|
60
|
+
* mounted at the ORGANIZATION level (AGL-2630).
|
|
61
|
+
*
|
|
62
|
+
* The three facts a cross-site surface needs and a record never carries: a
|
|
63
|
+
* record holds a host DOCUMENT ID, a console URL under `/hosts/[host]` takes
|
|
64
|
+
* the SUBDOMAIN, and a person reads the NAME. `subdomain` is null for a site
|
|
65
|
+
* whose document did not answer — such a site is still named (the
|
|
66
|
+
* relationship is real) and never linked (the route would not exist).
|
|
67
|
+
*/
|
|
68
|
+
export interface ConsolePluginOrgHost {
|
|
69
|
+
id: string;
|
|
70
|
+
name: string;
|
|
71
|
+
subdomain: string | null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The organization a surface is mounted under when it is mounted at the
|
|
75
|
+
* org level rather than under a site (AGL-2630).
|
|
76
|
+
*
|
|
77
|
+
* The CRM exists at two levels: the site hub, where `hostId` names the site
|
|
78
|
+
* and every read is scoped to it, and `/[orgSlug]/crm`, where an org-wide
|
|
79
|
+
* member sees every site's records at once. At the org level there is no
|
|
80
|
+
* site, so the shell hands the org's own site list instead — the pickers a
|
|
81
|
+
* create needs (a record is always captured BY a site) and the names a
|
|
82
|
+
* cross-site fact is shown under. `hostsReady` separates "no sites" from
|
|
83
|
+
* "not yet".
|
|
84
|
+
*/
|
|
85
|
+
export interface ConsolePluginOrgMount {
|
|
86
|
+
orgId: string;
|
|
87
|
+
hosts: readonly ConsolePluginOrgHost[];
|
|
88
|
+
hostsReady: boolean;
|
|
89
|
+
/**
|
|
90
|
+
* The console path every site's own hub hangs beneath — `/[orgSlug]/hosts`
|
|
91
|
+
* — so a cross-site fact can link a person into the site that holds them:
|
|
92
|
+
* a site's CRM is `${hostsPath}/${subdomain}/crm`. A path rather than a
|
|
93
|
+
* builder because the mount is data the shell hands over and a plugin
|
|
94
|
+
* cannot import the console's route table.
|
|
95
|
+
*/
|
|
96
|
+
hostsPath: string;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Props every plugin-contributed console page receives from the shell's
|
|
100
|
+
* generic host route. The shell owns auth + chrome + flag gating and
|
|
101
|
+
* passes the resolved host and entitlement state in, so plugin pages stay
|
|
102
|
+
* free of console-app hooks.
|
|
103
|
+
*/
|
|
104
|
+
export interface ConsolePluginPageProps {
|
|
105
|
+
/**
|
|
106
|
+
* The site this surface is mounted under — or `null` when it is mounted at
|
|
107
|
+
* the ORGANIZATION level, where there is no site and {@link orgMount} says
|
|
108
|
+
* which org (AGL-2630). Two things mount there: the CRM's own org route,
|
|
109
|
+
* and every {@link ConsoleExtension.orgNavItems} surface through the
|
|
110
|
+
* generic org route (AGL-2974). A surface reached through a site route
|
|
111
|
+
* always receives a string.
|
|
112
|
+
*/
|
|
113
|
+
hostId: string | null;
|
|
114
|
+
/** Present only at an org-level mount — see {@link ConsolePluginOrgMount}. */
|
|
115
|
+
orgMount?: ConsolePluginOrgMount;
|
|
116
|
+
/** True when the org holds the extension's `featureFlag` entitlement. */
|
|
117
|
+
entitled: boolean;
|
|
118
|
+
/**
|
|
119
|
+
* The absolute console path this surface is mounted at — the nav item's
|
|
120
|
+
* `href` under the active org and site, e.g. `/acme/hosts/shop/products`
|
|
121
|
+
* (AGL-2501).
|
|
122
|
+
*
|
|
123
|
+
* A plugin page is handed a host DOC ID and nothing else, so building a
|
|
124
|
+
* link to itself meant resolving the org slug and subdomain from Firestore
|
|
125
|
+
* — two `getDoc`s that answer `null` on first paint, which for a section
|
|
126
|
+
* rail means drawing it without hrefs. The shell already knows this string
|
|
127
|
+
* synchronously; the alternative is paying for it again, later, per page.
|
|
128
|
+
*/
|
|
129
|
+
basePath?: string;
|
|
130
|
+
/**
|
|
131
|
+
* The nav item's declared {@link ConsoleNavItem.sections}, resolved: an
|
|
132
|
+
* absolute `href` per section, and the release-flag verdict already applied
|
|
133
|
+
* to `visible` (AGL-2501).
|
|
134
|
+
*
|
|
135
|
+
* The plugin DECLARES sections; the shell RESOLVES them. Release flags live
|
|
136
|
+
* in `scope:app` and a `scope:lib` plugin may not import the hooks that read
|
|
137
|
+
* them, so a page that filtered its own rail could only do it by guessing —
|
|
138
|
+
* and a rail offering a link into the shell's own "coming soon" notice is
|
|
139
|
+
* the guess going wrong. Feed this straight to `HubSections`.
|
|
140
|
+
*/
|
|
141
|
+
sections?: readonly ResolvedConsoleNavSection[];
|
|
142
|
+
/**
|
|
143
|
+
* The id of the section the URL names, or undefined on the nav item's own
|
|
144
|
+
* href (AGL-2501).
|
|
145
|
+
*
|
|
146
|
+
* Always one of the declared `sections` — the shell 404s an id it does not
|
|
147
|
+
* recognize rather than passing it down, so a page may switch on this
|
|
148
|
+
* without a fallback branch for a section it does not have.
|
|
149
|
+
*/
|
|
150
|
+
section?: string;
|
|
151
|
+
/**
|
|
152
|
+
* Path segments beneath `basePath`, `[]` on the nav item's own href
|
|
153
|
+
* (AGL-2501). `segments[0]` is `section`; anything after it is the section's
|
|
154
|
+
* own, so a section can own deeper routes (`…/orders/ord_123`) without a
|
|
155
|
+
* further registry change.
|
|
156
|
+
*/
|
|
157
|
+
segments?: readonly string[];
|
|
158
|
+
/**
|
|
159
|
+
* The ORG billing doc (`orgs/{orgId}`) the shell already loaded to
|
|
160
|
+
* compute `entitled` (prop renamed from `tenant` in AGL-444). Passed
|
|
161
|
+
* through so a plugin page can run its own `checkEntitlement`/
|
|
162
|
+
* `checkQuota` (e.g. per-plan service limits) without reaching for the
|
|
163
|
+
* console-app org/session hooks.
|
|
164
|
+
*/
|
|
165
|
+
org?: Partial<AglynOrgBilling>;
|
|
166
|
+
/**
|
|
167
|
+
* The signed-in user's resolved org permissions (AGL-395), passed through
|
|
168
|
+
* so a plugin page can gate actions (e.g. install/publish) without the
|
|
169
|
+
* console-app session/permission hooks.
|
|
170
|
+
*/
|
|
171
|
+
/**
|
|
172
|
+
* Widened past the legacy six (AGL-2474): plugin-declared keys such as
|
|
173
|
+
* commerce's `managePos` are resolved into the same map, and typing this
|
|
174
|
+
* `Partial<OrgPermissions>` meant a plugin could not read its OWN
|
|
175
|
+
* permission without a cast — the declared key was not assignable.
|
|
176
|
+
*/
|
|
177
|
+
permissions?: Partial<OrgPermissions> & Record<string, boolean | undefined>;
|
|
178
|
+
/**
|
|
179
|
+
* The verdict for the release flag that governs this surface (AGL-1662),
|
|
180
|
+
* resolved by the shell from the nav item's `navTabId` — the same flag
|
|
181
|
+
* `FeatureGate` applies around the page body.
|
|
182
|
+
*
|
|
183
|
+
* `FeatureGate` admits staff with the flag OFF, so a plugin page can be
|
|
184
|
+
* looking at an org that does not have the feature and is not being
|
|
185
|
+
* billed for it. Anything the page says about MONEY has to follow the
|
|
186
|
+
* flag rather than the viewer, and this is how a plugin page gets that
|
|
187
|
+
* answer without reaching for the console-app release-flag hooks (which
|
|
188
|
+
* live in `scope:app` and are off-limits to a `scope:lib` plugin).
|
|
189
|
+
*/
|
|
190
|
+
releaseFlag?: {
|
|
191
|
+
/**
|
|
192
|
+
* The rollout verdict for this ORG — staff bypass deliberately NOT
|
|
193
|
+
* applied. `visible` is what decides who sees a page; this is what
|
|
194
|
+
* decides what the invoice carries, and staff opening a page must not
|
|
195
|
+
* put a line on a customer's bill.
|
|
196
|
+
*/
|
|
197
|
+
released: boolean;
|
|
198
|
+
/**
|
|
199
|
+
* True once the flag verdict has settled. Release flags are default-off
|
|
200
|
+
* before Remote Config activation, so an ungated claim asserts the
|
|
201
|
+
* withheld case for one paint on an org that may well be billed.
|
|
202
|
+
*/
|
|
203
|
+
ready: boolean;
|
|
204
|
+
};
|
|
205
|
+
/**
|
|
206
|
+
* What the viewer's role on THIS SITE lets them do, for a surface that
|
|
207
|
+
* publishes.
|
|
208
|
+
*
|
|
209
|
+
* The `author` host role edits content and may not make it live; that is
|
|
210
|
+
* enforced in the Firestore rules and by the promotion routes, and the
|
|
211
|
+
* console's job is to say no with a reason rather than let a click come
|
|
212
|
+
* back as a bare `permission-denied`. Resolving it needs the org member
|
|
213
|
+
* document and the host-access predicate over it, which the shell already
|
|
214
|
+
* reaches for — a plugin cannot, for the same reason it cannot read a
|
|
215
|
+
* release flag.
|
|
216
|
+
*
|
|
217
|
+
* `loaded` separates "no" from "not yet", so a surface disables with a
|
|
218
|
+
* reason rather than hiding a control that is about to be allowed. Read it
|
|
219
|
+
* the safe way round: `canPublish` is false until the read lands.
|
|
220
|
+
*/
|
|
221
|
+
hostRole?: {
|
|
222
|
+
canPublish: boolean;
|
|
223
|
+
loaded: boolean;
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
export type ConsolePluginPage = ComponentType<ConsolePluginPageProps>;
|
|
227
|
+
/**
|
|
228
|
+
* One routed section of a plugin console page (AGL-2501).
|
|
229
|
+
*
|
|
230
|
+
* A section is a real URL beneath the nav item's `href`, not a panel: it is
|
|
231
|
+
* linkable, the back button walks sections, and the page mounts the one being
|
|
232
|
+
* read. That last part is the reason this exists — a six-panel hub subscribes
|
|
233
|
+
* every panel's queries on load, and the reader is looking at one.
|
|
234
|
+
*/
|
|
235
|
+
export interface ConsoleNavSection {
|
|
236
|
+
/**
|
|
237
|
+
* URL segment beneath the nav item's `href`, and the id the shell hands the
|
|
238
|
+
* page as `section`. Appears in links people keep — treat it as persisted.
|
|
239
|
+
*/
|
|
240
|
+
id: string;
|
|
241
|
+
label: string;
|
|
242
|
+
/**
|
|
243
|
+
* Release-flag nav-tab id gating THIS section, when it ships on a different
|
|
244
|
+
* schedule than the surface around it. Omit to inherit the nav item's gate,
|
|
245
|
+
* which is the common case.
|
|
246
|
+
*
|
|
247
|
+
* Declaring one NARROWS, never widens: the nav item's own gate is applied
|
|
248
|
+
* outside this one, so a section of a flagged-off surface stays unreachable
|
|
249
|
+
* whatever it declares. A section gated by its own flag is refused on a deep
|
|
250
|
+
* link exactly as it is hidden from the rail — one verdict, both places.
|
|
251
|
+
*/
|
|
252
|
+
navTabId?: string;
|
|
253
|
+
/**
|
|
254
|
+
* Entitlement flag gating THIS section, when the org's plan may include
|
|
255
|
+
* the surface and not the whole of it (AGL-2611). Omit to inherit the
|
|
256
|
+
* extension's `featureFlag`, which is the common case.
|
|
257
|
+
*
|
|
258
|
+
* Composes by AND with the extension's, the way `navTabId` composes with
|
|
259
|
+
* the nav item's release gate: the shell answers the extension's flag
|
|
260
|
+
* first and this one inside it, so a section can only ever be NARROWER
|
|
261
|
+
* than the surface holding it. A section this refuses is resolved
|
|
262
|
+
* `locked` for the rail and refused on a deep link with the shell's own
|
|
263
|
+
* upgrade notice — one verdict, both places — and the page body never
|
|
264
|
+
* mounts, which is the whole of the shell's promise about entitlements.
|
|
265
|
+
*
|
|
266
|
+
* The case it exists for is a hub whose first section ships on every
|
|
267
|
+
* plan and whose others do not: the CRM's contacts list is on Free, and
|
|
268
|
+
* the sales suite built on that list starts at Starter.
|
|
269
|
+
*/
|
|
270
|
+
featureFlag?: keyof OrgFeatureFlags;
|
|
271
|
+
}
|
|
272
|
+
/** A {@link ConsoleNavSection} with the shell's answers filled in. */
|
|
273
|
+
export interface ResolvedConsoleNavSection {
|
|
274
|
+
id: string;
|
|
275
|
+
label: string;
|
|
276
|
+
/** Absolute console path — `${basePath}/${id}`. */
|
|
277
|
+
href: string;
|
|
278
|
+
/** False when this section's release flag hides it from this viewer. */
|
|
279
|
+
visible: boolean;
|
|
280
|
+
/**
|
|
281
|
+
* True when the org's SETTLED plan does not carry the section's
|
|
282
|
+
* `featureFlag` (AGL-2611). The rail draws it locked and still links it —
|
|
283
|
+
* the notice behind the link is the way to buy it — and the shell refuses
|
|
284
|
+
* the body. Never true while the org read is pending: an unsettled plan
|
|
285
|
+
* is not a refusal, and a lock that appeared for one paint on a paying
|
|
286
|
+
* workspace would be the AGL-1380 defect in a new place.
|
|
287
|
+
*/
|
|
288
|
+
locked?: boolean;
|
|
289
|
+
}
|
|
290
|
+
export interface ConsoleNavItem {
|
|
291
|
+
label: string;
|
|
292
|
+
/**
|
|
293
|
+
* Host-relative console route (e.g. '/events'). The shell mounts it
|
|
294
|
+
* under the active host ('/[hostId]/events') via its generic plugin
|
|
295
|
+
* route, so the same string keys both the nav link and the page.
|
|
296
|
+
*/
|
|
297
|
+
href: string;
|
|
298
|
+
icon?: MdiIconProps;
|
|
299
|
+
/**
|
|
300
|
+
* Release-flag nav-tab id (e.g. 'nav-tab-events'). Lets the shell apply
|
|
301
|
+
* the same staff-preview gating hardcoded tabs get; omit for always-on.
|
|
302
|
+
*/
|
|
303
|
+
navTabId?: string;
|
|
304
|
+
/**
|
|
305
|
+
* The permission THIS surface requires, when it is narrower than the
|
|
306
|
+
* extension's own {@link ConsoleExtension.permission}.
|
|
307
|
+
*
|
|
308
|
+
* Declaring one NARROWS, never widens: the extension's requirement is
|
|
309
|
+
* applied alongside this one and both must be held, so a surface cannot
|
|
310
|
+
* escape its extension's gate by naming a key its reader happens to have.
|
|
311
|
+
* The composition is the release-flag one a nav item and its section
|
|
312
|
+
* already have, for the same reason.
|
|
313
|
+
*
|
|
314
|
+
* The granularity exists because one extension can register surfaces with
|
|
315
|
+
* genuinely different answers — a catalog anyone who edits the site may
|
|
316
|
+
* open, beside a register that takes money.
|
|
317
|
+
*/
|
|
318
|
+
permission?: string;
|
|
319
|
+
/**
|
|
320
|
+
* Page body rendered by the shell's generic host route. When present,
|
|
321
|
+
* the plugin owns the whole surface — no core page file needed.
|
|
322
|
+
*/
|
|
323
|
+
Component?: ConsolePluginPage;
|
|
324
|
+
/**
|
|
325
|
+
* Routed sections of this page (AGL-2501). Each becomes a URL at
|
|
326
|
+
* `${href}/${section.id}`, and the shell tells the page which one it is on.
|
|
327
|
+
*
|
|
328
|
+
* Optional, and omitting it is not a lesser option — it means the surface is
|
|
329
|
+
* ONE page, which is what every plugin surface was before this existed and
|
|
330
|
+
* what most should stay. A nav item without sections resolves exactly as it
|
|
331
|
+
* always has: its own href and nothing beneath it, so a path under it is a
|
|
332
|
+
* 404 rather than this page rendered again.
|
|
333
|
+
*/
|
|
334
|
+
sections?: readonly ConsoleNavSection[];
|
|
335
|
+
/**
|
|
336
|
+
* Whether this nav item claims every path beneath its own href, with no
|
|
337
|
+
* declared section naming them.
|
|
338
|
+
*
|
|
339
|
+
* The case is a surface whose deeper URLs are ENTITIES rather than
|
|
340
|
+
* sections: `/forms` is a list, `/forms/{formId}` is one of its rows, and
|
|
341
|
+
* the set of ids is a property of the workspace's data, so no static
|
|
342
|
+
* `sections` list could enumerate them. Without this a nav item matches its
|
|
343
|
+
* own href and nothing else, and every row's page is a 404.
|
|
344
|
+
*
|
|
345
|
+
* The trade is deliberate and is why it must be asked for. A surface that
|
|
346
|
+
* owns its subtree can no longer distinguish a typo'd path from an entity
|
|
347
|
+
* id — `/forms/bogus` reaches the page rather than the shell's 404 — so it
|
|
348
|
+
* takes on the duty of saying "no such thing" itself, which a list-detail
|
|
349
|
+
* surface has to be able to do anyway for an id that was deleted while a
|
|
350
|
+
* link to it was still in someone's inbox.
|
|
351
|
+
*
|
|
352
|
+
* Sections win where both are declared: an id the `sections` list names is
|
|
353
|
+
* resolved as a section, and this only widens what happens when none
|
|
354
|
+
* matches.
|
|
355
|
+
*/
|
|
356
|
+
ownsSubtree?: boolean;
|
|
357
|
+
/**
|
|
358
|
+
* Hrefs this nav item answered to before it moved (AGL-2595).
|
|
359
|
+
*
|
|
360
|
+
* A console path is something people keep — a bookmark, a docs link, an
|
|
361
|
+
* email from the console itself — and a nav item that changes its `href`
|
|
362
|
+
* would otherwise turn every one of them into the shell's "not available"
|
|
363
|
+
* notice. Matching here is identical to matching on `href` (the same
|
|
364
|
+
* sections, the same subtree rule), and the resolved page carries
|
|
365
|
+
* `legacy: true` so the shell can replace the address with the current one
|
|
366
|
+
* rather than leave a moved page living at two.
|
|
367
|
+
*/
|
|
368
|
+
legacyHrefs?: readonly string[];
|
|
369
|
+
/**
|
|
370
|
+
* Dashboard header for the plugin page (title + icon), and the docs topic
|
|
371
|
+
* its help `?` explains.
|
|
372
|
+
*
|
|
373
|
+
* `docsTopic` is a plain string rather than the console's
|
|
374
|
+
* `DocsHelpTopicKey` because that registry lives in `apps/console` and a
|
|
375
|
+
* lib cannot import from an app. The console validates it and falls back
|
|
376
|
+
* to the marketplace topic when it does not resolve — which is not just
|
|
377
|
+
* defensive: a third-party plugin can name any string, and the alternative
|
|
378
|
+
* to a fallback is a help button that throws on hover (AGL-1074).
|
|
379
|
+
*
|
|
380
|
+
* Every surface mounted by the shell's generic plugin route shares one
|
|
381
|
+
* `help=` prop, so a surface that omits this is not "help-less" — it
|
|
382
|
+
* inherits Plugins & Marketplace, which reads as if it were its own.
|
|
383
|
+
*/
|
|
384
|
+
header?: {
|
|
385
|
+
title: string;
|
|
386
|
+
icon?: MdiIconProps;
|
|
387
|
+
docsTopic?: string;
|
|
388
|
+
};
|
|
389
|
+
}
|
|
390
|
+
export interface ConsoleDashboardCard {
|
|
391
|
+
/** Card registry key the dashboard resolves to a component. */
|
|
392
|
+
cardId: string;
|
|
393
|
+
title: string;
|
|
394
|
+
}
|
|
395
|
+
export interface ConsoleSettingsSection {
|
|
396
|
+
sectionId: string;
|
|
397
|
+
title: string;
|
|
398
|
+
/** Rendered inside the org/host settings surface when present (AGL-419). */
|
|
399
|
+
Component?: ComponentType<ConsolePluginPageProps>;
|
|
400
|
+
}
|
|
401
|
+
/**
|
|
402
|
+
* The injection-zone catalog (AGL-433, Strapi injection-zone parity):
|
|
403
|
+
* every named slot the console shell renders through `PluginWidgetSlot`,
|
|
404
|
+
* with what the slot receives. `slot` stays an open string so apps can
|
|
405
|
+
* add custom zones without a core release; these are the guaranteed ones.
|
|
406
|
+
*/
|
|
407
|
+
export declare const CONSOLE_WIDGET_SLOTS: {
|
|
408
|
+
/** Host dashboard + screen view activity column. Props: hostId. */
|
|
409
|
+
readonly hostActivity: "hostActivity";
|
|
410
|
+
/**
|
|
411
|
+
* The host dashboard's glance row — one card per capability the site
|
|
412
|
+
* actually has. Props: hostId.
|
|
413
|
+
*
|
|
414
|
+
* The dashboard's own cards used to be imported by the page, which made
|
|
415
|
+
* enablement a decision nobody was making: `New site users` rendered on a
|
|
416
|
+
* site that has never turned member accounts on, and `Last campaign` on a
|
|
417
|
+
* workspace with the email plugin switched off. A card that answers a
|
|
418
|
+
* question about a capability belongs to the capability, so it registers
|
|
419
|
+
* here and the shell's entitlement + enablement gate decides.
|
|
420
|
+
*/
|
|
421
|
+
readonly hostDashboard: "hostDashboard";
|
|
422
|
+
/**
|
|
423
|
+
* The organization's sites page, above the site grid (AGL-2636): the
|
|
424
|
+
* org-level twin of `hostDashboard`, for a card that totals the
|
|
425
|
+
* organization rather than one site. Props: `hostId` (always `null`),
|
|
426
|
+
* `orgMount` (the org and its sites — the {@link ConsolePluginOrgMount}
|
|
427
|
+
* the org-level hub page hands its plugin page), `basePath` (that hub's
|
|
428
|
+
* own path, `/[orgSlug]/crm`, for the links a widget builds when there is
|
|
429
|
+
* no site to derive them from).
|
|
430
|
+
*
|
|
431
|
+
* Every widget here reads ACROSS the host boundary — an org-wide total
|
|
432
|
+
* carries no scope clause — which is the one read a site collaborator may
|
|
433
|
+
* never make, so the page gates the whole row on the org hub's own access
|
|
434
|
+
* verdict before any widget mounts, and renders nothing at all (no empty
|
|
435
|
+
* row, no heading) when no widget survives the gates.
|
|
436
|
+
*/
|
|
437
|
+
readonly orgDashboard: "orgDashboard";
|
|
438
|
+
/** Host dashboard commerce summary. Props: hostId, org. */
|
|
439
|
+
readonly commerceGlance: "commerceGlance";
|
|
440
|
+
/** Org Data page body. Props: orgId, org. */
|
|
441
|
+
readonly orgData: "orgData";
|
|
442
|
+
/** Besigner functions (ƒx) panel. Props: hostId. */
|
|
443
|
+
readonly besignerFunctions: "besignerFunctions";
|
|
444
|
+
/** Marketplace listing detail body. Props: hostId, listingId, permissions. */
|
|
445
|
+
readonly marketplaceListing: "marketplaceListing";
|
|
446
|
+
/**
|
|
447
|
+
* Org marketplace browse body (AGL-772). Props: hostId (acting site),
|
|
448
|
+
* permissions, orgScoped. The single org-scope place to browse + install,
|
|
449
|
+
* replacing the per-site marketplace tab.
|
|
450
|
+
*/
|
|
451
|
+
readonly orgMarketplace: "orgMarketplace";
|
|
452
|
+
/** Plugins & add-ons hub installs section. Props: hostId. */
|
|
453
|
+
readonly orgAddons: "orgAddons";
|
|
454
|
+
/** Bottom of the host dashboard. Props: hostId, org. (AGL-433) */
|
|
455
|
+
readonly dashboardFooter: "dashboardFooter";
|
|
456
|
+
/** Org settings page, below the tabbed cards. Props: orgId, org. */
|
|
457
|
+
readonly orgSettings: "orgSettings";
|
|
458
|
+
/** Host setup page, below the built-in cards. Props: hostId, org. */
|
|
459
|
+
readonly hostSettings: "hostSettings";
|
|
460
|
+
/**
|
|
461
|
+
* The top of the page a newly created site lands on (AGL-2918): where a
|
|
462
|
+
* widget may offer to START the site for the person rather than leave them
|
|
463
|
+
* an empty one. Props: {@link ConsoleHostFirstRunZoneProps}.
|
|
464
|
+
*
|
|
465
|
+
* ── The blank path is the default, not the fallback ──────────────────────
|
|
466
|
+
*
|
|
467
|
+
* The site already exists, blank, and the page beneath this zone is the
|
|
468
|
+
* ordinary one every site gets. A widget here is an OFFER on top of that
|
|
469
|
+
* page: it asks the person what they want, it builds only what they then
|
|
470
|
+
* confirm, and everything it makes is a draft the site does not serve.
|
|
471
|
+
*
|
|
472
|
+
* So a zone with no widget — no plugin loaded, a feature not released, a
|
|
473
|
+
* reader without the permission — is not a degraded state. It is the blank
|
|
474
|
+
* path, unchanged and complete, which is why nothing on the page below
|
|
475
|
+
* depends on anything here.
|
|
476
|
+
*
|
|
477
|
+
* ── A widget here MUST offer `startBlank` ────────────────────────────────
|
|
478
|
+
*
|
|
479
|
+
* A guided start that a person cannot leave turns creating a site into a
|
|
480
|
+
* funnel, so `startBlank` is handed down rather than left to each widget to
|
|
481
|
+
* invent: a widget draws it where its questions START, not at the end of
|
|
482
|
+
* them, and taking it leaves the person on this same page with nothing
|
|
483
|
+
* begun behind them. The shell remembers the choice for this site and stops
|
|
484
|
+
* asking.
|
|
485
|
+
*
|
|
486
|
+
* A widget that takes the screen rather than sitting on the page — a full
|
|
487
|
+
* screen dialog, an overlay — owes the same exit in every shape it has one:
|
|
488
|
+
* a close control, and the key a person presses to dismiss it. Each of them
|
|
489
|
+
* is `startBlank`, because a takeover somebody can only dismiss BACK INTO is
|
|
490
|
+
* the funnel this zone exists to refuse, and nothing here is a half-answered
|
|
491
|
+
* state worth returning to.
|
|
492
|
+
*/
|
|
493
|
+
readonly hostFirstRun: "hostFirstRun";
|
|
494
|
+
/**
|
|
495
|
+
* The host setup Theme section, between the "What you have changed" card
|
|
496
|
+
* and the editor (AGL-2938). Props: {@link ConsoleHostThemeZoneProps} — the
|
|
497
|
+
* site, the theme the editor shows, where that theme came from, the
|
|
498
|
+
* editor's own preview, and `proposeDraft`, which puts a theme in the
|
|
499
|
+
* editor as unsaved changes.
|
|
500
|
+
*
|
|
501
|
+
* A widget here proposes and never writes. The person saves what it
|
|
502
|
+
* proposed through the editor's own Save — the guarded write that stores
|
|
503
|
+
* an installed theme's edits as its override patch — or discards it. A
|
|
504
|
+
* palette importer, a brand kit and a generator are the same shape of
|
|
505
|
+
* widget.
|
|
506
|
+
*/
|
|
507
|
+
readonly hostTheme: "hostTheme";
|
|
508
|
+
/**
|
|
509
|
+
* Staff admin org detail (staff-only surfaces). Props: orgId. A staff
|
|
510
|
+
* zone — see {@link CONSOLE_STAFF_WIDGET_SLOTS}.
|
|
511
|
+
*/
|
|
512
|
+
readonly adminOrgDetail: "adminOrgDetail";
|
|
513
|
+
/**
|
|
514
|
+
* Billing → Usage, below the meters (AGL-2940). Props: `orgId`, `org` (the
|
|
515
|
+
* billing-merged org doc), `canManage` (the reader holds
|
|
516
|
+
* `billing.manage`). A card here explains or controls consumption the
|
|
517
|
+
* meters above it show.
|
|
518
|
+
*/
|
|
519
|
+
readonly orgBillingUsage: "orgBillingUsage";
|
|
520
|
+
/**
|
|
521
|
+
* Billing → Overview, among the plan and add-on cards (AGL-2940). Props:
|
|
522
|
+
* `orgId`, `org`, `plan` (the page's own defaulted plan), `canManage`.
|
|
523
|
+
*/
|
|
524
|
+
readonly orgBillingOverview: "orgBillingOverview";
|
|
525
|
+
/**
|
|
526
|
+
* The staff org page, among its cards (AGL-2940). Props: `orgId`. Staff
|
|
527
|
+
* only — the page is behind `StaffOnly`, and a widget here may read the
|
|
528
|
+
* staff-only routes. A staff zone — see {@link CONSOLE_STAFF_WIDGET_SLOTS}.
|
|
529
|
+
*/
|
|
530
|
+
readonly staffOrg: "staffOrg";
|
|
531
|
+
/**
|
|
532
|
+
* The staff user page, below the account's activity. Props: `uid`. A
|
|
533
|
+
* staff zone — see {@link CONSOLE_STAFF_WIDGET_SLOTS}.
|
|
534
|
+
*/
|
|
535
|
+
readonly staffUser: "staffUser";
|
|
536
|
+
/**
|
|
537
|
+
* A COLUMN of the staff Organizations list (AGL-2984) — see
|
|
538
|
+
* {@link ConsoleWidget.column}. The list renders the widget's component
|
|
539
|
+
* once per row with `{ row, orgId, orgIds }`: the row as the list route
|
|
540
|
+
* serves it, that row's org id, and every org id on the page, so a column
|
|
541
|
+
* that reads figures of its own asks once for the page rather than once
|
|
542
|
+
* per row. Its `Header` receives `{ orgIds }` beside the sort props. A
|
|
543
|
+
* staff zone — see {@link CONSOLE_STAFF_WIDGET_SLOTS}.
|
|
544
|
+
*/
|
|
545
|
+
readonly staffOrgsListColumn: "staffOrgsListColumn";
|
|
546
|
+
/**
|
|
547
|
+
* The staff org usage table (AGL-2984): the monthly rollups on the staff
|
|
548
|
+
* org page and in the Organizations list's usage dialog. A widget with a
|
|
549
|
+
* `column` is a column of the table, between Forms and Cost, rendered once
|
|
550
|
+
* per month with `{ month, orgId }` — `month` is the rollup row as
|
|
551
|
+
* `/api/admin/org-usage` serves it. A widget without one renders above
|
|
552
|
+
* the table with `{ orgId, org }`, where `org` is the org document when the
|
|
553
|
+
* surface holds one and `undefined` when it does not. A staff zone — see
|
|
554
|
+
* {@link CONSOLE_STAFF_WIDGET_SLOTS}.
|
|
555
|
+
*/
|
|
556
|
+
readonly staffOrgUsageColumn: "staffOrgUsageColumn";
|
|
557
|
+
/**
|
|
558
|
+
* The org's team member detail page, below the member's activity
|
|
559
|
+
* (AGL-2940). Props: `orgId`, `orgSlug`, `uid`, `member` (the org member
|
|
560
|
+
* document as the page loaded it), `hosts` (the org's sites, for naming
|
|
561
|
+
* them), `canManage` (the reader may manage the org).
|
|
562
|
+
*/
|
|
563
|
+
readonly orgMember: "orgMember";
|
|
564
|
+
/**
|
|
565
|
+
* A COLUMN of the org Team table (AGL-2940) — see
|
|
566
|
+
* {@link ConsoleWidget.column}: the widget declares the header and the
|
|
567
|
+
* shell renders its component once per row with `{ member, orgId,
|
|
568
|
+
* canManage }`. A widget on this slot without a `column` renders nothing.
|
|
569
|
+
*/
|
|
570
|
+
readonly orgMembersListColumn: "orgMembersListColumn";
|
|
571
|
+
/**
|
|
572
|
+
* The site collaborators card (AGL-2940). A widget with a `column` is a
|
|
573
|
+
* column of its table, rendered per row with `{ member, orgId, hostId,
|
|
574
|
+
* canManage }` — the owner's row too, with `member` carrying the owner's
|
|
575
|
+
* `uid` and `role: 'owner'`; a widget without one renders beneath the
|
|
576
|
+
* table with `{ hostId, canManage }`.
|
|
577
|
+
*/
|
|
578
|
+
readonly hostMembers: "hostMembers";
|
|
579
|
+
/**
|
|
580
|
+
* The console shell's assistant dock (AGL-2940): the one position above
|
|
581
|
+
* every route boundary in both the `(app)` and `(editor)` shells, where a
|
|
582
|
+
* floating helper survives a navigation. Props: none — a widget here
|
|
583
|
+
* resolves its own scope from the URL, as the shell's own chrome does.
|
|
584
|
+
*/
|
|
585
|
+
readonly assistPanel: "assistPanel";
|
|
586
|
+
/**
|
|
587
|
+
* A section at the bottom of the besigner's Attributes panel (AGL-2940),
|
|
588
|
+
* under the selected element's own fields. Props: `hostId` (`null` on an
|
|
589
|
+
* editor that names no site), and `node`, the selected element (AGL-2984)
|
|
590
|
+
* — present wherever the designer draws the panel for a selection.
|
|
591
|
+
*/
|
|
592
|
+
readonly besignerInspector: "besignerInspector";
|
|
593
|
+
/**
|
|
594
|
+
* Inside a SEARCH LISTING editor (AGL-2910), under its fields. Props:
|
|
595
|
+
* {@link ConsoleSeoFieldsZoneProps} — what the listing describes, the
|
|
596
|
+
* fields the editor edits and what they hold, and `proposeValues`, which
|
|
597
|
+
* stages values in those fields as unsaved edits.
|
|
598
|
+
*
|
|
599
|
+
* Two editors host it: the screen detail page's SEO card, and the commerce
|
|
600
|
+
* product editor's search engine listing, which draws it through
|
|
601
|
+
* `useConsoleWidgetSlot` because a plugin's dialog cannot mount the shell's
|
|
602
|
+
* slot itself. A widget here proposes and never writes: the editor's own
|
|
603
|
+
* Save is the write, with the guards that write carries. A keyword checker,
|
|
604
|
+
* a translation memory and a generator are the same shape of widget.
|
|
605
|
+
*/
|
|
606
|
+
readonly seoFields: "seoFields";
|
|
607
|
+
/**
|
|
608
|
+
* The host setup SEO section, above the site SEO form (AGL-2910). Props:
|
|
609
|
+
* {@link ConsoleHostSeoZoneProps} — the site, its stored SEO settings, and
|
|
610
|
+
* `proposeDraft`, which puts values in the form as unsaved edits. The
|
|
611
|
+
* form's Update stores them; nothing a widget proposes reaches the
|
|
612
|
+
* published site before that.
|
|
613
|
+
*/
|
|
614
|
+
readonly hostSeo: "hostSeo";
|
|
615
|
+
/** {@link ConsoleRecordInsightsZoneProps} */
|
|
616
|
+
readonly recordInsights: "recordInsights";
|
|
617
|
+
/** {@link ConsoleRecordEmailZoneProps} */
|
|
618
|
+
readonly recordEmail: "recordEmail";
|
|
619
|
+
/** {@link ConsoleImportMappingZoneProps} */
|
|
620
|
+
readonly importMapping: "importMapping";
|
|
621
|
+
/**
|
|
622
|
+
* The besigner's secondary toolbar, after the undo and redo controls
|
|
623
|
+
* (AGL-2984), on every editor the designer opens: screens, layouts,
|
|
624
|
+
* components, forms, templates and email designs. A control here acts on
|
|
625
|
+
* the document in the editor. Props: `hostId` (`null` on an editor that
|
|
626
|
+
* names no site).
|
|
627
|
+
*/
|
|
628
|
+
readonly besignerToolbar: "besignerToolbar";
|
|
629
|
+
/**
|
|
630
|
+
* A site's Screens page, beside its Templates and Create New Screen actions
|
|
631
|
+
* (AGL-2907): another way to start a screen. Props:
|
|
632
|
+
* {@link ConsoleHostScreensZoneProps}. A widget here runs its own flow and
|
|
633
|
+
* writes nothing through the page; the screens list shows what it makes once
|
|
634
|
+
* it exists.
|
|
635
|
+
*/
|
|
636
|
+
readonly hostScreens: "hostScreens";
|
|
637
|
+
/**
|
|
638
|
+
* A site's Templates page, beside its Create Template action (AGL-3043):
|
|
639
|
+
* another way to start a template. Props:
|
|
640
|
+
* {@link ConsoleHostTemplatesZoneProps}. The `hostScreens` contract: a
|
|
641
|
+
* widget here runs its own flow and writes nothing through the page, and
|
|
642
|
+
* the template list shows what it makes once it exists.
|
|
643
|
+
*/
|
|
644
|
+
readonly hostTemplates: "hostTemplates";
|
|
645
|
+
/**
|
|
646
|
+
* A site's Layouts page, beside its Templates and Create New Layout actions
|
|
647
|
+
* (AGL-3043): another way to start a layout. Props:
|
|
648
|
+
* {@link ConsoleHostLayoutsZoneProps}, on the `hostScreens` contract.
|
|
649
|
+
*/
|
|
650
|
+
readonly hostLayouts: "hostLayouts";
|
|
651
|
+
/**
|
|
652
|
+
* The Forms page of a site, beside its Create Form action (AGL-3043):
|
|
653
|
+
* another way to start a form. Props: {@link ConsoleHostFormsZoneProps}, on
|
|
654
|
+
* the `hostScreens` contract.
|
|
655
|
+
*
|
|
656
|
+
* The Forms page is the forms plugin's own surface, so the plugin HOSTS
|
|
657
|
+
* this zone: it draws the renderer `useConsoleWidgetSlot` hands down, as
|
|
658
|
+
* the product editor draws `seoFields`, and every gate a console page's
|
|
659
|
+
* slot applies applies here too.
|
|
660
|
+
*/
|
|
661
|
+
readonly hostForms: "hostForms";
|
|
662
|
+
/**
|
|
663
|
+
* A site's Components page, beside its Templates and Create Component
|
|
664
|
+
* actions (AGL-3051): another way to start a reusable component. Props:
|
|
665
|
+
* {@link ConsoleHostComponentsZoneProps}, on the `hostScreens` contract.
|
|
666
|
+
*/
|
|
667
|
+
readonly hostComponents: "hostComponents";
|
|
668
|
+
/**
|
|
669
|
+
* The organization's sites page, beside the sites themselves (AGL-2911):
|
|
670
|
+
* an action a member takes across MANY of the org's sites at once, rather
|
|
671
|
+
* than a card totaling them. Props: {@link ConsoleOrgSitesZoneProps}.
|
|
672
|
+
*
|
|
673
|
+
* Distinct from `orgDashboard`, which is on the same page and gated on the
|
|
674
|
+
* org CRM hub's reach verdict because every card there reads across the
|
|
675
|
+
* host boundary. A widget here reads nothing of the kind: the sites it acts
|
|
676
|
+
* on are the ones the page already resolved for this reader, and its own
|
|
677
|
+
* door proves the reader's permission on each of them again. So the zone
|
|
678
|
+
* carries no gate beyond the slot's own — enablement, entitlement, and the
|
|
679
|
+
* widget's declared permission.
|
|
680
|
+
*/
|
|
681
|
+
readonly orgSites: "orgSites";
|
|
682
|
+
/**
|
|
683
|
+
* The Automation page's Actions, beside Add action and Recipes (AGL-2919):
|
|
684
|
+
* another way to start an automation. Props:
|
|
685
|
+
* {@link ConsoleHostAutomationsZoneProps}.
|
|
686
|
+
*
|
|
687
|
+
* The Automation page is the workflows plugin's own surface, so the plugin
|
|
688
|
+
* HOSTS this zone through the renderer `useConsoleWidgetSlot` hands down, as
|
|
689
|
+
* the product editor hosts `seoFields`, and every gate a console page's slot
|
|
690
|
+
* applies applies here too. A widget here writes nothing through the page:
|
|
691
|
+
* the Actions list shows what it makes once it exists, and `openAction`
|
|
692
|
+
* opens a listed action in the Actions editor.
|
|
693
|
+
*/
|
|
694
|
+
readonly hostAutomations: "hostAutomations";
|
|
695
|
+
/**
|
|
696
|
+
* The editor of one SAVED automation — an action or a workflow — on the
|
|
697
|
+
* Automation page (AGL-2919). Props: {@link ConsoleAutomationEditorZoneProps}.
|
|
698
|
+
* Hosted by the workflows plugin, as `hostAutomations` is. A widget here
|
|
699
|
+
* reads the automation as it is stored and changes nothing in the editor.
|
|
700
|
+
*/
|
|
701
|
+
readonly automationEditor: "automationEditor";
|
|
702
|
+
/**
|
|
703
|
+
* One FAILED run in an automation's run history (AGL-2919), drawn once per
|
|
704
|
+
* failed row. Props: {@link ConsoleAutomationRunZoneProps}. Hosted by the
|
|
705
|
+
* workflows plugin. A widget here reads the run as it was recorded and
|
|
706
|
+
* changes nothing.
|
|
707
|
+
*/
|
|
708
|
+
readonly automationRun: "automationRun";
|
|
709
|
+
/** The commerce product editor's fields (AGL-2916). Props: {@link ConsoleProductEditorZoneProps}. */
|
|
710
|
+
readonly productEditor: "productEditor";
|
|
711
|
+
/** Above the commerce products hub's catalog table (AGL-2916). Props: {@link ConsoleProductsHubZoneProps}. */
|
|
712
|
+
readonly productsHub: "productsHub";
|
|
713
|
+
/** Inside the commerce CSV import dialog (AGL-2916). Props: {@link ConsoleProductImportZoneProps}. */
|
|
714
|
+
readonly productImport: "productImport";
|
|
715
|
+
};
|
|
716
|
+
export type ConsoleWidgetSlot = (typeof CONSOLE_WIDGET_SLOTS)[keyof typeof CONSOLE_WIDGET_SLOTS];
|
|
717
|
+
/** What the `hostScreens` zone hands each widget (AGL-2907). */
|
|
718
|
+
export interface ConsoleHostScreensZoneProps {
|
|
719
|
+
hostId: string;
|
|
720
|
+
/** The org the page names; `undefined` while it resolves. */
|
|
721
|
+
orgId: string | undefined;
|
|
722
|
+
}
|
|
723
|
+
/**
|
|
724
|
+
* What the `hostTemplates`, `hostLayouts` and `hostForms` zones (AGL-3043) and
|
|
725
|
+
* the `hostComponents` zone (AGL-3051) hand each widget: the site and its org,
|
|
726
|
+
* as `hostScreens` hands them.
|
|
727
|
+
*/
|
|
728
|
+
export type ConsoleHostTemplatesZoneProps = ConsoleHostScreensZoneProps;
|
|
729
|
+
/** See {@link ConsoleHostTemplatesZoneProps}. */
|
|
730
|
+
export type ConsoleHostLayoutsZoneProps = ConsoleHostScreensZoneProps;
|
|
731
|
+
/** See {@link ConsoleHostTemplatesZoneProps}. */
|
|
732
|
+
export type ConsoleHostFormsZoneProps = ConsoleHostScreensZoneProps;
|
|
733
|
+
/** See {@link ConsoleHostTemplatesZoneProps}. */
|
|
734
|
+
export type ConsoleHostComponentsZoneProps = ConsoleHostScreensZoneProps;
|
|
735
|
+
/** What the `hostAutomations` zone hands each widget (AGL-2919). */
|
|
736
|
+
export interface ConsoleHostAutomationsZoneProps {
|
|
737
|
+
hostId: string;
|
|
738
|
+
/** The org the page names; `undefined` while it resolves. */
|
|
739
|
+
orgId: string | undefined;
|
|
740
|
+
/**
|
|
741
|
+
* Opens the Actions editor on a listed action. `false` when the id names no
|
|
742
|
+
* action the list has read yet, which is how a widget whose draft was just
|
|
743
|
+
* written tells a list that has not caught up from one that opened it.
|
|
744
|
+
*/
|
|
745
|
+
openAction: (actionId: string) => boolean;
|
|
746
|
+
}
|
|
747
|
+
/** One automation on the Automation page: an action, or a workflow (AGL-2919). */
|
|
748
|
+
export interface ConsoleAutomationTarget {
|
|
749
|
+
type: 'action' | 'workflow';
|
|
750
|
+
id: string;
|
|
751
|
+
name: string;
|
|
752
|
+
}
|
|
753
|
+
/** What the `automationEditor` zone hands each widget (AGL-2919). */
|
|
754
|
+
export interface ConsoleAutomationEditorZoneProps {
|
|
755
|
+
hostId: string;
|
|
756
|
+
/** The org the page names; `undefined` while it resolves. */
|
|
757
|
+
orgId: string | undefined;
|
|
758
|
+
/** The automation the editor has open, as it is stored. */
|
|
759
|
+
target: ConsoleAutomationTarget;
|
|
760
|
+
}
|
|
761
|
+
/** What the `automationRun` zone hands each widget (AGL-2919). */
|
|
762
|
+
export interface ConsoleAutomationRunZoneProps {
|
|
763
|
+
hostId: string;
|
|
764
|
+
/** The org the page names; `undefined` while it resolves. */
|
|
765
|
+
orgId: string | undefined;
|
|
766
|
+
/** The automation the run belongs to. */
|
|
767
|
+
target: ConsoleAutomationTarget;
|
|
768
|
+
/** The run's entry in the site's activity log. */
|
|
769
|
+
runId: string;
|
|
770
|
+
}
|
|
771
|
+
/** What the `orgSites` zone hands each widget (AGL-2911). */
|
|
772
|
+
export interface ConsoleOrgSitesZoneProps {
|
|
773
|
+
/** Always `null`: the zone belongs to the organization, not to one site. */
|
|
774
|
+
hostId: null;
|
|
775
|
+
/** The org and the sites the page resolved for this reader. */
|
|
776
|
+
orgMount: ConsolePluginOrgMount;
|
|
777
|
+
/** The sites page's own path, for the links a widget builds. */
|
|
778
|
+
basePath: string;
|
|
779
|
+
}
|
|
780
|
+
/** What the `hostFirstRun` zone hands each widget (AGL-2918). */
|
|
781
|
+
export interface ConsoleHostFirstRunZoneProps {
|
|
782
|
+
hostId: string;
|
|
783
|
+
/** The org the page names; `undefined` while it resolves. */
|
|
784
|
+
orgId: string | undefined;
|
|
785
|
+
/** Path slug for building `/[orgSlug]/…` links. */
|
|
786
|
+
orgSlug: string;
|
|
787
|
+
/** The site's subdomain, which is what a console URL names a site by. */
|
|
788
|
+
host: string | null;
|
|
789
|
+
/**
|
|
790
|
+
* Leaves the guided start for the blank site the person already has: this
|
|
791
|
+
* same page, with nothing created and nothing begun. The shell records the
|
|
792
|
+
* choice for this site and draws the zone no more.
|
|
793
|
+
*
|
|
794
|
+
* Required of every widget on this zone, drawn where its questions start
|
|
795
|
+
* rather than after them, and — for a widget that takes the screen — what
|
|
796
|
+
* every way of dismissing it does. See `hostFirstRun` in
|
|
797
|
+
* {@link CONSOLE_WIDGET_SLOTS}.
|
|
798
|
+
*/
|
|
799
|
+
startBlank: () => void;
|
|
800
|
+
}
|
|
801
|
+
/** What the `hostTheme` zone hands each widget (AGL-2938). */
|
|
802
|
+
export interface ConsoleHostThemeZoneProps {
|
|
803
|
+
hostId: string;
|
|
804
|
+
/** The org the page names; `undefined` while it resolves. */
|
|
805
|
+
orgId: string | undefined;
|
|
806
|
+
/** Path slug for building `/[orgSlug]/…` links. */
|
|
807
|
+
orgSlug: string;
|
|
808
|
+
/** The site's subdomain, which is what a console URL names a site by. */
|
|
809
|
+
host: string | null;
|
|
810
|
+
/** The theme the editor shows: the site's theme with its overrides resolved. */
|
|
811
|
+
theme: HostTheme | undefined;
|
|
812
|
+
/** Where that theme came from, which decides how an edit to it is stored. */
|
|
813
|
+
themeSource: HostThemeSource;
|
|
814
|
+
/** The editor's own preview, which renders a theme over the brand base. */
|
|
815
|
+
ThemePreview: ComponentType<{
|
|
816
|
+
theme: HostTheme;
|
|
817
|
+
scheme: HostThemeScheme;
|
|
818
|
+
}>;
|
|
819
|
+
/**
|
|
820
|
+
* Puts `theme` in the editor as unsaved changes under `key`. A new key
|
|
821
|
+
* replaces the previous draft; the same key again changes nothing until
|
|
822
|
+
* the editor has saved or discarded it.
|
|
823
|
+
*/
|
|
824
|
+
proposeDraft: (theme: HostTheme, key: string) => void;
|
|
825
|
+
}
|
|
826
|
+
/**
|
|
827
|
+
* The zones on the STAFF pages (AGL-2939): the staff org page, its detail
|
|
828
|
+
* zone, and the staff user page.
|
|
829
|
+
*
|
|
830
|
+
* No workspace names the plugin set there. A staff page is ABOUT an org or
|
|
831
|
+
* an account, and the reader's own memberships have nothing to do with what
|
|
832
|
+
* it shows, so the console reads these zones from the plugins it loads for
|
|
833
|
+
* the staff area — every plugin that declares a `staff` register surface —
|
|
834
|
+
* and consults neither a widget's entitlement nor its permission: both are
|
|
835
|
+
* answers about a workspace, and the staff area's guard is what admits the
|
|
836
|
+
* reader.
|
|
837
|
+
*/
|
|
838
|
+
export declare const CONSOLE_STAFF_WIDGET_SLOTS: readonly ConsoleWidgetSlot[];
|
|
839
|
+
/** Whether a slot is one of the {@link CONSOLE_STAFF_WIDGET_SLOTS}. */
|
|
840
|
+
export declare function isConsoleStaffWidgetSlot(slot: string): boolean;
|
|
841
|
+
/** Search listing values by field; a field the editor does not hold is absent. */
|
|
842
|
+
export type ConsoleSeoFieldValues = Partial<Record<SeoListingFieldKey, string>>;
|
|
843
|
+
/**
|
|
844
|
+
* What a search listing describes (AGL-2910). A screen is read from its own
|
|
845
|
+
* documents by whoever needs more than its name; a product travels with its
|
|
846
|
+
* name and description, because the product document is the commerce
|
|
847
|
+
* plugin's and nothing else reads it.
|
|
848
|
+
*/
|
|
849
|
+
export type ConsoleSeoFieldsSubject = {
|
|
850
|
+
kind: 'screen';
|
|
851
|
+
/** The screen document id. */
|
|
852
|
+
id: string;
|
|
853
|
+
/** The version the page is showing, whose content the listing is about. */
|
|
854
|
+
versionId: string | null;
|
|
855
|
+
name: string;
|
|
856
|
+
} | {
|
|
857
|
+
kind: 'product';
|
|
858
|
+
/** `null` for a product that has not been saved yet. */
|
|
859
|
+
id: string | null;
|
|
860
|
+
name: string;
|
|
861
|
+
description: string;
|
|
862
|
+
};
|
|
863
|
+
/** What the `seoFields` zone hands each widget (AGL-2910). */
|
|
864
|
+
export interface ConsoleSeoFieldsZoneProps {
|
|
865
|
+
hostId: string;
|
|
866
|
+
/** The org the page names; `undefined` while it resolves. */
|
|
867
|
+
orgId: string | undefined;
|
|
868
|
+
/** Path slug for building `/[orgSlug]/…` links. */
|
|
869
|
+
orgSlug: string;
|
|
870
|
+
subject: ConsoleSeoFieldsSubject;
|
|
871
|
+
/**
|
|
872
|
+
* The fields this editor edits, in its order — the only ones a widget may
|
|
873
|
+
* propose. Keys of the `seo-listing-fields` catalog, which carries each
|
|
874
|
+
* field's label and length.
|
|
875
|
+
*/
|
|
876
|
+
fields: readonly SeoListingFieldKey[];
|
|
877
|
+
/** What each field holds as the editor shows it: saved, or staged and unsaved. */
|
|
878
|
+
values: ConsoleSeoFieldValues;
|
|
879
|
+
/** Whether the listing has a social image — an image description needs one. */
|
|
880
|
+
hasImage: boolean;
|
|
881
|
+
/**
|
|
882
|
+
* Stages `values` in the editor as unsaved edits under `key`. Fields the
|
|
883
|
+
* editor does not edit are ignored. The editor's own Save is what stores
|
|
884
|
+
* them; a widget never writes the listing itself.
|
|
885
|
+
*/
|
|
886
|
+
proposeValues: (values: ConsoleSeoFieldValues, key: string) => void;
|
|
887
|
+
}
|
|
888
|
+
/** What the `hostSeo` zone hands each widget (AGL-2910). */
|
|
889
|
+
export interface ConsoleHostSeoZoneProps {
|
|
890
|
+
hostId: string;
|
|
891
|
+
/** The org the page names; `undefined` while it resolves. */
|
|
892
|
+
orgId: string | undefined;
|
|
893
|
+
/** Path slug for building `/[orgSlug]/…` links. */
|
|
894
|
+
orgSlug: string;
|
|
895
|
+
/** The site's subdomain, which is what a console URL names a site by. */
|
|
896
|
+
host: string | null;
|
|
897
|
+
/** The site's stored `seo` settings, as the form was seeded with them. */
|
|
898
|
+
seo: Record<string, unknown> | undefined;
|
|
899
|
+
/**
|
|
900
|
+
* Puts `values` in the site SEO form as unsaved edits, keyed by the form's
|
|
901
|
+
* field names (`seo.entity.description`, `seo.agent.whenToUse`). Proposals
|
|
902
|
+
* land in the form's draft beside what was typed, the same `key` twice
|
|
903
|
+
* applies once, and the form's Update is what stores them.
|
|
904
|
+
*/
|
|
905
|
+
proposeDraft: (values: Record<string, string>, key: string) => void;
|
|
906
|
+
}
|
|
907
|
+
/**
|
|
908
|
+
* A column a widget contributes to a shell-owned table (AGL-2940) — the org
|
|
909
|
+
* Team table and the site collaborators table read these. The widget's
|
|
910
|
+
* `Component` is the CELL renderer, mounted once per row with the row as a
|
|
911
|
+
* prop beside the slot's own props; the header and the sort key are the
|
|
912
|
+
* table's to draw.
|
|
913
|
+
*/
|
|
914
|
+
export interface ConsoleWidgetColumn {
|
|
915
|
+
/** The header cell's text, and the column's name wherever it is listed. */
|
|
916
|
+
header: string;
|
|
917
|
+
/**
|
|
918
|
+
* The row field a table that sorts orders this column by. Carried for
|
|
919
|
+
* every column contract so a sortable table can honor it; the two member
|
|
920
|
+
* tables render in fetch order and do not read it today.
|
|
921
|
+
*/
|
|
922
|
+
sortKey?: string;
|
|
923
|
+
align?: 'left' | 'right' | 'center';
|
|
924
|
+
/**
|
|
925
|
+
* The header cell's content when a plain `header` is not enough
|
|
926
|
+
* (AGL-2939): a hint, or a sort over values only the plugin can read.
|
|
927
|
+
* Mounted once per table with the slot's props beside
|
|
928
|
+
* {@link ConsoleWidgetColumnHeaderProps}; without it the table draws
|
|
929
|
+
* `header` as text.
|
|
930
|
+
*/
|
|
931
|
+
Header?: ComponentType<any>;
|
|
932
|
+
}
|
|
933
|
+
/**
|
|
934
|
+
* What a column's own header receives beside the slot's props (AGL-2939).
|
|
935
|
+
* The table keeps one sort at a time, so a column that sorts replaces
|
|
936
|
+
* another's order.
|
|
937
|
+
*/
|
|
938
|
+
export interface ConsoleWidgetColumnHeaderProps {
|
|
939
|
+
/**
|
|
940
|
+
* Hands the table a row comparator, or `null` to put the rows back in the
|
|
941
|
+
* table's own order. Stable for the life of the table.
|
|
942
|
+
*/
|
|
943
|
+
onSort: (compare: ((a: never, b: never) => number) | null) => void;
|
|
944
|
+
/** Whether the rows are in this column's order. */
|
|
945
|
+
sorted: boolean;
|
|
946
|
+
}
|
|
947
|
+
/**
|
|
948
|
+
* A component a plugin renders into a NAMED console slot (AGL-419/433) —
|
|
949
|
+
* see {@link CONSOLE_WIDGET_SLOTS} for the guaranteed zones and their
|
|
950
|
+
* props. The shell owns placement; the plugin owns the UI.
|
|
951
|
+
*/
|
|
952
|
+
export interface ConsoleWidget {
|
|
953
|
+
slot: string;
|
|
954
|
+
/**
|
|
955
|
+
* Present when the widget is a table COLUMN rather than a card (AGL-2940)
|
|
956
|
+
* — see {@link ConsoleWidgetColumn}. Only the slots documented as column
|
|
957
|
+
* slots read it; elsewhere it is ignored.
|
|
958
|
+
*/
|
|
959
|
+
column?: ConsoleWidgetColumn;
|
|
960
|
+
/**
|
|
961
|
+
* Stable identity for this widget, unique within the plugin per slot.
|
|
962
|
+
* The id names the CARD, not its placement: the same card registered on
|
|
963
|
+
* a second slot — the CRM's glance on the host dashboard and again on the
|
|
964
|
+
* org's sites page — carries one id on both.
|
|
965
|
+
*
|
|
966
|
+
* A PERSISTED IDENTIFIER wherever the shell lets someone arrange the
|
|
967
|
+
* surface it lands on — the console stores dashboard cards a reader has
|
|
968
|
+
* switched off by this string, and reads it back sessions later. Giving a
|
|
969
|
+
* retired id to a different card therefore shows that reader an
|
|
970
|
+
* arrangement they never chose. Retire an id by leaving it reserved and
|
|
971
|
+
* minting a new one, never by reusing it.
|
|
972
|
+
*/
|
|
973
|
+
widgetId: string;
|
|
974
|
+
/**
|
|
975
|
+
* What to call this widget where it is LISTED rather than rendered — the
|
|
976
|
+
* console's dashboard customize dialog is the one such place today.
|
|
977
|
+
*
|
|
978
|
+
* Match the card's own heading: the two names sit a click apart, and a
|
|
979
|
+
* switch labeled differently from the card it controls reads as a switch
|
|
980
|
+
* for something else. Omitting it falls back to the extension's
|
|
981
|
+
* `displayName`, which is right for a plugin contributing one card and
|
|
982
|
+
* ambiguous for one contributing several.
|
|
983
|
+
*/
|
|
984
|
+
title?: string;
|
|
985
|
+
/**
|
|
986
|
+
* The permission a reader must hold for this card, when it is narrower
|
|
987
|
+
* than its extension's own {@link ConsoleExtension.permission}.
|
|
988
|
+
*
|
|
989
|
+
* Composes by AND with the extension's, like a nav item's does: a widget
|
|
990
|
+
* cannot escape its extension's gate by naming a key its reader happens to
|
|
991
|
+
* hold, and declaring nothing here inherits the extension's requirement
|
|
992
|
+
* rather than clearing it.
|
|
993
|
+
*
|
|
994
|
+
* A card is a surface the reader never asked for — the shell drops it onto
|
|
995
|
+
* a page they opened for something else — so there is nowhere in it to put
|
|
996
|
+
* an upsell or a refusal, and a widget its reader may not have is simply
|
|
997
|
+
* absent. That is the same treatment the entitlement gate gives a widget,
|
|
998
|
+
* and for the same reason.
|
|
999
|
+
*/
|
|
1000
|
+
permission?: string;
|
|
1001
|
+
/**
|
|
1002
|
+
* The entitlement THIS card needs, when it is narrower than its
|
|
1003
|
+
* extension's {@link ConsoleExtension.featureFlag} (AGL-2611).
|
|
1004
|
+
*
|
|
1005
|
+
* Composes by AND with the extension's, exactly as `permission` above
|
|
1006
|
+
* does: a card cannot escape its extension's gate by declaring nothing,
|
|
1007
|
+
* and declaring one here can only narrow. The case is an extension whose
|
|
1008
|
+
* surface ships on every plan while one of its cards belongs to a paid
|
|
1009
|
+
* part of it. Absent without an upsell, for the reason `permission` gives.
|
|
1010
|
+
*/
|
|
1011
|
+
featureFlag?: keyof OrgFeatureFlags;
|
|
1012
|
+
Component: ComponentType<any>;
|
|
1013
|
+
}
|
|
1014
|
+
/**
|
|
1015
|
+
* Console half of the pattern: everything a feature contributes to the
|
|
1016
|
+
* console shell. Declarative — the shell owns rendering and applies the
|
|
1017
|
+
* feature-flag gate, so extensions cannot bypass entitlements.
|
|
1018
|
+
*
|
|
1019
|
+
* That sentence describes `apps/console/utils/extension-entitlement.ts`,
|
|
1020
|
+
* which the plugin route and `PluginWidgetSlot` both call before they mount
|
|
1021
|
+
* anything an extension registered (AGL-2484). It was an aspiration until
|
|
1022
|
+
* then: the route resolved the entitlement and handed it to the extension as
|
|
1023
|
+
* the `entitled` PROP, and the widget slot did not resolve it at all, so
|
|
1024
|
+
* enforcement rested on each extension policing itself — which one
|
|
1025
|
+
* first-party page did not do.
|
|
1026
|
+
*
|
|
1027
|
+
* What the gate covers, exactly: a `featureFlag` refuses to RENDER the
|
|
1028
|
+
* extension's page body and its widgets. Nav items stay visible on purpose.
|
|
1029
|
+
* Hiding the tab would hide the only route most workspaces have to the page
|
|
1030
|
+
* that sells the feature, and a nav entry leading to the shell's own upgrade
|
|
1031
|
+
* notice bypasses nothing.
|
|
1032
|
+
*
|
|
1033
|
+
* TWO QUESTIONS, BOTH ANSWERED BY THE SHELL. `featureFlag` is about the
|
|
1034
|
+
* organization's plan; `permission` is about the person reading, and it is
|
|
1035
|
+
* enforced in the same place and the same way — resolved from the member's
|
|
1036
|
+
* own permission map, never from anything the extension supplies, and read
|
|
1037
|
+
* before the surface is constructed. An extension declares what it requires
|
|
1038
|
+
* and the shell decides whether the requirement is met, so the sentence
|
|
1039
|
+
* above holds for authorization as well as for entitlements.
|
|
1040
|
+
*/
|
|
1041
|
+
/**
|
|
1042
|
+
* What a blocked org is told about a feature it does not hold, in the
|
|
1043
|
+
* extension's own words.
|
|
1044
|
+
*
|
|
1045
|
+
* PRESENTATION ONLY. The shell decides entitlement from the org billing doc
|
|
1046
|
+
* and this extension's `featureFlag`, and reads this object solely to render
|
|
1047
|
+
* a refusal it has ALREADY decided on. Nothing here is an input to that
|
|
1048
|
+
* decision, and an extension supplying it gains no access — the surface it
|
|
1049
|
+
* describes stays unmounted either way.
|
|
1050
|
+
*
|
|
1051
|
+
* It exists because the shell's own copy can only speak in generalities. An
|
|
1052
|
+
* entitlement that no plan grants — one sold as a per-organization add-on —
|
|
1053
|
+
* is described exactly wrong by "not included in your current plan", which
|
|
1054
|
+
* sends the reader to compare plan tiers that would not have helped.
|
|
1055
|
+
*/
|
|
1056
|
+
export interface ConsoleUpgradeNotice {
|
|
1057
|
+
/**
|
|
1058
|
+
* The sentence a blocked org reads. Plain text: the shell renders it as a
|
|
1059
|
+
* string, never as markup, and a third-party extension writes this.
|
|
1060
|
+
*/
|
|
1061
|
+
message: string;
|
|
1062
|
+
/**
|
|
1063
|
+
* Which card on the billing page sells it, as a bare fragment id
|
|
1064
|
+
* ('addons'). The console validates it against the anchors that page
|
|
1065
|
+
* actually has and drops it otherwise — the `docsTopic` treatment, for the
|
|
1066
|
+
* same reason: an extension can name any string, and an unrecognized one
|
|
1067
|
+
* must degrade to the plain Billing link rather than build a dead URL.
|
|
1068
|
+
*
|
|
1069
|
+
* Deliberately not an href. A full URL from an extension would be an
|
|
1070
|
+
* open redirect rendered by the console's own chrome; the shell keeps
|
|
1071
|
+
* ownership of the route and accepts only which part of it to scroll to.
|
|
1072
|
+
*/
|
|
1073
|
+
billingAnchor?: string;
|
|
1074
|
+
}
|
|
1075
|
+
/** What the console's generic staff route hands a staff page. */
|
|
1076
|
+
export interface ConsoleStaffPageProps {
|
|
1077
|
+
/** The page's own console path, `/admin/{id}`. */
|
|
1078
|
+
basePath: string;
|
|
1079
|
+
}
|
|
1080
|
+
/**
|
|
1081
|
+
* A page a plugin adds to the STAFF area (AGL-2939): a tab in the staff
|
|
1082
|
+
* strip and a page at `/admin/{id}`, rendered by the console's generic staff
|
|
1083
|
+
* route. The shell owns the layout, the header, the breadcrumbs, the staff
|
|
1084
|
+
* guard and the tab; the plugin owns the body.
|
|
1085
|
+
*
|
|
1086
|
+
* Staff pages load with the staff area's plugins — those declaring a `staff`
|
|
1087
|
+
* register surface — not with a workspace's, because no org names the plugin
|
|
1088
|
+
* set on `/admin`. They are admitted by the staff claim alone, so the
|
|
1089
|
+
* extension's `featureFlag` and `permission` do not apply, and every read a
|
|
1090
|
+
* staff page makes is refused server-side to a caller without the claim.
|
|
1091
|
+
*/
|
|
1092
|
+
export interface ConsoleStaffPage {
|
|
1093
|
+
/**
|
|
1094
|
+
* The URL segment under `/admin`, and the page's identity. The console's
|
|
1095
|
+
* own staff routes win a segment they use, so pick one they do not. It is
|
|
1096
|
+
* in links staff keep — treat it as persisted.
|
|
1097
|
+
*/
|
|
1098
|
+
id: string;
|
|
1099
|
+
/** The tab's label in the staff strip. */
|
|
1100
|
+
label: string;
|
|
1101
|
+
/**
|
|
1102
|
+
* The page header (title and icon), and the docs topic its help `?`
|
|
1103
|
+
* explains — a plain string for the reason {@link ConsoleNavItem.header}
|
|
1104
|
+
* gives, validated by the console.
|
|
1105
|
+
*/
|
|
1106
|
+
header?: {
|
|
1107
|
+
title: string;
|
|
1108
|
+
icon?: MdiIconProps;
|
|
1109
|
+
docsTopic?: string;
|
|
1110
|
+
};
|
|
1111
|
+
Component: ComponentType<ConsoleStaffPageProps>;
|
|
1112
|
+
}
|
|
1113
|
+
export interface ConsoleExtension {
|
|
1114
|
+
pluginId: PluginId;
|
|
1115
|
+
displayName: string;
|
|
1116
|
+
/** Entitlement flag gating every surface this extension registers. */
|
|
1117
|
+
featureFlag?: keyof OrgFeatureFlags;
|
|
1118
|
+
/**
|
|
1119
|
+
* The permission a reader must hold for every surface this extension
|
|
1120
|
+
* registers — the AUTHORIZATION half of the sentence above `featureFlag`.
|
|
1121
|
+
*
|
|
1122
|
+
* `featureFlag` answers what the ORGANIZATION bought; this answers what
|
|
1123
|
+
* the PERSON reading may open, and the two are independent: an org can
|
|
1124
|
+
* hold a feature that most of its members have no business using.
|
|
1125
|
+
*
|
|
1126
|
+
* A key in the console's permission vocabulary, which is two spaces and
|
|
1127
|
+
* they are not interchangeable. Either a dotted {@link OrgPermission} from
|
|
1128
|
+
* the built-in catalog ('data.manage'), which the shell answers from the
|
|
1129
|
+
* member's resolved granular map; or a key some plugin declared through
|
|
1130
|
+
* `registerPluginPermissions` ('managePos'), which the shell answers from
|
|
1131
|
+
* the resolved permission map that carries those keys. A key belonging to
|
|
1132
|
+
* NEITHER space refuses the surface rather than passing it — a requirement
|
|
1133
|
+
* nothing can answer is not a requirement that has been met.
|
|
1134
|
+
*
|
|
1135
|
+
* Declared here rather than checked inside the page for the reason the
|
|
1136
|
+
* entitlement gate moved out of the pages: a check the extension performs
|
|
1137
|
+
* on itself is enforcement only for as long as every extension remembers
|
|
1138
|
+
* to perform it, and the surface has already mounted and opened its
|
|
1139
|
+
* listeners by the time it runs.
|
|
1140
|
+
*
|
|
1141
|
+
* Omit for a surface every member of the workspace may open.
|
|
1142
|
+
*/
|
|
1143
|
+
permission?: string;
|
|
1144
|
+
/**
|
|
1145
|
+
* Refusal copy for an org that does not hold `featureFlag`, rendered by
|
|
1146
|
+
* the shell in place of the surface. Omit to get the shell's generic
|
|
1147
|
+
* plan-tier sentence.
|
|
1148
|
+
*/
|
|
1149
|
+
upgradeNotice?: ConsoleUpgradeNotice;
|
|
1150
|
+
navItems?: ConsoleNavItem[];
|
|
1151
|
+
/**
|
|
1152
|
+
* Surfaces mounted at the ORGANIZATION level rather than under a site
|
|
1153
|
+
* (AGL-2974): each is served at `/[orgSlug]{href}` by the console's generic
|
|
1154
|
+
* org route and listed on the organization's tab strip.
|
|
1155
|
+
*
|
|
1156
|
+
* A separate list rather than a flag on {@link ConsoleNavItem}, because the
|
|
1157
|
+
* two levels are read by different consumers. The site strip, the site
|
|
1158
|
+
* route and every title and section lookup iterate `navItems`, and a scope
|
|
1159
|
+
* field on one of those entries would reach each of them as a site surface
|
|
1160
|
+
* until every one of them learned to skip it. Nothing that reads `navItems`
|
|
1161
|
+
* sees these.
|
|
1162
|
+
*
|
|
1163
|
+
* The same contract a site nav item has, with the site taken away: the
|
|
1164
|
+
* page receives `hostId: null` and an `orgMount` naming the organization
|
|
1165
|
+
* and its sites, sections resolve and gate the same way, and the
|
|
1166
|
+
* extension's `featureFlag` and `permission` apply unchanged. The shell
|
|
1167
|
+
* admits only a reader whose reach is the whole organization, because a
|
|
1168
|
+
* surface with no site has no scope to narrow a site collaborator to.
|
|
1169
|
+
*
|
|
1170
|
+
* The href must not name one of the console's own organization routes
|
|
1171
|
+
* (`/hosts`, `/team`, `/settings`, `/crm` and the rest): a named route
|
|
1172
|
+
* always wins over the generic one, so such a surface would never render.
|
|
1173
|
+
*/
|
|
1174
|
+
orgNavItems?: ConsoleNavItem[];
|
|
1175
|
+
dashboardCards?: ConsoleDashboardCard[];
|
|
1176
|
+
settingsSections?: ConsoleSettingsSection[];
|
|
1177
|
+
/** Slot-addressed components the shell renders in place (AGL-419). */
|
|
1178
|
+
widgets?: ConsoleWidget[];
|
|
1179
|
+
/**
|
|
1180
|
+
* Pages in the STAFF area (AGL-2939) — see {@link ConsoleStaffPage}.
|
|
1181
|
+
* Neither `featureFlag` nor `permission` applies to them.
|
|
1182
|
+
*/
|
|
1183
|
+
staffPages?: readonly ConsoleStaffPage[];
|
|
1184
|
+
/**
|
|
1185
|
+
* App-level providers the shell mounts around every console page
|
|
1186
|
+
* (AGL-419) — e.g. the marketplace plugin's AI-assist provider.
|
|
1187
|
+
*/
|
|
1188
|
+
providers?: Array<ComponentType<any>>;
|
|
1189
|
+
}
|
|
1190
|
+
/** Idempotent by pluginId — re-registration replaces the previous entry. */
|
|
1191
|
+
export declare function registerConsoleExtension(extension: ConsoleExtension): void;
|
|
1192
|
+
export declare function unregisterConsoleExtension(pluginId: PluginId): void;
|
|
1193
|
+
/**
|
|
1194
|
+
* Registration-ordered extensions; the console shell filters by flag.
|
|
1195
|
+
*
|
|
1196
|
+
* AGL-758: the registry is a module-global that only ever grows — nothing
|
|
1197
|
+
* outside tests unregisters, and loaded chunks can't unload — so after
|
|
1198
|
+
* visiting two workspaces it holds the UNION of both plugin sets. Every
|
|
1199
|
+
* read is therefore scoped by the caller's effective enabled set; pass the
|
|
1200
|
+
* current org's plugin ids so one workspace never serves another's nav
|
|
1201
|
+
* items, widgets, pages or providers. Omitting the argument keeps the
|
|
1202
|
+
* unfiltered union (tests, and non-org surfaces that have no such set).
|
|
1203
|
+
*/
|
|
1204
|
+
export declare function listConsoleExtensions(enabledPluginIds?: readonly PluginId[]): ConsoleExtension[];
|
|
1205
|
+
/** A nav item flattened with its owning extension's id + entitlement flag. */
|
|
1206
|
+
export interface ConsoleNavEntry extends ConsoleNavItem {
|
|
1207
|
+
pluginId: PluginId;
|
|
1208
|
+
featureFlag?: keyof OrgFeatureFlags;
|
|
1209
|
+
}
|
|
1210
|
+
/**
|
|
1211
|
+
* Every registered nav item, flattened for the shell's nav strip. The
|
|
1212
|
+
* shell appends these to its static tabs, so a plugin adds a menu item
|
|
1213
|
+
* by registering here — no edit to the console's nav constants.
|
|
1214
|
+
*/
|
|
1215
|
+
export declare function listConsoleNavItems(enabledPluginIds?: readonly PluginId[]): ConsoleNavEntry[];
|
|
1216
|
+
/** What {@link resolveConsolePluginPage} answers for a matched href. */
|
|
1217
|
+
export interface ResolvedConsolePluginPage {
|
|
1218
|
+
extension: ConsoleExtension;
|
|
1219
|
+
navItem: ConsoleNavItem;
|
|
1220
|
+
/**
|
|
1221
|
+
* The section the href names, when the nav item declares sections and the
|
|
1222
|
+
* href reaches past its own. Undefined on the nav item's own href.
|
|
1223
|
+
*/
|
|
1224
|
+
section?: ConsoleNavSection;
|
|
1225
|
+
/** Path segments beneath `navItem.href`; `[]` on the nav item's own href. */
|
|
1226
|
+
segments: readonly string[];
|
|
1227
|
+
/**
|
|
1228
|
+
* The href was one of the nav item's `legacyHrefs`, not its current one.
|
|
1229
|
+
* The shell redirects to `navItem.href` plus the same section and segments.
|
|
1230
|
+
*/
|
|
1231
|
+
legacy?: boolean;
|
|
1232
|
+
}
|
|
1233
|
+
/**
|
|
1234
|
+
* Resolves a host-relative href (e.g. '/events', '/products/orders') to the
|
|
1235
|
+
* extension + nav item that owns a renderable page for it, and the section
|
|
1236
|
+
* within it. The shell's generic host route uses this to render plugin pages
|
|
1237
|
+
* without a per-plugin page file.
|
|
1238
|
+
*
|
|
1239
|
+
* ## Which registration wins (AGL-2501)
|
|
1240
|
+
*
|
|
1241
|
+
* LONGEST declared `href` wins, and an exact match therefore always beats a
|
|
1242
|
+
* section match — an exact `href` spans the whole path, so nothing matching a
|
|
1243
|
+
* prefix of it can be longer. `/products/orders` goes to a plugin that
|
|
1244
|
+
* declares that path over one that declares `/products` with an `orders`
|
|
1245
|
+
* section, and a prefix only matches on a SEGMENT boundary, so `/products`
|
|
1246
|
+
* never claims `/products-archive`.
|
|
1247
|
+
*
|
|
1248
|
+
* A TIE REFUSES. Two enabled plugins matching the same path at the same length
|
|
1249
|
+
* resolve to nothing, and the console 404s. Registry insertion order is an
|
|
1250
|
+
* accident of which chunk loaded first, so picking from it means one
|
|
1251
|
+
* workspace serves plugin A's page at a URL where another serves plugin B's —
|
|
1252
|
+
* silently, and differently per session. Nobody can debug that from the
|
|
1253
|
+
* symptom, so it is refused and logged instead. Two nav items of the SAME
|
|
1254
|
+
* extension are not a tie: that order is authored, and the first wins as it
|
|
1255
|
+
* always has.
|
|
1256
|
+
*
|
|
1257
|
+
* This is a rule rather than an accident because the registry is a
|
|
1258
|
+
* session-wide UNION across plugins from different authors (AGL-758) — one
|
|
1259
|
+
* plugin registering `/products` and another `/products/orders` is two
|
|
1260
|
+
* workspaces' code meeting in one module-global, not one author's tidiness
|
|
1261
|
+
* problem. Scoping is unchanged and load-bearing: every candidate still comes
|
|
1262
|
+
* from `listConsoleExtensions(enabledPluginIds)`, so a plugin the current org
|
|
1263
|
+
* has not enabled cannot win a path — or collide with one.
|
|
1264
|
+
*/
|
|
1265
|
+
export declare function resolveConsolePluginPage(href: string, enabledPluginIds?: readonly PluginId[]): ResolvedConsolePluginPage | undefined;
|
|
1266
|
+
/** One organization-level nav item with the extension that declared it. */
|
|
1267
|
+
export interface ConsoleOrgNavEntry {
|
|
1268
|
+
extension: ConsoleExtension;
|
|
1269
|
+
navItem: ConsoleNavItem;
|
|
1270
|
+
}
|
|
1271
|
+
/**
|
|
1272
|
+
* Every registered {@link ConsoleExtension.orgNavItems} entry, in
|
|
1273
|
+
* registration order, for the organization's tab strip (AGL-2974).
|
|
1274
|
+
*
|
|
1275
|
+
* Carries the extension whole rather than a flattened copy of two of its
|
|
1276
|
+
* fields: a tab for a surface the reader cannot open is hidden, and deciding
|
|
1277
|
+
* that takes the extension's `permission`, `featureFlag` and
|
|
1278
|
+
* `upgradeNotice`, which is the same set the org route reads.
|
|
1279
|
+
*/
|
|
1280
|
+
export declare function listConsoleOrgNavItems(enabledPluginIds?: readonly PluginId[]): ConsoleOrgNavEntry[];
|
|
1281
|
+
/**
|
|
1282
|
+
* {@link resolveConsolePluginPage} for the ORGANIZATION level (AGL-2974): an
|
|
1283
|
+
* org-relative href (`/outreach/sequences`) against every enabled
|
|
1284
|
+
* extension's `orgNavItems`, with the same matching, the same longest-href
|
|
1285
|
+
* rule and the same refusal of a tie between two plugins. Site nav items are
|
|
1286
|
+
* never candidates, so a surface registered under a site cannot be opened
|
|
1287
|
+
* without one.
|
|
1288
|
+
*/
|
|
1289
|
+
export declare function resolveConsoleOrgPluginPage(href: string, enabledPluginIds?: readonly PluginId[]): ResolvedConsolePluginPage | undefined;
|
|
1290
|
+
/** A staff page flattened with its owning extension's id. */
|
|
1291
|
+
export interface ConsoleStaffPageEntry extends ConsoleStaffPage {
|
|
1292
|
+
pluginId: PluginId;
|
|
1293
|
+
}
|
|
1294
|
+
/**
|
|
1295
|
+
* Every registered staff page, in registration order — the staff strip's
|
|
1296
|
+
* plugin tabs, after the console's own.
|
|
1297
|
+
*/
|
|
1298
|
+
export declare function listConsoleStaffPages(enabledPluginIds?: readonly PluginId[]): ConsoleStaffPageEntry[];
|
|
1299
|
+
/**
|
|
1300
|
+
* The staff page at `/admin/{id}` (AGL-2939), or `undefined`.
|
|
1301
|
+
*
|
|
1302
|
+
* Two plugins claiming one id resolve to nothing, and say so: registry order
|
|
1303
|
+
* is an accident of which chunk loaded first, and a staff page that is one
|
|
1304
|
+
* plugin's on one load and another's on the next cannot be debugged from the
|
|
1305
|
+
* symptom — the same rule {@link resolveConsolePluginPage} applies to paths.
|
|
1306
|
+
*/
|
|
1307
|
+
export declare function resolveConsoleStaffPage(id: string, enabledPluginIds?: readonly PluginId[]): ConsoleStaffPageEntry | undefined;
|
|
1308
|
+
/** Widgets registered for a slot, across every extension (AGL-419). */
|
|
1309
|
+
export declare function listConsoleWidgets(slot: string, enabledPluginIds?: readonly PluginId[]): Array<{
|
|
1310
|
+
extension: ConsoleExtension;
|
|
1311
|
+
widget: ConsoleWidget;
|
|
1312
|
+
}>;
|
|
1313
|
+
/** Providers registered by every extension, in registration order. */
|
|
1314
|
+
export declare function listConsoleProviders(enabledPluginIds?: readonly PluginId[]): Array<ComponentType<any>>;
|