@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,771 @@
|
|
|
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
|
+
*/ import { HostEntityType } from "../foundation/definitions/platform.types.js";
|
|
18
|
+
import { MEDIA_ALT_MAX_LENGTH } from "./media-metadata.js";
|
|
19
|
+
import { absoluteMediaSrc } from "./media-ref.js";
|
|
20
|
+
import { urlSlugSegment } from "./url-slug.js";
|
|
21
|
+
/**
|
|
22
|
+
* Custom content authors (AGL-2486).
|
|
23
|
+
*
|
|
24
|
+
* ## An author is a RECORD, not an account
|
|
25
|
+
*
|
|
26
|
+
* Until now a post's byline was `entry.authorName` — one free-typed string
|
|
27
|
+
* (AGL-686), retyped on every entry, with no url, no portrait, no social
|
|
28
|
+
* profiles and no way to say the piece was written by the company rather than
|
|
29
|
+
* a person. That is enough to print a name under a headline and not enough to
|
|
30
|
+
* be `schema.org/author`, which wants an ENTITY: something with a stable
|
|
31
|
+
* identity a crawler can join across articles and against the site's own
|
|
32
|
+
* publisher entity.
|
|
33
|
+
*
|
|
34
|
+
* So the author becomes a document the customer authors and an entry
|
|
35
|
+
* REFERENCES (`entry.authorId`). Publishing a piece under a pen name, a guest
|
|
36
|
+
* contributor, or the company itself is then the ordinary case rather than a
|
|
37
|
+
* retyped string, and renaming an author updates every post at render time —
|
|
38
|
+
* the same property `categoryId` bought the taxonomy in AGL-582.
|
|
39
|
+
*
|
|
40
|
+
* ## Scope: the HOST, at `hosts/{hostId}/authors/{authorId}`
|
|
41
|
+
*
|
|
42
|
+
* Not the org, and this follows the data rather than inventing a rule.
|
|
43
|
+
* Content collections live at `hosts/{hostId}/collections/{collectionId}` and
|
|
44
|
+
* their entries underneath; the console surface that manages them is
|
|
45
|
+
* `/[orgSlug]/hosts/[host]/content`; and the entity an author has to
|
|
46
|
+
* serialise consistently with — `host.seo.entity`, the site's publisher — is
|
|
47
|
+
* a field of the host document. An author referenced from an entry therefore
|
|
48
|
+
* resolves inside the same document tree the entry already lives in, with the
|
|
49
|
+
* host's existing rules and the tenant's existing Admin-SDK reads. An
|
|
50
|
+
* org-scoped store would need a second root, a second read on every entry
|
|
51
|
+
* render, and a sharing model ("which sites may publish under this byline")
|
|
52
|
+
* that nothing in the product asks for yet.
|
|
53
|
+
*
|
|
54
|
+
* ## The type is a BRANCH, not a label
|
|
55
|
+
*
|
|
56
|
+
* `schema.org/Person` and `schema.org/Organization` do not carry the same
|
|
57
|
+
* fields: a Person has `jobTitle` and `worksFor` and its portrait is `image`;
|
|
58
|
+
* an Organization has no job title and its mark is `logo`. Emitting one
|
|
59
|
+
* shape with the other's keys is invalid structured data that validates as
|
|
60
|
+
* "ignored", so {@link contentAuthorJsonLd} branches on the type and the
|
|
61
|
+
* console hides the fields that do not apply.
|
|
62
|
+
*/ /**
|
|
63
|
+
* How many authors one host may hold (AGL-2486).
|
|
64
|
+
*
|
|
65
|
+
* A flat PLATFORM cap, deliberately, in the shape of
|
|
66
|
+
* `ENTRIES_MAX_PER_COLLECTION` / `ACTIONS_MAX_PER_HOST` (AGL-2266) and
|
|
67
|
+
* `WEBHOOK_MAX_PER_HOST` (AGL-1360): nothing here is priced, no
|
|
68
|
+
* `OrgEntitlements` key is added, every plan gets the same number. The reason
|
|
69
|
+
* a number exists at all is the one those issues wrote down — a
|
|
70
|
+
* client-creatable host subcollection with no cap is unbounded Firestore
|
|
71
|
+
* documents mintable from the browser against a $0 subscription — and adding
|
|
72
|
+
* a new subcollection without one would be that hole, freshly dug.
|
|
73
|
+
*
|
|
74
|
+
* 200 is far past any real masthead (the largest content collection in
|
|
75
|
+
* production holds double digits of ENTRIES, let alone bylines) and small
|
|
76
|
+
* enough that the console can list every author in a single unpaginated read.
|
|
77
|
+
*/ export const AUTHORS_MAX_PER_HOST = 200;
|
|
78
|
+
/** Longest stored author name; the byline is a name, not a paragraph. */ export const AUTHOR_NAME_MAX_LENGTH = 120;
|
|
79
|
+
/** Longest stored author slug; it is one path segment, not a sentence. */ export const AUTHOR_SLUG_MAX_LENGTH = 80;
|
|
80
|
+
/**
|
|
81
|
+
* The site-wide segment an author's page lives under (AGL-2518):
|
|
82
|
+
* `/author/{slug}`, and `/author/{slug}/page/{n}` after it.
|
|
83
|
+
*
|
|
84
|
+
* Singular, and site-wide rather than nested under a collection. AGL-2517
|
|
85
|
+
* put this archive at `/{collection}/author/{slug}`, which gives one person
|
|
86
|
+
* as many pages as the site has collections — three partial archives of the
|
|
87
|
+
* same author, none of them the address a byline should link to, all three
|
|
88
|
+
* competing for the same search result. A person is not a property of a
|
|
89
|
+
* collection.
|
|
90
|
+
*
|
|
91
|
+
* NOT added to `RESERVED_SCREEN_ROUTE_SEGMENTS`. The catch-all resolves
|
|
92
|
+
* published screens BEFORE it reaches this route, exactly as it does for a
|
|
93
|
+
* collection's own `/{slug}`, so a site that already publishes a page at
|
|
94
|
+
* `/author` keeps it and simply has no author pages — the same trade every
|
|
95
|
+
* other platform-built address on a tenant site makes.
|
|
96
|
+
*/ export const AUTHOR_ROUTE_SEGMENT = 'author';
|
|
97
|
+
/** Most `sameAs` profile links one author may carry. */ export const AUTHOR_SAME_AS_MAX = 12;
|
|
98
|
+
/** Most display links one author may carry. */ export const AUTHOR_LINKS_MAX = 12;
|
|
99
|
+
/**
|
|
100
|
+
* The platforms whose mark is fixed (AGL-2516).
|
|
101
|
+
*
|
|
102
|
+
* `icon` is an `mdi` id, resolved to a path by whichever surface draws it —
|
|
103
|
+
* the renderer imports these few directly rather than through the catalog,
|
|
104
|
+
* because the set is closed and known at build time.
|
|
105
|
+
*
|
|
106
|
+
* Ordered as a masthead would list them rather than alphabetically: the
|
|
107
|
+
* places writers are actually followed first, then the ways to reach them.
|
|
108
|
+
*/ export const AUTHOR_SOCIAL_PLATFORMS = [
|
|
109
|
+
{
|
|
110
|
+
id: 'x',
|
|
111
|
+
label: 'X',
|
|
112
|
+
icon: 'twitter'
|
|
113
|
+
},
|
|
114
|
+
{
|
|
115
|
+
id: 'linkedin',
|
|
116
|
+
label: 'LinkedIn',
|
|
117
|
+
icon: 'linkedin'
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
id: 'github',
|
|
121
|
+
label: 'GitHub',
|
|
122
|
+
icon: 'github'
|
|
123
|
+
},
|
|
124
|
+
{
|
|
125
|
+
id: 'mastodon',
|
|
126
|
+
label: 'Mastodon',
|
|
127
|
+
icon: 'mastodon'
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
id: 'youtube',
|
|
131
|
+
label: 'YouTube',
|
|
132
|
+
icon: 'youtube'
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
id: 'instagram',
|
|
136
|
+
label: 'Instagram',
|
|
137
|
+
icon: 'instagram'
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
id: 'facebook',
|
|
141
|
+
label: 'Facebook',
|
|
142
|
+
icon: 'facebook'
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
id: 'website',
|
|
146
|
+
label: 'Website',
|
|
147
|
+
icon: 'web'
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
id: 'email',
|
|
151
|
+
label: 'Email',
|
|
152
|
+
icon: 'email'
|
|
153
|
+
},
|
|
154
|
+
{
|
|
155
|
+
id: 'rss',
|
|
156
|
+
label: 'RSS',
|
|
157
|
+
icon: 'rss'
|
|
158
|
+
}
|
|
159
|
+
];
|
|
160
|
+
/** The platform a link declares, or `undefined` when it is a custom one. */ export function authorLinkPlatform(platform) {
|
|
161
|
+
const id = typeof platform === 'string' ? platform.trim() : '';
|
|
162
|
+
if (!id) return undefined;
|
|
163
|
+
return AUTHOR_SOCIAL_PLATFORMS.find((entry)=>entry.id === id);
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* What a link is CALLED, which is never the author's choice on a known
|
|
167
|
+
* platform.
|
|
168
|
+
*
|
|
169
|
+
* A custom link with no label falls back to its own URL rather than to
|
|
170
|
+
* something generic: "Link" beside four other "Link"s is not an accessible
|
|
171
|
+
* name, and the URL at least distinguishes them.
|
|
172
|
+
*/ export function authorLinkLabel(link) {
|
|
173
|
+
const known = authorLinkPlatform(link.platform);
|
|
174
|
+
if (known) return known.label;
|
|
175
|
+
return text(link.label, 60) || text(link.url, 400);
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Schemes an author link may use.
|
|
179
|
+
*
|
|
180
|
+
* `https:` and `mailto:` only, matching the share bar and the Entry Author
|
|
181
|
+
* card's own href guard. `http:` is excluded deliberately — a byline link is
|
|
182
|
+
* published on every post its author wrote, and a mixed-content warning
|
|
183
|
+
* across a whole archive is a poor trade for a scheme nobody should still be
|
|
184
|
+
* publishing. Everything else, `javascript:` first among them, is a script
|
|
185
|
+
* injection wearing a URL.
|
|
186
|
+
*/ const SAFE_AUTHOR_LINK_HREF = /^(https:\/\/|mailto:)/i;
|
|
187
|
+
/**
|
|
188
|
+
* Sanitize the stored link rows into the shape a renderer may assume.
|
|
189
|
+
*
|
|
190
|
+
* Drops any row without a usable, safely-schemed URL — a link that goes
|
|
191
|
+
* nowhere is worse than an absent one, because it still takes a click. A row
|
|
192
|
+
* naming a platform keeps ONLY the platform (its label and icon come from the
|
|
193
|
+
* registry, so a stored label or icon beside one is stale data that must not
|
|
194
|
+
* win); a custom row keeps its label and icon and drops any platform id that
|
|
195
|
+
* did not resolve.
|
|
196
|
+
*/ export function normalizeContentAuthorLinks(value) {
|
|
197
|
+
if (!Array.isArray(value)) return [];
|
|
198
|
+
const links = [];
|
|
199
|
+
for (const row of value){
|
|
200
|
+
if (!row || typeof row !== 'object') continue;
|
|
201
|
+
const raw = row;
|
|
202
|
+
const url = text(raw['url'], 400);
|
|
203
|
+
if (!url || !SAFE_AUTHOR_LINK_HREF.test(url)) continue;
|
|
204
|
+
const known = authorLinkPlatform(raw['platform']);
|
|
205
|
+
if (known) {
|
|
206
|
+
links.push({
|
|
207
|
+
platform: known.id,
|
|
208
|
+
url
|
|
209
|
+
});
|
|
210
|
+
} else {
|
|
211
|
+
links.push({
|
|
212
|
+
label: text(raw['label'], 60),
|
|
213
|
+
icon: text(raw['icon'], 120),
|
|
214
|
+
iconPath: text(raw['iconPath'], 4000),
|
|
215
|
+
url
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
if (links.length >= AUTHOR_LINKS_MAX) break;
|
|
219
|
+
}
|
|
220
|
+
return links;
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* The author's schema type, tolerant of every spelling the store holds.
|
|
224
|
+
*
|
|
225
|
+
* The numeric enum is what `HostEntityType` declares, but the Setup → SEO →
|
|
226
|
+
* Entity form persists its Select value — a TEMPLATE LITERAL, i.e. the string
|
|
227
|
+
* `"1"` or `"2"` — and the tenant's structured data compared that with
|
|
228
|
+
* `=== HostEntityType.PERSON` (the number `2`). Strict equality across a
|
|
229
|
+
* string and a number is always false, so a site that declared itself a
|
|
230
|
+
* Person published `"@type": "Organization"` regardless (AGL-2486). Coercing
|
|
231
|
+
* here, once, is what stops the same defect being re-derived per call site.
|
|
232
|
+
*
|
|
233
|
+
* Anything unrecognised — absent, empty, a stray value — resolves to
|
|
234
|
+
* `Organization`, which is the default this repo has always emitted.
|
|
235
|
+
*/ export function contentAuthorSchemaType(type) {
|
|
236
|
+
return Number(type) === HostEntityType.PERSON ? 'Person' : 'Organization';
|
|
237
|
+
}
|
|
238
|
+
const text = (value, max = AUTHOR_NAME_MAX_LENGTH)=>typeof value === 'string' ? value.trim().slice(0, max) : '';
|
|
239
|
+
/**
|
|
240
|
+
* A stored author document, sanitized into the shape the rest of the codebase
|
|
241
|
+
* may assume — the {@link mapCollectionCategories} treatment, one collection
|
|
242
|
+
* over: only strings survive, `sameAs` keeps string entries only, and an
|
|
243
|
+
* author with no name resolves to `null` because a nameless byline is not a
|
|
244
|
+
* byline and `schema.org` requires `name` on both branches.
|
|
245
|
+
*/ export function normalizeContentAuthor(value, id) {
|
|
246
|
+
if (!value || typeof value !== 'object') return null;
|
|
247
|
+
const raw = value;
|
|
248
|
+
const name = text(raw['name']);
|
|
249
|
+
if (!name) return null;
|
|
250
|
+
const sameAs = Array.isArray(raw['sameAs']) ? raw['sameAs'].map((item)=>text(item, 400)).filter(Boolean).slice(0, AUTHOR_SAME_AS_MAX) : [];
|
|
251
|
+
return _extends({}, id ? {
|
|
252
|
+
$id: id
|
|
253
|
+
} : typeof raw['$id'] === 'string' ? {
|
|
254
|
+
$id: raw['$id']
|
|
255
|
+
} : {}, {
|
|
256
|
+
type: contentAuthorSchemaType(raw['type']) === 'Person' ? HostEntityType.PERSON : HostEntityType.ORGANIZATION,
|
|
257
|
+
name,
|
|
258
|
+
// Through the URL slugifier rather than stored raw: this is a path
|
|
259
|
+
// segment, and a stored `Chris Taylor` would build `/author/Chris Taylor`
|
|
260
|
+
// while every incoming request arrived slugified and matched nothing.
|
|
261
|
+
slug: urlSlugSegment(text(raw['slug'], AUTHOR_SLUG_MAX_LENGTH)),
|
|
262
|
+
url: text(raw['url'], 400),
|
|
263
|
+
image: text(raw['image'], 1000),
|
|
264
|
+
jobTitle: text(raw['jobTitle']),
|
|
265
|
+
worksFor: text(raw['worksFor']),
|
|
266
|
+
sameAs,
|
|
267
|
+
links: normalizeContentAuthorLinks(raw['links']),
|
|
268
|
+
bio: text(raw['bio'], 600),
|
|
269
|
+
// Shorter than the bio it overrides, because it is read alone in a search
|
|
270
|
+
// result rather than beside a heading — past this nothing survives the
|
|
271
|
+
// snippet, so storing more only hides the cut from whoever wrote it.
|
|
272
|
+
seoDescription: text(raw['seoDescription'], 300),
|
|
273
|
+
seoImage: text(raw['seoImage'], 1000),
|
|
274
|
+
seoImageAlt: text(raw['seoImageAlt'], MEDIA_ALT_MAX_LENGTH)
|
|
275
|
+
});
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* The segment that addresses one author's page.
|
|
279
|
+
*
|
|
280
|
+
* Precedence is the author's stored {@link ContentAuthorRecord.slug} first
|
|
281
|
+
* and the slugified name second — the opposite of what AGL-2517 built, which
|
|
282
|
+
* put the record ID first "so the link survives a rename".
|
|
283
|
+
*
|
|
284
|
+
* A Firestore auto-id does survive a rename, and it is also unreadable. This
|
|
285
|
+
* is a PUBLIC address on a marketing site: it goes in a byline, a share
|
|
286
|
+
* sheet, a CV. `/author/hT3kQ9xLmZ2` is not an address anyone can read, and
|
|
287
|
+
* the rename it protects against is answered better by the stored slug, which
|
|
288
|
+
* is stable AND readable. The id is still ACCEPTED on the way in (see
|
|
289
|
+
* `entryMatchesAuthorRoute`), so a link built under the old precedence keeps
|
|
290
|
+
* resolving.
|
|
291
|
+
*
|
|
292
|
+
* Empty when there is nothing addressable, so a caller renders plain text
|
|
293
|
+
* rather than a link to `/author/`.
|
|
294
|
+
*/ export function contentAuthorSlug(options) {
|
|
295
|
+
var _options_author, _options_author1, _options_author2;
|
|
296
|
+
return urlSlugSegment((_options_author = options.author) == null ? void 0 : _options_author.slug) || urlSlugSegment((_options_author1 = options.author) == null ? void 0 : _options_author1.name) || urlSlugSegment(options.authorName) || urlSlugSegment(options.authorId) || urlSlugSegment((_options_author2 = options.author) == null ? void 0 : _options_author2.$id);
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Every segment that should resolve to this author.
|
|
300
|
+
*
|
|
301
|
+
* The archive answers to the stored slug, the display name, the legacy
|
|
302
|
+
* free-typed byline and the record id, because which of those a link happens
|
|
303
|
+
* to carry depends on when it was built and by what — and a byline that
|
|
304
|
+
* 404s is worse than one pointing at a page with an unexpected URL.
|
|
305
|
+
*
|
|
306
|
+
* Deduped, and empties dropped: a set containing `''` would match a request
|
|
307
|
+
* for `/author/` against every author on the site.
|
|
308
|
+
*/ export function contentAuthorSlugCandidates(options) {
|
|
309
|
+
var _options_author, _options_author1, _options_author2;
|
|
310
|
+
return Array.from(new Set([
|
|
311
|
+
(_options_author = options.author) == null ? void 0 : _options_author.slug,
|
|
312
|
+
(_options_author1 = options.author) == null ? void 0 : _options_author1.name,
|
|
313
|
+
options.authorName,
|
|
314
|
+
options.authorId,
|
|
315
|
+
(_options_author2 = options.author) == null ? void 0 : _options_author2.$id
|
|
316
|
+
].map((value)=>urlSlugSegment(value)).filter(Boolean)));
|
|
317
|
+
}
|
|
318
|
+
/** Does `slug` address this author? */ export function contentAuthorMatchesSlug(options, slug) {
|
|
319
|
+
const wanted = urlSlugSegment(slug);
|
|
320
|
+
if (!wanted) return false;
|
|
321
|
+
return contentAuthorSlugCandidates(options).includes(wanted);
|
|
322
|
+
}
|
|
323
|
+
/**
|
|
324
|
+
* The author's page on this site — `/author/{slug}` (AGL-2518).
|
|
325
|
+
*
|
|
326
|
+
* Empty when nothing addresses the author, which is what lets a template bind
|
|
327
|
+
* this unconditionally: a link whose href does not resolve renders as inert
|
|
328
|
+
* markup of the same element (AGL-1268/1357), so an entry with no byline
|
|
329
|
+
* shows no link rather than one pointing nowhere.
|
|
330
|
+
*/ export function contentAuthorPageUrl(options) {
|
|
331
|
+
const slug = contentAuthorSlug(options);
|
|
332
|
+
return slug ? `/${AUTHOR_ROUTE_SEGMENT}/${slug}` : '';
|
|
333
|
+
}
|
|
334
|
+
/**
|
|
335
|
+
* The paginated sub-path of an author page — `/author/{slug}/page/{n}`.
|
|
336
|
+
*
|
|
337
|
+
* The same word the collection listing pages with, deliberately: a reader who
|
|
338
|
+
* has learned one URL shape on the site has learned both, and a second
|
|
339
|
+
* spelling would buy nothing. Declared here rather than imported from
|
|
340
|
+
* `collection-entries`, which imports THIS module.
|
|
341
|
+
*/ const AUTHOR_PAGE_SEGMENT = 'page';
|
|
342
|
+
/**
|
|
343
|
+
* The canonical URL of one page of an author's archive (AGL-2518).
|
|
344
|
+
*
|
|
345
|
+
* Page 1 is the bare `/author/{slug}` — there is no `/author/{slug}/page/1`,
|
|
346
|
+
* so the first page cannot become a second address for itself. The rule
|
|
347
|
+
* `collectionListUrl` states, one route over.
|
|
348
|
+
*/ export function contentAuthorPageAtUrl(options) {
|
|
349
|
+
const base = contentAuthorPageUrl(options);
|
|
350
|
+
if (!base) return '';
|
|
351
|
+
const page = Number(options.page);
|
|
352
|
+
return Number.isFinite(page) && page > 1 ? `${base}/${AUTHOR_PAGE_SEGMENT}/${Math.floor(page)}` : base;
|
|
353
|
+
}
|
|
354
|
+
/**
|
|
355
|
+
* Where an author archive's pager can go from here (AGL-2518).
|
|
356
|
+
*
|
|
357
|
+
* The `collectionPaginationLinks` contract, restated for this route: **the
|
|
358
|
+
* edges resolve to the empty string, never to a URL**, which is what lets a
|
|
359
|
+
* designed author template bind `{{pagination.prevUrl}}` unconditionally. A
|
|
360
|
+
* link whose href is `''` renders as an inert placeholder of the same element
|
|
361
|
+
* (AGL-1268/1357), which is the correct pager on page 1 of 1.
|
|
362
|
+
*
|
|
363
|
+
* ONE computation, because it has the same two consumers that must agree: the
|
|
364
|
+
* built-in fallback's pager nodes and the tokens a template binds.
|
|
365
|
+
*/ export function contentAuthorPaginationLinks(options) {
|
|
366
|
+
const positive = (value)=>{
|
|
367
|
+
const parsed = Math.floor(Number(value));
|
|
368
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : 1;
|
|
369
|
+
};
|
|
370
|
+
const page = positive(options.page);
|
|
371
|
+
const totalPages = positive(options.totalPages);
|
|
372
|
+
const href = (n)=>contentAuthorPageAtUrl(_extends({}, options, {
|
|
373
|
+
page: n
|
|
374
|
+
}));
|
|
375
|
+
return {
|
|
376
|
+
page,
|
|
377
|
+
totalPages,
|
|
378
|
+
prevUrl: page > 1 ? href(page - 1) : '',
|
|
379
|
+
nextUrl: page < totalPages ? href(page + 1) : ''
|
|
380
|
+
};
|
|
381
|
+
}
|
|
382
|
+
/**
|
|
383
|
+
* Parse a path into an author route, or `null` when the path is not one.
|
|
384
|
+
*
|
|
385
|
+
* The two shapes are `/author/{slug}` and `/author/{slug}/page/{n}`, matching
|
|
386
|
+
* the collection listing's own pagination so a reader who has learned one URL
|
|
387
|
+
* shape on the site has learned both.
|
|
388
|
+
*
|
|
389
|
+
* A pure parser, deliberately, for the reason `parseCollectionRoute` is one:
|
|
390
|
+
* the tenant loader and its tests must not be able to disagree about what the
|
|
391
|
+
* route table says. Page `0`, a negative page and a non-numeric page all
|
|
392
|
+
* resolve to `null` rather than to page 1, so a nonsense URL 404s instead of
|
|
393
|
+
* silently serving the first page under a second address.
|
|
394
|
+
*/ export function parseContentAuthorRoute(segments) {
|
|
395
|
+
const parts = (segments != null ? segments : []).filter(Boolean);
|
|
396
|
+
if (parts[0] !== AUTHOR_ROUTE_SEGMENT) return null;
|
|
397
|
+
const authorSlug = urlSlugSegment(parts[1]);
|
|
398
|
+
if (!authorSlug) return null;
|
|
399
|
+
if (parts.length === 2) return {
|
|
400
|
+
authorSlug,
|
|
401
|
+
page: 1
|
|
402
|
+
};
|
|
403
|
+
if (parts.length === 4 && parts[2] === AUTHOR_PAGE_SEGMENT) {
|
|
404
|
+
const page = Number(parts[3]);
|
|
405
|
+
return Number.isInteger(page) && page >= 1 ? {
|
|
406
|
+
authorSlug,
|
|
407
|
+
page
|
|
408
|
+
} : null;
|
|
409
|
+
}
|
|
410
|
+
return null;
|
|
411
|
+
}
|
|
412
|
+
/**
|
|
413
|
+
* `schema.org` JSON-LD for one author (AGL-2486) — a `Person` or an
|
|
414
|
+
* `Organization`, with the fields that branch actually defines.
|
|
415
|
+
*
|
|
416
|
+
* | field | Person | Organization |
|
|
417
|
+
* | ---------- | ------------------------- | ------------ |
|
|
418
|
+
* | `name` | required | required |
|
|
419
|
+
* | `url` | optional | optional |
|
|
420
|
+
* | portrait | `image` | `logo` |
|
|
421
|
+
* | `jobTitle` | optional | — not valid |
|
|
422
|
+
* | `worksFor` | optional (`Organization`) | — not valid |
|
|
423
|
+
* | `sameAs` | optional | optional |
|
|
424
|
+
*
|
|
425
|
+
* The image goes through {@link absoluteMediaSrc}, the same resolver
|
|
426
|
+
* `og:image` and `Article.image` use (AGL-1343/1407), so a portrait picked
|
|
427
|
+
* from the DAM reaches the structured data as a fetchable absolute URL rather
|
|
428
|
+
* than the literal string `media:{scope}/{id}`. An unresolvable reference —
|
|
429
|
+
* or a site-relative path with no origin to resolve against — emits NO image
|
|
430
|
+
* key at all rather than a broken one.
|
|
431
|
+
*
|
|
432
|
+
* Returns `undefined` for an author with no usable name, so every call site
|
|
433
|
+
* can spread the result conditionally instead of emitting `"author": null`.
|
|
434
|
+
*
|
|
435
|
+
* ## Escaping
|
|
436
|
+
*
|
|
437
|
+
* Nothing is escaped HERE, and that is correct: this returns a VALUE, and the
|
|
438
|
+
* one place a value becomes markup is `Aglyn.safeJsonLd`, which every
|
|
439
|
+
* `<script type="application/ld+json">` in the repo is built with. It escapes
|
|
440
|
+
* `<`, `>`, `&` and U+2028/U+2029 to their `\uXXXX` forms after
|
|
441
|
+
* `JSON.stringify`, so an author named `</script><img onerror=…>` serialises
|
|
442
|
+
* as inert text rather than closing the element (AGL-496). Escaping a second
|
|
443
|
+
* time here would double-encode and put literal backslashes in a byline.
|
|
444
|
+
*/ export function contentAuthorJsonLd(author, context) {
|
|
445
|
+
var _normalized_sameAs, _normalized_links;
|
|
446
|
+
const normalized = normalizeContentAuthor(author, author == null ? void 0 : author.$id);
|
|
447
|
+
if (!normalized) return undefined;
|
|
448
|
+
const schemaType = contentAuthorSchemaType(normalized.type);
|
|
449
|
+
const image = absoluteMediaSrc(normalized.image, {
|
|
450
|
+
hostId: context == null ? void 0 : context.hostId,
|
|
451
|
+
origin: context == null ? void 0 : context.origin
|
|
452
|
+
});
|
|
453
|
+
const sameAs = Array.from(new Set([
|
|
454
|
+
...(_normalized_sameAs = normalized.sameAs) != null ? _normalized_sameAs : [],
|
|
455
|
+
...((_normalized_links = normalized.links) != null ? _normalized_links : []).map((link)=>{
|
|
456
|
+
var _link_url;
|
|
457
|
+
return (_link_url = link.url) != null ? _link_url : '';
|
|
458
|
+
}).filter((url)=>/^https:\/\//i.test(url))
|
|
459
|
+
])).slice(0, AUTHOR_SAME_AS_MAX);
|
|
460
|
+
return _extends({
|
|
461
|
+
'@type': schemaType,
|
|
462
|
+
name: normalized.name
|
|
463
|
+
}, normalized.url ? {
|
|
464
|
+
url: normalized.url
|
|
465
|
+
} : {}, image ? schemaType === 'Person' ? {
|
|
466
|
+
image
|
|
467
|
+
} : {
|
|
468
|
+
logo: image
|
|
469
|
+
} : {}, schemaType === 'Person' && normalized.jobTitle ? {
|
|
470
|
+
jobTitle: normalized.jobTitle
|
|
471
|
+
} : {}, schemaType === 'Person' && normalized.worksFor ? {
|
|
472
|
+
worksFor: {
|
|
473
|
+
'@type': 'Organization',
|
|
474
|
+
name: normalized.worksFor
|
|
475
|
+
}
|
|
476
|
+
} : {}, sameAs.length ? {
|
|
477
|
+
sameAs
|
|
478
|
+
} : {});
|
|
479
|
+
}
|
|
480
|
+
/**
|
|
481
|
+
* `schema.org` JSON-LD for the SITE entity (`host.seo.entity`) — the value
|
|
482
|
+
* `Article.publisher` and `WebSite.publisher` are built from.
|
|
483
|
+
*
|
|
484
|
+
* Lives beside {@link contentAuthorJsonLd} on purpose (AGL-2486): a site
|
|
485
|
+
* entity and a post author answer the same question about two different
|
|
486
|
+
* subjects, and the reason the Person branch was broken for two years is that
|
|
487
|
+
* the answer was written inline at its one call site where nothing could
|
|
488
|
+
* test it. One module, two entry points, one `Person`/`Organization`
|
|
489
|
+
* decision — {@link contentAuthorSchemaType}.
|
|
490
|
+
*
|
|
491
|
+
* `logo` is emitted verbatim on BOTH branches, unchanged from what the tenant
|
|
492
|
+
* has always published. It is `host.seo.entity.logo`, a plain URL field on
|
|
493
|
+
* the Setup form rather than a media-picker target, and re-keying it to
|
|
494
|
+
* `image` for a Person would change the publisher block on every page of
|
|
495
|
+
* every site that set one — a separate decision from this one.
|
|
496
|
+
*/ export function hostSeoEntityJsonLd(entity) {
|
|
497
|
+
const name = text(entity == null ? void 0 : entity.name, 400);
|
|
498
|
+
if (!name) return undefined;
|
|
499
|
+
return {
|
|
500
|
+
'@type': contentAuthorSchemaType(entity == null ? void 0 : entity.type),
|
|
501
|
+
name
|
|
502
|
+
};
|
|
503
|
+
}
|
|
504
|
+
/**
|
|
505
|
+
* The publisher's picture, under the property its TYPE actually has
|
|
506
|
+
* (AGL-2486).
|
|
507
|
+
*
|
|
508
|
+
* `schema.org` gives `logo` to an Organization and not to a Person; a Person
|
|
509
|
+
* carries `image`. The tenant emitted `logo` for both, so a site that declared
|
|
510
|
+
* itself a Person published a property its own `@type` does not define —
|
|
511
|
+
* ignored by every consumer, which is the worst kind of wrong: the field is
|
|
512
|
+
* set, the console says it is published, and nothing renders it.
|
|
513
|
+
*
|
|
514
|
+
* That is the same shape as the bug one function up, where a string `"2"` was
|
|
515
|
+
* compared with a numeric enum and no site could ever publish `Person` at all.
|
|
516
|
+
* Both resolve here so the type is decided in exactly one place.
|
|
517
|
+
*
|
|
518
|
+
* Returns a spreadable object so callers stay a spread rather than a ternary:
|
|
519
|
+
* `{...hostSeoEntityImageJsonLd(entity)}` adds nothing when there is no
|
|
520
|
+
* picture, which is what an absent property should cost.
|
|
521
|
+
*/ export function hostSeoEntityImageJsonLd(entity, context) {
|
|
522
|
+
/*
|
|
523
|
+
Through `absoluteMediaSrc`, exactly as an author's portrait goes
|
|
524
|
+
(AGL-1343/1407). The stored value has three generations — a raw storage
|
|
525
|
+
URL, a site-relative CDN path, and a `media:` reference — and the site
|
|
526
|
+
entity's was the one path still emitting whichever it found. A `media:`
|
|
527
|
+
reference reaches Google as the literal string `media:{scope}/{id}`,
|
|
528
|
+
which does not fetch; a site-relative path with no origin does not either.
|
|
529
|
+
|
|
530
|
+
An unresolvable value emits NO key rather than a broken one — the same
|
|
531
|
+
rule the author serializer states, and the reason both return a spreadable
|
|
532
|
+
object instead of a URL.
|
|
533
|
+
*/ /*
|
|
534
|
+
TRIMMED first. `absoluteMediaSrc` does not trim, and a whitespace-only
|
|
535
|
+
value — what a field cleared by typing spaces leaves behind — is not
|
|
536
|
+
empty to it: it reads as a relative path and comes back joined to the
|
|
537
|
+
origin, so the site would publish `https://example.com/ ` as its
|
|
538
|
+
publisher logo. Trimmed here rather than in the resolver, which og:image
|
|
539
|
+
and every author portrait also go through.
|
|
540
|
+
*/ const stored = typeof (entity == null ? void 0 : entity.logo) === 'string' ? entity.logo.trim() : '';
|
|
541
|
+
const image = stored ? absoluteMediaSrc(stored, {
|
|
542
|
+
hostId: context == null ? void 0 : context.hostId,
|
|
543
|
+
origin: context == null ? void 0 : context.origin
|
|
544
|
+
}) : '';
|
|
545
|
+
if (!image) return {};
|
|
546
|
+
return contentAuthorSchemaType(entity == null ? void 0 : entity.type) === 'Person' ? {
|
|
547
|
+
image
|
|
548
|
+
} : {
|
|
549
|
+
logo: image
|
|
550
|
+
};
|
|
551
|
+
}
|
|
552
|
+
/**
|
|
553
|
+
* The author record an entry publishes under, or `null` for "the site".
|
|
554
|
+
*
|
|
555
|
+
* ## Precedence, and why the legacy string keeps working
|
|
556
|
+
*
|
|
557
|
+
* 1. `entry.authorId` resolving against the host's authors — the new shape.
|
|
558
|
+
* 2. `entry.authorName` — every entry written before AGL-2486, and every
|
|
559
|
+
* entry whose editor chose "custom byline" instead of a record. Promoted
|
|
560
|
+
* to a `Person` with just a name, which is EXACTLY the JSON-LD the tenant
|
|
561
|
+
* already emitted for it, so no published page's structured data changes.
|
|
562
|
+
* 3. `null` — the caller falls back to the site's publisher entity, as before.
|
|
563
|
+
*
|
|
564
|
+
* An `authorId` pointing at a DELETED author falls through to step 2 and then
|
|
565
|
+
* to the site rather than resolving to nothing: an author record removed from
|
|
566
|
+
* the masthead must not silently strip the byline off ten years of posts.
|
|
567
|
+
*/ export function resolveEntryAuthor(entry, authors) {
|
|
568
|
+
var _ref, _ref1;
|
|
569
|
+
const authorId = ((_ref = entry == null ? void 0 : entry.authorId) != null ? _ref : '').trim();
|
|
570
|
+
if (authorId) {
|
|
571
|
+
const match = (authors != null ? authors : []).find((author)=>(author == null ? void 0 : author.$id) === authorId);
|
|
572
|
+
const normalized = normalizeContentAuthor(match, authorId);
|
|
573
|
+
if (normalized) return normalized;
|
|
574
|
+
}
|
|
575
|
+
const legacy = ((_ref1 = entry == null ? void 0 : entry.authorName) != null ? _ref1 : '').trim();
|
|
576
|
+
if (legacy) {
|
|
577
|
+
return {
|
|
578
|
+
type: HostEntityType.PERSON,
|
|
579
|
+
name: legacy,
|
|
580
|
+
sameAs: []
|
|
581
|
+
};
|
|
582
|
+
}
|
|
583
|
+
return null;
|
|
584
|
+
}
|
|
585
|
+
/**
|
|
586
|
+
* The byline TEXT for an entry — what `{{entry.author}}` and the Entry Meta
|
|
587
|
+
* block print (AGL-1459). Resolves a record's name, falls back to the legacy
|
|
588
|
+
* string, and returns `''` when neither exists so the block renders nothing
|
|
589
|
+
* rather than the word "undefined".
|
|
590
|
+
*/ export function resolveEntryAuthorName(entry, authors) {
|
|
591
|
+
var _ref;
|
|
592
|
+
var _resolveEntryAuthor;
|
|
593
|
+
return (_ref = (_resolveEntryAuthor = resolveEntryAuthor(entry, authors)) == null ? void 0 : _resolveEntryAuthor.name) != null ? _ref : '';
|
|
594
|
+
}
|
|
595
|
+
/** The fragment identifier the site entity is published under. */ export const SITE_ENTITY_FRAGMENT = '#organization';
|
|
596
|
+
/**
|
|
597
|
+
* EVERY PROFILE THE SITE CLAIMS AS ITSELF — `schema.org` `sameAs` (AGL-3148).
|
|
598
|
+
*
|
|
599
|
+
* Two fields hold these and only one was ever published. `seo.entity.sameAs`
|
|
600
|
+
* is the SEO form, and a production read found it unset on every host on the
|
|
601
|
+
* platform; `business.socialLinks` is the contact card the site's own footer
|
|
602
|
+
* renders from, and it is the one publishers actually fill in. So the
|
|
603
|
+
* structured data named no profiles at all on any site, while the profiles sat
|
|
604
|
+
* one field over being drawn into the page.
|
|
605
|
+
*
|
|
606
|
+
* Folding the second into `sameAs` is the AGL-2516 move one level up: a link
|
|
607
|
+
* the SITE prints is a profile the site claims, and asking a publisher to
|
|
608
|
+
* retype it into an SEO field to be believed is asking them to maintain the
|
|
609
|
+
* same list twice. The entity field stays FIRST, because it is the one written
|
|
610
|
+
* deliberately for this purpose.
|
|
611
|
+
*
|
|
612
|
+
* https-only and de-duplicated, matching both serializers beside it: a profile
|
|
613
|
+
* URL that is not fetchable teaches a consumer nothing, and one identity listed
|
|
614
|
+
* twice reads as two.
|
|
615
|
+
*/ export function siteProfileUrls(host) {
|
|
616
|
+
var _ref, _ref1;
|
|
617
|
+
var _host_business, _host_seo_entity, _host_seo;
|
|
618
|
+
const rendered = ((_ref = host == null ? void 0 : (_host_business = host.business) == null ? void 0 : _host_business.socialLinks) != null ? _ref : []).map((link)=>{
|
|
619
|
+
var _ref;
|
|
620
|
+
return (_ref = link == null ? void 0 : link.url) != null ? _ref : '';
|
|
621
|
+
});
|
|
622
|
+
return Array.from(new Set([
|
|
623
|
+
...(_ref1 = host == null ? void 0 : (_host_seo = host.seo) == null ? void 0 : (_host_seo_entity = _host_seo.entity) == null ? void 0 : _host_seo_entity.sameAs) != null ? _ref1 : [],
|
|
624
|
+
...rendered
|
|
625
|
+
].map((value)=>text(value, 800)).filter((value)=>/^https:\/\//i.test(value)))).slice(0, AUTHOR_SAME_AS_MAX);
|
|
626
|
+
}
|
|
627
|
+
/**
|
|
628
|
+
* The X (Twitter) handle among a set of profile URLs, as `@name` (AGL-3148).
|
|
629
|
+
*
|
|
630
|
+
* `twitter:site` and `twitter:creator` take a handle, and nothing on the
|
|
631
|
+
* platform stores one — what publishers and authors store is the profile URL,
|
|
632
|
+
* in the same list that feeds `sameAs`. Reading the handle back out of the URL
|
|
633
|
+
* is what lets both cards be attributed without a second field to fill in and
|
|
634
|
+
* keep in step.
|
|
635
|
+
*
|
|
636
|
+
* Both hostnames, because a link saved before the rename is still the same
|
|
637
|
+
* profile. Only a bare profile path qualifies: `x.com/AglynSoftware` is an
|
|
638
|
+
* account, while `x.com/AglynSoftware/status/123` is one post by it and
|
|
639
|
+
* `x.com/i/lists/9` is not an account at all — attributing a card to either
|
|
640
|
+
* would name something that is not the author of anything.
|
|
641
|
+
*/ export function xHandleFromProfiles(urls) {
|
|
642
|
+
for (const value of urls != null ? urls : []){
|
|
643
|
+
let url;
|
|
644
|
+
try {
|
|
645
|
+
url = new URL(value);
|
|
646
|
+
} catch (unused) {
|
|
647
|
+
continue;
|
|
648
|
+
}
|
|
649
|
+
if (!/^(www\.)?(x|twitter)\.com$/i.test(url.hostname)) continue;
|
|
650
|
+
const segments = url.pathname.split('/').filter(Boolean);
|
|
651
|
+
if (segments.length !== 1) continue;
|
|
652
|
+
const handle = segments[0];
|
|
653
|
+
// X handles are 1–15 of `[A-Za-z0-9_]`. Anything else is one of the
|
|
654
|
+
// reserved paths (`i`, `home`, `search`) rather than somebody's account.
|
|
655
|
+
if (!/^[A-Za-z0-9_]{1,15}$/.test(handle)) continue;
|
|
656
|
+
if (/^(i|home|search|explore|notifications|messages|settings)$/i.test(handle)) continue;
|
|
657
|
+
return `@${handle}`;
|
|
658
|
+
}
|
|
659
|
+
return undefined;
|
|
660
|
+
}
|
|
661
|
+
/**
|
|
662
|
+
* The site's publisher as a STANDALONE, fully populated `schema.org` node
|
|
663
|
+
* (AGL-2716).
|
|
664
|
+
*
|
|
665
|
+
* ## Why this exists next to {@link hostSeoEntityJsonLd}
|
|
666
|
+
*
|
|
667
|
+
* That function builds the value `publisher` takes: a `@type` and a `name`,
|
|
668
|
+
* nested inside a `WebSite` or an `Article`, gated on the author having filled
|
|
669
|
+
* in the Entity form. It is deliberately narrow, and every call site nests it.
|
|
670
|
+
*
|
|
671
|
+
* A consumer asking "who runs this site, and how do I reach them" — an AI
|
|
672
|
+
* assistant answering a contact question, a readiness audit checking whether a
|
|
673
|
+
* business is identifiable — looks for a TOP-LEVEL node of type `Organization`
|
|
674
|
+
* carrying `name`, `description`, `contactPoint` and `address`. A publisher
|
|
675
|
+
* nested two levels inside a `WebSite` answers a different question, and a
|
|
676
|
+
* publisher that is absent because nobody filled in a form answers none.
|
|
677
|
+
*
|
|
678
|
+
* So this one:
|
|
679
|
+
*
|
|
680
|
+
* - is emitted as its own `<script type="application/ld+json">`, at the top
|
|
681
|
+
* level, where it can be found without walking into another node;
|
|
682
|
+
* - FALLS BACK to the site's own identity when the Entity form is empty, so
|
|
683
|
+
* every site on the platform publishes a complete entity rather than only
|
|
684
|
+
* the sites whose author found the form;
|
|
685
|
+
* - carries the contact and address fields, which are what turn "a name" into
|
|
686
|
+
* "a business a consumer can verify".
|
|
687
|
+
*
|
|
688
|
+
* ## Why the fallback is safe
|
|
689
|
+
*
|
|
690
|
+
* It changes nothing that already exists: `hostSeoEntityJsonLd` still gates on
|
|
691
|
+
* `entity.name`, so `publisher` appears exactly where it appeared before. The
|
|
692
|
+
* fallback only decides what THIS node says, and a site's display name is its
|
|
693
|
+
* publisher's name on the overwhelming majority of sites — the two differ when
|
|
694
|
+
* a company's trading name differs from its site's, which is precisely the case
|
|
695
|
+
* the Entity form exists to express.
|
|
696
|
+
*
|
|
697
|
+
* ## `@id`
|
|
698
|
+
*
|
|
699
|
+
* Both this node and the nested `publisher` carry the same `@id` when an
|
|
700
|
+
* origin is known, so a consumer merges them into one entity instead of
|
|
701
|
+
* reading a site that names its publisher twice with different detail.
|
|
702
|
+
*
|
|
703
|
+
* Returns `undefined` only when there is no name to be had from anywhere —
|
|
704
|
+
* a host document with no entity, no display name and no SEO title.
|
|
705
|
+
*/ export function siteEntityJsonLd(host, context) {
|
|
706
|
+
var _ref, _ref1;
|
|
707
|
+
var _host_seo, _host_seo1, _context_origin, _host_seo2, _entity_address, _entity_address1, _entity_address2, _entity_address3, _entity_address4;
|
|
708
|
+
const entity = (_ref = host == null ? void 0 : (_host_seo = host.seo) == null ? void 0 : _host_seo.entity) != null ? _ref : undefined;
|
|
709
|
+
const name = text(entity == null ? void 0 : entity.name, 400) || text(host == null ? void 0 : host.displayName, 400) || text(host == null ? void 0 : (_host_seo1 = host.seo) == null ? void 0 : _host_seo1.title, 400);
|
|
710
|
+
if (!name) return undefined;
|
|
711
|
+
const origin = (_ref1 = context == null ? void 0 : (_context_origin = context.origin) == null ? void 0 : _context_origin.replace(/\/+$/, '')) != null ? _ref1 : '';
|
|
712
|
+
const description = text(entity == null ? void 0 : entity.description, 800) || text(host == null ? void 0 : (_host_seo2 = host.seo) == null ? void 0 : _host_seo2.description, 800);
|
|
713
|
+
const url = text(entity == null ? void 0 : entity.url, 800) || origin;
|
|
714
|
+
/*
|
|
715
|
+
`sameAs` is de-duplicated and https-only, matching the author serializer:
|
|
716
|
+
a profile URL that is not fetchable teaches a consumer nothing, and the
|
|
717
|
+
same profile listed twice reads as two identities.
|
|
718
|
+
|
|
719
|
+
Through `siteProfileUrls` (AGL-3148) so the site's rendered social links
|
|
720
|
+
count as profiles it claims, rather than only the SEO field that no host
|
|
721
|
+
on the platform had filled in.
|
|
722
|
+
*/ const sameAs = siteProfileUrls(host);
|
|
723
|
+
/*
|
|
724
|
+
A contactPoint needs something to contact. `contactType` alone is a label
|
|
725
|
+
on nothing, so the point is emitted only when an address or a number is
|
|
726
|
+
present — `schema.org` requires neither, and a consumer that finds a
|
|
727
|
+
ContactPoint with no channel has been told less than it would learn from
|
|
728
|
+
its absence.
|
|
729
|
+
*/ const email = text(entity == null ? void 0 : entity.email, 320);
|
|
730
|
+
const telephone = text(entity == null ? void 0 : entity.telephone, 64);
|
|
731
|
+
const contactType = text(entity == null ? void 0 : entity.contactType, 120) || 'customer support';
|
|
732
|
+
const contactPoint = email || telephone ? _extends({
|
|
733
|
+
'@type': 'ContactPoint',
|
|
734
|
+
contactType
|
|
735
|
+
}, email ? {
|
|
736
|
+
email
|
|
737
|
+
} : {}, telephone ? {
|
|
738
|
+
telephone
|
|
739
|
+
} : {}) : undefined;
|
|
740
|
+
const addressFields = {
|
|
741
|
+
streetAddress: text(entity == null ? void 0 : (_entity_address = entity.address) == null ? void 0 : _entity_address.streetAddress, 200),
|
|
742
|
+
addressLocality: text(entity == null ? void 0 : (_entity_address1 = entity.address) == null ? void 0 : _entity_address1.addressLocality, 120),
|
|
743
|
+
addressRegion: text(entity == null ? void 0 : (_entity_address2 = entity.address) == null ? void 0 : _entity_address2.addressRegion, 120),
|
|
744
|
+
postalCode: text(entity == null ? void 0 : (_entity_address3 = entity.address) == null ? void 0 : _entity_address3.postalCode, 40),
|
|
745
|
+
addressCountry: text(entity == null ? void 0 : (_entity_address4 = entity.address) == null ? void 0 : _entity_address4.addressCountry, 120)
|
|
746
|
+
};
|
|
747
|
+
const address = Object.entries(addressFields).filter(([, value])=>value);
|
|
748
|
+
const schemaType = contentAuthorSchemaType(entity == null ? void 0 : entity.type);
|
|
749
|
+
return _extends({
|
|
750
|
+
'@context': 'https://schema.org',
|
|
751
|
+
'@type': schemaType
|
|
752
|
+
}, origin ? {
|
|
753
|
+
'@id': `${origin}/${SITE_ENTITY_FRAGMENT}`
|
|
754
|
+
} : {}, {
|
|
755
|
+
name
|
|
756
|
+
}, description ? {
|
|
757
|
+
description
|
|
758
|
+
} : {}, url ? {
|
|
759
|
+
url
|
|
760
|
+
} : {}, hostSeoEntityImageJsonLd(entity, context), sameAs.length ? {
|
|
761
|
+
sameAs
|
|
762
|
+
} : {}, contactPoint ? {
|
|
763
|
+
contactPoint
|
|
764
|
+
} : {}, address.length ? {
|
|
765
|
+
address: _extends({
|
|
766
|
+
'@type': 'PostalAddress'
|
|
767
|
+
}, Object.fromEntries(address))
|
|
768
|
+
} : {});
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
//# sourceMappingURL=content-authors.js.map
|