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
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Fernando Bryan Reza Campos
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
<h1 align="center">
|
|
2
|
+
<img src="https://raw.githubusercontent.com/Yrrrrrf/rune-lab/refs/heads/main/apps/lab/src/lib/assets/img/rune.png" alt="Rune Lab Icon" width="128" height="128" description="Icon representing the Svelte Runes system">
|
|
3
|
+
<div align="center">Rune Lab</div>
|
|
4
|
+
</h1>
|
|
5
|
+
|
|
6
|
+
<div align="center">
|
|
7
|
+
|
|
8
|
+
[](https://jsr.io/@yrrrrrf/rune-lab)
|
|
9
|
+
[](https://www.npmjs.com/package/rune-lab)
|
|
10
|
+
[](https://github.com/Yrrrrrf/rune-lab)
|
|
11
|
+
[](https://choosealicense.com/licenses/mit/)
|
|
12
|
+
|
|
13
|
+
</div>
|
|
14
|
+
|
|
15
|
+
## Overview
|
|
16
|
+
|
|
17
|
+
**Rune Lab** is a modern, extensible **plugin-based UI shell** for **Svelte 5**
|
|
18
|
+
applications. Harnessing the power of Svelte's new **Runes** system, it provides
|
|
19
|
+
a complete application skeleton with layout management, dynamic theming, i18n,
|
|
20
|
+
keyboard shortcuts, a command palette, toast notifications, and currency
|
|
21
|
+
controls.
|
|
22
|
+
|
|
23
|
+
Everything is wired through a centralized **Provider + Registry + Context**
|
|
24
|
+
architecture, ensuring clean dependency injection and state isolation across
|
|
25
|
+
your app.
|
|
26
|
+
|
|
27
|
+
## Installation
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
npm install rune-lab
|
|
31
|
+
# or
|
|
32
|
+
bun install rune-lab
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## Setup & Quick Start
|
|
36
|
+
|
|
37
|
+
Configure your application layout with the plugins. Here is what you need to set
|
|
38
|
+
up in your root `+layout.svelte`:
|
|
39
|
+
|
|
40
|
+
```svelte
|
|
41
|
+
<script lang="ts">
|
|
42
|
+
import "./layout.css";
|
|
43
|
+
import { RuneProvider, version } from "rune-lab";
|
|
44
|
+
import { I18nPlugin } from "rune-lab/i18n";
|
|
45
|
+
import { LayoutPlugin } from "rune-lab/layout";
|
|
46
|
+
import { PalettesPlugin } from "rune-lab/palettes";
|
|
47
|
+
import type { Snippet } from "svelte";
|
|
48
|
+
import AppLayout from "./AppLayout.svelte";
|
|
49
|
+
|
|
50
|
+
import faviconUrl from "$lib/static/img/rune.png";
|
|
51
|
+
|
|
52
|
+
let { children }: { children: Snippet } = $props();
|
|
53
|
+
</script>
|
|
54
|
+
|
|
55
|
+
<RuneProvider
|
|
56
|
+
config={{
|
|
57
|
+
favicon: faviconUrl,
|
|
58
|
+
icons: "material",
|
|
59
|
+
app: {
|
|
60
|
+
name: "Rune Lab",
|
|
61
|
+
version: version(),
|
|
62
|
+
description: "Plugin test bench",
|
|
63
|
+
author: "Yrrrrrf",
|
|
64
|
+
},
|
|
65
|
+
// Namespaced per-plugin config
|
|
66
|
+
"rune-lab.layout": "dark",
|
|
67
|
+
}}
|
|
68
|
+
plugins={[LayoutPlugin, PalettesPlugin, I18nPlugin]}
|
|
69
|
+
>
|
|
70
|
+
<AppLayout>
|
|
71
|
+
{@render children()}
|
|
72
|
+
</AppLayout>
|
|
73
|
+
</RuneProvider>
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## Plugins
|
|
77
|
+
|
|
78
|
+
Rune Lab is modular. Plugins are documented in their respective directories:
|
|
79
|
+
|
|
80
|
+
- **Layout Plugin (`rune-lab/layout`)**:
|
|
81
|
+
- **Palettes Plugin (`rune-lab/palettes`)**:
|
|
82
|
+
- **i18n Plugin (`rune-lab/i18n`)**:
|
|
83
|
+
|
|
84
|
+
## License
|
|
85
|
+
|
|
86
|
+
MIT License - See [LICENSE](LICENSE) for details.
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { SubscriptionRef } from "effect";
|
|
2
|
+
export declare class StateCell<T> {
|
|
3
|
+
ref: SubscriptionRef.SubscriptionRef<T>;
|
|
4
|
+
version: number;
|
|
5
|
+
private listeners;
|
|
6
|
+
constructor(ref: SubscriptionRef.SubscriptionRef<T>);
|
|
7
|
+
get(): T;
|
|
8
|
+
set(value: T): void;
|
|
9
|
+
getVersion(): number;
|
|
10
|
+
subscribe(listener: () => void): () => void;
|
|
11
|
+
private pendingNotify;
|
|
12
|
+
notify(): void;
|
|
13
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { Effect, SubscriptionRef } from "effect";
|
|
2
|
+
export class StateCell {
|
|
3
|
+
ref;
|
|
4
|
+
version = 0;
|
|
5
|
+
listeners = new Set();
|
|
6
|
+
constructor(ref) {
|
|
7
|
+
this.ref = ref;
|
|
8
|
+
}
|
|
9
|
+
get() {
|
|
10
|
+
return Effect.runSync(SubscriptionRef.get(this.ref));
|
|
11
|
+
}
|
|
12
|
+
set(value) {
|
|
13
|
+
Effect.runSync(SubscriptionRef.set(this.ref, value));
|
|
14
|
+
}
|
|
15
|
+
getVersion() {
|
|
16
|
+
return this.version;
|
|
17
|
+
}
|
|
18
|
+
subscribe(listener) {
|
|
19
|
+
this.listeners.add(listener);
|
|
20
|
+
return () => {
|
|
21
|
+
this.listeners.delete(listener);
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
pendingNotify = false;
|
|
25
|
+
notify() {
|
|
26
|
+
this.version++;
|
|
27
|
+
if (this.pendingNotify) {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
this.pendingNotify = true;
|
|
31
|
+
queueMicrotask(() => {
|
|
32
|
+
this.pendingNotify = false;
|
|
33
|
+
for (const listener of this.listeners) {
|
|
34
|
+
try {
|
|
35
|
+
listener();
|
|
36
|
+
} catch (e) {
|
|
37
|
+
console.error(`[StateCell] Listener error:`, e);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
import type { PersistenceHandle } from "../forge/descriptors.js";
|
|
3
|
+
import { StateCell } from "./define-cell.js";
|
|
4
|
+
export declare function createPersistedCell<T, TEncoded = T>(
|
|
5
|
+
schema: Schema.Schema<T, TEncoded, never>,
|
|
6
|
+
handle: PersistenceHandle,
|
|
7
|
+
initialValue: T,
|
|
8
|
+
key?: string,
|
|
9
|
+
): StateCell<T>;
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Effect, Schema, SubscriptionRef } from "effect";
|
|
2
|
+
import { StateCell } from "./define-cell.js";
|
|
3
|
+
export function createPersistedCell(schema, handle, initialValue, key = "") {
|
|
4
|
+
const ref = SubscriptionRef.make(initialValue).pipe(Effect.runSync);
|
|
5
|
+
const cell = new StateCell(ref);
|
|
6
|
+
const applyValue = (val) => {
|
|
7
|
+
if (val !== null && val !== undefined) {
|
|
8
|
+
try {
|
|
9
|
+
const parsed = JSON.parse(val);
|
|
10
|
+
const decoded = Schema.decodeUnknownSync(schema)(parsed);
|
|
11
|
+
cell.set(decoded);
|
|
12
|
+
} catch {
|
|
13
|
+
try {
|
|
14
|
+
const decoded = Schema.decodeUnknownSync(schema)(val);
|
|
15
|
+
cell.set(decoded);
|
|
16
|
+
} catch {
|
|
17
|
+
// ignore decoding errors, keep initial value
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
const saved = handle.get(key);
|
|
23
|
+
if (saved instanceof Promise) {
|
|
24
|
+
saved.then(applyValue).catch(() => {});
|
|
25
|
+
} else {
|
|
26
|
+
applyValue(saved);
|
|
27
|
+
}
|
|
28
|
+
const originalSet = cell.set.bind(cell);
|
|
29
|
+
cell.set = (value) => {
|
|
30
|
+
const oldValue = cell.get();
|
|
31
|
+
originalSet(value);
|
|
32
|
+
try {
|
|
33
|
+
const encoded = Schema.encodeSync(schema)(value);
|
|
34
|
+
const stringValue =
|
|
35
|
+
typeof encoded === "string" ? encoded : JSON.stringify(encoded);
|
|
36
|
+
const res = handle.set(key, stringValue);
|
|
37
|
+
if (res instanceof Promise) {
|
|
38
|
+
return res.catch((e) => {
|
|
39
|
+
originalSet(oldValue);
|
|
40
|
+
console.error(
|
|
41
|
+
`[PersistedCell] Failed to save value (reverted to old value):`,
|
|
42
|
+
e,
|
|
43
|
+
);
|
|
44
|
+
throw e;
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
} catch (e) {
|
|
48
|
+
originalSet(oldValue);
|
|
49
|
+
console.error(
|
|
50
|
+
`[PersistedCell] Failed to save value (reverted to old value):`,
|
|
51
|
+
e,
|
|
52
|
+
);
|
|
53
|
+
throw e;
|
|
54
|
+
}
|
|
55
|
+
};
|
|
56
|
+
return cell;
|
|
57
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { PersistenceDriver } from "../ports/persistence.js";
|
|
2
|
+
export type ConfigStore<T, K extends keyof T = keyof T> = {
|
|
3
|
+
current: T[K];
|
|
4
|
+
available: T[];
|
|
5
|
+
set(id: T[K]): void;
|
|
6
|
+
get(id: T[K]): T | undefined;
|
|
7
|
+
getProp<P extends keyof T>(prop: P, id?: T[K]): T[P] | undefined;
|
|
8
|
+
addItems(newItems: T[]): void;
|
|
9
|
+
onChange: (cb: (newId: T[K], oldId: T[K]) => void) => () => void;
|
|
10
|
+
setDriver: (driver: PersistenceDriver) => void;
|
|
11
|
+
};
|
|
12
|
+
export interface ConfigStoreOptions<T, K extends keyof T = keyof T> {
|
|
13
|
+
items: readonly T[];
|
|
14
|
+
storageKey: string;
|
|
15
|
+
displayName: string;
|
|
16
|
+
idKey: K;
|
|
17
|
+
icon?: string;
|
|
18
|
+
driver?: PersistenceDriver;
|
|
19
|
+
}
|
|
20
|
+
export declare class ConfigStoreImpl<T, K extends keyof T> {
|
|
21
|
+
#private;
|
|
22
|
+
current: T[K];
|
|
23
|
+
available: T[];
|
|
24
|
+
constructor(options: ConfigStoreOptions<T, K>);
|
|
25
|
+
setDriver(driver: PersistenceDriver): void;
|
|
26
|
+
set(id: T[K]): void;
|
|
27
|
+
onChange(cb: (newId: T[K], oldId: T[K]) => void): () => void;
|
|
28
|
+
get(id: T[K]): T | undefined;
|
|
29
|
+
getProp<P extends keyof T>(prop: P, id?: T[K]): T[P] | undefined;
|
|
30
|
+
addItems(newItems: T[]): void;
|
|
31
|
+
}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { createInMemoryDriver } from "../persistence/memory.js";
|
|
2
|
+
export class ConfigStoreImpl {
|
|
3
|
+
current = null;
|
|
4
|
+
available = [];
|
|
5
|
+
#options;
|
|
6
|
+
#driver;
|
|
7
|
+
#callbacks = new Set();
|
|
8
|
+
constructor(options) {
|
|
9
|
+
this.#options = options;
|
|
10
|
+
const { items, idKey, driver = createInMemoryDriver() } = options;
|
|
11
|
+
this.#driver = driver;
|
|
12
|
+
this.available = [...items];
|
|
13
|
+
this.current = items[0][idKey];
|
|
14
|
+
this.#loadFromDriver(this.#driver);
|
|
15
|
+
}
|
|
16
|
+
#loadFromDriver(driver) {
|
|
17
|
+
const saved = driver.get(this.#options.storageKey);
|
|
18
|
+
if (saved instanceof Promise) {
|
|
19
|
+
saved
|
|
20
|
+
.then((val) => {
|
|
21
|
+
if (val && this.get(val)) {
|
|
22
|
+
const old = this.current;
|
|
23
|
+
this.current = val;
|
|
24
|
+
this.#notify(val, old);
|
|
25
|
+
}
|
|
26
|
+
})
|
|
27
|
+
.catch(() => {});
|
|
28
|
+
} else if (saved && this.get(saved)) {
|
|
29
|
+
this.current = saved;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
setDriver(driver) {
|
|
33
|
+
this.#driver = driver;
|
|
34
|
+
this.#loadFromDriver(driver);
|
|
35
|
+
}
|
|
36
|
+
set(id) {
|
|
37
|
+
const item = this.get(id);
|
|
38
|
+
if (!item) {
|
|
39
|
+
console.warn(`${this.#options.displayName} "${id}" not found`);
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
const old = this.current;
|
|
43
|
+
this.current = id;
|
|
44
|
+
this.#driver.set(this.#options.storageKey, String(id));
|
|
45
|
+
this.#notify(id, old);
|
|
46
|
+
}
|
|
47
|
+
#notify(newId, oldId) {
|
|
48
|
+
this.#callbacks.forEach((cb) => {
|
|
49
|
+
try {
|
|
50
|
+
cb(newId, oldId);
|
|
51
|
+
} catch (err) {
|
|
52
|
+
console.error(
|
|
53
|
+
`[rune-lab/core] Error in ${this.#options.displayName} onChange callback:`,
|
|
54
|
+
err,
|
|
55
|
+
);
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
onChange(cb) {
|
|
60
|
+
this.#callbacks.add(cb);
|
|
61
|
+
return () => this.#callbacks.delete(cb);
|
|
62
|
+
}
|
|
63
|
+
get(id) {
|
|
64
|
+
const idKey = this.#options.idKey;
|
|
65
|
+
return this.available.find((item) => item[idKey] === id);
|
|
66
|
+
}
|
|
67
|
+
getProp(prop, id) {
|
|
68
|
+
const targetId = id ?? this.current;
|
|
69
|
+
return this.get(targetId)?.[prop];
|
|
70
|
+
}
|
|
71
|
+
addItems(newItems) {
|
|
72
|
+
const idKey = this.#options.idKey;
|
|
73
|
+
for (const item of newItems) {
|
|
74
|
+
if (!this.get(item[idKey])) {
|
|
75
|
+
this.available.push(item);
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export interface ContributionKey<T> {
|
|
2
|
+
readonly id: string;
|
|
3
|
+
readonly __brand?: T;
|
|
4
|
+
}
|
|
5
|
+
export interface ContributionEntry<T = unknown> {
|
|
6
|
+
readonly key: ContributionKey<T>;
|
|
7
|
+
readonly items: T[];
|
|
8
|
+
}
|
|
9
|
+
export declare function defineContribution<T>(id: string): ContributionKey<T>;
|
|
10
|
+
export declare function contribute<T>(
|
|
11
|
+
key: ContributionKey<T>,
|
|
12
|
+
...items: T[]
|
|
13
|
+
): ContributionEntry<T>;
|
|
14
|
+
export interface SettingsSectionContribution {
|
|
15
|
+
id: string;
|
|
16
|
+
label: string;
|
|
17
|
+
icon?: string;
|
|
18
|
+
fields?: unknown[];
|
|
19
|
+
component?: unknown;
|
|
20
|
+
}
|
|
21
|
+
export declare const settingsSections: ContributionKey<SettingsSectionContribution>;
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ContributionEntry } from "./define-contribution.js";
|
|
2
|
+
import type { SettingsSchema } from "./define-settings.js";
|
|
3
|
+
import type { BaseSlotSpec } from "./define-slot.js";
|
|
4
|
+
import { type SlotDescriptor } from "./descriptors.js";
|
|
5
|
+
export interface ForgedPlugin<
|
|
6
|
+
TId extends string = string,
|
|
7
|
+
TSlots extends Record<string, BaseSlotSpec> = Record<string, BaseSlotSpec>,
|
|
8
|
+
> {
|
|
9
|
+
id: TId;
|
|
10
|
+
requires?: string[];
|
|
11
|
+
slots: TSlots;
|
|
12
|
+
settings?: SettingsSchema;
|
|
13
|
+
overlays?: unknown[];
|
|
14
|
+
contributions?: ContributionEntry<unknown>[];
|
|
15
|
+
descriptors: Record<keyof TSlots, SlotDescriptor>;
|
|
16
|
+
}
|
|
17
|
+
export type PluginInput =
|
|
18
|
+
| ForgedPlugin<string, Record<string, BaseSlotSpec>>
|
|
19
|
+
| PluginInput[]
|
|
20
|
+
| null
|
|
21
|
+
| undefined
|
|
22
|
+
| boolean;
|
|
23
|
+
export declare function definePlugin<
|
|
24
|
+
TId extends string,
|
|
25
|
+
TSlots extends Record<string, BaseSlotSpec>,
|
|
26
|
+
>(spec: {
|
|
27
|
+
id: TId;
|
|
28
|
+
requires?: string[];
|
|
29
|
+
slots?: TSlots;
|
|
30
|
+
settings?: SettingsSchema;
|
|
31
|
+
overlays?: unknown[];
|
|
32
|
+
contributions?: ContributionEntry<unknown>[];
|
|
33
|
+
}): ForgedPlugin<TId, TSlots>;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { getAccessorName, getContextSymbol } from "./descriptors.js";
|
|
2
|
+
export function definePlugin(spec) {
|
|
3
|
+
const slots = spec.slots || {};
|
|
4
|
+
const descriptors = {};
|
|
5
|
+
for (const slotName of Object.keys(slots)) {
|
|
6
|
+
descriptors[slotName] = {
|
|
7
|
+
slotName,
|
|
8
|
+
contextKey: getContextSymbol(spec.id, slotName),
|
|
9
|
+
accessorName: getAccessorName(slotName),
|
|
10
|
+
};
|
|
11
|
+
}
|
|
12
|
+
return {
|
|
13
|
+
id: spec.id,
|
|
14
|
+
requires: spec.requires,
|
|
15
|
+
slots: slots,
|
|
16
|
+
settings: spec.settings,
|
|
17
|
+
overlays: spec.overlays,
|
|
18
|
+
contributions: spec.contributions,
|
|
19
|
+
descriptors: descriptors,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
export interface SettingsFieldSchema {
|
|
2
|
+
id: string;
|
|
3
|
+
label: string;
|
|
4
|
+
type: "select" | "toggle" | "text" | "number" | "range" | "color" | "custom";
|
|
5
|
+
component?: unknown;
|
|
6
|
+
options?: {
|
|
7
|
+
value: unknown;
|
|
8
|
+
label: string;
|
|
9
|
+
}[];
|
|
10
|
+
min?: number;
|
|
11
|
+
max?: number;
|
|
12
|
+
step?: number;
|
|
13
|
+
target:
|
|
14
|
+
| {
|
|
15
|
+
type: "cell";
|
|
16
|
+
name: string;
|
|
17
|
+
}
|
|
18
|
+
| {
|
|
19
|
+
type: "store";
|
|
20
|
+
storeId: string;
|
|
21
|
+
property: string;
|
|
22
|
+
}
|
|
23
|
+
| {
|
|
24
|
+
type: "callback";
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
export interface SettingsSchema {
|
|
28
|
+
id: string;
|
|
29
|
+
label: string;
|
|
30
|
+
icon?: string;
|
|
31
|
+
fields: SettingsFieldSchema[];
|
|
32
|
+
}
|
|
33
|
+
export declare function defineSettings(schema: SettingsSchema): SettingsSchema;
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { Schema } from "effect";
|
|
2
|
+
|
|
3
|
+
const TargetSchema = Schema.Union(
|
|
4
|
+
Schema.Struct({
|
|
5
|
+
type: Schema.Literal("cell"),
|
|
6
|
+
name: Schema.String,
|
|
7
|
+
}),
|
|
8
|
+
Schema.Struct({
|
|
9
|
+
type: Schema.Literal("store"),
|
|
10
|
+
storeId: Schema.String,
|
|
11
|
+
property: Schema.String,
|
|
12
|
+
}),
|
|
13
|
+
Schema.Struct({
|
|
14
|
+
type: Schema.Literal("callback"),
|
|
15
|
+
}),
|
|
16
|
+
);
|
|
17
|
+
const SettingsFieldSchemaStruct = Schema.Struct({
|
|
18
|
+
id: Schema.String,
|
|
19
|
+
label: Schema.String,
|
|
20
|
+
type: Schema.Literal(
|
|
21
|
+
"select",
|
|
22
|
+
"toggle",
|
|
23
|
+
"text",
|
|
24
|
+
"number",
|
|
25
|
+
"range",
|
|
26
|
+
"color",
|
|
27
|
+
"custom",
|
|
28
|
+
),
|
|
29
|
+
component: Schema.optional(Schema.Any),
|
|
30
|
+
options: Schema.optional(
|
|
31
|
+
Schema.Array(
|
|
32
|
+
Schema.Struct({
|
|
33
|
+
value: Schema.Any,
|
|
34
|
+
label: Schema.String,
|
|
35
|
+
}),
|
|
36
|
+
),
|
|
37
|
+
),
|
|
38
|
+
min: Schema.optional(Schema.Number),
|
|
39
|
+
max: Schema.optional(Schema.Number),
|
|
40
|
+
step: Schema.optional(Schema.Number),
|
|
41
|
+
target: TargetSchema,
|
|
42
|
+
});
|
|
43
|
+
const SettingsSchemaStruct = Schema.Struct({
|
|
44
|
+
id: Schema.String,
|
|
45
|
+
label: Schema.String,
|
|
46
|
+
icon: Schema.optional(Schema.String),
|
|
47
|
+
fields: Schema.Array(SettingsFieldSchemaStruct),
|
|
48
|
+
});
|
|
49
|
+
export function defineSettings(schema) {
|
|
50
|
+
const validated = Schema.decodeUnknownSync(SettingsSchemaStruct)(schema);
|
|
51
|
+
return Object.freeze(validated);
|
|
52
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { Schema } from "effect";
|
|
2
|
+
import type { LocaleAdapter } from "../ports/locale.js";
|
|
3
|
+
import type { TextMeasurer } from "../ports/text.js";
|
|
4
|
+
import type { PersistenceHandle } from "./descriptors.js";
|
|
5
|
+
export interface SlotContext<TConfig = unknown> {
|
|
6
|
+
config: TConfig;
|
|
7
|
+
persistence: PersistenceHandle;
|
|
8
|
+
stores: Map<string, unknown>;
|
|
9
|
+
locale?: LocaleAdapter;
|
|
10
|
+
textMeasurer?: TextMeasurer;
|
|
11
|
+
}
|
|
12
|
+
export interface BaseSlotSpec {
|
|
13
|
+
create(context: SlotContext<unknown>): unknown;
|
|
14
|
+
config?: unknown;
|
|
15
|
+
persist?: boolean | string[];
|
|
16
|
+
dependsOn?: string[];
|
|
17
|
+
expose?: boolean;
|
|
18
|
+
contextKey?: never;
|
|
19
|
+
}
|
|
20
|
+
export interface SlotSpec<
|
|
21
|
+
TConfig = unknown,
|
|
22
|
+
TStore = unknown,
|
|
23
|
+
TEncoded = TConfig,
|
|
24
|
+
> extends BaseSlotSpec {
|
|
25
|
+
create(context: SlotContext<TConfig>): TStore;
|
|
26
|
+
config?: Schema.Schema<TConfig, TEncoded, never>;
|
|
27
|
+
persist?: boolean | string[];
|
|
28
|
+
dependsOn?: string[];
|
|
29
|
+
expose?: boolean;
|
|
30
|
+
contextKey?: never;
|
|
31
|
+
}
|
|
32
|
+
export declare function defineSlot<TConfig, TStore, TEncoded = TConfig>(
|
|
33
|
+
spec: SlotSpec<TConfig, TStore, TEncoded>,
|
|
34
|
+
): SlotSpec<TConfig, TStore, TEncoded>;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface SlotDescriptor {
|
|
2
|
+
slotName: string;
|
|
3
|
+
contextKey: symbol;
|
|
4
|
+
accessorName: string;
|
|
5
|
+
}
|
|
6
|
+
export interface PersistenceHandle {
|
|
7
|
+
get(key: string): string | null | Promise<string | null>;
|
|
8
|
+
set(key: string, value: string): void | Promise<void>;
|
|
9
|
+
remove(key: string): void | Promise<void>;
|
|
10
|
+
}
|
|
11
|
+
export declare function getAccessorName(slotName: string): string;
|
|
12
|
+
export declare function getContextSymbol(
|
|
13
|
+
pluginId: string,
|
|
14
|
+
slotName: string,
|
|
15
|
+
): symbol;
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export function getAccessorName(slotName) {
|
|
2
|
+
if (!slotName) {
|
|
3
|
+
return "";
|
|
4
|
+
}
|
|
5
|
+
return `get${slotName.charAt(0).toUpperCase()}${slotName.slice(1)}Store`;
|
|
6
|
+
}
|
|
7
|
+
export function getContextSymbol(pluginId, slotName) {
|
|
8
|
+
return Symbol.for(`rl:${pluginId}:${slotName}`);
|
|
9
|
+
}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import { type ContributionKey } from "../forge/define-contribution.js";
|
|
2
|
+
import type { PluginInput } from "../forge/define-plugin.js";
|
|
3
|
+
import type { LocaleAdapter } from "../ports/locale.js";
|
|
4
|
+
import type { PersistenceDriver } from "../ports/persistence.js";
|
|
5
|
+
import type { TextMeasurer } from "../ports/text.js";
|
|
6
|
+
export interface Kernel<TCells = Record<string, unknown>> {
|
|
7
|
+
stores: Map<string, unknown>;
|
|
8
|
+
overlays: unknown[];
|
|
9
|
+
getCell<K extends keyof TCells>(cellName: K): TCells[K];
|
|
10
|
+
setCell<K extends keyof TCells>(cellName: K, value: TCells[K]): Promise<void>;
|
|
11
|
+
subscribe(cellName: keyof TCells, listener: () => void): () => void;
|
|
12
|
+
getCellVersion(cellName: keyof TCells): number;
|
|
13
|
+
getContributions<T>(key: ContributionKey<T>): T[];
|
|
14
|
+
registerContribution<T>(key: ContributionKey<T>, item: T): void;
|
|
15
|
+
unregisterContribution<T>(key: ContributionKey<T>, id: string): void;
|
|
16
|
+
registerStore<T>(
|
|
17
|
+
key: ContributionKey<T>,
|
|
18
|
+
store: {
|
|
19
|
+
register(item: T): void;
|
|
20
|
+
},
|
|
21
|
+
): void;
|
|
22
|
+
getStoreEntry(id: string):
|
|
23
|
+
| {
|
|
24
|
+
contextKey?: symbol;
|
|
25
|
+
expose?: boolean;
|
|
26
|
+
}
|
|
27
|
+
| undefined;
|
|
28
|
+
dispose(): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
export declare function createKernel<TCells = Record<string, unknown>>(
|
|
31
|
+
pluginsInput: PluginInput[],
|
|
32
|
+
options: {
|
|
33
|
+
config: Record<string, unknown>;
|
|
34
|
+
persistence: PersistenceDriver;
|
|
35
|
+
localeAdapter?: LocaleAdapter;
|
|
36
|
+
textMeasurer?: TextMeasurer;
|
|
37
|
+
},
|
|
38
|
+
): Kernel<TCells>;
|