@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,102 @@
|
|
|
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
|
+
import type { HostAction } from './actions';
|
|
18
|
+
/**
|
|
19
|
+
* Interactions stored on the element that carries them.
|
|
20
|
+
*
|
|
21
|
+
* An interaction is what an ELEMENT does — clicked, hovered, scrolled into
|
|
22
|
+
* view. A host action is what the SITE does — an order was placed, a form was
|
|
23
|
+
* submitted. Both compile to the same runtime shape, and until now both were
|
|
24
|
+
* stored the same way too, as rows in `hosts/{hostId}/actions` bound to an
|
|
25
|
+
* element by selector. That made an interaction a site-wide object that
|
|
26
|
+
* merely happened to point at one element, with all four consequences an
|
|
27
|
+
* author would be surprised by: it did not publish or roll back with its
|
|
28
|
+
* screen, it did not travel with a copied component or a packaged template,
|
|
29
|
+
* deleting the element orphaned it, and it cluttered the site's automation
|
|
30
|
+
* list with a nav menu's hover timing.
|
|
31
|
+
*
|
|
32
|
+
* Here the node owns them, so all four answer themselves — the node is the
|
|
33
|
+
* thing that versions, travels, and is deleted.
|
|
34
|
+
*
|
|
35
|
+
* ## The selector is not stored
|
|
36
|
+
*
|
|
37
|
+
* `trigger.selector` is derived from the node's id at compose time, never
|
|
38
|
+
* persisted. A stored selector is a second name for the element that can
|
|
39
|
+
* disagree with the first: a duplicate, a re-key, or a paste into another
|
|
40
|
+
* document would carry a selector still naming the ORIGINAL element, and the
|
|
41
|
+
* interaction would silently drive someone else's button. Deriving it means
|
|
42
|
+
* the copy binds to the copy, which is the whole reason for moving the
|
|
43
|
+
* storage.
|
|
44
|
+
*/
|
|
45
|
+
export interface NodeInteraction extends Omit<HostAction, 'trigger'> {
|
|
46
|
+
/** Stable within its node, so an edit updates rather than appends. */
|
|
47
|
+
id: string;
|
|
48
|
+
trigger: Omit<HostAction['trigger'], 'selector'>;
|
|
49
|
+
}
|
|
50
|
+
/** Cap per element. Ten triggers on one button is a bug, not a design. */
|
|
51
|
+
export declare const NODE_MAX_INTERACTIONS = 10;
|
|
52
|
+
/** The selector the renderer stamps for a node, and the runtime targets. */
|
|
53
|
+
export declare function nodeInteractionSelector(nodeId: string): string;
|
|
54
|
+
/** The node a derived selector names, or undefined for anything else. */
|
|
55
|
+
export declare function nodeIdFromInteractionSelector(selector: unknown): string | undefined;
|
|
56
|
+
/**
|
|
57
|
+
* The prefix that makes a collected id say where it lives.
|
|
58
|
+
*
|
|
59
|
+
* Every surface that can toggle, edit or delete an interaction is handed an
|
|
60
|
+
* id and nothing else, and there are now two places one can be stored. A
|
|
61
|
+
* self-describing id is what lets those surfaces route without a second
|
|
62
|
+
* lookup — and, more to the point, without GUESSING, which during the
|
|
63
|
+
* migration would mean writing a node interaction into the actions
|
|
64
|
+
* collection or vice versa.
|
|
65
|
+
*/
|
|
66
|
+
export declare const NODE_INTERACTION_ID_PREFIX = "node:";
|
|
67
|
+
/** The node and interaction a collected id names, or null for a host action. */
|
|
68
|
+
export declare function parseNodeInteractionId(id: unknown): {
|
|
69
|
+
nodeId: string;
|
|
70
|
+
interactionId: string;
|
|
71
|
+
} | null;
|
|
72
|
+
/** The collected id for one interaction on one node. */
|
|
73
|
+
export declare function nodeInteractionId(nodeId: string, interactionId: string): string;
|
|
74
|
+
/** Minimal node shape this module reads; the canvas node satisfies it. */
|
|
75
|
+
export interface InteractionNode {
|
|
76
|
+
$id?: string;
|
|
77
|
+
interactions?: NodeInteraction[] | null;
|
|
78
|
+
/** Denormalized children. Ids are the normalized form and carry nothing. */
|
|
79
|
+
nodes?: unknown;
|
|
80
|
+
}
|
|
81
|
+
export declare function walkInteractionNodes(root: InteractionNode | null | undefined): Generator<InteractionNode>;
|
|
82
|
+
/** One interaction resolved into the runtime's own shape. */
|
|
83
|
+
export interface CollectedNodeInteraction {
|
|
84
|
+
/**
|
|
85
|
+
* Namespaced with the node id, so two elements carrying the same preset —
|
|
86
|
+
* two Dropdown Panels inserted from the same source — cannot collide, and
|
|
87
|
+
* so a runtime keyed on this id (the once-per-visitor and cooldown caps
|
|
88
|
+
* are) treats them as the separate things they are.
|
|
89
|
+
*/
|
|
90
|
+
id: string;
|
|
91
|
+
action: HostAction;
|
|
92
|
+
}
|
|
93
|
+
export declare function collectNodeInteractions(nodes: Iterable<InteractionNode | null | undefined>): CollectedNodeInteraction[];
|
|
94
|
+
/**
|
|
95
|
+
* The interactions on one node with one entry added or replaced.
|
|
96
|
+
*
|
|
97
|
+
* Returns a new array; never mutates the one passed in, which is a MobX
|
|
98
|
+
* observable on the canvas and a plain array everywhere else.
|
|
99
|
+
*/
|
|
100
|
+
export declare function upsertNodeInteraction(interactions: readonly NodeInteraction[] | undefined, interaction: NodeInteraction): NodeInteraction[];
|
|
101
|
+
/** The interactions on one node with one removed. */
|
|
102
|
+
export declare function removeNodeInteraction(interactions: readonly NodeInteraction[] | undefined, id: string): NodeInteraction[];
|
|
@@ -0,0 +1,192 @@
|
|
|
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
|
+
*/ import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
17
|
+
/** Cap per element. Ten triggers on one button is a bug, not a design. */ export const NODE_MAX_INTERACTIONS = 10;
|
|
18
|
+
/** The selector the renderer stamps for a node, and the runtime targets. */ export function nodeInteractionSelector(nodeId) {
|
|
19
|
+
return `[data-aglyn="leaf:${nodeId}"]`;
|
|
20
|
+
}
|
|
21
|
+
/** The node a derived selector names, or undefined for anything else. */ export function nodeIdFromInteractionSelector(selector) {
|
|
22
|
+
const match = /^\[data-aglyn="leaf:(.+)"\]$/.exec(String(selector != null ? selector : ''));
|
|
23
|
+
return (match == null ? void 0 : match[1]) || undefined;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The prefix that makes a collected id say where it lives.
|
|
27
|
+
*
|
|
28
|
+
* Every surface that can toggle, edit or delete an interaction is handed an
|
|
29
|
+
* id and nothing else, and there are now two places one can be stored. A
|
|
30
|
+
* self-describing id is what lets those surfaces route without a second
|
|
31
|
+
* lookup — and, more to the point, without GUESSING, which during the
|
|
32
|
+
* migration would mean writing a node interaction into the actions
|
|
33
|
+
* collection or vice versa.
|
|
34
|
+
*/ export const NODE_INTERACTION_ID_PREFIX = 'node:';
|
|
35
|
+
/** The node and interaction a collected id names, or null for a host action. */ export function parseNodeInteractionId(id) {
|
|
36
|
+
const value = String(id != null ? id : '');
|
|
37
|
+
if (!value.startsWith(NODE_INTERACTION_ID_PREFIX)) return null;
|
|
38
|
+
const rest = value.slice(NODE_INTERACTION_ID_PREFIX.length);
|
|
39
|
+
// The node id comes first and cannot contain a colon; the interaction id
|
|
40
|
+
// takes the remainder, so a colon inside one survives the round trip.
|
|
41
|
+
const separator = rest.indexOf(':');
|
|
42
|
+
if (separator <= 0 || separator === rest.length - 1) return null;
|
|
43
|
+
return {
|
|
44
|
+
nodeId: rest.slice(0, separator),
|
|
45
|
+
interactionId: rest.slice(separator + 1)
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
/** The collected id for one interaction on one node. */ export function nodeInteractionId(nodeId, interactionId) {
|
|
49
|
+
return `${NODE_INTERACTION_ID_PREFIX}${nodeId}:${interactionId}`;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Every node in a DENORMALIZED tree, depth-first, parents before children.
|
|
53
|
+
*
|
|
54
|
+
* Composition is what makes this the right input: a layout's chrome and a
|
|
55
|
+
* reusable component's internals are grafted in by then, and their node ids
|
|
56
|
+
* are the graft ids the renderer actually stamps. Collecting from the raw
|
|
57
|
+
* screen document instead would derive a selector for an id that is never on
|
|
58
|
+
* the page — which is the same bug as a stored selector, arrived at from the
|
|
59
|
+
* other direction.
|
|
60
|
+
*
|
|
61
|
+
* A normalized tree (children as id strings) yields only the node it was
|
|
62
|
+
* given; there is nothing to follow, and guessing at a lookup table this
|
|
63
|
+
* module does not have would be worse than answering honestly.
|
|
64
|
+
*/ /** A single node rather than a map of them: it names itself. */ function isInteractionNodeLike(value) {
|
|
65
|
+
return !!value && typeof value === 'object' && typeof value.$id === 'string';
|
|
66
|
+
}
|
|
67
|
+
export function* walkInteractionNodes(root) {
|
|
68
|
+
/*
|
|
69
|
+
* A NORMALIZED map is the shape the tenant actually composes.
|
|
70
|
+
*
|
|
71
|
+
* `composeScreenNodes` returns `{ [id]: node }` with children as id
|
|
72
|
+
* STRINGS, and the enricher handed that straight here. The old code took
|
|
73
|
+
* the map itself for a node: it carries no `$id` and no `interactions`, its
|
|
74
|
+
* `nodes` property does not exist, so the walk yielded one useless object
|
|
75
|
+
* and stopped. Every node interaction on every published page was dropped —
|
|
76
|
+
* silently, because an empty automation list is what a page with none looks
|
|
77
|
+
* like.
|
|
78
|
+
*
|
|
79
|
+
* A map is recognisable without guessing: no `$id`, no `nodes` array, and
|
|
80
|
+
* every value an object carrying its own `$id`. Yielding its values is
|
|
81
|
+
* exact rather than a lookup this module would have to invent — the map is
|
|
82
|
+
* already flat, so there is nothing to follow.
|
|
83
|
+
*/ if (root && typeof root === 'object' && !isInteractionNodeLike(root)) {
|
|
84
|
+
const values = Object.values(root);
|
|
85
|
+
if (values.length && values.every((v)=>isInteractionNodeLike(v))) {
|
|
86
|
+
for (const node of values)yield node;
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
if (!root || typeof root !== 'object') return;
|
|
91
|
+
yield root;
|
|
92
|
+
const children = root.nodes;
|
|
93
|
+
if (!Array.isArray(children)) return;
|
|
94
|
+
for (const child of children){
|
|
95
|
+
if (child && typeof child === 'object') {
|
|
96
|
+
yield* walkInteractionNodes(child);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Every interaction in a composed tree, in the runtime's shape.
|
|
102
|
+
*
|
|
103
|
+
* Order follows the nodes, which is document order — a page with two
|
|
104
|
+
* elements listening for the same event fires them in the order they appear,
|
|
105
|
+
* which is the only ordering an author can predict.
|
|
106
|
+
*
|
|
107
|
+
* Disabled interactions are kept, not dropped. The compiler downstream is the
|
|
108
|
+
* one place that decides what runs (it also applies the plan trims), and two
|
|
109
|
+
* places deciding is how a step gets dropped for a reason nobody can find.
|
|
110
|
+
*/ /**
|
|
111
|
+
* Step selectors, re-pointed at the ids the graft actually stamped.
|
|
112
|
+
*
|
|
113
|
+
* A trigger needs no help: the node IS the selector, derived above from the
|
|
114
|
+
* composed id. A STEP is different — it names another element, and it was
|
|
115
|
+
* written when the component was authored, so it holds that component's own
|
|
116
|
+
* id. Grafting an instance re-stamps every id with the instance's prefix, so
|
|
117
|
+
* `[data-aglyn="leaf:panel"]` names nothing on a page that renders
|
|
118
|
+
* `leaf:cmp__inst__panel`, and a mega menu opens nothing.
|
|
119
|
+
*
|
|
120
|
+
* Rewritten only when the bare id is absent AND exactly the prefixed sibling
|
|
121
|
+
* is present: an interaction that legitimately targets a page-level element
|
|
122
|
+
* from inside a component keeps working, and an unresolvable selector is left
|
|
123
|
+
* exactly as written rather than pointed somewhere plausible.
|
|
124
|
+
*/ function regraftStepSelectors(steps, nodeId, present) {
|
|
125
|
+
const boundary = nodeId.lastIndexOf('__');
|
|
126
|
+
if (boundary < 0) return steps;
|
|
127
|
+
const prefix = nodeId.slice(0, boundary + 2);
|
|
128
|
+
if (!prefix) return steps;
|
|
129
|
+
return (steps != null ? steps : []).map((step)=>{
|
|
130
|
+
const targetId = nodeIdFromInteractionSelector(step == null ? void 0 : step.selector);
|
|
131
|
+
if (!targetId || present.has(targetId)) return step;
|
|
132
|
+
const grafted = `${prefix}${targetId}`;
|
|
133
|
+
if (!present.has(grafted)) return step;
|
|
134
|
+
return _extends({}, step, {
|
|
135
|
+
selector: nodeInteractionSelector(grafted)
|
|
136
|
+
});
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
export function collectNodeInteractions(nodes) {
|
|
140
|
+
const collected = [];
|
|
141
|
+
const all = [
|
|
142
|
+
...nodes
|
|
143
|
+
];
|
|
144
|
+
const present = new Set(all.map((node)=>node == null ? void 0 : node.$id).filter((id)=>!!id));
|
|
145
|
+
for (const node of all){
|
|
146
|
+
const nodeId = node == null ? void 0 : node.$id;
|
|
147
|
+
if (!nodeId || !Array.isArray(node == null ? void 0 : node.interactions)) continue;
|
|
148
|
+
let index = 0;
|
|
149
|
+
for (const interaction of node.interactions){
|
|
150
|
+
var _interaction_trigger;
|
|
151
|
+
if (index >= NODE_MAX_INTERACTIONS) break;
|
|
152
|
+
if (!(interaction == null ? void 0 : (_interaction_trigger = interaction.trigger) == null ? void 0 : _interaction_trigger.event)) continue;
|
|
153
|
+
index += 1;
|
|
154
|
+
collected.push({
|
|
155
|
+
id: nodeInteractionId(nodeId, interaction.id || String(index)),
|
|
156
|
+
action: _extends({}, interaction, Array.isArray(interaction.steps) ? {
|
|
157
|
+
steps: regraftStepSelectors(interaction.steps, nodeId, present)
|
|
158
|
+
} : {}, {
|
|
159
|
+
trigger: _extends({}, interaction.trigger, {
|
|
160
|
+
// Derived here and nowhere else — see the note above on why it
|
|
161
|
+
// is not stored.
|
|
162
|
+
selector: nodeInteractionSelector(nodeId)
|
|
163
|
+
})
|
|
164
|
+
})
|
|
165
|
+
});
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return collected;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* The interactions on one node with one entry added or replaced.
|
|
172
|
+
*
|
|
173
|
+
* Returns a new array; never mutates the one passed in, which is a MobX
|
|
174
|
+
* observable on the canvas and a plain array everywhere else.
|
|
175
|
+
*/ export function upsertNodeInteraction(interactions, interaction) {
|
|
176
|
+
const current = interactions != null ? interactions : [];
|
|
177
|
+
const existing = current.findIndex((entry)=>entry.id === interaction.id);
|
|
178
|
+
if (existing < 0) return [
|
|
179
|
+
...current,
|
|
180
|
+
interaction
|
|
181
|
+
].slice(0, NODE_MAX_INTERACTIONS);
|
|
182
|
+
const next = [
|
|
183
|
+
...current
|
|
184
|
+
];
|
|
185
|
+
next[existing] = interaction;
|
|
186
|
+
return next;
|
|
187
|
+
}
|
|
188
|
+
/** The interactions on one node with one removed. */ export function removeNodeInteraction(interactions, id) {
|
|
189
|
+
return (interactions != null ? interactions : []).filter((entry)=>entry.id !== id);
|
|
190
|
+
}
|
|
191
|
+
|
|
192
|
+
//# sourceMappingURL=node-interactions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/node-interactions.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\nimport type { HostAction } from './actions'\n\n/**\n * Interactions stored on the element that carries them.\n *\n * An interaction is what an ELEMENT does — clicked, hovered, scrolled into\n * view. A host action is what the SITE does — an order was placed, a form was\n * submitted. Both compile to the same runtime shape, and until now both were\n * stored the same way too, as rows in `hosts/{hostId}/actions` bound to an\n * element by selector. That made an interaction a site-wide object that\n * merely happened to point at one element, with all four consequences an\n * author would be surprised by: it did not publish or roll back with its\n * screen, it did not travel with a copied component or a packaged template,\n * deleting the element orphaned it, and it cluttered the site's automation\n * list with a nav menu's hover timing.\n *\n * Here the node owns them, so all four answer themselves — the node is the\n * thing that versions, travels, and is deleted.\n *\n * ## The selector is not stored\n *\n * `trigger.selector` is derived from the node's id at compose time, never\n * persisted. A stored selector is a second name for the element that can\n * disagree with the first: a duplicate, a re-key, or a paste into another\n * document would carry a selector still naming the ORIGINAL element, and the\n * interaction would silently drive someone else's button. Deriving it means\n * the copy binds to the copy, which is the whole reason for moving the\n * storage.\n */\nexport interface NodeInteraction extends Omit<HostAction, 'trigger'> {\n /** Stable within its node, so an edit updates rather than appends. */\n id: string\n trigger: Omit<HostAction['trigger'], 'selector'>\n}\n\n/** Cap per element. Ten triggers on one button is a bug, not a design. */\nexport const NODE_MAX_INTERACTIONS = 10\n\n/** The selector the renderer stamps for a node, and the runtime targets. */\nexport function nodeInteractionSelector(nodeId: string): string {\n return `[data-aglyn=\"leaf:${nodeId}\"]`\n}\n\n/** The node a derived selector names, or undefined for anything else. */\nexport function nodeIdFromInteractionSelector(\n selector: unknown,\n): string | undefined {\n const match = /^\\[data-aglyn=\"leaf:(.+)\"\\]$/.exec(String(selector ?? ''))\n return match?.[1] || undefined\n}\n\n/**\n * The prefix that makes a collected id say where it lives.\n *\n * Every surface that can toggle, edit or delete an interaction is handed an\n * id and nothing else, and there are now two places one can be stored. A\n * self-describing id is what lets those surfaces route without a second\n * lookup — and, more to the point, without GUESSING, which during the\n * migration would mean writing a node interaction into the actions\n * collection or vice versa.\n */\nexport const NODE_INTERACTION_ID_PREFIX = 'node:'\n\n/** The node and interaction a collected id names, or null for a host action. */\nexport function parseNodeInteractionId(\n id: unknown,\n): { nodeId: string; interactionId: string } | null {\n const value = String(id ?? '')\n if (!value.startsWith(NODE_INTERACTION_ID_PREFIX)) return null\n const rest = value.slice(NODE_INTERACTION_ID_PREFIX.length)\n // The node id comes first and cannot contain a colon; the interaction id\n // takes the remainder, so a colon inside one survives the round trip.\n const separator = rest.indexOf(':')\n if (separator <= 0 || separator === rest.length - 1) return null\n return {\n nodeId: rest.slice(0, separator),\n interactionId: rest.slice(separator + 1),\n }\n}\n\n/** The collected id for one interaction on one node. */\nexport function nodeInteractionId(\n nodeId: string,\n interactionId: string,\n): string {\n return `${NODE_INTERACTION_ID_PREFIX}${nodeId}:${interactionId}`\n}\n\n/** Minimal node shape this module reads; the canvas node satisfies it. */\nexport interface InteractionNode {\n $id?: string\n interactions?: NodeInteraction[] | null\n /** Denormalized children. Ids are the normalized form and carry nothing. */\n nodes?: unknown\n}\n\n/**\n * Every node in a DENORMALIZED tree, depth-first, parents before children.\n *\n * Composition is what makes this the right input: a layout's chrome and a\n * reusable component's internals are grafted in by then, and their node ids\n * are the graft ids the renderer actually stamps. Collecting from the raw\n * screen document instead would derive a selector for an id that is never on\n * the page — which is the same bug as a stored selector, arrived at from the\n * other direction.\n *\n * A normalized tree (children as id strings) yields only the node it was\n * given; there is nothing to follow, and guessing at a lookup table this\n * module does not have would be worse than answering honestly.\n */\n/** A single node rather than a map of them: it names itself. */\nfunction isInteractionNodeLike(value: unknown): boolean {\n return (\n !!value &&\n typeof value === 'object' &&\n typeof (value as { $id?: unknown }).$id === 'string'\n )\n}\n\nexport function* walkInteractionNodes(\n root: InteractionNode | null | undefined,\n): Generator<InteractionNode> {\n /*\n * A NORMALIZED map is the shape the tenant actually composes.\n *\n * `composeScreenNodes` returns `{ [id]: node }` with children as id\n * STRINGS, and the enricher handed that straight here. The old code took\n * the map itself for a node: it carries no `$id` and no `interactions`, its\n * `nodes` property does not exist, so the walk yielded one useless object\n * and stopped. Every node interaction on every published page was dropped —\n * silently, because an empty automation list is what a page with none looks\n * like.\n *\n * A map is recognisable without guessing: no `$id`, no `nodes` array, and\n * every value an object carrying its own `$id`. Yielding its values is\n * exact rather than a lookup this module would have to invent — the map is\n * already flat, so there is nothing to follow.\n */\n if (root && typeof root === 'object' && !isInteractionNodeLike(root)) {\n const values = Object.values(root as Record<string, unknown>)\n if (values.length && values.every((v) => isInteractionNodeLike(v))) {\n for (const node of values) yield node as InteractionNode\n return\n }\n }\n if (!root || typeof root !== 'object') return\n yield root\n const children = (root as { nodes?: unknown }).nodes\n if (!Array.isArray(children)) return\n for (const child of children) {\n if (child && typeof child === 'object') {\n yield* walkInteractionNodes(child as InteractionNode)\n }\n }\n}\n\n/** One interaction resolved into the runtime's own shape. */\nexport interface CollectedNodeInteraction {\n /**\n * Namespaced with the node id, so two elements carrying the same preset —\n * two Dropdown Panels inserted from the same source — cannot collide, and\n * so a runtime keyed on this id (the once-per-visitor and cooldown caps\n * are) treats them as the separate things they are.\n */\n id: string\n action: HostAction\n}\n\n/**\n * Every interaction in a composed tree, in the runtime's shape.\n *\n * Order follows the nodes, which is document order — a page with two\n * elements listening for the same event fires them in the order they appear,\n * which is the only ordering an author can predict.\n *\n * Disabled interactions are kept, not dropped. The compiler downstream is the\n * one place that decides what runs (it also applies the plan trims), and two\n * places deciding is how a step gets dropped for a reason nobody can find.\n */\n/**\n * Step selectors, re-pointed at the ids the graft actually stamped.\n *\n * A trigger needs no help: the node IS the selector, derived above from the\n * composed id. A STEP is different — it names another element, and it was\n * written when the component was authored, so it holds that component's own\n * id. Grafting an instance re-stamps every id with the instance's prefix, so\n * `[data-aglyn=\"leaf:panel\"]` names nothing on a page that renders\n * `leaf:cmp__inst__panel`, and a mega menu opens nothing.\n *\n * Rewritten only when the bare id is absent AND exactly the prefixed sibling\n * is present: an interaction that legitimately targets a page-level element\n * from inside a component keeps working, and an unresolvable selector is left\n * exactly as written rather than pointed somewhere plausible.\n */\nfunction regraftStepSelectors(\n steps: HostAction['steps'],\n nodeId: string,\n present: ReadonlySet<string>,\n): HostAction['steps'] {\n const boundary = nodeId.lastIndexOf('__')\n if (boundary < 0) return steps\n const prefix = nodeId.slice(0, boundary + 2)\n if (!prefix) return steps\n return (steps ?? []).map((step) => {\n const targetId = nodeIdFromInteractionSelector(\n (step as { selector?: unknown })?.selector,\n )\n if (!targetId || present.has(targetId)) return step\n const grafted = `${prefix}${targetId}`\n if (!present.has(grafted)) return step\n return { ...step, selector: nodeInteractionSelector(grafted) }\n }) as HostAction['steps']\n}\n\nexport function collectNodeInteractions(\n nodes: Iterable<InteractionNode | null | undefined>,\n): CollectedNodeInteraction[] {\n const collected: CollectedNodeInteraction[] = []\n const all = [...nodes]\n const present = new Set(\n all.map((node) => node?.$id).filter((id): id is string => !!id),\n )\n for (const node of all) {\n const nodeId = node?.$id\n if (!nodeId || !Array.isArray(node?.interactions)) continue\n let index = 0\n for (const interaction of node.interactions) {\n if (index >= NODE_MAX_INTERACTIONS) break\n if (!interaction?.trigger?.event) continue\n index += 1\n collected.push({\n id: nodeInteractionId(nodeId, interaction.id || String(index)),\n action: {\n ...interaction,\n ...(Array.isArray((interaction as { steps?: unknown }).steps)\n ? {\n steps: regraftStepSelectors(\n (interaction as unknown as HostAction).steps,\n nodeId,\n present,\n ),\n }\n : {}),\n trigger: {\n ...interaction.trigger,\n // Derived here and nowhere else — see the note above on why it\n // is not stored.\n selector: nodeInteractionSelector(nodeId),\n },\n } as HostAction,\n })\n }\n }\n return collected\n}\n\n/**\n * The interactions on one node with one entry added or replaced.\n *\n * Returns a new array; never mutates the one passed in, which is a MobX\n * observable on the canvas and a plain array everywhere else.\n */\nexport function upsertNodeInteraction(\n interactions: readonly NodeInteraction[] | undefined,\n interaction: NodeInteraction,\n): NodeInteraction[] {\n const current = interactions ?? []\n const existing = current.findIndex((entry) => entry.id === interaction.id)\n if (existing < 0) return [...current, interaction].slice(0, NODE_MAX_INTERACTIONS)\n const next = [...current]\n next[existing] = interaction\n return next\n}\n\n/** The interactions on one node with one removed. */\nexport function removeNodeInteraction(\n interactions: readonly NodeInteraction[] | undefined,\n id: string,\n): NodeInteraction[] {\n return (interactions ?? []).filter((entry) => entry.id !== id)\n}\n"],"names":["NODE_MAX_INTERACTIONS","nodeInteractionSelector","nodeId","nodeIdFromInteractionSelector","selector","match","exec","String","undefined","NODE_INTERACTION_ID_PREFIX","parseNodeInteractionId","id","value","startsWith","rest","slice","length","separator","indexOf","interactionId","nodeInteractionId","isInteractionNodeLike","$id","walkInteractionNodes","root","values","Object","every","v","node","children","nodes","Array","isArray","child","regraftStepSelectors","steps","present","boundary","lastIndexOf","prefix","map","step","targetId","has","grafted","collectNodeInteractions","collected","all","Set","filter","interactions","index","interaction","trigger","event","push","action","upsertNodeInteraction","current","existing","findIndex","entry","next","removeNodeInteraction"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC;AAqCD,wEAAwE,GACxE,OAAO,MAAMA,wBAAwB,GAAE;AAEvC,0EAA0E,GAC1E,OAAO,SAASC,wBAAwBC,MAAc;IACpD,OAAO,CAAC,kBAAkB,EAAEA,OAAO,EAAE,CAAC;AACxC;AAEA,uEAAuE,GACvE,OAAO,SAASC,8BACdC,QAAiB;IAEjB,MAAMC,QAAQ,+BAA+BC,IAAI,CAACC,OAAOH,mBAAAA,WAAY;IACrE,OAAOC,CAAAA,yBAAAA,KAAO,CAAC,EAAE,KAAIG;AACvB;AAEA;;;;;;;;;CASC,GACD,OAAO,MAAMC,6BAA6B,QAAO;AAEjD,8EAA8E,GAC9E,OAAO,SAASC,uBACdC,EAAW;IAEX,MAAMC,QAAQL,OAAOI,aAAAA,KAAM;IAC3B,IAAI,CAACC,MAAMC,UAAU,CAACJ,6BAA6B,OAAO;IAC1D,MAAMK,OAAOF,MAAMG,KAAK,CAACN,2BAA2BO,MAAM;IAC1D,yEAAyE;IACzE,sEAAsE;IACtE,MAAMC,YAAYH,KAAKI,OAAO,CAAC;IAC/B,IAAID,aAAa,KAAKA,cAAcH,KAAKE,MAAM,GAAG,GAAG,OAAO;IAC5D,OAAO;QACLd,QAAQY,KAAKC,KAAK,CAAC,GAAGE;QACtBE,eAAeL,KAAKC,KAAK,CAACE,YAAY;IACxC;AACF;AAEA,sDAAsD,GACtD,OAAO,SAASG,kBACdlB,MAAc,EACdiB,aAAqB;IAErB,OAAO,GAAGV,6BAA6BP,OAAO,CAAC,EAAEiB,eAAe;AAClE;AAUA;;;;;;;;;;;;;CAaC,GACD,8DAA8D,GAC9D,SAASE,sBAAsBT,KAAc;IAC3C,OACE,CAAC,CAACA,SACF,OAAOA,UAAU,YACjB,OAAO,AAACA,MAA4BU,GAAG,KAAK;AAEhD;AAEA,OAAO,UAAUC,qBACfC,IAAwC;IAExC;;;;;;;;;;;;;;;GAeC,GACD,IAAIA,QAAQ,OAAOA,SAAS,YAAY,CAACH,sBAAsBG,OAAO;QACpE,MAAMC,SAASC,OAAOD,MAAM,CAACD;QAC7B,IAAIC,OAAOT,MAAM,IAAIS,OAAOE,KAAK,CAAC,CAACC,IAAMP,sBAAsBO,KAAK;YAClE,KAAK,MAAMC,QAAQJ,OAAQ,MAAMI;YACjC;QACF;IACF;IACA,IAAI,CAACL,QAAQ,OAAOA,SAAS,UAAU;IACvC,MAAMA;IACN,MAAMM,WAAW,AAACN,KAA6BO,KAAK;IACpD,IAAI,CAACC,MAAMC,OAAO,CAACH,WAAW;IAC9B,KAAK,MAAMI,SAASJ,SAAU;QAC5B,IAAII,SAAS,OAAOA,UAAU,UAAU;YACtC,OAAOX,qBAAqBW;QAC9B;IACF;AACF;AAcA;;;;;;;;;;CAUC,GACD;;;;;;;;;;;;;;CAcC,GACD,SAASC,qBACPC,KAA0B,EAC1BlC,MAAc,EACdmC,OAA4B;IAE5B,MAAMC,WAAWpC,OAAOqC,WAAW,CAAC;IACpC,IAAID,WAAW,GAAG,OAAOF;IACzB,MAAMI,SAAStC,OAAOa,KAAK,CAAC,GAAGuB,WAAW;IAC1C,IAAI,CAACE,QAAQ,OAAOJ;IACpB,OAAO,CAACA,gBAAAA,QAAS,EAAE,EAAEK,GAAG,CAAC,CAACC;QACxB,MAAMC,WAAWxC,8BACduC,wBAAD,AAACA,KAAiCtC,QAAQ;QAE5C,IAAI,CAACuC,YAAYN,QAAQO,GAAG,CAACD,WAAW,OAAOD;QAC/C,MAAMG,UAAU,GAAGL,SAASG,UAAU;QACtC,IAAI,CAACN,QAAQO,GAAG,CAACC,UAAU,OAAOH;QAClC,OAAO,aAAKA;YAAMtC,UAAUH,wBAAwB4C;;IACtD;AACF;AAEA,OAAO,SAASC,wBACdf,KAAmD;IAEnD,MAAMgB,YAAwC,EAAE;IAChD,MAAMC,MAAM;WAAIjB;KAAM;IACtB,MAAMM,UAAU,IAAIY,IAClBD,IAAIP,GAAG,CAAC,CAACZ,OAASA,wBAAAA,KAAMP,GAAG,EAAE4B,MAAM,CAAC,CAACvC,KAAqB,CAAC,CAACA;IAE9D,KAAK,MAAMkB,QAAQmB,IAAK;QACtB,MAAM9C,SAAS2B,wBAAAA,KAAMP,GAAG;QACxB,IAAI,CAACpB,UAAU,CAAC8B,MAAMC,OAAO,CAACJ,wBAAAA,KAAMsB,YAAY,GAAG;QACnD,IAAIC,QAAQ;QACZ,KAAK,MAAMC,eAAexB,KAAKsB,YAAY,CAAE;gBAEtCE;YADL,IAAID,SAASpD,uBAAuB;YACpC,IAAI,EAACqD,gCAAAA,uBAAAA,YAAaC,OAAO,qBAApBD,qBAAsBE,KAAK,GAAE;YAClCH,SAAS;YACTL,UAAUS,IAAI,CAAC;gBACb7C,IAAIS,kBAAkBlB,QAAQmD,YAAY1C,EAAE,IAAIJ,OAAO6C;gBACvDK,QAAQ,aACHJ,aACCrB,MAAMC,OAAO,CAAC,AAACoB,YAAoCjB,KAAK,IACxD;oBACEA,OAAOD,qBACL,AAACkB,YAAsCjB,KAAK,EAC5ClC,QACAmC;gBAEJ,IACA,CAAC;oBACLiB,SAAS,aACJD,YAAYC,OAAO;wBACtB,+DAA+D;wBAC/D,iBAAiB;wBACjBlD,UAAUH,wBAAwBC;;;YAGxC;QACF;IACF;IACA,OAAO6C;AACT;AAEA;;;;;CAKC,GACD,OAAO,SAASW,sBACdP,YAAoD,EACpDE,WAA4B;IAE5B,MAAMM,UAAUR,uBAAAA,eAAgB,EAAE;IAClC,MAAMS,WAAWD,QAAQE,SAAS,CAAC,CAACC,QAAUA,MAAMnD,EAAE,KAAK0C,YAAY1C,EAAE;IACzE,IAAIiD,WAAW,GAAG,OAAO;WAAID;QAASN;KAAY,CAACtC,KAAK,CAAC,GAAGf;IAC5D,MAAM+D,OAAO;WAAIJ;KAAQ;IACzBI,IAAI,CAACH,SAAS,GAAGP;IACjB,OAAOU;AACT;AAEA,mDAAmD,GACnD,OAAO,SAASC,sBACdb,YAAoD,EACpDxC,EAAU;IAEV,OAAO,CAACwC,uBAAAA,eAAgB,EAAE,EAAED,MAAM,CAAC,CAACY,QAAUA,MAAMnD,EAAE,KAAKA;AAC7D"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* An image address: `https:`, an inline image, a site path or a fragment.
|
|
19
|
+
*
|
|
20
|
+
* `https:` only, unlike {@link SAFE_HREF_PATTERN} (AGL-1701). An `http:` href is
|
|
21
|
+
* a link a reader chooses to follow and their browser will warn about; an
|
|
22
|
+
* `http:` image is fetched automatically, and on the authenticated console —
|
|
23
|
+
* or on any tenant page served over TLS — it is mixed content, which every
|
|
24
|
+
* current browser blocks outright. The permissive form bought nothing: the
|
|
25
|
+
* image did not render either way, it just failed at the viewer.
|
|
26
|
+
*/
|
|
27
|
+
export declare const SAFE_SRC_PATTERN: RegExp;
|
|
28
|
+
/** The props that carry an address. */
|
|
29
|
+
export type NodeUrlProp = 'href' | 'src';
|
|
30
|
+
/** Every prop {@link isSafeNodeUrl} judges, in one place for a walker. */
|
|
31
|
+
export declare const NODE_URL_PROPS: readonly NodeUrlProp[];
|
|
32
|
+
/**
|
|
33
|
+
* Whether `value` is an address this prop may carry.
|
|
34
|
+
*
|
|
35
|
+
* `siteReferences` also admits what the site resolves on its own — a screen
|
|
36
|
+
* or collection link (`screen:…`, `collection:…`) for `href`, a media-library
|
|
37
|
+
* reference (`media:…`) for `src`. The linking elements route the first
|
|
38
|
+
* through the routing map and the image element turns the second into a CDN
|
|
39
|
+
* path, so neither reaches the DOM as written. A page on its own site renders
|
|
40
|
+
* with them; a tree published to another workspace may not carry them, since
|
|
41
|
+
* they name the publisher's screens and files.
|
|
42
|
+
*
|
|
43
|
+
* Judged on the value with its surrounding whitespace removed, which is how
|
|
44
|
+
* the linking elements read a link too.
|
|
45
|
+
*/
|
|
46
|
+
export declare function isSafeNodeUrl(prop: NodeUrlProp, value: unknown, options?: {
|
|
47
|
+
siteReferences?: boolean;
|
|
48
|
+
}): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* Whether an address names a scheme, read the way a browser reads one: with
|
|
51
|
+
* the controls and spaces it strips from a URL removed first, so
|
|
52
|
+
* `java\tscript:` names `javascript`. An address with none is relative.
|
|
53
|
+
*/
|
|
54
|
+
export declare function hasUrlScheme(value: string): boolean;
|
|
@@ -0,0 +1,72 @@
|
|
|
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
|
+
* The addresses an element's `href` and `src` may hold (AGL-784, AGL-2933).
|
|
18
|
+
*
|
|
19
|
+
* `Leaf` spreads a node's props onto its component, and a component passes
|
|
20
|
+
* what it does not consume to its root DOM element, so an `href` or `src`
|
|
21
|
+
* that survives composition is a browser navigating or fetching. One rule
|
|
22
|
+
* says which addresses may get that far, read by the two places a value is
|
|
23
|
+
* handed to a page it was not written on: publishing a tree to another
|
|
24
|
+
* workspace, and substituting a property's value into the tree that binds it.
|
|
25
|
+
*/ import { parseMediaRef } from "./media-ref.js";
|
|
26
|
+
import { parseScreenLinkValue, SAFE_HREF_PATTERN } from "./screen-link-value.js";
|
|
27
|
+
/**
|
|
28
|
+
* An image address: `https:`, an inline image, a site path or a fragment.
|
|
29
|
+
*
|
|
30
|
+
* `https:` only, unlike {@link SAFE_HREF_PATTERN} (AGL-1701). An `http:` href is
|
|
31
|
+
* a link a reader chooses to follow and their browser will warn about; an
|
|
32
|
+
* `http:` image is fetched automatically, and on the authenticated console —
|
|
33
|
+
* or on any tenant page served over TLS — it is mixed content, which every
|
|
34
|
+
* current browser blocks outright. The permissive form bought nothing: the
|
|
35
|
+
* image did not render either way, it just failed at the viewer.
|
|
36
|
+
*/ export const SAFE_SRC_PATTERN = /^(https:\/\/|data:image\/|\/|#)/i;
|
|
37
|
+
/** Every prop {@link isSafeNodeUrl} judges, in one place for a walker. */ export const NODE_URL_PROPS = [
|
|
38
|
+
'href',
|
|
39
|
+
'src'
|
|
40
|
+
];
|
|
41
|
+
/**
|
|
42
|
+
* Whether `value` is an address this prop may carry.
|
|
43
|
+
*
|
|
44
|
+
* `siteReferences` also admits what the site resolves on its own — a screen
|
|
45
|
+
* or collection link (`screen:…`, `collection:…`) for `href`, a media-library
|
|
46
|
+
* reference (`media:…`) for `src`. The linking elements route the first
|
|
47
|
+
* through the routing map and the image element turns the second into a CDN
|
|
48
|
+
* path, so neither reaches the DOM as written. A page on its own site renders
|
|
49
|
+
* with them; a tree published to another workspace may not carry them, since
|
|
50
|
+
* they name the publisher's screens and files.
|
|
51
|
+
*
|
|
52
|
+
* Judged on the value with its surrounding whitespace removed, which is how
|
|
53
|
+
* the linking elements read a link too.
|
|
54
|
+
*/ export function isSafeNodeUrl(prop, value, options) {
|
|
55
|
+
if (typeof value !== 'string') return false;
|
|
56
|
+
const address = value.trim();
|
|
57
|
+
const pattern = prop === 'href' ? SAFE_HREF_PATTERN : SAFE_SRC_PATTERN;
|
|
58
|
+
if (pattern.test(address)) return true;
|
|
59
|
+
if (!(options == null ? void 0 : options.siteReferences)) return false;
|
|
60
|
+
return prop === 'href' ? parseScreenLinkValue(address) !== undefined : parseMediaRef(address) !== null;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Whether an address names a scheme, read the way a browser reads one: with
|
|
64
|
+
* the controls and spaces it strips from a URL removed first, so
|
|
65
|
+
* `java\tscript:` names `javascript`. An address with none is relative.
|
|
66
|
+
*/ export function hasUrlScheme(value) {
|
|
67
|
+
// eslint-disable-next-line no-control-regex
|
|
68
|
+
const compact = value.replace(/[\u0000-\u0020\u007f]/g, '');
|
|
69
|
+
return /^[a-z][a-z0-9+.-]*:/i.test(compact);
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
//# sourceMappingURL=node-url-policy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/node-url-policy.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 * The addresses an element's `href` and `src` may hold (AGL-784, AGL-2933).\n *\n * `Leaf` spreads a node's props onto its component, and a component passes\n * what it does not consume to its root DOM element, so an `href` or `src`\n * that survives composition is a browser navigating or fetching. One rule\n * says which addresses may get that far, read by the two places a value is\n * handed to a page it was not written on: publishing a tree to another\n * workspace, and substituting a property's value into the tree that binds it.\n */\n\nimport { parseMediaRef } from './media-ref'\nimport { parseScreenLinkValue, SAFE_HREF_PATTERN } from './screen-link-value'\n\n/**\n * An image address: `https:`, an inline image, a site path or a fragment.\n *\n * `https:` only, unlike {@link SAFE_HREF_PATTERN} (AGL-1701). An `http:` href is\n * a link a reader chooses to follow and their browser will warn about; an\n * `http:` image is fetched automatically, and on the authenticated console —\n * or on any tenant page served over TLS — it is mixed content, which every\n * current browser blocks outright. The permissive form bought nothing: the\n * image did not render either way, it just failed at the viewer.\n */\nexport const SAFE_SRC_PATTERN = /^(https:\\/\\/|data:image\\/|\\/|#)/i\n\n/** The props that carry an address. */\nexport type NodeUrlProp = 'href' | 'src'\n\n/** Every prop {@link isSafeNodeUrl} judges, in one place for a walker. */\nexport const NODE_URL_PROPS: readonly NodeUrlProp[] = ['href', 'src']\n\n/**\n * Whether `value` is an address this prop may carry.\n *\n * `siteReferences` also admits what the site resolves on its own — a screen\n * or collection link (`screen:…`, `collection:…`) for `href`, a media-library\n * reference (`media:…`) for `src`. The linking elements route the first\n * through the routing map and the image element turns the second into a CDN\n * path, so neither reaches the DOM as written. A page on its own site renders\n * with them; a tree published to another workspace may not carry them, since\n * they name the publisher's screens and files.\n *\n * Judged on the value with its surrounding whitespace removed, which is how\n * the linking elements read a link too.\n */\nexport function isSafeNodeUrl(\n prop: NodeUrlProp,\n value: unknown,\n options?: { siteReferences?: boolean },\n): boolean {\n if (typeof value !== 'string') return false\n const address = value.trim()\n const pattern = prop === 'href' ? SAFE_HREF_PATTERN : SAFE_SRC_PATTERN\n if (pattern.test(address)) return true\n if (!options?.siteReferences) return false\n return prop === 'href'\n ? parseScreenLinkValue(address) !== undefined\n : parseMediaRef(address) !== null\n}\n\n/**\n * Whether an address names a scheme, read the way a browser reads one: with\n * the controls and spaces it strips from a URL removed first, so\n * `java\\tscript:` names `javascript`. An address with none is relative.\n */\nexport function hasUrlScheme(value: string): boolean {\n // eslint-disable-next-line no-control-regex\n const compact = value.replace(/[\\u0000-\\u0020\\u007f]/g, '')\n return /^[a-z][a-z0-9+.-]*:/i.test(compact)\n}\n"],"names":["parseMediaRef","parseScreenLinkValue","SAFE_HREF_PATTERN","SAFE_SRC_PATTERN","NODE_URL_PROPS","isSafeNodeUrl","prop","value","options","address","trim","pattern","test","siteReferences","undefined","hasUrlScheme","compact","replace"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;CASC,GAED,SAASA,aAAa,QAAQ,iBAAa;AAC3C,SAASC,oBAAoB,EAAEC,iBAAiB,QAAQ,yBAAqB;AAE7E;;;;;;;;;CASC,GACD,OAAO,MAAMC,mBAAmB,mCAAkC;AAKlE,wEAAwE,GACxE,OAAO,MAAMC,iBAAyC;IAAC;IAAQ;CAAM,CAAA;AAErE;;;;;;;;;;;;;CAaC,GACD,OAAO,SAASC,cACdC,IAAiB,EACjBC,KAAc,EACdC,OAAsC;IAEtC,IAAI,OAAOD,UAAU,UAAU,OAAO;IACtC,MAAME,UAAUF,MAAMG,IAAI;IAC1B,MAAMC,UAAUL,SAAS,SAASJ,oBAAoBC;IACtD,IAAIQ,QAAQC,IAAI,CAACH,UAAU,OAAO;IAClC,IAAI,EAACD,2BAAAA,QAASK,cAAc,GAAE,OAAO;IACrC,OAAOP,SAAS,SACZL,qBAAqBQ,aAAaK,YAClCd,cAAcS,aAAa;AACjC;AAEA;;;;CAIC,GACD,OAAO,SAASM,aAAaR,KAAa;IACxC,4CAA4C;IAC5C,MAAMS,UAAUT,MAAMU,OAAO,CAAC,0BAA0B;IACxD,OAAO,uBAAuBL,IAAI,CAACI;AACrC"}
|
|
@@ -0,0 +1,71 @@
|
|
|
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
|
+
import type { ITimestamp } from '@aglyn/shared-util-timestamp';
|
|
18
|
+
/**
|
|
19
|
+
* In-app notifications (AGL-259): per-user docs at
|
|
20
|
+
* `users/{uid}/notifications/{id}`, written by the Admin SDK (emitters in
|
|
21
|
+
* the API routes + the `notifyAdmins` automation step) and read/marked by
|
|
22
|
+
* their owner. Types follow the common SaaS taxonomy so the console can
|
|
23
|
+
* icon/group them without a registry.
|
|
24
|
+
*/
|
|
25
|
+
export type AglynNotificationType = 'billing.invoice' | 'billing.paymentFailed' | 'billing.subscriptionCanceled' | 'billing.usage' | 'team.invite' | 'team.roleChanged' | 'team.hostAccessGranted' | 'content.formSubmission' | 'content.booking' | 'content.order' | 'content.lowStock' | 'content.taskAssigned' | 'content.taskReminder' | 'content.contactAssigned' | 'content.leadAssigned' | 'content.crmDailyDigest' | 'content.insightsDigest' | 'marketplace.review' | 'support.ticketOpened' | 'support.ticketReply' | 'system.announcement' | 'system.pluginVerifierRegression' | 'system.signInMethodRemoved' | 'system.scopeDrift' | 'system.ssoDomainUnverified' | 'system.formSubmissionsPaused' | 'system.visitorRecordsPaused' | 'system.abuseReportUrgent' | 'system.dmcaCounterNotice' | 'system.bandwidthCeilingTripped' | 'system.bandwidthCapEngaged' | 'system.billingWebhookHalfApplied' | 'system.disputeUnattributed';
|
|
26
|
+
export interface AglynNotification {
|
|
27
|
+
$id?: string;
|
|
28
|
+
type: AglynNotificationType;
|
|
29
|
+
title: string;
|
|
30
|
+
body?: string;
|
|
31
|
+
/** Console path the notification opens (e.g. a host inbox). */
|
|
32
|
+
link?: string;
|
|
33
|
+
orgId?: string;
|
|
34
|
+
hostId?: string;
|
|
35
|
+
createdAt?: ITimestamp;
|
|
36
|
+
/** Set by the owner when read; unread while absent. */
|
|
37
|
+
readAt?: ITimestamp | null;
|
|
38
|
+
}
|
|
39
|
+
export declare const NOTIFICATION_TYPE_LABELS: Record<AglynNotificationType, string>;
|
|
40
|
+
/** Preference buckets (AGL-267): the prefix before the dot. */
|
|
41
|
+
export type NotificationCategory = 'billing' | 'team' | 'content' | 'marketplace' | 'support' | 'system';
|
|
42
|
+
export declare const NOTIFICATION_CATEGORY_LABELS: Record<NotificationCategory, string>;
|
|
43
|
+
export declare function notificationCategory(type: AglynNotificationType | string): NotificationCategory;
|
|
44
|
+
/**
|
|
45
|
+
* Per-user mute map stored at `users/{uid}.notificationPrefs`
|
|
46
|
+
* (`{ [category]: false }` mutes); absent categories stay on.
|
|
47
|
+
*/
|
|
48
|
+
export declare function notificationMuted(prefs: Record<string, boolean> | null | undefined, type: AglynNotificationType | string): boolean;
|
|
49
|
+
/**
|
|
50
|
+
* The field on `users/{uid}` that holds a person's digest switches
|
|
51
|
+
* (AGL-2619): `{ crmDaily: false }` turns the daily CRM digest off, and an
|
|
52
|
+
* absent key leaves it on. Its own map rather than a key in
|
|
53
|
+
* `notificationPrefs`, because that map is keyed by CATEGORY and read by
|
|
54
|
+
* {@link notificationMuted} — a digest is a schedule a person keeps or
|
|
55
|
+
* drops, not a bucket of types, and one switch governs both the console
|
|
56
|
+
* notification and the email it travels with.
|
|
57
|
+
*/
|
|
58
|
+
export declare const DIGEST_PREFS_FIELD = "digestPrefs";
|
|
59
|
+
export declare function crmDailyDigestEnabled(prefs: Record<string, boolean> | null | undefined): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* The field on `users/{uid}` naming the workspaces whose weekly insights a
|
|
62
|
+
* person asked for (AGL-2915): `{ [orgId]: true }`. OPT-IN, unlike the CRM
|
|
63
|
+
* digest — an absent key is off — because a weekly insight is generated, and a
|
|
64
|
+
* generation spends the workspace's credits. The person turns it on beside the
|
|
65
|
+
* answers themselves, where the plan, the release and their permission have
|
|
66
|
+
* already been checked, and off again there or in Notifications; the weekly
|
|
67
|
+
* sweep checks all three again before it spends anything.
|
|
68
|
+
*/
|
|
69
|
+
export declare const INSIGHT_DIGESTS_FIELD = "insightDigests";
|
|
70
|
+
/** Whether a person asked for a workspace's weekly insights. */
|
|
71
|
+
export declare function insightDigestSubscribed(value: Record<string, boolean> | null | undefined, orgId: string): boolean;
|
|
@@ -0,0 +1,101 @@
|
|
|
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
|
+
*/ export const NOTIFICATION_TYPE_LABELS = {
|
|
17
|
+
'billing.invoice': 'Invoice available',
|
|
18
|
+
'billing.paymentFailed': 'Payment failed',
|
|
19
|
+
'billing.subscriptionCanceled': 'Subscription canceled',
|
|
20
|
+
'billing.usage': 'Usage threshold',
|
|
21
|
+
'team.invite': 'Team invite',
|
|
22
|
+
'team.roleChanged': 'Role changed',
|
|
23
|
+
'team.hostAccessGranted': 'Site access granted',
|
|
24
|
+
'content.formSubmission': 'Form submission',
|
|
25
|
+
'content.booking': 'New booking',
|
|
26
|
+
'content.order': 'New order',
|
|
27
|
+
'content.lowStock': 'Low stock',
|
|
28
|
+
'content.taskAssigned': 'Task assigned to you',
|
|
29
|
+
'content.taskReminder': 'Task reminder',
|
|
30
|
+
'content.contactAssigned': 'Contact assigned to you',
|
|
31
|
+
'content.leadAssigned': 'Lead assigned to you',
|
|
32
|
+
'content.crmDailyDigest': 'Daily CRM digest',
|
|
33
|
+
'content.insightsDigest': 'Weekly insights',
|
|
34
|
+
'marketplace.review': 'Listing review',
|
|
35
|
+
'support.ticketOpened': 'New support ticket',
|
|
36
|
+
'support.ticketReply': 'Support ticket reply',
|
|
37
|
+
'system.announcement': 'Announcement',
|
|
38
|
+
'system.pluginVerifierRegression': 'Plugin verifier regression',
|
|
39
|
+
'system.signInMethodRemoved': 'Sign-in method removed',
|
|
40
|
+
'system.scopeDrift': 'Resources missing a sharing scope',
|
|
41
|
+
'system.ssoDomainUnverified': 'SSO domain no longer proves ownership',
|
|
42
|
+
'system.formSubmissionsPaused': 'Form submissions paused',
|
|
43
|
+
'system.visitorRecordsPaused': 'Sign-ups or leads paused',
|
|
44
|
+
'system.abuseReportUrgent': 'Urgent abuse report',
|
|
45
|
+
'system.dmcaCounterNotice': 'DMCA counter-notice',
|
|
46
|
+
'system.bandwidthCeilingTripped': 'Bandwidth ceiling reached',
|
|
47
|
+
'system.bandwidthCapEngaged': 'Monthly traffic limit reached',
|
|
48
|
+
'system.billingWebhookHalfApplied': 'Billing webhook half applied',
|
|
49
|
+
'system.disputeUnattributed': 'Card dispute with no owner'
|
|
50
|
+
};
|
|
51
|
+
export const NOTIFICATION_CATEGORY_LABELS = {
|
|
52
|
+
billing: 'Billing',
|
|
53
|
+
team: 'Team & access',
|
|
54
|
+
content: 'Forms & bookings',
|
|
55
|
+
marketplace: 'Marketplace',
|
|
56
|
+
support: 'Support',
|
|
57
|
+
system: 'Product & system'
|
|
58
|
+
};
|
|
59
|
+
export function notificationCategory(type) {
|
|
60
|
+
const prefix = String(type).split('.')[0];
|
|
61
|
+
return [
|
|
62
|
+
'billing',
|
|
63
|
+
'team',
|
|
64
|
+
'content',
|
|
65
|
+
'marketplace',
|
|
66
|
+
'support',
|
|
67
|
+
'system'
|
|
68
|
+
].includes(prefix) ? prefix : 'system';
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Per-user mute map stored at `users/{uid}.notificationPrefs`
|
|
72
|
+
* (`{ [category]: false }` mutes); absent categories stay on.
|
|
73
|
+
*/ export function notificationMuted(prefs, type) {
|
|
74
|
+
return (prefs == null ? void 0 : prefs[notificationCategory(type)]) === false;
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* The field on `users/{uid}` that holds a person's digest switches
|
|
78
|
+
* (AGL-2619): `{ crmDaily: false }` turns the daily CRM digest off, and an
|
|
79
|
+
* absent key leaves it on. Its own map rather than a key in
|
|
80
|
+
* `notificationPrefs`, because that map is keyed by CATEGORY and read by
|
|
81
|
+
* {@link notificationMuted} — a digest is a schedule a person keeps or
|
|
82
|
+
* drops, not a bucket of types, and one switch governs both the console
|
|
83
|
+
* notification and the email it travels with.
|
|
84
|
+
*/ export const DIGEST_PREFS_FIELD = 'digestPrefs';
|
|
85
|
+
export function crmDailyDigestEnabled(prefs) {
|
|
86
|
+
return (prefs == null ? void 0 : prefs['crmDaily']) !== false;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* The field on `users/{uid}` naming the workspaces whose weekly insights a
|
|
90
|
+
* person asked for (AGL-2915): `{ [orgId]: true }`. OPT-IN, unlike the CRM
|
|
91
|
+
* digest — an absent key is off — because a weekly insight is generated, and a
|
|
92
|
+
* generation spends the workspace's credits. The person turns it on beside the
|
|
93
|
+
* answers themselves, where the plan, the release and their permission have
|
|
94
|
+
* already been checked, and off again there or in Notifications; the weekly
|
|
95
|
+
* sweep checks all three again before it spends anything.
|
|
96
|
+
*/ export const INSIGHT_DIGESTS_FIELD = 'insightDigests';
|
|
97
|
+
/** Whether a person asked for a workspace's weekly insights. */ export function insightDigestSubscribed(value, orgId) {
|
|
98
|
+
return Boolean(orgId) && (value == null ? void 0 : value[orgId]) === true;
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
//# sourceMappingURL=notifications.js.map
|