@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,17 @@
|
|
|
1
|
+
import location from "#location";
|
|
2
|
+
import dedent from "@rcompat/string/dedent";
|
|
3
|
+
export default function wrap(code, file, build) {
|
|
4
|
+
const router = `ROUTER_${build.id}`;
|
|
5
|
+
const debased = file.debase(build.stage.join(location.routes)).path
|
|
6
|
+
.slice(1, -file.extension.length);
|
|
7
|
+
const prelude = dedent `
|
|
8
|
+
import ${router} from "primate/router";
|
|
9
|
+
${router}.push("${debased}");
|
|
10
|
+
`;
|
|
11
|
+
const postlude = `
|
|
12
|
+
${router}.pop();
|
|
13
|
+
`;
|
|
14
|
+
return `${prelude}${code}${postlude}`;
|
|
15
|
+
}
|
|
16
|
+
;
|
|
17
|
+
//# sourceMappingURL=wrap.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type Verb from "#request/Verb";
|
|
2
|
+
import type RouteHandler from "#route/Handler";
|
|
3
|
+
import type RouteOptions from "#route/Options";
|
|
4
|
+
type Route = {
|
|
5
|
+
[key in Verb]: (handler: RouteHandler, options?: RouteOptions) => void;
|
|
6
|
+
};
|
|
7
|
+
declare const _default: Route;
|
|
8
|
+
export default _default;
|
|
9
|
+
//# sourceMappingURL=route.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import SessionManager from "#session/Manager";
|
|
2
|
+
export default class InMemorySessionManager<Data> extends SessionManager<Data> {
|
|
3
|
+
#private;
|
|
4
|
+
load(id: string): Data | undefined;
|
|
5
|
+
create(id: string, data: Data): void;
|
|
6
|
+
save(id: string, data: Data): void;
|
|
7
|
+
destroy(id: string): void;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=InMemoryManager.d.ts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import SessionManager from "#session/Manager";
|
|
2
|
+
import assert from "@rcompat/assert";
|
|
3
|
+
export default class InMemorySessionManager extends SessionManager {
|
|
4
|
+
// id -> JSON
|
|
5
|
+
#sessions = new Map();
|
|
6
|
+
load(id) {
|
|
7
|
+
const raw = this.#sessions.get(id);
|
|
8
|
+
return raw === undefined ? undefined : JSON.parse(raw);
|
|
9
|
+
}
|
|
10
|
+
create(id, data) {
|
|
11
|
+
assert(!this.#sessions.has(id), `session already exists: ${id}`);
|
|
12
|
+
this.#sessions.set(id, JSON.stringify(data));
|
|
13
|
+
}
|
|
14
|
+
save(id, data) {
|
|
15
|
+
assert(this.#sessions.has(id), `session not found: ${id}`);
|
|
16
|
+
this.#sessions.set(id, JSON.stringify(data));
|
|
17
|
+
}
|
|
18
|
+
// idempotent
|
|
19
|
+
destroy(id) {
|
|
20
|
+
this.#sessions.delete(id);
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=InMemoryManager.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type MaybePromise from "@rcompat/type/MaybePromise";
|
|
2
|
+
export default abstract class SessionManager<Data> {
|
|
3
|
+
init?(): MaybePromise<void>;
|
|
4
|
+
abstract load(id: string): MaybePromise<Data | undefined>;
|
|
5
|
+
abstract create(id: string, data: Data): MaybePromise<void>;
|
|
6
|
+
abstract save(id: string, data: Data): MaybePromise<void>;
|
|
7
|
+
abstract destroy(id: string): MaybePromise<void>;
|
|
8
|
+
}
|
|
9
|
+
//# sourceMappingURL=Manager.d.ts.map
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Public session API available inside routes with
|
|
3
|
+
* import session from "#session";
|
|
4
|
+
*
|
|
5
|
+
* `T` is inferred automatically from the app's `config/session.ts` schema.
|
|
6
|
+
*/
|
|
7
|
+
export default interface SessionFacade<T> {
|
|
8
|
+
/**
|
|
9
|
+
* The unique session identifier for the current user, or `undefined` if no
|
|
10
|
+
* session has been created yet or if it has been destroyed.
|
|
11
|
+
*
|
|
12
|
+
* This value is typically sent back to the client in a cookie.
|
|
13
|
+
*/
|
|
14
|
+
readonly id: string | undefined;
|
|
15
|
+
/**
|
|
16
|
+
* Whether a session currently exists.
|
|
17
|
+
*
|
|
18
|
+
* Equivalent to checking `id !== undefined`.
|
|
19
|
+
*/
|
|
20
|
+
readonly exists: boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Create a new session. Optionally accepts initial data.
|
|
23
|
+
*
|
|
24
|
+
* - If a session already exists, this is a no-op.
|
|
25
|
+
* - Data is validated through the schema if one was provided.
|
|
26
|
+
*/
|
|
27
|
+
create(initial?: T): void;
|
|
28
|
+
/**
|
|
29
|
+
* Get the current session data.
|
|
30
|
+
*
|
|
31
|
+
* @throws if the session does not exist.
|
|
32
|
+
*/
|
|
33
|
+
get(): Readonly<T>;
|
|
34
|
+
/**
|
|
35
|
+
* Get the current session data if it exists, otherwise return `undefined`.
|
|
36
|
+
*/
|
|
37
|
+
try(): Readonly<T> | undefined;
|
|
38
|
+
/**
|
|
39
|
+
* Replace the current session data.
|
|
40
|
+
*
|
|
41
|
+
* - Accepts either a new object or a callback that maps the previous data to
|
|
42
|
+
* the next.
|
|
43
|
+
* - Data is validated through the schema if one was provided.
|
|
44
|
+
*
|
|
45
|
+
* @throws if the session does not exist.
|
|
46
|
+
*/
|
|
47
|
+
set(next: ((previous: Readonly<T>) => T) | T): void;
|
|
48
|
+
/**
|
|
49
|
+
* Destroy the current session.
|
|
50
|
+
*
|
|
51
|
+
* - If no session exists, this is a no-op.
|
|
52
|
+
* - After destruction, `id` becomes `undefined` and `exists` returns `false`.
|
|
53
|
+
*/
|
|
54
|
+
destroy(): void;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=SessionFacade.d.ts.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import kSerialize from "#session/k-serialize";
|
|
2
|
+
import type Schema from "@rcompat/type/Schema";
|
|
3
|
+
export default class SessionHandle<Data> {
|
|
4
|
+
#private;
|
|
5
|
+
[kSerialize]: () => {
|
|
6
|
+
data: Data | undefined;
|
|
7
|
+
dirty: boolean;
|
|
8
|
+
exists: boolean;
|
|
9
|
+
id: string | undefined;
|
|
10
|
+
};
|
|
11
|
+
constructor(id?: string, data?: Data, schema?: Schema<Data>);
|
|
12
|
+
get exists(): boolean;
|
|
13
|
+
get id(): string | undefined;
|
|
14
|
+
get(): Readonly<Data>;
|
|
15
|
+
try(): Readonly<Data> | undefined;
|
|
16
|
+
create(initial?: Data): void;
|
|
17
|
+
set(next: ((previous: Readonly<Data>) => Data) | Data): void;
|
|
18
|
+
destroy(): void;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=SessionHandle.d.ts.map
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
import kSerialize from "#session/k-serialize";
|
|
2
|
+
import assert from "@rcompat/assert";
|
|
3
|
+
import maybe from "@rcompat/assert/maybe";
|
|
4
|
+
export default class SessionHandle {
|
|
5
|
+
#id;
|
|
6
|
+
#data;
|
|
7
|
+
#schema;
|
|
8
|
+
#dirty = false;
|
|
9
|
+
constructor(id, data, schema) {
|
|
10
|
+
maybe(id).uuid();
|
|
11
|
+
maybe(data).record();
|
|
12
|
+
maybe(schema).object();
|
|
13
|
+
maybe(schema?.parse).function();
|
|
14
|
+
assert((id === undefined) === (data === undefined), "both `id` and `data` must be defined or undefined");
|
|
15
|
+
this.#id = id;
|
|
16
|
+
this.#data = data;
|
|
17
|
+
this.#schema = schema ?? { parse: (x) => x };
|
|
18
|
+
}
|
|
19
|
+
get exists() {
|
|
20
|
+
return this.#id !== undefined;
|
|
21
|
+
}
|
|
22
|
+
get id() {
|
|
23
|
+
return this.#id;
|
|
24
|
+
}
|
|
25
|
+
get() {
|
|
26
|
+
if (!this.exists)
|
|
27
|
+
throw new Error("session does not exist");
|
|
28
|
+
return this.#data;
|
|
29
|
+
}
|
|
30
|
+
try() {
|
|
31
|
+
return this.exists ? this.#data : undefined;
|
|
32
|
+
}
|
|
33
|
+
create(initial) {
|
|
34
|
+
// idempotent noop
|
|
35
|
+
if (this.exists)
|
|
36
|
+
return;
|
|
37
|
+
const parsed = this.#schema.parse(initial ?? {});
|
|
38
|
+
this.#id = crypto.randomUUID();
|
|
39
|
+
this.#data = parsed;
|
|
40
|
+
this.#dirty = true;
|
|
41
|
+
}
|
|
42
|
+
set(next) {
|
|
43
|
+
if (!this.exists)
|
|
44
|
+
throw new Error("cannot set() on non-existent session");
|
|
45
|
+
const previous = this.#data;
|
|
46
|
+
// @ts-expect-error TEST
|
|
47
|
+
const candidate = typeof next === "function" ? next(previous) : next;
|
|
48
|
+
this.#data = this.#schema.parse(candidate);
|
|
49
|
+
this.#dirty = true;
|
|
50
|
+
}
|
|
51
|
+
destroy() {
|
|
52
|
+
if (!this.exists)
|
|
53
|
+
return;
|
|
54
|
+
this.#id = undefined;
|
|
55
|
+
this.#data = undefined;
|
|
56
|
+
this.#dirty = true;
|
|
57
|
+
}
|
|
58
|
+
[kSerialize]() {
|
|
59
|
+
return {
|
|
60
|
+
data: this.#data,
|
|
61
|
+
dirty: this.#dirty,
|
|
62
|
+
exists: this.exists,
|
|
63
|
+
id: this.#id,
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=SessionHandle.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import Module from "#Module";
|
|
2
|
+
import type NextHandle from "#module/NextHandle";
|
|
3
|
+
import type NextServe from "#module/NextServe";
|
|
4
|
+
import type RequestFacade from "#request/RequestFacade";
|
|
5
|
+
import type ServeApp from "#ServeApp";
|
|
6
|
+
export default class SessionModule extends Module {
|
|
7
|
+
#private;
|
|
8
|
+
name: string;
|
|
9
|
+
constructor(app: ServeApp);
|
|
10
|
+
serve(app: ServeApp, next: NextServe): Promise<ServeApp>;
|
|
11
|
+
handle(request: RequestFacade, next: NextHandle): Promise<Response>;
|
|
12
|
+
}
|
|
13
|
+
//# sourceMappingURL=SessionModule.d.ts.map
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import Module from "#Module";
|
|
2
|
+
import kSerialize from "#session/k-serialize";
|
|
3
|
+
import SessionHandle from "#session/SessionHandle";
|
|
4
|
+
import storage from "#session/storage";
|
|
5
|
+
const cookie = (name, value, options) => {
|
|
6
|
+
const parts = [`${name}=${value}`];
|
|
7
|
+
parts.push(`Path=${options.path}`);
|
|
8
|
+
parts.push(`SameSite=${options.sameSite}`);
|
|
9
|
+
if (options.maxAge !== undefined)
|
|
10
|
+
parts.push(`Max-Age=${options.maxAge}`);
|
|
11
|
+
if (options.httpOnly)
|
|
12
|
+
parts.push("HttpOnly");
|
|
13
|
+
if (options.secure)
|
|
14
|
+
parts.push("Secure");
|
|
15
|
+
return parts.join("; ");
|
|
16
|
+
};
|
|
17
|
+
export default class SessionModule extends Module {
|
|
18
|
+
name = "builtin/session";
|
|
19
|
+
#app;
|
|
20
|
+
#manager;
|
|
21
|
+
#secure;
|
|
22
|
+
constructor(app) {
|
|
23
|
+
super();
|
|
24
|
+
this.#app = app;
|
|
25
|
+
this.#secure = app.secure;
|
|
26
|
+
this.#manager = app.session.manager;
|
|
27
|
+
}
|
|
28
|
+
async serve(app, next) {
|
|
29
|
+
// initialize the session manager
|
|
30
|
+
await this.#manager.init?.();
|
|
31
|
+
return next(app);
|
|
32
|
+
}
|
|
33
|
+
async handle(request, next) {
|
|
34
|
+
const { name, ...config } = this.#app.session.cookie;
|
|
35
|
+
const sid = request.cookies.try(name);
|
|
36
|
+
const data = sid !== undefined ? await this.#manager.load(sid) : undefined;
|
|
37
|
+
const id = data !== undefined ? sid : undefined;
|
|
38
|
+
const session = new SessionHandle(id, data, this.#app.session.schema);
|
|
39
|
+
const response = await new Promise((resolve, reject) => {
|
|
40
|
+
storage().run(session, async () => {
|
|
41
|
+
try {
|
|
42
|
+
resolve(await next(request));
|
|
43
|
+
}
|
|
44
|
+
catch (e) {
|
|
45
|
+
reject(e);
|
|
46
|
+
}
|
|
47
|
+
});
|
|
48
|
+
});
|
|
49
|
+
const snap = session[kSerialize]();
|
|
50
|
+
// no cookie coming in, no session created
|
|
51
|
+
if (sid === undefined && !snap.exists)
|
|
52
|
+
return response;
|
|
53
|
+
const options = {
|
|
54
|
+
httpOnly: !!config.httpOnly,
|
|
55
|
+
path: config.path,
|
|
56
|
+
sameSite: config.sameSite,
|
|
57
|
+
secure: this.#secure,
|
|
58
|
+
};
|
|
59
|
+
// no session existed -> either create or noop (noop already returned)
|
|
60
|
+
if (id === undefined) {
|
|
61
|
+
if (!snap.exists) {
|
|
62
|
+
// stale cookie -> clear; no cookie, noop
|
|
63
|
+
if (sid !== undefined) {
|
|
64
|
+
response.headers.append("set-cookie", cookie(name, "", {
|
|
65
|
+
...options, maxAge: 0,
|
|
66
|
+
}));
|
|
67
|
+
}
|
|
68
|
+
return response;
|
|
69
|
+
}
|
|
70
|
+
// safe due to fast-path
|
|
71
|
+
await this.#manager.create(snap.id, snap.data);
|
|
72
|
+
response.headers.append("set-cookie", cookie(name, snap.id, options));
|
|
73
|
+
return response;
|
|
74
|
+
}
|
|
75
|
+
// from here: session existed (id is defined)
|
|
76
|
+
// fast-path: session exists, same id and not dirty -> noop
|
|
77
|
+
if (snap.exists && snap.id === id && !snap.dirty)
|
|
78
|
+
return response;
|
|
79
|
+
// current absent -> destroy + clear cookie
|
|
80
|
+
if (!snap.exists) {
|
|
81
|
+
await this.#manager.destroy(id);
|
|
82
|
+
response.headers.append("set-cookie", cookie(name, "", {
|
|
83
|
+
...options, maxAge: 0,
|
|
84
|
+
}));
|
|
85
|
+
return response;
|
|
86
|
+
}
|
|
87
|
+
// session recreated in route -> destroy old, create new, set cookie
|
|
88
|
+
if (snap.id !== id) {
|
|
89
|
+
await this.#manager.destroy(id);
|
|
90
|
+
await this.#manager.create(snap.id, snap.data);
|
|
91
|
+
response.headers.append("set-cookie", cookie(name, snap.id, options));
|
|
92
|
+
return response;
|
|
93
|
+
}
|
|
94
|
+
// dirty -> replace session contents
|
|
95
|
+
await this.#manager.save(id, snap.data);
|
|
96
|
+
return response;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=SessionModule.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import configSchema from "#session/schema";
|
|
2
|
+
import type SessionFacade from "#session/SessionFacade";
|
|
3
|
+
import type Schema from "@rcompat/type/Schema";
|
|
4
|
+
type ConfigInput = typeof configSchema.input;
|
|
5
|
+
type InferSchema<S> = S extends {
|
|
6
|
+
parse(input: unknown): infer T;
|
|
7
|
+
} ? T : unknown;
|
|
8
|
+
export default function session<S extends Schema<any>>(config: {
|
|
9
|
+
schema: S;
|
|
10
|
+
} & Partial<ConfigInput>): SessionFacade<InferSchema<S>>;
|
|
11
|
+
export default function session(config?: Omit<Partial<ConfigInput>, "schema">): SessionFacade<unknown>;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import configSchema from "#session/schema";
|
|
2
|
+
import local_storage from "#session/storage";
|
|
3
|
+
import s_config from "#symbol/config";
|
|
4
|
+
export default function session(config) {
|
|
5
|
+
const parsed = configSchema.parse(config ?? {});
|
|
6
|
+
const schema = config?.schema;
|
|
7
|
+
// bind the ALS store to this T (unknown at runtime; fine)
|
|
8
|
+
const storage = local_storage();
|
|
9
|
+
const current = () => {
|
|
10
|
+
const s = storage.getStore();
|
|
11
|
+
if (!s)
|
|
12
|
+
throw new Error("Session handle not available in this context");
|
|
13
|
+
return s;
|
|
14
|
+
};
|
|
15
|
+
const facade = {
|
|
16
|
+
get id() {
|
|
17
|
+
return current().id;
|
|
18
|
+
},
|
|
19
|
+
get exists() {
|
|
20
|
+
return current().exists;
|
|
21
|
+
},
|
|
22
|
+
create(initial) {
|
|
23
|
+
current().create(initial);
|
|
24
|
+
},
|
|
25
|
+
get() {
|
|
26
|
+
return current().get();
|
|
27
|
+
},
|
|
28
|
+
try() {
|
|
29
|
+
return current().try();
|
|
30
|
+
},
|
|
31
|
+
set(next) {
|
|
32
|
+
current().set(next);
|
|
33
|
+
},
|
|
34
|
+
destroy() {
|
|
35
|
+
current().destroy();
|
|
36
|
+
},
|
|
37
|
+
get [s_config]() { return { ...parsed, schema }; },
|
|
38
|
+
};
|
|
39
|
+
return facade;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import SessionManager from "#session/Manager";
|
|
2
|
+
import type Schema from "@rcompat/type/Schema";
|
|
3
|
+
declare const _default: import("pema").ObjectType<{
|
|
4
|
+
cookie: import("pema").ObjectType<{
|
|
5
|
+
httpOnly: import("pema").DefaultType<import("pema/boolean").BooleanType, true>;
|
|
6
|
+
name: import("pema").DefaultType<import("pema/string").StringType, "session_id">;
|
|
7
|
+
path: import("pema").DefaultType<import("pema/string").StringType, "/">;
|
|
8
|
+
sameSite: import("pema").DefaultType<import("pema/union").UnionType<[import("pema").LiteralType<"Strict">, import("pema").LiteralType<"Lax">, import("pema").LiteralType<"None">]>, "Lax" | "None" | "Strict">;
|
|
9
|
+
}>;
|
|
10
|
+
manager: import("pema").DefaultType<import("pema/constructor").ConstructorType<typeof SessionManager>, SessionManager<unknown>>;
|
|
11
|
+
schema: import("pema").OptionalType<import("pema").PureType<Schema<unknown>, "PureType">>;
|
|
12
|
+
}>;
|
|
13
|
+
export default _default;
|
|
14
|
+
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import InMemorySessionManager from "#session/InMemoryManager";
|
|
2
|
+
import SessionManager from "#session/Manager";
|
|
3
|
+
import pema from "pema";
|
|
4
|
+
import boolean from "pema/boolean";
|
|
5
|
+
import constructor from "pema/constructor";
|
|
6
|
+
import pure from "pema/pure";
|
|
7
|
+
import string from "pema/string";
|
|
8
|
+
import union from "pema/union";
|
|
9
|
+
export default pema({
|
|
10
|
+
cookie: {
|
|
11
|
+
httpOnly: boolean.default(true),
|
|
12
|
+
name: string.default("session_id"),
|
|
13
|
+
path: string.startsWith("/").default("/"),
|
|
14
|
+
sameSite: union("Strict", "Lax", "None").default("Lax"),
|
|
15
|
+
},
|
|
16
|
+
manager: constructor(SessionManager)
|
|
17
|
+
.default(() => new InMemorySessionManager()),
|
|
18
|
+
schema: pure().optional(),
|
|
19
|
+
});
|
|
20
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type Font from "#asset/Font";
|
|
2
|
+
import type Script from "#asset/Script";
|
|
3
|
+
import type Style from "#asset/Style";
|
|
4
|
+
declare const _default: {
|
|
5
|
+
font({ as, crossorigin, href, rel, type }: Font): string;
|
|
6
|
+
script({ code, id, inline, integrity, src, type }: Script): string;
|
|
7
|
+
style({ code, href, inline }: Style): string;
|
|
8
|
+
};
|
|
9
|
+
export default _default;
|
|
10
|
+
//# sourceMappingURL=tags.d.ts.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import empty from "@rcompat/record/empty";
|
|
2
|
+
const attribute = (attributes) => empty(attributes)
|
|
3
|
+
? ""
|
|
4
|
+
: " ".concat(Object.entries(attributes)
|
|
5
|
+
.map(([key, value]) => `${key}="${value}"`).join(" "));
|
|
6
|
+
const tag = (name, { attributes = {}, close = true, code = "" }) => `<${name}${attribute(attributes)}${close ? `>${code}</${name}>` : "/>"}`;
|
|
7
|
+
const nctag = (name, properties) => tag(name, { ...properties, close: false });
|
|
8
|
+
export default {
|
|
9
|
+
font({ as = "font", crossorigin = "true", href, rel = "preload", type }) {
|
|
10
|
+
return nctag("link", { attributes: { as, crossorigin, href, rel, type } });
|
|
11
|
+
},
|
|
12
|
+
// inline: <script type integrity>...</script>
|
|
13
|
+
// outline: <script type integrity src></script>
|
|
14
|
+
script({ code, id, inline, integrity, src, type }) {
|
|
15
|
+
return inline
|
|
16
|
+
? id === undefined
|
|
17
|
+
? tag("script", { attributes: { integrity, type }, code })
|
|
18
|
+
: tag("script", { attributes: { id, integrity, type }, code })
|
|
19
|
+
: tag("script", { attributes: { integrity, src, type } });
|
|
20
|
+
},
|
|
21
|
+
// inline: <style>...</style>
|
|
22
|
+
// outline: <link rel="stylesheet" href />
|
|
23
|
+
style({ code, href, inline }) {
|
|
24
|
+
return inline
|
|
25
|
+
? tag("style", { code })
|
|
26
|
+
: nctag("link", { attributes: { href, rel: "stylesheet" } });
|
|
27
|
+
},
|
|
28
|
+
};
|
|
29
|
+
//# sourceMappingURL=tags.js.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type App from "#App";
|
|
2
|
+
import type Target from "#target/Target";
|
|
3
|
+
export default class TargetManager {
|
|
4
|
+
#private;
|
|
5
|
+
constructor(app: App);
|
|
6
|
+
get name(): string;
|
|
7
|
+
get target(): string;
|
|
8
|
+
has(name: string): boolean;
|
|
9
|
+
get(): Target;
|
|
10
|
+
set(name: string): void;
|
|
11
|
+
add(target: Target): void;
|
|
12
|
+
run(): Promise<void>;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=Manager.d.ts.map
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import fail from "#fail";
|
|
2
|
+
import web from "#target/web";
|
|
3
|
+
export default class TargetManager {
|
|
4
|
+
#name = "web";
|
|
5
|
+
#targets = [web];
|
|
6
|
+
#app;
|
|
7
|
+
constructor(app) {
|
|
8
|
+
this.#app = app;
|
|
9
|
+
}
|
|
10
|
+
get name() {
|
|
11
|
+
return this.#name;
|
|
12
|
+
}
|
|
13
|
+
get target() {
|
|
14
|
+
return this.get().target;
|
|
15
|
+
}
|
|
16
|
+
has(name) {
|
|
17
|
+
return this.#targets
|
|
18
|
+
.find(target => target.name === name) !== undefined;
|
|
19
|
+
}
|
|
20
|
+
get() {
|
|
21
|
+
return this.#targets.find(target => target.name === this.#name);
|
|
22
|
+
}
|
|
23
|
+
set(name) {
|
|
24
|
+
if (!this.has(name)) {
|
|
25
|
+
let message = "no target {0}, available targets {1}";
|
|
26
|
+
if (this.#targets.length === 1) {
|
|
27
|
+
message += "\n - add {2} for more targets";
|
|
28
|
+
}
|
|
29
|
+
const targets = this.#targets.map(p => p.name).join(", ");
|
|
30
|
+
throw fail(message, name, targets, "@primate/native");
|
|
31
|
+
}
|
|
32
|
+
this.#name = name;
|
|
33
|
+
}
|
|
34
|
+
add(target) {
|
|
35
|
+
if (this.has(target.name)) {
|
|
36
|
+
throw fail("Cannot add target {0} twice", target.name);
|
|
37
|
+
}
|
|
38
|
+
this.#targets.push(target);
|
|
39
|
+
}
|
|
40
|
+
async run() {
|
|
41
|
+
await this.get().runner(this.#app);
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=Manager.js.map
|