@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,121 @@
|
|
|
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
|
+
* A zone a plugin declares, and the props it hands each widget (AGL-3124).
|
|
19
|
+
*
|
|
20
|
+
* `CONSOLE_WIDGET_SLOTS` is the catalog of zones the console SHELL draws, and
|
|
21
|
+
* a slot id has always been an open string, so a plugin could already host a
|
|
22
|
+
* zone of its own. What it could not do is say what that zone HANDS a widget.
|
|
23
|
+
* The props had to be a type, the type had to be somewhere both sides import,
|
|
24
|
+
* and "somewhere both sides import" was read as the core — which is how
|
|
25
|
+
* `plugin-manager/commerce-zone-props.ts` and `plugin-manager/record-zone-props.ts`
|
|
26
|
+
* came to spell out the commerce catalog and the record vocabulary of two
|
|
27
|
+
* named plugins inside the platform.
|
|
28
|
+
*
|
|
29
|
+
* So the declaration moves to the plugin. A plugin defines a token for its
|
|
30
|
+
* zone with {@link definePluginZone}, carrying the props type on the token,
|
|
31
|
+
* and registers it here with a label and the surface it is drawn on. A widget
|
|
32
|
+
* author takes the props type off the token — `PluginZoneProps<typeof ZONE>`
|
|
33
|
+
* — without the core ever naming a product, a deal or a lead.
|
|
34
|
+
*
|
|
35
|
+
* ## Nothing here reaches a published page
|
|
36
|
+
*
|
|
37
|
+
* A zone token is `{ id }` and nothing else: `__props` is a phantom field that
|
|
38
|
+
* never holds a value, so the props type is carried at the type level and
|
|
39
|
+
* erased. That is the same trick the two type-only modules above use, and it
|
|
40
|
+
* is load-bearing rather than tidy — AGL-3082 measured the zone catalog on the
|
|
41
|
+
* published page's static graph, and a declaration that put a plugin's prop
|
|
42
|
+
* SHAPES there would have made every published page carry the console's
|
|
43
|
+
* vocabulary. `plugin-zones.spec.ts` pins the token's own key set so a field
|
|
44
|
+
* added to it later has to be a decision.
|
|
45
|
+
*
|
|
46
|
+
* This module is reached by its own subpath and is deliberately absent from
|
|
47
|
+
* `plugin-manager/index.ts`, for the reason that barrel already states about
|
|
48
|
+
* `plugin-figures`: what a published page does not need, it must not import.
|
|
49
|
+
*
|
|
50
|
+
* ## One zone id, one owner
|
|
51
|
+
*
|
|
52
|
+
* A zone is a position on a page somebody draws. Two plugins declaring the
|
|
53
|
+
* same id would each believe they set what a widget there receives, and the
|
|
54
|
+
* widget author would have no way to tell whose props arrived — so a second
|
|
55
|
+
* plugin's declaration is refused naming both, and the incumbent keeps its
|
|
56
|
+
* zone. The same plugin declaring again — a second surface, a hot reload —
|
|
57
|
+
* replaces its own.
|
|
58
|
+
*/
|
|
59
|
+
/**
|
|
60
|
+
* A zone's identity, with the props it hands a widget carried at the type
|
|
61
|
+
* level. `__props` never holds a value.
|
|
62
|
+
*/
|
|
63
|
+
export interface PluginZone<Props> {
|
|
64
|
+
readonly id: string;
|
|
65
|
+
readonly __props?: Props;
|
|
66
|
+
}
|
|
67
|
+
/** The props a zone hands each widget, read off its token. */
|
|
68
|
+
export type PluginZoneProps<Zone> = Zone extends PluginZone<infer Props> ? Props : never;
|
|
69
|
+
/**
|
|
70
|
+
* A zone token. Pure: it allocates no registration and reads no registry, so
|
|
71
|
+
* a plugin may define one at module scope and register it from its register
|
|
72
|
+
* fn, where the loader's owner marker is set.
|
|
73
|
+
*/
|
|
74
|
+
export declare function definePluginZone<Props>(id: string): PluginZone<Props>;
|
|
75
|
+
/** Where a zone is drawn, which is what decides the gates around it. */
|
|
76
|
+
export type PluginZoneSurface = 'console' | 'besigner' | 'site';
|
|
77
|
+
export interface PluginZoneDeclaration<Props = unknown> {
|
|
78
|
+
zone: PluginZone<Props>;
|
|
79
|
+
/** What the plugin's own manifest and the widget picker call the zone. */
|
|
80
|
+
label: string;
|
|
81
|
+
/** The surface the zone is drawn on. */
|
|
82
|
+
surface: PluginZoneSurface;
|
|
83
|
+
/**
|
|
84
|
+
* What a widget here may do, and what it may not — the sentence a widget
|
|
85
|
+
* author reads before writing one. Every zone in the core catalog carries
|
|
86
|
+
* the same distinction (a widget proposes, the host writes), and a plugin's
|
|
87
|
+
* zone owes its widgets the same statement.
|
|
88
|
+
*/
|
|
89
|
+
description?: string;
|
|
90
|
+
/**
|
|
91
|
+
* How the zone places its widgets. `stack`, the default, is one block of
|
|
92
|
+
* the page: its widgets are cards, spaced, and the block takes no room when
|
|
93
|
+
* nothing in it drew. `bare` adds no element of its own: every widget is one
|
|
94
|
+
* item of a layout the HOST draws — a button in a row of actions, a control
|
|
95
|
+
* beside a form's fields, a dialog that portals out of the page. A wrapper
|
|
96
|
+
* would put every button of a row into one column.
|
|
97
|
+
*/
|
|
98
|
+
layout?: PluginZoneLayout;
|
|
99
|
+
}
|
|
100
|
+
/** See {@link PluginZoneDeclaration.layout}. */
|
|
101
|
+
export type PluginZoneLayout = 'stack' | 'bare';
|
|
102
|
+
/** A declaration with the plugin that made it. */
|
|
103
|
+
export type ResolvedPluginZone = PluginZoneDeclaration<unknown> & {
|
|
104
|
+
pluginId: string;
|
|
105
|
+
};
|
|
106
|
+
export declare const PLUGIN_ZONES: import("./plugin-services").PluginServiceContract<PluginZoneDeclaration<never>>;
|
|
107
|
+
/**
|
|
108
|
+
* Declares a zone the registering plugin hosts. The owner is the loader's
|
|
109
|
+
* marker when a register fn is running, else `options.pluginId`; with neither
|
|
110
|
+
* the registration throws. A zone id another plugin declared throws naming
|
|
111
|
+
* both.
|
|
112
|
+
*/
|
|
113
|
+
export declare function registerPluginZone<Props>(declaration: PluginZoneDeclaration<Props>, options?: {
|
|
114
|
+
pluginId?: string;
|
|
115
|
+
}): void;
|
|
116
|
+
/** Every declared zone, with its owner, in registration order. */
|
|
117
|
+
export declare function listPluginZones(): ResolvedPluginZone[];
|
|
118
|
+
/** One declared zone by id, with its owner, or `null` when nobody declares it. */
|
|
119
|
+
export declare function pluginZone(zoneId: string): ResolvedPluginZone | null;
|
|
120
|
+
/** The plugin that declared a zone, for attribution, or `undefined`. */
|
|
121
|
+
export declare function pluginIdForZone(zoneId: string): string | undefined;
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2026 Aglyn LLC
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/ import { getRegisteringPluginId } from "../app-utils/registering-plugin.js";
|
|
18
|
+
import { definePluginServiceContract, registerPluginService, resolvePluginServices } from "./plugin-services.js";
|
|
19
|
+
/**
|
|
20
|
+
* A zone token. Pure: it allocates no registration and reads no registry, so
|
|
21
|
+
* a plugin may define one at module scope and register it from its register
|
|
22
|
+
* fn, where the loader's owner marker is set.
|
|
23
|
+
*/ export function definePluginZone(id) {
|
|
24
|
+
const zoneId = id.trim();
|
|
25
|
+
if (!zoneId) throw new Error('a plugin zone needs an id');
|
|
26
|
+
return {
|
|
27
|
+
id: zoneId
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
export const PLUGIN_ZONES = definePluginServiceContract('core.zones', {
|
|
31
|
+
multiple: true
|
|
32
|
+
});
|
|
33
|
+
/**
|
|
34
|
+
* Declares a zone the registering plugin hosts. The owner is the loader's
|
|
35
|
+
* marker when a register fn is running, else `options.pluginId`; with neither
|
|
36
|
+
* the registration throws. A zone id another plugin declared throws naming
|
|
37
|
+
* both.
|
|
38
|
+
*/ export function registerPluginZone(declaration, options) {
|
|
39
|
+
var _ref, _ref1, _getRegisteringPluginId;
|
|
40
|
+
var _declaration_zone_id, _declaration_zone, _declaration_label;
|
|
41
|
+
const key = (_ref = (_declaration_zone = declaration.zone) == null ? void 0 : (_declaration_zone_id = _declaration_zone.id) == null ? void 0 : _declaration_zone_id.trim()) != null ? _ref : '';
|
|
42
|
+
if (!key) throw new Error('a plugin zone needs an id');
|
|
43
|
+
if (!((_declaration_label = declaration.label) == null ? void 0 : _declaration_label.trim())) {
|
|
44
|
+
throw new Error(`plugin zone "${key}" needs a label`);
|
|
45
|
+
}
|
|
46
|
+
const pluginId = ((_ref1 = (_getRegisteringPluginId = getRegisteringPluginId()) != null ? _getRegisteringPluginId : options == null ? void 0 : options.pluginId) != null ? _ref1 : '').trim();
|
|
47
|
+
const incumbent = resolvePluginServices(PLUGIN_ZONES).find((entry)=>entry.key === key);
|
|
48
|
+
if (incumbent && pluginId && incumbent.pluginId !== pluginId) {
|
|
49
|
+
throw new Error(`zone "${key}" is already declared by "${incumbent.pluginId}"; ` + `refused "${pluginId}"`);
|
|
50
|
+
}
|
|
51
|
+
registerPluginService(PLUGIN_ZONES, declaration, _extends({}, (options == null ? void 0 : options.pluginId) ? {
|
|
52
|
+
pluginId: options.pluginId
|
|
53
|
+
} : {}, {
|
|
54
|
+
key
|
|
55
|
+
}));
|
|
56
|
+
}
|
|
57
|
+
/** Every declared zone, with its owner, in registration order. */ export function listPluginZones() {
|
|
58
|
+
return resolvePluginServices(PLUGIN_ZONES).map((entry)=>_extends({}, entry.impl, {
|
|
59
|
+
pluginId: entry.pluginId
|
|
60
|
+
}));
|
|
61
|
+
}
|
|
62
|
+
/** One declared zone by id, with its owner, or `null` when nobody declares it. */ export function pluginZone(zoneId) {
|
|
63
|
+
const key = zoneId.trim();
|
|
64
|
+
const entry = resolvePluginServices(PLUGIN_ZONES).find((one)=>one.key === key);
|
|
65
|
+
return entry ? _extends({}, entry.impl, {
|
|
66
|
+
pluginId: entry.pluginId
|
|
67
|
+
}) : null;
|
|
68
|
+
}
|
|
69
|
+
/** The plugin that declared a zone, for attribution, or `undefined`. */ export function pluginIdForZone(zoneId) {
|
|
70
|
+
var _pluginZone;
|
|
71
|
+
return (_pluginZone = pluginZone(zoneId)) == null ? void 0 : _pluginZone.pluginId;
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
//# sourceMappingURL=plugin-zones.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/plugin-manager/plugin-zones.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { getRegisteringPluginId } from '../app-utils/registering-plugin'\nimport {\n definePluginServiceContract,\n registerPluginService,\n resolvePluginServices,\n} from './plugin-services'\n\n/**\n * A zone a plugin declares, and the props it hands each widget (AGL-3124).\n *\n * `CONSOLE_WIDGET_SLOTS` is the catalog of zones the console SHELL draws, and\n * a slot id has always been an open string, so a plugin could already host a\n * zone of its own. What it could not do is say what that zone HANDS a widget.\n * The props had to be a type, the type had to be somewhere both sides import,\n * and \"somewhere both sides import\" was read as the core — which is how\n * `plugin-manager/commerce-zone-props.ts` and `plugin-manager/record-zone-props.ts`\n * came to spell out the commerce catalog and the record vocabulary of two\n * named plugins inside the platform.\n *\n * So the declaration moves to the plugin. A plugin defines a token for its\n * zone with {@link definePluginZone}, carrying the props type on the token,\n * and registers it here with a label and the surface it is drawn on. A widget\n * author takes the props type off the token — `PluginZoneProps<typeof ZONE>`\n * — without the core ever naming a product, a deal or a lead.\n *\n * ## Nothing here reaches a published page\n *\n * A zone token is `{ id }` and nothing else: `__props` is a phantom field that\n * never holds a value, so the props type is carried at the type level and\n * erased. That is the same trick the two type-only modules above use, and it\n * is load-bearing rather than tidy — AGL-3082 measured the zone catalog on the\n * published page's static graph, and a declaration that put a plugin's prop\n * SHAPES there would have made every published page carry the console's\n * vocabulary. `plugin-zones.spec.ts` pins the token's own key set so a field\n * added to it later has to be a decision.\n *\n * This module is reached by its own subpath and is deliberately absent from\n * `plugin-manager/index.ts`, for the reason that barrel already states about\n * `plugin-figures`: what a published page does not need, it must not import.\n *\n * ## One zone id, one owner\n *\n * A zone is a position on a page somebody draws. Two plugins declaring the\n * same id would each believe they set what a widget there receives, and the\n * widget author would have no way to tell whose props arrived — so a second\n * plugin's declaration is refused naming both, and the incumbent keeps its\n * zone. The same plugin declaring again — a second surface, a hot reload —\n * replaces its own.\n */\n\n/**\n * A zone's identity, with the props it hands a widget carried at the type\n * level. `__props` never holds a value.\n */\nexport interface PluginZone<Props> {\n readonly id: string\n readonly __props?: Props\n}\n\n/** The props a zone hands each widget, read off its token. */\nexport type PluginZoneProps<Zone> = Zone extends PluginZone<infer Props>\n ? Props\n : never\n\n/**\n * A zone token. Pure: it allocates no registration and reads no registry, so\n * a plugin may define one at module scope and register it from its register\n * fn, where the loader's owner marker is set.\n */\nexport function definePluginZone<Props>(id: string): PluginZone<Props> {\n const zoneId = id.trim()\n if (!zoneId) throw new Error('a plugin zone needs an id')\n return { id: zoneId }\n}\n\n/** Where a zone is drawn, which is what decides the gates around it. */\nexport type PluginZoneSurface = 'console' | 'besigner' | 'site'\n\nexport interface PluginZoneDeclaration<Props = unknown> {\n zone: PluginZone<Props>\n /** What the plugin's own manifest and the widget picker call the zone. */\n label: string\n /** The surface the zone is drawn on. */\n surface: PluginZoneSurface\n /**\n * What a widget here may do, and what it may not — the sentence a widget\n * author reads before writing one. Every zone in the core catalog carries\n * the same distinction (a widget proposes, the host writes), and a plugin's\n * zone owes its widgets the same statement.\n */\n description?: string\n /**\n * How the zone places its widgets. `stack`, the default, is one block of\n * the page: its widgets are cards, spaced, and the block takes no room when\n * nothing in it drew. `bare` adds no element of its own: every widget is one\n * item of a layout the HOST draws — a button in a row of actions, a control\n * beside a form's fields, a dialog that portals out of the page. A wrapper\n * would put every button of a row into one column.\n */\n layout?: PluginZoneLayout\n}\n\n/** See {@link PluginZoneDeclaration.layout}. */\nexport type PluginZoneLayout = 'stack' | 'bare'\n\n/** A declaration with the plugin that made it. */\nexport type ResolvedPluginZone = PluginZoneDeclaration<unknown> & {\n pluginId: string\n}\n\nexport const PLUGIN_ZONES = definePluginServiceContract<\n PluginZoneDeclaration<never>\n>('core.zones', { multiple: true })\n\n/**\n * Declares a zone the registering plugin hosts. The owner is the loader's\n * marker when a register fn is running, else `options.pluginId`; with neither\n * the registration throws. A zone id another plugin declared throws naming\n * both.\n */\nexport function registerPluginZone<Props>(\n declaration: PluginZoneDeclaration<Props>,\n options?: { pluginId?: string },\n): void {\n const key = declaration.zone?.id?.trim() ?? ''\n if (!key) throw new Error('a plugin zone needs an id')\n if (!declaration.label?.trim()) {\n throw new Error(`plugin zone \"${key}\" needs a label`)\n }\n const pluginId = (getRegisteringPluginId() ?? options?.pluginId ?? '').trim()\n const incumbent = resolvePluginServices(PLUGIN_ZONES).find(\n (entry) => entry.key === key,\n )\n if (incumbent && pluginId && incumbent.pluginId !== pluginId) {\n throw new Error(\n `zone \"${key}\" is already declared by \"${incumbent.pluginId}\"; ` +\n `refused \"${pluginId}\"`,\n )\n }\n registerPluginService(\n PLUGIN_ZONES,\n declaration as unknown as PluginZoneDeclaration<never>,\n {\n ...(options?.pluginId ? { pluginId: options.pluginId } : {}),\n key,\n },\n )\n}\n\n/** Every declared zone, with its owner, in registration order. */\nexport function listPluginZones(): ResolvedPluginZone[] {\n return resolvePluginServices(PLUGIN_ZONES).map((entry) => ({\n ...(entry.impl as unknown as PluginZoneDeclaration<unknown>),\n pluginId: entry.pluginId,\n }))\n}\n\n/** One declared zone by id, with its owner, or `null` when nobody declares it. */\nexport function pluginZone(zoneId: string): ResolvedPluginZone | null {\n const key = zoneId.trim()\n const entry = resolvePluginServices(PLUGIN_ZONES).find(\n (one) => one.key === key,\n )\n return entry\n ? {\n ...(entry.impl as unknown as PluginZoneDeclaration<unknown>),\n pluginId: entry.pluginId,\n }\n : null\n}\n\n/** The plugin that declared a zone, for attribution, or `undefined`. */\nexport function pluginIdForZone(zoneId: string): string | undefined {\n return pluginZone(zoneId)?.pluginId\n}\n"],"names":["getRegisteringPluginId","definePluginServiceContract","registerPluginService","resolvePluginServices","definePluginZone","id","zoneId","trim","Error","PLUGIN_ZONES","multiple","registerPluginZone","declaration","options","key","zone","label","pluginId","incumbent","find","entry","listPluginZones","map","impl","pluginZone","one","pluginIdForZone"],"mappings":";AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,sBAAsB,QAAQ,qCAAiC;AACxE,SACEC,2BAA2B,EAC3BC,qBAAqB,EACrBC,qBAAqB,QAChB,uBAAmB;AA2D1B;;;;CAIC,GACD,OAAO,SAASC,iBAAwBC,EAAU;IAChD,MAAMC,SAASD,GAAGE,IAAI;IACtB,IAAI,CAACD,QAAQ,MAAM,IAAIE,MAAM;IAC7B,OAAO;QAAEH,IAAIC;IAAO;AACtB;AAqCA,OAAO,MAAMG,eAAeR,4BAE1B,cAAc;IAAES,UAAU;AAAK,GAAE;AAEnC;;;;;CAKC,GACD,OAAO,SAASC,mBACdC,WAAyC,EACzCC,OAA+B;cAObb,OAAAA;QALNY,sBAAAA,mBAEPA;IAFL,MAAME,eAAMF,oBAAAA,YAAYG,IAAI,sBAAhBH,uBAAAA,kBAAkBP,EAAE,qBAApBO,qBAAsBL,IAAI,qBAAM;IAC5C,IAAI,CAACO,KAAK,MAAM,IAAIN,MAAM;IAC1B,IAAI,GAACI,qBAAAA,YAAYI,KAAK,qBAAjBJ,mBAAmBL,IAAI,KAAI;QAC9B,MAAM,IAAIC,MAAM,CAAC,aAAa,EAAEM,IAAI,eAAe,CAAC;IACtD;IACA,MAAMG,WAAW,EAACjB,SAAAA,0BAAAA,oCAAAA,0BAA4Ba,2BAAAA,QAASI,QAAQ,YAA7CjB,QAAiD,IAAIO,IAAI;IAC3E,MAAMW,YAAYf,sBAAsBM,cAAcU,IAAI,CACxD,CAACC,QAAUA,MAAMN,GAAG,KAAKA;IAE3B,IAAII,aAAaD,YAAYC,UAAUD,QAAQ,KAAKA,UAAU;QAC5D,MAAM,IAAIT,MACR,CAAC,MAAM,EAAEM,IAAI,0BAA0B,EAAEI,UAAUD,QAAQ,CAAC,GAAG,CAAC,GAC9D,CAAC,SAAS,EAAEA,SAAS,CAAC,CAAC;IAE7B;IACAf,sBACEO,cACAG,aACA,aACMC,CAAAA,2BAAAA,QAASI,QAAQ,IAAG;QAAEA,UAAUJ,QAAQI,QAAQ;IAAC,IAAI,CAAC;QAC1DH;;AAGN;AAEA,gEAAgE,GAChE,OAAO,SAASO;IACd,OAAOlB,sBAAsBM,cAAca,GAAG,CAAC,CAACF,QAAW,aACrDA,MAAMG,IAAI;YACdN,UAAUG,MAAMH,QAAQ;;AAE5B;AAEA,gFAAgF,GAChF,OAAO,SAASO,WAAWlB,MAAc;IACvC,MAAMQ,MAAMR,OAAOC,IAAI;IACvB,MAAMa,QAAQjB,sBAAsBM,cAAcU,IAAI,CACpD,CAACM,MAAQA,IAAIX,GAAG,KAAKA;IAEvB,OAAOM,QACH,aACMA,MAAMG,IAAI;QACdN,UAAUG,MAAMH,QAAQ;SAE1B;AACN;AAEA,sEAAsE,GACtE,OAAO,SAASS,gBAAgBpB,MAAc;QACrCkB;IAAP,QAAOA,cAAAA,WAAWlB,4BAAXkB,YAAoBP,QAAQ;AACrC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
import type { PluginContributions } from './plugin-contributions';
|
|
18
|
+
/**
|
|
19
|
+
* Trusted-realm remote plugins (AGL-420). Marketplace bundles normally run
|
|
20
|
+
* inside the cross-origin sandboxed PluginFrame; listings a staff member
|
|
21
|
+
* has REVIEWED AND SIGNED (`trust: 'realm'`) may instead load into the app
|
|
22
|
+
* realm and register real components/runtimes — first-party-grade
|
|
23
|
+
* extensions installed from the marketplace.
|
|
24
|
+
*
|
|
25
|
+
* Trust chain, all of which must hold before a byte executes:
|
|
26
|
+
* 1. The install doc pins {version, sha256}; the fetched bundle's SHA-256
|
|
27
|
+
* must match (content-addressing — a swapped artifact can't load).
|
|
28
|
+
* 2. The version doc carries an Ed25519 `signature` over the sha256 hex,
|
|
29
|
+
* made by the platform signing key (staff publish flow). When a public
|
|
30
|
+
* key is configured, verification is MANDATORY and fails closed —
|
|
31
|
+
* including on runtimes without WebCrypto Ed25519 support.
|
|
32
|
+
* 3. Bundles import nothing: the host injects its React/registry
|
|
33
|
+
* singletons through `globalThis.__AGLYN_PLUGIN_HOST__` (see
|
|
34
|
+
* {@link setRealmPluginHost}), so there is exactly one registry/React
|
|
35
|
+
* instance — the same invariant that keeps first-party canvases from
|
|
36
|
+
* rendering blank.
|
|
37
|
+
*
|
|
38
|
+
* Everything here is isomorphic (WebCrypto only, no node imports) so the
|
|
39
|
+
* client barrel stays browser-safe; the server-side loader for API
|
|
40
|
+
* handler bundles lives in realm-server.ts (node-only, /server entry).
|
|
41
|
+
*/
|
|
42
|
+
export declare const PLUGIN_HOST_ABI_VERSION = 1;
|
|
43
|
+
/** The pinned install shape the loaders consume (installs + version doc). */
|
|
44
|
+
export interface RealmPluginInstall {
|
|
45
|
+
listingId: string;
|
|
46
|
+
version: string;
|
|
47
|
+
sha256: string;
|
|
48
|
+
/** Staff-granted tier; anything but 'realm' never realm-loads. */
|
|
49
|
+
trust?: string;
|
|
50
|
+
/** Ed25519 signature (base64) over the sha256 hex string. */
|
|
51
|
+
signature?: string;
|
|
52
|
+
/** Host ABI the bundle targets (AGL-429); mismatches never load. */
|
|
53
|
+
hostAbi?: number;
|
|
54
|
+
/**
|
|
55
|
+
* The pinned version's manifest id (AGL-3116): the `pluginId` its own
|
|
56
|
+
* elements carry, which is how a page shows it uses an undeclared plugin.
|
|
57
|
+
*/
|
|
58
|
+
pluginId?: string;
|
|
59
|
+
/**
|
|
60
|
+
* What the pinned version declares it contributes (AGL-3116); absent when
|
|
61
|
+
* it declares nothing, and then the default in `plugin-contributions.ts`
|
|
62
|
+
* decides where it loads.
|
|
63
|
+
*/
|
|
64
|
+
contributes?: PluginContributions;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* ABI gate (AGL-429): a declared `hostAbi` must equal the running host's
|
|
68
|
+
* generation; absent = pre-compat bundle, allowed (with a loader warning)
|
|
69
|
+
* so existing installs keep working across the introduction of the field.
|
|
70
|
+
*/
|
|
71
|
+
export declare function isCompatibleHostAbi(hostAbi: number | undefined): boolean;
|
|
72
|
+
export interface LoadRealmPluginsOptions {
|
|
73
|
+
/** Base URL of the content-addressed artifacts origin. */
|
|
74
|
+
artifactsBase: string;
|
|
75
|
+
/**
|
|
76
|
+
* Base64 raw Ed25519 public key. When set, unsigned or badly-signed
|
|
77
|
+
* bundles are rejected; when unset, signature checking is skipped and
|
|
78
|
+
* the Firestore trust flag + sha pinning are the whole gate (dev mode).
|
|
79
|
+
*/
|
|
80
|
+
publicKeyBase64?: string;
|
|
81
|
+
}
|
|
82
|
+
export declare function sha256Hex(bytes: ArrayBuffer): Promise<string>;
|
|
83
|
+
/**
|
|
84
|
+
* Verifies the platform Ed25519 signature over a sha256 hex string.
|
|
85
|
+
* Fails CLOSED: any import/verify error (including runtimes without
|
|
86
|
+
* WebCrypto Ed25519) returns false.
|
|
87
|
+
*/
|
|
88
|
+
export declare function verifyRealmSignature(shaHex: string, signatureBase64: string, publicKeyBase64: string): Promise<boolean>;
|
|
89
|
+
/**
|
|
90
|
+
* Verifies fetched bundle bytes against a pinned install: content hash
|
|
91
|
+
* always; platform signature when a public key is configured. Returns the
|
|
92
|
+
* reason on failure so callers can log precisely.
|
|
93
|
+
*/
|
|
94
|
+
export declare function verifyRealmBundle(bytes: ArrayBuffer, install: RealmPluginInstall, publicKeyBase64?: string): Promise<{
|
|
95
|
+
ok: true;
|
|
96
|
+
} | {
|
|
97
|
+
ok: false;
|
|
98
|
+
reason: string;
|
|
99
|
+
}>;
|
|
100
|
+
/**
|
|
101
|
+
* Publishes the host ABI realm bundles build against. The APP composes it
|
|
102
|
+
* (React/jsxRuntime must come from the app bundle so singletons hold) —
|
|
103
|
+
* core only owns the slot and the version stamp.
|
|
104
|
+
*/
|
|
105
|
+
export declare function setRealmPluginHost(host: Record<string, unknown>): void;
|
|
106
|
+
/**
|
|
107
|
+
* Fetches, verifies, and executes realm bundles in the app realm. Each
|
|
108
|
+
* bundle default-exports (or exports) `register(host)`; failures are
|
|
109
|
+
* logged and skipped — a broken marketplace plugin must never take the
|
|
110
|
+
* console or a site down. Idempotent per listing@version.
|
|
111
|
+
*/
|
|
112
|
+
export declare function loadRealmPlugins(installs: readonly RealmPluginInstall[], options: LoadRealmPluginsOptions): Promise<void>;
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
2
|
+
/**
|
|
3
|
+
* @license
|
|
4
|
+
* Copyright 2026 Aglyn LLC
|
|
5
|
+
*
|
|
6
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
7
|
+
* you may not use this file except in compliance with the License.
|
|
8
|
+
* You may obtain a copy of the License at
|
|
9
|
+
*
|
|
10
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
11
|
+
*
|
|
12
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
13
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
14
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
15
|
+
* See the License for the specific language governing permissions and
|
|
16
|
+
* limitations under the License.
|
|
17
|
+
*/ import { pluginArtifactPath } from "../app-utils/plugin-artifact-path.js";
|
|
18
|
+
import { capturePluginStyles } from "./plugin-styles.js";
|
|
19
|
+
/**
|
|
20
|
+
* Trusted-realm remote plugins (AGL-420). Marketplace bundles normally run
|
|
21
|
+
* inside the cross-origin sandboxed PluginFrame; listings a staff member
|
|
22
|
+
* has REVIEWED AND SIGNED (`trust: 'realm'`) may instead load into the app
|
|
23
|
+
* realm and register real components/runtimes — first-party-grade
|
|
24
|
+
* extensions installed from the marketplace.
|
|
25
|
+
*
|
|
26
|
+
* Trust chain, all of which must hold before a byte executes:
|
|
27
|
+
* 1. The install doc pins {version, sha256}; the fetched bundle's SHA-256
|
|
28
|
+
* must match (content-addressing — a swapped artifact can't load).
|
|
29
|
+
* 2. The version doc carries an Ed25519 `signature` over the sha256 hex,
|
|
30
|
+
* made by the platform signing key (staff publish flow). When a public
|
|
31
|
+
* key is configured, verification is MANDATORY and fails closed —
|
|
32
|
+
* including on runtimes without WebCrypto Ed25519 support.
|
|
33
|
+
* 3. Bundles import nothing: the host injects its React/registry
|
|
34
|
+
* singletons through `globalThis.__AGLYN_PLUGIN_HOST__` (see
|
|
35
|
+
* {@link setRealmPluginHost}), so there is exactly one registry/React
|
|
36
|
+
* instance — the same invariant that keeps first-party canvases from
|
|
37
|
+
* rendering blank.
|
|
38
|
+
*
|
|
39
|
+
* Everything here is isomorphic (WebCrypto only, no node imports) so the
|
|
40
|
+
* client barrel stays browser-safe; the server-side loader for API
|
|
41
|
+
* handler bundles lives in realm-server.ts (node-only, /server entry).
|
|
42
|
+
*/ export const PLUGIN_HOST_ABI_VERSION = 1;
|
|
43
|
+
/**
|
|
44
|
+
* ABI gate (AGL-429): a declared `hostAbi` must equal the running host's
|
|
45
|
+
* generation; absent = pre-compat bundle, allowed (with a loader warning)
|
|
46
|
+
* so existing installs keep working across the introduction of the field.
|
|
47
|
+
*/ export function isCompatibleHostAbi(hostAbi) {
|
|
48
|
+
return hostAbi === undefined || hostAbi === PLUGIN_HOST_ABI_VERSION;
|
|
49
|
+
}
|
|
50
|
+
const decodeBase64 = (value)=>{
|
|
51
|
+
if (typeof atob === 'function') {
|
|
52
|
+
return Uint8Array.from(atob(value), (char)=>char.charCodeAt(0));
|
|
53
|
+
}
|
|
54
|
+
// Node without atob (never in practice on the pinned runtime, kept for
|
|
55
|
+
// safety). Reached through `globalThis` rather than as a bare global: a
|
|
56
|
+
// free `Buffer` identifier makes a browser bundler inject its 22 KB
|
|
57
|
+
// polyfill for a branch no browser can enter.
|
|
58
|
+
return new Uint8Array(globalThis.Buffer.from(value, 'base64'));
|
|
59
|
+
};
|
|
60
|
+
export async function sha256Hex(bytes) {
|
|
61
|
+
const digest = await globalThis.crypto.subtle.digest('SHA-256', bytes);
|
|
62
|
+
return Array.from(new Uint8Array(digest)).map((byte)=>byte.toString(16).padStart(2, '0')).join('');
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Verifies the platform Ed25519 signature over a sha256 hex string.
|
|
66
|
+
* Fails CLOSED: any import/verify error (including runtimes without
|
|
67
|
+
* WebCrypto Ed25519) returns false.
|
|
68
|
+
*/ export async function verifyRealmSignature(shaHex, signatureBase64, publicKeyBase64) {
|
|
69
|
+
try {
|
|
70
|
+
const key = await globalThis.crypto.subtle.importKey('raw', decodeBase64(publicKeyBase64), {
|
|
71
|
+
name: 'Ed25519'
|
|
72
|
+
}, false, [
|
|
73
|
+
'verify'
|
|
74
|
+
]);
|
|
75
|
+
return await globalThis.crypto.subtle.verify({
|
|
76
|
+
name: 'Ed25519'
|
|
77
|
+
}, key, decodeBase64(signatureBase64), new TextEncoder().encode(shaHex));
|
|
78
|
+
} catch (unused) {
|
|
79
|
+
return false;
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Verifies fetched bundle bytes against a pinned install: content hash
|
|
84
|
+
* always; platform signature when a public key is configured. Returns the
|
|
85
|
+
* reason on failure so callers can log precisely.
|
|
86
|
+
*/ export async function verifyRealmBundle(bytes, install, publicKeyBase64) {
|
|
87
|
+
const digest = await sha256Hex(bytes);
|
|
88
|
+
if (digest !== install.sha256) {
|
|
89
|
+
return {
|
|
90
|
+
ok: false,
|
|
91
|
+
reason: `sha256 mismatch (got ${digest.slice(0, 12)}…)`
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
if (publicKeyBase64) {
|
|
95
|
+
if (!install.signature) return {
|
|
96
|
+
ok: false,
|
|
97
|
+
reason: 'missing signature'
|
|
98
|
+
};
|
|
99
|
+
const valid = await verifyRealmSignature(install.sha256, install.signature, publicKeyBase64);
|
|
100
|
+
if (!valid) return {
|
|
101
|
+
ok: false,
|
|
102
|
+
reason: 'invalid signature'
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
return {
|
|
106
|
+
ok: true
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
// ---------------------------------------------------------------------------
|
|
110
|
+
// Host ABI + client loader (browser only past this point).
|
|
111
|
+
// ---------------------------------------------------------------------------
|
|
112
|
+
const HOST_GLOBAL = '__AGLYN_PLUGIN_HOST__';
|
|
113
|
+
/**
|
|
114
|
+
* Publishes the host ABI realm bundles build against. The APP composes it
|
|
115
|
+
* (React/jsxRuntime must come from the app bundle so singletons hold) —
|
|
116
|
+
* core only owns the slot and the version stamp.
|
|
117
|
+
*/ export function setRealmPluginHost(host) {
|
|
118
|
+
;
|
|
119
|
+
globalThis[HOST_GLOBAL] = _extends({
|
|
120
|
+
version: PLUGIN_HOST_ABI_VERSION
|
|
121
|
+
}, host);
|
|
122
|
+
}
|
|
123
|
+
const loaded = new Map();
|
|
124
|
+
/**
|
|
125
|
+
* Fetches, verifies, and executes realm bundles in the app realm. Each
|
|
126
|
+
* bundle default-exports (or exports) `register(host)`; failures are
|
|
127
|
+
* logged and skipped — a broken marketplace plugin must never take the
|
|
128
|
+
* console or a site down. Idempotent per listing@version.
|
|
129
|
+
*/ export async function loadRealmPlugins(installs, options) {
|
|
130
|
+
const host = globalThis[HOST_GLOBAL];
|
|
131
|
+
const realmInstalls = installs.filter((install)=>install.trust === 'realm');
|
|
132
|
+
// Fail closed (AGL-507): without the trust public key we cannot verify
|
|
133
|
+
// bundle signatures, so refuse to load any realm plugin rather than fall
|
|
134
|
+
// back to sha256-only — mirroring the mandatory server-side key check
|
|
135
|
+
// (realm-server.ts). Silently degrading here contradicted the documented
|
|
136
|
+
// "verification is MANDATORY and fails closed" contract.
|
|
137
|
+
if (realmInstalls.length > 0 && !options.publicKeyBase64) {
|
|
138
|
+
console.error(`realm plugins: refusing to load ${realmInstalls.length} bundle(s) — ` + 'NEXT_PUBLIC_PLUGIN_TRUST_PUBLIC_KEY is not configured, so signatures ' + 'cannot be verified');
|
|
139
|
+
return;
|
|
140
|
+
}
|
|
141
|
+
await Promise.all(realmInstalls.map((install)=>{
|
|
142
|
+
const key = `${install.listingId}@${install.version}`;
|
|
143
|
+
let promise = loaded.get(key);
|
|
144
|
+
if (!promise) {
|
|
145
|
+
promise = (async ()=>{
|
|
146
|
+
const url = `${options.artifactsBase.replace(/\/+$/, '')}/${pluginArtifactPath(install.listingId, install.version, install.sha256)}`;
|
|
147
|
+
const response = await fetch(url);
|
|
148
|
+
if (!response.ok) throw new Error(`fetch ${response.status}`);
|
|
149
|
+
if (!isCompatibleHostAbi(install.hostAbi)) {
|
|
150
|
+
throw new Error(`built for host ABI ${install.hostAbi}, host is ${PLUGIN_HOST_ABI_VERSION}`);
|
|
151
|
+
}
|
|
152
|
+
if (install.hostAbi === undefined) {
|
|
153
|
+
console.warn(`realm plugin ${key}: no hostAbi declared (pre-AGL-429 bundle)`);
|
|
154
|
+
}
|
|
155
|
+
const bytes = await response.arrayBuffer();
|
|
156
|
+
const verdict = await verifyRealmBundle(bytes, install, options.publicKeyBase64);
|
|
157
|
+
if (verdict.ok === false) throw new Error(verdict.reason);
|
|
158
|
+
const blobUrl = URL.createObjectURL(new Blob([
|
|
159
|
+
bytes
|
|
160
|
+
], {
|
|
161
|
+
type: 'text/javascript'
|
|
162
|
+
}));
|
|
163
|
+
try {
|
|
164
|
+
// AGL-2486: module evaluation and `register()` both run inside
|
|
165
|
+
// the style capture, because a bundler's `import './x.css'`
|
|
166
|
+
// compiles to a `document.head.appendChild(<style>)` at module
|
|
167
|
+
// EVAL time — before `register` is ever called. Anything the
|
|
168
|
+
// bundle injects in that window is mirrored into the besigner
|
|
169
|
+
// canvas's closed shadow root, which a document-level rule
|
|
170
|
+
// otherwise cannot reach at all (measured: no effect on the
|
|
171
|
+
// canvas, wins outright on the published page). See
|
|
172
|
+
// `plugin-styles.tsx`.
|
|
173
|
+
await capturePluginStyles(install.listingId, async ()=>{
|
|
174
|
+
var _mod_register;
|
|
175
|
+
var _mod_default;
|
|
176
|
+
const mod = await import(/* webpackIgnore: true */ blobUrl);
|
|
177
|
+
const register = (_mod_register = mod.register) != null ? _mod_register : (_mod_default = mod.default) == null ? void 0 : _mod_default.register;
|
|
178
|
+
if (typeof register !== 'function') {
|
|
179
|
+
throw new Error('bundle exports no register(host)');
|
|
180
|
+
}
|
|
181
|
+
register(host);
|
|
182
|
+
});
|
|
183
|
+
} finally{
|
|
184
|
+
URL.revokeObjectURL(blobUrl);
|
|
185
|
+
}
|
|
186
|
+
})().catch((error)=>{
|
|
187
|
+
loaded.delete(key);
|
|
188
|
+
console.error(`realm plugin ${key} failed to load:`, error);
|
|
189
|
+
});
|
|
190
|
+
loaded.set(key, promise);
|
|
191
|
+
}
|
|
192
|
+
return promise;
|
|
193
|
+
}));
|
|
194
|
+
}
|
|
195
|
+
|
|
196
|
+
//# sourceMappingURL=realm-plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/plugin-manager/realm-plugins.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { pluginArtifactPath } from '../app-utils/plugin-artifact-path'\nimport type { PluginContributions } from './plugin-contributions'\nimport { capturePluginStyles } from './plugin-styles'\n\n/**\n * Trusted-realm remote plugins (AGL-420). Marketplace bundles normally run\n * inside the cross-origin sandboxed PluginFrame; listings a staff member\n * has REVIEWED AND SIGNED (`trust: 'realm'`) may instead load into the app\n * realm and register real components/runtimes — first-party-grade\n * extensions installed from the marketplace.\n *\n * Trust chain, all of which must hold before a byte executes:\n * 1. The install doc pins {version, sha256}; the fetched bundle's SHA-256\n * must match (content-addressing — a swapped artifact can't load).\n * 2. The version doc carries an Ed25519 `signature` over the sha256 hex,\n * made by the platform signing key (staff publish flow). When a public\n * key is configured, verification is MANDATORY and fails closed —\n * including on runtimes without WebCrypto Ed25519 support.\n * 3. Bundles import nothing: the host injects its React/registry\n * singletons through `globalThis.__AGLYN_PLUGIN_HOST__` (see\n * {@link setRealmPluginHost}), so there is exactly one registry/React\n * instance — the same invariant that keeps first-party canvases from\n * rendering blank.\n *\n * Everything here is isomorphic (WebCrypto only, no node imports) so the\n * client barrel stays browser-safe; the server-side loader for API\n * handler bundles lives in realm-server.ts (node-only, /server entry).\n */\n\nexport const PLUGIN_HOST_ABI_VERSION = 1\n\n/** The pinned install shape the loaders consume (installs + version doc). */\nexport interface RealmPluginInstall {\n listingId: string\n version: string\n sha256: string\n /** Staff-granted tier; anything but 'realm' never realm-loads. */\n trust?: string\n /** Ed25519 signature (base64) over the sha256 hex string. */\n signature?: string\n /** Host ABI the bundle targets (AGL-429); mismatches never load. */\n hostAbi?: number\n /**\n * The pinned version's manifest id (AGL-3116): the `pluginId` its own\n * elements carry, which is how a page shows it uses an undeclared plugin.\n */\n pluginId?: string\n /**\n * What the pinned version declares it contributes (AGL-3116); absent when\n * it declares nothing, and then the default in `plugin-contributions.ts`\n * decides where it loads.\n */\n contributes?: PluginContributions\n}\n\n/**\n * ABI gate (AGL-429): a declared `hostAbi` must equal the running host's\n * generation; absent = pre-compat bundle, allowed (with a loader warning)\n * so existing installs keep working across the introduction of the field.\n */\nexport function isCompatibleHostAbi(hostAbi: number | undefined): boolean {\n return hostAbi === undefined || hostAbi === PLUGIN_HOST_ABI_VERSION\n}\n\nexport interface LoadRealmPluginsOptions {\n /** Base URL of the content-addressed artifacts origin. */\n artifactsBase: string\n /**\n * Base64 raw Ed25519 public key. When set, unsigned or badly-signed\n * bundles are rejected; when unset, signature checking is skipped and\n * the Firestore trust flag + sha pinning are the whole gate (dev mode).\n */\n publicKeyBase64?: string\n}\n\nconst decodeBase64 = (value: string): Uint8Array => {\n if (typeof atob === 'function') {\n return Uint8Array.from(atob(value), (char) => char.charCodeAt(0))\n }\n // Node without atob (never in practice on the pinned runtime, kept for\n // safety). Reached through `globalThis` rather than as a bare global: a\n // free `Buffer` identifier makes a browser bundler inject its 22 KB\n // polyfill for a branch no browser can enter.\n return new Uint8Array(globalThis.Buffer.from(value, 'base64'))\n}\n\nexport async function sha256Hex(bytes: ArrayBuffer): Promise<string> {\n const digest = await globalThis.crypto.subtle.digest('SHA-256', bytes)\n return Array.from(new Uint8Array(digest))\n .map((byte) => byte.toString(16).padStart(2, '0'))\n .join('')\n}\n\n/**\n * Verifies the platform Ed25519 signature over a sha256 hex string.\n * Fails CLOSED: any import/verify error (including runtimes without\n * WebCrypto Ed25519) returns false.\n */\nexport async function verifyRealmSignature(\n shaHex: string,\n signatureBase64: string,\n publicKeyBase64: string,\n): Promise<boolean> {\n try {\n const key = await globalThis.crypto.subtle.importKey(\n 'raw',\n decodeBase64(publicKeyBase64) as unknown as ArrayBuffer,\n { name: 'Ed25519' },\n false,\n ['verify'],\n )\n return await globalThis.crypto.subtle.verify(\n { name: 'Ed25519' },\n key,\n decodeBase64(signatureBase64) as unknown as ArrayBuffer,\n new TextEncoder().encode(shaHex),\n )\n } catch {\n return false\n }\n}\n\n/**\n * Verifies fetched bundle bytes against a pinned install: content hash\n * always; platform signature when a public key is configured. Returns the\n * reason on failure so callers can log precisely.\n */\nexport async function verifyRealmBundle(\n bytes: ArrayBuffer,\n install: RealmPluginInstall,\n publicKeyBase64?: string,\n): Promise<{ ok: true } | { ok: false; reason: string }> {\n const digest = await sha256Hex(bytes)\n if (digest !== install.sha256) {\n return { ok: false, reason: `sha256 mismatch (got ${digest.slice(0, 12)}…)` }\n }\n if (publicKeyBase64) {\n if (!install.signature) return { ok: false, reason: 'missing signature' }\n const valid = await verifyRealmSignature(\n install.sha256,\n install.signature,\n publicKeyBase64,\n )\n if (!valid) return { ok: false, reason: 'invalid signature' }\n }\n return { ok: true }\n}\n\n// ---------------------------------------------------------------------------\n// Host ABI + client loader (browser only past this point).\n// ---------------------------------------------------------------------------\n\nconst HOST_GLOBAL = '__AGLYN_PLUGIN_HOST__'\n\n/**\n * Publishes the host ABI realm bundles build against. The APP composes it\n * (React/jsxRuntime must come from the app bundle so singletons hold) —\n * core only owns the slot and the version stamp.\n */\nexport function setRealmPluginHost(host: Record<string, unknown>): void {\n ;(globalThis as Record<string, unknown>)[HOST_GLOBAL] = {\n version: PLUGIN_HOST_ABI_VERSION,\n ...host,\n }\n}\n\nconst loaded = new Map<string, Promise<void>>()\n\n/**\n * Fetches, verifies, and executes realm bundles in the app realm. Each\n * bundle default-exports (or exports) `register(host)`; failures are\n * logged and skipped — a broken marketplace plugin must never take the\n * console or a site down. Idempotent per listing@version.\n */\nexport async function loadRealmPlugins(\n installs: readonly RealmPluginInstall[],\n options: LoadRealmPluginsOptions,\n): Promise<void> {\n const host = (globalThis as Record<string, unknown>)[HOST_GLOBAL]\n const realmInstalls = installs.filter((install) => install.trust === 'realm')\n // Fail closed (AGL-507): without the trust public key we cannot verify\n // bundle signatures, so refuse to load any realm plugin rather than fall\n // back to sha256-only — mirroring the mandatory server-side key check\n // (realm-server.ts). Silently degrading here contradicted the documented\n // \"verification is MANDATORY and fails closed\" contract.\n if (realmInstalls.length > 0 && !options.publicKeyBase64) {\n console.error(\n `realm plugins: refusing to load ${realmInstalls.length} bundle(s) — ` +\n 'NEXT_PUBLIC_PLUGIN_TRUST_PUBLIC_KEY is not configured, so signatures ' +\n 'cannot be verified',\n )\n return\n }\n await Promise.all(\n realmInstalls.map((install) => {\n const key = `${install.listingId}@${install.version}`\n let promise = loaded.get(key)\n if (!promise) {\n promise = (async () => {\n const url = `${options.artifactsBase.replace(/\\/+$/, '')}/${pluginArtifactPath(\n install.listingId,\n install.version,\n install.sha256,\n )}`\n const response = await fetch(url)\n if (!response.ok) throw new Error(`fetch ${response.status}`)\n if (!isCompatibleHostAbi(install.hostAbi)) {\n throw new Error(\n `built for host ABI ${install.hostAbi}, host is ${PLUGIN_HOST_ABI_VERSION}`,\n )\n }\n if (install.hostAbi === undefined) {\n console.warn(\n `realm plugin ${key}: no hostAbi declared (pre-AGL-429 bundle)`,\n )\n }\n const bytes = await response.arrayBuffer()\n const verdict = await verifyRealmBundle(\n bytes,\n install,\n options.publicKeyBase64,\n )\n if (verdict.ok === false) throw new Error(verdict.reason)\n const blobUrl = URL.createObjectURL(\n new Blob([bytes], { type: 'text/javascript' }),\n )\n try {\n // AGL-2486: module evaluation and `register()` both run inside\n // the style capture, because a bundler's `import './x.css'`\n // compiles to a `document.head.appendChild(<style>)` at module\n // EVAL time — before `register` is ever called. Anything the\n // bundle injects in that window is mirrored into the besigner\n // canvas's closed shadow root, which a document-level rule\n // otherwise cannot reach at all (measured: no effect on the\n // canvas, wins outright on the published page). See\n // `plugin-styles.tsx`.\n await capturePluginStyles(install.listingId, async () => {\n const mod = (await import(\n /* webpackIgnore: true */ blobUrl\n )) as {\n register?: (host: unknown) => void\n default?: { register?: (host: unknown) => void }\n }\n const register = mod.register ?? mod.default?.register\n if (typeof register !== 'function') {\n throw new Error('bundle exports no register(host)')\n }\n register(host)\n })\n } finally {\n URL.revokeObjectURL(blobUrl)\n }\n })().catch((error) => {\n loaded.delete(key)\n console.error(`realm plugin ${key} failed to load:`, error)\n })\n loaded.set(key, promise)\n }\n return promise\n }),\n )\n}\n"],"names":["pluginArtifactPath","capturePluginStyles","PLUGIN_HOST_ABI_VERSION","isCompatibleHostAbi","hostAbi","undefined","decodeBase64","value","atob","Uint8Array","from","char","charCodeAt","globalThis","Buffer","sha256Hex","bytes","digest","crypto","subtle","Array","map","byte","toString","padStart","join","verifyRealmSignature","shaHex","signatureBase64","publicKeyBase64","key","importKey","name","verify","TextEncoder","encode","verifyRealmBundle","install","sha256","ok","reason","slice","signature","valid","HOST_GLOBAL","setRealmPluginHost","host","version","loaded","Map","loadRealmPlugins","installs","options","realmInstalls","filter","trust","length","console","error","Promise","all","listingId","promise","get","url","artifactsBase","replace","response","fetch","Error","status","warn","arrayBuffer","verdict","blobUrl","URL","createObjectURL","Blob","type","mod","register","default","revokeObjectURL","catch","delete","set"],"mappings":";AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,kBAAkB,QAAQ,uCAAmC;AAEtE,SAASC,mBAAmB,QAAQ,qBAAiB;AAErD;;;;;;;;;;;;;;;;;;;;;;;CAuBC,GAED,OAAO,MAAMC,0BAA0B,EAAC;AA0BxC;;;;CAIC,GACD,OAAO,SAASC,oBAAoBC,OAA2B;IAC7D,OAAOA,YAAYC,aAAaD,YAAYF;AAC9C;AAaA,MAAMI,eAAe,CAACC;IACpB,IAAI,OAAOC,SAAS,YAAY;QAC9B,OAAOC,WAAWC,IAAI,CAACF,KAAKD,QAAQ,CAACI,OAASA,KAAKC,UAAU,CAAC;IAChE;IACA,uEAAuE;IACvE,wEAAwE;IACxE,oEAAoE;IACpE,8CAA8C;IAC9C,OAAO,IAAIH,WAAWI,WAAWC,MAAM,CAACJ,IAAI,CAACH,OAAO;AACtD;AAEA,OAAO,eAAeQ,UAAUC,KAAkB;IAChD,MAAMC,SAAS,MAAMJ,WAAWK,MAAM,CAACC,MAAM,CAACF,MAAM,CAAC,WAAWD;IAChE,OAAOI,MAAMV,IAAI,CAAC,IAAID,WAAWQ,SAC9BI,GAAG,CAAC,CAACC,OAASA,KAAKC,QAAQ,CAAC,IAAIC,QAAQ,CAAC,GAAG,MAC5CC,IAAI,CAAC;AACV;AAEA;;;;CAIC,GACD,OAAO,eAAeC,qBACpBC,MAAc,EACdC,eAAuB,EACvBC,eAAuB;IAEvB,IAAI;QACF,MAAMC,MAAM,MAAMjB,WAAWK,MAAM,CAACC,MAAM,CAACY,SAAS,CAClD,OACAzB,aAAauB,kBACb;YAAEG,MAAM;QAAU,GAClB,OACA;YAAC;SAAS;QAEZ,OAAO,MAAMnB,WAAWK,MAAM,CAACC,MAAM,CAACc,MAAM,CAC1C;YAAED,MAAM;QAAU,GAClBF,KACAxB,aAAasB,kBACb,IAAIM,cAAcC,MAAM,CAACR;IAE7B,EAAE,eAAM;QACN,OAAO;IACT;AACF;AAEA;;;;CAIC,GACD,OAAO,eAAeS,kBACpBpB,KAAkB,EAClBqB,OAA2B,EAC3BR,eAAwB;IAExB,MAAMZ,SAAS,MAAMF,UAAUC;IAC/B,IAAIC,WAAWoB,QAAQC,MAAM,EAAE;QAC7B,OAAO;YAAEC,IAAI;YAAOC,QAAQ,CAAC,qBAAqB,EAAEvB,OAAOwB,KAAK,CAAC,GAAG,IAAI,EAAE,CAAC;QAAC;IAC9E;IACA,IAAIZ,iBAAiB;QACnB,IAAI,CAACQ,QAAQK,SAAS,EAAE,OAAO;YAAEH,IAAI;YAAOC,QAAQ;QAAoB;QACxE,MAAMG,QAAQ,MAAMjB,qBAClBW,QAAQC,MAAM,EACdD,QAAQK,SAAS,EACjBb;QAEF,IAAI,CAACc,OAAO,OAAO;YAAEJ,IAAI;YAAOC,QAAQ;QAAoB;IAC9D;IACA,OAAO;QAAED,IAAI;IAAK;AACpB;AAEA,8EAA8E;AAC9E,2DAA2D;AAC3D,8EAA8E;AAE9E,MAAMK,cAAc;AAEpB;;;;CAIC,GACD,OAAO,SAASC,mBAAmBC,IAA6B;;IAC5DjC,UAAsC,CAAC+B,YAAY,GAAG;QACtDG,SAAS7C;OACN4C;AAEP;AAEA,MAAME,SAAS,IAAIC;AAEnB;;;;;CAKC,GACD,OAAO,eAAeC,iBACpBC,QAAuC,EACvCC,OAAgC;IAEhC,MAAMN,OAAO,AAACjC,UAAsC,CAAC+B,YAAY;IACjE,MAAMS,gBAAgBF,SAASG,MAAM,CAAC,CAACjB,UAAYA,QAAQkB,KAAK,KAAK;IACrE,uEAAuE;IACvE,yEAAyE;IACzE,sEAAsE;IACtE,yEAAyE;IACzE,yDAAyD;IACzD,IAAIF,cAAcG,MAAM,GAAG,KAAK,CAACJ,QAAQvB,eAAe,EAAE;QACxD4B,QAAQC,KAAK,CACX,CAAC,gCAAgC,EAAEL,cAAcG,MAAM,CAAC,aAAa,CAAC,GACpE,0EACA;QAEJ;IACF;IACA,MAAMG,QAAQC,GAAG,CACfP,cAAchC,GAAG,CAAC,CAACgB;QACf,MAAMP,MAAM,GAAGO,QAAQwB,SAAS,CAAC,CAAC,EAAExB,QAAQU,OAAO,EAAE;QACrD,IAAIe,UAAUd,OAAOe,GAAG,CAACjC;QACzB,IAAI,CAACgC,SAAS;YACZA,UAAU,AAAC,CAAA;gBACT,MAAME,MAAM,GAAGZ,QAAQa,aAAa,CAACC,OAAO,CAAC,QAAQ,IAAI,CAAC,EAAElE,mBAC1DqC,QAAQwB,SAAS,EACjBxB,QAAQU,OAAO,EACfV,QAAQC,MAAM,GACb;gBACH,MAAM6B,WAAW,MAAMC,MAAMJ;gBAC7B,IAAI,CAACG,SAAS5B,EAAE,EAAE,MAAM,IAAI8B,MAAM,CAAC,MAAM,EAAEF,SAASG,MAAM,EAAE;gBAC5D,IAAI,CAACnE,oBAAoBkC,QAAQjC,OAAO,GAAG;oBACzC,MAAM,IAAIiE,MACR,CAAC,mBAAmB,EAAEhC,QAAQjC,OAAO,CAAC,UAAU,EAAEF,yBAAyB;gBAE/E;gBACA,IAAImC,QAAQjC,OAAO,KAAKC,WAAW;oBACjCoD,QAAQc,IAAI,CACV,CAAC,aAAa,EAAEzC,IAAI,0CAA0C,CAAC;gBAEnE;gBACA,MAAMd,QAAQ,MAAMmD,SAASK,WAAW;gBACxC,MAAMC,UAAU,MAAMrC,kBACpBpB,OACAqB,SACAe,QAAQvB,eAAe;gBAEzB,IAAI4C,QAAQlC,EAAE,KAAK,OAAO,MAAM,IAAI8B,MAAMI,QAAQjC,MAAM;gBACxD,MAAMkC,UAAUC,IAAIC,eAAe,CACjC,IAAIC,KAAK;oBAAC7D;iBAAM,EAAE;oBAAE8D,MAAM;gBAAkB;gBAE9C,IAAI;oBACF,+DAA+D;oBAC/D,4DAA4D;oBAC5D,+DAA+D;oBAC/D,6DAA6D;oBAC7D,8DAA8D;oBAC9D,2DAA2D;oBAC3D,4DAA4D;oBAC5D,oDAAoD;oBACpD,uBAAuB;oBACvB,MAAM7E,oBAAoBoC,QAAQwB,SAAS,EAAE;4BAO1BkB;4BAAgBA;wBANjC,MAAMA,MAAO,MAAM,MAAM,CACvB,uBAAuB,GAAGL;wBAK5B,MAAMM,YAAWD,gBAAAA,IAAIC,QAAQ,YAAZD,iBAAgBA,eAAAA,IAAIE,OAAO,qBAAXF,aAAaC,QAAQ;wBACtD,IAAI,OAAOA,aAAa,YAAY;4BAClC,MAAM,IAAIX,MAAM;wBAClB;wBACAW,SAASlC;oBACX;gBACF,SAAU;oBACR6B,IAAIO,eAAe,CAACR;gBACtB;YACF,CAAA,IAAKS,KAAK,CAAC,CAACzB;gBACVV,OAAOoC,MAAM,CAACtD;gBACd2B,QAAQC,KAAK,CAAC,CAAC,aAAa,EAAE5B,IAAI,gBAAgB,CAAC,EAAE4B;YACvD;YACAV,OAAOqC,GAAG,CAACvD,KAAKgC;QAClB;QACA,OAAOA;IACT;AAEN"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* Remote SERVER handler bundles (AGL-420) — the highest-risk switch in the
|
|
19
|
+
* platform, default OFF everywhere. When explicitly enabled, the API
|
|
20
|
+
* dispatchers load staff-signed bundles that register plugin API routes
|
|
21
|
+
* in-process. Guardrails, all mandatory (unlike the client tier, none are
|
|
22
|
+
* optional here):
|
|
23
|
+
*
|
|
24
|
+
* - `PLUGIN_REMOTE_SERVER=enabled` — the master switch.
|
|
25
|
+
* - `PLUGIN_REMOTE_SERVER_BUNDLES` — an explicit per-deploy allowlist of
|
|
26
|
+
* `listingId@version` entries; nothing loads implicitly from installs.
|
|
27
|
+
* - `PLUGIN_TRUST_PUBLIC_KEY` — REQUIRED; every bundle must carry a valid
|
|
28
|
+
* platform Ed25519 signature over its sha256. No key, no loading.
|
|
29
|
+
* - sha256 content-addressing against the version doc, same as the client.
|
|
30
|
+
*
|
|
31
|
+
* Verified bytes are written to a private temp file and imported by
|
|
32
|
+
* `file://` URL (node can't import blob URLs); the module's exported
|
|
33
|
+
* `registerApi()` runs with the same registries first-party `/server`
|
|
34
|
+
* entries use. Failures log and skip — a broken remote bundle must not
|
|
35
|
+
* take the API surface down (its own paths simply stay unregistered).
|
|
36
|
+
*/
|
|
37
|
+
export interface RemoteServerBundleSource {
|
|
38
|
+
/** Resolves a listing version doc to its pinned hash + signature. */
|
|
39
|
+
resolveVersion(listingId: string, version: string): Promise<{
|
|
40
|
+
sha256: string;
|
|
41
|
+
signature?: string;
|
|
42
|
+
trust?: string;
|
|
43
|
+
hostAbi?: number;
|
|
44
|
+
} | null>;
|
|
45
|
+
/** Base URL of the content-addressed artifacts origin. */
|
|
46
|
+
artifactsBase: string;
|
|
47
|
+
}
|
|
48
|
+
export declare function remoteServerBundlesEnabled(): boolean;
|
|
49
|
+
export interface LoadedServerBundle {
|
|
50
|
+
listingId: string;
|
|
51
|
+
version: string;
|
|
52
|
+
sha256: string;
|
|
53
|
+
}
|
|
54
|
+
export declare function loadRemoteServerBundles(source: RemoteServerBundleSource): Promise<LoadedServerBundle[]>;
|