@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,650 @@
|
|
|
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
|
+
*/ /**
|
|
18
|
+
* The one GA4 event taxonomy, shared by the marketing site (tenant runtime)
|
|
19
|
+
* and the console (AGL-1561). See `docs/ANALYTICS.md` for the event map and
|
|
20
|
+
* which GTM-plan §6 metric each event serves.
|
|
21
|
+
*
|
|
22
|
+
* ## Why this module exists
|
|
23
|
+
*
|
|
24
|
+
* Before it, every GA event in the repo was an ad-hoc
|
|
25
|
+
* `;(window as any).gtag?.('event', 'name', {...})` — five of them across the
|
|
26
|
+
* marketing and commerce plugins, plus bare string literals passed to Firebase
|
|
27
|
+
* `logEvent` in the console. Nothing checked the names, nothing checked the
|
|
28
|
+
* params, and a typo produced a silently-missing metric rather than an error.
|
|
29
|
+
* That is the failure mode analytics is worst at surfacing: the number simply
|
|
30
|
+
* reads zero, and zero is indistinguishable from "nobody did it".
|
|
31
|
+
*
|
|
32
|
+
* So the names and their params are a TYPE here ({@link AnalyticsEventParams}),
|
|
33
|
+
* and `trackEvent` is generic over it: a misspelled event name or a missing
|
|
34
|
+
* required param is a compile error.
|
|
35
|
+
*
|
|
36
|
+
* That sweep missed five (AGL-1591, closed): the commerce plugin's
|
|
37
|
+
* `view_item` / `add_to_cart` / `begin_checkout` and the marketing runtime's
|
|
38
|
+
* `aglyn_overlay` / `aglyn_experiment`. `window.gtag` is now called in exactly
|
|
39
|
+
* two places in the repo — {@link deliver} below, and `readGaClientId` above,
|
|
40
|
+
* which reads rather than sends.
|
|
41
|
+
*
|
|
42
|
+
* ## Reserved names
|
|
43
|
+
*
|
|
44
|
+
* Where GA4 has a recommended event we use its exact name and its exact param
|
|
45
|
+
* spelling — `sign_up`, `login`, `generate_lead`, `begin_checkout`,
|
|
46
|
+
* `purchase`, `select_content` — so the built-in reports, the funnel
|
|
47
|
+
* explorations and the "key events" toggles work without custom definitions.
|
|
48
|
+
* Custom snake_case names appear only where GA4 has no standard: the four
|
|
49
|
+
* activation events, which are Aglyn-specific product milestones.
|
|
50
|
+
*
|
|
51
|
+
* ## Consent (AGL-1498) — the gate is that gtag never loads
|
|
52
|
+
*
|
|
53
|
+
* On tenant sites, including aglyn.com itself, `site-analytics.tsx` renders the
|
|
54
|
+
* gtag `<Script>` pair ONLY when the recorded consent state grants analytics.
|
|
55
|
+
* There is therefore no `window.gtag` at all for a visitor who has not granted,
|
|
56
|
+
* and {@link trackEvent} drops the event on the floor.
|
|
57
|
+
*
|
|
58
|
+
* It drops it — it does not QUEUE it. That distinction is the whole point and
|
|
59
|
+
* `analytics-events.spec.ts` asserts it: an event fired before consent is gone
|
|
60
|
+
* for good, and does not reappear when a later grant loads gtag. A queue would
|
|
61
|
+
* quietly convert "we did not track you" into "we tracked you and waited", and
|
|
62
|
+
* a replayed hit carries the pre-consent timestamp and page into GA, which is
|
|
63
|
+
* exactly the thing the consent gate exists to prevent. Deliberately no retry,
|
|
64
|
+
* no buffer, no flush-on-grant.
|
|
65
|
+
*
|
|
66
|
+
* ## No PII, enforced rather than promised
|
|
67
|
+
*
|
|
68
|
+
* Every payload passes through {@link sanitizeEventParams} before it reaches a
|
|
69
|
+
* transport: an exact-key denylist drops the identity-bearing params someone
|
|
70
|
+
* will eventually add by reflex (`email`, `org_name`, `first_name`, ...), any
|
|
71
|
+
* value that looks like an email address drops its key entirely, URLs are
|
|
72
|
+
* reduced to origin + pathname so query strings can never smuggle a token or
|
|
73
|
+
* an address, and strings are length-capped. The console separately sets a
|
|
74
|
+
* `user_id` — that is an opaque Firebase uid and is the one identifier GA is
|
|
75
|
+
* allowed to hold.
|
|
76
|
+
*
|
|
77
|
+
* Sanitizing here rather than at each call site is the point: a new call site
|
|
78
|
+
* cannot forget.
|
|
79
|
+
*
|
|
80
|
+
* ## Authored events (AGL-1587)
|
|
81
|
+
*
|
|
82
|
+
* One call site cannot use the taxonomy at all: the `trackGaEvent` action step,
|
|
83
|
+
* whose event name and params are typed by a SITE AUTHOR in the interaction
|
|
84
|
+
* builder. A closed union cannot contain a name nobody has written yet, so
|
|
85
|
+
* {@link trackAuthoredEvent} is the escape hatch — and it is deliberately the
|
|
86
|
+
* only one, so that untrusted input still passes {@link sanitizeEventParams}
|
|
87
|
+
* rather than reaching `window.gtag` raw.
|
|
88
|
+
*
|
|
89
|
+
* The test for which door an event uses is WHO NAMED IT, not whether GA4
|
|
90
|
+
* recommends the name. `aglyn_overlay` and `aglyn_experiment` are outside GA4's
|
|
91
|
+
* recommended set and were candidates for the hatch (AGL-1591); they are in the
|
|
92
|
+
* union instead, because a developer wrote their names and their keys, so they
|
|
93
|
+
* can have compile-time checking — and because the hatch guarantees the
|
|
94
|
+
* opposite of what they need. {@link resolveAuthoredEventName} refuses any name
|
|
95
|
+
* we send — the union AND the server-only names beside it — precisely so that
|
|
96
|
+
* "not one of ours" means "authored"; put our own events through the hatch and
|
|
97
|
+
* that stops being true, authored hits stop being separable from ours in
|
|
98
|
+
* reports, and an authored `aglyn_experiment` step starts voting in the
|
|
99
|
+
* experiment that decides which variant ships.
|
|
100
|
+
*/ /**
|
|
101
|
+
* Read the browser's GA `client_id` — the identifier that ties a hit to a GA
|
|
102
|
+
* user and session.
|
|
103
|
+
*
|
|
104
|
+
* Needed because `purchase` is sent SERVER-side, from the Stripe webhook,
|
|
105
|
+
* where the authoritative money is (see `ga4-measurement-protocol.ts`). The
|
|
106
|
+
* Measurement Protocol requires a `client_id` and a server cannot know one,
|
|
107
|
+
* so it is captured here when checkout starts and carried on the Stripe
|
|
108
|
+
* object's metadata. Without it the revenue still lands, but attached to a
|
|
109
|
+
* synthetic user with no acquisition session — which is exactly the campaign
|
|
110
|
+
* attribution the whole exercise is for.
|
|
111
|
+
*
|
|
112
|
+
* Resolves to null rather than hanging when gtag is absent (no consent, an ad
|
|
113
|
+
* blocker, analytics not configured) or slow to answer. The 500ms cap matters:
|
|
114
|
+
* this sits directly in front of a checkout redirect, and analytics must never
|
|
115
|
+
* be able to delay a payment.
|
|
116
|
+
*/ export function readGaClientId(measurementId) {
|
|
117
|
+
return new Promise((resolve)=>{
|
|
118
|
+
if (typeof window === 'undefined' || !measurementId) return resolve(null);
|
|
119
|
+
const gtag = window.gtag;
|
|
120
|
+
if (typeof gtag !== 'function') return resolve(null);
|
|
121
|
+
let settled = false;
|
|
122
|
+
const finish = (value)=>{
|
|
123
|
+
if (settled) return;
|
|
124
|
+
settled = true;
|
|
125
|
+
resolve(value);
|
|
126
|
+
};
|
|
127
|
+
// Never let a missing callback strand the checkout.
|
|
128
|
+
setTimeout(()=>finish(null), 500);
|
|
129
|
+
try {
|
|
130
|
+
;
|
|
131
|
+
gtag('get', measurementId, 'client_id', (id)=>finish(typeof id === 'string' && id ? id : null));
|
|
132
|
+
} catch (unused) {
|
|
133
|
+
finish(null);
|
|
134
|
+
}
|
|
135
|
+
});
|
|
136
|
+
}
|
|
137
|
+
let configuredTransport = null;
|
|
138
|
+
/**
|
|
139
|
+
* Register the transport for this surface. The console calls this once, with
|
|
140
|
+
* Firebase's `logEvent`, because the console's GA is Firebase-initialised and
|
|
141
|
+
* its `user_id`/user-property state lives on the Firebase Analytics instance —
|
|
142
|
+
* poking `window.gtag` directly there would emit hits that miss it.
|
|
143
|
+
*
|
|
144
|
+
* The tenant runtime deliberately does NOT call this: the plugin bundles run
|
|
145
|
+
* in their own realm and do not share this module instance with the host app,
|
|
146
|
+
* so a module-scope singleton would be invisible to exactly the call sites
|
|
147
|
+
* that need it (the form and newsletter elements). `window.gtag` is the only
|
|
148
|
+
* thing genuinely shared across that boundary, and it is also the consent
|
|
149
|
+
* gate, which makes the fallback the correct primary path there rather than a
|
|
150
|
+
* degraded one.
|
|
151
|
+
*/ export function configureAnalyticsTransport(transport) {
|
|
152
|
+
configuredTransport = transport;
|
|
153
|
+
}
|
|
154
|
+
/** Test seam — drops the registered transport. */ export function resetAnalyticsTransport() {
|
|
155
|
+
configuredTransport = null;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Param keys that must never reach GA, matched EXACTLY. Substring matching
|
|
159
|
+
* would be wrong in both directions: it would drop the legitimate
|
|
160
|
+
* `form_name` / `item_name` / `link_domain`, and it would still miss a
|
|
161
|
+
* creatively-named new one. The value scan below is the backstop for those.
|
|
162
|
+
*/ const DENIED_PARAM_KEYS = new Set([
|
|
163
|
+
'email',
|
|
164
|
+
'email_address',
|
|
165
|
+
'user_email',
|
|
166
|
+
'name',
|
|
167
|
+
'full_name',
|
|
168
|
+
'first_name',
|
|
169
|
+
'last_name',
|
|
170
|
+
'user_name',
|
|
171
|
+
'username',
|
|
172
|
+
'customer_name',
|
|
173
|
+
'org_name',
|
|
174
|
+
'organization_name',
|
|
175
|
+
'company',
|
|
176
|
+
'company_name',
|
|
177
|
+
'phone',
|
|
178
|
+
'phone_number',
|
|
179
|
+
'address',
|
|
180
|
+
'street',
|
|
181
|
+
'postal_code',
|
|
182
|
+
'zip',
|
|
183
|
+
'ip',
|
|
184
|
+
'ip_address'
|
|
185
|
+
]);
|
|
186
|
+
/** Deliberately loose — this is a "does it smell like an address" test. */ const EMAIL_SHAPED = /[^\s@]+@[^\s@]+\.[^\s@]+/;
|
|
187
|
+
/**
|
|
188
|
+
* GA4 truncates param values at 100 chars anyway; do it ourselves, visibly.
|
|
189
|
+
*
|
|
190
|
+
* Exported because an AUTHOR types some of these (the `trackGaEvent` step's
|
|
191
|
+
* parameters), and the field they type into caps its input at the same number
|
|
192
|
+
* — the truncation point and the affordance that describes it have to be one
|
|
193
|
+
* value, or the editor promises a length the delivery quietly shortens.
|
|
194
|
+
*/ export const ANALYTICS_PARAM_MAX_LENGTH = 100;
|
|
195
|
+
function scrubValue(value) {
|
|
196
|
+
let candidate = value;
|
|
197
|
+
if (/^https?:\/\//i.test(candidate)) {
|
|
198
|
+
try {
|
|
199
|
+
const url = new URL(candidate);
|
|
200
|
+
// Origin + pathname only: a query string is where a session token, a
|
|
201
|
+
// signup email or a Stripe id ends up, and none of them belong in GA.
|
|
202
|
+
candidate = `${url.origin}${url.pathname}`;
|
|
203
|
+
} catch (unused) {
|
|
204
|
+
return null;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
// AFTER the URL reduction, not before. A page URL routinely carries an
|
|
208
|
+
// address in its query (`?email=…` on a prefilled signup link), and testing
|
|
209
|
+
// the raw string would throw the whole URL away for PII that the reduction
|
|
210
|
+
// was about to remove — losing the legitimate page dimension to protect
|
|
211
|
+
// something already protected. Testing the REDUCED value still catches an
|
|
212
|
+
// address embedded in the path itself, which the reduction keeps.
|
|
213
|
+
if (EMAIL_SHAPED.test(candidate)) return null;
|
|
214
|
+
return candidate.slice(0, ANALYTICS_PARAM_MAX_LENGTH);
|
|
215
|
+
}
|
|
216
|
+
/**
|
|
217
|
+
* Strip anything identity-bearing from an event payload. Exported so
|
|
218
|
+
* `analytics-events.spec.ts` can assert the guarantee directly rather than
|
|
219
|
+
* only through `trackEvent`.
|
|
220
|
+
*/ export function sanitizeEventParams(params) {
|
|
221
|
+
const safe = {};
|
|
222
|
+
if (!params) return safe;
|
|
223
|
+
for (const [key, value] of Object.entries(params)){
|
|
224
|
+
if (DENIED_PARAM_KEYS.has(key.toLowerCase())) continue;
|
|
225
|
+
if (value === undefined || value === null) continue;
|
|
226
|
+
if (typeof value === 'string') {
|
|
227
|
+
const scrubbed = scrubValue(value);
|
|
228
|
+
if (scrubbed === null || scrubbed === '') continue;
|
|
229
|
+
safe[key] = scrubbed;
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
if (typeof value === 'number' || typeof value === 'boolean') {
|
|
233
|
+
safe[key] = value;
|
|
234
|
+
continue;
|
|
235
|
+
}
|
|
236
|
+
if (Array.isArray(value)) {
|
|
237
|
+
// `items` — sanitize each entry with the same rules.
|
|
238
|
+
safe[key] = value.map((entry)=>entry && typeof entry === 'object' ? sanitizeEventParams(entry) : entry);
|
|
239
|
+
continue;
|
|
240
|
+
}
|
|
241
|
+
if (typeof value === 'object') {
|
|
242
|
+
safe[key] = sanitizeEventParams(value);
|
|
243
|
+
}
|
|
244
|
+
// Anything else (function, symbol) is dropped.
|
|
245
|
+
}
|
|
246
|
+
return safe;
|
|
247
|
+
}
|
|
248
|
+
/**
|
|
249
|
+
* Fire a GA4 event.
|
|
250
|
+
*
|
|
251
|
+
* Never throws and never queues. If the surface has no transport and no
|
|
252
|
+
* `window.gtag` — which on a tenant site means the visitor has not granted
|
|
253
|
+
* analytics consent — the event is DROPPED, permanently. See the module
|
|
254
|
+
* comment for why a queue would be the wrong answer.
|
|
255
|
+
*/ export function trackEvent(name, params) {
|
|
256
|
+
deliver(name, sanitizeEventParams(params));
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* How long a navigation may be held waiting for a hit to reach gtag. Short
|
|
260
|
+
* enough to be invisible next to a Stripe redirect, long enough to cover a
|
|
261
|
+
* Firebase Analytics init that has not settled yet.
|
|
262
|
+
*/ const NAVIGATION_FLUSH_TIMEOUT_MS = 300;
|
|
263
|
+
/**
|
|
264
|
+
* Fire a GA4 event and resolve once it has been HANDED TO gtag — for the call
|
|
265
|
+
* sites that navigate away in the same tick (AGL-1580).
|
|
266
|
+
*
|
|
267
|
+
* ## What was actually losing the event
|
|
268
|
+
*
|
|
269
|
+
* Not the transport, which was the obvious suspect and the wrong one. Measured
|
|
270
|
+
* against real gtag.js with every transport interposed: gtag flushes its queue
|
|
271
|
+
* on pagehide through `fetch(..., { keepalive: true })`, which is precisely the
|
|
272
|
+
* mechanism that survives a document teardown. Once a hit reaches gtag, a
|
|
273
|
+
* navigation does not destroy it — and `transport_type: 'beacon'`, the standard
|
|
274
|
+
* answer, therefore fixes nothing here.
|
|
275
|
+
*
|
|
276
|
+
* What is lost is the hit that never REACHES gtag. Firebase's `logEvent` is
|
|
277
|
+
* `async` and awaits the SDK's initialization promise before calling gtag
|
|
278
|
+
* (`@firebase/analytics/dist/index.cjs.js`, `logEvent$1`). While that promise is
|
|
279
|
+
* already settled the continuation is a microtask, microtasks drain before the
|
|
280
|
+
* queued navigation task, and the hit gets out. While it is still PENDING — the
|
|
281
|
+
* first checkout of a fresh session, exactly the case that has never yet been
|
|
282
|
+
* seen in the property — the continuation is scheduled behind the navigation
|
|
283
|
+
* and never runs at all. Measured both ways: pending init loses the event,
|
|
284
|
+
* awaiting it delivers it, nothing else changed.
|
|
285
|
+
*
|
|
286
|
+
* ## Why a timeout rather than a bare await
|
|
287
|
+
*
|
|
288
|
+
* A bare `await` on `logEvent` hands the user's redirect to the analytics
|
|
289
|
+
* stack. When the analytics host is blocked — an ad blocker, a corporate proxy,
|
|
290
|
+
* a consent tool that never loads — Firebase's initialization promise can stay
|
|
291
|
+
* pending indefinitely, and the checkout would hang on a metric. So the wait is
|
|
292
|
+
* RACED against {@link NAVIGATION_FLUSH_TIMEOUT_MS}: a blocked analytics stack
|
|
293
|
+
* costs the redirect 300ms once and then it proceeds, which is the same outcome
|
|
294
|
+
* the caller had before this existed. Never rejects, for the same reason
|
|
295
|
+
* {@link trackEvent} never throws.
|
|
296
|
+
*
|
|
297
|
+
* On a surface with no registered transport — the tenant runtime and the plugin
|
|
298
|
+
* bundles, which go straight to `window.gtag` — delivery is synchronous, so
|
|
299
|
+
* this resolves immediately and costs the storefront checkout nothing at all.
|
|
300
|
+
*/ export async function trackEventBeforeNavigation(name, params) {
|
|
301
|
+
const delivered = deliver(name, sanitizeEventParams(params));
|
|
302
|
+
// Synchronous transport (or none): already handed over, nothing to wait for.
|
|
303
|
+
if (!delivered || typeof delivered.then !== 'function') return;
|
|
304
|
+
await Promise.race([
|
|
305
|
+
// A transport that REJECTS must not become an unhandled rejection, and
|
|
306
|
+
// must not hold the navigation either — it has already failed.
|
|
307
|
+
Promise.resolve(delivered).catch(()=>undefined),
|
|
308
|
+
new Promise((resolve)=>setTimeout(resolve, NAVIGATION_FLUSH_TIMEOUT_MS))
|
|
309
|
+
]);
|
|
310
|
+
}
|
|
311
|
+
/**
|
|
312
|
+
* Build the ONE `begin_checkout` payload, for every surface that starts a
|
|
313
|
+
* checkout (AGL-1591).
|
|
314
|
+
*
|
|
315
|
+
* ## Why a constructor and not just the type
|
|
316
|
+
*
|
|
317
|
+
* Two surfaces fire this name: the console, when a plan checkout starts, and a
|
|
318
|
+
* tenant storefront, when a cart checks out. Until AGL-1591 the storefront
|
|
319
|
+
* fired it raw and carried `value`/`currency` only, so ONE event name arrived
|
|
320
|
+
* in two shapes — and a `begin_checkout` breakdown showed two populations that
|
|
321
|
+
* could not be compared, with the storefront half missing the `items` the GA4
|
|
322
|
+
* ecommerce funnel is built on. Routing both through {@link trackEvent} makes
|
|
323
|
+
* the compiler settle the KEYS.
|
|
324
|
+
*
|
|
325
|
+
* It does not settle the NUMBER, which is the other way two call sites of one
|
|
326
|
+
* event diverge, and the more dangerous one because nothing about it looks
|
|
327
|
+
* wrong: the console's annual plans are priced per-month-billed-yearly, so its
|
|
328
|
+
* `value` is twelve of them, and that only stayed right because a comment said
|
|
329
|
+
* so. Here `value` DERIVES from the items unless a caller states a different
|
|
330
|
+
* one — a cart states its subtotal, which is authoritative after discounts —
|
|
331
|
+
* so "what the customer is about to be charged" has one definition rather than
|
|
332
|
+
* one per surface.
|
|
333
|
+
*
|
|
334
|
+
* Server-safe: pure, no DOM, so the Measurement Protocol sender can compose
|
|
335
|
+
* the matching `purchase` items from the same shapes.
|
|
336
|
+
*/ export function buildBeginCheckoutParams(input) {
|
|
337
|
+
return _extends({}, priceItems(input), input.billingInterval ? {
|
|
338
|
+
billing_interval: input.billingInterval
|
|
339
|
+
} : {});
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* The `currency`/`value`/`items` triple every GA4 ecommerce step shares.
|
|
343
|
+
*
|
|
344
|
+
* Private, because a caller should reach for the named builder for the event
|
|
345
|
+
* it is about to send: the names differ in what they mean by `value` even
|
|
346
|
+
* though the arithmetic is identical, and the JSDoc on each is where that is
|
|
347
|
+
* written down.
|
|
348
|
+
*/ function priceItems(input) {
|
|
349
|
+
var _input_items, _input_currency, _input_value;
|
|
350
|
+
const items = (_input_items = input.items) != null ? _input_items : [];
|
|
351
|
+
const summed = items.reduce((total, item)=>{
|
|
352
|
+
var _item_price, _item_quantity;
|
|
353
|
+
return total + ((_item_price = item.price) != null ? _item_price : 0) * ((_item_quantity = item.quantity) != null ? _item_quantity : 1);
|
|
354
|
+
}, 0);
|
|
355
|
+
return {
|
|
356
|
+
currency: (_input_currency = input.currency) != null ? _input_currency : 'USD',
|
|
357
|
+
// Money, so two decimals: a float sum of cents-derived prices produces
|
|
358
|
+
// `59.99999999999999`, and GA would report that verbatim.
|
|
359
|
+
value: Math.round(((_input_value = input.value) != null ? _input_value : summed) * 100) / 100,
|
|
360
|
+
items
|
|
361
|
+
};
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Build `view_cart` — the shopper is looking at the cart's contents.
|
|
365
|
+
*
|
|
366
|
+
* `value` is the cart's subtotal as the SERVER priced it, which is what makes
|
|
367
|
+
* this comparable with the `begin_checkout` the same cart sends moments later:
|
|
368
|
+
* two steps of one funnel that disagreed about the size of the same cart would
|
|
369
|
+
* read as shoppers editing it between screens.
|
|
370
|
+
*/ export function buildViewCartParams(input) {
|
|
371
|
+
return priceItems(input);
|
|
372
|
+
}
|
|
373
|
+
/**
|
|
374
|
+
* Build `add_to_cart` — one product going in, not the cart's new total.
|
|
375
|
+
*
|
|
376
|
+
* `value` is what was JUST ADDED (`price * quantity`), which is GA4's
|
|
377
|
+
* definition and the only one that makes the metric additive: summing a
|
|
378
|
+
* running cart total over a session would count the first item once per
|
|
379
|
+
* subsequent add.
|
|
380
|
+
*
|
|
381
|
+
* Callers that cannot price the line — a quick-add with no resolved variant —
|
|
382
|
+
* pass items alone and the pair is omitted rather than reported as zero. A
|
|
383
|
+
* zero here would read as a free product in the merchant's report.
|
|
384
|
+
*/ export function buildAddToCartParams(input) {
|
|
385
|
+
const priced = priceItems(input);
|
|
386
|
+
if (!(priced.value > 0)) return {
|
|
387
|
+
items: priced.items
|
|
388
|
+
};
|
|
389
|
+
return priced;
|
|
390
|
+
}
|
|
391
|
+
/**
|
|
392
|
+
* Decide `site_published`'s `first_publish` from the host's routing map as it
|
|
393
|
+
* stood BEFORE the route being published was registered (AGL-1588).
|
|
394
|
+
*
|
|
395
|
+
* ## What "first" means, and why it is defined once
|
|
396
|
+
*
|
|
397
|
+
* Three call sites report `site_published` — `publishScreenRoute`, the
|
|
398
|
+
* besigner's one-click publish, and the scheduled publish executor, the last
|
|
399
|
+
* of which is server-side and sends over the Measurement Protocol. A
|
|
400
|
+
* breakdown is only worth registering if all three mean the same thing by it,
|
|
401
|
+
* and "first" has several plausible readings. This is the one they share:
|
|
402
|
+
*
|
|
403
|
+
* **The host had no live route at all before this one.** Not "first for the
|
|
404
|
+
* org" — that needs a cross-host query the server path cannot make, and the
|
|
405
|
+
* scheduled sender's client id is derived from the HOST anyway, so an org is
|
|
406
|
+
* not a thing it can see. Not "first for this screen" either, which would be
|
|
407
|
+
* true of every second page a site adds and would make the dimension a
|
|
408
|
+
* synonym for the event.
|
|
409
|
+
*
|
|
410
|
+
* So the metric it separates is the GTM §6 activation one: `first_publish:
|
|
411
|
+
* true` counts sites that came alive, where the event alone counts publishes.
|
|
412
|
+
*
|
|
413
|
+
* ## The one dishonesty, and why it does not matter
|
|
414
|
+
*
|
|
415
|
+
* Unpublishing every route and publishing again reports `true` a second time.
|
|
416
|
+
* Detecting that needs publish history the routing map does not keep. It is
|
|
417
|
+
* harmless for the metric it exists for, because activation is read as the
|
|
418
|
+
* share of USERS who ever sent `first_publish: true`, and a user counted twice
|
|
419
|
+
* is still one user.
|
|
420
|
+
*
|
|
421
|
+
* Callers pass what they already hold — the live-subscribed map in the
|
|
422
|
+
* console, a read snapshot on the server — and never a map read back AFTER
|
|
423
|
+
* the write, which is never empty.
|
|
424
|
+
*/ export function isFirstPublishedRoute(routing) {
|
|
425
|
+
return Object.keys(routing != null ? routing : {}).length === 0;
|
|
426
|
+
}
|
|
427
|
+
/**
|
|
428
|
+
* The one delivery path, shared by {@link trackEvent} and
|
|
429
|
+
* {@link trackAuthoredEvent}. Takes an ALREADY-sanitized payload — every
|
|
430
|
+
* caller sanitizes first, which is what keeps "a new call site cannot forget"
|
|
431
|
+
* true of the authored path too.
|
|
432
|
+
*/ function deliver(name, safe) {
|
|
433
|
+
try {
|
|
434
|
+
if (configuredTransport) {
|
|
435
|
+
// The transport's name parameter is the taxonomy union, which an
|
|
436
|
+
// authored name is by definition outside. Nominal only: the console is
|
|
437
|
+
// the sole surface that registers one and it has no authored events
|
|
438
|
+
// (the interaction runtime is tenant-side), and Firebase `logEvent`
|
|
439
|
+
// takes an arbitrary string regardless.
|
|
440
|
+
// Returned, not discarded (AGL-1580). A transport may be ASYNC —
|
|
441
|
+
// Firebase's `logEvent` awaits the SDK's initialization promise before it
|
|
442
|
+
// reaches gtag at all — and a caller that is about to navigate has to be
|
|
443
|
+
// able to wait for it. See `trackEventBeforeNavigation`.
|
|
444
|
+
return configuredTransport(name, safe);
|
|
445
|
+
}
|
|
446
|
+
if (typeof window === 'undefined') return;
|
|
447
|
+
const gtag = window.gtag;
|
|
448
|
+
if (typeof gtag !== 'function') return;
|
|
449
|
+
gtag('event', name, safe);
|
|
450
|
+
} catch (unused) {
|
|
451
|
+
// Analytics never breaks the page — the same posture as the error beacon
|
|
452
|
+
// and the pageview beacon.
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
/**
|
|
456
|
+
* The taxonomy's names at RUN time. A `Record<AnalyticsEventName, true>` rather
|
|
457
|
+
* than a hand-kept array so the compiler enforces both directions: adding an
|
|
458
|
+
* event to {@link AnalyticsEventParams} without adding it here is a missing-key
|
|
459
|
+
* error, and a name here that is not in the taxonomy is an excess-property one.
|
|
460
|
+
*
|
|
461
|
+
* It exists for {@link trackAuthoredEvent}, which has to refuse these names —
|
|
462
|
+
* a drifting copy would silently re-open the collision it is here to close.
|
|
463
|
+
*/ const TAXONOMY_EVENT_NAMES = {
|
|
464
|
+
sign_up: true,
|
|
465
|
+
login: true,
|
|
466
|
+
generate_lead: true,
|
|
467
|
+
select_content: true,
|
|
468
|
+
org_created: true,
|
|
469
|
+
host_created: true,
|
|
470
|
+
site_published: true,
|
|
471
|
+
stripe_connected: true,
|
|
472
|
+
begin_checkout: true,
|
|
473
|
+
purchase: true,
|
|
474
|
+
view_item: true,
|
|
475
|
+
add_to_cart: true,
|
|
476
|
+
view_cart: true,
|
|
477
|
+
aglyn_overlay: true,
|
|
478
|
+
aglyn_experiment: true,
|
|
479
|
+
click: true,
|
|
480
|
+
assistant_message_sent: true,
|
|
481
|
+
assistant_feedback: true,
|
|
482
|
+
assistant_proposal_shown: true,
|
|
483
|
+
assistant_proposal_confirmed: true,
|
|
484
|
+
ai_job_completed: true,
|
|
485
|
+
ai_job_failed: true,
|
|
486
|
+
churn_survey_submitted: true,
|
|
487
|
+
downsell_accepted: true,
|
|
488
|
+
winback_discount_accepted: true,
|
|
489
|
+
cancellation_completed: true,
|
|
490
|
+
plan_downgrade_scheduled: true,
|
|
491
|
+
plan_upgraded: true
|
|
492
|
+
};
|
|
493
|
+
/** The taxonomy, enumerable. */ export const ANALYTICS_EVENT_NAMES = Object.keys(TAXONOMY_EVENT_NAMES);
|
|
494
|
+
/**
|
|
495
|
+
* Event names WE send that this module's union cannot hold, because nothing
|
|
496
|
+
* client-side ever fires them: they are emitted only by the Measurement
|
|
497
|
+
* Protocol sender (`ga4-measurement-protocol.ts`), from a Stripe webhook.
|
|
498
|
+
*
|
|
499
|
+
* They still have to be RESERVED against authored names, and the reason is
|
|
500
|
+
* the same one that puts `purchase` in the union — only less obvious, which
|
|
501
|
+
* is why it was missed. `aglyn.com` is itself a tenant site, pointed at the
|
|
502
|
+
* platform measurement id (`site-analytics.tsx`), so an authored
|
|
503
|
+
* `trackGaEvent` step on our own marketing site lands in the SAME property as
|
|
504
|
+
* these server hits. An authored `refund` does not merely add noise: GA4
|
|
505
|
+
* treats `refund` as ecommerce and SUBTRACTS its `value` from reported
|
|
506
|
+
* revenue, so a mistyped step could walk real money out of the report — the
|
|
507
|
+
* `purchase` hazard, running in the direction nobody audits.
|
|
508
|
+
*
|
|
509
|
+
* Kept as a separate list rather than folded into {@link AnalyticsEventParams}
|
|
510
|
+
* on purpose: adding them to the union would give {@link trackEvent} a
|
|
511
|
+
* client-side door to events that must only ever come from the server, where
|
|
512
|
+
* the authoritative money is. A name here is ours, is never sent from a
|
|
513
|
+
* browser, and is never available to an author.
|
|
514
|
+
*
|
|
515
|
+
* This list is the reason "not in {@link ANALYTICS_EVENT_NAMES}" is NOT on its
|
|
516
|
+
* own a sound test for "authored" — use {@link isReservedAnalyticsEventName}.
|
|
517
|
+
*/ const SERVER_ONLY_EVENT_NAMES = new Set([
|
|
518
|
+
'refund',
|
|
519
|
+
'subscription_cancelled'
|
|
520
|
+
]);
|
|
521
|
+
/**
|
|
522
|
+
* Every event name Aglyn itself sends, from any surface — the union plus the
|
|
523
|
+
* server-only names above. Exported so a caller can ask the question the two
|
|
524
|
+
* separate lists no longer answer alone.
|
|
525
|
+
*/ export function isReservedAnalyticsEventName(name) {
|
|
526
|
+
return TAXONOMY_EVENT_NAMES[name] === true || SERVER_ONLY_EVENT_NAMES.has(name);
|
|
527
|
+
}
|
|
528
|
+
/**
|
|
529
|
+
* GA4's own reserved event names — GA drops a hit that uses one, so sending it
|
|
530
|
+
* is not pollution but silence, which is the worse failure of the two because
|
|
531
|
+
* nothing anywhere says so.
|
|
532
|
+
*/ const GA4_RESERVED_EVENT_NAMES = new Set([
|
|
533
|
+
'ad_activeview',
|
|
534
|
+
'ad_click',
|
|
535
|
+
'ad_exposure',
|
|
536
|
+
'ad_impression',
|
|
537
|
+
'ad_query',
|
|
538
|
+
'ad_reward',
|
|
539
|
+
'adunit_exposure',
|
|
540
|
+
'app_background',
|
|
541
|
+
'app_clear_data',
|
|
542
|
+
'app_exception',
|
|
543
|
+
'app_install',
|
|
544
|
+
'app_remove',
|
|
545
|
+
'app_store_refund',
|
|
546
|
+
'app_store_subscription_cancel',
|
|
547
|
+
'app_store_subscription_convert',
|
|
548
|
+
'app_store_subscription_renew',
|
|
549
|
+
'app_update',
|
|
550
|
+
'app_upgrade',
|
|
551
|
+
'dynamic_link_app_open',
|
|
552
|
+
'dynamic_link_app_update',
|
|
553
|
+
'dynamic_link_first_open',
|
|
554
|
+
'error',
|
|
555
|
+
'first_open',
|
|
556
|
+
'first_visit',
|
|
557
|
+
'in_app_purchase',
|
|
558
|
+
'notification_dismiss',
|
|
559
|
+
'notification_foreground',
|
|
560
|
+
'notification_open',
|
|
561
|
+
'notification_receive',
|
|
562
|
+
'os_update',
|
|
563
|
+
'screen_view',
|
|
564
|
+
'session_start',
|
|
565
|
+
'user_engagement'
|
|
566
|
+
]);
|
|
567
|
+
/** GA4 reserves these prefixes outright, whatever follows them. */ const GA4_RESERVED_PREFIXES = [
|
|
568
|
+
'firebase_',
|
|
569
|
+
'google_',
|
|
570
|
+
'ga_'
|
|
571
|
+
];
|
|
572
|
+
/** GA4's hard limit on an event name. Over it, GA drops the event. */ const MAX_EVENT_NAME_LENGTH = 40;
|
|
573
|
+
/**
|
|
574
|
+
* Put an authored event name through GA4's naming rules and our own.
|
|
575
|
+
*
|
|
576
|
+
* Normalization is forgiving on purpose: `"CTA Click!"` becomes `cta_click`
|
|
577
|
+
* and still reports, where GA would have dropped it. Names already sitting in
|
|
578
|
+
* published sites were never validated, so refusing them outright would delete
|
|
579
|
+
* working metrics from a paying customer's property to fix a formatting nit.
|
|
580
|
+
*
|
|
581
|
+
* Collisions, in contrast, are refused rather than rewritten. On a tenant site
|
|
582
|
+
* the authored events and OUR events (`generate_lead` from the form element,
|
|
583
|
+
* `select_content`/`click` from the link listener) land in the same property,
|
|
584
|
+
* so an authored `purchase` does not merely add noise — it mixes hand-authored
|
|
585
|
+
* hits into a real revenue number. Refusing is also what keeps authored events
|
|
586
|
+
* separable in reports: an event that is not one of {@link ANALYTICS_EVENT_NAMES}
|
|
587
|
+
* is, by construction, authored.
|
|
588
|
+
*
|
|
589
|
+
* Deliberately NOT prefixed (`site_*`) to achieve that separation. A prefix
|
|
590
|
+
* would rename events already flowing into customers' properties and break
|
|
591
|
+
* every report and key-event conversion configured on the old name — a
|
|
592
|
+
* migration cost paid by people who did nothing wrong.
|
|
593
|
+
*/ export function resolveAuthoredEventName(raw) {
|
|
594
|
+
const normalized = String(raw != null ? raw : '').trim().toLowerCase()// Anything GA4 does not allow in a name becomes an underscore...
|
|
595
|
+
.replace(/[^a-z0-9_]+/g, '_')// ...and a name must START with a letter, so drop what precedes one.
|
|
596
|
+
.replace(/^[^a-z]+/, '').replace(/_{2,}/g, '_').slice(0, MAX_EVENT_NAME_LENGTH)// Truncation can leave a trailing underscore; so can the substitution.
|
|
597
|
+
.replace(/_+$/, '');
|
|
598
|
+
if (!normalized) return {
|
|
599
|
+
name: null,
|
|
600
|
+
reason: 'unusable'
|
|
601
|
+
};
|
|
602
|
+
if (isReservedAnalyticsEventName(normalized) || GA4_RESERVED_EVENT_NAMES.has(normalized) || GA4_RESERVED_PREFIXES.some((prefix)=>normalized.startsWith(prefix))) {
|
|
603
|
+
return {
|
|
604
|
+
name: null,
|
|
605
|
+
reason: 'reserved'
|
|
606
|
+
};
|
|
607
|
+
}
|
|
608
|
+
return {
|
|
609
|
+
name: normalized
|
|
610
|
+
};
|
|
611
|
+
}
|
|
612
|
+
/** One warning per distinct name per page load — an `everyTime` automation
|
|
613
|
+
* would otherwise fill the console with the same line. */ const warnedAuthoredNames = new Set();
|
|
614
|
+
/**
|
|
615
|
+
* Fire an event whose name and params were written by a SITE AUTHOR, not by a
|
|
616
|
+
* developer — today only the `trackGaEvent` action step (AGL-1587).
|
|
617
|
+
*
|
|
618
|
+
* Same consent gate, same sanitizer, same drop-never-queue posture as
|
|
619
|
+
* {@link trackEvent}; the only difference is that the name is checked at run
|
|
620
|
+
* time instead of by the compiler, because there is no compiler between the
|
|
621
|
+
* interaction builder and here.
|
|
622
|
+
*
|
|
623
|
+
* A refused event is dropped and warned about in the console rather than
|
|
624
|
+
* surfaced in the page. Nothing here can reach the author — the code is
|
|
625
|
+
* running for a VISITOR of their site, and turning the author's configuration
|
|
626
|
+
* mistake into something a visitor sees would be a worse bug than the missing
|
|
627
|
+
* metric. The author-facing half lives in `validateHostAction`, which refuses
|
|
628
|
+
* to save a name this function would refuse to send, so a silent drop should
|
|
629
|
+
* only ever happen to a step authored before AGL-1587.
|
|
630
|
+
*/ export function trackAuthoredEvent(name, params) {
|
|
631
|
+
const resolved = resolveAuthoredEventName(name);
|
|
632
|
+
if (!resolved.name) {
|
|
633
|
+
const key = String(name != null ? name : '');
|
|
634
|
+
if (!warnedAuthoredNames.has(key)) {
|
|
635
|
+
warnedAuthoredNames.add(key);
|
|
636
|
+
try {
|
|
637
|
+
console.warn(`[aglyn] analytics: the event "${key}" was not sent — ` + (resolved.reason === 'reserved' ? 'that name is reserved. Rename the step in the interaction builder.' : 'an event name must start with a letter.'));
|
|
638
|
+
} catch (unused) {
|
|
639
|
+
// A console that throws is still not worth breaking the page for.
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
return;
|
|
643
|
+
}
|
|
644
|
+
deliver(resolved.name, sanitizeEventParams(params != null ? params : undefined));
|
|
645
|
+
}
|
|
646
|
+
/** Test seam — forgets which authored names have already been warned about. */ export function resetAuthoredEventWarnings() {
|
|
647
|
+
warnedAuthoredNames.clear();
|
|
648
|
+
}
|
|
649
|
+
|
|
650
|
+
//# sourceMappingURL=analytics-events.js.map
|