jopijs 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +134 -0
- package/bin/jopib.js +4 -0
- package/bin/jopin.js +4 -0
- package/dist/@bundler/_logs.d.ts +2 -0
- package/dist/@bundler/_logs.js +4 -0
- package/dist/@bundler/_logs.js.map +1 -0
- package/dist/@bundler/core.d.ts +1 -0
- package/dist/@bundler/core.js +34 -0
- package/dist/@bundler/core.js.map +1 -0
- package/dist/@bundler/esbuild.d.ts +6 -0
- package/dist/@bundler/esbuild.js +111 -0
- package/dist/@bundler/esbuild.js.map +1 -0
- package/dist/@bundler/index.d.ts +2 -0
- package/dist/@bundler/index.js +3 -0
- package/dist/@bundler/index.js.map +1 -0
- package/dist/@bundler/plugins.d.ts +13 -0
- package/dist/@bundler/plugins.js +145 -0
- package/dist/@bundler/plugins.js.map +1 -0
- package/dist/@bundler/tailwind.d.ts +3 -0
- package/dist/@bundler/tailwind.js +119 -0
- package/dist/@bundler/tailwind.js.map +1 -0
- package/dist/@core/PageComponent.d.ts +6 -0
- package/dist/@core/PageComponent.js +10 -0
- package/dist/@core/PageComponent.js.map +1 -0
- package/dist/@core/_logs.d.ts +7 -0
- package/dist/@core/_logs.js +9 -0
- package/dist/@core/_logs.js.map +1 -0
- package/dist/@core/automaticStartStop.d.ts +25 -0
- package/dist/@core/automaticStartStop.js +106 -0
- package/dist/@core/automaticStartStop.js.map +1 -0
- package/dist/@core/browserCacheControl.d.ts +21 -0
- package/dist/@core/browserCacheControl.js +17 -0
- package/dist/@core/browserCacheControl.js.map +1 -0
- package/dist/@core/bundler/bundler.d.ts +22 -0
- package/dist/@core/bundler/bundler.js +90 -0
- package/dist/@core/bundler/bundler.js.map +1 -0
- package/dist/@core/bundler/common.d.ts +2 -0
- package/dist/@core/bundler/common.js +17 -0
- package/dist/@core/bundler/common.js.map +1 -0
- package/dist/@core/bundler/config.d.ts +20 -0
- package/dist/@core/bundler/config.js +11 -0
- package/dist/@core/bundler/config.js.map +1 -0
- package/dist/@core/bundler/extraContent.d.ts +6 -0
- package/dist/@core/bundler/extraContent.js +27 -0
- package/dist/@core/bundler/extraContent.js.map +1 -0
- package/dist/@core/bundler/pagesGenerator.d.ts +1 -0
- package/dist/@core/bundler/pagesGenerator.js +173 -0
- package/dist/@core/bundler/pagesGenerator.js.map +1 -0
- package/dist/@core/bundler/server.d.ts +8 -0
- package/dist/@core/bundler/server.js +35 -0
- package/dist/@core/bundler/server.js.map +1 -0
- package/dist/@core/caches/InMemoryCache.d.ts +35 -0
- package/dist/@core/caches/InMemoryCache.js +353 -0
- package/dist/@core/caches/InMemoryCache.js.map +1 -0
- package/dist/@core/caches/SimpleFileCache.d.ts +18 -0
- package/dist/@core/caches/SimpleFileCache.js +171 -0
- package/dist/@core/caches/SimpleFileCache.js.map +1 -0
- package/dist/@core/caches/cache.d.ts +36 -0
- package/dist/@core/caches/cache.js +33 -0
- package/dist/@core/caches/cache.js.map +1 -0
- package/dist/@core/caches/webSiteMirrorCache.d.ts +16 -0
- package/dist/@core/caches/webSiteMirrorCache.js +81 -0
- package/dist/@core/caches/webSiteMirrorCache.js.map +1 -0
- package/dist/@core/gzip.d.ts +4 -0
- package/dist/@core/gzip.js +31 -0
- package/dist/@core/gzip.js.map +1 -0
- package/dist/@core/index.d.ts +18 -0
- package/dist/@core/index.js +19 -0
- package/dist/@core/index.js.map +1 -0
- package/dist/@core/internalTools.d.ts +14 -0
- package/dist/@core/internalTools.js +79 -0
- package/dist/@core/internalTools.js.map +1 -0
- package/dist/@core/jQuery.d.ts +5 -0
- package/dist/@core/jQuery.js +18 -0
- package/dist/@core/jQuery.js.map +1 -0
- package/dist/@core/jopiEasy.d.ts +287 -0
- package/dist/@core/jopiEasy.js +983 -0
- package/dist/@core/jopiEasy.js.map +1 -0
- package/dist/@core/jopiRequest.d.ts +269 -0
- package/dist/@core/jopiRequest.js +1060 -0
- package/dist/@core/jopiRequest.js.map +1 -0
- package/dist/@core/jopiServer.d.ts +77 -0
- package/dist/@core/jopiServer.js +100 -0
- package/dist/@core/jopiServer.js.map +1 -0
- package/dist/@core/jopiWebSite.d.ts +319 -0
- package/dist/@core/jopiWebSite.js +653 -0
- package/dist/@core/jopiWebSite.js.map +1 -0
- package/dist/@core/letsEncrypt.d.ts +25 -0
- package/dist/@core/letsEncrypt.js +189 -0
- package/dist/@core/letsEncrypt.js.map +1 -0
- package/dist/@core/linker.d.ts +4 -0
- package/dist/@core/linker.js +37 -0
- package/dist/@core/linker.js.map +1 -0
- package/dist/@core/loadBalancing.d.ts +18 -0
- package/dist/@core/loadBalancing.js +126 -0
- package/dist/@core/loadBalancing.js.map +1 -0
- package/dist/@core/middlewares/CorsMiddleware.d.ts +5 -0
- package/dist/@core/middlewares/CorsMiddleware.js +15 -0
- package/dist/@core/middlewares/CorsMiddleware.js.map +1 -0
- package/dist/@core/middlewares/DdosProtection.d.ts +42 -0
- package/dist/@core/middlewares/DdosProtection.js +62 -0
- package/dist/@core/middlewares/DdosProtection.js.map +1 -0
- package/dist/@core/middlewares/index.d.ts +10 -0
- package/dist/@core/middlewares/index.js +14 -0
- package/dist/@core/middlewares/index.js.map +1 -0
- package/dist/@core/publicTools.d.ts +8 -0
- package/dist/@core/publicTools.js +11 -0
- package/dist/@core/publicTools.js.map +1 -0
- package/dist/@core/routeConfig.d.ts +48 -0
- package/dist/@core/routeConfig.js +102 -0
- package/dist/@core/routeConfig.js.map +1 -0
- package/dist/@core/searchParamFilter.d.ts +70 -0
- package/dist/@core/searchParamFilter.js +212 -0
- package/dist/@core/searchParamFilter.js.map +1 -0
- package/dist/@core/serverFetch.d.ts +122 -0
- package/dist/@core/serverFetch.js +312 -0
- package/dist/@core/serverFetch.js.map +1 -0
- package/dist/@core/serverImpl/server_bunjs.d.ts +29 -0
- package/dist/@core/serverImpl/server_bunjs.js +180 -0
- package/dist/@core/serverImpl/server_bunjs.js.map +1 -0
- package/dist/@core/serverImpl/server_nodejs.d.ts +22 -0
- package/dist/@core/serverImpl/server_nodejs.js +235 -0
- package/dist/@core/serverImpl/server_nodejs.js.map +1 -0
- package/dist/@core/serverInstanceBuilder.d.ts +17 -0
- package/dist/@core/serverInstanceBuilder.js +14 -0
- package/dist/@core/serverInstanceBuilder.js.map +1 -0
- package/dist/@core/userStores.d.ts +13 -0
- package/dist/@core/userStores.js +20 -0
- package/dist/@core/userStores.js.map +1 -0
- package/dist/@crawler/common.d.ts +203 -0
- package/dist/@crawler/common.js +68 -0
- package/dist/@crawler/common.js.map +1 -0
- package/dist/@crawler/core.d.ts +87 -0
- package/dist/@crawler/core.js +586 -0
- package/dist/@crawler/core.js.map +1 -0
- package/dist/@crawler/directFileCache.d.ts +10 -0
- package/dist/@crawler/directFileCache.js +60 -0
- package/dist/@crawler/directFileCache.js.map +1 -0
- package/dist/@crawler/index.d.ts +4 -0
- package/dist/@crawler/index.js +5 -0
- package/dist/@crawler/index.js.map +1 -0
- package/dist/@crawler/urlMapping.d.ts +21 -0
- package/dist/@crawler/urlMapping.js +52 -0
- package/dist/@crawler/urlMapping.js.map +1 -0
- package/dist/@crawler/utils.d.ts +6 -0
- package/dist/@crawler/utils.js +13 -0
- package/dist/@crawler/utils.js.map +1 -0
- package/dist/@generated/index.d.ts +29 -0
- package/dist/@generated/index.js +93 -0
- package/dist/@generated/index.js.map +1 -0
- package/dist/@linker/arobaseTypes.d.ts +50 -0
- package/dist/@linker/arobaseTypes.js +235 -0
- package/dist/@linker/arobaseTypes.js.map +1 -0
- package/dist/@linker/changeProof.d.ts +5 -0
- package/dist/@linker/changeProof.js +50 -0
- package/dist/@linker/changeProof.js.map +1 -0
- package/dist/@linker/config.d.ts +2 -0
- package/dist/@linker/config.js +40 -0
- package/dist/@linker/config.js.map +1 -0
- package/dist/@linker/engine.d.ts +156 -0
- package/dist/@linker/engine.js +665 -0
- package/dist/@linker/engine.js.map +1 -0
- package/dist/@linker/index.d.ts +3 -0
- package/dist/@linker/index.js +4 -0
- package/dist/@linker/index.js.map +1 -0
- package/dist/@linker/install.d.ts +4 -0
- package/dist/@linker/install.js +42 -0
- package/dist/@linker/install.js.map +1 -0
- package/dist/@linker/modInstaller.d.ts +10 -0
- package/dist/@linker/modInstaller.js +38 -0
- package/dist/@linker/modInstaller.js.map +1 -0
- package/dist/@linker/typeEvents.d.ts +9 -0
- package/dist/@linker/typeEvents.js +48 -0
- package/dist/@linker/typeEvents.js.map +1 -0
- package/dist/@linker/typeRoutes.d.ts +23 -0
- package/dist/@linker/typeRoutes.js +197 -0
- package/dist/@linker/typeRoutes.js.map +1 -0
- package/dist/@linker/typeUiComposite.d.ts +6 -0
- package/dist/@linker/typeUiComposite.js +16 -0
- package/dist/@linker/typeUiComposite.js.map +1 -0
- package/dist/@loader/index.d.ts +1 -0
- package/dist/@loader/index.js +17 -0
- package/dist/@loader/index.js.map +1 -0
- package/dist/@loader/nodeJsLoader.d.ts +2 -0
- package/dist/@loader/nodeJsLoader.js +19 -0
- package/dist/@loader/nodeJsLoader.js.map +1 -0
- package/dist/@loader-client/index.d.ts +33 -0
- package/dist/@loader-client/index.js +98 -0
- package/dist/@loader-client/index.js.map +1 -0
- package/dist/@loader-tools/bunJsLoader.d.ts +1 -0
- package/dist/@loader-tools/bunJsLoader.js +28 -0
- package/dist/@loader-tools/bunJsLoader.js.map +1 -0
- package/dist/@loader-tools/config.d.ts +49 -0
- package/dist/@loader-tools/config.js +79 -0
- package/dist/@loader-tools/config.js.map +1 -0
- package/dist/@loader-tools/cssModuleCompiler.d.ts +5 -0
- package/dist/@loader-tools/cssModuleCompiler.js +65 -0
- package/dist/@loader-tools/cssModuleCompiler.js.map +1 -0
- package/dist/@loader-tools/esBuildPlugin.d.ts +5 -0
- package/dist/@loader-tools/esBuildPlugin.js +113 -0
- package/dist/@loader-tools/esBuildPlugin.js.map +1 -0
- package/dist/@loader-tools/index.d.ts +9 -0
- package/dist/@loader-tools/index.js +10 -0
- package/dist/@loader-tools/index.js.map +1 -0
- package/dist/@loader-tools/jopin.d.ts +10 -0
- package/dist/@loader-tools/jopin.js +331 -0
- package/dist/@loader-tools/jopin.js.map +1 -0
- package/dist/@loader-tools/nodeJsLoader.d.ts +13 -0
- package/dist/@loader-tools/nodeJsLoader.js +101 -0
- package/dist/@loader-tools/nodeJsLoader.js.map +1 -0
- package/dist/@loader-tools/nodeJsResolver.d.ts +2 -0
- package/dist/@loader-tools/nodeJsResolver.js +117 -0
- package/dist/@loader-tools/nodeJsResolver.js.map +1 -0
- package/dist/@loader-tools/rules.d.ts +3 -0
- package/dist/@loader-tools/rules.js +33 -0
- package/dist/@loader-tools/rules.js.map +1 -0
- package/dist/@loader-tools/sourceChangesWatcher.d.ts +39 -0
- package/dist/@loader-tools/sourceChangesWatcher.js +182 -0
- package/dist/@loader-tools/sourceChangesWatcher.js.map +1 -0
- package/dist/@loader-tools/tools.d.ts +21 -0
- package/dist/@loader-tools/tools.js +113 -0
- package/dist/@loader-tools/tools.js.map +1 -0
- package/dist/@loader-tools/transform.d.ts +5 -0
- package/dist/@loader-tools/transform.js +114 -0
- package/dist/@loader-tools/transform.js.map +1 -0
- package/dist/@loader-tools/virtualUrl.d.ts +9 -0
- package/dist/@loader-tools/virtualUrl.js +40 -0
- package/dist/@loader-tools/virtualUrl.js.map +1 -0
- package/dist/@tool-jopinb/index.d.ts +1 -0
- package/dist/@tool-jopinb/index.js +9 -0
- package/dist/@tool-jopinb/index.js.map +1 -0
- package/dist/@ui/components.d.ts +27 -0
- package/dist/@ui/components.js +42 -0
- package/dist/@ui/components.js.map +1 -0
- package/dist/@ui/cssModules.d.ts +11 -0
- package/dist/@ui/cssModules.js +17 -0
- package/dist/@ui/cssModules.js.map +1 -0
- package/dist/@ui/hooks.d.ts +31 -0
- package/dist/@ui/hooks.js +71 -0
- package/dist/@ui/hooks.js.map +1 -0
- package/dist/@ui/index.d.ts +9 -0
- package/dist/@ui/index.js +11 -0
- package/dist/@ui/index.js.map +1 -0
- package/dist/@ui/internal.d.ts +4 -0
- package/dist/@ui/internal.js +10 -0
- package/dist/@ui/internal.js.map +1 -0
- package/dist/@ui/modules.d.ts +41 -0
- package/dist/@ui/modules.js +74 -0
- package/dist/@ui/modules.js.map +1 -0
- package/dist/@ui/objectRegistry.d.ts +12 -0
- package/dist/@ui/objectRegistry.js +35 -0
- package/dist/@ui/objectRegistry.js.map +1 -0
- package/dist/@ui/pageController.d.ts +61 -0
- package/dist/@ui/pageController.js +166 -0
- package/dist/@ui/pageController.js.map +1 -0
- package/dist/@ui/tools.d.ts +24 -0
- package/dist/@ui/tools.js +78 -0
- package/dist/@ui/tools.js.map +1 -0
- package/dist/@uikit/core/UiKitModule.d.ts +6 -0
- package/dist/@uikit/core/UiKitModule.js +18 -0
- package/dist/@uikit/core/UiKitModule.js.map +1 -0
- package/dist/@uikit/core/index.d.ts +1 -0
- package/dist/@uikit/core/index.js +4 -0
- package/dist/@uikit/core/index.js.map +1 -0
- package/dist/@uikit/core/jBundler_ifBrowser.d.ts +1 -0
- package/dist/@uikit/core/jBundler_ifBrowser.js +5 -0
- package/dist/@uikit/core/jBundler_ifBrowser.js.map +1 -0
- package/dist/@uikit/core/jBundler_ifServer.d.ts +6 -0
- package/dist/@uikit/core/jBundler_ifServer.js +17 -0
- package/dist/@uikit/core/jBundler_ifServer.js.map +1 -0
- package/dist/@uikit/forms/components.d.ts +18 -0
- package/dist/@uikit/forms/components.js +69 -0
- package/dist/@uikit/forms/components.js.map +1 -0
- package/dist/@uikit/forms/hooks.d.ts +4 -0
- package/dist/@uikit/forms/hooks.js +31 -0
- package/dist/@uikit/forms/hooks.js.map +1 -0
- package/dist/@uikit/forms/index.d.ts +3 -0
- package/dist/@uikit/forms/index.js +4 -0
- package/dist/@uikit/forms/index.js.map +1 -0
- package/dist/@uikit/forms/interfaces.d.ts +101 -0
- package/dist/@uikit/forms/interfaces.js +4 -0
- package/dist/@uikit/forms/interfaces.js.map +1 -0
- package/dist/@uikit/forms/private.d.ts +40 -0
- package/dist/@uikit/forms/private.js +307 -0
- package/dist/@uikit/forms/private.js.map +1 -0
- package/dist/@uikit/helpers/hooks.d.ts +33 -0
- package/dist/@uikit/helpers/hooks.js +107 -0
- package/dist/@uikit/helpers/hooks.js.map +1 -0
- package/dist/@uikit/helpers/index.d.ts +2 -0
- package/dist/@uikit/helpers/index.js +3 -0
- package/dist/@uikit/helpers/index.js.map +1 -0
- package/dist/@uikit/helpers/tools.d.ts +8 -0
- package/dist/@uikit/helpers/tools.js +35 -0
- package/dist/@uikit/helpers/tools.js.map +1 -0
- package/dist/@uikit/index.d.ts +10 -0
- package/dist/@uikit/index.js +13 -0
- package/dist/@uikit/index.js.map +1 -0
- package/dist/@uikit/menu/core.d.ts +21 -0
- package/dist/@uikit/menu/core.js +191 -0
- package/dist/@uikit/menu/core.js.map +1 -0
- package/dist/@uikit/menu/hooks.d.ts +5 -0
- package/dist/@uikit/menu/hooks.js +24 -0
- package/dist/@uikit/menu/hooks.js.map +1 -0
- package/dist/@uikit/menu/index.d.ts +3 -0
- package/dist/@uikit/menu/index.js +4 -0
- package/dist/@uikit/menu/index.js.map +1 -0
- package/dist/@uikit/menu/interfaces.d.ts +20 -0
- package/dist/@uikit/menu/interfaces.js +8 -0
- package/dist/@uikit/menu/interfaces.js.map +1 -0
- package/dist/@uikit/menu/internal.d.ts +40 -0
- package/dist/@uikit/menu/internal.js +191 -0
- package/dist/@uikit/menu/internal.js.map +1 -0
- package/dist/@uikit/reactRouter/hooks/jBundler_ifBrowser.d.ts +18 -0
- package/dist/@uikit/reactRouter/hooks/jBundler_ifBrowser.js +40 -0
- package/dist/@uikit/reactRouter/hooks/jBundler_ifBrowser.js.map +1 -0
- package/dist/@uikit/reactRouter/hooks/jBundler_ifServer.d.ts +28 -0
- package/dist/@uikit/reactRouter/hooks/jBundler_ifServer.js +35 -0
- package/dist/@uikit/reactRouter/hooks/jBundler_ifServer.js.map +1 -0
- package/dist/@uikit/reactRouter/index.d.ts +1 -0
- package/dist/@uikit/reactRouter/index.js +2 -0
- package/dist/@uikit/reactRouter/index.js.map +1 -0
- package/dist/@uikit/users/hooks.d.ts +10 -0
- package/dist/@uikit/users/hooks.js +39 -0
- package/dist/@uikit/users/hooks.js.map +1 -0
- package/dist/@uikit/users/index.d.ts +1 -0
- package/dist/@uikit/users/index.js +2 -0
- package/dist/@uikit/users/index.js.map +1 -0
- package/dist/@uikit/variants/index.d.ts +7 -0
- package/dist/@uikit/variants/index.js +16 -0
- package/dist/@uikit/variants/index.js.map +1 -0
- package/package.json +115 -0
- package/src/@bundler/README.md +1 -0
- package/src/@bundler/_logs.ts +4 -0
- package/src/@bundler/core.ts +41 -0
- package/src/@bundler/esbuild.ts +141 -0
- package/src/@bundler/index.ts +3 -0
- package/src/@bundler/plugins.ts +163 -0
- package/src/@bundler/tailwind.ts +139 -0
- package/src/@core/PageComponent.tsx +25 -0
- package/src/@core/README.md +1 -0
- package/src/@core/_logs.ts +11 -0
- package/src/@core/automaticStartStop.ts +132 -0
- package/src/@core/browserCacheControl.ts +40 -0
- package/src/@core/bundler/bundler.ts +128 -0
- package/src/@core/bundler/common.ts +18 -0
- package/src/@core/bundler/config.ts +37 -0
- package/src/@core/bundler/extraContent.ts +30 -0
- package/src/@core/bundler/pagesGenerator.ts +194 -0
- package/src/@core/bundler/server.ts +41 -0
- package/src/@core/caches/InMemoryCache.ts +483 -0
- package/src/@core/caches/SimpleFileCache.ts +205 -0
- package/src/@core/caches/cache.ts +77 -0
- package/src/@core/caches/webSiteMirrorCache.ts +90 -0
- package/src/@core/cheerio.d.ts +332 -0
- package/src/@core/gzip.ts +33 -0
- package/src/@core/index.ts +23 -0
- package/src/@core/internalTools.ts +95 -0
- package/src/@core/jQuery.ts +22 -0
- package/src/@core/jopiEasy.ts +1285 -0
- package/src/@core/jopiRequest.tsx +1279 -0
- package/src/@core/jopiServer.ts +188 -0
- package/src/@core/jopiWebSite.tsx +1027 -0
- package/src/@core/letsEncrypt.ts +243 -0
- package/src/@core/linker.ts +42 -0
- package/src/@core/loadBalancing.ts +152 -0
- package/src/@core/middlewares/CorsMiddleware.ts +23 -0
- package/src/@core/middlewares/DdosProtection.ts +120 -0
- package/src/@core/middlewares/index.ts +16 -0
- package/src/@core/publicTools.ts +14 -0
- package/src/@core/routeConfig.ts +104 -0
- package/src/@core/searchParamFilter.ts +315 -0
- package/src/@core/serverFetch.ts +454 -0
- package/src/@core/serverImpl/server_bunjs.tsx +230 -0
- package/src/@core/serverImpl/server_nodejs.ts +312 -0
- package/src/@core/serverInstanceBuilder.ts +36 -0
- package/src/@core/userStores.ts +34 -0
- package/src/@crawler/README.md +1 -0
- package/src/@crawler/common.ts +275 -0
- package/src/@crawler/core.ts +678 -0
- package/src/@crawler/directFileCache.ts +69 -0
- package/src/@crawler/index.ts +4 -0
- package/src/@crawler/urlMapping.ts +67 -0
- package/src/@crawler/utils.ts +13 -0
- package/src/@generated/index.ts +134 -0
- package/src/@linker/arobaseTypes.ts +325 -0
- package/src/@linker/changeProof.ts +53 -0
- package/src/@linker/config.ts +46 -0
- package/src/@linker/engine.ts +865 -0
- package/src/@linker/index.ts +3 -0
- package/src/@linker/install.ts +39 -0
- package/src/@linker/modInstaller.ts +50 -0
- package/src/@linker/typeEvents.ts +58 -0
- package/src/@linker/typeRoutes.ts +255 -0
- package/src/@linker/typeUiComposite.ts +19 -0
- package/src/@loader/README.md +4 -0
- package/src/@loader/bunHtmlCompiler.mjs +27 -0
- package/src/@loader/index.ts +19 -0
- package/src/@loader/loader.mjs +7 -0
- package/src/@loader/nodeJsLoader.ts +21 -0
- package/src/@loader-client/README.md +2 -0
- package/src/@loader-client/index.ts +108 -0
- package/src/@loader-tools/README.md +6 -0
- package/src/@loader-tools/bunJsLoader.ts +33 -0
- package/src/@loader-tools/config.ts +142 -0
- package/src/@loader-tools/cssModuleCompiler.ts +76 -0
- package/src/@loader-tools/esBuildPlugin.ts +142 -0
- package/src/@loader-tools/index.ts +11 -0
- package/src/@loader-tools/jopin.ts +403 -0
- package/src/@loader-tools/nodeJsLoader.ts +119 -0
- package/src/@loader-tools/nodeJsResolver.ts +140 -0
- package/src/@loader-tools/rules.ts +45 -0
- package/src/@loader-tools/sourceChangesWatcher.ts +225 -0
- package/src/@loader-tools/tools.ts +139 -0
- package/src/@loader-tools/transform.ts +138 -0
- package/src/@loader-tools/virtualUrl.ts +57 -0
- package/src/@loader-types/README.md +15 -0
- package/src/@loader-types/extensions.d.ts +65 -0
- package/src/@tool-jopinb/README.md +1 -0
- package/src/@tool-jopinb/index.ts +11 -0
- package/src/@ui/README.md +3 -0
- package/src/@ui/components.tsx +49 -0
- package/src/@ui/cssModules.tsx +27 -0
- package/src/@ui/hooks.tsx +95 -0
- package/src/@ui/index.ts +13 -0
- package/src/@ui/internal.ts +12 -0
- package/src/@ui/modules.ts +100 -0
- package/src/@ui/objectRegistry.ts +50 -0
- package/src/@ui/pageController.ts +203 -0
- package/src/@ui/tools.ts +116 -0
- package/src/@uikit/README.md +1 -0
- package/src/@uikit/core/UiKitModule.ts +20 -0
- package/src/@uikit/core/index.ts +4 -0
- package/src/@uikit/core/jBundler_ifBrowser.ts +4 -0
- package/src/@uikit/core/jBundler_ifServer.ts +18 -0
- package/src/@uikit/forms/components.tsx +97 -0
- package/src/@uikit/forms/hooks.ts +38 -0
- package/src/@uikit/forms/index.ts +3 -0
- package/src/@uikit/forms/interfaces.ts +159 -0
- package/src/@uikit/forms/private.ts +365 -0
- package/src/@uikit/helpers/hooks.ts +133 -0
- package/src/@uikit/helpers/index.ts +2 -0
- package/src/@uikit/helpers/tools.ts +39 -0
- package/src/@uikit/index.ts +15 -0
- package/src/@uikit/menu/core.ts +227 -0
- package/src/@uikit/menu/hooks.ts +28 -0
- package/src/@uikit/menu/index.ts +3 -0
- package/src/@uikit/menu/interfaces.ts +26 -0
- package/src/@uikit/menu/internal.ts +218 -0
- package/src/@uikit/package.json +15 -0
- package/src/@uikit/reactRouter/hooks/jBundler_ifBrowser.tsx +59 -0
- package/src/@uikit/reactRouter/hooks/jBundler_ifServer.tsx +51 -0
- package/src/@uikit/reactRouter/index.ts +1 -0
- package/src/@uikit/users/hooks.ts +50 -0
- package/src/@uikit/users/index.ts +1 -0
- package/src/@uikit/variants/index.tsx +20 -0
|
@@ -0,0 +1,653 @@
|
|
|
1
|
+
// noinspection JSUnusedGlobalSymbols
|
|
2
|
+
import { JopiRequest } from "./jopiRequest.js";
|
|
3
|
+
import { ServerFetch } from "./serverFetch.js";
|
|
4
|
+
import { LoadBalancer } from "./loadBalancing.js";
|
|
5
|
+
import {} from "./jopiServer.js";
|
|
6
|
+
import { PostMiddlewares } from "./middlewares/index.js";
|
|
7
|
+
import jwt from "jsonwebtoken";
|
|
8
|
+
import React from "react";
|
|
9
|
+
import { ModuleInitContext, PageController } from "jopijs/ui";
|
|
10
|
+
import { VoidPageCache } from "./caches/cache.js";
|
|
11
|
+
import { ONE_DAY } from "./publicTools.js";
|
|
12
|
+
import { getInMemoryCache } from "./caches/InMemoryCache.js";
|
|
13
|
+
import { installBundleServer } from "./bundler/server.js";
|
|
14
|
+
import { createBundle } from "./bundler/bundler.js";
|
|
15
|
+
import * as jk_webSocket from "jopi-toolkit/jk_webSocket";
|
|
16
|
+
import * as jk_events from "jopi-toolkit/jk_events";
|
|
17
|
+
import { installBrowserRefreshSseEvent, isBrowserRefreshEnabled } from "jopijs/loader-client";
|
|
18
|
+
import { executeBrowserInstall } from "./linker.js";
|
|
19
|
+
import { getNewServerInstanceBuilder } from "./serverInstanceBuilder.js";
|
|
20
|
+
import { PriorityLevel, sortByPriority } from "jopi-toolkit/jk_tools";
|
|
21
|
+
import { logCache_notInCache, logServer_request } from "./_logs.js";
|
|
22
|
+
export class WebSiteImpl {
|
|
23
|
+
port;
|
|
24
|
+
host;
|
|
25
|
+
welcomeUrl;
|
|
26
|
+
isHttps = false;
|
|
27
|
+
http80WebSite;
|
|
28
|
+
certificate;
|
|
29
|
+
globalMiddlewares = {};
|
|
30
|
+
globalPostMiddlewares = {};
|
|
31
|
+
_onRebuildCertificate;
|
|
32
|
+
_onWebSiteReady;
|
|
33
|
+
data = {};
|
|
34
|
+
loadBalancer = new LoadBalancer();
|
|
35
|
+
events = jk_events.defaultEventGroup;
|
|
36
|
+
mustRemoveTrailingSlashs;
|
|
37
|
+
constructor(url, options) {
|
|
38
|
+
if (!options)
|
|
39
|
+
options = {};
|
|
40
|
+
url = url.trim().toLowerCase();
|
|
41
|
+
this.welcomeUrl = url;
|
|
42
|
+
this.certificate = options.certificate;
|
|
43
|
+
const urlInfos = new URL(url);
|
|
44
|
+
this.welcomeUrl = urlInfos.protocol + "//" + urlInfos.hostname;
|
|
45
|
+
if (urlInfos.protocol === "https:")
|
|
46
|
+
this.isHttps = true;
|
|
47
|
+
else if (urlInfos.protocol !== "http:")
|
|
48
|
+
throw new Error("invalid url");
|
|
49
|
+
if (urlInfos.port) {
|
|
50
|
+
this.port = parseInt(urlInfos.port);
|
|
51
|
+
this.welcomeUrl += ':' + this.port;
|
|
52
|
+
}
|
|
53
|
+
else {
|
|
54
|
+
if (this.isHttps)
|
|
55
|
+
this.port = 443;
|
|
56
|
+
else
|
|
57
|
+
this.port = 80;
|
|
58
|
+
}
|
|
59
|
+
this.host = urlInfos.host;
|
|
60
|
+
this.mainCache = options.cache || getInMemoryCache();
|
|
61
|
+
this.serverInstanceBuilder = getNewServerInstanceBuilder(this);
|
|
62
|
+
this.mustRemoveTrailingSlashs = options.removeTrailingSlash !== false;
|
|
63
|
+
this._onWebSiteReady = options.onWebSiteReady;
|
|
64
|
+
// Allow hooking the newly created websites.
|
|
65
|
+
jk_events.sendEvent("jopi.webSite.created", this);
|
|
66
|
+
}
|
|
67
|
+
getWelcomeUrl() {
|
|
68
|
+
return this.welcomeUrl;
|
|
69
|
+
}
|
|
70
|
+
async processRequest(handler, urlParts, routeInfos, urlInfos, coreRequest, coreServer) {
|
|
71
|
+
// For security reasons. Without that, an attacker can break a cache.
|
|
72
|
+
if (urlInfos)
|
|
73
|
+
urlInfos.hash = "";
|
|
74
|
+
const req = new JopiRequest(this, urlInfos, coreRequest, coreServer, routeInfos);
|
|
75
|
+
req.urlParts = urlParts;
|
|
76
|
+
const endReq = logServer_request.beginInfo((w) => w(`${req.method} request`, { url: req.url }));
|
|
77
|
+
try {
|
|
78
|
+
let res;
|
|
79
|
+
if (handler) {
|
|
80
|
+
res = await handler(req);
|
|
81
|
+
res = req._applyPostProcess(res);
|
|
82
|
+
}
|
|
83
|
+
else {
|
|
84
|
+
res = await req.res_returnError404_NotFound();
|
|
85
|
+
}
|
|
86
|
+
endReq({ status: res.status });
|
|
87
|
+
return res;
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
if (e instanceof SBPE_ServerByPassException) {
|
|
91
|
+
if (e instanceof SBPE_DirectSendThisResponseException) {
|
|
92
|
+
if (e.response instanceof Response) {
|
|
93
|
+
return e.response;
|
|
94
|
+
}
|
|
95
|
+
else {
|
|
96
|
+
return await e.response(req);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
else if (e instanceof SBPE_NotAuthorizedException) {
|
|
100
|
+
return req.res_returnError401_Unauthorized();
|
|
101
|
+
}
|
|
102
|
+
else if (e instanceof SBPE_MustReturnWithoutResponseException) {
|
|
103
|
+
return undefined;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
console.error(e);
|
|
107
|
+
endReq({ error: e.message });
|
|
108
|
+
return this.return500(req, e);
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
async onBeforeServerStart() {
|
|
112
|
+
await jk_events.sendAsyncEvent("@jopi.server.before.start", { webSite: this });
|
|
113
|
+
await createBundle(this);
|
|
114
|
+
installBundleServer(this);
|
|
115
|
+
if (isBrowserRefreshEnabled()) {
|
|
116
|
+
// To known: there is a bug with some Chrome version
|
|
117
|
+
// doing that the SSE event is blocking the browser
|
|
118
|
+
// after 3/4 pages change through a link click
|
|
119
|
+
// (don't occur with a refresh)
|
|
120
|
+
//
|
|
121
|
+
installBrowserRefreshSseEvent(this);
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
async onServerStarted() {
|
|
125
|
+
if (this._onWebSiteReady) {
|
|
126
|
+
this._onWebSiteReady.forEach(e => e());
|
|
127
|
+
}
|
|
128
|
+
if (this.welcomeUrl) {
|
|
129
|
+
console.log("Website started:", this.welcomeUrl);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
addGlobalMiddleware(method, middleware, options) {
|
|
133
|
+
options = options || {};
|
|
134
|
+
let m = method ? method : "*";
|
|
135
|
+
if (!this.globalMiddlewares[m])
|
|
136
|
+
this.globalMiddlewares[m] = [];
|
|
137
|
+
this.globalMiddlewares[m].push({ priority: options.priority || PriorityLevel.default, value: middleware, regExp: options.regExp });
|
|
138
|
+
}
|
|
139
|
+
addGlobalPostMiddleware(method, middleware, options) {
|
|
140
|
+
options = options || {};
|
|
141
|
+
let m = method ? method : "*";
|
|
142
|
+
if (!this.globalPostMiddlewares[m])
|
|
143
|
+
this.globalPostMiddlewares[m] = [];
|
|
144
|
+
this.globalPostMiddlewares[m].push({ priority: options.priority || PriorityLevel.default, value: middleware, regExp: options.regExp });
|
|
145
|
+
}
|
|
146
|
+
addSourceServer(serverFetch, weight) {
|
|
147
|
+
this.loadBalancer.addServer(serverFetch, weight);
|
|
148
|
+
}
|
|
149
|
+
enableCors(allows) {
|
|
150
|
+
if (!allows)
|
|
151
|
+
allows = [this.welcomeUrl];
|
|
152
|
+
this.addGlobalPostMiddleware(undefined, PostMiddlewares.cors({ accessControlAllowOrigin: allows }), { priority: PriorityLevel.veryHigh });
|
|
153
|
+
}
|
|
154
|
+
applyMiddlewares(verb, route, handler, isPage) {
|
|
155
|
+
function merge(a, b) {
|
|
156
|
+
if (!a)
|
|
157
|
+
return b;
|
|
158
|
+
if (!b)
|
|
159
|
+
return a;
|
|
160
|
+
return a.concat(b);
|
|
161
|
+
}
|
|
162
|
+
function mergeMiddlewares(allMiddlewares) {
|
|
163
|
+
if (allMiddlewares.length === 0)
|
|
164
|
+
return undefined;
|
|
165
|
+
if (allMiddlewares.length === 1)
|
|
166
|
+
return allMiddlewares[0];
|
|
167
|
+
const list = allMiddlewares.reverse();
|
|
168
|
+
let nextToCall;
|
|
169
|
+
for (let m of list) {
|
|
170
|
+
if (nextToCall) {
|
|
171
|
+
const toCall = m;
|
|
172
|
+
const next = nextToCall;
|
|
173
|
+
nextToCall = async function (req) {
|
|
174
|
+
let res = toCall(req);
|
|
175
|
+
if (res instanceof Promise)
|
|
176
|
+
res = await res;
|
|
177
|
+
if (res !== null)
|
|
178
|
+
return res;
|
|
179
|
+
return next(req);
|
|
180
|
+
};
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
nextToCall = m;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
return nextToCall;
|
|
187
|
+
}
|
|
188
|
+
function mergePostMiddlewares(allMiddlewares) {
|
|
189
|
+
if (allMiddlewares.length === 0)
|
|
190
|
+
return undefined;
|
|
191
|
+
if (allMiddlewares.length === 1)
|
|
192
|
+
return allMiddlewares[0];
|
|
193
|
+
const list = allMiddlewares.reverse();
|
|
194
|
+
let nextToCall;
|
|
195
|
+
for (let m of list) {
|
|
196
|
+
if (nextToCall) {
|
|
197
|
+
const toCall = m;
|
|
198
|
+
const next = nextToCall;
|
|
199
|
+
nextToCall = async function (req, res) {
|
|
200
|
+
let t = toCall(req, res);
|
|
201
|
+
if (t instanceof Promise)
|
|
202
|
+
t = await t;
|
|
203
|
+
return next(req, t);
|
|
204
|
+
};
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
nextToCall = m;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
return nextToCall;
|
|
211
|
+
}
|
|
212
|
+
return async (req) => {
|
|
213
|
+
const routeInfos = req.routeInfos;
|
|
214
|
+
const routeRawMiddlewares = routeInfos ? routeInfos.middlewares : undefined;
|
|
215
|
+
const routeRawPostMiddlewares = routeInfos ? routeInfos.postMiddlewares : undefined;
|
|
216
|
+
let globalRawMiddleware = this.globalMiddlewares[verb];
|
|
217
|
+
let globalRawPostMiddleware = this.globalPostMiddlewares[verb];
|
|
218
|
+
if (globalRawMiddleware) {
|
|
219
|
+
globalRawMiddleware = globalRawMiddleware.filter(m => {
|
|
220
|
+
if (m.regExp) {
|
|
221
|
+
return m.regExp.test(route);
|
|
222
|
+
}
|
|
223
|
+
return true;
|
|
224
|
+
});
|
|
225
|
+
}
|
|
226
|
+
if (globalRawPostMiddleware) {
|
|
227
|
+
globalRawPostMiddleware = globalRawPostMiddleware.filter(m => {
|
|
228
|
+
if (m.regExp) {
|
|
229
|
+
return m.regExp.test(route);
|
|
230
|
+
}
|
|
231
|
+
return true;
|
|
232
|
+
});
|
|
233
|
+
}
|
|
234
|
+
let middlewares = sortByPriority(merge(routeRawMiddlewares, globalRawMiddleware)) || [];
|
|
235
|
+
let postMiddlewares = sortByPriority(merge(routeRawPostMiddlewares, globalRawPostMiddleware)) || [];
|
|
236
|
+
// **********
|
|
237
|
+
const baseHandler = handler;
|
|
238
|
+
const mustUseAutoCache = this.mustUseAutomaticCache && routeInfos && (routeInfos.mustEnableAutomaticCache === true);
|
|
239
|
+
const extraMiddlewares = [];
|
|
240
|
+
if (req.routeInfos.requiredRoles) {
|
|
241
|
+
const roles = req.routeInfos.requiredRoles;
|
|
242
|
+
extraMiddlewares.push((req) => {
|
|
243
|
+
req.role_assertUserHasRoles(roles);
|
|
244
|
+
return null;
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
if (mustUseAutoCache) {
|
|
248
|
+
const beforeCheckingCache = routeInfos.beforeCheckingCache;
|
|
249
|
+
const afterGetFromCache = routeInfos.afterGetFromCache;
|
|
250
|
+
const beforeAddToCache = req.routeInfos.beforeAddToCache;
|
|
251
|
+
extraMiddlewares.push(async function () {
|
|
252
|
+
if (beforeCheckingCache) {
|
|
253
|
+
let r = await beforeCheckingCache(req);
|
|
254
|
+
//
|
|
255
|
+
if (r) {
|
|
256
|
+
return fPostMiddleware ? fPostMiddleware(req, r) : r;
|
|
257
|
+
}
|
|
258
|
+
}
|
|
259
|
+
let res = await req.cache_getFromCache();
|
|
260
|
+
if (res) {
|
|
261
|
+
if (afterGetFromCache) {
|
|
262
|
+
const r = await afterGetFromCache(req, res);
|
|
263
|
+
//
|
|
264
|
+
if (r) {
|
|
265
|
+
return fPostMiddleware ? fPostMiddleware(req, r) : r;
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
return fPostMiddleware ? fPostMiddleware(req, res) : res;
|
|
269
|
+
}
|
|
270
|
+
logCache_notInCache.info(w => w(`${req.method} request`, { url: req.urlInfos?.href }));
|
|
271
|
+
if (isPage) {
|
|
272
|
+
// Allows creating anonymous pages.
|
|
273
|
+
req.user_fakeNoUsers();
|
|
274
|
+
}
|
|
275
|
+
// > Here we bypass the default workflow.
|
|
276
|
+
res = await baseHandler(req);
|
|
277
|
+
if (beforeAddToCache) {
|
|
278
|
+
let r = await beforeAddToCache(req, res);
|
|
279
|
+
if (r)
|
|
280
|
+
return await req.cache_addToCache(r);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
return await req.cache_addToCache(res);
|
|
284
|
+
}
|
|
285
|
+
return res;
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
middlewares = [...extraMiddlewares, ...middlewares];
|
|
289
|
+
let newHandler;
|
|
290
|
+
const fMiddleware = mergeMiddlewares(middlewares);
|
|
291
|
+
const fPostMiddleware = mergePostMiddlewares(postMiddlewares);
|
|
292
|
+
if (fMiddleware || fPostMiddleware) {
|
|
293
|
+
newHandler = async (req) => {
|
|
294
|
+
if (fMiddleware) {
|
|
295
|
+
const res = await fMiddleware(req);
|
|
296
|
+
if (res)
|
|
297
|
+
return res;
|
|
298
|
+
}
|
|
299
|
+
const res = await baseHandler(req);
|
|
300
|
+
if (fPostMiddleware) {
|
|
301
|
+
return fPostMiddleware(req, res);
|
|
302
|
+
}
|
|
303
|
+
return res;
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
else {
|
|
307
|
+
newHandler = handler;
|
|
308
|
+
}
|
|
309
|
+
req.routeInfos.handler = newHandler;
|
|
310
|
+
return await newHandler(req);
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
getOrCreateHttpRedirectWebsite() {
|
|
314
|
+
if (this.http80WebSite)
|
|
315
|
+
return this.http80WebSite;
|
|
316
|
+
if (this.port === 80)
|
|
317
|
+
return this;
|
|
318
|
+
let urlInfos = new URL(this.welcomeUrl);
|
|
319
|
+
urlInfos.port = "";
|
|
320
|
+
urlInfos.protocol = "http";
|
|
321
|
+
const webSite = new WebSiteImpl(urlInfos.href);
|
|
322
|
+
this.http80WebSite = webSite;
|
|
323
|
+
webSite.onGET("/**", async (req) => {
|
|
324
|
+
req.urlInfos.port = "";
|
|
325
|
+
req.urlInfos.protocol = "https";
|
|
326
|
+
return req.res_redirectResponse(true, req.urlInfos.href);
|
|
327
|
+
});
|
|
328
|
+
return webSite;
|
|
329
|
+
}
|
|
330
|
+
updateSslCertificate(certificate) {
|
|
331
|
+
this.certificate = certificate;
|
|
332
|
+
if (this._onRebuildCertificate)
|
|
333
|
+
this._onRebuildCertificate();
|
|
334
|
+
}
|
|
335
|
+
/*declareNewWebSocketConnection(jws: JopiWebSocket, infos: WebSocketConnectionInfos, urlInfos: URL) {
|
|
336
|
+
const matched = findRoute(this.wsRouter, "ws", urlInfos.pathname);
|
|
337
|
+
|
|
338
|
+
if (!matched) {
|
|
339
|
+
jws.close();
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
|
|
343
|
+
try { matched.data(jws, infos); }
|
|
344
|
+
catch(e) { console.error(e) }
|
|
345
|
+
}*/
|
|
346
|
+
onWebSocketConnect(path, handler) {
|
|
347
|
+
return this.serverInstanceBuilder.addWsRoute(path, handler);
|
|
348
|
+
}
|
|
349
|
+
addSseEVent(path, handler) {
|
|
350
|
+
this.serverInstanceBuilder.addSseEVent(path, handler);
|
|
351
|
+
}
|
|
352
|
+
tryReturnFile(params) {
|
|
353
|
+
return this.serverInstanceBuilder.tryReturnFile(params);
|
|
354
|
+
}
|
|
355
|
+
//region UI Modules
|
|
356
|
+
executeBrowserInstall(pageController) {
|
|
357
|
+
executeBrowserInstall(this.createModuleInitInstance(pageController));
|
|
358
|
+
}
|
|
359
|
+
/**
|
|
360
|
+
* Allow overriding the instance used by modules 'uiInit.tsx' files.
|
|
361
|
+
* @param instancier
|
|
362
|
+
*/
|
|
363
|
+
setModuleInitClassInstancier(instancier) {
|
|
364
|
+
this.createModuleInitInstance = instancier;
|
|
365
|
+
}
|
|
366
|
+
createModuleInitInstance(pageController) {
|
|
367
|
+
// Note: this function will be replaced.
|
|
368
|
+
return new ModuleInitContext(pageController);
|
|
369
|
+
}
|
|
370
|
+
//endregion
|
|
371
|
+
//region Cache
|
|
372
|
+
mainCache;
|
|
373
|
+
fakeNoUser;
|
|
374
|
+
mustUseAutomaticCache = true;
|
|
375
|
+
cacheRules = [];
|
|
376
|
+
headersToCache = ["content-type", "etag", "last-modified"];
|
|
377
|
+
getCache() {
|
|
378
|
+
return this.mainCache;
|
|
379
|
+
}
|
|
380
|
+
setCache(pageCache) {
|
|
381
|
+
this.mainCache = pageCache || gVoidCache;
|
|
382
|
+
}
|
|
383
|
+
disableAutomaticCache() {
|
|
384
|
+
this.mustUseAutomaticCache = false;
|
|
385
|
+
}
|
|
386
|
+
getHeadersToCache() {
|
|
387
|
+
return this.headersToCache;
|
|
388
|
+
}
|
|
389
|
+
addHeaderToCache(header) {
|
|
390
|
+
header = header.trim().toLowerCase();
|
|
391
|
+
if (!this.headersToCache.includes(header))
|
|
392
|
+
this.headersToCache.push(header);
|
|
393
|
+
}
|
|
394
|
+
setCacheRules(rules) {
|
|
395
|
+
this.cacheRules = rules;
|
|
396
|
+
}
|
|
397
|
+
setOnFakeNoUser(listener) {
|
|
398
|
+
this.fakeNoUser = listener;
|
|
399
|
+
}
|
|
400
|
+
applyCacheRules(routeInfos, path) {
|
|
401
|
+
for (let rule of this.cacheRules) {
|
|
402
|
+
if (rule.regExp) {
|
|
403
|
+
if (!rule.regExp.test(path))
|
|
404
|
+
continue;
|
|
405
|
+
}
|
|
406
|
+
if (!routeInfos.afterGetFromCache) {
|
|
407
|
+
routeInfos.afterGetFromCache = rule.afterGetFromCache;
|
|
408
|
+
}
|
|
409
|
+
if (!routeInfos.beforeAddToCache) {
|
|
410
|
+
routeInfos.beforeAddToCache = rule.beforeAddToCache;
|
|
411
|
+
}
|
|
412
|
+
if (!routeInfos.beforeCheckingCache) {
|
|
413
|
+
routeInfos.beforeCheckingCache = rule.beforeCheckingCache;
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
//endregion
|
|
418
|
+
//region JWT Token
|
|
419
|
+
JWT_SECRET;
|
|
420
|
+
jwtSignInOptions;
|
|
421
|
+
authHandler;
|
|
422
|
+
jwtTokenStore;
|
|
423
|
+
storeJwtToken(req) {
|
|
424
|
+
const token = req.user_getJwtToken();
|
|
425
|
+
if (this.jwtTokenStore) {
|
|
426
|
+
this.jwtTokenStore(req.user_getJwtToken(), "jwt " + token, req);
|
|
427
|
+
}
|
|
428
|
+
else {
|
|
429
|
+
// Note: here we don't set the "Authorization" header, since it's an input-only header.
|
|
430
|
+
req.cookie_addCookieToRes("authorization", "jwt " + token, { maxAge: ONE_DAY * 7 });
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
setJwtTokenStore(store) {
|
|
434
|
+
this.jwtTokenStore = store;
|
|
435
|
+
}
|
|
436
|
+
createJwtToken(data) {
|
|
437
|
+
try {
|
|
438
|
+
return jwt.sign(data, this.JWT_SECRET, this.jwtSignInOptions);
|
|
439
|
+
}
|
|
440
|
+
catch (e) {
|
|
441
|
+
console.error("createJwtToken", e);
|
|
442
|
+
return undefined;
|
|
443
|
+
}
|
|
444
|
+
}
|
|
445
|
+
decodeJwtToken(token) {
|
|
446
|
+
if (!this.JWT_SECRET)
|
|
447
|
+
return undefined;
|
|
448
|
+
try {
|
|
449
|
+
return jwt.verify(token, this.JWT_SECRET);
|
|
450
|
+
}
|
|
451
|
+
catch {
|
|
452
|
+
return undefined;
|
|
453
|
+
}
|
|
454
|
+
}
|
|
455
|
+
setJwtSecret(secret) {
|
|
456
|
+
this.JWT_SECRET = secret;
|
|
457
|
+
}
|
|
458
|
+
async tryAuthUser(loginInfo) {
|
|
459
|
+
if (this.authHandler) {
|
|
460
|
+
const res = this.authHandler(loginInfo);
|
|
461
|
+
if (res instanceof Promise)
|
|
462
|
+
return await res;
|
|
463
|
+
return res;
|
|
464
|
+
}
|
|
465
|
+
return { isOk: false };
|
|
466
|
+
}
|
|
467
|
+
setAuthHandler(authHandler) {
|
|
468
|
+
this.authHandler = authHandler;
|
|
469
|
+
}
|
|
470
|
+
//endregion
|
|
471
|
+
//region Routes processing
|
|
472
|
+
serverInstanceBuilder;
|
|
473
|
+
_on404_NotFound;
|
|
474
|
+
_on500_Error;
|
|
475
|
+
_on401_Unauthorized;
|
|
476
|
+
allRouteInfos = {};
|
|
477
|
+
saveRouteInfos(verb, route, routeInfos) {
|
|
478
|
+
this.allRouteInfos[verb + " " + route] = routeInfos;
|
|
479
|
+
}
|
|
480
|
+
getRouteInfos(verb, route) {
|
|
481
|
+
return this.allRouteInfos[verb + " " + route];
|
|
482
|
+
}
|
|
483
|
+
//region Path handler
|
|
484
|
+
onVerb(verb, path, handler) {
|
|
485
|
+
handler = this.applyMiddlewares(verb, path, handler, false);
|
|
486
|
+
const routeInfos = { route: path, handler };
|
|
487
|
+
this.saveRouteInfos(verb, path, routeInfos);
|
|
488
|
+
this.serverInstanceBuilder.addRoute(verb, path, routeInfos);
|
|
489
|
+
if (verb === "GET")
|
|
490
|
+
this.applyCacheRules(routeInfos, path);
|
|
491
|
+
return routeInfos;
|
|
492
|
+
}
|
|
493
|
+
onPage(path, pageKey, reactComponent) {
|
|
494
|
+
const routeInfos = { route: path, handler: gVoidRouteHandler };
|
|
495
|
+
this.saveRouteInfos("GET", path, routeInfos);
|
|
496
|
+
this.serverInstanceBuilder.addPage(path, pageKey, reactComponent, routeInfos);
|
|
497
|
+
// Cache is automatically enabled for pages.
|
|
498
|
+
routeInfos.mustEnableAutomaticCache = true;
|
|
499
|
+
return routeInfos;
|
|
500
|
+
}
|
|
501
|
+
onGET(path, handler) {
|
|
502
|
+
return this.onVerb("GET", path, handler);
|
|
503
|
+
}
|
|
504
|
+
onPOST(path, handler) {
|
|
505
|
+
return this.onVerb("POST", path, handler);
|
|
506
|
+
}
|
|
507
|
+
onPUT(path, handler) {
|
|
508
|
+
return this.onVerb("PUT", path, handler);
|
|
509
|
+
}
|
|
510
|
+
onDELETE(path, handler) {
|
|
511
|
+
return this.onVerb("DELETE", path, handler);
|
|
512
|
+
}
|
|
513
|
+
onPATCH(path, handler) {
|
|
514
|
+
return this.onVerb("PATCH", path, handler);
|
|
515
|
+
}
|
|
516
|
+
onHEAD(path, handler) {
|
|
517
|
+
return this.onVerb("HEAD", path, handler);
|
|
518
|
+
}
|
|
519
|
+
onOPTIONS(path, handler) {
|
|
520
|
+
return this.onVerb("OPTIONS", path, handler);
|
|
521
|
+
}
|
|
522
|
+
//endregion
|
|
523
|
+
//region Error handler
|
|
524
|
+
on404_NotFound(handler) {
|
|
525
|
+
this._on404_NotFound = handler;
|
|
526
|
+
}
|
|
527
|
+
on500_Error(handler) {
|
|
528
|
+
this._on500_Error = handler;
|
|
529
|
+
}
|
|
530
|
+
on401_Unauthorized(handler) {
|
|
531
|
+
this._on401_Unauthorized = handler;
|
|
532
|
+
}
|
|
533
|
+
async return404(req) {
|
|
534
|
+
const accept = req.headers.get("accept");
|
|
535
|
+
if (!accept || !accept.startsWith("text/html"))
|
|
536
|
+
return new Response("", { status: 404 });
|
|
537
|
+
if (this._on404_NotFound) {
|
|
538
|
+
let res = await this._on404_NotFound(req);
|
|
539
|
+
if (res instanceof Promise)
|
|
540
|
+
res = await res;
|
|
541
|
+
if (res) {
|
|
542
|
+
if (res.status !== 404) {
|
|
543
|
+
return new Response(res.body, { status: 404, headers: res.headers });
|
|
544
|
+
}
|
|
545
|
+
return res;
|
|
546
|
+
}
|
|
547
|
+
}
|
|
548
|
+
return new Response("", { status: 404 });
|
|
549
|
+
}
|
|
550
|
+
async return500(req, error) {
|
|
551
|
+
const accept = req.headers.get("accept");
|
|
552
|
+
if (!accept || !accept.startsWith("text/html"))
|
|
553
|
+
return new Response("", { status: 500 });
|
|
554
|
+
if (this._on500_Error) {
|
|
555
|
+
// Avoid recursions.
|
|
556
|
+
req.res_returnError500_ServerError = async () => {
|
|
557
|
+
return new Response("Internal server error", { status: 500 });
|
|
558
|
+
};
|
|
559
|
+
let res = this._on500_Error(req, error);
|
|
560
|
+
if (res instanceof Promise)
|
|
561
|
+
res = await res;
|
|
562
|
+
if (res) {
|
|
563
|
+
if (res.status !== 500) {
|
|
564
|
+
return new Response(res.body, { status: 500, headers: res.headers });
|
|
565
|
+
}
|
|
566
|
+
return res;
|
|
567
|
+
}
|
|
568
|
+
}
|
|
569
|
+
return new Response("", { status: 500 });
|
|
570
|
+
}
|
|
571
|
+
async return401(req, error) {
|
|
572
|
+
if (this._on401_Unauthorized) {
|
|
573
|
+
let res = this._on401_Unauthorized(req, error);
|
|
574
|
+
if (res instanceof Promise)
|
|
575
|
+
res = await res;
|
|
576
|
+
if (res) {
|
|
577
|
+
if (res.status !== 401) {
|
|
578
|
+
return new Response(res.body, { status: 401, headers: res.headers });
|
|
579
|
+
}
|
|
580
|
+
return res;
|
|
581
|
+
}
|
|
582
|
+
}
|
|
583
|
+
if (req.method !== "GET") {
|
|
584
|
+
return new Response(error ? error.toString() : "", { status: 401 });
|
|
585
|
+
}
|
|
586
|
+
return new Response("", { status: 401 });
|
|
587
|
+
}
|
|
588
|
+
}
|
|
589
|
+
const gVoidRouteHandler = () => Promise.resolve(new Response("void", { status: 200 }));
|
|
590
|
+
export class WebSiteOptions {
|
|
591
|
+
/**
|
|
592
|
+
* The TLS certificate to use;
|
|
593
|
+
*/
|
|
594
|
+
certificate;
|
|
595
|
+
/**
|
|
596
|
+
* Allow defining our own cache for this website and don't use the common one.
|
|
597
|
+
*/
|
|
598
|
+
cache;
|
|
599
|
+
/**
|
|
600
|
+
* A list of listeners which must be called when the website is fully operational.
|
|
601
|
+
*/
|
|
602
|
+
onWebSiteReady;
|
|
603
|
+
/**
|
|
604
|
+
* If false, will remove the trailing-slash at the end of the urls.
|
|
605
|
+
* The default is true.
|
|
606
|
+
*/
|
|
607
|
+
removeTrailingSlash;
|
|
608
|
+
}
|
|
609
|
+
export class JopiWebSocket {
|
|
610
|
+
webSite;
|
|
611
|
+
server;
|
|
612
|
+
webSocket;
|
|
613
|
+
constructor(webSite, server, webSocket) {
|
|
614
|
+
this.webSite = webSite;
|
|
615
|
+
this.server = server;
|
|
616
|
+
this.webSocket = webSocket;
|
|
617
|
+
}
|
|
618
|
+
close() {
|
|
619
|
+
this.webSocket.close();
|
|
620
|
+
}
|
|
621
|
+
onMessage(listener) {
|
|
622
|
+
jk_webSocket.onMessage(this.webSocket, listener);
|
|
623
|
+
}
|
|
624
|
+
sendMessage(msg) {
|
|
625
|
+
jk_webSocket.sendMessage(this.webSocket, msg);
|
|
626
|
+
}
|
|
627
|
+
}
|
|
628
|
+
export function newWebSite(url, options) {
|
|
629
|
+
return new WebSiteImpl(url, options);
|
|
630
|
+
}
|
|
631
|
+
export class SBPE_ServerByPassException extends Error {
|
|
632
|
+
}
|
|
633
|
+
export class SBPE_NotAuthorizedException extends SBPE_ServerByPassException {
|
|
634
|
+
}
|
|
635
|
+
export class SBPE_DirectSendThisResponseException extends SBPE_ServerByPassException {
|
|
636
|
+
response;
|
|
637
|
+
constructor(response) {
|
|
638
|
+
super();
|
|
639
|
+
this.response = response;
|
|
640
|
+
}
|
|
641
|
+
}
|
|
642
|
+
export class SBPE_MustReturnWithoutResponseException extends SBPE_ServerByPassException {
|
|
643
|
+
constructor() {
|
|
644
|
+
super();
|
|
645
|
+
}
|
|
646
|
+
}
|
|
647
|
+
export class ServerAlreadyStartedError extends Error {
|
|
648
|
+
constructor() {
|
|
649
|
+
super("the server is already");
|
|
650
|
+
}
|
|
651
|
+
}
|
|
652
|
+
const gVoidCache = new VoidPageCache();
|
|
653
|
+
//# sourceMappingURL=jopiWebSite.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jopiWebSite.js","sourceRoot":"","sources":["../../src/@core/jopiWebSite.tsx"],"names":[],"mappings":"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"}
|