@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,169 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* The TYPE half of a plugin's billing and access keys (AGL-3124).
|
|
19
|
+
*
|
|
20
|
+
* AGL-2940 built `registerPluginEntitlements`, and the registration migrated:
|
|
21
|
+
* a plugin declares its seat add-ons, its feature flags, its lockdown levers
|
|
22
|
+
* and its permissions, and the catalogs that used to be edited per key read
|
|
23
|
+
* the declarations. What did not migrate is the TYPE. `OrgEntitlements` and
|
|
24
|
+
* `OrgFeatureFlags` still spell out keys named after seven plugin domains, so
|
|
25
|
+
* a plugin can register a key the platform's own types have never heard of,
|
|
26
|
+
* and a key it cannot register is one the platform still has to be edited
|
|
27
|
+
* for.
|
|
28
|
+
*
|
|
29
|
+
* This module closes that half. The two interfaces below are EMPTY and are
|
|
30
|
+
* meant to be augmented: a plugin declares the type of each key it owns with
|
|
31
|
+
* `declare module`, and the core shapes compose from them rather than listing
|
|
32
|
+
* them. The registry beside them is the runtime twin — what a staff page, a
|
|
33
|
+
* migration or a support answer reads to say which plugin a key came from, and
|
|
34
|
+
* what refuses two plugins claiming one key before either can resolve it.
|
|
35
|
+
*
|
|
36
|
+
* ```ts
|
|
37
|
+
* // libs/plugins/cellar — the plugin's own module
|
|
38
|
+
* declare module '@aglyn/aglyn/plugin-manager/plugin-entitlement-keys' {
|
|
39
|
+
* interface PluginEntitlementQuotas {
|
|
40
|
+
* bottlesPerHost?: number
|
|
41
|
+
* }
|
|
42
|
+
* interface PluginEntitlementFeatures {
|
|
43
|
+
* cellarTastings?: boolean
|
|
44
|
+
* }
|
|
45
|
+
* }
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* From then on `entitlements.bottlesPerHost` type-checks everywhere
|
|
49
|
+
* `OrgEntitlements` is read, and nothing in the core names a bottle.
|
|
50
|
+
*
|
|
51
|
+
* ## Why the interfaces are declared here and not beside the shapes
|
|
52
|
+
*
|
|
53
|
+
* The augmentation target has to be a module a plugin may import, and a plugin
|
|
54
|
+
* imports the plugin-manager seams by design. The billing types are on the
|
|
55
|
+
* package's public surface and are read through the foundation barrel, which a
|
|
56
|
+
* published page must never reach; the composition is a type-only edge in that
|
|
57
|
+
* direction, which TypeScript erases, so the shapes gain the plugin half
|
|
58
|
+
* without the graph gaining an edge.
|
|
59
|
+
*
|
|
60
|
+
* ## The NUMBERS stay where they are checked
|
|
61
|
+
*
|
|
62
|
+
* A key's price is not here and must not come here. A seat add-on's price is a
|
|
63
|
+
* row in `PLAN_PRICING`, read by the Stripe wiring and reconciled by
|
|
64
|
+
* `check-pricing-drift`; a declaration names the key and what the key MEANS,
|
|
65
|
+
* and nothing here restates a price. That is the same line
|
|
66
|
+
* `plugin-entitlements` draws, for the same reason: two places that both hold
|
|
67
|
+
* a number are two places that can disagree about what a customer is charged.
|
|
68
|
+
*
|
|
69
|
+
* ## One key, one owner
|
|
70
|
+
*
|
|
71
|
+
* A key is stored under an organization's entitlements and resolved into what
|
|
72
|
+
* that organization may do. Two plugins declaring one key would be two meanings for
|
|
73
|
+
* one stored value, so a key another plugin declared is refused naming both,
|
|
74
|
+
* and the whole registration is refused with it — half a plugin's keys landing
|
|
75
|
+
* would be worse than none.
|
|
76
|
+
*/
|
|
77
|
+
/**
|
|
78
|
+
* Quota and limit keys plugins add to `OrgEntitlements`. Augment with
|
|
79
|
+
* `declare module`, declaring each key OPTIONAL — an entitlement is resolved
|
|
80
|
+
* and may be absent, exactly like every key the core declares.
|
|
81
|
+
*/
|
|
82
|
+
export interface PluginEntitlementQuotas {
|
|
83
|
+
}
|
|
84
|
+
/** Feature flags plugins add to `OrgFeatureFlags`, on the same terms. */
|
|
85
|
+
export interface PluginEntitlementFeatures {
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* The two halves above as MAPPED types, for composing into a type alias
|
|
89
|
+
* rather than into an interface.
|
|
90
|
+
*
|
|
91
|
+
* Not a style choice. TypeScript hands an implicit string index signature to a
|
|
92
|
+
* mapped type and withholds it from an interface, and several readers pass a
|
|
93
|
+
* resolved entitlements or features object where a `Record<string, boolean>`
|
|
94
|
+
* or `Record<string, unknown>` is wanted — a quota line reading every number,
|
|
95
|
+
* a digest reading every gate. Intersecting `Required<CoreOrgFeatureFlags>`
|
|
96
|
+
* with the raw interface loses that index signature and those readers stop
|
|
97
|
+
* compiling, for a plugin half that is empty. Mapping it keeps them.
|
|
98
|
+
*
|
|
99
|
+
* An interface is still what a plugin AUGMENTS: `declare module` merges into
|
|
100
|
+
* an interface and not into a type alias, so the pair is the augmentation
|
|
101
|
+
* target and its composable form, and the mapping follows whatever is
|
|
102
|
+
* declared.
|
|
103
|
+
*/
|
|
104
|
+
export type PluginOrgQuotas = {
|
|
105
|
+
[Key in keyof PluginEntitlementQuotas]: PluginEntitlementQuotas[Key];
|
|
106
|
+
};
|
|
107
|
+
/** See {@link PluginOrgQuotas}. */
|
|
108
|
+
export type PluginOrgFeatures = {
|
|
109
|
+
[Key in keyof PluginEntitlementFeatures]: PluginEntitlementFeatures[Key];
|
|
110
|
+
};
|
|
111
|
+
/**
|
|
112
|
+
* What a declared key is, which is what decides where it is read.
|
|
113
|
+
*
|
|
114
|
+
* There is deliberately no third kind for a plugin's SETTINGS block on the
|
|
115
|
+
* organization document. `org-write-deny-coverage.spec.ts` enumerates that
|
|
116
|
+
* document's fields by reading `org-billing.types.ts`'s source and checks each
|
|
117
|
+
* one against the Firestore write-deny rules, so a field declared from a
|
|
118
|
+
* plugin's own file would be a hole in a rules-coverage guard. A plugin's
|
|
119
|
+
* settings already have a home that is not a hole:
|
|
120
|
+
* `registerPluginConfigSchema` stores them at `pluginSettings/{pluginId}`,
|
|
121
|
+
* which is its own document under its own rule.
|
|
122
|
+
*/
|
|
123
|
+
export type PluginEntitlementKeyKind =
|
|
124
|
+
/** A number in `OrgEntitlements`: a limit, a band, an allowance. */
|
|
125
|
+
'quota'
|
|
126
|
+
/** A boolean in `OrgFeatureFlags`. */
|
|
127
|
+
| 'feature';
|
|
128
|
+
export interface PluginEntitlementKeyDeclaration {
|
|
129
|
+
/** The stored key, exactly as the org document spells it. */
|
|
130
|
+
key: string;
|
|
131
|
+
kind: PluginEntitlementKeyKind;
|
|
132
|
+
/** What a staff page and a support answer call it. */
|
|
133
|
+
label: string;
|
|
134
|
+
/**
|
|
135
|
+
* What the key means — for a quota, what it counts and what it does not.
|
|
136
|
+
* The confusions this platform has already had (a catalog cap read as a
|
|
137
|
+
* traffic cap, a daily pace read as a monthly band) all came from a key
|
|
138
|
+
* whose name said something narrower or wider than it meant.
|
|
139
|
+
*/
|
|
140
|
+
description?: string;
|
|
141
|
+
}
|
|
142
|
+
export interface PluginEntitlementKeyRegistration {
|
|
143
|
+
pluginId: string;
|
|
144
|
+
keys: readonly PluginEntitlementKeyDeclaration[];
|
|
145
|
+
}
|
|
146
|
+
/** A declaration with the plugin that made it. */
|
|
147
|
+
export type ResolvedPluginEntitlementKey = PluginEntitlementKeyDeclaration & {
|
|
148
|
+
pluginId: string;
|
|
149
|
+
};
|
|
150
|
+
/**
|
|
151
|
+
* Declares the entitlement keys a plugin owns. The owner is the loader's
|
|
152
|
+
* marker when a register fn is running, else `registration.pluginId`; with
|
|
153
|
+
* neither the registration throws. Idempotent per plugin — re-registering
|
|
154
|
+
* replaces that plugin's declarations. A key another plugin declared refuses
|
|
155
|
+
* the whole registration, naming both.
|
|
156
|
+
*/
|
|
157
|
+
export declare function registerPluginEntitlementKeys(registration: PluginEntitlementKeyRegistration): void;
|
|
158
|
+
/** Every declared key, with its owner, in registration order. */
|
|
159
|
+
export declare function listPluginEntitlementKeys(): ResolvedPluginEntitlementKey[];
|
|
160
|
+
/** One declared key, with its owner, or `null` when no plugin declares it. */
|
|
161
|
+
export declare function pluginEntitlementKey(key: string): ResolvedPluginEntitlementKey | null;
|
|
162
|
+
/** The plugin that declared a key, for attribution, or `undefined`. */
|
|
163
|
+
export declare function pluginIdForEntitlementKey(key: string): string | undefined;
|
|
164
|
+
/** The declared keys of one kind, with their owners, in registration order. */
|
|
165
|
+
export declare function listPluginEntitlementKeysOfKind(kind: PluginEntitlementKeyKind): ResolvedPluginEntitlementKey[];
|
|
166
|
+
/** Drops a plugin's declarations — what a bundle unloading calls. */
|
|
167
|
+
export declare function unregisterPluginEntitlementKeys(pluginId: string): void;
|
|
168
|
+
/** Test seam: forget every declaration. */
|
|
169
|
+
export declare function resetPluginEntitlementKeysForTests(): void;
|
|
@@ -0,0 +1,84 @@
|
|
|
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
|
+
const registrations = new Map();
|
|
19
|
+
function ownerOf(key) {
|
|
20
|
+
for (const entry of registrations.values()){
|
|
21
|
+
if (entry.keys.some((one)=>one.key === key)) return entry.pluginId;
|
|
22
|
+
}
|
|
23
|
+
return undefined;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Declares the entitlement keys a plugin owns. The owner is the loader's
|
|
27
|
+
* marker when a register fn is running, else `registration.pluginId`; with
|
|
28
|
+
* neither the registration throws. Idempotent per plugin — re-registering
|
|
29
|
+
* replaces that plugin's declarations. A key another plugin declared refuses
|
|
30
|
+
* the whole registration, naming both.
|
|
31
|
+
*/ export function registerPluginEntitlementKeys(registration) {
|
|
32
|
+
var _ref, _getRegisteringPluginId;
|
|
33
|
+
const pluginId = ((_ref = (_getRegisteringPluginId = getRegisteringPluginId()) != null ? _getRegisteringPluginId : registration.pluginId) != null ? _ref : '').trim();
|
|
34
|
+
if (!pluginId) {
|
|
35
|
+
throw new Error('plugin entitlement keys registered with no owner: pass ' + '{ pluginId } when registering outside a plugin register fn');
|
|
36
|
+
}
|
|
37
|
+
const keys = registration.keys.map((declaration)=>{
|
|
38
|
+
var _ref;
|
|
39
|
+
var _declaration_key, _declaration_label;
|
|
40
|
+
const key = (_ref = (_declaration_key = declaration.key) == null ? void 0 : _declaration_key.trim()) != null ? _ref : '';
|
|
41
|
+
if (!key) throw new Error('a plugin entitlement key needs a key');
|
|
42
|
+
if (!((_declaration_label = declaration.label) == null ? void 0 : _declaration_label.trim())) {
|
|
43
|
+
throw new Error(`plugin entitlement key "${key}" needs a label`);
|
|
44
|
+
}
|
|
45
|
+
const owner = ownerOf(key);
|
|
46
|
+
if (owner && owner !== pluginId) {
|
|
47
|
+
throw new Error(`entitlement key "${key}" is already declared by "${owner}"; ` + `refused "${pluginId}"`);
|
|
48
|
+
}
|
|
49
|
+
return _extends({}, declaration, {
|
|
50
|
+
key
|
|
51
|
+
});
|
|
52
|
+
});
|
|
53
|
+
registrations.set(pluginId, {
|
|
54
|
+
pluginId,
|
|
55
|
+
keys
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
/** Every declared key, with its owner, in registration order. */ export function listPluginEntitlementKeys() {
|
|
59
|
+
return [
|
|
60
|
+
...registrations.values()
|
|
61
|
+
].flatMap((entry)=>entry.keys.map((one)=>_extends({}, one, {
|
|
62
|
+
pluginId: entry.pluginId
|
|
63
|
+
})));
|
|
64
|
+
}
|
|
65
|
+
/** One declared key, with its owner, or `null` when no plugin declares it. */ export function pluginEntitlementKey(key) {
|
|
66
|
+
var _listPluginEntitlementKeys_find;
|
|
67
|
+
const wanted = key.trim();
|
|
68
|
+
return (_listPluginEntitlementKeys_find = listPluginEntitlementKeys().find((one)=>one.key === wanted)) != null ? _listPluginEntitlementKeys_find : null;
|
|
69
|
+
}
|
|
70
|
+
/** The plugin that declared a key, for attribution, or `undefined`. */ export function pluginIdForEntitlementKey(key) {
|
|
71
|
+
var _pluginEntitlementKey;
|
|
72
|
+
return (_pluginEntitlementKey = pluginEntitlementKey(key)) == null ? void 0 : _pluginEntitlementKey.pluginId;
|
|
73
|
+
}
|
|
74
|
+
/** The declared keys of one kind, with their owners, in registration order. */ export function listPluginEntitlementKeysOfKind(kind) {
|
|
75
|
+
return listPluginEntitlementKeys().filter((one)=>one.kind === kind);
|
|
76
|
+
}
|
|
77
|
+
/** Drops a plugin's declarations — what a bundle unloading calls. */ export function unregisterPluginEntitlementKeys(pluginId) {
|
|
78
|
+
registrations.delete(pluginId.trim());
|
|
79
|
+
}
|
|
80
|
+
/** Test seam: forget every declaration. */ export function resetPluginEntitlementKeysForTests() {
|
|
81
|
+
registrations.clear();
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
//# sourceMappingURL=plugin-entitlement-keys.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/plugin-manager/plugin-entitlement-keys.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'\n\n/**\n * The TYPE half of a plugin's billing and access keys (AGL-3124).\n *\n * AGL-2940 built `registerPluginEntitlements`, and the registration migrated:\n * a plugin declares its seat add-ons, its feature flags, its lockdown levers\n * and its permissions, and the catalogs that used to be edited per key read\n * the declarations. What did not migrate is the TYPE. `OrgEntitlements` and\n * `OrgFeatureFlags` still spell out keys named after seven plugin domains, so\n * a plugin can register a key the platform's own types have never heard of,\n * and a key it cannot register is one the platform still has to be edited\n * for.\n *\n * This module closes that half. The two interfaces below are EMPTY and are\n * meant to be augmented: a plugin declares the type of each key it owns with\n * `declare module`, and the core shapes compose from them rather than listing\n * them. The registry beside them is the runtime twin — what a staff page, a\n * migration or a support answer reads to say which plugin a key came from, and\n * what refuses two plugins claiming one key before either can resolve it.\n *\n * ```ts\n * // libs/plugins/cellar — the plugin's own module\n * declare module '@aglyn/aglyn/plugin-manager/plugin-entitlement-keys' {\n * interface PluginEntitlementQuotas {\n * bottlesPerHost?: number\n * }\n * interface PluginEntitlementFeatures {\n * cellarTastings?: boolean\n * }\n * }\n * ```\n *\n * From then on `entitlements.bottlesPerHost` type-checks everywhere\n * `OrgEntitlements` is read, and nothing in the core names a bottle.\n *\n * ## Why the interfaces are declared here and not beside the shapes\n *\n * The augmentation target has to be a module a plugin may import, and a plugin\n * imports the plugin-manager seams by design. The billing types are on the\n * package's public surface and are read through the foundation barrel, which a\n * published page must never reach; the composition is a type-only edge in that\n * direction, which TypeScript erases, so the shapes gain the plugin half\n * without the graph gaining an edge.\n *\n * ## The NUMBERS stay where they are checked\n *\n * A key's price is not here and must not come here. A seat add-on's price is a\n * row in `PLAN_PRICING`, read by the Stripe wiring and reconciled by\n * `check-pricing-drift`; a declaration names the key and what the key MEANS,\n * and nothing here restates a price. That is the same line\n * `plugin-entitlements` draws, for the same reason: two places that both hold\n * a number are two places that can disagree about what a customer is charged.\n *\n * ## One key, one owner\n *\n * A key is stored under an organization's entitlements and resolved into what\n * that organization may do. Two plugins declaring one key would be two meanings for\n * one stored value, so a key another plugin declared is refused naming both,\n * and the whole registration is refused with it — half a plugin's keys landing\n * would be worse than none.\n */\n\n/**\n * Quota and limit keys plugins add to `OrgEntitlements`. Augment with\n * `declare module`, declaring each key OPTIONAL — an entitlement is resolved\n * and may be absent, exactly like every key the core declares.\n */\nexport interface PluginEntitlementQuotas {}\n\n/** Feature flags plugins add to `OrgFeatureFlags`, on the same terms. */\nexport interface PluginEntitlementFeatures {}\n\n/**\n * The two halves above as MAPPED types, for composing into a type alias\n * rather than into an interface.\n *\n * Not a style choice. TypeScript hands an implicit string index signature to a\n * mapped type and withholds it from an interface, and several readers pass a\n * resolved entitlements or features object where a `Record<string, boolean>`\n * or `Record<string, unknown>` is wanted — a quota line reading every number,\n * a digest reading every gate. Intersecting `Required<CoreOrgFeatureFlags>`\n * with the raw interface loses that index signature and those readers stop\n * compiling, for a plugin half that is empty. Mapping it keeps them.\n *\n * An interface is still what a plugin AUGMENTS: `declare module` merges into\n * an interface and not into a type alias, so the pair is the augmentation\n * target and its composable form, and the mapping follows whatever is\n * declared.\n */\nexport type PluginOrgQuotas = {\n [Key in keyof PluginEntitlementQuotas]: PluginEntitlementQuotas[Key]\n}\n/** See {@link PluginOrgQuotas}. */\nexport type PluginOrgFeatures = {\n [Key in keyof PluginEntitlementFeatures]: PluginEntitlementFeatures[Key]\n}\n\n/**\n * What a declared key is, which is what decides where it is read.\n *\n * There is deliberately no third kind for a plugin's SETTINGS block on the\n * organization document. `org-write-deny-coverage.spec.ts` enumerates that\n * document's fields by reading `org-billing.types.ts`'s source and checks each\n * one against the Firestore write-deny rules, so a field declared from a\n * plugin's own file would be a hole in a rules-coverage guard. A plugin's\n * settings already have a home that is not a hole:\n * `registerPluginConfigSchema` stores them at `pluginSettings/{pluginId}`,\n * which is its own document under its own rule.\n */\nexport type PluginEntitlementKeyKind =\n /** A number in `OrgEntitlements`: a limit, a band, an allowance. */\n | 'quota'\n /** A boolean in `OrgFeatureFlags`. */\n | 'feature'\n\nexport interface PluginEntitlementKeyDeclaration {\n /** The stored key, exactly as the org document spells it. */\n key: string\n kind: PluginEntitlementKeyKind\n /** What a staff page and a support answer call it. */\n label: string\n /**\n * What the key means — for a quota, what it counts and what it does not.\n * The confusions this platform has already had (a catalog cap read as a\n * traffic cap, a daily pace read as a monthly band) all came from a key\n * whose name said something narrower or wider than it meant.\n */\n description?: string\n}\n\nexport interface PluginEntitlementKeyRegistration {\n pluginId: string\n keys: readonly PluginEntitlementKeyDeclaration[]\n}\n\n/** A declaration with the plugin that made it. */\nexport type ResolvedPluginEntitlementKey = PluginEntitlementKeyDeclaration & {\n pluginId: string\n}\n\nconst registrations = new Map<string, PluginEntitlementKeyRegistration>()\n\nfunction ownerOf(key: string): string | undefined {\n for (const entry of registrations.values()) {\n if (entry.keys.some((one) => one.key === key)) return entry.pluginId\n }\n return undefined\n}\n\n/**\n * Declares the entitlement keys a plugin owns. The owner is the loader's\n * marker when a register fn is running, else `registration.pluginId`; with\n * neither the registration throws. Idempotent per plugin — re-registering\n * replaces that plugin's declarations. A key another plugin declared refuses\n * the whole registration, naming both.\n */\nexport function registerPluginEntitlementKeys(\n registration: PluginEntitlementKeyRegistration,\n): void {\n const pluginId = (\n getRegisteringPluginId() ??\n registration.pluginId ??\n ''\n ).trim()\n if (!pluginId) {\n throw new Error(\n 'plugin entitlement keys registered with no owner: pass ' +\n '{ pluginId } when registering outside a plugin register fn',\n )\n }\n const keys = registration.keys.map((declaration) => {\n const key = declaration.key?.trim() ?? ''\n if (!key) throw new Error('a plugin entitlement key needs a key')\n if (!declaration.label?.trim()) {\n throw new Error(`plugin entitlement key \"${key}\" needs a label`)\n }\n const owner = ownerOf(key)\n if (owner && owner !== pluginId) {\n throw new Error(\n `entitlement key \"${key}\" is already declared by \"${owner}\"; ` +\n `refused \"${pluginId}\"`,\n )\n }\n return { ...declaration, key }\n })\n registrations.set(pluginId, { pluginId, keys })\n}\n\n/** Every declared key, with its owner, in registration order. */\nexport function listPluginEntitlementKeys(): ResolvedPluginEntitlementKey[] {\n return [...registrations.values()].flatMap((entry) =>\n entry.keys.map((one) => ({ ...one, pluginId: entry.pluginId })),\n )\n}\n\n/** One declared key, with its owner, or `null` when no plugin declares it. */\nexport function pluginEntitlementKey(\n key: string,\n): ResolvedPluginEntitlementKey | null {\n const wanted = key.trim()\n return (\n listPluginEntitlementKeys().find((one) => one.key === wanted) ?? null\n )\n}\n\n/** The plugin that declared a key, for attribution, or `undefined`. */\nexport function pluginIdForEntitlementKey(key: string): string | undefined {\n return pluginEntitlementKey(key)?.pluginId\n}\n\n/** The declared keys of one kind, with their owners, in registration order. */\nexport function listPluginEntitlementKeysOfKind(\n kind: PluginEntitlementKeyKind,\n): ResolvedPluginEntitlementKey[] {\n return listPluginEntitlementKeys().filter((one) => one.kind === kind)\n}\n\n/** Drops a plugin's declarations — what a bundle unloading calls. */\nexport function unregisterPluginEntitlementKeys(pluginId: string): void {\n registrations.delete(pluginId.trim())\n}\n\n/** Test seam: forget every declaration. */\nexport function resetPluginEntitlementKeysForTests(): void {\n registrations.clear()\n}\n"],"names":["getRegisteringPluginId","registrations","Map","ownerOf","key","entry","values","keys","some","one","pluginId","undefined","registerPluginEntitlementKeys","registration","trim","Error","map","declaration","label","owner","set","listPluginEntitlementKeys","flatMap","pluginEntitlementKey","wanted","find","pluginIdForEntitlementKey","listPluginEntitlementKeysOfKind","kind","filter","unregisterPluginEntitlementKeys","delete","resetPluginEntitlementKeysForTests","clear"],"mappings":";AAAA;;;;;;;;;;;;;;;CAeC,GAED,SAASA,sBAAsB,QAAQ,qCAAiC;AA6IxE,MAAMC,gBAAgB,IAAIC;AAE1B,SAASC,QAAQC,GAAW;IAC1B,KAAK,MAAMC,SAASJ,cAAcK,MAAM,GAAI;QAC1C,IAAID,MAAME,IAAI,CAACC,IAAI,CAAC,CAACC,MAAQA,IAAIL,GAAG,KAAKA,MAAM,OAAOC,MAAMK,QAAQ;IACtE;IACA,OAAOC;AACT;AAEA;;;;;;CAMC,GACD,OAAO,SAASC,8BACdC,YAA8C;QAG5Cb,MAAAA;IADF,MAAMU,WAAW,EACfV,QAAAA,0BAAAA,oCAAAA,0BACAa,aAAaH,QAAQ,YADrBV,OAEA,IACAc,IAAI;IACN,IAAI,CAACJ,UAAU;QACb,MAAM,IAAIK,MACR,4DACE;IAEN;IACA,MAAMR,OAAOM,aAAaN,IAAI,CAACS,GAAG,CAAC,CAACC;;YACtBA,kBAEPA;QAFL,MAAMb,eAAMa,mBAAAA,YAAYb,GAAG,qBAAfa,iBAAiBH,IAAI,qBAAM;QACvC,IAAI,CAACV,KAAK,MAAM,IAAIW,MAAM;QAC1B,IAAI,GAACE,qBAAAA,YAAYC,KAAK,qBAAjBD,mBAAmBH,IAAI,KAAI;YAC9B,MAAM,IAAIC,MAAM,CAAC,wBAAwB,EAAEX,IAAI,eAAe,CAAC;QACjE;QACA,MAAMe,QAAQhB,QAAQC;QACtB,IAAIe,SAASA,UAAUT,UAAU;YAC/B,MAAM,IAAIK,MACR,CAAC,iBAAiB,EAAEX,IAAI,0BAA0B,EAAEe,MAAM,GAAG,CAAC,GAC5D,CAAC,SAAS,EAAET,SAAS,CAAC,CAAC;QAE7B;QACA,OAAO,aAAKO;YAAab;;IAC3B;IACAH,cAAcmB,GAAG,CAACV,UAAU;QAAEA;QAAUH;IAAK;AAC/C;AAEA,+DAA+D,GAC/D,OAAO,SAASc;IACd,OAAO;WAAIpB,cAAcK,MAAM;KAAG,CAACgB,OAAO,CAAC,CAACjB,QAC1CA,MAAME,IAAI,CAACS,GAAG,CAAC,CAACP,MAAS,aAAKA;gBAAKC,UAAUL,MAAMK,QAAQ;;AAE/D;AAEA,4EAA4E,GAC5E,OAAO,SAASa,qBACdnB,GAAW;QAITiB;IAFF,MAAMG,SAASpB,IAAIU,IAAI;IACvB,QACEO,kCAAAA,4BAA4BI,IAAI,CAAC,CAAChB,MAAQA,IAAIL,GAAG,KAAKoB,mBAAtDH,kCAAiE;AAErE;AAEA,qEAAqE,GACrE,OAAO,SAASK,0BAA0BtB,GAAW;QAC5CmB;IAAP,QAAOA,wBAAAA,qBAAqBnB,yBAArBmB,sBAA2Bb,QAAQ;AAC5C;AAEA,6EAA6E,GAC7E,OAAO,SAASiB,gCACdC,IAA8B;IAE9B,OAAOP,4BAA4BQ,MAAM,CAAC,CAACpB,MAAQA,IAAImB,IAAI,KAAKA;AAClE;AAEA,mEAAmE,GACnE,OAAO,SAASE,gCAAgCpB,QAAgB;IAC9DT,cAAc8B,MAAM,CAACrB,SAASI,IAAI;AACpC;AAEA,yCAAyC,GACzC,OAAO,SAASkB;IACd/B,cAAcgC,KAAK;AACrB"}
|
|
@@ -0,0 +1,181 @@
|
|
|
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
|
+
* Plugin-declared billing and access keys (AGL-2940).
|
|
19
|
+
*
|
|
20
|
+
* A plugin that sells something, gates something, or can be switched off in
|
|
21
|
+
* an incident declares the KEYS here — a seat add-on, a feature flag, a
|
|
22
|
+
* lockdown lever, a permission — and the core catalogs that used to be
|
|
23
|
+
* edited for each one read the declarations instead:
|
|
24
|
+
*
|
|
25
|
+
* - `plan-entitlements` folds every registered seat add-on into
|
|
26
|
+
* `resolveOrgEntitlements` (a quota raised per unit, features switched on)
|
|
27
|
+
* and answers a registered feature's plan defaults;
|
|
28
|
+
* - `lockdown` lists a registered lever on the staff page, carries its label,
|
|
29
|
+
* its staff-bypass rule and its visitor notice, and maps the API paths it
|
|
30
|
+
* names onto it for the plugin dispatcher;
|
|
31
|
+
* - `plugin-permissions` receives the permissions with the owner filled in;
|
|
32
|
+
* - `org-permissions` folds every declared catalog key into the org
|
|
33
|
+
* permission catalog — the role editor, custom roles, per-member overrides
|
|
34
|
+
* and the rules stamp — and `host-permissions` decides the keys that
|
|
35
|
+
* declare host-role defaults for a site collaborator, per site.
|
|
36
|
+
*
|
|
37
|
+
* The NUMBERS stay where they are checked. A seat add-on's price is a row in
|
|
38
|
+
* `PLAN_PRICING`, read by the Stripe wiring and reconciled by
|
|
39
|
+
* `check-pricing-drift`; a declaration names the quota it widens and by how
|
|
40
|
+
* much per plan, and nothing here restates a price.
|
|
41
|
+
*
|
|
42
|
+
* Registration order is deterministic: the catalog order of
|
|
43
|
+
* `FIRST_PARTY_PLUGINS`, then any other id alphabetically. Plugin modules
|
|
44
|
+
* load in parallel, so the order they REGISTER in is whatever the network
|
|
45
|
+
* gave, and a list that followed it would put the staff lockdown checklist
|
|
46
|
+
* in a different order per session.
|
|
47
|
+
*/
|
|
48
|
+
import type { HostAccessRole, OrgPlan, OrgRole } from '../foundation';
|
|
49
|
+
import { type PluginPermission } from './plugin-permissions';
|
|
50
|
+
export interface PluginSeatAddonDeclaration {
|
|
51
|
+
/** The `org.seatAddons` key the purchase is stored under (`aiAddon`). */
|
|
52
|
+
key: string;
|
|
53
|
+
label: string;
|
|
54
|
+
/**
|
|
55
|
+
* How many purchased units count. `1` for an org-wide add-on that is
|
|
56
|
+
* bought once, where a doubled webhook item or a hand edit above one is
|
|
57
|
+
* still one purchase; absent to count the stored quantity.
|
|
58
|
+
*/
|
|
59
|
+
maxUnits?: number;
|
|
60
|
+
/**
|
|
61
|
+
* The quota each unit widens, per plan: the resolved entitlement named by
|
|
62
|
+
* `key` gains `perUnitByPlan[plan] × units`. A plan the add-on is not sold
|
|
63
|
+
* on declares 0.
|
|
64
|
+
*/
|
|
65
|
+
quota?: {
|
|
66
|
+
key: string;
|
|
67
|
+
perUnitByPlan: Readonly<Record<OrgPlan, number>>;
|
|
68
|
+
};
|
|
69
|
+
/** Feature flags a purchased unit switches on. */
|
|
70
|
+
features?: readonly string[];
|
|
71
|
+
}
|
|
72
|
+
export interface PluginFeatureDeclaration {
|
|
73
|
+
/** The `OrgFeatureFlags` key. */
|
|
74
|
+
key: string;
|
|
75
|
+
label: string;
|
|
76
|
+
/**
|
|
77
|
+
* The plan defaults, when the key is not one the plan tables already
|
|
78
|
+
* carry. Absent means the plan tables decide, which is the case for every
|
|
79
|
+
* key that predates this registry.
|
|
80
|
+
*/
|
|
81
|
+
defaultByPlan?: Readonly<Partial<Record<OrgPlan, boolean>>>;
|
|
82
|
+
}
|
|
83
|
+
export interface PluginLockdownFeatureDeclaration {
|
|
84
|
+
/** The lever's wire identity (`ai-generate`). */
|
|
85
|
+
key: string;
|
|
86
|
+
/** The staff checklist's label. */
|
|
87
|
+
label: string;
|
|
88
|
+
/**
|
|
89
|
+
* Whether a verified staff claim passes the lock. Granted where a staff
|
|
90
|
+
* action aids incident response — one real call proves a provider is back
|
|
91
|
+
* — and withheld where the staff action would BE the incident.
|
|
92
|
+
*/
|
|
93
|
+
staffBypass: boolean;
|
|
94
|
+
/**
|
|
95
|
+
* What a visitor reads while the lever is pulled: what is paused AND what
|
|
96
|
+
* still works. The expected-back window is appended by the notice builder.
|
|
97
|
+
*/
|
|
98
|
+
notice: {
|
|
99
|
+
title: string;
|
|
100
|
+
body: string;
|
|
101
|
+
};
|
|
102
|
+
/**
|
|
103
|
+
* Plugin API paths the lever gates at the dispatcher: exact paths, and
|
|
104
|
+
* prefixes matched on a segment boundary (`ai/generate` also gates
|
|
105
|
+
* `ai/generate/section`, never `ai/generated-report`).
|
|
106
|
+
*/
|
|
107
|
+
apiPaths?: {
|
|
108
|
+
exact?: readonly string[];
|
|
109
|
+
prefixes?: readonly string[];
|
|
110
|
+
};
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* A key a plugin adds to the org permission CATALOG (AGL-2984): the granular
|
|
114
|
+
* map custom roles and per-member overrides are stored in, that
|
|
115
|
+
* `resolveOrgPermissions` layers and the rules stamp carries, and that the
|
|
116
|
+
* role editor lists. A declared key is stored, layered and resolved exactly
|
|
117
|
+
* like a core key; the declaration supplies what a core key's catalog entry
|
|
118
|
+
* and role table supply.
|
|
119
|
+
*/
|
|
120
|
+
export interface PluginOrgPermissionDeclaration {
|
|
121
|
+
/** The dotted key a custom role and a per-member override store (`reviews.reply`). */
|
|
122
|
+
key: string;
|
|
123
|
+
/** The role editor's line for the key, and the word a refusal names. */
|
|
124
|
+
label: string;
|
|
125
|
+
/** What the key opens, under the label in the role editor. */
|
|
126
|
+
description: string;
|
|
127
|
+
/** Each org role's verdict when no custom role or per-member override sets the key. */
|
|
128
|
+
roleDefaults: Readonly<Record<OrgRole, boolean>>;
|
|
129
|
+
/**
|
|
130
|
+
* Each HOST role's verdict, for a key a site collaborator holds per site.
|
|
131
|
+
*
|
|
132
|
+
* A collaborator's membership carries no org standing to refine — it
|
|
133
|
+
* exists only to carry access to named sites — so a key with this field is
|
|
134
|
+
* decided for them on the site a request names: the host role they hold
|
|
135
|
+
* there, refined by the per-site toggle on their member document. A key
|
|
136
|
+
* without it is never held by a collaborator.
|
|
137
|
+
*/
|
|
138
|
+
hostRoleDefaults?: Readonly<Record<HostAccessRole, boolean>>;
|
|
139
|
+
}
|
|
140
|
+
export interface PluginEntitlementRegistration {
|
|
141
|
+
pluginId: string;
|
|
142
|
+
seatAddons?: readonly PluginSeatAddonDeclaration[];
|
|
143
|
+
features?: readonly PluginFeatureDeclaration[];
|
|
144
|
+
lockdownFeatures?: readonly PluginLockdownFeatureDeclaration[];
|
|
145
|
+
/** Per-tier keys a plugin's own pages read (`registerPluginPermissions`). */
|
|
146
|
+
permissions?: readonly Omit<PluginPermission, 'pluginId'>[];
|
|
147
|
+
/** Keys added to the org permission catalog — see {@link PluginOrgPermissionDeclaration}. */
|
|
148
|
+
orgPermissions?: readonly PluginOrgPermissionDeclaration[];
|
|
149
|
+
}
|
|
150
|
+
/** Calls `listener` after every registration and reset; answers the unsubscribe. */
|
|
151
|
+
export declare function subscribePluginEntitlements(listener: () => void): () => void;
|
|
152
|
+
/**
|
|
153
|
+
* Idempotent per plugin — re-registration replaces that plugin's
|
|
154
|
+
* declarations. A seat add-on, lockdown or catalog permission key another
|
|
155
|
+
* plugin already owns refuses the whole registration: one key, one owner,
|
|
156
|
+
* or the two declarations disagree about what the key means.
|
|
157
|
+
*/
|
|
158
|
+
export declare function registerPluginEntitlements(registration: PluginEntitlementRegistration): void;
|
|
159
|
+
/** Every declared catalog permission, in catalog order, with the plugin that declared it. */
|
|
160
|
+
export declare function listPluginOrgPermissions(): Array<PluginOrgPermissionDeclaration & {
|
|
161
|
+
pluginId: string;
|
|
162
|
+
}>;
|
|
163
|
+
/** Every declared seat add-on, in catalog order. */
|
|
164
|
+
export declare function listPluginSeatAddons(): PluginSeatAddonDeclaration[];
|
|
165
|
+
/** One declared seat add-on by its `seatAddons` key. */
|
|
166
|
+
export declare function pluginSeatAddon(key: string): PluginSeatAddonDeclaration | undefined;
|
|
167
|
+
/** Every declared feature, in catalog order. */
|
|
168
|
+
export declare function listPluginFeatures(): PluginFeatureDeclaration[];
|
|
169
|
+
/** Every declared lockdown lever, in catalog order. */
|
|
170
|
+
export declare function listPluginLockdownFeatures(): PluginLockdownFeatureDeclaration[];
|
|
171
|
+
/** One declared lockdown lever by key. */
|
|
172
|
+
export declare function pluginLockdownFeature(key: string): PluginLockdownFeatureDeclaration | undefined;
|
|
173
|
+
/** The plugin that declared a lockdown lever, for attribution. */
|
|
174
|
+
export declare function pluginIdForLockdownFeature(key: string): string | undefined;
|
|
175
|
+
/** Every registration, in catalog order. */
|
|
176
|
+
export declare function listPluginEntitlementRegistrations(): PluginEntitlementRegistration[];
|
|
177
|
+
/**
|
|
178
|
+
* Test seam: forget every registration. The per-tier permissions stay
|
|
179
|
+
* registered; the catalog permissions go with their registrations.
|
|
180
|
+
*/
|
|
181
|
+
export declare function resetPluginEntitlementsForTests(): void;
|
|
@@ -0,0 +1,188 @@
|
|
|
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
|
+
* Plugin-declared billing and access keys (AGL-2940).
|
|
18
|
+
*
|
|
19
|
+
* A plugin that sells something, gates something, or can be switched off in
|
|
20
|
+
* an incident declares the KEYS here — a seat add-on, a feature flag, a
|
|
21
|
+
* lockdown lever, a permission — and the core catalogs that used to be
|
|
22
|
+
* edited for each one read the declarations instead:
|
|
23
|
+
*
|
|
24
|
+
* - `plan-entitlements` folds every registered seat add-on into
|
|
25
|
+
* `resolveOrgEntitlements` (a quota raised per unit, features switched on)
|
|
26
|
+
* and answers a registered feature's plan defaults;
|
|
27
|
+
* - `lockdown` lists a registered lever on the staff page, carries its label,
|
|
28
|
+
* its staff-bypass rule and its visitor notice, and maps the API paths it
|
|
29
|
+
* names onto it for the plugin dispatcher;
|
|
30
|
+
* - `plugin-permissions` receives the permissions with the owner filled in;
|
|
31
|
+
* - `org-permissions` folds every declared catalog key into the org
|
|
32
|
+
* permission catalog — the role editor, custom roles, per-member overrides
|
|
33
|
+
* and the rules stamp — and `host-permissions` decides the keys that
|
|
34
|
+
* declare host-role defaults for a site collaborator, per site.
|
|
35
|
+
*
|
|
36
|
+
* The NUMBERS stay where they are checked. A seat add-on's price is a row in
|
|
37
|
+
* `PLAN_PRICING`, read by the Stripe wiring and reconciled by
|
|
38
|
+
* `check-pricing-drift`; a declaration names the quota it widens and by how
|
|
39
|
+
* much per plan, and nothing here restates a price.
|
|
40
|
+
*
|
|
41
|
+
* Registration order is deterministic: the catalog order of
|
|
42
|
+
* `FIRST_PARTY_PLUGINS`, then any other id alphabetically. Plugin modules
|
|
43
|
+
* load in parallel, so the order they REGISTER in is whatever the network
|
|
44
|
+
* gave, and a list that followed it would put the staff lockdown checklist
|
|
45
|
+
* in a different order per session.
|
|
46
|
+
*/ import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
47
|
+
import { FIRST_PARTY_PLUGINS } from "./enabled-plugins.js";
|
|
48
|
+
import { registerPluginPermissions } from "./plugin-permissions.js";
|
|
49
|
+
const registrations = new Map();
|
|
50
|
+
/**
|
|
51
|
+
* Readers of the registrations that keep a derived view in step with them —
|
|
52
|
+
* the org permission catalog rebuilds itself on every registration and
|
|
53
|
+
* reset, because a plugin's declarations can register after a module that
|
|
54
|
+
* imported the catalog was evaluated.
|
|
55
|
+
*/ const listeners = new Set();
|
|
56
|
+
/** Calls `listener` after every registration and reset; answers the unsubscribe. */ export function subscribePluginEntitlements(listener) {
|
|
57
|
+
listeners.add(listener);
|
|
58
|
+
return ()=>{
|
|
59
|
+
listeners.delete(listener);
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
function notifyListeners() {
|
|
63
|
+
for (const listener of [
|
|
64
|
+
...listeners
|
|
65
|
+
])listener();
|
|
66
|
+
}
|
|
67
|
+
const CATALOG_ORDER = new Map(FIRST_PARTY_PLUGINS.map((plugin, index)=>[
|
|
68
|
+
plugin.id,
|
|
69
|
+
index
|
|
70
|
+
]));
|
|
71
|
+
function catalogRank(pluginId) {
|
|
72
|
+
var _CATALOG_ORDER_get;
|
|
73
|
+
return (_CATALOG_ORDER_get = CATALOG_ORDER.get(pluginId)) != null ? _CATALOG_ORDER_get : Number.MAX_SAFE_INTEGER;
|
|
74
|
+
}
|
|
75
|
+
function orderedRegistrations() {
|
|
76
|
+
return [
|
|
77
|
+
...registrations.values()
|
|
78
|
+
].sort((a, b)=>catalogRank(a.pluginId) - catalogRank(b.pluginId) || a.pluginId.localeCompare(b.pluginId));
|
|
79
|
+
}
|
|
80
|
+
function refuseStolenKeys(pluginId, kind, keys, ownerOf) {
|
|
81
|
+
for (const key of keys){
|
|
82
|
+
const owner = ownerOf(key);
|
|
83
|
+
if (owner && owner !== pluginId) {
|
|
84
|
+
throw new Error(`${kind} "${key}" is already declared by "${owner}"; refused "${pluginId}"`);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Idempotent per plugin — re-registration replaces that plugin's
|
|
90
|
+
* declarations. A seat add-on, lockdown or catalog permission key another
|
|
91
|
+
* plugin already owns refuses the whole registration: one key, one owner,
|
|
92
|
+
* or the two declarations disagree about what the key means.
|
|
93
|
+
*/ export function registerPluginEntitlements(registration) {
|
|
94
|
+
var _registration_seatAddons, _registration_lockdownFeatures, _registration_orgPermissions;
|
|
95
|
+
var _registration_permissions;
|
|
96
|
+
const pluginId = registration.pluginId.trim();
|
|
97
|
+
if (!pluginId) throw new Error('plugin entitlements need a pluginId');
|
|
98
|
+
refuseStolenKeys(pluginId, 'seat add-on', ((_registration_seatAddons = registration.seatAddons) != null ? _registration_seatAddons : []).map((entry)=>entry.key), (key)=>pluginSeatAddonOwner(key));
|
|
99
|
+
refuseStolenKeys(pluginId, 'lockdown feature', ((_registration_lockdownFeatures = registration.lockdownFeatures) != null ? _registration_lockdownFeatures : []).map((entry)=>entry.key), (key)=>pluginLockdownFeatureOwner(key));
|
|
100
|
+
refuseStolenKeys(pluginId, 'org permission', ((_registration_orgPermissions = registration.orgPermissions) != null ? _registration_orgPermissions : []).map((entry)=>entry.key), (key)=>pluginOrgPermissionOwner(key));
|
|
101
|
+
registrations.set(pluginId, _extends({}, registration, {
|
|
102
|
+
pluginId
|
|
103
|
+
}));
|
|
104
|
+
if ((_registration_permissions = registration.permissions) == null ? void 0 : _registration_permissions.length) {
|
|
105
|
+
registerPluginPermissions(registration.permissions.map((permission)=>_extends({}, permission, {
|
|
106
|
+
pluginId
|
|
107
|
+
})));
|
|
108
|
+
}
|
|
109
|
+
notifyListeners();
|
|
110
|
+
}
|
|
111
|
+
function pluginSeatAddonOwner(key) {
|
|
112
|
+
for (const entry of registrations.values()){
|
|
113
|
+
var _entry_seatAddons;
|
|
114
|
+
if ((_entry_seatAddons = entry.seatAddons) == null ? void 0 : _entry_seatAddons.some((addon)=>addon.key === key)) return entry.pluginId;
|
|
115
|
+
}
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
function pluginLockdownFeatureOwner(key) {
|
|
119
|
+
for (const entry of registrations.values()){
|
|
120
|
+
var _entry_lockdownFeatures;
|
|
121
|
+
if ((_entry_lockdownFeatures = entry.lockdownFeatures) == null ? void 0 : _entry_lockdownFeatures.some((feature)=>feature.key === key)) {
|
|
122
|
+
return entry.pluginId;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
function pluginOrgPermissionOwner(key) {
|
|
128
|
+
for (const entry of registrations.values()){
|
|
129
|
+
var _entry_orgPermissions;
|
|
130
|
+
if ((_entry_orgPermissions = entry.orgPermissions) == null ? void 0 : _entry_orgPermissions.some((permission)=>permission.key === key)) {
|
|
131
|
+
return entry.pluginId;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
/** Every declared catalog permission, in catalog order, with the plugin that declared it. */ export function listPluginOrgPermissions() {
|
|
137
|
+
return orderedRegistrations().flatMap((entry)=>{
|
|
138
|
+
var _entry_orgPermissions;
|
|
139
|
+
return ((_entry_orgPermissions = entry.orgPermissions) != null ? _entry_orgPermissions : []).map((permission)=>_extends({}, permission, {
|
|
140
|
+
pluginId: entry.pluginId
|
|
141
|
+
}));
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
/** Every declared seat add-on, in catalog order. */ export function listPluginSeatAddons() {
|
|
145
|
+
return orderedRegistrations().flatMap((entry)=>{
|
|
146
|
+
var _entry_seatAddons;
|
|
147
|
+
return [
|
|
148
|
+
...(_entry_seatAddons = entry.seatAddons) != null ? _entry_seatAddons : []
|
|
149
|
+
];
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
/** One declared seat add-on by its `seatAddons` key. */ export function pluginSeatAddon(key) {
|
|
153
|
+
return listPluginSeatAddons().find((entry)=>entry.key === key);
|
|
154
|
+
}
|
|
155
|
+
/** Every declared feature, in catalog order. */ export function listPluginFeatures() {
|
|
156
|
+
return orderedRegistrations().flatMap((entry)=>{
|
|
157
|
+
var _entry_features;
|
|
158
|
+
return [
|
|
159
|
+
...(_entry_features = entry.features) != null ? _entry_features : []
|
|
160
|
+
];
|
|
161
|
+
});
|
|
162
|
+
}
|
|
163
|
+
/** Every declared lockdown lever, in catalog order. */ export function listPluginLockdownFeatures() {
|
|
164
|
+
return orderedRegistrations().flatMap((entry)=>{
|
|
165
|
+
var _entry_lockdownFeatures;
|
|
166
|
+
return [
|
|
167
|
+
...(_entry_lockdownFeatures = entry.lockdownFeatures) != null ? _entry_lockdownFeatures : []
|
|
168
|
+
];
|
|
169
|
+
});
|
|
170
|
+
}
|
|
171
|
+
/** One declared lockdown lever by key. */ export function pluginLockdownFeature(key) {
|
|
172
|
+
return listPluginLockdownFeatures().find((entry)=>entry.key === key);
|
|
173
|
+
}
|
|
174
|
+
/** The plugin that declared a lockdown lever, for attribution. */ export function pluginIdForLockdownFeature(key) {
|
|
175
|
+
return pluginLockdownFeatureOwner(key);
|
|
176
|
+
}
|
|
177
|
+
/** Every registration, in catalog order. */ export function listPluginEntitlementRegistrations() {
|
|
178
|
+
return orderedRegistrations();
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Test seam: forget every registration. The per-tier permissions stay
|
|
182
|
+
* registered; the catalog permissions go with their registrations.
|
|
183
|
+
*/ export function resetPluginEntitlementsForTests() {
|
|
184
|
+
registrations.clear();
|
|
185
|
+
notifyListeners();
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
//# sourceMappingURL=plugin-entitlements.js.map
|