@primate/core 0.1.10 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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 +245 -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,68 @@
|
|
|
1
|
+
import location from "#location";
|
|
2
|
+
import FileRef from "@rcompat/fs/FileRef";
|
|
3
|
+
const html = /^.*.html$/ui;
|
|
4
|
+
const web = {
|
|
5
|
+
name: "web",
|
|
6
|
+
runner: async (app) => {
|
|
7
|
+
const client = app.runpath(location.client);
|
|
8
|
+
const client_imports = (await client.collect())
|
|
9
|
+
.map((file, i) => {
|
|
10
|
+
const type = file.extension === ".css" ? "style" : "js";
|
|
11
|
+
const src = `/${file.debase(client).name}`;
|
|
12
|
+
const path = `./${file.debase(`${app.path.build}/`)}`;
|
|
13
|
+
return {
|
|
14
|
+
code: `await load_text(asset${i})`,
|
|
15
|
+
path,
|
|
16
|
+
src,
|
|
17
|
+
type,
|
|
18
|
+
};
|
|
19
|
+
});
|
|
20
|
+
const d = app.runpath(location.server, location.pages);
|
|
21
|
+
const pages = await Promise.all((await FileRef.collect(d, file => html.test(file.path)))
|
|
22
|
+
.map(async (file) => `${file.debase(d)}`.slice(1)));
|
|
23
|
+
const pages_str = pages.map(page => `"${page}": await load_text(import.meta.url,
|
|
24
|
+
"${FileRef.webpath(`../${location.server}/${location.pages}/${page}`)}"),`)
|
|
25
|
+
.join("\n");
|
|
26
|
+
const assets_scripts = `
|
|
27
|
+
import Loader from "primate/Loader";
|
|
28
|
+
import load_text from "primate/load-text";
|
|
29
|
+
|
|
30
|
+
${client_imports.map(({ path }, i) => `const asset${i} = await load_text(import.meta.url, "../${path}");`)
|
|
31
|
+
.join("\n ")}
|
|
32
|
+
const assets = [${client_imports.map(($import, i) => `{
|
|
33
|
+
src: "${$import.src}",
|
|
34
|
+
code: asset${i},
|
|
35
|
+
type: "${$import.type}",
|
|
36
|
+
inline: false,
|
|
37
|
+
}`).join(",\n ")}];
|
|
38
|
+
|
|
39
|
+
const imports = {
|
|
40
|
+
app: "${client_imports.find(({ src }) => src.includes("app") && src.endsWith(".js")).src}"
|
|
41
|
+
};
|
|
42
|
+
// importmap
|
|
43
|
+
assets.push({
|
|
44
|
+
inline: true,
|
|
45
|
+
code: { imports },
|
|
46
|
+
type: "importmap",
|
|
47
|
+
});
|
|
48
|
+
|
|
49
|
+
const pages = {
|
|
50
|
+
${pages_str}
|
|
51
|
+
};
|
|
52
|
+
|
|
53
|
+
export default {
|
|
54
|
+
assets,
|
|
55
|
+
loader: new Loader({
|
|
56
|
+
pages,
|
|
57
|
+
rootfile: import.meta.url,
|
|
58
|
+
static_root: "${app.config("http.static.root")}",
|
|
59
|
+
}),
|
|
60
|
+
target: "web",
|
|
61
|
+
};
|
|
62
|
+
`;
|
|
63
|
+
await app.path.build.join("target.js").write(assets_scripts);
|
|
64
|
+
},
|
|
65
|
+
target: "web",
|
|
66
|
+
};
|
|
67
|
+
export default web;
|
|
68
|
+
//# sourceMappingURL=web.js.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type Verb from "#request/Verb";
|
|
2
|
+
import type I32 from "#wasm/I32";
|
|
3
|
+
import type Tagged from "#wasm/Tagged";
|
|
4
|
+
/** The HTTP Methods that are potentially exported by the WASM module if they
|
|
5
|
+
* are following the Primate WASM ABI convention. */
|
|
6
|
+
type ExportedMethods<TRequest = I32, TResponse = I32> = {
|
|
7
|
+
[Method in Verb]?: (request: Tagged<"Request", TRequest>) => Tagged<"Response", TResponse>;
|
|
8
|
+
};
|
|
9
|
+
/** These functions should be exported by a WASM module to be compatible with
|
|
10
|
+
* Primate. This follows the Primate WASM ABI convention. */
|
|
11
|
+
type Exports<TRequest = I32, TResponse = I32> = {
|
|
12
|
+
finalizeRequest(value: Tagged<"Request", TRequest>): void;
|
|
13
|
+
finalizeResponse(value: Tagged<"Response", TResponse>): void;
|
|
14
|
+
getStoreValueDone(): void;
|
|
15
|
+
memory: WebAssembly.Memory;
|
|
16
|
+
newRequest(): Tagged<"Request", TRequest>;
|
|
17
|
+
sendResponse(response: Tagged<"Response", TResponse>): void;
|
|
18
|
+
websocketClose(): void;
|
|
19
|
+
websocketMessage(): void;
|
|
20
|
+
websocketOpen(): void;
|
|
21
|
+
} & ExportedMethods<TRequest, TResponse>;
|
|
22
|
+
export type { Exports as default };
|
|
23
|
+
//# sourceMappingURL=Exports.d.ts.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type API from "#wasm/API";
|
|
2
|
+
import type Exports from "#wasm/Exports";
|
|
3
|
+
import type I32 from "#wasm/I32";
|
|
4
|
+
type Instantiation<TRequest = I32, TResponse = I32> = {
|
|
5
|
+
api: API;
|
|
6
|
+
exports: Exports<TRequest, TResponse>;
|
|
7
|
+
memory: WebAssembly.Memory;
|
|
8
|
+
setPayload(value: Uint8Array): void;
|
|
9
|
+
sockets: Map<bigint, any>;
|
|
10
|
+
};
|
|
11
|
+
export type { Instantiation as default };
|
|
12
|
+
//# sourceMappingURL=Instantiation.d.ts.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import BufferView from "@rcompat/bufferview";
|
|
2
|
+
declare function decodeJson(view: BufferView): any;
|
|
3
|
+
declare namespace decodeJson {
|
|
4
|
+
var from: (buffer: ArrayBufferLike | ArrayBufferView<ArrayBufferLike>, offset?: number | undefined, byteLength?: number | undefined) => any;
|
|
5
|
+
}
|
|
6
|
+
export default decodeJson;
|
|
7
|
+
//# sourceMappingURL=decode-json.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import decodeString from "#wasm/decode-string";
|
|
2
|
+
import BufferView from "@rcompat/bufferview";
|
|
3
|
+
function decodeJson(view) {
|
|
4
|
+
return JSON.parse(decodeString(view));
|
|
5
|
+
}
|
|
6
|
+
;
|
|
7
|
+
decodeJson.from = (...source) => {
|
|
8
|
+
return decodeJson(new BufferView(...source));
|
|
9
|
+
};
|
|
10
|
+
export default decodeJson;
|
|
11
|
+
//# sourceMappingURL=decode-json.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import assert from "@rcompat/assert";
|
|
2
|
+
const NONE = 0;
|
|
3
|
+
const SOME = 1;
|
|
4
|
+
const decodeOption = (kind, source) => {
|
|
5
|
+
const option = source.readU32();
|
|
6
|
+
assert(option === NONE || option === SOME, "Error decoding option, invalid option value.");
|
|
7
|
+
return option === SOME ? kind(source) : void 0;
|
|
8
|
+
};
|
|
9
|
+
export default decodeOption;
|
|
10
|
+
//# sourceMappingURL=decode-option.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type ResponseFunction from "#response/ResponseFunction";
|
|
2
|
+
import type Instantiation from "#wasm/Instantiation";
|
|
3
|
+
import type BufferView from "@rcompat/bufferview";
|
|
4
|
+
import type Dict from "@rcompat/type/Dict";
|
|
5
|
+
type DecodedResponse = {
|
|
6
|
+
callback: (api: Instantiation) => ResponseFunction;
|
|
7
|
+
type: "web_socket_upgrade";
|
|
8
|
+
} | {
|
|
9
|
+
headers: Dict<string>;
|
|
10
|
+
status?: number | undefined;
|
|
11
|
+
text: string;
|
|
12
|
+
type: "text";
|
|
13
|
+
} | {
|
|
14
|
+
type: "blob" | "error" | "json" | "redirect" | "uri" | "view";
|
|
15
|
+
value: any;
|
|
16
|
+
};
|
|
17
|
+
declare const decodeResponse: (source: BufferView) => DecodedResponse | undefined;
|
|
18
|
+
export default decodeResponse;
|
|
19
|
+
//# sourceMappingURL=decode-response.d.ts.map
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import error from "#response/error";
|
|
2
|
+
import redirect from "#response/redirect";
|
|
3
|
+
import view from "#response/view";
|
|
4
|
+
import decodeBytes from "#wasm/decode-bytes";
|
|
5
|
+
import decodeJson from "#wasm/decode-json";
|
|
6
|
+
import decodeOption from "#wasm/decode-option";
|
|
7
|
+
import decodeString from "#wasm/decode-string";
|
|
8
|
+
import openWebsocket from "#wasm/open-websocket";
|
|
9
|
+
import assert from "@rcompat/assert";
|
|
10
|
+
const RESPONSE_TEXT = 0;
|
|
11
|
+
const RESPONSE_JSON = 1;
|
|
12
|
+
const RESPONSE_BLOB = 2;
|
|
13
|
+
const RESPONSE_VIEW = 3;
|
|
14
|
+
const RESPONSE_ERROR = 4;
|
|
15
|
+
const RESPONSE_REDIRECT = 5;
|
|
16
|
+
const RESPONSE_URI = 6;
|
|
17
|
+
const RESPONSE_WEB_SOCKET_UPGRADE = 7;
|
|
18
|
+
const decodeResponse = (source) => {
|
|
19
|
+
const responseKind = source.readU32();
|
|
20
|
+
assert(responseKind === RESPONSE_BLOB
|
|
21
|
+
|| responseKind === RESPONSE_ERROR
|
|
22
|
+
|| responseKind === RESPONSE_JSON
|
|
23
|
+
|| responseKind === RESPONSE_REDIRECT
|
|
24
|
+
|| responseKind === RESPONSE_TEXT
|
|
25
|
+
|| responseKind === RESPONSE_URI
|
|
26
|
+
|| responseKind === RESPONSE_VIEW
|
|
27
|
+
|| responseKind === RESPONSE_WEB_SOCKET_UPGRADE, "Invalid response kind.");
|
|
28
|
+
switch (responseKind) {
|
|
29
|
+
case RESPONSE_TEXT: {
|
|
30
|
+
const text = decodeString(source);
|
|
31
|
+
const status = source.readU32();
|
|
32
|
+
const headers = decodeJson(source);
|
|
33
|
+
return { headers, status, text, type: "text" };
|
|
34
|
+
}
|
|
35
|
+
case RESPONSE_JSON:
|
|
36
|
+
return { type: "json", value: decodeJson(source) };
|
|
37
|
+
case RESPONSE_BLOB: {
|
|
38
|
+
const buffer = decodeBytes(source);
|
|
39
|
+
const contentType = decodeOption(decodeString, source);
|
|
40
|
+
return {
|
|
41
|
+
type: "blob",
|
|
42
|
+
value: contentType
|
|
43
|
+
? new Blob([buffer], { type: contentType })
|
|
44
|
+
: new Blob([buffer]),
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
case RESPONSE_VIEW: {
|
|
48
|
+
const name = decodeString(source);
|
|
49
|
+
const props = decodeJson(source) || void 0;
|
|
50
|
+
const options = decodeJson(source) || void 0;
|
|
51
|
+
return {
|
|
52
|
+
type: "view",
|
|
53
|
+
value: view(name, props, options),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
case RESPONSE_ERROR: {
|
|
57
|
+
const body = decodeOption(decodeString, source);
|
|
58
|
+
const status = source.readU32();
|
|
59
|
+
const page = decodeOption(decodeString, source);
|
|
60
|
+
return {
|
|
61
|
+
type: "error",
|
|
62
|
+
value: error({ body, page, status }),
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
case RESPONSE_REDIRECT: {
|
|
66
|
+
const to = decodeString(source);
|
|
67
|
+
const status = decodeOption(source => source.readU32(), source);
|
|
68
|
+
return {
|
|
69
|
+
type: "redirect",
|
|
70
|
+
value: redirect(to, status),
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
case RESPONSE_URI: {
|
|
74
|
+
const str = decodeString(source);
|
|
75
|
+
return {
|
|
76
|
+
type: "uri",
|
|
77
|
+
value: new URL(str),
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
case RESPONSE_WEB_SOCKET_UPGRADE: {
|
|
81
|
+
const id = source.readU64();
|
|
82
|
+
return {
|
|
83
|
+
callback: openWebsocket(id),
|
|
84
|
+
type: "web_socket_upgrade",
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
export default decodeResponse;
|
|
90
|
+
//# sourceMappingURL=decode-response.js.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import decodeBytes from "#wasm/decode-bytes";
|
|
2
|
+
import decodeString from "#wasm/decode-string";
|
|
3
|
+
import assert from "@rcompat/assert";
|
|
4
|
+
import BufferView from "@rcompat/bufferview";
|
|
5
|
+
const WEBSOCKET_MESSAGE_KIND_STRING = 0;
|
|
6
|
+
const WEBSOCKET_MESSAGE_KIND_BYTES = 1;
|
|
7
|
+
export default function decodeWebsocketSend(...source) {
|
|
8
|
+
const bufferView = new BufferView(...source);
|
|
9
|
+
const id = bufferView.readU64();
|
|
10
|
+
const kind = bufferView.readU32();
|
|
11
|
+
assert(kind === WEBSOCKET_MESSAGE_KIND_STRING
|
|
12
|
+
|| kind === WEBSOCKET_MESSAGE_KIND_BYTES, "Invalid websocket message kind.");
|
|
13
|
+
const message = kind === WEBSOCKET_MESSAGE_KIND_STRING
|
|
14
|
+
? decodeString(bufferView)
|
|
15
|
+
: decodeBytes(bufferView);
|
|
16
|
+
return { id, message };
|
|
17
|
+
}
|
|
18
|
+
;
|
|
19
|
+
//# sourceMappingURL=decode-websocket-send.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type RequestFacade from "#request/RequestFacade";
|
|
2
|
+
import BufferView from "@rcompat/bufferview";
|
|
3
|
+
declare const encodeRequest: {
|
|
4
|
+
(request: RequestFacade): Promise<Uint8Array<ArrayBuffer>>;
|
|
5
|
+
sizeOf: (request: RequestFacade) => number;
|
|
6
|
+
into: (request: RequestFacade, view: BufferView) => Promise<void>;
|
|
7
|
+
};
|
|
8
|
+
export default encodeRequest;
|
|
9
|
+
//# sourceMappingURL=encode-request.d.ts.map
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
import encodeString from "#wasm/encode-string";
|
|
2
|
+
import encodeStringMap from "#wasm/encode-string-map";
|
|
3
|
+
import encodeURL from "#wasm/encode-url";
|
|
4
|
+
import filesize from "#wasm/filesize";
|
|
5
|
+
import I32_SIZE from "#wasm/I32_SIZE";
|
|
6
|
+
import stringSize from "#wasm/stringsize";
|
|
7
|
+
import urlSize from "#wasm/urlsize";
|
|
8
|
+
import BufferView from "@rcompat/bufferview";
|
|
9
|
+
import encodeBuffer from "./encode-buffer.js";
|
|
10
|
+
const SECTION_HEADER_SIZE = I32_SIZE;
|
|
11
|
+
const URL_SECTION = 0;
|
|
12
|
+
const BODY_SECTION = 1;
|
|
13
|
+
const PATH_SECTION = 2;
|
|
14
|
+
const QUERY_SECTION = 3;
|
|
15
|
+
const HEADERS_SECTION = 4;
|
|
16
|
+
const COOKIES_SECTION = 5;
|
|
17
|
+
const BODY_KIND_NULL = 0;
|
|
18
|
+
const BODY_KIND_TEXT = 1;
|
|
19
|
+
const BODY_KIND_FIELDS = 2;
|
|
20
|
+
const BODY_KIND_BINARY = 3;
|
|
21
|
+
const BODY_KIND_JSON = 4;
|
|
22
|
+
const BODY_KIND_MAP_VALUE_STRING = 0;
|
|
23
|
+
const BODY_KIND_MAP_VALUE_BLOB = 1;
|
|
24
|
+
const sizeOfUrlSection = (url) => SECTION_HEADER_SIZE + urlSize(url);
|
|
25
|
+
const sizeOfBodySection = (body) => {
|
|
26
|
+
let size = SECTION_HEADER_SIZE + I32_SIZE;
|
|
27
|
+
if (body.type === "none")
|
|
28
|
+
return size; // 0 kind null
|
|
29
|
+
if (body.type === "text")
|
|
30
|
+
return size + stringSize(body.text());
|
|
31
|
+
if (body.type === "fields") {
|
|
32
|
+
size += I32_SIZE; // entry count
|
|
33
|
+
const fields = body.fields();
|
|
34
|
+
for (const [key, value] of Object.entries(fields)) {
|
|
35
|
+
size += stringSize(key);
|
|
36
|
+
size += I32_SIZE // value kind
|
|
37
|
+
+ (typeof value === "string"
|
|
38
|
+
? stringSize(value)
|
|
39
|
+
: filesize(value));
|
|
40
|
+
}
|
|
41
|
+
return size;
|
|
42
|
+
}
|
|
43
|
+
if (body.type === "binary") {
|
|
44
|
+
const bin = body.binary();
|
|
45
|
+
size += stringSize(bin.type);
|
|
46
|
+
size += I32_SIZE + bin.size;
|
|
47
|
+
return size;
|
|
48
|
+
}
|
|
49
|
+
if (body.type === "json") {
|
|
50
|
+
const json = body.json();
|
|
51
|
+
size += stringSize(JSON.stringify(json));
|
|
52
|
+
return size;
|
|
53
|
+
}
|
|
54
|
+
throw new Error("Invalid RequestLike body");
|
|
55
|
+
};
|
|
56
|
+
const sizeOfMapSection = (map) => {
|
|
57
|
+
let size = SECTION_HEADER_SIZE + I32_SIZE;
|
|
58
|
+
for (const [key, value] of Object.entries(map)) {
|
|
59
|
+
if (value) {
|
|
60
|
+
size += stringSize(key) + stringSize(value);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
return size;
|
|
64
|
+
};
|
|
65
|
+
/**
|
|
66
|
+
* Encode a map of Key Value pairs into a section.
|
|
67
|
+
*
|
|
68
|
+
* - [I32: header]
|
|
69
|
+
* - [I32: count]
|
|
70
|
+
* - Entries[count]:
|
|
71
|
+
* - [String: key]
|
|
72
|
+
* - [String: value]
|
|
73
|
+
*
|
|
74
|
+
* @param header - The header for this section.
|
|
75
|
+
* @param map - The map itself to be encoded.
|
|
76
|
+
* @param offset - The offset to encode the map at.
|
|
77
|
+
* @param view - The buffer view to encode the map into.
|
|
78
|
+
*/
|
|
79
|
+
const encodeMapSection = (header, map, view) => {
|
|
80
|
+
view.writeU32(header);
|
|
81
|
+
return encodeStringMap(map, view);
|
|
82
|
+
};
|
|
83
|
+
const encodeBlob = async (file, view) => {
|
|
84
|
+
const type = file.type;
|
|
85
|
+
const bytes = await file.bytes();
|
|
86
|
+
encodeString(type, view);
|
|
87
|
+
encodeBuffer(bytes, view);
|
|
88
|
+
};
|
|
89
|
+
const encodeFile = async (file, view) => {
|
|
90
|
+
const name = file.name;
|
|
91
|
+
const type = file.type;
|
|
92
|
+
const bytes = await file.bytes();
|
|
93
|
+
encodeString(name, view);
|
|
94
|
+
encodeString(type, view);
|
|
95
|
+
view.writeU32(bytes.byteLength);
|
|
96
|
+
view.writeBytes(bytes);
|
|
97
|
+
};
|
|
98
|
+
/**
|
|
99
|
+
* 1. Section 1: URI
|
|
100
|
+
* - [Section Header: 0] 4 bytes
|
|
101
|
+
* - [I32: length] 4 bytes
|
|
102
|
+
* - [...payload] length bytes
|
|
103
|
+
*/
|
|
104
|
+
const encodeSectionUrl = (url, view) => {
|
|
105
|
+
view.writeU32(URL_SECTION);
|
|
106
|
+
encodeURL(url, view);
|
|
107
|
+
};
|
|
108
|
+
/**
|
|
109
|
+
* 2. Section 2: Body
|
|
110
|
+
* - [Section Header: 1] 4 bytes
|
|
111
|
+
* - [kind: I32] 4 bytes
|
|
112
|
+
* - 0: Null
|
|
113
|
+
* - [I32: kind = 0] 4 bytes
|
|
114
|
+
* - 1: String
|
|
115
|
+
* - [I32: kind = 1] 4 bytes
|
|
116
|
+
* - [I32: length] 4 bytes
|
|
117
|
+
* - [...payload] length bytes
|
|
118
|
+
* - 2: Map<string, string | file>
|
|
119
|
+
* - [I32: kind = 2] 4 bytes
|
|
120
|
+
* - [I32: count] 4 bytes
|
|
121
|
+
* - [String, String | FileDescriptor]
|
|
122
|
+
* - [I32: key length]
|
|
123
|
+
* - [...key payload]
|
|
124
|
+
* - [I32: value kind] 4 bytes
|
|
125
|
+
* - 0: String
|
|
126
|
+
* - [I32: value kind = 0] 4 bytes
|
|
127
|
+
* - [I32: value length] 4 bytes
|
|
128
|
+
* - [...value payload] value length bytes
|
|
129
|
+
* - 1: File
|
|
130
|
+
* - [I32: value kind = 1] 4 bytes
|
|
131
|
+
* - [I32: file_descriptor] 4 bytes
|
|
132
|
+
*/
|
|
133
|
+
const encodeSectionBody = async (body, view) => {
|
|
134
|
+
view.writeU32(BODY_SECTION);
|
|
135
|
+
if (body.type === "text") {
|
|
136
|
+
const text = body.text();
|
|
137
|
+
view.writeU32(BODY_KIND_TEXT);
|
|
138
|
+
encodeString(text, view);
|
|
139
|
+
}
|
|
140
|
+
else if (body.type === "fields") {
|
|
141
|
+
const fields = body.fields();
|
|
142
|
+
const entries = Object.entries(body.fields());
|
|
143
|
+
const entryCount = entries.length;
|
|
144
|
+
view.writeU32(BODY_KIND_FIELDS);
|
|
145
|
+
view.writeU32(entryCount);
|
|
146
|
+
for (const [key, value] of Object.entries(fields)) {
|
|
147
|
+
encodeString(key, view);
|
|
148
|
+
if (typeof value === "string") {
|
|
149
|
+
view.writeU32(BODY_KIND_MAP_VALUE_STRING);
|
|
150
|
+
encodeString(value, view);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
view.writeU32(BODY_KIND_MAP_VALUE_BLOB);
|
|
154
|
+
await encodeFile(value, view);
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
else if (body.type === "binary") {
|
|
159
|
+
view.writeU32(BODY_KIND_BINARY);
|
|
160
|
+
await encodeBlob(body.binary(), view);
|
|
161
|
+
}
|
|
162
|
+
else if (body.type === "json") {
|
|
163
|
+
view.writeU32(BODY_KIND_JSON);
|
|
164
|
+
const jsonText = JSON.stringify(body.json());
|
|
165
|
+
encodeString(jsonText, view);
|
|
166
|
+
}
|
|
167
|
+
else if (body.type === "none") {
|
|
168
|
+
view.writeU32(BODY_KIND_NULL);
|
|
169
|
+
}
|
|
170
|
+
else {
|
|
171
|
+
throw new Error(`Unsupported body type: ${body?.type ?? typeof body}`);
|
|
172
|
+
}
|
|
173
|
+
};
|
|
174
|
+
const sizeOfRequest = (request) => sizeOfUrlSection(request.url)
|
|
175
|
+
+ sizeOfBodySection(request.body)
|
|
176
|
+
+ sizeOfMapSection(request.path.toJSON())
|
|
177
|
+
+ sizeOfMapSection(request.query.toJSON())
|
|
178
|
+
+ sizeOfMapSection(request.headers.toJSON())
|
|
179
|
+
+ sizeOfMapSection(request.cookies.toJSON());
|
|
180
|
+
const encodeRequestInto = async (request, view) => {
|
|
181
|
+
encodeSectionUrl(request.url, view);
|
|
182
|
+
await encodeSectionBody(request.body, view);
|
|
183
|
+
encodeMapSection(PATH_SECTION, request.path.toJSON(), view);
|
|
184
|
+
encodeMapSection(QUERY_SECTION, request.query.toJSON(), view);
|
|
185
|
+
encodeMapSection(HEADERS_SECTION, request.headers.toJSON(), view);
|
|
186
|
+
encodeMapSection(COOKIES_SECTION, request.cookies.toJSON(), view);
|
|
187
|
+
};
|
|
188
|
+
const encodeRequest = async (request) => {
|
|
189
|
+
const size = sizeOfRequest(request);
|
|
190
|
+
const output = new Uint8Array(size);
|
|
191
|
+
const bufferView = new BufferView(output);
|
|
192
|
+
await encodeRequestInto(request, bufferView);
|
|
193
|
+
return output;
|
|
194
|
+
};
|
|
195
|
+
encodeRequest.sizeOf = sizeOfRequest;
|
|
196
|
+
encodeRequest.into = encodeRequestInto;
|
|
197
|
+
export default encodeRequest;
|
|
198
|
+
//# sourceMappingURL=encode-request.js.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import encodeString from "#wasm/encode-string";
|
|
2
|
+
import I32_SIZE from "#wasm/I32_SIZE";
|
|
3
|
+
import stringSize from "#wasm/stringsize";
|
|
4
|
+
import BufferView from "@rcompat/bufferview";
|
|
5
|
+
export default function encodeSession(session) {
|
|
6
|
+
if (session.exists) {
|
|
7
|
+
const data = JSON.stringify(session.get());
|
|
8
|
+
const dataSize = stringSize(data);
|
|
9
|
+
const idSize = stringSize(session.id ?? "");
|
|
10
|
+
const size = dataSize // data payload
|
|
11
|
+
+ I32_SIZE // new flat
|
|
12
|
+
+ idSize; // id payload
|
|
13
|
+
const output = new Uint8Array(size);
|
|
14
|
+
const bufferView = new BufferView(output);
|
|
15
|
+
bufferView.writeU32(1);
|
|
16
|
+
encodeString(session.id ?? "", bufferView);
|
|
17
|
+
encodeString(data, bufferView);
|
|
18
|
+
return output;
|
|
19
|
+
}
|
|
20
|
+
// does not exist (only 0s)
|
|
21
|
+
const buffer = new Uint8Array(4);
|
|
22
|
+
return buffer;
|
|
23
|
+
}
|
|
24
|
+
;
|
|
25
|
+
//# sourceMappingURL=encode-session.js.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type BufferView from "@rcompat/bufferview";
|
|
2
|
+
import type PartialDict from "@rcompat/type/PartialDict";
|
|
3
|
+
declare const encodeStringMap: (map: PartialDict<string>, view: BufferView) => void;
|
|
4
|
+
export default encodeStringMap;
|
|
5
|
+
//# sourceMappingURL=encode-string-map.d.ts.map
|