@primate/core 0.1.10 → 0.2.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/lib/private/App.d.ts +54 -0
- package/lib/private/App.js +128 -0
- package/lib/private/AppError.d.ts +4 -0
- package/lib/private/AppError.js +8 -0
- package/lib/private/Binder.d.ts +13 -0
- package/lib/private/Binder.js +2 -0
- package/lib/private/BindingContext.d.ts +3 -0
- package/lib/private/BindingContext.js +2 -0
- package/lib/private/BuildApp.d.ts +23 -0
- package/lib/private/BuildApp.js +121 -0
- package/lib/private/CSP.d.ts +6 -0
- package/lib/private/CSP.js +2 -0
- package/lib/private/Loader.d.ts +17 -0
- package/lib/private/Loader.js +46 -0
- package/lib/private/Mode.d.ts +3 -0
- package/lib/private/Mode.js +2 -0
- package/lib/private/Module.d.ts +18 -0
- package/lib/private/Module.js +18 -0
- package/lib/private/ServeApp.d.ts +89 -0
- package/lib/private/ServeApp.js +305 -0
- package/lib/private/ServeInit.d.ts +29 -0
- package/lib/private/ServeInit.js +2 -0
- package/lib/private/asset/Asset.d.ts +11 -0
- package/lib/private/asset/Asset.js +2 -0
- package/lib/private/asset/Font.d.ts +8 -0
- package/lib/private/asset/Font.js +2 -0
- package/lib/private/asset/Script.d.ts +9 -0
- package/lib/private/asset/Script.js +2 -0
- package/lib/private/asset/Style.d.ts +6 -0
- package/lib/private/asset/Style.js +2 -0
- package/lib/private/backend/Module.d.ts +18 -0
- package/lib/private/backend/Module.js +22 -0
- package/lib/private/build.d.ts +4 -0
- package/lib/private/build.js +45 -0
- package/lib/private/builtin/DevModule.d.ts +11 -0
- package/lib/private/builtin/DevModule.js +32 -0
- package/lib/private/builtin/HandleModule.d.ts +10 -0
- package/lib/private/builtin/HandleModule.js +15 -0
- package/lib/private/bye.d.ts +3 -0
- package/{src → lib}/private/bye.js +2 -2
- package/lib/private/client/App.d.ts +4 -0
- package/lib/private/client/App.js +12 -0
- package/lib/private/client/Data.d.ts +9 -0
- package/lib/private/client/Data.js +2 -0
- package/lib/private/client/ValidateInit.d.ts +13 -0
- package/lib/private/client/ValidateInit.js +2 -0
- package/lib/private/client/ValidateUpdater.d.ts +3 -0
- package/lib/private/client/ValidateUpdater.js +2 -0
- package/lib/private/client/ValidationError.d.ts +6 -0
- package/lib/private/client/ValidationError.js +2 -0
- package/lib/private/client/spa/index.d.ts +6 -0
- package/lib/private/client/spa/index.js +192 -0
- package/lib/private/client/spa/storage.d.ts +12 -0
- package/lib/private/client/spa/storage.js +54 -0
- package/lib/private/client/toValidated.d.ts +17 -0
- package/lib/private/client/toValidated.js +21 -0
- package/lib/private/client/validate.d.ts +3 -0
- package/lib/private/client/validate.js +54 -0
- package/lib/private/config/Config.d.ts +4 -0
- package/lib/private/config/Config.js +2 -0
- package/lib/private/config/config/app.d.ts +3 -0
- package/lib/private/config/config/app.js +3 -0
- package/lib/private/config/config/database/index.d.ts +3 -0
- package/lib/private/config/config/database/index.js +3 -0
- package/lib/private/config/config/session.d.ts +3 -0
- package/lib/private/config/config/session.js +3 -0
- package/lib/private/config/index.d.ts +25 -0
- package/lib/private/config/index.js +3 -0
- package/lib/private/config/schema.d.ts +26 -0
- package/lib/private/config/schema.js +34 -0
- package/lib/private/cookie.d.ts +11 -0
- package/lib/private/cookie.js +30 -0
- package/lib/private/database/As.d.ts +7 -0
- package/lib/private/database/As.js +2 -0
- package/lib/private/database/Binds.d.ts +4 -0
- package/lib/private/database/Binds.js +2 -0
- package/lib/private/database/Changes.d.ts +11 -0
- package/lib/private/database/Changes.js +2 -0
- package/lib/private/database/ColumnTypes.d.ts +11 -0
- package/lib/private/database/ColumnTypes.js +2 -0
- package/lib/private/database/DataDict.d.ts +5 -0
- package/lib/private/database/DataDict.js +2 -0
- package/lib/private/database/DataKey.d.ts +4 -0
- package/lib/private/database/DataKey.js +2 -0
- package/lib/private/database/DataRecord.d.ts +8 -0
- package/lib/private/database/DataRecord.js +3 -0
- package/lib/private/database/DataValue.d.ts +5 -0
- package/lib/private/database/DataValue.js +2 -0
- package/lib/private/database/Database.d.ts +56 -0
- package/lib/private/database/Database.js +153 -0
- package/lib/private/database/InMemoryDatabase.d.ts +37 -0
- package/lib/private/database/InMemoryDatabase.js +181 -0
- package/lib/private/database/Query.d.ts +14 -0
- package/lib/private/database/Query.js +15 -0
- package/lib/private/database/QueryBuilder.d.ts +14 -0
- package/lib/private/database/QueryBuilder.js +3 -0
- package/lib/private/database/Sort.d.ts +4 -0
- package/lib/private/database/Sort.js +2 -0
- package/lib/private/database/Store.d.ts +169 -0
- package/lib/private/database/Store.js +255 -0
- package/lib/private/database/TypeMap.d.ts +14 -0
- package/lib/private/database/TypeMap.js +2 -0
- package/lib/private/database/Types.d.ts +6 -0
- package/lib/private/database/Types.js +2 -0
- package/lib/private/database/primary.d.ts +3 -0
- package/lib/private/database/primary.js +2 -0
- package/lib/private/database/storage.d.ts +4 -0
- package/lib/private/database/storage.js +3 -0
- package/lib/private/database/symbol/wrap.d.ts +3 -0
- package/lib/private/database/symbol/wrap.js +2 -0
- package/lib/private/database/symbol.d.ts +3 -0
- package/lib/private/database/symbol.js +2 -0
- package/lib/private/database/test.d.ts +4 -0
- package/lib/private/database/test.js +678 -0
- package/lib/private/database/wrap.d.ts +5 -0
- package/lib/private/database/wrap.js +5 -0
- package/lib/private/fail.d.ts +3 -0
- package/lib/private/fail.js +5 -0
- package/lib/private/frontend/Component.d.ts +8 -0
- package/lib/private/frontend/Component.js +2 -0
- package/lib/private/frontend/Module.d.ts +60 -0
- package/lib/private/frontend/Module.js +241 -0
- package/lib/private/frontend/Publish.d.ts +5 -0
- package/lib/private/frontend/Publish.js +2 -0
- package/lib/private/frontend/Render.d.ts +9 -0
- package/lib/private/frontend/Render.js +2 -0
- package/lib/private/frontend/ServerComponent.d.ts +5 -0
- package/lib/private/frontend/ServerComponent.js +2 -0
- package/lib/private/frontend/ServerData.d.ts +7 -0
- package/lib/private/frontend/ServerData.js +2 -0
- package/lib/private/frontend/ViewOptions.d.ts +12 -0
- package/lib/private/frontend/ViewOptions.js +3 -0
- package/lib/private/frontend/ViewResponse.d.ts +6 -0
- package/lib/private/frontend/ViewResponse.js +2 -0
- package/lib/private/frontend/bundle-server.d.ts +11 -0
- package/lib/private/frontend/bundle-server.js +48 -0
- package/lib/private/hash.d.ts +3 -0
- package/lib/private/hash.js +10 -0
- package/lib/private/hook/build.d.ts +4 -0
- package/lib/private/hook/build.js +246 -0
- package/lib/private/hook/serve.d.ts +4 -0
- package/lib/private/hook/serve.js +13 -0
- package/lib/private/i18n/API.d.ts +21 -0
- package/lib/private/i18n/API.js +2 -0
- package/lib/private/i18n/Catalog.d.ts +4 -0
- package/lib/private/i18n/Catalog.js +2 -0
- package/lib/private/i18n/Catalogs.d.ts +4 -0
- package/lib/private/i18n/Catalogs.js +2 -0
- package/lib/private/i18n/Config.d.ts +10 -0
- package/lib/private/i18n/Config.js +2 -0
- package/lib/private/i18n/ContextData.d.ts +6 -0
- package/lib/private/i18n/ContextData.js +2 -0
- package/lib/private/i18n/Formatter.d.ts +18 -0
- package/lib/private/i18n/Formatter.js +108 -0
- package/lib/private/i18n/Module.d.ts +16 -0
- package/lib/private/i18n/Module.js +109 -0
- package/lib/private/i18n/PersistMode.d.ts +3 -0
- package/lib/private/i18n/PersistMode.js +2 -0
- package/lib/private/i18n/TypeOf.d.ts +4 -0
- package/lib/private/i18n/TypeOf.js +2 -0
- package/lib/private/i18n/constant/COOKIE_NAME.d.ts +3 -0
- package/lib/private/i18n/constant/COOKIE_NAME.js +2 -0
- package/lib/private/i18n/constant/DEFAULT_LOCALE.d.ts +3 -0
- package/lib/private/i18n/constant/DEFAULT_LOCALE.js +2 -0
- package/lib/private/i18n/constant/DEFAULT_PERSIST_MODE.d.ts +3 -0
- package/lib/private/i18n/constant/DEFAULT_PERSIST_MODE.js +2 -0
- package/lib/private/i18n/constant/PERSIST_HEADER.d.ts +3 -0
- package/lib/private/i18n/constant/PERSIST_HEADER.js +2 -0
- package/lib/private/i18n/constant/PERSIST_METHOD.d.ts +3 -0
- package/lib/private/i18n/constant/PERSIST_METHOD.js +2 -0
- package/lib/private/i18n/constant/PERSIST_STORAGE_KEY.d.ts +3 -0
- package/lib/private/i18n/constant/PERSIST_STORAGE_KEY.js +2 -0
- package/lib/private/i18n/index.d.ts +28 -0
- package/lib/private/i18n/index.js +236 -0
- package/lib/private/i18n/locale.d.ts +5 -0
- package/lib/private/i18n/locale.js +4 -0
- package/lib/private/i18n/ordinals.d.ts +4 -0
- package/lib/private/i18n/ordinals.js +52 -0
- package/lib/private/i18n/schema.d.ts +8 -0
- package/lib/private/i18n/schema.js +13 -0
- package/lib/private/i18n/symbol/internal.d.ts +3 -0
- package/lib/private/i18n/symbol/internal.js +3 -0
- package/lib/private/i18n/toIntlUnit.d.ts +3 -0
- package/lib/private/i18n/toIntlUnit.js +125 -0
- package/lib/private/inline.d.ts +7 -0
- package/lib/private/inline.js +12 -0
- package/lib/private/location.d.ts +17 -0
- package/lib/private/location.js +29 -0
- package/lib/private/log.d.ts +19 -0
- package/lib/private/log.js +46 -0
- package/lib/private/module/BuildHook.d.ts +5 -0
- package/lib/private/module/BuildHook.js +2 -0
- package/lib/private/module/Hook.d.ts +5 -0
- package/lib/private/module/Hook.js +2 -0
- package/lib/private/module/Next.d.ts +4 -0
- package/lib/private/module/Next.js +2 -0
- package/lib/private/module/NextBuild.d.ts +5 -0
- package/lib/private/module/NextBuild.js +2 -0
- package/lib/private/module/NextHandle.d.ts +5 -0
- package/lib/private/module/NextHandle.js +2 -0
- package/lib/private/module/NextRoute.d.ts +6 -0
- package/lib/private/module/NextRoute.js +2 -0
- package/lib/private/module/NextServe.d.ts +5 -0
- package/lib/private/module/NextServe.js +2 -0
- package/lib/private/module/RequestHook.d.ts +6 -0
- package/lib/private/module/RequestHook.js +2 -0
- package/lib/private/reducer.d.ts +24 -0
- package/lib/private/reducer.js +10 -0
- package/lib/private/request/RequestBag.d.ts +80 -0
- package/lib/private/request/RequestBag.js +119 -0
- package/lib/private/request/RequestBody.d.ts +39 -0
- package/lib/private/request/RequestBody.js +91 -0
- package/lib/private/request/RequestFacade.d.ts +20 -0
- package/lib/private/request/RequestFacade.js +2 -0
- package/lib/private/request/Verb.d.ts +4 -0
- package/lib/private/request/Verb.js +2 -0
- package/lib/private/request/parse.d.ts +4 -0
- package/lib/private/request/parse.js +69 -0
- package/lib/private/request/route.d.ts +4 -0
- package/lib/private/request/route.js +61 -0
- package/lib/private/request/router.d.ts +5 -0
- package/lib/private/request/router.js +56 -0
- package/lib/private/request/verbs.d.ts +3 -0
- package/lib/private/request/verbs.js +12 -0
- package/lib/private/response/ResponseFunction.d.ts +8 -0
- package/lib/private/response/ResponseFunction.js +2 -0
- package/lib/private/response/ResponseLike.d.ts +6 -0
- package/lib/private/response/ResponseLike.js +2 -0
- package/lib/private/response/binary.d.ts +10 -0
- package/lib/private/response/binary.js +47 -0
- package/lib/private/response/error.d.ts +18 -0
- package/lib/private/response/error.js +18 -0
- package/lib/private/response/json.d.ts +9 -0
- package/lib/private/response/json.js +10 -0
- package/lib/private/response/redirect.d.ts +11 -0
- package/lib/private/response/redirect.js +62 -0
- package/lib/private/response/respond.d.ts +5 -0
- package/lib/private/response/respond.js +31 -0
- package/lib/private/response/sse.d.ts +15 -0
- package/lib/private/response/sse.js +25 -0
- package/lib/private/response/text.d.ts +9 -0
- package/lib/private/response/text.js +11 -0
- package/lib/private/response/view.d.ts +11 -0
- package/lib/private/response/view.js +41 -0
- package/lib/private/response/ws.d.ts +5 -0
- package/lib/private/response/ws.js +2 -0
- package/lib/private/response.d.ts +5 -0
- package/lib/private/response.js +2 -0
- package/lib/private/route/Handler.d.ts +6 -0
- package/lib/private/route/Handler.js +2 -0
- package/lib/private/route/Options.d.ts +5 -0
- package/lib/private/route/Options.js +2 -0
- package/lib/private/route/Path.d.ts +11 -0
- package/lib/private/route/Path.js +2 -0
- package/lib/private/route/guard.d.ts +4 -0
- package/lib/private/route/guard.js +22 -0
- package/lib/private/route/router.d.ts +51 -0
- package/lib/private/route/router.js +32 -0
- package/lib/private/route/wrap.d.ts +6 -0
- package/lib/private/route/wrap.js +17 -0
- package/lib/private/route.d.ts +9 -0
- package/lib/private/route.js +6 -0
- package/lib/private/serve.d.ts +5 -0
- package/lib/private/serve.js +8 -0
- package/lib/private/session/Config.d.ts +4 -0
- package/lib/private/session/Config.js +2 -0
- package/lib/private/session/Data.d.ts +5 -0
- package/lib/private/session/Data.js +2 -0
- package/lib/private/session/InMemoryManager.d.ts +9 -0
- package/lib/private/session/InMemoryManager.js +23 -0
- package/lib/private/session/Manager.d.ts +9 -0
- package/lib/private/session/Manager.js +4 -0
- package/lib/private/session/SessionFacade.d.ts +56 -0
- package/lib/private/session/SessionFacade.js +2 -0
- package/lib/private/session/SessionHandle.d.ts +20 -0
- package/lib/private/session/SessionHandle.js +67 -0
- package/lib/private/session/SessionModule.d.ts +13 -0
- package/lib/private/session/SessionModule.js +99 -0
- package/lib/private/session/index.d.ts +13 -0
- package/lib/private/session/index.js +41 -0
- package/lib/private/session/k-serialize.d.ts +3 -0
- package/lib/private/session/k-serialize.js +2 -0
- package/lib/private/session/schema.d.ts +14 -0
- package/lib/private/session/schema.js +20 -0
- package/lib/private/session/storage.d.ts +5 -0
- package/lib/private/session/storage.js +5 -0
- package/lib/private/symbol/config.d.ts +3 -0
- package/lib/private/symbol/config.js +2 -0
- package/lib/private/symbol/layout-depth.d.ts +3 -0
- package/lib/private/symbol/layout-depth.js +2 -0
- package/lib/private/tags.d.ts +10 -0
- package/lib/private/tags.js +29 -0
- package/lib/private/target/Manager.d.ts +14 -0
- package/lib/private/target/Manager.js +44 -0
- package/lib/private/target/Target.d.ts +8 -0
- package/lib/private/target/Target.js +3 -0
- package/lib/private/target/web.d.ts +4 -0
- package/lib/private/target/web.js +68 -0
- package/lib/private/wasm/API.d.ts +7 -0
- package/lib/private/wasm/API.js +2 -0
- package/lib/private/wasm/BufferViewSource.d.ts +4 -0
- package/lib/private/wasm/BufferViewSource.js +2 -0
- package/lib/private/wasm/Exports.d.ts +23 -0
- package/lib/private/wasm/Exports.js +2 -0
- package/lib/private/wasm/I32.d.ts +5 -0
- package/lib/private/wasm/I32.js +2 -0
- package/lib/private/wasm/I32_SIZE.d.ts +3 -0
- package/lib/private/wasm/I32_SIZE.js +2 -0
- package/lib/private/wasm/Instantiation.d.ts +12 -0
- package/lib/private/wasm/Instantiation.js +2 -0
- package/lib/private/wasm/Tagged.d.ts +7 -0
- package/lib/private/wasm/Tagged.js +2 -0
- package/lib/private/wasm/buffersize.d.ts +2 -0
- package/lib/private/wasm/buffersize.js +5 -0
- package/lib/private/wasm/decode-bytes.d.ts +3 -0
- package/lib/private/wasm/decode-bytes.js +5 -0
- package/lib/private/wasm/decode-json.d.ts +7 -0
- package/lib/private/wasm/decode-json.js +11 -0
- package/lib/private/wasm/decode-option.d.ts +5 -0
- package/lib/private/wasm/decode-option.js +10 -0
- package/lib/private/wasm/decode-response.d.ts +19 -0
- package/lib/private/wasm/decode-response.js +90 -0
- package/lib/private/wasm/decode-string.d.ts +3 -0
- package/lib/private/wasm/decode-string.js +5 -0
- package/lib/private/wasm/decode-websocket-close.d.ts +5 -0
- package/lib/private/wasm/decode-websocket-close.js +6 -0
- package/lib/private/wasm/decode-websocket-send.d.ts +6 -0
- package/lib/private/wasm/decode-websocket-send.js +19 -0
- package/lib/private/wasm/encode-buffer.d.ts +3 -0
- package/lib/private/wasm/encode-buffer.js +6 -0
- package/lib/private/wasm/encode-request.d.ts +9 -0
- package/lib/private/wasm/encode-request.js +198 -0
- package/lib/private/wasm/encode-session.d.ts +3 -0
- package/lib/private/wasm/encode-session.js +25 -0
- package/lib/private/wasm/encode-string-map.d.ts +5 -0
- package/lib/private/wasm/encode-string-map.js +14 -0
- package/lib/private/wasm/encode-string.d.ts +13 -0
- package/lib/private/wasm/encode-string.js +17 -0
- package/lib/private/wasm/encode-url.d.ts +11 -0
- package/lib/private/wasm/encode-url.js +14 -0
- package/lib/private/wasm/encode-websocket-close.d.ts +2 -0
- package/lib/private/wasm/encode-websocket-close.js +7 -0
- package/lib/private/wasm/encode-websocket-message.d.ts +4 -0
- package/lib/private/wasm/encode-websocket-message.js +30 -0
- package/lib/private/wasm/encode-websocket-open.d.ts +2 -0
- package/lib/private/wasm/encode-websocket-open.js +7 -0
- package/lib/private/wasm/filesize.d.ts +2 -0
- package/lib/private/wasm/filesize.js +8 -0
- package/lib/private/wasm/instantiate.d.ts +37 -0
- package/lib/private/wasm/instantiate.js +408 -0
- package/lib/private/wasm/open-websocket.d.ts +4 -0
- package/lib/private/wasm/open-websocket.js +26 -0
- package/lib/private/wasm/stringsize.d.ts +3 -0
- package/lib/private/wasm/stringsize.js +5 -0
- package/lib/private/wasm/urlsize.d.ts +2 -0
- package/lib/private/wasm/urlsize.js +5 -0
- package/lib/public/App.d.ts +2 -0
- package/lib/public/App.js +2 -0
- package/lib/public/AppError.d.ts +2 -0
- package/lib/public/AppError.js +2 -0
- package/lib/public/BuildApp.d.ts +2 -0
- package/lib/public/BuildApp.js +2 -0
- package/lib/public/BuildHook.d.ts +2 -0
- package/lib/public/BuildHook.js +2 -0
- package/lib/public/Database.d.ts +2 -0
- package/lib/public/Database.js +2 -0
- package/lib/public/Loader.d.ts +2 -0
- package/lib/public/Loader.js +2 -0
- package/lib/public/Mode.d.ts +2 -0
- package/lib/public/Mode.js +2 -0
- package/lib/public/Module.d.ts +2 -0
- package/lib/public/Module.js +2 -0
- package/lib/public/Next.d.ts +2 -0
- package/lib/public/Next.js +2 -0
- package/lib/public/NextBuild.d.ts +2 -0
- package/lib/public/NextBuild.js +2 -0
- package/lib/public/NextHandle.d.ts +2 -0
- package/lib/public/NextHandle.js +2 -0
- package/lib/public/NextRoute.d.ts +3 -0
- package/lib/public/NextRoute.js +2 -0
- package/lib/public/NextServe.d.ts +2 -0
- package/lib/public/NextServe.js +2 -0
- package/lib/public/ServeApp.d.ts +2 -0
- package/lib/public/ServeApp.js +2 -0
- package/lib/public/Target.d.ts +2 -0
- package/lib/public/Target.js +2 -0
- package/lib/public/backend/Module.d.ts +2 -0
- package/lib/public/backend/Module.js +2 -0
- package/lib/public/build.d.ts +2 -0
- package/lib/public/build.js +2 -0
- package/lib/public/client/App.d.ts +2 -0
- package/lib/public/client/App.js +2 -0
- package/lib/public/client/Data.d.ts +2 -0
- package/lib/public/client/Data.js +2 -0
- package/lib/public/client/ValidateInit.d.ts +2 -0
- package/lib/public/client/ValidateInit.js +2 -0
- package/lib/public/client/ValidateUpdater.d.ts +2 -0
- package/lib/public/client/ValidateUpdater.js +2 -0
- package/lib/public/client/ValidationError.d.ts +2 -0
- package/lib/public/client/ValidationError.js +2 -0
- package/lib/public/client/spa.d.ts +2 -0
- package/lib/public/client/spa.js +2 -0
- package/lib/public/client/toValidated.d.ts +2 -0
- package/lib/public/client/toValidated.js +2 -0
- package/lib/public/client/validate.d.ts +2 -0
- package/lib/public/client/validate.js +2 -0
- package/lib/public/config.d.ts +2 -0
- package/lib/public/config.js +2 -0
- package/lib/public/database/As.d.ts +2 -0
- package/lib/public/database/As.js +2 -0
- package/lib/public/database/DataDict.d.ts +2 -0
- package/lib/public/database/DataDict.js +2 -0
- package/lib/public/database/InMemoryDatabase.d.ts +2 -0
- package/lib/public/database/InMemoryDatabase.js +2 -0
- package/lib/public/database/Sort.d.ts +2 -0
- package/lib/public/database/Sort.js +2 -0
- package/lib/public/database/Store.d.ts +2 -0
- package/lib/public/database/Store.js +2 -0
- package/lib/public/database/TypeMap.d.ts +2 -0
- package/lib/public/database/TypeMap.js +2 -0
- package/lib/public/database/Types.d.ts +2 -0
- package/lib/public/database/Types.js +2 -0
- package/lib/public/database/test.d.ts +2 -0
- package/lib/public/database/test.js +2 -0
- package/lib/public/database/wrap.d.ts +2 -0
- package/lib/public/database/wrap.js +2 -0
- package/lib/public/frontend/Module.d.ts +2 -0
- package/lib/public/frontend/Module.js +2 -0
- package/lib/public/frontend/Publish.d.ts +2 -0
- package/lib/public/frontend/Publish.js +2 -0
- package/lib/public/frontend/Render.d.ts +2 -0
- package/lib/public/frontend/Render.js +2 -0
- package/lib/public/frontend/ViewResponse.d.ts +2 -0
- package/lib/public/frontend/ViewResponse.js +2 -0
- package/lib/public/i18n/API.d.ts +2 -0
- package/lib/public/i18n/API.js +2 -0
- package/lib/public/i18n/Catalogs.d.ts +2 -0
- package/lib/public/i18n/Catalogs.js +2 -0
- package/lib/public/i18n/ContextData.d.ts +2 -0
- package/lib/public/i18n/ContextData.js +2 -0
- package/lib/public/i18n/config.d.ts +2 -0
- package/lib/public/i18n/config.js +2 -0
- package/lib/public/i18n/locale.d.ts +2 -0
- package/lib/public/i18n/locale.js +2 -0
- package/lib/public/i18n/sInternal.d.ts +2 -0
- package/lib/public/i18n/sInternal.js +2 -0
- package/lib/public/inline.d.ts +2 -0
- package/lib/public/inline.js +2 -0
- package/lib/public/location.d.ts +2 -0
- package/lib/public/location.js +2 -0
- package/lib/public/log.d.ts +2 -0
- package/{src/log/index.js → lib/public/log.js} +1 -0
- package/lib/public/request/RequestBody.d.ts +2 -0
- package/lib/public/request/RequestBody.js +2 -0
- package/lib/public/request/RequestFacade.d.ts +2 -0
- package/lib/public/request/RequestFacade.js +2 -0
- package/lib/public/request/Verb.d.ts +2 -0
- package/lib/public/request/Verb.js +2 -0
- package/lib/public/request/verbs.d.ts +2 -0
- package/lib/public/request/verbs.js +2 -0
- package/lib/public/response/ResponseFunction.d.ts +2 -0
- package/lib/public/response/ResponseFunction.js +2 -0
- package/lib/public/response/ResponseLike.d.ts +2 -0
- package/lib/public/response/ResponseLike.js +2 -0
- package/lib/public/response/binary.d.ts +2 -0
- package/lib/public/response/binary.js +2 -0
- package/lib/public/response/error.d.ts +2 -0
- package/lib/public/response/error.js +2 -0
- package/lib/public/response/json.d.ts +2 -0
- package/lib/public/response/json.js +2 -0
- package/lib/public/response/redirect.d.ts +2 -0
- package/lib/public/response/redirect.js +2 -0
- package/lib/public/response/sse.d.ts +2 -0
- package/lib/public/response/sse.js +2 -0
- package/lib/public/response/text.d.ts +2 -0
- package/lib/public/response/text.js +2 -0
- package/lib/public/response/view.d.ts +2 -0
- package/lib/public/response/view.js +2 -0
- package/lib/public/response/ws.d.ts +2 -0
- package/lib/public/response/ws.js +2 -0
- package/lib/public/route/router.d.ts +2 -0
- package/lib/public/route/router.js +2 -0
- package/lib/public/route/wrap.d.ts +2 -0
- package/lib/public/route/wrap.js +2 -0
- package/lib/public/route.d.ts +2 -0
- package/lib/public/route.js +2 -0
- package/lib/public/serve.d.ts +2 -0
- package/lib/public/serve.js +2 -0
- package/lib/public/session/Manager.d.ts +2 -0
- package/lib/public/session/Manager.js +2 -0
- package/lib/public/session/config.d.ts +2 -0
- package/lib/public/session/config.js +2 -0
- package/lib/public/symbol/config.d.ts +2 -0
- package/lib/public/symbol/config.js +2 -0
- package/lib/public/wasm/decode-json.d.ts +5 -0
- package/lib/public/wasm/decode-json.js +3 -0
- package/lib/public/wasm/decode-response.d.ts +3 -0
- package/lib/public/wasm/decode-response.js +3 -0
- package/lib/public/wasm/encode-request.d.ts +3 -0
- package/lib/public/wasm/encode-request.js +3 -0
- package/lib/public/wasm/encode-session.d.ts +3 -0
- package/lib/public/wasm/encode-session.js +3 -0
- package/lib/public/wasm/instantiate.d.ts +4 -0
- package/lib/public/wasm/instantiate.js +3 -0
- package/package.json +41 -36
- package/src/build/app.js +0 -99
- package/src/build/hook/build.js +0 -188
- package/src/build/hook/copy_includes.js +0 -20
- package/src/build/hook/exports.js +0 -2
- package/src/build/hook/init.js +0 -3
- package/src/build/hook/router.js +0 -33
- package/src/build/index.js +0 -49
- package/src/build/module_loader.js +0 -30
- package/src/build/targets/exports.js +0 -1
- package/src/build/targets/web.js +0 -70
- package/src/dispatch/index.js +0 -1
- package/src/http/verbs.js +0 -11
- package/src/private/config-filename.js +0 -1
- package/src/private/config.js +0 -48
- package/src/private/depend.js +0 -20
- package/src/private/dispatch.js +0 -18
- package/src/private/error/bad-body.js +0 -6
- package/src/private/error/bad-default-export.js +0 -6
- package/src/private/error/bad-path.js +0 -6
- package/src/private/error/bad-type-export.js +0 -6
- package/src/private/error/bad-type-name.js +0 -6
- package/src/private/error/double-extension.js +0 -6
- package/src/private/error/double-module.js +0 -6
- package/src/private/error/double-path-parameter.js +0 -6
- package/src/private/error/double-route.js +0 -6
- package/src/private/error/empty-config-file.js +0 -6
- package/src/private/error/empty-directory.js +0 -6
- package/src/private/error/empty-path-parameter.js +0 -6
- package/src/private/error/empty-route-file.js +0 -6
- package/src/private/error/error-in-config-file.js +0 -6
- package/src/private/error/mismatched-body.js +0 -6
- package/src/private/error/mismatched-path.js +0 -6
- package/src/private/error/mismatched-type.js +0 -6
- package/src/private/error/module-no-name.js +0 -6
- package/src/private/error/modules-array.js +0 -6
- package/src/private/error/no-handler.js +0 -6
- package/src/private/error/no-route-to-path.js +0 -6
- package/src/private/error/optional-route.js +0 -6
- package/src/private/error/reserved-type-name.js +0 -6
- package/src/private/error/rest-route.js +0 -6
- package/src/private/error.js +0 -15
- package/src/private/log.js +0 -69
- package/src/private/loglevel.js +0 -9
- package/src/private/mark.js +0 -5
- package/src/private/validate.js +0 -11
- package/src/serve/app.js +0 -206
- package/src/serve/handler/error.js +0 -10
- package/src/serve/handler/json.js +0 -10
- package/src/serve/handler/redirect.js +0 -11
- package/src/serve/handler/shared/base.js +0 -4
- package/src/serve/handler/sse.js +0 -24
- package/src/serve/handler/stream.js +0 -4
- package/src/serve/handler/text.js +0 -10
- package/src/serve/handler/view.js +0 -15
- package/src/serve/handler/ws.js +0 -2
- package/src/serve/hook/exports.js +0 -5
- package/src/serve/hook/handle.js +0 -106
- package/src/serve/hook/init.js +0 -3
- package/src/serve/hook/parse.js +0 -17
- package/src/serve/hook/respond.js +0 -28
- package/src/serve/hook/route.js +0 -50
- package/src/serve/hook/serve.js +0 -53
- package/src/serve/index.js +0 -9
- package/src/serve/module_loader.js +0 -16
- package/src/serve/to_sorted.js +0 -1
- /package/{src/build → lib/private}/defaults/app.html +0 -0
- /package/{src/build → lib/private}/defaults/error.html +0 -0
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
import App from "#App";
|
|
2
|
+
import DevModule from "#builtin/DevModule";
|
|
3
|
+
import HandleModule from "#builtin/HandleModule";
|
|
4
|
+
import fail from "#fail";
|
|
5
|
+
import hash from "#hash";
|
|
6
|
+
import I18NModule from "#i18n/Module";
|
|
7
|
+
import location from "#location";
|
|
8
|
+
import log from "#log";
|
|
9
|
+
import reducer from "#reducer";
|
|
10
|
+
import parse from "#request/parse";
|
|
11
|
+
import RequestBag from "#request/RequestBag";
|
|
12
|
+
import RequestBody from "#request/RequestBody";
|
|
13
|
+
import router from "#route/router";
|
|
14
|
+
import SessionModule from "#session/SessionModule";
|
|
15
|
+
import tags from "#tags";
|
|
16
|
+
import is from "@rcompat/assert/is";
|
|
17
|
+
import FileRef from "@rcompat/fs/FileRef";
|
|
18
|
+
import FileRouter from "@rcompat/fs/FileRouter";
|
|
19
|
+
import TEXT_HTML from "@rcompat/http/mime/text/html";
|
|
20
|
+
import serve from "@rcompat/http/serve";
|
|
21
|
+
import Status from "@rcompat/http/Status";
|
|
22
|
+
import entries from "@rcompat/record/entries";
|
|
23
|
+
import pema from "pema";
|
|
24
|
+
import record from "pema/record";
|
|
25
|
+
import string from "pema/string";
|
|
26
|
+
import uint from "pema/uint";
|
|
27
|
+
const deroot = (pathname) => pathname.endsWith("/") && pathname !== "/"
|
|
28
|
+
? pathname.slice(0, -1)
|
|
29
|
+
: pathname;
|
|
30
|
+
// remove excess slashes
|
|
31
|
+
const deslash = (url) => url.replaceAll(/\/{2,}/gu, _ => "/");
|
|
32
|
+
const normalize = (pathname) => deroot(deslash(pathname));
|
|
33
|
+
const to_csp = (config_csp, assets, override) => config_csp
|
|
34
|
+
// only csp entries in the config will be enriched
|
|
35
|
+
.map(([key, directives]) =>
|
|
36
|
+
// enrich with application assets
|
|
37
|
+
[key, assets[key] ? directives.concat(...assets[key]) : directives])
|
|
38
|
+
.map(([key, directives]) =>
|
|
39
|
+
// enrich with explicit csp
|
|
40
|
+
[key, override[key] ? directives.concat(...override[key]) : directives])
|
|
41
|
+
.map(([key, directives]) => `${key} ${directives.join(" ")}`)
|
|
42
|
+
.join(";");
|
|
43
|
+
const render_head = (assets, head) => {
|
|
44
|
+
const fonts = assets.filter(asset => asset.src?.endsWith(".woff2"));
|
|
45
|
+
const rest = assets.filter(asset => !asset.src?.endsWith(".woff2")
|
|
46
|
+
&& asset.type !== "js");
|
|
47
|
+
return rest.toSorted(({ type }) => -1 * Number(type === "importmap"))
|
|
48
|
+
.map(({ code, inline, integrity, src, type }) => type === "style"
|
|
49
|
+
? tags.style({ code, href: src, inline })
|
|
50
|
+
: tags.script({ code, inline, integrity, src, type })).join("\n").concat("\n", head ?? "").concat("\n", fonts.map(font => tags.font({ href: font.src, type: "font/woff2" })).join("\n"));
|
|
51
|
+
};
|
|
52
|
+
const s_http = Symbol("s_http");
|
|
53
|
+
;
|
|
54
|
+
export default class ServeApp extends App {
|
|
55
|
+
#init;
|
|
56
|
+
#server;
|
|
57
|
+
#components;
|
|
58
|
+
#csp = {};
|
|
59
|
+
#assets = [];
|
|
60
|
+
#stores;
|
|
61
|
+
#frontends = {};
|
|
62
|
+
#router;
|
|
63
|
+
#builtins;
|
|
64
|
+
#i18n_config;
|
|
65
|
+
constructor(rootfile, init) {
|
|
66
|
+
super(new FileRef(rootfile).directory, init.config, init.mode);
|
|
67
|
+
this.#init = init;
|
|
68
|
+
this.#components = Object.fromEntries(init.components ?? []);
|
|
69
|
+
this.#stores = Object.fromEntries((init.stores?.map(([k, s]) => [k, s.default])) ?? []);
|
|
70
|
+
const http = this.#init.config.http;
|
|
71
|
+
this.#i18n_config = init.i18n_config;
|
|
72
|
+
this.set(s_http, {
|
|
73
|
+
host: http.host,
|
|
74
|
+
port: http.port,
|
|
75
|
+
ssl: this.secure ? {
|
|
76
|
+
cert: this.root.join(http.ssl.cert),
|
|
77
|
+
key: this.root.join(http.ssl.key),
|
|
78
|
+
} : {},
|
|
79
|
+
});
|
|
80
|
+
this.#router = FileRouter.init({
|
|
81
|
+
extensions: [".js"],
|
|
82
|
+
specials: {
|
|
83
|
+
error: { recursive: false },
|
|
84
|
+
guard: { recursive: true },
|
|
85
|
+
layout: { recursive: true },
|
|
86
|
+
},
|
|
87
|
+
}, init.files.routes.map(s => s[0]));
|
|
88
|
+
this.#builtins = {
|
|
89
|
+
dev: init.mode === "development" ? new DevModule(this) : undefined,
|
|
90
|
+
handle: new HandleModule(this),
|
|
91
|
+
session: new SessionModule(this),
|
|
92
|
+
i18n: init.i18n_config ? new I18NModule(init.i18n_config) : undefined,
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
;
|
|
96
|
+
get secure() {
|
|
97
|
+
const ssl = this.config("http.ssl");
|
|
98
|
+
return ssl.key !== undefined && ssl.cert !== undefined;
|
|
99
|
+
}
|
|
100
|
+
loader() {
|
|
101
|
+
return this.#init.loader;
|
|
102
|
+
}
|
|
103
|
+
serve(pathname) {
|
|
104
|
+
return this.loader().serve(pathname);
|
|
105
|
+
}
|
|
106
|
+
get assets() {
|
|
107
|
+
return this.#assets;
|
|
108
|
+
}
|
|
109
|
+
get modules() {
|
|
110
|
+
const { session, i18n } = this.#builtins;
|
|
111
|
+
return [session, i18n, ...super.modules].filter(m => m !== undefined);
|
|
112
|
+
}
|
|
113
|
+
get url() {
|
|
114
|
+
const { host, port } = this.config("http");
|
|
115
|
+
return `http${this.secure ? "s" : ""}://${host}:${port}`;
|
|
116
|
+
}
|
|
117
|
+
;
|
|
118
|
+
get router() {
|
|
119
|
+
return this.#router;
|
|
120
|
+
}
|
|
121
|
+
get frontends() {
|
|
122
|
+
return { ...this.#frontends };
|
|
123
|
+
}
|
|
124
|
+
get files() {
|
|
125
|
+
return this.#init.files;
|
|
126
|
+
}
|
|
127
|
+
get stores() {
|
|
128
|
+
return this.#stores;
|
|
129
|
+
}
|
|
130
|
+
get i18n() {
|
|
131
|
+
return this.#i18n_config;
|
|
132
|
+
}
|
|
133
|
+
component(name) {
|
|
134
|
+
const base = name.slice(0, name.lastIndexOf((".")));
|
|
135
|
+
const component = this.#components[base];
|
|
136
|
+
if (component === undefined) {
|
|
137
|
+
throw fail("missing component {0}", `${location.components}/${name}`);
|
|
138
|
+
}
|
|
139
|
+
return (component.default ?? component);
|
|
140
|
+
}
|
|
141
|
+
;
|
|
142
|
+
headers(csp = {}) {
|
|
143
|
+
const http_csp = Object.entries(this.config("http.csp") ?? {});
|
|
144
|
+
return {
|
|
145
|
+
...this.config("http.headers") ?? {},
|
|
146
|
+
...http_csp.length === 0 ? {} : {
|
|
147
|
+
"Content-Security-Policy": to_csp(http_csp, this.#csp, csp),
|
|
148
|
+
},
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
;
|
|
152
|
+
render(content) {
|
|
153
|
+
const { body, head, page, partial, placeholders = {} } = content;
|
|
154
|
+
["body", "head"].forEach(key => is(placeholders[key]).undefined());
|
|
155
|
+
return partial ? body : Object.entries(placeholders)
|
|
156
|
+
// replace given placeholders, defaulting to ""
|
|
157
|
+
.reduce((rendered, [key, value]) => rendered
|
|
158
|
+
.replaceAll(`%${key}%`, value?.toString() ?? ""), this.page(page))
|
|
159
|
+
// replace non-given placeholders, aside from %body% / %head%
|
|
160
|
+
.replaceAll(/(?<keep>%(?:head|body)%)|%.*?%/gus, "$1")
|
|
161
|
+
// replace body and head
|
|
162
|
+
.replace("%body%", body)
|
|
163
|
+
.replace("%head%", render_head(this.#assets, head));
|
|
164
|
+
}
|
|
165
|
+
page(page) {
|
|
166
|
+
return this.loader().page(page);
|
|
167
|
+
}
|
|
168
|
+
respond(body, init) {
|
|
169
|
+
const { headers, status } = pema({
|
|
170
|
+
headers: record(string, string),
|
|
171
|
+
status: uint.values(Status).default(Status.OK),
|
|
172
|
+
}).parse(init);
|
|
173
|
+
return new Response(body, {
|
|
174
|
+
headers: {
|
|
175
|
+
"Content-Type": TEXT_HTML, ...this.headers(), ...headers,
|
|
176
|
+
}, status: status,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
;
|
|
180
|
+
view(options) {
|
|
181
|
+
// split render and respond options
|
|
182
|
+
const { headers = {}, status = Status.OK, statusText, ...rest } = options;
|
|
183
|
+
return this.respond(this.render(rest), { headers, status });
|
|
184
|
+
}
|
|
185
|
+
;
|
|
186
|
+
media(content_type, response = {}) {
|
|
187
|
+
return {
|
|
188
|
+
headers: { ...response.headers, "Content-Type": content_type },
|
|
189
|
+
status: response.status ?? Status.OK,
|
|
190
|
+
};
|
|
191
|
+
}
|
|
192
|
+
;
|
|
193
|
+
async publish({ code, inline = false, src, type = "" }) {
|
|
194
|
+
if (inline || type === "style") {
|
|
195
|
+
this.#assets.push({
|
|
196
|
+
code: inline ? code : "",
|
|
197
|
+
inline,
|
|
198
|
+
integrity: await hash(code),
|
|
199
|
+
src: FileRef.join(this.#init.config.http.static.root, src ?? "").path,
|
|
200
|
+
type,
|
|
201
|
+
});
|
|
202
|
+
}
|
|
203
|
+
// rehash assets_csp
|
|
204
|
+
this.create_csp();
|
|
205
|
+
}
|
|
206
|
+
;
|
|
207
|
+
create_csp() {
|
|
208
|
+
this.#csp = this.#assets.map(({ integrity, type: directive }) => [`${directive === "style" ? "style" : "script"}-src`, integrity])
|
|
209
|
+
.reduce((csp, [directive, hash]) => ({ ...csp, [directive]: csp[directive].concat(`'${hash}'`) }), { "script-src": [], "style-src": [] });
|
|
210
|
+
}
|
|
211
|
+
;
|
|
212
|
+
register(extension, viewFunction) {
|
|
213
|
+
if (this.#frontends[extension] !== undefined) {
|
|
214
|
+
throw fail("double file extension {0}", extension);
|
|
215
|
+
}
|
|
216
|
+
this.#frontends[extension] = viewFunction;
|
|
217
|
+
}
|
|
218
|
+
;
|
|
219
|
+
async start() {
|
|
220
|
+
this.#assets = await Promise.all(this.#init.assets.map(async (asset) => {
|
|
221
|
+
const code = asset.type === "importmap"
|
|
222
|
+
? JSON.stringify(asset.code, null, 2)
|
|
223
|
+
: asset.code;
|
|
224
|
+
return {
|
|
225
|
+
...asset,
|
|
226
|
+
code,
|
|
227
|
+
integrity: await hash(code),
|
|
228
|
+
};
|
|
229
|
+
}));
|
|
230
|
+
const modules = [
|
|
231
|
+
this.#builtins.dev,
|
|
232
|
+
...this.modules,
|
|
233
|
+
this.#builtins.handle,
|
|
234
|
+
].filter(m => m !== undefined);
|
|
235
|
+
const handle = (request) => reducer(modules, request, "handle");
|
|
236
|
+
this.#server = await serve(async (request) => {
|
|
237
|
+
try {
|
|
238
|
+
return await handle(parse(request));
|
|
239
|
+
}
|
|
240
|
+
catch (error) {
|
|
241
|
+
log.error(error);
|
|
242
|
+
return new Response(null, { status: Status.INTERNAL_SERVER_ERROR });
|
|
243
|
+
}
|
|
244
|
+
}, this.get(s_http));
|
|
245
|
+
log.system("started {0}", this.url);
|
|
246
|
+
}
|
|
247
|
+
;
|
|
248
|
+
stop() {
|
|
249
|
+
this.#server.stop();
|
|
250
|
+
log.system("stopped {0}", this.url);
|
|
251
|
+
}
|
|
252
|
+
;
|
|
253
|
+
upgrade(request, actions) {
|
|
254
|
+
return this.#server.upgrade(request, actions);
|
|
255
|
+
}
|
|
256
|
+
async route(request) {
|
|
257
|
+
const { original, url } = request;
|
|
258
|
+
const pathname = normalize(url.pathname);
|
|
259
|
+
const route = this.router.match(original);
|
|
260
|
+
if (route === undefined) {
|
|
261
|
+
log.info("no {0} route to {1}", original.method, pathname);
|
|
262
|
+
return;
|
|
263
|
+
}
|
|
264
|
+
const verb = original.method.toLowerCase();
|
|
265
|
+
const { errors = [], guards = [], layouts = [] } = entries(route.specials)
|
|
266
|
+
.map(([key, value]) => [`${key}s`, value ?? []])
|
|
267
|
+
.map(([key, value]) => [key, value.map(v => {
|
|
268
|
+
const verbs = router.get(v);
|
|
269
|
+
const routeHandler = verbs[verb];
|
|
270
|
+
if (routeHandler === undefined) {
|
|
271
|
+
throw fail("route {0} has no {1} verb", route.path, verb);
|
|
272
|
+
}
|
|
273
|
+
return routeHandler.handler;
|
|
274
|
+
})])
|
|
275
|
+
.get();
|
|
276
|
+
const verbs = router.get(route.path);
|
|
277
|
+
const routePath = verbs[verb];
|
|
278
|
+
if (routePath === undefined) {
|
|
279
|
+
throw fail("route {0} has no {1} verb", route.path, verb);
|
|
280
|
+
}
|
|
281
|
+
const parseBody = routePath.options.parseBody;
|
|
282
|
+
const body = parseBody ?? this.config("request.body.parse")
|
|
283
|
+
? await RequestBody.parse(original, url)
|
|
284
|
+
: RequestBody.none();
|
|
285
|
+
return {
|
|
286
|
+
errors,
|
|
287
|
+
guards,
|
|
288
|
+
handler: routePath.handler,
|
|
289
|
+
layouts,
|
|
290
|
+
request: {
|
|
291
|
+
...request,
|
|
292
|
+
body,
|
|
293
|
+
path: new RequestBag(route.params, "path", {
|
|
294
|
+
normalize: k => k.toLowerCase(),
|
|
295
|
+
raw: url.pathname,
|
|
296
|
+
}),
|
|
297
|
+
},
|
|
298
|
+
};
|
|
299
|
+
}
|
|
300
|
+
get session() {
|
|
301
|
+
return this.#init.session_config;
|
|
302
|
+
}
|
|
303
|
+
;
|
|
304
|
+
}
|
|
305
|
+
//# sourceMappingURL=ServeApp.js.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type Asset from "#asset/Asset";
|
|
2
|
+
import type Config from "#config/Config";
|
|
3
|
+
import type I18NConfig from "#i18n/Config";
|
|
4
|
+
import type Loader from "#Loader";
|
|
5
|
+
import type Mode from "#Mode";
|
|
6
|
+
import type SessionConfig from "#session/Config";
|
|
7
|
+
import type Dict from "@rcompat/type/Dict";
|
|
8
|
+
type Import = {
|
|
9
|
+
default: unknown;
|
|
10
|
+
} & Dict;
|
|
11
|
+
type BuildFiles = {
|
|
12
|
+
routes: [string, {
|
|
13
|
+
default: any;
|
|
14
|
+
}][];
|
|
15
|
+
};
|
|
16
|
+
type ServeInit = {
|
|
17
|
+
assets: Asset[];
|
|
18
|
+
components?: [string, Import][];
|
|
19
|
+
stores?: [string, Import][];
|
|
20
|
+
config: Config;
|
|
21
|
+
files: BuildFiles;
|
|
22
|
+
loader: Loader;
|
|
23
|
+
mode: Mode;
|
|
24
|
+
target: string;
|
|
25
|
+
session_config: SessionConfig;
|
|
26
|
+
i18n_config?: I18NConfig;
|
|
27
|
+
};
|
|
28
|
+
export type { ServeInit as default };
|
|
29
|
+
//# sourceMappingURL=ServeInit.d.ts.map
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import Module from "#Module";
|
|
2
|
+
export default abstract class BackendModule extends Module {
|
|
3
|
+
#private;
|
|
4
|
+
abstract defaultExtension: string;
|
|
5
|
+
static schema: import("pema").ObjectType<{
|
|
6
|
+
fileExtension: import("pema").OptionalType<import("pema/string").StringType>;
|
|
7
|
+
}>;
|
|
8
|
+
static options: {
|
|
9
|
+
fileExtension: string | undefined;
|
|
10
|
+
};
|
|
11
|
+
static input: {
|
|
12
|
+
fileExtension?: string | undefined;
|
|
13
|
+
} | undefined;
|
|
14
|
+
constructor(options?: typeof BackendModule.schema.input);
|
|
15
|
+
get fileExtension(): string;
|
|
16
|
+
get package(): string;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=Module.d.ts.map
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import Module from "#Module";
|
|
2
|
+
import pema from "pema";
|
|
3
|
+
import string from "pema/string";
|
|
4
|
+
export default class BackendModule extends Module {
|
|
5
|
+
#options;
|
|
6
|
+
static schema = pema({
|
|
7
|
+
fileExtension: string.optional(),
|
|
8
|
+
});
|
|
9
|
+
static options = BackendModule.schema.infer;
|
|
10
|
+
static input = BackendModule.schema.input;
|
|
11
|
+
constructor(options) {
|
|
12
|
+
super();
|
|
13
|
+
this.#options = BackendModule.schema.parse(options);
|
|
14
|
+
}
|
|
15
|
+
get fileExtension() {
|
|
16
|
+
return this.#options.fileExtension ?? this.defaultExtension;
|
|
17
|
+
}
|
|
18
|
+
get package() {
|
|
19
|
+
return `@primate/${this.name}`;
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=Module.js.map
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import BuildApp from "#BuildApp";
|
|
2
|
+
import bye from "#bye";
|
|
3
|
+
import default_config from "#config/index";
|
|
4
|
+
import fail from "#fail";
|
|
5
|
+
import log from "#log";
|
|
6
|
+
import root from "@rcompat/package/root";
|
|
7
|
+
import empty from "@rcompat/record/empty";
|
|
8
|
+
const no_config = (config) => config === undefined || empty(config);
|
|
9
|
+
const find_config = async (project_root) => {
|
|
10
|
+
const ts_config = project_root.join("config/app.ts");
|
|
11
|
+
if (await ts_config.exists())
|
|
12
|
+
return ts_config;
|
|
13
|
+
const js_config = project_root.join("config/app.js");
|
|
14
|
+
if (await js_config.exists())
|
|
15
|
+
return js_config;
|
|
16
|
+
};
|
|
17
|
+
const get_config = async (project_root) => {
|
|
18
|
+
const config = await find_config(project_root);
|
|
19
|
+
if (config !== undefined) {
|
|
20
|
+
try {
|
|
21
|
+
const imported = await config.import("default");
|
|
22
|
+
if (no_config(imported))
|
|
23
|
+
throw fail("empty config file at {0}", config);
|
|
24
|
+
return imported;
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
throw fail("error in config file {0}", error);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
return default_config();
|
|
31
|
+
};
|
|
32
|
+
export default async (mode, target) => {
|
|
33
|
+
try {
|
|
34
|
+
const package_root = await root();
|
|
35
|
+
const config = await get_config(package_root);
|
|
36
|
+
const app = await new BuildApp(package_root, config, mode).init(target);
|
|
37
|
+
await app.buildInit();
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
log.error(error);
|
|
42
|
+
bye();
|
|
43
|
+
}
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=build.js.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import Module from "#Module";
|
|
2
|
+
import type NextHandle from "#module/NextHandle";
|
|
3
|
+
import type RequestFacade from "#request/RequestFacade";
|
|
4
|
+
import type ServeApp from "#ServeApp";
|
|
5
|
+
export default class DevModule extends Module {
|
|
6
|
+
#private;
|
|
7
|
+
name: string;
|
|
8
|
+
constructor(app: ServeApp);
|
|
9
|
+
handle(request: RequestFacade, next: NextHandle): import("@rcompat/type/MaybePromise").default<Response>;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=DevModule.d.ts.map
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import Module from "#Module";
|
|
2
|
+
import reload_defaults from "@rcompat/build/reload/defaults";
|
|
3
|
+
import reload_path from "@rcompat/build/reload/path";
|
|
4
|
+
function pass(address, request) {
|
|
5
|
+
return fetch(address, {
|
|
6
|
+
body: request.body,
|
|
7
|
+
duplex: "half",
|
|
8
|
+
headers: request.headers,
|
|
9
|
+
method: request.method,
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
export default class DevModule extends Module {
|
|
13
|
+
name = "builtin/dev";
|
|
14
|
+
#paths;
|
|
15
|
+
#reload_url;
|
|
16
|
+
constructor(app) {
|
|
17
|
+
super();
|
|
18
|
+
const assets = app.assets
|
|
19
|
+
.filter(asset => asset.type !== "importmap")
|
|
20
|
+
.map(asset => asset.src);
|
|
21
|
+
const http = app.config("http");
|
|
22
|
+
this.#paths = ([reload_path]).concat(assets);
|
|
23
|
+
this.#reload_url = `http://${http.host}:${reload_defaults.port}`;
|
|
24
|
+
}
|
|
25
|
+
handle(request, next) {
|
|
26
|
+
const { pathname } = new URL(request.url);
|
|
27
|
+
return this.#paths.includes(pathname)
|
|
28
|
+
? pass(`${this.#reload_url}${pathname}`, request.original)
|
|
29
|
+
: next(request);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
//# sourceMappingURL=DevModule.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import Module from "#Module";
|
|
2
|
+
import type RequestFacade from "#request/RequestFacade";
|
|
3
|
+
import type ServeApp from "#ServeApp";
|
|
4
|
+
export default class HandleModule extends Module {
|
|
5
|
+
#private;
|
|
6
|
+
name: string;
|
|
7
|
+
constructor(app: ServeApp);
|
|
8
|
+
handle(request: RequestFacade): Promise<Response>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=HandleModule.d.ts.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import route from "#request/route";
|
|
2
|
+
import Module from "#Module";
|
|
3
|
+
export default class HandleModule extends Module {
|
|
4
|
+
name = "builtin/handle";
|
|
5
|
+
#app;
|
|
6
|
+
constructor(app) {
|
|
7
|
+
super();
|
|
8
|
+
this.#app = app;
|
|
9
|
+
}
|
|
10
|
+
async handle(request) {
|
|
11
|
+
return await this.#app.serve(request.url.pathname)
|
|
12
|
+
?? route(this.#app, request);
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=HandleModule.js.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
// @ts-expect-error esbuild vfs
|
|
2
|
+
import * as frontends from "#frontends";
|
|
3
|
+
export default class ClientApp {
|
|
4
|
+
start() {
|
|
5
|
+
const hydration = document.getElementById("hydration")?.textContent;
|
|
6
|
+
if (hydration !== undefined) {
|
|
7
|
+
const { component, frontend, ...data } = JSON.parse(hydration);
|
|
8
|
+
frontends[frontend]?.mount(component, data);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=App.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type Dict from "@rcompat/type/Dict";
|
|
2
|
+
import type JSONPointer from "@rcompat/type/JSONPointer";
|
|
3
|
+
import type JSONValue from "@rcompat/type/JSONValue";
|
|
4
|
+
type ValidateInit<T> = {
|
|
5
|
+
headers?: Dict<string>;
|
|
6
|
+
initial: T;
|
|
7
|
+
map?: (value: T) => JSONValue;
|
|
8
|
+
method: "DELETE" | "PATCH" | "POST" | "PUT";
|
|
9
|
+
path?: JSONPointer;
|
|
10
|
+
url: string;
|
|
11
|
+
};
|
|
12
|
+
export type { ValidateInit as default };
|
|
13
|
+
//# sourceMappingURL=ValidateInit.d.ts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type ClientData from "#client/Data";
|
|
2
|
+
import type Dict from "@rcompat/type/Dict";
|
|
3
|
+
type Updater<T extends Dict> = (json: ClientData<T>, after?: () => void) => void;
|
|
4
|
+
declare const _default: <T extends Dict>(updater: Updater<T>) => void;
|
|
5
|
+
export default _default;
|
|
6
|
+
//# sourceMappingURL=index.d.ts.map
|