@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,157 @@
|
|
|
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
|
+
/** `{{var:variableId}}` — capture group 1 is the variable's doc id. */
|
|
18
|
+
export declare const VARIABLE_ID_TOKEN_PATTERN: RegExp;
|
|
19
|
+
/**
|
|
20
|
+
* `{{fn:ref(args)}}` — capture 1 is a function doc id OR legacy name,
|
|
21
|
+
* capture 2 the raw argument list. One pattern serves both generations;
|
|
22
|
+
* lookup order (id first, then name) decides what the ref means.
|
|
23
|
+
*/
|
|
24
|
+
export declare const FUNCTION_TOKEN_PATTERN: RegExp;
|
|
25
|
+
/** Legacy `{{name}}` — names never contain `:`, so `var:`/`fn:` can't match. */
|
|
26
|
+
export declare const NAME_TOKEN_PATTERN: RegExp;
|
|
27
|
+
/** Renders the id-form variable token the picker inserts (AGL-186). */
|
|
28
|
+
export declare function formatVariableIdToken(variableId: string): string;
|
|
29
|
+
/** Renders the id-form function token with its parameter placeholders. */
|
|
30
|
+
export declare function formatFunctionIdToken(functionId: string, parameterNames?: string[]): string;
|
|
31
|
+
/**
|
|
32
|
+
* Keys resource docs by doc id — the only key resolution uses since the
|
|
33
|
+
* legacy name fallback retired (AGL-194). Editor-side lookups that need
|
|
34
|
+
* name access (typed-name normalization, friendly display) read the
|
|
35
|
+
* `name` field off the values instead of relying on map keys.
|
|
36
|
+
*/
|
|
37
|
+
export declare function keyById<T extends {
|
|
38
|
+
name?: string;
|
|
39
|
+
}>(docs: Array<T & {
|
|
40
|
+
id: string;
|
|
41
|
+
}>): Record<string, T>;
|
|
42
|
+
/**
|
|
43
|
+
* Doc shape the editor-side helpers need: consoles pass Firestore docs
|
|
44
|
+
* that carry their id as `$id` (reactfire idField) beside the name.
|
|
45
|
+
*/
|
|
46
|
+
export interface BindingDocRef {
|
|
47
|
+
name?: string;
|
|
48
|
+
$id?: string;
|
|
49
|
+
parameters?: Array<{
|
|
50
|
+
name: string;
|
|
51
|
+
}>;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Rewrites legacy name tokens to their id forms when the name matches a
|
|
55
|
+
* known doc (AGL-186 typing normalization): hand-typed `{{Message}}`
|
|
56
|
+
* becomes `{{var:abc123}}` at save so it survives renames. Unknown names
|
|
57
|
+
* are left alone — the variable may be created later, and legacy
|
|
58
|
+
* resolution still covers them meanwhile.
|
|
59
|
+
*/
|
|
60
|
+
export declare function normalizeBindingTokens(text: string, variables?: Record<string, BindingDocRef>, functions?: Record<string, BindingDocRef>): string;
|
|
61
|
+
/**
|
|
62
|
+
* Rewrites id-form variable tokens to the `{{name}}` an author types — the
|
|
63
|
+
* inverse of {@link normalizeBindingTokens}, for an editor that shows stored
|
|
64
|
+
* copy in a plain text field and normalizes it again when it saves.
|
|
65
|
+
*
|
|
66
|
+
* Unlike {@link displayBindingTokens}, whose result must never be persisted,
|
|
67
|
+
* this one survives the round trip: normalizing its output restores the
|
|
68
|
+
* input. So a token is rewritten only when that holds — its variable exists,
|
|
69
|
+
* its name is one a typed token can carry, and looking that name up leads back
|
|
70
|
+
* to this id and no other. Every other token keeps its id form. That includes
|
|
71
|
+
* a deleted variable's token, which renders as nothing on a published page,
|
|
72
|
+
* where `{{missing binding}}` would render as typed.
|
|
73
|
+
*
|
|
74
|
+
* @param variables - the lookup `normalizeBindingTokens` takes: the site's
|
|
75
|
+
* variables keyed by name, each carrying its document id as `$id`.
|
|
76
|
+
*/
|
|
77
|
+
export declare function editableBindingTokens(text: string, variables?: Record<string, BindingDocRef>): string;
|
|
78
|
+
/** A variable/function referent to search for in stored content. */
|
|
79
|
+
export interface BindingRef {
|
|
80
|
+
kind: 'variable' | 'function';
|
|
81
|
+
/** Firestore doc id — matches id-form tokens. */
|
|
82
|
+
id?: string;
|
|
83
|
+
/** Current name — matches legacy name-form tokens. */
|
|
84
|
+
name?: string;
|
|
85
|
+
}
|
|
86
|
+
/** How a dependent references the binding: rename-safe id or legacy name. */
|
|
87
|
+
export type BindingRefVia = 'id' | 'name';
|
|
88
|
+
/**
|
|
89
|
+
* Which token generation(s) in `text` reference the given binding
|
|
90
|
+
* (AGL-187 where-used). Returns matches so callers can distinguish
|
|
91
|
+
* rename-safe id references from legacy name references — a rename only
|
|
92
|
+
* endangers the latter.
|
|
93
|
+
*/
|
|
94
|
+
export declare function textReferencesBinding(text: string, ref: BindingRef): BindingRefVia[];
|
|
95
|
+
/**
|
|
96
|
+
* Scans a normalized nodes map's string props for references to the
|
|
97
|
+
* binding; returns the union of match kinds across all nodes.
|
|
98
|
+
*/
|
|
99
|
+
export declare function nodesReferenceBinding(nodes: Record<string, {
|
|
100
|
+
props?: Record<string, unknown>;
|
|
101
|
+
} | undefined>, ref: BindingRef): BindingRefVia[];
|
|
102
|
+
/**
|
|
103
|
+
* Deep-walks a JSON-ish value, applying `normalizeBindingTokens` to every
|
|
104
|
+
* string containing a token opener (AGL-188 migration / host import).
|
|
105
|
+
* Arrays and plain objects recurse; other values pass through untouched.
|
|
106
|
+
* Returns the (possibly new) value and whether anything changed.
|
|
107
|
+
*/
|
|
108
|
+
export declare function rewriteBindingTokensDeep<T>(value: T, variables?: Record<string, BindingDocRef>, functions?: Record<string, BindingDocRef>): {
|
|
109
|
+
value: T;
|
|
110
|
+
changed: boolean;
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Which binding lookups a value's tokens would actually need (AGL-703).
|
|
114
|
+
*
|
|
115
|
+
* A read-only twin of {@link rewriteBindingTokensDeep}, and it exists for
|
|
116
|
+
* cost. Publish-time normalization used to fetch EVERY variable and EVERY
|
|
117
|
+
* function on the site — two `limit(1000)` gets — before looking at whether
|
|
118
|
+
* the version being published contained a single token to rewrite. Almost
|
|
119
|
+
* none do: AGL-188 migrated the corpus years ago and the picker has written
|
|
120
|
+
* id-form tokens ever since, so the overwhelming majority of publishes paid
|
|
121
|
+
* for two collection reads to discover there was nothing to do.
|
|
122
|
+
*
|
|
123
|
+
* The two flags are separate because the two rewrites are:
|
|
124
|
+
*
|
|
125
|
+
* - a legacy `{{name}}` token is resolved against VARIABLES and nothing else
|
|
126
|
+
* — {@link normalizeBindingTokens} only consults `variables` for it;
|
|
127
|
+
* - a `{{fn:ref(...)}}` token is resolved against FUNCTIONS.
|
|
128
|
+
*
|
|
129
|
+
* So a page holding only function tokens never reads the variables.
|
|
130
|
+
*
|
|
131
|
+
* `{{var:id}}` deliberately sets NEITHER. It is already the rename-safe form,
|
|
132
|
+
* nothing rewrites it, and it cannot match `NAME_TOKEN_PATTERN` because a
|
|
133
|
+
* name may not contain `:`. A page whose tokens are all id-form — which is
|
|
134
|
+
* what a page authored through the picker looks like — costs nothing.
|
|
135
|
+
*
|
|
136
|
+
* A `{{fn:}}` token sets `functions` even when its ref is ALREADY an id,
|
|
137
|
+
* because telling an id from a legacy name is exactly what the lookup is for.
|
|
138
|
+
* Erring that way costs one read on a page that has function tokens; erring
|
|
139
|
+
* the other way would skip a rewrite that was due.
|
|
140
|
+
*/
|
|
141
|
+
export interface BindingTokenNeeds {
|
|
142
|
+
/** A legacy `{{name}}` token is present — needs the variables lookup. */
|
|
143
|
+
variables: boolean;
|
|
144
|
+
/** A `{{fn:…}}` token is present — needs the functions lookup. */
|
|
145
|
+
functions: boolean;
|
|
146
|
+
}
|
|
147
|
+
export declare function bindingTokenNeedsDeep(value: unknown): BindingTokenNeeds;
|
|
148
|
+
/** Editor display text for a token whose referent no longer exists. */
|
|
149
|
+
export declare const MISSING_BINDING_LABEL = "missing binding";
|
|
150
|
+
/**
|
|
151
|
+
* Rewrites id tokens to friendly name forms for editor display (AGL-186):
|
|
152
|
+
* `{{var:abc123}}` shows as `{{Message}}` (the CURRENT name — renames
|
|
153
|
+
* reflect immediately), and tokens whose doc was deleted show as
|
|
154
|
+
* `{{missing binding}}` instead of leaking raw ids. Display only — never
|
|
155
|
+
* persist the result.
|
|
156
|
+
*/
|
|
157
|
+
export declare function displayBindingTokens(text: string, variables?: Record<string, BindingDocRef>, functions?: Record<string, BindingDocRef>): string;
|
|
@@ -0,0 +1,251 @@
|
|
|
1
|
+
import { _ as _object_without_properties_loose } from "@swc/helpers/_/_object_without_properties_loose";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2026 Aglyn LLC
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/ /**
|
|
18
|
+
* Binding token grammar (AGL-185) — the single source of truth for what a
|
|
19
|
+
* binding token looks like, shared by the besigner editor, the console
|
|
20
|
+
* binding picker, and the tenant renderer.
|
|
21
|
+
*
|
|
22
|
+
* Two generations coexist:
|
|
23
|
+
* - id tokens: `{{var:variableId}}` and `{{fn:functionId(args)}}` — the
|
|
24
|
+
* reference survives renames because only the display name changes.
|
|
25
|
+
* - legacy name tokens: `{{name}}` and `{{fn:name(args)}}` — resolved as a
|
|
26
|
+
* fallback until AGL-188 migrates stored content.
|
|
27
|
+
*
|
|
28
|
+
* Resolution maps are id-keyed (AGL-194); the editor keeps name-capable
|
|
29
|
+
* lookups only for typed-name normalization and friendly display.
|
|
30
|
+
*/ /** Firestore doc ids and legacy binding names both fit this shape. */ const REF = '[a-zA-Z0-9_-]{1,64}';
|
|
31
|
+
/** `{{var:variableId}}` — capture group 1 is the variable's doc id. */ export const VARIABLE_ID_TOKEN_PATTERN = new RegExp(`\\{\\{\\s*var:(${REF})\\s*\\}\\}`, 'g');
|
|
32
|
+
/**
|
|
33
|
+
* `{{fn:ref(args)}}` — capture 1 is a function doc id OR legacy name,
|
|
34
|
+
* capture 2 the raw argument list. One pattern serves both generations;
|
|
35
|
+
* lookup order (id first, then name) decides what the ref means.
|
|
36
|
+
*/ export const FUNCTION_TOKEN_PATTERN = new RegExp(`\\{\\{\\s*fn:(${REF}(?: ${REF})*)\\s*\\(([^)]*)\\)\\s*\\}\\}`, 'g');
|
|
37
|
+
/** Legacy `{{name}}` — names never contain `:`, so `var:`/`fn:` can't match. */ export const NAME_TOKEN_PATTERN = /\{\{\s*([a-zA-Z_][a-zA-Z0-9_]{0,39})\s*\}\}/g;
|
|
38
|
+
/** Renders the id-form variable token the picker inserts (AGL-186). */ export function formatVariableIdToken(variableId) {
|
|
39
|
+
return `{{var:${variableId}}}`;
|
|
40
|
+
}
|
|
41
|
+
/** Renders the id-form function token with its parameter placeholders. */ export function formatFunctionIdToken(functionId, parameterNames = []) {
|
|
42
|
+
return `{{fn:${functionId}(${parameterNames.join(', ')})}}`;
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Keys resource docs by doc id — the only key resolution uses since the
|
|
46
|
+
* legacy name fallback retired (AGL-194). Editor-side lookups that need
|
|
47
|
+
* name access (typed-name normalization, friendly display) read the
|
|
48
|
+
* `name` field off the values instead of relying on map keys.
|
|
49
|
+
*/ export function keyById(docs) {
|
|
50
|
+
const map = {};
|
|
51
|
+
for (const _ref of docs){
|
|
52
|
+
let { id } = _ref, doc = _object_without_properties_loose(_ref, [
|
|
53
|
+
"id"
|
|
54
|
+
]);
|
|
55
|
+
map[id] = doc;
|
|
56
|
+
}
|
|
57
|
+
return map;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Rewrites legacy name tokens to their id forms when the name matches a
|
|
61
|
+
* known doc (AGL-186 typing normalization): hand-typed `{{Message}}`
|
|
62
|
+
* becomes `{{var:abc123}}` at save so it survives renames. Unknown names
|
|
63
|
+
* are left alone — the variable may be created later, and legacy
|
|
64
|
+
* resolution still covers them meanwhile.
|
|
65
|
+
*/ export function normalizeBindingTokens(text, variables = {}, functions = {}) {
|
|
66
|
+
const withFunctions = text.replace(FUNCTION_TOKEN_PATTERN, (token, ref, rawArgs)=>{
|
|
67
|
+
const definition = functions[String(ref).trim()];
|
|
68
|
+
// Already an id (the ref maps to a doc whose $id is the ref itself)
|
|
69
|
+
// or unknown: leave as-is.
|
|
70
|
+
if (!(definition == null ? void 0 : definition.$id) || definition.$id === String(ref).trim()) {
|
|
71
|
+
return token;
|
|
72
|
+
}
|
|
73
|
+
return `{{fn:${definition.$id}(${String(rawArgs)})}}`;
|
|
74
|
+
});
|
|
75
|
+
return withFunctions.replace(NAME_TOKEN_PATTERN, (token, name)=>{
|
|
76
|
+
const variable = variables[name];
|
|
77
|
+
return (variable == null ? void 0 : variable.$id) ? formatVariableIdToken(variable.$id) : token;
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
/** A whole `{{name}}` token, for asking whether a name can be typed as one. */ const TYPED_NAME_TOKEN = new RegExp(`^${NAME_TOKEN_PATTERN.source}$`);
|
|
81
|
+
/**
|
|
82
|
+
* Rewrites id-form variable tokens to the `{{name}}` an author types — the
|
|
83
|
+
* inverse of {@link normalizeBindingTokens}, for an editor that shows stored
|
|
84
|
+
* copy in a plain text field and normalizes it again when it saves.
|
|
85
|
+
*
|
|
86
|
+
* Unlike {@link displayBindingTokens}, whose result must never be persisted,
|
|
87
|
+
* this one survives the round trip: normalizing its output restores the
|
|
88
|
+
* input. So a token is rewritten only when that holds — its variable exists,
|
|
89
|
+
* its name is one a typed token can carry, and looking that name up leads back
|
|
90
|
+
* to this id and no other. Every other token keeps its id form. That includes
|
|
91
|
+
* a deleted variable's token, which renders as nothing on a published page,
|
|
92
|
+
* where `{{missing binding}}` would render as typed.
|
|
93
|
+
*
|
|
94
|
+
* @param variables - the lookup `normalizeBindingTokens` takes: the site's
|
|
95
|
+
* variables keyed by name, each carrying its document id as `$id`.
|
|
96
|
+
*/ export function editableBindingTokens(text, variables = {}) {
|
|
97
|
+
if (!text.includes('{{')) return text;
|
|
98
|
+
return text.replace(VARIABLE_ID_TOKEN_PATTERN, (token, rawId)=>{
|
|
99
|
+
var _Object_values_find, _variables_name;
|
|
100
|
+
const id = String(rawId);
|
|
101
|
+
const name = (_Object_values_find = Object.values(variables).find((variable)=>(variable == null ? void 0 : variable.$id) === id)) == null ? void 0 : _Object_values_find.name;
|
|
102
|
+
if (!name || ((_variables_name = variables[name]) == null ? void 0 : _variables_name.$id) !== id) return token;
|
|
103
|
+
const typed = `{{${name}}}`;
|
|
104
|
+
return TYPED_NAME_TOKEN.test(typed) ? typed : token;
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
const escapeRegExp = (value)=>value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
108
|
+
/**
|
|
109
|
+
* Which token generation(s) in `text` reference the given binding
|
|
110
|
+
* (AGL-187 where-used). Returns matches so callers can distinguish
|
|
111
|
+
* rename-safe id references from legacy name references — a rename only
|
|
112
|
+
* endangers the latter.
|
|
113
|
+
*/ export function textReferencesBinding(text, ref) {
|
|
114
|
+
const via = [];
|
|
115
|
+
if (ref.kind === 'variable') {
|
|
116
|
+
if (ref.id && new RegExp(`\\{\\{\\s*var:${escapeRegExp(ref.id)}\\s*\\}\\}`).test(text)) {
|
|
117
|
+
via.push('id');
|
|
118
|
+
}
|
|
119
|
+
if (ref.name && new RegExp(`\\{\\{\\s*${escapeRegExp(ref.name)}\\s*\\}\\}`).test(text)) {
|
|
120
|
+
via.push('name');
|
|
121
|
+
}
|
|
122
|
+
} else {
|
|
123
|
+
if (ref.id && new RegExp(`\\{\\{\\s*fn:${escapeRegExp(ref.id)}\\s*\\(`).test(text)) {
|
|
124
|
+
via.push('id');
|
|
125
|
+
}
|
|
126
|
+
if (ref.name && new RegExp(`\\{\\{\\s*fn:${escapeRegExp(ref.name)}\\s*\\(`).test(text)) {
|
|
127
|
+
via.push('name');
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return via;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Scans a normalized nodes map's string props for references to the
|
|
134
|
+
* binding; returns the union of match kinds across all nodes.
|
|
135
|
+
*/ export function nodesReferenceBinding(nodes, ref) {
|
|
136
|
+
const via = new Set();
|
|
137
|
+
for (const node of Object.values(nodes != null ? nodes : {})){
|
|
138
|
+
var _ref;
|
|
139
|
+
for (const value of Object.values((_ref = node == null ? void 0 : node.props) != null ? _ref : {})){
|
|
140
|
+
if (typeof value !== 'string' || !value.includes('{{')) continue;
|
|
141
|
+
for (const match of textReferencesBinding(value, ref))via.add(match);
|
|
142
|
+
}
|
|
143
|
+
if (via.size === 2) break;
|
|
144
|
+
}
|
|
145
|
+
return [
|
|
146
|
+
...via
|
|
147
|
+
];
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Deep-walks a JSON-ish value, applying `normalizeBindingTokens` to every
|
|
151
|
+
* string containing a token opener (AGL-188 migration / host import).
|
|
152
|
+
* Arrays and plain objects recurse; other values pass through untouched.
|
|
153
|
+
* Returns the (possibly new) value and whether anything changed.
|
|
154
|
+
*/ export function rewriteBindingTokensDeep(value, variables = {}, functions = {}) {
|
|
155
|
+
if (typeof value === 'string') {
|
|
156
|
+
if (!value.includes('{{')) return {
|
|
157
|
+
value,
|
|
158
|
+
changed: false
|
|
159
|
+
};
|
|
160
|
+
const next = normalizeBindingTokens(value, variables, functions);
|
|
161
|
+
return {
|
|
162
|
+
value: next,
|
|
163
|
+
changed: next !== value
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
if (Array.isArray(value)) {
|
|
167
|
+
let changed = false;
|
|
168
|
+
const next = value.map((item)=>{
|
|
169
|
+
const result = rewriteBindingTokensDeep(item, variables, functions);
|
|
170
|
+
changed = changed || result.changed;
|
|
171
|
+
return result.value;
|
|
172
|
+
});
|
|
173
|
+
return {
|
|
174
|
+
value: changed ? next : value,
|
|
175
|
+
changed
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
if (value && typeof value === 'object') {
|
|
179
|
+
let changed = false;
|
|
180
|
+
const next = {};
|
|
181
|
+
for (const [key, item] of Object.entries(value)){
|
|
182
|
+
const result = rewriteBindingTokensDeep(item, variables, functions);
|
|
183
|
+
changed = changed || result.changed;
|
|
184
|
+
next[key] = result.value;
|
|
185
|
+
}
|
|
186
|
+
return {
|
|
187
|
+
value: changed ? next : value,
|
|
188
|
+
changed
|
|
189
|
+
};
|
|
190
|
+
}
|
|
191
|
+
return {
|
|
192
|
+
value,
|
|
193
|
+
changed: false
|
|
194
|
+
};
|
|
195
|
+
}
|
|
196
|
+
export function bindingTokenNeedsDeep(value) {
|
|
197
|
+
const needs = {
|
|
198
|
+
variables: false,
|
|
199
|
+
functions: false
|
|
200
|
+
};
|
|
201
|
+
/*
|
|
202
|
+
Fresh, NON-GLOBAL copies. The exported patterns carry the `g` flag, and a
|
|
203
|
+
global regex's `.test()` advances its own `lastIndex` — so testing the
|
|
204
|
+
same shared object twice in a walk skips matches, and does it in a way
|
|
205
|
+
that depends on the order the tree happened to be visited in.
|
|
206
|
+
*/ const nameToken = new RegExp(NAME_TOKEN_PATTERN.source);
|
|
207
|
+
const functionToken = new RegExp(FUNCTION_TOKEN_PATTERN.source);
|
|
208
|
+
const walk = (current)=>{
|
|
209
|
+
if (needs.variables && needs.functions) return;
|
|
210
|
+
if (typeof current === 'string') {
|
|
211
|
+
if (!current.includes('{{')) return;
|
|
212
|
+
if (!needs.variables && nameToken.test(current)) needs.variables = true;
|
|
213
|
+
if (!needs.functions && functionToken.test(current)) {
|
|
214
|
+
needs.functions = true;
|
|
215
|
+
}
|
|
216
|
+
return;
|
|
217
|
+
}
|
|
218
|
+
if (Array.isArray(current)) {
|
|
219
|
+
for (const item of current)walk(item);
|
|
220
|
+
return;
|
|
221
|
+
}
|
|
222
|
+
if (current && typeof current === 'object') {
|
|
223
|
+
for (const item of Object.values(current))walk(item);
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
walk(value);
|
|
227
|
+
return needs;
|
|
228
|
+
}
|
|
229
|
+
/** Editor display text for a token whose referent no longer exists. */ export const MISSING_BINDING_LABEL = 'missing binding';
|
|
230
|
+
/**
|
|
231
|
+
* Rewrites id tokens to friendly name forms for editor display (AGL-186):
|
|
232
|
+
* `{{var:abc123}}` shows as `{{Message}}` (the CURRENT name — renames
|
|
233
|
+
* reflect immediately), and tokens whose doc was deleted show as
|
|
234
|
+
* `{{missing binding}}` instead of leaking raw ids. Display only — never
|
|
235
|
+
* persist the result.
|
|
236
|
+
*/ export function displayBindingTokens(text, variables = {}, functions = {}) {
|
|
237
|
+
const withVariables = text.replace(VARIABLE_ID_TOKEN_PATTERN, (_token, id)=>{
|
|
238
|
+
var _ref;
|
|
239
|
+
const variable = variables[String(id)];
|
|
240
|
+
return `{{${(_ref = variable == null ? void 0 : variable.name) != null ? _ref : MISSING_BINDING_LABEL}}}`;
|
|
241
|
+
});
|
|
242
|
+
return withVariables.replace(FUNCTION_TOKEN_PATTERN, (token, ref, rawArgs)=>{
|
|
243
|
+
var _definition_name;
|
|
244
|
+
const definition = functions[String(ref).trim()];
|
|
245
|
+
// Name-form refs already read fine; only id-form refs get mapped.
|
|
246
|
+
if (!definition || definition.name === String(ref).trim()) return token;
|
|
247
|
+
return `{{fn:${(_definition_name = definition.name) != null ? _definition_name : MISSING_BINDING_LABEL}(${String(rawArgs)})}}`;
|
|
248
|
+
});
|
|
249
|
+
}
|
|
250
|
+
|
|
251
|
+
//# sourceMappingURL=binding-tokens.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/binding-tokens.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * Binding token grammar (AGL-185) — the single source of truth for what a\n * binding token looks like, shared by the besigner editor, the console\n * binding picker, and the tenant renderer.\n *\n * Two generations coexist:\n * - id tokens: `{{var:variableId}}` and `{{fn:functionId(args)}}` — the\n * reference survives renames because only the display name changes.\n * - legacy name tokens: `{{name}}` and `{{fn:name(args)}}` — resolved as a\n * fallback until AGL-188 migrates stored content.\n *\n * Resolution maps are id-keyed (AGL-194); the editor keeps name-capable\n * lookups only for typed-name normalization and friendly display.\n */\n\n/** Firestore doc ids and legacy binding names both fit this shape. */\nconst REF = '[a-zA-Z0-9_-]{1,64}'\n\n/** `{{var:variableId}}` — capture group 1 is the variable's doc id. */\nexport const VARIABLE_ID_TOKEN_PATTERN = new RegExp(\n `\\\\{\\\\{\\\\s*var:(${REF})\\\\s*\\\\}\\\\}`,\n 'g',\n)\n\n/**\n * `{{fn:ref(args)}}` — capture 1 is a function doc id OR legacy name,\n * capture 2 the raw argument list. One pattern serves both generations;\n * lookup order (id first, then name) decides what the ref means.\n */\nexport const FUNCTION_TOKEN_PATTERN = new RegExp(\n `\\\\{\\\\{\\\\s*fn:(${REF}(?: ${REF})*)\\\\s*\\\\(([^)]*)\\\\)\\\\s*\\\\}\\\\}`,\n 'g',\n)\n\n/** Legacy `{{name}}` — names never contain `:`, so `var:`/`fn:` can't match. */\nexport const NAME_TOKEN_PATTERN = /\\{\\{\\s*([a-zA-Z_][a-zA-Z0-9_]{0,39})\\s*\\}\\}/g\n\n/** Renders the id-form variable token the picker inserts (AGL-186). */\nexport function formatVariableIdToken(variableId: string): string {\n return `{{var:${variableId}}}`\n}\n\n/** Renders the id-form function token with its parameter placeholders. */\nexport function formatFunctionIdToken(\n functionId: string,\n parameterNames: string[] = [],\n): string {\n return `{{fn:${functionId}(${parameterNames.join(', ')})}}`\n}\n\n/**\n * Keys resource docs by doc id — the only key resolution uses since the\n * legacy name fallback retired (AGL-194). Editor-side lookups that need\n * name access (typed-name normalization, friendly display) read the\n * `name` field off the values instead of relying on map keys.\n */\nexport function keyById<T extends { name?: string }>(\n docs: Array<T & { id: string }>,\n): Record<string, T> {\n const map: Record<string, T> = {}\n for (const { id, ...doc } of docs) {\n map[id] = doc as unknown as T\n }\n return map\n}\n\n/**\n * Doc shape the editor-side helpers need: consoles pass Firestore docs\n * that carry their id as `$id` (reactfire idField) beside the name.\n */\nexport interface BindingDocRef {\n name?: string\n $id?: string\n parameters?: Array<{ name: string }>\n}\n\n/**\n * Rewrites legacy name tokens to their id forms when the name matches a\n * known doc (AGL-186 typing normalization): hand-typed `{{Message}}`\n * becomes `{{var:abc123}}` at save so it survives renames. Unknown names\n * are left alone — the variable may be created later, and legacy\n * resolution still covers them meanwhile.\n */\nexport function normalizeBindingTokens(\n text: string,\n variables: Record<string, BindingDocRef> = {},\n functions: Record<string, BindingDocRef> = {},\n): string {\n const withFunctions = text.replace(\n FUNCTION_TOKEN_PATTERN,\n (token, ref, rawArgs) => {\n const definition = functions[String(ref).trim()]\n // Already an id (the ref maps to a doc whose $id is the ref itself)\n // or unknown: leave as-is.\n if (!definition?.$id || definition.$id === String(ref).trim()) {\n return token\n }\n return `{{fn:${definition.$id}(${String(rawArgs)})}}`\n },\n )\n return withFunctions.replace(NAME_TOKEN_PATTERN, (token, name) => {\n const variable = variables[name]\n return variable?.$id ? formatVariableIdToken(variable.$id) : token\n })\n}\n\n/** A whole `{{name}}` token, for asking whether a name can be typed as one. */\nconst TYPED_NAME_TOKEN = new RegExp(`^${NAME_TOKEN_PATTERN.source}$`)\n\n/**\n * Rewrites id-form variable tokens to the `{{name}}` an author types — the\n * inverse of {@link normalizeBindingTokens}, for an editor that shows stored\n * copy in a plain text field and normalizes it again when it saves.\n *\n * Unlike {@link displayBindingTokens}, whose result must never be persisted,\n * this one survives the round trip: normalizing its output restores the\n * input. So a token is rewritten only when that holds — its variable exists,\n * its name is one a typed token can carry, and looking that name up leads back\n * to this id and no other. Every other token keeps its id form. That includes\n * a deleted variable's token, which renders as nothing on a published page,\n * where `{{missing binding}}` would render as typed.\n *\n * @param variables - the lookup `normalizeBindingTokens` takes: the site's\n * variables keyed by name, each carrying its document id as `$id`.\n */\nexport function editableBindingTokens(\n text: string,\n variables: Record<string, BindingDocRef> = {},\n): string {\n if (!text.includes('{{')) return text\n return text.replace(VARIABLE_ID_TOKEN_PATTERN, (token, rawId) => {\n const id = String(rawId)\n const name = Object.values(variables).find(\n (variable) => variable?.$id === id,\n )?.name\n if (!name || variables[name]?.$id !== id) return token\n const typed = `{{${name}}}`\n return TYPED_NAME_TOKEN.test(typed) ? typed : token\n })\n}\n\n/** A variable/function referent to search for in stored content. */\nexport interface BindingRef {\n kind: 'variable' | 'function'\n /** Firestore doc id — matches id-form tokens. */\n id?: string\n /** Current name — matches legacy name-form tokens. */\n name?: string\n}\n\n/** How a dependent references the binding: rename-safe id or legacy name. */\nexport type BindingRefVia = 'id' | 'name'\n\nconst escapeRegExp = (value: string) =>\n value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&')\n\n/**\n * Which token generation(s) in `text` reference the given binding\n * (AGL-187 where-used). Returns matches so callers can distinguish\n * rename-safe id references from legacy name references — a rename only\n * endangers the latter.\n */\nexport function textReferencesBinding(\n text: string,\n ref: BindingRef,\n): BindingRefVia[] {\n const via: BindingRefVia[] = []\n if (ref.kind === 'variable') {\n if (\n ref.id &&\n new RegExp(`\\\\{\\\\{\\\\s*var:${escapeRegExp(ref.id)}\\\\s*\\\\}\\\\}`).test(text)\n ) {\n via.push('id')\n }\n if (\n ref.name &&\n new RegExp(`\\\\{\\\\{\\\\s*${escapeRegExp(ref.name)}\\\\s*\\\\}\\\\}`).test(text)\n ) {\n via.push('name')\n }\n } else {\n if (\n ref.id &&\n new RegExp(`\\\\{\\\\{\\\\s*fn:${escapeRegExp(ref.id)}\\\\s*\\\\(`).test(text)\n ) {\n via.push('id')\n }\n if (\n ref.name &&\n new RegExp(`\\\\{\\\\{\\\\s*fn:${escapeRegExp(ref.name)}\\\\s*\\\\(`).test(text)\n ) {\n via.push('name')\n }\n }\n return via\n}\n\n/**\n * Scans a normalized nodes map's string props for references to the\n * binding; returns the union of match kinds across all nodes.\n */\nexport function nodesReferenceBinding(\n nodes: Record<string, { props?: Record<string, unknown> } | undefined>,\n ref: BindingRef,\n): BindingRefVia[] {\n const via = new Set<BindingRefVia>()\n for (const node of Object.values(nodes ?? {})) {\n for (const value of Object.values(node?.props ?? {})) {\n if (typeof value !== 'string' || !value.includes('{{')) continue\n for (const match of textReferencesBinding(value, ref)) via.add(match)\n }\n if (via.size === 2) break\n }\n return [...via]\n}\n\n/**\n * Deep-walks a JSON-ish value, applying `normalizeBindingTokens` to every\n * string containing a token opener (AGL-188 migration / host import).\n * Arrays and plain objects recurse; other values pass through untouched.\n * Returns the (possibly new) value and whether anything changed.\n */\nexport function rewriteBindingTokensDeep<T>(\n value: T,\n variables: Record<string, BindingDocRef> = {},\n functions: Record<string, BindingDocRef> = {},\n): { value: T; changed: boolean } {\n if (typeof value === 'string') {\n if (!value.includes('{{')) return { value, changed: false }\n const next = normalizeBindingTokens(value, variables, functions)\n return { value: next as T, changed: next !== value }\n }\n if (Array.isArray(value)) {\n let changed = false\n const next = value.map((item) => {\n const result = rewriteBindingTokensDeep(item, variables, functions)\n changed = changed || result.changed\n return result.value\n })\n return { value: (changed ? next : value) as T, changed }\n }\n if (value && typeof value === 'object') {\n let changed = false\n const next: Record<string, unknown> = {}\n for (const [key, item] of Object.entries(value)) {\n const result = rewriteBindingTokensDeep(item, variables, functions)\n changed = changed || result.changed\n next[key] = result.value\n }\n return { value: (changed ? next : value) as T, changed }\n }\n return { value, changed: false }\n}\n\n/**\n * Which binding lookups a value's tokens would actually need (AGL-703).\n *\n * A read-only twin of {@link rewriteBindingTokensDeep}, and it exists for\n * cost. Publish-time normalization used to fetch EVERY variable and EVERY\n * function on the site — two `limit(1000)` gets — before looking at whether\n * the version being published contained a single token to rewrite. Almost\n * none do: AGL-188 migrated the corpus years ago and the picker has written\n * id-form tokens ever since, so the overwhelming majority of publishes paid\n * for two collection reads to discover there was nothing to do.\n *\n * The two flags are separate because the two rewrites are:\n *\n * - a legacy `{{name}}` token is resolved against VARIABLES and nothing else\n * — {@link normalizeBindingTokens} only consults `variables` for it;\n * - a `{{fn:ref(...)}}` token is resolved against FUNCTIONS.\n *\n * So a page holding only function tokens never reads the variables.\n *\n * `{{var:id}}` deliberately sets NEITHER. It is already the rename-safe form,\n * nothing rewrites it, and it cannot match `NAME_TOKEN_PATTERN` because a\n * name may not contain `:`. A page whose tokens are all id-form — which is\n * what a page authored through the picker looks like — costs nothing.\n *\n * A `{{fn:}}` token sets `functions` even when its ref is ALREADY an id,\n * because telling an id from a legacy name is exactly what the lookup is for.\n * Erring that way costs one read on a page that has function tokens; erring\n * the other way would skip a rewrite that was due.\n */\nexport interface BindingTokenNeeds {\n /** A legacy `{{name}}` token is present — needs the variables lookup. */\n variables: boolean\n /** A `{{fn:…}}` token is present — needs the functions lookup. */\n functions: boolean\n}\n\nexport function bindingTokenNeedsDeep(value: unknown): BindingTokenNeeds {\n const needs: BindingTokenNeeds = { variables: false, functions: false }\n /*\n Fresh, NON-GLOBAL copies. The exported patterns carry the `g` flag, and a\n global regex's `.test()` advances its own `lastIndex` — so testing the\n same shared object twice in a walk skips matches, and does it in a way\n that depends on the order the tree happened to be visited in.\n */\n const nameToken = new RegExp(NAME_TOKEN_PATTERN.source)\n const functionToken = new RegExp(FUNCTION_TOKEN_PATTERN.source)\n\n const walk = (current: unknown): void => {\n if (needs.variables && needs.functions) return\n if (typeof current === 'string') {\n if (!current.includes('{{')) return\n if (!needs.variables && nameToken.test(current)) needs.variables = true\n if (!needs.functions && functionToken.test(current)) {\n needs.functions = true\n }\n return\n }\n if (Array.isArray(current)) {\n for (const item of current) walk(item)\n return\n }\n if (current && typeof current === 'object') {\n for (const item of Object.values(current)) walk(item)\n }\n }\n walk(value)\n return needs\n}\n\n/** Editor display text for a token whose referent no longer exists. */\nexport const MISSING_BINDING_LABEL = 'missing binding'\n\n/**\n * Rewrites id tokens to friendly name forms for editor display (AGL-186):\n * `{{var:abc123}}` shows as `{{Message}}` (the CURRENT name — renames\n * reflect immediately), and tokens whose doc was deleted show as\n * `{{missing binding}}` instead of leaking raw ids. Display only — never\n * persist the result.\n */\nexport function displayBindingTokens(\n text: string,\n variables: Record<string, BindingDocRef> = {},\n functions: Record<string, BindingDocRef> = {},\n): string {\n const withVariables = text.replace(\n VARIABLE_ID_TOKEN_PATTERN,\n (_token, id) => {\n const variable = variables[String(id)]\n return `{{${variable?.name ?? MISSING_BINDING_LABEL}}}`\n },\n )\n return withVariables.replace(\n FUNCTION_TOKEN_PATTERN,\n (token, ref, rawArgs) => {\n const definition = functions[String(ref).trim()]\n // Name-form refs already read fine; only id-form refs get mapped.\n if (!definition || definition.name === String(ref).trim()) return token\n return `{{fn:${definition.name ?? MISSING_BINDING_LABEL}(${String(rawArgs)})}}`\n },\n )\n}\n"],"names":["REF","VARIABLE_ID_TOKEN_PATTERN","RegExp","FUNCTION_TOKEN_PATTERN","NAME_TOKEN_PATTERN","formatVariableIdToken","variableId","formatFunctionIdToken","functionId","parameterNames","join","keyById","docs","map","id","doc","normalizeBindingTokens","text","variables","functions","withFunctions","replace","token","ref","rawArgs","definition","String","trim","$id","name","variable","TYPED_NAME_TOKEN","source","editableBindingTokens","includes","rawId","Object","values","find","typed","test","escapeRegExp","value","textReferencesBinding","via","kind","push","nodesReferenceBinding","nodes","Set","node","props","match","add","size","rewriteBindingTokensDeep","changed","next","Array","isArray","item","result","key","entries","bindingTokenNeedsDeep","needs","nameToken","functionToken","walk","current","MISSING_BINDING_LABEL","displayBindingTokens","withVariables","_token"],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
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
|
+
/** One step on the trail: what it is called, and where it goes. */
|
|
18
|
+
export interface BreadcrumbCrumb {
|
|
19
|
+
/** The DISPLAY name — a collection's title, an entry's headline. */
|
|
20
|
+
name: string;
|
|
21
|
+
/** Site-relative path, e.g. `/blog` or `/blog/hello`. */
|
|
22
|
+
path: string;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* `schema.org/BreadcrumbList` for a trail of crumbs (AGL-2535).
|
|
26
|
+
*
|
|
27
|
+
* ## Why content routes needed their own
|
|
28
|
+
*
|
|
29
|
+
* The tenant already emitted a breadcrumb, for nested SCREEN paths only, built
|
|
30
|
+
* by splitting the routing-map path — so its crumb names are URL segments
|
|
31
|
+
* (`/company/about` publishes "company" and "about"). That is passable for a
|
|
32
|
+
* screen, whose slug is usually its title in lower case, and it is the wrong
|
|
33
|
+
* mechanism entirely for content: `/blog/from-a-form-to-a-dataset-in-five-minutes`
|
|
34
|
+
* would publish that slug as a crumb name when the entry's actual headline is
|
|
35
|
+
* sitting right there in the loader's result.
|
|
36
|
+
*
|
|
37
|
+
* So this takes NAMES rather than a path, and the caller supplies them from
|
|
38
|
+
* whatever it knows — a collection's `displayName`, an entry's `title`, a
|
|
39
|
+
* category's resolved label.
|
|
40
|
+
*
|
|
41
|
+
* ## Fewer than two crumbs emits nothing
|
|
42
|
+
*
|
|
43
|
+
* A one-item breadcrumb is not a trail, it is the page restating its own
|
|
44
|
+
* title, and Google's own guidance treats a single-element list as ineligible.
|
|
45
|
+
* Returning `undefined` lets a caller spread the result unconditionally
|
|
46
|
+
* instead of counting first — the same shape every other serializer in this
|
|
47
|
+
* codebase uses.
|
|
48
|
+
*
|
|
49
|
+
* ## Absolute urls, because a crawler reads this without a page
|
|
50
|
+
*
|
|
51
|
+
* `item` must resolve on its own. With no origin to resolve against, this
|
|
52
|
+
* emits nothing rather than a list of relative paths a consumer would silently
|
|
53
|
+
* ignore — the rule `contentAuthorJsonLd` states about images, applied to
|
|
54
|
+
* links.
|
|
55
|
+
*/
|
|
56
|
+
export declare function breadcrumbListJsonLd(crumbs: readonly BreadcrumbCrumb[] | null | undefined, origin: string | null | undefined): Record<string, unknown> | undefined;
|
|
57
|
+
export default breadcrumbListJsonLd;
|
|
@@ -0,0 +1,67 @@
|
|
|
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
|
+
*/ /** One step on the trail: what it is called, and where it goes. */ /**
|
|
17
|
+
* `schema.org/BreadcrumbList` for a trail of crumbs (AGL-2535).
|
|
18
|
+
*
|
|
19
|
+
* ## Why content routes needed their own
|
|
20
|
+
*
|
|
21
|
+
* The tenant already emitted a breadcrumb, for nested SCREEN paths only, built
|
|
22
|
+
* by splitting the routing-map path — so its crumb names are URL segments
|
|
23
|
+
* (`/company/about` publishes "company" and "about"). That is passable for a
|
|
24
|
+
* screen, whose slug is usually its title in lower case, and it is the wrong
|
|
25
|
+
* mechanism entirely for content: `/blog/from-a-form-to-a-dataset-in-five-minutes`
|
|
26
|
+
* would publish that slug as a crumb name when the entry's actual headline is
|
|
27
|
+
* sitting right there in the loader's result.
|
|
28
|
+
*
|
|
29
|
+
* So this takes NAMES rather than a path, and the caller supplies them from
|
|
30
|
+
* whatever it knows — a collection's `displayName`, an entry's `title`, a
|
|
31
|
+
* category's resolved label.
|
|
32
|
+
*
|
|
33
|
+
* ## Fewer than two crumbs emits nothing
|
|
34
|
+
*
|
|
35
|
+
* A one-item breadcrumb is not a trail, it is the page restating its own
|
|
36
|
+
* title, and Google's own guidance treats a single-element list as ineligible.
|
|
37
|
+
* Returning `undefined` lets a caller spread the result unconditionally
|
|
38
|
+
* instead of counting first — the same shape every other serializer in this
|
|
39
|
+
* codebase uses.
|
|
40
|
+
*
|
|
41
|
+
* ## Absolute urls, because a crawler reads this without a page
|
|
42
|
+
*
|
|
43
|
+
* `item` must resolve on its own. With no origin to resolve against, this
|
|
44
|
+
* emits nothing rather than a list of relative paths a consumer would silently
|
|
45
|
+
* ignore — the rule `contentAuthorJsonLd` states about images, applied to
|
|
46
|
+
* links.
|
|
47
|
+
*/ export function breadcrumbListJsonLd(crumbs, origin) {
|
|
48
|
+
const base = String(origin != null ? origin : '').trim().replace(/\/+$/, '');
|
|
49
|
+
if (!base) return undefined;
|
|
50
|
+
const usable = (crumbs != null ? crumbs : []).filter((crumb)=>{
|
|
51
|
+
var _ref, _ref1;
|
|
52
|
+
return String((_ref = crumb == null ? void 0 : crumb.name) != null ? _ref : '').trim() && String((_ref1 = crumb == null ? void 0 : crumb.path) != null ? _ref1 : '').trim();
|
|
53
|
+
});
|
|
54
|
+
if (usable.length < 2) return undefined;
|
|
55
|
+
return {
|
|
56
|
+
'@type': 'BreadcrumbList',
|
|
57
|
+
itemListElement: usable.map((crumb, index)=>({
|
|
58
|
+
'@type': 'ListItem',
|
|
59
|
+
position: index + 1,
|
|
60
|
+
name: String(crumb.name).trim(),
|
|
61
|
+
item: `${base}/${String(crumb.path).trim().replace(/^\/+/, '')}`
|
|
62
|
+
}))
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export default breadcrumbListJsonLd;
|
|
66
|
+
|
|
67
|
+
//# sourceMappingURL=breadcrumb-json-ld.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/breadcrumb-json-ld.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/** One step on the trail: what it is called, and where it goes. */\nexport interface BreadcrumbCrumb {\n /** The DISPLAY name — a collection's title, an entry's headline. */\n name: string\n /** Site-relative path, e.g. `/blog` or `/blog/hello`. */\n path: string\n}\n\n/**\n * `schema.org/BreadcrumbList` for a trail of crumbs (AGL-2535).\n *\n * ## Why content routes needed their own\n *\n * The tenant already emitted a breadcrumb, for nested SCREEN paths only, built\n * by splitting the routing-map path — so its crumb names are URL segments\n * (`/company/about` publishes \"company\" and \"about\"). That is passable for a\n * screen, whose slug is usually its title in lower case, and it is the wrong\n * mechanism entirely for content: `/blog/from-a-form-to-a-dataset-in-five-minutes`\n * would publish that slug as a crumb name when the entry's actual headline is\n * sitting right there in the loader's result.\n *\n * So this takes NAMES rather than a path, and the caller supplies them from\n * whatever it knows — a collection's `displayName`, an entry's `title`, a\n * category's resolved label.\n *\n * ## Fewer than two crumbs emits nothing\n *\n * A one-item breadcrumb is not a trail, it is the page restating its own\n * title, and Google's own guidance treats a single-element list as ineligible.\n * Returning `undefined` lets a caller spread the result unconditionally\n * instead of counting first — the same shape every other serializer in this\n * codebase uses.\n *\n * ## Absolute urls, because a crawler reads this without a page\n *\n * `item` must resolve on its own. With no origin to resolve against, this\n * emits nothing rather than a list of relative paths a consumer would silently\n * ignore — the rule `contentAuthorJsonLd` states about images, applied to\n * links.\n */\nexport function breadcrumbListJsonLd(\n crumbs: readonly BreadcrumbCrumb[] | null | undefined,\n origin: string | null | undefined,\n): Record<string, unknown> | undefined {\n const base = String(origin ?? '').trim().replace(/\\/+$/, '')\n if (!base) return undefined\n const usable = (crumbs ?? []).filter(\n (crumb) => String(crumb?.name ?? '').trim() && String(crumb?.path ?? '').trim(),\n )\n if (usable.length < 2) return undefined\n return {\n '@type': 'BreadcrumbList',\n itemListElement: usable.map((crumb, index) => ({\n '@type': 'ListItem',\n position: index + 1,\n name: String(crumb.name).trim(),\n item: `${base}/${String(crumb.path).trim().replace(/^\\/+/, '')}`,\n })),\n }\n}\n\nexport default breadcrumbListJsonLd\n"],"names":["breadcrumbListJsonLd","crumbs","origin","base","String","trim","replace","undefined","usable","filter","crumb","name","path","length","itemListElement","map","index","position","item"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,iEAAiE,GAQjE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BC,GACD,OAAO,SAASA,qBACdC,MAAqD,EACrDC,MAAiC;IAEjC,MAAMC,OAAOC,OAAOF,iBAAAA,SAAU,IAAIG,IAAI,GAAGC,OAAO,CAAC,QAAQ;IACzD,IAAI,CAACH,MAAM,OAAOI;IAClB,MAAMC,SAAS,CAACP,iBAAAA,SAAU,EAAE,EAAEQ,MAAM,CAClC,CAACC;;eAAUN,eAAOM,yBAAAA,MAAOC,IAAI,mBAAI,IAAIN,IAAI,MAAMD,gBAAOM,yBAAAA,MAAOE,IAAI,oBAAI,IAAIP,IAAI;;IAE/E,IAAIG,OAAOK,MAAM,GAAG,GAAG,OAAON;IAC9B,OAAO;QACL,SAAS;QACTO,iBAAiBN,OAAOO,GAAG,CAAC,CAACL,OAAOM,QAAW,CAAA;gBAC7C,SAAS;gBACTC,UAAUD,QAAQ;gBAClBL,MAAMP,OAAOM,MAAMC,IAAI,EAAEN,IAAI;gBAC7Ba,MAAM,GAAGf,KAAK,CAAC,EAAEC,OAAOM,MAAME,IAAI,EAAEP,IAAI,GAAGC,OAAO,CAAC,QAAQ,KAAK;YAClE,CAAA;IACF;AACF;AAEA,eAAeN,qBAAoB"}
|