@saolabs/client 1.0.0 → 1.0.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/README.md +52 -195
- package/dist/index.d.ts +20 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -3
- package/dist/index.js.map +1 -1
- package/dist/plugins.d.ts +2 -2
- package/dist/plugins.js +2 -2
- package/dist/src/core/app/Application.d.ts +17 -15
- package/dist/src/core/app/Application.d.ts.map +1 -1
- package/dist/src/core/app/Application.js +41 -18
- package/dist/src/core/app/Application.js.map +1 -1
- package/dist/src/core/bootstrap/app.d.ts +1 -1
- package/dist/src/core/bootstrap/app.d.ts.map +1 -1
- package/dist/src/core/bootstrap/app.js +74 -4
- package/dist/src/core/bootstrap/app.js.map +1 -1
- package/dist/src/core/bootstrap/bundle.d.ts +41 -0
- package/dist/src/core/bootstrap/bundle.d.ts.map +1 -0
- package/dist/src/core/bootstrap/bundle.js +98 -0
- package/dist/src/core/bootstrap/bundle.js.map +1 -0
- package/dist/src/core/bootstrap/providers/ApiServiceProvider.d.ts +1 -1
- package/dist/src/core/bootstrap/providers/ApiServiceProvider.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/ApiServiceProvider.js +3 -3
- package/dist/src/core/bootstrap/providers/ApiServiceProvider.js.map +1 -1
- package/dist/src/core/bootstrap/providers/CoreServiceProvider.d.ts +1 -1
- package/dist/src/core/bootstrap/providers/CoreServiceProvider.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/CoreServiceProvider.js +11 -8
- package/dist/src/core/bootstrap/providers/CoreServiceProvider.js.map +1 -1
- package/dist/src/core/bootstrap/providers/HelperServiceProvider.d.ts +3 -1
- package/dist/src/core/bootstrap/providers/HelperServiceProvider.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/HelperServiceProvider.js +8 -3
- package/dist/src/core/bootstrap/providers/HelperServiceProvider.js.map +1 -1
- package/dist/src/core/bootstrap/providers/RouteServiceProvider.d.ts +2 -1
- package/dist/src/core/bootstrap/providers/RouteServiceProvider.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/RouteServiceProvider.js +14 -4
- package/dist/src/core/bootstrap/providers/RouteServiceProvider.js.map +1 -1
- package/dist/src/core/bootstrap/providers/ServiceProvider.d.ts +4 -4
- package/dist/src/core/bootstrap/providers/ServiceProvider.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/ServiceProvider.js +5 -5
- package/dist/src/core/bootstrap/providers/ServiceProvider.js.map +1 -1
- package/dist/src/core/bootstrap/providers/ViewServiceProvider.d.ts +1 -1
- package/dist/src/core/bootstrap/providers/ViewServiceProvider.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/ViewServiceProvider.js +3 -3
- package/dist/src/core/bootstrap/providers/ViewServiceProvider.js.map +1 -1
- package/dist/src/core/bootstrap/providers/default-providers.d.ts +1 -1
- package/dist/src/core/bootstrap/providers/default-providers.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/default-providers.js +44 -11
- package/dist/src/core/bootstrap/providers/default-providers.js.map +1 -1
- package/dist/src/core/bootstrap/providers/index.d.ts +9 -9
- package/dist/src/core/bootstrap/providers/index.d.ts.map +1 -1
- package/dist/src/core/bootstrap/providers/index.js +8 -8
- package/dist/src/core/bootstrap/providers/index.js.map +1 -1
- package/dist/src/core/bootstrap/providers/provider-order.d.ts +1 -1
- package/dist/src/core/bootstrap/providers/provider-order.d.ts.map +1 -1
- package/dist/src/core/bootstrap/ssr.d.ts +47 -0
- package/dist/src/core/bootstrap/ssr.d.ts.map +1 -0
- package/dist/src/core/bootstrap/ssr.js +125 -0
- package/dist/src/core/bootstrap/ssr.js.map +1 -0
- package/dist/src/core/cache/ViewCache.d.ts +1 -1
- package/dist/src/core/cache/ViewCache.d.ts.map +1 -1
- package/dist/src/core/cache/index.d.ts +1 -1
- package/dist/src/core/cache/index.d.ts.map +1 -1
- package/dist/src/core/cache/index.js +1 -1
- package/dist/src/core/cache/index.js.map +1 -1
- package/dist/src/core/contracts/ApplicationInterface.d.ts +13 -11
- package/dist/src/core/contracts/ApplicationInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/BlockInterface.d.ts +10 -10
- package/dist/src/core/contracts/BlockInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/BundleInterface.d.ts +38 -0
- package/dist/src/core/contracts/BundleInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/BundleInterface.js +2 -0
- package/dist/src/core/contracts/BundleInterface.js.map +1 -0
- package/dist/src/core/contracts/ComponentInterface.d.ts +7 -6
- package/dist/src/core/contracts/ComponentInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/ElementInterface.d.ts +91 -27
- package/dist/src/core/contracts/ElementInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/HeadServiceInterface.d.ts +37 -0
- package/dist/src/core/contracts/HeadServiceInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/HeadServiceInterface.js +3 -0
- package/dist/src/core/contracts/HeadServiceInterface.js.map +1 -0
- package/dist/src/core/contracts/HelperInterface.d.ts +9 -1
- package/dist/src/core/contracts/HelperInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/HttpServiceInterface.d.ts +3 -0
- package/dist/src/core/contracts/HttpServiceInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/MarkerInterface.d.ts +29 -44
- package/dist/src/core/contracts/MarkerInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/ReactiveInterface.d.ts +9 -9
- package/dist/src/core/contracts/ReactiveInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/RouterInterface.d.ts +5 -2
- package/dist/src/core/contracts/RouterInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/SectionInterface.d.ts +48 -0
- package/dist/src/core/contracts/SectionInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/SectionInterface.js +2 -0
- package/dist/src/core/contracts/SectionInterface.js.map +1 -0
- package/dist/src/core/contracts/ServiceProviderInterface.d.ts +3 -3
- package/dist/src/core/contracts/ServiceProviderInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/ViewControllerInterface.d.ts +116 -15
- package/dist/src/core/contracts/ViewControllerInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/ViewInterface.d.ts +31 -5
- package/dist/src/core/contracts/ViewInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/ViewManagerInterface.d.ts +47 -5
- package/dist/src/core/contracts/ViewManagerInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/ViewStateInterface.d.ts +39 -2
- package/dist/src/core/contracts/ViewStateInterface.d.ts.map +1 -1
- package/dist/src/core/contracts/common.d.ts +3 -3
- package/dist/src/core/contracts/common.js +3 -3
- package/dist/src/core/contracts/utils.d.ts +19 -19
- package/dist/src/core/contracts/utils.d.ts.map +1 -1
- package/dist/src/core/contracts/views.d.ts +1 -22
- package/dist/src/core/contracts/views.d.ts.map +1 -1
- package/dist/src/core/devtools/hook.d.ts +66 -0
- package/dist/src/core/devtools/hook.d.ts.map +1 -0
- package/dist/src/core/devtools/hook.js +114 -0
- package/dist/src/core/devtools/hook.js.map +1 -0
- package/dist/src/core/devtools/index.d.ts +34 -0
- package/dist/src/core/devtools/index.d.ts.map +1 -0
- package/dist/src/core/devtools/index.js +33 -0
- package/dist/src/core/devtools/index.js.map +1 -0
- package/dist/src/core/devtools/inspector.d.ts +31 -0
- package/dist/src/core/devtools/inspector.d.ts.map +1 -0
- package/dist/src/core/devtools/inspector.js +249 -0
- package/dist/src/core/devtools/inspector.js.map +1 -0
- package/dist/src/core/elements/Block.d.ts +9 -7
- package/dist/src/core/elements/Block.d.ts.map +1 -1
- package/dist/src/core/elements/Block.js +33 -9
- package/dist/src/core/elements/Block.js.map +1 -1
- package/dist/src/core/elements/BlockOutlet.d.ts +19 -8
- package/dist/src/core/elements/BlockOutlet.d.ts.map +1 -1
- package/dist/src/core/elements/BlockOutlet.js +57 -13
- package/dist/src/core/elements/BlockOutlet.js.map +1 -1
- package/dist/src/core/elements/Component.d.ts +83 -11
- package/dist/src/core/elements/Component.d.ts.map +1 -1
- package/dist/src/core/elements/Component.js +334 -13
- package/dist/src/core/elements/Component.js.map +1 -1
- package/dist/src/core/elements/ForeachSlotCache.d.ts +95 -0
- package/dist/src/core/elements/ForeachSlotCache.d.ts.map +1 -0
- package/dist/src/core/elements/ForeachSlotCache.js +149 -0
- package/dist/src/core/elements/ForeachSlotCache.js.map +1 -0
- package/dist/src/core/elements/Fragment.d.ts +19 -13
- package/dist/src/core/elements/Fragment.d.ts.map +1 -1
- package/dist/src/core/elements/Fragment.js +43 -20
- package/dist/src/core/elements/Fragment.js.map +1 -1
- package/dist/src/core/elements/Html.d.ts +89 -12
- package/dist/src/core/elements/Html.d.ts.map +1 -1
- package/dist/src/core/elements/Html.js +707 -106
- package/dist/src/core/elements/Html.js.map +1 -1
- package/dist/src/core/elements/Output.d.ts +34 -10
- package/dist/src/core/elements/Output.d.ts.map +1 -1
- package/dist/src/core/elements/Output.js +141 -26
- package/dist/src/core/elements/Output.js.map +1 -1
- package/dist/src/core/elements/Reactive.d.ts +85 -14
- package/dist/src/core/elements/Reactive.d.ts.map +1 -1
- package/dist/src/core/elements/Reactive.js +315 -41
- package/dist/src/core/elements/Reactive.js.map +1 -1
- package/dist/src/core/elements/TextElement.d.ts +11 -7
- package/dist/src/core/elements/TextElement.d.ts.map +1 -1
- package/dist/src/core/elements/TextElement.js +18 -11
- package/dist/src/core/elements/TextElement.js.map +1 -1
- package/dist/src/core/elements/Wrapper.d.ts +24 -13
- package/dist/src/core/elements/Wrapper.d.ts.map +1 -1
- package/dist/src/core/elements/Wrapper.js +65 -8
- package/dist/src/core/elements/Wrapper.js.map +1 -1
- package/dist/src/core/elements/Yield.d.ts +10 -9
- package/dist/src/core/elements/Yield.d.ts.map +1 -1
- package/dist/src/core/elements/Yield.js +31 -19
- package/dist/src/core/elements/Yield.js.map +1 -1
- package/dist/src/core/elements/helpers.d.ts +7 -7
- package/dist/src/core/elements/helpers.d.ts.map +1 -1
- package/dist/src/core/elements/helpers.js +4 -4
- package/dist/src/core/elements/index.d.ts +12 -11
- package/dist/src/core/elements/index.d.ts.map +1 -1
- package/dist/src/core/elements/index.js +12 -11
- package/dist/src/core/elements/index.js.map +1 -1
- package/dist/src/core/elements/reconcileChildren.d.ts +7 -0
- package/dist/src/core/elements/reconcileChildren.d.ts.map +1 -0
- package/dist/src/core/elements/reconcileChildren.js +74 -0
- package/dist/src/core/elements/reconcileChildren.js.map +1 -0
- package/dist/src/core/hellpers/utils.d.ts +2 -2
- package/dist/src/core/hellpers/utils.js +4 -4
- package/dist/src/core/helpers/ApiClient.d.ts +58 -0
- package/dist/src/core/helpers/ApiClient.d.ts.map +1 -0
- package/dist/src/core/helpers/ApiClient.js +131 -0
- package/dist/src/core/helpers/ApiClient.js.map +1 -0
- package/dist/src/core/helpers/app.d.ts +3 -0
- package/dist/src/core/helpers/app.d.ts.map +1 -0
- package/dist/src/core/helpers/app.js +63 -0
- package/dist/src/core/helpers/app.js.map +1 -0
- package/dist/src/core/helpers/transition.d.ts +34 -0
- package/dist/src/core/helpers/transition.d.ts.map +1 -0
- package/dist/src/core/helpers/transition.js +118 -0
- package/dist/src/core/helpers/transition.js.map +1 -0
- package/dist/src/core/helpers/utils.d.ts +26 -0
- package/dist/src/core/helpers/utils.d.ts.map +1 -0
- package/dist/src/core/helpers/utils.js +96 -0
- package/dist/src/core/helpers/utils.js.map +1 -0
- package/dist/src/core/helpers/view.d.ts +39 -0
- package/dist/src/core/helpers/view.d.ts.map +1 -0
- package/dist/src/core/helpers/view.js +286 -0
- package/dist/src/core/helpers/view.js.map +1 -0
- package/dist/src/core/routers/Router.d.ts +108 -7
- package/dist/src/core/routers/Router.d.ts.map +1 -1
- package/dist/src/core/routers/Router.js +444 -68
- package/dist/src/core/routers/Router.js.map +1 -1
- package/dist/src/core/routers/index.d.ts +2 -2
- package/dist/src/core/routers/index.d.ts.map +1 -1
- package/dist/src/core/routers/index.js +1 -1
- package/dist/src/core/routers/index.js.map +1 -1
- package/dist/src/core/services/AssetManager.d.ts +112 -0
- package/dist/src/core/services/AssetManager.d.ts.map +1 -0
- package/dist/src/core/services/AssetManager.js +361 -0
- package/dist/src/core/services/AssetManager.js.map +1 -0
- package/dist/src/core/services/BlockManager.d.ts +73 -2
- package/dist/src/core/services/BlockManager.d.ts.map +1 -1
- package/dist/src/core/services/BlockManager.js +270 -48
- package/dist/src/core/services/BlockManager.js.map +1 -1
- package/dist/src/core/services/DomService.js +3 -3
- package/dist/src/core/services/DomService.js.map +1 -1
- package/dist/src/core/services/HeadService.d.ts +24 -0
- package/dist/src/core/services/HeadService.d.ts.map +1 -0
- package/dist/src/core/services/HeadService.js +120 -0
- package/dist/src/core/services/HeadService.js.map +1 -0
- package/dist/src/core/services/HelperService.d.ts +14 -3
- package/dist/src/core/services/HelperService.d.ts.map +1 -1
- package/dist/src/core/services/HelperService.js +32 -2
- package/dist/src/core/services/HelperService.js.map +1 -1
- package/dist/src/core/services/HttpService.d.ts +8 -0
- package/dist/src/core/services/HttpService.d.ts.map +1 -1
- package/dist/src/core/services/HttpService.js +121 -47
- package/dist/src/core/services/HttpService.js.map +1 -1
- package/dist/src/core/services/MarkerRegistry.d.ts +51 -8
- package/dist/src/core/services/MarkerRegistry.d.ts.map +1 -1
- package/dist/src/core/services/MarkerRegistry.js +135 -14
- package/dist/src/core/services/MarkerRegistry.js.map +1 -1
- package/dist/src/core/services/PageCache.d.ts +101 -0
- package/dist/src/core/services/PageCache.d.ts.map +1 -0
- package/dist/src/core/services/PageCache.js +184 -0
- package/dist/src/core/services/PageCache.js.map +1 -0
- package/dist/src/core/services/SectionManager.d.ts +100 -0
- package/dist/src/core/services/SectionManager.d.ts.map +1 -0
- package/dist/src/core/services/SectionManager.js +408 -0
- package/dist/src/core/services/SectionManager.js.map +1 -0
- package/dist/src/core/services/StorageService.js +1 -1
- package/dist/src/core/services/TranslationService.d.ts +21 -0
- package/dist/src/core/services/TranslationService.d.ts.map +1 -0
- package/dist/src/core/services/TranslationService.js +95 -0
- package/dist/src/core/services/TranslationService.js.map +1 -0
- package/dist/src/core/services/index.d.ts +11 -8
- package/dist/src/core/services/index.d.ts.map +1 -1
- package/dist/src/core/services/index.js +11 -8
- package/dist/src/core/services/index.js.map +1 -1
- package/dist/src/core/types/utils.d.ts +8 -8
- package/dist/src/core/types/utils.d.ts.map +1 -1
- package/dist/src/core/view/LoopContext.d.ts +21 -1
- package/dist/src/core/view/LoopContext.d.ts.map +1 -1
- package/dist/src/core/view/LoopContext.js +36 -0
- package/dist/src/core/view/LoopContext.js.map +1 -1
- package/dist/src/core/view/ResourceScope.d.ts +38 -0
- package/dist/src/core/view/ResourceScope.d.ts.map +1 -0
- package/dist/src/core/view/ResourceScope.js +167 -0
- package/dist/src/core/view/ResourceScope.js.map +1 -0
- package/dist/src/core/view/Section.d.ts +17 -32
- package/dist/src/core/view/Section.d.ts.map +1 -1
- package/dist/src/core/view/Section.js +14 -55
- package/dist/src/core/view/Section.js.map +1 -1
- package/dist/src/core/view/View.d.ts +43 -7
- package/dist/src/core/view/View.d.ts.map +1 -1
- package/dist/src/core/view/View.js +22 -4
- package/dist/src/core/view/View.js.map +1 -1
- package/dist/src/core/view/ViewController.d.ts +313 -40
- package/dist/src/core/view/ViewController.d.ts.map +1 -1
- package/dist/src/core/view/ViewController.js +1002 -147
- package/dist/src/core/view/ViewController.js.map +1 -1
- package/dist/src/core/view/ViewManager.d.ts +318 -27
- package/dist/src/core/view/ViewManager.d.ts.map +1 -1
- package/dist/src/core/view/ViewManager.js +1199 -258
- package/dist/src/core/view/ViewManager.js.map +1 -1
- package/dist/src/core/view/ViewState.d.ts +185 -6
- package/dist/src/core/view/ViewState.d.ts.map +1 -1
- package/dist/src/core/view/ViewState.js +851 -123
- package/dist/src/core/view/ViewState.js.map +1 -1
- package/dist/src/core/view/index.d.ts +5 -5
- package/dist/src/core/view/index.d.ts.map +1 -1
- package/dist/src/core/view/index.js +5 -5
- package/dist/src/core/view/index.js.map +1 -1
- package/dist/src/testing/index.d.ts +69 -0
- package/dist/src/testing/index.d.ts.map +1 -0
- package/dist/src/testing/index.js +140 -0
- package/dist/src/testing/index.js.map +1 -0
- package/index.ts +29 -5
- package/package.json +30 -21
- package/plugins.ts +2 -2
- package/src/core/app/Application.ts +58 -31
- package/src/core/bootstrap/app.ts +80 -6
- package/src/core/bootstrap/bundle.ts +101 -0
- package/src/core/bootstrap/providers/ApiServiceProvider.ts +4 -4
- package/src/core/bootstrap/providers/CoreServiceProvider.ts +14 -8
- package/src/core/bootstrap/providers/HelperServiceProvider.ts +8 -3
- package/src/core/bootstrap/providers/RouteServiceProvider.ts +15 -4
- package/src/core/bootstrap/providers/ServiceProvider.ts +8 -8
- package/src/core/bootstrap/providers/ViewServiceProvider.ts +3 -3
- package/src/core/bootstrap/providers/default-providers.ts +51 -16
- package/src/core/bootstrap/providers/index.ts +9 -9
- package/src/core/bootstrap/providers/provider-order.test.ts +16 -27
- package/src/core/bootstrap/providers/provider-order.ts +1 -1
- package/src/core/bootstrap/ssr.ts +136 -0
- package/src/core/cache/ViewCache.ts +1 -1
- package/src/core/cache/index.ts +1 -1
- package/src/core/contracts/ApplicationInterface.ts +13 -11
- package/src/core/contracts/BlockInterface.ts +18 -18
- package/src/core/contracts/BundleInterface.ts +40 -0
- package/src/core/contracts/ComponentInterface.ts +7 -6
- package/src/core/contracts/ElementInterface.ts +95 -27
- package/src/core/contracts/HeadServiceInterface.ts +41 -0
- package/src/core/contracts/HelperInterface.ts +9 -1
- package/src/core/contracts/HttpServiceInterface.ts +3 -0
- package/src/core/contracts/MarkerInterface.ts +22 -49
- package/src/core/contracts/ReactiveInterface.ts +9 -9
- package/src/core/contracts/RouterInterface.ts +5 -2
- package/src/core/contracts/SectionInterface.ts +49 -0
- package/src/core/contracts/ServiceProviderInterface.ts +3 -3
- package/src/core/contracts/ViewControllerInterface.ts +124 -16
- package/src/core/contracts/ViewInterface.ts +34 -5
- package/src/core/contracts/ViewManagerInterface.ts +40 -5
- package/src/core/contracts/ViewStateInterface.ts +39 -2
- package/src/core/contracts/common.ts +3 -3
- package/src/core/contracts/utils.ts +19 -19
- package/src/core/contracts/views.ts +2 -22
- package/src/core/devtools/hook.ts +142 -0
- package/src/core/devtools/index.ts +38 -0
- package/src/core/devtools/inspector.ts +270 -0
- package/src/core/elements/Block.ts +43 -21
- package/src/core/elements/BlockOutlet.ts +61 -21
- package/src/core/elements/Component.ts +352 -18
- package/src/core/elements/ElementManager.ts +9 -9
- package/src/core/elements/ForeachSlotCache.ts +170 -0
- package/src/core/elements/Fragment.ts +50 -32
- package/src/core/elements/Html.ts +696 -117
- package/src/core/elements/Output.ts +147 -30
- package/src/core/elements/Reactive.ts +329 -52
- package/src/core/elements/TextElement.ts +25 -16
- package/src/core/elements/Wrapper.ts +84 -18
- package/src/core/elements/Yield.ts +35 -24
- package/src/core/elements/helpers.ts +12 -12
- package/src/core/elements/index.ts +25 -24
- package/src/core/elements/reconcileChildren.ts +70 -0
- package/src/core/{hellpers → helpers}/ApiClient.ts +8 -1
- package/src/core/{hellpers → helpers}/app.ts +13 -2
- package/src/core/helpers/transition.ts +127 -0
- package/src/core/{hellpers → helpers}/utils.ts +4 -4
- package/src/core/helpers/view.ts +283 -0
- package/src/core/routers/Router.ts +458 -64
- package/src/core/routers/index.ts +2 -2
- package/src/core/services/AssetManager.ts +387 -0
- package/src/core/services/BlockManager.ts +272 -50
- package/src/core/services/DomService.ts +3 -3
- package/src/core/services/HeadService.ts +124 -0
- package/src/core/services/HelperService.ts +34 -4
- package/src/core/services/HttpService.ts +116 -55
- package/src/core/services/MarkerRegistry.ts +142 -16
- package/src/core/services/PageCache.ts +239 -0
- package/src/core/services/SectionManager.ts +387 -0
- package/src/core/services/StorageService.ts +1 -1
- package/src/core/services/TranslationService.ts +91 -0
- package/src/core/services/index.ts +11 -8
- package/src/core/types/utils.ts +8 -8
- package/src/core/view/LoopContext.ts +38 -1
- package/src/core/view/ResourceScope.ts +174 -0
- package/src/core/view/Section.ts +21 -68
- package/src/core/view/View.ts +57 -8
- package/src/core/view/ViewController.ts +1070 -186
- package/src/core/view/ViewManager.ts +1346 -272
- package/src/core/view/ViewState.ts +834 -116
- package/src/core/view/index.ts +5 -5
- package/src/testing/index.ts +184 -0
- package/dist/src/core/services/MarkerService.d.ts +0 -299
- package/dist/src/core/services/MarkerService.d.ts.map +0 -1
- package/dist/src/core/services/MarkerService.js +0 -723
- package/dist/src/core/services/MarkerService.js.map +0 -1
- package/src/core/services/MarkerService.ts +0 -923
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../../src/core/bootstrap/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../../src/core/bootstrap/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AAQ5E,QAAA,MAAM,GAAG,EAAE,oBAAkD,CAAC;AA2H9D,eAAe,GAAG,CAAC"}
|
|
@@ -1,9 +1,46 @@
|
|
|
1
|
-
import { app } from "../
|
|
2
|
-
import { buildDefaultProviders, resolveProviderOrder } from "./providers";
|
|
1
|
+
import { app } from "../helpers/app.js";
|
|
2
|
+
import { buildDefaultProviders, resolveProviderOrder } from "./providers/index.js";
|
|
3
|
+
import { readSSRBoot, readBootConfig, mergeBootConfig } from "./ssr.js";
|
|
4
|
+
import { bootBundles, loadBundles } from "./bundle.js";
|
|
3
5
|
const App = app();
|
|
4
6
|
// ⚠️ Flags PHẢI dùng isOne=false để có thể cập nhật sau init/start
|
|
5
7
|
App.set('isInitialized', false);
|
|
6
8
|
App.set('isStarted', false);
|
|
9
|
+
/**
|
|
10
|
+
* Hàng đợi `App.push(fn)` — cửa cho mã KHÔNG đi qua bundler (snippet trong
|
|
11
|
+
* layout, plugin bên thứ ba, thư viện nạp bất đồng bộ).
|
|
12
|
+
*
|
|
13
|
+
* Mẫu `dataLayer.push`: trước khi file này chạy, `window.App` là một MẢNG và
|
|
14
|
+
* `.push(fn)` chỉ xếp hàng. Ở đây ta rút hàng đợi rồi thay bằng App thật, và
|
|
15
|
+
* gắn `App.push` = chạy NGAY. Nhờ vậy CÙNG MỘT dòng gọi
|
|
16
|
+
*
|
|
17
|
+
* (window.App = window.App || []).push(fn)
|
|
18
|
+
*
|
|
19
|
+
* hoạt động ở cả ba mốc: trước khi app.js tải, trong lúc parse, và sau khi app
|
|
20
|
+
* đã boot. Tác giả plugin không phải biết mình chạy lúc nào.
|
|
21
|
+
*
|
|
22
|
+
* ⚠️ Hệ quả: `window.App` là MẢNG cho tới lúc boot. Đọc App phải đọc TRONG
|
|
23
|
+
* callback, đừng đọc ở tầng module.
|
|
24
|
+
*/
|
|
25
|
+
function drainPushQueue() {
|
|
26
|
+
if (typeof window === 'undefined')
|
|
27
|
+
return;
|
|
28
|
+
const w = window;
|
|
29
|
+
const pending = Array.isArray(w.App) ? w.App : [];
|
|
30
|
+
App.push = (fn) => {
|
|
31
|
+
if (typeof fn !== 'function')
|
|
32
|
+
return;
|
|
33
|
+
try {
|
|
34
|
+
fn(App);
|
|
35
|
+
}
|
|
36
|
+
catch (err) {
|
|
37
|
+
console.error('[App.push] callback ném lỗi:', err);
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
w.App = App;
|
|
41
|
+
for (const fn of pending)
|
|
42
|
+
App.push(fn);
|
|
43
|
+
}
|
|
7
44
|
/**
|
|
8
45
|
* Khởi tạo app — đăng ký + boot tất cả providers theo dependency order.
|
|
9
46
|
*
|
|
@@ -30,18 +67,51 @@ App.setMethod('init', function (config = {}) {
|
|
|
30
67
|
/**
|
|
31
68
|
* Start app — init nếu chưa, rồi start Router.
|
|
32
69
|
*
|
|
70
|
+
* Nếu phát hiện SSR boot (script saola-ssr), inject vào config.view.ssr để
|
|
71
|
+
* ViewManager + Router hydrate route đầu tiên thay vì mount mới.
|
|
72
|
+
*
|
|
33
73
|
* @example
|
|
34
74
|
* App.start(); // init với config mặc định
|
|
35
75
|
* App.start({ view: { container: '#app' } }); // init với config tùy chỉnh
|
|
36
76
|
*/
|
|
37
|
-
App.setMethod('start', function (config) {
|
|
77
|
+
App.setMethod('start', async function (config) {
|
|
38
78
|
if (App.isStarted) {
|
|
39
79
|
console.warn('[Bootstrap] App already started.');
|
|
40
80
|
return;
|
|
41
81
|
}
|
|
82
|
+
let bundles = null;
|
|
42
83
|
if (!App.isInitialized) {
|
|
43
|
-
|
|
84
|
+
// Config app truyền có ưu tiên hơn boot config (window.APP_CONFIGS:
|
|
85
|
+
// routes + container từ server). Thiếu APP_CONFIGS → chỉ dùng config app.
|
|
86
|
+
const boot = readBootConfig() || {};
|
|
87
|
+
const cfg = mergeBootConfig(boot, config || {});
|
|
88
|
+
// SSR boot (script saola-ssr) → ssr + container cho hydrate route đầu.
|
|
89
|
+
const ssr = readSSRBoot();
|
|
90
|
+
if (ssr) {
|
|
91
|
+
cfg.view = {
|
|
92
|
+
...(cfg.view || {}),
|
|
93
|
+
ssr: { view: ssr.view, viewId: ssr.viewId },
|
|
94
|
+
container: (cfg.view && cfg.view.container) || ssr.container,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
// Bundle nạp rời (theme…): server phát danh sách URL trong
|
|
98
|
+
// APP_CONFIGS.bundles. Phải await TRƯỚC init để view/service/provider
|
|
99
|
+
// của chúng có mặt lúc provider boot và lúc render route đầu.
|
|
100
|
+
bundles = await loadBundles(cfg.bundles);
|
|
101
|
+
cfg.view = {
|
|
102
|
+
...(cfg.view || {}),
|
|
103
|
+
// Bundle nạp sau ĐÈ registry của app — đúng ngữ nghĩa overlay theme.
|
|
104
|
+
registry: { ...(cfg.view?.registry || {}), ...bundles.views },
|
|
105
|
+
};
|
|
106
|
+
cfg.services = { ...(cfg.services || {}), ...bundles.services };
|
|
107
|
+
cfg.helpers = { ...(cfg.helpers || {}), ...bundles.helpers };
|
|
108
|
+
cfg.providers = [...(cfg.providers || []), ...bundles.providers];
|
|
109
|
+
App.init(cfg);
|
|
110
|
+
bootBundles(bundles, App);
|
|
44
111
|
}
|
|
112
|
+
// Sau init (View/Router/Helper đã có), TRƯỚC khi render: chỗ duy nhất mà
|
|
113
|
+
// mã ngoài cắm vào được mà chắc chắn kịp.
|
|
114
|
+
drainPushQueue();
|
|
45
115
|
App.get('Router').start();
|
|
46
116
|
App.isStarted = true;
|
|
47
117
|
}, true);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/core/bootstrap/app.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../../src/core/bootstrap/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundle nạp rời — hợp đồng + loader.
|
|
3
|
+
*
|
|
4
|
+
* Bài toán: một gói build ĐỘC LẬP (theme) phải cắm được view / service /
|
|
5
|
+
* helper / provider vào app đang chạy, mà không chia sẻ module graph với app.
|
|
6
|
+
* Cầu nối là import map: `@saolabs/client` của gói đó resolve về đúng file
|
|
7
|
+
* entry của app, nên hai bên dùng CHUNG một instance runtime. Xem
|
|
8
|
+
* docs/EXTENSION_ARCHITECTURE.md §7.
|
|
9
|
+
*/
|
|
10
|
+
import type { ApplicationInterface } from "../contracts/ApplicationInterface.js";
|
|
11
|
+
import type { MergedBundles, SaolaBundle } from "../contracts/BundleInterface.js";
|
|
12
|
+
/**
|
|
13
|
+
* Khai báo một bundle. Chỉ là identity + kiểu — nó tồn tại để tên khoá là HỢP
|
|
14
|
+
* ĐỒNG chứ không phải quy ước truyền miệng, và để IDE gợi ý được.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* export default defineBundle({
|
|
18
|
+
* name: 'theme:aurora',
|
|
19
|
+
* views: { 'themes.aurora.modules.ping.index': factory },
|
|
20
|
+
* });
|
|
21
|
+
*/
|
|
22
|
+
export declare function defineBundle(bundle: SaolaBundle): SaolaBundle;
|
|
23
|
+
/**
|
|
24
|
+
* Gộp nhiều manifest theo ĐÚNG THỨ TỰ mảng — không theo thứ tự resolve của
|
|
25
|
+
* mạng. Bundle sau ĐÈ bundle trước ở `views`/`services`/`helpers`; `providers`
|
|
26
|
+
* thì CỘNG THÊM chứ không thay, để một bundle không gỡ được provider của app.
|
|
27
|
+
*/
|
|
28
|
+
export declare function mergeBundles(bundles: Array<SaolaBundle | null | undefined>): MergedBundles;
|
|
29
|
+
/**
|
|
30
|
+
* Nạp danh sách URL bundle rồi gộp lại.
|
|
31
|
+
*
|
|
32
|
+
* Tải SONG SONG nhưng gộp theo thứ tự mảng — thứ tự URL là thứ tự ưu tiên do
|
|
33
|
+
* server quyết định (`APP_CONFIGS.bundles`), không phải do mạng.
|
|
34
|
+
*
|
|
35
|
+
* Một URL hỏng KHÔNG làm sập boot: ghi vào `failed` rồi đi tiếp. Theme lỗi thì
|
|
36
|
+
* site chạy bằng view gốc, còn hơn trắng trang.
|
|
37
|
+
*/
|
|
38
|
+
export declare function loadBundles(urls: string[] | null | undefined): Promise<MergedBundles>;
|
|
39
|
+
/** Chạy `boot()` của các bundle, sau khi App đã init. Lỗi một cái không chặn cái sau. */
|
|
40
|
+
export declare function bootBundles(merged: MergedBundles, app: ApplicationInterface): void;
|
|
41
|
+
//# sourceMappingURL=bundle.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.d.ts","sourceRoot":"","sources":["../../../../src/core/bootstrap/bundle.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,sCAAsC,CAAC;AACjF,OAAO,KAAK,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAGlF;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,WAAW,GAAG,WAAW,CAE7D;AAMD;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,WAAW,GAAG,IAAI,GAAG,SAAS,CAAC,GAAG,aAAa,CAc1F;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,CA2B3F;AAED,yFAAyF;AACzF,wBAAgB,WAAW,CAAC,MAAM,EAAE,aAAa,EAAE,GAAG,EAAE,oBAAoB,GAAG,IAAI,CAQlF"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Bundle nạp rời — hợp đồng + loader.
|
|
3
|
+
*
|
|
4
|
+
* Bài toán: một gói build ĐỘC LẬP (theme) phải cắm được view / service /
|
|
5
|
+
* helper / provider vào app đang chạy, mà không chia sẻ module graph với app.
|
|
6
|
+
* Cầu nối là import map: `@saolabs/client` của gói đó resolve về đúng file
|
|
7
|
+
* entry của app, nên hai bên dùng CHUNG một instance runtime. Xem
|
|
8
|
+
* docs/EXTENSION_ARCHITECTURE.md §7.
|
|
9
|
+
*/
|
|
10
|
+
import logger from "../services/LoggerService.js";
|
|
11
|
+
/**
|
|
12
|
+
* Khai báo một bundle. Chỉ là identity + kiểu — nó tồn tại để tên khoá là HỢP
|
|
13
|
+
* ĐỒNG chứ không phải quy ước truyền miệng, và để IDE gợi ý được.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* export default defineBundle({
|
|
17
|
+
* name: 'theme:aurora',
|
|
18
|
+
* views: { 'themes.aurora.modules.ping.index': factory },
|
|
19
|
+
* });
|
|
20
|
+
*/
|
|
21
|
+
export function defineBundle(bundle) {
|
|
22
|
+
return bundle;
|
|
23
|
+
}
|
|
24
|
+
function emptyMerged() {
|
|
25
|
+
return { providers: [], services: {}, helpers: {}, views: {}, boots: [], loaded: [], failed: [] };
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Gộp nhiều manifest theo ĐÚNG THỨ TỰ mảng — không theo thứ tự resolve của
|
|
29
|
+
* mạng. Bundle sau ĐÈ bundle trước ở `views`/`services`/`helpers`; `providers`
|
|
30
|
+
* thì CỘNG THÊM chứ không thay, để một bundle không gỡ được provider của app.
|
|
31
|
+
*/
|
|
32
|
+
export function mergeBundles(bundles) {
|
|
33
|
+
const out = emptyMerged();
|
|
34
|
+
for (const bundle of bundles) {
|
|
35
|
+
if (!bundle || typeof bundle !== 'object')
|
|
36
|
+
continue;
|
|
37
|
+
out.loaded.push(bundle.name ?? '(không tên)');
|
|
38
|
+
if (Array.isArray(bundle.providers))
|
|
39
|
+
out.providers.push(...bundle.providers);
|
|
40
|
+
if (bundle.services)
|
|
41
|
+
Object.assign(out.services, bundle.services);
|
|
42
|
+
if (bundle.helpers)
|
|
43
|
+
Object.assign(out.helpers, bundle.helpers);
|
|
44
|
+
if (bundle.views)
|
|
45
|
+
Object.assign(out.views, bundle.views);
|
|
46
|
+
if (typeof bundle.boot === 'function')
|
|
47
|
+
out.boots.push(bundle.boot.bind(bundle));
|
|
48
|
+
}
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Nạp danh sách URL bundle rồi gộp lại.
|
|
53
|
+
*
|
|
54
|
+
* Tải SONG SONG nhưng gộp theo thứ tự mảng — thứ tự URL là thứ tự ưu tiên do
|
|
55
|
+
* server quyết định (`APP_CONFIGS.bundles`), không phải do mạng.
|
|
56
|
+
*
|
|
57
|
+
* Một URL hỏng KHÔNG làm sập boot: ghi vào `failed` rồi đi tiếp. Theme lỗi thì
|
|
58
|
+
* site chạy bằng view gốc, còn hơn trắng trang.
|
|
59
|
+
*/
|
|
60
|
+
export async function loadBundles(urls) {
|
|
61
|
+
if (!Array.isArray(urls) || urls.length === 0)
|
|
62
|
+
return emptyMerged();
|
|
63
|
+
const results = await Promise.all(urls.map(async (url) => {
|
|
64
|
+
try {
|
|
65
|
+
// URL đến từ runtime nên bundler không phân tích tĩnh được — đúng ý
|
|
66
|
+
// đồ. Viết literal ở đây sẽ làm GÃY build của app (rollup cố resolve
|
|
67
|
+
// một đường dẫn không có trong module graph).
|
|
68
|
+
const mod = await import(/* @vite-ignore */ /* webpackIgnore: true */ url);
|
|
69
|
+
// Bundle có thể khai manifest (export default) HOẶC tự đăng ký ngay
|
|
70
|
+
// trong thân module qua App.View/App.set — import đã await xong nên
|
|
71
|
+
// cả hai đều kịp trước khi render.
|
|
72
|
+
return [url, (mod?.default ?? null), null];
|
|
73
|
+
}
|
|
74
|
+
catch (err) {
|
|
75
|
+
return [url, null, String(err)];
|
|
76
|
+
}
|
|
77
|
+
}));
|
|
78
|
+
const merged = mergeBundles(results.map(([, bundle]) => bundle));
|
|
79
|
+
for (const [url, , error] of results) {
|
|
80
|
+
if (error) {
|
|
81
|
+
merged.failed.push([url, error]);
|
|
82
|
+
logger.error(`[Bundle] Không nạp được "${url}": ${error}`);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return merged;
|
|
86
|
+
}
|
|
87
|
+
/** Chạy `boot()` của các bundle, sau khi App đã init. Lỗi một cái không chặn cái sau. */
|
|
88
|
+
export function bootBundles(merged, app) {
|
|
89
|
+
for (const boot of merged.boots) {
|
|
90
|
+
try {
|
|
91
|
+
boot(app);
|
|
92
|
+
}
|
|
93
|
+
catch (err) {
|
|
94
|
+
logger.error('[Bundle] boot() ném lỗi:', err);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=bundle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bundle.js","sourceRoot":"","sources":["../../../../src/core/bootstrap/bundle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ApiServiceProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ApiServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ApiServiceProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,kBAAmB,SAAQ,eAAe;IACnD,QAAQ,CAAC,IAAI,QAAsB;IACnC,QAAQ,CAAC,SAAS,WAAyB;IAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAExC,QAAQ,IAAI,IAAI;IAIhB,IAAI,IAAI,IAAI;CAGf"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ApiClient } from "../../
|
|
2
|
-
import { PROVIDER_NAMES } from "./provider-order";
|
|
3
|
-
import { ServiceProvider } from "./ServiceProvider";
|
|
1
|
+
import { ApiClient } from "../../helpers/ApiClient.js";
|
|
2
|
+
import { PROVIDER_NAMES } from "./provider-order.js";
|
|
3
|
+
import { ServiceProvider } from "./ServiceProvider.js";
|
|
4
4
|
export class ApiServiceProvider extends ServiceProvider {
|
|
5
5
|
constructor() {
|
|
6
6
|
super(...arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ApiServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ApiServiceProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ApiServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ApiServiceProvider.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,OAAO,kBAAmB,SAAQ,eAAe;IAAvD;;QACa,SAAI,GAAG,cAAc,CAAC,GAAG,CAAC;QAC1B,cAAS,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAU/C,CAAC;IAPG,QAAQ;QACJ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAqB,KAAK,EAAE,IAAI,SAAS,EAAE,EAAE,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,IAAI;QACA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAqB,KAAK,CAAC,CAAC,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC5E,CAAC;;AARM,yBAAM,GAAwB,EAAE,AAA1B,CAA2B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/CoreServiceProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CoreServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/CoreServiceProvider.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,mBAAoB,SAAQ,eAAe;IACpD,QAAQ,CAAC,IAAI,SAAuB;IAEpC,QAAQ,IAAI,IAAI;CASnB"}
|
|
@@ -1,21 +1,24 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { EventService } from "../../services/EventService";
|
|
3
|
-
import { HttpService } from "../../services/HttpService";
|
|
4
|
-
import {
|
|
5
|
-
import
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
1
|
+
import { MarkerRegistry } from "../../services/index.js";
|
|
2
|
+
import { EventService } from "../../services/EventService.js";
|
|
3
|
+
import { HttpService } from "../../services/HttpService.js";
|
|
4
|
+
import { StoreService } from "../../services/StoreService.js";
|
|
5
|
+
import HeadService from "../../services/HeadService.js";
|
|
6
|
+
import { Devtools } from "../../devtools/index.js";
|
|
7
|
+
import { PROVIDER_NAMES } from "./provider-order.js";
|
|
8
|
+
import { ServiceProvider } from "./ServiceProvider.js";
|
|
8
9
|
export class CoreServiceProvider extends ServiceProvider {
|
|
9
10
|
constructor() {
|
|
10
11
|
super(...arguments);
|
|
11
12
|
this.name = PROVIDER_NAMES.CORE;
|
|
12
13
|
}
|
|
13
14
|
register() {
|
|
14
|
-
this.app.set("Marker", app(MarkerService), true);
|
|
15
15
|
this.app.set("Store", StoreService.instance(), true);
|
|
16
16
|
this.app.set("Storage", StoreService.instance(), true);
|
|
17
17
|
this.app.set("Event", EventService.instance(), true);
|
|
18
18
|
this.app.set("Http", HttpService.instance(), true);
|
|
19
|
+
this.app.set("Registry", MarkerRegistry, true);
|
|
20
|
+
this.app.set("Head", HeadService, true);
|
|
21
|
+
this.app.set("Devtools", Devtools, true);
|
|
19
22
|
}
|
|
20
23
|
}
|
|
21
24
|
//# sourceMappingURL=CoreServiceProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"CoreServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/CoreServiceProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"CoreServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/CoreServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,cAAc,EAAyB,MAAM,yBAAyB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,WAAW,MAAM,+BAA+B,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAEnD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAAxD;;QACa,SAAI,GAAG,cAAc,CAAC,IAAI,CAAC;IAWxC,CAAC;IATG,QAAQ;QACJ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAe,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAe,SAAS,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QACrE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAe,OAAO,EAAE,YAAY,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QACnE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAc,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE,EAAE,IAAI,CAAC,CAAC;QAChE,IAAI,CAAC,GAAG,CAAC,GAAG,CAA0B,UAAU,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;QACxE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAuB,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;QAC9D,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IAC7C,CAAC;CACJ"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
|
-
import { ServiceProvider } from "./ServiceProvider";
|
|
1
|
+
import { ServiceProvider } from "./ServiceProvider.js";
|
|
2
2
|
export declare class HelperServiceProvider extends ServiceProvider {
|
|
3
3
|
readonly name: "helper";
|
|
4
4
|
readonly dependsOn: ("view" | "core" | "router")[];
|
|
5
|
+
static config: Record<string, any>;
|
|
5
6
|
register(): void;
|
|
7
|
+
boot(): void;
|
|
6
8
|
}
|
|
7
9
|
//# sourceMappingURL=HelperServiceProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelperServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/HelperServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"HelperServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/HelperServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,qBAAsB,SAAQ,eAAe;IACtD,QAAQ,CAAC,IAAI,WAAyB;IACtC,QAAQ,CAAC,SAAS,iCAAqE;IAEvF,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAExC,QAAQ,IAAI,IAAI;IAGhB,IAAI,IAAI,IAAI;CAGf"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { HelperService } from "../../services/HelperService";
|
|
2
|
-
import { PROVIDER_NAMES } from "./provider-order";
|
|
3
|
-
import { ServiceProvider } from "./ServiceProvider";
|
|
1
|
+
import { HelperService } from "../../services/HelperService.js";
|
|
2
|
+
import { PROVIDER_NAMES } from "./provider-order.js";
|
|
3
|
+
import { ServiceProvider } from "./ServiceProvider.js";
|
|
4
4
|
export class HelperServiceProvider extends ServiceProvider {
|
|
5
5
|
constructor() {
|
|
6
6
|
super(...arguments);
|
|
@@ -10,5 +10,10 @@ export class HelperServiceProvider extends ServiceProvider {
|
|
|
10
10
|
register() {
|
|
11
11
|
this.app.set("Helper", new HelperService(this.app), true);
|
|
12
12
|
}
|
|
13
|
+
boot() {
|
|
14
|
+
if (HelperServiceProvider.config.i18n)
|
|
15
|
+
this.app.get("Helper").initTranslations(HelperServiceProvider.config.i18n);
|
|
16
|
+
}
|
|
13
17
|
}
|
|
18
|
+
HelperServiceProvider.config = {};
|
|
14
19
|
//# sourceMappingURL=HelperServiceProvider.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelperServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/HelperServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"HelperServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/HelperServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,OAAO,qBAAsB,SAAQ,eAAe;IAA1D;;QACa,SAAI,GAAG,cAAc,CAAC,MAAM,CAAC;QAC7B,cAAS,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,cAAc,CAAC,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC,CAAC;IAU3F,CAAC;IANG,QAAQ;QACJ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAgB,QAAQ,EAAE,IAAI,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI;QACA,IAAI,qBAAqB,CAAC,MAAM,CAAC,IAAI;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAgB,QAAQ,CAAC,CAAC,gBAAgB,CAAC,qBAAqB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;IACrI,CAAC;;AAPM,4BAAM,GAAwB,EAAE,AAA1B,CAA2B"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
|
-
import { ServiceProvider } from "./ServiceProvider";
|
|
1
|
+
import { ServiceProvider } from "./ServiceProvider.js";
|
|
2
2
|
export declare class RouteServiceProvider extends ServiceProvider {
|
|
3
3
|
readonly name: "router";
|
|
4
|
+
/** ROUTER phải boot SAU VIEW để ViewManager đã sẵn sàng */
|
|
4
5
|
readonly dependsOn: "view"[];
|
|
5
6
|
static config: Record<string, any>;
|
|
6
7
|
register(): void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/RouteServiceProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"RouteServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/RouteServiceProvider.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,oBAAqB,SAAQ,eAAe;IACrD,QAAQ,CAAC,IAAI,WAAyB;IACtC,2DAA2D;IAC3D,QAAQ,CAAC,SAAS,WAAyB;IAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAExC,QAAQ,IAAI,IAAI;IAIhB,IAAI,IAAI,IAAI;CAYf"}
|
|
@@ -1,17 +1,27 @@
|
|
|
1
|
-
import { Router } from "../../routers";
|
|
2
|
-
import { PROVIDER_NAMES } from "./provider-order";
|
|
3
|
-
import { ServiceProvider } from "./ServiceProvider";
|
|
1
|
+
import { Router } from "../../routers/index.js";
|
|
2
|
+
import { PROVIDER_NAMES } from "./provider-order.js";
|
|
3
|
+
import { ServiceProvider } from "./ServiceProvider.js";
|
|
4
4
|
export class RouteServiceProvider extends ServiceProvider {
|
|
5
5
|
constructor() {
|
|
6
6
|
super(...arguments);
|
|
7
7
|
this.name = PROVIDER_NAMES.ROUTER;
|
|
8
|
+
/** ROUTER phải boot SAU VIEW để ViewManager đã sẵn sàng */
|
|
8
9
|
this.dependsOn = [PROVIDER_NAMES.VIEW];
|
|
9
10
|
}
|
|
10
11
|
register() {
|
|
11
12
|
this.app.set("Router", new Router(this.app), true);
|
|
12
13
|
}
|
|
13
14
|
boot() {
|
|
14
|
-
this.app.get("Router")
|
|
15
|
+
const router = this.app.get("Router");
|
|
16
|
+
// Wire ViewManager → Router (Router cần để mountView khi navigate)
|
|
17
|
+
try {
|
|
18
|
+
const vm = this.app.get("View");
|
|
19
|
+
if (vm)
|
|
20
|
+
router.setViewManager(vm);
|
|
21
|
+
}
|
|
22
|
+
catch (_) { /* View chưa register — Router sẽ fallback qua App.View */ }
|
|
23
|
+
// init: load routes config + auto-wire
|
|
24
|
+
router.init(RouteServiceProvider.config);
|
|
15
25
|
}
|
|
16
26
|
}
|
|
17
27
|
RouteServiceProvider.config = {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouteServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/RouteServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"RouteServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/RouteServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,OAAO,oBAAqB,SAAQ,eAAe;IAAzD;;QACa,SAAI,GAAG,cAAc,CAAC,MAAM,CAAC;QACtC,2DAA2D;QAClD,cAAS,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAmB/C,CAAC;IAhBG,QAAQ;QACJ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAS,QAAQ,EAAE,IAAI,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IAC/D,CAAC;IAED,IAAI;QACA,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAS,QAAQ,CAAC,CAAC;QAE9C,mEAAmE;QACnE,IAAI,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAc,MAAM,CAAC,CAAC;YAC7C,IAAI,EAAE;gBAAE,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC;QACtC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC,CAAC,0DAA0D,CAAC,CAAC;QAE1E,uCAAuC;QACvC,MAAM,CAAC,IAAI,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;;AAjBM,2BAAM,GAAwB,EAAE,AAA1B,CAA2B"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ApplicationInterface } from "../../contracts/ApplicationInterface";
|
|
2
|
-
import { ServiceProviderInterface } from "../../contracts/utils";
|
|
3
|
-
import {
|
|
1
|
+
import { ApplicationInterface } from "../../contracts/ApplicationInterface.js";
|
|
2
|
+
import { ServiceProviderInterface } from "../../contracts/utils.js";
|
|
3
|
+
import { SaoObjectType } from "../../types/utils.js";
|
|
4
4
|
/**
|
|
5
5
|
* Base class cho Service Provider — API giống Laravel.
|
|
6
6
|
*
|
|
@@ -24,7 +24,7 @@ import { OneObjectType } from "../../types/utils";
|
|
|
24
24
|
* }
|
|
25
25
|
*/
|
|
26
26
|
export declare abstract class ServiceProvider implements ServiceProviderInterface {
|
|
27
|
-
readonly
|
|
27
|
+
readonly saoType: SaoObjectType;
|
|
28
28
|
abstract readonly name: string;
|
|
29
29
|
readonly dependsOn?: string[];
|
|
30
30
|
protected app: ApplicationInterface;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,EAAE,wBAAwB,EAAE,MAAM,0BAA0B,CAAC;AAEpE,OAAO,EAAE,aAAa,EAAW,MAAM,sBAAsB,CAAC;AAG9D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,8BAAsB,eAAgB,YAAW,wBAAwB;IACrE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAA4B;IAC3D,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IAC9B,SAAS,CAAC,GAAG,EAAE,oBAAoB,CAAC;gBAExB,WAAW,CAAC,EAAE,oBAAoB;IAK9C,eAAe,CAAC,GAAG,CAAC,EAAE,oBAAoB,GAAG,IAAI;IAMjD,iDAAiD;IACjD,QAAQ,IAAI,IAAI;IAEhB,qEAAqE;IACrE,IAAI,IAAI,IAAI;CACf"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { app } from "../../
|
|
2
|
-
import { OOTEnum } from "../../types/utils";
|
|
1
|
+
import { app } from "../../helpers/app.js";
|
|
2
|
+
import { OOTEnum } from "../../types/utils.js";
|
|
3
3
|
/**
|
|
4
4
|
* Base class cho Service Provider — API giống Laravel.
|
|
5
5
|
*
|
|
@@ -24,13 +24,13 @@ import { OOTEnum } from "../../types/utils";
|
|
|
24
24
|
*/
|
|
25
25
|
export class ServiceProvider {
|
|
26
26
|
constructor(application) {
|
|
27
|
-
this.
|
|
27
|
+
this.saoType = OOTEnum.SERVICE_PROVIDER;
|
|
28
28
|
this.app = application ?? app();
|
|
29
29
|
this.initApplication();
|
|
30
30
|
}
|
|
31
31
|
initApplication(App) {
|
|
32
|
-
if (!this.app || typeof this.app !== 'object' || this.app.
|
|
33
|
-
this.app = (App && App.
|
|
32
|
+
if (!this.app || typeof this.app !== 'object' || this.app.saoType !== OOTEnum.APPLICATION) {
|
|
33
|
+
this.app = (App && App.saoType === OOTEnum.APPLICATION) ? App : app();
|
|
34
34
|
}
|
|
35
35
|
}
|
|
36
36
|
/** Override để đăng ký services vào container */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,GAAG,EAAE,MAAM,sBAAsB,CAAC;AAC3C,OAAO,EAAiB,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAG9D;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,OAAgB,eAAe;IAMjC,YAAY,WAAkC;QALrC,YAAO,GAAkB,OAAO,CAAC,gBAAgB,CAAC;QAMvD,IAAI,CAAC,GAAG,GAAG,WAAW,IAAI,GAAG,EAAwB,CAAC;QACtD,IAAI,CAAC,eAAe,EAAE,CAAC;IAC3B,CAAC;IAED,eAAe,CAAC,GAA0B;QACtC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,OAAO,IAAI,CAAC,GAAG,KAAK,QAAQ,IAAI,IAAI,CAAC,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;YACxF,IAAI,CAAC,GAAG,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,OAAO,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAwB,CAAC;QAChG,CAAC;IACL,CAAC;IAED,iDAAiD;IACjD,QAAQ,KAAU,CAAC;IAEnB,qEAAqE;IACrE,IAAI,KAAU,CAAC;CAClB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ViewServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ViewServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ViewServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,qBAAa,mBAAoB,SAAQ,eAAe;IACpD,QAAQ,CAAC,IAAI,SAAuB;IACpC,QAAQ,CAAC,SAAS,WAAyB;IAC3C,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAM;IAExC,QAAQ,IAAI,IAAI;IAIhB,IAAI,IAAI,IAAI;CAGf"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ViewManager } from "../../view";
|
|
2
|
-
import { PROVIDER_NAMES } from "./provider-order";
|
|
3
|
-
import { ServiceProvider } from "./ServiceProvider";
|
|
1
|
+
import { ViewManager } from "../../view/index.js";
|
|
2
|
+
import { PROVIDER_NAMES } from "./provider-order.js";
|
|
3
|
+
import { ServiceProvider } from "./ServiceProvider.js";
|
|
4
4
|
export class ViewServiceProvider extends ServiceProvider {
|
|
5
5
|
constructor() {
|
|
6
6
|
super(...arguments);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ViewServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ViewServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"ViewServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ViewServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAEvD,MAAM,OAAO,mBAAoB,SAAQ,eAAe;IAAxD;;QACa,SAAI,GAAG,cAAc,CAAC,IAAI,CAAC;QAC3B,cAAS,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC;IAU/C,CAAC;IAPG,QAAQ;QACJ,IAAI,CAAC,GAAG,CAAC,GAAG,CAAc,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC,CAAC;IACvE,CAAC;IAED,IAAI;QACA,IAAI,CAAC,GAAG,CAAC,GAAG,CAAc,MAAM,CAAC,CAAC,IAAI,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IACvE,CAAC;;AARM,0BAAM,GAAwB,EAAE,AAA1B,CAA2B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-providers.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/default-providers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAkB,MAAM,
|
|
1
|
+
{"version":3,"file":"default-providers.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/default-providers.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAkB,MAAM,qBAAqB,CAAC;AA0E3E;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,oBAAoB,EAAE,CAyC9F"}
|