@kywi-software/core 0.14.0 → 0.15.1
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/AGENT-PATTERNS.md +200 -17
- package/README.md +38 -12
- package/dist/admin/audience-editor.d.ts +2 -0
- package/dist/admin/audience-editor.d.ts.map +1 -1
- package/dist/admin/audience-editor.js +4 -2
- package/dist/admin/audience-editor.js.map +1 -1
- package/dist/admin/chrome.d.ts.map +1 -1
- package/dist/admin/chrome.js +6 -7
- package/dist/admin/chrome.js.map +1 -1
- package/dist/admin/condition-builder.d.ts.map +1 -1
- package/dist/admin/condition-builder.js +16 -3
- package/dist/admin/condition-builder.js.map +1 -1
- package/dist/admin/field-components.d.ts.map +1 -1
- package/dist/admin/field-components.js +27 -1
- package/dist/admin/field-components.js.map +1 -1
- package/dist/admin/form-helpers.d.ts.map +1 -1
- package/dist/admin/form-helpers.js +6 -1
- package/dist/admin/form-helpers.js.map +1 -1
- package/dist/admin/layout-editor/chrome-env.d.ts +35 -0
- package/dist/admin/layout-editor/chrome-env.d.ts.map +1 -0
- package/dist/admin/layout-editor/chrome-env.js +13 -0
- package/dist/admin/layout-editor/chrome-env.js.map +1 -0
- package/dist/admin/layout-editor/component-actions.d.ts +58 -7
- package/dist/admin/layout-editor/component-actions.d.ts.map +1 -1
- package/dist/admin/layout-editor/component-actions.js +131 -5
- package/dist/admin/layout-editor/component-actions.js.map +1 -1
- package/dist/admin/layout-editor/component-fork.d.ts +4 -4
- package/dist/admin/layout-editor/component-fork.d.ts.map +1 -1
- package/dist/admin/layout-editor/component-fork.js +76 -10
- package/dist/admin/layout-editor/component-fork.js.map +1 -1
- package/dist/admin/layout-editor/component-picker-field.d.ts +17 -3
- package/dist/admin/layout-editor/component-picker-field.d.ts.map +1 -1
- package/dist/admin/layout-editor/component-picker-field.js +5 -2
- package/dist/admin/layout-editor/component-picker-field.js.map +1 -1
- package/dist/admin/layout-editor/drag-feedback.d.ts +25 -1
- package/dist/admin/layout-editor/drag-feedback.d.ts.map +1 -1
- package/dist/admin/layout-editor/drag-feedback.js +9 -0
- package/dist/admin/layout-editor/drag-feedback.js.map +1 -1
- package/dist/admin/layout-editor/drag-utils.d.ts +103 -5
- package/dist/admin/layout-editor/drag-utils.d.ts.map +1 -1
- package/dist/admin/layout-editor/drag-utils.js +131 -4
- package/dist/admin/layout-editor/drag-utils.js.map +1 -1
- package/dist/admin/layout-editor/editor-canvas.d.ts +11 -0
- package/dist/admin/layout-editor/editor-canvas.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-canvas.js +134 -20
- package/dist/admin/layout-editor/editor-canvas.js.map +1 -1
- package/dist/admin/layout-editor/editor-dialog.d.ts +58 -3
- package/dist/admin/layout-editor/editor-dialog.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-dialog.js +71 -9
- package/dist/admin/layout-editor/editor-dialog.js.map +1 -1
- package/dist/admin/layout-editor/editor-state.d.ts +119 -0
- package/dist/admin/layout-editor/editor-state.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-state.js +188 -6
- package/dist/admin/layout-editor/editor-state.js.map +1 -1
- package/dist/admin/layout-editor/editor-toolbar.d.ts +10 -1
- package/dist/admin/layout-editor/editor-toolbar.d.ts.map +1 -1
- package/dist/admin/layout-editor/editor-toolbar.js +2 -2
- package/dist/admin/layout-editor/editor-toolbar.js.map +1 -1
- package/dist/admin/layout-editor/editor.css +216 -8
- package/dist/admin/layout-editor/inline-text.d.ts +15 -1
- package/dist/admin/layout-editor/inline-text.d.ts.map +1 -1
- package/dist/admin/layout-editor/inline-text.js +30 -2
- package/dist/admin/layout-editor/inline-text.js.map +1 -1
- package/dist/admin/layout-editor/layout-editor.d.ts +21 -16
- package/dist/admin/layout-editor/layout-editor.d.ts.map +1 -1
- package/dist/admin/layout-editor/layout-editor.js +40 -17
- package/dist/admin/layout-editor/layout-editor.js.map +1 -1
- package/dist/admin/layout-editor/linked-component-notes.d.ts +88 -0
- package/dist/admin/layout-editor/linked-component-notes.d.ts.map +1 -0
- package/dist/admin/layout-editor/linked-component-notes.js +88 -0
- package/dist/admin/layout-editor/linked-component-notes.js.map +1 -0
- package/dist/admin/layout-editor/module-overlay.d.ts +23 -4
- package/dist/admin/layout-editor/module-overlay.d.ts.map +1 -1
- package/dist/admin/layout-editor/module-overlay.js +56 -10
- package/dist/admin/layout-editor/module-overlay.js.map +1 -1
- package/dist/admin/layout-editor/module-variant-container-config.d.ts.map +1 -1
- package/dist/admin/layout-editor/module-variant-container-config.js +9 -2
- package/dist/admin/layout-editor/module-variant-container-config.js.map +1 -1
- package/dist/admin/layout-editor/module-variant-container-panel.d.ts +75 -0
- package/dist/admin/layout-editor/module-variant-container-panel.d.ts.map +1 -0
- package/dist/admin/layout-editor/module-variant-container-panel.js +29 -0
- package/dist/admin/layout-editor/module-variant-container-panel.js.map +1 -0
- package/dist/admin/layout-editor/node-lookup.d.ts.map +1 -1
- package/dist/admin/layout-editor/node-lookup.js +33 -3
- package/dist/admin/layout-editor/node-lookup.js.map +1 -1
- package/dist/admin/layout-editor/overlay-shell.d.ts.map +1 -1
- package/dist/admin/layout-editor/overlay-shell.js +19 -4
- package/dist/admin/layout-editor/overlay-shell.js.map +1 -1
- package/dist/admin/layout-editor/props-panel.d.ts +28 -11
- package/dist/admin/layout-editor/props-panel.d.ts.map +1 -1
- package/dist/admin/layout-editor/props-panel.js +75 -125
- package/dist/admin/layout-editor/props-panel.js.map +1 -1
- package/dist/admin/layout-editor/section-variant-container-config.d.ts.map +1 -1
- package/dist/admin/layout-editor/section-variant-container-config.js +11 -2
- package/dist/admin/layout-editor/section-variant-container-config.js.map +1 -1
- package/dist/admin/layout-editor/use-chrome-flip.d.ts +99 -11
- package/dist/admin/layout-editor/use-chrome-flip.d.ts.map +1 -1
- package/dist/admin/layout-editor/use-chrome-flip.js +268 -97
- package/dist/admin/layout-editor/use-chrome-flip.js.map +1 -1
- package/dist/admin/layout-editor/use-component-connect.d.ts +13 -0
- package/dist/admin/layout-editor/use-component-connect.d.ts.map +1 -1
- package/dist/admin/layout-editor/use-component-connect.js +116 -20
- package/dist/admin/layout-editor/use-component-connect.js.map +1 -1
- package/dist/admin/layout-editor/use-component-fork.d.ts +49 -19
- package/dist/admin/layout-editor/use-component-fork.d.ts.map +1 -1
- package/dist/admin/layout-editor/use-component-fork.js +28 -19
- package/dist/admin/layout-editor/use-component-fork.js.map +1 -1
- package/dist/admin/layout-editor/use-component-library.d.ts +4 -4
- package/dist/admin/layout-editor/use-component-library.d.ts.map +1 -1
- package/dist/admin/layout-editor/use-component-library.js +1 -1
- package/dist/admin/layout-editor/use-component-library.js.map +1 -1
- package/dist/admin/layout-editor/use-editor-dnd.d.ts +10 -0
- package/dist/admin/layout-editor/use-editor-dnd.d.ts.map +1 -1
- package/dist/admin/layout-editor/use-editor-dnd.js +234 -14
- package/dist/admin/layout-editor/use-editor-dnd.js.map +1 -1
- package/dist/admin/layout-editor/variant-container-config.d.ts.map +1 -1
- package/dist/admin/layout-editor/variant-container-config.js +1 -1
- package/dist/admin/layout-editor/variant-container-config.js.map +1 -1
- package/dist/admin/layout-editor/variant-editor.d.ts +16 -15
- package/dist/admin/layout-editor/variant-editor.d.ts.map +1 -1
- package/dist/admin/layout-editor/variant-editor.js +16 -5
- package/dist/admin/layout-editor/variant-editor.js.map +1 -1
- package/dist/admin/primitives.d.ts.map +1 -1
- package/dist/admin/primitives.js +1 -1
- package/dist/admin/primitives.js.map +1 -1
- package/dist/admin/registry.d.ts +12 -0
- package/dist/admin/registry.d.ts.map +1 -1
- package/dist/admin/registry.js +12 -0
- package/dist/admin/registry.js.map +1 -1
- package/dist/admin/rule-tester.d.ts +1 -0
- package/dist/admin/rule-tester.d.ts.map +1 -1
- package/dist/admin/rule-tester.js +7 -4
- package/dist/admin/rule-tester.js.map +1 -1
- package/dist/admin/server.d.ts +10 -1
- package/dist/admin/server.d.ts.map +1 -1
- package/dist/admin/server.js +4 -1
- package/dist/admin/server.js.map +1 -1
- package/dist/admin/signal-options.d.ts +17 -0
- package/dist/admin/signal-options.d.ts.map +1 -1
- package/dist/admin/signal-options.js +28 -0
- package/dist/admin/signal-options.js.map +1 -1
- package/dist/admin/site-switcher.d.ts +16 -3
- package/dist/admin/site-switcher.d.ts.map +1 -1
- package/dist/admin/site-switcher.js +18 -3
- package/dist/admin/site-switcher.js.map +1 -1
- package/dist/admin/styles/admin.css +0 -3
- package/dist/admin/surface-matcher.d.ts +6 -2
- package/dist/admin/surface-matcher.d.ts.map +1 -1
- package/dist/admin/surface-matcher.js +42 -5
- package/dist/admin/surface-matcher.js.map +1 -1
- package/dist/admin/surfaces/audiences/audiences-data.d.ts +5 -0
- package/dist/admin/surfaces/audiences/audiences-data.d.ts.map +1 -1
- package/dist/admin/surfaces/audiences/audiences-data.js +3 -0
- package/dist/admin/surfaces/audiences/audiences-data.js.map +1 -1
- package/dist/admin/surfaces/components/components-data.d.ts +31 -11
- package/dist/admin/surfaces/components/components-data.d.ts.map +1 -1
- package/dist/admin/surfaces/components/components-data.js +17 -4
- package/dist/admin/surfaces/components/components-data.js.map +1 -1
- package/dist/admin/surfaces/components/components-list.d.ts.map +1 -1
- package/dist/admin/surfaces/components/components-list.js +20 -7
- package/dist/admin/surfaces/components/components-list.js.map +1 -1
- package/dist/admin/surfaces/components/definition-canvas.d.ts +11 -3
- package/dist/admin/surfaces/components/definition-canvas.d.ts.map +1 -1
- package/dist/admin/surfaces/components/definition-canvas.js +138 -17
- package/dist/admin/surfaces/components/definition-canvas.js.map +1 -1
- package/dist/admin/surfaces/dashboard/dashboard-index.d.ts.map +1 -1
- package/dist/admin/surfaces/dashboard/dashboard-index.js +2 -2
- package/dist/admin/surfaces/dashboard/dashboard-index.js.map +1 -1
- package/dist/admin/surfaces/layouts/layout-editor-client.d.ts.map +1 -1
- package/dist/admin/surfaces/layouts/layout-editor-client.js +12 -11
- package/dist/admin/surfaces/layouts/layout-editor-client.js.map +1 -1
- package/dist/admin/surfaces/menus/menu-editor.d.ts.map +1 -1
- package/dist/admin/surfaces/menus/menu-editor.js +17 -4
- package/dist/admin/surfaces/menus/menu-editor.js.map +1 -1
- package/dist/admin/surfaces/menus/menu-tree.d.ts +18 -4
- package/dist/admin/surfaces/menus/menu-tree.d.ts.map +1 -1
- package/dist/admin/surfaces/menus/menu-tree.js +18 -3
- package/dist/admin/surfaces/menus/menu-tree.js.map +1 -1
- package/dist/admin/surfaces/menus/menus-data.d.ts +18 -0
- package/dist/admin/surfaces/menus/menus-data.d.ts.map +1 -1
- package/dist/admin/surfaces/menus/menus-data.js +4 -0
- package/dist/admin/surfaces/menus/menus-data.js.map +1 -1
- package/dist/admin/surfaces/menus/menus-list.d.ts.map +1 -1
- package/dist/admin/surfaces/menus/menus-list.js +2 -12
- package/dist/admin/surfaces/menus/menus-list.js.map +1 -1
- package/dist/admin/surfaces/users/users-data.d.ts +14 -0
- package/dist/admin/surfaces/users/users-data.d.ts.map +1 -1
- package/dist/admin/surfaces/users/users-data.js +19 -0
- package/dist/admin/surfaces/users/users-data.js.map +1 -1
- package/dist/admin/surfaces/users/users-detail.d.ts.map +1 -1
- package/dist/admin/surfaces/users/users-detail.js +40 -4
- package/dist/admin/surfaces/users/users-detail.js.map +1 -1
- package/dist/admin/surfaces/users/users-new.d.ts.map +1 -1
- package/dist/admin/surfaces/users/users-new.js +8 -5
- package/dist/admin/surfaces/users/users-new.js.map +1 -1
- package/dist/admin/user-form.d.ts +10 -1
- package/dist/admin/user-form.d.ts.map +1 -1
- package/dist/admin/user-form.js +2 -2
- package/dist/admin/user-form.js.map +1 -1
- package/dist/api/admin-features-routes.js +2 -2
- package/dist/api/admin-features-routes.js.map +1 -1
- package/dist/api/api-key-routes.js +2 -2
- package/dist/api/api-key-routes.js.map +1 -1
- package/dist/api/audience-preview-routes.d.ts +7 -0
- package/dist/api/audience-preview-routes.d.ts.map +1 -1
- package/dist/api/audience-preview-routes.js +4 -4
- package/dist/api/audience-preview-routes.js.map +1 -1
- package/dist/api/audience-routes.d.ts +7 -0
- package/dist/api/audience-routes.d.ts.map +1 -1
- package/dist/api/audience-routes.js +31 -19
- package/dist/api/audience-routes.js.map +1 -1
- package/dist/api/audience-runtime-routes.d.ts +23 -0
- package/dist/api/audience-runtime-routes.d.ts.map +1 -1
- package/dist/api/audience-runtime-routes.js +511 -25
- package/dist/api/audience-runtime-routes.js.map +1 -1
- package/dist/api/auth-routes.d.ts.map +1 -1
- package/dist/api/auth-routes.js +10 -4
- package/dist/api/auth-routes.js.map +1 -1
- package/dist/api/auth.d.ts +1 -0
- package/dist/api/auth.d.ts.map +1 -1
- package/dist/api/auth.js +43 -3
- package/dist/api/auth.js.map +1 -1
- package/dist/api/ax-routes.d.ts.map +1 -1
- package/dist/api/ax-routes.js +7 -3
- package/dist/api/ax-routes.js.map +1 -1
- package/dist/api/bulk-routes.d.ts.map +1 -1
- package/dist/api/bulk-routes.js +7 -7
- package/dist/api/bulk-routes.js.map +1 -1
- package/dist/api/category-routes.js +6 -6
- package/dist/api/category-routes.js.map +1 -1
- package/dist/api/changeset-routes.js +2 -2
- package/dist/api/changeset-routes.js.map +1 -1
- package/dist/api/comment-routes.js +12 -12
- package/dist/api/comment-routes.js.map +1 -1
- package/dist/api/component-routes.d.ts +25 -0
- package/dist/api/component-routes.d.ts.map +1 -1
- package/dist/api/component-routes.js +44 -19
- package/dist/api/component-routes.js.map +1 -1
- package/dist/api/config-routes.js +4 -4
- package/dist/api/config-routes.js.map +1 -1
- package/dist/api/content-permission-routes.js +2 -2
- package/dist/api/content-permission-routes.js.map +1 -1
- package/dist/api/content-routes.d.ts.map +1 -1
- package/dist/api/content-routes.js +21 -16
- package/dist/api/content-routes.js.map +1 -1
- package/dist/api/content-type-routes.js +3 -3
- package/dist/api/content-type-routes.js.map +1 -1
- package/dist/api/dashboard-routes.js +1 -1
- package/dist/api/dashboard-routes.js.map +1 -1
- package/dist/api/experiment-routes.d.ts +7 -0
- package/dist/api/experiment-routes.d.ts.map +1 -1
- package/dist/api/experiment-routes.js +10 -10
- package/dist/api/experiment-routes.js.map +1 -1
- package/dist/api/experiment-runtime-routes.d.ts +6 -0
- package/dist/api/experiment-runtime-routes.d.ts.map +1 -1
- package/dist/api/experiment-runtime-routes.js +47 -11
- package/dist/api/experiment-runtime-routes.js.map +1 -1
- package/dist/api/extension-routes.js +4 -4
- package/dist/api/extension-routes.js.map +1 -1
- package/dist/api/feed-routes.d.ts +2 -2
- package/dist/api/feed-routes.js +5 -5
- package/dist/api/feed-routes.js.map +1 -1
- package/dist/api/form-routes.js +6 -6
- package/dist/api/form-routes.js.map +1 -1
- package/dist/api/graphql/resolvers.d.ts +1 -1
- package/dist/api/graphql/resolvers.d.ts.map +1 -1
- package/dist/api/graphql/resolvers.js +68 -33
- package/dist/api/graphql/resolvers.js.map +1 -1
- package/dist/api/group-routes.js +9 -9
- package/dist/api/group-routes.js.map +1 -1
- package/dist/api/index.d.ts +1 -0
- package/dist/api/index.d.ts.map +1 -1
- package/dist/api/index.js +43 -7
- package/dist/api/index.js.map +1 -1
- package/dist/api/layout-routes.d.ts +19 -1
- package/dist/api/layout-routes.d.ts.map +1 -1
- package/dist/api/layout-routes.js +92 -8
- package/dist/api/layout-routes.js.map +1 -1
- package/dist/api/layout-write-guard.d.ts +3 -2
- package/dist/api/layout-write-guard.d.ts.map +1 -1
- package/dist/api/layout-write-guard.js +12 -4
- package/dist/api/layout-write-guard.js.map +1 -1
- package/dist/api/media-routes.d.ts.map +1 -1
- package/dist/api/media-routes.js +100 -35
- package/dist/api/media-routes.js.map +1 -1
- package/dist/api/menu-routes.d.ts +9 -1
- package/dist/api/menu-routes.d.ts.map +1 -1
- package/dist/api/menu-routes.js +46 -12
- package/dist/api/menu-routes.js.map +1 -1
- package/dist/api/nav-routes.d.ts +6 -0
- package/dist/api/nav-routes.d.ts.map +1 -1
- package/dist/api/nav-routes.js +25 -4
- package/dist/api/nav-routes.js.map +1 -1
- package/dist/api/oauth-routes.js +2 -2
- package/dist/api/oauth-routes.js.map +1 -1
- package/dist/api/openapi.d.ts.map +1 -1
- package/dist/api/openapi.js +82 -34
- package/dist/api/openapi.js.map +1 -1
- package/dist/api/pagination.d.ts +10 -0
- package/dist/api/pagination.d.ts.map +1 -1
- package/dist/api/pagination.js +7 -1
- package/dist/api/pagination.js.map +1 -1
- package/dist/api/response.d.ts +29 -0
- package/dist/api/response.d.ts.map +1 -1
- package/dist/api/response.js +23 -3
- package/dist/api/response.js.map +1 -1
- package/dist/api/search-routes.d.ts.map +1 -1
- package/dist/api/search-routes.js +19 -5
- package/dist/api/search-routes.js.map +1 -1
- package/dist/api/section-template-routes.d.ts.map +1 -1
- package/dist/api/section-template-routes.js +37 -20
- package/dist/api/section-template-routes.js.map +1 -1
- package/dist/api/site-admin-routes.d.ts +10 -1
- package/dist/api/site-admin-routes.d.ts.map +1 -1
- package/dist/api/site-admin-routes.js +21 -1
- package/dist/api/site-admin-routes.js.map +1 -1
- package/dist/api/site-context.d.ts +35 -5
- package/dist/api/site-context.d.ts.map +1 -1
- package/dist/api/site-context.js +21 -6
- package/dist/api/site-context.js.map +1 -1
- package/dist/api/site-routes.js +2 -2
- package/dist/api/site-routes.js.map +1 -1
- package/dist/api/tag-routes.d.ts.map +1 -1
- package/dist/api/tag-routes.js +5 -5
- package/dist/api/tag-routes.js.map +1 -1
- package/dist/api/translation-routes.js +5 -5
- package/dist/api/translation-routes.js.map +1 -1
- package/dist/api/user-routes.d.ts.map +1 -1
- package/dist/api/user-routes.js +136 -21
- package/dist/api/user-routes.js.map +1 -1
- package/dist/api/version-routes.js +2 -2
- package/dist/api/version-routes.js.map +1 -1
- package/dist/api/webhook-routes.js +8 -8
- package/dist/api/webhook-routes.js.map +1 -1
- package/dist/api/workflow-routes.d.ts.map +1 -1
- package/dist/api/workflow-routes.js +23 -14
- package/dist/api/workflow-routes.js.map +1 -1
- package/dist/audiences/collectors/identity.d.ts +14 -1
- package/dist/audiences/collectors/identity.d.ts.map +1 -1
- package/dist/audiences/collectors/identity.js +16 -3
- package/dist/audiences/collectors/identity.js.map +1 -1
- package/dist/audiences/collectors/index.d.ts +16 -2
- package/dist/audiences/collectors/index.d.ts.map +1 -1
- package/dist/audiences/collectors/index.js +29 -5
- package/dist/audiences/collectors/index.js.map +1 -1
- package/dist/audiences/collectors/pinned-audience.d.ts +28 -2
- package/dist/audiences/collectors/pinned-audience.d.ts.map +1 -1
- package/dist/audiences/collectors/pinned-audience.js +35 -5
- package/dist/audiences/collectors/pinned-audience.js.map +1 -1
- package/dist/audiences/collectors/selfid.d.ts +25 -0
- package/dist/audiences/collectors/selfid.d.ts.map +1 -0
- package/dist/audiences/collectors/selfid.js +46 -0
- package/dist/audiences/collectors/selfid.js.map +1 -0
- package/dist/audiences/collectors/session.d.ts +41 -0
- package/dist/audiences/collectors/session.d.ts.map +1 -0
- package/dist/audiences/collectors/session.js +50 -0
- package/dist/audiences/collectors/session.js.map +1 -0
- package/dist/audiences/collectors/utm.d.ts +15 -1
- package/dist/audiences/collectors/utm.d.ts.map +1 -1
- package/dist/audiences/collectors/utm.js +16 -2
- package/dist/audiences/collectors/utm.js.map +1 -1
- package/dist/audiences/consent-config.d.ts +21 -0
- package/dist/audiences/consent-config.d.ts.map +1 -0
- package/dist/audiences/consent-config.js +15 -0
- package/dist/audiences/consent-config.js.map +1 -0
- package/dist/audiences/consent-startup.d.ts +39 -0
- package/dist/audiences/consent-startup.d.ts.map +1 -0
- package/dist/audiences/consent-startup.js +105 -0
- package/dist/audiences/consent-startup.js.map +1 -0
- package/dist/audiences/consent.d.ts +205 -0
- package/dist/audiences/consent.d.ts.map +1 -0
- package/dist/audiences/consent.js +335 -0
- package/dist/audiences/consent.js.map +1 -0
- package/dist/audiences/cookies.d.ts +21 -0
- package/dist/audiences/cookies.d.ts.map +1 -1
- package/dist/audiences/cookies.js +26 -0
- package/dist/audiences/cookies.js.map +1 -1
- package/dist/audiences/engine.d.ts +7 -0
- package/dist/audiences/engine.d.ts.map +1 -1
- package/dist/audiences/engine.js +7 -2
- package/dist/audiences/engine.js.map +1 -1
- package/dist/audiences/entry-page.d.ts +89 -0
- package/dist/audiences/entry-page.d.ts.map +1 -0
- package/dist/audiences/entry-page.js +116 -0
- package/dist/audiences/entry-page.js.map +1 -0
- package/dist/audiences/evaluator/instant-match.d.ts.map +1 -1
- package/dist/audiences/evaluator/instant-match.js +7 -0
- package/dist/audiences/evaluator/instant-match.js.map +1 -1
- package/dist/audiences/index.d.ts +6 -2
- package/dist/audiences/index.d.ts.map +1 -1
- package/dist/audiences/index.js +12 -2
- package/dist/audiences/index.js.map +1 -1
- package/dist/audiences/queries.d.ts +16 -0
- package/dist/audiences/queries.d.ts.map +1 -1
- package/dist/audiences/queries.js +28 -1
- package/dist/audiences/queries.js.map +1 -1
- package/dist/audiences/schema.d.ts +17 -0
- package/dist/audiences/schema.d.ts.map +1 -1
- package/dist/audiences/schema.js +7 -0
- package/dist/audiences/schema.js.map +1 -1
- package/dist/audiences/server-eval.d.ts +32 -1
- package/dist/audiences/server-eval.d.ts.map +1 -1
- package/dist/audiences/server-eval.js +35 -3
- package/dist/audiences/server-eval.js.map +1 -1
- package/dist/audiences/ssr.d.ts +18 -1
- package/dist/audiences/ssr.d.ts.map +1 -1
- package/dist/audiences/ssr.js +18 -1
- package/dist/audiences/ssr.js.map +1 -1
- package/dist/audiences/types.d.ts +22 -1
- package/dist/audiences/types.d.ts.map +1 -1
- package/dist/audiences/types.js +1 -0
- package/dist/audiences/types.js.map +1 -1
- package/dist/audiences/utm-persistence.d.ts +20 -7
- package/dist/audiences/utm-persistence.d.ts.map +1 -1
- package/dist/audiences/utm-persistence.js +20 -7
- package/dist/audiences/utm-persistence.js.map +1 -1
- package/dist/auth/roles.d.ts +11 -0
- package/dist/auth/roles.d.ts.map +1 -1
- package/dist/auth/roles.js +13 -0
- package/dist/auth/roles.js.map +1 -1
- package/dist/auth/tokens.d.ts +7 -0
- package/dist/auth/tokens.d.ts.map +1 -1
- package/dist/auth/tokens.js +24 -2
- package/dist/auth/tokens.js.map +1 -1
- package/dist/ax/content-source.d.ts +10 -2
- package/dist/ax/content-source.d.ts.map +1 -1
- package/dist/ax/content-source.js +81 -5
- package/dist/ax/content-source.js.map +1 -1
- package/dist/ax/effective-body.d.ts +28 -0
- package/dist/ax/effective-body.d.ts.map +1 -0
- package/dist/ax/effective-body.js +47 -0
- package/dist/ax/effective-body.js.map +1 -0
- package/dist/ax/index.d.ts +3 -1
- package/dist/ax/index.d.ts.map +1 -1
- package/dist/ax/index.js +2 -0
- package/dist/ax/index.js.map +1 -1
- package/dist/ax/jsonld.d.ts +31 -1
- package/dist/ax/jsonld.d.ts.map +1 -1
- package/dist/ax/jsonld.js +35 -22
- package/dist/ax/jsonld.js.map +1 -1
- package/dist/ax/layout-to-html.d.ts +127 -0
- package/dist/ax/layout-to-html.d.ts.map +1 -0
- package/dist/ax/layout-to-html.js +545 -0
- package/dist/ax/layout-to-html.js.map +1 -0
- package/dist/ax/llms-full-txt.d.ts +3 -1
- package/dist/ax/llms-full-txt.d.ts.map +1 -1
- package/dist/ax/llms-full-txt.js +5 -2
- package/dist/ax/llms-full-txt.js.map +1 -1
- package/dist/ax/page-markdown.d.ts +10 -2
- package/dist/ax/page-markdown.d.ts.map +1 -1
- package/dist/ax/page-markdown.js +16 -3
- package/dist/ax/page-markdown.js.map +1 -1
- package/dist/ax/summary.d.ts +4 -0
- package/dist/ax/summary.d.ts.map +1 -1
- package/dist/ax/summary.js +6 -1
- package/dist/ax/summary.js.map +1 -1
- package/dist/ax/types.d.ts +24 -0
- package/dist/ax/types.d.ts.map +1 -1
- package/dist/cache/content-invalidation.d.ts.map +1 -1
- package/dist/cache/content-invalidation.js +11 -0
- package/dist/cache/content-invalidation.js.map +1 -1
- package/dist/config/types.d.ts +43 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/config/types.js.map +1 -1
- package/dist/config/validate.d.ts.map +1 -1
- package/dist/config/validate.js +3 -0
- package/dist/config/validate.js.map +1 -1
- package/dist/db/apply-snapshot.d.ts +25 -0
- package/dist/db/apply-snapshot.d.ts.map +1 -1
- package/dist/db/apply-snapshot.js +48 -16
- package/dist/db/apply-snapshot.js.map +1 -1
- package/dist/db/ax-queries.d.ts +6 -0
- package/dist/db/ax-queries.d.ts.map +1 -1
- package/dist/db/ax-queries.js +6 -0
- package/dist/db/ax-queries.js.map +1 -1
- package/dist/db/component-instance-queries.d.ts +79 -19
- package/dist/db/component-instance-queries.d.ts.map +1 -1
- package/dist/db/component-instance-queries.js +266 -83
- package/dist/db/component-instance-queries.js.map +1 -1
- package/dist/db/component-queries.d.ts +1 -16
- package/dist/db/component-queries.d.ts.map +1 -1
- package/dist/db/component-queries.js +7 -56
- package/dist/db/component-queries.js.map +1 -1
- package/dist/db/content-queries.d.ts.map +1 -1
- package/dist/db/content-queries.js +9 -2
- package/dist/db/content-queries.js.map +1 -1
- package/dist/db/extension-queries.d.ts +2 -2
- package/dist/db/feed-queries.d.ts +3 -3
- package/dist/db/index.d.ts +1 -0
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js +1 -0
- package/dist/db/index.js.map +1 -1
- package/dist/db/layout-queries.d.ts +21 -3
- package/dist/db/layout-queries.d.ts.map +1 -1
- package/dist/db/layout-queries.js +14 -6
- package/dist/db/layout-queries.js.map +1 -1
- package/dist/db/menu-queries.d.ts +69 -5
- package/dist/db/menu-queries.d.ts.map +1 -1
- package/dist/db/menu-queries.js +120 -13
- package/dist/db/menu-queries.js.map +1 -1
- package/dist/db/search-queries.d.ts.map +1 -1
- package/dist/db/search-queries.js +24 -1
- package/dist/db/search-queries.js.map +1 -1
- package/dist/db/section-template-queries.d.ts +62 -0
- package/dist/db/section-template-queries.d.ts.map +1 -0
- package/dist/db/section-template-queries.js +178 -0
- package/dist/db/section-template-queries.js.map +1 -0
- package/dist/db/site-plugin-queries.d.ts +2 -2
- package/dist/db/tree-queries.d.ts.map +1 -1
- package/dist/db/tree-queries.js +5 -0
- package/dist/db/tree-queries.js.map +1 -1
- package/dist/db/webhook-queries.d.ts +3 -3
- package/dist/db/workflow-queries.d.ts.map +1 -1
- package/dist/db/workflow-queries.js +5 -20
- package/dist/db/workflow-queries.js.map +1 -1
- package/dist/experiments/runtime.d.ts +21 -3
- package/dist/experiments/runtime.d.ts.map +1 -1
- package/dist/experiments/runtime.js +21 -3
- package/dist/experiments/runtime.js.map +1 -1
- package/dist/hooks/ax-invalidation.d.ts.map +1 -1
- package/dist/hooks/ax-invalidation.js +4 -0
- package/dist/hooks/ax-invalidation.js.map +1 -1
- package/dist/layout/component-refs.d.ts +90 -2
- package/dist/layout/component-refs.d.ts.map +1 -1
- package/dist/layout/component-refs.js +293 -16
- package/dist/layout/component-refs.js.map +1 -1
- package/dist/layout/index.d.ts +7 -4
- package/dist/layout/index.d.ts.map +1 -1
- package/dist/layout/index.js +6 -3
- package/dist/layout/index.js.map +1 -1
- package/dist/layout/legacy-variant-container.d.ts +123 -0
- package/dist/layout/legacy-variant-container.d.ts.map +1 -0
- package/dist/layout/legacy-variant-container.js +397 -0
- package/dist/layout/legacy-variant-container.js.map +1 -0
- package/dist/layout/module-permissions.d.ts.map +1 -1
- package/dist/layout/module-permissions.js +26 -38
- package/dist/layout/module-permissions.js.map +1 -1
- package/dist/layout/modules-extended.d.ts +28 -1
- package/dist/layout/modules-extended.d.ts.map +1 -1
- package/dist/layout/modules-extended.js +73 -1
- package/dist/layout/modules-extended.js.map +1 -1
- package/dist/layout/modules.d.ts.map +1 -1
- package/dist/layout/modules.js +9 -1
- package/dist/layout/modules.js.map +1 -1
- package/dist/layout/personalization.d.ts +83 -0
- package/dist/layout/personalization.d.ts.map +1 -1
- package/dist/layout/personalization.js +250 -4
- package/dist/layout/personalization.js.map +1 -1
- package/dist/layout/registry.d.ts.map +1 -1
- package/dist/layout/registry.js +20 -0
- package/dist/layout/registry.js.map +1 -1
- package/dist/layout/renderer.d.ts +29 -2
- package/dist/layout/renderer.d.ts.map +1 -1
- package/dist/layout/renderer.js +23 -6
- package/dist/layout/renderer.js.map +1 -1
- package/dist/layout/seed-defaults.d.ts +45 -0
- package/dist/layout/seed-defaults.d.ts.map +1 -0
- package/dist/layout/seed-defaults.js +75 -0
- package/dist/layout/seed-defaults.js.map +1 -0
- package/dist/layout/types.d.ts +17 -0
- package/dist/layout/types.d.ts.map +1 -1
- package/dist/layout/types.js +7 -0
- package/dist/layout/types.js.map +1 -1
- package/dist/layout/walk.d.ts +14 -0
- package/dist/layout/walk.d.ts.map +1 -0
- package/dist/layout/walk.js +49 -0
- package/dist/layout/walk.js.map +1 -0
- package/dist/media/index.d.ts +1 -1
- package/dist/media/index.d.ts.map +1 -1
- package/dist/media/index.js +1 -1
- package/dist/media/index.js.map +1 -1
- package/dist/media/inline-risk.d.ts +26 -0
- package/dist/media/inline-risk.d.ts.map +1 -0
- package/dist/media/inline-risk.js +142 -0
- package/dist/media/inline-risk.js.map +1 -0
- package/dist/media/upload-allowlist.d.ts +23 -0
- package/dist/media/upload-allowlist.d.ts.map +1 -1
- package/dist/media/upload-allowlist.js +29 -0
- package/dist/media/upload-allowlist.js.map +1 -1
- package/dist/nav/builder.d.ts.map +1 -1
- package/dist/nav/builder.js +15 -3
- package/dist/nav/builder.js.map +1 -1
- package/dist/nav/index.d.ts +1 -1
- package/dist/nav/index.d.ts.map +1 -1
- package/dist/nav/index.js +1 -1
- package/dist/nav/index.js.map +1 -1
- package/dist/nav/menu-resolver.d.ts +11 -0
- package/dist/nav/menu-resolver.d.ts.map +1 -1
- package/dist/nav/menu-resolver.js +49 -9
- package/dist/nav/menu-resolver.js.map +1 -1
- package/dist/nav/paths.d.ts +37 -0
- package/dist/nav/paths.d.ts.map +1 -0
- package/dist/nav/paths.js +48 -0
- package/dist/nav/paths.js.map +1 -0
- package/dist/nav/types.d.ts +6 -0
- package/dist/nav/types.d.ts.map +1 -1
- package/dist/nav/url-resolver.d.ts +1 -5
- package/dist/nav/url-resolver.d.ts.map +1 -1
- package/dist/nav/url-resolver.js +6 -12
- package/dist/nav/url-resolver.js.map +1 -1
- package/dist/schema/base.d.ts +24 -4
- package/dist/schema/base.d.ts.map +1 -1
- package/dist/schema/base.js +17 -4
- package/dist/schema/base.js.map +1 -1
- package/dist/schema/components.d.ts +90 -9
- package/dist/schema/components.d.ts.map +1 -1
- package/dist/schema/components.js +113 -22
- package/dist/schema/components.js.map +1 -1
- package/dist/schema/mysql-tables.d.ts +5775 -48
- package/dist/schema/mysql-tables.d.ts.map +1 -1
- package/dist/schema/mysql-tables.js +622 -46
- package/dist/schema/mysql-tables.js.map +1 -1
- package/dist/scope/jsonld.d.ts +18 -3
- package/dist/scope/jsonld.d.ts.map +1 -1
- package/dist/scope/jsonld.js +6 -4
- package/dist/scope/jsonld.js.map +1 -1
- package/dist/scope/kywi-form.d.ts +11 -0
- package/dist/scope/kywi-form.d.ts.map +1 -1
- package/dist/scope/kywi-form.js +11 -1
- package/dist/scope/kywi-form.js.map +1 -1
- package/dist/scope/kywi-wizard-form.d.ts.map +1 -1
- package/dist/scope/kywi-wizard-form.js +76 -2
- package/dist/scope/kywi-wizard-form.js.map +1 -1
- package/dist/scope/sticky-offset.d.ts +34 -13
- package/dist/scope/sticky-offset.d.ts.map +1 -1
- package/dist/scope/sticky-offset.js +236 -43
- package/dist/scope/sticky-offset.js.map +1 -1
- package/dist/site/styles.css +61 -15
- package/dist/versioning/scheduler.d.ts +28 -0
- package/dist/versioning/scheduler.d.ts.map +1 -1
- package/dist/versioning/scheduler.js +50 -3
- package/dist/versioning/scheduler.js.map +1 -1
- package/package.json +12 -2
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { layoutToHtml } from './layout-to-html.js';
|
|
2
|
+
/**
|
|
3
|
+
* THE one answer to "what is this node's body copy", for every AX surface
|
|
4
|
+
* (kywi-cms#195).
|
|
5
|
+
*
|
|
6
|
+
* Resolution order:
|
|
7
|
+
* 1. the stored `body` column, when it holds anything — an article written in
|
|
8
|
+
* the rich-text field is already the whole page;
|
|
9
|
+
* 2. `layoutHtml`, the layout projection the AX CONTENT SOURCE precomputed
|
|
10
|
+
* (it is the only layer that can hand `layoutToHtml` the site's module
|
|
11
|
+
* registry and its saved component definitions);
|
|
12
|
+
* 3. a direct {@link layoutToHtml} of the node's stored `layout`, so a node
|
|
13
|
+
* handed straight to a generator — per-page JSON-LD reads the node the
|
|
14
|
+
* public page rendered, not one this module's source produced — still
|
|
15
|
+
* exports every built-in module's copy.
|
|
16
|
+
*
|
|
17
|
+
* Returns `''` when the node has neither, leaving each caller's own fallback
|
|
18
|
+
* (`summary`, `metaDescription`) exactly where it was.
|
|
19
|
+
*/
|
|
20
|
+
export function effectiveBodyHtml(node, opts) {
|
|
21
|
+
const body = str(node.body);
|
|
22
|
+
if (body)
|
|
23
|
+
return body;
|
|
24
|
+
const projected = str(node['layoutHtml']);
|
|
25
|
+
if (projected)
|
|
26
|
+
return projected;
|
|
27
|
+
return layoutToHtml(node['layout'], opts);
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Attach {@link AxContentNode.layoutHtml} to a node whose `body` is empty, using
|
|
31
|
+
* the registry/component resolver the caller has. A node with a body, or with no
|
|
32
|
+
* layout, is returned untouched — the projection would never be read.
|
|
33
|
+
*/
|
|
34
|
+
export function withLayoutHtml(node, opts) {
|
|
35
|
+
if (str(node.body))
|
|
36
|
+
return node;
|
|
37
|
+
if (!node['layout'])
|
|
38
|
+
return node;
|
|
39
|
+
const html = layoutToHtml(node['layout'], opts);
|
|
40
|
+
if (!html)
|
|
41
|
+
return node;
|
|
42
|
+
return { ...node, layoutHtml: html };
|
|
43
|
+
}
|
|
44
|
+
function str(value) {
|
|
45
|
+
return typeof value === 'string' ? value.trim() : '';
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=effective-body.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"effective-body.js","sourceRoot":"","sources":["../../src/ax/effective-body.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAIlD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAmB,EAAE,IAA0B;IAC/E,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IAC3B,IAAI,IAAI;QAAE,OAAO,IAAI,CAAA;IACrB,MAAM,SAAS,GAAG,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAA;IACzC,IAAI,SAAS;QAAE,OAAO,SAAS,CAAA;IAC/B,OAAO,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;AAC3C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAAC,IAAmB,EAAE,IAAyB;IAC3E,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAA;IAC/B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,IAAI,CAAA;IAChC,MAAM,IAAI,GAAG,YAAY,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,CAAA;IAC/C,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACtB,OAAO,EAAE,GAAG,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,CAAA;AACtC,CAAC;AAED,SAAS,GAAG,CAAC,KAAc;IACzB,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAA;AACtD,CAAC"}
|
package/dist/ax/index.d.ts
CHANGED
|
@@ -14,12 +14,14 @@ export type { AxContentNode, AxSiteMeta, AxContentSource, AxRenderContext, } fro
|
|
|
14
14
|
export { createDbAxContentSource } from './content-source.js';
|
|
15
15
|
export { resolveBaseUrl, absoluteUrl } from './url.js';
|
|
16
16
|
export { htmlToMarkdown, stripHtml } from './html-to-markdown.js';
|
|
17
|
+
export { layoutToHtml, type LayoutToHtmlOptions, type AxComponentResolver, } from './layout-to-html.js';
|
|
18
|
+
export { effectiveBodyHtml, withLayoutHtml } from './effective-body.js';
|
|
17
19
|
export { summaryFor, truncate, oneLine } from './summary.js';
|
|
18
20
|
export { isAxEligible, isIndexable, passesTypeFilter, INDEXABLE_BASE_TYPES } from './filters.js';
|
|
19
21
|
export { generateLlmsTxt } from './llms-txt.js';
|
|
20
22
|
export { generateLlmsFullTxt } from './llms-full-txt.js';
|
|
21
23
|
export { generateSitemapXml } from './sitemap-xml.js';
|
|
22
24
|
export { generateRobotsTxt, AI_CRAWLERS } from './robots-txt.js';
|
|
23
|
-
export { generateJsonLd } from './jsonld.js';
|
|
25
|
+
export { generateJsonLd, type JsonLdOptions } from './jsonld.js';
|
|
24
26
|
export { generatePageMarkdown } from './page-markdown.js';
|
|
25
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/ax/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ax/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,YAAY,EACV,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ax/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,YAAY,EACV,aAAa,EACb,UAAU,EACV,eAAe,EACf,eAAe,GAChB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EACL,YAAY,EACZ,KAAK,mBAAmB,EACxB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,cAAc,EAAE,KAAK,aAAa,EAAE,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA"}
|
package/dist/ax/index.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
export { createDbAxContentSource } from './content-source.js';
|
|
2
2
|
export { resolveBaseUrl, absoluteUrl } from './url.js';
|
|
3
3
|
export { htmlToMarkdown, stripHtml } from './html-to-markdown.js';
|
|
4
|
+
export { layoutToHtml, } from './layout-to-html.js';
|
|
5
|
+
export { effectiveBodyHtml, withLayoutHtml } from './effective-body.js';
|
|
4
6
|
export { summaryFor, truncate, oneLine } from './summary.js';
|
|
5
7
|
export { isAxEligible, isIndexable, passesTypeFilter, INDEXABLE_BASE_TYPES } from './filters.js';
|
|
6
8
|
export { generateLlmsTxt } from './llms-txt.js';
|
package/dist/ax/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ax/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,cAAc,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/ax/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAC7D,OAAO,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtD,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAA;AACjE,OAAO,EACL,YAAY,GAGb,MAAM,qBAAqB,CAAA;AAC5B,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAC5D,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAChE,OAAO,EAAE,cAAc,EAAsB,MAAM,aAAa,CAAA;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA"}
|
package/dist/ax/jsonld.d.ts
CHANGED
|
@@ -13,6 +13,36 @@ import type { AxContentNode, AxRenderContext } from './types.js';
|
|
|
13
13
|
*
|
|
14
14
|
* Never calls a language model. FAQPage is a pure field read of a stored
|
|
15
15
|
* `[{ question, answer }]` array — see the FAQ-as-content-type design.
|
|
16
|
+
*
|
|
17
|
+
* ─── WHY THIS TAKES A LAYOUT INSTEAD OF READING THE NODE'S ──────────────────
|
|
18
|
+
*
|
|
19
|
+
* JSON-LD is a PER-VISITOR surface: `KywiJsonLd` renders inside the page, so
|
|
20
|
+
* whatever lands in `description`/`articleBody` ships in THAT visitor's HTML and
|
|
21
|
+
* RSC payload. The node carries the STORED layout — every arm of every
|
|
22
|
+
* personalized band and every experiment — and projecting it here put the
|
|
23
|
+
* DEFAULT arm's copy in front of a visitor who was being served a targeted one.
|
|
24
|
+
* That is precisely the leak kywi-cms#167 closed for the renderer, arriving
|
|
25
|
+
* through the structured data instead.
|
|
26
|
+
*
|
|
27
|
+
* So the SERVED document is an input, never an inference:
|
|
28
|
+
* - `opts.layout` given → that is what this visitor sees; project it.
|
|
29
|
+
* - `opts.layout` omitted → project NO layout at all. `body`,
|
|
30
|
+
* `metaDescription` and `summary` are per-node, not per-visitor, so they
|
|
31
|
+
* stay; the node's own `layout` and any precomputed anonymous `layoutHtml`
|
|
32
|
+
* are deliberately ignored.
|
|
33
|
+
*
|
|
34
|
+
* Guessing is not an option a per-visitor surface has: the choice is between
|
|
35
|
+
* the right arm and no arm, and a missing description is not a privacy
|
|
36
|
+
* incident. Hosts pass the pruned document — see `KywiJsonLd`'s `layout` prop
|
|
37
|
+
* and the `pruneLayoutToServedArms` call the reference app makes before it.
|
|
16
38
|
*/
|
|
17
|
-
export
|
|
39
|
+
export interface JsonLdOptions {
|
|
40
|
+
/**
|
|
41
|
+
* The layout document THIS visitor is served — post `applyPageVariant`,
|
|
42
|
+
* component resolution and `pruneLayoutToServedArms`. Omit it and no layout
|
|
43
|
+
* copy is projected at all.
|
|
44
|
+
*/
|
|
45
|
+
layout?: unknown;
|
|
46
|
+
}
|
|
47
|
+
export declare function generateJsonLd(node: AxContentNode, ctx: AxRenderContext, opts?: JsonLdOptions): Record<string, unknown> | Record<string, unknown>[];
|
|
18
48
|
//# sourceMappingURL=jsonld.d.ts.map
|
package/dist/ax/jsonld.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonld.d.ts","sourceRoot":"","sources":["../../src/ax/jsonld.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"jsonld.d.ts","sourceRoot":"","sources":["../../src/ax/jsonld.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEhE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,aAAa,EACnB,GAAG,EAAE,eAAe,EACpB,IAAI,GAAE,aAAkB,GACvB,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAqCrD"}
|
package/dist/ax/jsonld.js
CHANGED
|
@@ -1,23 +1,9 @@
|
|
|
1
1
|
import { resolveAxConfig } from '../config/define.js';
|
|
2
2
|
import { absoluteUrl } from './url.js';
|
|
3
|
-
import { htmlToMarkdown } from './html-to-markdown.js';
|
|
4
|
-
import { truncate } from './summary.js';
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
*
|
|
8
|
-
* Resolution order for a node:
|
|
9
|
-
* 1. `mapping.transform(node, ctx)` — full escape hatch, wins over everything.
|
|
10
|
-
* 2. `mapping.schemaType` from `ax.jsonLd.types[contentTypeName]`, else a
|
|
11
|
-
* built-in default keyed by baseType/name (WebPage / Article / Event /
|
|
12
|
-
* FAQPage).
|
|
13
|
-
* 3. Built-in field defaults for the resolved type (unless
|
|
14
|
-
* `ax.jsonLd.defaults === false`), then `mapping.fields` remaps applied on
|
|
15
|
-
* top (schema.org prop -> content field name).
|
|
16
|
-
*
|
|
17
|
-
* Never calls a language model. FAQPage is a pure field read of a stored
|
|
18
|
-
* `[{ question, answer }]` array — see the FAQ-as-content-type design.
|
|
19
|
-
*/
|
|
20
|
-
export function generateJsonLd(node, ctx) {
|
|
3
|
+
import { htmlToMarkdown, stripHtml } from './html-to-markdown.js';
|
|
4
|
+
import { oneLine, truncate } from './summary.js';
|
|
5
|
+
import { layoutToHtml, registryForModules } from './layout-to-html.js';
|
|
6
|
+
export function generateJsonLd(node, ctx, opts = {}) {
|
|
21
7
|
const ax = resolveAxConfig(ctx.config.ax);
|
|
22
8
|
const mapping = ax.jsonLd?.types?.[node.contentTypeName];
|
|
23
9
|
// 1. Escape hatch.
|
|
@@ -38,7 +24,7 @@ export function generateJsonLd(node, ctx) {
|
|
|
38
24
|
name,
|
|
39
25
|
};
|
|
40
26
|
if (applyDefaults)
|
|
41
|
-
applyTypeDefaults(obj, node, schemaType, ctx);
|
|
27
|
+
applyTypeDefaults(obj, node, schemaType, ctx, opts);
|
|
42
28
|
// 3. Field remap applied over defaults (schema.org prop -> content field name).
|
|
43
29
|
if (mapping?.fields) {
|
|
44
30
|
for (const [prop, fieldName] of Object.entries(mapping.fields)) {
|
|
@@ -64,8 +50,13 @@ function defaultSchemaType(node) {
|
|
|
64
50
|
return 'WebPage';
|
|
65
51
|
return 'WebPage';
|
|
66
52
|
}
|
|
67
|
-
function applyTypeDefaults(obj, node, schemaType, ctx) {
|
|
68
|
-
const
|
|
53
|
+
function applyTypeDefaults(obj, node, schemaType, ctx, opts) {
|
|
54
|
+
const bodyHtml = servedBodyHtml(node, ctx, opts);
|
|
55
|
+
// metaDescription → summary → the served body. The body fallback is built
|
|
56
|
+
// HERE rather than borrowed from `summaryFor` (kywi-cms#195): that chain puts
|
|
57
|
+
// `aiSummary` above `metaDescription`, and promoting a machine-written blurb
|
|
58
|
+
// into schema.org output would be a real change of meaning, not a fallback.
|
|
59
|
+
const description = str(node.metaDescription) || str(node.summary) || bodyDescription(bodyHtml);
|
|
69
60
|
const published = toIso(node.publishedAt);
|
|
70
61
|
const modified = toIso(node.updatedAt);
|
|
71
62
|
const imageUrl = imageFor(node, ctx.baseUrl);
|
|
@@ -79,7 +70,7 @@ function applyTypeDefaults(obj, node, schemaType, ctx) {
|
|
|
79
70
|
obj['dateModified'] = modified;
|
|
80
71
|
if (imageUrl)
|
|
81
72
|
obj['image'] = imageUrl;
|
|
82
|
-
const body = htmlToMarkdown(
|
|
73
|
+
const body = htmlToMarkdown(bodyHtml);
|
|
83
74
|
if (body)
|
|
84
75
|
obj['articleBody'] = truncate(body, 5000);
|
|
85
76
|
const author = str(node['author']);
|
|
@@ -156,6 +147,28 @@ function imageFor(node, baseUrl) {
|
|
|
156
147
|
return undefined;
|
|
157
148
|
return absoluteUrl(baseUrl, `/api/v1/media/${id}/file`);
|
|
158
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* The body copy this VISITOR is being shown — the stored `body` column, else the
|
|
152
|
+
* SERVED layout the caller handed over, else nothing.
|
|
153
|
+
*
|
|
154
|
+
* The two omissions are the point (see {@link generateJsonLd}): `node.layout` is
|
|
155
|
+
* the stored document with every arm in it, and `node.layoutHtml` is the
|
|
156
|
+
* ANONYMOUS projection the AX content source precomputes for the crawler
|
|
157
|
+
* surfaces. Neither describes what this visitor sees, so neither is consulted.
|
|
158
|
+
*/
|
|
159
|
+
function servedBodyHtml(node, ctx, opts) {
|
|
160
|
+
const body = str(node.body);
|
|
161
|
+
if (body)
|
|
162
|
+
return body;
|
|
163
|
+
if (opts.layout === undefined || opts.layout === null)
|
|
164
|
+
return '';
|
|
165
|
+
return layoutToHtml(opts.layout, { modules: registryForModules(ctx.config.modules) });
|
|
166
|
+
}
|
|
167
|
+
/** A one-line, tag-stripped description built from already-resolved body HTML. */
|
|
168
|
+
function bodyDescription(bodyHtml) {
|
|
169
|
+
const text = stripHtml(bodyHtml);
|
|
170
|
+
return text ? truncate(oneLine(text), 160) : '';
|
|
171
|
+
}
|
|
159
172
|
function str(v) {
|
|
160
173
|
return typeof v === 'string' ? v.trim() : '';
|
|
161
174
|
}
|
package/dist/ax/jsonld.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonld.js","sourceRoot":"","sources":["../../src/ax/jsonld.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAErD,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AACtC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"jsonld.js","sourceRoot":"","sources":["../../src/ax/jsonld.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
import type { ModuleRegistry } from '../layout/registry.js';
|
|
2
|
+
import type { ComponentDetachSource } from '../layout/component-refs.js';
|
|
3
|
+
/**
|
|
4
|
+
* layout-to-html.ts — the AX layer's projection of a stored LAYOUT DOCUMENT
|
|
5
|
+
* into semantic HTML (kywi-cms#195).
|
|
6
|
+
*
|
|
7
|
+
* WHY THIS EXISTS. Every AX surface (llms-full.txt, `/<path>.md`, the summary
|
|
8
|
+
* fallback chain, JSON-LD descriptions) reads a node's `body` column. A page
|
|
9
|
+
* composed in the layout editor — i.e. every page on a real Kywi site — has an
|
|
10
|
+
* empty or seed `body`, so those surfaces exported a title and a URL and nothing
|
|
11
|
+
* else. The page's actual copy lives in `layout`, and this is the one function
|
|
12
|
+
* that reads it out.
|
|
13
|
+
*
|
|
14
|
+
* It is PURE and DETERMINISTIC: same document in, same string out, no database,
|
|
15
|
+
* no React, no language model (the Tier-1 boundary). Callers that can resolve
|
|
16
|
+
* saved components and custom modules pass them in through {@link
|
|
17
|
+
* LayoutToHtmlOptions}; a caller with neither still gets every built-in
|
|
18
|
+
* module's copy.
|
|
19
|
+
*
|
|
20
|
+
* ─── THE SERIALIZATION RULES ────────────────────────────────────────────────
|
|
21
|
+
*
|
|
22
|
+
* READING ORDER. `layout.regions` in stored key order, each region's nodes in
|
|
23
|
+
* order, each section's columns left to right, each column's nodes top to
|
|
24
|
+
* bottom. `pageVariants` and `abExperiments` are NOT walked: they are alternate
|
|
25
|
+
* versions of the page, and an agent corpus that concatenated them would present
|
|
26
|
+
* contradictory copy as one document.
|
|
27
|
+
*
|
|
28
|
+
* THE ARM AN ANONYMOUS VISITOR IS SERVED. Both container kinds are resolved
|
|
29
|
+
* through `selectVariantArm(arms, container, null)` — the same precedence the
|
|
30
|
+
* renderer applies, with no personalization state. That answers Default for a
|
|
31
|
+
* personalization container and for a running experiment, and the WINNING ARM
|
|
32
|
+
* for an `ab_test` whose winner is locked, because a locked winner IS the public
|
|
33
|
+
* page: every visitor gets it, so exporting Default there would publish copy
|
|
34
|
+
* nobody can see. A targeted audience arm is never reachable without a resolved
|
|
35
|
+
* audience, so audience-specific copy can never leak into a public corpus.
|
|
36
|
+
*
|
|
37
|
+
* COMPONENTS. Linked placements (`componentId` on a module/section/container)
|
|
38
|
+
* are resolved through {@link resolveComponentPlacements} — the same
|
|
39
|
+
* materialisation the renderer and detach use — so the projection shows what the
|
|
40
|
+
* page shows, not the stale inline fallback copy. A `component` MODULE
|
|
41
|
+
* placement resolves through the same hook by `props.componentId` (or
|
|
42
|
+
* `props.slug`), or emits its pre-hydrated `props.content` when the host already
|
|
43
|
+
* filled it in. Unresolvable placements emit nothing, and resolution is
|
|
44
|
+
* cycle-guarded.
|
|
45
|
+
*
|
|
46
|
+
* ROBUSTNESS. Every walk site goes through {@link asArray}/{@link isRecord}, and
|
|
47
|
+
* component pre-resolution is wrapped. `setContentLayout` stores what it is
|
|
48
|
+
* handed — validation lives on the write ROUTES — so malformed documents exist
|
|
49
|
+
* in the wild (a hand-written INSERT, a restored dump, a pre-validation row),
|
|
50
|
+
* and these projections run on PUBLIC surfaces: `/search`, `llms-full.txt`,
|
|
51
|
+
* `/<slug>.md`, per-page JSON-LD. A `TypeError` here would be a 500 on all four,
|
|
52
|
+
* so a broken subtree is skipped and the sound part of the document still
|
|
53
|
+
* exports. Expansion is bounded three ways: a visited set (cycles), a depth cap,
|
|
54
|
+
* and an output budget (a diamond of components re-expands exponentially).
|
|
55
|
+
*
|
|
56
|
+
* MODULES. Built-ins with copy get a hand-written emitter (below). Anything else
|
|
57
|
+
* the registry knows — a CUSTOM module, or a built-in with no emitter — is
|
|
58
|
+
* serialized from its registered prop schema: the first `text` prop becomes an
|
|
59
|
+
* `<h2>`, every other `text`/`textarea` prop a `<p>`, every `richText` prop its
|
|
60
|
+
* (sanitized) HTML. Values that look like JSON are skipped, since a
|
|
61
|
+
* `textarea`-typed prop is how the palette stores structured item lists.
|
|
62
|
+
* Reference props are skipped too — a link target, id, slug or class named by a
|
|
63
|
+
* `text` prop because the palette has no reference type (`ctaHref`,
|
|
64
|
+
* `experimentId`, `feedSlug`) is a destination, not copy. A module the registry
|
|
65
|
+
* does not know is skipped SILENTLY — a host's unregistered module is not an
|
|
66
|
+
* error, it just has no schema to read.
|
|
67
|
+
*
|
|
68
|
+
* DELIBERATELY SKIPPED: `html` and `embed` (arbitrary markup, not authored
|
|
69
|
+
* copy), `form`/`formEmbed` (interaction, not content), every navigation and
|
|
70
|
+
* search module (site chrome repeated on every page, already covered by
|
|
71
|
+
* llms.txt/sitemap.xml), `cookieConsent` (compliance chrome), the pure-layout
|
|
72
|
+
* modules (`section`, `container`, `columns`, `spacer`, `divider`), and the
|
|
73
|
+
* decorative/interactive ones with no standalone copy (`icon`, `video`,
|
|
74
|
+
* `carousel`, `tagCloud`, `countdown`, `map`, `socialShare`, `categoryList`,
|
|
75
|
+
* `comments`, `personalizationBadge`, the retired `variantContainer` module).
|
|
76
|
+
*
|
|
77
|
+
* IMAGES emit their alt text as `<p><em>alt</em></p>` and their caption as a
|
|
78
|
+
* paragraph — the only human-readable copy an image carries — and nothing at all
|
|
79
|
+
* when both are empty. The image itself is not linked: an AX corpus is text.
|
|
80
|
+
*
|
|
81
|
+
* `feedDisplay` emits only its heading, when it has one: its items are other
|
|
82
|
+
* published nodes, which appear in the corpus in their own right.
|
|
83
|
+
*/
|
|
84
|
+
/**
|
|
85
|
+
* Resolve a saved component for the projection, by id (a linked placement) or by
|
|
86
|
+
* slug/name (a `component` module placement). Returns null/undefined when the
|
|
87
|
+
* component cannot be resolved — the placement is then skipped.
|
|
88
|
+
*
|
|
89
|
+
* The production implementation lives in the DB-backed AX content source; unit
|
|
90
|
+
* tests pass a plain map lookup.
|
|
91
|
+
*/
|
|
92
|
+
export type AxComponentResolver = (ref: {
|
|
93
|
+
componentId?: string;
|
|
94
|
+
slug?: string;
|
|
95
|
+
}) => ComponentDetachSource | null | undefined;
|
|
96
|
+
export interface LayoutToHtmlOptions {
|
|
97
|
+
/**
|
|
98
|
+
* The site's module registry, so CUSTOM modules serialize from their declared
|
|
99
|
+
* prop schema. Defaults to the built-ins alone.
|
|
100
|
+
*/
|
|
101
|
+
modules?: ModuleRegistry;
|
|
102
|
+
/** Resolve saved components. Omitted → component placements emit nothing. */
|
|
103
|
+
resolveComponent?: AxComponentResolver;
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* Serialize a stored layout document to semantic HTML in reading order.
|
|
107
|
+
* Returns `''` for a null/empty/unrecognizable document.
|
|
108
|
+
*/
|
|
109
|
+
export declare function layoutToHtml(layout: unknown, opts?: LayoutToHtmlOptions): string;
|
|
110
|
+
/**
|
|
111
|
+
* The module registry for a config's `modules`, memoised on the array itself.
|
|
112
|
+
*
|
|
113
|
+
* The per-NODE surfaces — `/<path>.md`, per-page JSON-LD — are handed a node by
|
|
114
|
+
* the host rather than by the AX content source, so nothing precomputed their
|
|
115
|
+
* layout projection and they must build the registry themselves. Doing it
|
|
116
|
+
* unmemoised would rebuild a ~45-entry map on every request; the config's
|
|
117
|
+
* `modules` array is a stable object for the process's lifetime, so it keys the
|
|
118
|
+
* cache exactly.
|
|
119
|
+
*
|
|
120
|
+
* NOTE what this deliberately does NOT carry: a component resolver. Resolving a
|
|
121
|
+
* saved component is a database read, and these two surfaces are synchronous and
|
|
122
|
+
* DB-free by contract. A linked placement on a node that did not come through
|
|
123
|
+
* the content source therefore contributes its inline fallback copy — the same
|
|
124
|
+
* copy the renderer falls back to when a link cannot be resolved.
|
|
125
|
+
*/
|
|
126
|
+
export declare function registryForModules(modules: unknown): ModuleRegistry;
|
|
127
|
+
//# sourceMappingURL=layout-to-html.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"layout-to-html.d.ts","sourceRoot":"","sources":["../../src/ax/layout-to-html.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAE3D,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,6BAA6B,CAAA;AAaxE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgFG;AAIH;;;;;;;GAOG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAChC,GAAG,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,KACzC,qBAAqB,GAAG,IAAI,GAAG,SAAS,CAAA;AAE7C,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,OAAO,CAAC,EAAE,cAAc,CAAA;IACxB,6EAA6E;IAC7E,gBAAgB,CAAC,EAAE,mBAAmB,CAAA;CACvC;AAED;;;GAGG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,GAAE,mBAAwB,GAAG,MAAM,CAiCpF;AAibD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAOnE"}
|