@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,203 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ /**
|
|
17
|
+
* Which advertising tags may load on AGLYN'S OWN NON-TENANT SURFACES — the
|
|
18
|
+
* console (`app.aglyn.com`, `auth.aglyn.com`) and the docs site
|
|
19
|
+
* (`docs.aglyn.com`).
|
|
20
|
+
*
|
|
21
|
+
* ## Why this exists beside `advertising-tags.ts` rather than inside it
|
|
22
|
+
*
|
|
23
|
+
* {@link resolveAdvertisingTags} answers the same question for a TENANT page,
|
|
24
|
+
* and every one of its inputs is a host document: the surface discriminator is
|
|
25
|
+
* `isPlatformMarketingHost`, the configuration is `analytics.adTags`, and the
|
|
26
|
+
* consent record is keyed per host id. None of those exist here. The console
|
|
27
|
+
* and the docs are not sites anybody published; they are Aglyn's own
|
|
28
|
+
* properties, so their ids come from build configuration and their consent
|
|
29
|
+
* comes from the platform record.
|
|
30
|
+
*
|
|
31
|
+
* What is deliberately NOT duplicated is the vendor registry. Both resolvers
|
|
32
|
+
* read {@link ADVERTISING_VENDORS}, so a vendor is described — loaded, torn
|
|
33
|
+
* down, and its cookies named — exactly once. A second registry is how a
|
|
34
|
+
* vendor comes to be revocable on one surface and resident forever on
|
|
35
|
+
* another.
|
|
36
|
+
*
|
|
37
|
+
* ## Configuration, and why nothing is hardcoded
|
|
38
|
+
*
|
|
39
|
+
* ⛔ No default id, for any vendor. `analyticsMayEmit()` is true for ANY
|
|
40
|
+
* production build, self-hosted ones included, so a hardcoded pixel id would
|
|
41
|
+
* have every operator's console building retargeting audiences in Aglyn's ad
|
|
42
|
+
* accounts out of their users. Unset means unset and nothing loads — the same
|
|
43
|
+
* rule `platform-ad-conversions.ts` and the docs site's `DOCS_*` values are
|
|
44
|
+
* built on, and the one this file follows rather than reinvents.
|
|
45
|
+
*
|
|
46
|
+
* A self-host operator's own advertising tags are their business: setting
|
|
47
|
+
* these variables to their own ids is how they run them, and leaving them
|
|
48
|
+
* unset is how they run none.
|
|
49
|
+
*
|
|
50
|
+
* ⚠️ `process.env.NAME` is inlined at BUILD time by Next and never the bracket
|
|
51
|
+
* form, so every read below is written out literally. They are fixed when the
|
|
52
|
+
* image is built rather than when it starts; changing ad accounts is a
|
|
53
|
+
* rebuild.
|
|
54
|
+
*/ import { ADVERTISING_VENDORS } from "./advertising-tags.js";
|
|
55
|
+
import { analyticsEnvironmentForcesInternal, analyticsMayEmit, readAnalyticsEnvironment } from "./analytics-environment.js";
|
|
56
|
+
import { readInternalTrafficOverride } from "./internal-traffic.js";
|
|
57
|
+
import { GTM_CONTAINER_ID_PATTERN } from "./visitor-consent.js";
|
|
58
|
+
/**
|
|
59
|
+
* The build-configured account id for each vendor this surface can mount,
|
|
60
|
+
* keyed by {@link AdvertisingVendor.id}.
|
|
61
|
+
*
|
|
62
|
+
* Read at CALL time rather than captured in a module constant, so a spec can
|
|
63
|
+
* drive every branch — the alternative is a constant that can only ever be
|
|
64
|
+
* observed in one state, which is the shape of a check that cannot fail.
|
|
65
|
+
* `readAnalyticsEnvironment` is written the same way and for the same reason.
|
|
66
|
+
*/ export function readPlatformAdTagIds() {
|
|
67
|
+
return {
|
|
68
|
+
meta: process.env.NEXT_PUBLIC_META_PIXEL_ID || '',
|
|
69
|
+
// The SAME variable the conversion reporter reads. One `AW-` account id
|
|
70
|
+
// per deployment: a build that fired conversions into one advertiser and
|
|
71
|
+
// built audiences in another would split a funnel that has to be joined,
|
|
72
|
+
// and the second variable is the one that would go stale.
|
|
73
|
+
'google-ads': process.env.NEXT_PUBLIC_ADS_CONVERSION_ID || '',
|
|
74
|
+
linkedin: process.env.NEXT_PUBLIC_LINKEDIN_PARTNER_ID || ''
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
/** The build-configured Google Tag Manager container, or an empty string. */ export function readPlatformGtmContainerId() {
|
|
78
|
+
return process.env.NEXT_PUBLIC_GTM_CONTAINER_ID || '';
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Which advertising tags may exist on this surface, for this visitor, right
|
|
82
|
+
* now.
|
|
83
|
+
*
|
|
84
|
+
* Pure, and empty is the answer to every question it cannot answer — a build
|
|
85
|
+
* that may not emit, a visitor who has not granted, an unconfigured vendor, a
|
|
86
|
+
* malformed id.
|
|
87
|
+
*
|
|
88
|
+
* `advertisingGranted` is PASSED IN rather than read here, and that is the
|
|
89
|
+
* whole of the arrangement this module is for. Each surface resolves consent
|
|
90
|
+
* through the machinery it already has — the console through
|
|
91
|
+
* `platformAdvertisingAllowed()` over its own posture-resolved record, the
|
|
92
|
+
* docs site through the registrable-domain mirror of that same record — and
|
|
93
|
+
* neither gets a second reading of a cookie from inside an analytics helper.
|
|
94
|
+
* One resolver per surface, asked by the mount rather than re-implemented in
|
|
95
|
+
* it.
|
|
96
|
+
*
|
|
97
|
+
* `analyticsMayEmit` is checked HERE and not left to the caller, because it is
|
|
98
|
+
* the one condition that is a property of the BUILD rather than of the
|
|
99
|
+
* visitor: `next dev` and any Vercel preview build resolve these ids exactly
|
|
100
|
+
* as production does, and without this a preview deploy would build real
|
|
101
|
+
* retargeting audiences out of our own engineers (AGL-2067).
|
|
102
|
+
*/ export function resolvePlatformAdvertisingTags(advertisingGranted, ids = readPlatformAdTagIds(), env = readAnalyticsEnvironment(), internal = readInternalTrafficOverride()) {
|
|
103
|
+
if (advertisingGranted !== true) return [];
|
|
104
|
+
if (analyticsMayEmit(env) === false) return [];
|
|
105
|
+
// The same clause the tenant resolver calls condition 6 (AGL-3188), which
|
|
106
|
+
// this surface never had. A GA4 data filter is PROPERTY-scoped: it drops
|
|
107
|
+
// `traffic_type: internal` from the GA4 property and has no reach into an
|
|
108
|
+
// `AW-` destination, which is a separate product reached by separate
|
|
109
|
+
// requests. Measured on `auth.aglyn.com`: a pinned browser's pageview sent
|
|
110
|
+
// `tt=internal` to `g/collect` and, in the same document, an unmarked
|
|
111
|
+
// `ccm/collect` to `AW-18401436785`. Excluding ourselves from the reports
|
|
112
|
+
// while still training the bidding on ourselves is the worse half, because
|
|
113
|
+
// it is the half nobody can see in a report.
|
|
114
|
+
//
|
|
115
|
+
// Structural, not suppression: a resident tag fires on its own and the
|
|
116
|
+
// first automatic event writes a `_gcl_*` cookie, so the tag must not be
|
|
117
|
+
// MOUNTED rather than mounted and silenced.
|
|
118
|
+
if (internal === true) return [];
|
|
119
|
+
// A non-production build emitting because someone turned the hatch on is
|
|
120
|
+
// ours by definition, and must not hand a preview the real `AW-` id.
|
|
121
|
+
if (analyticsEnvironmentForcesInternal(env) === true) return [];
|
|
122
|
+
const tags = [];
|
|
123
|
+
for (const vendor of ADVERTISING_VENDORS){
|
|
124
|
+
var _ids_vendor_id;
|
|
125
|
+
// Sweep-only: nothing to mount, and no `accountIdPattern` to test with.
|
|
126
|
+
// Skipped explicitly rather than left to fail a pattern check, so a stray
|
|
127
|
+
// configured value cannot conjure a script.
|
|
128
|
+
if (vendor.sweepOnly || !vendor.accountIdPattern) continue;
|
|
129
|
+
const accountId = String((_ids_vendor_id = ids[vendor.id]) != null ? _ids_vendor_id : '');
|
|
130
|
+
// Strict format check, exactly as the tenant resolver applies: the id
|
|
131
|
+
// lands inside an inline script (the AGL-138 concern), and a half-set
|
|
132
|
+
// variable must read as absent rather than as an id.
|
|
133
|
+
if (vendor.accountIdPattern.test(accountId)) {
|
|
134
|
+
tags.push({
|
|
135
|
+
vendor,
|
|
136
|
+
accountId
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
return tags;
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* The Google Tag Manager container this surface may load, or null.
|
|
144
|
+
*
|
|
145
|
+
* ## Why the gate here is ANALYTICS and never advertising
|
|
146
|
+
*
|
|
147
|
+
* A container is not a tag — it is a LOADER, and what it loads is decided in
|
|
148
|
+
* Google's UI by whoever owns it, not here. The tenant runtime already settled
|
|
149
|
+
* the rule this follows: a container cannot have a WEAKER gate than GA,
|
|
150
|
+
* because it is the likeliest thing on a page to carry an advertising tag, and
|
|
151
|
+
* it cannot have a stronger one either or a container-only surface would never
|
|
152
|
+
* load at all. So it rides the analytics grant, and the advertising signals
|
|
153
|
+
* the visitor did or did not give reach its tags through Consent Mode v2 —
|
|
154
|
+
* which is why `PLATFORM_CONSENT_DEFAULT_COMMANDS` has to be declared before
|
|
155
|
+
* `gtm.js` is requested and not after.
|
|
156
|
+
*
|
|
157
|
+
* ⚠️ A container's CONTENTS are not visible from this repository, and what is
|
|
158
|
+
* in one is a disclosure obligation as much as a technical one: a tag added in
|
|
159
|
+
* Google's UI appears in no inventory here and no spec can see it. That is a
|
|
160
|
+
* reason to know what a container holds before configuring one on a surface,
|
|
161
|
+
* not a reason for this function to be looser.
|
|
162
|
+
*
|
|
163
|
+
* ⛔ NO `<noscript>` iframe accompanies this anywhere, deliberately, and it is
|
|
164
|
+
* the one piece of Google's standard snippet always omitted. That iframe fires
|
|
165
|
+
* the container with no JavaScript — so no consent defaults, no gate, nothing
|
|
166
|
+
* to suppress it. It is a consent bypass with a fallback's reputation. A
|
|
167
|
+
* visitor with JavaScript off gets no container, which is the correct answer.
|
|
168
|
+
*/ export function resolvePlatformGtmContainerId(analyticsGranted, containerId = readPlatformGtmContainerId(), env = readAnalyticsEnvironment(), internal = readInternalTrafficOverride()) {
|
|
169
|
+
if (analyticsGranted !== true) return null;
|
|
170
|
+
if (analyticsMayEmit(env) === false) return null;
|
|
171
|
+
// The container takes the gate too (AGL-3188). What it loads is decided in
|
|
172
|
+
// Google's UI and is invisible to every spec here, so it has to be assumed
|
|
173
|
+
// to carry advertising tags — and a container's tags reach `AW-` and Meta
|
|
174
|
+
// destinations no GA4 filter can touch.
|
|
175
|
+
if (internal === true) return null;
|
|
176
|
+
if (analyticsEnvironmentForcesInternal(env) === true) return null;
|
|
177
|
+
const candidate = String(containerId != null ? containerId : '').trim();
|
|
178
|
+
// Strict format check, same reason as the account ids above: the container
|
|
179
|
+
// id lands inside an inline script.
|
|
180
|
+
return GTM_CONTAINER_ID_PATTERN.test(candidate) ? candidate : null;
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* The inline boot for a Google Tag Manager container.
|
|
184
|
+
*
|
|
185
|
+
* The consent-mode declaration is NOT part of this string. Every surface that
|
|
186
|
+
* calls it declares `PLATFORM_CONSENT_DEFAULT_COMMANDS` earlier and by its own
|
|
187
|
+
* route — the console pushes them onto `dataLayer` before the Firebase SDK
|
|
188
|
+
* boots gtag, the docs site emits them from its `ssrTemplate` ahead of every
|
|
189
|
+
* plugin tag — and re-declaring a default mid-page re-DENIES what the first
|
|
190
|
+
* one granted until an update lands. One declaration per document, made by
|
|
191
|
+
* whoever is first.
|
|
192
|
+
*
|
|
193
|
+
* The `gtag` shim is defined anyway, because it is cheap and because
|
|
194
|
+
* `dataLayer.push` of a plain array is the classic silent no-op if anything
|
|
195
|
+
* downstream reaches for the function form.
|
|
196
|
+
*/ export function platformGtmBootSnippet() {
|
|
197
|
+
return 'window.dataLayer=window.dataLayer||[];' + 'function gtag(){dataLayer.push(arguments);}' + "dataLayer.push({'gtm.start':new Date().getTime(),event:'gtm.js'});";
|
|
198
|
+
}
|
|
199
|
+
/** The container library URL for `containerId`. */ export function platformGtmScriptSrc(containerId) {
|
|
200
|
+
return `https://www.googletagmanager.com/gtm.js?id=${containerId}`;
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
//# sourceMappingURL=platform-advertising-tags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/platform-advertising-tags.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Which advertising tags may load on AGLYN'S OWN NON-TENANT SURFACES — the\n * console (`app.aglyn.com`, `auth.aglyn.com`) and the docs site\n * (`docs.aglyn.com`).\n *\n * ## Why this exists beside `advertising-tags.ts` rather than inside it\n *\n * {@link resolveAdvertisingTags} answers the same question for a TENANT page,\n * and every one of its inputs is a host document: the surface discriminator is\n * `isPlatformMarketingHost`, the configuration is `analytics.adTags`, and the\n * consent record is keyed per host id. None of those exist here. The console\n * and the docs are not sites anybody published; they are Aglyn's own\n * properties, so their ids come from build configuration and their consent\n * comes from the platform record.\n *\n * What is deliberately NOT duplicated is the vendor registry. Both resolvers\n * read {@link ADVERTISING_VENDORS}, so a vendor is described — loaded, torn\n * down, and its cookies named — exactly once. A second registry is how a\n * vendor comes to be revocable on one surface and resident forever on\n * another.\n *\n * ## Configuration, and why nothing is hardcoded\n *\n * ⛔ No default id, for any vendor. `analyticsMayEmit()` is true for ANY\n * production build, self-hosted ones included, so a hardcoded pixel id would\n * have every operator's console building retargeting audiences in Aglyn's ad\n * accounts out of their users. Unset means unset and nothing loads — the same\n * rule `platform-ad-conversions.ts` and the docs site's `DOCS_*` values are\n * built on, and the one this file follows rather than reinvents.\n *\n * A self-host operator's own advertising tags are their business: setting\n * these variables to their own ids is how they run them, and leaving them\n * unset is how they run none.\n *\n * ⚠️ `process.env.NAME` is inlined at BUILD time by Next and never the bracket\n * form, so every read below is written out literally. They are fixed when the\n * image is built rather than when it starts; changing ad accounts is a\n * rebuild.\n */\n\nimport {\n ADVERTISING_VENDORS,\n type ResolvedAdvertisingTag,\n} from './advertising-tags'\nimport {\n analyticsEnvironmentForcesInternal,\n analyticsMayEmit,\n type AnalyticsEnvironment,\n readAnalyticsEnvironment,\n} from './analytics-environment'\nimport { readInternalTrafficOverride } from './internal-traffic'\nimport { GTM_CONTAINER_ID_PATTERN } from './visitor-consent'\n\n/**\n * The build-configured account id for each vendor this surface can mount,\n * keyed by {@link AdvertisingVendor.id}.\n *\n * Read at CALL time rather than captured in a module constant, so a spec can\n * drive every branch — the alternative is a constant that can only ever be\n * observed in one state, which is the shape of a check that cannot fail.\n * `readAnalyticsEnvironment` is written the same way and for the same reason.\n */\nexport function readPlatformAdTagIds(): Record<string, string> {\n return {\n meta: process.env.NEXT_PUBLIC_META_PIXEL_ID || '',\n // The SAME variable the conversion reporter reads. One `AW-` account id\n // per deployment: a build that fired conversions into one advertiser and\n // built audiences in another would split a funnel that has to be joined,\n // and the second variable is the one that would go stale.\n 'google-ads': process.env.NEXT_PUBLIC_ADS_CONVERSION_ID || '',\n linkedin: process.env.NEXT_PUBLIC_LINKEDIN_PARTNER_ID || '',\n }\n}\n\n/** The build-configured Google Tag Manager container, or an empty string. */\nexport function readPlatformGtmContainerId(): string {\n return process.env.NEXT_PUBLIC_GTM_CONTAINER_ID || ''\n}\n\n/**\n * Which advertising tags may exist on this surface, for this visitor, right\n * now.\n *\n * Pure, and empty is the answer to every question it cannot answer — a build\n * that may not emit, a visitor who has not granted, an unconfigured vendor, a\n * malformed id.\n *\n * `advertisingGranted` is PASSED IN rather than read here, and that is the\n * whole of the arrangement this module is for. Each surface resolves consent\n * through the machinery it already has — the console through\n * `platformAdvertisingAllowed()` over its own posture-resolved record, the\n * docs site through the registrable-domain mirror of that same record — and\n * neither gets a second reading of a cookie from inside an analytics helper.\n * One resolver per surface, asked by the mount rather than re-implemented in\n * it.\n *\n * `analyticsMayEmit` is checked HERE and not left to the caller, because it is\n * the one condition that is a property of the BUILD rather than of the\n * visitor: `next dev` and any Vercel preview build resolve these ids exactly\n * as production does, and without this a preview deploy would build real\n * retargeting audiences out of our own engineers (AGL-2067).\n */\nexport function resolvePlatformAdvertisingTags(\n advertisingGranted: boolean,\n ids: Record<string, string> = readPlatformAdTagIds(),\n env: AnalyticsEnvironment = readAnalyticsEnvironment(),\n internal: boolean = readInternalTrafficOverride(),\n): ResolvedAdvertisingTag[] {\n if (advertisingGranted !== true) return []\n if (analyticsMayEmit(env) === false) return []\n // The same clause the tenant resolver calls condition 6 (AGL-3188), which\n // this surface never had. A GA4 data filter is PROPERTY-scoped: it drops\n // `traffic_type: internal` from the GA4 property and has no reach into an\n // `AW-` destination, which is a separate product reached by separate\n // requests. Measured on `auth.aglyn.com`: a pinned browser's pageview sent\n // `tt=internal` to `g/collect` and, in the same document, an unmarked\n // `ccm/collect` to `AW-18401436785`. Excluding ourselves from the reports\n // while still training the bidding on ourselves is the worse half, because\n // it is the half nobody can see in a report.\n //\n // Structural, not suppression: a resident tag fires on its own and the\n // first automatic event writes a `_gcl_*` cookie, so the tag must not be\n // MOUNTED rather than mounted and silenced.\n if (internal === true) return []\n // A non-production build emitting because someone turned the hatch on is\n // ours by definition, and must not hand a preview the real `AW-` id.\n if (analyticsEnvironmentForcesInternal(env) === true) return []\n const tags: ResolvedAdvertisingTag[] = []\n for (const vendor of ADVERTISING_VENDORS) {\n // Sweep-only: nothing to mount, and no `accountIdPattern` to test with.\n // Skipped explicitly rather than left to fail a pattern check, so a stray\n // configured value cannot conjure a script.\n if (vendor.sweepOnly || !vendor.accountIdPattern) continue\n const accountId = String(ids[vendor.id] ?? '')\n // Strict format check, exactly as the tenant resolver applies: the id\n // lands inside an inline script (the AGL-138 concern), and a half-set\n // variable must read as absent rather than as an id.\n if (vendor.accountIdPattern.test(accountId)) {\n tags.push({ vendor, accountId })\n }\n }\n return tags\n}\n\n/**\n * The Google Tag Manager container this surface may load, or null.\n *\n * ## Why the gate here is ANALYTICS and never advertising\n *\n * A container is not a tag — it is a LOADER, and what it loads is decided in\n * Google's UI by whoever owns it, not here. The tenant runtime already settled\n * the rule this follows: a container cannot have a WEAKER gate than GA,\n * because it is the likeliest thing on a page to carry an advertising tag, and\n * it cannot have a stronger one either or a container-only surface would never\n * load at all. So it rides the analytics grant, and the advertising signals\n * the visitor did or did not give reach its tags through Consent Mode v2 —\n * which is why `PLATFORM_CONSENT_DEFAULT_COMMANDS` has to be declared before\n * `gtm.js` is requested and not after.\n *\n * ⚠️ A container's CONTENTS are not visible from this repository, and what is\n * in one is a disclosure obligation as much as a technical one: a tag added in\n * Google's UI appears in no inventory here and no spec can see it. That is a\n * reason to know what a container holds before configuring one on a surface,\n * not a reason for this function to be looser.\n *\n * ⛔ NO `<noscript>` iframe accompanies this anywhere, deliberately, and it is\n * the one piece of Google's standard snippet always omitted. That iframe fires\n * the container with no JavaScript — so no consent defaults, no gate, nothing\n * to suppress it. It is a consent bypass with a fallback's reputation. A\n * visitor with JavaScript off gets no container, which is the correct answer.\n */\nexport function resolvePlatformGtmContainerId(\n analyticsGranted: boolean,\n containerId: string = readPlatformGtmContainerId(),\n env: AnalyticsEnvironment = readAnalyticsEnvironment(),\n internal: boolean = readInternalTrafficOverride(),\n): string | null {\n if (analyticsGranted !== true) return null\n if (analyticsMayEmit(env) === false) return null\n // The container takes the gate too (AGL-3188). What it loads is decided in\n // Google's UI and is invisible to every spec here, so it has to be assumed\n // to carry advertising tags — and a container's tags reach `AW-` and Meta\n // destinations no GA4 filter can touch.\n if (internal === true) return null\n if (analyticsEnvironmentForcesInternal(env) === true) return null\n const candidate = String(containerId ?? '').trim()\n // Strict format check, same reason as the account ids above: the container\n // id lands inside an inline script.\n return GTM_CONTAINER_ID_PATTERN.test(candidate) ? candidate : null\n}\n\n/**\n * The inline boot for a Google Tag Manager container.\n *\n * The consent-mode declaration is NOT part of this string. Every surface that\n * calls it declares `PLATFORM_CONSENT_DEFAULT_COMMANDS` earlier and by its own\n * route — the console pushes them onto `dataLayer` before the Firebase SDK\n * boots gtag, the docs site emits them from its `ssrTemplate` ahead of every\n * plugin tag — and re-declaring a default mid-page re-DENIES what the first\n * one granted until an update lands. One declaration per document, made by\n * whoever is first.\n *\n * The `gtag` shim is defined anyway, because it is cheap and because\n * `dataLayer.push` of a plain array is the classic silent no-op if anything\n * downstream reaches for the function form.\n */\nexport function platformGtmBootSnippet(): string {\n return (\n 'window.dataLayer=window.dataLayer||[];' +\n 'function gtag(){dataLayer.push(arguments);}' +\n \"dataLayer.push({'gtm.start':new Date().getTime(),event:'gtm.js'});\"\n )\n}\n\n/** The container library URL for `containerId`. */\nexport function platformGtmScriptSrc(containerId: string): string {\n return `https://www.googletagmanager.com/gtm.js?id=${containerId}`\n}\n"],"names":["ADVERTISING_VENDORS","analyticsEnvironmentForcesInternal","analyticsMayEmit","readAnalyticsEnvironment","readInternalTrafficOverride","GTM_CONTAINER_ID_PATTERN","readPlatformAdTagIds","meta","process","env","NEXT_PUBLIC_META_PIXEL_ID","NEXT_PUBLIC_ADS_CONVERSION_ID","linkedin","NEXT_PUBLIC_LINKEDIN_PARTNER_ID","readPlatformGtmContainerId","NEXT_PUBLIC_GTM_CONTAINER_ID","resolvePlatformAdvertisingTags","advertisingGranted","ids","internal","tags","vendor","sweepOnly","accountIdPattern","accountId","String","id","test","push","resolvePlatformGtmContainerId","analyticsGranted","containerId","candidate","trim","platformGtmBootSnippet","platformGtmScriptSrc"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCC,GAED,SACEA,mBAAmB,QAEd,wBAAoB;AAC3B,SACEC,kCAAkC,EAClCC,gBAAgB,EAEhBC,wBAAwB,QACnB,6BAAyB;AAChC,SAASC,2BAA2B,QAAQ,wBAAoB;AAChE,SAASC,wBAAwB,QAAQ,uBAAmB;AAE5D;;;;;;;;CAQC,GACD,OAAO,SAASC;IACd,OAAO;QACLC,MAAMC,QAAQC,GAAG,CAACC,yBAAyB,IAAI;QAC/C,wEAAwE;QACxE,yEAAyE;QACzE,yEAAyE;QACzE,0DAA0D;QAC1D,cAAcF,QAAQC,GAAG,CAACE,6BAA6B,IAAI;QAC3DC,UAAUJ,QAAQC,GAAG,CAACI,+BAA+B,IAAI;IAC3D;AACF;AAEA,2EAA2E,GAC3E,OAAO,SAASC;IACd,OAAON,QAAQC,GAAG,CAACM,4BAA4B,IAAI;AACrD;AAEA;;;;;;;;;;;;;;;;;;;;;;CAsBC,GACD,OAAO,SAASC,+BACdC,kBAA2B,EAC3BC,MAA8BZ,sBAAsB,EACpDG,MAA4BN,0BAA0B,EACtDgB,WAAoBf,6BAA6B;IAEjD,IAAIa,uBAAuB,MAAM,OAAO,EAAE;IAC1C,IAAIf,iBAAiBO,SAAS,OAAO,OAAO,EAAE;IAC9C,0EAA0E;IAC1E,yEAAyE;IACzE,0EAA0E;IAC1E,qEAAqE;IACrE,2EAA2E;IAC3E,sEAAsE;IACtE,0EAA0E;IAC1E,2EAA2E;IAC3E,6CAA6C;IAC7C,EAAE;IACF,uEAAuE;IACvE,yEAAyE;IACzE,4CAA4C;IAC5C,IAAIU,aAAa,MAAM,OAAO,EAAE;IAChC,yEAAyE;IACzE,qEAAqE;IACrE,IAAIlB,mCAAmCQ,SAAS,MAAM,OAAO,EAAE;IAC/D,MAAMW,OAAiC,EAAE;IACzC,KAAK,MAAMC,UAAUrB,oBAAqB;YAKfkB;QAJzB,wEAAwE;QACxE,0EAA0E;QAC1E,4CAA4C;QAC5C,IAAIG,OAAOC,SAAS,IAAI,CAACD,OAAOE,gBAAgB,EAAE;QAClD,MAAMC,YAAYC,QAAOP,iBAAAA,GAAG,CAACG,OAAOK,EAAE,CAAC,YAAdR,iBAAkB;QAC3C,sEAAsE;QACtE,sEAAsE;QACtE,qDAAqD;QACrD,IAAIG,OAAOE,gBAAgB,CAACI,IAAI,CAACH,YAAY;YAC3CJ,KAAKQ,IAAI,CAAC;gBAAEP;gBAAQG;YAAU;QAChC;IACF;IACA,OAAOJ;AACT;AAEA;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BC,GACD,OAAO,SAASS,8BACdC,gBAAyB,EACzBC,cAAsBjB,4BAA4B,EAClDL,MAA4BN,0BAA0B,EACtDgB,WAAoBf,6BAA6B;IAEjD,IAAI0B,qBAAqB,MAAM,OAAO;IACtC,IAAI5B,iBAAiBO,SAAS,OAAO,OAAO;IAC5C,2EAA2E;IAC3E,2EAA2E;IAC3E,0EAA0E;IAC1E,wCAAwC;IACxC,IAAIU,aAAa,MAAM,OAAO;IAC9B,IAAIlB,mCAAmCQ,SAAS,MAAM,OAAO;IAC7D,MAAMuB,YAAYP,OAAOM,sBAAAA,cAAe,IAAIE,IAAI;IAChD,2EAA2E;IAC3E,oCAAoC;IACpC,OAAO5B,yBAAyBsB,IAAI,CAACK,aAAaA,YAAY;AAChE;AAEA;;;;;;;;;;;;;;CAcC,GACD,OAAO,SAASE;IACd,OACE,2CACA,gDACA;AAEJ;AAEA,iDAAiD,GACjD,OAAO,SAASC,qBAAqBJ,WAAmB;IACtD,OAAO,CAAC,2CAA2C,EAAEA,aAAa;AACpE"}
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* The product name, as shown to end users.
|
|
19
|
+
*
|
|
20
|
+
* This is the browser-tab affix, the PWA name, the WebAuthn relying-party name
|
|
21
|
+
* the OS credential prompt displays, the `<meta name="generator">` and
|
|
22
|
+
* `x-powered-by` on published sites, and the platform default `productName` /
|
|
23
|
+
* `fromName` every non-white-label org's surfaces resolve to.
|
|
24
|
+
*/
|
|
25
|
+
export declare const PLATFORM_BRAND_NAME: string;
|
|
26
|
+
/**
|
|
27
|
+
* The legal entity operating the software's own cloud, for copy that needs a
|
|
28
|
+
* company rather than a product (`BRAND.ORG_NAME_LEGAL`).
|
|
29
|
+
*
|
|
30
|
+
* NOT the same thing as `operatorIdentity().name`, and the distinction matters.
|
|
31
|
+
* This is a *brand* string with a visible default; that one is the identity a
|
|
32
|
+
* statutory notice is addressed to and refuses to default. An operator who
|
|
33
|
+
* sets only this has renamed the product, not published who they are.
|
|
34
|
+
*/
|
|
35
|
+
export declare const PLATFORM_BRAND_LEGAL_NAME: string;
|
|
36
|
+
/**
|
|
37
|
+
* Where a "need help?" line points.
|
|
38
|
+
*
|
|
39
|
+
* Falls through the operator's OWN support address before it falls back to
|
|
40
|
+
* ours, deliberately: an operator who followed the runbook has already set
|
|
41
|
+
* `NEXT_PUBLIC_OPERATOR_SUPPORT_EMAIL`, and making them discover a second
|
|
42
|
+
* variable to stop pointing their customers at Aglyn's support desk — which
|
|
43
|
+
* cannot help those customers with anything — is a trap dressed as a default.
|
|
44
|
+
*
|
|
45
|
+
* Read here rather than imported from `operator-identity.ts` so this module
|
|
46
|
+
* stays dependency-free and safe to import from anywhere, including the places
|
|
47
|
+
* that cannot take the operator module's weight.
|
|
48
|
+
*/
|
|
49
|
+
export declare const PLATFORM_SUPPORT_URL: string;
|
|
50
|
+
/** True when this deployment still answers to Aglyn's own brand. */
|
|
51
|
+
export declare const isAglynOperatedBrand: () => boolean;
|
|
52
|
+
/**
|
|
53
|
+
* Where the platform's own front door is — the marketing home, not the help
|
|
54
|
+
* desk.
|
|
55
|
+
*
|
|
56
|
+
* ## Why this is not `PLATFORM_SUPPORT_URL`
|
|
57
|
+
*
|
|
58
|
+
* The "Made with …" badge on a published free-tier site used to link to
|
|
59
|
+
* `supportUrl`, and on this deployment `supportUrl` falls through to
|
|
60
|
+
* `mailto:` + the operator support address. So the one link the platform gets
|
|
61
|
+
* on every free customer's site — its only organic acquisition surface —
|
|
62
|
+
* opened the visitor's mail client addressed to our support desk. A visitor
|
|
63
|
+
* who liked the site and clicked to find out what built it got a blank email,
|
|
64
|
+
* and support got the misdirected replies.
|
|
65
|
+
*
|
|
66
|
+
* They are genuinely different destinations. `supportUrl` answers "I am a
|
|
67
|
+
* customer and something is wrong"; this answers "what is this, and can I have
|
|
68
|
+
* one". Keeping one value for both guarantees one of them is wrong.
|
|
69
|
+
*
|
|
70
|
+
* ## Why it is null rather than aglyn.com off-brand
|
|
71
|
+
*
|
|
72
|
+
* A self-hosted deployment that renamed the product but set no home URL has
|
|
73
|
+
* nowhere honest to send that visitor: "Made with Foo" pointing at aglyn.com
|
|
74
|
+
* advertises the wrong company on Foo's customers' sites. The badge already
|
|
75
|
+
* renders as a plain label when it has no destination (AGL-2428), which is the
|
|
76
|
+
* correct outcome — so the Aglyn default applies only while this really is the
|
|
77
|
+
* Aglyn-operated brand.
|
|
78
|
+
*/
|
|
79
|
+
export declare const PLATFORM_HOME_URL: string | null;
|
|
80
|
+
/**
|
|
81
|
+
* The platform's own logo MARK — the compact, square, no-wordmark form — as a
|
|
82
|
+
* URL an `<img>` on a PUBLISHED SITE can load.
|
|
83
|
+
*
|
|
84
|
+
* Site-relative on purpose: every app that renders it serves
|
|
85
|
+
* `public/_static/…` from its own origin, so one path works on
|
|
86
|
+
* `{sub}.aglyn.app` and on a customer's custom domain alike without knowing
|
|
87
|
+
* either. The white variant is the one that survives the badge's dark pill and
|
|
88
|
+
* an org's `primaryColor` behind it.
|
|
89
|
+
*
|
|
90
|
+
* Null unless this is the Aglyn-operated brand, for the same reason as
|
|
91
|
+
* {@link PLATFORM_HOME_URL}: a renamed deployment must not stamp our mark on
|
|
92
|
+
* its customers' sites. Such an operator sets `NEXT_PUBLIC_PLATFORM_MARK_URL`
|
|
93
|
+
* to their own, or gets a text-only badge.
|
|
94
|
+
*/
|
|
95
|
+
export declare const PLATFORM_MARK_URL: string | null;
|
|
96
|
+
/**
|
|
97
|
+
* A branding profile with every field present — what a branded surface
|
|
98
|
+
* renders. Image/color/domain fields are nullable (Aglyn's own surfaces
|
|
99
|
+
* bake those in rather than carry a URL); the remaining text fields always
|
|
100
|
+
* have a value so callers never string-concatenate `undefined`.
|
|
101
|
+
*
|
|
102
|
+
* `supportUrl` is nullable too, and it is the one field where null carries a
|
|
103
|
+
* decision rather than an absence — see {@link resolveBrandingProfile}. A
|
|
104
|
+
* caller must render NOTHING for it, never a placeholder and never a
|
|
105
|
+
* substitute.
|
|
106
|
+
*/
|
|
107
|
+
export interface ResolvedBrandingProfile {
|
|
108
|
+
productName: string;
|
|
109
|
+
logoUrl: string | null;
|
|
110
|
+
faviconUrl: string | null;
|
|
111
|
+
primaryColor: string | null;
|
|
112
|
+
supportUrl: string | null;
|
|
113
|
+
/**
|
|
114
|
+
* The brand's own FRONT DOOR — where "Made with <product>" sends a visitor
|
|
115
|
+
* who wants to know what built the site they are looking at.
|
|
116
|
+
*
|
|
117
|
+
* Deliberately separate from {@link ResolvedBrandingProfile.supportUrl},
|
|
118
|
+
* which the badge used to borrow: a help-desk address is the wrong answer to
|
|
119
|
+
* "what is this", and on this deployment it resolves to a `mailto:`, so the
|
|
120
|
+
* badge opened a blank email instead of a web page.
|
|
121
|
+
*
|
|
122
|
+
* Nullable for the same reason `supportUrl` is — a brand with nowhere to
|
|
123
|
+
* send that visitor gets a plain label, never a substitute destination.
|
|
124
|
+
*/
|
|
125
|
+
homeUrl: string | null;
|
|
126
|
+
fromName: string;
|
|
127
|
+
emailLogoUrl: string | null;
|
|
128
|
+
customConsoleDomain: string | null;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* The PLATFORM (non-white-label) brand — the fallback every surface gets when
|
|
132
|
+
* an org lacks the `whiteLabel` entitlement, and the gap-filler for a partial
|
|
133
|
+
* agency profile.
|
|
134
|
+
*
|
|
135
|
+
* It lives beside the literals it is assembled from rather than beside the
|
|
136
|
+
* entitlement gate that hands it out, and that placement is load-bearing
|
|
137
|
+
* rather than tidying. A published tenant page renders the attribution badge
|
|
138
|
+
* from this constant and reads nothing else out of `plan-entitlements.ts`;
|
|
139
|
+
* defining it there put that module's whole plan, quota and entitlement table
|
|
140
|
+
* — the single largest first-party module a visitor could reach — into the
|
|
141
|
+
* first load of every anonymous visitor to every customer site.
|
|
142
|
+
* `plan-entitlements.ts` re-exports it, so every existing caller is unchanged.
|
|
143
|
+
*
|
|
144
|
+
* The name says the PLATFORM's brand rather than Aglyn's because on a
|
|
145
|
+
* self-host install that assertion stops being true: which platform this is,
|
|
146
|
+
* is configuration. `resolveBrandingProfile` is the single resolver EVERY
|
|
147
|
+
* branded surface routes through — console chrome, published-site badge and
|
|
148
|
+
* title, transactional email — and this is its fallback, so all of them get a
|
|
149
|
+
* self-host brand without extending the white-label machinery at all.
|
|
150
|
+
*/
|
|
151
|
+
export declare const PLATFORM_BRANDING_PROFILE: ResolvedBrandingProfile;
|
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
var _clean, _clean1, _clean2, _clean3;
|
|
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
|
+
* What this deployment calls itself (AGL-2153).
|
|
19
|
+
*
|
|
20
|
+
* the rule for the self-host path: *"the self hosted owner should not have
|
|
21
|
+
* to edit the source to update aglyn branded items urls or personal
|
|
22
|
+
* identification items, should move these to env vars"*. AGL-2016 did that for
|
|
23
|
+
* the values where getting it wrong misroutes a legal notice. This is the
|
|
24
|
+
* other half — the product name itself, which was a bare `'Aglyn'` literal in
|
|
25
|
+
* nine places.
|
|
26
|
+
*
|
|
27
|
+
* ## Why one module rather than nine reads
|
|
28
|
+
*
|
|
29
|
+
* The literals were not merely duplicated, they were duplicated across a
|
|
30
|
+
* boundary: `PLATFORM_GENERATOR_NAME` exists here AND as a hand-copied
|
|
31
|
+
* constant in `apps/tenant/middleware.ts`, because the edge bundle cannot
|
|
32
|
+
* import this lib. A single source they both read is what stops the copy from
|
|
33
|
+
* drifting into a deployment that half-renames itself.
|
|
34
|
+
*
|
|
35
|
+
* ## Why a default at all, when operator-identity.ts refuses to have one
|
|
36
|
+
*
|
|
37
|
+
* `operator-identity.ts` sets out the rule and it is the right one: a value
|
|
38
|
+
* whose wrongness is invisible to the operator and visible only off-site must
|
|
39
|
+
* not be guessed. The brand is the opposite case. An operator who does not set
|
|
40
|
+
* it sees "Aglyn" in their own browser tab on their own first page load, in
|
|
41
|
+
* their own console. That is a default they can see and correct, which is a
|
|
42
|
+
* default rather than a trap — the same test AGL-2022 applied to the tenant
|
|
43
|
+
* apex.
|
|
44
|
+
*
|
|
45
|
+
* ## Why `NEXT_PUBLIC_`, and why dot notation is load-bearing
|
|
46
|
+
*
|
|
47
|
+
* The brand is printed to the public — that is what it is for — so
|
|
48
|
+
* `NEXT_PUBLIC_` carries no disclosure risk. Next inlines `NEXT_PUBLIC_*` into
|
|
49
|
+
* the browser bundle by textually substituting `process.env.NAME`; the
|
|
50
|
+
* **bracket** form is never substituted and reads `undefined` in the browser
|
|
51
|
+
* (AGL-2037). Every read below is dot notation on purpose.
|
|
52
|
+
*
|
|
53
|
+
* Build-time consequence for self-hosters: these are baked in when the image
|
|
54
|
+
* is built, so they must be set *before* `docker compose build`, not merely
|
|
55
|
+
* before `up`. `docs/SELF_HOSTING.md` says so.
|
|
56
|
+
*/ /** A non-empty trimmed string, else undefined — `' '` is a half-finished `.env`. */ const clean = (value)=>{
|
|
57
|
+
const text = typeof value === 'string' ? value.trim() : '';
|
|
58
|
+
return text.length ? text : undefined;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* The product name, as shown to end users.
|
|
62
|
+
*
|
|
63
|
+
* This is the browser-tab affix, the PWA name, the WebAuthn relying-party name
|
|
64
|
+
* the OS credential prompt displays, the `<meta name="generator">` and
|
|
65
|
+
* `x-powered-by` on published sites, and the platform default `productName` /
|
|
66
|
+
* `fromName` every non-white-label org's surfaces resolve to.
|
|
67
|
+
*/ export const PLATFORM_BRAND_NAME = (_clean = clean(process.env.NEXT_PUBLIC_PLATFORM_BRAND_NAME)) != null ? _clean : 'Aglyn';
|
|
68
|
+
/**
|
|
69
|
+
* The legal entity operating the software's own cloud, for copy that needs a
|
|
70
|
+
* company rather than a product (`BRAND.ORG_NAME_LEGAL`).
|
|
71
|
+
*
|
|
72
|
+
* NOT the same thing as `operatorIdentity().name`, and the distinction matters.
|
|
73
|
+
* This is a *brand* string with a visible default; that one is the identity a
|
|
74
|
+
* statutory notice is addressed to and refuses to default. An operator who
|
|
75
|
+
* sets only this has renamed the product, not published who they are.
|
|
76
|
+
*/ export const PLATFORM_BRAND_LEGAL_NAME = (_clean1 = clean(process.env.NEXT_PUBLIC_PLATFORM_BRAND_LEGAL_NAME)) != null ? _clean1 : `${PLATFORM_BRAND_NAME} LLC`;
|
|
77
|
+
/**
|
|
78
|
+
* Where a "need help?" line points.
|
|
79
|
+
*
|
|
80
|
+
* Falls through the operator's OWN support address before it falls back to
|
|
81
|
+
* ours, deliberately: an operator who followed the runbook has already set
|
|
82
|
+
* `NEXT_PUBLIC_OPERATOR_SUPPORT_EMAIL`, and making them discover a second
|
|
83
|
+
* variable to stop pointing their customers at Aglyn's support desk — which
|
|
84
|
+
* cannot help those customers with anything — is a trap dressed as a default.
|
|
85
|
+
*
|
|
86
|
+
* Read here rather than imported from `operator-identity.ts` so this module
|
|
87
|
+
* stays dependency-free and safe to import from anywhere, including the places
|
|
88
|
+
* that cannot take the operator module's weight.
|
|
89
|
+
*/ export const PLATFORM_SUPPORT_URL = (()=>{
|
|
90
|
+
const configured = clean(process.env.NEXT_PUBLIC_PLATFORM_SUPPORT_URL);
|
|
91
|
+
if (configured) return configured;
|
|
92
|
+
const operatorEmail = clean(process.env.NEXT_PUBLIC_OPERATOR_SUPPORT_EMAIL);
|
|
93
|
+
if (operatorEmail) return `mailto:${operatorEmail}`;
|
|
94
|
+
return 'https://aglyn.com/support';
|
|
95
|
+
})();
|
|
96
|
+
/** True when this deployment still answers to Aglyn's own brand. */ export const isAglynOperatedBrand = ()=>PLATFORM_BRAND_NAME === 'Aglyn';
|
|
97
|
+
/**
|
|
98
|
+
* Where the platform's own front door is — the marketing home, not the help
|
|
99
|
+
* desk.
|
|
100
|
+
*
|
|
101
|
+
* ## Why this is not `PLATFORM_SUPPORT_URL`
|
|
102
|
+
*
|
|
103
|
+
* The "Made with …" badge on a published free-tier site used to link to
|
|
104
|
+
* `supportUrl`, and on this deployment `supportUrl` falls through to
|
|
105
|
+
* `mailto:` + the operator support address. So the one link the platform gets
|
|
106
|
+
* on every free customer's site — its only organic acquisition surface —
|
|
107
|
+
* opened the visitor's mail client addressed to our support desk. A visitor
|
|
108
|
+
* who liked the site and clicked to find out what built it got a blank email,
|
|
109
|
+
* and support got the misdirected replies.
|
|
110
|
+
*
|
|
111
|
+
* They are genuinely different destinations. `supportUrl` answers "I am a
|
|
112
|
+
* customer and something is wrong"; this answers "what is this, and can I have
|
|
113
|
+
* one". Keeping one value for both guarantees one of them is wrong.
|
|
114
|
+
*
|
|
115
|
+
* ## Why it is null rather than aglyn.com off-brand
|
|
116
|
+
*
|
|
117
|
+
* A self-hosted deployment that renamed the product but set no home URL has
|
|
118
|
+
* nowhere honest to send that visitor: "Made with Foo" pointing at aglyn.com
|
|
119
|
+
* advertises the wrong company on Foo's customers' sites. The badge already
|
|
120
|
+
* renders as a plain label when it has no destination (AGL-2428), which is the
|
|
121
|
+
* correct outcome — so the Aglyn default applies only while this really is the
|
|
122
|
+
* Aglyn-operated brand.
|
|
123
|
+
*/ export const PLATFORM_HOME_URL = (_clean2 = clean(process.env.NEXT_PUBLIC_PLATFORM_HOME_URL)) != null ? _clean2 : isAglynOperatedBrand() ? 'https://aglyn.com' : null;
|
|
124
|
+
/**
|
|
125
|
+
* The platform's own logo MARK — the compact, square, no-wordmark form — as a
|
|
126
|
+
* URL an `<img>` on a PUBLISHED SITE can load.
|
|
127
|
+
*
|
|
128
|
+
* Site-relative on purpose: every app that renders it serves
|
|
129
|
+
* `public/_static/…` from its own origin, so one path works on
|
|
130
|
+
* `{sub}.aglyn.app` and on a customer's custom domain alike without knowing
|
|
131
|
+
* either. The white variant is the one that survives the badge's dark pill and
|
|
132
|
+
* an org's `primaryColor` behind it.
|
|
133
|
+
*
|
|
134
|
+
* Null unless this is the Aglyn-operated brand, for the same reason as
|
|
135
|
+
* {@link PLATFORM_HOME_URL}: a renamed deployment must not stamp our mark on
|
|
136
|
+
* its customers' sites. Such an operator sets `NEXT_PUBLIC_PLATFORM_MARK_URL`
|
|
137
|
+
* to their own, or gets a text-only badge.
|
|
138
|
+
*/ export const PLATFORM_MARK_URL = (_clean3 = clean(process.env.NEXT_PUBLIC_PLATFORM_MARK_URL)) != null ? _clean3 : isAglynOperatedBrand() ? '/_static/images/brand/aglyn-logo-mark-white.svg' : null;
|
|
139
|
+
/**
|
|
140
|
+
* The PLATFORM (non-white-label) brand — the fallback every surface gets when
|
|
141
|
+
* an org lacks the `whiteLabel` entitlement, and the gap-filler for a partial
|
|
142
|
+
* agency profile.
|
|
143
|
+
*
|
|
144
|
+
* It lives beside the literals it is assembled from rather than beside the
|
|
145
|
+
* entitlement gate that hands it out, and that placement is load-bearing
|
|
146
|
+
* rather than tidying. A published tenant page renders the attribution badge
|
|
147
|
+
* from this constant and reads nothing else out of `plan-entitlements.ts`;
|
|
148
|
+
* defining it there put that module's whole plan, quota and entitlement table
|
|
149
|
+
* — the single largest first-party module a visitor could reach — into the
|
|
150
|
+
* first load of every anonymous visitor to every customer site.
|
|
151
|
+
* `plan-entitlements.ts` re-exports it, so every existing caller is unchanged.
|
|
152
|
+
*
|
|
153
|
+
* The name says the PLATFORM's brand rather than Aglyn's because on a
|
|
154
|
+
* self-host install that assertion stops being true: which platform this is,
|
|
155
|
+
* is configuration. `resolveBrandingProfile` is the single resolver EVERY
|
|
156
|
+
* branded surface routes through — console chrome, published-site badge and
|
|
157
|
+
* title, transactional email — and this is its fallback, so all of them get a
|
|
158
|
+
* self-host brand without extending the white-label machinery at all.
|
|
159
|
+
*/ export const PLATFORM_BRANDING_PROFILE = {
|
|
160
|
+
productName: PLATFORM_BRAND_NAME,
|
|
161
|
+
// The platform's own surfaces still bake their logo in — this is here for
|
|
162
|
+
// the surfaces that CANNOT, which is every surface rendered on somebody
|
|
163
|
+
// else's site. The free-tier attribution badge is the one that exists
|
|
164
|
+
// today, and it carried no mark at all while this was null.
|
|
165
|
+
logoUrl: PLATFORM_MARK_URL,
|
|
166
|
+
faviconUrl: null,
|
|
167
|
+
primaryColor: null,
|
|
168
|
+
supportUrl: PLATFORM_SUPPORT_URL,
|
|
169
|
+
homeUrl: PLATFORM_HOME_URL,
|
|
170
|
+
fromName: PLATFORM_BRAND_NAME,
|
|
171
|
+
emailLogoUrl: null,
|
|
172
|
+
customConsoleDomain: null
|
|
173
|
+
};
|
|
174
|
+
|
|
175
|
+
//# sourceMappingURL=platform-brand.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/platform-brand.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * What this deployment calls itself (AGL-2153).\n *\n * the rule for the self-host path: *\"the self hosted owner should not have\n * to edit the source to update aglyn branded items urls or personal\n * identification items, should move these to env vars\"*. AGL-2016 did that for\n * the values where getting it wrong misroutes a legal notice. This is the\n * other half — the product name itself, which was a bare `'Aglyn'` literal in\n * nine places.\n *\n * ## Why one module rather than nine reads\n *\n * The literals were not merely duplicated, they were duplicated across a\n * boundary: `PLATFORM_GENERATOR_NAME` exists here AND as a hand-copied\n * constant in `apps/tenant/middleware.ts`, because the edge bundle cannot\n * import this lib. A single source they both read is what stops the copy from\n * drifting into a deployment that half-renames itself.\n *\n * ## Why a default at all, when operator-identity.ts refuses to have one\n *\n * `operator-identity.ts` sets out the rule and it is the right one: a value\n * whose wrongness is invisible to the operator and visible only off-site must\n * not be guessed. The brand is the opposite case. An operator who does not set\n * it sees \"Aglyn\" in their own browser tab on their own first page load, in\n * their own console. That is a default they can see and correct, which is a\n * default rather than a trap — the same test AGL-2022 applied to the tenant\n * apex.\n *\n * ## Why `NEXT_PUBLIC_`, and why dot notation is load-bearing\n *\n * The brand is printed to the public — that is what it is for — so\n * `NEXT_PUBLIC_` carries no disclosure risk. Next inlines `NEXT_PUBLIC_*` into\n * the browser bundle by textually substituting `process.env.NAME`; the\n * **bracket** form is never substituted and reads `undefined` in the browser\n * (AGL-2037). Every read below is dot notation on purpose.\n *\n * Build-time consequence for self-hosters: these are baked in when the image\n * is built, so they must be set *before* `docker compose build`, not merely\n * before `up`. `docs/SELF_HOSTING.md` says so.\n */\n\n/** A non-empty trimmed string, else undefined — `' '` is a half-finished `.env`. */\nconst clean = (value: unknown): string | undefined => {\n const text = typeof value === 'string' ? value.trim() : ''\n return text.length ? text : undefined\n}\n\n/**\n * The product name, as shown to end users.\n *\n * This is the browser-tab affix, the PWA name, the WebAuthn relying-party name\n * the OS credential prompt displays, the `<meta name=\"generator\">` and\n * `x-powered-by` on published sites, and the platform default `productName` /\n * `fromName` every non-white-label org's surfaces resolve to.\n */\nexport const PLATFORM_BRAND_NAME =\n clean(process.env.NEXT_PUBLIC_PLATFORM_BRAND_NAME) ?? 'Aglyn'\n\n/**\n * The legal entity operating the software's own cloud, for copy that needs a\n * company rather than a product (`BRAND.ORG_NAME_LEGAL`).\n *\n * NOT the same thing as `operatorIdentity().name`, and the distinction matters.\n * This is a *brand* string with a visible default; that one is the identity a\n * statutory notice is addressed to and refuses to default. An operator who\n * sets only this has renamed the product, not published who they are.\n */\nexport const PLATFORM_BRAND_LEGAL_NAME =\n clean(process.env.NEXT_PUBLIC_PLATFORM_BRAND_LEGAL_NAME) ??\n `${PLATFORM_BRAND_NAME} LLC`\n\n/**\n * Where a \"need help?\" line points.\n *\n * Falls through the operator's OWN support address before it falls back to\n * ours, deliberately: an operator who followed the runbook has already set\n * `NEXT_PUBLIC_OPERATOR_SUPPORT_EMAIL`, and making them discover a second\n * variable to stop pointing their customers at Aglyn's support desk — which\n * cannot help those customers with anything — is a trap dressed as a default.\n *\n * Read here rather than imported from `operator-identity.ts` so this module\n * stays dependency-free and safe to import from anywhere, including the places\n * that cannot take the operator module's weight.\n */\nexport const PLATFORM_SUPPORT_URL: string = (() => {\n const configured = clean(process.env.NEXT_PUBLIC_PLATFORM_SUPPORT_URL)\n if (configured) return configured\n const operatorEmail = clean(process.env.NEXT_PUBLIC_OPERATOR_SUPPORT_EMAIL)\n if (operatorEmail) return `mailto:${operatorEmail}`\n return 'https://aglyn.com/support'\n})()\n\n/** True when this deployment still answers to Aglyn's own brand. */\nexport const isAglynOperatedBrand = (): boolean =>\n PLATFORM_BRAND_NAME === 'Aglyn'\n\n/**\n * Where the platform's own front door is — the marketing home, not the help\n * desk.\n *\n * ## Why this is not `PLATFORM_SUPPORT_URL`\n *\n * The \"Made with …\" badge on a published free-tier site used to link to\n * `supportUrl`, and on this deployment `supportUrl` falls through to\n * `mailto:` + the operator support address. So the one link the platform gets\n * on every free customer's site — its only organic acquisition surface —\n * opened the visitor's mail client addressed to our support desk. A visitor\n * who liked the site and clicked to find out what built it got a blank email,\n * and support got the misdirected replies.\n *\n * They are genuinely different destinations. `supportUrl` answers \"I am a\n * customer and something is wrong\"; this answers \"what is this, and can I have\n * one\". Keeping one value for both guarantees one of them is wrong.\n *\n * ## Why it is null rather than aglyn.com off-brand\n *\n * A self-hosted deployment that renamed the product but set no home URL has\n * nowhere honest to send that visitor: \"Made with Foo\" pointing at aglyn.com\n * advertises the wrong company on Foo's customers' sites. The badge already\n * renders as a plain label when it has no destination (AGL-2428), which is the\n * correct outcome — so the Aglyn default applies only while this really is the\n * Aglyn-operated brand.\n */\nexport const PLATFORM_HOME_URL: string | null =\n clean(process.env.NEXT_PUBLIC_PLATFORM_HOME_URL) ??\n (isAglynOperatedBrand() ? 'https://aglyn.com' : null)\n\n/**\n * The platform's own logo MARK — the compact, square, no-wordmark form — as a\n * URL an `<img>` on a PUBLISHED SITE can load.\n *\n * Site-relative on purpose: every app that renders it serves\n * `public/_static/…` from its own origin, so one path works on\n * `{sub}.aglyn.app` and on a customer's custom domain alike without knowing\n * either. The white variant is the one that survives the badge's dark pill and\n * an org's `primaryColor` behind it.\n *\n * Null unless this is the Aglyn-operated brand, for the same reason as\n * {@link PLATFORM_HOME_URL}: a renamed deployment must not stamp our mark on\n * its customers' sites. Such an operator sets `NEXT_PUBLIC_PLATFORM_MARK_URL`\n * to their own, or gets a text-only badge.\n */\nexport const PLATFORM_MARK_URL: string | null =\n clean(process.env.NEXT_PUBLIC_PLATFORM_MARK_URL) ??\n (isAglynOperatedBrand()\n ? '/_static/images/brand/aglyn-logo-mark-white.svg'\n : null)\n\n/**\n * A branding profile with every field present — what a branded surface\n * renders. Image/color/domain fields are nullable (Aglyn's own surfaces\n * bake those in rather than carry a URL); the remaining text fields always\n * have a value so callers never string-concatenate `undefined`.\n *\n * `supportUrl` is nullable too, and it is the one field where null carries a\n * decision rather than an absence — see {@link resolveBrandingProfile}. A\n * caller must render NOTHING for it, never a placeholder and never a\n * substitute.\n */\nexport interface ResolvedBrandingProfile {\n productName: string\n logoUrl: string | null\n faviconUrl: string | null\n primaryColor: string | null\n supportUrl: string | null\n /**\n * The brand's own FRONT DOOR — where \"Made with <product>\" sends a visitor\n * who wants to know what built the site they are looking at.\n *\n * Deliberately separate from {@link ResolvedBrandingProfile.supportUrl},\n * which the badge used to borrow: a help-desk address is the wrong answer to\n * \"what is this\", and on this deployment it resolves to a `mailto:`, so the\n * badge opened a blank email instead of a web page.\n *\n * Nullable for the same reason `supportUrl` is — a brand with nowhere to\n * send that visitor gets a plain label, never a substitute destination.\n */\n homeUrl: string | null\n fromName: string\n emailLogoUrl: string | null\n customConsoleDomain: string | null\n}\n\n/**\n * The PLATFORM (non-white-label) brand — the fallback every surface gets when\n * an org lacks the `whiteLabel` entitlement, and the gap-filler for a partial\n * agency profile.\n *\n * It lives beside the literals it is assembled from rather than beside the\n * entitlement gate that hands it out, and that placement is load-bearing\n * rather than tidying. A published tenant page renders the attribution badge\n * from this constant and reads nothing else out of `plan-entitlements.ts`;\n * defining it there put that module's whole plan, quota and entitlement table\n * — the single largest first-party module a visitor could reach — into the\n * first load of every anonymous visitor to every customer site.\n * `plan-entitlements.ts` re-exports it, so every existing caller is unchanged.\n *\n * The name says the PLATFORM's brand rather than Aglyn's because on a\n * self-host install that assertion stops being true: which platform this is,\n * is configuration. `resolveBrandingProfile` is the single resolver EVERY\n * branded surface routes through — console chrome, published-site badge and\n * title, transactional email — and this is its fallback, so all of them get a\n * self-host brand without extending the white-label machinery at all.\n */\nexport const PLATFORM_BRANDING_PROFILE: ResolvedBrandingProfile = {\n productName: PLATFORM_BRAND_NAME,\n // The platform's own surfaces still bake their logo in — this is here for\n // the surfaces that CANNOT, which is every surface rendered on somebody\n // else's site. The free-tier attribution badge is the one that exists\n // today, and it carried no mark at all while this was null.\n logoUrl: PLATFORM_MARK_URL,\n faviconUrl: null,\n primaryColor: null,\n supportUrl: PLATFORM_SUPPORT_URL,\n homeUrl: PLATFORM_HOME_URL,\n fromName: PLATFORM_BRAND_NAME,\n emailLogoUrl: null,\n customConsoleDomain: null,\n}\n"],"names":["clean","value","text","trim","length","undefined","PLATFORM_BRAND_NAME","process","env","NEXT_PUBLIC_PLATFORM_BRAND_NAME","PLATFORM_BRAND_LEGAL_NAME","NEXT_PUBLIC_PLATFORM_BRAND_LEGAL_NAME","PLATFORM_SUPPORT_URL","configured","NEXT_PUBLIC_PLATFORM_SUPPORT_URL","operatorEmail","NEXT_PUBLIC_OPERATOR_SUPPORT_EMAIL","isAglynOperatedBrand","PLATFORM_HOME_URL","NEXT_PUBLIC_PLATFORM_HOME_URL","PLATFORM_MARK_URL","NEXT_PUBLIC_PLATFORM_MARK_URL","PLATFORM_BRANDING_PROFILE","productName","logoUrl","faviconUrl","primaryColor","supportUrl","homeUrl","fromName","emailLogoUrl","customConsoleDomain"],"mappings":"IAyEEA,QAYAA,SAwDAA,SAmBAA;AAhKF;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCC,GAED,oFAAoF,GACpF,MAAMA,QAAQ,CAACC;IACb,MAAMC,OAAO,OAAOD,UAAU,WAAWA,MAAME,IAAI,KAAK;IACxD,OAAOD,KAAKE,MAAM,GAAGF,OAAOG;AAC9B;AAEA;;;;;;;CAOC,GACD,OAAO,MAAMC,uBACXN,SAAAA,MAAMO,QAAQC,GAAG,CAACC,+BAA+B,aAAjDT,SAAsD,QAAO;AAE/D;;;;;;;;CAQC,GACD,OAAO,MAAMU,6BACXV,UAAAA,MAAMO,QAAQC,GAAG,CAACG,qCAAqC,aAAvDX,UACA,GAAGM,oBAAoB,IAAI,CAAC,CAAA;AAE9B;;;;;;;;;;;;CAYC,GACD,OAAO,MAAMM,uBAA+B,AAAC,CAAA;IAC3C,MAAMC,aAAab,MAAMO,QAAQC,GAAG,CAACM,gCAAgC;IACrE,IAAID,YAAY,OAAOA;IACvB,MAAME,gBAAgBf,MAAMO,QAAQC,GAAG,CAACQ,kCAAkC;IAC1E,IAAID,eAAe,OAAO,CAAC,OAAO,EAAEA,eAAe;IACnD,OAAO;AACT,CAAA,IAAI;AAEJ,kEAAkE,GAClE,OAAO,MAAME,uBAAuB,IAClCX,wBAAwB,QAAO;AAEjC;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BC,GACD,OAAO,MAAMY,qBACXlB,UAAAA,MAAMO,QAAQC,GAAG,CAACW,6BAA6B,aAA/CnB,UACCiB,yBAAyB,sBAAsB,KAAK;AAEvD;;;;;;;;;;;;;;CAcC,GACD,OAAO,MAAMG,qBACXpB,UAAAA,MAAMO,QAAQC,GAAG,CAACa,6BAA6B,aAA/CrB,UACCiB,yBACG,oDACA,KAAK;AAqCX;;;;;;;;;;;;;;;;;;;;CAoBC,GACD,OAAO,MAAMK,4BAAqD;IAChEC,aAAajB;IACb,0EAA0E;IAC1E,wEAAwE;IACxE,sEAAsE;IACtE,4DAA4D;IAC5DkB,SAASJ;IACTK,YAAY;IACZC,cAAc;IACdC,YAAYf;IACZgB,SAASV;IACTW,UAAUvB;IACVwB,cAAc;IACdC,qBAAqB;AACvB,EAAC"}
|