@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,497 @@
|
|
|
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
|
+
* Author HTML → Markdown, with no DOM (AGL-2716).
|
|
18
|
+
*
|
|
19
|
+
* Two kinds of author markup reach a page and neither is a node tree: the
|
|
20
|
+
* inline editor's rich mode commits sanitized markup into a node's `html`
|
|
21
|
+
* prop, and the Custom HTML component carries a whole fragment. Both have to
|
|
22
|
+
* survive into the Markdown representation of the page, or a heading typed in
|
|
23
|
+
* rich mode reads as body copy and a Custom HTML block disappears entirely.
|
|
24
|
+
*
|
|
25
|
+
* ## Why not reuse `markdown-html-paste`
|
|
26
|
+
*
|
|
27
|
+
* The visual editor already converts pasted HTML to the markdown-lite row
|
|
28
|
+
* model — but it parses with `DOMParser`, which exists only in a browser. This
|
|
29
|
+
* runs inside a route handler answering `Accept: text/markdown`, where there
|
|
30
|
+
* is no DOM at all, so the parse has to be a tokenizer over the string. The
|
|
31
|
+
* two are not duplicates so much as the same idea either side of a boundary
|
|
32
|
+
* neither can cross.
|
|
33
|
+
*
|
|
34
|
+
* ## Why a tokenizer is safe HERE and would not be in a sanitizer
|
|
35
|
+
*
|
|
36
|
+
* A sanitizer that mis-parses ships markup; the failure is an XSS. This
|
|
37
|
+
* produces TEXT — no consumer of the output executes anything — so a
|
|
38
|
+
* mis-parsed tag costs a formatting artifact and nothing more. That is what
|
|
39
|
+
* makes a ~200-line tokenizer the proportionate tool rather than a parser
|
|
40
|
+
* dependency, and it is why nothing here is on the sanitizer's path: the
|
|
41
|
+
* source it reads has already been through {@link sanitizeAuthorHtml} at
|
|
42
|
+
* render time.
|
|
43
|
+
*
|
|
44
|
+
* Unknown elements UNWRAP rather than drop, matching the sanitizer's own rule,
|
|
45
|
+
* so markup this file has never heard of still contributes its text.
|
|
46
|
+
*/ import { decodeCharacterReferences, isAllowedAuthorHtmlUrl } from "./author-html.js";
|
|
47
|
+
import { absoluteMediaSrc } from "./media-ref.js";
|
|
48
|
+
/**
|
|
49
|
+
* Typographic named references, decoded for TEXT CONTENT only.
|
|
50
|
+
*
|
|
51
|
+
* {@link decodeCharacterReferences} deliberately knows a very short table: it
|
|
52
|
+
* exists to judge ATTRIBUTE values the way a browser will, and its own header
|
|
53
|
+
* explains that a reference outside that table cannot contribute a letter or a
|
|
54
|
+
* colon and so cannot spell a scheme. Widening it to make prose read nicely
|
|
55
|
+
* would trade a security property for a typographic one.
|
|
56
|
+
*
|
|
57
|
+
* So the widening lives HERE, where the output is text that nothing executes.
|
|
58
|
+
* Applied after the shared decoder, and to text nodes only — never to an
|
|
59
|
+
* `href` or a `src`, which still go through the narrow table alone.
|
|
60
|
+
*/ const TEXT_REFERENCES = {
|
|
61
|
+
mdash: '\u2014',
|
|
62
|
+
ndash: '\u2013',
|
|
63
|
+
hellip: '\u2026',
|
|
64
|
+
lsquo: '\u2018',
|
|
65
|
+
rsquo: '\u2019',
|
|
66
|
+
ldquo: '\u201c',
|
|
67
|
+
rdquo: '\u201d',
|
|
68
|
+
sbquo: '\u201a',
|
|
69
|
+
bdquo: '\u201e',
|
|
70
|
+
laquo: '\u00ab',
|
|
71
|
+
raquo: '\u00bb',
|
|
72
|
+
copy: '\u00a9',
|
|
73
|
+
reg: '\u00ae',
|
|
74
|
+
trade: '\u2122',
|
|
75
|
+
deg: '\u00b0',
|
|
76
|
+
times: '\u00d7',
|
|
77
|
+
divide: '\u00f7',
|
|
78
|
+
middot: '\u00b7',
|
|
79
|
+
bull: '\u2022',
|
|
80
|
+
dagger: '\u2020',
|
|
81
|
+
Dagger: '\u2021',
|
|
82
|
+
permil: '\u2030',
|
|
83
|
+
prime: '\u2032',
|
|
84
|
+
Prime: '\u2033',
|
|
85
|
+
euro: '\u20ac',
|
|
86
|
+
pound: '\u00a3',
|
|
87
|
+
yen: '\u00a5',
|
|
88
|
+
cent: '\u00a2',
|
|
89
|
+
sect: '\u00a7',
|
|
90
|
+
para: '\u00b6',
|
|
91
|
+
plusmn: '\u00b1',
|
|
92
|
+
frac12: '\u00bd',
|
|
93
|
+
frac14: '\u00bc',
|
|
94
|
+
frac34: '\u00be',
|
|
95
|
+
ne: '\u2260',
|
|
96
|
+
le: '\u2264',
|
|
97
|
+
ge: '\u2265',
|
|
98
|
+
larr: '\u2190',
|
|
99
|
+
rarr: '\u2192',
|
|
100
|
+
harr: '\u2194',
|
|
101
|
+
infin: '\u221e',
|
|
102
|
+
ensp: ' ',
|
|
103
|
+
emsp: ' ',
|
|
104
|
+
thinsp: ' ',
|
|
105
|
+
shy: '',
|
|
106
|
+
zwj: '',
|
|
107
|
+
zwnj: ''
|
|
108
|
+
};
|
|
109
|
+
/** Character references as a reader should see them; see {@link TEXT_REFERENCES}. */ function decodeTextReferences(value) {
|
|
110
|
+
const decoded = decodeCharacterReferences(value);
|
|
111
|
+
if (!decoded.includes('&')) return decoded;
|
|
112
|
+
return decoded.replace(/&([a-zA-Z][a-zA-Z0-9]{1,31});?/g, (match, name)=>{
|
|
113
|
+
var _TEXT_REFERENCES_name;
|
|
114
|
+
return (_TEXT_REFERENCES_name = TEXT_REFERENCES[name]) != null ? _TEXT_REFERENCES_name : match;
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
/** Elements that end the current line and start a new block. */ const BLOCK_ELEMENTS = new Set([
|
|
118
|
+
'address',
|
|
119
|
+
'article',
|
|
120
|
+
'aside',
|
|
121
|
+
'blockquote',
|
|
122
|
+
'div',
|
|
123
|
+
'dd',
|
|
124
|
+
'dl',
|
|
125
|
+
'dt',
|
|
126
|
+
'figcaption',
|
|
127
|
+
'figure',
|
|
128
|
+
'footer',
|
|
129
|
+
'h1',
|
|
130
|
+
'h2',
|
|
131
|
+
'h3',
|
|
132
|
+
'h4',
|
|
133
|
+
'h5',
|
|
134
|
+
'h6',
|
|
135
|
+
'header',
|
|
136
|
+
'hgroup',
|
|
137
|
+
'hr',
|
|
138
|
+
'li',
|
|
139
|
+
'main',
|
|
140
|
+
'nav',
|
|
141
|
+
'ol',
|
|
142
|
+
'p',
|
|
143
|
+
'pre',
|
|
144
|
+
'section',
|
|
145
|
+
'table',
|
|
146
|
+
'tbody',
|
|
147
|
+
'td',
|
|
148
|
+
'tfoot',
|
|
149
|
+
'th',
|
|
150
|
+
'thead',
|
|
151
|
+
'tr',
|
|
152
|
+
'ul'
|
|
153
|
+
]);
|
|
154
|
+
/** Elements whose CONTENT is dropped with them, never unwrapped. */ const DROPPED = new Set([
|
|
155
|
+
'script',
|
|
156
|
+
'style',
|
|
157
|
+
'template',
|
|
158
|
+
'noscript',
|
|
159
|
+
'iframe',
|
|
160
|
+
'object',
|
|
161
|
+
'svg',
|
|
162
|
+
'math'
|
|
163
|
+
]);
|
|
164
|
+
/** Void elements — no end tag, never pushed on the open stack. */ const VOID = new Set([
|
|
165
|
+
'area',
|
|
166
|
+
'base',
|
|
167
|
+
'br',
|
|
168
|
+
'col',
|
|
169
|
+
'embed',
|
|
170
|
+
'hr',
|
|
171
|
+
'img',
|
|
172
|
+
'input',
|
|
173
|
+
'link',
|
|
174
|
+
'meta',
|
|
175
|
+
'source',
|
|
176
|
+
'track',
|
|
177
|
+
'wbr'
|
|
178
|
+
]);
|
|
179
|
+
const ATTRIBUTE = /([a-zA-Z_:][-\w:.]*)(?:\s*=\s*("[^"]*"|'[^']*'|[^\s"'=<>`]+))?/g;
|
|
180
|
+
/** Read a start tag's attributes into a lowercased-name map. */ function readAttributes(raw) {
|
|
181
|
+
const attributes = {};
|
|
182
|
+
ATTRIBUTE.lastIndex = 0;
|
|
183
|
+
let match;
|
|
184
|
+
while((match = ATTRIBUTE.exec(raw)) !== null){
|
|
185
|
+
var _match_;
|
|
186
|
+
const value = (_match_ = match[2]) != null ? _match_ : '';
|
|
187
|
+
const unquoted = value.startsWith('"') || value.startsWith("'") ? value.slice(1, -1) : value;
|
|
188
|
+
attributes[match[1].toLowerCase()] = decodeCharacterReferences(unquoted);
|
|
189
|
+
}
|
|
190
|
+
return attributes;
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Tokenize a fragment.
|
|
194
|
+
*
|
|
195
|
+
* Comments, doctypes and CDATA are consumed and produce nothing. A `<` that
|
|
196
|
+
* does not begin a tag is literal text — which is what a browser does with it
|
|
197
|
+
* and what an author who typed `a < b` meant.
|
|
198
|
+
*/ function tokenize(html) {
|
|
199
|
+
const tokens = [];
|
|
200
|
+
let index = 0;
|
|
201
|
+
let text = '';
|
|
202
|
+
const flushText = ()=>{
|
|
203
|
+
if (!text) return;
|
|
204
|
+
tokens.push({
|
|
205
|
+
kind: 'text',
|
|
206
|
+
name: '',
|
|
207
|
+
text: decodeTextReferences(text),
|
|
208
|
+
attributes: {},
|
|
209
|
+
selfClosing: false
|
|
210
|
+
});
|
|
211
|
+
text = '';
|
|
212
|
+
};
|
|
213
|
+
while(index < html.length){
|
|
214
|
+
var _tag_;
|
|
215
|
+
const next = html.indexOf('<', index);
|
|
216
|
+
if (next === -1) {
|
|
217
|
+
text += html.slice(index);
|
|
218
|
+
break;
|
|
219
|
+
}
|
|
220
|
+
text += html.slice(index, next);
|
|
221
|
+
const rest = html.slice(next);
|
|
222
|
+
if (rest.startsWith('<!--')) {
|
|
223
|
+
const end = html.indexOf('-->', next + 4);
|
|
224
|
+
index = end === -1 ? html.length : end + 3;
|
|
225
|
+
continue;
|
|
226
|
+
}
|
|
227
|
+
if (rest.startsWith('<!') || rest.startsWith('<?')) {
|
|
228
|
+
const end = html.indexOf('>', next);
|
|
229
|
+
index = end === -1 ? html.length : end + 1;
|
|
230
|
+
continue;
|
|
231
|
+
}
|
|
232
|
+
const tag = /^<(\/?)([a-zA-Z][a-zA-Z0-9-]*)((?:[^>"']|"[^"]*"|'[^']*')*)>/.exec(rest);
|
|
233
|
+
if (!tag) {
|
|
234
|
+
// Not a tag. A literal `<`.
|
|
235
|
+
text += '<';
|
|
236
|
+
index = next + 1;
|
|
237
|
+
continue;
|
|
238
|
+
}
|
|
239
|
+
flushText();
|
|
240
|
+
const name = tag[2].toLowerCase();
|
|
241
|
+
const raw = (_tag_ = tag[3]) != null ? _tag_ : '';
|
|
242
|
+
tokens.push({
|
|
243
|
+
kind: tag[1] === '/' ? 'end' : 'start',
|
|
244
|
+
name,
|
|
245
|
+
text: '',
|
|
246
|
+
attributes: tag[1] === '/' ? {} : readAttributes(raw),
|
|
247
|
+
selfClosing: raw.trimEnd().endsWith('/')
|
|
248
|
+
});
|
|
249
|
+
index = next + tag[0].length;
|
|
250
|
+
}
|
|
251
|
+
flushText();
|
|
252
|
+
return tokens;
|
|
253
|
+
}
|
|
254
|
+
/** Markdown control characters, escaped so author text does not re-parse. */ function escapeInline(value) {
|
|
255
|
+
return value.replace(/([\\`*_[\]<>])/g, '\\$1');
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Absolutize a link target, leaving anything already absolute alone.
|
|
259
|
+
*
|
|
260
|
+
* Scheme-checked against {@link isAllowedAuthorHtmlUrl} — the sanitizer's own
|
|
261
|
+
* rule, not a second spelling of it (AGL-2740). A Custom HTML fragment is
|
|
262
|
+
* stored UNSANITIZED and cleaned at render, so this converter is the one
|
|
263
|
+
* reader of it that never sees the sanitizer run: without the check, an
|
|
264
|
+
* `<a href="screen:v0clP6xQl-">` an author hand-typed loses its href in the
|
|
265
|
+
* page and keeps it in the Markdown, which publishes a link target the page
|
|
266
|
+
* itself refuses. Refused targets keep their TEXT — the caller emits the
|
|
267
|
+
* unlinked label — because dropping the words as well would silently shorten
|
|
268
|
+
* the document.
|
|
269
|
+
*/ function absoluteHref(href, context) {
|
|
270
|
+
var _ref;
|
|
271
|
+
var _context_origin;
|
|
272
|
+
const value = href.trim();
|
|
273
|
+
if (!value) return '';
|
|
274
|
+
if (!isAllowedAuthorHtmlUrl('a', 'href', value)) return '';
|
|
275
|
+
if (/^[a-z][a-z0-9+.-]*:/i.test(value) || value.startsWith('//')) return value;
|
|
276
|
+
const origin = (_ref = context == null ? void 0 : (_context_origin = context.origin) == null ? void 0 : _context_origin.replace(/\/+$/, '')) != null ? _ref : '';
|
|
277
|
+
if (!origin) return value;
|
|
278
|
+
return value.startsWith('/') ? `${origin}${value}` : `${origin}/${value}`;
|
|
279
|
+
}
|
|
280
|
+
/**
|
|
281
|
+
* Convert a fragment to Markdown.
|
|
282
|
+
*
|
|
283
|
+
* @param inlineOnly - emit no block structure, for a control's rich LABEL,
|
|
284
|
+
* where a heading or a list would be nonsense inside a button.
|
|
285
|
+
*/ function convert(html, context, inlineOnly) {
|
|
286
|
+
if (typeof html !== 'string' || !html) return '';
|
|
287
|
+
const out = [];
|
|
288
|
+
const stack = [];
|
|
289
|
+
/** Depth of `<pre>`, inside which whitespace is content. */ let preDepth = 0;
|
|
290
|
+
/** Depth of a dropped element, inside which nothing is emitted. */ let dropDepth = 0;
|
|
291
|
+
/** Open list contexts, innermost last; `null` marks an unordered list. */ const lists = [];
|
|
292
|
+
const emit = (value)=>{
|
|
293
|
+
if (value) out.push(value);
|
|
294
|
+
};
|
|
295
|
+
const breakBlock = ()=>{
|
|
296
|
+
if (inlineOnly) {
|
|
297
|
+
// A control's label is one line. A block boundary becomes a space so two
|
|
298
|
+
// paragraphs of rich text do not run their last and first words together.
|
|
299
|
+
if (out.length && !/\s$/.test(out[out.length - 1])) emit(' ');
|
|
300
|
+
return;
|
|
301
|
+
}
|
|
302
|
+
while(out.length && out[out.length - 1] === '')out.pop();
|
|
303
|
+
emit('\n\n');
|
|
304
|
+
};
|
|
305
|
+
for (const token of tokenize(html)){
|
|
306
|
+
if (dropDepth > 0) {
|
|
307
|
+
if (token.kind === 'end' && DROPPED.has(token.name)) dropDepth -= 1;
|
|
308
|
+
else if (token.kind === 'start' && DROPPED.has(token.name)) dropDepth += 1;
|
|
309
|
+
continue;
|
|
310
|
+
}
|
|
311
|
+
if (token.kind === 'text') {
|
|
312
|
+
if (preDepth > 0) emit(token.text);
|
|
313
|
+
else {
|
|
314
|
+
const collapsed = token.text.replace(/\s+/g, ' ');
|
|
315
|
+
if (collapsed.trim() === '' && collapsed !== '') {
|
|
316
|
+
// Whitespace BETWEEN elements is a word separator, but never the
|
|
317
|
+
// first thing in a block — that is the indentation of the source.
|
|
318
|
+
const previous = out.length ? out[out.length - 1] : '';
|
|
319
|
+
if (previous && !/\s$/.test(previous)) emit(' ');
|
|
320
|
+
} else {
|
|
321
|
+
emit(escapeInline(collapsed));
|
|
322
|
+
}
|
|
323
|
+
}
|
|
324
|
+
continue;
|
|
325
|
+
}
|
|
326
|
+
const { name } = token;
|
|
327
|
+
if (token.kind === 'start') {
|
|
328
|
+
if (DROPPED.has(name)) {
|
|
329
|
+
dropDepth += 1;
|
|
330
|
+
continue;
|
|
331
|
+
}
|
|
332
|
+
if (BLOCK_ELEMENTS.has(name) && name !== 'li') breakBlock();
|
|
333
|
+
switch(name){
|
|
334
|
+
case 'br':
|
|
335
|
+
emit(inlineOnly ? ' ' : '\n');
|
|
336
|
+
continue;
|
|
337
|
+
case 'hr':
|
|
338
|
+
if (!inlineOnly) emit('---');
|
|
339
|
+
continue;
|
|
340
|
+
case 'img':
|
|
341
|
+
{
|
|
342
|
+
var _token_attributes_src;
|
|
343
|
+
const src = absoluteMediaSrc((_token_attributes_src = token.attributes['src']) != null ? _token_attributes_src : '', {
|
|
344
|
+
hostId: context == null ? void 0 : context.hostId,
|
|
345
|
+
origin: context == null ? void 0 : context.origin
|
|
346
|
+
});
|
|
347
|
+
if (src) {
|
|
348
|
+
var _token_attributes_alt;
|
|
349
|
+
emit(`![${escapeInline((_token_attributes_alt = token.attributes['alt']) != null ? _token_attributes_alt : '')}](${src})`);
|
|
350
|
+
}
|
|
351
|
+
continue;
|
|
352
|
+
}
|
|
353
|
+
case 'b':
|
|
354
|
+
case 'strong':
|
|
355
|
+
emit('**');
|
|
356
|
+
break;
|
|
357
|
+
case 'i':
|
|
358
|
+
case 'em':
|
|
359
|
+
case 'cite':
|
|
360
|
+
case 'dfn':
|
|
361
|
+
case 'var':
|
|
362
|
+
emit('_');
|
|
363
|
+
break;
|
|
364
|
+
case 'del':
|
|
365
|
+
case 's':
|
|
366
|
+
emit('~~');
|
|
367
|
+
break;
|
|
368
|
+
case 'code':
|
|
369
|
+
// Inside `<pre>` the fence below already marks it as code; a second
|
|
370
|
+
// pair of backticks would land inside the fence as literal text.
|
|
371
|
+
if (preDepth === 0) emit('`');
|
|
372
|
+
break;
|
|
373
|
+
case 'pre':
|
|
374
|
+
preDepth += 1;
|
|
375
|
+
if (!inlineOnly) emit('```\n');
|
|
376
|
+
break;
|
|
377
|
+
case 'blockquote':
|
|
378
|
+
if (!inlineOnly) emit('> ');
|
|
379
|
+
break;
|
|
380
|
+
case 'ul':
|
|
381
|
+
case 'ol':
|
|
382
|
+
if (!inlineOnly) lists.push({
|
|
383
|
+
ordered: name === 'ol',
|
|
384
|
+
index: 0
|
|
385
|
+
});
|
|
386
|
+
break;
|
|
387
|
+
case 'li':
|
|
388
|
+
{
|
|
389
|
+
if (inlineOnly) break;
|
|
390
|
+
const list = lists[lists.length - 1];
|
|
391
|
+
const indent = ' '.repeat(Math.max(0, lists.length - 1));
|
|
392
|
+
if (list == null ? void 0 : list.ordered) {
|
|
393
|
+
list.index += 1;
|
|
394
|
+
emit(`${indent}${list.index}. `);
|
|
395
|
+
} else {
|
|
396
|
+
emit(`${indent}- `);
|
|
397
|
+
}
|
|
398
|
+
break;
|
|
399
|
+
}
|
|
400
|
+
default:
|
|
401
|
+
break;
|
|
402
|
+
}
|
|
403
|
+
if (!VOID.has(name) && !token.selfClosing) {
|
|
404
|
+
stack.push({
|
|
405
|
+
name,
|
|
406
|
+
start: out.length,
|
|
407
|
+
attributes: token.attributes
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
// A heading's `#` prefix is written on OPEN, after the block break above.
|
|
411
|
+
const heading = /^h([1-6])$/.exec(name);
|
|
412
|
+
if (heading && !inlineOnly) emit(`${'#'.repeat(Number(heading[1]))} `);
|
|
413
|
+
continue;
|
|
414
|
+
}
|
|
415
|
+
// An end tag. Unwind to the nearest matching open element; an unmatched
|
|
416
|
+
// end tag is ignored, which is what a parser does with it.
|
|
417
|
+
const at = stack.map((frame)=>frame.name).lastIndexOf(name);
|
|
418
|
+
if (at === -1) continue;
|
|
419
|
+
while(stack.length > at){
|
|
420
|
+
const frame = stack.pop();
|
|
421
|
+
if (!frame) break;
|
|
422
|
+
switch(frame.name){
|
|
423
|
+
case 'b':
|
|
424
|
+
case 'strong':
|
|
425
|
+
emit('**');
|
|
426
|
+
break;
|
|
427
|
+
case 'i':
|
|
428
|
+
case 'em':
|
|
429
|
+
case 'cite':
|
|
430
|
+
case 'dfn':
|
|
431
|
+
case 'var':
|
|
432
|
+
emit('_');
|
|
433
|
+
break;
|
|
434
|
+
case 'del':
|
|
435
|
+
case 's':
|
|
436
|
+
emit('~~');
|
|
437
|
+
break;
|
|
438
|
+
case 'code':
|
|
439
|
+
if (preDepth === 0) emit('`');
|
|
440
|
+
break;
|
|
441
|
+
case 'pre':
|
|
442
|
+
preDepth = Math.max(0, preDepth - 1);
|
|
443
|
+
if (!inlineOnly) emit('\n```');
|
|
444
|
+
break;
|
|
445
|
+
case 'ul':
|
|
446
|
+
case 'ol':
|
|
447
|
+
if (!inlineOnly) lists.pop();
|
|
448
|
+
break;
|
|
449
|
+
case 'li':
|
|
450
|
+
if (!inlineOnly) emit('\n');
|
|
451
|
+
break;
|
|
452
|
+
case 'a':
|
|
453
|
+
{
|
|
454
|
+
var _frame_attributes_href;
|
|
455
|
+
/*
|
|
456
|
+
The link text is whatever was emitted since the open tag, spliced
|
|
457
|
+
out of `out` and wrapped. Splicing rather than buffering per frame
|
|
458
|
+
because a nested `<strong>` inside the anchor has already written
|
|
459
|
+
its markers into the same array — rebuilding the text from tokens
|
|
460
|
+
would drop them.
|
|
461
|
+
*/ const text = out.splice(frame.start).join('');
|
|
462
|
+
const href = absoluteHref((_frame_attributes_href = frame.attributes['href']) != null ? _frame_attributes_href : '', context);
|
|
463
|
+
if (!text.trim()) {
|
|
464
|
+
// An anchor with no text is a bare URL at best; emitting `[](url)`
|
|
465
|
+
// is a link nothing can click.
|
|
466
|
+
if (href) emit(href);
|
|
467
|
+
} else if (href) {
|
|
468
|
+
emit(`[${text.trim()}](${href})`);
|
|
469
|
+
} else {
|
|
470
|
+
emit(text);
|
|
471
|
+
}
|
|
472
|
+
break;
|
|
473
|
+
}
|
|
474
|
+
default:
|
|
475
|
+
break;
|
|
476
|
+
}
|
|
477
|
+
if (BLOCK_ELEMENTS.has(frame.name) && frame.name !== 'li') breakBlock();
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
const joined = out.join('');
|
|
481
|
+
if (inlineOnly) return joined.replace(/\s+/g, ' ').trim();
|
|
482
|
+
return joined.replace(/[ \t]+\n/g, '\n').replace(/\n{3,}/g, '\n\n').trim();
|
|
483
|
+
}
|
|
484
|
+
/** Author HTML as Markdown blocks — headings, lists, links, code and all. */ export function authorHtmlToMarkdown(html, context) {
|
|
485
|
+
return convert(html, context, false);
|
|
486
|
+
}
|
|
487
|
+
/**
|
|
488
|
+
* A control's rich label as ONE line of Markdown.
|
|
489
|
+
*
|
|
490
|
+
* Block structure is deliberately flattened: a button whose label is a heading
|
|
491
|
+
* is not a heading, and emitting one would put a `#` in the middle of a
|
|
492
|
+
* sentence for every rich-mode label on the site.
|
|
493
|
+
*/ export function inlineAuthorHtmlToMarkdown(html, context) {
|
|
494
|
+
return convert(html, context, true);
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
//# sourceMappingURL=author-html-markdown.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/author-html-markdown.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 * Author HTML → Markdown, with no DOM (AGL-2716).\n *\n * Two kinds of author markup reach a page and neither is a node tree: the\n * inline editor's rich mode commits sanitized markup into a node's `html`\n * prop, and the Custom HTML component carries a whole fragment. Both have to\n * survive into the Markdown representation of the page, or a heading typed in\n * rich mode reads as body copy and a Custom HTML block disappears entirely.\n *\n * ## Why not reuse `markdown-html-paste`\n *\n * The visual editor already converts pasted HTML to the markdown-lite row\n * model — but it parses with `DOMParser`, which exists only in a browser. This\n * runs inside a route handler answering `Accept: text/markdown`, where there\n * is no DOM at all, so the parse has to be a tokenizer over the string. The\n * two are not duplicates so much as the same idea either side of a boundary\n * neither can cross.\n *\n * ## Why a tokenizer is safe HERE and would not be in a sanitizer\n *\n * A sanitizer that mis-parses ships markup; the failure is an XSS. This\n * produces TEXT — no consumer of the output executes anything — so a\n * mis-parsed tag costs a formatting artifact and nothing more. That is what\n * makes a ~200-line tokenizer the proportionate tool rather than a parser\n * dependency, and it is why nothing here is on the sanitizer's path: the\n * source it reads has already been through {@link sanitizeAuthorHtml} at\n * render time.\n *\n * Unknown elements UNWRAP rather than drop, matching the sanitizer's own rule,\n * so markup this file has never heard of still contributes its text.\n */\n\nimport { decodeCharacterReferences, isAllowedAuthorHtmlUrl } from './author-html'\nimport { absoluteMediaSrc } from './media-ref'\n\n/**\n * Typographic named references, decoded for TEXT CONTENT only.\n *\n * {@link decodeCharacterReferences} deliberately knows a very short table: it\n * exists to judge ATTRIBUTE values the way a browser will, and its own header\n * explains that a reference outside that table cannot contribute a letter or a\n * colon and so cannot spell a scheme. Widening it to make prose read nicely\n * would trade a security property for a typographic one.\n *\n * So the widening lives HERE, where the output is text that nothing executes.\n * Applied after the shared decoder, and to text nodes only — never to an\n * `href` or a `src`, which still go through the narrow table alone.\n */\nconst TEXT_REFERENCES: Record<string, string> = {\n mdash: '\\u2014', ndash: '\\u2013', hellip: '\\u2026', lsquo: '\\u2018',\n rsquo: '\\u2019', ldquo: '\\u201c', rdquo: '\\u201d', sbquo: '\\u201a',\n bdquo: '\\u201e', laquo: '\\u00ab', raquo: '\\u00bb', copy: '\\u00a9',\n reg: '\\u00ae', trade: '\\u2122', deg: '\\u00b0', times: '\\u00d7',\n divide: '\\u00f7', middot: '\\u00b7', bull: '\\u2022', dagger: '\\u2020',\n Dagger: '\\u2021', permil: '\\u2030', prime: '\\u2032', Prime: '\\u2033',\n euro: '\\u20ac', pound: '\\u00a3', yen: '\\u00a5', cent: '\\u00a2',\n sect: '\\u00a7', para: '\\u00b6', plusmn: '\\u00b1', frac12: '\\u00bd',\n frac14: '\\u00bc', frac34: '\\u00be', ne: '\\u2260', le: '\\u2264',\n ge: '\\u2265', larr: '\\u2190', rarr: '\\u2192', harr: '\\u2194',\n infin: '\\u221e', ensp: ' ', emsp: ' ', thinsp: ' ', shy: '',\n zwj: '', zwnj: '',\n}\n\n/** Character references as a reader should see them; see {@link TEXT_REFERENCES}. */\nfunction decodeTextReferences(value: string): string {\n const decoded = decodeCharacterReferences(value)\n if (!decoded.includes('&')) return decoded\n return decoded.replace(\n /&([a-zA-Z][a-zA-Z0-9]{1,31});?/g,\n (match, name: string) => TEXT_REFERENCES[name] ?? match,\n )\n}\n\n/** Where relative URLs resolve, matching `PageMarkdownContext`. */\nexport interface AuthorHtmlMarkdownContext {\n origin?: string | null\n hostId?: string\n}\n\n/** Elements that end the current line and start a new block. */\nconst BLOCK_ELEMENTS: ReadonlySet<string> = new Set([\n 'address', 'article', 'aside', 'blockquote', 'div', 'dd', 'dl', 'dt',\n 'figcaption', 'figure', 'footer', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',\n 'header', 'hgroup', 'hr', 'li', 'main', 'nav', 'ol', 'p', 'pre', 'section',\n 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'ul',\n])\n\n/** Elements whose CONTENT is dropped with them, never unwrapped. */\nconst DROPPED: ReadonlySet<string> = new Set([\n 'script', 'style', 'template', 'noscript', 'iframe', 'object', 'svg', 'math',\n])\n\n/** Void elements — no end tag, never pushed on the open stack. */\nconst VOID: ReadonlySet<string> = new Set([\n 'area', 'base', 'br', 'col', 'embed', 'hr', 'img', 'input', 'link', 'meta',\n 'source', 'track', 'wbr',\n])\n\ninterface Attributes {\n [name: string]: string\n}\n\ninterface Token {\n kind: 'text' | 'start' | 'end'\n name: string\n text: string\n attributes: Attributes\n selfClosing: boolean\n}\n\nconst ATTRIBUTE = /([a-zA-Z_:][-\\w:.]*)(?:\\s*=\\s*(\"[^\"]*\"|'[^']*'|[^\\s\"'=<>`]+))?/g\n\n/** Read a start tag's attributes into a lowercased-name map. */\nfunction readAttributes(raw: string): Attributes {\n const attributes: Attributes = {}\n ATTRIBUTE.lastIndex = 0\n let match: RegExpExecArray | null\n while ((match = ATTRIBUTE.exec(raw)) !== null) {\n const value = match[2] ?? ''\n const unquoted =\n value.startsWith('\"') || value.startsWith(\"'\") ? value.slice(1, -1) : value\n attributes[match[1].toLowerCase()] = decodeCharacterReferences(unquoted)\n }\n return attributes\n}\n\n/**\n * Tokenize a fragment.\n *\n * Comments, doctypes and CDATA are consumed and produce nothing. A `<` that\n * does not begin a tag is literal text — which is what a browser does with it\n * and what an author who typed `a < b` meant.\n */\nfunction tokenize(html: string): Token[] {\n const tokens: Token[] = []\n let index = 0\n let text = ''\n const flushText = (): void => {\n if (!text) return\n tokens.push({\n kind: 'text',\n name: '',\n text: decodeTextReferences(text),\n attributes: {},\n selfClosing: false,\n })\n text = ''\n }\n while (index < html.length) {\n const next = html.indexOf('<', index)\n if (next === -1) {\n text += html.slice(index)\n break\n }\n text += html.slice(index, next)\n const rest = html.slice(next)\n if (rest.startsWith('<!--')) {\n const end = html.indexOf('-->', next + 4)\n index = end === -1 ? html.length : end + 3\n continue\n }\n if (rest.startsWith('<!') || rest.startsWith('<?')) {\n const end = html.indexOf('>', next)\n index = end === -1 ? html.length : end + 1\n continue\n }\n const tag = /^<(\\/?)([a-zA-Z][a-zA-Z0-9-]*)((?:[^>\"']|\"[^\"]*\"|'[^']*')*)>/.exec(rest)\n if (!tag) {\n // Not a tag. A literal `<`.\n text += '<'\n index = next + 1\n continue\n }\n flushText()\n const name = tag[2].toLowerCase()\n const raw = tag[3] ?? ''\n tokens.push({\n kind: tag[1] === '/' ? 'end' : 'start',\n name,\n text: '',\n attributes: tag[1] === '/' ? {} : readAttributes(raw),\n selfClosing: raw.trimEnd().endsWith('/'),\n })\n index = next + tag[0].length\n }\n flushText()\n return tokens\n}\n\n/** Markdown control characters, escaped so author text does not re-parse. */\nfunction escapeInline(value: string): string {\n return value.replace(/([\\\\`*_[\\]<>])/g, '\\\\$1')\n}\n\n/**\n * Absolutize a link target, leaving anything already absolute alone.\n *\n * Scheme-checked against {@link isAllowedAuthorHtmlUrl} — the sanitizer's own\n * rule, not a second spelling of it (AGL-2740). A Custom HTML fragment is\n * stored UNSANITIZED and cleaned at render, so this converter is the one\n * reader of it that never sees the sanitizer run: without the check, an\n * `<a href=\"screen:v0clP6xQl-\">` an author hand-typed loses its href in the\n * page and keeps it in the Markdown, which publishes a link target the page\n * itself refuses. Refused targets keep their TEXT — the caller emits the\n * unlinked label — because dropping the words as well would silently shorten\n * the document.\n */\nfunction absoluteHref(href: string, context?: AuthorHtmlMarkdownContext): string {\n const value = href.trim()\n if (!value) return ''\n if (!isAllowedAuthorHtmlUrl('a', 'href', value)) return ''\n if (/^[a-z][a-z0-9+.-]*:/i.test(value) || value.startsWith('//')) return value\n const origin = context?.origin?.replace(/\\/+$/, '') ?? ''\n if (!origin) return value\n return value.startsWith('/') ? `${origin}${value}` : `${origin}/${value}`\n}\n\n/** State the converter carries down the tag stack. */\ninterface Frame {\n name: string\n /** Where in `out` this element's content began, for wrapping on close. */\n start: number\n attributes: Attributes\n}\n\n/**\n * Convert a fragment to Markdown.\n *\n * @param inlineOnly - emit no block structure, for a control's rich LABEL,\n * where a heading or a list would be nonsense inside a button.\n */\nfunction convert(\n html: string,\n context: AuthorHtmlMarkdownContext | undefined,\n inlineOnly: boolean,\n): string {\n if (typeof html !== 'string' || !html) return ''\n const out: string[] = []\n const stack: Frame[] = []\n /** Depth of `<pre>`, inside which whitespace is content. */\n let preDepth = 0\n /** Depth of a dropped element, inside which nothing is emitted. */\n let dropDepth = 0\n /** Open list contexts, innermost last; `null` marks an unordered list. */\n const lists: Array<{ ordered: boolean; index: number }> = []\n\n const emit = (value: string): void => {\n if (value) out.push(value)\n }\n const breakBlock = (): void => {\n if (inlineOnly) {\n // A control's label is one line. A block boundary becomes a space so two\n // paragraphs of rich text do not run their last and first words together.\n if (out.length && !/\\s$/.test(out[out.length - 1])) emit(' ')\n return\n }\n while (out.length && out[out.length - 1] === '') out.pop()\n emit('\\n\\n')\n }\n\n for (const token of tokenize(html)) {\n if (dropDepth > 0) {\n if (token.kind === 'end' && DROPPED.has(token.name)) dropDepth -= 1\n else if (token.kind === 'start' && DROPPED.has(token.name)) dropDepth += 1\n continue\n }\n\n if (token.kind === 'text') {\n if (preDepth > 0) emit(token.text)\n else {\n const collapsed = token.text.replace(/\\s+/g, ' ')\n if (collapsed.trim() === '' && collapsed !== '') {\n // Whitespace BETWEEN elements is a word separator, but never the\n // first thing in a block — that is the indentation of the source.\n const previous = out.length ? out[out.length - 1] : ''\n if (previous && !/\\s$/.test(previous)) emit(' ')\n } else {\n emit(escapeInline(collapsed))\n }\n }\n continue\n }\n\n const { name } = token\n if (token.kind === 'start') {\n if (DROPPED.has(name)) {\n dropDepth += 1\n continue\n }\n if (BLOCK_ELEMENTS.has(name) && name !== 'li') breakBlock()\n switch (name) {\n case 'br':\n emit(inlineOnly ? ' ' : '\\n')\n continue\n case 'hr':\n if (!inlineOnly) emit('---')\n continue\n case 'img': {\n const src = absoluteMediaSrc(token.attributes['src'] ?? '', {\n hostId: context?.hostId,\n origin: context?.origin,\n })\n if (src) {\n emit(`![${escapeInline(token.attributes['alt'] ?? '')}](${src})`)\n }\n continue\n }\n case 'b':\n case 'strong':\n emit('**')\n break\n case 'i':\n case 'em':\n case 'cite':\n case 'dfn':\n case 'var':\n emit('_')\n break\n case 'del':\n case 's':\n emit('~~')\n break\n case 'code':\n // Inside `<pre>` the fence below already marks it as code; a second\n // pair of backticks would land inside the fence as literal text.\n if (preDepth === 0) emit('`')\n break\n case 'pre':\n preDepth += 1\n if (!inlineOnly) emit('```\\n')\n break\n case 'blockquote':\n if (!inlineOnly) emit('> ')\n break\n case 'ul':\n case 'ol':\n if (!inlineOnly) lists.push({ ordered: name === 'ol', index: 0 })\n break\n case 'li': {\n if (inlineOnly) break\n const list = lists[lists.length - 1]\n const indent = ' '.repeat(Math.max(0, lists.length - 1))\n if (list?.ordered) {\n list.index += 1\n emit(`${indent}${list.index}. `)\n } else {\n emit(`${indent}- `)\n }\n break\n }\n default:\n break\n }\n if (!VOID.has(name) && !token.selfClosing) {\n stack.push({ name, start: out.length, attributes: token.attributes })\n }\n // A heading's `#` prefix is written on OPEN, after the block break above.\n const heading = /^h([1-6])$/.exec(name)\n if (heading && !inlineOnly) emit(`${'#'.repeat(Number(heading[1]))} `)\n continue\n }\n\n // An end tag. Unwind to the nearest matching open element; an unmatched\n // end tag is ignored, which is what a parser does with it.\n const at = stack.map((frame) => frame.name).lastIndexOf(name)\n if (at === -1) continue\n while (stack.length > at) {\n const frame = stack.pop()\n if (!frame) break\n switch (frame.name) {\n case 'b':\n case 'strong':\n emit('**')\n break\n case 'i':\n case 'em':\n case 'cite':\n case 'dfn':\n case 'var':\n emit('_')\n break\n case 'del':\n case 's':\n emit('~~')\n break\n case 'code':\n if (preDepth === 0) emit('`')\n break\n case 'pre':\n preDepth = Math.max(0, preDepth - 1)\n if (!inlineOnly) emit('\\n```')\n break\n case 'ul':\n case 'ol':\n if (!inlineOnly) lists.pop()\n break\n case 'li':\n if (!inlineOnly) emit('\\n')\n break\n case 'a': {\n /*\n The link text is whatever was emitted since the open tag, spliced\n out of `out` and wrapped. Splicing rather than buffering per frame\n because a nested `<strong>` inside the anchor has already written\n its markers into the same array — rebuilding the text from tokens\n would drop them.\n */\n const text = out.splice(frame.start).join('')\n const href = absoluteHref(frame.attributes['href'] ?? '', context)\n if (!text.trim()) {\n // An anchor with no text is a bare URL at best; emitting `[](url)`\n // is a link nothing can click.\n if (href) emit(href)\n } else if (href) {\n emit(`[${text.trim()}](${href})`)\n } else {\n emit(text)\n }\n break\n }\n default:\n break\n }\n if (BLOCK_ELEMENTS.has(frame.name) && frame.name !== 'li') breakBlock()\n }\n }\n\n const joined = out.join('')\n if (inlineOnly) return joined.replace(/\\s+/g, ' ').trim()\n return joined\n .replace(/[ \\t]+\\n/g, '\\n')\n .replace(/\\n{3,}/g, '\\n\\n')\n .trim()\n}\n\n/** Author HTML as Markdown blocks — headings, lists, links, code and all. */\nexport function authorHtmlToMarkdown(\n html: string,\n context?: AuthorHtmlMarkdownContext,\n): string {\n return convert(html, context, false)\n}\n\n/**\n * A control's rich label as ONE line of Markdown.\n *\n * Block structure is deliberately flattened: a button whose label is a heading\n * is not a heading, and emitting one would put a `#` in the middle of a\n * sentence for every rich-mode label on the site.\n */\nexport function inlineAuthorHtmlToMarkdown(\n html: string,\n context?: AuthorHtmlMarkdownContext,\n): string {\n return convert(html, context, true)\n}\n"],"names":["decodeCharacterReferences","isAllowedAuthorHtmlUrl","absoluteMediaSrc","TEXT_REFERENCES","mdash","ndash","hellip","lsquo","rsquo","ldquo","rdquo","sbquo","bdquo","laquo","raquo","copy","reg","trade","deg","times","divide","middot","bull","dagger","Dagger","permil","prime","Prime","euro","pound","yen","cent","sect","para","plusmn","frac12","frac14","frac34","ne","le","ge","larr","rarr","harr","infin","ensp","emsp","thinsp","shy","zwj","zwnj","decodeTextReferences","value","decoded","includes","replace","match","name","BLOCK_ELEMENTS","Set","DROPPED","VOID","ATTRIBUTE","readAttributes","raw","attributes","lastIndex","exec","unquoted","startsWith","slice","toLowerCase","tokenize","html","tokens","index","text","flushText","push","kind","selfClosing","length","tag","next","indexOf","rest","end","trimEnd","endsWith","escapeInline","absoluteHref","href","context","trim","test","origin","convert","inlineOnly","out","stack","preDepth","dropDepth","lists","emit","breakBlock","pop","token","has","collapsed","previous","src","hostId","ordered","list","indent","repeat","Math","max","start","heading","Number","at","map","frame","lastIndexOf","splice","join","joined","authorHtmlToMarkdown","inlineAuthorHtmlToMarkdown"],"mappings":"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"}
|