@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,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* `Accept` header negotiation, per RFC 9110 §12.5.1 — the one rule that
|
|
19
|
+
* decides whether a request gets HTML or Markdown.
|
|
20
|
+
*
|
|
21
|
+
* ## Why this is a parser and not a substring test
|
|
22
|
+
*
|
|
23
|
+
* The tempting implementation is `accept.includes('text/markdown')`. It is
|
|
24
|
+
* wrong in both directions, and the wrong answers are the ones that matter:
|
|
25
|
+
*
|
|
26
|
+
* - `Accept: text/markdown;q=0` CONTAINS the string and means *anything but
|
|
27
|
+
* markdown*. A substring test serves markdown to a client that explicitly
|
|
28
|
+
* refused it.
|
|
29
|
+
* - Every browser sends the full wildcard range with a low q alongside its
|
|
30
|
+
* real preferences — Chrome's document `Accept` ends in `image/webp` and
|
|
31
|
+
* then that range at `q=0.8`. A test for the full wildcard — the obvious
|
|
32
|
+
* "they will take anything" shortcut — matches it, and a browser gets a wall
|
|
33
|
+
* of raw Markdown.
|
|
34
|
+
*
|
|
35
|
+
* So the header is parsed into ranked entries and matched by the algorithm the
|
|
36
|
+
* RFC actually specifies: sort by q descending, break ties by specificity (an
|
|
37
|
+
* exact type beats a subtype wildcard beats the full wildcard), and treat
|
|
38
|
+
* `q=0` as a refusal rather than a low score.
|
|
39
|
+
*
|
|
40
|
+
* ## The absent-header rule is load-bearing
|
|
41
|
+
*
|
|
42
|
+
* No `Accept` at all means NO CONSTRAINT, not "nothing works", and the full
|
|
43
|
+
* wildcard means the same. Both serve the caller's default — which for a web
|
|
44
|
+
* page is HTML. Getting this backwards is how a site starts answering `curl`
|
|
45
|
+
* and every link-preview crawler with Markdown.
|
|
46
|
+
*
|
|
47
|
+
* ## 406 is rare on purpose
|
|
48
|
+
*
|
|
49
|
+
* {@link negotiateMediaType} returns `null` only when EVERY representation the
|
|
50
|
+
* caller can produce is either unmatched or explicitly refused with `q=0`.
|
|
51
|
+
* That is the only case where RFC 9110 §15.5.7 asks for a 406, and answering
|
|
52
|
+
* one more eagerly than that breaks ordinary clients for no gain.
|
|
53
|
+
*/
|
|
54
|
+
/** One parsed entry of an `Accept` header, in the order it was written. */
|
|
55
|
+
export interface AcceptEntry {
|
|
56
|
+
/** Lowercased type, `*` for a wildcard. */
|
|
57
|
+
type: string;
|
|
58
|
+
/** Lowercased subtype, `*` for a wildcard. */
|
|
59
|
+
subtype: string;
|
|
60
|
+
/** Quality factor, 0–1. Absent `q` is 1. */
|
|
61
|
+
q: number;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Parse an `Accept` header into entries.
|
|
65
|
+
*
|
|
66
|
+
* Entries whose media range is unparseable are dropped rather than defaulted:
|
|
67
|
+
* a range we cannot read cannot be honored, and widening it to the full
|
|
68
|
+
* wildcard would silently grant more than the client asked for.
|
|
69
|
+
*/
|
|
70
|
+
export declare function parseAcceptHeader(header: string | null | undefined): AcceptEntry[];
|
|
71
|
+
/**
|
|
72
|
+
* Pick which representation to serve.
|
|
73
|
+
*
|
|
74
|
+
* @param header - the raw `Accept` request header, or null/absent
|
|
75
|
+
* @param available - the media types this resource can produce, DEFAULT FIRST.
|
|
76
|
+
* The order is the server's own preference and breaks ties — for a web page
|
|
77
|
+
* that means HTML first, so a browser sending the full wildcard gets HTML.
|
|
78
|
+
* @returns the chosen media type, or `null` when the request must be answered
|
|
79
|
+
* `406 Not Acceptable`.
|
|
80
|
+
*/
|
|
81
|
+
export declare function negotiateMediaType(header: string | null | undefined, available: readonly string[]): string | null;
|
|
82
|
+
/** `text/markdown`, the media type RFC 7763 registers. */
|
|
83
|
+
export declare const MARKDOWN_MEDIA_TYPE = "text/markdown";
|
|
84
|
+
/** What a markdown response actually sends, charset included. */
|
|
85
|
+
export declare const MARKDOWN_CONTENT_TYPE = "text/markdown; charset=utf-8";
|
|
86
|
+
/** `text/html`, the default representation of every page on a site. */
|
|
87
|
+
export declare const HTML_MEDIA_TYPE = "text/html";
|
|
88
|
+
/**
|
|
89
|
+
* What a tenant page can produce, DEFAULT FIRST.
|
|
90
|
+
*
|
|
91
|
+
* HTML leads because a page whose visitor is a browser must stay a page: every
|
|
92
|
+
* client that sends no `Accept`, or only the full wildcard, lands on the
|
|
93
|
+
* first entry.
|
|
94
|
+
*/
|
|
95
|
+
export declare const PAGE_MEDIA_TYPES: readonly string[];
|
|
96
|
+
/**
|
|
97
|
+
* Whether a request asked for the markdown representation of a page.
|
|
98
|
+
*
|
|
99
|
+
* The single door every surface uses, so the middleware's routing decision and
|
|
100
|
+
* the handler's `Content-Type` can never disagree about one header.
|
|
101
|
+
*/
|
|
102
|
+
export declare function wantsMarkdown(header: string | null | undefined): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Whether a request refuses EVERY representation a page can produce, i.e. the
|
|
105
|
+
* one case that earns a 406.
|
|
106
|
+
*/
|
|
107
|
+
export declare function isPageUnacceptable(header: string | null | undefined): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* The plain-text body RFC 9110 §15.5.7 recommends a 406 carry: the list of
|
|
110
|
+
* representations the client could have asked for.
|
|
111
|
+
*
|
|
112
|
+
* A body rather than an empty response because the client is an agent, and an
|
|
113
|
+
* agent that is told what IS available can retry correctly on its next call
|
|
114
|
+
* instead of giving up on the URL.
|
|
115
|
+
*/
|
|
116
|
+
export declare function notAcceptableBody(requested: string | null | undefined, available?: readonly string[]): string;
|
|
117
|
+
/**
|
|
118
|
+
* Add `Accept` to a `Vary` header without disturbing what is already there.
|
|
119
|
+
*
|
|
120
|
+
* Written as a merge rather than an assignment because the tenant already
|
|
121
|
+
* varies on Next's router headers (`rsc`, `next-router-state-tree`, …). An
|
|
122
|
+
* overwrite would drop those and serve an RSC payload to a document request;
|
|
123
|
+
* a blind append would list `Accept` twice on a response that already had it.
|
|
124
|
+
*
|
|
125
|
+
* `Vary: *` is left ALONE. It already means "do not cache this by any key",
|
|
126
|
+
* which is stricter than anything adding `Accept` could express, and rewriting
|
|
127
|
+
* it to a list would WEAKEN the response's caching contract.
|
|
128
|
+
*/
|
|
129
|
+
export declare function varyWithAccept(existing: string | null | undefined): string;
|
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ /**
|
|
17
|
+
* `Accept` header negotiation, per RFC 9110 §12.5.1 — the one rule that
|
|
18
|
+
* decides whether a request gets HTML or Markdown.
|
|
19
|
+
*
|
|
20
|
+
* ## Why this is a parser and not a substring test
|
|
21
|
+
*
|
|
22
|
+
* The tempting implementation is `accept.includes('text/markdown')`. It is
|
|
23
|
+
* wrong in both directions, and the wrong answers are the ones that matter:
|
|
24
|
+
*
|
|
25
|
+
* - `Accept: text/markdown;q=0` CONTAINS the string and means *anything but
|
|
26
|
+
* markdown*. A substring test serves markdown to a client that explicitly
|
|
27
|
+
* refused it.
|
|
28
|
+
* - Every browser sends the full wildcard range with a low q alongside its
|
|
29
|
+
* real preferences — Chrome's document `Accept` ends in `image/webp` and
|
|
30
|
+
* then that range at `q=0.8`. A test for the full wildcard — the obvious
|
|
31
|
+
* "they will take anything" shortcut — matches it, and a browser gets a wall
|
|
32
|
+
* of raw Markdown.
|
|
33
|
+
*
|
|
34
|
+
* So the header is parsed into ranked entries and matched by the algorithm the
|
|
35
|
+
* RFC actually specifies: sort by q descending, break ties by specificity (an
|
|
36
|
+
* exact type beats a subtype wildcard beats the full wildcard), and treat
|
|
37
|
+
* `q=0` as a refusal rather than a low score.
|
|
38
|
+
*
|
|
39
|
+
* ## The absent-header rule is load-bearing
|
|
40
|
+
*
|
|
41
|
+
* No `Accept` at all means NO CONSTRAINT, not "nothing works", and the full
|
|
42
|
+
* wildcard means the same. Both serve the caller's default — which for a web
|
|
43
|
+
* page is HTML. Getting this backwards is how a site starts answering `curl`
|
|
44
|
+
* and every link-preview crawler with Markdown.
|
|
45
|
+
*
|
|
46
|
+
* ## 406 is rare on purpose
|
|
47
|
+
*
|
|
48
|
+
* {@link negotiateMediaType} returns `null` only when EVERY representation the
|
|
49
|
+
* caller can produce is either unmatched or explicitly refused with `q=0`.
|
|
50
|
+
* That is the only case where RFC 9110 §15.5.7 asks for a 406, and answering
|
|
51
|
+
* one more eagerly than that breaks ordinary clients for no gain.
|
|
52
|
+
*/ /** One parsed entry of an `Accept` header, in the order it was written. */ /** How well an accept entry matches a concrete media type. Higher is better. */ const SPECIFICITY_EXACT = 3;
|
|
53
|
+
const SPECIFICITY_SUBTYPE_WILDCARD = 2;
|
|
54
|
+
const SPECIFICITY_FULL_WILDCARD = 1;
|
|
55
|
+
const SPECIFICITY_NONE = 0;
|
|
56
|
+
/**
|
|
57
|
+
* Parse `q`, defaulting to 1 and clamping to [0, 1].
|
|
58
|
+
*
|
|
59
|
+
* A malformed `q` (`q=abc`, `q=`) is treated as ABSENT rather than as zero.
|
|
60
|
+
* Zero is a refusal, and inferring a refusal from a typo would let one bad
|
|
61
|
+
* character turn a normal request into a 406.
|
|
62
|
+
*/ function parseQuality(raw) {
|
|
63
|
+
if (raw == null) return 1;
|
|
64
|
+
const value = Number.parseFloat(raw.trim());
|
|
65
|
+
if (!Number.isFinite(value)) return 1;
|
|
66
|
+
if (value < 0) return 0;
|
|
67
|
+
if (value > 1) return 1;
|
|
68
|
+
return value;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Parse an `Accept` header into entries.
|
|
72
|
+
*
|
|
73
|
+
* Entries whose media range is unparseable are dropped rather than defaulted:
|
|
74
|
+
* a range we cannot read cannot be honored, and widening it to the full
|
|
75
|
+
* wildcard would silently grant more than the client asked for.
|
|
76
|
+
*/ export function parseAcceptHeader(header) {
|
|
77
|
+
if (typeof header !== 'string' || header.trim() === '') return [];
|
|
78
|
+
const entries = [];
|
|
79
|
+
for (const part of header.split(',')){
|
|
80
|
+
const [rangeRaw, ...paramParts] = part.split(';');
|
|
81
|
+
const range = rangeRaw.trim().toLowerCase();
|
|
82
|
+
if (!range) continue;
|
|
83
|
+
const slash = range.indexOf('/');
|
|
84
|
+
if (slash <= 0 || slash === range.length - 1) continue;
|
|
85
|
+
const type = range.slice(0, slash);
|
|
86
|
+
const subtype = range.slice(slash + 1);
|
|
87
|
+
// A wildcard TYPE with a concrete subtype is not a range any client
|
|
88
|
+
// means, and nothing can satisfy it. Dropped rather than matched.
|
|
89
|
+
if (type === '*' && subtype !== '*') continue;
|
|
90
|
+
let q;
|
|
91
|
+
for (const param of paramParts){
|
|
92
|
+
const equals = param.indexOf('=');
|
|
93
|
+
if (equals === -1) continue;
|
|
94
|
+
if (param.slice(0, equals).trim().toLowerCase() !== 'q') continue;
|
|
95
|
+
q = param.slice(equals + 1);
|
|
96
|
+
break;
|
|
97
|
+
}
|
|
98
|
+
entries.push({
|
|
99
|
+
type,
|
|
100
|
+
subtype,
|
|
101
|
+
q: parseQuality(q)
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
return entries;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* How specifically `entry` names `mediaType`; {@link SPECIFICITY_NONE} when it
|
|
108
|
+
* does not name it at all.
|
|
109
|
+
*
|
|
110
|
+
* `mediaType` is matched on its TYPE ONLY — parameters such as
|
|
111
|
+
* `;charset=utf-8` are stripped first. A client that writes
|
|
112
|
+
* `Accept: text/markdown` is asking for the markdown representation whatever
|
|
113
|
+
* charset it comes in, and treating the parameters as part of the name would
|
|
114
|
+
* make every such request a 406.
|
|
115
|
+
*/ function specificity(entry, mediaType) {
|
|
116
|
+
const bare = mediaType.split(';')[0].trim().toLowerCase();
|
|
117
|
+
const slash = bare.indexOf('/');
|
|
118
|
+
if (slash <= 0) return SPECIFICITY_NONE;
|
|
119
|
+
const type = bare.slice(0, slash);
|
|
120
|
+
const subtype = bare.slice(slash + 1);
|
|
121
|
+
if (entry.type === type && entry.subtype === subtype) return SPECIFICITY_EXACT;
|
|
122
|
+
if (entry.type === type && entry.subtype === '*') {
|
|
123
|
+
return SPECIFICITY_SUBTYPE_WILDCARD;
|
|
124
|
+
}
|
|
125
|
+
if (entry.type === '*' && entry.subtype === '*') return SPECIFICITY_FULL_WILDCARD;
|
|
126
|
+
return SPECIFICITY_NONE;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* The best `Accept` entry for one media type — the MOST SPECIFIC match, not
|
|
130
|
+
* the highest-q one.
|
|
131
|
+
*
|
|
132
|
+
* RFC 9110 is explicit that precedence goes to the most specific range, and
|
|
133
|
+
* the difference is exactly what makes `q=0` work: given
|
|
134
|
+
* `text/markdown;q=0, text/*` the exact range refuses markdown even though a
|
|
135
|
+
* wildcard beside it would have scored 1. Picking by q would read that header
|
|
136
|
+
* as an acceptance.
|
|
137
|
+
*/ function bestEntryFor(entries, mediaType) {
|
|
138
|
+
let best = null;
|
|
139
|
+
let bestScore = SPECIFICITY_NONE;
|
|
140
|
+
for (const entry of entries){
|
|
141
|
+
const score = specificity(entry, mediaType);
|
|
142
|
+
if (score === SPECIFICITY_NONE) continue;
|
|
143
|
+
if (score > bestScore) {
|
|
144
|
+
best = entry;
|
|
145
|
+
bestScore = score;
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
return best;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Pick which representation to serve.
|
|
152
|
+
*
|
|
153
|
+
* @param header - the raw `Accept` request header, or null/absent
|
|
154
|
+
* @param available - the media types this resource can produce, DEFAULT FIRST.
|
|
155
|
+
* The order is the server's own preference and breaks ties — for a web page
|
|
156
|
+
* that means HTML first, so a browser sending the full wildcard gets HTML.
|
|
157
|
+
* @returns the chosen media type, or `null` when the request must be answered
|
|
158
|
+
* `406 Not Acceptable`.
|
|
159
|
+
*/ export function negotiateMediaType(header, available) {
|
|
160
|
+
if (available.length === 0) return null;
|
|
161
|
+
const entries = parseAcceptHeader(header);
|
|
162
|
+
// No usable Accept at all — no constraint. Serve the default.
|
|
163
|
+
if (entries.length === 0) return available[0];
|
|
164
|
+
/*
|
|
165
|
+
A header made of NOTHING BUT REFUSALS states no positive preference, so it
|
|
166
|
+
constrains rather than selects: `Accept: text/markdown;q=0` means *anything
|
|
167
|
+
except markdown*, not *markdown or nothing*. The two published vectors that
|
|
168
|
+
pin this are a pair, and only this branch satisfies both —
|
|
169
|
+
|
|
170
|
+
text/markdown;q=0 produces md + html → html (a refusal, not a demand)
|
|
171
|
+
text/markdown;q=0 produces md only → 406 (the one type, refused)
|
|
172
|
+
|
|
173
|
+
— where scoring every unlisted type as zero would 406 the first, and
|
|
174
|
+
ignoring q=0 would serve markdown to a client that just said not to.
|
|
175
|
+
*/ if (entries.every((entry)=>entry.q <= 0)) {
|
|
176
|
+
for (const candidate of available){
|
|
177
|
+
const refusal = bestEntryFor(entries, candidate);
|
|
178
|
+
if (!refusal || refusal.q > 0) return candidate;
|
|
179
|
+
}
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
let chosen = null;
|
|
183
|
+
let chosenQ = 0;
|
|
184
|
+
let chosenSpecificity = SPECIFICITY_NONE;
|
|
185
|
+
for (const candidate of available){
|
|
186
|
+
const entry = bestEntryFor(entries, candidate);
|
|
187
|
+
if (!entry || entry.q <= 0) continue;
|
|
188
|
+
const candidateSpecificity = specificity(entry, candidate);
|
|
189
|
+
// Strictly greater on q, then on specificity: equal on both leaves the
|
|
190
|
+
// EARLIER candidate standing, which is how `available` order expresses the
|
|
191
|
+
// server's own preference.
|
|
192
|
+
if (entry.q > chosenQ || entry.q === chosenQ && candidateSpecificity > chosenSpecificity) {
|
|
193
|
+
chosen = candidate;
|
|
194
|
+
chosenQ = entry.q;
|
|
195
|
+
chosenSpecificity = candidateSpecificity;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
return chosen;
|
|
199
|
+
}
|
|
200
|
+
/** `text/markdown`, the media type RFC 7763 registers. */ export const MARKDOWN_MEDIA_TYPE = 'text/markdown';
|
|
201
|
+
/** What a markdown response actually sends, charset included. */ export const MARKDOWN_CONTENT_TYPE = 'text/markdown; charset=utf-8';
|
|
202
|
+
/** `text/html`, the default representation of every page on a site. */ export const HTML_MEDIA_TYPE = 'text/html';
|
|
203
|
+
/**
|
|
204
|
+
* What a tenant page can produce, DEFAULT FIRST.
|
|
205
|
+
*
|
|
206
|
+
* HTML leads because a page whose visitor is a browser must stay a page: every
|
|
207
|
+
* client that sends no `Accept`, or only the full wildcard, lands on the
|
|
208
|
+
* first entry.
|
|
209
|
+
*/ export const PAGE_MEDIA_TYPES = [
|
|
210
|
+
HTML_MEDIA_TYPE,
|
|
211
|
+
MARKDOWN_MEDIA_TYPE
|
|
212
|
+
];
|
|
213
|
+
/**
|
|
214
|
+
* Whether a request asked for the markdown representation of a page.
|
|
215
|
+
*
|
|
216
|
+
* The single door every surface uses, so the middleware's routing decision and
|
|
217
|
+
* the handler's `Content-Type` can never disagree about one header.
|
|
218
|
+
*/ export function wantsMarkdown(header) {
|
|
219
|
+
return negotiateMediaType(header, PAGE_MEDIA_TYPES) === MARKDOWN_MEDIA_TYPE;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Whether a request refuses EVERY representation a page can produce, i.e. the
|
|
223
|
+
* one case that earns a 406.
|
|
224
|
+
*/ export function isPageUnacceptable(header) {
|
|
225
|
+
return negotiateMediaType(header, PAGE_MEDIA_TYPES) === null;
|
|
226
|
+
}
|
|
227
|
+
/**
|
|
228
|
+
* The plain-text body RFC 9110 §15.5.7 recommends a 406 carry: the list of
|
|
229
|
+
* representations the client could have asked for.
|
|
230
|
+
*
|
|
231
|
+
* A body rather than an empty response because the client is an agent, and an
|
|
232
|
+
* agent that is told what IS available can retry correctly on its next call
|
|
233
|
+
* instead of giving up on the URL.
|
|
234
|
+
*/ export function notAcceptableBody(requested, available = PAGE_MEDIA_TYPES) {
|
|
235
|
+
const lines = [
|
|
236
|
+
'This resource is available in:'
|
|
237
|
+
];
|
|
238
|
+
for (const type of available)lines.push(`- ${type}`);
|
|
239
|
+
const asked = typeof requested === 'string' ? requested.trim() : '';
|
|
240
|
+
if (asked) lines.push('', `You requested: ${asked}`);
|
|
241
|
+
return `${lines.join('\n')}\n`;
|
|
242
|
+
}
|
|
243
|
+
/**
|
|
244
|
+
* Add `Accept` to a `Vary` header without disturbing what is already there.
|
|
245
|
+
*
|
|
246
|
+
* Written as a merge rather than an assignment because the tenant already
|
|
247
|
+
* varies on Next's router headers (`rsc`, `next-router-state-tree`, …). An
|
|
248
|
+
* overwrite would drop those and serve an RSC payload to a document request;
|
|
249
|
+
* a blind append would list `Accept` twice on a response that already had it.
|
|
250
|
+
*
|
|
251
|
+
* `Vary: *` is left ALONE. It already means "do not cache this by any key",
|
|
252
|
+
* which is stricter than anything adding `Accept` could express, and rewriting
|
|
253
|
+
* it to a list would WEAKEN the response's caching contract.
|
|
254
|
+
*/ export function varyWithAccept(existing) {
|
|
255
|
+
const current = typeof existing === 'string' ? existing.trim() : '';
|
|
256
|
+
if (!current) return 'Accept';
|
|
257
|
+
if (current === '*') return '*';
|
|
258
|
+
const names = current.split(',').map((name)=>name.trim()).filter(Boolean);
|
|
259
|
+
if (names.some((name)=>name.toLowerCase() === 'accept')) return names.join(', ');
|
|
260
|
+
return [
|
|
261
|
+
...names,
|
|
262
|
+
'Accept'
|
|
263
|
+
].join(', ');
|
|
264
|
+
}
|
|
265
|
+
|
|
266
|
+
//# sourceMappingURL=accept-negotiation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/accept-negotiation.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * `Accept` header negotiation, per RFC 9110 §12.5.1 — the one rule that\n * decides whether a request gets HTML or Markdown.\n *\n * ## Why this is a parser and not a substring test\n *\n * The tempting implementation is `accept.includes('text/markdown')`. It is\n * wrong in both directions, and the wrong answers are the ones that matter:\n *\n * - `Accept: text/markdown;q=0` CONTAINS the string and means *anything but\n * markdown*. A substring test serves markdown to a client that explicitly\n * refused it.\n * - Every browser sends the full wildcard range with a low q alongside its\n * real preferences — Chrome's document `Accept` ends in `image/webp` and\n * then that range at `q=0.8`. A test for the full wildcard — the obvious\n * \"they will take anything\" shortcut — matches it, and a browser gets a wall\n * of raw Markdown.\n *\n * So the header is parsed into ranked entries and matched by the algorithm the\n * RFC actually specifies: sort by q descending, break ties by specificity (an\n * exact type beats a subtype wildcard beats the full wildcard), and treat\n * `q=0` as a refusal rather than a low score.\n *\n * ## The absent-header rule is load-bearing\n *\n * No `Accept` at all means NO CONSTRAINT, not \"nothing works\", and the full\n * wildcard means the same. Both serve the caller's default — which for a web\n * page is HTML. Getting this backwards is how a site starts answering `curl`\n * and every link-preview crawler with Markdown.\n *\n * ## 406 is rare on purpose\n *\n * {@link negotiateMediaType} returns `null` only when EVERY representation the\n * caller can produce is either unmatched or explicitly refused with `q=0`.\n * That is the only case where RFC 9110 §15.5.7 asks for a 406, and answering\n * one more eagerly than that breaks ordinary clients for no gain.\n */\n\n/** One parsed entry of an `Accept` header, in the order it was written. */\nexport interface AcceptEntry {\n /** Lowercased type, `*` for a wildcard. */\n type: string\n /** Lowercased subtype, `*` for a wildcard. */\n subtype: string\n /** Quality factor, 0–1. Absent `q` is 1. */\n q: number\n}\n\n/** How well an accept entry matches a concrete media type. Higher is better. */\nconst SPECIFICITY_EXACT = 3\nconst SPECIFICITY_SUBTYPE_WILDCARD = 2\nconst SPECIFICITY_FULL_WILDCARD = 1\nconst SPECIFICITY_NONE = 0\n\n/**\n * Parse `q`, defaulting to 1 and clamping to [0, 1].\n *\n * A malformed `q` (`q=abc`, `q=`) is treated as ABSENT rather than as zero.\n * Zero is a refusal, and inferring a refusal from a typo would let one bad\n * character turn a normal request into a 406.\n */\nfunction parseQuality(raw: string | undefined): number {\n if (raw == null) return 1\n const value = Number.parseFloat(raw.trim())\n if (!Number.isFinite(value)) return 1\n if (value < 0) return 0\n if (value > 1) return 1\n return value\n}\n\n/**\n * Parse an `Accept` header into entries.\n *\n * Entries whose media range is unparseable are dropped rather than defaulted:\n * a range we cannot read cannot be honored, and widening it to the full\n * wildcard would silently grant more than the client asked for.\n */\nexport function parseAcceptHeader(header: string | null | undefined): AcceptEntry[] {\n if (typeof header !== 'string' || header.trim() === '') return []\n const entries: AcceptEntry[] = []\n for (const part of header.split(',')) {\n const [rangeRaw, ...paramParts] = part.split(';')\n const range = rangeRaw.trim().toLowerCase()\n if (!range) continue\n const slash = range.indexOf('/')\n if (slash <= 0 || slash === range.length - 1) continue\n const type = range.slice(0, slash)\n const subtype = range.slice(slash + 1)\n // A wildcard TYPE with a concrete subtype is not a range any client\n // means, and nothing can satisfy it. Dropped rather than matched.\n if (type === '*' && subtype !== '*') continue\n let q: string | undefined\n for (const param of paramParts) {\n const equals = param.indexOf('=')\n if (equals === -1) continue\n if (param.slice(0, equals).trim().toLowerCase() !== 'q') continue\n q = param.slice(equals + 1)\n // RFC 9110: parameters AFTER `q` are response parameters, not media-range\n // parameters, so the first `q` wins and the rest are not `q` at all.\n break\n }\n entries.push({ type, subtype, q: parseQuality(q) })\n }\n return entries\n}\n\n/**\n * How specifically `entry` names `mediaType`; {@link SPECIFICITY_NONE} when it\n * does not name it at all.\n *\n * `mediaType` is matched on its TYPE ONLY — parameters such as\n * `;charset=utf-8` are stripped first. A client that writes\n * `Accept: text/markdown` is asking for the markdown representation whatever\n * charset it comes in, and treating the parameters as part of the name would\n * make every such request a 406.\n */\nfunction specificity(entry: AcceptEntry, mediaType: string): number {\n const bare = mediaType.split(';')[0].trim().toLowerCase()\n const slash = bare.indexOf('/')\n if (slash <= 0) return SPECIFICITY_NONE\n const type = bare.slice(0, slash)\n const subtype = bare.slice(slash + 1)\n if (entry.type === type && entry.subtype === subtype) return SPECIFICITY_EXACT\n if (entry.type === type && entry.subtype === '*') {\n return SPECIFICITY_SUBTYPE_WILDCARD\n }\n if (entry.type === '*' && entry.subtype === '*') return SPECIFICITY_FULL_WILDCARD\n return SPECIFICITY_NONE\n}\n\n/**\n * The best `Accept` entry for one media type — the MOST SPECIFIC match, not\n * the highest-q one.\n *\n * RFC 9110 is explicit that precedence goes to the most specific range, and\n * the difference is exactly what makes `q=0` work: given\n * `text/markdown;q=0, text/*` the exact range refuses markdown even though a\n * wildcard beside it would have scored 1. Picking by q would read that header\n * as an acceptance.\n */\nfunction bestEntryFor(\n entries: readonly AcceptEntry[],\n mediaType: string,\n): AcceptEntry | null {\n let best: AcceptEntry | null = null\n let bestScore = SPECIFICITY_NONE\n for (const entry of entries) {\n const score = specificity(entry, mediaType)\n if (score === SPECIFICITY_NONE) continue\n if (score > bestScore) {\n best = entry\n bestScore = score\n }\n }\n return best\n}\n\n/**\n * Pick which representation to serve.\n *\n * @param header - the raw `Accept` request header, or null/absent\n * @param available - the media types this resource can produce, DEFAULT FIRST.\n * The order is the server's own preference and breaks ties — for a web page\n * that means HTML first, so a browser sending the full wildcard gets HTML.\n * @returns the chosen media type, or `null` when the request must be answered\n * `406 Not Acceptable`.\n */\nexport function negotiateMediaType(\n header: string | null | undefined,\n available: readonly string[],\n): string | null {\n if (available.length === 0) return null\n const entries = parseAcceptHeader(header)\n // No usable Accept at all — no constraint. Serve the default.\n if (entries.length === 0) return available[0]\n\n /*\n A header made of NOTHING BUT REFUSALS states no positive preference, so it\n constrains rather than selects: `Accept: text/markdown;q=0` means *anything\n except markdown*, not *markdown or nothing*. The two published vectors that\n pin this are a pair, and only this branch satisfies both —\n\n text/markdown;q=0 produces md + html → html (a refusal, not a demand)\n text/markdown;q=0 produces md only → 406 (the one type, refused)\n\n — where scoring every unlisted type as zero would 406 the first, and\n ignoring q=0 would serve markdown to a client that just said not to.\n */\n if (entries.every((entry) => entry.q <= 0)) {\n for (const candidate of available) {\n const refusal = bestEntryFor(entries, candidate)\n if (!refusal || refusal.q > 0) return candidate\n }\n return null\n }\n\n let chosen: string | null = null\n let chosenQ = 0\n let chosenSpecificity = SPECIFICITY_NONE\n for (const candidate of available) {\n const entry = bestEntryFor(entries, candidate)\n if (!entry || entry.q <= 0) continue\n const candidateSpecificity = specificity(entry, candidate)\n // Strictly greater on q, then on specificity: equal on both leaves the\n // EARLIER candidate standing, which is how `available` order expresses the\n // server's own preference.\n if (\n entry.q > chosenQ ||\n (entry.q === chosenQ && candidateSpecificity > chosenSpecificity)\n ) {\n chosen = candidate\n chosenQ = entry.q\n chosenSpecificity = candidateSpecificity\n }\n }\n return chosen\n}\n\n/** `text/markdown`, the media type RFC 7763 registers. */\nexport const MARKDOWN_MEDIA_TYPE = 'text/markdown'\n\n/** What a markdown response actually sends, charset included. */\nexport const MARKDOWN_CONTENT_TYPE = 'text/markdown; charset=utf-8'\n\n/** `text/html`, the default representation of every page on a site. */\nexport const HTML_MEDIA_TYPE = 'text/html'\n\n/**\n * What a tenant page can produce, DEFAULT FIRST.\n *\n * HTML leads because a page whose visitor is a browser must stay a page: every\n * client that sends no `Accept`, or only the full wildcard, lands on the\n * first entry.\n */\nexport const PAGE_MEDIA_TYPES: readonly string[] = [\n HTML_MEDIA_TYPE,\n MARKDOWN_MEDIA_TYPE,\n]\n\n/**\n * Whether a request asked for the markdown representation of a page.\n *\n * The single door every surface uses, so the middleware's routing decision and\n * the handler's `Content-Type` can never disagree about one header.\n */\nexport function wantsMarkdown(header: string | null | undefined): boolean {\n return negotiateMediaType(header, PAGE_MEDIA_TYPES) === MARKDOWN_MEDIA_TYPE\n}\n\n/**\n * Whether a request refuses EVERY representation a page can produce, i.e. the\n * one case that earns a 406.\n */\nexport function isPageUnacceptable(header: string | null | undefined): boolean {\n return negotiateMediaType(header, PAGE_MEDIA_TYPES) === null\n}\n\n/**\n * The plain-text body RFC 9110 §15.5.7 recommends a 406 carry: the list of\n * representations the client could have asked for.\n *\n * A body rather than an empty response because the client is an agent, and an\n * agent that is told what IS available can retry correctly on its next call\n * instead of giving up on the URL.\n */\nexport function notAcceptableBody(\n requested: string | null | undefined,\n available: readonly string[] = PAGE_MEDIA_TYPES,\n): string {\n const lines = ['This resource is available in:']\n for (const type of available) lines.push(`- ${type}`)\n const asked = typeof requested === 'string' ? requested.trim() : ''\n if (asked) lines.push('', `You requested: ${asked}`)\n return `${lines.join('\\n')}\\n`\n}\n\n/**\n * Add `Accept` to a `Vary` header without disturbing what is already there.\n *\n * Written as a merge rather than an assignment because the tenant already\n * varies on Next's router headers (`rsc`, `next-router-state-tree`, …). An\n * overwrite would drop those and serve an RSC payload to a document request;\n * a blind append would list `Accept` twice on a response that already had it.\n *\n * `Vary: *` is left ALONE. It already means \"do not cache this by any key\",\n * which is stricter than anything adding `Accept` could express, and rewriting\n * it to a list would WEAKEN the response's caching contract.\n */\nexport function varyWithAccept(existing: string | null | undefined): string {\n const current = typeof existing === 'string' ? existing.trim() : ''\n if (!current) return 'Accept'\n if (current === '*') return '*'\n const names = current\n .split(',')\n .map((name) => name.trim())\n .filter(Boolean)\n if (names.some((name) => name.toLowerCase() === 'accept')) return names.join(', ')\n return [...names, 'Accept'].join(', ')\n}\n"],"names":["SPECIFICITY_EXACT","SPECIFICITY_SUBTYPE_WILDCARD","SPECIFICITY_FULL_WILDCARD","SPECIFICITY_NONE","parseQuality","raw","value","Number","parseFloat","trim","isFinite","parseAcceptHeader","header","entries","part","split","rangeRaw","paramParts","range","toLowerCase","slash","indexOf","length","type","slice","subtype","q","param","equals","push","specificity","entry","mediaType","bare","bestEntryFor","best","bestScore","score","negotiateMediaType","available","every","candidate","refusal","chosen","chosenQ","chosenSpecificity","candidateSpecificity","MARKDOWN_MEDIA_TYPE","MARKDOWN_CONTENT_TYPE","HTML_MEDIA_TYPE","PAGE_MEDIA_TYPES","wantsMarkdown","isPageUnacceptable","notAcceptableBody","requested","lines","asked","join","varyWithAccept","existing","current","names","map","name","filter","Boolean","some"],"mappings":"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"}
|