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,8 @@
|
|
|
1
|
+
import { type WebSite } from "../jopiWebSite.js";
|
|
2
|
+
/**
|
|
3
|
+
* Server the /_bundle and /_bundle_s directories.
|
|
4
|
+
* /_bundle/**: files generated by esbuild.
|
|
5
|
+
* /_bundle_s/**: virtual url pointing to the bundle resources.
|
|
6
|
+
*/
|
|
7
|
+
export declare function installBundleServer(webSite: WebSite): void;
|
|
8
|
+
export declare function configureServer(dirPath: string): void;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { WebSiteImpl } from "../jopiWebSite.js";
|
|
2
|
+
import { getVirtualUrlMap } from "jopijs/loader-tools";
|
|
3
|
+
/**
|
|
4
|
+
* Server the /_bundle and /_bundle_s directories.
|
|
5
|
+
* /_bundle/**: files generated by esbuild.
|
|
6
|
+
* /_bundle_s/**: virtual url pointing to the bundle resources.
|
|
7
|
+
*/
|
|
8
|
+
export function installBundleServer(webSite) {
|
|
9
|
+
const virtualRoutes = getVirtualUrlMap();
|
|
10
|
+
webSite.onGET("/_bundle/**", async (req) => {
|
|
11
|
+
req.urlInfos.pathname = req.urlInfos.pathname.substring("/_bundle".length);
|
|
12
|
+
return req.file_serveFromDir(gDirToServe);
|
|
13
|
+
});
|
|
14
|
+
// Serve /_bundle_s/** resources.
|
|
15
|
+
//
|
|
16
|
+
// It's url pointing to the transformed url generated by the bundler.
|
|
17
|
+
// This url comes from jopi-loader when processing the initial import.
|
|
18
|
+
// The difficult here is that the import is done before the bundling step,
|
|
19
|
+
// and it's why we don't know the final url before time.
|
|
20
|
+
//
|
|
21
|
+
virtualRoutes.forEach(e => addVirtualUrl(webSite, e));
|
|
22
|
+
}
|
|
23
|
+
function addVirtualUrl(webSite, entry) {
|
|
24
|
+
webSite.onGET(entry.route, async (req) => {
|
|
25
|
+
if (entry.bundleFile) {
|
|
26
|
+
return req.file_returnFile(entry.bundleFile);
|
|
27
|
+
}
|
|
28
|
+
return req.file_returnFile(entry.sourceFile);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
export function configureServer(dirPath) {
|
|
32
|
+
gDirToServe = dirPath;
|
|
33
|
+
}
|
|
34
|
+
let gDirToServe;
|
|
35
|
+
//# sourceMappingURL=server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"server.js","sourceRoot":"","sources":["../../../src/@core/bundler/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,WAAW,EAAC,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAC,gBAAgB,EAAuB,MAAM,qBAAqB,CAAC;AAE3E;;;;GAIG;AACH,MAAM,UAAU,mBAAmB,CAAC,OAAgB;IAChD,MAAM,aAAa,GAAG,gBAAgB,EAAE,CAAC;IAEzC,OAAO,CAAC,KAAK,CAAC,aAAa,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;QACvC,GAAG,CAAC,QAAQ,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,SAAS,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QAC3E,OAAO,GAAG,CAAC,iBAAiB,CAAC,WAAY,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;IAEH,iCAAiC;IACjC,EAAE;IACF,qEAAqE;IACrE,sEAAsE;IACtE,0EAA0E;IAC1E,wDAAwD;IACxD,EAAE;IACF,aAAa,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAS,aAAa,CAAC,OAAgB,EAAE,KAAsB;IAC3D,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAC,GAAG,EAAC,EAAE;QACnC,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YACnB,OAAO,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;QACjD,CAAC;QAED,OAAO,GAAG,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACjD,CAAC,CAAC,CAAC;AACP,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,OAAe;IAC3C,WAAW,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED,IAAI,WAA6B,CAAC"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { PageCache } from "./cache.ts";
|
|
2
|
+
export interface InMemoryCacheOptions {
|
|
3
|
+
/**
|
|
4
|
+
* The memory cache survives hot-reload.
|
|
5
|
+
* If a hot-reload occurs, the cache contact is kept as-is.
|
|
6
|
+
* This option allows changing this behavior and automatically clearing
|
|
7
|
+
* the memory cache if a hot-reload is detected.
|
|
8
|
+
*/
|
|
9
|
+
clearOnHotReload?: boolean;
|
|
10
|
+
/**
|
|
11
|
+
* If an item is larger than this value, then he will not be added to the cache.
|
|
12
|
+
* Default value is 600 ko.
|
|
13
|
+
*/
|
|
14
|
+
maxContentLength?: number;
|
|
15
|
+
/**
|
|
16
|
+
* The max number of items in the cache.
|
|
17
|
+
* Default is 5000.
|
|
18
|
+
*/
|
|
19
|
+
maxItemCount?: number;
|
|
20
|
+
/**
|
|
21
|
+
* A delta which allows not triggering garbage collector too soon.
|
|
22
|
+
*/
|
|
23
|
+
maxItemCountDelta?: number;
|
|
24
|
+
/**
|
|
25
|
+
* The max memory usage (mesure is Mo).
|
|
26
|
+
* Default is 500Mo
|
|
27
|
+
*/
|
|
28
|
+
maxMemoryUsage_mo?: number;
|
|
29
|
+
/**
|
|
30
|
+
* A delta which allows not triggering garbage collector too soon.
|
|
31
|
+
*/
|
|
32
|
+
maxMemoryUsageDela_mo?: number;
|
|
33
|
+
}
|
|
34
|
+
export declare function initMemoryCache(options: InMemoryCacheOptions): void;
|
|
35
|
+
export declare function getInMemoryCache(): PageCache;
|
|
@@ -0,0 +1,353 @@
|
|
|
1
|
+
import * as jk_app from "jopi-toolkit/jk_app";
|
|
2
|
+
import * as jk_crypto from "jopi-toolkit/jk_crypto";
|
|
3
|
+
import * as jk_compress from "jopi-toolkit/jk_compress";
|
|
4
|
+
import { octetToMo, ONE_KILO_OCTET, ONE_MEGA_OCTET } from "../publicTools.js";
|
|
5
|
+
import { cacheAddBrowserCacheValues, cacheEntryToResponse, makeIterable, readContentLength, responseToCacheEntry } from "../internalTools.js";
|
|
6
|
+
const clearHotReloadKey = jk_app.clearHotReloadKey;
|
|
7
|
+
const keepOnHotReload = jk_app.keepOnHotReload;
|
|
8
|
+
const HOT_RELOAD_KEY = "jopi.rewrite.inMemoryCache.hotReloadKey";
|
|
9
|
+
class InMemoryCache {
|
|
10
|
+
createSubCache(name) {
|
|
11
|
+
return new InMemorySubCache(this, name);
|
|
12
|
+
}
|
|
13
|
+
cache = keepOnHotReload(HOT_RELOAD_KEY, () => new Map());
|
|
14
|
+
maxContentLength;
|
|
15
|
+
statItemCount = 0;
|
|
16
|
+
maxItemCount;
|
|
17
|
+
maxItemCountDelta;
|
|
18
|
+
statMemoryUsage = 0;
|
|
19
|
+
maxMemoryUsage;
|
|
20
|
+
maxMemoryUsageDelta;
|
|
21
|
+
constructor(options) {
|
|
22
|
+
options = options || {};
|
|
23
|
+
if (!options.maxContentLength)
|
|
24
|
+
options.maxContentLength = ONE_KILO_OCTET * 600;
|
|
25
|
+
if (!options.maxItemCount)
|
|
26
|
+
options.maxItemCount = 5000;
|
|
27
|
+
if (!options.maxItemCountDelta)
|
|
28
|
+
options.maxItemCountDelta = Math.trunc(options.maxItemCount * 0.1);
|
|
29
|
+
if (!options.maxMemoryUsage_mo)
|
|
30
|
+
options.maxMemoryUsage_mo = 500;
|
|
31
|
+
if (!options.maxMemoryUsageDela_mo)
|
|
32
|
+
options.maxMemoryUsageDela_mo = Math.trunc(options.maxMemoryUsageDela_mo * 0.1);
|
|
33
|
+
this.maxContentLength = options.maxContentLength;
|
|
34
|
+
this.maxItemCount = options.maxItemCount;
|
|
35
|
+
this.maxItemCountDelta = options.maxItemCountDelta;
|
|
36
|
+
this.maxMemoryUsage = Math.trunc(options.maxMemoryUsage_mo * ONE_MEGA_OCTET);
|
|
37
|
+
this.maxMemoryUsageDelta = Math.trunc(options.maxMemoryUsageDela_mo * ONE_MEGA_OCTET);
|
|
38
|
+
}
|
|
39
|
+
async addToCache(_req, url, response, headersToInclude) {
|
|
40
|
+
return this.key_addToCache("", url.toString(), response, headersToInclude);
|
|
41
|
+
}
|
|
42
|
+
removeFromCache(url) {
|
|
43
|
+
return this.key_removeFromCache(url.toString());
|
|
44
|
+
}
|
|
45
|
+
async getFromCache(req, url) {
|
|
46
|
+
return this.key_getFromCache(req, ':' + url.href);
|
|
47
|
+
}
|
|
48
|
+
async hasInCache(url) {
|
|
49
|
+
return this.key_hasInCache(':' + url.href);
|
|
50
|
+
}
|
|
51
|
+
gzipMaxSize = 20 * ONE_MEGA_OCTET;
|
|
52
|
+
/**
|
|
53
|
+
* Set the binary value inside the cache entry.
|
|
54
|
+
* This by compressing the binary if needed.
|
|
55
|
+
*/
|
|
56
|
+
async storeBinary(cacheEntry, response) {
|
|
57
|
+
const asBinary = new Uint8Array(await response.arrayBuffer());
|
|
58
|
+
const byteLength = asBinary.byteLength;
|
|
59
|
+
const canCompress = byteLength < this.gzipMaxSize;
|
|
60
|
+
if (!canCompress) {
|
|
61
|
+
cacheEntry.ucpBinary = new Uint8Array(await response.arrayBuffer());
|
|
62
|
+
cacheEntry.ucpBinarySize = cacheEntry.ucpBinary.byteLength;
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
const bufferGzip = jk_compress.gzipSync(asBinary);
|
|
66
|
+
cacheEntry.gzipBinary = new Uint8Array(bufferGzip.buffer);
|
|
67
|
+
cacheEntry.gzipBinarySize = cacheEntry.gzipBinary.byteLength;
|
|
68
|
+
cacheEntry.isGzipped = true;
|
|
69
|
+
return true;
|
|
70
|
+
}
|
|
71
|
+
getCacheEntryIterator(subCacheName) {
|
|
72
|
+
const iterator = this.cache.entries();
|
|
73
|
+
if (!subCacheName)
|
|
74
|
+
subCacheName = "";
|
|
75
|
+
return makeIterable({
|
|
76
|
+
next() {
|
|
77
|
+
let result = iterator.next();
|
|
78
|
+
while (!result.done) {
|
|
79
|
+
let v = result.value[0];
|
|
80
|
+
let idx = v.indexOf(":");
|
|
81
|
+
if (subCacheName === v.substring(0, idx)) {
|
|
82
|
+
const entry = { ...result.value[1], url: v.substring(idx + 1) };
|
|
83
|
+
return { value: entry, done: false };
|
|
84
|
+
}
|
|
85
|
+
result = iterator.next();
|
|
86
|
+
}
|
|
87
|
+
return { value: undefined, done: true };
|
|
88
|
+
}
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
getSubCacheIterator() {
|
|
92
|
+
const alreadyReturned = [];
|
|
93
|
+
const iterator = this.cache.entries();
|
|
94
|
+
return makeIterable({
|
|
95
|
+
next() {
|
|
96
|
+
while (true) {
|
|
97
|
+
let result = iterator.next();
|
|
98
|
+
if (result.done)
|
|
99
|
+
return { value: undefined, done: true };
|
|
100
|
+
let key = result.value[0];
|
|
101
|
+
let idx = key.indexOf(":");
|
|
102
|
+
if (idx === 0)
|
|
103
|
+
continue;
|
|
104
|
+
let subCacheName = key.substring(0, idx);
|
|
105
|
+
if (!alreadyReturned.includes(subCacheName)) {
|
|
106
|
+
alreadyReturned.push(subCacheName);
|
|
107
|
+
return { value: subCacheName, done: false };
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
//region With a key
|
|
114
|
+
async key_hasInCache(key) {
|
|
115
|
+
const cacheEntry = this.cache.get(key);
|
|
116
|
+
return !!cacheEntry;
|
|
117
|
+
}
|
|
118
|
+
async key_addToCache(subCacheName, url, response, headersToInclude) {
|
|
119
|
+
if ((response.status !== 200) || (!response.body)) {
|
|
120
|
+
return response;
|
|
121
|
+
}
|
|
122
|
+
const cacheEntry = responseToCacheEntry("", response, headersToInclude);
|
|
123
|
+
const key = subCacheName + ':' + url;
|
|
124
|
+
const contentLength = readContentLength(response.headers);
|
|
125
|
+
if (contentLength > this.maxContentLength)
|
|
126
|
+
return response;
|
|
127
|
+
let isGzipped = await this.storeBinary(cacheEntry, response);
|
|
128
|
+
if (cacheEntry.ucpBinary)
|
|
129
|
+
this.statMemoryUsage += cacheEntry.ucpBinarySize;
|
|
130
|
+
if (cacheEntry.gzipBinary)
|
|
131
|
+
this.statMemoryUsage += cacheEntry.gzipBinarySize;
|
|
132
|
+
if (isGzipped) {
|
|
133
|
+
cacheEntry.binary = cacheEntry.gzipBinary;
|
|
134
|
+
cacheEntry.binarySize = cacheEntry.gzipBinarySize;
|
|
135
|
+
}
|
|
136
|
+
else {
|
|
137
|
+
cacheEntry.binary = cacheEntry.ucpBinary;
|
|
138
|
+
cacheEntry.binarySize = cacheEntry.ucpBinarySize;
|
|
139
|
+
}
|
|
140
|
+
// Add special headers for browser cache control.
|
|
141
|
+
const etag = jk_crypto.fastHash(cacheEntry.binary);
|
|
142
|
+
cacheAddBrowserCacheValues(cacheEntry, etag);
|
|
143
|
+
response = cacheEntryToResponse(cacheEntry);
|
|
144
|
+
this.cache.set(key, cacheEntry);
|
|
145
|
+
this.statItemCount++;
|
|
146
|
+
cacheEntry._refCount = 1;
|
|
147
|
+
cacheEntry._refCountSinceGC = 1;
|
|
148
|
+
if (this.needToGC()) {
|
|
149
|
+
this.garbageCollector();
|
|
150
|
+
}
|
|
151
|
+
return response;
|
|
152
|
+
}
|
|
153
|
+
key_removeFromCache(key) {
|
|
154
|
+
const cacheEntry = this.cache.get(key);
|
|
155
|
+
if (cacheEntry) {
|
|
156
|
+
this.statItemCount--;
|
|
157
|
+
let size = 0;
|
|
158
|
+
if (cacheEntry.ucpBinarySize)
|
|
159
|
+
size += cacheEntry.ucpBinarySize;
|
|
160
|
+
if (cacheEntry.gzipBinarySize)
|
|
161
|
+
size += cacheEntry.gzipBinarySize;
|
|
162
|
+
if (size)
|
|
163
|
+
this.statMemoryUsage -= size;
|
|
164
|
+
}
|
|
165
|
+
return Promise.resolve();
|
|
166
|
+
}
|
|
167
|
+
key_getFromCache(req, key) {
|
|
168
|
+
const res = this.key_getValueFromCache(key);
|
|
169
|
+
if (res) {
|
|
170
|
+
let cacheRes = req.file_validateCacheHeadersWith(res.headers);
|
|
171
|
+
if (cacheRes)
|
|
172
|
+
return cacheRes;
|
|
173
|
+
return cacheEntryToResponse(res);
|
|
174
|
+
}
|
|
175
|
+
return undefined;
|
|
176
|
+
}
|
|
177
|
+
key_getValueFromCache(key) {
|
|
178
|
+
const cacheEntry = this.cache.get(key);
|
|
179
|
+
if (!cacheEntry)
|
|
180
|
+
return undefined;
|
|
181
|
+
cacheEntry._refCount++;
|
|
182
|
+
cacheEntry._refCountSinceGC++;
|
|
183
|
+
if (cacheEntry.gzipBinary) {
|
|
184
|
+
cacheEntry.binary = cacheEntry.gzipBinary;
|
|
185
|
+
cacheEntry.binarySize = cacheEntry.gzipBinarySize;
|
|
186
|
+
cacheEntry.isGzipped = true;
|
|
187
|
+
return cacheEntry;
|
|
188
|
+
}
|
|
189
|
+
if (cacheEntry.ucpBinary) {
|
|
190
|
+
cacheEntry.binary = cacheEntry.ucpBinary;
|
|
191
|
+
cacheEntry.binarySize = cacheEntry.ucpBinarySize;
|
|
192
|
+
cacheEntry.isGzipped = false;
|
|
193
|
+
return cacheEntry;
|
|
194
|
+
}
|
|
195
|
+
cacheEntry.binary = undefined;
|
|
196
|
+
return cacheEntry;
|
|
197
|
+
}
|
|
198
|
+
//endregion
|
|
199
|
+
//region Garbage collector
|
|
200
|
+
needToGC() {
|
|
201
|
+
if (this.statItemCount > this.maxItemCount)
|
|
202
|
+
return true;
|
|
203
|
+
else if (this.statMemoryUsage > this.maxMemoryUsage)
|
|
204
|
+
return true;
|
|
205
|
+
return false;
|
|
206
|
+
}
|
|
207
|
+
garbageCollector() {
|
|
208
|
+
const removeEntry = (key, cacheEntry) => {
|
|
209
|
+
if (key.endsWith(".html"))
|
|
210
|
+
debugger;
|
|
211
|
+
keyToRemove.push(key);
|
|
212
|
+
this.statItemCount--;
|
|
213
|
+
let size = 0;
|
|
214
|
+
if (cacheEntry.ucpBinarySize)
|
|
215
|
+
size += cacheEntry.ucpBinarySize;
|
|
216
|
+
if (cacheEntry.gzipBinarySize)
|
|
217
|
+
size += cacheEntry.gzipBinarySize;
|
|
218
|
+
if (size) {
|
|
219
|
+
this.statMemoryUsage -= size;
|
|
220
|
+
console.log("|-> ... gc has removed " + key + " / size:", octetToMo(size), "mb");
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
console.log("|-> ... gc has removed " + key);
|
|
224
|
+
}
|
|
225
|
+
};
|
|
226
|
+
const purge = () => {
|
|
227
|
+
for (const key of keyToRemove) {
|
|
228
|
+
this.cache.delete(key);
|
|
229
|
+
}
|
|
230
|
+
keyToRemove.splice(0);
|
|
231
|
+
};
|
|
232
|
+
function isHtml(cacheEntry) {
|
|
233
|
+
if (!cacheEntry.headers)
|
|
234
|
+
return false;
|
|
235
|
+
if (!cacheEntry.gzipBinary && !cacheEntry.ucpBinary)
|
|
236
|
+
return false;
|
|
237
|
+
const contentType = cacheEntry.headers["content-type"];
|
|
238
|
+
return contentType.startsWith("text/html");
|
|
239
|
+
}
|
|
240
|
+
const remove_NotUsedSince = (avoidHtml) => {
|
|
241
|
+
const limit = this.maxItemCount - this.maxItemCountDelta;
|
|
242
|
+
if (this.statItemCount < limit)
|
|
243
|
+
return;
|
|
244
|
+
for (const [key, cacheEntry] of this.cache.entries()) {
|
|
245
|
+
if (!cacheEntry._refCountSinceGC) {
|
|
246
|
+
if (avoidHtml && isHtml(cacheEntry)) {
|
|
247
|
+
// Avoid removing HTML items since they need calculation.
|
|
248
|
+
continue;
|
|
249
|
+
}
|
|
250
|
+
removeEntry(key, cacheEntry);
|
|
251
|
+
if (this.statItemCount < limit)
|
|
252
|
+
return;
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
purge();
|
|
256
|
+
};
|
|
257
|
+
const remove_WeighterEntries = (avoidHtml) => {
|
|
258
|
+
const exec = () => {
|
|
259
|
+
let maxWeight = 0;
|
|
260
|
+
let maxEntry;
|
|
261
|
+
let maxKey = "";
|
|
262
|
+
for (const [key, cacheEntry] of this.cache.entries()) {
|
|
263
|
+
if (avoidHtml && isHtml(cacheEntry)) {
|
|
264
|
+
// Avoid removing HTML items since they need calculation.
|
|
265
|
+
continue;
|
|
266
|
+
}
|
|
267
|
+
let size = 0;
|
|
268
|
+
if (cacheEntry.ucpBinarySize)
|
|
269
|
+
size += cacheEntry.ucpBinarySize;
|
|
270
|
+
if (cacheEntry.gzipBinarySize)
|
|
271
|
+
size += cacheEntry.gzipBinarySize;
|
|
272
|
+
if (size > maxWeight) {
|
|
273
|
+
maxWeight = size;
|
|
274
|
+
maxEntry = cacheEntry;
|
|
275
|
+
maxKey = key;
|
|
276
|
+
}
|
|
277
|
+
cacheEntry._refCountSinceGC = 0;
|
|
278
|
+
}
|
|
279
|
+
if (maxEntry) {
|
|
280
|
+
removeEntry(maxKey, maxEntry);
|
|
281
|
+
purge();
|
|
282
|
+
return true;
|
|
283
|
+
}
|
|
284
|
+
return false;
|
|
285
|
+
};
|
|
286
|
+
const limit = this.maxMemoryUsage - this.maxMemoryUsageDelta;
|
|
287
|
+
while (this.statMemoryUsage > limit) {
|
|
288
|
+
if (!exec())
|
|
289
|
+
break;
|
|
290
|
+
}
|
|
291
|
+
};
|
|
292
|
+
const keyToRemove = [];
|
|
293
|
+
const itemCountBefore = this.statItemCount;
|
|
294
|
+
const memoryUsageBefore = this.statMemoryUsage;
|
|
295
|
+
console.log("====== InMemory cache is executing garbage collector ======");
|
|
296
|
+
remove_WeighterEntries(true);
|
|
297
|
+
remove_WeighterEntries(false);
|
|
298
|
+
remove_NotUsedSince(true);
|
|
299
|
+
remove_NotUsedSince(false);
|
|
300
|
+
for (const [_, cacheEntry] of this.cache.entries()) {
|
|
301
|
+
cacheEntry._refCountSinceGC = 0;
|
|
302
|
+
}
|
|
303
|
+
console.log("===========================================================");
|
|
304
|
+
console.log("Item count ----> before:", itemCountBefore + ", after:", this.statItemCount, " [limit: " + this.maxItemCount + " items]");
|
|
305
|
+
console.log("Memory usage --> before:", octetToMo(memoryUsageBefore) + "Mb, after:", octetToMo(this.statMemoryUsage), "mb [limit: " + octetToMo(this.maxMemoryUsage) + "mb]");
|
|
306
|
+
console.log("===========================================================");
|
|
307
|
+
console.log();
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
class InMemorySubCache {
|
|
311
|
+
parent;
|
|
312
|
+
prefix;
|
|
313
|
+
constructor(parent, name) {
|
|
314
|
+
this.parent = parent;
|
|
315
|
+
this.prefix = name + " : ";
|
|
316
|
+
}
|
|
317
|
+
async addToCache(_req, url, response, headersToInclude) {
|
|
318
|
+
return this.parent.key_addToCache(this.prefix, url.href, response, headersToInclude);
|
|
319
|
+
}
|
|
320
|
+
async hasInCache(url) {
|
|
321
|
+
return this.parent.key_hasInCache(this.prefix + ':' + url.href);
|
|
322
|
+
}
|
|
323
|
+
removeFromCache(url) {
|
|
324
|
+
return this.parent.key_removeFromCache(this.prefix + ':' + url.href);
|
|
325
|
+
}
|
|
326
|
+
async getFromCache(req, url) {
|
|
327
|
+
return this.parent.key_getFromCache(req, this.prefix + ':' + url.href);
|
|
328
|
+
}
|
|
329
|
+
createSubCache(name) {
|
|
330
|
+
return this.parent.createSubCache(name);
|
|
331
|
+
}
|
|
332
|
+
getCacheEntryIterator(subCacheName) {
|
|
333
|
+
return this.parent.getCacheEntryIterator(subCacheName);
|
|
334
|
+
}
|
|
335
|
+
getSubCacheIterator() {
|
|
336
|
+
return this.parent.getSubCacheIterator();
|
|
337
|
+
}
|
|
338
|
+
}
|
|
339
|
+
export function initMemoryCache(options) {
|
|
340
|
+
if (gInstance)
|
|
341
|
+
return;
|
|
342
|
+
if (options.clearOnHotReload) {
|
|
343
|
+
clearHotReloadKey(HOT_RELOAD_KEY);
|
|
344
|
+
}
|
|
345
|
+
gInstance = new InMemoryCache(options);
|
|
346
|
+
}
|
|
347
|
+
export function getInMemoryCache() {
|
|
348
|
+
if (!gInstance)
|
|
349
|
+
initMemoryCache({});
|
|
350
|
+
return gInstance;
|
|
351
|
+
}
|
|
352
|
+
let gInstance;
|
|
353
|
+
//# sourceMappingURL=InMemoryCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"InMemoryCache.js","sourceRoot":"","sources":["../../../src/@core/caches/InMemoryCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { CacheEntry, PageCache } from "./cache.ts";
|
|
2
|
+
import type { JopiRequest } from "../jopiRequest.tsx";
|
|
3
|
+
export declare class SimpleFileCache implements PageCache {
|
|
4
|
+
readonly rootDir: string;
|
|
5
|
+
constructor(rootDir: string);
|
|
6
|
+
private calKey;
|
|
7
|
+
private calcFilePath;
|
|
8
|
+
private gzipMaxSize;
|
|
9
|
+
addToCache(req: JopiRequest, url: URL, response: Response, headersToInclude: string[] | undefined): Promise<Response>;
|
|
10
|
+
removeFromCache(url: URL): Promise<void>;
|
|
11
|
+
getFromCache(req: JopiRequest, url: URL): Promise<Response | undefined>;
|
|
12
|
+
hasInCache(url: URL, requireUncompressedVersion?: boolean | undefined): Promise<boolean>;
|
|
13
|
+
private getCacheEntry;
|
|
14
|
+
private saveNewCacheEntry;
|
|
15
|
+
createSubCache(name: string): PageCache;
|
|
16
|
+
getCacheEntryIterator(): Iterable<CacheEntry>;
|
|
17
|
+
getSubCacheIterator(): Iterable<string>;
|
|
18
|
+
}
|
|
@@ -0,0 +1,171 @@
|
|
|
1
|
+
import { gzipFile } from "../gzip.js";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import fs from "node:fs/promises";
|
|
4
|
+
import fss from "node:fs";
|
|
5
|
+
import { cacheAddBrowserCacheValues, cacheEntryToResponse, makeIterable, responseToCacheEntry } from "../internalTools.js";
|
|
6
|
+
import * as jk_fs from "jopi-toolkit/jk_fs";
|
|
7
|
+
import * as jk_crypto from "jopi-toolkit/jk_crypto";
|
|
8
|
+
import { ONE_MEGA_OCTET } from "../publicTools.js";
|
|
9
|
+
export class SimpleFileCache {
|
|
10
|
+
rootDir;
|
|
11
|
+
constructor(rootDir) {
|
|
12
|
+
if (!rootDir)
|
|
13
|
+
rootDir = ".";
|
|
14
|
+
if (!path.isAbsolute(rootDir))
|
|
15
|
+
rootDir = path.resolve(process.cwd(), rootDir);
|
|
16
|
+
this.rootDir = rootDir;
|
|
17
|
+
}
|
|
18
|
+
calKey(url) {
|
|
19
|
+
// Using a hash allows avoiding difficulties with query string special characters.
|
|
20
|
+
return jk_crypto.fastHash(url.toString());
|
|
21
|
+
}
|
|
22
|
+
calcFilePath(url) {
|
|
23
|
+
const key = this.calKey(url);
|
|
24
|
+
let fp = path.join(this.rootDir, key[0], key);
|
|
25
|
+
if (fp.endsWith("/"))
|
|
26
|
+
fp += "index.html";
|
|
27
|
+
return fp;
|
|
28
|
+
}
|
|
29
|
+
gzipMaxSize = 20 * ONE_MEGA_OCTET;
|
|
30
|
+
async addToCache(req, url, response, headersToInclude) {
|
|
31
|
+
if ((response.status !== 200) || (!response.body)) {
|
|
32
|
+
return response;
|
|
33
|
+
}
|
|
34
|
+
let filePath = this.calcFilePath(url);
|
|
35
|
+
await jk_fs.writeResponseToFile(response, filePath);
|
|
36
|
+
let fileState = (await jk_fs.getFileStat(filePath));
|
|
37
|
+
const byteLength = fileState.size;
|
|
38
|
+
const canCompress = byteLength < this.gzipMaxSize;
|
|
39
|
+
await this.saveNewCacheEntry(url, response, headersToInclude, canCompress, filePath);
|
|
40
|
+
if (canCompress) {
|
|
41
|
+
// Compress the file and remove the uncompressed one.
|
|
42
|
+
await gzipFile(filePath, filePath + " gz");
|
|
43
|
+
await jk_fs.unlink(filePath);
|
|
44
|
+
return await req.file_returnFile(filePath + " gz", { contentEncoding: "gzip" });
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
return await req.file_returnFile(filePath);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
async removeFromCache(url) {
|
|
51
|
+
const filePath = this.calcFilePath(url);
|
|
52
|
+
await jk_fs.unlink(filePath);
|
|
53
|
+
await jk_fs.unlink(filePath + " gz");
|
|
54
|
+
await jk_fs.unlink(filePath + " info");
|
|
55
|
+
return Promise.resolve();
|
|
56
|
+
}
|
|
57
|
+
async getFromCache(req, url) {
|
|
58
|
+
const cacheEntry = await this.getCacheEntry(url);
|
|
59
|
+
// Mean the entry doesn't exist.
|
|
60
|
+
if (!cacheEntry) {
|
|
61
|
+
return undefined;
|
|
62
|
+
}
|
|
63
|
+
if (cacheEntry.status === 200) {
|
|
64
|
+
let toReturn = req.file_validateCacheHeadersWith(cacheEntry.headers);
|
|
65
|
+
if (toReturn)
|
|
66
|
+
return toReturn;
|
|
67
|
+
let filePath = this.calcFilePath(url);
|
|
68
|
+
if (cacheEntry.isGzipped)
|
|
69
|
+
filePath += " gz";
|
|
70
|
+
const fileBytes = await jk_fs.readFileToBytes(filePath);
|
|
71
|
+
cacheEntry.binary = new Uint8Array(fileBytes.buffer);
|
|
72
|
+
cacheEntry.binarySize = fileBytes.length;
|
|
73
|
+
}
|
|
74
|
+
return cacheEntryToResponse(cacheEntry);
|
|
75
|
+
}
|
|
76
|
+
async hasInCache(url, requireUncompressedVersion) {
|
|
77
|
+
const cacheEntry = await this.getCacheEntry(url);
|
|
78
|
+
if (!cacheEntry)
|
|
79
|
+
return false;
|
|
80
|
+
if (requireUncompressedVersion === undefined)
|
|
81
|
+
return true;
|
|
82
|
+
if (requireUncompressedVersion)
|
|
83
|
+
return cacheEntry.isGzipped === false;
|
|
84
|
+
return cacheEntry.isGzipped === true;
|
|
85
|
+
}
|
|
86
|
+
async getCacheEntry(url) {
|
|
87
|
+
const filePath = this.calcFilePath(url);
|
|
88
|
+
try {
|
|
89
|
+
return JSON.parse(await jk_fs.readTextFromFile(filePath + " info"));
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
// We are here if the file doesn't exist.
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
async saveNewCacheEntry(url, response, headersToInclude, isGzipped, filePath) {
|
|
97
|
+
const cacheEntry = responseToCacheEntry(url.href, response, headersToInclude);
|
|
98
|
+
cacheEntry.isGzipped = isGzipped;
|
|
99
|
+
const etag = (await jk_fs.calcFileHash(filePath));
|
|
100
|
+
cacheAddBrowserCacheValues(cacheEntry, etag);
|
|
101
|
+
filePath += " info";
|
|
102
|
+
await fs.mkdir(path.dirname(filePath), { recursive: true });
|
|
103
|
+
await jk_fs.writeTextToFile(filePath, JSON.stringify(cacheEntry));
|
|
104
|
+
}
|
|
105
|
+
createSubCache(name) {
|
|
106
|
+
const newDir = path.join(this.rootDir, "_ subCaches", name);
|
|
107
|
+
return new SimpleFileCache(newDir);
|
|
108
|
+
}
|
|
109
|
+
getCacheEntryIterator() {
|
|
110
|
+
function getCacheEntryFrom(filePath) {
|
|
111
|
+
try {
|
|
112
|
+
return JSON.parse(jk_fs.readTextFromFileSync(filePath));
|
|
113
|
+
}
|
|
114
|
+
catch {
|
|
115
|
+
// We are here if the file doesn't exist.
|
|
116
|
+
return undefined;
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
const rootDir = this.rootDir;
|
|
120
|
+
const nextFileProvider = iterateFiles(this.rootDir);
|
|
121
|
+
return makeIterable({
|
|
122
|
+
next() {
|
|
123
|
+
while (true) {
|
|
124
|
+
let nextFile = nextFileProvider.next();
|
|
125
|
+
if (nextFile.done)
|
|
126
|
+
return { done: true, value: undefined };
|
|
127
|
+
const cacheEntry = getCacheEntryFrom(path.join(rootDir, nextFile.value));
|
|
128
|
+
if (cacheEntry)
|
|
129
|
+
return { done: false, value: cacheEntry };
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
getSubCacheIterator() {
|
|
135
|
+
const alreadyReturned = [];
|
|
136
|
+
const iterator = iterateFiles(this.rootDir);
|
|
137
|
+
return makeIterable({
|
|
138
|
+
next() {
|
|
139
|
+
while (true) {
|
|
140
|
+
const result = iterator.next();
|
|
141
|
+
if (!result.done)
|
|
142
|
+
return { value: undefined, done: true };
|
|
143
|
+
const filePath = result.value[0];
|
|
144
|
+
if (filePath.startsWith("_ subCaches")) {
|
|
145
|
+
const parts = filePath.split(path.sep);
|
|
146
|
+
const subCacheName = parts[1];
|
|
147
|
+
if (!alreadyReturned.includes(subCacheName)) {
|
|
148
|
+
alreadyReturned.push(subCacheName);
|
|
149
|
+
return { value: subCacheName, done: false };
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
function* iterateFiles(rootDir) {
|
|
158
|
+
const items = fss.readdirSync(rootDir);
|
|
159
|
+
for (const item of items) {
|
|
160
|
+
const itemPath = path.join(rootDir, item);
|
|
161
|
+
const stats = fss.statSync(itemPath);
|
|
162
|
+
if (stats.isDirectory()) {
|
|
163
|
+
yield* iterateFiles(itemPath);
|
|
164
|
+
}
|
|
165
|
+
else if (stats.isFile() && item.endsWith(' info')) {
|
|
166
|
+
const relativePath = path.relative(rootDir, itemPath);
|
|
167
|
+
yield relativePath;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
//# sourceMappingURL=SimpleFileCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SimpleFileCache.js","sourceRoot":"","sources":["../../../src/@core/caches/SimpleFileCache.ts"],"names":[],"mappings":"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"}
|