@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,238 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ import { _ as _extends } from "@swc/helpers/_/_extends";
|
|
17
|
+
/**
|
|
18
|
+
* Where the commercial keys live now that they are off the org doc (AGL-1028).
|
|
19
|
+
*
|
|
20
|
+
* `orgs/{orgId}` has to stay readable by any member — it carries `plan` and
|
|
21
|
+
* `entitlements`, which every console surface gates features on, so denying it
|
|
22
|
+
* locks a site collaborator out of the site they were invited to. Firestore has
|
|
23
|
+
* no field-level reads, so the only way to narrow "readable" is to move the
|
|
24
|
+
* fields somewhere with its own rule. This subcollection is that somewhere, and
|
|
25
|
+
* it is gated on `canManageOrg()`.
|
|
26
|
+
*
|
|
27
|
+
* What did NOT move, and why. AGL-1028 originally listed `seatAddons` and all
|
|
28
|
+
* of `subscription` as movers; measuring the readers changed that:
|
|
29
|
+
*
|
|
30
|
+
* - `plan` / `entitlements` — the whole reason the org doc stays readable.
|
|
31
|
+
* - `seatAddons` — NOT a commercial secret, an ENTITLEMENT INPUT.
|
|
32
|
+
* `resolveOrgEntitlements` stacks it on top of the plan: `seatAddons.hosts`
|
|
33
|
+
* raises `hostLimit`, `posRegisters` raises `posRegisters`, `eventCalendar`
|
|
34
|
+
* switches a feature on. It resolves at 29 call sites including the tenant
|
|
35
|
+
* runtime and non-manager console components — none of which can read a
|
|
36
|
+
* manager-gated doc. Moving it would silently drop every paying org to base
|
|
37
|
+
* plan limits for exactly the users the org doc stays readable for.
|
|
38
|
+
* - `subscription.status`, as the derived `billingStatus` mirror — same reason.
|
|
39
|
+
* `resolveEffectivePlan` downgrades a paid plan to free on a dead
|
|
40
|
+
* subscription, and `resolvePurchasedAddons` stops counting add-ons on one.
|
|
41
|
+
* Entitlement resolution therefore needs the status word, so the status word
|
|
42
|
+
* cannot be manager-gated. The rest of `subscription` — price ids, amounts,
|
|
43
|
+
* interval, period end, custom enterprise pricing — moves.
|
|
44
|
+
* - `suspendedAt` / `suspendedReason` — the tenant runtime reads suspension on
|
|
45
|
+
* EVERY published page render, off an org doc it already fetches for plan and
|
|
46
|
+
* branding. Moving it would add a Firestore read to the hot path AGL-1152 is
|
|
47
|
+
* trying to shrink, and would hide nothing: the org doc stays member-readable
|
|
48
|
+
* regardless. "Your sites are offline" is also something every member needs
|
|
49
|
+
* to see, unlike a Stripe customer id.
|
|
50
|
+
*
|
|
51
|
+
* So what a scoped collaborator can still see is their plan, their capacity and
|
|
52
|
+
* a status word — the things they need — and what they lose is the Stripe
|
|
53
|
+
* customer id, price ids, amounts, billing interval, renewal date and any
|
|
54
|
+
* negotiated enterprise rate.
|
|
55
|
+
*/ export const ORG_BILLING_SUBCOLLECTION = 'billing';
|
|
56
|
+
/**
|
|
57
|
+
* Single document id, not one doc per concern. The reads are always "all of
|
|
58
|
+
* it" (the billing page, the webhook, the staff MRR roll-up), so splitting it
|
|
59
|
+
* would only buy extra round trips.
|
|
60
|
+
*/ export const ORG_BILLING_DOC_ID = 'stripe';
|
|
61
|
+
/**
|
|
62
|
+
* Reverse index `stripeCustomers/{stripeCustomerId} -> { orgId }`, written by
|
|
63
|
+
* the webhook alongside the billing doc.
|
|
64
|
+
*
|
|
65
|
+
* It exists because the webhook has to answer "which org is this Stripe
|
|
66
|
+
* customer?" on `invoice.payment_failed`, and it did that with
|
|
67
|
+
* `.where('stripeCustomerId', '==', …)` on the orgs collection. Once the field
|
|
68
|
+
* moves into a subcollection that query cannot work: the alternative is a
|
|
69
|
+
* collection-group query, which needs a collection-group index that the
|
|
70
|
+
* emulator will never ask for and production will (AGL-1028). A mapping doc is
|
|
71
|
+
* an O(1) `get`, needs no index, and stops the webhook scanning `orgs` at all.
|
|
72
|
+
*
|
|
73
|
+
* Admin-SDK only — nothing client-side has any business reading it.
|
|
74
|
+
*/ export const STRIPE_CUSTOMER_INDEX_COLLECTION = 'stripeCustomers';
|
|
75
|
+
/**
|
|
76
|
+
* The keys that moved off `orgs/{orgId}` and into the billing doc.
|
|
77
|
+
*
|
|
78
|
+
* `seatAddons` is deliberately NOT here — see the note above; it is an
|
|
79
|
+
* entitlement input, not a commercial secret.
|
|
80
|
+
*/ export const ORG_BILLING_MOVED_KEYS = [
|
|
81
|
+
'stripeCustomerId',
|
|
82
|
+
'subscription'
|
|
83
|
+
];
|
|
84
|
+
/**
|
|
85
|
+
* The TEST-mode Stripe customer id, stored beside the live one (AGL-2486).
|
|
86
|
+
*
|
|
87
|
+
* `stripeCustomerId` held ONE id with no notion of Stripe livemode, so an org
|
|
88
|
+
* that had been through live checkout could never be exercised in test mode
|
|
89
|
+
* and vice versa: every billing call answered
|
|
90
|
+
*
|
|
91
|
+
* No such customer: 'cus_…'; a similar object exists in live mode, but a
|
|
92
|
+
* test mode key was used to make this request.
|
|
93
|
+
*
|
|
94
|
+
* — a raw 502 out of `/api/billing/checkout`, `/invoices` and `/addons`. For a
|
|
95
|
+
* team running both modes against ONE Firestore that is permanent, and it made
|
|
96
|
+
* the test-mode path we need before September 1 unusable on any real org.
|
|
97
|
+
*
|
|
98
|
+
* Worse than the 502, and the reason this is a stored-shape change rather than
|
|
99
|
+
* a better error message: a test-mode run that COMPLETED would write its test
|
|
100
|
+
* customer into the single slot and destroy the live linkage — silently, with
|
|
101
|
+
* every subsequent live invoice scattering onto a customer the Billing page no
|
|
102
|
+
* longer queries.
|
|
103
|
+
*
|
|
104
|
+
* ## Why a second field and not a mode-keyed map
|
|
105
|
+
*
|
|
106
|
+
* The live id stays at `stripeCustomerId`, untouched. That makes the migration
|
|
107
|
+
* EMPTY — every value production holds today was written by a `sk_live_`
|
|
108
|
+
* deployment and is already in the right slot — and it makes the change a
|
|
109
|
+
* NO-OP in live mode by construction: the live path reads the same field name
|
|
110
|
+
* it always read. Only test mode, which is 100% broken today, behaves
|
|
111
|
+
* differently. A `{live,test}` map would have required rewriting every
|
|
112
|
+
* existing document to gain nothing.
|
|
113
|
+
*
|
|
114
|
+
* The `stripeCustomers` reverse index needs NO equivalent treatment: it is
|
|
115
|
+
* keyed BY the customer id, and Stripe customer ids are unique across modes, so
|
|
116
|
+
* a test and a live entry are simply two documents that both resolve to the
|
|
117
|
+
* same org. That is why this fix is contained.
|
|
118
|
+
*
|
|
119
|
+
* Physical field names are an implementation detail of `org-billing.ts` — read
|
|
120
|
+
* and write through `readOrgBilling`/`writeOrgBilling`, which project the
|
|
121
|
+
* deployment's mode onto the logical `stripeCustomerId` key. Nothing else
|
|
122
|
+
* should name this constant.
|
|
123
|
+
*/ export const STRIPE_CUSTOMER_ID_TEST_FIELD = 'stripeCustomerIdTest';
|
|
124
|
+
/**
|
|
125
|
+
* Picks the moved keys off an org-shaped object, dropping `undefined` so a
|
|
126
|
+
* partial update never writes holes over good data.
|
|
127
|
+
*
|
|
128
|
+
* `null` is preserved deliberately — the webhook uses it to mean "Stripe says
|
|
129
|
+
* this is gone", which is a real value and not an absence.
|
|
130
|
+
*/ export function pickOrgBillingFields(source) {
|
|
131
|
+
const out = {};
|
|
132
|
+
if (!source) return out;
|
|
133
|
+
for (const key of ORG_BILLING_MOVED_KEYS){
|
|
134
|
+
if (source[key] !== undefined) out[key] = source[key];
|
|
135
|
+
}
|
|
136
|
+
return out;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* The status string to mirror onto the org doc for the dunning banner.
|
|
140
|
+
*
|
|
141
|
+
* Returns `null` when there is no subscription at all, which the banner treats
|
|
142
|
+
* the same as a healthy one — a pre-billing workspace is not in dunning.
|
|
143
|
+
*/ export function orgBillingStatusFrom(billing) {
|
|
144
|
+
var _billing_subscription;
|
|
145
|
+
const status = billing == null ? void 0 : (_billing_subscription = billing.subscription) == null ? void 0 : _billing_subscription.status;
|
|
146
|
+
return typeof status === 'string' && status ? status : null;
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Subscription statuses that mean "this org is already subscribed" (AGL-1715).
|
|
150
|
+
*
|
|
151
|
+
* A STATUS test rather than a "has a subscription record" test, and that is the
|
|
152
|
+
* part worth preserving: the record — and the `stripeCustomerId` beside it —
|
|
153
|
+
* both survive cancellation, so the naive form would lock every churned
|
|
154
|
+
* workspace out of ever paying us again. `incomplete`, `incomplete_expired` and
|
|
155
|
+
* `unpaid` are out from the other side: there is no live subscription to
|
|
156
|
+
* protect and a new one is the buyer's only way forward.
|
|
157
|
+
*
|
|
158
|
+
* `past_due` IS live. A second subscription does not settle the first one's
|
|
159
|
+
* unpaid invoice; it adds a charge beside it. Dunning is paid through the
|
|
160
|
+
* invoices and portal routes.
|
|
161
|
+
*
|
|
162
|
+
* THE list, not A list. `live-subscription-status-single-source.spec.ts` fails
|
|
163
|
+
* the build if this triple is spelled out anywhere else in the repo without an
|
|
164
|
+
* `AGL-1715-EXEMPT:` line saying why that copy answers a different question.
|
|
165
|
+
*/ const LIVE_SUBSCRIPTION_STATUSES = [
|
|
166
|
+
'active',
|
|
167
|
+
'trialing',
|
|
168
|
+
'past_due'
|
|
169
|
+
];
|
|
170
|
+
/**
|
|
171
|
+
* True when a subscription STATUS word means the subscription is live.
|
|
172
|
+
*
|
|
173
|
+
* The status-string half of the predicate, for the call sites that hold a
|
|
174
|
+
* Stripe subscription object rather than an org billing document — the
|
|
175
|
+
* `subscriptions?customer=…&status=all` list responses in
|
|
176
|
+
* `/api/billing/subscription`, `/api/billing/addons` and
|
|
177
|
+
* `/api/admin/org-discount`, and the webhook status word that
|
|
178
|
+
* `metered-backfill` decides on. Those cannot be typed as an `OrgBillingDoc`
|
|
179
|
+
* without lying, and wrapping them in one just to unwrap it again is a cast
|
|
180
|
+
* that hides the shape. Same list, one entry point per shape.
|
|
181
|
+
*/ export function isLiveSubscriptionStatus(status) {
|
|
182
|
+
return typeof status === 'string' && LIVE_SUBSCRIPTION_STATUSES.includes(status);
|
|
183
|
+
}
|
|
184
|
+
/**
|
|
185
|
+
* True when this org already has a live subscription and must not be sold or
|
|
186
|
+
* provisioned a second one (AGL-1697, AGL-1714).
|
|
187
|
+
*
|
|
188
|
+
* Lives here rather than at the call site because the failure mode of the
|
|
189
|
+
* copies is asymmetric in the expensive direction: if one call site's list ever
|
|
190
|
+
* narrows relative to another's, a subscribed org gets sold a second
|
|
191
|
+
* subscription and both bill. AGL-1715 repointed the older inline copies at
|
|
192
|
+
* this predicate (or at `isLiveSubscriptionStatus` where the value in hand is
|
|
193
|
+
* a Stripe object): the Billing page, `/api/billing/checkout`,
|
|
194
|
+
* `/api/billing/subscription`, `/api/billing/addons`,
|
|
195
|
+
* `/api/admin/org-discount` and `utils/server/metered-backfill`.
|
|
196
|
+
*/ export function isOrgSubscriptionLive(billing) {
|
|
197
|
+
return isLiveSubscriptionStatus(orgBillingStatusFrom(billing));
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* True when an org record still carries the moved keys inline — i.e. it has not
|
|
201
|
+
* been through the backfill yet. Used by the read path to decide whether the
|
|
202
|
+
* org doc is a trustworthy fallback, and by the backfill to skip work it has
|
|
203
|
+
* already done.
|
|
204
|
+
*/ export function hasInlineOrgBilling(source) {
|
|
205
|
+
if (!source) return false;
|
|
206
|
+
return ORG_BILLING_MOVED_KEYS.some((key)=>source[key] !== undefined);
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Merge the manager-gated billing doc over an org doc WITHOUT letting the
|
|
210
|
+
* billing doc's identity win (AGL-1991).
|
|
211
|
+
*
|
|
212
|
+
* The billing page merges `orgs/{orgId}/billing/stripe` over `orgs/{orgId}` so
|
|
213
|
+
* that every `org.subscription…` reference keeps working after AGL-1028 moved
|
|
214
|
+
* those keys. The trap: the console's `useConfirmedDoc` stamps the DOCUMENT ID
|
|
215
|
+
* into the payload it hands back (`{ $id: id, ...payload }`), so the billing
|
|
216
|
+
* doc arrives carrying `$id === ORG_BILLING_DOC_ID` — the literal string
|
|
217
|
+
* `'stripe'`. A plain spread puts that second, so the merged object's `$id`
|
|
218
|
+
* silently became `'stripe'` and every child deriving its org id from it read
|
|
219
|
+
* `orgs/stripe/…`, which is not an org and is denied by the rules.
|
|
220
|
+
*
|
|
221
|
+
* That is why this is a helper and not an inline `$id:` re-assert at the call
|
|
222
|
+
* site: `useConfirmedDoc` stamping `$id` makes ANY merge of two documents
|
|
223
|
+
* identity-swapping, so the safe merge belongs somewhere it can be reused and
|
|
224
|
+
* named rather than re-derived correctly each time.
|
|
225
|
+
*
|
|
226
|
+
* The org doc's `$id` wins unconditionally — including when it is absent, in
|
|
227
|
+
* which case the result carries no `$id` at all rather than inheriting the
|
|
228
|
+
* billing doc's. A missing org id must read as "unknown", never as a
|
|
229
|
+
* confidently wrong path.
|
|
230
|
+
*/ export function mergeOrgBillingOverOrg(orgDoc, orgBilling) {
|
|
231
|
+
const merged = _extends({}, orgDoc != null ? orgDoc : {}, orgBilling != null ? orgBilling : {});
|
|
232
|
+
// Restore the org document's identity, whatever the billing doc claimed.
|
|
233
|
+
if (orgDoc && '$id' in orgDoc) merged['$id'] = orgDoc['$id'];
|
|
234
|
+
else delete merged['$id'];
|
|
235
|
+
return merged;
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
//# sourceMappingURL=org-billing-doc.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/org-billing-doc.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport type { OrgSeatAddons, OrgSubscription } from '../foundation/definitions/org-billing.types'\n\n/**\n * Where the commercial keys live now that they are off the org doc (AGL-1028).\n *\n * `orgs/{orgId}` has to stay readable by any member — it carries `plan` and\n * `entitlements`, which every console surface gates features on, so denying it\n * locks a site collaborator out of the site they were invited to. Firestore has\n * no field-level reads, so the only way to narrow \"readable\" is to move the\n * fields somewhere with its own rule. This subcollection is that somewhere, and\n * it is gated on `canManageOrg()`.\n *\n * What did NOT move, and why. AGL-1028 originally listed `seatAddons` and all\n * of `subscription` as movers; measuring the readers changed that:\n *\n * - `plan` / `entitlements` — the whole reason the org doc stays readable.\n * - `seatAddons` — NOT a commercial secret, an ENTITLEMENT INPUT.\n * `resolveOrgEntitlements` stacks it on top of the plan: `seatAddons.hosts`\n * raises `hostLimit`, `posRegisters` raises `posRegisters`, `eventCalendar`\n * switches a feature on. It resolves at 29 call sites including the tenant\n * runtime and non-manager console components — none of which can read a\n * manager-gated doc. Moving it would silently drop every paying org to base\n * plan limits for exactly the users the org doc stays readable for.\n * - `subscription.status`, as the derived `billingStatus` mirror — same reason.\n * `resolveEffectivePlan` downgrades a paid plan to free on a dead\n * subscription, and `resolvePurchasedAddons` stops counting add-ons on one.\n * Entitlement resolution therefore needs the status word, so the status word\n * cannot be manager-gated. The rest of `subscription` — price ids, amounts,\n * interval, period end, custom enterprise pricing — moves.\n * - `suspendedAt` / `suspendedReason` — the tenant runtime reads suspension on\n * EVERY published page render, off an org doc it already fetches for plan and\n * branding. Moving it would add a Firestore read to the hot path AGL-1152 is\n * trying to shrink, and would hide nothing: the org doc stays member-readable\n * regardless. \"Your sites are offline\" is also something every member needs\n * to see, unlike a Stripe customer id.\n *\n * So what a scoped collaborator can still see is their plan, their capacity and\n * a status word — the things they need — and what they lose is the Stripe\n * customer id, price ids, amounts, billing interval, renewal date and any\n * negotiated enterprise rate.\n */\nexport const ORG_BILLING_SUBCOLLECTION = 'billing'\n\n/**\n * Single document id, not one doc per concern. The reads are always \"all of\n * it\" (the billing page, the webhook, the staff MRR roll-up), so splitting it\n * would only buy extra round trips.\n */\nexport const ORG_BILLING_DOC_ID = 'stripe'\n\n/**\n * Reverse index `stripeCustomers/{stripeCustomerId} -> { orgId }`, written by\n * the webhook alongside the billing doc.\n *\n * It exists because the webhook has to answer \"which org is this Stripe\n * customer?\" on `invoice.payment_failed`, and it did that with\n * `.where('stripeCustomerId', '==', …)` on the orgs collection. Once the field\n * moves into a subcollection that query cannot work: the alternative is a\n * collection-group query, which needs a collection-group index that the\n * emulator will never ask for and production will (AGL-1028). A mapping doc is\n * an O(1) `get`, needs no index, and stops the webhook scanning `orgs` at all.\n *\n * Admin-SDK only — nothing client-side has any business reading it.\n */\nexport const STRIPE_CUSTOMER_INDEX_COLLECTION = 'stripeCustomers'\n\n/**\n * The keys that moved off `orgs/{orgId}` and into the billing doc.\n *\n * `seatAddons` is deliberately NOT here — see the note above; it is an\n * entitlement input, not a commercial secret.\n */\nexport const ORG_BILLING_MOVED_KEYS = [\n 'stripeCustomerId',\n 'subscription',\n] as const\n\nexport type OrgBillingMovedKey = (typeof ORG_BILLING_MOVED_KEYS)[number]\n\n/**\n * The TEST-mode Stripe customer id, stored beside the live one (AGL-2486).\n *\n * `stripeCustomerId` held ONE id with no notion of Stripe livemode, so an org\n * that had been through live checkout could never be exercised in test mode\n * and vice versa: every billing call answered\n *\n * No such customer: 'cus_…'; a similar object exists in live mode, but a\n * test mode key was used to make this request.\n *\n * — a raw 502 out of `/api/billing/checkout`, `/invoices` and `/addons`. For a\n * team running both modes against ONE Firestore that is permanent, and it made\n * the test-mode path we need before September 1 unusable on any real org.\n *\n * Worse than the 502, and the reason this is a stored-shape change rather than\n * a better error message: a test-mode run that COMPLETED would write its test\n * customer into the single slot and destroy the live linkage — silently, with\n * every subsequent live invoice scattering onto a customer the Billing page no\n * longer queries.\n *\n * ## Why a second field and not a mode-keyed map\n *\n * The live id stays at `stripeCustomerId`, untouched. That makes the migration\n * EMPTY — every value production holds today was written by a `sk_live_`\n * deployment and is already in the right slot — and it makes the change a\n * NO-OP in live mode by construction: the live path reads the same field name\n * it always read. Only test mode, which is 100% broken today, behaves\n * differently. A `{live,test}` map would have required rewriting every\n * existing document to gain nothing.\n *\n * The `stripeCustomers` reverse index needs NO equivalent treatment: it is\n * keyed BY the customer id, and Stripe customer ids are unique across modes, so\n * a test and a live entry are simply two documents that both resolve to the\n * same org. That is why this fix is contained.\n *\n * Physical field names are an implementation detail of `org-billing.ts` — read\n * and write through `readOrgBilling`/`writeOrgBilling`, which project the\n * deployment's mode onto the logical `stripeCustomerId` key. Nothing else\n * should name this constant.\n */\nexport const STRIPE_CUSTOMER_ID_TEST_FIELD = 'stripeCustomerIdTest'\n\n/** The manager-gated document's shape. */\nexport interface OrgBillingDoc {\n stripeCustomerId?: string | null\n /**\n * The test-mode twin. Present on the stored document only; the accessors\n * collapse the pair to `stripeCustomerId` for every reader.\n */\n stripeCustomerIdTest?: string | null\n subscription?: OrgSubscription | null\n}\n\n/**\n * `seatAddons` stays on the org doc, so this is the shape of what the org doc\n * still carries commercially. Named for clarity at the call sites that have to\n * keep the two apart.\n */\nexport interface OrgInlineBilling {\n seatAddons?: OrgSeatAddons | null\n billingStatus?: string | null\n}\n\n/**\n * The non-sensitive mirror that STAYS on the org doc.\n *\n * The AGL-275 dunning banner keys on `subscription.status === 'past_due'` and\n * is shown to every member on purpose — a contractor who cannot see the invoice\n * still benefits from knowing the workspace is about to lapse. Putting\n * `subscription` behind `canManageOrg()` would have silently switched that\n * banner off for non-managers, so the webhook mirrors the status string (and\n * nothing else: no amounts, no price ids, no customer id) back onto the org doc\n * for the banner to read.\n */\nexport type OrgBillingStatus = string\n\n/**\n * Picks the moved keys off an org-shaped object, dropping `undefined` so a\n * partial update never writes holes over good data.\n *\n * `null` is preserved deliberately — the webhook uses it to mean \"Stripe says\n * this is gone\", which is a real value and not an absence.\n */\nexport function pickOrgBillingFields(\n source: Partial<Record<OrgBillingMovedKey, unknown>> | null | undefined,\n): Partial<OrgBillingDoc> {\n const out: Record<string, unknown> = {}\n if (!source) return out\n for (const key of ORG_BILLING_MOVED_KEYS) {\n if (source[key] !== undefined) out[key] = source[key]\n }\n return out as Partial<OrgBillingDoc>\n}\n\n/**\n * The status string to mirror onto the org doc for the dunning banner.\n *\n * Returns `null` when there is no subscription at all, which the banner treats\n * the same as a healthy one — a pre-billing workspace is not in dunning.\n */\nexport function orgBillingStatusFrom(\n billing: Partial<OrgBillingDoc> | null | undefined,\n): OrgBillingStatus | null {\n const status = (billing?.subscription as { status?: unknown } | null | undefined)?.status\n return typeof status === 'string' && status ? status : null\n}\n\n/**\n * Subscription statuses that mean \"this org is already subscribed\" (AGL-1715).\n *\n * A STATUS test rather than a \"has a subscription record\" test, and that is the\n * part worth preserving: the record — and the `stripeCustomerId` beside it —\n * both survive cancellation, so the naive form would lock every churned\n * workspace out of ever paying us again. `incomplete`, `incomplete_expired` and\n * `unpaid` are out from the other side: there is no live subscription to\n * protect and a new one is the buyer's only way forward.\n *\n * `past_due` IS live. A second subscription does not settle the first one's\n * unpaid invoice; it adds a charge beside it. Dunning is paid through the\n * invoices and portal routes.\n *\n * THE list, not A list. `live-subscription-status-single-source.spec.ts` fails\n * the build if this triple is spelled out anywhere else in the repo without an\n * `AGL-1715-EXEMPT:` line saying why that copy answers a different question.\n */\nconst LIVE_SUBSCRIPTION_STATUSES = ['active', 'trialing', 'past_due']\n\n/**\n * True when a subscription STATUS word means the subscription is live.\n *\n * The status-string half of the predicate, for the call sites that hold a\n * Stripe subscription object rather than an org billing document — the\n * `subscriptions?customer=…&status=all` list responses in\n * `/api/billing/subscription`, `/api/billing/addons` and\n * `/api/admin/org-discount`, and the webhook status word that\n * `metered-backfill` decides on. Those cannot be typed as an `OrgBillingDoc`\n * without lying, and wrapping them in one just to unwrap it again is a cast\n * that hides the shape. Same list, one entry point per shape.\n */\nexport function isLiveSubscriptionStatus(status: unknown): boolean {\n return (\n typeof status === 'string' && LIVE_SUBSCRIPTION_STATUSES.includes(status)\n )\n}\n\n/**\n * True when this org already has a live subscription and must not be sold or\n * provisioned a second one (AGL-1697, AGL-1714).\n *\n * Lives here rather than at the call site because the failure mode of the\n * copies is asymmetric in the expensive direction: if one call site's list ever\n * narrows relative to another's, a subscribed org gets sold a second\n * subscription and both bill. AGL-1715 repointed the older inline copies at\n * this predicate (or at `isLiveSubscriptionStatus` where the value in hand is\n * a Stripe object): the Billing page, `/api/billing/checkout`,\n * `/api/billing/subscription`, `/api/billing/addons`,\n * `/api/admin/org-discount` and `utils/server/metered-backfill`.\n */\nexport function isOrgSubscriptionLive(\n billing: Partial<OrgBillingDoc> | null | undefined,\n): boolean {\n return isLiveSubscriptionStatus(orgBillingStatusFrom(billing))\n}\n\n/**\n * True when an org record still carries the moved keys inline — i.e. it has not\n * been through the backfill yet. Used by the read path to decide whether the\n * org doc is a trustworthy fallback, and by the backfill to skip work it has\n * already done.\n */\nexport function hasInlineOrgBilling(\n source: Partial<Record<OrgBillingMovedKey, unknown>> | null | undefined,\n): boolean {\n if (!source) return false\n return ORG_BILLING_MOVED_KEYS.some((key) => source[key] !== undefined)\n}\n\n/**\n * Merge the manager-gated billing doc over an org doc WITHOUT letting the\n * billing doc's identity win (AGL-1991).\n *\n * The billing page merges `orgs/{orgId}/billing/stripe` over `orgs/{orgId}` so\n * that every `org.subscription…` reference keeps working after AGL-1028 moved\n * those keys. The trap: the console's `useConfirmedDoc` stamps the DOCUMENT ID\n * into the payload it hands back (`{ $id: id, ...payload }`), so the billing\n * doc arrives carrying `$id === ORG_BILLING_DOC_ID` — the literal string\n * `'stripe'`. A plain spread puts that second, so the merged object's `$id`\n * silently became `'stripe'` and every child deriving its org id from it read\n * `orgs/stripe/…`, which is not an org and is denied by the rules.\n *\n * That is why this is a helper and not an inline `$id:` re-assert at the call\n * site: `useConfirmedDoc` stamping `$id` makes ANY merge of two documents\n * identity-swapping, so the safe merge belongs somewhere it can be reused and\n * named rather than re-derived correctly each time.\n *\n * The org doc's `$id` wins unconditionally — including when it is absent, in\n * which case the result carries no `$id` at all rather than inheriting the\n * billing doc's. A missing org id must read as \"unknown\", never as a\n * confidently wrong path.\n */\nexport function mergeOrgBillingOverOrg<\n TOrg extends Record<string, unknown>,\n TBilling extends Record<string, unknown>,\n>(\n orgDoc: TOrg | null | undefined,\n orgBilling: TBilling | null | undefined,\n): TOrg & Partial<TBilling> {\n const merged = { ...(orgDoc ?? {}), ...(orgBilling ?? {}) } as Record<\n string,\n unknown\n >\n // Restore the org document's identity, whatever the billing doc claimed.\n if (orgDoc && '$id' in orgDoc) merged['$id'] = (orgDoc as Record<string, unknown>)['$id']\n else delete merged['$id']\n return merged as TOrg & Partial<TBilling>\n}\n"],"names":["ORG_BILLING_SUBCOLLECTION","ORG_BILLING_DOC_ID","STRIPE_CUSTOMER_INDEX_COLLECTION","ORG_BILLING_MOVED_KEYS","STRIPE_CUSTOMER_ID_TEST_FIELD","pickOrgBillingFields","source","out","key","undefined","orgBillingStatusFrom","billing","status","subscription","LIVE_SUBSCRIPTION_STATUSES","isLiveSubscriptionStatus","includes","isOrgSubscriptionLive","hasInlineOrgBilling","some","mergeOrgBillingOverOrg","orgDoc","orgBilling","merged"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC;AAID;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsCC,GACD,OAAO,MAAMA,4BAA4B,UAAS;AAElD;;;;CAIC,GACD,OAAO,MAAMC,qBAAqB,SAAQ;AAE1C;;;;;;;;;;;;;CAaC,GACD,OAAO,MAAMC,mCAAmC,kBAAiB;AAEjE;;;;;CAKC,GACD,OAAO,MAAMC,yBAAyB;IACpC;IACA;CACD,CAAS;AAIV;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCC,GACD,OAAO,MAAMC,gCAAgC,uBAAsB;AAoCnE;;;;;;CAMC,GACD,OAAO,SAASC,qBACdC,MAAuE;IAEvE,MAAMC,MAA+B,CAAC;IACtC,IAAI,CAACD,QAAQ,OAAOC;IACpB,KAAK,MAAMC,OAAOL,uBAAwB;QACxC,IAAIG,MAAM,CAACE,IAAI,KAAKC,WAAWF,GAAG,CAACC,IAAI,GAAGF,MAAM,CAACE,IAAI;IACvD;IACA,OAAOD;AACT;AAEA;;;;;CAKC,GACD,OAAO,SAASG,qBACdC,OAAkD;QAElCA;IAAhB,MAAMC,SAAUD,4BAAAA,wBAAAA,QAASE,YAAY,qBAAtB,AAACF,sBAAmEC,MAAM;IACzF,OAAO,OAAOA,WAAW,YAAYA,SAASA,SAAS;AACzD;AAEA;;;;;;;;;;;;;;;;;CAiBC,GACD,MAAME,6BAA6B;IAAC;IAAU;IAAY;CAAW;AAErE;;;;;;;;;;;CAWC,GACD,OAAO,SAASC,yBAAyBH,MAAe;IACtD,OACE,OAAOA,WAAW,YAAYE,2BAA2BE,QAAQ,CAACJ;AAEtE;AAEA;;;;;;;;;;;;CAYC,GACD,OAAO,SAASK,sBACdN,OAAkD;IAElD,OAAOI,yBAAyBL,qBAAqBC;AACvD;AAEA;;;;;CAKC,GACD,OAAO,SAASO,oBACdZ,MAAuE;IAEvE,IAAI,CAACA,QAAQ,OAAO;IACpB,OAAOH,uBAAuBgB,IAAI,CAAC,CAACX,MAAQF,MAAM,CAACE,IAAI,KAAKC;AAC9D;AAEA;;;;;;;;;;;;;;;;;;;;;;CAsBC,GACD,OAAO,SAASW,uBAIdC,MAA+B,EAC/BC,UAAuC;IAEvC,MAAMC,SAAS,aAAMF,iBAAAA,SAAU,CAAC,GAAQC,qBAAAA,aAAc,CAAC;IAIvD,yEAAyE;IACzE,IAAID,UAAU,SAASA,QAAQE,MAAM,CAAC,MAAM,GAAG,AAACF,MAAkC,CAAC,MAAM;SACpF,OAAOE,MAAM,CAAC,MAAM;IACzB,OAAOA;AACT"}
|
|
@@ -0,0 +1,100 @@
|
|
|
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
|
+
* WHY a staff org override was made (AGL-1652).
|
|
19
|
+
*
|
|
20
|
+
* The override dialog changes what an organization is ENTITLED to and BILLED
|
|
21
|
+
* against — since AGL-1635 it can also set `transactionFeePhysicalPct`,
|
|
22
|
+
* `transactionFeeDigitalPct` and `marketplaceFeePct`, and force an
|
|
23
|
+
* unreleased feature on for one paying customer. Its `adminAudit` row
|
|
24
|
+
* recorded the actor, the target and a full before/after, and nothing at all
|
|
25
|
+
* about why. `before`/`after` shows that a fee changed; only a reason can
|
|
26
|
+
* show it was the negotiated rate rather than a slip, and that question is
|
|
27
|
+
* asked months later during a billing dispute, when the row can no longer be
|
|
28
|
+
* back-filled.
|
|
29
|
+
*
|
|
30
|
+
* ## The field family is AGL-1501's, deliberately
|
|
31
|
+
*
|
|
32
|
+
* `reason` (a code from a fixed set) + `note` (free text, staff-only) is the
|
|
33
|
+
* shape lockdown and media quarantine already use, so an operator reading an
|
|
34
|
+
* audit row is reading the same two fields whichever staff action wrote it.
|
|
35
|
+
* What is NOT borrowed is the vocabulary: lockdown's
|
|
36
|
+
* security/billing/maintenance/manual describes an INCIDENT, and an override
|
|
37
|
+
* is not one. A negotiated enterprise rate recorded as "billing" is a record
|
|
38
|
+
* that cannot answer the only question anyone ever asks of it.
|
|
39
|
+
*
|
|
40
|
+
* The AGL-1512 `message` field is absent for the same kind of reason: a
|
|
41
|
+
* quarantine notice is shown to the customer, and an override reason is
|
|
42
|
+
* not — nothing here reaches a tenant surface.
|
|
43
|
+
*
|
|
44
|
+
* ## Required, and why a code rather than free text
|
|
45
|
+
*
|
|
46
|
+
* A required free-text box is defeated by typing "x", and a box that can be
|
|
47
|
+
* defeated that cheaply buys a false sense of a record. A fixed set cannot
|
|
48
|
+
* be: every value is one somebody has to stand behind, and the set is small
|
|
49
|
+
* enough to read as a distribution across a quarter.
|
|
50
|
+
*
|
|
51
|
+
* `other` is the escape hatch that keeps the set honest — without one, staff
|
|
52
|
+
* pick the nearest wrong code and the whole vocabulary rots. It is the one
|
|
53
|
+
* code that says nothing by itself, so it is the one code that REQUIRES the
|
|
54
|
+
* note: see {@link orgOverrideReasonNeedsNote}. Every other code may carry a
|
|
55
|
+
* note and does not need one.
|
|
56
|
+
*/
|
|
57
|
+
export type OrgOverrideReasonCode = 'enterprise' | 'support' | 'beta' | 'correction' | 'trial' | 'other';
|
|
58
|
+
export declare const ORG_OVERRIDE_REASON_CODES: OrgOverrideReasonCode[];
|
|
59
|
+
export declare function isOrgOverrideReasonCode(value: unknown): value is OrgOverrideReasonCode;
|
|
60
|
+
/** Staff-surface labels; the key stays the wire/audit identity. */
|
|
61
|
+
export declare const ORG_OVERRIDE_REASON_LABELS: Record<OrgOverrideReasonCode, string>;
|
|
62
|
+
/** Internal staff rationale — never shown to the customer. */
|
|
63
|
+
export declare const ORG_OVERRIDE_NOTE_MAX = 1000;
|
|
64
|
+
/**
|
|
65
|
+
* Does this code mean nothing without the note? Only `other` does. Keeping
|
|
66
|
+
* this a predicate rather than an inline `=== 'other'` is what lets the
|
|
67
|
+
* dialog's Save gate and any later server-side gate agree by construction.
|
|
68
|
+
*/
|
|
69
|
+
export declare function orgOverrideReasonNeedsNote(code: OrgOverrideReasonCode): boolean;
|
|
70
|
+
/** The two fields an `org.override` audit row carries beside before/after. */
|
|
71
|
+
export interface OrgOverrideReason {
|
|
72
|
+
reason: OrgOverrideReasonCode;
|
|
73
|
+
/**
|
|
74
|
+
* Explicit `null` when absent, never `undefined` — this value goes
|
|
75
|
+
* straight into a Firestore write, and Firestore rejects `undefined`.
|
|
76
|
+
*/
|
|
77
|
+
note: string | null;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* The ONE predicate for "is this a reason worth writing down".
|
|
81
|
+
*
|
|
82
|
+
* Returns `null` — never a defaulted value — when the code is unrecognised,
|
|
83
|
+
* or when `other` arrives without a note. A defaulted reason would be worse
|
|
84
|
+
* than none: it would put a code somebody never chose next to a fee change
|
|
85
|
+
* they did make.
|
|
86
|
+
*
|
|
87
|
+
* Whitespace-only notes are treated as absent, which is what makes the
|
|
88
|
+
* `other` gate real rather than a space-bar away from being satisfied.
|
|
89
|
+
*/
|
|
90
|
+
export declare function normalizeOrgOverrideReason(code: unknown, note?: unknown): OrgOverrideReason | null;
|
|
91
|
+
/**
|
|
92
|
+
* How an override reason reads on a staff surface: the label, plus the note
|
|
93
|
+
* when there is one. Shared so the audit log and the org detail page cannot
|
|
94
|
+
* drift into describing the same row two different ways.
|
|
95
|
+
*
|
|
96
|
+
* A row written before AGL-1652 has no reason at all, and says so — the gap
|
|
97
|
+
* is a fact about the record, and rendering it as blank would let a
|
|
98
|
+
* pre-AGL-1652 override pass for one nobody had to explain.
|
|
99
|
+
*/
|
|
100
|
+
export declare function orgOverrideReasonSummary(reason: unknown, note?: unknown): string | null;
|
|
@@ -0,0 +1,116 @@
|
|
|
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
|
+
* WHY a staff org override was made (AGL-1652).
|
|
18
|
+
*
|
|
19
|
+
* The override dialog changes what an organization is ENTITLED to and BILLED
|
|
20
|
+
* against — since AGL-1635 it can also set `transactionFeePhysicalPct`,
|
|
21
|
+
* `transactionFeeDigitalPct` and `marketplaceFeePct`, and force an
|
|
22
|
+
* unreleased feature on for one paying customer. Its `adminAudit` row
|
|
23
|
+
* recorded the actor, the target and a full before/after, and nothing at all
|
|
24
|
+
* about why. `before`/`after` shows that a fee changed; only a reason can
|
|
25
|
+
* show it was the negotiated rate rather than a slip, and that question is
|
|
26
|
+
* asked months later during a billing dispute, when the row can no longer be
|
|
27
|
+
* back-filled.
|
|
28
|
+
*
|
|
29
|
+
* ## The field family is AGL-1501's, deliberately
|
|
30
|
+
*
|
|
31
|
+
* `reason` (a code from a fixed set) + `note` (free text, staff-only) is the
|
|
32
|
+
* shape lockdown and media quarantine already use, so an operator reading an
|
|
33
|
+
* audit row is reading the same two fields whichever staff action wrote it.
|
|
34
|
+
* What is NOT borrowed is the vocabulary: lockdown's
|
|
35
|
+
* security/billing/maintenance/manual describes an INCIDENT, and an override
|
|
36
|
+
* is not one. A negotiated enterprise rate recorded as "billing" is a record
|
|
37
|
+
* that cannot answer the only question anyone ever asks of it.
|
|
38
|
+
*
|
|
39
|
+
* The AGL-1512 `message` field is absent for the same kind of reason: a
|
|
40
|
+
* quarantine notice is shown to the customer, and an override reason is
|
|
41
|
+
* not — nothing here reaches a tenant surface.
|
|
42
|
+
*
|
|
43
|
+
* ## Required, and why a code rather than free text
|
|
44
|
+
*
|
|
45
|
+
* A required free-text box is defeated by typing "x", and a box that can be
|
|
46
|
+
* defeated that cheaply buys a false sense of a record. A fixed set cannot
|
|
47
|
+
* be: every value is one somebody has to stand behind, and the set is small
|
|
48
|
+
* enough to read as a distribution across a quarter.
|
|
49
|
+
*
|
|
50
|
+
* `other` is the escape hatch that keeps the set honest — without one, staff
|
|
51
|
+
* pick the nearest wrong code and the whole vocabulary rots. It is the one
|
|
52
|
+
* code that says nothing by itself, so it is the one code that REQUIRES the
|
|
53
|
+
* note: see {@link orgOverrideReasonNeedsNote}. Every other code may carry a
|
|
54
|
+
* note and does not need one.
|
|
55
|
+
*/ const ORG_OVERRIDE_REASON_KEYS = {
|
|
56
|
+
enterprise: true,
|
|
57
|
+
support: true,
|
|
58
|
+
beta: true,
|
|
59
|
+
correction: true,
|
|
60
|
+
trial: true,
|
|
61
|
+
other: true
|
|
62
|
+
};
|
|
63
|
+
export const ORG_OVERRIDE_REASON_CODES = Object.keys(ORG_OVERRIDE_REASON_KEYS);
|
|
64
|
+
export function isOrgOverrideReasonCode(value) {
|
|
65
|
+
return typeof value === 'string' && value in ORG_OVERRIDE_REASON_KEYS;
|
|
66
|
+
}
|
|
67
|
+
/** Staff-surface labels; the key stays the wire/audit identity. */ export const ORG_OVERRIDE_REASON_LABELS = {
|
|
68
|
+
enterprise: 'Negotiated enterprise or custom contract',
|
|
69
|
+
support: 'Support remediation or goodwill',
|
|
70
|
+
beta: 'Early access to an unreleased feature',
|
|
71
|
+
correction: 'Correcting an earlier mistake',
|
|
72
|
+
trial: 'Sales trial or proof of concept',
|
|
73
|
+
other: 'Other — say what, below'
|
|
74
|
+
};
|
|
75
|
+
/** Internal staff rationale — never shown to the customer. */ export const ORG_OVERRIDE_NOTE_MAX = 1000;
|
|
76
|
+
/**
|
|
77
|
+
* Does this code mean nothing without the note? Only `other` does. Keeping
|
|
78
|
+
* this a predicate rather than an inline `=== 'other'` is what lets the
|
|
79
|
+
* dialog's Save gate and any later server-side gate agree by construction.
|
|
80
|
+
*/ export function orgOverrideReasonNeedsNote(code) {
|
|
81
|
+
return code === 'other';
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* The ONE predicate for "is this a reason worth writing down".
|
|
85
|
+
*
|
|
86
|
+
* Returns `null` — never a defaulted value — when the code is unrecognised,
|
|
87
|
+
* or when `other` arrives without a note. A defaulted reason would be worse
|
|
88
|
+
* than none: it would put a code somebody never chose next to a fee change
|
|
89
|
+
* they did make.
|
|
90
|
+
*
|
|
91
|
+
* Whitespace-only notes are treated as absent, which is what makes the
|
|
92
|
+
* `other` gate real rather than a space-bar away from being satisfied.
|
|
93
|
+
*/ export function normalizeOrgOverrideReason(code, note) {
|
|
94
|
+
if (!isOrgOverrideReasonCode(code)) return null;
|
|
95
|
+
const trimmed = typeof note === 'string' && note.trim() ? note.trim().slice(0, ORG_OVERRIDE_NOTE_MAX) : null;
|
|
96
|
+
if (orgOverrideReasonNeedsNote(code) && !trimmed) return null;
|
|
97
|
+
return {
|
|
98
|
+
reason: code,
|
|
99
|
+
note: trimmed
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* How an override reason reads on a staff surface: the label, plus the note
|
|
104
|
+
* when there is one. Shared so the audit log and the org detail page cannot
|
|
105
|
+
* drift into describing the same row two different ways.
|
|
106
|
+
*
|
|
107
|
+
* A row written before AGL-1652 has no reason at all, and says so — the gap
|
|
108
|
+
* is a fact about the record, and rendering it as blank would let a
|
|
109
|
+
* pre-AGL-1652 override pass for one nobody had to explain.
|
|
110
|
+
*/ export function orgOverrideReasonSummary(reason, note) {
|
|
111
|
+
if (!isOrgOverrideReasonCode(reason)) return null;
|
|
112
|
+
const label = ORG_OVERRIDE_REASON_LABELS[reason];
|
|
113
|
+
return typeof note === 'string' && note.trim() ? `${label} — ${note.trim()}` : label;
|
|
114
|
+
}
|
|
115
|
+
|
|
116
|
+
//# sourceMappingURL=org-override-reason.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/org-override-reason.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * WHY a staff org override was made (AGL-1652).\n *\n * The override dialog changes what an organization is ENTITLED to and BILLED\n * against — since AGL-1635 it can also set `transactionFeePhysicalPct`,\n * `transactionFeeDigitalPct` and `marketplaceFeePct`, and force an\n * unreleased feature on for one paying customer. Its `adminAudit` row\n * recorded the actor, the target and a full before/after, and nothing at all\n * about why. `before`/`after` shows that a fee changed; only a reason can\n * show it was the negotiated rate rather than a slip, and that question is\n * asked months later during a billing dispute, when the row can no longer be\n * back-filled.\n *\n * ## The field family is AGL-1501's, deliberately\n *\n * `reason` (a code from a fixed set) + `note` (free text, staff-only) is the\n * shape lockdown and media quarantine already use, so an operator reading an\n * audit row is reading the same two fields whichever staff action wrote it.\n * What is NOT borrowed is the vocabulary: lockdown's\n * security/billing/maintenance/manual describes an INCIDENT, and an override\n * is not one. A negotiated enterprise rate recorded as \"billing\" is a record\n * that cannot answer the only question anyone ever asks of it.\n *\n * The AGL-1512 `message` field is absent for the same kind of reason: a\n * quarantine notice is shown to the customer, and an override reason is\n * not — nothing here reaches a tenant surface.\n *\n * ## Required, and why a code rather than free text\n *\n * A required free-text box is defeated by typing \"x\", and a box that can be\n * defeated that cheaply buys a false sense of a record. A fixed set cannot\n * be: every value is one somebody has to stand behind, and the set is small\n * enough to read as a distribution across a quarter.\n *\n * `other` is the escape hatch that keeps the set honest — without one, staff\n * pick the nearest wrong code and the whole vocabulary rots. It is the one\n * code that says nothing by itself, so it is the one code that REQUIRES the\n * note: see {@link orgOverrideReasonNeedsNote}. Every other code may carry a\n * note and does not need one.\n */\nexport type OrgOverrideReasonCode =\n | 'enterprise'\n | 'support'\n | 'beta'\n | 'correction'\n | 'trial'\n | 'other'\n\nconst ORG_OVERRIDE_REASON_KEYS: Record<OrgOverrideReasonCode, true> = {\n enterprise: true,\n support: true,\n beta: true,\n correction: true,\n trial: true,\n other: true,\n}\n\nexport const ORG_OVERRIDE_REASON_CODES = Object.keys(\n ORG_OVERRIDE_REASON_KEYS,\n) as OrgOverrideReasonCode[]\n\nexport function isOrgOverrideReasonCode(\n value: unknown,\n): value is OrgOverrideReasonCode {\n return typeof value === 'string' && value in ORG_OVERRIDE_REASON_KEYS\n}\n\n/** Staff-surface labels; the key stays the wire/audit identity. */\nexport const ORG_OVERRIDE_REASON_LABELS: Record<\n OrgOverrideReasonCode,\n string\n> = {\n enterprise: 'Negotiated enterprise or custom contract',\n support: 'Support remediation or goodwill',\n beta: 'Early access to an unreleased feature',\n correction: 'Correcting an earlier mistake',\n trial: 'Sales trial or proof of concept',\n other: 'Other — say what, below',\n}\n\n/** Internal staff rationale — never shown to the customer. */\nexport const ORG_OVERRIDE_NOTE_MAX = 1000\n\n/**\n * Does this code mean nothing without the note? Only `other` does. Keeping\n * this a predicate rather than an inline `=== 'other'` is what lets the\n * dialog's Save gate and any later server-side gate agree by construction.\n */\nexport function orgOverrideReasonNeedsNote(\n code: OrgOverrideReasonCode,\n): boolean {\n return code === 'other'\n}\n\n/** The two fields an `org.override` audit row carries beside before/after. */\nexport interface OrgOverrideReason {\n reason: OrgOverrideReasonCode\n /**\n * Explicit `null` when absent, never `undefined` — this value goes\n * straight into a Firestore write, and Firestore rejects `undefined`.\n */\n note: string | null\n}\n\n/**\n * The ONE predicate for \"is this a reason worth writing down\".\n *\n * Returns `null` — never a defaulted value — when the code is unrecognised,\n * or when `other` arrives without a note. A defaulted reason would be worse\n * than none: it would put a code somebody never chose next to a fee change\n * they did make.\n *\n * Whitespace-only notes are treated as absent, which is what makes the\n * `other` gate real rather than a space-bar away from being satisfied.\n */\nexport function normalizeOrgOverrideReason(\n code: unknown,\n note?: unknown,\n): OrgOverrideReason | null {\n if (!isOrgOverrideReasonCode(code)) return null\n const trimmed =\n typeof note === 'string' && note.trim()\n ? note.trim().slice(0, ORG_OVERRIDE_NOTE_MAX)\n : null\n if (orgOverrideReasonNeedsNote(code) && !trimmed) return null\n return { reason: code, note: trimmed }\n}\n\n/**\n * How an override reason reads on a staff surface: the label, plus the note\n * when there is one. Shared so the audit log and the org detail page cannot\n * drift into describing the same row two different ways.\n *\n * A row written before AGL-1652 has no reason at all, and says so — the gap\n * is a fact about the record, and rendering it as blank would let a\n * pre-AGL-1652 override pass for one nobody had to explain.\n */\nexport function orgOverrideReasonSummary(\n reason: unknown,\n note?: unknown,\n): string | null {\n if (!isOrgOverrideReasonCode(reason)) return null\n const label = ORG_OVERRIDE_REASON_LABELS[reason]\n return typeof note === 'string' && note.trim()\n ? `${label} — ${note.trim()}`\n : label\n}\n"],"names":["ORG_OVERRIDE_REASON_KEYS","enterprise","support","beta","correction","trial","other","ORG_OVERRIDE_REASON_CODES","Object","keys","isOrgOverrideReasonCode","value","ORG_OVERRIDE_REASON_LABELS","ORG_OVERRIDE_NOTE_MAX","orgOverrideReasonNeedsNote","code","normalizeOrgOverrideReason","note","trimmed","trim","slice","reason","orgOverrideReasonSummary","label"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuCC,GASD,MAAMA,2BAAgE;IACpEC,YAAY;IACZC,SAAS;IACTC,MAAM;IACNC,YAAY;IACZC,OAAO;IACPC,OAAO;AACT;AAEA,OAAO,MAAMC,4BAA4BC,OAAOC,IAAI,CAClDT,0BAC0B;AAE5B,OAAO,SAASU,wBACdC,KAAc;IAEd,OAAO,OAAOA,UAAU,YAAYA,SAASX;AAC/C;AAEA,iEAAiE,GACjE,OAAO,MAAMY,6BAGT;IACFX,YAAY;IACZC,SAAS;IACTC,MAAM;IACNC,YAAY;IACZC,OAAO;IACPC,OAAO;AACT,EAAC;AAED,4DAA4D,GAC5D,OAAO,MAAMO,wBAAwB,KAAI;AAEzC;;;;CAIC,GACD,OAAO,SAASC,2BACdC,IAA2B;IAE3B,OAAOA,SAAS;AAClB;AAYA;;;;;;;;;;CAUC,GACD,OAAO,SAASC,2BACdD,IAAa,EACbE,IAAc;IAEd,IAAI,CAACP,wBAAwBK,OAAO,OAAO;IAC3C,MAAMG,UACJ,OAAOD,SAAS,YAAYA,KAAKE,IAAI,KACjCF,KAAKE,IAAI,GAAGC,KAAK,CAAC,GAAGP,yBACrB;IACN,IAAIC,2BAA2BC,SAAS,CAACG,SAAS,OAAO;IACzD,OAAO;QAAEG,QAAQN;QAAME,MAAMC;IAAQ;AACvC;AAEA;;;;;;;;CAQC,GACD,OAAO,SAASI,yBACdD,MAAe,EACfJ,IAAc;IAEd,IAAI,CAACP,wBAAwBW,SAAS,OAAO;IAC7C,MAAME,QAAQX,0BAA0B,CAACS,OAAO;IAChD,OAAO,OAAOJ,SAAS,YAAYA,KAAKE,IAAI,KACxC,GAAGI,MAAM,GAAG,EAAEN,KAAKE,IAAI,IAAI,GAC3BI;AACN"}
|