@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,117 @@
|
|
|
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
|
+
/** Where a site's sitemap index lives; what `robots.txt` advertises. */
|
|
18
|
+
export declare const SITEMAP_INDEX_PATH = "/sitemap.xml";
|
|
19
|
+
/**
|
|
20
|
+
* URLs per child sitemap.
|
|
21
|
+
*
|
|
22
|
+
* An order of magnitude under the protocol's 50,000 because the cap that
|
|
23
|
+
* binds first here is not the protocol's but Firestore's: a page of this file
|
|
24
|
+
* is a page of a query, and 5,000 keeps one crawler fetch to 5,000 document
|
|
25
|
+
* reads and a few hundred KB of XML. Raising it trades read cost for fewer
|
|
26
|
+
* files, and nothing in the format cares which side of that trade we take.
|
|
27
|
+
*/
|
|
28
|
+
export declare const SITEMAP_URLS_PER_FILE = 5000;
|
|
29
|
+
/**
|
|
30
|
+
* A ceiling on how many pages one section may advertise, so a runaway
|
|
31
|
+
* collection cannot produce an index with tens of thousands of entries — the
|
|
32
|
+
* index has its own 50,000 limit, and a sweep that large is a bug long before
|
|
33
|
+
* it is a sitemap. 100 pages is 500,000 URLs in one section.
|
|
34
|
+
*/
|
|
35
|
+
export declare const SITEMAP_MAX_PAGES_PER_SECTION = 100;
|
|
36
|
+
/** The fixed sections; a content collection adds one of its own. */
|
|
37
|
+
export declare const SITEMAP_SECTION_PAGES = "pages";
|
|
38
|
+
export declare const SITEMAP_SECTION_PRODUCTS = "products";
|
|
39
|
+
export declare const SITEMAP_SECTION_CATALOG = "catalog";
|
|
40
|
+
/**
|
|
41
|
+
* Author pages (AGL-2518) — `/author/{slug}`, one per author record.
|
|
42
|
+
*
|
|
43
|
+
* A fixed section rather than a per-collection one, because there is one
|
|
44
|
+
* author page per PERSON and it spans every collection they wrote in. A
|
|
45
|
+
* `content-…` section per collection would submit the same author several
|
|
46
|
+
* times over, at addresses that no longer exist.
|
|
47
|
+
*/
|
|
48
|
+
export declare const SITEMAP_SECTION_AUTHORS = "authors";
|
|
49
|
+
/** The sitemap section a content collection's URLs live in. */
|
|
50
|
+
export declare function contentSitemapSection(collectionSlug: string): string;
|
|
51
|
+
/** The collection a `content-…` section names, or `undefined` for the rest. */
|
|
52
|
+
export declare function contentSitemapSectionSlug(section: string): string | undefined;
|
|
53
|
+
/**
|
|
54
|
+
* A child sitemap's path.
|
|
55
|
+
*
|
|
56
|
+
* The page is ALWAYS its own segment, including page 1. A one-file section is
|
|
57
|
+
* the common case and could have been the bare `/sitemaps/{section}.xml`, but
|
|
58
|
+
* then the page number would have to be encoded into the section name for
|
|
59
|
+
* every other page — and `content-blog-2` is ambiguous between page 2 of the
|
|
60
|
+
* collection `blog` and page 1 of the collection `blog-2`, which is a real
|
|
61
|
+
* slug someone can create. A separate segment cannot be ambiguous, and
|
|
62
|
+
* nothing but the index ever writes these URLs.
|
|
63
|
+
*/
|
|
64
|
+
export declare function sitemapSectionPath(section: string, page: number): string;
|
|
65
|
+
/** The section and page a path addresses, or `undefined` if it addresses none. */
|
|
66
|
+
export declare function parseSitemapSectionPath(pathname: string): {
|
|
67
|
+
section: string;
|
|
68
|
+
page: number;
|
|
69
|
+
} | undefined;
|
|
70
|
+
/**
|
|
71
|
+
* How many files a section of `urlCount` URLs needs. Zero URLs means zero
|
|
72
|
+
* files — a section with nothing in it is left out of the index rather than
|
|
73
|
+
* advertised as an empty document a crawler has to fetch to discover is empty.
|
|
74
|
+
*/
|
|
75
|
+
export declare function sitemapPageCount(urlCount: number): number;
|
|
76
|
+
/** XML text escaping — a slug or a query string may carry any of these. */
|
|
77
|
+
export declare function escapeSitemapXml(value: string): string;
|
|
78
|
+
/**
|
|
79
|
+
* One address in a sitemap document. A bare string is an address with no
|
|
80
|
+
* known modification date; the object form carries a `lastmod` when the
|
|
81
|
+
* builder could derive one.
|
|
82
|
+
*/
|
|
83
|
+
export type SitemapLocation = string | {
|
|
84
|
+
loc: string;
|
|
85
|
+
lastmod?: string;
|
|
86
|
+
};
|
|
87
|
+
/**
|
|
88
|
+
* A `<lastmod>` value from whatever timestamp shape a document carries
|
|
89
|
+
* (AGL-2647): a Firestore `Timestamp` (`toMillis()`), the `{seconds}` object
|
|
90
|
+
* a serialized one decays into, epoch milliseconds, or an ISO string.
|
|
91
|
+
*
|
|
92
|
+
* The DAY only, in UTC. `YYYY-MM-DD` is a complete W3C datetime, and a date a
|
|
93
|
+
* crawler can compare is worth more than a time it cannot: a value that moved
|
|
94
|
+
* with every render would be a `lastmod` crawlers learn to discount, and the
|
|
95
|
+
* whole point of the element is to be believed.
|
|
96
|
+
*
|
|
97
|
+
* `undefined` for anything that does not decode, and the caller omits the
|
|
98
|
+
* element. Never "now": an invented date claims a change that did not
|
|
99
|
+
* happen, and a sitemap whose dates are consistently wrong is read as having
|
|
100
|
+
* none at all.
|
|
101
|
+
*/
|
|
102
|
+
export declare function sitemapLastmod(value: unknown): string | undefined;
|
|
103
|
+
/** The `lastmod` a location carries, if any. */
|
|
104
|
+
export declare function sitemapLocationLastmod(location: SitemapLocation): string | undefined;
|
|
105
|
+
/**
|
|
106
|
+
* The newest of some `lastmod` values, or `undefined` when none is known.
|
|
107
|
+
*
|
|
108
|
+
* What a listing page and an index entry are dated by: a listing changed when
|
|
109
|
+
* its newest entry did, and a child sitemap changed when its newest URL did.
|
|
110
|
+
* Comparison is on the string, which is sound because every value is the
|
|
111
|
+
* fixed-width `YYYY-MM-DD` {@link sitemapLastmod} produces.
|
|
112
|
+
*/
|
|
113
|
+
export declare function newestSitemapLastmod(lastmods: Iterable<string | undefined>): string | undefined;
|
|
114
|
+
/** A `<urlset>` document. */
|
|
115
|
+
export declare function sitemapUrlsetXml(urls: readonly SitemapLocation[]): string;
|
|
116
|
+
/** A `<sitemapindex>` document — the children of `/sitemap.xml`. */
|
|
117
|
+
export declare function sitemapIndexXml(locs: readonly SitemapLocation[]): string;
|
|
@@ -0,0 +1,183 @@
|
|
|
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
|
+
* Sitemap addressing and XML (AGL-2520).
|
|
18
|
+
*
|
|
19
|
+
* A site publishes ONE sitemap index at `/sitemap.xml` and a child sitemap per
|
|
20
|
+
* section — pages, products, the catalog, and one per content collection —
|
|
21
|
+
* each of which pages further at {@link SITEMAP_URLS_PER_FILE}.
|
|
22
|
+
*
|
|
23
|
+
* The split is what makes the sitemap survive a site growing. The protocol
|
|
24
|
+
* caps a single sitemap at 50,000 URLs and 50MB, and a flat file has no
|
|
25
|
+
* answer once a site crosses either: the URLs past the cap are simply not
|
|
26
|
+
* submitted, silently. It also makes the sweep behind each file bounded —
|
|
27
|
+
* a crawler asking for `/sitemaps/content-blog/2.xml` reads one page of one
|
|
28
|
+
* collection's entries instead of the whole site.
|
|
29
|
+
*
|
|
30
|
+
* These are pure functions on purpose: the tenant route handler that answers
|
|
31
|
+
* these URLs and the middleware that routes them to it must agree on the
|
|
32
|
+
* shape exactly, and so must the tests.
|
|
33
|
+
*/ import { toEpochMs } from "./lockdown.js";
|
|
34
|
+
/** Where a site's sitemap index lives; what `robots.txt` advertises. */ export const SITEMAP_INDEX_PATH = '/sitemap.xml';
|
|
35
|
+
/**
|
|
36
|
+
* URLs per child sitemap.
|
|
37
|
+
*
|
|
38
|
+
* An order of magnitude under the protocol's 50,000 because the cap that
|
|
39
|
+
* binds first here is not the protocol's but Firestore's: a page of this file
|
|
40
|
+
* is a page of a query, and 5,000 keeps one crawler fetch to 5,000 document
|
|
41
|
+
* reads and a few hundred KB of XML. Raising it trades read cost for fewer
|
|
42
|
+
* files, and nothing in the format cares which side of that trade we take.
|
|
43
|
+
*/ export const SITEMAP_URLS_PER_FILE = 5000;
|
|
44
|
+
/**
|
|
45
|
+
* A ceiling on how many pages one section may advertise, so a runaway
|
|
46
|
+
* collection cannot produce an index with tens of thousands of entries — the
|
|
47
|
+
* index has its own 50,000 limit, and a sweep that large is a bug long before
|
|
48
|
+
* it is a sitemap. 100 pages is 500,000 URLs in one section.
|
|
49
|
+
*/ export const SITEMAP_MAX_PAGES_PER_SECTION = 100;
|
|
50
|
+
/** The fixed sections; a content collection adds one of its own. */ export const SITEMAP_SECTION_PAGES = 'pages';
|
|
51
|
+
export const SITEMAP_SECTION_PRODUCTS = 'products';
|
|
52
|
+
export const SITEMAP_SECTION_CATALOG = 'catalog';
|
|
53
|
+
/**
|
|
54
|
+
* Author pages (AGL-2518) — `/author/{slug}`, one per author record.
|
|
55
|
+
*
|
|
56
|
+
* A fixed section rather than a per-collection one, because there is one
|
|
57
|
+
* author page per PERSON and it spans every collection they wrote in. A
|
|
58
|
+
* `content-…` section per collection would submit the same author several
|
|
59
|
+
* times over, at addresses that no longer exist.
|
|
60
|
+
*/ export const SITEMAP_SECTION_AUTHORS = 'authors';
|
|
61
|
+
/**
|
|
62
|
+
* The prefix a content collection's section carries.
|
|
63
|
+
*
|
|
64
|
+
* It exists so a collection slugged `products` cannot claim the commerce
|
|
65
|
+
* section, and it cannot itself collide: stripping happens ONCE, so a
|
|
66
|
+
* collection actually slugged `content-products` addresses
|
|
67
|
+
* `content-content-products` and stays distinct from `content-products`,
|
|
68
|
+
* which is the collection slugged `products`.
|
|
69
|
+
*/ const CONTENT_SECTION_PREFIX = 'content-';
|
|
70
|
+
/** The sitemap section a content collection's URLs live in. */ export function contentSitemapSection(collectionSlug) {
|
|
71
|
+
return `${CONTENT_SECTION_PREFIX}${collectionSlug}`;
|
|
72
|
+
}
|
|
73
|
+
/** The collection a `content-…` section names, or `undefined` for the rest. */ export function contentSitemapSectionSlug(section) {
|
|
74
|
+
if (!section.startsWith(CONTENT_SECTION_PREFIX)) return undefined;
|
|
75
|
+
const slug = section.slice(CONTENT_SECTION_PREFIX.length);
|
|
76
|
+
return slug || undefined;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* A child sitemap's path.
|
|
80
|
+
*
|
|
81
|
+
* The page is ALWAYS its own segment, including page 1. A one-file section is
|
|
82
|
+
* the common case and could have been the bare `/sitemaps/{section}.xml`, but
|
|
83
|
+
* then the page number would have to be encoded into the section name for
|
|
84
|
+
* every other page — and `content-blog-2` is ambiguous between page 2 of the
|
|
85
|
+
* collection `blog` and page 1 of the collection `blog-2`, which is a real
|
|
86
|
+
* slug someone can create. A separate segment cannot be ambiguous, and
|
|
87
|
+
* nothing but the index ever writes these URLs.
|
|
88
|
+
*/ export function sitemapSectionPath(section, page) {
|
|
89
|
+
return `/sitemaps/${section}/${Math.max(1, Math.floor(page))}.xml`;
|
|
90
|
+
}
|
|
91
|
+
/** Matches {@link sitemapSectionPath}; the one parser, shared with the middleware. */ const SITEMAP_SECTION_PATH = /^\/sitemaps\/([^/]+)\/([0-9]+)\.xml$/;
|
|
92
|
+
/** The section and page a path addresses, or `undefined` if it addresses none. */ export function parseSitemapSectionPath(pathname) {
|
|
93
|
+
const match = SITEMAP_SECTION_PATH.exec(pathname);
|
|
94
|
+
if (!match) return undefined;
|
|
95
|
+
const page = Number(match[2]);
|
|
96
|
+
if (!Number.isFinite(page) || page < 1) return undefined;
|
|
97
|
+
return {
|
|
98
|
+
section: decodeURIComponent(match[1]),
|
|
99
|
+
page
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* How many files a section of `urlCount` URLs needs. Zero URLs means zero
|
|
104
|
+
* files — a section with nothing in it is left out of the index rather than
|
|
105
|
+
* advertised as an empty document a crawler has to fetch to discover is empty.
|
|
106
|
+
*/ export function sitemapPageCount(urlCount) {
|
|
107
|
+
if (!Number.isFinite(urlCount) || urlCount <= 0) return 0;
|
|
108
|
+
return Math.min(SITEMAP_MAX_PAGES_PER_SECTION, Math.ceil(urlCount / SITEMAP_URLS_PER_FILE));
|
|
109
|
+
}
|
|
110
|
+
/** XML text escaping — a slug or a query string may carry any of these. */ export function escapeSitemapXml(value) {
|
|
111
|
+
return value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>').replace(/"/g, '"');
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* A `<lastmod>` value from whatever timestamp shape a document carries
|
|
115
|
+
* (AGL-2647): a Firestore `Timestamp` (`toMillis()`), the `{seconds}` object
|
|
116
|
+
* a serialized one decays into, epoch milliseconds, or an ISO string.
|
|
117
|
+
*
|
|
118
|
+
* The DAY only, in UTC. `YYYY-MM-DD` is a complete W3C datetime, and a date a
|
|
119
|
+
* crawler can compare is worth more than a time it cannot: a value that moved
|
|
120
|
+
* with every render would be a `lastmod` crawlers learn to discount, and the
|
|
121
|
+
* whole point of the element is to be believed.
|
|
122
|
+
*
|
|
123
|
+
* `undefined` for anything that does not decode, and the caller omits the
|
|
124
|
+
* element. Never "now": an invented date claims a change that did not
|
|
125
|
+
* happen, and a sitemap whose dates are consistently wrong is read as having
|
|
126
|
+
* none at all.
|
|
127
|
+
*/ export function sitemapLastmod(value) {
|
|
128
|
+
const ms = toEpochMs(value);
|
|
129
|
+
if (ms === undefined || ms <= 0) return undefined;
|
|
130
|
+
return new Date(ms).toISOString().slice(0, 10);
|
|
131
|
+
}
|
|
132
|
+
/** The `lastmod` a location carries, if any. */ export function sitemapLocationLastmod(location) {
|
|
133
|
+
return typeof location === 'string' ? undefined : location.lastmod;
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* The newest of some `lastmod` values, or `undefined` when none is known.
|
|
137
|
+
*
|
|
138
|
+
* What a listing page and an index entry are dated by: a listing changed when
|
|
139
|
+
* its newest entry did, and a child sitemap changed when its newest URL did.
|
|
140
|
+
* Comparison is on the string, which is sound because every value is the
|
|
141
|
+
* fixed-width `YYYY-MM-DD` {@link sitemapLastmod} produces.
|
|
142
|
+
*/ export function newestSitemapLastmod(lastmods) {
|
|
143
|
+
let newest;
|
|
144
|
+
for (const lastmod of lastmods){
|
|
145
|
+
if (lastmod && (!newest || lastmod > newest)) newest = lastmod;
|
|
146
|
+
}
|
|
147
|
+
return newest;
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* De-duplicated (AGL-582): a collection slug can shadow a screen path, and
|
|
151
|
+
* the same URL twice in one sitemap is a submission of a duplicate, not a
|
|
152
|
+
* stronger signal. The FIRST occurrence keeps its date — the routing order
|
|
153
|
+
* that decides which page a shadowed URL serves is the order the builders
|
|
154
|
+
* emit in, so the first source is the one whose date describes the page.
|
|
155
|
+
*/ function uniqueSitemapLocations(locations) {
|
|
156
|
+
const byLoc = new Map();
|
|
157
|
+
for (const location of locations){
|
|
158
|
+
const entry = typeof location === 'string' ? {
|
|
159
|
+
loc: location
|
|
160
|
+
} : location;
|
|
161
|
+
if (!byLoc.has(entry.loc)) {
|
|
162
|
+
byLoc.set(entry.loc, {
|
|
163
|
+
loc: entry.loc,
|
|
164
|
+
lastmod: entry.lastmod
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return [
|
|
169
|
+
...byLoc.values()
|
|
170
|
+
];
|
|
171
|
+
}
|
|
172
|
+
/** `<url>` or `<sitemap>`; the `<lastmod>` child only when a date is known. */ function sitemapLocationXml(tag, { loc, lastmod }) {
|
|
173
|
+
const date = lastmod ? `<lastmod>${escapeSitemapXml(lastmod)}</lastmod>` : '';
|
|
174
|
+
return ` <${tag}><loc>${escapeSitemapXml(loc)}</loc>${date}</${tag}>`;
|
|
175
|
+
}
|
|
176
|
+
/** A `<urlset>` document. */ export function sitemapUrlsetXml(urls) {
|
|
177
|
+
return '<?xml version="1.0" encoding="UTF-8"?>\n' + '<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n' + uniqueSitemapLocations(urls).map((item)=>sitemapLocationXml('url', item)).join('\n') + '\n</urlset>\n';
|
|
178
|
+
}
|
|
179
|
+
/** A `<sitemapindex>` document — the children of `/sitemap.xml`. */ export function sitemapIndexXml(locs) {
|
|
180
|
+
return '<?xml version="1.0" encoding="UTF-8"?>\n' + '<sitemapindex xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">\n' + uniqueSitemapLocations(locs).map((item)=>sitemapLocationXml('sitemap', item)).join('\n') + '\n</sitemapindex>\n';
|
|
181
|
+
}
|
|
182
|
+
|
|
183
|
+
//# sourceMappingURL=sitemap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/sitemap.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 * Sitemap addressing and XML (AGL-2520).\n *\n * A site publishes ONE sitemap index at `/sitemap.xml` and a child sitemap per\n * section — pages, products, the catalog, and one per content collection —\n * each of which pages further at {@link SITEMAP_URLS_PER_FILE}.\n *\n * The split is what makes the sitemap survive a site growing. The protocol\n * caps a single sitemap at 50,000 URLs and 50MB, and a flat file has no\n * answer once a site crosses either: the URLs past the cap are simply not\n * submitted, silently. It also makes the sweep behind each file bounded —\n * a crawler asking for `/sitemaps/content-blog/2.xml` reads one page of one\n * collection's entries instead of the whole site.\n *\n * These are pure functions on purpose: the tenant route handler that answers\n * these URLs and the middleware that routes them to it must agree on the\n * shape exactly, and so must the tests.\n */\n\nimport { toEpochMs } from './lockdown'\n\n/** Where a site's sitemap index lives; what `robots.txt` advertises. */\nexport const SITEMAP_INDEX_PATH = '/sitemap.xml'\n\n/**\n * URLs per child sitemap.\n *\n * An order of magnitude under the protocol's 50,000 because the cap that\n * binds first here is not the protocol's but Firestore's: a page of this file\n * is a page of a query, and 5,000 keeps one crawler fetch to 5,000 document\n * reads and a few hundred KB of XML. Raising it trades read cost for fewer\n * files, and nothing in the format cares which side of that trade we take.\n */\nexport const SITEMAP_URLS_PER_FILE = 5000\n\n/**\n * A ceiling on how many pages one section may advertise, so a runaway\n * collection cannot produce an index with tens of thousands of entries — the\n * index has its own 50,000 limit, and a sweep that large is a bug long before\n * it is a sitemap. 100 pages is 500,000 URLs in one section.\n */\nexport const SITEMAP_MAX_PAGES_PER_SECTION = 100\n\n/** The fixed sections; a content collection adds one of its own. */\nexport const SITEMAP_SECTION_PAGES = 'pages'\nexport const SITEMAP_SECTION_PRODUCTS = 'products'\nexport const SITEMAP_SECTION_CATALOG = 'catalog'\n/**\n * Author pages (AGL-2518) — `/author/{slug}`, one per author record.\n *\n * A fixed section rather than a per-collection one, because there is one\n * author page per PERSON and it spans every collection they wrote in. A\n * `content-…` section per collection would submit the same author several\n * times over, at addresses that no longer exist.\n */\nexport const SITEMAP_SECTION_AUTHORS = 'authors'\n\n/**\n * The prefix a content collection's section carries.\n *\n * It exists so a collection slugged `products` cannot claim the commerce\n * section, and it cannot itself collide: stripping happens ONCE, so a\n * collection actually slugged `content-products` addresses\n * `content-content-products` and stays distinct from `content-products`,\n * which is the collection slugged `products`.\n */\nconst CONTENT_SECTION_PREFIX = 'content-'\n\n/** The sitemap section a content collection's URLs live in. */\nexport function contentSitemapSection(collectionSlug: string): string {\n return `${CONTENT_SECTION_PREFIX}${collectionSlug}`\n}\n\n/** The collection a `content-…` section names, or `undefined` for the rest. */\nexport function contentSitemapSectionSlug(\n section: string,\n): string | undefined {\n if (!section.startsWith(CONTENT_SECTION_PREFIX)) return undefined\n const slug = section.slice(CONTENT_SECTION_PREFIX.length)\n return slug || undefined\n}\n\n/**\n * A child sitemap's path.\n *\n * The page is ALWAYS its own segment, including page 1. A one-file section is\n * the common case and could have been the bare `/sitemaps/{section}.xml`, but\n * then the page number would have to be encoded into the section name for\n * every other page — and `content-blog-2` is ambiguous between page 2 of the\n * collection `blog` and page 1 of the collection `blog-2`, which is a real\n * slug someone can create. A separate segment cannot be ambiguous, and\n * nothing but the index ever writes these URLs.\n */\nexport function sitemapSectionPath(section: string, page: number): string {\n return `/sitemaps/${section}/${Math.max(1, Math.floor(page))}.xml`\n}\n\n/** Matches {@link sitemapSectionPath}; the one parser, shared with the middleware. */\nconst SITEMAP_SECTION_PATH = /^\\/sitemaps\\/([^/]+)\\/([0-9]+)\\.xml$/\n\n/** The section and page a path addresses, or `undefined` if it addresses none. */\nexport function parseSitemapSectionPath(\n pathname: string,\n): { section: string; page: number } | undefined {\n const match = SITEMAP_SECTION_PATH.exec(pathname)\n if (!match) return undefined\n const page = Number(match[2])\n if (!Number.isFinite(page) || page < 1) return undefined\n return { section: decodeURIComponent(match[1]), page }\n}\n\n/**\n * How many files a section of `urlCount` URLs needs. Zero URLs means zero\n * files — a section with nothing in it is left out of the index rather than\n * advertised as an empty document a crawler has to fetch to discover is empty.\n */\nexport function sitemapPageCount(urlCount: number): number {\n if (!Number.isFinite(urlCount) || urlCount <= 0) return 0\n return Math.min(\n SITEMAP_MAX_PAGES_PER_SECTION,\n Math.ceil(urlCount / SITEMAP_URLS_PER_FILE),\n )\n}\n\n/** XML text escaping — a slug or a query string may carry any of these. */\nexport function escapeSitemapXml(value: string): string {\n return value\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"')\n}\n\n/**\n * One address in a sitemap document. A bare string is an address with no\n * known modification date; the object form carries a `lastmod` when the\n * builder could derive one.\n */\nexport type SitemapLocation = string | { loc: string; lastmod?: string }\n\n/**\n * A `<lastmod>` value from whatever timestamp shape a document carries\n * (AGL-2647): a Firestore `Timestamp` (`toMillis()`), the `{seconds}` object\n * a serialized one decays into, epoch milliseconds, or an ISO string.\n *\n * The DAY only, in UTC. `YYYY-MM-DD` is a complete W3C datetime, and a date a\n * crawler can compare is worth more than a time it cannot: a value that moved\n * with every render would be a `lastmod` crawlers learn to discount, and the\n * whole point of the element is to be believed.\n *\n * `undefined` for anything that does not decode, and the caller omits the\n * element. Never \"now\": an invented date claims a change that did not\n * happen, and a sitemap whose dates are consistently wrong is read as having\n * none at all.\n */\nexport function sitemapLastmod(value: unknown): string | undefined {\n const ms = toEpochMs(value)\n if (ms === undefined || ms <= 0) return undefined\n return new Date(ms).toISOString().slice(0, 10)\n}\n\n/** The `lastmod` a location carries, if any. */\nexport function sitemapLocationLastmod(\n location: SitemapLocation,\n): string | undefined {\n return typeof location === 'string' ? undefined : location.lastmod\n}\n\n/**\n * The newest of some `lastmod` values, or `undefined` when none is known.\n *\n * What a listing page and an index entry are dated by: a listing changed when\n * its newest entry did, and a child sitemap changed when its newest URL did.\n * Comparison is on the string, which is sound because every value is the\n * fixed-width `YYYY-MM-DD` {@link sitemapLastmod} produces.\n */\nexport function newestSitemapLastmod(\n lastmods: Iterable<string | undefined>,\n): string | undefined {\n let newest: string | undefined\n for (const lastmod of lastmods) {\n if (lastmod && (!newest || lastmod > newest)) newest = lastmod\n }\n return newest\n}\n\n/**\n * De-duplicated (AGL-582): a collection slug can shadow a screen path, and\n * the same URL twice in one sitemap is a submission of a duplicate, not a\n * stronger signal. The FIRST occurrence keeps its date — the routing order\n * that decides which page a shadowed URL serves is the order the builders\n * emit in, so the first source is the one whose date describes the page.\n */\nfunction uniqueSitemapLocations(\n locations: readonly SitemapLocation[],\n): Array<{ loc: string; lastmod?: string }> {\n const byLoc = new Map<string, { loc: string; lastmod?: string }>()\n for (const location of locations) {\n const entry = typeof location === 'string' ? { loc: location } : location\n if (!byLoc.has(entry.loc)) {\n byLoc.set(entry.loc, { loc: entry.loc, lastmod: entry.lastmod })\n }\n }\n return [...byLoc.values()]\n}\n\n/** `<url>` or `<sitemap>`; the `<lastmod>` child only when a date is known. */\nfunction sitemapLocationXml(\n tag: 'url' | 'sitemap',\n { loc, lastmod }: { loc: string; lastmod?: string },\n): string {\n const date = lastmod ? `<lastmod>${escapeSitemapXml(lastmod)}</lastmod>` : ''\n return ` <${tag}><loc>${escapeSitemapXml(loc)}</loc>${date}</${tag}>`\n}\n\n/** A `<urlset>` document. */\nexport function sitemapUrlsetXml(urls: readonly SitemapLocation[]): string {\n return (\n '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n' +\n '<urlset xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\\n' +\n uniqueSitemapLocations(urls)\n .map((item) => sitemapLocationXml('url', item))\n .join('\\n') +\n '\\n</urlset>\\n'\n )\n}\n\n/** A `<sitemapindex>` document — the children of `/sitemap.xml`. */\nexport function sitemapIndexXml(locs: readonly SitemapLocation[]): string {\n return (\n '<?xml version=\"1.0\" encoding=\"UTF-8\"?>\\n' +\n '<sitemapindex xmlns=\"http://www.sitemaps.org/schemas/sitemap/0.9\">\\n' +\n uniqueSitemapLocations(locs)\n .map((item) => sitemapLocationXml('sitemap', item))\n .join('\\n') +\n '\\n</sitemapindex>\\n'\n )\n}\n"],"names":["toEpochMs","SITEMAP_INDEX_PATH","SITEMAP_URLS_PER_FILE","SITEMAP_MAX_PAGES_PER_SECTION","SITEMAP_SECTION_PAGES","SITEMAP_SECTION_PRODUCTS","SITEMAP_SECTION_CATALOG","SITEMAP_SECTION_AUTHORS","CONTENT_SECTION_PREFIX","contentSitemapSection","collectionSlug","contentSitemapSectionSlug","section","startsWith","undefined","slug","slice","length","sitemapSectionPath","page","Math","max","floor","SITEMAP_SECTION_PATH","parseSitemapSectionPath","pathname","match","exec","Number","isFinite","decodeURIComponent","sitemapPageCount","urlCount","min","ceil","escapeSitemapXml","value","replace","sitemapLastmod","ms","Date","toISOString","sitemapLocationLastmod","location","lastmod","newestSitemapLastmod","lastmods","newest","uniqueSitemapLocations","locations","byLoc","Map","entry","loc","has","set","values","sitemapLocationXml","tag","date","sitemapUrlsetXml","urls","map","item","join","sitemapIndexXml","locs"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;;CAiBC,GAED,SAASA,SAAS,QAAQ,gBAAY;AAEtC,sEAAsE,GACtE,OAAO,MAAMC,qBAAqB,eAAc;AAEhD;;;;;;;;CAQC,GACD,OAAO,MAAMC,wBAAwB,KAAI;AAEzC;;;;;CAKC,GACD,OAAO,MAAMC,gCAAgC,IAAG;AAEhD,kEAAkE,GAClE,OAAO,MAAMC,wBAAwB,QAAO;AAC5C,OAAO,MAAMC,2BAA2B,WAAU;AAClD,OAAO,MAAMC,0BAA0B,UAAS;AAChD;;;;;;;CAOC,GACD,OAAO,MAAMC,0BAA0B,UAAS;AAEhD;;;;;;;;CAQC,GACD,MAAMC,yBAAyB;AAE/B,6DAA6D,GAC7D,OAAO,SAASC,sBAAsBC,cAAsB;IAC1D,OAAO,GAAGF,yBAAyBE,gBAAgB;AACrD;AAEA,6EAA6E,GAC7E,OAAO,SAASC,0BACdC,OAAe;IAEf,IAAI,CAACA,QAAQC,UAAU,CAACL,yBAAyB,OAAOM;IACxD,MAAMC,OAAOH,QAAQI,KAAK,CAACR,uBAAuBS,MAAM;IACxD,OAAOF,QAAQD;AACjB;AAEA;;;;;;;;;;CAUC,GACD,OAAO,SAASI,mBAAmBN,OAAe,EAAEO,IAAY;IAC9D,OAAO,CAAC,UAAU,EAAEP,QAAQ,CAAC,EAAEQ,KAAKC,GAAG,CAAC,GAAGD,KAAKE,KAAK,CAACH,OAAO,IAAI,CAAC;AACpE;AAEA,oFAAoF,GACpF,MAAMI,uBAAuB;AAE7B,gFAAgF,GAChF,OAAO,SAASC,wBACdC,QAAgB;IAEhB,MAAMC,QAAQH,qBAAqBI,IAAI,CAACF;IACxC,IAAI,CAACC,OAAO,OAAOZ;IACnB,MAAMK,OAAOS,OAAOF,KAAK,CAAC,EAAE;IAC5B,IAAI,CAACE,OAAOC,QAAQ,CAACV,SAASA,OAAO,GAAG,OAAOL;IAC/C,OAAO;QAAEF,SAASkB,mBAAmBJ,KAAK,CAAC,EAAE;QAAGP;IAAK;AACvD;AAEA;;;;CAIC,GACD,OAAO,SAASY,iBAAiBC,QAAgB;IAC/C,IAAI,CAACJ,OAAOC,QAAQ,CAACG,aAAaA,YAAY,GAAG,OAAO;IACxD,OAAOZ,KAAKa,GAAG,CACb9B,+BACAiB,KAAKc,IAAI,CAACF,WAAW9B;AAEzB;AAEA,yEAAyE,GACzE,OAAO,SAASiC,iBAAiBC,KAAa;IAC5C,OAAOA,MACJC,OAAO,CAAC,MAAM,SACdA,OAAO,CAAC,MAAM,QACdA,OAAO,CAAC,MAAM,QACdA,OAAO,CAAC,MAAM;AACnB;AASA;;;;;;;;;;;;;;CAcC,GACD,OAAO,SAASC,eAAeF,KAAc;IAC3C,MAAMG,KAAKvC,UAAUoC;IACrB,IAAIG,OAAOzB,aAAayB,MAAM,GAAG,OAAOzB;IACxC,OAAO,IAAI0B,KAAKD,IAAIE,WAAW,GAAGzB,KAAK,CAAC,GAAG;AAC7C;AAEA,8CAA8C,GAC9C,OAAO,SAAS0B,uBACdC,QAAyB;IAEzB,OAAO,OAAOA,aAAa,WAAW7B,YAAY6B,SAASC,OAAO;AACpE;AAEA;;;;;;;CAOC,GACD,OAAO,SAASC,qBACdC,QAAsC;IAEtC,IAAIC;IACJ,KAAK,MAAMH,WAAWE,SAAU;QAC9B,IAAIF,WAAY,CAAA,CAACG,UAAUH,UAAUG,MAAK,GAAIA,SAASH;IACzD;IACA,OAAOG;AACT;AAEA;;;;;;CAMC,GACD,SAASC,uBACPC,SAAqC;IAErC,MAAMC,QAAQ,IAAIC;IAClB,KAAK,MAAMR,YAAYM,UAAW;QAChC,MAAMG,QAAQ,OAAOT,aAAa,WAAW;YAAEU,KAAKV;QAAS,IAAIA;QACjE,IAAI,CAACO,MAAMI,GAAG,CAACF,MAAMC,GAAG,GAAG;YACzBH,MAAMK,GAAG,CAACH,MAAMC,GAAG,EAAE;gBAAEA,KAAKD,MAAMC,GAAG;gBAAET,SAASQ,MAAMR,OAAO;YAAC;QAChE;IACF;IACA,OAAO;WAAIM,MAAMM,MAAM;KAAG;AAC5B;AAEA,6EAA6E,GAC7E,SAASC,mBACPC,GAAsB,EACtB,EAAEL,GAAG,EAAET,OAAO,EAAqC;IAEnD,MAAMe,OAAOf,UAAU,CAAC,SAAS,EAAET,iBAAiBS,SAAS,UAAU,CAAC,GAAG;IAC3E,OAAO,CAAC,GAAG,EAAEc,IAAI,MAAM,EAAEvB,iBAAiBkB,KAAK,MAAM,EAAEM,KAAK,EAAE,EAAED,IAAI,CAAC,CAAC;AACxE;AAEA,2BAA2B,GAC3B,OAAO,SAASE,iBAAiBC,IAAgC;IAC/D,OACE,6CACA,mEACAb,uBAAuBa,MACpBC,GAAG,CAAC,CAACC,OAASN,mBAAmB,OAAOM,OACxCC,IAAI,CAAC,QACR;AAEJ;AAEA,kEAAkE,GAClE,OAAO,SAASC,gBAAgBC,IAAgC;IAC9D,OACE,6CACA,yEACAlB,uBAAuBkB,MACpBJ,GAAG,CAAC,CAACC,OAASN,mBAAmB,WAAWM,OAC5CC,IAAI,CAAC,QACR;AAEJ"}
|
|
@@ -0,0 +1,112 @@
|
|
|
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
|
+
* One candidate in the precedence list — the persisted shape of a social
|
|
19
|
+
* image on a host, a screen, or a template.
|
|
20
|
+
*/
|
|
21
|
+
export interface SocialImageSource {
|
|
22
|
+
/** A `media:` reference, a CDN path, or an author-supplied absolute URL. */
|
|
23
|
+
image?: string | null;
|
|
24
|
+
/**
|
|
25
|
+
* Pixel dimensions copied from the media record at pick time: the fallback
|
|
26
|
+
* when `assetFacts` records no usable pair for `image`.
|
|
27
|
+
*/
|
|
28
|
+
imageWidth?: number | null;
|
|
29
|
+
imageHeight?: number | null;
|
|
30
|
+
/**
|
|
31
|
+
* What the card SHOWS, for `og:image:alt` (AGL-2417). Defaulted from the
|
|
32
|
+
* chosen asset's own alt at pick time and overridable per surface. Read off
|
|
33
|
+
* the same source as `image`, never mixed across the precedence list.
|
|
34
|
+
*/
|
|
35
|
+
imageAlt?: string | null;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* What the head emits. `width`/`height` are present only as a valid pair, and
|
|
39
|
+
* `alt` only when the winning source actually carries one.
|
|
40
|
+
*
|
|
41
|
+
* Next's OpenGraph/Twitter image DESCRIPTOR accepts exactly these keys, and
|
|
42
|
+
* both tenant branches already spread this object into `images: [ … ]` — so
|
|
43
|
+
* `og:image:alt` and `twitter:image:alt` start being emitted with no change
|
|
44
|
+
* at either emit site.
|
|
45
|
+
*/
|
|
46
|
+
export interface ResolvedSocialImage {
|
|
47
|
+
url: string;
|
|
48
|
+
width?: number;
|
|
49
|
+
height?: number;
|
|
50
|
+
alt?: string;
|
|
51
|
+
}
|
|
52
|
+
/** The host fields the resolver needs: scope qualification and origin. */
|
|
53
|
+
export interface SocialImageHost {
|
|
54
|
+
$id?: string | null;
|
|
55
|
+
cname?: string | null;
|
|
56
|
+
subdomain?: string | null;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* What each library asset a card may name records NOW (AGL-2850): the pixel
|
|
60
|
+
* pair on its DAM document, keyed by the reference exactly as a source stores
|
|
61
|
+
* it (`media:{scope}/{mediaId}`, pinned or not).
|
|
62
|
+
*
|
|
63
|
+
* Built on the server from the batch the page's composition reads. A
|
|
64
|
+
* reference with no entry is one that read did not answer for, and its card
|
|
65
|
+
* keeps the pair stored beside it.
|
|
66
|
+
*/
|
|
67
|
+
export type SocialImageAssetFacts = Readonly<Record<string, {
|
|
68
|
+
width?: number | null;
|
|
69
|
+
height?: number | null;
|
|
70
|
+
}>>;
|
|
71
|
+
/**
|
|
72
|
+
* Resolves the social card image for a page.
|
|
73
|
+
*
|
|
74
|
+
* `sources` is the precedence list, most specific first — the tenant head
|
|
75
|
+
* passes `[entryCover, screen.seo, host.seo]` for a collection page and
|
|
76
|
+
* `[screen.seo, host.seo]` for a screen. The FIRST source carrying a
|
|
77
|
+
* non-empty `image` wins outright, together with its own dimensions.
|
|
78
|
+
*
|
|
79
|
+
* An empty string is a cleared field, not a value: it is how both pickers
|
|
80
|
+
* express "no image of my own" (the console writes it directly to Firestore
|
|
81
|
+
* rather than through the attributes form stack, which maps `''` to
|
|
82
|
+
* `undefined` and would make clearing impossible — AGL-1191). So clearing a
|
|
83
|
+
* screen's image means the host default applies again. There is deliberately
|
|
84
|
+
* no way for a screen to suppress the host default: the default exists so
|
|
85
|
+
* that every page has a card, and a page that wants none is not a case
|
|
86
|
+
* anyone has asked for. If one appears, add an explicit sentinel here — do
|
|
87
|
+
* not overload `''`, which cannot survive the form stack.
|
|
88
|
+
*/
|
|
89
|
+
export declare function resolveSocialImage(options: {
|
|
90
|
+
sources: Array<SocialImageSource | null | undefined>;
|
|
91
|
+
host?: SocialImageHost | null | undefined;
|
|
92
|
+
/**
|
|
93
|
+
* The origin to absolutize a site-relative URL against, for a surface that
|
|
94
|
+
* is not a tenant site and therefore has no host record to derive one from
|
|
95
|
+
* (AGL-876: the console's marketplace listing card).
|
|
96
|
+
*
|
|
97
|
+
* Takes precedence over the host, so a caller that has both is stating the
|
|
98
|
+
* origin it actually serves from rather than the one the host doc names.
|
|
99
|
+
* With neither, a relative URL still resolves to `undefined` — the rule in
|
|
100
|
+
* `absolutize` is unchanged, this only widens where the origin may come
|
|
101
|
+
* from.
|
|
102
|
+
*/
|
|
103
|
+
origin?: string | null;
|
|
104
|
+
/**
|
|
105
|
+
* What the named assets' DAM documents record now (AGL-2850). The winning
|
|
106
|
+
* source's pair comes from here when its own reference has a usable one,
|
|
107
|
+
* and from the copy stored beside the reference otherwise. A surface that
|
|
108
|
+
* read no documents omits it and emits the stored copy, as every surface
|
|
109
|
+
* did before.
|
|
110
|
+
*/
|
|
111
|
+
assetFacts?: SocialImageAssetFacts | null;
|
|
112
|
+
}): ResolvedSocialImage | undefined;
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2026 Aglyn LLC
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/ /**
|
|
18
|
+
* The social card image (AGL-1337).
|
|
19
|
+
*
|
|
20
|
+
* ## The gap this closes
|
|
21
|
+
*
|
|
22
|
+
* `buildMetadata` already read `screen.seo.image || host.seo.image`, and the
|
|
23
|
+
* collection branch already read `entry.coverImage` — but nothing in the
|
|
24
|
+
* console could WRITE either screen or host field, so on a site whose pages
|
|
25
|
+
* are screens rather than collection entries every share fell back to
|
|
26
|
+
* `twitter:card: summary`: the small, image-less card. Meanwhile 44 designed
|
|
27
|
+
* 1200×630 assets sat in the DAM with nowhere to be bound.
|
|
28
|
+
*
|
|
29
|
+
* ## Why one function rather than a branch each
|
|
30
|
+
*
|
|
31
|
+
* There were already two half-answers in one file — the content branch took
|
|
32
|
+
* the entry cover, the screen branch took the screen/host fields — and
|
|
33
|
+
* neither did the two things a crawler actually requires:
|
|
34
|
+
*
|
|
35
|
+
* 1. **The URL must be absolute.** A picked asset is stored as
|
|
36
|
+
* `media:{scope}/{mediaId}` and resolves to the site-RELATIVE path
|
|
37
|
+
* `/api/media/cdn/{scope}/{mediaId}`. A browser has a page to resolve that
|
|
38
|
+
* against; a crawler fetching `og:image` out of band does not. This is the
|
|
39
|
+
* same problem `resolveEmailMediaSrc` solves for inboxes, and the tenant
|
|
40
|
+
* app declares no `metadataBase`, so Next resolves nothing for us either.
|
|
41
|
+
* Worse, before this the stored value was passed through UNTOUCHED, so a
|
|
42
|
+
* `media:` reference reached `og:image` as the literal string `media:…`.
|
|
43
|
+
* 2. **`og:image:width`/`height` were emitted nowhere at all.** Both branches
|
|
44
|
+
* passed a bare string, and Next only emits the dimension tags for an
|
|
45
|
+
* object entry. Crawlers that pre-render a card without fetching the bytes
|
|
46
|
+
* need them to reserve the right box.
|
|
47
|
+
*
|
|
48
|
+
* So both branches call this, and the resolution order is a LIST rather than
|
|
49
|
+
* a chain of `||` at each call site: whoever adds a third surface inherits
|
|
50
|
+
* the absolute-URL and dimension handling instead of writing a third copy
|
|
51
|
+
* that forgets one of them.
|
|
52
|
+
*
|
|
53
|
+
* ## Where the dimensions come from (AGL-2850)
|
|
54
|
+
*
|
|
55
|
+
* Each picker copies {@link AglynHostMedia.width}/`height` — auto-captured at
|
|
56
|
+
* upload (AGL-173) — beside the reference it writes, and that copy is the
|
|
57
|
+
* FALLBACK. A replace (AGL-2732) keeps an asset's id and URL and rewrites its
|
|
58
|
+
* pair. It cannot reach the copies stored beside the references to it, so a
|
|
59
|
+
* card replaced with a picture of another shape went on declaring the old
|
|
60
|
+
* shape to the crawlers that lay a card out before fetching its image, while
|
|
61
|
+
* its URL served the new bytes (AGL-2798).
|
|
62
|
+
*
|
|
63
|
+
* So the page's composition reads the document of each asset a card may name
|
|
64
|
+
* (a screen's and the host's `seo.image`, an entry's cover, an author's
|
|
65
|
+
* pictures) and hands their pairs here as `assetFacts`
|
|
66
|
+
* (`libs/tenant/runtime/src/lib/social-image-facts.ts`). The winning source
|
|
67
|
+
* takes its asset's pair when the document records a usable one, and its
|
|
68
|
+
* stored copy when it does not: an SVG the upload could not measure, a file
|
|
69
|
+
* older than AGL-173, an asset the CDN would not serve to this site, a failed
|
|
70
|
+
* read. Each of those renders the card every page rendered before.
|
|
71
|
+
*
|
|
72
|
+
* This reverses the tradeoff this note used to record. The pair was stored so
|
|
73
|
+
* that `generateMetadata`, on the ISR render path under a cold-start budget
|
|
74
|
+
* (AGL-1152), never read a media document for a number that changes only when
|
|
75
|
+
* someone replaces the asset. The composition already reads the documents of
|
|
76
|
+
* the images and films a page places, in one projected batch, so the card's
|
|
77
|
+
* documents join that read instead of adding one. The page that composes
|
|
78
|
+
* nothing, a password-protected screen, reads its card's documents on its own
|
|
79
|
+
* in one projected read.
|
|
80
|
+
*
|
|
81
|
+
* The pair travels WITH its image and is never mixed across sources — taking
|
|
82
|
+
* a screen's image and the host's dimensions would describe a card that does
|
|
83
|
+
* not exist, which is worse than emitting no dimensions at all. A current pair
|
|
84
|
+
* is looked up by the winning source's own reference, so it cannot cross
|
|
85
|
+
* sources either.
|
|
86
|
+
*
|
|
87
|
+
* ## `og:image:alt` (AGL-2417)
|
|
88
|
+
*
|
|
89
|
+
* `imageAlt` is stored and carried by exactly the same rule, and for a
|
|
90
|
+
* stronger version of the same reason. Until this, NO tenant page emitted an
|
|
91
|
+
* alt at all: the type had nowhere to hold one, so every shared card
|
|
92
|
+
* announced itself to a screen reader as an undescribed image.
|
|
93
|
+
*
|
|
94
|
+
* The alt is captured at PICK time from the chosen DAM asset
|
|
95
|
+
* (`inheritedMediaAlt`, AGL-1896) and is editable per surface, rather than
|
|
96
|
+
* looked up at render — the cold-start argument above applies unchanged, and
|
|
97
|
+
* a per-surface override is what lets "our logo" become "the Q3 report cover"
|
|
98
|
+
* on the one page where that is what the card shows.
|
|
99
|
+
*
|
|
100
|
+
* Defaulting at pick time on ONE of the three storage sites would NOT have
|
|
101
|
+
* been enough, and this is the objection worth recording: the resolver picks
|
|
102
|
+
* whichever source wins for a given page, so an alt stored only on the host
|
|
103
|
+
* default would be emitted beside a SCREEN's image — a description of a
|
|
104
|
+
* picture the card does not show, which is worse than no description. It is
|
|
105
|
+
* therefore stored beside the reference at all three sites and read off the
|
|
106
|
+
* SAME source the URL came from, exactly as the dimensions are.
|
|
107
|
+
*/ import { hostPublicOrigin } from "./host-naming.js";
|
|
108
|
+
import { MEDIA_ALT_MAX_LENGTH } from "./media-metadata.js";
|
|
109
|
+
import { absoluteMediaSrc } from "./media-ref.js";
|
|
110
|
+
/**
|
|
111
|
+
* The alt, trimmed, or nothing.
|
|
112
|
+
*
|
|
113
|
+
* Blank is never emitted. `og:image:alt=""` is a positive assertion that the
|
|
114
|
+
* image conveys nothing — the decorative case — and a share card is by
|
|
115
|
+
* definition not decorative, so an empty string here would be a worse claim
|
|
116
|
+
* than the absent tag it replaced. It is also capped at the same length the
|
|
117
|
+
* DAM saves through, so an alt that reaches a card is one the library would
|
|
118
|
+
* also have stored.
|
|
119
|
+
*/ function alt(source) {
|
|
120
|
+
const value = typeof source.imageAlt === 'string' ? source.imageAlt.trim() : '';
|
|
121
|
+
return value ? {
|
|
122
|
+
alt: value.slice(0, MEDIA_ALT_MAX_LENGTH)
|
|
123
|
+
} : {};
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* A dimension pair is emitted only when BOTH sides are positive integers.
|
|
127
|
+
* Half a pair tells a crawler nothing and invites it to infer the other.
|
|
128
|
+
*/ function dimensions(source) {
|
|
129
|
+
const width = Number(source.imageWidth);
|
|
130
|
+
const height = Number(source.imageHeight);
|
|
131
|
+
if (!Number.isFinite(width) || !Number.isFinite(height)) return {};
|
|
132
|
+
if (width <= 0 || height <= 0) return {};
|
|
133
|
+
return {
|
|
134
|
+
width: Math.round(width),
|
|
135
|
+
height: Math.round(height)
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The pair a card emits: its asset's current one when `assetFacts` records a
|
|
140
|
+
* usable pair for the winning source's OWN reference, and otherwise the copy
|
|
141
|
+
* stored beside that reference. Both pass through {@link dimensions}, so the
|
|
142
|
+
* two cannot disagree about what a usable pair is.
|
|
143
|
+
*/ function currentDimensions(source, assetFacts) {
|
|
144
|
+
var _source_image;
|
|
145
|
+
const image = (_source_image = source.image) != null ? _source_image : '';
|
|
146
|
+
const recorded = assetFacts && Object.prototype.hasOwnProperty.call(assetFacts, image) ? assetFacts[image] : undefined;
|
|
147
|
+
const current = recorded ? dimensions({
|
|
148
|
+
imageWidth: recorded.width,
|
|
149
|
+
imageHeight: recorded.height
|
|
150
|
+
}) : {};
|
|
151
|
+
return current.width === undefined ? dimensions(source) : current;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Resolves the social card image for a page.
|
|
155
|
+
*
|
|
156
|
+
* `sources` is the precedence list, most specific first — the tenant head
|
|
157
|
+
* passes `[entryCover, screen.seo, host.seo]` for a collection page and
|
|
158
|
+
* `[screen.seo, host.seo]` for a screen. The FIRST source carrying a
|
|
159
|
+
* non-empty `image` wins outright, together with its own dimensions.
|
|
160
|
+
*
|
|
161
|
+
* An empty string is a cleared field, not a value: it is how both pickers
|
|
162
|
+
* express "no image of my own" (the console writes it directly to Firestore
|
|
163
|
+
* rather than through the attributes form stack, which maps `''` to
|
|
164
|
+
* `undefined` and would make clearing impossible — AGL-1191). So clearing a
|
|
165
|
+
* screen's image means the host default applies again. There is deliberately
|
|
166
|
+
* no way for a screen to suppress the host default: the default exists so
|
|
167
|
+
* that every page has a card, and a page that wants none is not a case
|
|
168
|
+
* anyone has asked for. If one appears, add an explicit sentinel here — do
|
|
169
|
+
* not overload `''`, which cannot survive the form stack.
|
|
170
|
+
*/ export function resolveSocialImage(options) {
|
|
171
|
+
const { sources, host, origin, assetFacts } = options;
|
|
172
|
+
const source = sources.find((candidate)=>Boolean(candidate == null ? void 0 : candidate.image));
|
|
173
|
+
if (!(source == null ? void 0 : source.image)) return undefined;
|
|
174
|
+
// A `media:` reference becomes the site-relative CDN path, host-qualified
|
|
175
|
+
// so a restricted org asset resolves for the site actually rendering, and is
|
|
176
|
+
// then absolutized because a crawler reads `og:image` out of band; any other
|
|
177
|
+
// string passes through untouched (back-compat with the raw storage URLs the
|
|
178
|
+
// content and favicon pickers have always written). Both halves live in
|
|
179
|
+
// `media-ref.ts` (AGL-1407) so the manifest and the inbox share this rule
|
|
180
|
+
// rather than each keeping a copy that can drift.
|
|
181
|
+
const url = absoluteMediaSrc(source.image, {
|
|
182
|
+
hostId: host == null ? void 0 : host.$id,
|
|
183
|
+
origin: origin || hostPublicOrigin(host)
|
|
184
|
+
});
|
|
185
|
+
if (!url) return undefined;
|
|
186
|
+
return _extends({
|
|
187
|
+
url
|
|
188
|
+
}, currentDimensions(source, assetFacts), alt(source));
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
//# sourceMappingURL=social-image.js.map
|