@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,705 @@
|
|
|
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
|
+
* Markdown-lite (AGL-123): the tiny subset blog entries use — headings,
|
|
18
|
+
* bold/italic, links, images, bullet and numbered lists, paragraphs, fenced
|
|
19
|
+
* code blocks, tables and blockquotes. Parsed into plain data blocks that
|
|
20
|
+
* renderers turn into elements themselves (no HTML string is ever produced,
|
|
21
|
+
* so there is nothing to sanitize).
|
|
22
|
+
*/ import { isMediaRef, parseMediaRef } from "./media-ref.js";
|
|
23
|
+
import { parseCollectionLinkValue, parseEntryLinkValue, parseFeedLinkValue, parseScreenLinkValue, resolveScreenHref, SCREEN_LINK_VALUE_PREFIX, screenRoutesAnswerFor } from "./screen-link-value.js";
|
|
24
|
+
const INLINE_PATTERN = /(\*\*([^*]+)\*\*)|(\*([^*]+)\*)|(\[([^\]]+)\]\(([^)\s]+)\))/g;
|
|
25
|
+
/**
|
|
26
|
+
* Only absolute http(s) survives; anything else renders as text. The `http:`
|
|
27
|
+
* half reaches LINKS only — {@link safeImageUrl} refuses it before it gets
|
|
28
|
+
* here (AGL-1713).
|
|
29
|
+
*/ function safeUrl(url) {
|
|
30
|
+
return /^https?:\/\//i.test(url) ? url : null;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Whether a link target is one the parser will keep — the PUBLIC half of
|
|
34
|
+
* {@link safeLinkUrl}, so an editor can refuse what the parser would drop
|
|
35
|
+
* instead of discovering the disagreement on the published page (AGL-1686).
|
|
36
|
+
*/ export function isSupportedLinkHref(url) {
|
|
37
|
+
return safeLinkUrl(url) !== null;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Whether an image source is one the parser will keep. The predicate an
|
|
41
|
+
* authoring surface must validate against, for the reason
|
|
42
|
+
* {@link isSupportedLinkHref} exists and one the editor learned the hard way:
|
|
43
|
+
* AGL-1645 widened the visual editor's image check to accept site-relative
|
|
44
|
+
* paths without widening this file, so every image picked from the media
|
|
45
|
+
* library serialized into the document and then vanished on the next parse.
|
|
46
|
+
* One predicate, two callers, no drift.
|
|
47
|
+
*/ export function isSupportedImageSrc(url) {
|
|
48
|
+
return safeImageUrl(url) !== null;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Whether a link target is a stored REFERENCE rather than an address
|
|
52
|
+
* (AGL-3118): a screen, a collection listing, an entry or a feed, named by id
|
|
53
|
+
* so a rename cannot break it. Only the marked, well-formed forms count — a
|
|
54
|
+
* bare id is indistinguishable from a relative path with no slash, so it
|
|
55
|
+
* stays what the dialect has always made of it.
|
|
56
|
+
*
|
|
57
|
+
* Kept verbatim in the parsed link: a renderer resolves it against the same
|
|
58
|
+
* routing map element links use, and the serializer writes it back as typed.
|
|
59
|
+
*/ export function isMarkdownLinkReference(url) {
|
|
60
|
+
if (url.startsWith(SCREEN_LINK_VALUE_PREFIX)) {
|
|
61
|
+
return parseScreenLinkValue(url) !== undefined;
|
|
62
|
+
}
|
|
63
|
+
return parseCollectionLinkValue(url) !== undefined || parseEntryLinkValue(url) !== undefined || parseFeedLinkValue(url) !== undefined;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Link targets additionally allow SITE-RELATIVE paths (AGL-582) so entry
|
|
67
|
+
* markdown can link to other pages of the same site — renderers give those
|
|
68
|
+
* client-side navigation — and link REFERENCES (AGL-3118), which renderers
|
|
69
|
+
* resolve to wherever the target lives now. Protocol-relative `//host` is
|
|
70
|
+
* rejected: it would silently leave the site.
|
|
71
|
+
*/ function safeLinkUrl(url) {
|
|
72
|
+
if (/^\/(?!\/)/.test(url)) return url;
|
|
73
|
+
if (isMarkdownLinkReference(url)) return url;
|
|
74
|
+
return safeUrl(url);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Image sources take everything a link takes, PLUS a media reference
|
|
78
|
+
* (AGL-1686).
|
|
79
|
+
*
|
|
80
|
+
* Images were the one slot still on absolute-`http(s)`-only, and that was
|
|
81
|
+
* silently eating two forms the product now produces:
|
|
82
|
+
*
|
|
83
|
+
* 1. `media:{scope}/{mediaId}` — what "Browse media" stores everywhere else
|
|
84
|
+
* (AGL-1215). The reference names the asset and lets the renderer decide
|
|
85
|
+
* how to fetch it, which is the only form that survives a folder move, a
|
|
86
|
+
* replace, a route change, and a component shared across sites.
|
|
87
|
+
* 2. A site-relative `/api/media/cdn/…` or `/images/hero.png`. The visual
|
|
88
|
+
* editor's own `isValidImageUrl` accepts these (AGL-1645) and
|
|
89
|
+
* `safeLinkUrl` always has — so the parser was the one place that
|
|
90
|
+
* disagreed, and it disagreed by DROPPING the whole block. An image with
|
|
91
|
+
* an unparseable src emits no block at all, so the failure was not a
|
|
92
|
+
* broken-image icon or a console error; the picture simply was not there.
|
|
93
|
+
*
|
|
94
|
+
* A malformed reference is still refused. `parseMediaRef` is the same grammar
|
|
95
|
+
* `formatMediaRef` mints against, so `media:` junk an author typed never
|
|
96
|
+
* becomes a block whose src no renderer can resolve — the parse boundary
|
|
97
|
+
* keeps the promise `resolveMediaSrc` makes on the other side.
|
|
98
|
+
*
|
|
99
|
+
* Protocol-relative stays refused here exactly as it is for links.
|
|
100
|
+
*
|
|
101
|
+
* It takes two things LESS than a link. A link REFERENCE (AGL-3118) names a
|
|
102
|
+
* page, not a file, so no renderer has a picture to fetch for one; kept, it
|
|
103
|
+
* would reach an `<img src="entry:…">`.
|
|
104
|
+
*
|
|
105
|
+
* And `http:` (AGL-1713). An image is fetched the moment the page renders; a
|
|
106
|
+
* link is followed by the reader's
|
|
107
|
+
* choice, past an interstitial the browser puts up. So an `http:` image on our
|
|
108
|
+
* TLS pages is mixed content that every current browser blocks outright — the
|
|
109
|
+
* permissive form never rendered a picture, it only moved the failure from
|
|
110
|
+
* authoring time to the viewer, and stored a src that is a CSP violation
|
|
111
|
+
* waiting for AGL-1702 to enforce. Refusing it here reports at authoring time
|
|
112
|
+
* through `isSupportedImageSrc`, which the editor and the besigner picker both
|
|
113
|
+
* validate against. This is the same asymmetry AGL-1701 struck between
|
|
114
|
+
* `SAFE_SRC` and `SAFE_HREF` on the published marketplace node, and the same
|
|
115
|
+
* reason it left `homepageUrl`/`repositoryUrl` as any-https.
|
|
116
|
+
*/ function safeImageUrl(url) {
|
|
117
|
+
if (isMediaRef(url)) return parseMediaRef(url) ? url : null;
|
|
118
|
+
if (/^http:\/\//i.test(url)) return null;
|
|
119
|
+
if (isMarkdownLinkReference(url)) return null;
|
|
120
|
+
return safeLinkUrl(url);
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* True for hrefs the parser emitted as site-relative (start with `/`) AND that
|
|
124
|
+
* a client router can actually settle on.
|
|
125
|
+
*
|
|
126
|
+
* `/api/…` is excluded because those paths serve FILES, not pages —
|
|
127
|
+
* `/api/media/cdn/{scope}/{id}` is the download URL every media reference
|
|
128
|
+
* resolves to, and it is what "Browse media" hands an author who links a PDF
|
|
129
|
+
* or a logo kit. Routed through `AppLink` the click starts a client-side
|
|
130
|
+
* navigation that can never complete: the response is an attachment, so the
|
|
131
|
+
* router mounts its navigation-pending overlay and waits forever.
|
|
132
|
+
*
|
|
133
|
+
* The tell is a page trapped behind a spinner, NOT a failed download — the
|
|
134
|
+
* browser fetches the attachment underneath the overlay, so the file lands in
|
|
135
|
+
* Downloads while the site sits there looking broken. That mismatch sends you
|
|
136
|
+
* hunting the media endpoint, which answers `200` with a correct
|
|
137
|
+
* `Content-Disposition: attachment` every time.
|
|
138
|
+
*
|
|
139
|
+
* Both callers use this purely to choose `AppLink` vs a plain anchor, so
|
|
140
|
+
* narrowing it here fixes markdown bodies and collection item links together.
|
|
141
|
+
*/ export function isInternalMarkdownHref(href) {
|
|
142
|
+
return /^\/(?!\/)/.test(href) && !/^\/api\//.test(href);
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* What one parsed link renders as (AGL-3118), for every markdown-lite
|
|
146
|
+
* renderer on a site: the Markdown element, the entry body and the legacy
|
|
147
|
+
* article surface.
|
|
148
|
+
*
|
|
149
|
+
* A link REFERENCE resolves against the routing map element links use, so a
|
|
150
|
+
* link in a post follows its target through a rename exactly as a button
|
|
151
|
+
* does, and a target the map does not have (unpublished, deleted, or never
|
|
152
|
+
* asked for) renders as the link's text — never as an anchor whose href is
|
|
153
|
+
* the stored reference. Every other href is the one the parser kept.
|
|
154
|
+
*
|
|
155
|
+
* An editing surface withholds every href, so there the only question is
|
|
156
|
+
* whether a link is drawn at all: a reference the map KNOWS is gone reads as
|
|
157
|
+
* the text the published page will show, and one the map cannot judge yet —
|
|
158
|
+
* nothing of its kind has loaded — keeps the link look, for the reason
|
|
159
|
+
* `isScreenLinkBroken` gives.
|
|
160
|
+
*/ export function resolveMarkdownLink(href, context = {}) {
|
|
161
|
+
var _context_screens;
|
|
162
|
+
const screens = (_context_screens = context.screens) != null ? _context_screens : undefined;
|
|
163
|
+
const reference = isMarkdownLinkReference(href);
|
|
164
|
+
const resolved = reference ? resolveScreenHref(screens, href) : href;
|
|
165
|
+
if (context.suppressNavigation) {
|
|
166
|
+
const gone = reference && resolved === undefined && screenRoutesAnswerFor(screens, href);
|
|
167
|
+
return gone ? {
|
|
168
|
+
kind: 'text'
|
|
169
|
+
} : {
|
|
170
|
+
kind: 'inert'
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
if (resolved === undefined) return {
|
|
174
|
+
kind: 'text'
|
|
175
|
+
};
|
|
176
|
+
return isInternalMarkdownHref(resolved) ? {
|
|
177
|
+
kind: 'internal',
|
|
178
|
+
href: resolved
|
|
179
|
+
} : {
|
|
180
|
+
kind: 'external',
|
|
181
|
+
href: resolved
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* Appends plain text, merging into a trailing text inline so the emitted
|
|
186
|
+
* model is canonical (no adjacent text runs). Canonical inlines are what
|
|
187
|
+
* makes `serializeMarkdownLite` a true inverse: a degraded link squeezed
|
|
188
|
+
* between two text gaps re-parses to the same single text inline (AGL-582).
|
|
189
|
+
*/ function pushText(inlines, text) {
|
|
190
|
+
if (!text) return;
|
|
191
|
+
const last = inlines[inlines.length - 1];
|
|
192
|
+
if ((last == null ? void 0 : last.type) === 'text') last.text += text;
|
|
193
|
+
else inlines.push({
|
|
194
|
+
type: 'text',
|
|
195
|
+
text
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
export function parseMarkdownInlines(text) {
|
|
199
|
+
const inlines = [];
|
|
200
|
+
let cursor = 0;
|
|
201
|
+
for (const match of text.matchAll(INLINE_PATTERN)){
|
|
202
|
+
var _match_index;
|
|
203
|
+
const index = (_match_index = match.index) != null ? _match_index : 0;
|
|
204
|
+
if (index > cursor) {
|
|
205
|
+
pushText(inlines, text.slice(cursor, index));
|
|
206
|
+
}
|
|
207
|
+
if (match[2] != null) {
|
|
208
|
+
inlines.push({
|
|
209
|
+
type: 'bold',
|
|
210
|
+
text: match[2]
|
|
211
|
+
});
|
|
212
|
+
} else if (match[4] != null) {
|
|
213
|
+
inlines.push({
|
|
214
|
+
type: 'italic',
|
|
215
|
+
text: match[4]
|
|
216
|
+
});
|
|
217
|
+
} else if (match[6] != null) {
|
|
218
|
+
const href = safeLinkUrl(match[7]);
|
|
219
|
+
if (href) inlines.push({
|
|
220
|
+
type: 'link',
|
|
221
|
+
text: match[6],
|
|
222
|
+
href
|
|
223
|
+
});
|
|
224
|
+
else pushText(inlines, match[6]);
|
|
225
|
+
}
|
|
226
|
+
cursor = index + match[0].length;
|
|
227
|
+
}
|
|
228
|
+
if (cursor < text.length) {
|
|
229
|
+
pushText(inlines, text.slice(cursor));
|
|
230
|
+
}
|
|
231
|
+
return inlines;
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* An ATX heading at ANY of markdown's six levels (AGL-1082). The dialect only
|
|
235
|
+
* RENDERS two, but it must not mistake the other four for prose: matching just
|
|
236
|
+
* `#{2,3}` made `# Title` — how essentially every repo README opens — fall
|
|
237
|
+
* through to a paragraph carrying a literal `#`, silently, in every renderer.
|
|
238
|
+
*/ const HEADING_PATTERN = /^(#{1,6})\s+(.*)$/;
|
|
239
|
+
/**
|
|
240
|
+
* Clamps an ATX level onto the two the block union carries. `#` promotes to
|
|
241
|
+
* the top rendered level and `####`+ demote to the bottom one, so an out-of-
|
|
242
|
+
* range heading degrades to the NEAREST heading rather than to prose — the
|
|
243
|
+
* same lossy-but-visible degradation the dialect already applies to a `*`
|
|
244
|
+
* inside a bold run. Deliberately NOT widening `level` to `1 | 2 | 3`: every
|
|
245
|
+
* renderer reads it as `level === 2 ? h2 : h3`, so a third value would type-
|
|
246
|
+
* check clean and silently render an h1 as an h3 in six places. This also
|
|
247
|
+
* makes the markdown path agree with the HTML-paste path, which has always
|
|
248
|
+
* mapped `<h1>` to a level-2 heading.
|
|
249
|
+
*/ function clampHeadingLevel(hashes) {
|
|
250
|
+
return hashes <= 2 ? 2 : 3;
|
|
251
|
+
}
|
|
252
|
+
/** ```` ``` ```` or longer, optionally naming a language. */ const FENCE_PATTERN = /^`{3,}\s*([^\s`]*)\s*$/;
|
|
253
|
+
/** A bullet-list marker: `- ` or `* `. */ const BULLET_ITEM_PATTERN = /^[-*]\s+/;
|
|
254
|
+
/**
|
|
255
|
+
* An ordered-list marker (AGL-1320): `1. ` or `1) `, capped at nine digits
|
|
256
|
+
* like CommonMark so a stray year cannot become an absurd `start`. The
|
|
257
|
+
* trailing `\s+` is load-bearing twice over: it keeps `1.no space` prose, and
|
|
258
|
+
* it makes an EMPTY item impossible, which is the other half of CommonMark's
|
|
259
|
+
* interrupt rule (a bare `1.` may not interrupt a paragraph either).
|
|
260
|
+
*/ const ORDERED_ITEM_PATTERN = /^(\d{1,9})[.)]\s+/;
|
|
261
|
+
/** A delimiter cell of a GFM table's second row: `---`, `:--`, `:-:`, `--:`. */ const DELIMITER_CELL = /^:?-+:?$/;
|
|
262
|
+
/** Splits a table row on `|`, dropping the optional outer pipes. */ function splitTableRow(line) {
|
|
263
|
+
let text = line.trim();
|
|
264
|
+
if (text.startsWith('|')) text = text.slice(1);
|
|
265
|
+
if (text.endsWith('|')) text = text.slice(0, -1);
|
|
266
|
+
return text.split('|').map((cell)=>cell.trim());
|
|
267
|
+
}
|
|
268
|
+
function alignOfDelimiter(cell) {
|
|
269
|
+
const left = cell.startsWith(':');
|
|
270
|
+
const right = cell.endsWith(':');
|
|
271
|
+
if (left && right) return 'center';
|
|
272
|
+
return right ? 'right' : 'left';
|
|
273
|
+
}
|
|
274
|
+
/**
|
|
275
|
+
* A pipe table when the chunk's SECOND line is all delimiter cells — the
|
|
276
|
+
* same rule GFM uses, and the reason a paragraph mentioning `a | b` is
|
|
277
|
+
* still a paragraph. Cells are squared off to the header's width: ragged
|
|
278
|
+
* rows pad with empty cells and overflow is dropped, so the model the
|
|
279
|
+
* serializer writes back re-parses to itself.
|
|
280
|
+
*/ function parseTable(lines) {
|
|
281
|
+
const [headerLine, delimiterLine] = lines;
|
|
282
|
+
if (!headerLine || !delimiterLine || !headerLine.includes('|')) return null;
|
|
283
|
+
const delimiters = splitTableRow(delimiterLine);
|
|
284
|
+
if (!delimiters.every((cell)=>DELIMITER_CELL.test(cell))) return null;
|
|
285
|
+
const header = splitTableRow(headerLine).map(parseMarkdownInlines);
|
|
286
|
+
const columns = header.length;
|
|
287
|
+
const squared = (cells)=>Array.from({
|
|
288
|
+
length: columns
|
|
289
|
+
}, (_, index)=>{
|
|
290
|
+
var _cells_index;
|
|
291
|
+
return parseMarkdownInlines((_cells_index = cells[index]) != null ? _cells_index : '');
|
|
292
|
+
});
|
|
293
|
+
return {
|
|
294
|
+
type: 'table',
|
|
295
|
+
align: Array.from({
|
|
296
|
+
length: columns
|
|
297
|
+
}, (_, index)=>{
|
|
298
|
+
var _delimiters_index;
|
|
299
|
+
return alignOfDelimiter((_delimiters_index = delimiters[index]) != null ? _delimiters_index : '---');
|
|
300
|
+
}),
|
|
301
|
+
header,
|
|
302
|
+
rows: lines.slice(2).map((line)=>squared(splitTableRow(line)))
|
|
303
|
+
};
|
|
304
|
+
}
|
|
305
|
+
/**
|
|
306
|
+
* Where a list begins, and which one (AGL-1320).
|
|
307
|
+
*
|
|
308
|
+
* `interrupting` is true when prose of the SAME chunk is already pending —
|
|
309
|
+
* i.e. this line would break a paragraph in two. CommonMark's rule, adopted
|
|
310
|
+
* verbatim: bullets may interrupt a paragraph freely, an ordered list only
|
|
311
|
+
* when it starts at 1. That is what keeps prose reading `1997. A good year
|
|
312
|
+
* for the web.` prose, while `…that includes:` followed by `1.`/`2.` becomes
|
|
313
|
+
* the enumerated list a statute describes. At the head of a chunk nothing is
|
|
314
|
+
* being interrupted, so any start number opens a list and a counter-notice
|
|
315
|
+
* resuming at `7.` still counts from seven.
|
|
316
|
+
*/ function listStartOf(line, interrupting) {
|
|
317
|
+
if (BULLET_ITEM_PATTERN.test(line)) return {
|
|
318
|
+
kind: 'list',
|
|
319
|
+
start: 0
|
|
320
|
+
};
|
|
321
|
+
const ordered = ORDERED_ITEM_PATTERN.exec(line);
|
|
322
|
+
if (!ordered) return null;
|
|
323
|
+
const start = Number(ordered[1]);
|
|
324
|
+
if (interrupting && start !== 1) return null;
|
|
325
|
+
return {
|
|
326
|
+
kind: 'orderedList',
|
|
327
|
+
start
|
|
328
|
+
};
|
|
329
|
+
}
|
|
330
|
+
/**
|
|
331
|
+
* One blank-line-delimited chunk of non-fenced source, as blocks.
|
|
332
|
+
*
|
|
333
|
+
* Usually one block — but a chunk splits at a list (AGL-1320), because the
|
|
334
|
+
* shape legal and instructional prose reaches for most is an introducing line
|
|
335
|
+
* with its items directly beneath, no blank line between. A list runs to the
|
|
336
|
+
* first line that is not an item; whatever follows starts a fresh paragraph,
|
|
337
|
+
* which a later list may interrupt in turn. The serializer writes the pieces
|
|
338
|
+
* back as separate blank-line-delimited chunks, so the split round-trips.
|
|
339
|
+
*/ function parseChunk(chunk) {
|
|
340
|
+
const trimmed = chunk.trim();
|
|
341
|
+
if (!trimmed) return [];
|
|
342
|
+
const image = /^!\[([^\]]*)\]\(([^)\s]+)\)$/.exec(trimmed);
|
|
343
|
+
if (image) {
|
|
344
|
+
const src = safeImageUrl(image[2]);
|
|
345
|
+
return src ? [
|
|
346
|
+
{
|
|
347
|
+
type: 'image',
|
|
348
|
+
src,
|
|
349
|
+
alt: image[1]
|
|
350
|
+
}
|
|
351
|
+
] : [];
|
|
352
|
+
}
|
|
353
|
+
const heading = HEADING_PATTERN.exec(trimmed);
|
|
354
|
+
if (heading) {
|
|
355
|
+
return [
|
|
356
|
+
{
|
|
357
|
+
type: 'heading',
|
|
358
|
+
level: clampHeadingLevel(heading[1].length),
|
|
359
|
+
inlines: parseMarkdownInlines(heading[2])
|
|
360
|
+
}
|
|
361
|
+
];
|
|
362
|
+
}
|
|
363
|
+
const lines = trimmed.split('\n');
|
|
364
|
+
const table = parseTable(lines);
|
|
365
|
+
if (table) return [
|
|
366
|
+
table
|
|
367
|
+
];
|
|
368
|
+
// A quote when EVERY line of the chunk is `>`-prefixed — a paragraph merely
|
|
369
|
+
// mentioning `>` stays a paragraph, and a quote does NOT interrupt prose the
|
|
370
|
+
// way a list does (`> ` is far rarer mid-paragraph than a numbered step, and
|
|
371
|
+
// the all-lines rule is the cheaper guarantee). Fenced code never reaches
|
|
372
|
+
// here (fences are cut out before chunking), so a `> ` inside a snippet is
|
|
373
|
+
// snippet text, not a quote (AGL-1315).
|
|
374
|
+
if (lines.every((line)=>/^>(\s|$)/.test(line.trim()))) {
|
|
375
|
+
const text = lines.map((line)=>line.trim().replace(/^>\s?/, '')).filter(Boolean).join(' ');
|
|
376
|
+
return [
|
|
377
|
+
{
|
|
378
|
+
type: 'quote',
|
|
379
|
+
inlines: parseMarkdownInlines(text)
|
|
380
|
+
}
|
|
381
|
+
];
|
|
382
|
+
}
|
|
383
|
+
const blocks = [];
|
|
384
|
+
// Prose lines are buffered RAW and joined with spaces, the way a multi-line
|
|
385
|
+
// paragraph has always read.
|
|
386
|
+
let prose = [];
|
|
387
|
+
const flushProse = ()=>{
|
|
388
|
+
if (prose.length) {
|
|
389
|
+
blocks.push({
|
|
390
|
+
type: 'paragraph',
|
|
391
|
+
inlines: parseMarkdownInlines(prose.join(' '))
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
prose = [];
|
|
395
|
+
};
|
|
396
|
+
for(let index = 0; index < lines.length; index++){
|
|
397
|
+
var _lines_index;
|
|
398
|
+
const line = ((_lines_index = lines[index]) != null ? _lines_index : '').trim();
|
|
399
|
+
const list = listStartOf(line, prose.length > 0);
|
|
400
|
+
if (!list) {
|
|
401
|
+
var _lines_index1;
|
|
402
|
+
prose.push((_lines_index1 = lines[index]) != null ? _lines_index1 : '');
|
|
403
|
+
continue;
|
|
404
|
+
}
|
|
405
|
+
flushProse();
|
|
406
|
+
const pattern = list.kind === 'list' ? BULLET_ITEM_PATTERN : ORDERED_ITEM_PATTERN;
|
|
407
|
+
const items = [];
|
|
408
|
+
// The run ends at the first line that is not an item of THIS kind, so a
|
|
409
|
+
// bullet closes a numbered run and vice versa. Only the FIRST ordered
|
|
410
|
+
// marker is read, which is why a source numbered `1. 1. 1.` renumbers on
|
|
411
|
+
// the way out.
|
|
412
|
+
while(index < lines.length){
|
|
413
|
+
var _lines_index2;
|
|
414
|
+
const item = ((_lines_index2 = lines[index]) != null ? _lines_index2 : '').trim();
|
|
415
|
+
if (!pattern.test(item)) break;
|
|
416
|
+
items.push(parseMarkdownInlines(item.replace(pattern, '')));
|
|
417
|
+
index++;
|
|
418
|
+
}
|
|
419
|
+
index--;
|
|
420
|
+
blocks.push(list.kind === 'list' ? {
|
|
421
|
+
type: 'list',
|
|
422
|
+
items
|
|
423
|
+
} : {
|
|
424
|
+
type: 'orderedList',
|
|
425
|
+
start: list.start,
|
|
426
|
+
items
|
|
427
|
+
});
|
|
428
|
+
}
|
|
429
|
+
flushProse();
|
|
430
|
+
return blocks;
|
|
431
|
+
}
|
|
432
|
+
/**
|
|
433
|
+
* Blocks are blank-line separated, EXCEPT inside a ``` fence — a code
|
|
434
|
+
* block owns its blank lines, so the scan is line-driven rather than a
|
|
435
|
+
* split on `\n{2,}` (AGL-974). An unterminated fence runs to the end of
|
|
436
|
+
* the document, which is what a README truncated mid-snippet needs.
|
|
437
|
+
*/ export function parseMarkdownLite(body) {
|
|
438
|
+
const blocks = [];
|
|
439
|
+
const lines = body.split('\n');
|
|
440
|
+
let pending = [];
|
|
441
|
+
const flush = ()=>{
|
|
442
|
+
// A chunk yields MORE than one block when a list interrupts its prose
|
|
443
|
+
// (AGL-1320) — and none at all when it holds nothing renderable.
|
|
444
|
+
if (pending.length) blocks.push(...parseChunk(pending.join('\n')));
|
|
445
|
+
pending = [];
|
|
446
|
+
};
|
|
447
|
+
for(let index = 0; index < lines.length; index++){
|
|
448
|
+
var _lines_index;
|
|
449
|
+
const line = (_lines_index = lines[index]) != null ? _lines_index : '';
|
|
450
|
+
const fence = FENCE_PATTERN.exec(line.trim());
|
|
451
|
+
if (fence) {
|
|
452
|
+
var _lines_index1, _fence_;
|
|
453
|
+
var _text_, _text_1;
|
|
454
|
+
flush();
|
|
455
|
+
const text = [];
|
|
456
|
+
while(++index < lines.length && !FENCE_PATTERN.test(((_lines_index1 = lines[index]) != null ? _lines_index1 : '').trim())){
|
|
457
|
+
var _lines_index2;
|
|
458
|
+
text.push((_lines_index2 = lines[index]) != null ? _lines_index2 : '');
|
|
459
|
+
}
|
|
460
|
+
// Blank edges are the fence's own padding, not part of the snippet.
|
|
461
|
+
while(text.length && !((_text_ = text[0]) == null ? void 0 : _text_.trim()))text.shift();
|
|
462
|
+
while(text.length && !((_text_1 = text[text.length - 1]) == null ? void 0 : _text_1.trim()))text.pop();
|
|
463
|
+
blocks.push({
|
|
464
|
+
type: 'code',
|
|
465
|
+
lang: (_fence_ = fence[1]) != null ? _fence_ : '',
|
|
466
|
+
text: text.join('\n')
|
|
467
|
+
});
|
|
468
|
+
continue;
|
|
469
|
+
}
|
|
470
|
+
if (line.trim()) pending.push(line);
|
|
471
|
+
else flush();
|
|
472
|
+
}
|
|
473
|
+
flush();
|
|
474
|
+
return blocks;
|
|
475
|
+
}
|
|
476
|
+
/** A link or an image in markdown-lite source: bang, text, target. */ const SOURCE_LINK_PATTERN = /(!?)\[([^\]]*)\]\(([^)\s]+)\)/g;
|
|
477
|
+
/**
|
|
478
|
+
* Markdown-lite SOURCE with its link references resolved (AGL-3118), for a
|
|
479
|
+
* reader that hands the source on instead of rendering it — the Markdown twin
|
|
480
|
+
* of a page, which an agent follows links out of.
|
|
481
|
+
*
|
|
482
|
+
* `resolve` answers a reference with the URL to write in its place, or with
|
|
483
|
+
* `undefined` for a target that is gone, and that link becomes its text
|
|
484
|
+
* alone: a reference no reader can follow is worse than no link at all. An
|
|
485
|
+
* image whose source is a reference becomes its alt text, because the parser
|
|
486
|
+
* draws no image for one.
|
|
487
|
+
*
|
|
488
|
+
* Everything else stays exactly as written, and fenced code is not touched —
|
|
489
|
+
* a reference quoted in a snippet is the snippet's text, as the parser has it.
|
|
490
|
+
*/ export function resolveMarkdownSourceLinks(source, resolve) {
|
|
491
|
+
if (!source.includes('](')) return source;
|
|
492
|
+
let fenced = false;
|
|
493
|
+
return source.split('\n').map((line)=>{
|
|
494
|
+
if (FENCE_PATTERN.test(line.trim())) {
|
|
495
|
+
fenced = !fenced;
|
|
496
|
+
return line;
|
|
497
|
+
}
|
|
498
|
+
if (fenced || !line.includes('](')) return line;
|
|
499
|
+
return line.replace(SOURCE_LINK_PATTERN, (match, bang, text, href)=>{
|
|
500
|
+
if (!isMarkdownLinkReference(href)) return match;
|
|
501
|
+
const target = bang ? undefined : resolve(href);
|
|
502
|
+
// A URL cannot close the parentheses it sits in or break at a space.
|
|
503
|
+
return target ? `[${text}](${target.replace(/\)/g, '%29').replace(/\s/g, '%20')})` : text;
|
|
504
|
+
});
|
|
505
|
+
}).join('\n');
|
|
506
|
+
}
|
|
507
|
+
/**
|
|
508
|
+
* The plain text an inline run reads as — the words with the emphasis and
|
|
509
|
+
* link syntax removed. What a heading contributes to an anchor slug and to a
|
|
510
|
+
* table-of-contents label (AGL-1162), where `## The **fine** print` has to
|
|
511
|
+
* become "The fine print" and `the-fine-print`, not two of either.
|
|
512
|
+
*/ export function markdownInlinesToText(inlines) {
|
|
513
|
+
return inlines.map((inline)=>inline.text).join('');
|
|
514
|
+
}
|
|
515
|
+
/**
|
|
516
|
+
* Anchor id for one heading's text (AGL-1162).
|
|
517
|
+
*
|
|
518
|
+
* Deterministic by construction — the same words always produce the same id,
|
|
519
|
+
* which is the whole point: a legal page's true source is a markdown file
|
|
520
|
+
* elsewhere, and re-pasting it must not silently break every link that ever
|
|
521
|
+
* pointed into it. Accents fold to their base letter (NFKD then drop the
|
|
522
|
+
* combining marks) so `Résumé` and `Resume` are the same anchor rather than
|
|
523
|
+
* one of them being an unreadable percent-encoded id.
|
|
524
|
+
*
|
|
525
|
+
* A heading of nothing but punctuation or non-Latin script slugifies to
|
|
526
|
+
* empty; those get `SLUG_FALLBACK` here and are told apart by the numbering
|
|
527
|
+
* in {@link collectMarkdownHeadings}, because an id is required for the link
|
|
528
|
+
* to work at all and no id is worse than a dull one.
|
|
529
|
+
*/ export const SLUG_FALLBACK = 'section';
|
|
530
|
+
export function slugifyHeading(text) {
|
|
531
|
+
return text.normalize('NFKD')// Combining diacritics left behind by the decomposition above.
|
|
532
|
+
.replace(/[\u0300-\u036f]/g, '').toLowerCase().replace(/[^a-z0-9]+/g, '-').replace(/^-+|-+$/g, '') || SLUG_FALLBACK;
|
|
533
|
+
}
|
|
534
|
+
/**
|
|
535
|
+
* Every heading in a parsed document, with a unique anchor slug (AGL-1162).
|
|
536
|
+
*
|
|
537
|
+
* Duplicates take a `-2`, `-3`, … suffix in document order, and the loop
|
|
538
|
+
* re-checks the suffixed candidate: a document holding two `## Notice`
|
|
539
|
+
* headings AND a literal `## Notice 2` must not hand the same id to two
|
|
540
|
+
* elements, which is exactly what a plain counter would do.
|
|
541
|
+
*
|
|
542
|
+
* Deliberately NOT a widening of the `MarkdownBlock` union. The union is
|
|
543
|
+
* rendered exhaustively in six places, so a slug carried on the heading
|
|
544
|
+
* block would have to be produced by every writer of that union — including
|
|
545
|
+
* the visual editor's serializer, which round-trips through markdown source
|
|
546
|
+
* that has nowhere to put one. Derived here instead, from the same parse the
|
|
547
|
+
* renderer already has, so the markdown text stays the only source of truth.
|
|
548
|
+
*/ export function collectMarkdownHeadings(blocks) {
|
|
549
|
+
const headings = [];
|
|
550
|
+
const used = new Set();
|
|
551
|
+
blocks.forEach((block, index)=>{
|
|
552
|
+
if (block.type !== 'heading') return;
|
|
553
|
+
const text = markdownInlinesToText(block.inlines).trim();
|
|
554
|
+
const base = slugifyHeading(text);
|
|
555
|
+
let slug = base;
|
|
556
|
+
let suffix = 1;
|
|
557
|
+
while(used.has(slug)){
|
|
558
|
+
suffix += 1;
|
|
559
|
+
slug = `${base}-${suffix}`;
|
|
560
|
+
}
|
|
561
|
+
used.add(slug);
|
|
562
|
+
headings.push({
|
|
563
|
+
level: block.level,
|
|
564
|
+
text,
|
|
565
|
+
slug,
|
|
566
|
+
index
|
|
567
|
+
});
|
|
568
|
+
});
|
|
569
|
+
return headings;
|
|
570
|
+
}
|
|
571
|
+
/**
|
|
572
|
+
* The same headings keyed by block index, which is the shape every renderer
|
|
573
|
+
* actually wants (AGL-1162).
|
|
574
|
+
*
|
|
575
|
+
* A renderer maps over `blocks` and needs the slug for the block in hand;
|
|
576
|
+
* {@link collectMarkdownHeadings} returns a list, so each of them had to
|
|
577
|
+
* rebuild this map. There were six markdown renderers and one of them did —
|
|
578
|
+
* five published headings a table of contents could never link to, and the
|
|
579
|
+
* one that worked did it with a private `useMemo` nobody else could reach.
|
|
580
|
+
* Living here means a new renderer gets the numbering, the fallback and the
|
|
581
|
+
* duplicate-suffix rules for free rather than approximating them.
|
|
582
|
+
*/ export function markdownHeadingSlugs(blocks) {
|
|
583
|
+
const map = {};
|
|
584
|
+
for (const heading of collectMarkdownHeadings(blocks)){
|
|
585
|
+
map[heading.index] = heading.slug;
|
|
586
|
+
}
|
|
587
|
+
return map;
|
|
588
|
+
}
|
|
589
|
+
/**
|
|
590
|
+
* How far below a heading's anchor the viewport stops (AGL-1162) — enough to
|
|
591
|
+
* clear a sticky site header, so a `#slug` link does not land with the
|
|
592
|
+
* heading hidden underneath the nav. Shared so the published page, the entry
|
|
593
|
+
* body and the console preview all scroll to the same place.
|
|
594
|
+
*/ export const HEADING_ANCHOR_SCROLL_MARGIN = 96;
|
|
595
|
+
/** Newlines cannot exist inside an inline run — flatten them to a space. */ const flattenInlineText = (text)=>text.replace(/\s*\n+\s*/g, ' ');
|
|
596
|
+
/**
|
|
597
|
+
* Serializes inlines back to markdown-lite source (AGL-582). Characters an
|
|
598
|
+
* inline run cannot represent (the dialect has NO escapes) are dropped:
|
|
599
|
+
* `*` inside bold/italic, `]` in link text/alt, `)` or whitespace in URLs.
|
|
600
|
+
* Parser-emitted inlines never contain them, so for those this is exact.
|
|
601
|
+
*/ export function serializeMarkdownInlines(inlines) {
|
|
602
|
+
let out = '';
|
|
603
|
+
for (const inline of inlines){
|
|
604
|
+
if (inline.type === 'bold' || inline.type === 'italic') {
|
|
605
|
+
const text = flattenInlineText(inline.text).replace(/\*/g, '');
|
|
606
|
+
if (!text) continue;
|
|
607
|
+
out += inline.type === 'bold' ? `**${text}**` : `*${text}*`;
|
|
608
|
+
} else if (inline.type === 'link') {
|
|
609
|
+
const text = flattenInlineText(inline.text).replace(/\]/g, '');
|
|
610
|
+
const href = inline.href.replace(/[)\s]/g, '');
|
|
611
|
+
out += text && href ? `[${text}](${href})` : text;
|
|
612
|
+
} else {
|
|
613
|
+
out += flattenInlineText(inline.text);
|
|
614
|
+
}
|
|
615
|
+
}
|
|
616
|
+
return out;
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* Inverse of `parseMarkdownLite` — the WYSIWYG round-trip contract
|
|
620
|
+
* (AGL-582): for any parser-produced model, the serialized string re-parses
|
|
621
|
+
* to a deep-equal model, and serializing is stable (a second
|
|
622
|
+
* parse→serialize round-trip returns the identical string). Editor-produced
|
|
623
|
+
* models are additionally NORMALIZED the same way the parser would: blocks
|
|
624
|
+
* and list items that would parse to nothing (empty text) are omitted, and
|
|
625
|
+
* block lines are edge-trimmed. Entry bodies stay markdown-lite strings in
|
|
626
|
+
* Firestore — this is the only writer the visual editor goes through.
|
|
627
|
+
*
|
|
628
|
+
* Every block is written as its own chunk, separated by a BLANK line, which
|
|
629
|
+
* is what holds the invariant now that a list may interrupt a paragraph
|
|
630
|
+
* (AGL-1320): `intro:` + `1. a` re-parses to the same paragraph + list pair
|
|
631
|
+
* whether or not the author left a blank line between them. The blank line is
|
|
632
|
+
* therefore load-bearing, not cosmetic: writing the two chunks adjacent would
|
|
633
|
+
* re-parse correctly today only by luck of the interrupt rule.
|
|
634
|
+
*/ export function serializeMarkdownLite(blocks) {
|
|
635
|
+
const chunks = [];
|
|
636
|
+
for (const block of blocks){
|
|
637
|
+
if (block.type === 'image') {
|
|
638
|
+
const src = block.src.replace(/[)\s]/g, '');
|
|
639
|
+
const alt = flattenInlineText(block.alt).replace(/\]/g, '');
|
|
640
|
+
if (src) chunks.push(``);
|
|
641
|
+
continue;
|
|
642
|
+
}
|
|
643
|
+
if (block.type === 'list') {
|
|
644
|
+
const lines = block.items.map((item)=>serializeMarkdownInlines(item).trim()).filter(Boolean).map((line)=>`- ${line}`);
|
|
645
|
+
if (lines.length) chunks.push(lines.join('\n'));
|
|
646
|
+
continue;
|
|
647
|
+
}
|
|
648
|
+
if (block.type === 'orderedList') {
|
|
649
|
+
// Markers are RE-NUMBERED from `start` (AGL-1320) rather than written
|
|
650
|
+
// back verbatim: the parser only reads the first one, so contiguous
|
|
651
|
+
// markers are the single form that re-parses to this exact model.
|
|
652
|
+
// A missing/absurd start falls back to 1, the way a hand-written list
|
|
653
|
+
// reads anyway.
|
|
654
|
+
const start = Number.isFinite(block.start) ? Math.max(0, Math.trunc(block.start)) : 1;
|
|
655
|
+
const lines = block.items.map((item)=>serializeMarkdownInlines(item).trim()).filter(Boolean).map((line, index)=>`${start + index}. ${line}`);
|
|
656
|
+
if (lines.length) chunks.push(lines.join('\n'));
|
|
657
|
+
continue;
|
|
658
|
+
}
|
|
659
|
+
if (block.type === 'code') {
|
|
660
|
+
// The fence is the only delimiter the dialect has, so a fence INSIDE
|
|
661
|
+
// the snippet would end it early — those backticks drop, the same way
|
|
662
|
+
// an unrepresentable `*` drops from a bold run.
|
|
663
|
+
const text = block.text.replace(/^(\s*)`{3,}/gm, '$1').replace(/^(?:[ \t]*\n)+/, '').replace(/(?:\n[ \t]*)+$/, '');
|
|
664
|
+
const lang = block.lang.replace(/[^\w+#.-]/g, '');
|
|
665
|
+
chunks.push([
|
|
666
|
+
`\`\`\`${lang}`,
|
|
667
|
+
...text ? [
|
|
668
|
+
text
|
|
669
|
+
] : [],
|
|
670
|
+
'```'
|
|
671
|
+
].join('\n'));
|
|
672
|
+
continue;
|
|
673
|
+
}
|
|
674
|
+
if (block.type === 'table') {
|
|
675
|
+
// `|` separates cells and there are no escapes, so a pipe inside a
|
|
676
|
+
// cell drops. Empty cells are kept — they are meaningful in a table.
|
|
677
|
+
const row = (cells)=>`| ${cells.map((cell)=>serializeMarkdownInlines(cell).replace(/\|/g, '').trim()).join(' | ')} |`;
|
|
678
|
+
if (!block.header.length) continue;
|
|
679
|
+
const delimiters = block.header.map((_, index)=>{
|
|
680
|
+
var _block_align_index;
|
|
681
|
+
const align = (_block_align_index = block.align[index]) != null ? _block_align_index : 'left';
|
|
682
|
+
return align === 'center' ? ':-:' : align === 'right' ? '--:' : '---';
|
|
683
|
+
});
|
|
684
|
+
chunks.push([
|
|
685
|
+
row(block.header),
|
|
686
|
+
`| ${delimiters.join(' | ')} |`,
|
|
687
|
+
// Squared off to the header: the parser reads it back that way,
|
|
688
|
+
// so writing anything else would not round-trip.
|
|
689
|
+
...block.rows.map((cells)=>row(Array.from({
|
|
690
|
+
length: block.header.length
|
|
691
|
+
}, (_, index)=>{
|
|
692
|
+
var _cells_index;
|
|
693
|
+
return (_cells_index = cells[index]) != null ? _cells_index : [];
|
|
694
|
+
})))
|
|
695
|
+
].join('\n'));
|
|
696
|
+
continue;
|
|
697
|
+
}
|
|
698
|
+
const line = serializeMarkdownInlines(block.inlines).trim();
|
|
699
|
+
if (!line) continue;
|
|
700
|
+
chunks.push(block.type === 'heading' ? `${'#'.repeat(block.level)} ${line}` : block.type === 'quote' ? `> ${line}` : line);
|
|
701
|
+
}
|
|
702
|
+
return chunks.join('\n\n');
|
|
703
|
+
}
|
|
704
|
+
|
|
705
|
+
//# sourceMappingURL=markdown-lite.js.map
|