@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,140 @@
|
|
|
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 compose-time half of the drop/render agreement (AGL-1389).
|
|
18
|
+
*
|
|
19
|
+
* A guard that only inspects a component function misses this entirely, and
|
|
20
|
+
* the miss is not hypothetical: `reusableInstance` renders `{children}` — it
|
|
21
|
+
* looks perfect — and destroyed every node dropped into it anyway, because
|
|
22
|
+
* {@link composeReusableComponentNodes} REPLACES the instance's child list
|
|
23
|
+
* with the grafted definition subtree before any renderer sees the tree
|
|
24
|
+
* (`nodes: [prefixId(definition.rootId)]`). Reading the component alone would
|
|
25
|
+
* have cleared it.
|
|
26
|
+
*
|
|
27
|
+
* So the child a node holds is checked where every render surface gets its
|
|
28
|
+
* tree from: after compose. Pure data in, pure data out — no React, no
|
|
29
|
+
* providers, no canvas singleton, and therefore no exemptions.
|
|
30
|
+
*/ import { NODE_ROOT_ID } from "../canvas-manager/canvas-manager.js";
|
|
31
|
+
import { composeLayoutAndScreenNodes } from "./compose-layout-nodes.js";
|
|
32
|
+
import { composeReusableComponentNodes } from "./compose-reusable-components.js";
|
|
33
|
+
const SUBJECT_ID = 'child-contract-subject';
|
|
34
|
+
const SENTINEL_ID = 'child-contract-sentinel';
|
|
35
|
+
const DEFINITION_ID = 'child-contract-definition';
|
|
36
|
+
/**
|
|
37
|
+
* A minimal screen: root → one node of `componentId` → one sentinel child.
|
|
38
|
+
*
|
|
39
|
+
* `props.refId` is set on every subject, not only on instances: it is what
|
|
40
|
+
* makes the reusable graft actually fire, and a probe that quietly skipped
|
|
41
|
+
* the expansion would report "children survive" about a code path it never
|
|
42
|
+
* entered.
|
|
43
|
+
*/ function probeScreen(componentId) {
|
|
44
|
+
return {
|
|
45
|
+
[NODE_ROOT_ID]: {
|
|
46
|
+
$id: NODE_ROOT_ID,
|
|
47
|
+
parentId: null,
|
|
48
|
+
componentId: 'div',
|
|
49
|
+
nodes: [
|
|
50
|
+
SUBJECT_ID
|
|
51
|
+
]
|
|
52
|
+
},
|
|
53
|
+
[SUBJECT_ID]: {
|
|
54
|
+
$id: SUBJECT_ID,
|
|
55
|
+
parentId: NODE_ROOT_ID,
|
|
56
|
+
componentId,
|
|
57
|
+
props: {
|
|
58
|
+
refId: DEFINITION_ID
|
|
59
|
+
},
|
|
60
|
+
nodes: [
|
|
61
|
+
SENTINEL_ID
|
|
62
|
+
]
|
|
63
|
+
},
|
|
64
|
+
[SENTINEL_ID]: {
|
|
65
|
+
$id: SENTINEL_ID,
|
|
66
|
+
parentId: SUBJECT_ID,
|
|
67
|
+
componentId: 'muiTypography',
|
|
68
|
+
props: {
|
|
69
|
+
children: 'sentinel'
|
|
70
|
+
},
|
|
71
|
+
nodes: []
|
|
72
|
+
}
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
/** A one-node definition for the graft to resolve `refId` against. */ function probeDefinition() {
|
|
76
|
+
return {
|
|
77
|
+
rootId: 'def-root',
|
|
78
|
+
nodes: {
|
|
79
|
+
'def-root': {
|
|
80
|
+
$id: 'def-root',
|
|
81
|
+
parentId: null,
|
|
82
|
+
componentId: 'muiStack',
|
|
83
|
+
nodes: []
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
/** A layout whose slot the screen's top-level nodes are grafted into. */ function probeLayout() {
|
|
89
|
+
return {
|
|
90
|
+
[NODE_ROOT_ID]: {
|
|
91
|
+
$id: NODE_ROOT_ID,
|
|
92
|
+
parentId: null,
|
|
93
|
+
componentId: 'div',
|
|
94
|
+
nodes: [
|
|
95
|
+
'slot'
|
|
96
|
+
]
|
|
97
|
+
},
|
|
98
|
+
slot: {
|
|
99
|
+
$id: 'slot',
|
|
100
|
+
parentId: NODE_ROOT_ID,
|
|
101
|
+
componentId: 'layoutSlot',
|
|
102
|
+
nodes: []
|
|
103
|
+
}
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
/** Whether the sentinel is still in the map AND still the subject's child. */ function sentinelSurvives(composed) {
|
|
107
|
+
var _composed_SUBJECT_ID;
|
|
108
|
+
if (!(composed == null ? void 0 : composed[SENTINEL_ID])) return false;
|
|
109
|
+
const children = (_composed_SUBJECT_ID = composed[SUBJECT_ID]) == null ? void 0 : _composed_SUBJECT_ID.nodes;
|
|
110
|
+
return Array.isArray(children) && children.includes(SENTINEL_ID);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Every component id whose children a compose pass destroys, as
|
|
114
|
+
* reviewer-facing lines (empty = the contract holds).
|
|
115
|
+
*
|
|
116
|
+
* Call it with the ids the editor accepts a drop into
|
|
117
|
+
* (`listAcceptingComponentIds`), which is exactly the set for which "the
|
|
118
|
+
* author put a node here" must survive to a render surface. Ids the editor
|
|
119
|
+
* already refuses are not probed — a component that cannot receive a drop is
|
|
120
|
+
* free to rewrite its own child list, which is what `reusableInstance` and
|
|
121
|
+
* `layoutSlot` do for a living.
|
|
122
|
+
*/ export function auditComposeChildSurvival(acceptingComponentIds) {
|
|
123
|
+
const problems = [];
|
|
124
|
+
for (const componentId of acceptingComponentIds){
|
|
125
|
+
if (!componentId) continue;
|
|
126
|
+
const grafted = composeReusableComponentNodes(probeScreen(componentId), {
|
|
127
|
+
[DEFINITION_ID]: probeDefinition()
|
|
128
|
+
});
|
|
129
|
+
if (!sentinelSurvives(grafted)) {
|
|
130
|
+
problems.push(`${componentId} accepts a drop, but composeReusableComponentNodes ` + 'destroys the node dropped into it — the author would see it in ' + 'the hierarchy and the published page would not have it. Declare ' + 'flags.dropping: FEATURE_FLAG.DISABLED, or stop rewriting its ' + 'child list (AGL-1389)');
|
|
131
|
+
}
|
|
132
|
+
const laidOut = composeLayoutAndScreenNodes(probeLayout(), probeScreen(componentId));
|
|
133
|
+
if (!sentinelSurvives(laidOut)) {
|
|
134
|
+
problems.push(`${componentId} accepts a drop, but composeLayoutAndScreenNodes ` + 'destroys the node dropped into it — the author would see it in ' + 'the hierarchy and the published page would not have it. Declare ' + 'flags.dropping: FEATURE_FLAG.DISABLED, or stop rewriting its ' + 'child list (AGL-1389)');
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return problems.sort();
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
//# sourceMappingURL=child-contract-compose.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/child-contract-compose.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 compose-time half of the drop/render agreement (AGL-1389).\n *\n * A guard that only inspects a component function misses this entirely, and\n * the miss is not hypothetical: `reusableInstance` renders `{children}` — it\n * looks perfect — and destroyed every node dropped into it anyway, because\n * {@link composeReusableComponentNodes} REPLACES the instance's child list\n * with the grafted definition subtree before any renderer sees the tree\n * (`nodes: [prefixId(definition.rootId)]`). Reading the component alone would\n * have cleared it.\n *\n * So the child a node holds is checked where every render surface gets its\n * tree from: after compose. Pure data in, pure data out — no React, no\n * providers, no canvas singleton, and therefore no exemptions.\n */\n\nimport { NODE_ROOT_ID } from '../canvas-manager/canvas-manager'\nimport type { AglynNodeSchema, NodeId } from '../foundation'\nimport { composeLayoutAndScreenNodes } from './compose-layout-nodes'\nimport {\n composeReusableComponentNodes,\n type ReusableComponentTree,\n} from './compose-reusable-components'\n\nconst SUBJECT_ID = 'child-contract-subject'\nconst SENTINEL_ID = 'child-contract-sentinel'\nconst DEFINITION_ID = 'child-contract-definition'\n\ntype Nodes = Record<NodeId, AglynNodeSchema>\n\n/**\n * A minimal screen: root → one node of `componentId` → one sentinel child.\n *\n * `props.refId` is set on every subject, not only on instances: it is what\n * makes the reusable graft actually fire, and a probe that quietly skipped\n * the expansion would report \"children survive\" about a code path it never\n * entered.\n */\nfunction probeScreen(componentId: string): Nodes {\n return {\n [NODE_ROOT_ID]: {\n $id: NODE_ROOT_ID,\n parentId: null,\n componentId: 'div',\n nodes: [SUBJECT_ID],\n },\n [SUBJECT_ID]: {\n $id: SUBJECT_ID,\n parentId: NODE_ROOT_ID,\n componentId,\n props: { refId: DEFINITION_ID },\n nodes: [SENTINEL_ID],\n },\n [SENTINEL_ID]: {\n $id: SENTINEL_ID,\n parentId: SUBJECT_ID,\n componentId: 'muiTypography',\n props: { children: 'sentinel' },\n nodes: [],\n },\n } as unknown as Nodes\n}\n\n/** A one-node definition for the graft to resolve `refId` against. */\nfunction probeDefinition(): ReusableComponentTree {\n return {\n rootId: 'def-root',\n nodes: {\n 'def-root': {\n $id: 'def-root',\n parentId: null,\n componentId: 'muiStack',\n nodes: [],\n },\n } as unknown as ReusableComponentTree['nodes'],\n }\n}\n\n/** A layout whose slot the screen's top-level nodes are grafted into. */\nfunction probeLayout(): Nodes {\n return {\n [NODE_ROOT_ID]: {\n $id: NODE_ROOT_ID,\n parentId: null,\n componentId: 'div',\n nodes: ['slot'],\n },\n slot: {\n $id: 'slot',\n parentId: NODE_ROOT_ID,\n componentId: 'layoutSlot',\n nodes: [],\n },\n } as unknown as Nodes\n}\n\n/** Whether the sentinel is still in the map AND still the subject's child. */\nfunction sentinelSurvives(composed: Nodes): boolean {\n if (!composed?.[SENTINEL_ID]) return false\n const children = composed[SUBJECT_ID]?.nodes\n return Array.isArray(children) && (children as NodeId[]).includes(SENTINEL_ID)\n}\n\n/**\n * Every component id whose children a compose pass destroys, as\n * reviewer-facing lines (empty = the contract holds).\n *\n * Call it with the ids the editor accepts a drop into\n * (`listAcceptingComponentIds`), which is exactly the set for which \"the\n * author put a node here\" must survive to a render surface. Ids the editor\n * already refuses are not probed — a component that cannot receive a drop is\n * free to rewrite its own child list, which is what `reusableInstance` and\n * `layoutSlot` do for a living.\n */\nexport function auditComposeChildSurvival(\n acceptingComponentIds: readonly string[],\n): string[] {\n const problems: string[] = []\n for (const componentId of acceptingComponentIds) {\n if (!componentId) continue\n\n const grafted = composeReusableComponentNodes(probeScreen(componentId), {\n [DEFINITION_ID]: probeDefinition(),\n }) as Nodes\n if (!sentinelSurvives(grafted)) {\n problems.push(\n `${componentId} accepts a drop, but composeReusableComponentNodes ` +\n 'destroys the node dropped into it — the author would see it in ' +\n 'the hierarchy and the published page would not have it. Declare ' +\n 'flags.dropping: FEATURE_FLAG.DISABLED, or stop rewriting its ' +\n 'child list (AGL-1389)',\n )\n }\n\n const laidOut = composeLayoutAndScreenNodes(\n probeLayout(),\n probeScreen(componentId),\n ) as Nodes\n if (!sentinelSurvives(laidOut)) {\n problems.push(\n `${componentId} accepts a drop, but composeLayoutAndScreenNodes ` +\n 'destroys the node dropped into it — the author would see it in ' +\n 'the hierarchy and the published page would not have it. Declare ' +\n 'flags.dropping: FEATURE_FLAG.DISABLED, or stop rewriting its ' +\n 'child list (AGL-1389)',\n )\n }\n }\n return problems.sort()\n}\n"],"names":["NODE_ROOT_ID","composeLayoutAndScreenNodes","composeReusableComponentNodes","SUBJECT_ID","SENTINEL_ID","DEFINITION_ID","probeScreen","componentId","$id","parentId","nodes","props","refId","children","probeDefinition","rootId","probeLayout","slot","sentinelSurvives","composed","Array","isArray","includes","auditComposeChildSurvival","acceptingComponentIds","problems","grafted","push","laidOut","sort"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;CAcC,GAED,SAASA,YAAY,QAAQ,sCAAkC;AAE/D,SAASC,2BAA2B,QAAQ,4BAAwB;AACpE,SACEC,6BAA6B,QAExB,mCAA+B;AAEtC,MAAMC,aAAa;AACnB,MAAMC,cAAc;AACpB,MAAMC,gBAAgB;AAItB;;;;;;;CAOC,GACD,SAASC,YAAYC,WAAmB;IACtC,OAAO;QACL,CAACP,aAAa,EAAE;YACdQ,KAAKR;YACLS,UAAU;YACVF,aAAa;YACbG,OAAO;gBAACP;aAAW;QACrB;QACA,CAACA,WAAW,EAAE;YACZK,KAAKL;YACLM,UAAUT;YACVO;YACAI,OAAO;gBAAEC,OAAOP;YAAc;YAC9BK,OAAO;gBAACN;aAAY;QACtB;QACA,CAACA,YAAY,EAAE;YACbI,KAAKJ;YACLK,UAAUN;YACVI,aAAa;YACbI,OAAO;gBAAEE,UAAU;YAAW;YAC9BH,OAAO,EAAE;QACX;IACF;AACF;AAEA,oEAAoE,GACpE,SAASI;IACP,OAAO;QACLC,QAAQ;QACRL,OAAO;YACL,YAAY;gBACVF,KAAK;gBACLC,UAAU;gBACVF,aAAa;gBACbG,OAAO,EAAE;YACX;QACF;IACF;AACF;AAEA,uEAAuE,GACvE,SAASM;IACP,OAAO;QACL,CAAChB,aAAa,EAAE;YACdQ,KAAKR;YACLS,UAAU;YACVF,aAAa;YACbG,OAAO;gBAAC;aAAO;QACjB;QACAO,MAAM;YACJT,KAAK;YACLC,UAAUT;YACVO,aAAa;YACbG,OAAO,EAAE;QACX;IACF;AACF;AAEA,4EAA4E,GAC5E,SAASQ,iBAAiBC,QAAe;QAEtBA;IADjB,IAAI,EAACA,4BAAAA,QAAU,CAACf,YAAY,GAAE,OAAO;IACrC,MAAMS,YAAWM,uBAAAA,QAAQ,CAAChB,WAAW,qBAApBgB,qBAAsBT,KAAK;IAC5C,OAAOU,MAAMC,OAAO,CAACR,aAAa,AAACA,SAAsBS,QAAQ,CAAClB;AACpE;AAEA;;;;;;;;;;CAUC,GACD,OAAO,SAASmB,0BACdC,qBAAwC;IAExC,MAAMC,WAAqB,EAAE;IAC7B,KAAK,MAAMlB,eAAeiB,sBAAuB;QAC/C,IAAI,CAACjB,aAAa;QAElB,MAAMmB,UAAUxB,8BAA8BI,YAAYC,cAAc;YACtE,CAACF,cAAc,EAAES;QACnB;QACA,IAAI,CAACI,iBAAiBQ,UAAU;YAC9BD,SAASE,IAAI,CACX,GAAGpB,YAAY,mDAAmD,CAAC,GACjE,oEACA,qEACA,kEACA;QAEN;QAEA,MAAMqB,UAAU3B,4BACde,eACAV,YAAYC;QAEd,IAAI,CAACW,iBAAiBU,UAAU;YAC9BH,SAASE,IAAI,CACX,GAAGpB,YAAY,iDAAiD,CAAC,GAC/D,oEACA,qEACA,kEACA;QAEN;IACF;IACA,OAAOkB,SAASI,IAAI;AACtB"}
|
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* The drop/render agreement (AGL-1389).
|
|
19
|
+
*
|
|
20
|
+
* A component that accepts a drop in the hierarchy and discards the node at
|
|
21
|
+
* render is silent data loss: the author sees the node in the tree, the
|
|
22
|
+
* published page does not have it, and nothing warns — so the work reads as
|
|
23
|
+
* *never done* rather than broken. Three /press screenshots shipped in a page
|
|
24
|
+
* payload for weeks that way (AGL-1388).
|
|
25
|
+
*
|
|
26
|
+
* That was found by reading all 82 registered schemas by hand, one at a time.
|
|
27
|
+
* This module is the repeatable half: the predicate the editor actually gates
|
|
28
|
+
* drops on, plus an audit that turns "someone added a component and never
|
|
29
|
+
* thought about children" into a red test.
|
|
30
|
+
*
|
|
31
|
+
* Deliberately NOT a render sweep. Rendering every schema with a sentinel
|
|
32
|
+
* child fails for components that legitimately hide children behind state
|
|
33
|
+
* (a collapsed Accordion, a closed Drawer, a `lazyPanels` TabPanel) and for
|
|
34
|
+
* every one needing a provider or the canvas singleton — so it would need an
|
|
35
|
+
* exemption list, and an exemption list that grows silently is worth less
|
|
36
|
+
* than no test. See {@link auditChildContract} for what is enforced instead.
|
|
37
|
+
*/
|
|
38
|
+
import { FEATURE_FLAG } from '../foundation/constants/shared';
|
|
39
|
+
/**
|
|
40
|
+
* The slice of a component schema this contract reads. Structural on purpose:
|
|
41
|
+
* `ComponentSchema` (types/nodes) and `AglynComponentSchema` (foundation) are
|
|
42
|
+
* two spellings of the same thing and bundles are typed with both.
|
|
43
|
+
*/
|
|
44
|
+
export interface ChildContractSchema {
|
|
45
|
+
$id?: string;
|
|
46
|
+
displayName?: string;
|
|
47
|
+
restrictChildren?: unknown;
|
|
48
|
+
flags?: {
|
|
49
|
+
dropping?: FEATURE_FLAG;
|
|
50
|
+
selfClosing?: FEATURE_FLAG;
|
|
51
|
+
textEditable?: FEATURE_FLAG;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/** One registry entry — matches `MUI_BUNDLE` / `FeatureBundleEntry`. */
|
|
55
|
+
export interface ChildContractEntry {
|
|
56
|
+
schema: ChildContractSchema;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* True only when a feature flag is explicitly present and carries the ENABLED
|
|
60
|
+
* bit. An absent (undefined) flag reads as false: components that declare no
|
|
61
|
+
* flags at all (Stack, Section, the document root) must not be mistaken for
|
|
62
|
+
* self-closing leaves.
|
|
63
|
+
*/
|
|
64
|
+
export declare function isLeafFlagEnabled(flag?: FEATURE_FLAG): boolean;
|
|
65
|
+
/**
|
|
66
|
+
* The mirror, for the flags whose interesting value is the switched-OFF one.
|
|
67
|
+
* An absent flag reads as false, so a component that declares no flags keeps
|
|
68
|
+
* the permissive default.
|
|
69
|
+
*/
|
|
70
|
+
export declare function isFlagDisabled(flag?: FEATURE_FLAG): boolean;
|
|
71
|
+
/**
|
|
72
|
+
* Whether the editor will let a node be dropped into a node of this component
|
|
73
|
+
* — the ONE rule every author-facing entry point shares (the Insert menu and
|
|
74
|
+
* paste via `resolveInsertTarget`, canvas drag-and-drop via the dnd manager's
|
|
75
|
+
* `computedDrop`, and the drop indicator), read through
|
|
76
|
+
* `CanvasManager.nodeAcceptsChildren`.
|
|
77
|
+
*
|
|
78
|
+
* Four ways a schema declares it has nowhere to put a dropped node:
|
|
79
|
+
*
|
|
80
|
+
* - `flags.selfClosing` — an image, an icon, a divider.
|
|
81
|
+
* - `flags.textEditable` — the component renders `children` as editable text,
|
|
82
|
+
* so an element dropped in would be destroyed by the next text edit.
|
|
83
|
+
* - `flags.dropping: DISABLED` — neither of the above, but still no slot
|
|
84
|
+
* (AGL-1388): Markdown renders its parsed `content` prop and nothing else;
|
|
85
|
+
* a Reusable Component instance has its child list REPLACED by the grafted
|
|
86
|
+
* definition at compose time; List Item Text hands `children` to MUI, which
|
|
87
|
+
* reads it only as a fallback for a missing `primary`.
|
|
88
|
+
* - an empty `restrictChildren` allowlist — see above.
|
|
89
|
+
*
|
|
90
|
+
* Anything else accepts children, which is why the audit below exists: the
|
|
91
|
+
* permissive answer is the DEFAULT, so a component nobody thought about is
|
|
92
|
+
* indistinguishable from a container until something asks.
|
|
93
|
+
*
|
|
94
|
+
* An unregistered / missing schema accepts children, matching the canvas.
|
|
95
|
+
*/
|
|
96
|
+
export declare function schemaAcceptsChildren(schema: ChildContractSchema | null | undefined): boolean;
|
|
97
|
+
/**
|
|
98
|
+
* A bundle's declared containers: the component ids whose author has
|
|
99
|
+
* confirmed the component renders the nodes dropped into it.
|
|
100
|
+
*
|
|
101
|
+
* Not an exemption list — the inverse. Exemptions are the entries a guard
|
|
102
|
+
* agrees to skip, so they accumulate quietly and the guard shrinks. This list
|
|
103
|
+
* is the set the guard is ABOUT: a new component defaults to accepting
|
|
104
|
+
* children, so it lands here or the test is red, and the only way to make it
|
|
105
|
+
* green is to answer the question ("does it render `children`?") one way or
|
|
106
|
+
* the other. Nothing can be added by accident.
|
|
107
|
+
*/
|
|
108
|
+
export type DeclaredContainers = readonly string[];
|
|
109
|
+
/**
|
|
110
|
+
* Every disagreement between a bundle's schemas and its declared container
|
|
111
|
+
* list, as reviewer-facing lines (empty = the contract holds).
|
|
112
|
+
*
|
|
113
|
+
* Both directions matter:
|
|
114
|
+
*
|
|
115
|
+
* - An undeclared container is the AGL-1388 shape arriving again — a
|
|
116
|
+
* component the editor will accept a drop into that nobody has confirmed
|
|
117
|
+
* renders one.
|
|
118
|
+
* - A declared id that no longer accepts a drop, or is no longer registered,
|
|
119
|
+
* is a stale entry. Left alone the list would slowly become a wish, and a
|
|
120
|
+
* guard checked against a wish passes over anything.
|
|
121
|
+
*
|
|
122
|
+
* Returns strings rather than throwing so the caller is a one-line
|
|
123
|
+
* `expect(...).toEqual([])` whose failure output names every offender at once
|
|
124
|
+
* — the whole point being that the next person does not repeat the 82-schema
|
|
125
|
+
* hand audit.
|
|
126
|
+
*/
|
|
127
|
+
export declare function auditChildContract(entries: readonly ChildContractEntry[], declared: DeclaredContainers): string[];
|
|
128
|
+
/** The ids in a bundle the editor will accept a drop into, sorted. */
|
|
129
|
+
export declare function listAcceptingComponentIds(entries: readonly ChildContractEntry[]): string[];
|
|
@@ -0,0 +1,153 @@
|
|
|
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 drop/render agreement (AGL-1389).
|
|
18
|
+
*
|
|
19
|
+
* A component that accepts a drop in the hierarchy and discards the node at
|
|
20
|
+
* render is silent data loss: the author sees the node in the tree, the
|
|
21
|
+
* published page does not have it, and nothing warns — so the work reads as
|
|
22
|
+
* *never done* rather than broken. Three /press screenshots shipped in a page
|
|
23
|
+
* payload for weeks that way (AGL-1388).
|
|
24
|
+
*
|
|
25
|
+
* That was found by reading all 82 registered schemas by hand, one at a time.
|
|
26
|
+
* This module is the repeatable half: the predicate the editor actually gates
|
|
27
|
+
* drops on, plus an audit that turns "someone added a component and never
|
|
28
|
+
* thought about children" into a red test.
|
|
29
|
+
*
|
|
30
|
+
* Deliberately NOT a render sweep. Rendering every schema with a sentinel
|
|
31
|
+
* child fails for components that legitimately hide children behind state
|
|
32
|
+
* (a collapsed Accordion, a closed Drawer, a `lazyPanels` TabPanel) and for
|
|
33
|
+
* every one needing a provider or the canvas singleton — so it would need an
|
|
34
|
+
* exemption list, and an exemption list that grows silently is worth less
|
|
35
|
+
* than no test. See {@link auditChildContract} for what is enforced instead.
|
|
36
|
+
*/ import { FEATURE_FLAG } from "../foundation/constants/shared.js";
|
|
37
|
+
/**
|
|
38
|
+
* True only when a feature flag is explicitly present and carries the ENABLED
|
|
39
|
+
* bit. An absent (undefined) flag reads as false: components that declare no
|
|
40
|
+
* flags at all (Stack, Section, the document root) must not be mistaken for
|
|
41
|
+
* self-closing leaves.
|
|
42
|
+
*/ export function isLeafFlagEnabled(flag) {
|
|
43
|
+
return typeof flag === 'number' && (flag & FEATURE_FLAG.ENABLED) !== 0;
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* The mirror, for the flags whose interesting value is the switched-OFF one.
|
|
47
|
+
* An absent flag reads as false, so a component that declares no flags keeps
|
|
48
|
+
* the permissive default.
|
|
49
|
+
*/ export function isFlagDisabled(flag) {
|
|
50
|
+
return typeof flag === 'number' && (flag & FEATURE_FLAG.DISABLED) !== 0;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A `restrictChildren` that allows NOTHING — `[LIMIT_TO, { components: [] }]`,
|
|
54
|
+
* the Layout Slot's spelling of "my children come from somewhere else".
|
|
55
|
+
*
|
|
56
|
+
* Read here as a fourth way to say "no canvas child slot", alongside the three
|
|
57
|
+
* flags: the dnd manager's `confirmValidLinealRelationship` already refuses
|
|
58
|
+
* every candidate against an empty allowlist, so a schema that says this and
|
|
59
|
+
* nothing else was already unreachable by drop — the hierarchy just hadn't
|
|
60
|
+
* been told. Deliberately narrow: an empty DISALLOW list forbids nothing, and
|
|
61
|
+
* an allowlist naming plugins (rather than components) still admits those.
|
|
62
|
+
*/ function restrictsChildrenToNothing(restrict) {
|
|
63
|
+
if (!Array.isArray(restrict) || restrict.length < 2) return false;
|
|
64
|
+
const [directive, definition] = restrict;
|
|
65
|
+
if (directive !== 'limitedTo') return false;
|
|
66
|
+
if (Array.isArray(definition)) return definition.length === 0;
|
|
67
|
+
if (!definition || typeof definition !== 'object') return false;
|
|
68
|
+
const { components, plugins } = definition;
|
|
69
|
+
if (Array.isArray(plugins) && plugins.length > 0) return false;
|
|
70
|
+
return Array.isArray(components) && components.length === 0;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Whether the editor will let a node be dropped into a node of this component
|
|
74
|
+
* — the ONE rule every author-facing entry point shares (the Insert menu and
|
|
75
|
+
* paste via `resolveInsertTarget`, canvas drag-and-drop via the dnd manager's
|
|
76
|
+
* `computedDrop`, and the drop indicator), read through
|
|
77
|
+
* `CanvasManager.nodeAcceptsChildren`.
|
|
78
|
+
*
|
|
79
|
+
* Four ways a schema declares it has nowhere to put a dropped node:
|
|
80
|
+
*
|
|
81
|
+
* - `flags.selfClosing` — an image, an icon, a divider.
|
|
82
|
+
* - `flags.textEditable` — the component renders `children` as editable text,
|
|
83
|
+
* so an element dropped in would be destroyed by the next text edit.
|
|
84
|
+
* - `flags.dropping: DISABLED` — neither of the above, but still no slot
|
|
85
|
+
* (AGL-1388): Markdown renders its parsed `content` prop and nothing else;
|
|
86
|
+
* a Reusable Component instance has its child list REPLACED by the grafted
|
|
87
|
+
* definition at compose time; List Item Text hands `children` to MUI, which
|
|
88
|
+
* reads it only as a fallback for a missing `primary`.
|
|
89
|
+
* - an empty `restrictChildren` allowlist — see above.
|
|
90
|
+
*
|
|
91
|
+
* Anything else accepts children, which is why the audit below exists: the
|
|
92
|
+
* permissive answer is the DEFAULT, so a component nobody thought about is
|
|
93
|
+
* indistinguishable from a container until something asks.
|
|
94
|
+
*
|
|
95
|
+
* An unregistered / missing schema accepts children, matching the canvas.
|
|
96
|
+
*/ export function schemaAcceptsChildren(schema) {
|
|
97
|
+
if (!schema) return true;
|
|
98
|
+
const flags = schema.flags;
|
|
99
|
+
if (isFlagDisabled(flags == null ? void 0 : flags.dropping)) return false;
|
|
100
|
+
if (isLeafFlagEnabled(flags == null ? void 0 : flags.selfClosing)) return false;
|
|
101
|
+
if (isLeafFlagEnabled(flags == null ? void 0 : flags.textEditable)) return false;
|
|
102
|
+
return !restrictsChildrenToNothing(schema.restrictChildren);
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Every disagreement between a bundle's schemas and its declared container
|
|
106
|
+
* list, as reviewer-facing lines (empty = the contract holds).
|
|
107
|
+
*
|
|
108
|
+
* Both directions matter:
|
|
109
|
+
*
|
|
110
|
+
* - An undeclared container is the AGL-1388 shape arriving again — a
|
|
111
|
+
* component the editor will accept a drop into that nobody has confirmed
|
|
112
|
+
* renders one.
|
|
113
|
+
* - A declared id that no longer accepts a drop, or is no longer registered,
|
|
114
|
+
* is a stale entry. Left alone the list would slowly become a wish, and a
|
|
115
|
+
* guard checked against a wish passes over anything.
|
|
116
|
+
*
|
|
117
|
+
* Returns strings rather than throwing so the caller is a one-line
|
|
118
|
+
* `expect(...).toEqual([])` whose failure output names every offender at once
|
|
119
|
+
* — the whole point being that the next person does not repeat the 82-schema
|
|
120
|
+
* hand audit.
|
|
121
|
+
*/ export function auditChildContract(entries, declared) {
|
|
122
|
+
const problems = [];
|
|
123
|
+
const declaredSet = new Set(declared);
|
|
124
|
+
const registered = new Set();
|
|
125
|
+
for (const entry of entries){
|
|
126
|
+
const schema = entry == null ? void 0 : entry.schema;
|
|
127
|
+
const id = schema == null ? void 0 : schema.$id;
|
|
128
|
+
if (!id) {
|
|
129
|
+
var _ref;
|
|
130
|
+
problems.push(`a schema in this bundle has no $id (${(_ref = schema == null ? void 0 : schema.displayName) != null ? _ref : 'unnamed'}) — it cannot be held to the drop/render agreement`);
|
|
131
|
+
continue;
|
|
132
|
+
}
|
|
133
|
+
registered.add(id);
|
|
134
|
+
const accepts = schemaAcceptsChildren(schema);
|
|
135
|
+
if (accepts && !declaredSet.has(id)) {
|
|
136
|
+
problems.push(`${id} accepts a drop but is not a declared container — either it ` + 'renders its children (add it to the list) or it does not, and ' + 'then it must SAY so: flags.selfClosing, flags.textEditable, ' + 'flags.dropping: FEATURE_FLAG.DISABLED, or an empty ' + 'restrictChildren allowlist (AGL-1389)');
|
|
137
|
+
}
|
|
138
|
+
if (!accepts && declaredSet.has(id)) {
|
|
139
|
+
problems.push(`${id} is a declared container but the editor now refuses drops ` + 'into it — drop it from the list, or remove whatever flag closed ' + 'it (AGL-1389)');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
for (const id of declaredSet){
|
|
143
|
+
if (!registered.has(id)) {
|
|
144
|
+
problems.push(`${id} is a declared container but is not registered in this ` + 'bundle — remove the stale entry (AGL-1389)');
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
return problems.sort();
|
|
148
|
+
}
|
|
149
|
+
/** The ids in a bundle the editor will accept a drop into, sorted. */ export function listAcceptingComponentIds(entries) {
|
|
150
|
+
return entries.filter((entry)=>schemaAcceptsChildren(entry == null ? void 0 : entry.schema)).map((entry)=>entry.schema.$id).filter(Boolean).sort();
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
//# sourceMappingURL=child-contract.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/child-contract.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 drop/render agreement (AGL-1389).\n *\n * A component that accepts a drop in the hierarchy and discards the node at\n * render is silent data loss: the author sees the node in the tree, the\n * published page does not have it, and nothing warns — so the work reads as\n * *never done* rather than broken. Three /press screenshots shipped in a page\n * payload for weeks that way (AGL-1388).\n *\n * That was found by reading all 82 registered schemas by hand, one at a time.\n * This module is the repeatable half: the predicate the editor actually gates\n * drops on, plus an audit that turns \"someone added a component and never\n * thought about children\" into a red test.\n *\n * Deliberately NOT a render sweep. Rendering every schema with a sentinel\n * child fails for components that legitimately hide children behind state\n * (a collapsed Accordion, a closed Drawer, a `lazyPanels` TabPanel) and for\n * every one needing a provider or the canvas singleton — so it would need an\n * exemption list, and an exemption list that grows silently is worth less\n * than no test. See {@link auditChildContract} for what is enforced instead.\n */\n\nimport { FEATURE_FLAG } from '../foundation/constants/shared'\n\n/**\n * The slice of a component schema this contract reads. Structural on purpose:\n * `ComponentSchema` (types/nodes) and `AglynComponentSchema` (foundation) are\n * two spellings of the same thing and bundles are typed with both.\n */\nexport interface ChildContractSchema {\n $id?: string\n displayName?: string\n restrictChildren?: unknown\n flags?: {\n dropping?: FEATURE_FLAG\n selfClosing?: FEATURE_FLAG\n textEditable?: FEATURE_FLAG\n }\n}\n\n/** One registry entry — matches `MUI_BUNDLE` / `FeatureBundleEntry`. */\nexport interface ChildContractEntry {\n schema: ChildContractSchema\n}\n\n/**\n * True only when a feature flag is explicitly present and carries the ENABLED\n * bit. An absent (undefined) flag reads as false: components that declare no\n * flags at all (Stack, Section, the document root) must not be mistaken for\n * self-closing leaves.\n */\nexport function isLeafFlagEnabled(flag?: FEATURE_FLAG): boolean {\n return typeof flag === 'number' && (flag & FEATURE_FLAG.ENABLED) !== 0\n}\n\n/**\n * The mirror, for the flags whose interesting value is the switched-OFF one.\n * An absent flag reads as false, so a component that declares no flags keeps\n * the permissive default.\n */\nexport function isFlagDisabled(flag?: FEATURE_FLAG): boolean {\n return typeof flag === 'number' && (flag & FEATURE_FLAG.DISABLED) !== 0\n}\n\n/**\n * A `restrictChildren` that allows NOTHING — `[LIMIT_TO, { components: [] }]`,\n * the Layout Slot's spelling of \"my children come from somewhere else\".\n *\n * Read here as a fourth way to say \"no canvas child slot\", alongside the three\n * flags: the dnd manager's `confirmValidLinealRelationship` already refuses\n * every candidate against an empty allowlist, so a schema that says this and\n * nothing else was already unreachable by drop — the hierarchy just hadn't\n * been told. Deliberately narrow: an empty DISALLOW list forbids nothing, and\n * an allowlist naming plugins (rather than components) still admits those.\n */\nfunction restrictsChildrenToNothing(restrict: unknown): boolean {\n if (!Array.isArray(restrict) || restrict.length < 2) return false\n const [directive, definition] = restrict as [unknown, unknown]\n if (directive !== 'limitedTo') return false\n if (Array.isArray(definition)) return definition.length === 0\n if (!definition || typeof definition !== 'object') return false\n const { components, plugins } = definition as {\n components?: unknown\n plugins?: unknown\n }\n if (Array.isArray(plugins) && plugins.length > 0) return false\n return Array.isArray(components) && components.length === 0\n}\n\n/**\n * Whether the editor will let a node be dropped into a node of this component\n * — the ONE rule every author-facing entry point shares (the Insert menu and\n * paste via `resolveInsertTarget`, canvas drag-and-drop via the dnd manager's\n * `computedDrop`, and the drop indicator), read through\n * `CanvasManager.nodeAcceptsChildren`.\n *\n * Four ways a schema declares it has nowhere to put a dropped node:\n *\n * - `flags.selfClosing` — an image, an icon, a divider.\n * - `flags.textEditable` — the component renders `children` as editable text,\n * so an element dropped in would be destroyed by the next text edit.\n * - `flags.dropping: DISABLED` — neither of the above, but still no slot\n * (AGL-1388): Markdown renders its parsed `content` prop and nothing else;\n * a Reusable Component instance has its child list REPLACED by the grafted\n * definition at compose time; List Item Text hands `children` to MUI, which\n * reads it only as a fallback for a missing `primary`.\n * - an empty `restrictChildren` allowlist — see above.\n *\n * Anything else accepts children, which is why the audit below exists: the\n * permissive answer is the DEFAULT, so a component nobody thought about is\n * indistinguishable from a container until something asks.\n *\n * An unregistered / missing schema accepts children, matching the canvas.\n */\nexport function schemaAcceptsChildren(\n schema: ChildContractSchema | null | undefined,\n): boolean {\n if (!schema) return true\n const flags = schema.flags\n if (isFlagDisabled(flags?.dropping)) return false\n if (isLeafFlagEnabled(flags?.selfClosing)) return false\n if (isLeafFlagEnabled(flags?.textEditable)) return false\n return !restrictsChildrenToNothing(schema.restrictChildren)\n}\n\n/**\n * A bundle's declared containers: the component ids whose author has\n * confirmed the component renders the nodes dropped into it.\n *\n * Not an exemption list — the inverse. Exemptions are the entries a guard\n * agrees to skip, so they accumulate quietly and the guard shrinks. This list\n * is the set the guard is ABOUT: a new component defaults to accepting\n * children, so it lands here or the test is red, and the only way to make it\n * green is to answer the question (\"does it render `children`?\") one way or\n * the other. Nothing can be added by accident.\n */\nexport type DeclaredContainers = readonly string[]\n\n/**\n * Every disagreement between a bundle's schemas and its declared container\n * list, as reviewer-facing lines (empty = the contract holds).\n *\n * Both directions matter:\n *\n * - An undeclared container is the AGL-1388 shape arriving again — a\n * component the editor will accept a drop into that nobody has confirmed\n * renders one.\n * - A declared id that no longer accepts a drop, or is no longer registered,\n * is a stale entry. Left alone the list would slowly become a wish, and a\n * guard checked against a wish passes over anything.\n *\n * Returns strings rather than throwing so the caller is a one-line\n * `expect(...).toEqual([])` whose failure output names every offender at once\n * — the whole point being that the next person does not repeat the 82-schema\n * hand audit.\n */\nexport function auditChildContract(\n entries: readonly ChildContractEntry[],\n declared: DeclaredContainers,\n): string[] {\n const problems: string[] = []\n const declaredSet = new Set(declared)\n const registered = new Set<string>()\n\n for (const entry of entries) {\n const schema = entry?.schema\n const id = schema?.$id\n if (!id) {\n problems.push(\n `a schema in this bundle has no $id (${\n schema?.displayName ?? 'unnamed'\n }) — it cannot be held to the drop/render agreement`,\n )\n continue\n }\n registered.add(id)\n const accepts = schemaAcceptsChildren(schema)\n if (accepts && !declaredSet.has(id)) {\n problems.push(\n `${id} accepts a drop but is not a declared container — either it ` +\n 'renders its children (add it to the list) or it does not, and ' +\n 'then it must SAY so: flags.selfClosing, flags.textEditable, ' +\n 'flags.dropping: FEATURE_FLAG.DISABLED, or an empty ' +\n 'restrictChildren allowlist (AGL-1389)',\n )\n }\n if (!accepts && declaredSet.has(id)) {\n problems.push(\n `${id} is a declared container but the editor now refuses drops ` +\n 'into it — drop it from the list, or remove whatever flag closed ' +\n 'it (AGL-1389)',\n )\n }\n }\n\n for (const id of declaredSet) {\n if (!registered.has(id)) {\n problems.push(\n `${id} is a declared container but is not registered in this ` +\n 'bundle — remove the stale entry (AGL-1389)',\n )\n }\n }\n\n return problems.sort()\n}\n\n/** The ids in a bundle the editor will accept a drop into, sorted. */\nexport function listAcceptingComponentIds(\n entries: readonly ChildContractEntry[],\n): string[] {\n return entries\n .filter((entry) => schemaAcceptsChildren(entry?.schema))\n .map((entry) => entry.schema.$id as string)\n .filter(Boolean)\n .sort()\n}\n"],"names":["FEATURE_FLAG","isLeafFlagEnabled","flag","ENABLED","isFlagDisabled","DISABLED","restrictsChildrenToNothing","restrict","Array","isArray","length","directive","definition","components","plugins","schemaAcceptsChildren","schema","flags","dropping","selfClosing","textEditable","restrictChildren","auditChildContract","entries","declared","problems","declaredSet","Set","registered","entry","id","$id","push","displayName","add","accepts","has","sort","listAcceptingComponentIds","filter","map","Boolean"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;;;;;CAoBC,GAED,SAASA,YAAY,QAAQ,oCAAgC;AAuB7D;;;;;CAKC,GACD,OAAO,SAASC,kBAAkBC,IAAmB;IACnD,OAAO,OAAOA,SAAS,YAAY,AAACA,CAAAA,OAAOF,aAAaG,OAAO,AAAD,MAAO;AACvE;AAEA;;;;CAIC,GACD,OAAO,SAASC,eAAeF,IAAmB;IAChD,OAAO,OAAOA,SAAS,YAAY,AAACA,CAAAA,OAAOF,aAAaK,QAAQ,AAAD,MAAO;AACxE;AAEA;;;;;;;;;;CAUC,GACD,SAASC,2BAA2BC,QAAiB;IACnD,IAAI,CAACC,MAAMC,OAAO,CAACF,aAAaA,SAASG,MAAM,GAAG,GAAG,OAAO;IAC5D,MAAM,CAACC,WAAWC,WAAW,GAAGL;IAChC,IAAII,cAAc,aAAa,OAAO;IACtC,IAAIH,MAAMC,OAAO,CAACG,aAAa,OAAOA,WAAWF,MAAM,KAAK;IAC5D,IAAI,CAACE,cAAc,OAAOA,eAAe,UAAU,OAAO;IAC1D,MAAM,EAAEC,UAAU,EAAEC,OAAO,EAAE,GAAGF;IAIhC,IAAIJ,MAAMC,OAAO,CAACK,YAAYA,QAAQJ,MAAM,GAAG,GAAG,OAAO;IACzD,OAAOF,MAAMC,OAAO,CAACI,eAAeA,WAAWH,MAAM,KAAK;AAC5D;AAEA;;;;;;;;;;;;;;;;;;;;;;;;CAwBC,GACD,OAAO,SAASK,sBACdC,MAA8C;IAE9C,IAAI,CAACA,QAAQ,OAAO;IACpB,MAAMC,QAAQD,OAAOC,KAAK;IAC1B,IAAIb,eAAea,yBAAAA,MAAOC,QAAQ,GAAG,OAAO;IAC5C,IAAIjB,kBAAkBgB,yBAAAA,MAAOE,WAAW,GAAG,OAAO;IAClD,IAAIlB,kBAAkBgB,yBAAAA,MAAOG,YAAY,GAAG,OAAO;IACnD,OAAO,CAACd,2BAA2BU,OAAOK,gBAAgB;AAC5D;AAeA;;;;;;;;;;;;;;;;;CAiBC,GACD,OAAO,SAASC,mBACdC,OAAsC,EACtCC,QAA4B;IAE5B,MAAMC,WAAqB,EAAE;IAC7B,MAAMC,cAAc,IAAIC,IAAIH;IAC5B,MAAMI,aAAa,IAAID;IAEvB,KAAK,MAAME,SAASN,QAAS;QAC3B,MAAMP,SAASa,yBAAAA,MAAOb,MAAM;QAC5B,MAAMc,KAAKd,0BAAAA,OAAQe,GAAG;QACtB,IAAI,CAACD,IAAI;;YACPL,SAASO,IAAI,CACX,CAAC,oCAAoC,UACnChB,0BAAAA,OAAQiB,WAAW,mBAAI,UACxB,kDAAkD,CAAC;YAEtD;QACF;QACAL,WAAWM,GAAG,CAACJ;QACf,MAAMK,UAAUpB,sBAAsBC;QACtC,IAAImB,WAAW,CAACT,YAAYU,GAAG,CAACN,KAAK;YACnCL,SAASO,IAAI,CACX,GAAGF,GAAG,4DAA4D,CAAC,GACjE,mEACA,iEACA,wDACA;QAEN;QACA,IAAI,CAACK,WAAWT,YAAYU,GAAG,CAACN,KAAK;YACnCL,SAASO,IAAI,CACX,GAAGF,GAAG,0DAA0D,CAAC,GAC/D,qEACA;QAEN;IACF;IAEA,KAAK,MAAMA,MAAMJ,YAAa;QAC5B,IAAI,CAACE,WAAWQ,GAAG,CAACN,KAAK;YACvBL,SAASO,IAAI,CACX,GAAGF,GAAG,uDAAuD,CAAC,GAC5D;QAEN;IACF;IAEA,OAAOL,SAASY,IAAI;AACtB;AAEA,oEAAoE,GACpE,OAAO,SAASC,0BACdf,OAAsC;IAEtC,OAAOA,QACJgB,MAAM,CAAC,CAACV,QAAUd,sBAAsBc,yBAAAA,MAAOb,MAAM,GACrDwB,GAAG,CAAC,CAACX,QAAUA,MAAMb,MAAM,CAACe,GAAG,EAC/BQ,MAAM,CAACE,SACPJ,IAAI;AACT"}
|
|
@@ -0,0 +1,113 @@
|
|
|
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
|
+
* Whether a collection may be deleted, and what to say when it may not
|
|
19
|
+
* (AGL-1324).
|
|
20
|
+
*
|
|
21
|
+
* A collection could be created and never deleted: "New collection" existed,
|
|
22
|
+
* no delete affordance did anywhere, so a mis-created collection was
|
|
23
|
+
* permanent — a one-way door in an ordinary authoring flow for a no-code
|
|
24
|
+
* product.
|
|
25
|
+
*
|
|
26
|
+
* The delete itself is the easy half; `/api/resources/erase` already
|
|
27
|
+
* recursiveDeletes a collection subtree for the commerce catalog card. This
|
|
28
|
+
* file is the hard half: deciding when it must NOT happen. It is pure and
|
|
29
|
+
* lives beside `collection-kind` / `collection-slug` for the same reason
|
|
30
|
+
* `eraseScopeDenial` lives beside its route — a destructive decision that
|
|
31
|
+
* cannot be unit-tested is the shape of control this project exists to
|
|
32
|
+
* avoid — and because BOTH sides need it: the console dialog to show the
|
|
33
|
+
* blockers before the button is armed, and the route to enforce them.
|
|
34
|
+
*
|
|
35
|
+
* ## Why blocking, not cascading
|
|
36
|
+
*
|
|
37
|
+
* Both blockers refuse. The alternative — delete the collection and take its
|
|
38
|
+
* entries and its published routes with it — makes destroying a live page a
|
|
39
|
+
* side effect of tidying up a list, and no consent given to the second act
|
|
40
|
+
* was given to the first. This repo already settled that argument for
|
|
41
|
+
* account erasure (`userErasureBlockers`): blocking is recoverable, a
|
|
42
|
+
* cascade is not. Emptying a collection is two clicks; un-deleting a
|
|
43
|
+
* published page is a restore from an export.
|
|
44
|
+
*/
|
|
45
|
+
/** What a template binding drives — which public route it publishes. */
|
|
46
|
+
export type CollectionTemplateRole = 'list' | 'entry';
|
|
47
|
+
/** A screen as far as this decision cares: does it exist, and what's it called. */
|
|
48
|
+
export interface CollectionTemplateScreen {
|
|
49
|
+
displayName?: string;
|
|
50
|
+
/**
|
|
51
|
+
* Soft-deleted screens render nothing, so a binding to one is stale and
|
|
52
|
+
* must not block — otherwise deleting a screen makes its collection
|
|
53
|
+
* permanently undeletable, which is the bug this file exists to fix,
|
|
54
|
+
* one level up.
|
|
55
|
+
*/
|
|
56
|
+
deletedAt?: unknown;
|
|
57
|
+
}
|
|
58
|
+
export interface CollectionTemplateBinding {
|
|
59
|
+
role: CollectionTemplateRole;
|
|
60
|
+
screenId: string;
|
|
61
|
+
/** The screen's name; falls back to the id when it has none. */
|
|
62
|
+
screenName: string;
|
|
63
|
+
}
|
|
64
|
+
/** The collection fields that point at a template screen. */
|
|
65
|
+
export interface CollectionTemplateSource {
|
|
66
|
+
listScreenId?: unknown;
|
|
67
|
+
entryScreenId?: unknown;
|
|
68
|
+
/** Superseded AGL-105 pointer; still honoured as the entry fallback. */
|
|
69
|
+
templateScreenId?: unknown;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* The LIVE template bindings on a collection — the screens that would be
|
|
73
|
+
* left publishing an empty route if it were deleted.
|
|
74
|
+
*
|
|
75
|
+
* `screens` is required rather than defaulted because the sole reason a
|
|
76
|
+
* binding is dropped here is that its screen is gone, and an empty map means
|
|
77
|
+
* "every screen is gone". Defaulting it would make the safe-looking call the
|
|
78
|
+
* one that silently answers "nothing depends on this". Callers pass the
|
|
79
|
+
* screens they read: the route fetches exactly the bound ids, the console
|
|
80
|
+
* already holds the host's screen list.
|
|
81
|
+
*
|
|
82
|
+
* Mirrors `resolveCollectionTemplateScreenId` in tenant-runtime: the list
|
|
83
|
+
* route uses `listScreenId` only, the entry route uses `entryScreenId` with
|
|
84
|
+
* `templateScreenId` as the legacy fallback. Deduped by screen id, because
|
|
85
|
+
* one screen serving both routes is one thing to detach, not two.
|
|
86
|
+
*/
|
|
87
|
+
export declare function collectionTemplateBindings(data: CollectionTemplateSource | undefined | null, screens: Readonly<Record<string, CollectionTemplateScreen | undefined>>): CollectionTemplateBinding[];
|
|
88
|
+
/** Why a delete was refused, for callers that need more than the sentence. */
|
|
89
|
+
export type CollectionDeleteBlocker = 'template-bound' | 'has-entries';
|
|
90
|
+
export interface CollectionDeleteInput {
|
|
91
|
+
/** The collection's name, so the message names what it is refusing. */
|
|
92
|
+
displayName: string;
|
|
93
|
+
/** How many entries still live under it. */
|
|
94
|
+
entryCount: number;
|
|
95
|
+
/** Live template bindings — see {@link collectionTemplateBindings}. */
|
|
96
|
+
bindings: readonly CollectionTemplateBinding[];
|
|
97
|
+
}
|
|
98
|
+
export interface CollectionDeleteDenial {
|
|
99
|
+
error: string;
|
|
100
|
+
/** 409: the request is well-formed, the resource's state refuses it. */
|
|
101
|
+
status: 409;
|
|
102
|
+
blockers: CollectionDeleteBlocker[];
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Null when the collection may be deleted; otherwise the response to return.
|
|
106
|
+
*
|
|
107
|
+
* Both blockers are reported at once. Fixing one and being told about the
|
|
108
|
+
* other is two trips through a destructive dialog to learn a fact that was
|
|
109
|
+
* knowable on the first — and the second refusal, arriving after the user
|
|
110
|
+
* has already detached a template, reads as the product changing its mind.
|
|
111
|
+
*/
|
|
112
|
+
export declare function collectionDeleteDenial(input: CollectionDeleteInput): CollectionDeleteDenial | null;
|
|
113
|
+
export default collectionDeleteDenial;
|