@aphexcms/cms-core 9.4.0 → 9.5.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/dist/admin/block-previews.svelte.d.ts +46 -0
- package/dist/admin/block-previews.svelte.d.ts.map +1 -0
- package/dist/admin/block-previews.svelte.js +26 -0
- package/dist/admin/field-components.svelte.d.ts +16 -0
- package/dist/admin/field-components.svelte.d.ts.map +1 -0
- package/dist/admin/field-components.svelte.js +18 -0
- package/dist/admin/nav.svelte.d.ts +34 -0
- package/dist/admin/nav.svelte.d.ts.map +1 -0
- package/dist/admin/nav.svelte.js +78 -0
- package/dist/admin/slots.svelte.d.ts +50 -0
- package/dist/admin/slots.svelte.d.ts.map +1 -0
- package/dist/admin/slots.svelte.js +67 -0
- package/dist/admin/types.d.ts +7 -0
- package/dist/admin/types.d.ts.map +1 -0
- package/dist/admin/types.js +1 -0
- package/dist/api/schemas/api-keys.d.ts +4 -37
- package/dist/api/schemas/api-keys.d.ts.map +1 -1
- package/dist/api/schemas/api-keys.js +5 -2
- package/dist/api/schemas/assets.d.ts +4 -0
- package/dist/api/schemas/assets.d.ts.map +1 -1
- package/dist/api/schemas/assets.js +3 -0
- package/dist/api/schemas/plugin-settings.d.ts +6 -0
- package/dist/api/schemas/plugin-settings.d.ts.map +1 -0
- package/dist/api/schemas/plugin-settings.js +8 -0
- package/dist/api/schemas/roles.d.ts +7 -56
- package/dist/api/schemas/roles.d.ts.map +1 -1
- package/dist/api/schemas/roles.js +11 -6
- package/dist/api/schemas/user.d.ts +2 -1
- package/dist/api/schemas/user.d.ts.map +1 -1
- package/dist/api/schemas/user.js +7 -2
- package/dist/app-augment.d.ts +11 -0
- package/dist/app-augment.d.ts.map +1 -1
- package/dist/app.d.ts +2 -0
- package/dist/auth/provider.d.ts +3 -0
- package/dist/auth/provider.d.ts.map +1 -1
- package/dist/cli/index.js +4 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/client/index.d.ts +6 -0
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +9 -0
- package/dist/components/AdminApp.svelte +259 -113
- package/dist/components/AdminApp.svelte.d.ts +18 -2
- package/dist/components/AdminApp.svelte.d.ts.map +1 -1
- package/dist/components/admin/AdminSlot.svelte +18 -0
- package/dist/components/admin/AdminSlot.svelte.d.ts +12 -0
- package/dist/components/admin/AdminSlot.svelte.d.ts.map +1 -0
- package/dist/components/admin/DocumentEditor.svelte +646 -385
- package/dist/components/admin/DocumentEditor.svelte.d.ts +13 -0
- package/dist/components/admin/DocumentEditor.svelte.d.ts.map +1 -1
- package/dist/components/admin/MediaBrowser.svelte +13 -3
- package/dist/components/admin/MediaBrowser.svelte.d.ts.map +1 -1
- package/dist/components/admin/PluginSettingsPanel.svelte +231 -0
- package/dist/components/admin/PluginSettingsPanel.svelte.d.ts +8 -0
- package/dist/components/admin/PluginSettingsPanel.svelte.d.ts.map +1 -0
- package/dist/components/admin/SchemaField.svelte +76 -95
- package/dist/components/admin/SchemaField.svelte.d.ts +7 -0
- package/dist/components/admin/SchemaField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/ArrayField.svelte +24 -2
- package/dist/components/admin/fields/ArrayField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/FieldInput.svelte +109 -0
- package/dist/components/admin/fields/FieldInput.svelte.d.ts +17 -0
- package/dist/components/admin/fields/FieldInput.svelte.d.ts.map +1 -0
- package/dist/components/admin/fields/richtext/PortableTextImageView.svelte +5 -12
- package/dist/components/admin/fields/richtext/PortableTextImageView.svelte.d.ts +2 -9
- package/dist/components/admin/fields/richtext/PortableTextImageView.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/richtext/PortableTextObjectView.svelte +18 -17
- package/dist/components/admin/fields/richtext/PortableTextObjectView.svelte.d.ts +2 -9
- package/dist/components/admin/fields/richtext/PortableTextObjectView.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/richtext/RichtextField.svelte +55 -2
- package/dist/components/admin/fields/richtext/RichtextField.svelte.d.ts.map +1 -1
- package/dist/components/admin/fields/richtext/portable-text-object-node.d.ts +7 -0
- package/dist/components/admin/fields/richtext/portable-text-object-node.d.ts.map +1 -1
- package/dist/components/admin/fields/richtext/portable-text-object-node.js +4 -2
- package/dist/components/admin/fields/richtext/svelte-node-view.d.ts +16 -1
- package/dist/components/admin/fields/richtext/svelte-node-view.d.ts.map +1 -1
- package/dist/components/admin/fields/richtext/svelte-node-view.js +20 -1
- package/dist/components/layout/OrganizationSwitcher.svelte +31 -10
- package/dist/components/layout/OrganizationSwitcher.svelte.d.ts.map +1 -1
- package/dist/components/layout/Sidebar.svelte +49 -11
- package/dist/components/layout/Sidebar.svelte.d.ts +5 -1
- package/dist/components/layout/Sidebar.svelte.d.ts.map +1 -1
- package/dist/components/layout/sidebar/AppSidebar.svelte +66 -3
- package/dist/components/layout/sidebar/AppSidebar.svelte.d.ts +5 -0
- package/dist/components/layout/sidebar/AppSidebar.svelte.d.ts.map +1 -1
- package/dist/components/layout/sidebar/NavMain.svelte +3 -2
- package/dist/components/layout/sidebar/NavMain.svelte.d.ts +4 -3
- package/dist/components/layout/sidebar/NavMain.svelte.d.ts.map +1 -1
- package/dist/components/layout/sidebar/NavUser.svelte +5 -1
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +11 -0
- package/dist/db/interfaces/asset.d.ts +1 -0
- package/dist/db/interfaces/asset.d.ts.map +1 -1
- package/dist/db/interfaces/index.d.ts +3 -1
- package/dist/db/interfaces/index.d.ts.map +1 -1
- package/dist/db/interfaces/plugin-settings.d.ts +23 -0
- package/dist/db/interfaces/plugin-settings.d.ts.map +1 -0
- package/dist/db/interfaces/plugin-settings.js +13 -0
- package/dist/db/interfaces/role.d.ts +14 -5
- package/dist/db/interfaces/role.d.ts.map +1 -1
- package/dist/engine.d.ts +28 -0
- package/dist/engine.d.ts.map +1 -1
- package/dist/engine.js +44 -0
- package/dist/hooks.d.ts +6 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js +59 -2
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -0
- package/dist/lib/admin/block-previews.svelte.d.ts +46 -0
- package/dist/lib/admin/block-previews.svelte.d.ts.map +1 -0
- package/dist/lib/admin/block-previews.svelte.js +27 -0
- package/dist/lib/admin/block-previews.svelte.js.map +1 -0
- package/dist/lib/admin/field-components.svelte.d.ts +16 -0
- package/dist/lib/admin/field-components.svelte.d.ts.map +1 -0
- package/dist/lib/admin/field-components.svelte.js +19 -0
- package/dist/lib/admin/field-components.svelte.js.map +1 -0
- package/dist/lib/admin/nav.svelte.d.ts +34 -0
- package/dist/lib/admin/nav.svelte.d.ts.map +1 -0
- package/dist/lib/admin/nav.svelte.js +79 -0
- package/dist/lib/admin/nav.svelte.js.map +1 -0
- package/dist/lib/admin/slots.svelte.d.ts +50 -0
- package/dist/lib/admin/slots.svelte.d.ts.map +1 -0
- package/dist/lib/admin/slots.svelte.js +68 -0
- package/dist/lib/admin/slots.svelte.js.map +1 -0
- package/dist/lib/admin/types.d.ts +7 -0
- package/dist/lib/admin/types.d.ts.map +1 -0
- package/dist/lib/admin/types.js +2 -0
- package/dist/lib/admin/types.js.map +1 -0
- package/dist/lib/api/schemas/api-keys.d.ts +4 -37
- package/dist/lib/api/schemas/api-keys.d.ts.map +1 -1
- package/dist/lib/api/schemas/api-keys.js +5 -2
- package/dist/lib/api/schemas/api-keys.js.map +1 -1
- package/dist/lib/api/schemas/assets.d.ts +4 -0
- package/dist/lib/api/schemas/assets.d.ts.map +1 -1
- package/dist/lib/api/schemas/assets.js +3 -0
- package/dist/lib/api/schemas/assets.js.map +1 -1
- package/dist/lib/api/schemas/plugin-settings.d.ts +6 -0
- package/dist/lib/api/schemas/plugin-settings.d.ts.map +1 -0
- package/dist/lib/api/schemas/plugin-settings.js +9 -0
- package/dist/lib/api/schemas/plugin-settings.js.map +1 -0
- package/dist/lib/api/schemas/roles.d.ts +7 -56
- package/dist/lib/api/schemas/roles.d.ts.map +1 -1
- package/dist/lib/api/schemas/roles.js +11 -6
- package/dist/lib/api/schemas/roles.js.map +1 -1
- package/dist/lib/api/schemas/user.d.ts +2 -1
- package/dist/lib/api/schemas/user.d.ts.map +1 -1
- package/dist/lib/api/schemas/user.js +7 -2
- package/dist/lib/api/schemas/user.js.map +1 -1
- package/dist/lib/app-augment.d.ts +11 -0
- package/dist/lib/app-augment.d.ts.map +1 -1
- package/dist/lib/auth/provider.d.ts +3 -0
- package/dist/lib/auth/provider.d.ts.map +1 -1
- package/dist/lib/client/index.d.ts +6 -0
- package/dist/lib/client/index.d.ts.map +1 -1
- package/dist/lib/client/index.js +9 -0
- package/dist/lib/client/index.js.map +1 -1
- package/dist/lib/components/admin/fields/richtext/portable-text-object-node.d.ts +7 -0
- package/dist/lib/components/admin/fields/richtext/portable-text-object-node.d.ts.map +1 -1
- package/dist/lib/components/admin/fields/richtext/portable-text-object-node.js +4 -2
- package/dist/lib/components/admin/fields/richtext/portable-text-object-node.js.map +1 -1
- package/dist/lib/components/admin/fields/richtext/svelte-node-view.d.ts +16 -1
- package/dist/lib/components/admin/fields/richtext/svelte-node-view.d.ts.map +1 -1
- package/dist/lib/components/admin/fields/richtext/svelte-node-view.js +20 -1
- package/dist/lib/components/admin/fields/richtext/svelte-node-view.js.map +1 -1
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +11 -0
- package/dist/lib/config.js.map +1 -1
- package/dist/lib/db/interfaces/asset.d.ts +1 -0
- package/dist/lib/db/interfaces/asset.d.ts.map +1 -1
- package/dist/lib/db/interfaces/index.d.ts +3 -1
- package/dist/lib/db/interfaces/index.d.ts.map +1 -1
- package/dist/lib/db/interfaces/plugin-settings.d.ts +23 -0
- package/dist/lib/db/interfaces/plugin-settings.d.ts.map +1 -0
- package/dist/lib/db/interfaces/plugin-settings.js +14 -0
- package/dist/lib/db/interfaces/plugin-settings.js.map +1 -0
- package/dist/lib/db/interfaces/role.d.ts +14 -5
- package/dist/lib/db/interfaces/role.d.ts.map +1 -1
- package/dist/lib/engine.d.ts +28 -0
- package/dist/lib/engine.d.ts.map +1 -1
- package/dist/lib/engine.js +44 -0
- package/dist/lib/engine.js.map +1 -1
- package/dist/lib/hooks.d.ts +6 -0
- package/dist/lib/hooks.d.ts.map +1 -1
- package/dist/lib/hooks.js +59 -2
- package/dist/lib/hooks.js.map +1 -1
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.d.ts.map +1 -1
- package/dist/lib/index.js +5 -0
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/local-api/collection-api.d.ts.map +1 -1
- package/dist/lib/local-api/collection-api.js +4 -2
- package/dist/lib/local-api/collection-api.js.map +1 -1
- package/dist/lib/local-api/types.d.ts +8 -0
- package/dist/lib/local-api/types.d.ts.map +1 -1
- package/dist/lib/mcp/tools.d.ts.map +1 -1
- package/dist/lib/mcp/tools.js +69 -1
- package/dist/lib/mcp/tools.js.map +1 -1
- package/dist/lib/permissions-context.svelte.d.ts +7 -4
- package/dist/lib/permissions-context.svelte.d.ts.map +1 -1
- package/dist/lib/permissions-context.svelte.js.map +1 -1
- package/dist/lib/plugins/index.d.ts +3 -0
- package/dist/lib/plugins/index.d.ts.map +1 -0
- package/dist/lib/plugins/index.js +3 -0
- package/dist/lib/plugins/index.js.map +1 -0
- package/dist/lib/plugins/resolver.d.ts +49 -0
- package/dist/lib/plugins/resolver.d.ts.map +1 -0
- package/dist/lib/plugins/resolver.js +66 -0
- package/dist/lib/plugins/resolver.js.map +1 -0
- package/dist/lib/plugins/types.d.ts +233 -0
- package/dist/lib/plugins/types.d.ts.map +1 -0
- package/dist/lib/plugins/types.js +9 -0
- package/dist/lib/plugins/types.js.map +1 -0
- package/dist/lib/schema-utils/desugar.d.ts +27 -0
- package/dist/lib/schema-utils/desugar.d.ts.map +1 -0
- package/dist/lib/schema-utils/desugar.js +102 -0
- package/dist/lib/schema-utils/desugar.js.map +1 -0
- package/dist/lib/schema-utils/index.d.ts +2 -0
- package/dist/lib/schema-utils/index.d.ts.map +1 -1
- package/dist/lib/schema-utils/index.js +2 -0
- package/dist/lib/schema-utils/index.js.map +1 -1
- package/dist/lib/schema-utils/settings.d.ts +17 -0
- package/dist/lib/schema-utils/settings.d.ts.map +1 -0
- package/dist/lib/schema-utils/settings.js +23 -0
- package/dist/lib/schema-utils/settings.js.map +1 -0
- package/dist/lib/schema-utils/validator.d.ts.map +1 -1
- package/dist/lib/schema-utils/validator.js +11 -0
- package/dist/lib/schema-utils/validator.js.map +1 -1
- package/dist/lib/security/secret-crypto.d.ts +18 -0
- package/dist/lib/security/secret-crypto.d.ts.map +1 -0
- package/dist/lib/security/secret-crypto.js +71 -0
- package/dist/lib/security/secret-crypto.js.map +1 -0
- package/dist/lib/server/api/index.d.ts.map +1 -1
- package/dist/lib/server/api/index.js +3 -0
- package/dist/lib/server/api/index.js.map +1 -1
- package/dist/lib/server/api/routes/assets.d.ts.map +1 -1
- package/dist/lib/server/api/routes/assets.js +8 -2
- package/dist/lib/server/api/routes/assets.js.map +1 -1
- package/dist/lib/server/api/routes/organizations.d.ts.map +1 -1
- package/dist/lib/server/api/routes/organizations.js +4 -1
- package/dist/lib/server/api/routes/organizations.js.map +1 -1
- package/dist/lib/server/api/routes/plugin-settings.d.ts +4 -0
- package/dist/lib/server/api/routes/plugin-settings.d.ts.map +1 -0
- package/dist/lib/server/api/routes/plugin-settings.js +109 -0
- package/dist/lib/server/api/routes/plugin-settings.js.map +1 -0
- package/dist/lib/server/api/routes/roles.d.ts.map +1 -1
- package/dist/lib/server/api/routes/roles.js +37 -0
- package/dist/lib/server/api/routes/roles.js.map +1 -1
- package/dist/lib/server/api/routes/user.d.ts.map +1 -1
- package/dist/lib/server/api/routes/user.js +14 -3
- package/dist/lib/server/api/routes/user.js.map +1 -1
- package/dist/lib/services/asset-service.d.ts +1 -0
- package/dist/lib/services/asset-service.d.ts.map +1 -1
- package/dist/lib/services/asset-service.js.map +1 -1
- package/dist/lib/services/index.d.ts +2 -0
- package/dist/lib/services/index.d.ts.map +1 -1
- package/dist/lib/services/index.js +1 -0
- package/dist/lib/services/index.js.map +1 -1
- package/dist/lib/services/plugin-settings-service.d.ts +76 -0
- package/dist/lib/services/plugin-settings-service.d.ts.map +1 -0
- package/dist/lib/services/plugin-settings-service.js +236 -0
- package/dist/lib/services/plugin-settings-service.js.map +1 -0
- package/dist/lib/services/roles-service.d.ts +2 -2
- package/dist/lib/services/roles-service.d.ts.map +1 -1
- package/dist/lib/services/roles-service.js.map +1 -1
- package/dist/lib/theme/css.d.ts +30 -0
- package/dist/lib/theme/css.d.ts.map +1 -0
- package/dist/lib/theme/css.js +54 -0
- package/dist/lib/theme/css.js.map +1 -0
- package/dist/lib/theme/derive.d.ts +27 -0
- package/dist/lib/theme/derive.d.ts.map +1 -0
- package/dist/lib/theme/derive.js +108 -0
- package/dist/lib/theme/derive.js.map +1 -0
- package/dist/lib/theme/index.d.ts +5 -0
- package/dist/lib/theme/index.d.ts.map +1 -0
- package/dist/lib/theme/index.js +5 -0
- package/dist/lib/theme/index.js.map +1 -0
- package/dist/lib/theme/schemes.d.ts +60 -0
- package/dist/lib/theme/schemes.d.ts.map +1 -0
- package/dist/lib/theme/schemes.js +150 -0
- package/dist/lib/theme/schemes.js.map +1 -0
- package/dist/lib/theme/tokens.d.ts +57 -0
- package/dist/lib/theme/tokens.d.ts.map +1 -0
- package/dist/lib/theme/tokens.js +11 -0
- package/dist/lib/theme/tokens.js.map +1 -0
- package/dist/{cli/generate-types.d.ts → lib/type-gen.d.ts} +3 -6
- package/dist/lib/type-gen.d.ts.map +1 -0
- package/dist/lib/type-gen.js +658 -0
- package/dist/lib/type-gen.js.map +1 -0
- package/dist/lib/types/auth.d.ts +10 -10
- package/dist/lib/types/auth.d.ts.map +1 -1
- package/dist/lib/types/capabilities.d.ts +50 -9
- package/dist/lib/types/capabilities.d.ts.map +1 -1
- package/dist/lib/types/capabilities.js +147 -5
- package/dist/lib/types/capabilities.js.map +1 -1
- package/dist/lib/types/config.d.ts +30 -1
- package/dist/lib/types/config.d.ts.map +1 -1
- package/dist/lib/types/schemas.d.ts +90 -2
- package/dist/lib/types/schemas.d.ts.map +1 -1
- package/dist/lib/types/schemas.js.map +1 -1
- package/dist/lib/types/sidebar.d.ts +3 -1
- package/dist/lib/types/sidebar.d.ts.map +1 -1
- package/dist/lib/utils/index.d.ts +1 -0
- package/dist/lib/utils/index.d.ts.map +1 -1
- package/dist/lib/utils/index.js +1 -0
- package/dist/lib/utils/index.js.map +1 -1
- package/dist/lib/utils/preview.d.ts +16 -5
- package/dist/lib/utils/preview.d.ts.map +1 -1
- package/dist/lib/utils/preview.js +7 -2
- package/dist/lib/utils/preview.js.map +1 -1
- package/dist/lib/vite/index.d.ts +7 -0
- package/dist/lib/vite/index.d.ts.map +1 -1
- package/dist/lib/vite/index.js +37 -6
- package/dist/lib/vite/index.js.map +1 -1
- package/dist/local-api/collection-api.d.ts.map +1 -1
- package/dist/local-api/collection-api.js +4 -2
- package/dist/local-api/types.d.ts +8 -0
- package/dist/local-api/types.d.ts.map +1 -1
- package/dist/mcp/tools.d.ts.map +1 -1
- package/dist/mcp/tools.js +69 -1
- package/dist/permissions-context.svelte.d.ts +7 -4
- package/dist/permissions-context.svelte.d.ts.map +1 -1
- package/dist/plugins/index.d.ts +3 -0
- package/dist/plugins/index.d.ts.map +1 -0
- package/dist/plugins/index.js +2 -0
- package/dist/plugins/resolver.d.ts +49 -0
- package/dist/plugins/resolver.d.ts.map +1 -0
- package/dist/plugins/resolver.js +65 -0
- package/dist/plugins/types.d.ts +233 -0
- package/dist/plugins/types.d.ts.map +1 -0
- package/dist/plugins/types.js +8 -0
- package/dist/schema-utils/desugar.d.ts +27 -0
- package/dist/schema-utils/desugar.d.ts.map +1 -0
- package/dist/schema-utils/desugar.js +101 -0
- package/dist/schema-utils/index.d.ts +2 -0
- package/dist/schema-utils/index.d.ts.map +1 -1
- package/dist/schema-utils/index.js +2 -0
- package/dist/schema-utils/settings.d.ts +17 -0
- package/dist/schema-utils/settings.d.ts.map +1 -0
- package/dist/schema-utils/settings.js +22 -0
- package/dist/schema-utils/validator.d.ts.map +1 -1
- package/dist/schema-utils/validator.js +11 -0
- package/dist/security/secret-crypto.d.ts +18 -0
- package/dist/security/secret-crypto.d.ts.map +1 -0
- package/dist/security/secret-crypto.js +70 -0
- package/dist/server/api/index.d.ts.map +1 -1
- package/dist/server/api/index.js +3 -0
- package/dist/server/api/routes/assets.d.ts.map +1 -1
- package/dist/server/api/routes/assets.js +8 -2
- package/dist/server/api/routes/organizations.d.ts.map +1 -1
- package/dist/server/api/routes/organizations.js +4 -1
- package/dist/server/api/routes/plugin-settings.d.ts +4 -0
- package/dist/server/api/routes/plugin-settings.d.ts.map +1 -0
- package/dist/server/api/routes/plugin-settings.js +108 -0
- package/dist/server/api/routes/roles.d.ts.map +1 -1
- package/dist/server/api/routes/roles.js +37 -0
- package/dist/server/api/routes/user.d.ts.map +1 -1
- package/dist/server/api/routes/user.js +14 -3
- package/dist/services/asset-service.d.ts +1 -0
- package/dist/services/asset-service.d.ts.map +1 -1
- package/dist/services/index.d.ts +2 -0
- package/dist/services/index.d.ts.map +1 -1
- package/dist/services/index.js +1 -0
- package/dist/services/plugin-settings-service.d.ts +76 -0
- package/dist/services/plugin-settings-service.d.ts.map +1 -0
- package/dist/services/plugin-settings-service.js +235 -0
- package/dist/services/roles-service.d.ts +2 -2
- package/dist/services/roles-service.d.ts.map +1 -1
- package/dist/theme/css.d.ts +30 -0
- package/dist/theme/css.d.ts.map +1 -0
- package/dist/theme/css.js +53 -0
- package/dist/theme/derive.d.ts +27 -0
- package/dist/theme/derive.d.ts.map +1 -0
- package/dist/theme/derive.js +107 -0
- package/dist/theme/index.d.ts +5 -0
- package/dist/theme/index.d.ts.map +1 -0
- package/dist/theme/index.js +4 -0
- package/dist/theme/schemes.d.ts +60 -0
- package/dist/theme/schemes.d.ts.map +1 -0
- package/dist/theme/schemes.js +149 -0
- package/dist/theme/tokens.d.ts +57 -0
- package/dist/theme/tokens.d.ts.map +1 -0
- package/dist/theme/tokens.js +10 -0
- package/dist/type-gen.d.ts +19 -0
- package/dist/type-gen.d.ts.map +1 -0
- package/dist/{cli/generate-types.js → type-gen.js} +101 -68
- package/dist/types/auth.d.ts +10 -10
- package/dist/types/auth.d.ts.map +1 -1
- package/dist/types/capabilities.d.ts +50 -9
- package/dist/types/capabilities.d.ts.map +1 -1
- package/dist/types/capabilities.js +147 -5
- package/dist/types/config.d.ts +30 -1
- package/dist/types/config.d.ts.map +1 -1
- package/dist/types/schemas.d.ts +90 -2
- package/dist/types/schemas.d.ts.map +1 -1
- package/dist/types/sidebar.d.ts +3 -1
- package/dist/types/sidebar.d.ts.map +1 -1
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -0
- package/dist/utils/preview.d.ts +16 -5
- package/dist/utils/preview.d.ts.map +1 -1
- package/dist/utils/preview.js +7 -2
- package/dist/vite/index.d.ts +7 -0
- package/dist/vite/index.d.ts.map +1 -1
- package/dist/vite/index.js +37 -6
- package/package.json +6 -4
- package/dist/cli/generate-types.d.ts.map +0 -1
- package/dist/cli/generate-types.js.map +0 -1
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { sanitizeTokenValue } from './css.js';
|
|
2
|
+
const FALLBACK = {
|
|
3
|
+
surface: '#ffffff',
|
|
4
|
+
text: '#15171a',
|
|
5
|
+
primary: '#3eb0ef'
|
|
6
|
+
};
|
|
7
|
+
/** Slugify a scheme name into a stable, safe CSS class fragment. */
|
|
8
|
+
export function schemeSlug(name) {
|
|
9
|
+
const slug = name
|
|
10
|
+
.toLowerCase()
|
|
11
|
+
.replace(/[^a-z0-9]+/g, '-')
|
|
12
|
+
.replace(/^-+|-+$/g, '');
|
|
13
|
+
return slug || 'scheme';
|
|
14
|
+
}
|
|
15
|
+
/** The CSS class that carries a scheme's tokens, e.g. `scheme-dark`. */
|
|
16
|
+
export function schemeClass(name) {
|
|
17
|
+
return `scheme-${schemeSlug(name)}`;
|
|
18
|
+
}
|
|
19
|
+
/** Parse a 3/6-digit hex to [r,g,b] in 0–255, or null if not a plain hex. */
|
|
20
|
+
function parseHex(hex) {
|
|
21
|
+
const m = hex.trim().match(/^#([0-9a-fA-F]{3}|[0-9a-fA-F]{6})$/);
|
|
22
|
+
const group = m?.[1];
|
|
23
|
+
if (!group)
|
|
24
|
+
return null;
|
|
25
|
+
const h = group.length === 3
|
|
26
|
+
? group
|
|
27
|
+
.split('')
|
|
28
|
+
.map((c) => c + c)
|
|
29
|
+
.join('')
|
|
30
|
+
: group;
|
|
31
|
+
return [parseInt(h.slice(0, 2), 16), parseInt(h.slice(2, 4), 16), parseInt(h.slice(4, 6), 16)];
|
|
32
|
+
}
|
|
33
|
+
/** WCAG relative luminance (0 black → 1 white) of an sRGB triple. */
|
|
34
|
+
function luminance([r, g, b]) {
|
|
35
|
+
const lin = (c) => {
|
|
36
|
+
const s = c / 255;
|
|
37
|
+
return s <= 0.03928 ? s / 12.92 : Math.pow((s + 0.055) / 1.055, 2.4);
|
|
38
|
+
};
|
|
39
|
+
return 0.2126 * lin(r) + 0.7152 * lin(g) + 0.0722 * lin(b);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Pick a readable on-color (near-black or white) for text/icons that sit on top
|
|
43
|
+
* of `background`. Falls back to white when the color can't be parsed.
|
|
44
|
+
*/
|
|
45
|
+
export function contrastColor(background) {
|
|
46
|
+
const rgb = parseHex(background);
|
|
47
|
+
if (!rgb)
|
|
48
|
+
return '#ffffff';
|
|
49
|
+
// Compare contrast against white vs near-black; whichever is higher wins.
|
|
50
|
+
const L = luminance(rgb);
|
|
51
|
+
const contrastWhite = 1.05 / (L + 0.05);
|
|
52
|
+
const contrastBlack = (L + 0.05) / 0.05;
|
|
53
|
+
return contrastWhite >= contrastBlack ? '#ffffff' : '#0b0b0c';
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Resolve a scheme's three seeds into the full CSS-var role map. Seeds are
|
|
57
|
+
* sanitized; anything invalid falls back to a sensible default so a scheme always
|
|
58
|
+
* emits a complete, coherent palette. The derived roles are `color-mix`
|
|
59
|
+
* expressions over `var(--ink)`/`var(--paper)`, so they recompute correctly for
|
|
60
|
+
* whichever scheme is in scope — no per-shade user input, no drift.
|
|
61
|
+
*/
|
|
62
|
+
export function resolveSchemeVars(scheme) {
|
|
63
|
+
const surface = sanitizeTokenValue(scheme.surface) ?? FALLBACK.surface;
|
|
64
|
+
const text = sanitizeTokenValue(scheme.text) ?? FALLBACK.text;
|
|
65
|
+
const primary = sanitizeTokenValue(scheme.primary) ?? FALLBACK.primary;
|
|
66
|
+
return {
|
|
67
|
+
'--paper': surface,
|
|
68
|
+
'--ink': text,
|
|
69
|
+
'--accent': primary,
|
|
70
|
+
'--accent-contrast': contrastColor(primary),
|
|
71
|
+
// Derived — relative to this scheme's ink/paper.
|
|
72
|
+
'--paper-raised': 'color-mix(in srgb, var(--ink) 2%, var(--paper))',
|
|
73
|
+
'--ink-soft': 'color-mix(in srgb, var(--ink) 58%, var(--paper))',
|
|
74
|
+
'--ink-faint': 'color-mix(in srgb, var(--ink) 38%, var(--paper))',
|
|
75
|
+
'--rule': 'color-mix(in srgb, var(--ink) 12%, transparent)',
|
|
76
|
+
'--rule-soft': 'color-mix(in srgb, var(--ink) 7%, transparent)',
|
|
77
|
+
'--accent-ink': 'color-mix(in srgb, var(--accent) 82%, var(--ink))'
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Emit one scoped rule per scheme, prefixed so it only styles the site subtree
|
|
82
|
+
* (never `:root`/admin chrome). Returns `''` when there are no schemes.
|
|
83
|
+
*
|
|
84
|
+
* @param scopeSelector Ancestor selector the scheme classes live under, e.g. `.blog-shell`.
|
|
85
|
+
*/
|
|
86
|
+
export function emitSchemeStyles(schemes, scopeSelector) {
|
|
87
|
+
const rules = [];
|
|
88
|
+
for (const scheme of schemes) {
|
|
89
|
+
const vars = resolveSchemeVars(scheme);
|
|
90
|
+
const decls = Object.entries(vars)
|
|
91
|
+
.map(([k, v]) => `${k}: ${v};`)
|
|
92
|
+
.join(' ');
|
|
93
|
+
const cls = schemeClass(scheme.name);
|
|
94
|
+
// Match the shell itself when it wears the scheme, and any descendant that does.
|
|
95
|
+
rules.push(`${scopeSelector}.${cls}, ${scopeSelector} .${cls} { ${decls} }`);
|
|
96
|
+
}
|
|
97
|
+
return rules.join('\n');
|
|
98
|
+
}
|
|
99
|
+
/** Read a theme document's `schemes` array, falling back to `defaults` when absent. */
|
|
100
|
+
export function readSchemes(values, defaults) {
|
|
101
|
+
const doc = {};
|
|
102
|
+
if (values && typeof values === 'object')
|
|
103
|
+
Object.assign(doc, values);
|
|
104
|
+
const raw = doc.schemes;
|
|
105
|
+
if (!Array.isArray(raw) || raw.length === 0)
|
|
106
|
+
return defaults;
|
|
107
|
+
const parsed = [];
|
|
108
|
+
for (const item of raw) {
|
|
109
|
+
if (!item || typeof item !== 'object')
|
|
110
|
+
continue;
|
|
111
|
+
const rec = item;
|
|
112
|
+
const name = typeof rec.name === 'string' && rec.name.trim() !== '' ? rec.name : 'Scheme';
|
|
113
|
+
parsed.push({
|
|
114
|
+
name,
|
|
115
|
+
surface: typeof rec.surface === 'string' ? rec.surface : FALLBACK.surface,
|
|
116
|
+
text: typeof rec.text === 'string' ? rec.text : FALLBACK.text,
|
|
117
|
+
primary: typeof rec.primary === 'string' ? rec.primary : FALLBACK.primary
|
|
118
|
+
});
|
|
119
|
+
}
|
|
120
|
+
return parsed.length > 0 ? parsed : defaults;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Build the `schemes` array field for the theme singleton — a repeatable object
|
|
124
|
+
* of { name, surface, text, primary }. The first scheme is the site default.
|
|
125
|
+
*/
|
|
126
|
+
export function deriveSchemesField(defaults, group) {
|
|
127
|
+
return {
|
|
128
|
+
name: 'schemes',
|
|
129
|
+
type: 'array',
|
|
130
|
+
title: 'Color schemes',
|
|
131
|
+
description: 'Reusable palettes. The first is the site default; sections can opt into any other. Set the background, text, and accent — the rest is derived.',
|
|
132
|
+
group,
|
|
133
|
+
initialValue: defaults,
|
|
134
|
+
of: [
|
|
135
|
+
{
|
|
136
|
+
type: 'object',
|
|
137
|
+
name: 'colorScheme',
|
|
138
|
+
title: 'Scheme',
|
|
139
|
+
preview: { select: { title: 'name', subtitle: 'primary' } },
|
|
140
|
+
fields: [
|
|
141
|
+
{ name: 'name', type: 'string', title: 'Name' },
|
|
142
|
+
{ name: 'surface', type: 'string', input: 'color', title: 'Background' },
|
|
143
|
+
{ name: 'text', type: 'string', input: 'color', title: 'Text' },
|
|
144
|
+
{ name: 'primary', type: 'string', input: 'color', title: 'Accent' }
|
|
145
|
+
]
|
|
146
|
+
}
|
|
147
|
+
]
|
|
148
|
+
};
|
|
149
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme token *types* — the shape of a design-system token.
|
|
3
|
+
*
|
|
4
|
+
* cms-core owns the machinery (turn a token list into a schema + scoped CSS); the
|
|
5
|
+
* consuming app owns the concrete token list, its default colors, and font choices
|
|
6
|
+
* (that's design opinion, not engine concern). See ./derive.ts and ./css.ts for
|
|
7
|
+
* the functions that operate on these, and the app's own `theme/tokens.ts` for a
|
|
8
|
+
* concrete set.
|
|
9
|
+
*/
|
|
10
|
+
/** A curated font choice — the stored `value` resolves to a full CSS `stack`. */
|
|
11
|
+
export interface FontOption {
|
|
12
|
+
title: string;
|
|
13
|
+
value: string;
|
|
14
|
+
stack: string;
|
|
15
|
+
}
|
|
16
|
+
interface BaseToken {
|
|
17
|
+
/** Field name in the theme schema and the token's identity. */
|
|
18
|
+
name: string;
|
|
19
|
+
title: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
/** The CSS custom property this token drives, e.g. `--accent`. */
|
|
22
|
+
cssVar: string;
|
|
23
|
+
/** Field group in the admin form. */
|
|
24
|
+
group: string;
|
|
25
|
+
}
|
|
26
|
+
export interface ColorToken extends BaseToken {
|
|
27
|
+
kind: 'color';
|
|
28
|
+
default: string;
|
|
29
|
+
}
|
|
30
|
+
export interface FontToken extends BaseToken {
|
|
31
|
+
kind: 'font';
|
|
32
|
+
/** The stored `value` of the default option. */
|
|
33
|
+
default: string;
|
|
34
|
+
options: FontOption[];
|
|
35
|
+
}
|
|
36
|
+
/** A numeric slider — widths, radii, sizes. Emitted as `${value}${unit}`. */
|
|
37
|
+
export interface RangeToken extends BaseToken {
|
|
38
|
+
kind: 'range';
|
|
39
|
+
default: number;
|
|
40
|
+
min: number;
|
|
41
|
+
max: number;
|
|
42
|
+
step?: number;
|
|
43
|
+
/** CSS unit appended to the value, e.g. `'px'`, `'rem'`. Defaults to `''`. */
|
|
44
|
+
unit?: string;
|
|
45
|
+
}
|
|
46
|
+
/** A fixed-choice dropdown — weights, styles. The stored value is emitted verbatim. */
|
|
47
|
+
export interface SelectToken extends BaseToken {
|
|
48
|
+
kind: 'select';
|
|
49
|
+
default: string;
|
|
50
|
+
options: Array<{
|
|
51
|
+
title: string;
|
|
52
|
+
value: string;
|
|
53
|
+
}>;
|
|
54
|
+
}
|
|
55
|
+
export type ThemeToken = ColorToken | FontToken | RangeToken | SelectToken;
|
|
56
|
+
export {};
|
|
57
|
+
//# sourceMappingURL=tokens.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tokens.d.ts","sourceRoot":"","sources":["../../src/lib/theme/tokens.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,iFAAiF;AACjF,MAAM,WAAW,UAAU;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACd;AAED,UAAU,SAAS;IAClB,+DAA+D;IAC/D,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,KAAK,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,SAAU,SAAQ,SAAS;IAC3C,IAAI,EAAE,MAAM,CAAC;IACb,gDAAgD;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,UAAU,EAAE,CAAC;CACtB;AAED,6EAA6E;AAC7E,MAAM,WAAW,UAAW,SAAQ,SAAS;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,8EAA8E;IAC9E,IAAI,CAAC,EAAE,MAAM,CAAC;CACd;AAED,uFAAuF;AACvF,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC7C,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACjD;AAED,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,UAAU,GAAG,WAAW,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Theme token *types* — the shape of a design-system token.
|
|
3
|
+
*
|
|
4
|
+
* cms-core owns the machinery (turn a token list into a schema + scoped CSS); the
|
|
5
|
+
* consuming app owns the concrete token list, its default colors, and font choices
|
|
6
|
+
* (that's design opinion, not engine concern). See ./derive.ts and ./css.ts for
|
|
7
|
+
* the functions that operate on these, and the app's own `theme/tokens.ts` for a
|
|
8
|
+
* concrete set.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Type generator for Aphex CMS
|
|
3
|
+
* Generates TypeScript types from schema definitions with module augmentation
|
|
4
|
+
*/
|
|
5
|
+
import type { SchemaType, Field } from './types/schemas.js';
|
|
6
|
+
/**
|
|
7
|
+
* The depth=0 write shape (TypeScript type string) for a single field, e.g.
|
|
8
|
+
* `string` for a slug, `Reference<author>` for a reference, `ImageValue` for an
|
|
9
|
+
* image. Same mapping `generate-types` uses to emit `generated-types.ts`, so
|
|
10
|
+
* agent-facing schema introspection (MCP `get_schema`) can derive value shapes
|
|
11
|
+
* from the one source of truth instead of hand-authoring a parallel list.
|
|
12
|
+
*/
|
|
13
|
+
export declare function fieldWriteShape(field: Field, schemas: SchemaType[]): string;
|
|
14
|
+
/**
|
|
15
|
+
* Generate complete TypeScript types file with module augmentation
|
|
16
|
+
*/
|
|
17
|
+
export declare function generateTypes(schemas: SchemaType[]): string;
|
|
18
|
+
export declare function generateTypesFromConfig(schemaPath: string, outputPath: string, pluginsPath?: string): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=type-gen.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"type-gen.d.ts","sourceRoot":"","sources":["../src/lib/type-gen.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAoJzD;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CAG3E;AA6VD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,UAAU,EAAE,GAAG,MAAM,CA8I3D;AAwFD,wBAAsB,uBAAuB,CAC5C,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,EAClB,WAAW,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAoDf"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { createPartResolver } from './plugins/resolver.js';
|
|
2
|
+
import { isFieldRequired } from './field-validation/utils.js';
|
|
3
|
+
import { toPascalCase } from './utils/string-case.js';
|
|
3
4
|
/**
|
|
4
5
|
* Map Aphex field types to TypeScript types
|
|
5
6
|
*/
|
|
@@ -538,79 +539,112 @@ ${collectionsAugmentation}
|
|
|
538
539
|
/**
|
|
539
540
|
* CLI helper to generate types from schema file
|
|
540
541
|
*/
|
|
541
|
-
|
|
542
|
+
/**
|
|
543
|
+
* Compile a `.ts` module with esbuild (stubbing icons + Svelte components, which never
|
|
544
|
+
* affect types) and dynamically import it, returning the module namespace. Used for both
|
|
545
|
+
* the schema module and the optional plugins module.
|
|
546
|
+
*/
|
|
547
|
+
async function compileAndImportModule(absolutePath, tempName, opts = {}) {
|
|
548
|
+
const path = await import('path');
|
|
549
|
+
const { pathToFileURL } = await import('url');
|
|
550
|
+
const fs = await import('fs/promises');
|
|
551
|
+
let modulePath = absolutePath;
|
|
552
|
+
let tempFile = null;
|
|
553
|
+
if (absolutePath.endsWith('.ts')) {
|
|
554
|
+
const { build } = await import('esbuild');
|
|
555
|
+
const tempOutFile = path.join(path.dirname(absolutePath), tempName);
|
|
556
|
+
// The plugins module imports plugin *main* entries (Svelte-laden) and cms-core
|
|
557
|
+
// runtime utils — so bundle the plugins (the Svelte-stub strips their components)
|
|
558
|
+
// and alias cms-core to its built dist (real JS; source `.ts` can't load in Node).
|
|
559
|
+
// The schema module keeps `@aphexcms/*` external (its plugin imports use the
|
|
560
|
+
// server-safe `/schema` subpath, which loads fine).
|
|
561
|
+
const alias = opts.bundlePlugins && opts.cmsCoreDist
|
|
562
|
+
? { '@aphexcms/cms-core': opts.cmsCoreDist }
|
|
563
|
+
: undefined;
|
|
564
|
+
await build({
|
|
565
|
+
entryPoints: [absolutePath],
|
|
566
|
+
bundle: true,
|
|
567
|
+
format: 'esm',
|
|
568
|
+
platform: 'node',
|
|
569
|
+
outfile: tempOutFile,
|
|
570
|
+
external: opts.bundlePlugins ? ['sharp', 'graphql', 'graphql-yoga'] : ['@aphexcms/*'],
|
|
571
|
+
alias,
|
|
572
|
+
plugins: [
|
|
573
|
+
{
|
|
574
|
+
name: 'remove-icons',
|
|
575
|
+
setup(build) {
|
|
576
|
+
build.onResolve({ filter: /^@lucide\/svelte/ }, (args) => {
|
|
577
|
+
return { path: args.path, namespace: 'lucide-stub' };
|
|
578
|
+
});
|
|
579
|
+
build.onLoad({ filter: /.*/, namespace: 'lucide-stub' }, () => {
|
|
580
|
+
return { contents: 'export default {}', loader: 'js' };
|
|
581
|
+
});
|
|
582
|
+
// Stub .svelte components — a schema/plugin module can transitively
|
|
583
|
+
// import component parts (actions, tools, widgets) that never affect types.
|
|
584
|
+
build.onResolve({ filter: /\.svelte(\?.*)?$/ }, (args) => {
|
|
585
|
+
return { path: args.path, namespace: 'svelte-stub' };
|
|
586
|
+
});
|
|
587
|
+
build.onLoad({ filter: /.*/, namespace: 'svelte-stub' }, () => {
|
|
588
|
+
return { contents: 'export default {}', loader: 'js' };
|
|
589
|
+
});
|
|
590
|
+
build.onLoad({ filter: /\.(ts|js)$/ }, async (args) => {
|
|
591
|
+
const contents = await fs.readFile(args.path, 'utf8');
|
|
592
|
+
const transformed = contents.replace(/icon:\s*\w+/g, 'icon: undefined');
|
|
593
|
+
return { contents: transformed, loader: args.path.endsWith('.ts') ? 'ts' : 'js' };
|
|
594
|
+
});
|
|
595
|
+
}
|
|
596
|
+
}
|
|
597
|
+
]
|
|
598
|
+
});
|
|
599
|
+
modulePath = tempOutFile;
|
|
600
|
+
tempFile = tempOutFile;
|
|
601
|
+
}
|
|
602
|
+
// @vite-ignore: path is resolved at CLI runtime, not statically analyzable.
|
|
603
|
+
const mod = await import(/* @vite-ignore */ pathToFileURL(modulePath).href);
|
|
604
|
+
if (tempFile) {
|
|
605
|
+
try {
|
|
606
|
+
await fs.unlink(tempFile);
|
|
607
|
+
}
|
|
608
|
+
catch {
|
|
609
|
+
// Ignore cleanup errors
|
|
610
|
+
}
|
|
611
|
+
}
|
|
612
|
+
return mod;
|
|
613
|
+
}
|
|
614
|
+
export async function generateTypesFromConfig(schemaPath, outputPath, pluginsPath) {
|
|
542
615
|
try {
|
|
543
|
-
// Resolve paths relative to current working directory
|
|
544
616
|
const path = await import('path');
|
|
545
|
-
const { pathToFileURL } = await import('url');
|
|
546
617
|
const fs = await import('fs/promises');
|
|
547
618
|
const absoluteSchemaPath = path.resolve(process.cwd(), schemaPath);
|
|
548
619
|
const absoluteOutputPath = path.resolve(process.cwd(), outputPath);
|
|
549
|
-
|
|
550
|
-
let
|
|
551
|
-
let tempFile = null;
|
|
552
|
-
if (absoluteSchemaPath.endsWith('.ts')) {
|
|
553
|
-
const { build } = await import('esbuild');
|
|
554
|
-
const fs = await import('fs/promises');
|
|
555
|
-
const tempOutFile = path.join(path.dirname(absoluteSchemaPath), '.temp-schema.mjs');
|
|
556
|
-
await build({
|
|
557
|
-
entryPoints: [absoluteSchemaPath],
|
|
558
|
-
bundle: true,
|
|
559
|
-
format: 'esm',
|
|
560
|
-
platform: 'node',
|
|
561
|
-
outfile: tempOutFile,
|
|
562
|
-
external: ['@aphexcms/*'],
|
|
563
|
-
plugins: [
|
|
564
|
-
{
|
|
565
|
-
name: 'remove-icons',
|
|
566
|
-
setup(build) {
|
|
567
|
-
// Intercept lucide icon imports and provide empty stub module
|
|
568
|
-
build.onResolve({ filter: /^@lucide\/svelte/ }, (args) => {
|
|
569
|
-
return { path: args.path, namespace: 'lucide-stub' };
|
|
570
|
-
});
|
|
571
|
-
// Return empty stub for lucide modules
|
|
572
|
-
build.onLoad({ filter: /.*/, namespace: 'lucide-stub' }, () => {
|
|
573
|
-
return {
|
|
574
|
-
contents: 'export default {}',
|
|
575
|
-
loader: 'js'
|
|
576
|
-
};
|
|
577
|
-
});
|
|
578
|
-
// Transform source files to remove icon usage in schemas
|
|
579
|
-
build.onLoad({ filter: /\.(ts|js)$/ }, async (args) => {
|
|
580
|
-
const contents = await fs.readFile(args.path, 'utf8');
|
|
581
|
-
// Remove icon usage in schema definitions (icon: IconName -> icon: undefined)
|
|
582
|
-
const transformed = contents.replace(/icon:\s*\w+/g, 'icon: undefined');
|
|
583
|
-
return {
|
|
584
|
-
contents: transformed,
|
|
585
|
-
loader: args.path.endsWith('.ts') ? 'ts' : 'js'
|
|
586
|
-
};
|
|
587
|
-
});
|
|
588
|
-
}
|
|
589
|
-
}
|
|
590
|
-
]
|
|
591
|
-
});
|
|
592
|
-
schemaModulePath = tempOutFile;
|
|
593
|
-
tempFile = tempOutFile;
|
|
594
|
-
}
|
|
595
|
-
// Dynamic import the schema types
|
|
596
|
-
// Use file:// URL for proper ESM import. The path is resolved at CLI runtime
|
|
597
|
-
// (a temp-compiled or the consumer's schema module), so Vite can't statically
|
|
598
|
-
// analyze it — @vite-ignore silences the SSR-graph warning when this file is
|
|
599
|
-
// pulled into a dev bundle.
|
|
600
|
-
const schemaModule = await import(/* @vite-ignore */ pathToFileURL(schemaModulePath).href);
|
|
601
|
-
const schemas = schemaModule.schemaTypes || schemaModule.default;
|
|
602
|
-
// Clean up temp file if created
|
|
603
|
-
if (tempFile) {
|
|
604
|
-
try {
|
|
605
|
-
await fs.unlink(tempFile);
|
|
606
|
-
}
|
|
607
|
-
catch {
|
|
608
|
-
// Ignore cleanup errors
|
|
609
|
-
}
|
|
610
|
-
}
|
|
620
|
+
const schemaModule = await compileAndImportModule(absoluteSchemaPath, '.temp-schema.mjs');
|
|
621
|
+
let schemas = schemaModule.schemaTypes || schemaModule.default;
|
|
611
622
|
if (!schemas || !Array.isArray(schemas)) {
|
|
612
623
|
throw new Error('Invalid schema file: expected schemaTypes array export');
|
|
613
624
|
}
|
|
625
|
+
// Apply plugin schema-transforms so plugin-provided field types (e.g. `type: 'color'`)
|
|
626
|
+
// desugar exactly as they do at runtime — without this, codegen emits `unknown` for
|
|
627
|
+
// them. `pluginsPath` points at the app's client-safe plugin registry (e.g.
|
|
628
|
+
// `src/lib/plugins.ts`, exporting `plugins`).
|
|
629
|
+
if (pluginsPath) {
|
|
630
|
+
const absolutePluginsPath = path.resolve(process.cwd(), pluginsPath);
|
|
631
|
+
// Resolve cms-core's built dist so the plugins' cms-core runtime imports load
|
|
632
|
+
// (the source `.ts` entry can't run in Node). Present in both the monorepo
|
|
633
|
+
// (symlink) and real installs (published dist).
|
|
634
|
+
const fsSync = await import('fs');
|
|
635
|
+
const cmsCoreDistCandidate = path.join(process.cwd(), 'node_modules/@aphexcms/cms-core/dist/index.js');
|
|
636
|
+
const cmsCoreDist = fsSync.existsSync(cmsCoreDistCandidate)
|
|
637
|
+
? cmsCoreDistCandidate
|
|
638
|
+
: undefined;
|
|
639
|
+
const pluginsModule = await compileAndImportModule(absolutePluginsPath, '.temp-plugins.mjs', {
|
|
640
|
+
bundlePlugins: true,
|
|
641
|
+
cmsCoreDist
|
|
642
|
+
});
|
|
643
|
+
const plugins = (pluginsModule.plugins || pluginsModule.default);
|
|
644
|
+
if (Array.isArray(plugins)) {
|
|
645
|
+
schemas = createPartResolver(plugins).applySchemaTransforms(schemas);
|
|
646
|
+
}
|
|
647
|
+
}
|
|
614
648
|
const generatedTypes = generateTypes(schemas);
|
|
615
649
|
// Write to output file
|
|
616
650
|
await fs.writeFile(absoluteOutputPath, generatedTypes, 'utf-8');
|
|
@@ -621,4 +655,3 @@ export async function generateTypesFromConfig(schemaPath, outputPath) {
|
|
|
621
655
|
throw error;
|
|
622
656
|
}
|
|
623
657
|
}
|
|
624
|
-
//# sourceMappingURL=generate-types.js.map
|
package/dist/types/auth.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import type { CMSUser } from './user.js';
|
|
2
2
|
import type { OrganizationRole } from './organization.js';
|
|
3
|
-
import type { Capability } from './capabilities.js';
|
|
4
3
|
export interface SessionAuth {
|
|
5
4
|
type: 'session';
|
|
6
5
|
user: CMSUser;
|
|
@@ -19,11 +18,13 @@ export interface SessionAuth {
|
|
|
19
18
|
*/
|
|
20
19
|
organizationRole: OrganizationRole | string;
|
|
21
20
|
/**
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
21
|
+
* Capability ids granted to this session, resolved by the auth hook (RolesService).
|
|
22
|
+
* `string[]`, not `Capability[]`: a role can grant plugin-declared capabilities that
|
|
23
|
+
* aren't in the built-in `Capability` union. Present for fully-authenticated
|
|
24
|
+
* sessions; when absent, callers fall back to built-in seed values — see
|
|
25
|
+
* `resolveCapabilities`.
|
|
25
26
|
*/
|
|
26
|
-
capabilities?:
|
|
27
|
+
capabilities?: string[];
|
|
27
28
|
organizations?: Array<{
|
|
28
29
|
id: string;
|
|
29
30
|
name: string;
|
|
@@ -57,12 +58,11 @@ export interface ApiKeyAuth {
|
|
|
57
58
|
*/
|
|
58
59
|
permissions: ('read' | 'write')[];
|
|
59
60
|
/**
|
|
60
|
-
* Fine-grained capability allowlist for this API key. When present,
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* matches the Capability union.
|
|
61
|
+
* Fine-grained capability-id allowlist for this API key. When present, overrides
|
|
62
|
+
* the coarse `permissions` mapping — the key can do exactly what's listed and
|
|
63
|
+
* nothing else. `string[]` so keys can be scoped to plugin capabilities too.
|
|
64
64
|
*/
|
|
65
|
-
capabilities?:
|
|
65
|
+
capabilities?: string[];
|
|
66
66
|
organizationId: string;
|
|
67
67
|
environment?: string;
|
|
68
68
|
lastUsedAt?: Date;
|
package/dist/types/auth.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/types/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/lib/types/auth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACtC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD,MAAM,WAAW,WAAW;IAC3B,IAAI,EAAE,SAAS,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,IAAI,CAAC;KAChB,CAAC;IACF,cAAc,EAAE,MAAM,CAAC;IACvB;;;;;;;OAOG;IACH,gBAAgB,EAAE,gBAAgB,GAAG,MAAM,CAAC;IAC5C;;;;;;OAMG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,aAAa,CAAC,EAAE,KAAK,CAAC;QACrB,EAAE,EAAE,MAAM,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,MAAM,CAAC;QACb,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAAC;QAChC,QAAQ,EAAE,OAAO,CAAC;QAClB,QAAQ,CAAC,EAAE,GAAG,CAAC;KACf,CAAC,CAAC;CACH;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,EAAE,IAAI,CAAC;KAChB,CAAC;CACF;AAED,MAAM,WAAW,UAAU;IAC1B,IAAI,EAAE,SAAS,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,WAAW,EAAE,CAAC,MAAM,GAAG,OAAO,CAAC,EAAE,CAAC;IAClC;;;;OAIG;IACH,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,MAAM,MAAM,IAAI,GAAG,WAAW,GAAG,kBAAkB,GAAG,UAAU,CAAC;AAYjE;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAO5C;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAMpD;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAEpD;AAED;;;;;;GAMG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAE5C"}
|
|
@@ -6,11 +6,44 @@ import type { OrganizationRole } from './organization.js';
|
|
|
6
6
|
* Append-only: removing or renaming a value silently weakens every call site.
|
|
7
7
|
* If a capability is no longer needed, leave the string and stop granting it.
|
|
8
8
|
*/
|
|
9
|
-
export type Capability = 'document.read' | 'document.create' | 'document.update' | 'document.delete' | 'document.publish' | 'document.unpublish' | 'asset.read' | 'asset.upload' | 'asset.delete' | 'member.invite' | 'member.remove' | 'member.changeRole' | 'apiKey.manage' | 'role.manage' | 'org.settings';
|
|
9
|
+
export type Capability = 'document.read' | 'document.create' | 'document.update' | 'document.delete' | 'document.publish' | 'document.unpublish' | 'asset.read' | 'asset.upload' | 'asset.delete' | 'member.invite' | 'member.remove' | 'member.changeRole' | 'apiKey.manage' | 'role.manage' | 'org.settings' | 'plugin.settings.manage';
|
|
10
10
|
/**
|
|
11
11
|
* Enumerate every capability. Useful for owner seeding and validation.
|
|
12
12
|
*/
|
|
13
13
|
export declare const ALL_CAPABILITIES: readonly Capability[];
|
|
14
|
+
/**
|
|
15
|
+
* Metadata for one capability — a registry entry. Turns a bare permission string
|
|
16
|
+
* into something the roles UI can present (title, help text, grouping). Built-ins
|
|
17
|
+
* are defined below; plugins add their own via the `aphex/capabilities` part, and
|
|
18
|
+
* the part resolver merges both into one catalog (`resolver.capabilityCatalog()`).
|
|
19
|
+
*/
|
|
20
|
+
export interface CapabilityDefinition {
|
|
21
|
+
/** The permission string checked at runtime, e.g. `'document.publish'`. */
|
|
22
|
+
id: string;
|
|
23
|
+
/** Human label shown in the roles UI. */
|
|
24
|
+
title: string;
|
|
25
|
+
/** One-line explanation shown under the title. */
|
|
26
|
+
description?: string;
|
|
27
|
+
/** Group heading in the roles UI, e.g. `'Documents'`. */
|
|
28
|
+
group?: string;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Define a capability with metadata. Plugins pass these to the `aphex/capabilities`
|
|
32
|
+
* part so their permissions appear (and are assignable) in the roles UI.
|
|
33
|
+
*
|
|
34
|
+
* @example
|
|
35
|
+
* defineCapability('forms.export', { title: 'Export submissions', group: 'Forms' })
|
|
36
|
+
*/
|
|
37
|
+
export declare function defineCapability(id: string, meta?: Partial<Omit<CapabilityDefinition, 'id'>>): CapabilityDefinition;
|
|
38
|
+
/** Fallback label for a bare id: `document.publish` → `Publish` (last segment, title-cased). */
|
|
39
|
+
export declare function prettifyCapabilityId(id: string): string;
|
|
40
|
+
/** The built-in capability catalog — metadata for every core capability. */
|
|
41
|
+
export declare const BUILTIN_CAPABILITY_DEFS: readonly CapabilityDefinition[];
|
|
42
|
+
/**
|
|
43
|
+
* Merge the built-in catalog with extra (plugin) definitions, deduped by id — the
|
|
44
|
+
* first definition of an id wins, so plugins can't silently redefine a core cap.
|
|
45
|
+
*/
|
|
46
|
+
export declare function mergeCapabilityCatalog(extra?: readonly CapabilityDefinition[]): CapabilityDefinition[];
|
|
14
47
|
/**
|
|
15
48
|
* Built-in role names. These are the guaranteed defaults every org receives.
|
|
16
49
|
* Custom role names are any other string.
|
|
@@ -19,9 +52,15 @@ export declare const BUILTIN_ROLE_NAMES: readonly OrganizationRole[];
|
|
|
19
52
|
/**
|
|
20
53
|
* Seed data for the four built-in roles.
|
|
21
54
|
*
|
|
22
|
-
*
|
|
23
|
-
* org starts with. Once seeded, rows live in `cms_roles` and can
|
|
24
|
-
* admins
|
|
55
|
+
* For viewer/editor/admin this is the **default floor** — the set of capabilities
|
|
56
|
+
* a freshly-created org starts with. Once seeded, rows live in `cms_roles` and can
|
|
57
|
+
* be edited by admins via the Roles UI; they are never force-updated afterwards,
|
|
58
|
+
* so a capability added by a later core upgrade is not granted retroactively.
|
|
59
|
+
*
|
|
60
|
+
* `owner` is different: it is an **invariant**, not a floor. It is always the whole
|
|
61
|
+
* of ALL_CAPABILITIES, is rejected by the roles PATCH route, and is reconciled on
|
|
62
|
+
* every boot (see CMSEngine.reconcileBuiltinRoles) so new capabilities reach orgs
|
|
63
|
+
* that were seeded before those capabilities existed.
|
|
25
64
|
*
|
|
26
65
|
* Also acts as the defense-in-depth fallback: if a role lookup misses (e.g.
|
|
27
66
|
* a row got deleted out-of-band for a built-in name), the checker falls back
|
|
@@ -34,8 +73,10 @@ export declare const BUILTIN_ROLE_SEED: Record<OrganizationRole, {
|
|
|
34
73
|
/**
|
|
35
74
|
* Idempotently expand a capability list so that any write cap drags in the
|
|
36
75
|
* corresponding read. Used by both the role schema and the API-key schema.
|
|
76
|
+
* Accepts `string[]` since a granted list may include plugin capability ids; the
|
|
77
|
+
* built-in read/write implications only touch known core ids and pass others through.
|
|
37
78
|
*/
|
|
38
|
-
export declare function normalizeCapabilities(caps: readonly
|
|
79
|
+
export declare function normalizeCapabilities(caps: readonly string[]): string[];
|
|
39
80
|
/**
|
|
40
81
|
* A persisted role row (per organization).
|
|
41
82
|
*/
|
|
@@ -44,7 +85,7 @@ export interface Role {
|
|
|
44
85
|
organizationId: string;
|
|
45
86
|
name: string;
|
|
46
87
|
description: string | null;
|
|
47
|
-
capabilities:
|
|
88
|
+
capabilities: string[];
|
|
48
89
|
isBuiltIn: boolean;
|
|
49
90
|
createdAt: Date;
|
|
50
91
|
updatedAt: Date;
|
|
@@ -53,7 +94,7 @@ export interface NewRole {
|
|
|
53
94
|
organizationId: string;
|
|
54
95
|
name: string;
|
|
55
96
|
description?: string | null;
|
|
56
|
-
capabilities:
|
|
97
|
+
capabilities: string[];
|
|
57
98
|
isBuiltIn?: boolean;
|
|
58
99
|
}
|
|
59
100
|
/**
|
|
@@ -69,7 +110,7 @@ export declare function isInstanceRole(auth: Auth): boolean;
|
|
|
69
110
|
* RolesService. If absent (e.g. legacy call site), falls back to the built-in
|
|
70
111
|
* seed for the org role so behavior remains safe.
|
|
71
112
|
*/
|
|
72
|
-
export declare function hasCapability(auth: Auth, capability: Capability): boolean;
|
|
113
|
+
export declare function hasCapability(auth: Auth, capability: Capability | (string & {})): boolean;
|
|
73
114
|
/**
|
|
74
115
|
* Resolve the effective capability set for an Auth.
|
|
75
116
|
*
|
|
@@ -80,7 +121,7 @@ export declare function hasCapability(auth: Auth, capability: Capability): boole
|
|
|
80
121
|
* 4. Session fallback → built-in seed for the org role.
|
|
81
122
|
* 5. Partial session → empty set.
|
|
82
123
|
*/
|
|
83
|
-
export declare function resolveCapabilities(auth: Auth): ReadonlySet<
|
|
124
|
+
export declare function resolveCapabilities(auth: Auth): ReadonlySet<string>;
|
|
84
125
|
/**
|
|
85
126
|
* Resolve the effective organization role name for an Auth, honoring
|
|
86
127
|
* instance-role overrides. Returns the role name as a string — built-in or
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/lib/types/capabilities.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAEnB,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,oBAAoB,GAEpB,YAAY,GACZ,cAAc,GACd,cAAc,GAEd,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,eAAe,GACf,aAAa,GACb,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"capabilities.d.ts","sourceRoot":"","sources":["../../src/lib/types/capabilities.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AACnC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAEnB,eAAe,GACf,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,GACjB,kBAAkB,GAClB,oBAAoB,GAEpB,YAAY,GACZ,cAAc,GACd,cAAc,GAEd,eAAe,GACf,eAAe,GACf,mBAAmB,GACnB,eAAe,GACf,aAAa,GACb,cAAc,GAEd,wBAAwB,CAAC;AAM5B;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,SAAS,UAAU,EAiBxC,CAAC;AAEX;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACpC,2EAA2E;IAC3E,EAAE,EAAE,MAAM,CAAC;IACX,yCAAyC;IACzC,KAAK,EAAE,MAAM,CAAC;IACd,kDAAkD;IAClD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yDAAyD;IACzD,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAC/B,EAAE,EAAE,MAAM,EACV,IAAI,GAAE,OAAO,CAAC,IAAI,CAAC,oBAAoB,EAAE,IAAI,CAAC,CAAM,GAClD,oBAAoB,CAOtB;AAED,gGAAgG;AAChG,wBAAgB,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED,4EAA4E;AAC5E,eAAO,MAAM,uBAAuB,EAAE,SAAS,oBAAoB,EAiGlE,CAAC;AAEF;;;GAGG;AACH,wBAAgB,sBAAsB,CACrC,KAAK,GAAE,SAAS,oBAAoB,EAAO,GACzC,oBAAoB,EAAE,CAMxB;AAED;;;GAGG;AACH,eAAO,MAAM,kBAAkB,EAAE,SAAS,gBAAgB,EAKzD,CAAC;AAEF;;;;;;;;;;;;;;;;GAgBG;AACH,eAAO,MAAM,iBAAiB,EAAE,MAAM,CACrC,gBAAgB,EAChB;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,SAAS,UAAU,EAAE,CAAA;CAAE,CA6C5D,CAAC;AAeF;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAKvE;AAED;;GAEG;AACH,MAAM,WAAW,IAAI;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAI3B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,SAAS,EAAE,IAAI,CAAC;CAChB;AAED,MAAM,WAAW,OAAO;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,SAAS,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,EAAE,CAQtE;AAWD,wBAAgB,cAAc,CAAC,IAAI,EAAE,IAAI,GAAG,OAAO,CAElD;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,OAAO,CAEzF;AAED;;;;;;;;;GASG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,WAAW,CAAC,MAAM,CAAC,CAoCnE;AAED;;;;;;;;GAQG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAInE;AAID;;;;GAIG;AACH,MAAM,WAAW,WAAW;IAC3B,4EAA4E;IAC5E,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,0EAA0E;IAC1E,YAAY,EAAE,UAAU,EAAE,CAAC;CAC3B"}
|