@primate/core 0.1.9 → 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 -35
- 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,60 @@
|
|
|
1
|
+
import type App from "#App";
|
|
2
|
+
import type BuildApp from "#BuildApp";
|
|
3
|
+
import type Render from "#frontend/Render";
|
|
4
|
+
import type ServerComponent from "#frontend/ServerComponent";
|
|
5
|
+
import type ViewResponse from "#frontend/ViewResponse";
|
|
6
|
+
import Module from "#Module";
|
|
7
|
+
import type Next from "#module/Next";
|
|
8
|
+
import type NextBuild from "#module/NextBuild";
|
|
9
|
+
import type NextServe from "#module/NextServe";
|
|
10
|
+
import type ServeApp from "#ServeApp";
|
|
11
|
+
import FileRef from "@rcompat/fs/FileRef";
|
|
12
|
+
import type MaybePromise from "@rcompat/type/MaybePromise";
|
|
13
|
+
export default abstract class FrontendModule<S = ServerComponent> extends Module {
|
|
14
|
+
#private;
|
|
15
|
+
abstract client: boolean;
|
|
16
|
+
abstract layouts: boolean;
|
|
17
|
+
abstract defaultExtensions: string[];
|
|
18
|
+
render: Render<S>;
|
|
19
|
+
root?: {
|
|
20
|
+
create: (depth: number, i18n_active: boolean) => string;
|
|
21
|
+
};
|
|
22
|
+
compile: {
|
|
23
|
+
client?: (text: string, file: FileRef, root: boolean) => MaybePromise<{
|
|
24
|
+
css?: null | string;
|
|
25
|
+
js: string;
|
|
26
|
+
}>;
|
|
27
|
+
server?: (text: string) => MaybePromise<string>;
|
|
28
|
+
};
|
|
29
|
+
css?: {
|
|
30
|
+
filter: RegExp;
|
|
31
|
+
};
|
|
32
|
+
static schema: import("pema").ObjectType<{
|
|
33
|
+
fileExtensions: import("pema").OptionalType<import("pema/array").ArrayType<import("pema/string").StringType>>;
|
|
34
|
+
spa: import("pema").DefaultType<import("pema/boolean").BooleanType, true>;
|
|
35
|
+
ssr: import("pema").DefaultType<import("pema/boolean").BooleanType, true>;
|
|
36
|
+
}>;
|
|
37
|
+
static options: {
|
|
38
|
+
fileExtensions: string[] | undefined;
|
|
39
|
+
spa: boolean;
|
|
40
|
+
ssr: boolean;
|
|
41
|
+
};
|
|
42
|
+
static input: {
|
|
43
|
+
fileExtensions?: string[] | undefined;
|
|
44
|
+
spa?: boolean | undefined;
|
|
45
|
+
ssr?: boolean | undefined;
|
|
46
|
+
} | undefined;
|
|
47
|
+
constructor(options?: typeof FrontendModule.schema.input);
|
|
48
|
+
get fileExtensions(): string[];
|
|
49
|
+
get package(): string;
|
|
50
|
+
get rootname(): string;
|
|
51
|
+
get ssr(): boolean;
|
|
52
|
+
get spa(): boolean;
|
|
53
|
+
normalize(name: string): Promise<string>;
|
|
54
|
+
respond: ViewResponse;
|
|
55
|
+
serve(app: ServeApp, next: NextServe): MaybePromise<ServeApp>;
|
|
56
|
+
publish(app: BuildApp): void;
|
|
57
|
+
init<T extends App>(app: T, next: Next<T>): MaybePromise<T>;
|
|
58
|
+
build(app: BuildApp, next: NextBuild): Promise<BuildApp>;
|
|
59
|
+
}
|
|
60
|
+
//# sourceMappingURL=Module.d.ts.map
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import AppError from "#AppError";
|
|
2
|
+
import bundle from "#frontend/bundle-server";
|
|
3
|
+
import inline from "#inline";
|
|
4
|
+
import location from "#location";
|
|
5
|
+
import Module from "#Module";
|
|
6
|
+
import assert from "@rcompat/assert";
|
|
7
|
+
import map from "@rcompat/async/map";
|
|
8
|
+
import hash from "@rcompat/crypto/hash";
|
|
9
|
+
import FileRef from "@rcompat/fs/FileRef";
|
|
10
|
+
import APPLICATION_JSON from "@rcompat/http/mime/application/json";
|
|
11
|
+
import Status from "@rcompat/http/Status";
|
|
12
|
+
import pema from "pema";
|
|
13
|
+
import array from "pema/array";
|
|
14
|
+
import boolean from "pema/boolean";
|
|
15
|
+
import string from "pema/string";
|
|
16
|
+
async function normalize(path) {
|
|
17
|
+
return `p_${await hash(path)}`;
|
|
18
|
+
}
|
|
19
|
+
export default class FrontendModule extends Module {
|
|
20
|
+
#options;
|
|
21
|
+
render = async (component, props) => ({ body: await component(props) });
|
|
22
|
+
root;
|
|
23
|
+
compile = {};
|
|
24
|
+
css;
|
|
25
|
+
static schema = pema({
|
|
26
|
+
fileExtensions: array(string).optional(),
|
|
27
|
+
spa: boolean.default(true),
|
|
28
|
+
ssr: boolean.default(true),
|
|
29
|
+
});
|
|
30
|
+
static options = FrontendModule.schema.infer;
|
|
31
|
+
static input = FrontendModule.schema.input;
|
|
32
|
+
constructor(options) {
|
|
33
|
+
super();
|
|
34
|
+
this.#options = FrontendModule.schema.parse(options);
|
|
35
|
+
}
|
|
36
|
+
get fileExtensions() {
|
|
37
|
+
return this.#options.fileExtensions ?? this.defaultExtensions;
|
|
38
|
+
}
|
|
39
|
+
get package() {
|
|
40
|
+
return `@primate/${this.name}`;
|
|
41
|
+
}
|
|
42
|
+
get rootname() {
|
|
43
|
+
return `root_${this.name}`;
|
|
44
|
+
}
|
|
45
|
+
get ssr() {
|
|
46
|
+
return this.#options.ssr;
|
|
47
|
+
}
|
|
48
|
+
get spa() {
|
|
49
|
+
return this.#options.spa;
|
|
50
|
+
}
|
|
51
|
+
#load(name, props, app) {
|
|
52
|
+
const component = app.component(name);
|
|
53
|
+
return { component, name, props };
|
|
54
|
+
}
|
|
55
|
+
;
|
|
56
|
+
async #render(server, client, app) {
|
|
57
|
+
const { body, head = "", headers = {} } = this.ssr
|
|
58
|
+
? await this.render(server.component, server.props)
|
|
59
|
+
: { body: "", head: "" };
|
|
60
|
+
if (!this.client) {
|
|
61
|
+
return { body, head, headers };
|
|
62
|
+
}
|
|
63
|
+
const code = "import app from \"app\"; app.start();";
|
|
64
|
+
const inlined = await inline(code, "module");
|
|
65
|
+
const json_props = JSON.stringify({ frontend: this.name, ...client });
|
|
66
|
+
const hydrated = await inline(json_props, APPLICATION_JSON, "hydration");
|
|
67
|
+
const script_src = [inlined.integrity, hydrated.integrity];
|
|
68
|
+
return {
|
|
69
|
+
body,
|
|
70
|
+
head: head.concat(inlined.head, hydrated.head),
|
|
71
|
+
headers: app.headers({ "script-src": script_src }),
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
normalize(name) {
|
|
75
|
+
return normalize(name);
|
|
76
|
+
}
|
|
77
|
+
respond = (component, props = {}, options = {}) => async (app, { as_layout, layouts = [] } = {}, request) => {
|
|
78
|
+
if (as_layout) {
|
|
79
|
+
return this.#load(component, props, app);
|
|
80
|
+
}
|
|
81
|
+
const components = (await Promise.all(layouts
|
|
82
|
+
.map(layout => layout(app, { as_layout: true }, request))))
|
|
83
|
+
/* set the actual page as the last component */
|
|
84
|
+
.concat(this.#load(component, props, app));
|
|
85
|
+
const $request = {
|
|
86
|
+
context: request.context,
|
|
87
|
+
cookies: request.cookies.toJSON(),
|
|
88
|
+
headers: request.headers.toJSON(),
|
|
89
|
+
path: request.path.toJSON(),
|
|
90
|
+
query: request.query.toJSON(),
|
|
91
|
+
url: request.url,
|
|
92
|
+
};
|
|
93
|
+
const $props = this.layouts
|
|
94
|
+
? {
|
|
95
|
+
components: await map(components, ({ name }) => normalize(name)),
|
|
96
|
+
props: components.map(c => c.props),
|
|
97
|
+
request: $request,
|
|
98
|
+
}
|
|
99
|
+
: { props, request: $request };
|
|
100
|
+
const client = {
|
|
101
|
+
component: this.layouts ? "root" : await normalize(component),
|
|
102
|
+
spa: this.spa,
|
|
103
|
+
ssr: this.ssr,
|
|
104
|
+
...$props,
|
|
105
|
+
};
|
|
106
|
+
if (this.spa && request.headers.get("Accept") === APPLICATION_JSON) {
|
|
107
|
+
return new Response(JSON.stringify(client), {
|
|
108
|
+
headers: { ...app.headers(), "Content-Type": APPLICATION_JSON },
|
|
109
|
+
status: options.status ?? Status.OK,
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
const server = this.layouts
|
|
114
|
+
? {
|
|
115
|
+
component: app.component(`${this.rootname}.js`),
|
|
116
|
+
props: {
|
|
117
|
+
components: components.map(c => c.component),
|
|
118
|
+
props: components.map(c => c.props),
|
|
119
|
+
request: $request,
|
|
120
|
+
},
|
|
121
|
+
}
|
|
122
|
+
: {
|
|
123
|
+
component: app.component(component),
|
|
124
|
+
props,
|
|
125
|
+
request: $request,
|
|
126
|
+
};
|
|
127
|
+
const { body, head, headers } = await this.#render(server, client, app);
|
|
128
|
+
return app.view({ body, head, headers, ...options });
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
const path = `${location.components}/${component}`;
|
|
132
|
+
throw new AppError("error in component {0}\n{1}", path, error);
|
|
133
|
+
}
|
|
134
|
+
};
|
|
135
|
+
serve(app, next) {
|
|
136
|
+
this.fileExtensions.forEach(fe => app.register(fe, this.respond));
|
|
137
|
+
return next(app);
|
|
138
|
+
}
|
|
139
|
+
publish(app) {
|
|
140
|
+
if (this.compile.client) {
|
|
141
|
+
const { compile, css, fileExtensions, name, root } = this;
|
|
142
|
+
if (this.client) {
|
|
143
|
+
fileExtensions.forEach(fe => app.frontends.set(name, fe));
|
|
144
|
+
}
|
|
145
|
+
app.build.plugin({
|
|
146
|
+
name,
|
|
147
|
+
setup(build) {
|
|
148
|
+
const resolveDir = app.root.path;
|
|
149
|
+
if (root !== undefined) {
|
|
150
|
+
const filter = new RegExp(`^${name}:root`);
|
|
151
|
+
build.onResolve({ filter }, ({ path }) => {
|
|
152
|
+
return { namespace: `${name}`, path };
|
|
153
|
+
});
|
|
154
|
+
build.onLoad({ filter }, async () => {
|
|
155
|
+
const contents = (await compile.client(root.create(app.depth(), app.i18n_active), new FileRef("/tmp"), true)).js;
|
|
156
|
+
return contents ? { contents, loader: "js", resolveDir } : null;
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
if (css !== undefined) {
|
|
160
|
+
build.onResolve({ filter: css.filter }, ({ path }) => {
|
|
161
|
+
return { namespace: `${name}css`, path };
|
|
162
|
+
});
|
|
163
|
+
build.onLoad({ filter: css.filter }, ({ path }) => {
|
|
164
|
+
const contents = app.build.load(FileRef.webpath(path));
|
|
165
|
+
return contents
|
|
166
|
+
? { contents, loader: "css", resolveDir: resolveDir }
|
|
167
|
+
: null;
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
const components_filter = new RegExp(`^${name}:components`);
|
|
171
|
+
build.onResolve({ filter: components_filter }, ({ path }) => {
|
|
172
|
+
return { namespace: `${name}`, path };
|
|
173
|
+
});
|
|
174
|
+
build.onLoad({ filter: components_filter }, async () => {
|
|
175
|
+
const components = await app.root
|
|
176
|
+
.join(location.components)
|
|
177
|
+
.collect(c => fileExtensions.includes(c.fullExtension));
|
|
178
|
+
let contents = "";
|
|
179
|
+
for (const component of components) {
|
|
180
|
+
const { path } = component.debase(component.directory, "/");
|
|
181
|
+
contents += `export { default as ${await normalize(path)} }
|
|
182
|
+
from "#component/${path}";\n`;
|
|
183
|
+
}
|
|
184
|
+
return { contents, resolveDir: app.root.path };
|
|
185
|
+
});
|
|
186
|
+
const filter = new RegExp(`(${fileExtensions.map(e => e.replace(".", "\\.")).join("|")})$`);
|
|
187
|
+
build.onLoad({ filter }, async (args) => {
|
|
188
|
+
const file = new FileRef(args.path);
|
|
189
|
+
// Compile file to JavaScript and potentially CSS
|
|
190
|
+
const compiled = await compile.client(await file.text(), file, false);
|
|
191
|
+
let contents = compiled.js;
|
|
192
|
+
if (css
|
|
193
|
+
&& compiled.css !== null
|
|
194
|
+
&& compiled.css !== undefined
|
|
195
|
+
&& compiled.css !== "") {
|
|
196
|
+
const path = FileRef.webpath(`${args.path}css`);
|
|
197
|
+
app.build.save(path, compiled.css);
|
|
198
|
+
contents += `\nimport "${path}";`;
|
|
199
|
+
}
|
|
200
|
+
return { contents };
|
|
201
|
+
});
|
|
202
|
+
},
|
|
203
|
+
});
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
init(app, next) {
|
|
207
|
+
this.fileExtensions.forEach(e => {
|
|
208
|
+
app.bind(e, async (file, { context }) => {
|
|
209
|
+
assert(context === "components", `${this.name}: only components supported`);
|
|
210
|
+
if (this.compile.server) {
|
|
211
|
+
const original = file.debase(app.runpath("stage", "components"));
|
|
212
|
+
const source = app.path.components.join(original);
|
|
213
|
+
const code = await this.compile.server(await source.text());
|
|
214
|
+
const bundled = await bundle({
|
|
215
|
+
code,
|
|
216
|
+
source,
|
|
217
|
+
root: app.root,
|
|
218
|
+
extensions: this.fileExtensions,
|
|
219
|
+
compile: async (s) => this.compile.server(s),
|
|
220
|
+
});
|
|
221
|
+
await file.append(".js").write(bundled);
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
});
|
|
225
|
+
return next(app);
|
|
226
|
+
}
|
|
227
|
+
async build(app, next) {
|
|
228
|
+
// compile root server
|
|
229
|
+
if (this.root !== undefined && this.compile.server !== undefined) {
|
|
230
|
+
const filename = `${this.rootname}.js`;
|
|
231
|
+
const root = await this.compile.server(this.root.create(app.depth(), app.i18n_active));
|
|
232
|
+
const path = app.runpath(location.server, filename);
|
|
233
|
+
await path.write(root);
|
|
234
|
+
app.addRoot(path);
|
|
235
|
+
}
|
|
236
|
+
this.publish(app);
|
|
237
|
+
return next(app);
|
|
238
|
+
}
|
|
239
|
+
;
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=Module.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type Dict from "@rcompat/type/Dict";
|
|
2
|
+
import type MaybePromise from "@rcompat/type/MaybePromise";
|
|
3
|
+
type Render<S = unknown> = (component: S, props: Dict) => MaybePromise<{
|
|
4
|
+
body: string;
|
|
5
|
+
head?: string;
|
|
6
|
+
headers?: Record<string, string>;
|
|
7
|
+
}>;
|
|
8
|
+
export type { Render as default };
|
|
9
|
+
//# sourceMappingURL=Render.d.ts.map
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type Dict from "@rcompat/type/Dict";
|
|
2
|
+
export default interface ViewOptions extends ResponseInit {
|
|
3
|
+
csp?: {
|
|
4
|
+
script_src?: string[];
|
|
5
|
+
style_src?: string[];
|
|
6
|
+
};
|
|
7
|
+
head?: string;
|
|
8
|
+
page?: string;
|
|
9
|
+
partial?: boolean;
|
|
10
|
+
placeholders?: Omit<Dict, "body" | "head">;
|
|
11
|
+
}
|
|
12
|
+
//# sourceMappingURL=ViewOptions.d.ts.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type ViewOptions from "#frontend/ViewOptions";
|
|
2
|
+
import type ResponseFunction from "#response/ResponseFunction";
|
|
3
|
+
import type Dict from "@rcompat/type/Dict";
|
|
4
|
+
type View = (name: string, props?: Dict, options?: ViewOptions) => ResponseFunction;
|
|
5
|
+
export { View as default };
|
|
6
|
+
//# sourceMappingURL=ViewResponse.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import FileRef from "@rcompat/fs/FileRef";
|
|
2
|
+
type Init = {
|
|
3
|
+
code: string;
|
|
4
|
+
source: FileRef;
|
|
5
|
+
root: FileRef;
|
|
6
|
+
extensions: string[];
|
|
7
|
+
compile: (src: string, file?: FileRef) => Promise<string>;
|
|
8
|
+
};
|
|
9
|
+
export default function bundleServer(init: Init): Promise<string>;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=bundle-server.d.ts.map
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import FileRef from "@rcompat/fs/FileRef";
|
|
2
|
+
import * as esbuild from "esbuild";
|
|
3
|
+
export default async function bundleServer(init) {
|
|
4
|
+
const { code, source, root, extensions, compile } = init;
|
|
5
|
+
const filter = new RegExp(`(${extensions.map(e => e.replace(".", "\\.")).join("|")})$`);
|
|
6
|
+
const plugin = {
|
|
7
|
+
name: "primate/bundle/server",
|
|
8
|
+
setup(build) {
|
|
9
|
+
// compile non-JS sources to JS
|
|
10
|
+
build.onLoad({ filter }, async (args) => {
|
|
11
|
+
const file = new FileRef(args.path);
|
|
12
|
+
const src = await file.text();
|
|
13
|
+
const contents = await compile(src, file);
|
|
14
|
+
return { contents, loader: "js", resolveDir: file.directory.path };
|
|
15
|
+
});
|
|
16
|
+
// externalise anything not relative nor "#component/"
|
|
17
|
+
build.onResolve({ filter: /.*/ }, args => {
|
|
18
|
+
const p = args.path;
|
|
19
|
+
const relative = p.startsWith("./") || p.startsWith("../");
|
|
20
|
+
const components = p.startsWith("#component/");
|
|
21
|
+
if (!relative && !components)
|
|
22
|
+
return { path: p, external: true };
|
|
23
|
+
return null;
|
|
24
|
+
});
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
const result = await esbuild.build({
|
|
28
|
+
absWorkingDir: root.path,
|
|
29
|
+
tsconfig: root.join("tsconfig.json").path,
|
|
30
|
+
bundle: true,
|
|
31
|
+
write: false,
|
|
32
|
+
platform: "node",
|
|
33
|
+
format: "esm",
|
|
34
|
+
target: "esnext",
|
|
35
|
+
conditions: ["node", "default", "apekit"],
|
|
36
|
+
resolveExtensions: [".ts", ".js", ...extensions],
|
|
37
|
+
plugins: [plugin],
|
|
38
|
+
stdin: {
|
|
39
|
+
contents: code,
|
|
40
|
+
sourcefile: source.path,
|
|
41
|
+
resolveDir: source.directory.path,
|
|
42
|
+
loader: "js",
|
|
43
|
+
},
|
|
44
|
+
logLevel: "silent",
|
|
45
|
+
});
|
|
46
|
+
return result.outputFiles[0].text;
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=bundle-server.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import crypto from "@rcompat/crypto";
|
|
2
|
+
const encoder = new TextEncoder();
|
|
3
|
+
async function hash(data, algorithm = "sha-384") {
|
|
4
|
+
const bytes = await crypto.subtle.digest(algorithm, encoder.encode(data));
|
|
5
|
+
const prefix = algorithm.replace("-", _ => "");
|
|
6
|
+
return `${prefix}-${btoa(String.fromCharCode(...new Uint8Array(bytes)))}`;
|
|
7
|
+
}
|
|
8
|
+
;
|
|
9
|
+
export default hash;
|
|
10
|
+
//# sourceMappingURL=hash.js.map
|