@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,268 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ /**
|
|
17
|
+
* The profile fields an identity provider sent, from wherever it put them
|
|
18
|
+
* (AGL-1131).
|
|
19
|
+
*
|
|
20
|
+
* AGL-1131 assumed mapping attributes in Google Workspace would be enough,
|
|
21
|
+
* because "GCIP surfaces mapped SAML attributes on the token" and the JIT
|
|
22
|
+
* path already reads `decoded['name']`. Measured after the mapping was
|
|
23
|
+
* added: the tenant auth record still had `displayName: null`, on both the
|
|
24
|
+
* account and its `saml.aglyn-workspace` provider entry, on a sign-in that
|
|
25
|
+
* definitely happened.
|
|
26
|
+
*
|
|
27
|
+
* The reason is that a SAML assertion's attributes arrive under
|
|
28
|
+
* `firebase.sign_in_attributes`, NOT as a top-level `name` claim. Nothing in
|
|
29
|
+
* the codebase read that, so mapping attributes correctly still produced
|
|
30
|
+
* nothing. OIDC providers do populate `name`, which is why the existing code
|
|
31
|
+
* looked right.
|
|
32
|
+
*
|
|
33
|
+
* Deliberately generous about attribute naming, because the name is chosen
|
|
34
|
+
* by the CUSTOMER's IdP admin, not by us. Workspace suggests `firstName`,
|
|
35
|
+
* ADFS emits the full schema URIs, Okta commonly uses `given_name`. Guessing
|
|
36
|
+
* wrong costs a blank name and a support ticket, so this checks all of them
|
|
37
|
+
* rather than picking a house style nobody else follows.
|
|
38
|
+
*/ /** Attribute keys that hold a complete display name, best first. */ const FULL_NAME_KEYS = [
|
|
39
|
+
'name',
|
|
40
|
+
'displayName',
|
|
41
|
+
'display_name',
|
|
42
|
+
'cn',
|
|
43
|
+
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name'
|
|
44
|
+
];
|
|
45
|
+
const FIRST_NAME_KEYS = [
|
|
46
|
+
'firstName',
|
|
47
|
+
'first_name',
|
|
48
|
+
'given_name',
|
|
49
|
+
'givenName',
|
|
50
|
+
'givenname',
|
|
51
|
+
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname'
|
|
52
|
+
];
|
|
53
|
+
const LAST_NAME_KEYS = [
|
|
54
|
+
'lastName',
|
|
55
|
+
'last_name',
|
|
56
|
+
'family_name',
|
|
57
|
+
'familyName',
|
|
58
|
+
'surname',
|
|
59
|
+
'sn',
|
|
60
|
+
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname'
|
|
61
|
+
];
|
|
62
|
+
/**
|
|
63
|
+
* A SAML attribute value may be a string or a single-element array — the
|
|
64
|
+
* assertion permits repeats, and GCIP passes the shape through.
|
|
65
|
+
*/ function readAttribute(bag, keys) {
|
|
66
|
+
if (!bag) return '';
|
|
67
|
+
for (const key of keys){
|
|
68
|
+
const raw = bag[key];
|
|
69
|
+
const value = Array.isArray(raw) ? raw[0] : raw;
|
|
70
|
+
const text = typeof value === 'string' ? value.trim() : '';
|
|
71
|
+
if (text) return text;
|
|
72
|
+
}
|
|
73
|
+
return '';
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Where GCIP puts a SAML assertion's attributes. Guarded rather than cast:
|
|
77
|
+
* this runs on EVERY interactive sign-in, including email/password accounts
|
|
78
|
+
* that have no `firebase` claim at all.
|
|
79
|
+
*/ function signInAttributes(decoded) {
|
|
80
|
+
const firebase = decoded.firebase;
|
|
81
|
+
if (!firebase || typeof firebase !== 'object') return undefined;
|
|
82
|
+
const attributes = firebase.sign_in_attributes;
|
|
83
|
+
return attributes && typeof attributes === 'object' ? attributes : undefined;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Resolve a display name from a decoded ID token, or `''` when the provider
|
|
87
|
+
* genuinely sent nothing.
|
|
88
|
+
*
|
|
89
|
+
* Empty rather than a placeholder: callers seed only ABSENT fields, and a
|
|
90
|
+
* fabricated name would be indistinguishable from one the user chose and
|
|
91
|
+
* would never be corrected.
|
|
92
|
+
*/ export function resolveIdpDisplayName(decoded) {
|
|
93
|
+
if (!decoded) return '';
|
|
94
|
+
// A top-level `name` wins — OIDC providers populate it, and it is the
|
|
95
|
+
// provider's own idea of the whole name rather than our reassembly.
|
|
96
|
+
const topLevel = typeof decoded.name === 'string' ? decoded.name.trim() : '';
|
|
97
|
+
if (topLevel) return topLevel;
|
|
98
|
+
const attributes = signInAttributes(decoded);
|
|
99
|
+
const full = readAttribute(attributes, FULL_NAME_KEYS);
|
|
100
|
+
if (full) return full;
|
|
101
|
+
const first = readAttribute(attributes, FIRST_NAME_KEYS);
|
|
102
|
+
const last = readAttribute(attributes, LAST_NAME_KEYS);
|
|
103
|
+
// Either half alone is still better than nothing — a first name renders a
|
|
104
|
+
// usable roster row, and demanding both would discard it.
|
|
105
|
+
return [
|
|
106
|
+
first,
|
|
107
|
+
last
|
|
108
|
+
].filter(Boolean).join(' ');
|
|
109
|
+
}
|
|
110
|
+
const PHOTO_KEYS = [
|
|
111
|
+
'picture',
|
|
112
|
+
'photoUrl',
|
|
113
|
+
'photo_url',
|
|
114
|
+
'photoURL',
|
|
115
|
+
'thumbnailPhotoUrl'
|
|
116
|
+
];
|
|
117
|
+
const PHONE_KEYS = [
|
|
118
|
+
'phoneNumber',
|
|
119
|
+
'phone_number',
|
|
120
|
+
'phone',
|
|
121
|
+
'telephoneNumber',
|
|
122
|
+
'mobile',
|
|
123
|
+
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/mobilephone'
|
|
124
|
+
];
|
|
125
|
+
/**
|
|
126
|
+
* Resolve an avatar URL from a decoded ID token, or `''`.
|
|
127
|
+
*
|
|
128
|
+
* Only `https:` survives. The value is written to the roster and rendered as
|
|
129
|
+
* an `<img src>` for every member of the org, so an assertion carrying a
|
|
130
|
+
* `javascript:` or `data:` URL would turn a mapped IdP attribute into stored
|
|
131
|
+
* script that we hand to teammates. The IdP is trusted to say who someone is,
|
|
132
|
+
* which is not the same as being trusted to supply markup.
|
|
133
|
+
*/ export function resolveIdpPhotoUrl(decoded) {
|
|
134
|
+
if (!decoded) return '';
|
|
135
|
+
const attributes = signInAttributes(decoded);
|
|
136
|
+
const candidate = (typeof decoded['picture'] === 'string' ? decoded['picture'].trim() : '') || readAttribute(attributes, PHOTO_KEYS);
|
|
137
|
+
if (!candidate) return '';
|
|
138
|
+
try {
|
|
139
|
+
return new URL(candidate).protocol === 'https:' ? candidate : '';
|
|
140
|
+
} catch (unused) {
|
|
141
|
+
// Not a URL at all — a relative path or free text.
|
|
142
|
+
return '';
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Resolve a phone number from a decoded ID token, or `''`.
|
|
147
|
+
*
|
|
148
|
+
* Returned verbatim rather than normalised to E.164: this is the number the
|
|
149
|
+
* directory holds, and guessing a country code for a national-format string
|
|
150
|
+
* invents digits. `normalizePhone` is applied where a user confirms it, not
|
|
151
|
+
* here.
|
|
152
|
+
*/ export function resolveIdpPhone(decoded) {
|
|
153
|
+
if (!decoded) return '';
|
|
154
|
+
const topLevel = typeof decoded['phone_number'] === 'string' ? decoded['phone_number'].trim() : '';
|
|
155
|
+
return topLevel || readAttribute(signInAttributes(decoded), PHONE_KEYS);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Address attribute names, same generosity as the name keys and for the same
|
|
159
|
+
* reason: the customer's IdP admin chooses these, not us.
|
|
160
|
+
*
|
|
161
|
+
* Google Workspace's SAML attribute mapping offers `Street address`,
|
|
162
|
+
* `Locality`, `Region` and `Postal code` from the Directory and lets the admin
|
|
163
|
+
* name each one; Okta and ADFS emit `streetAddress`/`l`/`st`/`postalCode` and
|
|
164
|
+
* the full `schemas.xmlsoap.org` URIs respectively. LDAP's own short forms
|
|
165
|
+
* (`l` for locality, `st` for state, `c` for country) are included because
|
|
166
|
+
* both of those are ultimately reading a directory that spells them that way.
|
|
167
|
+
*/ const ADDRESS_LINE1_KEYS = [
|
|
168
|
+
'streetAddress',
|
|
169
|
+
'street_address',
|
|
170
|
+
'addressLine1',
|
|
171
|
+
'address_line1',
|
|
172
|
+
'line1',
|
|
173
|
+
'street',
|
|
174
|
+
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress'
|
|
175
|
+
];
|
|
176
|
+
const ADDRESS_LINE2_KEYS = [
|
|
177
|
+
'addressLine2',
|
|
178
|
+
'address_line2',
|
|
179
|
+
'line2',
|
|
180
|
+
'street_address_2',
|
|
181
|
+
'streetAddress2'
|
|
182
|
+
];
|
|
183
|
+
const ADDRESS_CITY_KEYS = [
|
|
184
|
+
'locality',
|
|
185
|
+
'city',
|
|
186
|
+
'l',
|
|
187
|
+
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/locality'
|
|
188
|
+
];
|
|
189
|
+
const ADDRESS_STATE_KEYS = [
|
|
190
|
+
'region',
|
|
191
|
+
'state',
|
|
192
|
+
'province',
|
|
193
|
+
'st',
|
|
194
|
+
'stateOrProvince',
|
|
195
|
+
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/stateorprovince'
|
|
196
|
+
];
|
|
197
|
+
const ADDRESS_POSTAL_KEYS = [
|
|
198
|
+
'postalCode',
|
|
199
|
+
'postal_code',
|
|
200
|
+
'postalcode',
|
|
201
|
+
'zip',
|
|
202
|
+
'zipCode',
|
|
203
|
+
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/postalcode'
|
|
204
|
+
];
|
|
205
|
+
const ADDRESS_COUNTRY_KEYS = [
|
|
206
|
+
'country',
|
|
207
|
+
'countryCode',
|
|
208
|
+
'country_code',
|
|
209
|
+
'c',
|
|
210
|
+
'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country'
|
|
211
|
+
];
|
|
212
|
+
/**
|
|
213
|
+
* OIDC's `address` claim is a JSON OBJECT, not a string (OpenID Connect Core
|
|
214
|
+
* §5.1.1), with its own field names. SAML has no equivalent — its attributes
|
|
215
|
+
* arrive flat in `sign_in_attributes` — so this is the OIDC-only half, read
|
|
216
|
+
* for the same reason `resolveIdpDisplayName` prefers a top-level `name`.
|
|
217
|
+
*/ function oidcAddressClaim(decoded) {
|
|
218
|
+
const address = decoded['address'];
|
|
219
|
+
return address && typeof address === 'object' && !Array.isArray(address) ? address : undefined;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Resolve a postal address from a decoded ID token.
|
|
223
|
+
*
|
|
224
|
+
* Every field independently optional: a directory that holds a city and no
|
|
225
|
+
* street is a normal directory, and demanding a complete address would
|
|
226
|
+
* discard the parts it does have. `normalizeAddress` downstream is what turns
|
|
227
|
+
* "some parts" into either a stored address or `null`.
|
|
228
|
+
*
|
|
229
|
+
* `state`, never `region`, in the RESULT — that is the canonical spelling in
|
|
230
|
+
* `AglynPostalAddress`, matching Stripe's customer address. `region` appears
|
|
231
|
+
* only as an INPUT key, because that is what Google Workspace calls it.
|
|
232
|
+
*/ export function resolveIdpAddress(decoded) {
|
|
233
|
+
const empty = {
|
|
234
|
+
line1: '',
|
|
235
|
+
line2: '',
|
|
236
|
+
city: '',
|
|
237
|
+
state: '',
|
|
238
|
+
postalCode: '',
|
|
239
|
+
country: ''
|
|
240
|
+
};
|
|
241
|
+
if (!decoded) return empty;
|
|
242
|
+
const attributes = signInAttributes(decoded);
|
|
243
|
+
const oidc = oidcAddressClaim(decoded);
|
|
244
|
+
// SAML attributes win a tie. An org that has mapped its directory into the
|
|
245
|
+
// assertion has said what it wants us to use, and the OIDC claim is the
|
|
246
|
+
// fallback for providers that send the standard object instead.
|
|
247
|
+
const read = (keys, oidcKeys)=>readAttribute(attributes, keys) || readAttribute(oidc, oidcKeys);
|
|
248
|
+
return {
|
|
249
|
+
line1: read(ADDRESS_LINE1_KEYS, [
|
|
250
|
+
'street_address'
|
|
251
|
+
]),
|
|
252
|
+
line2: read(ADDRESS_LINE2_KEYS, []),
|
|
253
|
+
city: read(ADDRESS_CITY_KEYS, [
|
|
254
|
+
'locality'
|
|
255
|
+
]),
|
|
256
|
+
state: read(ADDRESS_STATE_KEYS, [
|
|
257
|
+
'region'
|
|
258
|
+
]),
|
|
259
|
+
postalCode: read(ADDRESS_POSTAL_KEYS, [
|
|
260
|
+
'postal_code'
|
|
261
|
+
]),
|
|
262
|
+
country: read(ADDRESS_COUNTRY_KEYS, [
|
|
263
|
+
'country'
|
|
264
|
+
])
|
|
265
|
+
};
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
//# sourceMappingURL=idp-profile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/idp-profile.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The profile fields an identity provider sent, from wherever it put them\n * (AGL-1131).\n *\n * AGL-1131 assumed mapping attributes in Google Workspace would be enough,\n * because \"GCIP surfaces mapped SAML attributes on the token\" and the JIT\n * path already reads `decoded['name']`. Measured after the mapping was\n * added: the tenant auth record still had `displayName: null`, on both the\n * account and its `saml.aglyn-workspace` provider entry, on a sign-in that\n * definitely happened.\n *\n * The reason is that a SAML assertion's attributes arrive under\n * `firebase.sign_in_attributes`, NOT as a top-level `name` claim. Nothing in\n * the codebase read that, so mapping attributes correctly still produced\n * nothing. OIDC providers do populate `name`, which is why the existing code\n * looked right.\n *\n * Deliberately generous about attribute naming, because the name is chosen\n * by the CUSTOMER's IdP admin, not by us. Workspace suggests `firstName`,\n * ADFS emits the full schema URIs, Okta commonly uses `given_name`. Guessing\n * wrong costs a blank name and a support ticket, so this checks all of them\n * rather than picking a house style nobody else follows.\n */\n\n/** Attribute keys that hold a complete display name, best first. */\nconst FULL_NAME_KEYS = [\n 'name',\n 'displayName',\n 'display_name',\n 'cn',\n 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/name',\n]\n\nconst FIRST_NAME_KEYS = [\n 'firstName',\n 'first_name',\n 'given_name',\n 'givenName',\n 'givenname',\n 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/givenname',\n]\n\nconst LAST_NAME_KEYS = [\n 'lastName',\n 'last_name',\n 'family_name',\n 'familyName',\n 'surname',\n 'sn',\n 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/surname',\n]\n\n/**\n * A SAML attribute value may be a string or a single-element array — the\n * assertion permits repeats, and GCIP passes the shape through.\n */\nfunction readAttribute(\n bag: Record<string, unknown> | null | undefined,\n keys: readonly string[],\n): string {\n if (!bag) return ''\n for (const key of keys) {\n const raw = bag[key]\n const value = Array.isArray(raw) ? raw[0] : raw\n const text = typeof value === 'string' ? value.trim() : ''\n if (text) return text\n }\n return ''\n}\n\nexport interface IdpNameClaims {\n name?: unknown\n firebase?: { sign_in_attributes?: Record<string, unknown> } | unknown\n [claim: string]: unknown\n}\n\n/**\n * Where GCIP puts a SAML assertion's attributes. Guarded rather than cast:\n * this runs on EVERY interactive sign-in, including email/password accounts\n * that have no `firebase` claim at all.\n */\nfunction signInAttributes(\n decoded: IdpNameClaims,\n): Record<string, unknown> | undefined {\n const firebase = decoded.firebase\n if (!firebase || typeof firebase !== 'object') return undefined\n const attributes = (firebase as { sign_in_attributes?: unknown })\n .sign_in_attributes\n return attributes && typeof attributes === 'object'\n ? (attributes as Record<string, unknown>)\n : undefined\n}\n\n/**\n * Resolve a display name from a decoded ID token, or `''` when the provider\n * genuinely sent nothing.\n *\n * Empty rather than a placeholder: callers seed only ABSENT fields, and a\n * fabricated name would be indistinguishable from one the user chose and\n * would never be corrected.\n */\nexport function resolveIdpDisplayName(\n decoded: IdpNameClaims | null | undefined,\n): string {\n if (!decoded) return ''\n // A top-level `name` wins — OIDC providers populate it, and it is the\n // provider's own idea of the whole name rather than our reassembly.\n const topLevel = typeof decoded.name === 'string' ? decoded.name.trim() : ''\n if (topLevel) return topLevel\n\n const attributes = signInAttributes(decoded)\n const full = readAttribute(attributes, FULL_NAME_KEYS)\n if (full) return full\n\n const first = readAttribute(attributes, FIRST_NAME_KEYS)\n const last = readAttribute(attributes, LAST_NAME_KEYS)\n // Either half alone is still better than nothing — a first name renders a\n // usable roster row, and demanding both would discard it.\n return [first, last].filter(Boolean).join(' ')\n}\n\nconst PHOTO_KEYS = [\n 'picture',\n 'photoUrl',\n 'photo_url',\n 'photoURL',\n 'thumbnailPhotoUrl',\n]\n\nconst PHONE_KEYS = [\n 'phoneNumber',\n 'phone_number',\n 'phone',\n 'telephoneNumber',\n 'mobile',\n 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/mobilephone',\n]\n\n/**\n * Resolve an avatar URL from a decoded ID token, or `''`.\n *\n * Only `https:` survives. The value is written to the roster and rendered as\n * an `<img src>` for every member of the org, so an assertion carrying a\n * `javascript:` or `data:` URL would turn a mapped IdP attribute into stored\n * script that we hand to teammates. The IdP is trusted to say who someone is,\n * which is not the same as being trusted to supply markup.\n */\nexport function resolveIdpPhotoUrl(\n decoded: IdpNameClaims | null | undefined,\n): string {\n if (!decoded) return ''\n const attributes = signInAttributes(decoded)\n const candidate =\n (typeof decoded['picture'] === 'string' ? decoded['picture'].trim() : '') ||\n readAttribute(attributes, PHOTO_KEYS)\n if (!candidate) return ''\n try {\n return new URL(candidate).protocol === 'https:' ? candidate : ''\n } catch {\n // Not a URL at all — a relative path or free text.\n return ''\n }\n}\n\n/**\n * Resolve a phone number from a decoded ID token, or `''`.\n *\n * Returned verbatim rather than normalised to E.164: this is the number the\n * directory holds, and guessing a country code for a national-format string\n * invents digits. `normalizePhone` is applied where a user confirms it, not\n * here.\n */\nexport function resolveIdpPhone(\n decoded: IdpNameClaims | null | undefined,\n): string {\n if (!decoded) return ''\n const topLevel =\n typeof decoded['phone_number'] === 'string'\n ? (decoded['phone_number'] as string).trim()\n : ''\n return topLevel || readAttribute(signInAttributes(decoded), PHONE_KEYS)\n}\n\n/**\n * Address attribute names, same generosity as the name keys and for the same\n * reason: the customer's IdP admin chooses these, not us.\n *\n * Google Workspace's SAML attribute mapping offers `Street address`,\n * `Locality`, `Region` and `Postal code` from the Directory and lets the admin\n * name each one; Okta and ADFS emit `streetAddress`/`l`/`st`/`postalCode` and\n * the full `schemas.xmlsoap.org` URIs respectively. LDAP's own short forms\n * (`l` for locality, `st` for state, `c` for country) are included because\n * both of those are ultimately reading a directory that spells them that way.\n */\nconst ADDRESS_LINE1_KEYS = [\n 'streetAddress',\n 'street_address',\n 'addressLine1',\n 'address_line1',\n 'line1',\n 'street',\n 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/streetaddress',\n]\n\nconst ADDRESS_LINE2_KEYS = [\n 'addressLine2',\n 'address_line2',\n 'line2',\n 'street_address_2',\n 'streetAddress2',\n]\n\nconst ADDRESS_CITY_KEYS = [\n 'locality',\n 'city',\n 'l',\n 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/locality',\n]\n\nconst ADDRESS_STATE_KEYS = [\n 'region',\n 'state',\n 'province',\n 'st',\n 'stateOrProvince',\n 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/stateorprovince',\n]\n\nconst ADDRESS_POSTAL_KEYS = [\n 'postalCode',\n 'postal_code',\n 'postalcode',\n 'zip',\n 'zipCode',\n 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/postalcode',\n]\n\nconst ADDRESS_COUNTRY_KEYS = [\n 'country',\n 'countryCode',\n 'country_code',\n 'c',\n 'http://schemas.xmlsoap.org/ws/2005/05/identity/claims/country',\n]\n\n/**\n * The postal address an identity provider sent, as loose parts (AGL-1963).\n *\n * Deliberately NOT an `AglynPostalAddress`, and this module deliberately does\n * not import one. `normalizeAddress` is what decides whether these parts add\n * up to an address at all — it drops blanks, rejects a country that is not\n * ISO-3166 alpha-2, and returns `null` when nothing survives. Returning a\n * half-populated object from here would hand the caller something that reads\n * as truthy to every `if (address)` while holding a city and no street, which\n * is exactly the shape AGL-1963 says must not exist.\n */\nexport interface IdpAddressParts {\n line1: string\n line2: string\n city: string\n state: string\n postalCode: string\n country: string\n}\n\n/**\n * OIDC's `address` claim is a JSON OBJECT, not a string (OpenID Connect Core\n * §5.1.1), with its own field names. SAML has no equivalent — its attributes\n * arrive flat in `sign_in_attributes` — so this is the OIDC-only half, read\n * for the same reason `resolveIdpDisplayName` prefers a top-level `name`.\n */\nfunction oidcAddressClaim(\n decoded: IdpNameClaims,\n): Record<string, unknown> | undefined {\n const address = decoded['address']\n return address && typeof address === 'object' && !Array.isArray(address)\n ? (address as Record<string, unknown>)\n : undefined\n}\n\n/**\n * Resolve a postal address from a decoded ID token.\n *\n * Every field independently optional: a directory that holds a city and no\n * street is a normal directory, and demanding a complete address would\n * discard the parts it does have. `normalizeAddress` downstream is what turns\n * \"some parts\" into either a stored address or `null`.\n *\n * `state`, never `region`, in the RESULT — that is the canonical spelling in\n * `AglynPostalAddress`, matching Stripe's customer address. `region` appears\n * only as an INPUT key, because that is what Google Workspace calls it.\n */\nexport function resolveIdpAddress(\n decoded: IdpNameClaims | null | undefined,\n): IdpAddressParts {\n const empty: IdpAddressParts = {\n line1: '',\n line2: '',\n city: '',\n state: '',\n postalCode: '',\n country: '',\n }\n if (!decoded) return empty\n const attributes = signInAttributes(decoded)\n const oidc = oidcAddressClaim(decoded)\n // SAML attributes win a tie. An org that has mapped its directory into the\n // assertion has said what it wants us to use, and the OIDC claim is the\n // fallback for providers that send the standard object instead.\n const read = (keys: readonly string[], oidcKeys: readonly string[]) =>\n readAttribute(attributes, keys) || readAttribute(oidc, oidcKeys)\n return {\n line1: read(ADDRESS_LINE1_KEYS, ['street_address']),\n line2: read(ADDRESS_LINE2_KEYS, []),\n city: read(ADDRESS_CITY_KEYS, ['locality']),\n state: read(ADDRESS_STATE_KEYS, ['region']),\n postalCode: read(ADDRESS_POSTAL_KEYS, ['postal_code']),\n country: read(ADDRESS_COUNTRY_KEYS, ['country']),\n }\n}\n"],"names":["FULL_NAME_KEYS","FIRST_NAME_KEYS","LAST_NAME_KEYS","readAttribute","bag","keys","key","raw","value","Array","isArray","text","trim","signInAttributes","decoded","firebase","undefined","attributes","sign_in_attributes","resolveIdpDisplayName","topLevel","name","full","first","last","filter","Boolean","join","PHOTO_KEYS","PHONE_KEYS","resolveIdpPhotoUrl","candidate","URL","protocol","resolveIdpPhone","ADDRESS_LINE1_KEYS","ADDRESS_LINE2_KEYS","ADDRESS_CITY_KEYS","ADDRESS_STATE_KEYS","ADDRESS_POSTAL_KEYS","ADDRESS_COUNTRY_KEYS","oidcAddressClaim","address","resolveIdpAddress","empty","line1","line2","city","state","postalCode","country","oidc","read","oidcKeys"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;;;;;;;CAsBC,GAED,kEAAkE,GAClE,MAAMA,iBAAiB;IACrB;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,kBAAkB;IACtB;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,iBAAiB;IACrB;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED;;;CAGC,GACD,SAASC,cACPC,GAA+C,EAC/CC,IAAuB;IAEvB,IAAI,CAACD,KAAK,OAAO;IACjB,KAAK,MAAME,OAAOD,KAAM;QACtB,MAAME,MAAMH,GAAG,CAACE,IAAI;QACpB,MAAME,QAAQC,MAAMC,OAAO,CAACH,OAAOA,GAAG,CAAC,EAAE,GAAGA;QAC5C,MAAMI,OAAO,OAAOH,UAAU,WAAWA,MAAMI,IAAI,KAAK;QACxD,IAAID,MAAM,OAAOA;IACnB;IACA,OAAO;AACT;AAQA;;;;CAIC,GACD,SAASE,iBACPC,OAAsB;IAEtB,MAAMC,WAAWD,QAAQC,QAAQ;IACjC,IAAI,CAACA,YAAY,OAAOA,aAAa,UAAU,OAAOC;IACtD,MAAMC,aAAa,AAACF,SACjBG,kBAAkB;IACrB,OAAOD,cAAc,OAAOA,eAAe,WACtCA,aACDD;AACN;AAEA;;;;;;;CAOC,GACD,OAAO,SAASG,sBACdL,OAAyC;IAEzC,IAAI,CAACA,SAAS,OAAO;IACrB,sEAAsE;IACtE,oEAAoE;IACpE,MAAMM,WAAW,OAAON,QAAQO,IAAI,KAAK,WAAWP,QAAQO,IAAI,CAACT,IAAI,KAAK;IAC1E,IAAIQ,UAAU,OAAOA;IAErB,MAAMH,aAAaJ,iBAAiBC;IACpC,MAAMQ,OAAOnB,cAAcc,YAAYjB;IACvC,IAAIsB,MAAM,OAAOA;IAEjB,MAAMC,QAAQpB,cAAcc,YAAYhB;IACxC,MAAMuB,OAAOrB,cAAcc,YAAYf;IACvC,0EAA0E;IAC1E,0DAA0D;IAC1D,OAAO;QAACqB;QAAOC;KAAK,CAACC,MAAM,CAACC,SAASC,IAAI,CAAC;AAC5C;AAEA,MAAMC,aAAa;IACjB;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,aAAa;IACjB;IACA;IACA;IACA;IACA;IACA;CACD;AAED;;;;;;;;CAQC,GACD,OAAO,SAASC,mBACdhB,OAAyC;IAEzC,IAAI,CAACA,SAAS,OAAO;IACrB,MAAMG,aAAaJ,iBAAiBC;IACpC,MAAMiB,YACJ,AAAC,CAAA,OAAOjB,OAAO,CAAC,UAAU,KAAK,WAAWA,OAAO,CAAC,UAAU,CAACF,IAAI,KAAK,EAAC,KACvET,cAAcc,YAAYW;IAC5B,IAAI,CAACG,WAAW,OAAO;IACvB,IAAI;QACF,OAAO,IAAIC,IAAID,WAAWE,QAAQ,KAAK,WAAWF,YAAY;IAChE,EAAE,eAAM;QACN,mDAAmD;QACnD,OAAO;IACT;AACF;AAEA;;;;;;;CAOC,GACD,OAAO,SAASG,gBACdpB,OAAyC;IAEzC,IAAI,CAACA,SAAS,OAAO;IACrB,MAAMM,WACJ,OAAON,OAAO,CAAC,eAAe,KAAK,WAC/B,AAACA,OAAO,CAAC,eAAe,CAAYF,IAAI,KACxC;IACN,OAAOQ,YAAYjB,cAAcU,iBAAiBC,UAAUe;AAC9D;AAEA;;;;;;;;;;CAUC,GACD,MAAMM,qBAAqB;IACzB;IACA;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,qBAAqB;IACzB;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,oBAAoB;IACxB;IACA;IACA;IACA;CACD;AAED,MAAMC,qBAAqB;IACzB;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,sBAAsB;IAC1B;IACA;IACA;IACA;IACA;IACA;CACD;AAED,MAAMC,uBAAuB;IAC3B;IACA;IACA;IACA;IACA;CACD;AAsBD;;;;;CAKC,GACD,SAASC,iBACP3B,OAAsB;IAEtB,MAAM4B,UAAU5B,OAAO,CAAC,UAAU;IAClC,OAAO4B,WAAW,OAAOA,YAAY,YAAY,CAACjC,MAAMC,OAAO,CAACgC,WAC3DA,UACD1B;AACN;AAEA;;;;;;;;;;;CAWC,GACD,OAAO,SAAS2B,kBACd7B,OAAyC;IAEzC,MAAM8B,QAAyB;QAC7BC,OAAO;QACPC,OAAO;QACPC,MAAM;QACNC,OAAO;QACPC,YAAY;QACZC,SAAS;IACX;IACA,IAAI,CAACpC,SAAS,OAAO8B;IACrB,MAAM3B,aAAaJ,iBAAiBC;IACpC,MAAMqC,OAAOV,iBAAiB3B;IAC9B,2EAA2E;IAC3E,wEAAwE;IACxE,gEAAgE;IAChE,MAAMsC,OAAO,CAAC/C,MAAyBgD,WACrClD,cAAcc,YAAYZ,SAASF,cAAcgD,MAAME;IACzD,OAAO;QACLR,OAAOO,KAAKjB,oBAAoB;YAAC;SAAiB;QAClDW,OAAOM,KAAKhB,oBAAoB,EAAE;QAClCW,MAAMK,KAAKf,mBAAmB;YAAC;SAAW;QAC1CW,OAAOI,KAAKd,oBAAoB;YAAC;SAAS;QAC1CW,YAAYG,KAAKb,qBAAqB;YAAC;SAAc;QACrDW,SAASE,KAAKZ,sBAAsB;YAAC;SAAU;IACjD;AACF"}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* The image content types media ingress accepts.
|
|
19
|
+
*
|
|
20
|
+
* Every upload surface used to answer "is this an image?" with
|
|
21
|
+
* `contentType.startsWith('image/')`, against a string the CALLER chooses.
|
|
22
|
+
* Three separate decisions hang off that answer, and an open prefix gets all
|
|
23
|
+
* three wrong for a type nobody has ever heard of:
|
|
24
|
+
*
|
|
25
|
+
* - **Entitlement.** Everything that is not an image rides the `videoMedia`
|
|
26
|
+
* gate, so `image/x-anything` is how arbitrary bytes reach a workspace
|
|
27
|
+
* whose plan does not include file uploads.
|
|
28
|
+
* - **Ceilings.** An unrecognised `image/…` resolves the image ceiling
|
|
29
|
+
* rather than the (much smaller) one its real format would get.
|
|
30
|
+
* - **Structure.** `inspectUploadBytes` only matches magic numbers for types
|
|
31
|
+
* it knows, so an unrecognised label means no signature check runs at all
|
|
32
|
+
* — the executable and macro checks still apply, but "these bytes are not
|
|
33
|
+
* the format you declared" cannot be asked.
|
|
34
|
+
*
|
|
35
|
+
* The set below is exactly the image half of that module's signature table,
|
|
36
|
+
* plus SVG, which is text and has no magic number. A spec pins the two
|
|
37
|
+
* together so a format added to one cannot go missing from the other.
|
|
38
|
+
*/
|
|
39
|
+
export declare const IMAGE_UPLOAD_TYPES: ReadonlySet<string>;
|
|
40
|
+
/** A content type reduced to its bare type: no parameters, lower case. */
|
|
41
|
+
export declare function bareContentType(contentType: unknown): string;
|
|
42
|
+
/**
|
|
43
|
+
* The canonical type for an image label, or the bare label unchanged when it
|
|
44
|
+
* is not one this platform recognises. Never widens: a type that was not an
|
|
45
|
+
* accepted image before does not become one here.
|
|
46
|
+
*/
|
|
47
|
+
export declare function normalizeImageContentType(contentType: unknown): string;
|
|
48
|
+
/** Whether media ingress treats this content type as an image. */
|
|
49
|
+
export declare function isImageUploadContentType(contentType: unknown): boolean;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ /**
|
|
17
|
+
* The image content types media ingress accepts.
|
|
18
|
+
*
|
|
19
|
+
* Every upload surface used to answer "is this an image?" with
|
|
20
|
+
* `contentType.startsWith('image/')`, against a string the CALLER chooses.
|
|
21
|
+
* Three separate decisions hang off that answer, and an open prefix gets all
|
|
22
|
+
* three wrong for a type nobody has ever heard of:
|
|
23
|
+
*
|
|
24
|
+
* - **Entitlement.** Everything that is not an image rides the `videoMedia`
|
|
25
|
+
* gate, so `image/x-anything` is how arbitrary bytes reach a workspace
|
|
26
|
+
* whose plan does not include file uploads.
|
|
27
|
+
* - **Ceilings.** An unrecognised `image/…` resolves the image ceiling
|
|
28
|
+
* rather than the (much smaller) one its real format would get.
|
|
29
|
+
* - **Structure.** `inspectUploadBytes` only matches magic numbers for types
|
|
30
|
+
* it knows, so an unrecognised label means no signature check runs at all
|
|
31
|
+
* — the executable and macro checks still apply, but "these bytes are not
|
|
32
|
+
* the format you declared" cannot be asked.
|
|
33
|
+
*
|
|
34
|
+
* The set below is exactly the image half of that module's signature table,
|
|
35
|
+
* plus SVG, which is text and has no magic number. A spec pins the two
|
|
36
|
+
* together so a format added to one cannot go missing from the other.
|
|
37
|
+
*/ export const IMAGE_UPLOAD_TYPES = new Set([
|
|
38
|
+
'image/png',
|
|
39
|
+
'image/jpeg',
|
|
40
|
+
'image/gif',
|
|
41
|
+
'image/webp',
|
|
42
|
+
'image/avif',
|
|
43
|
+
'image/heic',
|
|
44
|
+
'image/heif',
|
|
45
|
+
'image/bmp',
|
|
46
|
+
'image/tiff',
|
|
47
|
+
'image/x-icon',
|
|
48
|
+
'image/vnd.microsoft.icon',
|
|
49
|
+
// A document wearing an image label. Accepted, sanitized at every ingress,
|
|
50
|
+
// and served under a sandboxing CSP — see `sanitize-svg`.
|
|
51
|
+
'image/svg+xml'
|
|
52
|
+
]);
|
|
53
|
+
/**
|
|
54
|
+
* Labels browsers and older tools emit for a format that already has a
|
|
55
|
+
* canonical type. Folded rather than added to the set above, so that one
|
|
56
|
+
* format is one stored type: the CDN's active-document check, the signature
|
|
57
|
+
* table and the SVG sanitizer all key off the type, and a second spelling is
|
|
58
|
+
* a second thing each of them has to remember.
|
|
59
|
+
*/ const IMAGE_TYPE_ALIASES = {
|
|
60
|
+
'image/jpg': 'image/jpeg',
|
|
61
|
+
'image/pjpeg': 'image/jpeg',
|
|
62
|
+
'image/x-png': 'image/png',
|
|
63
|
+
'image/x-ms-bmp': 'image/bmp',
|
|
64
|
+
'image/x-bmp': 'image/bmp',
|
|
65
|
+
'image/x-tiff': 'image/tiff',
|
|
66
|
+
'image/ico': 'image/x-icon',
|
|
67
|
+
'image/x-icon+xml': 'image/x-icon',
|
|
68
|
+
'image/svg': 'image/svg+xml'
|
|
69
|
+
};
|
|
70
|
+
/** A content type reduced to its bare type: no parameters, lower case. */ export function bareContentType(contentType) {
|
|
71
|
+
return String(contentType != null ? contentType : '').split(';')[0].trim().toLowerCase();
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* The canonical type for an image label, or the bare label unchanged when it
|
|
75
|
+
* is not one this platform recognises. Never widens: a type that was not an
|
|
76
|
+
* accepted image before does not become one here.
|
|
77
|
+
*/ export function normalizeImageContentType(contentType) {
|
|
78
|
+
var _IMAGE_TYPE_ALIASES_bare;
|
|
79
|
+
const bare = bareContentType(contentType);
|
|
80
|
+
return (_IMAGE_TYPE_ALIASES_bare = IMAGE_TYPE_ALIASES[bare]) != null ? _IMAGE_TYPE_ALIASES_bare : bare;
|
|
81
|
+
}
|
|
82
|
+
/** Whether media ingress treats this content type as an image. */ export function isImageUploadContentType(contentType) {
|
|
83
|
+
return IMAGE_UPLOAD_TYPES.has(normalizeImageContentType(contentType));
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
//# sourceMappingURL=image-upload-types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/image-upload-types.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2026 Aglyn LLC\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n/**\n * The image content types media ingress accepts.\n *\n * Every upload surface used to answer \"is this an image?\" with\n * `contentType.startsWith('image/')`, against a string the CALLER chooses.\n * Three separate decisions hang off that answer, and an open prefix gets all\n * three wrong for a type nobody has ever heard of:\n *\n * - **Entitlement.** Everything that is not an image rides the `videoMedia`\n * gate, so `image/x-anything` is how arbitrary bytes reach a workspace\n * whose plan does not include file uploads.\n * - **Ceilings.** An unrecognised `image/…` resolves the image ceiling\n * rather than the (much smaller) one its real format would get.\n * - **Structure.** `inspectUploadBytes` only matches magic numbers for types\n * it knows, so an unrecognised label means no signature check runs at all\n * — the executable and macro checks still apply, but \"these bytes are not\n * the format you declared\" cannot be asked.\n *\n * The set below is exactly the image half of that module's signature table,\n * plus SVG, which is text and has no magic number. A spec pins the two\n * together so a format added to one cannot go missing from the other.\n */\nexport const IMAGE_UPLOAD_TYPES: ReadonlySet<string> = new Set([\n 'image/png',\n 'image/jpeg',\n 'image/gif',\n 'image/webp',\n 'image/avif',\n 'image/heic',\n 'image/heif',\n 'image/bmp',\n 'image/tiff',\n 'image/x-icon',\n 'image/vnd.microsoft.icon',\n // A document wearing an image label. Accepted, sanitized at every ingress,\n // and served under a sandboxing CSP — see `sanitize-svg`.\n 'image/svg+xml',\n])\n\n/**\n * Labels browsers and older tools emit for a format that already has a\n * canonical type. Folded rather than added to the set above, so that one\n * format is one stored type: the CDN's active-document check, the signature\n * table and the SVG sanitizer all key off the type, and a second spelling is\n * a second thing each of them has to remember.\n */\nconst IMAGE_TYPE_ALIASES: Readonly<Record<string, string>> = {\n 'image/jpg': 'image/jpeg',\n 'image/pjpeg': 'image/jpeg',\n 'image/x-png': 'image/png',\n 'image/x-ms-bmp': 'image/bmp',\n 'image/x-bmp': 'image/bmp',\n 'image/x-tiff': 'image/tiff',\n 'image/ico': 'image/x-icon',\n 'image/x-icon+xml': 'image/x-icon',\n 'image/svg': 'image/svg+xml',\n}\n\n/** A content type reduced to its bare type: no parameters, lower case. */\nexport function bareContentType(contentType: unknown): string {\n return String(contentType ?? '')\n .split(';')[0]\n .trim()\n .toLowerCase()\n}\n\n/**\n * The canonical type for an image label, or the bare label unchanged when it\n * is not one this platform recognises. Never widens: a type that was not an\n * accepted image before does not become one here.\n */\nexport function normalizeImageContentType(contentType: unknown): string {\n const bare = bareContentType(contentType)\n return IMAGE_TYPE_ALIASES[bare] ?? bare\n}\n\n/** Whether media ingress treats this content type as an image. */\nexport function isImageUploadContentType(contentType: unknown): boolean {\n return IMAGE_UPLOAD_TYPES.has(normalizeImageContentType(contentType))\n}\n"],"names":["IMAGE_UPLOAD_TYPES","Set","IMAGE_TYPE_ALIASES","bareContentType","contentType","String","split","trim","toLowerCase","normalizeImageContentType","bare","isImageUploadContentType","has"],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED;;;;;;;;;;;;;;;;;;;;;CAqBC,GACD,OAAO,MAAMA,qBAA0C,IAAIC,IAAI;IAC7D;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,2EAA2E;IAC3E,0DAA0D;IAC1D;CACD,EAAC;AAEF;;;;;;CAMC,GACD,MAAMC,qBAAuD;IAC3D,aAAa;IACb,eAAe;IACf,eAAe;IACf,kBAAkB;IAClB,eAAe;IACf,gBAAgB;IAChB,aAAa;IACb,oBAAoB;IACpB,aAAa;AACf;AAEA,wEAAwE,GACxE,OAAO,SAASC,gBAAgBC,WAAoB;IAClD,OAAOC,OAAOD,sBAAAA,cAAe,IAC1BE,KAAK,CAAC,IAAI,CAAC,EAAE,CACbC,IAAI,GACJC,WAAW;AAChB;AAEA;;;;CAIC,GACD,OAAO,SAASC,0BAA0BL,WAAoB;QAErDF;IADP,MAAMQ,OAAOP,gBAAgBC;IAC7B,QAAOF,2BAAAA,kBAAkB,CAACQ,KAAK,YAAxBR,2BAA4BQ;AACrC;AAEA,gEAAgE,GAChE,OAAO,SAASC,yBAAyBP,WAAoB;IAC3D,OAAOJ,mBAAmBY,GAAG,CAACH,0BAA0BL;AAC1D"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 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
|
+
export * from './server';
|
|
18
|
+
export * from './contexts';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2022 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
|
+
*/ // Full app-utils surface = server-safe utils + the client-only React
|
|
17
|
+
// contexts. Split so `@aglyn/aglyn/server` can re-export just `./server`
|
|
18
|
+
// (no `createContext`) for tenant Server Components (AGL-405); this barrel,
|
|
19
|
+
// reached via `@aglyn/aglyn`, keeps both for client consumers unchanged.
|
|
20
|
+
export * from "./server.js";
|
|
21
|
+
export * from "./contexts.js";
|
|
22
|
+
|
|
23
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/index.ts"],"sourcesContent":["/**\n * @license\n * Copyright 2022 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// Full app-utils surface = server-safe utils + the client-only React\n// contexts. Split so `@aglyn/aglyn/server` can re-export just `./server`\n// (no `createContext`) for tenant Server Components (AGL-405); this barrel,\n// reached via `@aglyn/aglyn`, keeps both for client consumers unchanged.\nexport * from './server'\nexport * from './contexts'\n"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;CAeC,GAED,qEAAqE;AACrE,yEAAyE;AACzE,4EAA4E;AAC5E,yEAAyE;AACzE,cAAc,cAAU;AACxB,cAAc,gBAAY"}
|