@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,326 @@
|
|
|
1
|
+
import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2026 Aglyn LLC
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/ // Activity-feed presenter (AGL-810). The `hosts/{id}/activity` and
|
|
18
|
+
// `orgs/{id}/activity` logs store a free-text `action` plus a `{ type, id,
|
|
19
|
+
// name }` target, written from ~40 scattered call sites. The three renderers
|
|
20
|
+
// (host card, host table, org card) used to each format entries their own
|
|
21
|
+
// way — one dropped the target entirely, one printed the raw Firestore doc
|
|
22
|
+
// id when no name was recorded. This module is the single place that turns a
|
|
23
|
+
// stored entry into something a human reads, and into a deep link to the
|
|
24
|
+
// thing that changed. It is deliberately dependency-free (only the string
|
|
25
|
+
// route table) so plugin libs and the console app can both import it via
|
|
26
|
+
// `@aglyn/aglyn/app-utils/activity-presenter`.
|
|
27
|
+
import { Route, buildRoute } from "./console-routes.js";
|
|
28
|
+
import { CRM_RECORD_SECTIONS, crmRecordHref, crmSectionHref } from "./console-record-links.js";
|
|
29
|
+
import { hostEventLabel } from "./workflows.js";
|
|
30
|
+
import { duplicateActivityActionLabel } from "./duplicate-resource.js";
|
|
31
|
+
import { pluginActivityActionLabel, pluginActivityGroupForAction, pluginActivityTargetNoun } from "../plugin-manager/plugin-activity-actions.js";
|
|
32
|
+
/** Human, singular noun for a target type. Falls back to the raw type. */ const TYPE_LABELS = {
|
|
33
|
+
host: 'Site',
|
|
34
|
+
screen: 'Screen',
|
|
35
|
+
layout: 'Layout',
|
|
36
|
+
theme: 'Theme',
|
|
37
|
+
media: 'Media',
|
|
38
|
+
content: 'Content',
|
|
39
|
+
variable: 'Variable',
|
|
40
|
+
function: 'Function',
|
|
41
|
+
workflow: 'Workflow',
|
|
42
|
+
member: 'Member',
|
|
43
|
+
component: 'Component',
|
|
44
|
+
template: 'Template',
|
|
45
|
+
org: 'Organization',
|
|
46
|
+
invite: 'Invitation',
|
|
47
|
+
subscription: 'Subscription',
|
|
48
|
+
// A custom role's AI permission flipped (AGL-2929).
|
|
49
|
+
role: 'Role',
|
|
50
|
+
// A generation job (AGL-2904): the org feed names the job, and each of its
|
|
51
|
+
// outputs names the resource it produced.
|
|
52
|
+
aiJob: 'AI generation',
|
|
53
|
+
// CRM records (AGL-2622): a person added, a company or a deal created or
|
|
54
|
+
// deleted, a lead converted — logged into the feed of the site whose
|
|
55
|
+
// console did it, and linked to the record the way a screen is.
|
|
56
|
+
contact: 'Contact',
|
|
57
|
+
lead: 'Lead',
|
|
58
|
+
company: 'Company',
|
|
59
|
+
deal: 'Deal'
|
|
60
|
+
};
|
|
61
|
+
/** The activity target types that are CRM records, for the link switch. */ const CRM_TARGET_KINDS = new Set(Object.keys(CRM_RECORD_SECTIONS));
|
|
62
|
+
/**
|
|
63
|
+
* The org-level hub's section for each record kind an org feed entry may
|
|
64
|
+
* name (AGL-2634): the four record kinds, and tasks, which have a section
|
|
65
|
+
* and no page of their own.
|
|
66
|
+
*/ const ORG_CRM_SECTIONS = _extends({}, CRM_RECORD_SECTIONS, {
|
|
67
|
+
task: 'tasks'
|
|
68
|
+
});
|
|
69
|
+
/**
|
|
70
|
+
* Human noun for a target type, e.g. `'screen'` → `'Screen'`. A plugin's
|
|
71
|
+
* own resource is stored as `pluginId:noun` (AGL-2978), and a reader sees
|
|
72
|
+
* the noun: `acme-mail:mailbox` → `Mailbox`.
|
|
73
|
+
*/ export function activityTypeLabel(type) {
|
|
74
|
+
var _pluginActivityTargetNoun;
|
|
75
|
+
if (!type) return 'Item';
|
|
76
|
+
const known = TYPE_LABELS[type];
|
|
77
|
+
if (known) return known;
|
|
78
|
+
const noun = (_pluginActivityTargetNoun = pluginActivityTargetNoun(type)) != null ? _pluginActivityTargetNoun : type;
|
|
79
|
+
return noun.charAt(0).toUpperCase() + noun.slice(1);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* A label for the target column/link. Prefers the recorded name; when none
|
|
83
|
+
* was written (older entries, id-only saves) it degrades to the humanized
|
|
84
|
+
* type — NEVER the raw doc id, which is meaningless to a reader.
|
|
85
|
+
*/ export function activityTargetLabel(target) {
|
|
86
|
+
if (target == null ? void 0 : target.name) return target.name;
|
|
87
|
+
return activityTypeLabel(target == null ? void 0 : target.type);
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* What the action column reads (AGL-2929). Most actions are the sentence
|
|
91
|
+
* their writer stored; a plugin's rows store a code (`ai.job.output`) so
|
|
92
|
+
* that three surfaces can recognize them without parsing prose, and the
|
|
93
|
+
* code is translated here — once, from the plugin-declared catalog
|
|
94
|
+
* (AGL-2940) — rather than shown to a reader as a dotted path.
|
|
95
|
+
*/ export function activityActionLabel(action) {
|
|
96
|
+
var _ref, _ref1, _pluginActivityActionLabel;
|
|
97
|
+
const stored = (_ref = action == null ? void 0 : action.trim()) != null ? _ref : '';
|
|
98
|
+
return (_ref1 = (_pluginActivityActionLabel = pluginActivityActionLabel(stored)) != null ? _pluginActivityActionLabel : duplicateActivityActionLabel(stored)) != null ? _ref1 : stored;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* The filter group an entry's code belongs to — the chip that keeps it —
|
|
102
|
+
* or `undefined` for a prose action no plugin declared.
|
|
103
|
+
*/ export function activityEntryGroupId(entry) {
|
|
104
|
+
var _pluginActivityGroupForAction, _entry_action;
|
|
105
|
+
return (_pluginActivityGroupForAction = pluginActivityGroupForAction((_entry_action = entry.action) == null ? void 0 : _entry_action.trim())) == null ? void 0 : _pluginActivityGroupForAction.id;
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* The primary line for a feed entry: the action, suffixed with the target
|
|
109
|
+
* name when one is known, so "Saved the screen" becomes "Saved the screen —
|
|
110
|
+
* Home". A missing action degrades to the target label rather than blank.
|
|
111
|
+
*/ export function activityPrimaryText(entry) {
|
|
112
|
+
var _entry_target_name, _entry_target;
|
|
113
|
+
const action = activityActionLabel(entry.action);
|
|
114
|
+
const name = (_entry_target = entry.target) == null ? void 0 : (_entry_target_name = _entry_target.name) == null ? void 0 : _entry_target_name.trim();
|
|
115
|
+
if (action && name) return `${action} — ${name}`;
|
|
116
|
+
if (action) return action;
|
|
117
|
+
return activityTargetLabel(entry.target);
|
|
118
|
+
}
|
|
119
|
+
/** How an integration's key is named wherever an actor is: `API key Zapier`. */ export function apiKeyActorLabel(name) {
|
|
120
|
+
return `API key ${name}`;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* The "who" line for an entry: the actor's address, else the key that wrote
|
|
124
|
+
* it by name, else `Someone` — for an entry that recorded neither, which
|
|
125
|
+
* every key-written entry was before the name was carried.
|
|
126
|
+
*/ export function activityActorLabel(entry) {
|
|
127
|
+
if (entry.actorEmail) return entry.actorEmail;
|
|
128
|
+
if (entry.apiKeyName) return apiKeyActorLabel(entry.apiKeyName);
|
|
129
|
+
return 'Someone';
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* A deep link to the resource an entry points at, or `undefined` when it
|
|
133
|
+
* cannot be built (missing context, or a type with nowhere sensible to go).
|
|
134
|
+
* `buildRoute` emits `<orgSlug?>` placeholders for missing params, so every
|
|
135
|
+
* branch guards its inputs and returns `undefined` rather than a dead link.
|
|
136
|
+
*/ export function activityHref(entry, ctx) {
|
|
137
|
+
var _entry_target, _ref, _ref1;
|
|
138
|
+
const { orgSlug, host } = ctx;
|
|
139
|
+
if (!orgSlug) return undefined;
|
|
140
|
+
const target = (_entry_target = entry.target) != null ? _entry_target : undefined;
|
|
141
|
+
const type = (_ref = target == null ? void 0 : target.type) != null ? _ref : entry.type;
|
|
142
|
+
const id = (_ref1 = target == null ? void 0 : target.id) != null ? _ref1 : entry.targetId;
|
|
143
|
+
const versionId = target == null ? void 0 : target.versionId;
|
|
144
|
+
// Host-scoped entries: every host route needs both orgSlug and host.
|
|
145
|
+
if (host) {
|
|
146
|
+
switch(type){
|
|
147
|
+
case 'host':
|
|
148
|
+
return buildRoute(Route.HOST_DASHBOARD, {
|
|
149
|
+
orgSlug,
|
|
150
|
+
host
|
|
151
|
+
});
|
|
152
|
+
case 'screen':
|
|
153
|
+
// The screen detail page is version-addressed; without a versionId
|
|
154
|
+
// there is no "current" pointer to route through, so land on the list.
|
|
155
|
+
return id && versionId ? buildRoute(Route.SCREEN_DETAILS, {
|
|
156
|
+
orgSlug,
|
|
157
|
+
host,
|
|
158
|
+
screenId: id,
|
|
159
|
+
versionId
|
|
160
|
+
}) : buildRoute(Route.HOST_SCREENS, {
|
|
161
|
+
orgSlug,
|
|
162
|
+
host
|
|
163
|
+
});
|
|
164
|
+
case 'component':
|
|
165
|
+
return id ? buildRoute(Route.COMPONENT_DETAILS, {
|
|
166
|
+
orgSlug,
|
|
167
|
+
host,
|
|
168
|
+
componentId: id
|
|
169
|
+
}) : buildRoute(Route.HOST_COMPONENTS, {
|
|
170
|
+
orgSlug,
|
|
171
|
+
host
|
|
172
|
+
});
|
|
173
|
+
case 'template':
|
|
174
|
+
return id ? buildRoute(Route.TEMPLATE_DETAILS, {
|
|
175
|
+
orgSlug,
|
|
176
|
+
host,
|
|
177
|
+
templateId: id
|
|
178
|
+
}) : buildRoute(Route.HOST_TEMPLATES, {
|
|
179
|
+
orgSlug,
|
|
180
|
+
host
|
|
181
|
+
});
|
|
182
|
+
case 'layout':
|
|
183
|
+
return id ? buildRoute(Route.LAYOUT_DETAILS, {
|
|
184
|
+
orgSlug,
|
|
185
|
+
host,
|
|
186
|
+
layoutId: id
|
|
187
|
+
}) : buildRoute(Route.HOST_LAYOUTS, {
|
|
188
|
+
orgSlug,
|
|
189
|
+
host
|
|
190
|
+
});
|
|
191
|
+
case 'theme':
|
|
192
|
+
return buildRoute(Route.HOST_SETUP_THEME, {
|
|
193
|
+
orgSlug,
|
|
194
|
+
host
|
|
195
|
+
});
|
|
196
|
+
case 'media':
|
|
197
|
+
return buildRoute(Route.HOST_MEDIA, {
|
|
198
|
+
orgSlug,
|
|
199
|
+
host
|
|
200
|
+
});
|
|
201
|
+
case 'content':
|
|
202
|
+
return buildRoute(Route.HOST_CONTENT, {
|
|
203
|
+
orgSlug,
|
|
204
|
+
host
|
|
205
|
+
});
|
|
206
|
+
case 'variable':
|
|
207
|
+
return buildRoute(Route.HOST_DATA, {
|
|
208
|
+
orgSlug,
|
|
209
|
+
host
|
|
210
|
+
});
|
|
211
|
+
case 'function':
|
|
212
|
+
return buildRoute(Route.HOST_LOGIC, {
|
|
213
|
+
orgSlug,
|
|
214
|
+
host
|
|
215
|
+
});
|
|
216
|
+
case 'workflow':
|
|
217
|
+
return buildRoute(Route.HOST_AUTOMATION, {
|
|
218
|
+
orgSlug,
|
|
219
|
+
host
|
|
220
|
+
});
|
|
221
|
+
case 'member':
|
|
222
|
+
// Site team is managed on the Setup page — there is no per-member
|
|
223
|
+
// host route.
|
|
224
|
+
return buildRoute(Route.HOST_SETUP, {
|
|
225
|
+
orgSlug,
|
|
226
|
+
host
|
|
227
|
+
});
|
|
228
|
+
default:
|
|
229
|
+
// A CRM record's own page, or its list when the entry named no id —
|
|
230
|
+
// a deleted record still has a list to land on. The CRM is a plugin
|
|
231
|
+
// hub, so its addresses come from the shared builder rather than
|
|
232
|
+
// the route table, the same door the console's search uses.
|
|
233
|
+
if (type && CRM_TARGET_KINDS.has(type)) {
|
|
234
|
+
const kind = type;
|
|
235
|
+
return id ? crmRecordHref({
|
|
236
|
+
orgSlug,
|
|
237
|
+
host
|
|
238
|
+
}, kind, id) : crmSectionHref({
|
|
239
|
+
orgSlug,
|
|
240
|
+
host
|
|
241
|
+
}, CRM_RECORD_SECTIONS[kind]);
|
|
242
|
+
}
|
|
243
|
+
return undefined;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
// Org-scoped entries.
|
|
247
|
+
switch(type){
|
|
248
|
+
case 'org':
|
|
249
|
+
return buildRoute(Route.ORG_SETTINGS, {
|
|
250
|
+
orgSlug
|
|
251
|
+
});
|
|
252
|
+
case 'member':
|
|
253
|
+
return id ? buildRoute(Route.MANAGE_TEAM_MEMBER, {
|
|
254
|
+
orgSlug,
|
|
255
|
+
uid: id
|
|
256
|
+
}) : buildRoute(Route.MANAGE_TEAM, {
|
|
257
|
+
orgSlug
|
|
258
|
+
});
|
|
259
|
+
case 'invite':
|
|
260
|
+
return buildRoute(Route.MANAGE_TEAM, {
|
|
261
|
+
orgSlug
|
|
262
|
+
});
|
|
263
|
+
default:
|
|
264
|
+
{
|
|
265
|
+
// A CRM record acted on at the ORGANIZATION level (AGL-2634) — a deal
|
|
266
|
+
// moved from the org board, a merge, a bulk bar's action — opens in
|
|
267
|
+
// the org-level hub. A lead's org address needs its site, which the
|
|
268
|
+
// entry does not carry, and a bulk line names no record: both land
|
|
269
|
+
// on the section.
|
|
270
|
+
const section = type ? ORG_CRM_SECTIONS[type] : undefined;
|
|
271
|
+
if (!section) return undefined;
|
|
272
|
+
const hub = `${buildRoute(Route.ORG_CRM, {
|
|
273
|
+
orgSlug
|
|
274
|
+
})}/${section}`;
|
|
275
|
+
return id && type !== 'lead' && type !== 'task' ? `${hub}/${encodeURIComponent(id)}` : hub;
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* `formSubmission` → `Form submitted`.
|
|
281
|
+
*
|
|
282
|
+
* The console rendered the raw camelCase identifier in the trigger select
|
|
283
|
+
* and in every run row. The words are `HOST_EVENT_LABELS` in `workflows.ts`
|
|
284
|
+
* — one map, so the picker an author chose from and the run row they read
|
|
285
|
+
* afterwards cannot name the same event differently.
|
|
286
|
+
*/ export function actionTriggerLabel(event) {
|
|
287
|
+
return hostEventLabel(event);
|
|
288
|
+
}
|
|
289
|
+
/**
|
|
290
|
+
* The run's outcome, tolerating rows written before it was recorded.
|
|
291
|
+
*
|
|
292
|
+
* A legacy entry carries only the prose `action` string, so it is read
|
|
293
|
+
* back: `with errors:` means it failed and `Action ran on` means it
|
|
294
|
+
* succeeded. Anything else is not a run at all — the activity collection
|
|
295
|
+
* also holds publishes, media saves and member changes, and calling one of
|
|
296
|
+
* those `succeeded` would put it in the run history under a verdict that
|
|
297
|
+
* means nothing for it.
|
|
298
|
+
*/ export function actionRunResult(entry) {
|
|
299
|
+
var _entry_result, _entry_action;
|
|
300
|
+
const stored = String((_entry_result = entry.result) != null ? _entry_result : '').trim();
|
|
301
|
+
if (stored === 'succeeded' || stored === 'failed' || stored === 'skipped') {
|
|
302
|
+
return stored;
|
|
303
|
+
}
|
|
304
|
+
const action = String((_entry_action = entry.action) != null ? _entry_action : '');
|
|
305
|
+
if (!action.startsWith('Action ran on')) return undefined;
|
|
306
|
+
return action.includes('with errors:') ? 'failed' : 'succeeded';
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* The `What happened` column: `Sent email · saved to Leads · webhook 200`.
|
|
310
|
+
*
|
|
311
|
+
* Falls back to the legacy prose, minus its `Action ran on <event>` prefix
|
|
312
|
+
* — that fact is the Trigger column now, and repeating it in the summary
|
|
313
|
+
* would make every historic row say the same thing twice.
|
|
314
|
+
*/ export function actionRunSummary(entry) {
|
|
315
|
+
var _entry_summary, _entry_action;
|
|
316
|
+
const summary = String((_entry_summary = entry.summary) != null ? _entry_summary : '').trim();
|
|
317
|
+
if (summary) return summary;
|
|
318
|
+
const action = String((_entry_action = entry.action) != null ? _entry_action : '').trim();
|
|
319
|
+
const errors = action.match(/with errors:\s*(.+)$/);
|
|
320
|
+
if (errors) return errors[1];
|
|
321
|
+
// A pre-AGL-2171 success recorded nothing but the fact that it ran.
|
|
322
|
+
if (action.startsWith('Action ran on')) return 'Ran';
|
|
323
|
+
return action;
|
|
324
|
+
}
|
|
325
|
+
|
|
326
|
+
//# sourceMappingURL=activity-presenter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/activity-presenter.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n// Activity-feed presenter (AGL-810). The `hosts/{id}/activity` and\n// `orgs/{id}/activity` logs store a free-text `action` plus a `{ type, id,\n// name }` target, written from ~40 scattered call sites. The three renderers\n// (host card, host table, org card) used to each format entries their own\n// way — one dropped the target entirely, one printed the raw Firestore doc\n// id when no name was recorded. This module is the single place that turns a\n// stored entry into something a human reads, and into a deep link to the\n// thing that changed. It is deliberately dependency-free (only the string\n// route table) so plugin libs and the console app can both import it via\n// `@aglyn/aglyn/app-utils/activity-presenter`.\n\nimport { Route, buildRoute } from './console-routes'\nimport {\n CRM_RECORD_SECTIONS,\n crmRecordHref,\n crmSectionHref,\n type CrmRecordKind,\n} from './console-record-links'\nimport { hostEventLabel } from './workflows'\nimport { duplicateActivityActionLabel } from './duplicate-resource'\nimport {\n pluginActivityActionLabel,\n pluginActivityGroupForAction,\n pluginActivityTargetNoun,\n} from '../plugin-manager/plugin-activity-actions'\n\n/** The stored `target` sub-object, read defensively (any field may be absent). */\nexport interface ActivityTargetLike {\n type?: string\n id?: string\n name?: string\n /** Present on screen saves so the deep link can hit the exact version. */\n versionId?: string\n}\n\n/** A stored activity document, read defensively. */\nexport interface ActivityEntryLike {\n action?: string\n target?: ActivityTargetLike | null\n // Some early org entries carried the type/target id at the top level rather\n // than nested under `target` — tolerate both so no entry renders blank.\n type?: string\n targetId?: string\n /** The address the actor had when the entry was written; null for a key. */\n actorEmail?: string | null\n /** The name of the API key that wrote the entry, when a key did (AGL-2632). */\n apiKeyName?: string | null\n}\n\n/**\n * Who a host activity entry is attributed to — the writer's half of the\n * contract whose reader is {@link activityActorLabel}.\n *\n * A person is their verified uid and the address they had at the time. An\n * integration is the literal uid `'api'`, no address, and the name the\n * organization gave its key — carried because a feed that says \"Someone\"\n * about every write a key made is an audit trail with a hole in it: three\n * Zapier zaps and a nightly import all read as the same nobody.\n */\nexport interface HostActivityActor {\n uid: string\n email?: string | null\n /** The API key's name, for an entry an integration wrote. */\n apiKeyName?: string | null\n}\n\n/**\n * What the presenter needs to build a link. `host` is the `[host]` URL\n * segment — the site SLUG the console routes by (AGL-622), NOT the host doc\n * id — so pass `useParams().host`, not the doc id. When it is present the\n * entry is treated as host-scoped, otherwise org-scoped — which\n * disambiguates `member`, the one type both logs use.\n */\nexport interface ActivityLinkContext {\n orgSlug?: string\n host?: string\n}\n\n/** Human, singular noun for a target type. Falls back to the raw type. */\nconst TYPE_LABELS: Record<string, string> = {\n host: 'Site',\n screen: 'Screen',\n layout: 'Layout',\n theme: 'Theme',\n media: 'Media',\n content: 'Content',\n variable: 'Variable',\n function: 'Function',\n workflow: 'Workflow',\n member: 'Member',\n component: 'Component',\n template: 'Template',\n org: 'Organization',\n invite: 'Invitation',\n subscription: 'Subscription',\n // A custom role's AI permission flipped (AGL-2929).\n role: 'Role',\n // A generation job (AGL-2904): the org feed names the job, and each of its\n // outputs names the resource it produced.\n aiJob: 'AI generation',\n // CRM records (AGL-2622): a person added, a company or a deal created or\n // deleted, a lead converted — logged into the feed of the site whose\n // console did it, and linked to the record the way a screen is.\n contact: 'Contact',\n lead: 'Lead',\n company: 'Company',\n deal: 'Deal',\n}\n\n/** The activity target types that are CRM records, for the link switch. */\nconst CRM_TARGET_KINDS = new Set<string>(Object.keys(CRM_RECORD_SECTIONS))\n\n/**\n * The org-level hub's section for each record kind an org feed entry may\n * name (AGL-2634): the four record kinds, and tasks, which have a section\n * and no page of their own.\n */\nconst ORG_CRM_SECTIONS: Record<string, string> = {\n ...CRM_RECORD_SECTIONS,\n task: 'tasks',\n}\n\n/**\n * Human noun for a target type, e.g. `'screen'` → `'Screen'`. A plugin's\n * own resource is stored as `pluginId:noun` (AGL-2978), and a reader sees\n * the noun: `acme-mail:mailbox` → `Mailbox`.\n */\nexport function activityTypeLabel(type: string | undefined): string {\n if (!type) return 'Item'\n const known = TYPE_LABELS[type]\n if (known) return known\n const noun = pluginActivityTargetNoun(type) ?? type\n return noun.charAt(0).toUpperCase() + noun.slice(1)\n}\n\n/**\n * A label for the target column/link. Prefers the recorded name; when none\n * was written (older entries, id-only saves) it degrades to the humanized\n * type — NEVER the raw doc id, which is meaningless to a reader.\n */\nexport function activityTargetLabel(\n target: ActivityTargetLike | null | undefined,\n): string {\n if (target?.name) return target.name\n return activityTypeLabel(target?.type)\n}\n\n/**\n * What the action column reads (AGL-2929). Most actions are the sentence\n * their writer stored; a plugin's rows store a code (`ai.job.output`) so\n * that three surfaces can recognize them without parsing prose, and the\n * code is translated here — once, from the plugin-declared catalog\n * (AGL-2940) — rather than shown to a reader as a dotted path.\n */\nexport function activityActionLabel(action: string | undefined): string {\n const stored = action?.trim() ?? ''\n return (\n pluginActivityActionLabel(stored) ??\n duplicateActivityActionLabel(stored) ??\n stored\n )\n}\n\n/**\n * The filter group an entry's code belongs to — the chip that keeps it —\n * or `undefined` for a prose action no plugin declared.\n */\nexport function activityEntryGroupId(entry: ActivityEntryLike): string | undefined {\n return pluginActivityGroupForAction(entry.action?.trim())?.id\n}\n\n/**\n * The primary line for a feed entry: the action, suffixed with the target\n * name when one is known, so \"Saved the screen\" becomes \"Saved the screen —\n * Home\". A missing action degrades to the target label rather than blank.\n */\nexport function activityPrimaryText(entry: ActivityEntryLike): string {\n const action = activityActionLabel(entry.action)\n const name = entry.target?.name?.trim()\n if (action && name) return `${action} — ${name}`\n if (action) return action\n return activityTargetLabel(entry.target)\n}\n\n/** How an integration's key is named wherever an actor is: `API key Zapier`. */\nexport function apiKeyActorLabel(name: string): string {\n return `API key ${name}`\n}\n\n/**\n * The \"who\" line for an entry: the actor's address, else the key that wrote\n * it by name, else `Someone` — for an entry that recorded neither, which\n * every key-written entry was before the name was carried.\n */\nexport function activityActorLabel(entry: ActivityEntryLike): string {\n if (entry.actorEmail) return entry.actorEmail\n if (entry.apiKeyName) return apiKeyActorLabel(entry.apiKeyName)\n return 'Someone'\n}\n\n/**\n * A deep link to the resource an entry points at, or `undefined` when it\n * cannot be built (missing context, or a type with nowhere sensible to go).\n * `buildRoute` emits `<orgSlug?>` placeholders for missing params, so every\n * branch guards its inputs and returns `undefined` rather than a dead link.\n */\nexport function activityHref(\n entry: ActivityEntryLike,\n ctx: ActivityLinkContext,\n): string | undefined {\n const { orgSlug, host } = ctx\n if (!orgSlug) return undefined\n const target = entry.target ?? undefined\n const type = target?.type ?? entry.type\n const id = target?.id ?? entry.targetId\n const versionId = target?.versionId\n\n // Host-scoped entries: every host route needs both orgSlug and host.\n if (host) {\n switch (type) {\n case 'host':\n return buildRoute(Route.HOST_DASHBOARD, { orgSlug, host })\n case 'screen':\n // The screen detail page is version-addressed; without a versionId\n // there is no \"current\" pointer to route through, so land on the list.\n return id && versionId\n ? buildRoute(Route.SCREEN_DETAILS, {\n orgSlug,\n host,\n screenId: id,\n versionId,\n })\n : buildRoute(Route.HOST_SCREENS, { orgSlug, host })\n case 'component':\n return id\n ? buildRoute(Route.COMPONENT_DETAILS, {\n orgSlug,\n host,\n componentId: id,\n })\n : buildRoute(Route.HOST_COMPONENTS, { orgSlug, host })\n case 'template':\n return id\n ? buildRoute(Route.TEMPLATE_DETAILS, {\n orgSlug,\n host,\n templateId: id,\n })\n : buildRoute(Route.HOST_TEMPLATES, { orgSlug, host })\n case 'layout':\n return id\n ? buildRoute(Route.LAYOUT_DETAILS, { orgSlug, host, layoutId: id })\n : buildRoute(Route.HOST_LAYOUTS, { orgSlug, host })\n case 'theme':\n return buildRoute(Route.HOST_SETUP_THEME, { orgSlug, host })\n case 'media':\n return buildRoute(Route.HOST_MEDIA, { orgSlug, host })\n case 'content':\n return buildRoute(Route.HOST_CONTENT, { orgSlug, host })\n case 'variable':\n return buildRoute(Route.HOST_DATA, { orgSlug, host })\n case 'function':\n return buildRoute(Route.HOST_LOGIC, { orgSlug, host })\n case 'workflow':\n return buildRoute(Route.HOST_AUTOMATION, { orgSlug, host })\n case 'member':\n // Site team is managed on the Setup page — there is no per-member\n // host route.\n return buildRoute(Route.HOST_SETUP, { orgSlug, host })\n default:\n // A CRM record's own page, or its list when the entry named no id —\n // a deleted record still has a list to land on. The CRM is a plugin\n // hub, so its addresses come from the shared builder rather than\n // the route table, the same door the console's search uses.\n if (type && CRM_TARGET_KINDS.has(type)) {\n const kind = type as CrmRecordKind\n return id\n ? crmRecordHref({ orgSlug, host }, kind, id)\n : crmSectionHref({ orgSlug, host }, CRM_RECORD_SECTIONS[kind])\n }\n return undefined\n }\n }\n\n // Org-scoped entries.\n switch (type) {\n case 'org':\n return buildRoute(Route.ORG_SETTINGS, { orgSlug })\n case 'member':\n return id\n ? buildRoute(Route.MANAGE_TEAM_MEMBER, { orgSlug, uid: id })\n : buildRoute(Route.MANAGE_TEAM, { orgSlug })\n case 'invite':\n return buildRoute(Route.MANAGE_TEAM, { orgSlug })\n default: {\n // A CRM record acted on at the ORGANIZATION level (AGL-2634) — a deal\n // moved from the org board, a merge, a bulk bar's action — opens in\n // the org-level hub. A lead's org address needs its site, which the\n // entry does not carry, and a bulk line names no record: both land\n // on the section.\n const section = type ? ORG_CRM_SECTIONS[type] : undefined\n if (!section) return undefined\n const hub = `${buildRoute(Route.ORG_CRM, { orgSlug })}/${section}`\n return id && type !== 'lead' && type !== 'task'\n ? `${hub}/${encodeURIComponent(id)}`\n : hub\n }\n }\n}\n\n/**\n * How an automation run ended (AGL-2171).\n *\n * `skipped` is a first-class outcome, not an absence. An unmet condition\n * used to be a bare `continue` that wrote nothing, so \"why didn't my\n * automation fire?\" — the most common support question about automations —\n * had no answer anywhere in the product, while `/product/workflows`\n * advertises an amber `Skipped` row that answers it.\n */\nexport type ActionRunResult = 'succeeded' | 'failed' | 'skipped'\n\n/** A stored run entry: an activity document with the run fields on it. */\nexport interface ActionRunEntryLike extends ActivityEntryLike {\n result?: string\n trigger?: string\n summary?: string\n}\n\n/**\n * `formSubmission` → `Form submitted`.\n *\n * The console rendered the raw camelCase identifier in the trigger select\n * and in every run row. The words are `HOST_EVENT_LABELS` in `workflows.ts`\n * — one map, so the picker an author chose from and the run row they read\n * afterwards cannot name the same event differently.\n */\nexport function actionTriggerLabel(event: string | undefined): string {\n return hostEventLabel(event)\n}\n\n/**\n * The run's outcome, tolerating rows written before it was recorded.\n *\n * A legacy entry carries only the prose `action` string, so it is read\n * back: `with errors:` means it failed and `Action ran on` means it\n * succeeded. Anything else is not a run at all — the activity collection\n * also holds publishes, media saves and member changes, and calling one of\n * those `succeeded` would put it in the run history under a verdict that\n * means nothing for it.\n */\nexport function actionRunResult(\n entry: ActionRunEntryLike,\n): ActionRunResult | undefined {\n const stored = String(entry.result ?? '').trim()\n if (stored === 'succeeded' || stored === 'failed' || stored === 'skipped') {\n return stored\n }\n const action = String(entry.action ?? '')\n if (!action.startsWith('Action ran on')) return undefined\n return action.includes('with errors:') ? 'failed' : 'succeeded'\n}\n\n/**\n * The `What happened` column: `Sent email · saved to Leads · webhook 200`.\n *\n * Falls back to the legacy prose, minus its `Action ran on <event>` prefix\n * — that fact is the Trigger column now, and repeating it in the summary\n * would make every historic row say the same thing twice.\n */\nexport function actionRunSummary(entry: ActionRunEntryLike): string {\n const summary = String(entry.summary ?? '').trim()\n if (summary) return summary\n const action = String(entry.action ?? '').trim()\n const errors = action.match(/with errors:\\s*(.+)$/)\n if (errors) return errors[1]\n // A pre-AGL-2171 success recorded nothing but the fact that it ran.\n if (action.startsWith('Action ran on')) return 'Ran'\n return action\n}\n"],"names":["Route","buildRoute","CRM_RECORD_SECTIONS","crmRecordHref","crmSectionHref","hostEventLabel","duplicateActivityActionLabel","pluginActivityActionLabel","pluginActivityGroupForAction","pluginActivityTargetNoun","TYPE_LABELS","host","screen","layout","theme","media","content","variable","function","workflow","member","component","template","org","invite","subscription","role","aiJob","contact","lead","company","deal","CRM_TARGET_KINDS","Set","Object","keys","ORG_CRM_SECTIONS","task","activityTypeLabel","type","known","noun","charAt","toUpperCase","slice","activityTargetLabel","target","name","activityActionLabel","action","stored","trim","activityEntryGroupId","entry","id","activityPrimaryText","apiKeyActorLabel","activityActorLabel","actorEmail","apiKeyName","activityHref","ctx","orgSlug","undefined","targetId","versionId","HOST_DASHBOARD","SCREEN_DETAILS","screenId","HOST_SCREENS","COMPONENT_DETAILS","componentId","HOST_COMPONENTS","TEMPLATE_DETAILS","templateId","HOST_TEMPLATES","LAYOUT_DETAILS","layoutId","HOST_LAYOUTS","HOST_SETUP_THEME","HOST_MEDIA","HOST_CONTENT","HOST_DATA","HOST_LOGIC","HOST_AUTOMATION","HOST_SETUP","has","kind","ORG_SETTINGS","MANAGE_TEAM_MEMBER","uid","MANAGE_TEAM","section","hub","ORG_CRM","encodeURIComponent","actionTriggerLabel","event","actionRunResult","String","result","startsWith","includes","actionRunSummary","summary","errors","match"],"mappings":"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"}
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import { type ResolvedAdvertisingTag } from './advertising-tags';
|
|
18
|
+
import { type ReactElement } from 'react';
|
|
19
|
+
/**
|
|
20
|
+
* The MOUNT and the WITHDRAWAL for consent-gated advertising tags, with no
|
|
21
|
+
* opinion about where the verdict came from.
|
|
22
|
+
*
|
|
23
|
+
* ## Why this is a shared component and not a second copy per surface
|
|
24
|
+
*
|
|
25
|
+
* Aglyn runs advertising tags on three first-party surfaces and they resolve
|
|
26
|
+
* consent through three different mechanisms: the tenant runtime reads a host
|
|
27
|
+
* document and a per-host record, the console reads the platform record its
|
|
28
|
+
* own posture machinery wrote, and the docs site reads the registrable-domain
|
|
29
|
+
* mirror of that record. Those are genuinely different questions.
|
|
30
|
+
*
|
|
31
|
+
* What is NOT different is what happens once the answer is known: mount an
|
|
32
|
+
* inline boot and a library per vendor, and — the half that is easy to forget
|
|
33
|
+
* and impossible to retrofit — stop them the moment the answer changes. A
|
|
34
|
+
* second copy of that half is how one surface comes to keep firing after
|
|
35
|
+
* consent is withdrawn on another, because the copy that was not updated
|
|
36
|
+
* still looks exactly like the one that was.
|
|
37
|
+
*
|
|
38
|
+
* So the verdict is a PROP and the machinery is shared. Each surface answers
|
|
39
|
+
* its own question with its own resolver; none of them owns a teardown.
|
|
40
|
+
*
|
|
41
|
+
* ## Why it renders even when the answer is no
|
|
42
|
+
*
|
|
43
|
+
* Because the withdrawal path needs a listener. A visitor who accepts and then
|
|
44
|
+
* turns advertising off must stop being tracked in THAT pageview, and by then
|
|
45
|
+
* the vendor library has executed — React dropping the `<Script>` does not
|
|
46
|
+
* unload it (AGL-1608). So this component stays mounted whenever the surface
|
|
47
|
+
* participates at all, and subscribes to
|
|
48
|
+
* {@link VISITOR_CONSENT_CHANGED_EVENT}; the teardown runs from the event,
|
|
49
|
+
* synchronously with the visitor's click, rather than waiting on a re-render.
|
|
50
|
+
*
|
|
51
|
+
* Both paths run and they agree, which is deliberate: the render gate is what
|
|
52
|
+
* keeps the tag out of a fresh pageview, the listener is what removes one that
|
|
53
|
+
* is already there, and neither can do the other's job.
|
|
54
|
+
*/
|
|
55
|
+
export interface AdvertisingTagMountsProps {
|
|
56
|
+
/**
|
|
57
|
+
* Whether this surface participates in the gate AT ALL.
|
|
58
|
+
*
|
|
59
|
+
* False installs nothing — no listener, no scripts. That is the clause that
|
|
60
|
+
* keeps the tenant runtime's teardown off a customer's site: we did not load
|
|
61
|
+
* their pixel, we do not know what basis it runs on, and reaching into their
|
|
62
|
+
* page to kill it would be its own breach. `revokeAdvertisingTags` is
|
|
63
|
+
* additionally attribute-scoped, so there are two independent scopes.
|
|
64
|
+
*/
|
|
65
|
+
readonly active: boolean;
|
|
66
|
+
/** The verdict for THIS render: the tags that may exist right now. */
|
|
67
|
+
readonly tags: readonly ResolvedAdvertisingTag[];
|
|
68
|
+
/**
|
|
69
|
+
* Re-read the verdict from live state, for the withdrawal listener.
|
|
70
|
+
*
|
|
71
|
+
* A callback rather than the `tags` prop, because the listener fires from
|
|
72
|
+
* the visitor's own click in the same tick as the record is written — the
|
|
73
|
+
* props for the current render are by definition the state before it.
|
|
74
|
+
*/
|
|
75
|
+
readonly resolve: () => readonly ResolvedAdvertisingTag[];
|
|
76
|
+
/**
|
|
77
|
+
* The request's CSP nonce, stamped onto BOTH elements of every pair.
|
|
78
|
+
*
|
|
79
|
+
* A surface that enforces a nonce'd `script-src` refuses an inline script
|
|
80
|
+
* that does not carry it, and the boot half of every pair is inline. Next's
|
|
81
|
+
* `<Script>` stamps a nonce only when one reaches it: the automatic path
|
|
82
|
+
* reads `HeadManagerContext`, and the App Router's client provider carries
|
|
83
|
+
* no nonce at all — so a pair mounted after hydration, which is the only
|
|
84
|
+
* time this component ever mounts one, is unnonced unless the caller hands
|
|
85
|
+
* the value down. An explicit prop wins inside `next/script`
|
|
86
|
+
* (`restProps.nonce || nonce`), which is what makes this the one door.
|
|
87
|
+
*
|
|
88
|
+
* The failure without it is silent and lopsided: the library beside the
|
|
89
|
+
* boot has a `src` the policy allows, so the vendor's code loads and runs
|
|
90
|
+
* against an account nobody configured, and the conversions this surface
|
|
91
|
+
* sends are lost with nothing in the page but a CSP violation.
|
|
92
|
+
*
|
|
93
|
+
* Absent on a surface that sends no `script-src`: nothing is stamped, and
|
|
94
|
+
* nothing is refused.
|
|
95
|
+
*/
|
|
96
|
+
readonly nonce?: string;
|
|
97
|
+
/**
|
|
98
|
+
* Libraries the HOST PAGE mounts itself, named by the needle a vendor
|
|
99
|
+
* declares in `sharesLibrary` (AGL-2681).
|
|
100
|
+
*
|
|
101
|
+
* {@link sharedLibraryPresent} reads the document at render time, and that
|
|
102
|
+
* is the right instrument for a loader some other party put there. It is
|
|
103
|
+
* the wrong one for a loader the SAME render is about to create. On the
|
|
104
|
+
* tenant the GA pair and this component both wait on `consent.ready`, so
|
|
105
|
+
* the first render that may emit either emits both — GA's `<Script>` is not
|
|
106
|
+
* in the document yet when this component looks, the check honestly says
|
|
107
|
+
* "absent", and the visitor downloads `gtag.js` twice: once as ours with
|
|
108
|
+
* `?id=AW-…`, once as gtag's own destination fetch for the `config` that
|
|
109
|
+
* follows. Measured on `aglyn.com/solutions/small-business` with
|
|
110
|
+
* advertising granted: two 147 KiB loaders for one account.
|
|
111
|
+
*
|
|
112
|
+
* A page that KNOWS it renders the library says so here, from the same
|
|
113
|
+
* condition that renders it, and the document check stays as the fallback
|
|
114
|
+
* for loaders it does not know about. Naming the needle rather than passing
|
|
115
|
+
* a boolean keeps the declaration per library: a page that mounts gtag has
|
|
116
|
+
* said nothing about the Meta pixel.
|
|
117
|
+
*/
|
|
118
|
+
readonly sharedLibraries?: readonly string[];
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Is a library matching `needle` already in the document?
|
|
122
|
+
*
|
|
123
|
+
* Read at RENDER time rather than in an effect: the decision is whether to
|
|
124
|
+
* emit a `<Script>` at all, and by the time an effect could answer, Next has
|
|
125
|
+
* already appended it. `document` is guarded because this component renders on
|
|
126
|
+
* the server too, where nothing is mounted and the honest answer is "no" — the
|
|
127
|
+
* client render then re-evaluates with the real document.
|
|
128
|
+
*
|
|
129
|
+
* Blind to a loader the current render is creating alongside this one — see
|
|
130
|
+
* `sharedLibraries` on the props for the case that needs the page to say so.
|
|
131
|
+
*/
|
|
132
|
+
export declare function sharedLibraryPresent(needle: string): boolean;
|
|
133
|
+
export default function AdvertisingTagMounts({ active, tags, resolve, nonce, sharedLibraries, }: AdvertisingTagMountsProps): ReactElement | null;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2026 Aglyn LLC
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/ // NO `'use client'` here, and it is a lint rule rather than a preference
|
|
18
|
+
// (AGL-52): a directive inside `@aglyn/aglyn` makes the bundler split a
|
|
19
|
+
// duplicate module graph, and the second canvas/emitter singleton renders the
|
|
20
|
+
// tenant site blank. Every component that mounts this one carries the
|
|
21
|
+
// directive itself, which is where the client boundary belongs.
|
|
22
|
+
//
|
|
23
|
+
// Deep app-utils modules, never the `@aglyn/aglyn` barrel (AGL-1550): this
|
|
24
|
+
// file is reached from `site-analytics.tsx`, whose import closure
|
|
25
|
+
// `site-analytics-independence.spec.ts` walks and which must stay independent
|
|
26
|
+
// of the site-plugin gate.
|
|
27
|
+
import { ADVERTISING_TAG_ATTRIBUTE, restoreAdvertisingTags, revokeAdvertisingTags } from "./advertising-tags.js";
|
|
28
|
+
import { VISITOR_CONSENT_CHANGED_EVENT } from "./visitor-consent.js";
|
|
29
|
+
import Script from "next/script";
|
|
30
|
+
import { Fragment, useEffect, useRef } from "react";
|
|
31
|
+
/**
|
|
32
|
+
* Is a library matching `needle` already in the document?
|
|
33
|
+
*
|
|
34
|
+
* Read at RENDER time rather than in an effect: the decision is whether to
|
|
35
|
+
* emit a `<Script>` at all, and by the time an effect could answer, Next has
|
|
36
|
+
* already appended it. `document` is guarded because this component renders on
|
|
37
|
+
* the server too, where nothing is mounted and the honest answer is "no" — the
|
|
38
|
+
* client render then re-evaluates with the real document.
|
|
39
|
+
*
|
|
40
|
+
* Blind to a loader the current render is creating alongside this one — see
|
|
41
|
+
* `sharedLibraries` on the props for the case that needs the page to say so.
|
|
42
|
+
*/ export function sharedLibraryPresent(needle) {
|
|
43
|
+
if (typeof document === 'undefined') return false;
|
|
44
|
+
try {
|
|
45
|
+
return Boolean(document.querySelector(`script[src*="${needle}"]`));
|
|
46
|
+
} catch (unused) {
|
|
47
|
+
// A hostile or absent DOM: assume nothing is mounted, which mounts our
|
|
48
|
+
// own copy — the cost is a duplicate fetch, never a missing tag.
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
export default function AdvertisingTagMounts({ active, tags, resolve, nonce, sharedLibraries }) {
|
|
53
|
+
/** Declared by the page, or found in the document: either means "ride it". */ const libraryProvided = (needle)=>{
|
|
54
|
+
var _ref;
|
|
55
|
+
return ((_ref = sharedLibraries == null ? void 0 : sharedLibraries.includes(needle)) != null ? _ref : false) || sharedLibraryPresent(needle);
|
|
56
|
+
};
|
|
57
|
+
/*
|
|
58
|
+
* The resolver is held in a ref rather than listed as an effect dependency.
|
|
59
|
+
*
|
|
60
|
+
* Every caller passes a closure over its own live consent state, so the
|
|
61
|
+
* function identity changes on every render; depending on it would tear the
|
|
62
|
+
* listener down and re-install it each time, and a withdrawal that landed in
|
|
63
|
+
* that window would find no subscriber. The ref makes the subscription's
|
|
64
|
+
* lifetime `active`, which is the only thing that genuinely changes it,
|
|
65
|
+
* while the callback it invokes is always the newest one.
|
|
66
|
+
*/ const resolveRef = useRef(resolve);
|
|
67
|
+
resolveRef.current = resolve;
|
|
68
|
+
useEffect(()=>{
|
|
69
|
+
if (!active) return undefined;
|
|
70
|
+
const sync = ()=>{
|
|
71
|
+
if (resolveRef.current().length === 0) {
|
|
72
|
+
revokeAdvertisingTags();
|
|
73
|
+
} else {
|
|
74
|
+
// Symmetric: a visitor who withdrew and changed their mind inside one
|
|
75
|
+
// pageview would otherwise stay un-tracked until they navigated,
|
|
76
|
+
// because a re-rendered `<Script>` cannot re-execute a library the
|
|
77
|
+
// browser already ran.
|
|
78
|
+
restoreAdvertisingTags();
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
window.addEventListener(VISITOR_CONSENT_CHANGED_EVENT, sync);
|
|
82
|
+
return ()=>window.removeEventListener(VISITOR_CONSENT_CHANGED_EVENT, sync);
|
|
83
|
+
}, [
|
|
84
|
+
active
|
|
85
|
+
]);
|
|
86
|
+
if (!active || tags.length === 0) return null;
|
|
87
|
+
return /*#__PURE__*/ _jsx(_Fragment, {
|
|
88
|
+
children: tags.map(({ vendor, accountId })=>// A PAIR per vendor, inline boot first and library second — the same
|
|
89
|
+
// shape as the GA `ga-init` / `ga-src` pair, and for the same reason:
|
|
90
|
+
// the boot defines the vendor's queue shim and declares the consent
|
|
91
|
+
// state, so nothing the library later drains was queued under a state
|
|
92
|
+
// nobody chose. Both elements carry the teardown's scope marker; only
|
|
93
|
+
// elements carrying it are ever revoked, removed or cookie-swept.
|
|
94
|
+
/*#__PURE__*/ _jsxs(Fragment, {
|
|
95
|
+
children: [
|
|
96
|
+
/*#__PURE__*/ _jsx(Script, {
|
|
97
|
+
id: `ad-tag-${vendor.id}-init`,
|
|
98
|
+
strategy: "afterInteractive",
|
|
99
|
+
nonce: nonce,
|
|
100
|
+
[ADVERTISING_TAG_ATTRIBUTE]: vendor.id,
|
|
101
|
+
children: vendor.bootSnippet ? vendor.bootSnippet(accountId) : ''
|
|
102
|
+
}),
|
|
103
|
+
vendor.sharesLibrary && libraryProvided(vendor.sharesLibrary) ? null : /*#__PURE__*/ _jsx(Script, {
|
|
104
|
+
id: `ad-tag-${vendor.id}-src`,
|
|
105
|
+
strategy: "afterInteractive",
|
|
106
|
+
nonce: nonce,
|
|
107
|
+
[ADVERTISING_TAG_ATTRIBUTE]: vendor.id,
|
|
108
|
+
// `scriptSrcFor` where the vendor has one: gtag reads the
|
|
109
|
+
// container out of the loader's query, so the copy we bring
|
|
110
|
+
// ourselves has to name the account. See `scriptSrcFor`.
|
|
111
|
+
src: vendor.scriptSrcFor ? vendor.scriptSrcFor(accountId) : vendor.scriptSrc
|
|
112
|
+
})
|
|
113
|
+
]
|
|
114
|
+
}, vendor.id))
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
//# sourceMappingURL=advertising-tag-mounts.js.map
|