rune-lab 0.4.8 → 0.5.0-rc.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +86 -0
- package/dist/src/core/cells/define-cell.d.ts +13 -0
- package/dist/src/core/cells/define-cell.js +42 -0
- package/dist/src/core/cells/persisted-cell.d.ts +9 -0
- package/dist/src/core/cells/persisted-cell.js +57 -0
- package/dist/src/core/config/config-store.d.ts +31 -0
- package/dist/src/core/config/config-store.js +79 -0
- package/dist/src/core/forge/define-contribution.d.ts +21 -0
- package/dist/src/core/forge/define-contribution.js +7 -0
- package/dist/src/core/forge/define-plugin.d.ts +33 -0
- package/dist/src/core/forge/define-plugin.js +21 -0
- package/dist/src/core/forge/define-settings.d.ts +33 -0
- package/dist/src/core/forge/define-settings.js +52 -0
- package/dist/src/core/forge/define-slot.d.ts +34 -0
- package/dist/src/core/forge/define-slot.js +3 -0
- package/dist/src/core/forge/descriptors.d.ts +15 -0
- package/dist/src/core/forge/descriptors.js +9 -0
- package/dist/src/core/kernel/kernel.d.ts +38 -0
- package/dist/src/core/kernel/kernel.js +157 -0
- package/dist/src/core/kernel/wiring.d.ts +39 -0
- package/dist/src/core/kernel/wiring.js +253 -0
- package/dist/src/core/mod.d.ts +62 -0
- package/dist/src/core/mod.js +19 -0
- package/dist/src/core/persistence/memory.d.ts +1 -0
- package/dist/src/core/persistence/memory.js +1 -0
- package/dist/src/core/ports/locale.d.ts +5 -0
- package/dist/src/core/ports/memory.d.ts +7 -0
- package/dist/src/core/ports/memory.js +20 -0
- package/dist/src/core/ports/persistence.d.ts +5 -0
- package/dist/src/core/ports/text-fake.d.ts +83 -0
- package/dist/src/core/ports/text-fake.js +231 -0
- package/dist/src/core/ports/text.d.ts +146 -0
- package/dist/src/core/services/layers.d.ts +17 -0
- package/dist/src/core/services/layers.js +38 -0
- package/dist/src/core/utils/graph.d.ts +5 -0
- package/dist/src/core/utils/graph.js +30 -0
- package/dist/src/plugins/i18n/accessors.d.ts +6 -0
- package/dist/src/plugins/i18n/accessors.js +22 -0
- package/dist/src/plugins/i18n/lang/components/LanguageSelector.svelte +44 -0
- package/dist/{runes/layout/src → src/plugins/i18n/lang/components}/LanguageSelector.svelte.d.ts +5 -6
- package/dist/{i18n → src/plugins/i18n/lang}/message-resolver.d.ts +17 -18
- package/dist/src/plugins/i18n/lang/message-resolver.js +49 -0
- package/dist/src/plugins/i18n/lang/messages.d.ts +1 -0
- package/dist/{i18n → src/plugins/i18n/lang}/messages.js +3 -3
- package/dist/src/plugins/i18n/lang/mod.d.ts +15 -0
- package/dist/src/plugins/i18n/lang/mod.js +30 -0
- package/dist/{i18n → src/plugins/i18n/lang}/paraglide/.prettierignore +1 -1
- package/dist/{i18n → src/plugins/i18n/lang}/paraglide/README.md +22 -50
- package/dist/src/plugins/i18n/lang/paraglide/messages/_index.d.ts +69 -0
- package/dist/{i18n → src/plugins/i18n/lang}/paraglide/messages/_index.js +55 -54
- package/dist/src/plugins/i18n/lang/paraglide/messages/abyss.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/abyss.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/acid.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/acid.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/aed3.d.ts +51 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/aed3.js +89 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/all_currencies.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/all_currencies.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/all_languages.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/all_languages.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/all_themes.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/all_themes.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/aqua.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/aqua.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/ar.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/ar.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/autumn.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/autumn.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/black.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/black.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/brl3.d.ts +51 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/brl3.js +89 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/bumblebee.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/bumblebee.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/business.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/business.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/cad3.d.ts +51 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/cad3.js +89 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/caramellatte.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/caramellatte.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/cmyk.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/cmyk.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/cny3.d.ts +51 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/cny3.js +89 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/coffee.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/coffee.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/corporate.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/corporate.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/cupcake.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/cupcake.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/currency.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/currency.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/cyberpunk.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/cyberpunk.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/dark.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/dark.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/de.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/de.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/dim.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/dim.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/dracula.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/dracula.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/emerald.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/emerald.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/en.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/en.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/es.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/es.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/eur3.d.ts +51 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/eur3.js +89 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/fantasy.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/fantasy.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/forest.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/forest.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/fr.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/fr.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/garden.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/garden.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/gbp3.d.ts +51 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/gbp3.js +89 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/halloween.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/halloween.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/hello_world.d.ts +52 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/hello_world.js +104 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/hi.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/hi.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/inr3.d.ts +51 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/inr3.js +89 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/it.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/it.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/ja.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/ja.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/jpy3.d.ts +51 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/jpy3.js +89 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/ko.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/ko.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/krw3.d.ts +51 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/krw3.js +89 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/languages.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/languages.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/lemonade.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/lemonade.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/light.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/light.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/lofi.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/lofi.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/luxury.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/luxury.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/mxn3.d.ts +51 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/mxn3.js +89 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/night.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/night.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/nord.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/nord.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/package.json +4 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/pastel.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/pastel.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/pt.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/pt.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/retro.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/retro.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/ru.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/ru.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/silk.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/silk.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/sunset.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/sunset.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/synthwave.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/synthwave.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/system.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/system.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/theme.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/theme.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/themes.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/themes.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/usd3.d.ts +51 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/usd3.js +89 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/valentine.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/valentine.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/vi.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/vi.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/winter.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/winter.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/wireframe.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/wireframe.js +100 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/zh.d.ts +50 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages/zh.js +87 -0
- package/dist/src/plugins/i18n/lang/paraglide/messages.d.ts +2 -0
- package/dist/src/plugins/i18n/lang/paraglide/registry.d.ts +66 -0
- package/dist/src/plugins/i18n/lang/paraglide/registry.js +51 -0
- package/dist/src/plugins/i18n/lang/paraglide/runtime.d.ts +847 -0
- package/dist/{i18n → src/plugins/i18n/lang}/paraglide/runtime.js +904 -928
- package/dist/src/plugins/i18n/lang/paraglide/server.d.ts +100 -0
- package/dist/{i18n → src/plugins/i18n/lang}/paraglide/server.js +156 -151
- package/dist/src/plugins/i18n/lang/store.svelte.d.ts +63 -0
- package/dist/src/plugins/i18n/lang/store.svelte.js +50 -0
- package/dist/src/plugins/i18n/mod.d.ts +9 -0
- package/dist/src/plugins/i18n/mod.js +9 -0
- package/dist/src/plugins/i18n/money/components/CurrencySelector.svelte +45 -0
- package/dist/{runes/plugins/money/src → src/plugins/i18n/money/components}/CurrencySelector.svelte.d.ts +6 -6
- package/dist/src/plugins/i18n/money/components/MoneyDisplay.svelte +118 -0
- package/dist/src/plugins/i18n/money/components/MoneyDisplay.svelte.d.ts +22 -0
- package/dist/src/plugins/i18n/money/components/MoneyInput.svelte +174 -0
- package/dist/src/plugins/i18n/money/components/MoneyInput.svelte.d.ts +21 -0
- package/dist/src/plugins/i18n/money/mod.d.ts +11 -0
- package/dist/src/plugins/i18n/money/mod.js +11 -0
- package/dist/src/plugins/i18n/money/primitives/money-primitive.d.ts +106 -0
- package/dist/src/plugins/i18n/money/primitives/money-primitive.js +180 -0
- package/dist/{runes/plugins/money/src → src/plugins/i18n/money/primitives}/money.d.ts +46 -46
- package/dist/src/plugins/i18n/money/primitives/money.js +287 -0
- package/dist/{runes/plugins/money/src → src/plugins/i18n/money/primitives}/strategies.d.ts +3 -3
- package/dist/{runes/plugins/money/src → src/plugins/i18n/money/primitives}/strategies.js +24 -24
- package/dist/src/plugins/i18n/money/stores/currency.svelte.d.ts +23 -0
- package/dist/src/plugins/i18n/money/stores/currency.svelte.js +82 -0
- package/dist/src/plugins/i18n/money/stores/exchange-rate.svelte.d.ts +16 -0
- package/dist/src/plugins/i18n/money/stores/exchange-rate.svelte.js +120 -0
- package/dist/src/plugins/i18n/money/types.d.ts +32 -0
- package/dist/src/plugins/i18n/money/types.js +21 -0
- package/dist/src/plugins/i18n/money/use/useMoney.d.ts +65 -0
- package/dist/src/plugins/i18n/money/use/useMoney.js +125 -0
- package/dist/src/plugins/i18n/money/use/useMoneyFilter.svelte.d.ts +23 -0
- package/dist/src/plugins/i18n/money/use/useMoneyFilter.svelte.js +97 -0
- package/dist/src/plugins/i18n/plugin.d.ts +39 -0
- package/dist/src/plugins/i18n/plugin.js +70 -0
- package/dist/src/plugins/i18n/settings.d.ts +2 -0
- package/dist/src/plugins/i18n/settings.js +56 -0
- package/dist/src/plugins/layout/components/AppSettingSelector.svelte +35 -0
- package/dist/src/plugins/layout/components/AppSettingSelector.svelte.d.ts +45 -0
- package/dist/src/plugins/layout/components/ConnectedNavigationPanel.svelte +28 -0
- package/dist/{runes/layout/src → src/plugins/layout/components}/ConnectedNavigationPanel.svelte.d.ts +8 -7
- package/dist/src/plugins/layout/components/ConnectedWorkspaceStrip.svelte +24 -0
- package/dist/{runes/layout/src → src/plugins/layout/components}/ConnectedWorkspaceStrip.svelte.d.ts +7 -6
- package/dist/src/plugins/layout/components/ContentArea.svelte +23 -0
- package/dist/{runes/layout/src → src/plugins/layout/components}/ContentArea.svelte.d.ts +3 -2
- package/dist/src/plugins/layout/components/ContentAreaZone.svelte +15 -0
- package/dist/src/plugins/layout/components/ContentAreaZone.svelte.d.ts +12 -0
- package/dist/src/plugins/layout/components/DesktopDropdown.svelte +84 -0
- package/dist/src/plugins/layout/components/DesktopDropdown.svelte.d.ts +44 -0
- package/dist/src/plugins/layout/components/DetailPanel.svelte +13 -0
- package/dist/src/plugins/layout/components/DetailPanel.svelte.d.ts +7 -0
- package/dist/src/plugins/layout/components/DetailPanelZone.svelte +45 -0
- package/dist/src/plugins/layout/components/DetailPanelZone.svelte.d.ts +12 -0
- package/dist/src/plugins/layout/components/Icon.svelte +5 -0
- package/dist/src/plugins/layout/components/Icon.svelte.d.ts +7 -0
- package/dist/src/plugins/layout/components/MobileModal.svelte +62 -0
- package/dist/src/plugins/layout/components/MobileModal.svelte.d.ts +42 -0
- package/dist/src/plugins/layout/components/NavigationItemRenderer.svelte +48 -0
- package/dist/src/plugins/layout/components/NavigationItemRenderer.svelte.d.ts +15 -0
- package/dist/src/plugins/layout/components/NavigationPanel.svelte +64 -0
- package/dist/src/plugins/layout/components/NavigationPanel.svelte.d.ts +15 -0
- package/dist/src/plugins/layout/components/NavigationPanelZone.svelte +52 -0
- package/dist/src/plugins/layout/components/NavigationPanelZone.svelte.d.ts +13 -0
- package/dist/src/plugins/layout/components/ResourceSelector.svelte +79 -0
- package/dist/src/plugins/layout/components/ResourceSelector.svelte.d.ts +55 -0
- package/dist/src/plugins/layout/components/StatusbarDropdown.svelte +23 -0
- package/dist/src/plugins/layout/components/StatusbarDropdown.svelte.d.ts +12 -0
- package/dist/src/plugins/layout/components/StatusbarOverflow.svelte +90 -0
- package/dist/src/plugins/layout/components/StatusbarOverflow.svelte.d.ts +16 -0
- package/dist/src/plugins/layout/components/StatusbarZone.svelte +19 -0
- package/dist/src/plugins/layout/components/StatusbarZone.svelte.d.ts +12 -0
- package/dist/src/plugins/layout/components/ThemeSelector.svelte +52 -0
- package/dist/{runes/layout/src → src/plugins/layout/components}/ThemeSelector.svelte.d.ts +6 -6
- package/dist/src/plugins/layout/components/WorkspaceLayout.svelte +92 -0
- package/dist/src/plugins/layout/components/WorkspaceLayout.svelte.d.ts +19 -0
- package/dist/src/plugins/layout/components/WorkspaceStrip.svelte +69 -0
- package/dist/{runes/layout/src → src/plugins/layout/components}/WorkspaceStrip.svelte.d.ts +6 -5
- package/dist/src/plugins/layout/components/WorkspaceStripZone.svelte +27 -0
- package/dist/src/plugins/layout/components/WorkspaceStripZone.svelte.d.ts +12 -0
- package/dist/src/plugins/layout/components/connection-factory.d.ts +24 -0
- package/dist/src/plugins/layout/components/connection-factory.js +32 -0
- package/dist/src/plugins/layout/components/text/RichText.svelte +108 -0
- package/dist/src/plugins/layout/components/text/RichText.svelte.d.ts +17 -0
- package/dist/src/plugins/layout/components/text/Text.svelte +85 -0
- package/dist/src/plugins/layout/components/text/Text.svelte.d.ts +19 -0
- package/dist/src/plugins/layout/components/text/TextLine.svelte +16 -0
- package/dist/src/plugins/layout/components/text/TextLine.svelte.d.ts +8 -0
- package/dist/src/plugins/layout/contributions.d.ts +3 -0
- package/dist/src/plugins/layout/contributions.js +2 -0
- package/dist/src/plugins/layout/mod.d.ts +23 -0
- package/dist/src/plugins/layout/mod.js +23 -0
- package/dist/src/plugins/layout/plugin.d.ts +15 -0
- package/dist/src/plugins/layout/plugin.js +33 -0
- package/dist/src/plugins/layout/presets.d.ts +2 -0
- package/dist/src/plugins/layout/presets.js +26 -0
- package/dist/src/plugins/layout/settings.d.ts +2 -0
- package/dist/src/plugins/layout/settings.js +70 -0
- package/dist/src/plugins/layout/stores/layout.svelte.d.ts +33 -0
- package/dist/src/plugins/layout/stores/layout.svelte.js +86 -0
- package/dist/src/plugins/layout/stores/text.svelte.d.ts +12 -0
- package/dist/src/plugins/layout/stores/text.svelte.js +56 -0
- package/dist/src/plugins/layout/stores/theme.svelte.d.ts +8 -0
- package/dist/src/plugins/layout/stores/theme.svelte.js +64 -0
- package/dist/src/plugins/layout/text/adapter.d.ts +81 -0
- package/dist/src/plugins/layout/text/adapter.js +72 -0
- package/dist/src/plugins/layout/text/fonts.d.ts +1 -0
- package/dist/src/plugins/layout/text/fonts.js +17 -0
- package/dist/src/plugins/layout/text/resize.d.ts +8 -0
- package/dist/src/plugins/layout/text/resize.js +16 -0
- package/dist/src/plugins/layout/types.d.ts +67 -0
- package/dist/src/plugins/layout/types.js +20 -0
- package/dist/src/plugins/observer/CapabilitiesSettings.svelte +103 -0
- package/dist/src/plugins/observer/CapabilitiesSettings.svelte.d.ts +7 -0
- package/dist/src/plugins/observer/ObserverPanel.svelte +215 -0
- package/dist/src/plugins/observer/ObserverPanel.svelte.d.ts +7 -0
- package/dist/src/plugins/observer/mod.d.ts +12 -0
- package/dist/src/plugins/observer/mod.js +20 -0
- package/dist/src/plugins/palettes/SettingsModal.svelte +116 -0
- package/dist/src/plugins/palettes/SettingsModal.svelte.d.ts +7 -0
- package/dist/src/plugins/palettes/accessors.d.ts +8 -0
- package/dist/src/plugins/palettes/accessors.js +15 -0
- package/dist/src/plugins/palettes/commands/mod.d.ts +2 -0
- package/dist/src/plugins/palettes/commands/mod.js +2 -0
- package/dist/src/plugins/palettes/commands/store.svelte.d.ts +22 -0
- package/dist/src/plugins/palettes/commands/store.svelte.js +64 -0
- package/dist/src/plugins/palettes/host/PaletteHost.svelte +81 -0
- package/dist/src/plugins/palettes/host/PaletteHost.svelte.d.ts +7 -0
- package/dist/src/plugins/palettes/host/hotkeys.svelte.d.ts +17 -0
- package/dist/src/plugins/palettes/host/hotkeys.svelte.js +32 -0
- package/dist/src/plugins/palettes/mod.d.ts +15 -0
- package/dist/src/plugins/palettes/mod.js +15 -0
- package/dist/src/plugins/palettes/notifications/NotificationBell.svelte +87 -0
- package/dist/src/plugins/palettes/notifications/NotificationBell.svelte.d.ts +15 -0
- package/dist/{runes/palettes/src → src/plugins/palettes}/notifications/Toaster.svelte +42 -40
- package/dist/src/plugins/palettes/notifications/Toaster.svelte.d.ts +35 -0
- package/dist/{runes/palettes/src → src/plugins/palettes}/notifications/mod.d.ts +1 -2
- package/dist/{runes/palettes/src → src/plugins/palettes}/notifications/mod.js +1 -2
- package/dist/src/plugins/palettes/notifications/store.svelte.d.ts +31 -0
- package/dist/src/plugins/palettes/notifications/store.svelte.js +93 -0
- package/dist/src/plugins/palettes/palettes/commands/CommandPalette.svelte +165 -0
- package/dist/src/plugins/palettes/palettes/commands/CommandPalette.svelte.d.ts +7 -0
- package/dist/src/plugins/palettes/palettes/shortcuts/ShortcutPalette.svelte +171 -0
- package/dist/{runes/palettes/src → src/plugins/palettes/palettes}/shortcuts/ShortcutPalette.svelte.d.ts +3 -6
- package/dist/src/plugins/palettes/plugin.d.ts +16 -0
- package/dist/src/plugins/palettes/plugin.js +69 -0
- package/dist/src/plugins/palettes/registry/registry.svelte.d.ts +21 -0
- package/dist/src/plugins/palettes/registry/registry.svelte.js +32 -0
- package/dist/src/plugins/palettes/settings-modal/AppMetadata.svelte +51 -0
- package/dist/src/plugins/palettes/settings-modal/AppMetadata.svelte.d.ts +7 -0
- package/dist/src/plugins/palettes/settings-modal/GeneralSection.svelte +27 -0
- package/dist/src/plugins/palettes/settings-modal/GeneralSection.svelte.d.ts +12 -0
- package/dist/src/plugins/palettes/settings-modal/SettingsSearchResults.svelte +78 -0
- package/dist/src/plugins/palettes/settings-modal/SettingsSearchResults.svelte.d.ts +15 -0
- package/dist/src/plugins/palettes/settings-modal/SettingsSectionContent.svelte +29 -0
- package/dist/src/plugins/palettes/settings-modal/SettingsSectionContent.svelte.d.ts +13 -0
- package/dist/src/plugins/palettes/settings-modal/SettingsSidebar.svelte +67 -0
- package/dist/src/plugins/palettes/settings-modal/SettingsSidebar.svelte.d.ts +15 -0
- package/dist/src/plugins/palettes/settings-modal/hash-routing.d.ts +2 -0
- package/dist/src/plugins/palettes/settings-modal/hash-routing.js +12 -0
- package/dist/src/plugins/palettes/settings-modal/route.svelte.d.ts +4 -0
- package/dist/src/plugins/palettes/settings-modal/route.svelte.js +48 -0
- package/dist/src/plugins/palettes/settings-modal/search.d.ts +25 -0
- package/dist/src/plugins/palettes/settings-modal/search.js +105 -0
- package/dist/src/plugins/palettes/settings-modal/sections.d.ts +17 -0
- package/dist/src/plugins/palettes/settings-modal/sections.js +28 -0
- package/dist/src/plugins/palettes/shortcuts/ShortcutSettings.svelte +197 -0
- package/dist/src/plugins/palettes/shortcuts/ShortcutSettings.svelte.d.ts +7 -0
- package/dist/src/plugins/palettes/shortcuts/grouping.d.ts +6 -0
- package/dist/src/plugins/palettes/shortcuts/grouping.js +32 -0
- package/dist/src/plugins/palettes/shortcuts/mod.d.ts +5 -0
- package/dist/src/plugins/palettes/shortcuts/mod.js +5 -0
- package/dist/src/plugins/palettes/shortcuts/store.svelte.d.ts +33 -0
- package/dist/src/plugins/palettes/shortcuts/store.svelte.js +58 -0
- package/dist/src/plugins/palettes/shortcuts/types.d.ts +1 -0
- package/dist/{runes/palettes/src → src/plugins/palettes}/shortcuts/useShortcuts.svelte.d.ts +1 -18
- package/dist/src/plugins/palettes/shortcuts/useShortcuts.svelte.js +58 -0
- package/dist/src/plugins/palettes/types.d.ts +27 -0
- package/dist/src/ui/RuneProvider.svelte +132 -0
- package/dist/src/ui/RuneProvider.svelte.d.ts +31 -0
- package/dist/{kernel/src → src/ui}/actions/portal.d.ts +4 -4
- package/dist/src/ui/actions/portal.js +33 -0
- package/dist/src/ui/define/plugin-kit.d.ts +14 -0
- package/dist/src/ui/define/plugin-kit.js +24 -0
- package/dist/src/ui/mod.d.ts +23 -0
- package/dist/src/ui/mod.js +18 -0
- package/dist/src/ui/persistence/createConfigStore.svelte.d.ts +5 -0
- package/dist/src/ui/persistence/createConfigStore.svelte.js +52 -0
- package/dist/src/ui/persistence/drivers.d.ts +18 -0
- package/dist/src/ui/persistence/drivers.js +86 -0
- package/dist/{kernel/src → src/ui}/persistence/usePersistence.d.ts +1 -1
- package/dist/src/ui/persistence/usePersistence.js +5 -0
- package/dist/src/ui/provider/context.d.ts +25 -0
- package/dist/src/ui/provider/context.js +38 -0
- package/dist/src/ui/reactivity/app.svelte.d.ts +24 -0
- package/dist/src/ui/reactivity/app.svelte.js +63 -0
- package/dist/src/ui/reactivity/use-cell.svelte.d.ts +18 -0
- package/dist/src/ui/reactivity/use-cell.svelte.js +30 -0
- package/dist/src/ui/settings/SettingsFields.svelte +179 -0
- package/dist/src/ui/settings/SettingsFields.svelte.d.ts +12 -0
- package/package.json +60 -46
- package/dist/RuneProvider.svelte +0 -147
- package/dist/RuneProvider.svelte.d.ts +0 -29
- package/dist/i18n/message-resolver.js +0 -49
- package/dist/i18n/messages.d.ts +0 -2
- package/dist/i18n/paraglide/messages/abyss.js +0 -88
- package/dist/i18n/paraglide/messages/acid.js +0 -88
- package/dist/i18n/paraglide/messages/aed3.js +0 -89
- package/dist/i18n/paraglide/messages/all_currencies.js +0 -101
- package/dist/i18n/paraglide/messages/all_languages.js +0 -101
- package/dist/i18n/paraglide/messages/all_themes.js +0 -101
- package/dist/i18n/paraglide/messages/aqua.js +0 -88
- package/dist/i18n/paraglide/messages/ar.js +0 -88
- package/dist/i18n/paraglide/messages/autumn.js +0 -101
- package/dist/i18n/paraglide/messages/black.js +0 -88
- package/dist/i18n/paraglide/messages/brl3.js +0 -89
- package/dist/i18n/paraglide/messages/bumblebee.js +0 -101
- package/dist/i18n/paraglide/messages/business.js +0 -101
- package/dist/i18n/paraglide/messages/cad3.js +0 -89
- package/dist/i18n/paraglide/messages/caramellatte.js +0 -101
- package/dist/i18n/paraglide/messages/cmyk.js +0 -88
- package/dist/i18n/paraglide/messages/cny3.js +0 -89
- package/dist/i18n/paraglide/messages/coffee.js +0 -101
- package/dist/i18n/paraglide/messages/corporate.js +0 -101
- package/dist/i18n/paraglide/messages/cupcake.js +0 -101
- package/dist/i18n/paraglide/messages/currency.js +0 -101
- package/dist/i18n/paraglide/messages/cyberpunk.js +0 -101
- package/dist/i18n/paraglide/messages/dark.js +0 -88
- package/dist/i18n/paraglide/messages/de.js +0 -88
- package/dist/i18n/paraglide/messages/dim.js +0 -88
- package/dist/i18n/paraglide/messages/dracula.js +0 -101
- package/dist/i18n/paraglide/messages/emerald.js +0 -101
- package/dist/i18n/paraglide/messages/en.js +0 -88
- package/dist/i18n/paraglide/messages/es.js +0 -88
- package/dist/i18n/paraglide/messages/eur3.js +0 -89
- package/dist/i18n/paraglide/messages/fantasy.js +0 -101
- package/dist/i18n/paraglide/messages/forest.js +0 -101
- package/dist/i18n/paraglide/messages/fr.js +0 -88
- package/dist/i18n/paraglide/messages/garden.js +0 -101
- package/dist/i18n/paraglide/messages/gbp3.js +0 -89
- package/dist/i18n/paraglide/messages/halloween.js +0 -101
- package/dist/i18n/paraglide/messages/hello_world.js +0 -101
- package/dist/i18n/paraglide/messages/hi.js +0 -88
- package/dist/i18n/paraglide/messages/inr3.js +0 -89
- package/dist/i18n/paraglide/messages/it.js +0 -88
- package/dist/i18n/paraglide/messages/ja.js +0 -88
- package/dist/i18n/paraglide/messages/jpy3.js +0 -89
- package/dist/i18n/paraglide/messages/ko.js +0 -88
- package/dist/i18n/paraglide/messages/krw3.js +0 -89
- package/dist/i18n/paraglide/messages/languages.js +0 -101
- package/dist/i18n/paraglide/messages/lemonade.js +0 -101
- package/dist/i18n/paraglide/messages/light.js +0 -88
- package/dist/i18n/paraglide/messages/lofi.js +0 -88
- package/dist/i18n/paraglide/messages/luxury.js +0 -101
- package/dist/i18n/paraglide/messages/mxn3.js +0 -89
- package/dist/i18n/paraglide/messages/night.js +0 -88
- package/dist/i18n/paraglide/messages/nord.js +0 -88
- package/dist/i18n/paraglide/messages/pastel.js +0 -101
- package/dist/i18n/paraglide/messages/pt.js +0 -88
- package/dist/i18n/paraglide/messages/retro.js +0 -88
- package/dist/i18n/paraglide/messages/ru.js +0 -88
- package/dist/i18n/paraglide/messages/silk.js +0 -88
- package/dist/i18n/paraglide/messages/sunset.js +0 -101
- package/dist/i18n/paraglide/messages/synthwave.js +0 -101
- package/dist/i18n/paraglide/messages/system.js +0 -101
- package/dist/i18n/paraglide/messages/theme.js +0 -88
- package/dist/i18n/paraglide/messages/themes.js +0 -101
- package/dist/i18n/paraglide/messages/usd3.js +0 -89
- package/dist/i18n/paraglide/messages/valentine.js +0 -101
- package/dist/i18n/paraglide/messages/vi.js +0 -88
- package/dist/i18n/paraglide/messages/winter.js +0 -101
- package/dist/i18n/paraglide/messages/wireframe.js +0 -101
- package/dist/i18n/paraglide/messages/zh.js +0 -88
- package/dist/i18n/paraglide/registry.js +0 -33
- package/dist/kernel/src/actions/portal.js +0 -33
- package/dist/kernel/src/actions/shortcut-listener.svelte.d.ts +0 -18
- package/dist/kernel/src/actions/shortcut-listener.svelte.js +0 -35
- package/dist/kernel/src/context/accessors.test.js +0 -68
- package/dist/kernel/src/context/app.svelte.d.ts +0 -45
- package/dist/kernel/src/context/app.svelte.js +0 -95
- package/dist/kernel/src/context/context.d.ts +0 -15
- package/dist/kernel/src/context/context.js +0 -16
- package/dist/kernel/src/context/stores.svelte.d.ts +0 -69
- package/dist/kernel/src/context/stores.svelte.js +0 -91
- package/dist/kernel/src/context/types.d.ts +0 -98
- package/dist/kernel/src/context/useRuneLab.d.ts +0 -25
- package/dist/kernel/src/context/useRuneLab.js +0 -26
- package/dist/kernel/src/mod.d.ts +0 -13
- package/dist/kernel/src/mod.js +0 -13
- package/dist/kernel/src/persistence/createConfigStore.svelte.d.ts +0 -42
- package/dist/kernel/src/persistence/createConfigStore.svelte.js +0 -121
- package/dist/kernel/src/persistence/drivers.d.ts +0 -25
- package/dist/kernel/src/persistence/drivers.js +0 -105
- package/dist/kernel/src/persistence/drivers.test.js +0 -79
- package/dist/kernel/src/persistence/provider.d.ts +0 -30
- package/dist/kernel/src/persistence/provider.js +0 -45
- package/dist/kernel/src/persistence/provider.test.d.ts +0 -1
- package/dist/kernel/src/persistence/provider.test.js +0 -51
- package/dist/kernel/src/persistence/types.d.ts +0 -17
- package/dist/kernel/src/persistence/types.js +0 -2
- package/dist/kernel/src/persistence/usePersistence.js +0 -5
- package/dist/kernel/src/registry/mod.d.ts +0 -119
- package/dist/kernel/src/registry/mod.js +0 -144
- package/dist/kernel/src/registry/registry.test.d.ts +0 -1
- package/dist/kernel/src/registry/registry.test.js +0 -121
- package/dist/kernel/src/tokens/props.d.ts +0 -67
- package/dist/kernel/src/tokens/props.js +0 -35
- package/dist/mod.d.ts +0 -6
- package/dist/mod.js +0 -7
- package/dist/runes/layout/src/APP_CONFIGURATIONS.d.ts +0 -29
- package/dist/runes/layout/src/APP_CONFIGURATIONS.js +0 -38
- package/dist/runes/layout/src/AppSettingSelector.svelte +0 -216
- package/dist/runes/layout/src/AppSettingSelector.svelte.d.ts +0 -48
- package/dist/runes/layout/src/ConnectedNavigationPanel.svelte +0 -28
- package/dist/runes/layout/src/ConnectedWorkspaceStrip.svelte +0 -24
- package/dist/runes/layout/src/ContentArea.svelte +0 -19
- package/dist/runes/layout/src/DetailPanel.svelte +0 -12
- package/dist/runes/layout/src/DetailPanel.svelte.d.ts +0 -7
- package/dist/runes/layout/src/Icon.svelte +0 -11
- package/dist/runes/layout/src/Icon.svelte.d.ts +0 -7
- package/dist/runes/layout/src/LanguageSelector.svelte +0 -47
- package/dist/runes/layout/src/NavigationPanel.svelte +0 -119
- package/dist/runes/layout/src/NavigationPanel.svelte.d.ts +0 -17
- package/dist/runes/layout/src/ResourceSelector.svelte +0 -81
- package/dist/runes/layout/src/ResourceSelector.svelte.d.ts +0 -57
- package/dist/runes/layout/src/ThemeSelector.svelte +0 -53
- package/dist/runes/layout/src/WorkspaceLayout.svelte +0 -252
- package/dist/runes/layout/src/WorkspaceLayout.svelte.d.ts +0 -36
- package/dist/runes/layout/src/WorkspaceStrip.svelte +0 -74
- package/dist/runes/layout/src/connection-factory.d.ts +0 -61
- package/dist/runes/layout/src/connection-factory.js +0 -58
- package/dist/runes/layout/src/language.svelte.d.ts +0 -58
- package/dist/runes/layout/src/language.svelte.js +0 -41
- package/dist/runes/layout/src/mod.d.ts +0 -23
- package/dist/runes/layout/src/mod.js +0 -73
- package/dist/runes/layout/src/store.svelte.d.ts +0 -37
- package/dist/runes/layout/src/store.svelte.js +0 -117
- package/dist/runes/layout/src/theme.svelte.d.ts +0 -13
- package/dist/runes/layout/src/theme.svelte.js +0 -71
- package/dist/runes/layout/src/types.d.ts +0 -6
- package/dist/runes/layout/src/types.js +0 -8
- package/dist/runes/palettes/src/commands/CommandPalette.svelte +0 -231
- package/dist/runes/palettes/src/commands/CommandPalette.svelte.d.ts +0 -6
- package/dist/runes/palettes/src/commands/mod.d.ts +0 -2
- package/dist/runes/palettes/src/commands/mod.js +0 -2
- package/dist/runes/palettes/src/commands/store.svelte.d.ts +0 -37
- package/dist/runes/palettes/src/commands/store.svelte.js +0 -68
- package/dist/runes/palettes/src/mod.d.ts +0 -9
- package/dist/runes/palettes/src/mod.js +0 -47
- package/dist/runes/palettes/src/notifications/NotificationBell.svelte +0 -89
- package/dist/runes/palettes/src/notifications/NotificationBell.svelte.d.ts +0 -15
- package/dist/runes/palettes/src/notifications/Toaster.svelte.d.ts +0 -32
- package/dist/runes/palettes/src/notifications/bridge.d.ts +0 -33
- package/dist/runes/palettes/src/notifications/bridge.js +0 -44
- package/dist/runes/palettes/src/notifications/store.svelte.d.ts +0 -32
- package/dist/runes/palettes/src/notifications/store.svelte.js +0 -94
- package/dist/runes/palettes/src/notifications/store.test.d.ts +0 -1
- package/dist/runes/palettes/src/notifications/store.test.js +0 -83
- package/dist/runes/palettes/src/shortcuts/ShortcutPalette.svelte +0 -244
- package/dist/runes/palettes/src/shortcuts/mod.d.ts +0 -4
- package/dist/runes/palettes/src/shortcuts/mod.js +0 -4
- package/dist/runes/palettes/src/shortcuts/store.svelte.d.ts +0 -43
- package/dist/runes/palettes/src/shortcuts/store.svelte.js +0 -95
- package/dist/runes/palettes/src/shortcuts/types.d.ts +0 -1
- package/dist/runes/palettes/src/shortcuts/useShortcuts.svelte.js +0 -76
- package/dist/runes/plugins/money/src/CurrencySelector.svelte +0 -45
- package/dist/runes/plugins/money/src/MoneyDisplay.svelte +0 -142
- package/dist/runes/plugins/money/src/MoneyDisplay.svelte.d.ts +0 -37
- package/dist/runes/plugins/money/src/MoneyInput.svelte +0 -208
- package/dist/runes/plugins/money/src/MoneyInput.svelte.d.ts +0 -38
- package/dist/runes/plugins/money/src/currency.svelte.d.ts +0 -36
- package/dist/runes/plugins/money/src/currency.svelte.js +0 -87
- package/dist/runes/plugins/money/src/currency.test.d.ts +0 -1
- package/dist/runes/plugins/money/src/currency.test.js +0 -32
- package/dist/runes/plugins/money/src/exchange-rate.svelte.d.ts +0 -43
- package/dist/runes/plugins/money/src/exchange-rate.svelte.js +0 -163
- package/dist/runes/plugins/money/src/exchange-rate.test.d.ts +0 -1
- package/dist/runes/plugins/money/src/exchange-rate.test.js +0 -74
- package/dist/runes/plugins/money/src/mod.d.ts +0 -16
- package/dist/runes/plugins/money/src/mod.js +0 -59
- package/dist/runes/plugins/money/src/money-primitive.d.ts +0 -106
- package/dist/runes/plugins/money/src/money-primitive.js +0 -178
- package/dist/runes/plugins/money/src/money-primitive.test.d.ts +0 -1
- package/dist/runes/plugins/money/src/money-primitive.test.js +0 -177
- package/dist/runes/plugins/money/src/money.js +0 -285
- package/dist/runes/plugins/money/src/money.test.d.ts +0 -1
- package/dist/runes/plugins/money/src/money.test.js +0 -154
- package/dist/runes/plugins/money/src/strategies.test.d.ts +0 -1
- package/dist/runes/plugins/money/src/strategies.test.js +0 -115
- package/dist/runes/plugins/money/src/types.d.ts +0 -27
- package/dist/runes/plugins/money/src/types.js +0 -21
- package/dist/runes/plugins/money/src/useMoney.d.ts +0 -69
- package/dist/runes/plugins/money/src/useMoney.js +0 -157
- package/dist/runes/plugins/money/src/useMoneyFilter.svelte.d.ts +0 -23
- package/dist/runes/plugins/money/src/useMoneyFilter.svelte.js +0 -97
- /package/dist/{i18n/message-resolver.test.d.ts → src/core/ports/locale.js} +0 -0
- /package/dist/{kernel/src/context/accessors.test.d.ts → src/core/ports/persistence.js} +0 -0
- /package/dist/{kernel/src/context/types.js → src/core/ports/text.js} +0 -0
- /package/dist/{i18n → src/plugins/i18n/lang}/paraglide/messages.js +0 -0
- /package/dist/{runes/palettes/src → src/plugins/palettes}/shortcuts/types.js +0 -0
- /package/dist/{kernel/src/persistence/drivers.test.d.ts → src/plugins/palettes/types.js} +0 -0
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { Context, Effect, Option } from "effect";
|
|
2
|
+
import { settingsSections } from "../forge/define-contribution.js";
|
|
3
|
+
import { StateCellsTag } from "../services/layers.js";
|
|
4
|
+
import { compileEnvironment } from "./wiring.js";
|
|
5
|
+
export function createKernel(pluginsInput, options) {
|
|
6
|
+
const { runtime, resolvedPlugins, sortedSlots } = compileEnvironment(
|
|
7
|
+
pluginsInput,
|
|
8
|
+
options,
|
|
9
|
+
);
|
|
10
|
+
const ctx = runtime.runSync(Effect.context());
|
|
11
|
+
const cellsService = Context.get(ctx, StateCellsTag);
|
|
12
|
+
const cells = cellsService.cells;
|
|
13
|
+
const stores = extractStores(ctx, sortedSlots);
|
|
14
|
+
const overlays = extractOverlays(resolvedPlugins);
|
|
15
|
+
const initialContributions = extractInitialContributions(resolvedPlugins);
|
|
16
|
+
const registeredStores = new Map();
|
|
17
|
+
// Auto-register declarative contributions to matching stores by string ID matching (fallback)
|
|
18
|
+
for (const plugin of resolvedPlugins) {
|
|
19
|
+
if (plugin.contributions) {
|
|
20
|
+
for (const entry of plugin.contributions) {
|
|
21
|
+
const store = stores.get(entry.key.id);
|
|
22
|
+
if (store && typeof store.register === "function") {
|
|
23
|
+
entry.items.forEach((item) => store.register(item));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
cells.contributions.set(initialContributions);
|
|
29
|
+
const slotMap = new Map(sortedSlots.map((s) => [s.id, s]));
|
|
30
|
+
function getCell(cellName) {
|
|
31
|
+
if (cellName === "contributions") {
|
|
32
|
+
return cells.contributions;
|
|
33
|
+
}
|
|
34
|
+
let storeKey = cellName;
|
|
35
|
+
if (!cellName.startsWith("rl:")) {
|
|
36
|
+
if (cellName.includes(".")) {
|
|
37
|
+
const lastDot = cellName.lastIndexOf(".");
|
|
38
|
+
const pluginId = cellName.slice(0, lastDot);
|
|
39
|
+
const slotName = cellName.slice(lastDot + 1);
|
|
40
|
+
storeKey = `rl:${pluginId}:${slotName}`;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const store = stores.get(storeKey);
|
|
44
|
+
if (!store) {
|
|
45
|
+
throw new Error(`[Kernel] Cell "${cellName}" does not exist`);
|
|
46
|
+
}
|
|
47
|
+
return store;
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
stores,
|
|
51
|
+
overlays,
|
|
52
|
+
getCell: (cellName) => {
|
|
53
|
+
const cell = getCell(cellName);
|
|
54
|
+
return cell.get();
|
|
55
|
+
},
|
|
56
|
+
setCell: async (cellName, value) => {
|
|
57
|
+
const cell = getCell(cellName);
|
|
58
|
+
await cell.set(value);
|
|
59
|
+
},
|
|
60
|
+
subscribe: (cellName, listener) => {
|
|
61
|
+
const cell = getCell(cellName);
|
|
62
|
+
return cell.subscribe(listener);
|
|
63
|
+
},
|
|
64
|
+
getCellVersion: (cellName) => {
|
|
65
|
+
const cell = getCell(cellName);
|
|
66
|
+
return cell.getVersion();
|
|
67
|
+
},
|
|
68
|
+
getContributions: (key) => {
|
|
69
|
+
const registry = cells.contributions.get();
|
|
70
|
+
return registry.get(key) ?? [];
|
|
71
|
+
},
|
|
72
|
+
registerContribution: (key, item) => {
|
|
73
|
+
registerContributionLifecycle(cells, key, item);
|
|
74
|
+
const store = registeredStores.get(key);
|
|
75
|
+
if (store) {
|
|
76
|
+
store.register(item);
|
|
77
|
+
}
|
|
78
|
+
},
|
|
79
|
+
unregisterContribution: (key, id) =>
|
|
80
|
+
unregisterContributionLifecycle(cells, key, id),
|
|
81
|
+
registerStore: (key, store) => {
|
|
82
|
+
registeredStores.set(key, store);
|
|
83
|
+
const items = cells.contributions.get().get(key) ?? [];
|
|
84
|
+
items.forEach((item) => store.register(item));
|
|
85
|
+
},
|
|
86
|
+
getStoreEntry: (id) => slotMap.get(id),
|
|
87
|
+
dispose: () => runtime.dispose(),
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
function extractStores(ctx, slots) {
|
|
91
|
+
const stores = new Map();
|
|
92
|
+
for (const slot of slots) {
|
|
93
|
+
const storeTag = Context.GenericTag(slot.id);
|
|
94
|
+
const opt = Context.getOption(ctx, storeTag);
|
|
95
|
+
if (Option.isSome(opt) && opt.value !== null && opt.value !== undefined) {
|
|
96
|
+
stores.set(slot.id, opt.value);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return stores;
|
|
100
|
+
}
|
|
101
|
+
function extractOverlays(plugins) {
|
|
102
|
+
const overlays = [];
|
|
103
|
+
for (const plugin of plugins) {
|
|
104
|
+
if (plugin.overlays) {
|
|
105
|
+
overlays.push(...plugin.overlays);
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
return overlays;
|
|
109
|
+
}
|
|
110
|
+
function extractInitialContributions(plugins) {
|
|
111
|
+
const contributions = new Map();
|
|
112
|
+
for (const plugin of plugins) {
|
|
113
|
+
if (plugin.contributions) {
|
|
114
|
+
for (const entry of plugin.contributions) {
|
|
115
|
+
if (!contributions.has(entry.key)) {
|
|
116
|
+
contributions.set(entry.key, []);
|
|
117
|
+
}
|
|
118
|
+
contributions.get(entry.key)?.push(...entry.items);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
// Automatically register settings schemas as contributions to "settingsSections"
|
|
122
|
+
if (plugin.settings) {
|
|
123
|
+
if (!contributions.has(settingsSections)) {
|
|
124
|
+
contributions.set(settingsSections, []);
|
|
125
|
+
}
|
|
126
|
+
contributions.get(settingsSections)?.push(plugin.settings);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return contributions;
|
|
130
|
+
}
|
|
131
|
+
function registerContributionLifecycle(cells, key, item) {
|
|
132
|
+
const contributionsCell = cells.contributions;
|
|
133
|
+
if (!contributionsCell) {
|
|
134
|
+
return;
|
|
135
|
+
}
|
|
136
|
+
const registry = new Map(contributionsCell.get());
|
|
137
|
+
const list = registry.get(key) ? [...registry.get(key)] : [];
|
|
138
|
+
list.push(item);
|
|
139
|
+
registry.set(key, list);
|
|
140
|
+
contributionsCell.set(registry);
|
|
141
|
+
}
|
|
142
|
+
function unregisterContributionLifecycle(cells, key, id) {
|
|
143
|
+
const contributionsCell = cells.contributions;
|
|
144
|
+
if (!contributionsCell) {
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
const registry = new Map(contributionsCell.get());
|
|
148
|
+
const list = registry.get(key);
|
|
149
|
+
if (list) {
|
|
150
|
+
const filtered = list.filter((item) => {
|
|
151
|
+
const obj = item;
|
|
152
|
+
return !obj || obj.id !== id;
|
|
153
|
+
});
|
|
154
|
+
registry.set(key, filtered);
|
|
155
|
+
contributionsCell.set(registry);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { ManagedRuntime } from "effect";
|
|
2
|
+
import type { ForgedPlugin, PluginInput } from "../forge/define-plugin.js";
|
|
3
|
+
import type { SlotContext } from "../forge/define-slot.js";
|
|
4
|
+
import type { LocaleAdapter } from "../ports/locale.js";
|
|
5
|
+
import type { PersistenceDriver } from "../ports/persistence.js";
|
|
6
|
+
import type { TextMeasurer } from "../ports/text.js";
|
|
7
|
+
export interface NormalizedSlot {
|
|
8
|
+
id: string;
|
|
9
|
+
slotName: string;
|
|
10
|
+
pluginId: string;
|
|
11
|
+
contextKey: symbol;
|
|
12
|
+
dependsOn: string[];
|
|
13
|
+
expose: boolean;
|
|
14
|
+
persist?: boolean | string[];
|
|
15
|
+
configSchema?: unknown;
|
|
16
|
+
create: (context: SlotContext<unknown>) => unknown;
|
|
17
|
+
}
|
|
18
|
+
export declare function resolveSlotRef(
|
|
19
|
+
ref: string,
|
|
20
|
+
declaringPluginId: string,
|
|
21
|
+
all: Map<string, NormalizedSlot>,
|
|
22
|
+
): NormalizedSlot;
|
|
23
|
+
export declare function normalizeSlots(
|
|
24
|
+
sorted: ForgedPlugin[],
|
|
25
|
+
): NormalizedSlot[];
|
|
26
|
+
type KernelRuntime = ManagedRuntime.ManagedRuntime<unknown, never>;
|
|
27
|
+
export declare function compileEnvironment(
|
|
28
|
+
pluginsInput: PluginInput[],
|
|
29
|
+
options: {
|
|
30
|
+
config: Record<string, unknown>;
|
|
31
|
+
persistence: PersistenceDriver;
|
|
32
|
+
localeAdapter?: LocaleAdapter;
|
|
33
|
+
textMeasurer?: TextMeasurer;
|
|
34
|
+
},
|
|
35
|
+
): {
|
|
36
|
+
runtime: KernelRuntime;
|
|
37
|
+
resolvedPlugins: ForgedPlugin[];
|
|
38
|
+
sortedSlots: NormalizedSlot[];
|
|
39
|
+
};
|
|
@@ -0,0 +1,253 @@
|
|
|
1
|
+
import { Context, Effect, Layer, ManagedRuntime, Schema } from "effect";
|
|
2
|
+
import { createInMemoryDriver } from "../persistence/memory.js";
|
|
3
|
+
import {
|
|
4
|
+
makeLocaleAdapterLayer,
|
|
5
|
+
makePersistenceLayer,
|
|
6
|
+
makeStateCellsLayer,
|
|
7
|
+
} from "../services/layers.js";
|
|
8
|
+
import { topologicalSort } from "../utils/graph.js";
|
|
9
|
+
|
|
10
|
+
function normalizePlugins(inputs) {
|
|
11
|
+
const flat = [];
|
|
12
|
+
function process(item) {
|
|
13
|
+
if (!item) {
|
|
14
|
+
return;
|
|
15
|
+
}
|
|
16
|
+
if (Array.isArray(item)) {
|
|
17
|
+
for (const sub of item) {
|
|
18
|
+
process(sub);
|
|
19
|
+
}
|
|
20
|
+
} else if (typeof item === "object") {
|
|
21
|
+
flat.push(item);
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
for (const item of inputs) {
|
|
25
|
+
process(item);
|
|
26
|
+
}
|
|
27
|
+
const seen = new Set();
|
|
28
|
+
return flat.filter((p) => {
|
|
29
|
+
if (seen.has(p.id)) {
|
|
30
|
+
return false;
|
|
31
|
+
}
|
|
32
|
+
seen.add(p.id);
|
|
33
|
+
return true;
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
function getPluginConfig(pluginId, config) {
|
|
37
|
+
if (config[pluginId] !== undefined) {
|
|
38
|
+
return config[pluginId];
|
|
39
|
+
}
|
|
40
|
+
return config;
|
|
41
|
+
}
|
|
42
|
+
function sortPlugins(resolved) {
|
|
43
|
+
const pluginMap = new Map(resolved.map((p) => [p.id, p]));
|
|
44
|
+
const graphNodes = resolved.map((p) => ({
|
|
45
|
+
id: p.id,
|
|
46
|
+
dependsOn: p.requires ?? [],
|
|
47
|
+
}));
|
|
48
|
+
for (const node of graphNodes) {
|
|
49
|
+
for (const reqId of node.dependsOn ?? []) {
|
|
50
|
+
if (!pluginMap.has(reqId)) {
|
|
51
|
+
throw new Error(
|
|
52
|
+
`[Kernel] Missing requirement: Plugin "${node.id}" requires "${reqId}", but "${reqId}" is not provided.`,
|
|
53
|
+
);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
try {
|
|
58
|
+
const sortedNodes = topologicalSort(graphNodes);
|
|
59
|
+
return sortedNodes.map((node) => pluginMap.get(node.id));
|
|
60
|
+
} catch (e) {
|
|
61
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
62
|
+
throw new Error(`[Kernel] Circular dependency detected in plugins: ${msg}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
export function resolveSlotRef(ref, declaringPluginId, all) {
|
|
66
|
+
const bareId = `rl:${declaringPluginId}:${ref}`;
|
|
67
|
+
if (all.has(bareId)) {
|
|
68
|
+
return all.get(bareId);
|
|
69
|
+
}
|
|
70
|
+
if (ref.includes(".")) {
|
|
71
|
+
const lastDot = ref.lastIndexOf(".");
|
|
72
|
+
const otherPluginId = ref.slice(0, lastDot);
|
|
73
|
+
const otherSlotName = ref.slice(lastDot + 1);
|
|
74
|
+
const dottedId = `rl:${otherPluginId}:${otherSlotName}`;
|
|
75
|
+
if (all.has(dottedId)) {
|
|
76
|
+
return all.get(dottedId);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
throw new Error(
|
|
80
|
+
`[Kernel] Cannot resolve slot reference "${ref}" declared in plugin "${declaringPluginId}"`,
|
|
81
|
+
);
|
|
82
|
+
}
|
|
83
|
+
export function normalizeSlots(sorted) {
|
|
84
|
+
const allSlots = [];
|
|
85
|
+
const allSlotsMap = new Map();
|
|
86
|
+
for (const plugin of sorted) {
|
|
87
|
+
const slots = plugin.slots || {};
|
|
88
|
+
for (const [slotName, slotSpec] of Object.entries(slots)) {
|
|
89
|
+
const slotId = `rl:${plugin.id}:${slotName}`;
|
|
90
|
+
const descriptor = plugin.descriptors[slotName];
|
|
91
|
+
const slot = {
|
|
92
|
+
id: slotId,
|
|
93
|
+
slotName,
|
|
94
|
+
pluginId: plugin.id,
|
|
95
|
+
contextKey: descriptor.contextKey,
|
|
96
|
+
dependsOn: [],
|
|
97
|
+
expose: slotSpec.expose !== false,
|
|
98
|
+
persist: slotSpec.persist,
|
|
99
|
+
configSchema: slotSpec.config,
|
|
100
|
+
create: slotSpec.create,
|
|
101
|
+
};
|
|
102
|
+
allSlots.push(slot);
|
|
103
|
+
allSlotsMap.set(slotId, slot);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
for (const plugin of sorted) {
|
|
107
|
+
const slots = plugin.slots || {};
|
|
108
|
+
for (const [slotName, slotSpec] of Object.entries(slots)) {
|
|
109
|
+
const slotId = `rl:${plugin.id}:${slotName}`;
|
|
110
|
+
const slot = allSlotsMap.get(slotId);
|
|
111
|
+
const resolvedDeps = [];
|
|
112
|
+
for (const dep of slotSpec.dependsOn ?? []) {
|
|
113
|
+
const resolvedSlot = resolveSlotRef(dep, plugin.id, allSlotsMap);
|
|
114
|
+
if (resolvedSlot.pluginId !== plugin.id) {
|
|
115
|
+
if (!plugin.requires?.includes(resolvedSlot.pluginId)) {
|
|
116
|
+
throw new Error(
|
|
117
|
+
`[Kernel] Invalid dependency: Slot "${slotName}" in plugin "${plugin.id}" depends on "${dep}", but "${resolvedSlot.pluginId}" is not in the requires spec of "${plugin.id}".`,
|
|
118
|
+
);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
resolvedDeps.push(resolvedSlot.id);
|
|
122
|
+
}
|
|
123
|
+
slot.dependsOn = resolvedDeps;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return allSlots;
|
|
127
|
+
}
|
|
128
|
+
function sortSlots(slots) {
|
|
129
|
+
const slotGraphNodes = slots.map((s) => ({
|
|
130
|
+
id: s.id,
|
|
131
|
+
dependsOn: s.dependsOn,
|
|
132
|
+
}));
|
|
133
|
+
try {
|
|
134
|
+
const sortedSlotNodes = topologicalSort(slotGraphNodes);
|
|
135
|
+
return sortedSlotNodes.map((n) => slots.find((s) => s.id === n.id));
|
|
136
|
+
} catch (e) {
|
|
137
|
+
const msg = e instanceof Error ? e.message : String(e);
|
|
138
|
+
throw new Error(`[Kernel] Circular dependency detected in slots: ${msg}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function buildLayers(slots, options) {
|
|
142
|
+
const cellsLayer = makeStateCellsLayer({
|
|
143
|
+
contributions: new Map(),
|
|
144
|
+
});
|
|
145
|
+
let env = Layer.merge(makePersistenceLayer(options.persistence), cellsLayer);
|
|
146
|
+
if (options.localeAdapter) {
|
|
147
|
+
env = Layer.merge(env, makeLocaleAdapterLayer(options.localeAdapter));
|
|
148
|
+
}
|
|
149
|
+
for (const slot of slots) {
|
|
150
|
+
const storeTag = Context.GenericTag(slot.id);
|
|
151
|
+
const storeLayer = Layer.effect(
|
|
152
|
+
storeTag,
|
|
153
|
+
Effect.gen(function* () {
|
|
154
|
+
const pluginConfig = getPluginConfig(slot.pluginId, options.config);
|
|
155
|
+
let configSlice = pluginConfig;
|
|
156
|
+
if (slot.configSchema) {
|
|
157
|
+
try {
|
|
158
|
+
configSlice = Schema.decodeUnknownSync(slot.configSchema)(
|
|
159
|
+
pluginConfig,
|
|
160
|
+
);
|
|
161
|
+
} catch (err) {
|
|
162
|
+
const errMsg = err instanceof Error ? err.message : String(err);
|
|
163
|
+
throw new Error(
|
|
164
|
+
`[Kernel] Config validation failed for plugin "${slot.pluginId}", slot "${slot.slotName}": ${errMsg}`,
|
|
165
|
+
);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
let persistenceHandle;
|
|
169
|
+
if (slot.persist) {
|
|
170
|
+
const prefix = `rl:${slot.pluginId}:${slot.slotName}:`;
|
|
171
|
+
persistenceHandle = {
|
|
172
|
+
get: (key) => options.persistence.get(`${prefix}${key}`),
|
|
173
|
+
set: (key, value) =>
|
|
174
|
+
options.persistence.set(`${prefix}${key}`, value),
|
|
175
|
+
remove: (key) => options.persistence.remove(`${prefix}${key}`),
|
|
176
|
+
};
|
|
177
|
+
} else {
|
|
178
|
+
const mem = createInMemoryDriver();
|
|
179
|
+
persistenceHandle = {
|
|
180
|
+
get: (key) => mem.get(key),
|
|
181
|
+
set: (key, value) => mem.set(key, value),
|
|
182
|
+
remove: (key) => mem.remove(key),
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
const resolvedDeps = new Map();
|
|
186
|
+
for (const depId of slot.dependsOn) {
|
|
187
|
+
const depTag = Context.GenericTag(depId);
|
|
188
|
+
const depStore = yield* depTag;
|
|
189
|
+
resolvedDeps.set(depId, depStore);
|
|
190
|
+
if (depId.startsWith("rl:")) {
|
|
191
|
+
const parts = depId.split(":");
|
|
192
|
+
resolvedDeps.set(parts[parts.length - 1], depStore);
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
let store = null;
|
|
196
|
+
try {
|
|
197
|
+
store = slot.create({
|
|
198
|
+
config: configSlice,
|
|
199
|
+
persistence: persistenceHandle,
|
|
200
|
+
stores: resolvedDeps,
|
|
201
|
+
locale: options.localeAdapter,
|
|
202
|
+
textMeasurer: options.textMeasurer,
|
|
203
|
+
});
|
|
204
|
+
} catch (e) {
|
|
205
|
+
console.error(`[Kernel] Failed to initialize slot "${slot.id}":`, e);
|
|
206
|
+
throw e;
|
|
207
|
+
}
|
|
208
|
+
if (store !== null && store !== undefined) {
|
|
209
|
+
const storeObj = store;
|
|
210
|
+
const hasDispose = typeof storeObj.dispose === "function";
|
|
211
|
+
if (hasDispose) {
|
|
212
|
+
yield* Effect.addFinalizer(() =>
|
|
213
|
+
Effect.tryPromise({
|
|
214
|
+
try: async () => {
|
|
215
|
+
const res = storeObj.dispose();
|
|
216
|
+
if (res instanceof Promise) {
|
|
217
|
+
await res;
|
|
218
|
+
}
|
|
219
|
+
},
|
|
220
|
+
catch: (e) => e,
|
|
221
|
+
}).pipe(
|
|
222
|
+
Effect.catchAll((e) =>
|
|
223
|
+
Effect.sync(() => {
|
|
224
|
+
console.error(
|
|
225
|
+
`[Kernel] Error disposing store ${slot.id}:`,
|
|
226
|
+
e,
|
|
227
|
+
);
|
|
228
|
+
}),
|
|
229
|
+
),
|
|
230
|
+
),
|
|
231
|
+
);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return store;
|
|
235
|
+
}),
|
|
236
|
+
);
|
|
237
|
+
env = Layer.provideMerge(storeLayer, env);
|
|
238
|
+
}
|
|
239
|
+
return env;
|
|
240
|
+
}
|
|
241
|
+
export function compileEnvironment(pluginsInput, options) {
|
|
242
|
+
const resolved = normalizePlugins(pluginsInput);
|
|
243
|
+
const sortedPlugins = sortPlugins(resolved);
|
|
244
|
+
const slots = normalizeSlots(sortedPlugins);
|
|
245
|
+
const sortedSlots = sortSlots(slots);
|
|
246
|
+
const env = buildLayers(sortedSlots, options);
|
|
247
|
+
const runtime = ManagedRuntime.make(env);
|
|
248
|
+
return {
|
|
249
|
+
runtime,
|
|
250
|
+
resolvedPlugins: resolved,
|
|
251
|
+
sortedSlots,
|
|
252
|
+
};
|
|
253
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
export { StateCell } from "./cells/define-cell.js";
|
|
2
|
+
export { createPersistedCell } from "./cells/persisted-cell.js";
|
|
3
|
+
export {
|
|
4
|
+
type ConfigStore,
|
|
5
|
+
ConfigStoreImpl,
|
|
6
|
+
type ConfigStoreOptions,
|
|
7
|
+
} from "./config/config-store.js";
|
|
8
|
+
export {
|
|
9
|
+
type ContributionEntry,
|
|
10
|
+
type ContributionKey,
|
|
11
|
+
contribute,
|
|
12
|
+
defineContribution,
|
|
13
|
+
type SettingsSectionContribution,
|
|
14
|
+
settingsSections,
|
|
15
|
+
} from "./forge/define-contribution.js";
|
|
16
|
+
export type { PluginInput } from "./forge/define-plugin.js";
|
|
17
|
+
export { definePlugin, type ForgedPlugin } from "./forge/define-plugin.js";
|
|
18
|
+
export {
|
|
19
|
+
defineSettings,
|
|
20
|
+
type SettingsFieldSchema,
|
|
21
|
+
type SettingsSchema,
|
|
22
|
+
} from "./forge/define-settings.js";
|
|
23
|
+
export type {
|
|
24
|
+
BaseSlotSpec,
|
|
25
|
+
SlotContext,
|
|
26
|
+
SlotSpec,
|
|
27
|
+
} from "./forge/define-slot.js";
|
|
28
|
+
export { defineSlot } from "./forge/define-slot.js";
|
|
29
|
+
export type { PersistenceHandle, SlotDescriptor } from "./forge/descriptors.js";
|
|
30
|
+
export { getContextSymbol } from "./forge/descriptors.js";
|
|
31
|
+
export { createKernel, type Kernel } from "./kernel/kernel.js";
|
|
32
|
+
export type { LocaleAdapter } from "./ports/locale.js";
|
|
33
|
+
export {
|
|
34
|
+
createInMemoryDriver,
|
|
35
|
+
inMemoryDriver,
|
|
36
|
+
namespaced,
|
|
37
|
+
} from "./ports/memory.js";
|
|
38
|
+
export type { PersistenceDriver } from "./ports/persistence.js";
|
|
39
|
+
export type {
|
|
40
|
+
LayoutCursor,
|
|
41
|
+
LayoutLine,
|
|
42
|
+
LayoutLineRange,
|
|
43
|
+
LayoutLinesResult,
|
|
44
|
+
LayoutResult,
|
|
45
|
+
LineStats,
|
|
46
|
+
PreparedRichInline,
|
|
47
|
+
PreparedText,
|
|
48
|
+
PreparedTextWithSegments,
|
|
49
|
+
PrepareOptions,
|
|
50
|
+
RichInlineCursor,
|
|
51
|
+
RichInlineFragment,
|
|
52
|
+
RichInlineFragmentRange,
|
|
53
|
+
RichInlineItem,
|
|
54
|
+
RichInlineLine,
|
|
55
|
+
RichInlineLineRange,
|
|
56
|
+
RichInlineStats,
|
|
57
|
+
TextMeasurer,
|
|
58
|
+
WhiteSpaceMode,
|
|
59
|
+
WordBreakMode,
|
|
60
|
+
} from "./ports/text.js";
|
|
61
|
+
export { FakeTextMeasurer } from "./ports/text-fake.js";
|
|
62
|
+
export type { StateCells } from "./services/layers.js";
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export { StateCell } from "./cells/define-cell.js";
|
|
2
|
+
export { createPersistedCell } from "./cells/persisted-cell.js";
|
|
3
|
+
export { ConfigStoreImpl } from "./config/config-store.js";
|
|
4
|
+
export {
|
|
5
|
+
contribute,
|
|
6
|
+
defineContribution,
|
|
7
|
+
settingsSections,
|
|
8
|
+
} from "./forge/define-contribution.js";
|
|
9
|
+
export { definePlugin } from "./forge/define-plugin.js";
|
|
10
|
+
export { defineSettings } from "./forge/define-settings.js";
|
|
11
|
+
export { defineSlot } from "./forge/define-slot.js";
|
|
12
|
+
export { getContextSymbol } from "./forge/descriptors.js";
|
|
13
|
+
export { createKernel } from "./kernel/kernel.js";
|
|
14
|
+
export {
|
|
15
|
+
createInMemoryDriver,
|
|
16
|
+
inMemoryDriver,
|
|
17
|
+
namespaced,
|
|
18
|
+
} from "./ports/memory.js";
|
|
19
|
+
export { FakeTextMeasurer } from "./ports/text-fake.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../ports/memory.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export * from "../ports/memory.js";
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PersistenceDriver } from "./persistence.js";
|
|
2
|
+
export declare function createInMemoryDriver(): PersistenceDriver;
|
|
3
|
+
export declare const inMemoryDriver: PersistenceDriver;
|
|
4
|
+
export declare function namespaced(
|
|
5
|
+
driver: PersistenceDriver,
|
|
6
|
+
prefix: string,
|
|
7
|
+
): PersistenceDriver;
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export function createInMemoryDriver() {
|
|
2
|
+
const store = new Map();
|
|
3
|
+
return {
|
|
4
|
+
get: (key) => store.get(key) ?? null,
|
|
5
|
+
set: (key, value) => {
|
|
6
|
+
store.set(key, value);
|
|
7
|
+
},
|
|
8
|
+
remove: (key) => {
|
|
9
|
+
store.delete(key);
|
|
10
|
+
},
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export const inMemoryDriver = createInMemoryDriver();
|
|
14
|
+
export function namespaced(driver, prefix) {
|
|
15
|
+
return {
|
|
16
|
+
get: (key) => driver.get(`${prefix}${key}`),
|
|
17
|
+
set: (key, value) => driver.set(`${prefix}${key}`, value),
|
|
18
|
+
remove: (key) => driver.remove(`${prefix}${key}`),
|
|
19
|
+
};
|
|
20
|
+
}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
LayoutCursor,
|
|
3
|
+
LayoutLine,
|
|
4
|
+
LayoutLineRange,
|
|
5
|
+
LayoutLinesResult,
|
|
6
|
+
LineStats,
|
|
7
|
+
PreparedRichInline,
|
|
8
|
+
PreparedText,
|
|
9
|
+
PreparedTextWithSegments,
|
|
10
|
+
PrepareOptions,
|
|
11
|
+
RichInlineCursor,
|
|
12
|
+
RichInlineItem,
|
|
13
|
+
RichInlineLine,
|
|
14
|
+
RichInlineLineRange,
|
|
15
|
+
RichInlineStats,
|
|
16
|
+
TextMeasurer,
|
|
17
|
+
} from "./text.js";
|
|
18
|
+
export declare class FakeTextMeasurer implements TextMeasurer {
|
|
19
|
+
prepare(text: string, font: string, options?: PrepareOptions): PreparedText;
|
|
20
|
+
prepareWithSegments(
|
|
21
|
+
text: string,
|
|
22
|
+
font: string,
|
|
23
|
+
options?: PrepareOptions,
|
|
24
|
+
): PreparedTextWithSegments;
|
|
25
|
+
layout(
|
|
26
|
+
prepared: PreparedText,
|
|
27
|
+
maxWidth: number,
|
|
28
|
+
lineHeight: number,
|
|
29
|
+
): {
|
|
30
|
+
lineCount: number;
|
|
31
|
+
height: number;
|
|
32
|
+
};
|
|
33
|
+
materializeLineRange(
|
|
34
|
+
prepared: PreparedTextWithSegments,
|
|
35
|
+
line: LayoutLineRange,
|
|
36
|
+
): LayoutLine;
|
|
37
|
+
walkLineRanges(
|
|
38
|
+
prepared: PreparedTextWithSegments,
|
|
39
|
+
maxWidth: number,
|
|
40
|
+
onLine: (line: LayoutLineRange) => void,
|
|
41
|
+
): number;
|
|
42
|
+
measureLineStats(
|
|
43
|
+
prepared: PreparedTextWithSegments,
|
|
44
|
+
maxWidth: number,
|
|
45
|
+
): LineStats;
|
|
46
|
+
measureNaturalWidth(prepared: PreparedTextWithSegments): number;
|
|
47
|
+
layoutNextLine(
|
|
48
|
+
prepared: PreparedTextWithSegments,
|
|
49
|
+
start: LayoutCursor,
|
|
50
|
+
maxWidth: number,
|
|
51
|
+
): LayoutLine | null;
|
|
52
|
+
layoutNextLineRange(
|
|
53
|
+
prepared: PreparedTextWithSegments,
|
|
54
|
+
start: LayoutCursor,
|
|
55
|
+
maxWidth: number,
|
|
56
|
+
): LayoutLineRange | null;
|
|
57
|
+
layoutWithLines(
|
|
58
|
+
prepared: PreparedTextWithSegments,
|
|
59
|
+
maxWidth: number,
|
|
60
|
+
lineHeight: number,
|
|
61
|
+
): LayoutLinesResult;
|
|
62
|
+
clearCache(): void;
|
|
63
|
+
setLocale(_locale?: string): void;
|
|
64
|
+
prepareRichInline(items: RichInlineItem[]): PreparedRichInline;
|
|
65
|
+
layoutNextRichInlineLineRange(
|
|
66
|
+
prepared: PreparedRichInline,
|
|
67
|
+
maxWidth: number,
|
|
68
|
+
start?: RichInlineCursor,
|
|
69
|
+
): RichInlineLineRange | null;
|
|
70
|
+
materializeRichInlineLineRange(
|
|
71
|
+
prepared: PreparedRichInline,
|
|
72
|
+
line: RichInlineLineRange,
|
|
73
|
+
): RichInlineLine;
|
|
74
|
+
walkRichInlineLineRanges(
|
|
75
|
+
prepared: PreparedRichInline,
|
|
76
|
+
maxWidth: number,
|
|
77
|
+
onLine: (line: RichInlineLineRange) => void,
|
|
78
|
+
): number;
|
|
79
|
+
measureRichInlineStats(
|
|
80
|
+
prepared: PreparedRichInline,
|
|
81
|
+
maxWidth: number,
|
|
82
|
+
): RichInlineStats;
|
|
83
|
+
}
|