@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,70 @@
|
|
|
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 fields of a search listing: what a search result and a share card say
|
|
19
|
+
* about one page or one product, and how long each may be.
|
|
20
|
+
*
|
|
21
|
+
* One catalog, because more than one surface edits these and more than one
|
|
22
|
+
* reader holds them to a length. The screen detail page's SEO card draws its
|
|
23
|
+
* inputs from it, the besigner's SEO panel shares the counts, the commerce
|
|
24
|
+
* product editor labels its search engine listing with it, and anything that
|
|
25
|
+
* proposes a value — a template, an import, a generator — reads the same
|
|
26
|
+
* limits the editor enforces instead of restating them. A limit written in
|
|
27
|
+
* two places is a limit the two places disagree about the first time one of
|
|
28
|
+
* them changes.
|
|
29
|
+
*
|
|
30
|
+
* The lengths are what a search result shows before it truncates: about 60
|
|
31
|
+
* characters of a title and 155 of a description. A breadcrumb label is the
|
|
32
|
+
* page's short name in a trail, so it is held shorter than the title it
|
|
33
|
+
* usually abbreviates. The image description is an `alt`, and takes the
|
|
34
|
+
* platform's one `alt` ceiling.
|
|
35
|
+
*/
|
|
36
|
+
/** Every field a search listing editor may hold. */
|
|
37
|
+
export type SeoListingFieldKey = 'title' | 'description' | 'breadcrumb' | 'imageAlt';
|
|
38
|
+
export interface SeoListingFieldDefinition {
|
|
39
|
+
key: SeoListingFieldKey;
|
|
40
|
+
/** The input's label, as the editors draw it. */
|
|
41
|
+
label: string;
|
|
42
|
+
/** The longest value the editor accepts; a longer one is flagged, not trimmed. */
|
|
43
|
+
maxLength: number;
|
|
44
|
+
/** Drawn as a multi-line input. */
|
|
45
|
+
multiline?: boolean;
|
|
46
|
+
/** What the value is FOR, in a sentence an author or a generator can act on. */
|
|
47
|
+
purpose: string;
|
|
48
|
+
}
|
|
49
|
+
/** A breadcrumb label: the page's short name in a trail. */
|
|
50
|
+
export declare const SEO_BREADCRUMB_MAX_LENGTH = 40;
|
|
51
|
+
export declare const SEO_LISTING_FIELDS: Readonly<Record<SeoListingFieldKey, SeoListingFieldDefinition>>;
|
|
52
|
+
/**
|
|
53
|
+
* The fields the screen detail page's SEO card edits, in the order it draws
|
|
54
|
+
* them. `imageAlt` is the social image's own description and is only editable
|
|
55
|
+
* beside an image, which the card enforces.
|
|
56
|
+
*/
|
|
57
|
+
export declare const SCREEN_SEO_LISTING_FIELDS: readonly SeoListingFieldKey[];
|
|
58
|
+
/**
|
|
59
|
+
* The screen card's plain text inputs: every field but the image's
|
|
60
|
+
* description. The listing's own title and description are the besigner's
|
|
61
|
+
* `SCREEN_SEO_TEXT_FIELDS`; the card adds the breadcrumb label beside them.
|
|
62
|
+
*/
|
|
63
|
+
export declare const SCREEN_SEO_CARD_TEXT_FIELDS: readonly ["title", "description", "breadcrumb"];
|
|
64
|
+
export type ScreenSeoCardTextField = (typeof SCREEN_SEO_CARD_TEXT_FIELDS)[number];
|
|
65
|
+
/** Whether a string names a field of the catalog. */
|
|
66
|
+
export declare function isSeoListingFieldKey(value: unknown): value is SeoListingFieldKey;
|
|
67
|
+
/** A field's counter text, `12/60`, as every editor prints it. */
|
|
68
|
+
export declare function seoListingFieldCount(key: SeoListingFieldKey, value: string | null | undefined): string;
|
|
69
|
+
/** Whether a value is over its field's length. */
|
|
70
|
+
export declare function seoListingFieldTooLong(key: SeoListingFieldKey, value: string | null | undefined): boolean;
|
|
@@ -0,0 +1,75 @@
|
|
|
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
|
+
*/ import { MEDIA_ALT_MAX_LENGTH } from "./media-alt.js";
|
|
17
|
+
import { SCREEN_SEO_TEXT_FIELDS, SCREEN_SEO_TEXT_GUIDANCE } from "./screen-seo-fields.js";
|
|
18
|
+
/** A breadcrumb label: the page's short name in a trail. */ export const SEO_BREADCRUMB_MAX_LENGTH = 40;
|
|
19
|
+
export const SEO_LISTING_FIELDS = {
|
|
20
|
+
title: {
|
|
21
|
+
key: 'title',
|
|
22
|
+
label: 'Title',
|
|
23
|
+
maxLength: SCREEN_SEO_TEXT_GUIDANCE.title,
|
|
24
|
+
purpose: 'The headline of the search result, published exactly as written; the site title is not appended to it.'
|
|
25
|
+
},
|
|
26
|
+
description: {
|
|
27
|
+
key: 'description',
|
|
28
|
+
label: 'Description',
|
|
29
|
+
maxLength: SCREEN_SEO_TEXT_GUIDANCE.description,
|
|
30
|
+
multiline: true,
|
|
31
|
+
purpose: 'The summary a search result shows under the headline.'
|
|
32
|
+
},
|
|
33
|
+
breadcrumb: {
|
|
34
|
+
key: 'breadcrumb',
|
|
35
|
+
label: 'Breadcrumb label',
|
|
36
|
+
maxLength: SEO_BREADCRUMB_MAX_LENGTH,
|
|
37
|
+
purpose: 'The short name of the page where a breadcrumb trail names it.'
|
|
38
|
+
},
|
|
39
|
+
imageAlt: {
|
|
40
|
+
key: 'imageAlt',
|
|
41
|
+
label: 'Image description',
|
|
42
|
+
maxLength: MEDIA_ALT_MAX_LENGTH,
|
|
43
|
+
multiline: true,
|
|
44
|
+
purpose: 'What the social image shows, read aloud in a share preview. It describes the picture, not the page.'
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* The fields the screen detail page's SEO card edits, in the order it draws
|
|
49
|
+
* them. `imageAlt` is the social image's own description and is only editable
|
|
50
|
+
* beside an image, which the card enforces.
|
|
51
|
+
*/ export const SCREEN_SEO_LISTING_FIELDS = [
|
|
52
|
+
'title',
|
|
53
|
+
'description',
|
|
54
|
+
'breadcrumb',
|
|
55
|
+
'imageAlt'
|
|
56
|
+
];
|
|
57
|
+
/**
|
|
58
|
+
* The screen card's plain text inputs: every field but the image's
|
|
59
|
+
* description. The listing's own title and description are the besigner's
|
|
60
|
+
* `SCREEN_SEO_TEXT_FIELDS`; the card adds the breadcrumb label beside them.
|
|
61
|
+
*/ export const SCREEN_SEO_CARD_TEXT_FIELDS = [
|
|
62
|
+
...SCREEN_SEO_TEXT_FIELDS,
|
|
63
|
+
'breadcrumb'
|
|
64
|
+
];
|
|
65
|
+
/** Whether a string names a field of the catalog. */ export function isSeoListingFieldKey(value) {
|
|
66
|
+
return typeof value === 'string' && Object.prototype.hasOwnProperty.call(SEO_LISTING_FIELDS, value);
|
|
67
|
+
}
|
|
68
|
+
/** A field's counter text, `12/60`, as every editor prints it. */ export function seoListingFieldCount(key, value) {
|
|
69
|
+
return `${String(value != null ? value : '').length}/${SEO_LISTING_FIELDS[key].maxLength}`;
|
|
70
|
+
}
|
|
71
|
+
/** Whether a value is over its field's length. */ export function seoListingFieldTooLong(key, value) {
|
|
72
|
+
return String(value != null ? value : '').length > SEO_LISTING_FIELDS[key].maxLength;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
//# sourceMappingURL=seo-listing-fields.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/seo-listing-fields.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\nimport { MEDIA_ALT_MAX_LENGTH } from './media-alt'\nimport { SCREEN_SEO_TEXT_FIELDS, SCREEN_SEO_TEXT_GUIDANCE } from './screen-seo-fields'\n\n/**\n * The fields of a search listing: what a search result and a share card say\n * about one page or one product, and how long each may be.\n *\n * One catalog, because more than one surface edits these and more than one\n * reader holds them to a length. The screen detail page's SEO card draws its\n * inputs from it, the besigner's SEO panel shares the counts, the commerce\n * product editor labels its search engine listing with it, and anything that\n * proposes a value — a template, an import, a generator — reads the same\n * limits the editor enforces instead of restating them. A limit written in\n * two places is a limit the two places disagree about the first time one of\n * them changes.\n *\n * The lengths are what a search result shows before it truncates: about 60\n * characters of a title and 155 of a description. A breadcrumb label is the\n * page's short name in a trail, so it is held shorter than the title it\n * usually abbreviates. The image description is an `alt`, and takes the\n * platform's one `alt` ceiling.\n */\n\n/** Every field a search listing editor may hold. */\nexport type SeoListingFieldKey = 'title' | 'description' | 'breadcrumb' | 'imageAlt'\n\nexport interface SeoListingFieldDefinition {\n key: SeoListingFieldKey\n /** The input's label, as the editors draw it. */\n label: string\n /** The longest value the editor accepts; a longer one is flagged, not trimmed. */\n maxLength: number\n /** Drawn as a multi-line input. */\n multiline?: boolean\n /** What the value is FOR, in a sentence an author or a generator can act on. */\n purpose: string\n}\n\n/** A breadcrumb label: the page's short name in a trail. */\nexport const SEO_BREADCRUMB_MAX_LENGTH = 40\n\nexport const SEO_LISTING_FIELDS: Readonly<Record<SeoListingFieldKey, SeoListingFieldDefinition>> = {\n title: {\n key: 'title',\n label: 'Title',\n maxLength: SCREEN_SEO_TEXT_GUIDANCE.title,\n purpose:\n 'The headline of the search result, published exactly as written; the site title is not appended to it.',\n },\n description: {\n key: 'description',\n label: 'Description',\n maxLength: SCREEN_SEO_TEXT_GUIDANCE.description,\n multiline: true,\n purpose: 'The summary a search result shows under the headline.',\n },\n breadcrumb: {\n key: 'breadcrumb',\n label: 'Breadcrumb label',\n maxLength: SEO_BREADCRUMB_MAX_LENGTH,\n purpose: 'The short name of the page where a breadcrumb trail names it.',\n },\n imageAlt: {\n key: 'imageAlt',\n label: 'Image description',\n maxLength: MEDIA_ALT_MAX_LENGTH,\n multiline: true,\n purpose:\n 'What the social image shows, read aloud in a share preview. It describes the picture, not the page.',\n },\n}\n\n/**\n * The fields the screen detail page's SEO card edits, in the order it draws\n * them. `imageAlt` is the social image's own description and is only editable\n * beside an image, which the card enforces.\n */\nexport const SCREEN_SEO_LISTING_FIELDS: readonly SeoListingFieldKey[] = [\n 'title',\n 'description',\n 'breadcrumb',\n 'imageAlt',\n]\n\n/**\n * The screen card's plain text inputs: every field but the image's\n * description. The listing's own title and description are the besigner's\n * `SCREEN_SEO_TEXT_FIELDS`; the card adds the breadcrumb label beside them.\n */\nexport const SCREEN_SEO_CARD_TEXT_FIELDS = [...SCREEN_SEO_TEXT_FIELDS, 'breadcrumb'] as const\n\nexport type ScreenSeoCardTextField = (typeof SCREEN_SEO_CARD_TEXT_FIELDS)[number]\n\n/** Whether a string names a field of the catalog. */\nexport function isSeoListingFieldKey(value: unknown): value is SeoListingFieldKey {\n return typeof value === 'string' && Object.prototype.hasOwnProperty.call(SEO_LISTING_FIELDS, value)\n}\n\n/** A field's counter text, `12/60`, as every editor prints it. */\nexport function seoListingFieldCount(key: SeoListingFieldKey, value: string | null | undefined): string {\n return `${String(value ?? '').length}/${SEO_LISTING_FIELDS[key].maxLength}`\n}\n\n/** Whether a value is over its field's length. */\nexport function seoListingFieldTooLong(key: SeoListingFieldKey, value: string | null | undefined): boolean {\n return String(value ?? '').length > SEO_LISTING_FIELDS[key].maxLength\n}\n"],"names":["MEDIA_ALT_MAX_LENGTH","SCREEN_SEO_TEXT_FIELDS","SCREEN_SEO_TEXT_GUIDANCE","SEO_BREADCRUMB_MAX_LENGTH","SEO_LISTING_FIELDS","title","key","label","maxLength","purpose","description","multiline","breadcrumb","imageAlt","SCREEN_SEO_LISTING_FIELDS","SCREEN_SEO_CARD_TEXT_FIELDS","isSeoListingFieldKey","value","Object","prototype","hasOwnProperty","call","seoListingFieldCount","String","length","seoListingFieldTooLong"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,oBAAoB,QAAQ,iBAAa;AAClD,SAASC,sBAAsB,EAAEC,wBAAwB,QAAQ,yBAAqB;AAqCtF,0DAA0D,GAC1D,OAAO,MAAMC,4BAA4B,GAAE;AAE3C,OAAO,MAAMC,qBAAsF;IACjGC,OAAO;QACLC,KAAK;QACLC,OAAO;QACPC,WAAWN,yBAAyBG,KAAK;QACzCI,SACE;IACJ;IACAC,aAAa;QACXJ,KAAK;QACLC,OAAO;QACPC,WAAWN,yBAAyBQ,WAAW;QAC/CC,WAAW;QACXF,SAAS;IACX;IACAG,YAAY;QACVN,KAAK;QACLC,OAAO;QACPC,WAAWL;QACXM,SAAS;IACX;IACAI,UAAU;QACRP,KAAK;QACLC,OAAO;QACPC,WAAWR;QACXW,WAAW;QACXF,SACE;IACJ;AACF,EAAC;AAED;;;;CAIC,GACD,OAAO,MAAMK,4BAA2D;IACtE;IACA;IACA;IACA;CACD,CAAA;AAED;;;;CAIC,GACD,OAAO,MAAMC,8BAA8B;OAAId;IAAwB;CAAa,CAAS;AAI7F,mDAAmD,GACnD,OAAO,SAASe,qBAAqBC,KAAc;IACjD,OAAO,OAAOA,UAAU,YAAYC,OAAOC,SAAS,CAACC,cAAc,CAACC,IAAI,CAACjB,oBAAoBa;AAC/F;AAEA,gEAAgE,GAChE,OAAO,SAASK,qBAAqBhB,GAAuB,EAAEW,KAAgC;IAC5F,OAAO,GAAGM,OAAON,gBAAAA,QAAS,IAAIO,MAAM,CAAC,CAAC,EAAEpB,kBAAkB,CAACE,IAAI,CAACE,SAAS,EAAE;AAC7E;AAEA,gDAAgD,GAChD,OAAO,SAASiB,uBAAuBnB,GAAuB,EAAEW,KAAgC;IAC9F,OAAOM,OAAON,gBAAAA,QAAS,IAAIO,MAAM,GAAGpB,kBAAkB,CAACE,IAAI,CAACE,SAAS;AACvE"}
|
|
@@ -0,0 +1,119 @@
|
|
|
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
|
+
* WHAT LANGUAGE A PAGE IS IN, answered once (AGL-3148).
|
|
19
|
+
*
|
|
20
|
+
* Three surfaces need this answer and none of them had it: `og:locale` and
|
|
21
|
+
* `og:locale:alternate` were absent from every page type on the platform,
|
|
22
|
+
* and `inLanguage` was absent from every JSON-LD node. The fourth surface,
|
|
23
|
+
* `<link rel="alternate" hreflang>`, has had its own copy of the fallback
|
|
24
|
+
* since AGL-164.
|
|
25
|
+
*
|
|
26
|
+
* They must agree. A page that declares `en` in its markup, `fr` in its Open
|
|
27
|
+
* Graph and nothing in its structured data has told three readers three
|
|
28
|
+
* things, and the one that matters — which language a searcher should be
|
|
29
|
+
* served — is the one they disagree about. So the chain lives here and every
|
|
30
|
+
* surface reads it.
|
|
31
|
+
*/
|
|
32
|
+
/**
|
|
33
|
+
* The language a page is in when nothing on the site says otherwise.
|
|
34
|
+
*
|
|
35
|
+
* NOT a guess: it is the language the document actually declares. The
|
|
36
|
+
* `lang` attribute is no longer the literal `"en"` it was when this constant
|
|
37
|
+
* was written — `apps/tenant/app/[host]/layout.tsx` resolves it through
|
|
38
|
+
* `resolvePageLocale` and the two host-agnostic boundaries beside the root
|
|
39
|
+
* layout emit THIS value (AGL-3153) — so the coupling now runs the honest
|
|
40
|
+
* way round: the markup takes its answer from here rather than this constant
|
|
41
|
+
* restating a literal somewhere else.
|
|
42
|
+
*
|
|
43
|
+
* That is what keeps `og:locale` safe to emit unconditionally. A page derived
|
|
44
|
+
* from this chain can only ever repeat what the same chain put in the
|
|
45
|
+
* document's own `lang`.
|
|
46
|
+
*
|
|
47
|
+
* ⚠️ Still PINNED to that attribute, in the direction that is now true: this
|
|
48
|
+
* resolver is its SOURCE. A surface that needs a fallback language reads this
|
|
49
|
+
* constant; it never writes a second default of its own, and changing this
|
|
50
|
+
* value changes what every untranslated site declares.
|
|
51
|
+
*
|
|
52
|
+
* ⚠️ `<html lang>` is the SITE's language, not the screen's. A layout is the
|
|
53
|
+
* deepest thing that can render `<html>`, and no layout has the slug the
|
|
54
|
+
* screen is resolved from, so a locale variant's own language reaches the
|
|
55
|
+
* metadata surfaces below — which call this resolver WITH a screen — and not
|
|
56
|
+
* the document element. `apps/tenant/app/[host]/layout.tsx` records why
|
|
57
|
+
* closing that gap would cost the catch-all's ISR window.
|
|
58
|
+
*/
|
|
59
|
+
export declare const PLATFORM_DEFAULT_LOCALE = "en";
|
|
60
|
+
/** The hreflang key for "no locale of its own", as `alternates.languages` spells it. */
|
|
61
|
+
export declare const LOCALE_X_DEFAULT = "x-default";
|
|
62
|
+
/**
|
|
63
|
+
* A language tag, or nothing.
|
|
64
|
+
*
|
|
65
|
+
* Validated rather than trusted: these values reach a `<meta>` and a JSON-LD
|
|
66
|
+
* document, and a locale field is free text in Firestore. An unparseable one
|
|
67
|
+
* is dropped so the chain falls through to the next candidate — a page with a
|
|
68
|
+
* corrupt locale emits the site's language, never the corruption.
|
|
69
|
+
*
|
|
70
|
+
* Accepts `language[-Script][-REGION]` — `en`, `en-GB`, `zh-Hant`,
|
|
71
|
+
* `zh-Hant-TW`, `es-419` — in any casing, and returns it in the canonical
|
|
72
|
+
* BCP-47 casing so two spellings of one locale cannot read as two locales.
|
|
73
|
+
*/
|
|
74
|
+
export declare function normalizeLocaleTag(value: string | null | undefined): string | undefined;
|
|
75
|
+
/** The screen and host fields the language of a page is decided from. */
|
|
76
|
+
export interface PageLocaleSources {
|
|
77
|
+
/** The screen being rendered — its `locale` is the most specific answer. */
|
|
78
|
+
screen?: {
|
|
79
|
+
locale?: string;
|
|
80
|
+
} | null;
|
|
81
|
+
/** The host document — `defaultLocale`, then the first of `locales`. */
|
|
82
|
+
host?: {
|
|
83
|
+
defaultLocale?: string;
|
|
84
|
+
locales?: string[];
|
|
85
|
+
} | null;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The language THIS page is written in.
|
|
89
|
+
*
|
|
90
|
+
* Most specific first: the screen says what it was written in, the site says
|
|
91
|
+
* what it defaults to, and the platform default answers for the sites — today
|
|
92
|
+
* every one of them — that have configured neither.
|
|
93
|
+
*
|
|
94
|
+
* Never returns `undefined`. A page is always in some language, and a reader
|
|
95
|
+
* that finds no answer assumes one anyway; saying which one out loud is
|
|
96
|
+
* strictly more information than leaving it to be guessed.
|
|
97
|
+
*/
|
|
98
|
+
export declare function resolvePageLocale(sources: PageLocaleSources): string;
|
|
99
|
+
/**
|
|
100
|
+
* A language tag in the form Open Graph spells it — `en_GB`, not `en-GB`.
|
|
101
|
+
*
|
|
102
|
+
* The one transformation, kept beside the normalizer so the two forms cannot
|
|
103
|
+
* drift: `alternates.languages` keys stay BCP-47 because that is what
|
|
104
|
+
* `hreflang` takes, and `og:locale` takes the underscore form.
|
|
105
|
+
*/
|
|
106
|
+
export declare function toOpenGraphLocale(value: string | null | undefined): string | undefined;
|
|
107
|
+
/**
|
|
108
|
+
* The OTHER languages this page exists in, as `og:locale:alternate` values.
|
|
109
|
+
*
|
|
110
|
+
* Derived from the very keys that drive `alternates.languages`, deliberately,
|
|
111
|
+
* rather than from the site's configured `locales`: a language reaches that
|
|
112
|
+
* map only once its translated screen resolves to a real routed path, so
|
|
113
|
+
* every value returned here has a page behind it. A site that lists `fr`
|
|
114
|
+
* among its locales but has translated nothing advertises no French card.
|
|
115
|
+
*
|
|
116
|
+
* `x-default` is dropped — it is a routing instruction, not a language — and
|
|
117
|
+
* so is the page's own locale, which `og:locale` already carries.
|
|
118
|
+
*/
|
|
119
|
+
export declare function openGraphAlternateLocales(languageKeys: readonly string[] | null | undefined, pageLocale?: string): string[];
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ /**
|
|
17
|
+
* WHAT LANGUAGE A PAGE IS IN, answered once (AGL-3148).
|
|
18
|
+
*
|
|
19
|
+
* Three surfaces need this answer and none of them had it: `og:locale` and
|
|
20
|
+
* `og:locale:alternate` were absent from every page type on the platform,
|
|
21
|
+
* and `inLanguage` was absent from every JSON-LD node. The fourth surface,
|
|
22
|
+
* `<link rel="alternate" hreflang>`, has had its own copy of the fallback
|
|
23
|
+
* since AGL-164.
|
|
24
|
+
*
|
|
25
|
+
* They must agree. A page that declares `en` in its markup, `fr` in its Open
|
|
26
|
+
* Graph and nothing in its structured data has told three readers three
|
|
27
|
+
* things, and the one that matters — which language a searcher should be
|
|
28
|
+
* served — is the one they disagree about. So the chain lives here and every
|
|
29
|
+
* surface reads it.
|
|
30
|
+
*/ /**
|
|
31
|
+
* The language a page is in when nothing on the site says otherwise.
|
|
32
|
+
*
|
|
33
|
+
* NOT a guess: it is the language the document actually declares. The
|
|
34
|
+
* `lang` attribute is no longer the literal `"en"` it was when this constant
|
|
35
|
+
* was written — `apps/tenant/app/[host]/layout.tsx` resolves it through
|
|
36
|
+
* `resolvePageLocale` and the two host-agnostic boundaries beside the root
|
|
37
|
+
* layout emit THIS value (AGL-3153) — so the coupling now runs the honest
|
|
38
|
+
* way round: the markup takes its answer from here rather than this constant
|
|
39
|
+
* restating a literal somewhere else.
|
|
40
|
+
*
|
|
41
|
+
* That is what keeps `og:locale` safe to emit unconditionally. A page derived
|
|
42
|
+
* from this chain can only ever repeat what the same chain put in the
|
|
43
|
+
* document's own `lang`.
|
|
44
|
+
*
|
|
45
|
+
* ⚠️ Still PINNED to that attribute, in the direction that is now true: this
|
|
46
|
+
* resolver is its SOURCE. A surface that needs a fallback language reads this
|
|
47
|
+
* constant; it never writes a second default of its own, and changing this
|
|
48
|
+
* value changes what every untranslated site declares.
|
|
49
|
+
*
|
|
50
|
+
* ⚠️ `<html lang>` is the SITE's language, not the screen's. A layout is the
|
|
51
|
+
* deepest thing that can render `<html>`, and no layout has the slug the
|
|
52
|
+
* screen is resolved from, so a locale variant's own language reaches the
|
|
53
|
+
* metadata surfaces below — which call this resolver WITH a screen — and not
|
|
54
|
+
* the document element. `apps/tenant/app/[host]/layout.tsx` records why
|
|
55
|
+
* closing that gap would cost the catch-all's ISR window.
|
|
56
|
+
*/ export const PLATFORM_DEFAULT_LOCALE = 'en';
|
|
57
|
+
/** The hreflang key for "no locale of its own", as `alternates.languages` spells it. */ export const LOCALE_X_DEFAULT = 'x-default';
|
|
58
|
+
/**
|
|
59
|
+
* A language tag, or nothing.
|
|
60
|
+
*
|
|
61
|
+
* Validated rather than trusted: these values reach a `<meta>` and a JSON-LD
|
|
62
|
+
* document, and a locale field is free text in Firestore. An unparseable one
|
|
63
|
+
* is dropped so the chain falls through to the next candidate — a page with a
|
|
64
|
+
* corrupt locale emits the site's language, never the corruption.
|
|
65
|
+
*
|
|
66
|
+
* Accepts `language[-Script][-REGION]` — `en`, `en-GB`, `zh-Hant`,
|
|
67
|
+
* `zh-Hant-TW`, `es-419` — in any casing, and returns it in the canonical
|
|
68
|
+
* BCP-47 casing so two spellings of one locale cannot read as two locales.
|
|
69
|
+
*/ export function normalizeLocaleTag(value) {
|
|
70
|
+
if (typeof value !== 'string') return undefined;
|
|
71
|
+
// `_` is the Open Graph separator and `-` the BCP-47 one; a stored value may
|
|
72
|
+
// legitimately arrive in either, and both name the same locale.
|
|
73
|
+
const raw = value.trim().replace(/_/g, '-');
|
|
74
|
+
if (!raw) return undefined;
|
|
75
|
+
const match = /^([A-Za-z]{2,3})(?:-([A-Za-z]{4}))?(?:-([A-Za-z]{2}|[0-9]{3}))?$/.exec(raw);
|
|
76
|
+
if (!match) return undefined;
|
|
77
|
+
const [, language, script, region] = match;
|
|
78
|
+
return [
|
|
79
|
+
language.toLowerCase(),
|
|
80
|
+
script ? script[0].toUpperCase() + script.slice(1).toLowerCase() : undefined,
|
|
81
|
+
region ? region.toUpperCase() : undefined
|
|
82
|
+
].filter(Boolean).join('-');
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The language THIS page is written in.
|
|
86
|
+
*
|
|
87
|
+
* Most specific first: the screen says what it was written in, the site says
|
|
88
|
+
* what it defaults to, and the platform default answers for the sites — today
|
|
89
|
+
* every one of them — that have configured neither.
|
|
90
|
+
*
|
|
91
|
+
* Never returns `undefined`. A page is always in some language, and a reader
|
|
92
|
+
* that finds no answer assumes one anyway; saying which one out loud is
|
|
93
|
+
* strictly more information than leaving it to be guessed.
|
|
94
|
+
*/ export function resolvePageLocale(sources) {
|
|
95
|
+
var _ref, _ref1, _normalizeLocaleTag;
|
|
96
|
+
var _sources_screen, _sources_host, _sources_host_locales, _sources_host1;
|
|
97
|
+
return (_ref = (_ref1 = (_normalizeLocaleTag = normalizeLocaleTag((_sources_screen = sources.screen) == null ? void 0 : _sources_screen.locale)) != null ? _normalizeLocaleTag : normalizeLocaleTag((_sources_host = sources.host) == null ? void 0 : _sources_host.defaultLocale)) != null ? _ref1 : normalizeLocaleTag((_sources_host1 = sources.host) == null ? void 0 : (_sources_host_locales = _sources_host1.locales) == null ? void 0 : _sources_host_locales[0])) != null ? _ref : PLATFORM_DEFAULT_LOCALE;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* A language tag in the form Open Graph spells it — `en_GB`, not `en-GB`.
|
|
101
|
+
*
|
|
102
|
+
* The one transformation, kept beside the normalizer so the two forms cannot
|
|
103
|
+
* drift: `alternates.languages` keys stay BCP-47 because that is what
|
|
104
|
+
* `hreflang` takes, and `og:locale` takes the underscore form.
|
|
105
|
+
*/ export function toOpenGraphLocale(value) {
|
|
106
|
+
const tag = normalizeLocaleTag(value);
|
|
107
|
+
return tag ? tag.replace(/-/g, '_') : undefined;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The OTHER languages this page exists in, as `og:locale:alternate` values.
|
|
111
|
+
*
|
|
112
|
+
* Derived from the very keys that drive `alternates.languages`, deliberately,
|
|
113
|
+
* rather than from the site's configured `locales`: a language reaches that
|
|
114
|
+
* map only once its translated screen resolves to a real routed path, so
|
|
115
|
+
* every value returned here has a page behind it. A site that lists `fr`
|
|
116
|
+
* among its locales but has translated nothing advertises no French card.
|
|
117
|
+
*
|
|
118
|
+
* `x-default` is dropped — it is a routing instruction, not a language — and
|
|
119
|
+
* so is the page's own locale, which `og:locale` already carries.
|
|
120
|
+
*/ export function openGraphAlternateLocales(languageKeys, pageLocale) {
|
|
121
|
+
const own = toOpenGraphLocale(pageLocale);
|
|
122
|
+
const alternates = new Set();
|
|
123
|
+
for (const key of languageKeys != null ? languageKeys : []){
|
|
124
|
+
if (key === LOCALE_X_DEFAULT) continue;
|
|
125
|
+
const tag = toOpenGraphLocale(key);
|
|
126
|
+
if (tag && tag !== own) alternates.add(tag);
|
|
127
|
+
}
|
|
128
|
+
return [
|
|
129
|
+
...alternates
|
|
130
|
+
];
|
|
131
|
+
}
|
|
132
|
+
|
|
133
|
+
//# sourceMappingURL=seo-locale.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/seo-locale.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 LANGUAGE A PAGE IS IN, answered once (AGL-3148).\n *\n * Three surfaces need this answer and none of them had it: `og:locale` and\n * `og:locale:alternate` were absent from every page type on the platform,\n * and `inLanguage` was absent from every JSON-LD node. The fourth surface,\n * `<link rel=\"alternate\" hreflang>`, has had its own copy of the fallback\n * since AGL-164.\n *\n * They must agree. A page that declares `en` in its markup, `fr` in its Open\n * Graph and nothing in its structured data has told three readers three\n * things, and the one that matters — which language a searcher should be\n * served — is the one they disagree about. So the chain lives here and every\n * surface reads it.\n */\n\n/**\n * The language a page is in when nothing on the site says otherwise.\n *\n * NOT a guess: it is the language the document actually declares. The\n * `lang` attribute is no longer the literal `\"en\"` it was when this constant\n * was written — `apps/tenant/app/[host]/layout.tsx` resolves it through\n * `resolvePageLocale` and the two host-agnostic boundaries beside the root\n * layout emit THIS value (AGL-3153) — so the coupling now runs the honest\n * way round: the markup takes its answer from here rather than this constant\n * restating a literal somewhere else.\n *\n * That is what keeps `og:locale` safe to emit unconditionally. A page derived\n * from this chain can only ever repeat what the same chain put in the\n * document's own `lang`.\n *\n * ⚠️ Still PINNED to that attribute, in the direction that is now true: this\n * resolver is its SOURCE. A surface that needs a fallback language reads this\n * constant; it never writes a second default of its own, and changing this\n * value changes what every untranslated site declares.\n *\n * ⚠️ `<html lang>` is the SITE's language, not the screen's. A layout is the\n * deepest thing that can render `<html>`, and no layout has the slug the\n * screen is resolved from, so a locale variant's own language reaches the\n * metadata surfaces below — which call this resolver WITH a screen — and not\n * the document element. `apps/tenant/app/[host]/layout.tsx` records why\n * closing that gap would cost the catch-all's ISR window.\n */\nexport const PLATFORM_DEFAULT_LOCALE = 'en'\n\n/** The hreflang key for \"no locale of its own\", as `alternates.languages` spells it. */\nexport const LOCALE_X_DEFAULT = 'x-default'\n\n/**\n * A language tag, or nothing.\n *\n * Validated rather than trusted: these values reach a `<meta>` and a JSON-LD\n * document, and a locale field is free text in Firestore. An unparseable one\n * is dropped so the chain falls through to the next candidate — a page with a\n * corrupt locale emits the site's language, never the corruption.\n *\n * Accepts `language[-Script][-REGION]` — `en`, `en-GB`, `zh-Hant`,\n * `zh-Hant-TW`, `es-419` — in any casing, and returns it in the canonical\n * BCP-47 casing so two spellings of one locale cannot read as two locales.\n */\nexport function normalizeLocaleTag(\n value: string | null | undefined,\n): string | undefined {\n if (typeof value !== 'string') return undefined\n // `_` is the Open Graph separator and `-` the BCP-47 one; a stored value may\n // legitimately arrive in either, and both name the same locale.\n const raw = value.trim().replace(/_/g, '-')\n if (!raw) return undefined\n const match =\n /^([A-Za-z]{2,3})(?:-([A-Za-z]{4}))?(?:-([A-Za-z]{2}|[0-9]{3}))?$/.exec(raw)\n if (!match) return undefined\n const [, language, script, region] = match\n return [\n language.toLowerCase(),\n script ? script[0].toUpperCase() + script.slice(1).toLowerCase() : undefined,\n region ? region.toUpperCase() : undefined,\n ]\n .filter(Boolean)\n .join('-')\n}\n\n/** The screen and host fields the language of a page is decided from. */\nexport interface PageLocaleSources {\n /** The screen being rendered — its `locale` is the most specific answer. */\n screen?: { locale?: string } | null\n /** The host document — `defaultLocale`, then the first of `locales`. */\n host?: { defaultLocale?: string; locales?: string[] } | null\n}\n\n/**\n * The language THIS page is written in.\n *\n * Most specific first: the screen says what it was written in, the site says\n * what it defaults to, and the platform default answers for the sites — today\n * every one of them — that have configured neither.\n *\n * Never returns `undefined`. A page is always in some language, and a reader\n * that finds no answer assumes one anyway; saying which one out loud is\n * strictly more information than leaving it to be guessed.\n */\nexport function resolvePageLocale(sources: PageLocaleSources): string {\n return (\n normalizeLocaleTag(sources.screen?.locale) ??\n normalizeLocaleTag(sources.host?.defaultLocale) ??\n normalizeLocaleTag(sources.host?.locales?.[0]) ??\n PLATFORM_DEFAULT_LOCALE\n )\n}\n\n/**\n * A language tag in the form Open Graph spells it — `en_GB`, not `en-GB`.\n *\n * The one transformation, kept beside the normalizer so the two forms cannot\n * drift: `alternates.languages` keys stay BCP-47 because that is what\n * `hreflang` takes, and `og:locale` takes the underscore form.\n */\nexport function toOpenGraphLocale(\n value: string | null | undefined,\n): string | undefined {\n const tag = normalizeLocaleTag(value)\n return tag ? tag.replace(/-/g, '_') : undefined\n}\n\n/**\n * The OTHER languages this page exists in, as `og:locale:alternate` values.\n *\n * Derived from the very keys that drive `alternates.languages`, deliberately,\n * rather than from the site's configured `locales`: a language reaches that\n * map only once its translated screen resolves to a real routed path, so\n * every value returned here has a page behind it. A site that lists `fr`\n * among its locales but has translated nothing advertises no French card.\n *\n * `x-default` is dropped — it is a routing instruction, not a language — and\n * so is the page's own locale, which `og:locale` already carries.\n */\nexport function openGraphAlternateLocales(\n languageKeys: readonly string[] | null | undefined,\n pageLocale?: string,\n): string[] {\n const own = toOpenGraphLocale(pageLocale)\n const alternates = new Set<string>()\n for (const key of languageKeys ?? []) {\n if (key === LOCALE_X_DEFAULT) continue\n const tag = toOpenGraphLocale(key)\n if (tag && tag !== own) alternates.add(tag)\n }\n return [...alternates]\n}\n"],"names":["PLATFORM_DEFAULT_LOCALE","LOCALE_X_DEFAULT","normalizeLocaleTag","value","undefined","raw","trim","replace","match","exec","language","script","region","toLowerCase","toUpperCase","slice","filter","Boolean","join","resolvePageLocale","sources","screen","locale","host","defaultLocale","locales","toOpenGraphLocale","tag","openGraphAlternateLocales","languageKeys","pageLocale","own","alternates","Set","key","add"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;CAcC,GAED;;;;;;;;;;;;;;;;;;;;;;;;;;CA0BC,GACD,OAAO,MAAMA,0BAA0B,KAAI;AAE3C,sFAAsF,GACtF,OAAO,MAAMC,mBAAmB,YAAW;AAE3C;;;;;;;;;;;CAWC,GACD,OAAO,SAASC,mBACdC,KAAgC;IAEhC,IAAI,OAAOA,UAAU,UAAU,OAAOC;IACtC,6EAA6E;IAC7E,gEAAgE;IAChE,MAAMC,MAAMF,MAAMG,IAAI,GAAGC,OAAO,CAAC,MAAM;IACvC,IAAI,CAACF,KAAK,OAAOD;IACjB,MAAMI,QACJ,mEAAmEC,IAAI,CAACJ;IAC1E,IAAI,CAACG,OAAO,OAAOJ;IACnB,MAAM,GAAGM,UAAUC,QAAQC,OAAO,GAAGJ;IACrC,OAAO;QACLE,SAASG,WAAW;QACpBF,SAASA,MAAM,CAAC,EAAE,CAACG,WAAW,KAAKH,OAAOI,KAAK,CAAC,GAAGF,WAAW,KAAKT;QACnEQ,SAASA,OAAOE,WAAW,KAAKV;KACjC,CACEY,MAAM,CAACC,SACPC,IAAI,CAAC;AACV;AAUA;;;;;;;;;;CAUC,GACD,OAAO,SAASC,kBAAkBC,OAA0B;QAExDlB,MAAAA,OAAAA;QAAmBkB,iBACAA,eACAA,uBAAAA;IAHrB,QACElB,QAAAA,SAAAA,sBAAAA,oBAAmBkB,kBAAAA,QAAQC,MAAM,qBAAdD,gBAAgBE,MAAM,aAAzCpB,sBACAA,oBAAmBkB,gBAAAA,QAAQG,IAAI,qBAAZH,cAAcI,aAAa,aAD9CtB,QAEAA,oBAAmBkB,iBAAAA,QAAQG,IAAI,sBAAZH,wBAAAA,eAAcK,OAAO,qBAArBL,qBAAuB,CAAC,EAAE,aAF7ClB,OAGAF;AAEJ;AAEA;;;;;;CAMC,GACD,OAAO,SAAS0B,kBACdvB,KAAgC;IAEhC,MAAMwB,MAAMzB,mBAAmBC;IAC/B,OAAOwB,MAAMA,IAAIpB,OAAO,CAAC,MAAM,OAAOH;AACxC;AAEA;;;;;;;;;;;CAWC,GACD,OAAO,SAASwB,0BACdC,YAAkD,EAClDC,UAAmB;IAEnB,MAAMC,MAAML,kBAAkBI;IAC9B,MAAME,aAAa,IAAIC;IACvB,KAAK,MAAMC,OAAOL,uBAAAA,eAAgB,EAAE,CAAE;QACpC,IAAIK,QAAQjC,kBAAkB;QAC9B,MAAM0B,MAAMD,kBAAkBQ;QAC9B,IAAIP,OAAOA,QAAQI,KAAKC,WAAWG,GAAG,CAACR;IACzC;IACA,OAAO;WAAIK;KAAW;AACxB"}
|
|
@@ -0,0 +1,149 @@
|
|
|
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 variables a page title may be written in terms of, and how a written
|
|
19
|
+
* title becomes a rendered one.
|
|
20
|
+
*
|
|
21
|
+
* ## Why this exists
|
|
22
|
+
*
|
|
23
|
+
* A title is verbatim (AGL-1341, and that rule is right — see `seo-title`), so
|
|
24
|
+
* an author who wants the brand in a title TYPES it. Fifty screens on the
|
|
25
|
+
* marketing site end in a literal ` | Aglyn`, which means the site name and
|
|
26
|
+
* the character in front of it are stored fifty times, and changing either one
|
|
27
|
+
* is fifty edits that nothing reminds you to make. `seo.separator` already
|
|
28
|
+
* exists as a setting and every one of those titles ignores it.
|
|
29
|
+
*
|
|
30
|
+
* So a title may now be WRITTEN in terms of what it depends on:
|
|
31
|
+
*
|
|
32
|
+
* ```
|
|
33
|
+
* {{page.name}} {{site.separator}} {{site.name}}
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* and a site-name change is one edit in Host setup → SEO.
|
|
37
|
+
*
|
|
38
|
+
* ## ⛔ No rendered title changes because this shipped
|
|
39
|
+
*
|
|
40
|
+
* The whole feature is opt-in at the string level: a title with no `{{` in it
|
|
41
|
+
* is returned unchanged, character for character, by the same code path that
|
|
42
|
+
* returned it before. Nothing migrates the fifty existing titles — a migration
|
|
43
|
+
* could not be output-preserving anyway, because ` | Aglyn` is not what
|
|
44
|
+
* `{{site.separator}}{{site.name}}` resolves to on a host whose separator is
|
|
45
|
+
* `-` and whose site title is the long form. They keep working as literals
|
|
46
|
+
* until somebody decides otherwise, one at a time.
|
|
47
|
+
*
|
|
48
|
+
* `DEFAULT_TITLE_PATTERN` is held to the same standard: it is the composition
|
|
49
|
+
* `resolveSeoTitle` already performed for a page with no authored title, said
|
|
50
|
+
* in tokens instead of in code, and `seo-title.spec` pins that the two agree.
|
|
51
|
+
*
|
|
52
|
+
* ## The grammar is `{{…}}`, not `[…]`
|
|
53
|
+
*
|
|
54
|
+
* Because the platform already has one: the besigner's attribute fields, the
|
|
55
|
+
* markdown blocks and the campaign editors all serialize `{{…}}` and the
|
|
56
|
+
* people writing SEO titles are the same people who write those. A second
|
|
57
|
+
* grammar for the same idea is a second thing to learn and a second parser to
|
|
58
|
+
* keep in step.
|
|
59
|
+
*
|
|
60
|
+
* ## What is NOT a variable here
|
|
61
|
+
*
|
|
62
|
+
* Anything per-visitor or per-request. A `<title>` is rendered into a cached,
|
|
63
|
+
* shared HTML document and read by crawlers, so a variable that resolved to
|
|
64
|
+
* something about the reader would be wrong for everyone it was cached for.
|
|
65
|
+
* These three are properties of the page and the site, both of which are the
|
|
66
|
+
* same for everybody who asks for that URL.
|
|
67
|
+
*/
|
|
68
|
+
/** A variable's name, as it is written between the braces. */
|
|
69
|
+
export type SeoTitleVariableName = 'page.name' | 'site.name' | 'site.separator';
|
|
70
|
+
export interface SeoTitleVariableDefinition {
|
|
71
|
+
name: SeoTitleVariableName;
|
|
72
|
+
/** What the insert menu calls it. */
|
|
73
|
+
label: string;
|
|
74
|
+
/** One line under the label, saying where the value comes from. */
|
|
75
|
+
description: string;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Every variable a title may use, in the order a picker should offer them —
|
|
79
|
+
* which is the order they appear in the default pattern, so the menu reads as
|
|
80
|
+
* the sentence it builds.
|
|
81
|
+
*/
|
|
82
|
+
export declare const SEO_TITLE_VARIABLES: readonly SeoTitleVariableDefinition[];
|
|
83
|
+
/**
|
|
84
|
+
* The composition every untitled page gets when the site sets no pattern of
|
|
85
|
+
* its own.
|
|
86
|
+
*
|
|
87
|
+
* This is `resolveSeoTitle`'s previous hard-coded composition, written out:
|
|
88
|
+
* name, separator padded by a space on each side, site title. It is a constant
|
|
89
|
+
* rather than a string built at the call site so that the setting's default,
|
|
90
|
+
* the placeholder the editor shows and the value the renderer falls back to
|
|
91
|
+
* are one thing.
|
|
92
|
+
*/
|
|
93
|
+
export declare const DEFAULT_TITLE_PATTERN = "{{page.name}} {{site.separator}} {{site.name}}";
|
|
94
|
+
/** The values the variables stand for, for one page of one site. */
|
|
95
|
+
export interface SeoTitleVariableValues {
|
|
96
|
+
'page.name'?: string | null;
|
|
97
|
+
'site.name'?: string | null;
|
|
98
|
+
'site.separator'?: string | null;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* The separator a site uses when it has set none.
|
|
102
|
+
*
|
|
103
|
+
* An en dash, which is what `seo-title` has padded around since AGL-1341. It
|
|
104
|
+
* lives here because `{{site.separator}}` has to resolve to the SAME character
|
|
105
|
+
* the code composed with — a variable that stood for "the separator, unless
|
|
106
|
+
* it is unset, in which case nothing" would silently change the title of every
|
|
107
|
+
* untitled page on every site that never filled the field in.
|
|
108
|
+
*/
|
|
109
|
+
export declare const DEFAULT_TITLE_SEPARATOR = "\u2013";
|
|
110
|
+
/** The site's separator, defaulted the one way everything defaults it. */
|
|
111
|
+
export declare function seoSeparatorOrDefault(separator?: string | null): string;
|
|
112
|
+
/**
|
|
113
|
+
* Whether a written value uses any variable at all.
|
|
114
|
+
*
|
|
115
|
+
* The cheap gate in front of every path here: a title with no `{{` is returned
|
|
116
|
+
* by identity, which is what makes "nothing renders differently" a property of
|
|
117
|
+
* the code rather than a claim about the data.
|
|
118
|
+
*/
|
|
119
|
+
export declare function hasSeoTitleVariables(value?: string | null): boolean;
|
|
120
|
+
/** Whether a name is one this catalog defines. */
|
|
121
|
+
export declare function isSeoTitleVariable(name: string): name is SeoTitleVariableName;
|
|
122
|
+
/**
|
|
123
|
+
* Resolve a written title into the one that is rendered.
|
|
124
|
+
*
|
|
125
|
+
* ## An unknown variable is left alone
|
|
126
|
+
*
|
|
127
|
+
* `{{page.subtitle}}` renders as itself, visibly, rather than as an empty gap.
|
|
128
|
+
* A typo that vanished would produce a title that is silently missing a piece,
|
|
129
|
+
* and the author's next look at the live page would show them a sentence that
|
|
130
|
+
* merely reads a bit short. Leaving it visible is the version somebody
|
|
131
|
+
* notices. The editor's picker and autocomplete are what keep it from
|
|
132
|
+
* happening; this is what happens when they are bypassed.
|
|
133
|
+
*
|
|
134
|
+
* ## A separator needs something on BOTH sides
|
|
135
|
+
*
|
|
136
|
+
* This is `resolveSeoTitle`'s own rule (AGL-1341) and it survives the move into
|
|
137
|
+
* a pattern, because it is the rule that stops `<title>` from beginning with a
|
|
138
|
+
* dash on a page whose name is missing. A `{{site.separator}}` with nothing
|
|
139
|
+
* rendered on one side of it is dropped, whatever order the pattern put the
|
|
140
|
+
* pieces in — which is why the parts are walked rather than regex-substituted:
|
|
141
|
+
* a substitution cannot see its neighbours.
|
|
142
|
+
*
|
|
143
|
+
* ## An empty variable takes its spacing with it
|
|
144
|
+
*
|
|
145
|
+
* Otherwise a site with no name set renders `Pricing ` — the gap where the
|
|
146
|
+
* missing piece was, and a trailing separator's worth of whitespace. Runs
|
|
147
|
+
* collapse to one space and the result is trimmed.
|
|
148
|
+
*/
|
|
149
|
+
export declare function resolveSeoTitleVariables(written: string | null | undefined, values: SeoTitleVariableValues): string;
|