@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 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/llms-txt.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 * `/llms.txt` for a tenant site, in the llmstxt.org format (AGL-2716).\n *\n * The file an agent reads FIRST — before the sitemap, before the homepage — to\n * decide whether this site can answer the question it is holding, and which\n * URL to fetch if it can.\n *\n * ## The format, exactly\n *\n * llmstxt.org specifies, in this order: an H1 with the project name (the ONLY\n * required part), an optional blockquote summary, zero or more non-heading\n * markdown sections, then zero or more H2-delimited sections of \"file lists\" —\n * markdown lists whose items are a required `[name](url)` link optionally\n * followed by `:` and a note.\n *\n * Every H2 section this builder emits is a file list of that shape, INCLUDING\n * the when-to-use section. That is the design decision worth keeping: guidance\n * written as prose tells an agent what the site is about and leaves it to\n * guess a URL, while guidance written as a link list answers \"which address\n * serves this job\" in the same breath. It also keeps the file inside the\n * format rather than beside it.\n *\n * ## What goes in it, and what does not\n *\n * NOT every URL — that is the sitemap's job, and this file links to it. A site\n * with five hundred pages has an llms.txt of the same length as a site with\n * five: identity, what it is for, the handful of entry points that lead\n * everywhere else, and the machine-readable descriptions of its own surface.\n *\n * ## Why the derived guidance is factual and never promotional\n *\n * A site whose author writes nothing still gets a when-to-use section, built\n * from what the site demonstrably HAS: the collections it publishes, the\n * endpoints it answers, the entry counts. Marketing copy in this position is\n * worse than an empty section — an agent scoring a dozen candidate sources\n * discounts a claim it cannot check, and the whole point of the section is to\n * be checkable.\n */\n\n/** A content collection published by the site. */\nexport interface LlmsTxtCollection {\n /** Public slug — the path segment the list answers at. */\n slug: string\n /** Display name, falling back to the slug. */\n name?: string\n /** The collection's own description, when the author wrote one. */\n description?: string\n /** Published entries, when the count is known and cheap to have. */\n entryCount?: number\n}\n\n/** One curated page link. */\nexport interface LlmsTxtPage {\n /** Route path, with or without its leading slash. */\n path: string\n /** Link text; the path is used when a screen has no name. */\n title?: string\n /** Optional note after the colon. */\n note?: string\n}\n\n/** Author-written agent guidance, as `host.seo.agent` stores it. */\nexport interface LlmsTxtAgentGuidance {\n /** \"When to use this site\" — the jobs it is the right answer to. */\n whenToUse?: string\n /** How an agent should call it — endpoints, auth, rate limits, etiquette. */\n howToUse?: string\n}\n\nexport interface LlmsTxtOptions {\n /** The site's name — the H1, and the only required field in the format. */\n siteName: string\n /** Absolute origin, no trailing slash. */\n origin: string\n /** The summary blockquote. */\n description?: string\n agent?: LlmsTxtAgentGuidance | null\n pages?: readonly LlmsTxtPage[]\n collections?: readonly LlmsTxtCollection[]\n /** Whether this site serves `/search`. */\n hasSearch?: boolean\n /** Where a human is reached, when the site publishes one. */\n contactEmail?: string\n}\n\n/** Path of the agent-guidance file, at the site root, per llmstxt.org. */\nexport const LLMS_TXT_PATH = '/llms.txt'\n\n/** Path of the machine-readable API description. */\nexport const OPENAPI_PATH = '/openapi.json'\n\n/** Join an origin and a path into an absolute URL with exactly one slash. */\nexport function absoluteSiteUrl(origin: string, path: string): string {\n const base = origin.replace(/\\/+$/, '')\n if (!path || path === '/') return `${base}/`\n return `${base}/${String(path).replace(/^\\/+/, '')}`\n}\n\n/**\n * Markdown link text, escaped.\n *\n * Only `[` and `]` — the two characters that can close a link label early and\n * turn the rest of the line into loose text. Escaping more would put\n * backslashes in a page title for no benefit; this is a label, not a document.\n */\nconst label = (value: string): string =>\n String(value).replace(/\\s+/g, ' ').trim().replace(/([[\\]])/g, '\\\\$1')\n\n/** One file-list item: `- [name](url): note`. */\nconst item = (name: string, url: string, note?: string): string =>\n note ? `- [${label(name)}](${url}): ${note}` : `- [${label(name)}](${url})`\n\n/** Title-case-ish display name for a slug with no name of its own. */\nfunction nameForSlug(slug: string): string {\n const words = slug.replace(/[-_]+/g, ' ').trim()\n return words ? words.charAt(0).toUpperCase() + words.slice(1) : slug\n}\n\n/**\n * The when-to-use items derived from what the site actually publishes.\n *\n * Each is a job an agent might hold, paired with the URL that answers it. The\n * counts and names come from the site's own data, so nothing here is a claim\n * the reader cannot verify by following the link.\n */\nfunction derivedGuidance(options: LlmsTxtOptions): string[] {\n const { origin, siteName } = options\n const lines: string[] = []\n for (const collection of options.collections ?? []) {\n const name = collection.name || nameForSlug(collection.slug)\n const count =\n typeof collection.entryCount === 'number' && collection.entryCount > 0\n ? `${collection.entryCount} published ${\n collection.entryCount === 1 ? 'entry' : 'entries'\n }`\n : 'the published entries'\n lines.push(\n item(\n name,\n absoluteSiteUrl(origin, collection.slug),\n collection.description\n ? `${label(collection.description)} — ${count}, newest first`\n : `${count}, newest first. Read this when you need ${label(\n name.toLowerCase(),\n )} published by ${label(siteName)}`,\n ),\n )\n }\n if (options.hasSearch) {\n lines.push(\n item(\n 'Search this site',\n `${absoluteSiteUrl(origin, 'search')}?q=`,\n 'full-text search across this site’s pages and published entries; ' +\n 'append your query to `?q=`',\n ),\n )\n }\n lines.push(\n item(\n 'Sitemap index',\n absoluteSiteUrl(origin, 'sitemap.xml'),\n 'every indexable URL on this site, split into dated child sitemaps',\n ),\n )\n lines.push(\n item(\n 'OpenAPI description',\n absoluteSiteUrl(origin, OPENAPI_PATH),\n 'every public endpoint this site serves, with typed parameters, ' +\n 'response schemas and a unique operationId per operation',\n ),\n )\n if (options.contactEmail) {\n lines.push(\n item(\n 'Contact a person',\n `mailto:${options.contactEmail}`,\n 'reach the people who publish this site when the answer is not on it',\n ),\n )\n }\n return lines\n}\n\n/** Build the `/llms.txt` body. */\nexport function buildLlmsTxt(options: LlmsTxtOptions): string {\n const { origin } = options\n const sections: string[] = []\n\n sections.push(`# ${label(options.siteName || 'Site')}`)\n\n const description = String(options.description ?? '').replace(/\\s+/g, ' ').trim()\n if (description) sections.push(`> ${description}`)\n\n /*\n The author's own guidance leads, in their words, because they know things\n this file cannot derive — which questions the site is genuinely the best\n source for, and which it is not.\n */\n const whenToUse = String(options.agent?.whenToUse ?? '').trim()\n if (whenToUse) sections.push(whenToUse)\n\n /*\n The negotiation contract, stated once. An agent that knows a Markdown\n variant exists asks for it; one that does not, parses HTML it did not need.\n Both spellings are given because the two conventions have different\n audiences: `Accept` is acceptmarkdown.com, `.md` is llmstxt.org, and an\n agent that only knows one of them still gets clean text.\n */\n sections.push(\n 'Every page on this site serves a Markdown representation of itself. ' +\n 'Send `Accept: text/markdown`, or append `.md` to any path — ' +\n `for example \\`${absoluteSiteUrl(origin, 'about.md')}\\`. ` +\n 'Responses vary on `Accept`, so a cache cannot hand you the wrong one.',\n )\n\n const howToUse = String(options.agent?.howToUse ?? '').trim()\n if (howToUse) sections.push(howToUse)\n\n const guidance = derivedGuidance(options)\n if (guidance.length) {\n sections.push(['## When to use this site', ...guidance].join('\\n'))\n }\n\n const pages = options.pages ?? []\n if (pages.length) {\n sections.push(\n [\n '## Pages',\n ...pages.map((entry) =>\n item(\n entry.title || nameForSlug(entry.path.replace(/^\\/+/, '')) || 'Home',\n absoluteSiteUrl(origin, entry.path),\n entry.note,\n ),\n ),\n ].join('\\n'),\n )\n }\n\n const collections = options.collections ?? []\n if (collections.length) {\n sections.push(\n [\n '## Feeds',\n ...collections.map((collection) =>\n item(\n `${collection.name || nameForSlug(collection.slug)} (RSS)`,\n absoluteSiteUrl(origin, `${collection.slug}/rss.xml`),\n 'newest entries as RSS 2.0',\n ),\n ),\n ].join('\\n'),\n )\n }\n\n return `${sections.join('\\n\\n').trim()}\\n`\n}\n"],"names":["LLMS_TXT_PATH","OPENAPI_PATH","absoluteSiteUrl","origin","path","base","replace","String","label","value","trim","item","name","url","note","nameForSlug","slug","words","charAt","toUpperCase","slice","derivedGuidance","options","siteName","lines","collection","collections","count","entryCount","push","description","toLowerCase","hasSearch","contactEmail","buildLlmsTxt","sections","whenToUse","agent","howToUse","guidance","length","join","pages","map","entry","title"],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
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
|
+
* `localStorage` is ~5 MB per origin and a besigner node map is not small —
|
|
19
|
+
* a 222-node screen is a substantial fraction of that on its own. Every
|
|
20
|
+
* writer of a node-map-sized value therefore has to answer "and what happens
|
|
21
|
+
* when it is full?", and until AGL-1256 none of them did: `writePreviewState`
|
|
22
|
+
* called `setItem` bare, so a full origin threw a `QuotaExceededError` up
|
|
23
|
+
* through a click handler.
|
|
24
|
+
*
|
|
25
|
+
* The answer here is: drop the least recently written value belonging to the
|
|
26
|
+
* *same feature* and try again. Scoping eviction to explicit prefixes is the
|
|
27
|
+
* whole point — a snapshot store must never be able to evict somebody else's
|
|
28
|
+
* keys (auth markers, the selected org, notification preferences) to make
|
|
29
|
+
* room for itself.
|
|
30
|
+
*/
|
|
31
|
+
/** How the caller decides which keys may be sacrificed, and in what order. */
|
|
32
|
+
export interface LocalStorageBudgetOptions {
|
|
33
|
+
key: string;
|
|
34
|
+
value: string;
|
|
35
|
+
/**
|
|
36
|
+
* Only keys starting with one of these may be evicted, and the order is
|
|
37
|
+
* the sacrifice order: everything under the first prefix goes (oldest
|
|
38
|
+
* first) before anything under the second is touched. That is what lets a
|
|
39
|
+
* draft write reclaim regenerable preview snapshots without ever costing
|
|
40
|
+
* somebody another document's unsaved work. The key being written is never
|
|
41
|
+
* evicted, even when it matches.
|
|
42
|
+
*/
|
|
43
|
+
evictPrefixes: string[];
|
|
44
|
+
/** Defaults to `window.localStorage`; injectable for tests. */
|
|
45
|
+
storage?: Pick<Storage, 'getItem' | 'setItem' | 'removeItem' | 'key' | 'length'>;
|
|
46
|
+
}
|
|
47
|
+
export interface LocalStorageBudgetResult {
|
|
48
|
+
/** False when the value could not be stored even after evicting. */
|
|
49
|
+
ok: boolean;
|
|
50
|
+
/** Keys dropped to make room, oldest first. */
|
|
51
|
+
evicted: string[];
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Writes `value` at `key`, evicting oldest-first within `evictPrefixes` if
|
|
55
|
+
* the origin is full.
|
|
56
|
+
*
|
|
57
|
+
* Never throws: a caller storing a crash-recovery snapshot must not be able
|
|
58
|
+
* to break the edit that triggered it. A failed write leaves any existing
|
|
59
|
+
* value at `key` in place — an older snapshot that is honest about its own
|
|
60
|
+
* age beats no snapshot at all.
|
|
61
|
+
*/
|
|
62
|
+
export declare function writeLocalStorageWithBudget(options: LocalStorageBudgetOptions): LocalStorageBudgetResult;
|
|
63
|
+
/**
|
|
64
|
+
* Removes every key under `prefix` whose `updatedAt` is older than `maxAge`.
|
|
65
|
+
*
|
|
66
|
+
* Snapshot stores are caches, and a cache with no expiry silently becomes an
|
|
67
|
+
* archive — see the note in `besigner-draft-store` about why an unbounded
|
|
68
|
+
* pile of dated snapshots is the wrong shape for this feature specifically.
|
|
69
|
+
*/
|
|
70
|
+
export declare function pruneLocalStorageByAge(options: {
|
|
71
|
+
prefix: string;
|
|
72
|
+
maxAgeMs: number;
|
|
73
|
+
now: number;
|
|
74
|
+
storage?: LocalStorageBudgetOptions['storage'];
|
|
75
|
+
}): string[];
|
|
@@ -0,0 +1,153 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @license
|
|
3
|
+
* Copyright 2026 Aglyn LLC
|
|
4
|
+
*
|
|
5
|
+
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
6
|
+
* you may not use this file except in compliance with the License.
|
|
7
|
+
* You may obtain a copy of the License at
|
|
8
|
+
*
|
|
9
|
+
* http://www.apache.org/licenses/LICENSE-2.0
|
|
10
|
+
*
|
|
11
|
+
* Unless required by applicable law or agreed to in writing, software
|
|
12
|
+
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
13
|
+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
14
|
+
* See the License for the specific language governing permissions and
|
|
15
|
+
* limitations under the License.
|
|
16
|
+
*/ /**
|
|
17
|
+
* `localStorage` is ~5 MB per origin and a besigner node map is not small —
|
|
18
|
+
* a 222-node screen is a substantial fraction of that on its own. Every
|
|
19
|
+
* writer of a node-map-sized value therefore has to answer "and what happens
|
|
20
|
+
* when it is full?", and until AGL-1256 none of them did: `writePreviewState`
|
|
21
|
+
* called `setItem` bare, so a full origin threw a `QuotaExceededError` up
|
|
22
|
+
* through a click handler.
|
|
23
|
+
*
|
|
24
|
+
* The answer here is: drop the least recently written value belonging to the
|
|
25
|
+
* *same feature* and try again. Scoping eviction to explicit prefixes is the
|
|
26
|
+
* whole point — a snapshot store must never be able to evict somebody else's
|
|
27
|
+
* keys (auth markers, the selected org, notification preferences) to make
|
|
28
|
+
* room for itself.
|
|
29
|
+
*/ /** How the caller decides which keys may be sacrificed, and in what order. */ /**
|
|
30
|
+
* Browsers disagree about how a full quota surfaces: a `QuotaExceededError`
|
|
31
|
+
* by name, Firefox's `NS_ERROR_DOM_QUOTA_REACHED`, or the legacy numeric
|
|
32
|
+
* codes. Anything else (a `SecurityError` from a blocked origin, say) is not
|
|
33
|
+
* something eviction can fix and is reported rather than retried.
|
|
34
|
+
*/ function isQuotaExceeded(error) {
|
|
35
|
+
if (!error || typeof error !== 'object') return false;
|
|
36
|
+
const { name, code } = error;
|
|
37
|
+
return name === 'QuotaExceededError' || name === 'NS_ERROR_DOM_QUOTA_REACHED' || code === 22 || code === 1014;
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* The sort key for eviction. Values written by this module's callers are
|
|
41
|
+
* JSON objects carrying `updatedAt`; anything unparseable or missing it
|
|
42
|
+
* sorts as oldest, because a value we cannot date is a value we cannot
|
|
43
|
+
* justify keeping ahead of one we can.
|
|
44
|
+
*/ function writtenAt(raw) {
|
|
45
|
+
if (!raw) return 0;
|
|
46
|
+
try {
|
|
47
|
+
const parsed = JSON.parse(raw);
|
|
48
|
+
return typeof (parsed == null ? void 0 : parsed.updatedAt) === 'number' ? parsed.updatedAt : 0;
|
|
49
|
+
} catch (unused) {
|
|
50
|
+
return 0;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function resolveStorage(storage) {
|
|
54
|
+
if (storage) return storage;
|
|
55
|
+
try {
|
|
56
|
+
return typeof window === 'undefined' ? null : window.localStorage;
|
|
57
|
+
} catch (unused) {
|
|
58
|
+
// Storage access can throw outright when cookies are blocked.
|
|
59
|
+
return null;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Writes `value` at `key`, evicting oldest-first within `evictPrefixes` if
|
|
64
|
+
* the origin is full.
|
|
65
|
+
*
|
|
66
|
+
* Never throws: a caller storing a crash-recovery snapshot must not be able
|
|
67
|
+
* to break the edit that triggered it. A failed write leaves any existing
|
|
68
|
+
* value at `key` in place — an older snapshot that is honest about its own
|
|
69
|
+
* age beats no snapshot at all.
|
|
70
|
+
*/ export function writeLocalStorageWithBudget(options) {
|
|
71
|
+
const { key, value, evictPrefixes } = options;
|
|
72
|
+
const storage = resolveStorage(options.storage);
|
|
73
|
+
const evicted = [];
|
|
74
|
+
if (!storage) return {
|
|
75
|
+
ok: false,
|
|
76
|
+
evicted
|
|
77
|
+
};
|
|
78
|
+
const attempt = ()=>{
|
|
79
|
+
try {
|
|
80
|
+
storage.setItem(key, value);
|
|
81
|
+
return true;
|
|
82
|
+
} catch (error) {
|
|
83
|
+
return isQuotaExceeded(error) ? 'retry' : false;
|
|
84
|
+
}
|
|
85
|
+
};
|
|
86
|
+
let outcome = attempt();
|
|
87
|
+
if (outcome !== 'retry') return {
|
|
88
|
+
ok: outcome === true,
|
|
89
|
+
evicted
|
|
90
|
+
};
|
|
91
|
+
// Snapshot the candidates once: `key()` indices shift as we remove, and
|
|
92
|
+
// re-scanning per eviction is O(n²) on the one path already under stress.
|
|
93
|
+
const candidates = [];
|
|
94
|
+
for(let index = 0; index < storage.length; index += 1){
|
|
95
|
+
const candidate = storage.key(index);
|
|
96
|
+
if (!candidate || candidate === key) continue;
|
|
97
|
+
const rank = evictPrefixes.findIndex((prefix)=>candidate.startsWith(prefix));
|
|
98
|
+
if (rank < 0) continue;
|
|
99
|
+
candidates.push({
|
|
100
|
+
key: candidate,
|
|
101
|
+
rank,
|
|
102
|
+
writtenAt: writtenAt(storage.getItem(candidate))
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
candidates.sort((a, b)=>a.rank - b.rank || a.writtenAt - b.writtenAt);
|
|
106
|
+
for (const candidate of candidates){
|
|
107
|
+
try {
|
|
108
|
+
storage.removeItem(candidate.key);
|
|
109
|
+
} catch (unused) {
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
evicted.push(candidate.key);
|
|
113
|
+
outcome = attempt();
|
|
114
|
+
if (outcome !== 'retry') return {
|
|
115
|
+
ok: outcome === true,
|
|
116
|
+
evicted
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
return {
|
|
120
|
+
ok: false,
|
|
121
|
+
evicted
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Removes every key under `prefix` whose `updatedAt` is older than `maxAge`.
|
|
126
|
+
*
|
|
127
|
+
* Snapshot stores are caches, and a cache with no expiry silently becomes an
|
|
128
|
+
* archive — see the note in `besigner-draft-store` about why an unbounded
|
|
129
|
+
* pile of dated snapshots is the wrong shape for this feature specifically.
|
|
130
|
+
*/ export function pruneLocalStorageByAge(options) {
|
|
131
|
+
const storage = resolveStorage(options.storage);
|
|
132
|
+
const pruned = [];
|
|
133
|
+
if (!storage) return pruned;
|
|
134
|
+
const stale = [];
|
|
135
|
+
for(let index = 0; index < storage.length; index += 1){
|
|
136
|
+
const candidate = storage.key(index);
|
|
137
|
+
if (!(candidate == null ? void 0 : candidate.startsWith(options.prefix))) continue;
|
|
138
|
+
const age = options.now - writtenAt(storage.getItem(candidate));
|
|
139
|
+
if (age > options.maxAgeMs) stale.push(candidate);
|
|
140
|
+
}
|
|
141
|
+
for (const candidate of stale){
|
|
142
|
+
try {
|
|
143
|
+
storage.removeItem(candidate);
|
|
144
|
+
pruned.push(candidate);
|
|
145
|
+
} catch (unused) {
|
|
146
|
+
// A storage that refuses removal will refuse the write too; the
|
|
147
|
+
// caller's write path reports that.
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
return pruned;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
//# sourceMappingURL=local-storage-budget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../../libs/aglyn/src/lib/app-utils/local-storage-budget.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 * `localStorage` is ~5 MB per origin and a besigner node map is not small —\n * a 222-node screen is a substantial fraction of that on its own. Every\n * writer of a node-map-sized value therefore has to answer \"and what happens\n * when it is full?\", and until AGL-1256 none of them did: `writePreviewState`\n * called `setItem` bare, so a full origin threw a `QuotaExceededError` up\n * through a click handler.\n *\n * The answer here is: drop the least recently written value belonging to the\n * *same feature* and try again. Scoping eviction to explicit prefixes is the\n * whole point — a snapshot store must never be able to evict somebody else's\n * keys (auth markers, the selected org, notification preferences) to make\n * room for itself.\n */\n\n/** How the caller decides which keys may be sacrificed, and in what order. */\nexport interface LocalStorageBudgetOptions {\n key: string\n value: string\n /**\n * Only keys starting with one of these may be evicted, and the order is\n * the sacrifice order: everything under the first prefix goes (oldest\n * first) before anything under the second is touched. That is what lets a\n * draft write reclaim regenerable preview snapshots without ever costing\n * somebody another document's unsaved work. The key being written is never\n * evicted, even when it matches.\n */\n evictPrefixes: string[]\n /** Defaults to `window.localStorage`; injectable for tests. */\n storage?: Pick<\n Storage,\n 'getItem' | 'setItem' | 'removeItem' | 'key' | 'length'\n >\n}\n\nexport interface LocalStorageBudgetResult {\n /** False when the value could not be stored even after evicting. */\n ok: boolean\n /** Keys dropped to make room, oldest first. */\n evicted: string[]\n}\n\n/**\n * Browsers disagree about how a full quota surfaces: a `QuotaExceededError`\n * by name, Firefox's `NS_ERROR_DOM_QUOTA_REACHED`, or the legacy numeric\n * codes. Anything else (a `SecurityError` from a blocked origin, say) is not\n * something eviction can fix and is reported rather than retried.\n */\nfunction isQuotaExceeded(error: unknown): boolean {\n if (!error || typeof error !== 'object') return false\n const { name, code } = error as { name?: string; code?: number }\n return (\n name === 'QuotaExceededError' ||\n name === 'NS_ERROR_DOM_QUOTA_REACHED' ||\n code === 22 ||\n code === 1014\n )\n}\n\n/**\n * The sort key for eviction. Values written by this module's callers are\n * JSON objects carrying `updatedAt`; anything unparseable or missing it\n * sorts as oldest, because a value we cannot date is a value we cannot\n * justify keeping ahead of one we can.\n */\nfunction writtenAt(raw: string | null): number {\n if (!raw) return 0\n try {\n const parsed = JSON.parse(raw) as { updatedAt?: unknown }\n return typeof parsed?.updatedAt === 'number' ? parsed.updatedAt : 0\n } catch {\n return 0\n }\n}\n\nfunction resolveStorage(\n storage: LocalStorageBudgetOptions['storage'],\n): LocalStorageBudgetOptions['storage'] | null {\n if (storage) return storage\n try {\n return typeof window === 'undefined' ? null : window.localStorage\n } catch {\n // Storage access can throw outright when cookies are blocked.\n return null\n }\n}\n\n/**\n * Writes `value` at `key`, evicting oldest-first within `evictPrefixes` if\n * the origin is full.\n *\n * Never throws: a caller storing a crash-recovery snapshot must not be able\n * to break the edit that triggered it. A failed write leaves any existing\n * value at `key` in place — an older snapshot that is honest about its own\n * age beats no snapshot at all.\n */\nexport function writeLocalStorageWithBudget(\n options: LocalStorageBudgetOptions,\n): LocalStorageBudgetResult {\n const { key, value, evictPrefixes } = options\n const storage = resolveStorage(options.storage)\n const evicted: string[] = []\n if (!storage) return { ok: false, evicted }\n\n const attempt = (): boolean | 'retry' => {\n try {\n storage.setItem(key, value)\n return true\n } catch (error) {\n return isQuotaExceeded(error) ? 'retry' : false\n }\n }\n\n let outcome = attempt()\n if (outcome !== 'retry') return { ok: outcome === true, evicted }\n\n // Snapshot the candidates once: `key()` indices shift as we remove, and\n // re-scanning per eviction is O(n²) on the one path already under stress.\n const candidates: Array<{ key: string; rank: number; writtenAt: number }> =\n []\n for (let index = 0; index < storage.length; index += 1) {\n const candidate = storage.key(index)\n if (!candidate || candidate === key) continue\n const rank = evictPrefixes.findIndex((prefix) =>\n candidate.startsWith(prefix),\n )\n if (rank < 0) continue\n candidates.push({\n key: candidate,\n rank,\n writtenAt: writtenAt(storage.getItem(candidate)),\n })\n }\n candidates.sort((a, b) => a.rank - b.rank || a.writtenAt - b.writtenAt)\n\n for (const candidate of candidates) {\n try {\n storage.removeItem(candidate.key)\n } catch {\n continue\n }\n evicted.push(candidate.key)\n outcome = attempt()\n if (outcome !== 'retry') return { ok: outcome === true, evicted }\n }\n\n return { ok: false, evicted }\n}\n\n/**\n * Removes every key under `prefix` whose `updatedAt` is older than `maxAge`.\n *\n * Snapshot stores are caches, and a cache with no expiry silently becomes an\n * archive — see the note in `besigner-draft-store` about why an unbounded\n * pile of dated snapshots is the wrong shape for this feature specifically.\n */\nexport function pruneLocalStorageByAge(options: {\n prefix: string\n maxAgeMs: number\n now: number\n storage?: LocalStorageBudgetOptions['storage']\n}): string[] {\n const storage = resolveStorage(options.storage)\n const pruned: string[] = []\n if (!storage) return pruned\n\n const stale: string[] = []\n for (let index = 0; index < storage.length; index += 1) {\n const candidate = storage.key(index)\n if (!candidate?.startsWith(options.prefix)) continue\n const age = options.now - writtenAt(storage.getItem(candidate))\n if (age > options.maxAgeMs) stale.push(candidate)\n }\n for (const candidate of stale) {\n try {\n storage.removeItem(candidate)\n pruned.push(candidate)\n } catch {\n // A storage that refuses removal will refuse the write too; the\n // caller's write path reports that.\n }\n }\n return pruned\n}\n"],"names":["isQuotaExceeded","error","name","code","writtenAt","raw","parsed","JSON","parse","updatedAt","resolveStorage","storage","window","localStorage","writeLocalStorageWithBudget","options","key","value","evictPrefixes","evicted","ok","attempt","setItem","outcome","candidates","index","length","candidate","rank","findIndex","prefix","startsWith","push","getItem","sort","a","b","removeItem","pruneLocalStorageByAge","pruned","stale","age","now","maxAgeMs"],"mappings":"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"}
|