@saolabs/client 1.0.0
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 +221 -0
- package/dist/index.d.ts +46 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +38 -0
- package/dist/index.js.map +1 -0
- package/dist/plugins.d.ts +38 -0
- package/dist/plugins.d.ts.map +1 -0
- package/dist/plugins.js +61 -0
- package/dist/plugins.js.map +1 -0
- package/dist/src/core/app/Application.d.ts +159 -0
- package/dist/src/core/app/Application.d.ts.map +1 -0
- package/dist/src/core/app/Application.js +338 -0
- package/dist/src/core/app/Application.js.map +1 -0
- package/dist/src/core/bootstrap/app.d.ts +4 -0
- package/dist/src/core/bootstrap/app.d.ts.map +1 -0
- package/dist/src/core/bootstrap/app.js +49 -0
- package/dist/src/core/bootstrap/app.js.map +1 -0
- package/dist/src/core/bootstrap/providers/ApiServiceProvider.d.ts +9 -0
- package/dist/src/core/bootstrap/providers/ApiServiceProvider.d.ts.map +1 -0
- package/dist/src/core/bootstrap/providers/ApiServiceProvider.js +18 -0
- package/dist/src/core/bootstrap/providers/ApiServiceProvider.js.map +1 -0
- package/dist/src/core/bootstrap/providers/CoreServiceProvider.d.ts +6 -0
- package/dist/src/core/bootstrap/providers/CoreServiceProvider.d.ts.map +1 -0
- package/dist/src/core/bootstrap/providers/CoreServiceProvider.js +21 -0
- package/dist/src/core/bootstrap/providers/CoreServiceProvider.js.map +1 -0
- package/dist/src/core/bootstrap/providers/HelperServiceProvider.d.ts +7 -0
- package/dist/src/core/bootstrap/providers/HelperServiceProvider.d.ts.map +1 -0
- package/dist/src/core/bootstrap/providers/HelperServiceProvider.js +14 -0
- package/dist/src/core/bootstrap/providers/HelperServiceProvider.js.map +1 -0
- package/dist/src/core/bootstrap/providers/RouteServiceProvider.d.ts +9 -0
- package/dist/src/core/bootstrap/providers/RouteServiceProvider.d.ts.map +1 -0
- package/dist/src/core/bootstrap/providers/RouteServiceProvider.js +18 -0
- package/dist/src/core/bootstrap/providers/RouteServiceProvider.js.map +1 -0
- package/dist/src/core/bootstrap/providers/ServiceProvider.d.ts +38 -0
- package/dist/src/core/bootstrap/providers/ServiceProvider.d.ts.map +1 -0
- package/dist/src/core/bootstrap/providers/ServiceProvider.js +41 -0
- package/dist/src/core/bootstrap/providers/ServiceProvider.js.map +1 -0
- package/dist/src/core/bootstrap/providers/ViewServiceProvider.d.ts +9 -0
- package/dist/src/core/bootstrap/providers/ViewServiceProvider.d.ts.map +1 -0
- package/dist/src/core/bootstrap/providers/ViewServiceProvider.js +18 -0
- package/dist/src/core/bootstrap/providers/ViewServiceProvider.js.map +1 -0
- package/dist/src/core/bootstrap/providers/default-providers.d.ts +14 -0
- package/dist/src/core/bootstrap/providers/default-providers.d.ts.map +1 -0
- package/dist/src/core/bootstrap/providers/default-providers.js +79 -0
- package/dist/src/core/bootstrap/providers/default-providers.js.map +1 -0
- package/dist/src/core/bootstrap/providers/index.d.ts +10 -0
- package/dist/src/core/bootstrap/providers/index.d.ts.map +1 -0
- package/dist/src/core/bootstrap/providers/index.js +9 -0
- package/dist/src/core/bootstrap/providers/index.js.map +1 -0
- package/dist/src/core/bootstrap/providers/provider-order.d.ts +19 -0
- package/dist/src/core/bootstrap/providers/provider-order.d.ts.map +1 -0
- package/dist/src/core/bootstrap/providers/provider-order.js +51 -0
- package/dist/src/core/bootstrap/providers/provider-order.js.map +1 -0
- package/dist/src/core/cache/ViewCache.d.ts +46 -0
- package/dist/src/core/cache/ViewCache.d.ts.map +1 -0
- package/dist/src/core/cache/ViewCache.js +85 -0
- package/dist/src/core/cache/ViewCache.js.map +1 -0
- package/dist/src/core/cache/index.d.ts +2 -0
- package/dist/src/core/cache/index.d.ts.map +1 -0
- package/dist/src/core/cache/index.js +2 -0
- package/dist/src/core/cache/index.js.map +1 -0
- package/dist/src/core/contracts/ApiInterface.d.ts +11 -0
- package/dist/src/core/contracts/ApiInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/ApiInterface.js +2 -0
- package/dist/src/core/contracts/ApiInterface.js.map +1 -0
- package/dist/src/core/contracts/ApplicationInterface.d.ts +66 -0
- package/dist/src/core/contracts/ApplicationInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/ApplicationInterface.js +3 -0
- package/dist/src/core/contracts/ApplicationInterface.js.map +1 -0
- package/dist/src/core/contracts/BlockInterface.d.ts +67 -0
- package/dist/src/core/contracts/BlockInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/BlockInterface.js +2 -0
- package/dist/src/core/contracts/BlockInterface.js.map +1 -0
- package/dist/src/core/contracts/ComponentInterface.d.ts +24 -0
- package/dist/src/core/contracts/ComponentInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/ComponentInterface.js +2 -0
- package/dist/src/core/contracts/ComponentInterface.js.map +1 -0
- package/dist/src/core/contracts/ElementInterface.d.ts +117 -0
- package/dist/src/core/contracts/ElementInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/ElementInterface.js +2 -0
- package/dist/src/core/contracts/ElementInterface.js.map +1 -0
- package/dist/src/core/contracts/EventServiceInterface.d.ts +37 -0
- package/dist/src/core/contracts/EventServiceInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/EventServiceInterface.js +3 -0
- package/dist/src/core/contracts/EventServiceInterface.js.map +1 -0
- package/dist/src/core/contracts/HelperInterface.d.ts +231 -0
- package/dist/src/core/contracts/HelperInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/HelperInterface.js +3 -0
- package/dist/src/core/contracts/HelperInterface.js.map +1 -0
- package/dist/src/core/contracts/HttpServiceInterface.d.ts +38 -0
- package/dist/src/core/contracts/HttpServiceInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/HttpServiceInterface.js +3 -0
- package/dist/src/core/contracts/HttpServiceInterface.js.map +1 -0
- package/dist/src/core/contracts/LoggerServiceInterface.d.ts +37 -0
- package/dist/src/core/contracts/LoggerServiceInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/LoggerServiceInterface.js +3 -0
- package/dist/src/core/contracts/LoggerServiceInterface.js.map +1 -0
- package/dist/src/core/contracts/LoopContextInterface.d.ts +14 -0
- package/dist/src/core/contracts/LoopContextInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/LoopContextInterface.js +3 -0
- package/dist/src/core/contracts/LoopContextInterface.js.map +1 -0
- package/dist/src/core/contracts/MarkerInterface.d.ts +55 -0
- package/dist/src/core/contracts/MarkerInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/MarkerInterface.js +2 -0
- package/dist/src/core/contracts/MarkerInterface.js.map +1 -0
- package/dist/src/core/contracts/ReactiveInterface.d.ts +38 -0
- package/dist/src/core/contracts/ReactiveInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/ReactiveInterface.js +2 -0
- package/dist/src/core/contracts/ReactiveInterface.js.map +1 -0
- package/dist/src/core/contracts/RouterInterface.d.ts +58 -0
- package/dist/src/core/contracts/RouterInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/RouterInterface.js +2 -0
- package/dist/src/core/contracts/RouterInterface.js.map +1 -0
- package/dist/src/core/contracts/ServiceProviderInterface.d.ts +12 -0
- package/dist/src/core/contracts/ServiceProviderInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/ServiceProviderInterface.js +2 -0
- package/dist/src/core/contracts/ServiceProviderInterface.js.map +1 -0
- package/dist/src/core/contracts/StorageServiceInterface.d.ts +43 -0
- package/dist/src/core/contracts/StorageServiceInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/StorageServiceInterface.js +3 -0
- package/dist/src/core/contracts/StorageServiceInterface.js.map +1 -0
- package/dist/src/core/contracts/StoreServiceInterface.d.ts +45 -0
- package/dist/src/core/contracts/StoreServiceInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/StoreServiceInterface.js +3 -0
- package/dist/src/core/contracts/StoreServiceInterface.js.map +1 -0
- package/dist/src/core/contracts/ViewCacheInterface.d.ts +13 -0
- package/dist/src/core/contracts/ViewCacheInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/ViewCacheInterface.js +3 -0
- package/dist/src/core/contracts/ViewCacheInterface.js.map +1 -0
- package/dist/src/core/contracts/ViewControllerInterface.d.ts +115 -0
- package/dist/src/core/contracts/ViewControllerInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/ViewControllerInterface.js +2 -0
- package/dist/src/core/contracts/ViewControllerInterface.js.map +1 -0
- package/dist/src/core/contracts/ViewInterface.d.ts +24 -0
- package/dist/src/core/contracts/ViewInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/ViewInterface.js +2 -0
- package/dist/src/core/contracts/ViewInterface.js.map +1 -0
- package/dist/src/core/contracts/ViewManagerInterface.d.ts +44 -0
- package/dist/src/core/contracts/ViewManagerInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/ViewManagerInterface.js +2 -0
- package/dist/src/core/contracts/ViewManagerInterface.js.map +1 -0
- package/dist/src/core/contracts/ViewStateInterface.d.ts +40 -0
- package/dist/src/core/contracts/ViewStateInterface.d.ts.map +1 -0
- package/dist/src/core/contracts/ViewStateInterface.js +3 -0
- package/dist/src/core/contracts/ViewStateInterface.js.map +1 -0
- package/dist/src/core/contracts/common.d.ts +28 -0
- package/dist/src/core/contracts/common.d.ts.map +1 -0
- package/dist/src/core/contracts/common.js +29 -0
- package/dist/src/core/contracts/common.js.map +1 -0
- package/dist/src/core/contracts/utils.d.ts +20 -0
- package/dist/src/core/contracts/utils.d.ts.map +1 -0
- package/dist/src/core/contracts/utils.js +4 -0
- package/dist/src/core/contracts/utils.js.map +1 -0
- package/dist/src/core/contracts/views.d.ts +23 -0
- package/dist/src/core/contracts/views.d.ts.map +1 -0
- package/dist/src/core/contracts/views.js +2 -0
- package/dist/src/core/contracts/views.js.map +1 -0
- package/dist/src/core/elements/Block.d.ts +58 -0
- package/dist/src/core/elements/Block.d.ts.map +1 -0
- package/dist/src/core/elements/Block.js +77 -0
- package/dist/src/core/elements/Block.js.map +1 -0
- package/dist/src/core/elements/BlockOutlet.d.ts +34 -0
- package/dist/src/core/elements/BlockOutlet.d.ts.map +1 -0
- package/dist/src/core/elements/BlockOutlet.js +59 -0
- package/dist/src/core/elements/BlockOutlet.js.map +1 -0
- package/dist/src/core/elements/Component.d.ts +62 -0
- package/dist/src/core/elements/Component.d.ts.map +1 -0
- package/dist/src/core/elements/Component.js +72 -0
- package/dist/src/core/elements/Component.js.map +1 -0
- package/dist/src/core/elements/ElementManager.d.ts +23 -0
- package/dist/src/core/elements/ElementManager.d.ts.map +1 -0
- package/dist/src/core/elements/ElementManager.js +33 -0
- package/dist/src/core/elements/ElementManager.js.map +1 -0
- package/dist/src/core/elements/Fragment.d.ts +51 -0
- package/dist/src/core/elements/Fragment.d.ts.map +1 -0
- package/dist/src/core/elements/Fragment.js +133 -0
- package/dist/src/core/elements/Fragment.js.map +1 -0
- package/dist/src/core/elements/Html.d.ts +52 -0
- package/dist/src/core/elements/Html.d.ts.map +1 -0
- package/dist/src/core/elements/Html.js +299 -0
- package/dist/src/core/elements/Html.js.map +1 -0
- package/dist/src/core/elements/Output.d.ts +69 -0
- package/dist/src/core/elements/Output.d.ts.map +1 -0
- package/dist/src/core/elements/Output.js +121 -0
- package/dist/src/core/elements/Output.js.map +1 -0
- package/dist/src/core/elements/Reactive.d.ts +77 -0
- package/dist/src/core/elements/Reactive.d.ts.map +1 -0
- package/dist/src/core/elements/Reactive.js +199 -0
- package/dist/src/core/elements/Reactive.js.map +1 -0
- package/dist/src/core/elements/TextElement.d.ts +46 -0
- package/dist/src/core/elements/TextElement.d.ts.map +1 -0
- package/dist/src/core/elements/TextElement.js +94 -0
- package/dist/src/core/elements/TextElement.js.map +1 -0
- package/dist/src/core/elements/Wrapper.d.ts +50 -0
- package/dist/src/core/elements/Wrapper.d.ts.map +1 -0
- package/dist/src/core/elements/Wrapper.js +96 -0
- package/dist/src/core/elements/Wrapper.js.map +1 -0
- package/dist/src/core/elements/Yield.d.ts +34 -0
- package/dist/src/core/elements/Yield.d.ts.map +1 -0
- package/dist/src/core/elements/Yield.js +56 -0
- package/dist/src/core/elements/Yield.js.map +1 -0
- package/dist/src/core/elements/helpers.d.ts +8 -0
- package/dist/src/core/elements/helpers.d.ts.map +1 -0
- package/dist/src/core/elements/helpers.js +40 -0
- package/dist/src/core/elements/helpers.js.map +1 -0
- package/dist/src/core/elements/index.d.ts +12 -0
- package/dist/src/core/elements/index.d.ts.map +1 -0
- package/dist/src/core/elements/index.js +12 -0
- package/dist/src/core/elements/index.js.map +1 -0
- package/dist/src/core/hellpers/ApiClient.d.ts +58 -0
- package/dist/src/core/hellpers/ApiClient.d.ts.map +1 -0
- package/dist/src/core/hellpers/ApiClient.js +122 -0
- package/dist/src/core/hellpers/ApiClient.js.map +1 -0
- package/dist/src/core/hellpers/app.d.ts +3 -0
- package/dist/src/core/hellpers/app.d.ts.map +1 -0
- package/dist/src/core/hellpers/app.js +53 -0
- package/dist/src/core/hellpers/app.js.map +1 -0
- package/dist/src/core/hellpers/utils.d.ts +26 -0
- package/dist/src/core/hellpers/utils.d.ts.map +1 -0
- package/dist/src/core/hellpers/utils.js +96 -0
- package/dist/src/core/hellpers/utils.js.map +1 -0
- package/dist/src/core/routers/Router.d.ts +212 -0
- package/dist/src/core/routers/Router.d.ts.map +1 -0
- package/dist/src/core/routers/Router.js +623 -0
- package/dist/src/core/routers/Router.js.map +1 -0
- package/dist/src/core/routers/index.d.ts +3 -0
- package/dist/src/core/routers/index.d.ts.map +1 -0
- package/dist/src/core/routers/index.js +2 -0
- package/dist/src/core/routers/index.js.map +1 -0
- package/dist/src/core/services/BlockManager.d.ts +63 -0
- package/dist/src/core/services/BlockManager.d.ts.map +1 -0
- package/dist/src/core/services/BlockManager.js +191 -0
- package/dist/src/core/services/BlockManager.js.map +1 -0
- package/dist/src/core/services/DomService.d.ts +9 -0
- package/dist/src/core/services/DomService.d.ts.map +1 -0
- package/dist/src/core/services/DomService.js +18 -0
- package/dist/src/core/services/DomService.js.map +1 -0
- package/dist/src/core/services/EventService.d.ts +58 -0
- package/dist/src/core/services/EventService.d.ts.map +1 -0
- package/dist/src/core/services/EventService.js +212 -0
- package/dist/src/core/services/EventService.js.map +1 -0
- package/dist/src/core/services/HelperService.d.ts +443 -0
- package/dist/src/core/services/HelperService.d.ts.map +1 -0
- package/dist/src/core/services/HelperService.js +1650 -0
- package/dist/src/core/services/HelperService.js.map +1 -0
- package/dist/src/core/services/HttpService.d.ts +63 -0
- package/dist/src/core/services/HttpService.d.ts.map +1 -0
- package/dist/src/core/services/HttpService.js +182 -0
- package/dist/src/core/services/HttpService.js.map +1 -0
- package/dist/src/core/services/LoggerService.d.ts +56 -0
- package/dist/src/core/services/LoggerService.d.ts.map +1 -0
- package/dist/src/core/services/LoggerService.js +94 -0
- package/dist/src/core/services/LoggerService.js.map +1 -0
- package/dist/src/core/services/MarkerRegistry.d.ts +94 -0
- package/dist/src/core/services/MarkerRegistry.d.ts.map +1 -0
- package/dist/src/core/services/MarkerRegistry.js +199 -0
- package/dist/src/core/services/MarkerRegistry.js.map +1 -0
- package/dist/src/core/services/MarkerService.d.ts +299 -0
- package/dist/src/core/services/MarkerService.d.ts.map +1 -0
- package/dist/src/core/services/MarkerService.js +723 -0
- package/dist/src/core/services/MarkerService.js.map +1 -0
- package/dist/src/core/services/StorageService.d.ts +69 -0
- package/dist/src/core/services/StorageService.d.ts.map +1 -0
- package/dist/src/core/services/StorageService.js +243 -0
- package/dist/src/core/services/StorageService.js.map +1 -0
- package/dist/src/core/services/StoreService.d.ts +80 -0
- package/dist/src/core/services/StoreService.d.ts.map +1 -0
- package/dist/src/core/services/StoreService.js +301 -0
- package/dist/src/core/services/StoreService.js.map +1 -0
- package/dist/src/core/services/index.d.ts +9 -0
- package/dist/src/core/services/index.d.ts.map +1 -0
- package/dist/src/core/services/index.js +9 -0
- package/dist/src/core/services/index.js.map +1 -0
- package/dist/src/core/types/utils.d.ts +29 -0
- package/dist/src/core/types/utils.d.ts.map +1 -0
- package/dist/src/core/types/utils.js +22 -0
- package/dist/src/core/types/utils.js.map +1 -0
- package/dist/src/core/view/LoopContext.d.ts +38 -0
- package/dist/src/core/view/LoopContext.d.ts.map +1 -0
- package/dist/src/core/view/LoopContext.js +100 -0
- package/dist/src/core/view/LoopContext.js.map +1 -0
- package/dist/src/core/view/Section.d.ts +41 -0
- package/dist/src/core/view/Section.d.ts.map +1 -0
- package/dist/src/core/view/Section.js +67 -0
- package/dist/src/core/view/Section.js.map +1 -0
- package/dist/src/core/view/View.d.ts +63 -0
- package/dist/src/core/view/View.d.ts.map +1 -0
- package/dist/src/core/view/View.js +85 -0
- package/dist/src/core/view/View.js.map +1 -0
- package/dist/src/core/view/ViewController.d.ts +277 -0
- package/dist/src/core/view/ViewController.d.ts.map +1 -0
- package/dist/src/core/view/ViewController.js +862 -0
- package/dist/src/core/view/ViewController.js.map +1 -0
- package/dist/src/core/view/ViewManager.d.ts +141 -0
- package/dist/src/core/view/ViewManager.d.ts.map +1 -0
- package/dist/src/core/view/ViewManager.js +565 -0
- package/dist/src/core/view/ViewManager.js.map +1 -0
- package/dist/src/core/view/ViewState.d.ts +117 -0
- package/dist/src/core/view/ViewState.d.ts.map +1 -0
- package/dist/src/core/view/ViewState.js +410 -0
- package/dist/src/core/view/ViewState.js.map +1 -0
- package/dist/src/core/view/index.d.ts +6 -0
- package/dist/src/core/view/index.d.ts.map +1 -0
- package/dist/src/core/view/index.js +6 -0
- package/dist/src/core/view/index.js.map +1 -0
- package/index.ts +62 -0
- package/package.json +70 -0
- package/plugins.ts +77 -0
- package/src/core/app/Application.ts +410 -0
- package/src/core/bootstrap/app.ts +58 -0
- package/src/core/bootstrap/providers/ApiServiceProvider.ts +18 -0
- package/src/core/bootstrap/providers/CoreServiceProvider.ts +19 -0
- package/src/core/bootstrap/providers/HelperServiceProvider.ts +12 -0
- package/src/core/bootstrap/providers/RouteServiceProvider.ts +17 -0
- package/src/core/bootstrap/providers/ServiceProvider.ts +51 -0
- package/src/core/bootstrap/providers/ViewServiceProvider.ts +17 -0
- package/src/core/bootstrap/providers/default-providers.ts +94 -0
- package/src/core/bootstrap/providers/index.ts +9 -0
- package/src/core/bootstrap/providers/provider-order.test.ts +67 -0
- package/src/core/bootstrap/providers/provider-order.ts +66 -0
- package/src/core/cache/ViewCache.ts +102 -0
- package/src/core/cache/index.ts +1 -0
- package/src/core/contracts/ApiInterface.ts +11 -0
- package/src/core/contracts/ApplicationInterface.ts +79 -0
- package/src/core/contracts/BlockInterface.ts +76 -0
- package/src/core/contracts/ComponentInterface.ts +26 -0
- package/src/core/contracts/ElementInterface.ts +140 -0
- package/src/core/contracts/EventServiceInterface.ts +47 -0
- package/src/core/contracts/HelperInterface.ts +256 -0
- package/src/core/contracts/HttpServiceInterface.ts +51 -0
- package/src/core/contracts/LoggerServiceInterface.ts +48 -0
- package/src/core/contracts/LoopContextInterface.ts +15 -0
- package/src/core/contracts/MarkerInterface.ts +77 -0
- package/src/core/contracts/ReactiveInterface.ts +45 -0
- package/src/core/contracts/RouterInterface.ts +65 -0
- package/src/core/contracts/ServiceProviderInterface.ts +12 -0
- package/src/core/contracts/StorageServiceInterface.ts +48 -0
- package/src/core/contracts/StoreServiceInterface.ts +50 -0
- package/src/core/contracts/ViewCacheInterface.ts +14 -0
- package/src/core/contracts/ViewControllerInterface.ts +135 -0
- package/src/core/contracts/ViewInterface.ts +31 -0
- package/src/core/contracts/ViewManagerInterface.ts +45 -0
- package/src/core/contracts/ViewStateInterface.ts +47 -0
- package/src/core/contracts/common.ts +27 -0
- package/src/core/contracts/utils.ts +23 -0
- package/src/core/contracts/views.ts +23 -0
- package/src/core/elements/Block.ts +113 -0
- package/src/core/elements/BlockOutlet.ts +83 -0
- package/src/core/elements/Component.ts +114 -0
- package/src/core/elements/ElementManager.ts +48 -0
- package/src/core/elements/Fragment.ts +168 -0
- package/src/core/elements/Html.ts +364 -0
- package/src/core/elements/Output.ts +167 -0
- package/src/core/elements/Reactive.ts +253 -0
- package/src/core/elements/TextElement.ts +110 -0
- package/src/core/elements/Wrapper.ts +131 -0
- package/src/core/elements/Yield.ts +70 -0
- package/src/core/elements/helpers.ts +56 -0
- package/src/core/elements/index.ts +26 -0
- package/src/core/hellpers/ApiClient.ts +145 -0
- package/src/core/hellpers/app.ts +57 -0
- package/src/core/hellpers/utils.ts +109 -0
- package/src/core/routers/Router.ts +765 -0
- package/src/core/routers/index.ts +2 -0
- package/src/core/services/BlockManager.ts +210 -0
- package/src/core/services/DomService.ts +26 -0
- package/src/core/services/EventService.ts +266 -0
- package/src/core/services/HelperService.ts +1653 -0
- package/src/core/services/HttpService.ts +235 -0
- package/src/core/services/LoggerService.ts +139 -0
- package/src/core/services/MarkerRegistry.ts +239 -0
- package/src/core/services/MarkerService.ts +923 -0
- package/src/core/services/StorageService.ts +268 -0
- package/src/core/services/StoreService.ts +338 -0
- package/src/core/services/index.ts +8 -0
- package/src/core/types/utils.ts +30 -0
- package/src/core/view/LoopContext.ts +109 -0
- package/src/core/view/Section.ts +86 -0
- package/src/core/view/View.ts +109 -0
- package/src/core/view/ViewController.ts +1002 -0
- package/src/core/view/ViewManager.ts +700 -0
- package/src/core/view/ViewState.ts +453 -0
- package/src/core/view/index.ts +5 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { ServiceProvider } from "./ServiceProvider";
|
|
2
|
+
export declare class ViewServiceProvider extends ServiceProvider {
|
|
3
|
+
readonly name: "view";
|
|
4
|
+
readonly dependsOn: "core"[];
|
|
5
|
+
static config: Record<string, any>;
|
|
6
|
+
register(): void;
|
|
7
|
+
boot(): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=ViewServiceProvider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewServiceProvider.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ViewServiceProvider.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { ViewManager } from "../../view";
|
|
2
|
+
import { PROVIDER_NAMES } from "./provider-order";
|
|
3
|
+
import { ServiceProvider } from "./ServiceProvider";
|
|
4
|
+
export class ViewServiceProvider extends ServiceProvider {
|
|
5
|
+
constructor() {
|
|
6
|
+
super(...arguments);
|
|
7
|
+
this.name = PROVIDER_NAMES.VIEW;
|
|
8
|
+
this.dependsOn = [PROVIDER_NAMES.CORE];
|
|
9
|
+
}
|
|
10
|
+
register() {
|
|
11
|
+
this.app.set("View", new ViewManager(this.app), true);
|
|
12
|
+
}
|
|
13
|
+
boot() {
|
|
14
|
+
this.app.get("View").init(ViewServiceProvider.config);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
ViewServiceProvider.config = {};
|
|
18
|
+
//# sourceMappingURL=ViewServiceProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewServiceProvider.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/ViewServiceProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEpD,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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { NamedServiceProvider } from "./provider-order";
|
|
2
|
+
/**
|
|
3
|
+
* Tạo danh sách providers mặc định.
|
|
4
|
+
*
|
|
5
|
+
* Hỗ trợ:
|
|
6
|
+
* - Config cho service mặc định: `config.view`, `config.router`, `config.api`
|
|
7
|
+
* - Liệt kê provider class: `config.providers = [AuthServiceProvider, NotificationProvider]`
|
|
8
|
+
* - Liệt kê provider instance: `config.providers = [new AuthServiceProvider()]`
|
|
9
|
+
* - Đăng ký service đơn giản: `config.services = { Auth: AuthService, Toast: ToastService }`
|
|
10
|
+
*
|
|
11
|
+
* System providers (core, view, router, helper, api) luôn chạy trước và không thể bị ghi đè.
|
|
12
|
+
*/
|
|
13
|
+
export declare function buildDefaultProviders(config?: Record<string, any>): NamedServiceProvider[];
|
|
14
|
+
//# sourceMappingURL=default-providers.d.ts.map
|
|
@@ -0,0 +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,kBAAkB,CAAC;AA6CxE;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAM,GAAG,oBAAoB,EAAE,CAmC9F"}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
import { app } from "../../hellpers/app";
|
|
2
|
+
import { PROVIDER_NAMES } from "./provider-order";
|
|
3
|
+
import { ApiServiceProvider } from "./ApiServiceProvider";
|
|
4
|
+
import { CoreServiceProvider } from "./CoreServiceProvider";
|
|
5
|
+
import { HelperServiceProvider } from "./HelperServiceProvider";
|
|
6
|
+
import { RouteServiceProvider } from "./RouteServiceProvider";
|
|
7
|
+
import { ViewServiceProvider } from "./ViewServiceProvider";
|
|
8
|
+
/** Tên system providers — không cho phép override */
|
|
9
|
+
const SYSTEM_PROVIDER_NAMES = new Set(Object.values(PROVIDER_NAMES));
|
|
10
|
+
/** Tên system services — không cho phép ghi đè qua config.services */
|
|
11
|
+
const SYSTEM_SERVICE_KEYS = new Set(['Marker', 'Store', 'Storage', 'Event', 'Http', 'View', 'Router', 'Helper', 'API']);
|
|
12
|
+
/**
|
|
13
|
+
* Chuyển `config.services` dạng { name: Class } thành NamedServiceProvider[].
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* services: { Auth: AuthService, Toast: ToastService }
|
|
17
|
+
* → 2 providers, mỗi cái dependsOn ['core'], register = app.set(name, new Class(app))
|
|
18
|
+
*/
|
|
19
|
+
function servicesFromMap(map) {
|
|
20
|
+
const appInstance = app();
|
|
21
|
+
return Object.entries(map)
|
|
22
|
+
.filter(([name]) => {
|
|
23
|
+
if (SYSTEM_SERVICE_KEYS.has(name)) {
|
|
24
|
+
console.warn(`[Bootstrap] Cannot override system service "${name}" via config.services. Ignored.`);
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
return true;
|
|
28
|
+
})
|
|
29
|
+
.map(([name, ServiceClass]) => ({
|
|
30
|
+
name,
|
|
31
|
+
dependsOn: [PROVIDER_NAMES.CORE],
|
|
32
|
+
register() {
|
|
33
|
+
appInstance.set(name, new ServiceClass(appInstance));
|
|
34
|
+
}
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Tạo danh sách providers mặc định.
|
|
39
|
+
*
|
|
40
|
+
* Hỗ trợ:
|
|
41
|
+
* - Config cho service mặc định: `config.view`, `config.router`, `config.api`
|
|
42
|
+
* - Liệt kê provider class: `config.providers = [AuthServiceProvider, NotificationProvider]`
|
|
43
|
+
* - Liệt kê provider instance: `config.providers = [new AuthServiceProvider()]`
|
|
44
|
+
* - Đăng ký service đơn giản: `config.services = { Auth: AuthService, Toast: ToastService }`
|
|
45
|
+
*
|
|
46
|
+
* System providers (core, view, router, helper, api) luôn chạy trước và không thể bị ghi đè.
|
|
47
|
+
*/
|
|
48
|
+
export function buildDefaultProviders(config = {}) {
|
|
49
|
+
// Set static config cho default providers trước khi tạo instance
|
|
50
|
+
ViewServiceProvider.config = config.view || {};
|
|
51
|
+
RouteServiceProvider.config = config.router || {};
|
|
52
|
+
ApiServiceProvider.config = config.api || {};
|
|
53
|
+
const App = app();
|
|
54
|
+
const defaults = [
|
|
55
|
+
CoreServiceProvider,
|
|
56
|
+
ViewServiceProvider,
|
|
57
|
+
RouteServiceProvider,
|
|
58
|
+
HelperServiceProvider,
|
|
59
|
+
ApiServiceProvider,
|
|
60
|
+
].map(Cls => new Cls(App));
|
|
61
|
+
// config.services: { Name: Class } → auto-wrap providers
|
|
62
|
+
const serviceProviders = config.services
|
|
63
|
+
? servicesFromMap(config.services)
|
|
64
|
+
: [];
|
|
65
|
+
// config.providers: (ProviderClass | NamedServiceProvider)[] → instantiate classes
|
|
66
|
+
const customProviders = Array.isArray(config.providers)
|
|
67
|
+
? config.providers
|
|
68
|
+
.map((p) => typeof p === 'function' ? new p(App) : p)
|
|
69
|
+
.filter(p => {
|
|
70
|
+
if (SYSTEM_PROVIDER_NAMES.has(p.name)) {
|
|
71
|
+
console.warn(`[Bootstrap] Cannot override system provider "${p.name}". Ignored.`);
|
|
72
|
+
return false;
|
|
73
|
+
}
|
|
74
|
+
return true;
|
|
75
|
+
})
|
|
76
|
+
: [];
|
|
77
|
+
return [...defaults, ...serviceProviders, ...customProviders];
|
|
78
|
+
}
|
|
79
|
+
//# sourceMappingURL=default-providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"default-providers.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/default-providers.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AACzC,OAAO,EAAwB,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAO5D,qDAAqD;AACrD,MAAM,qBAAqB,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CAAC;AAErE,sEAAsE;AACtE,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC,CAAC;AAExH;;;;;;GAMG;AACH,SAAS,eAAe,CAAC,GAA2D;IAChF,MAAM,WAAW,GAAG,GAAG,EAAwB,CAAC;IAChD,OAAO,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC;SACrB,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE;QACf,IAAI,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAChC,OAAO,CAAC,IAAI,CAAC,+CAA+C,IAAI,iCAAiC,CAAC,CAAC;YACnG,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,OAAO,IAAI,CAAC;IAChB,CAAC,CAAC;SACD,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,EAAE,EAAE,CAAC,CAAC;QAC5B,IAAI;QACJ,SAAS,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC;QAChC,QAAQ;YACJ,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;QACzD,CAAC;KACJ,CAAC,CAAC,CAAC;AACZ,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAA8B,EAAE;IAClE,iEAAiE;IACjE,mBAAmB,CAAC,MAAM,GAAG,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAC/C,oBAAoB,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC;IAClD,kBAAkB,CAAC,MAAM,GAAG,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC;IAC7C,MAAM,GAAG,GAAG,GAAG,EAAwB,CAAC;IACxC,MAAM,QAAQ,GAA2B;QACrC,mBAAmB;QACnB,mBAAmB;QACnB,oBAAoB;QACpB,qBAAqB;QACrB,kBAAkB;KACrB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3B,yDAAyD;IACzD,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ;QACpC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,QAAQ,CAAC;QAClC,CAAC,CAAC,EAAE,CAAC;IAET,mFAAmF;IACnF,MAAM,eAAe,GAA2B,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC;QAC3E,CAAC,CAAC,MAAM,CAAC,SAAS;aACb,GAAG,CAAC,CAAC,CAAuC,EAAE,EAAE,CAC7C,OAAO,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAC3C;aACA,MAAM,CAAC,CAAC,CAAC,EAAE;YACR,IAAI,qBAAqB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAW,CAAC,EAAE,CAAC;gBAC3C,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC,IAAI,aAAa,CAAC,CAAC;gBAClF,OAAO,KAAK,CAAC;YACjB,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC,CAAC;QACN,CAAC,CAAC,EAAE,CAAC;IAET,OAAO,CAAC,GAAG,QAAQ,EAAE,GAAG,gBAAgB,EAAE,GAAG,eAAe,CAAC,CAAC;AAClE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { NamedServiceProvider, resolveProviderOrder, PROVIDER_NAMES } from './provider-order';
|
|
2
|
+
export type { ProviderName } from './provider-order';
|
|
3
|
+
export { ServiceProvider } from './ServiceProvider';
|
|
4
|
+
export { buildDefaultProviders } from './default-providers';
|
|
5
|
+
export { CoreServiceProvider } from './CoreServiceProvider';
|
|
6
|
+
export { ViewServiceProvider } from './ViewServiceProvider';
|
|
7
|
+
export { RouteServiceProvider } from './RouteServiceProvider';
|
|
8
|
+
export { HelperServiceProvider } from './HelperServiceProvider';
|
|
9
|
+
export { ApiServiceProvider } from './ApiServiceProvider';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,oBAAoB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAC9F,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export { resolveProviderOrder, PROVIDER_NAMES } from './provider-order';
|
|
2
|
+
export { ServiceProvider } from './ServiceProvider';
|
|
3
|
+
export { buildDefaultProviders } from './default-providers';
|
|
4
|
+
export { CoreServiceProvider } from './CoreServiceProvider';
|
|
5
|
+
export { ViewServiceProvider } from './ViewServiceProvider';
|
|
6
|
+
export { RouteServiceProvider } from './RouteServiceProvider';
|
|
7
|
+
export { HelperServiceProvider } from './HelperServiceProvider';
|
|
8
|
+
export { ApiServiceProvider } from './ApiServiceProvider';
|
|
9
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,oBAAoB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAE9F,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ServiceProviderInterface } from "../../contracts/ServiceProviderInterface";
|
|
2
|
+
/**
|
|
3
|
+
* Tên các provider mặc định — dùng constant thay vì magic string.
|
|
4
|
+
* Custom providers có thể dùng tên khác hoặc override tên mặc định.
|
|
5
|
+
*/
|
|
6
|
+
export declare const PROVIDER_NAMES: {
|
|
7
|
+
readonly CORE: "core";
|
|
8
|
+
readonly VIEW: "view";
|
|
9
|
+
readonly ROUTER: "router";
|
|
10
|
+
readonly HELPER: "helper";
|
|
11
|
+
readonly API: "api";
|
|
12
|
+
};
|
|
13
|
+
export type ProviderName = typeof PROVIDER_NAMES[keyof typeof PROVIDER_NAMES];
|
|
14
|
+
export type NamedServiceProvider = ServiceProviderInterface & {
|
|
15
|
+
name: string;
|
|
16
|
+
dependsOn?: string[];
|
|
17
|
+
};
|
|
18
|
+
export declare function resolveProviderOrder(providers: ServiceProviderInterface[]): ServiceProviderInterface[];
|
|
19
|
+
//# sourceMappingURL=provider-order.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-order.d.ts","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/provider-order.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,0CAA0C,CAAC;AAEzF;;;GAGG;AACH,eAAO,MAAM,cAAc;;;;;;CAMjB,CAAC;AAEX,MAAM,MAAM,YAAY,GAAG,OAAO,cAAc,CAAC,MAAM,OAAO,cAAc,CAAC,CAAC;AAE9E,MAAM,MAAM,oBAAoB,GAAG,wBAAwB,GAAG;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACxB,CAAC;AAEF,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,wBAAwB,EAAE,GAAG,wBAAwB,EAAE,CA4CtG"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tên các provider mặc định — dùng constant thay vì magic string.
|
|
3
|
+
* Custom providers có thể dùng tên khác hoặc override tên mặc định.
|
|
4
|
+
*/
|
|
5
|
+
export const PROVIDER_NAMES = {
|
|
6
|
+
CORE: 'core',
|
|
7
|
+
VIEW: 'view',
|
|
8
|
+
ROUTER: 'router',
|
|
9
|
+
HELPER: 'helper',
|
|
10
|
+
API: 'api',
|
|
11
|
+
};
|
|
12
|
+
export function resolveProviderOrder(providers) {
|
|
13
|
+
const providerMap = new Map();
|
|
14
|
+
for (const provider of providers) {
|
|
15
|
+
if (!provider.name) {
|
|
16
|
+
throw new Error(`[Bootstrap] Provider name is required.`);
|
|
17
|
+
}
|
|
18
|
+
if (providerMap.has(provider.name)) {
|
|
19
|
+
throw new Error(`[Bootstrap] Duplicate provider name detected: "${provider.name}".`);
|
|
20
|
+
}
|
|
21
|
+
providerMap.set(provider.name, provider);
|
|
22
|
+
}
|
|
23
|
+
const visited = new Set();
|
|
24
|
+
const inStack = new Set();
|
|
25
|
+
const ordered = [];
|
|
26
|
+
const visit = (name) => {
|
|
27
|
+
if (visited.has(name))
|
|
28
|
+
return;
|
|
29
|
+
if (inStack.has(name)) {
|
|
30
|
+
throw new Error(`[Bootstrap] Circular service provider dependency detected at "${name}".`);
|
|
31
|
+
}
|
|
32
|
+
const provider = providerMap.get(name);
|
|
33
|
+
if (!provider) {
|
|
34
|
+
throw new Error(`[Bootstrap] Missing provider dependency: "${name}".`);
|
|
35
|
+
}
|
|
36
|
+
inStack.add(name);
|
|
37
|
+
for (const dep of provider.dependsOn ?? []) {
|
|
38
|
+
visit(dep);
|
|
39
|
+
}
|
|
40
|
+
inStack.delete(name);
|
|
41
|
+
visited.add(name);
|
|
42
|
+
ordered.push(provider);
|
|
43
|
+
};
|
|
44
|
+
for (const provider of providers) {
|
|
45
|
+
if (provider.name) {
|
|
46
|
+
visit(provider.name);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return ordered;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=provider-order.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"provider-order.js","sourceRoot":"","sources":["../../../../../src/core/bootstrap/providers/provider-order.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG;IAC1B,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,QAAQ;IAChB,MAAM,EAAE,QAAQ;IAChB,GAAG,EAAE,KAAK;CACJ,CAAC;AASX,MAAM,UAAU,oBAAoB,CAAC,SAAqC;IACtE,MAAM,WAAW,GAAG,IAAI,GAAG,EAAoC,CAAC;IAChE,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC9D,CAAC;QACD,IAAI,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YACjC,MAAM,IAAI,KAAK,CAAC,kDAAkD,QAAQ,CAAC,IAAI,IAAI,CAAC,CAAC;QACzF,CAAC;QACD,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7C,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,MAAM,OAAO,GAA+B,EAAE,CAAC;IAE/C,MAAM,KAAK,GAAG,CAAC,IAAY,EAAQ,EAAE;QACjC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;YAAE,OAAO;QAC9B,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CAAC,iEAAiE,IAAI,IAAI,CAAC,CAAC;QAC/F,CAAC;QAED,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,6CAA6C,IAAI,IAAI,CAAC,CAAC;QAC3E,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,SAAS,IAAI,EAAE,EAAE,CAAC;YACzC,KAAK,CAAC,GAAG,CAAC,CAAC;QACf,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAErB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAClB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAC3B,CAAC,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC/B,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACzB,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ViewCacheInterface } from "../contracts/ViewCacheInterface";
|
|
2
|
+
/**
|
|
3
|
+
* ViewCache — stores rendered view DOM for instant restore on navigation.
|
|
4
|
+
*
|
|
5
|
+
* When a user navigates away from a page, the view's DOM is detached and
|
|
6
|
+
* stored in a DocumentFragment. When navigating back, the DOM is
|
|
7
|
+
* re-attached instead of re-rendered — preserving form inputs, scroll
|
|
8
|
+
* positions, and in-progress user work.
|
|
9
|
+
*
|
|
10
|
+
* Used by the router/BlockManager to implement "keep-alive" behavior.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* // Router navigates away from 'home'
|
|
14
|
+
* cache.store('home', homeRootElement);
|
|
15
|
+
*
|
|
16
|
+
* // Router navigates back to 'home'
|
|
17
|
+
* const cached = cache.retrieve('home');
|
|
18
|
+
* if (cached) container.appendChild(cached); // instant restore!
|
|
19
|
+
*/
|
|
20
|
+
export declare class ViewCache implements ViewCacheInterface {
|
|
21
|
+
private cache;
|
|
22
|
+
/** Maximum cached views (LRU eviction when exceeded) */
|
|
23
|
+
private maxSize;
|
|
24
|
+
/** Access order tracking for LRU */
|
|
25
|
+
private accessOrder;
|
|
26
|
+
constructor(maxSize?: number);
|
|
27
|
+
/** Store a view's DOM state */
|
|
28
|
+
store(viewId: string, element: HTMLElement | DocumentFragment): void;
|
|
29
|
+
/** Retrieve cached DOM — returns null if not cached */
|
|
30
|
+
retrieve(viewId: string): HTMLElement | DocumentFragment | null;
|
|
31
|
+
/** Check if a view is cached */
|
|
32
|
+
has(viewId: string): boolean;
|
|
33
|
+
/** Remove a specific view from cache */
|
|
34
|
+
remove(viewId: string): void;
|
|
35
|
+
/** Clear all cached views */
|
|
36
|
+
clear(): void;
|
|
37
|
+
/** Get number of cached views */
|
|
38
|
+
get size(): number;
|
|
39
|
+
/** Get all cached view IDs */
|
|
40
|
+
keys(): string[];
|
|
41
|
+
/** Move viewId to end of access order (most recently used) */
|
|
42
|
+
private touchAccess;
|
|
43
|
+
/** Remove the least recently used cached view */
|
|
44
|
+
private evictOldest;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=ViewCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewCache.d.ts","sourceRoot":"","sources":["../../../../src/core/cache/ViewCache.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AAE1E;;;;;;;;;;;;;;;;;GAiBG;AACH,qBAAa,SAAU,YAAW,kBAAkB;IAChD,OAAO,CAAC,KAAK,CAA0D;IAEvE,wDAAwD;IACxD,OAAO,CAAC,OAAO,CAAS;IAExB,oCAAoC;IACpC,OAAO,CAAC,WAAW,CAAgB;gBAEvB,OAAO,GAAE,MAAW;IAIhC,+BAA+B;IAC/B,KAAK,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,gBAAgB,GAAG,IAAI;IAiBpE,uDAAuD;IACvD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,WAAW,GAAG,gBAAgB,GAAG,IAAI;IAQ/D,gCAAgC;IAChC,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAI5B,wCAAwC;IACxC,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAK5B,6BAA6B;IAC7B,KAAK,IAAI,IAAI;IAKb,iCAAiC;IACjC,IAAI,IAAI,IAAI,MAAM,CAEjB;IAED,8BAA8B;IAC9B,IAAI,IAAI,MAAM,EAAE;IAMhB,8DAA8D;IAC9D,OAAO,CAAC,WAAW;IAKnB,iDAAiD;IACjD,OAAO,CAAC,WAAW;CAKtB"}
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ViewCache — stores rendered view DOM for instant restore on navigation.
|
|
3
|
+
*
|
|
4
|
+
* When a user navigates away from a page, the view's DOM is detached and
|
|
5
|
+
* stored in a DocumentFragment. When navigating back, the DOM is
|
|
6
|
+
* re-attached instead of re-rendered — preserving form inputs, scroll
|
|
7
|
+
* positions, and in-progress user work.
|
|
8
|
+
*
|
|
9
|
+
* Used by the router/BlockManager to implement "keep-alive" behavior.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* // Router navigates away from 'home'
|
|
13
|
+
* cache.store('home', homeRootElement);
|
|
14
|
+
*
|
|
15
|
+
* // Router navigates back to 'home'
|
|
16
|
+
* const cached = cache.retrieve('home');
|
|
17
|
+
* if (cached) container.appendChild(cached); // instant restore!
|
|
18
|
+
*/
|
|
19
|
+
export class ViewCache {
|
|
20
|
+
constructor(maxSize = 10) {
|
|
21
|
+
this.cache = new Map();
|
|
22
|
+
/** Access order tracking for LRU */
|
|
23
|
+
this.accessOrder = [];
|
|
24
|
+
this.maxSize = maxSize;
|
|
25
|
+
}
|
|
26
|
+
/** Store a view's DOM state */
|
|
27
|
+
store(viewId, element) {
|
|
28
|
+
// If already cached, update
|
|
29
|
+
if (this.cache.has(viewId)) {
|
|
30
|
+
this.cache.set(viewId, element);
|
|
31
|
+
this.touchAccess(viewId);
|
|
32
|
+
return;
|
|
33
|
+
}
|
|
34
|
+
// Evict oldest if at capacity
|
|
35
|
+
if (this.cache.size >= this.maxSize) {
|
|
36
|
+
this.evictOldest();
|
|
37
|
+
}
|
|
38
|
+
this.cache.set(viewId, element);
|
|
39
|
+
this.accessOrder.push(viewId);
|
|
40
|
+
}
|
|
41
|
+
/** Retrieve cached DOM — returns null if not cached */
|
|
42
|
+
retrieve(viewId) {
|
|
43
|
+
const cached = this.cache.get(viewId) ?? null;
|
|
44
|
+
if (cached) {
|
|
45
|
+
this.touchAccess(viewId);
|
|
46
|
+
}
|
|
47
|
+
return cached;
|
|
48
|
+
}
|
|
49
|
+
/** Check if a view is cached */
|
|
50
|
+
has(viewId) {
|
|
51
|
+
return this.cache.has(viewId);
|
|
52
|
+
}
|
|
53
|
+
/** Remove a specific view from cache */
|
|
54
|
+
remove(viewId) {
|
|
55
|
+
this.cache.delete(viewId);
|
|
56
|
+
this.accessOrder = this.accessOrder.filter(id => id !== viewId);
|
|
57
|
+
}
|
|
58
|
+
/** Clear all cached views */
|
|
59
|
+
clear() {
|
|
60
|
+
this.cache.clear();
|
|
61
|
+
this.accessOrder = [];
|
|
62
|
+
}
|
|
63
|
+
/** Get number of cached views */
|
|
64
|
+
get size() {
|
|
65
|
+
return this.cache.size;
|
|
66
|
+
}
|
|
67
|
+
/** Get all cached view IDs */
|
|
68
|
+
keys() {
|
|
69
|
+
return [...this.cache.keys()];
|
|
70
|
+
}
|
|
71
|
+
// ─── Private ────────────────────────────────────────────────
|
|
72
|
+
/** Move viewId to end of access order (most recently used) */
|
|
73
|
+
touchAccess(viewId) {
|
|
74
|
+
this.accessOrder = this.accessOrder.filter(id => id !== viewId);
|
|
75
|
+
this.accessOrder.push(viewId);
|
|
76
|
+
}
|
|
77
|
+
/** Remove the least recently used cached view */
|
|
78
|
+
evictOldest() {
|
|
79
|
+
if (this.accessOrder.length === 0)
|
|
80
|
+
return;
|
|
81
|
+
const oldest = this.accessOrder.shift();
|
|
82
|
+
this.cache.delete(oldest);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
//# sourceMappingURL=ViewCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ViewCache.js","sourceRoot":"","sources":["../../../../src/core/cache/ViewCache.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,OAAO,SAAS;IASlB,YAAY,UAAkB,EAAE;QARxB,UAAK,GAAgD,IAAI,GAAG,EAAE,CAAC;QAKvE,oCAAoC;QAC5B,gBAAW,GAAa,EAAE,CAAC;QAG/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IAED,+BAA+B;IAC/B,KAAK,CAAC,MAAc,EAAE,OAAuC;QACzD,4BAA4B;QAC5B,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAChC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;YACzB,OAAO;QACX,CAAC;QAED,8BAA8B;QAC9B,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,IAAI,CAAC,WAAW,EAAE,CAAC;QACvB,CAAC;QAED,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,uDAAuD;IACvD,QAAQ,CAAC,MAAc;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;QAC9C,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED,gCAAgC;IAChC,GAAG,CAAC,MAAc;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,wCAAwC;IACxC,MAAM,CAAC,MAAc;QACjB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;IACpE,CAAC;IAED,6BAA6B;IAC7B,KAAK;QACD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACnB,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;IAC1B,CAAC;IAED,iCAAiC;IACjC,IAAI,IAAI;QACJ,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC;IAC3B,CAAC;IAED,8BAA8B;IAC9B,IAAI;QACA,OAAO,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAClC,CAAC;IAED,+DAA+D;IAE/D,8DAA8D;IACtD,WAAW,CAAC,MAAc;QAC9B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,KAAK,MAAM,CAAC,CAAC;QAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAClC,CAAC;IAED,iDAAiD;IACzC,WAAW;QACf,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO;QAC1C,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAG,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;CACJ"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/core/cache/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import { HttpService } from '../services/HttpService.js';
|
|
2
|
+
export interface APIClientInterface {
|
|
3
|
+
init(config: Record<string, any>): void;
|
|
4
|
+
getViewData<T = any>(uri: string): Promise<T>;
|
|
5
|
+
getSystemConfig<T = any>(): Promise<T>;
|
|
6
|
+
getSystemData<T = any>(): Promise<T>;
|
|
7
|
+
getURIData<T = any>(): Promise<T>;
|
|
8
|
+
setEndpoint(key: string, value: string): void;
|
|
9
|
+
getHttpService(): HttpService;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=ApiInterface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiInterface.d.ts","sourceRoot":"","sources":["../../../../src/core/contracts/ApiInterface.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IAC/B,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,IAAI,CAAC;IACxC,WAAW,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC9C,eAAe,CAAC,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACvC,aAAa,CAAC,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IACrC,UAAU,CAAC,CAAC,GAAG,GAAG,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;IAClC,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9C,cAAc,IAAI,WAAW,CAAC;CACjC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApiInterface.js","sourceRoot":"","sources":["../../../../src/core/contracts/ApiInterface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { RouterInterface, ViewManagerInterface } from "./utils";
|
|
2
|
+
import type { HelperInterface } from "./HelperInterface";
|
|
3
|
+
import type { EventServiceInterface } from "./EventServiceInterface";
|
|
4
|
+
import type { HttpServiceInterface } from "./HttpServiceInterface";
|
|
5
|
+
import type { StoreServiceInterface } from "./StoreServiceInterface";
|
|
6
|
+
import type { StorageServiceInterface } from "./StorageServiceInterface";
|
|
7
|
+
import type { LoggerServiceInterface } from "./LoggerServiceInterface";
|
|
8
|
+
import { APIClientInterface } from "./ApiInterface";
|
|
9
|
+
import type { ServiceProviderInterface } from "./ServiceProviderInterface";
|
|
10
|
+
import { OneObjectType } from "../types/utils";
|
|
11
|
+
export interface ApplicationInterface {
|
|
12
|
+
[key: string]: any;
|
|
13
|
+
transient<T>(key: ServiceKey, value: any): this;
|
|
14
|
+
bind<T>(key: ServiceKey, value: any): this;
|
|
15
|
+
singleton<T>(key: ServiceKey, value?: any): this;
|
|
16
|
+
instance<T>(key: ServiceKey, value: T): this;
|
|
17
|
+
alias(alias: string | symbol, key: ServiceKey): this;
|
|
18
|
+
make<T>(key: ServiceKey, defaultValue?: T): T;
|
|
19
|
+
resolve<T>(key: ServiceKey, defaultValue?: T): T;
|
|
20
|
+
has(key: ServiceKey): boolean;
|
|
21
|
+
bound(key: ServiceKey): boolean;
|
|
22
|
+
register(provider: ServiceProviderInterface): this;
|
|
23
|
+
boot(): void;
|
|
24
|
+
flush(): void;
|
|
25
|
+
destroy(): void;
|
|
26
|
+
set<T = any>(name: string, method: T, isOne?: boolean): void;
|
|
27
|
+
setMethod(name: string, method: Function, isOne?: boolean): void;
|
|
28
|
+
get<T = any>(name: string): T;
|
|
29
|
+
oneType?: OneObjectType;
|
|
30
|
+
isInitialized: boolean;
|
|
31
|
+
isStarted: boolean;
|
|
32
|
+
View: ViewManagerInterface;
|
|
33
|
+
Router: RouterInterface;
|
|
34
|
+
Helper: HelperInterface;
|
|
35
|
+
Events: EventServiceInterface;
|
|
36
|
+
Http: HttpServiceInterface;
|
|
37
|
+
API: APIClientInterface;
|
|
38
|
+
Store: StoreServiceInterface;
|
|
39
|
+
Storage: StorageServiceInterface;
|
|
40
|
+
Logger: LoggerServiceInterface;
|
|
41
|
+
}
|
|
42
|
+
/** Type cho helper function app() — callable + có methods */
|
|
43
|
+
export interface AppFactory {
|
|
44
|
+
<T>(): T;
|
|
45
|
+
(): ApplicationInterface;
|
|
46
|
+
<T>(key: ServiceKey): T;
|
|
47
|
+
(key: ServiceKey, value: any): ApplicationInterface;
|
|
48
|
+
make<T>(name: ServiceKey): T;
|
|
49
|
+
make<T>(name: ServiceKey, defaultValue: T): T;
|
|
50
|
+
instance<T>(name: ServiceKey, value: T): ApplicationInterface;
|
|
51
|
+
resolve<T>(name: ServiceKey): T;
|
|
52
|
+
resolve<T>(name: ServiceKey, defaultValue: T): T;
|
|
53
|
+
register<T>(name: ServiceKey, factory: () => T): ApplicationInterface;
|
|
54
|
+
bind<T>(name: ServiceKey, factory: () => T): ApplicationInterface;
|
|
55
|
+
singleton<T>(name: ServiceKey, factory: () => T): ApplicationInterface;
|
|
56
|
+
has(name: ServiceKey): boolean;
|
|
57
|
+
flush(): void;
|
|
58
|
+
destroy(): void;
|
|
59
|
+
}
|
|
60
|
+
/** Định danh duy nhất cho service: string, symbol, hoặc class constructor */
|
|
61
|
+
export type ServiceKey<T = any> = string | symbol | (new (...args: any[]) => T);
|
|
62
|
+
/** Factory function nhận app (container) để resolve dependencies */
|
|
63
|
+
export type ServiceFactory<T> = (app: ApplicationInterface) => T;
|
|
64
|
+
/** Giá trị có thể bind: factory function hoặc class constructor */
|
|
65
|
+
export type ServiceBinding<T = any> = ServiceFactory<T> | (new (...args: any[]) => T);
|
|
66
|
+
//# sourceMappingURL=ApplicationInterface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationInterface.d.ts","sourceRoot":"","sources":["../../../../src/core/contracts/ApplicationInterface.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ApplicationInterface.js","sourceRoot":"","sources":["../../../../src/core/contracts/ApplicationInterface.ts"],"names":[],"mappings":"AAAA,oEAAoE"}
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import type { OneObjectType } from "../types/utils";
|
|
2
|
+
import type { ViewControllerInterface } from "./ViewControllerInterface";
|
|
3
|
+
import type { HtmlInterface, FragmentInterface, OneChildrenFactoryOutput, OneNodeInterface } from "./ElementInterface";
|
|
4
|
+
import { InitMode } from "./common";
|
|
5
|
+
export type BlockConstructorParams = {
|
|
6
|
+
ctx: ViewControllerInterface;
|
|
7
|
+
name: string;
|
|
8
|
+
viewId?: string | null;
|
|
9
|
+
contentRenderFactory?: BlockRenderFactory;
|
|
10
|
+
id?: string | null;
|
|
11
|
+
initMode?: InitMode;
|
|
12
|
+
};
|
|
13
|
+
export interface BlockInterface {
|
|
14
|
+
oneType: OneObjectType;
|
|
15
|
+
/** Unique block slot name (e.g. 'content', 'sidebar') */
|
|
16
|
+
name: string;
|
|
17
|
+
id: string;
|
|
18
|
+
ctx: ViewControllerInterface;
|
|
19
|
+
viewId: string | null;
|
|
20
|
+
openTag: Comment;
|
|
21
|
+
closeTag: Comment;
|
|
22
|
+
fragment: FragmentInterface | null;
|
|
23
|
+
parentElement: HtmlInterface | null;
|
|
24
|
+
domChildren: Node[];
|
|
25
|
+
isOneElement: boolean;
|
|
26
|
+
isOneBlock: boolean;
|
|
27
|
+
initMode?: InitMode;
|
|
28
|
+
/** Initialize the block (e.g. during hydration) */
|
|
29
|
+
init(): void;
|
|
30
|
+
/** Render the block's content into the parent element */
|
|
31
|
+
render(): void;
|
|
32
|
+
/** Mount the block's content into the DOM, finding matching outlets */
|
|
33
|
+
mount(mountCtx: ViewControllerInterface, parentElement: HtmlInterface): any;
|
|
34
|
+
/** Unmount the block's content from the DOM */
|
|
35
|
+
unmount(): void;
|
|
36
|
+
/** Destroy the block and clean up resources */
|
|
37
|
+
destroy(): void;
|
|
38
|
+
/** Update the block's content (e.g. on state change) */
|
|
39
|
+
update(): void;
|
|
40
|
+
/** Set the block's parent element (used for mounting) */
|
|
41
|
+
setParentElement(parentElement: HtmlInterface | null): void;
|
|
42
|
+
contentRenderFactory: BlockRenderFactory | null;
|
|
43
|
+
}
|
|
44
|
+
export interface BlockOutletInterface extends OneNodeInterface {
|
|
45
|
+
oneType: OneObjectType;
|
|
46
|
+
id: string;
|
|
47
|
+
name: string;
|
|
48
|
+
parent: HtmlInterface | null;
|
|
49
|
+
openTag: Comment;
|
|
50
|
+
closeTag: Comment;
|
|
51
|
+
parentElement: HtmlInterface | null;
|
|
52
|
+
ctx: ViewControllerInterface;
|
|
53
|
+
initMode: InitMode;
|
|
54
|
+
isOneElement: boolean;
|
|
55
|
+
isOneBlockOutlet: boolean;
|
|
56
|
+
/** Render the outlet's markers into the parent element */
|
|
57
|
+
render(): any;
|
|
58
|
+
hydrate(): any;
|
|
59
|
+
destroy(): any;
|
|
60
|
+
start(): any;
|
|
61
|
+
stop(): any;
|
|
62
|
+
setParentElement(parentElement: HtmlInterface | null): any;
|
|
63
|
+
}
|
|
64
|
+
export interface BlockManagerInterface {
|
|
65
|
+
}
|
|
66
|
+
export type BlockRenderFactory = (parentElement: HtmlInterface) => OneChildrenFactoryOutput;
|
|
67
|
+
//# sourceMappingURL=BlockInterface.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockInterface.d.ts","sourceRoot":"","sources":["../../../../src/core/contracts/BlockInterface.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACzE,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACvH,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AAGpC,MAAM,MAAM,sBAAsB,GAAG;IACjC,GAAG,EAAE,uBAAuB,CAAC;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,oBAAoB,CAAC,EAAE,kBAAkB,CAAC;IAC1C,EAAE,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACvB,CAAC;AACF,MAAM,WAAW,cAAc;IAC3B,OAAO,EAAE,aAAa,CAAC;IACvB,yDAAyD;IACzD,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,GAAG,EAAE,uBAAuB,CAAC;IAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;IACnC,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,IAAI,EAAE,CAAC;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACnB,mDAAmD;IACpD,IAAI,IAAI,IAAI,CAAC;IACZ,yDAAyD;IAC1D,MAAM,IAAI,IAAI,CAAC;IACd,uEAAuE;IACxE,KAAK,CAAC,QAAQ,EAAE,uBAAuB,EAAE,aAAa,EAAE,aAAa,GAAG,GAAG,CAAC;IAC3E,+CAA+C;IAChD,OAAO,IAAI,IAAI,CAAC;IACf,+CAA+C;IAChD,OAAO,IAAI,IAAI,CAAC;IACf,wDAAwD;IACzD,MAAM,IAAI,IAAI,CAAC;IACd,yDAAyD;IAC1D,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,GAAG,IAAI,CAAC;IAE5D,oBAAoB,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAEnD;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC1D,OAAO,EAAE,aAAa,CAAC;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,aAAa,GAAG,IAAI,CAAC;IAC7B,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,GAAG,EAAE,uBAAuB,CAAC;IAC7B,QAAQ,EAAE,QAAQ,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,gBAAgB,EAAE,OAAO,CAAC;IACzB,0DAA0D;IAC3D,MAAM,IAAI,GAAG,CAAC;IACd,OAAO,IAAI,GAAG,CAAC;IACf,OAAO,IAAI,GAAG,CAAC;IACf,KAAK,IAAI,GAAG,CAAC;IACb,IAAI,IAAI,GAAG,CAAC;IACZ,gBAAgB,CAAC,aAAa,EAAE,aAAa,GAAG,IAAI,GAAG,GAAG,CAAC;CAC9D;AAED,MAAM,WAAW,qBAAqB;CAErC;AAID,MAAM,MAAM,kBAAkB,GAAG,CAAC,aAAa,EAAE,aAAa,KAAK,wBAAwB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockInterface.js","sourceRoot":"","sources":["../../../../src/core/contracts/BlockInterface.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { OneObjectType } from "../types/utils";
|
|
2
|
+
import type { ViewControllerInterface } from "./ViewControllerInterface";
|
|
3
|
+
import type { ViewInterface } from "./ViewInterface";
|
|
4
|
+
import type { HtmlInterface } from "./ElementInterface";
|
|
5
|
+
export interface ComponentInterface {
|
|
6
|
+
oneType: OneObjectType;
|
|
7
|
+
id: string;
|
|
8
|
+
ctx: ViewControllerInterface;
|
|
9
|
+
viewRef: ViewInterface | null;
|
|
10
|
+
parent: HtmlInterface | null;
|
|
11
|
+
data: Record<string, any>;
|
|
12
|
+
openTag: Comment;
|
|
13
|
+
closeTag: Comment;
|
|
14
|
+
stateKeys: string[];
|
|
15
|
+
subscribeFn: () => void;
|
|
16
|
+
unsubscribeFn: () => void;
|
|
17
|
+
render(): void;
|
|
18
|
+
destroy(): void;
|
|
19
|
+
setParent(parent: HtmlInterface | null): void;
|
|
20
|
+
isOneElement: boolean;
|
|
21
|
+
isOneComponent: boolean;
|
|
22
|
+
[key: string]: any;
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=ComponentInterface.d.ts.map
|