@primate/core 0.4.6 → 0.6.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 +771 -6
- package/lib/private/App.js +49 -16
- package/lib/private/Binder.d.ts +2 -2
- package/lib/private/Flags.d.ts +8 -4
- package/lib/private/Module.d.ts +4 -16
- package/lib/private/Module.js +1 -17
- package/lib/private/app/EnvSchema.d.ts +5 -0
- package/lib/private/app/EnvSchema.js +2 -0
- package/lib/private/app/Facade.browser.d.ts +11 -0
- package/lib/private/app/Facade.browser.js +19 -0
- package/lib/private/app/Facade.d.ts +811 -0
- package/lib/private/app/Facade.js +56 -0
- package/lib/private/asset/Asset.d.ts +1 -1
- package/lib/private/build/App.d.ts +2 -2
- package/lib/private/build/App.js +0 -2
- package/lib/private/build/client/index.js +19 -10
- package/lib/private/build/client/plugin/app-request.d.ts +4 -0
- package/lib/private/build/client/plugin/app-request.js +19 -0
- package/lib/private/build/client/plugin/view.d.ts +4 -0
- package/lib/private/build/client/plugin/view.js +13 -0
- package/lib/private/build/hook.d.ts +1 -2
- package/lib/private/build/hook.js +25 -19
- package/lib/private/build/index.d.ts +2 -1
- package/lib/private/build/index.js +27 -27
- package/lib/private/build/presets.d.ts +10 -0
- package/lib/private/build/presets.js +39 -0
- package/lib/private/build/server/index.js +10 -14
- package/lib/private/build/server/plugin/app-request.d.ts +4 -0
- package/lib/private/build/server/plugin/app-request.js +19 -0
- package/lib/private/build/server/plugin/assets.js +9 -7
- package/lib/private/build/server/plugin/config.js +11 -4
- package/lib/private/build/server/plugin/frontend.js +4 -2
- package/lib/private/build/server/plugin/live-reload.d.ts +4 -0
- package/lib/private/build/server/plugin/{hot-reload.js → live-reload.js} +12 -12
- package/lib/private/build/server/plugin/native-addons.js +10 -11
- package/lib/private/build/server/plugin/node-imports.js +2 -2
- package/lib/private/build/server/plugin/route.js +4 -4
- package/lib/private/build/server/plugin/store.js +11 -33
- package/lib/private/build/server/plugin/stores.js +12 -9
- package/lib/private/build/server/plugin/view.js +5 -5
- package/lib/private/build/server/plugin/views.js +4 -4
- package/lib/private/build/server/plugin/virtual-pages.js +8 -8
- package/lib/private/build/server/plugin/virtual-routes.js +8 -13
- package/lib/private/build/server/plugin/wasm.js +2 -3
- package/lib/private/build/shared/plugin/app-request.d.ts +4 -0
- package/lib/private/build/shared/plugin/app-request.js +19 -0
- package/lib/private/bye.js +2 -3
- package/lib/private/client/Data.d.ts +3 -2
- package/lib/private/client/Render.d.ts +8 -0
- package/lib/private/{frontend → client}/ServerData.d.ts +1 -1
- package/lib/private/client/ServerView.d.ts +4 -0
- package/lib/private/client/ValidateInit.d.ts +1 -3
- package/lib/private/client/ValidationError.d.ts +1 -1
- package/lib/private/{frontend → client}/View.d.ts +1 -1
- package/lib/private/{frontend → client}/ViewOptions.d.ts +1 -1
- package/lib/private/{frontend → client}/ViewResponse.d.ts +2 -2
- package/lib/private/client/app.js +3 -3
- package/lib/private/client/boot.d.ts +5 -0
- package/lib/private/client/boot.js +64 -0
- package/lib/private/client/create-form.d.ts +32 -0
- package/lib/private/client/create-form.js +123 -0
- package/lib/private/client/extract-issues.d.ts +4 -0
- package/lib/private/client/extract-issues.js +21 -0
- package/lib/private/client/http.d.ts +13 -0
- package/lib/private/client/http.js +57 -0
- package/lib/private/client/index.d.ts +23 -0
- package/lib/private/client/index.js +16 -0
- package/lib/private/client/navigate.d.ts +13 -0
- package/lib/private/client/navigate.js +67 -0
- package/lib/private/client/root.d.ts +9 -0
- package/lib/private/client/root.js +11 -0
- package/lib/private/client/submit.d.ts +2 -0
- package/lib/private/client/submit.js +41 -0
- package/lib/private/client/{toValidated.d.ts → to-validated.d.ts} +2 -4
- package/lib/private/client/{toValidated.js → to-validated.js} +1 -1
- package/lib/private/client/validate-field.d.ts +3 -0
- package/lib/private/client/validate-field.js +41 -0
- package/lib/private/config/index.d.ts +7 -21
- package/lib/private/config/index.js +4 -1
- package/lib/private/config/schema.d.ts +82 -22
- package/lib/private/config/schema.js +25 -7
- package/lib/private/cookie.d.ts +12 -6
- package/lib/private/cookie.js +10 -14
- package/lib/private/db/As.d.ts +10 -0
- package/lib/private/db/DB.d.ts +49 -0
- package/lib/private/db/DB.js +3 -0
- package/lib/private/db/DataDict.d.ts +5 -0
- package/lib/private/db/DataKey.d.ts +4 -0
- package/lib/private/db/DataValue.d.ts +17 -0
- package/lib/private/db/MemoryDB.d.ts +33 -0
- package/lib/private/db/MemoryDB.js +335 -0
- package/lib/private/db/PK.d.ts +3 -0
- package/lib/private/db/PK.js +2 -0
- package/lib/private/{database → db}/Query.d.ts +2 -2
- package/lib/private/{database → db}/QueryBuilder.d.ts +2 -3
- package/lib/private/db/ReadArgs.d.ts +9 -0
- package/lib/private/db/ReadArgs.js +2 -0
- package/lib/private/db/ReadRelationsArgs.d.ts +6 -0
- package/lib/private/db/ReadRelationsArgs.js +2 -0
- package/lib/private/{database → db}/Schema.d.ts +1 -2
- package/lib/private/db/Sort.d.ts +4 -0
- package/lib/private/{database → db}/TypeMap.d.ts +2 -3
- package/lib/private/{database → db}/Types.d.ts +1 -1
- package/lib/private/db/With.d.ts +16 -0
- package/lib/private/db/With.js +2 -0
- package/lib/private/db/common.d.ts +25 -0
- package/lib/private/db/common.js +67 -0
- package/lib/private/db/errors.d.ts +104 -0
- package/lib/private/db/errors.js +237 -0
- package/lib/private/db/migrate/apply.d.ts +2 -0
- package/lib/private/db/migrate/apply.js +32 -0
- package/lib/private/db/migrate/bundle.d.ts +3 -0
- package/lib/private/db/migrate/bundle.js +22 -0
- package/lib/private/db/migrate/create.d.ts +2 -0
- package/lib/private/db/migrate/create.js +154 -0
- package/lib/private/db/migrate/index.d.ts +10 -0
- package/lib/private/db/migrate/index.js +6 -0
- package/lib/private/db/migrate/status.d.ts +2 -0
- package/lib/private/db/migrate/status.js +38 -0
- package/lib/private/db/migrate/store.d.ts +5 -0
- package/lib/private/db/migrate/store.js +33 -0
- package/lib/private/db/sql.d.ts +28 -0
- package/lib/private/db/sql.js +177 -0
- package/lib/private/db/storage.d.ts +3 -0
- package/lib/private/db/storage.js +3 -0
- package/lib/private/db/symbol.js +2 -0
- package/lib/private/db/test.d.ts +4 -0
- package/lib/private/db/test.js +1750 -0
- package/lib/private/errors.d.ts +88 -0
- package/lib/private/errors.js +211 -0
- package/lib/private/frontend.d.ts +72 -0
- package/lib/private/frontend.js +245 -0
- package/lib/private/hash.js +0 -1
- package/lib/private/i18n/Catalog.d.ts +5 -2
- package/lib/private/i18n/Formatter.js +21 -9
- package/lib/private/i18n/errors.d.ts +16 -0
- package/lib/private/i18n/errors.js +27 -0
- package/lib/private/i18n/format.d.ts +4 -0
- package/lib/private/i18n/format.js +95 -0
- package/lib/private/i18n/index/client.d.ts +9 -0
- package/lib/private/i18n/index/client.js +152 -0
- package/lib/private/i18n/index/server.d.ts +9 -0
- package/lib/private/i18n/index/server.js +57 -0
- package/lib/private/i18n/index/types.d.ts +33 -0
- package/lib/private/i18n/index/types.js +2 -0
- package/lib/private/i18n/locale.d.ts +9 -3
- package/lib/private/i18n/module.d.ts +3 -0
- package/lib/private/i18n/module.js +115 -0
- package/lib/private/i18n/ordinals.d.ts +1 -1
- package/lib/private/i18n/resolve.d.ts +7 -0
- package/lib/private/i18n/resolve.js +30 -0
- package/lib/private/i18n/schema.d.ts +10 -5
- package/lib/private/i18n/schema.js +6 -10
- package/lib/private/i18n/storage.d.ts +3 -0
- package/lib/private/i18n/storage.js +5 -0
- package/lib/private/i18n/validate.d.ts +2 -0
- package/lib/private/i18n/validate.js +19 -0
- package/lib/private/index.d.ts +14 -0
- package/lib/private/index.js +2 -0
- package/lib/private/log.d.ts +1 -0
- package/lib/private/log.js +15 -14
- package/lib/private/module/Hook.d.ts +1 -1
- package/lib/private/module/Next.d.ts +1 -1
- package/lib/private/module/Setup.d.ts +21 -0
- package/lib/private/module/Setup.js +2 -0
- package/lib/private/module/create.d.ts +16 -0
- package/lib/private/module/create.js +28 -0
- package/lib/private/orm/ExtractSchema.d.ts +9 -0
- package/lib/private/orm/ExtractSchema.js +2 -0
- package/lib/private/orm/ForeignKey.d.ts +14 -0
- package/lib/private/orm/ForeignKey.js +25 -0
- package/lib/private/orm/PrimaryKey.d.ts +17 -0
- package/lib/private/orm/PrimaryKey.js +38 -0
- package/lib/private/orm/StoreInput.d.ts +10 -0
- package/lib/private/orm/StoreInput.js +2 -0
- package/lib/private/orm/key.d.ts +8 -0
- package/lib/private/orm/key.js +8 -0
- package/lib/private/orm/parse.d.ts +13 -0
- package/lib/private/orm/parse.js +29 -0
- package/lib/private/orm/relation.d.ts +43 -0
- package/lib/private/orm/relation.js +26 -0
- package/lib/private/orm/store.d.ts +187 -0
- package/lib/private/orm/store.js +542 -0
- package/lib/private/paths.d.ts +2 -2
- package/lib/private/paths.js +3 -3
- package/lib/private/request/RequestBag.d.ts +5 -1
- package/lib/private/request/RequestBag.js +16 -9
- package/lib/private/request/RequestBody.d.ts +6 -11
- package/lib/private/request/RequestBody.js +51 -59
- package/lib/private/request/RequestContext.d.ts +12 -0
- package/lib/private/request/RequestContext.js +31 -0
- package/lib/private/request/RequestFacade.d.ts +11 -6
- package/lib/private/request/RequestPublic.d.ts +9 -0
- package/lib/private/request/RequestPublic.js +2 -0
- package/lib/private/request/RequestView.d.ts +11 -0
- package/lib/private/request/RequestView.js +3 -0
- package/lib/private/request/handle.d.ts +4 -0
- package/lib/private/request/handle.js +18 -0
- package/lib/private/request/parse.d.ts +2 -2
- package/lib/private/request/parse.js +55 -16
- package/lib/private/request/route.js +37 -22
- package/lib/private/request/router.d.ts +1 -1
- package/lib/private/request/router.js +22 -50
- package/lib/private/{database/symbol/wrap.d.ts → request/sContext.d.ts} +1 -1
- package/lib/private/request/sContext.js +2 -0
- package/lib/private/request/storage.d.ts +4 -0
- package/lib/private/request/storage.js +5 -0
- package/lib/private/response/ResponseFunction.d.ts +2 -3
- package/lib/private/response/ResponseLike.d.ts +1 -1
- package/lib/private/response/binary.d.ts +1 -1
- package/lib/private/response/binary.js +4 -3
- package/lib/private/response/error.d.ts +1 -1
- package/lib/private/response/error.js +1 -1
- package/lib/private/response/json.d.ts +1 -1
- package/lib/private/response/json.js +2 -2
- package/lib/private/response/redirect.d.ts +5 -5
- package/lib/private/response/redirect.js +9 -10
- package/lib/private/response/respond.js +16 -17
- package/lib/private/response/sse.d.ts +1 -1
- package/lib/private/response/sse.js +2 -2
- package/lib/private/response/text.d.ts +1 -1
- package/lib/private/response/text.js +3 -3
- package/lib/private/response/view.d.ts +3 -3
- package/lib/private/response/view.js +7 -14
- package/lib/private/response/ws.d.ts +1 -1
- package/lib/private/response.d.ts +1 -1
- package/lib/private/route/Handler.d.ts +1 -1
- package/lib/private/route/hook.d.ts +6 -0
- package/lib/private/route/hook.js +5 -0
- package/lib/private/route/router.d.ts +6 -2
- package/lib/private/route/router.js +32 -18
- package/lib/private/route/wrap.js +2 -2
- package/lib/private/serve/App.d.ts +11 -25
- package/lib/private/serve/App.js +138 -120
- package/lib/private/serve/Init.d.ts +5 -5
- package/lib/private/serve/dev-module.d.ts +2 -0
- package/lib/private/serve/dev-module.js +34 -0
- package/lib/private/serve/hook.d.ts +1 -2
- package/lib/private/serve/hook.js +2 -9
- package/lib/private/serve/index.d.ts +1 -1
- package/lib/private/serve/index.js +36 -2
- package/lib/private/server/TAG.d.ts +3 -0
- package/lib/private/server/TAG.js +2 -0
- package/lib/private/server/index.d.ts +5 -0
- package/lib/private/server/index.js +6 -0
- package/lib/private/session/Data.d.ts +1 -2
- package/lib/private/session/SessionHandle.d.ts +1 -1
- package/lib/private/session/SessionHandle.js +11 -9
- package/lib/private/session/index.d.ts +3 -4
- package/lib/private/session/module.d.ts +3 -0
- package/lib/private/session/module.js +114 -0
- package/lib/private/session/schema.d.ts +17 -9
- package/lib/private/session/schema.js +11 -6
- package/lib/private/session/storage.d.ts +1 -2
- package/lib/private/session/storage.js +2 -2
- package/lib/private/tags.js +2 -2
- package/lib/private/target/Manager.js +6 -12
- package/lib/private/target/Target.d.ts +1 -1
- package/lib/public/AppFacade.d.ts +2 -0
- package/lib/public/AppFacade.js +2 -0
- package/lib/public/build/presets.d.ts +2 -0
- package/lib/public/build/presets.js +2 -0
- package/lib/public/build/transform.d.ts +2 -0
- package/lib/public/build/transform.js +2 -0
- package/lib/public/client.d.ts +3 -0
- package/lib/public/client.js +2 -0
- package/lib/public/db/MemoryDB.d.ts +2 -0
- package/lib/public/db/MemoryDB.js +2 -0
- package/lib/public/db/errors.d.ts +2 -0
- package/lib/public/db/errors.js +2 -0
- package/lib/public/db/migrate.d.ts +2 -0
- package/lib/public/db/migrate.js +2 -0
- package/lib/public/db/sql.d.ts +2 -0
- package/lib/public/db/sql.js +2 -0
- package/lib/public/db/test.d.ts +2 -0
- package/lib/public/db/test.js +2 -0
- package/lib/public/db.d.ts +12 -0
- package/lib/public/db.js +2 -0
- package/lib/public/frontend.d.ts +3 -0
- package/lib/public/frontend.js +2 -0
- package/lib/public/index.d.ts +2 -0
- package/lib/public/index.js +2 -0
- package/lib/public/orm/key.d.ts +2 -0
- package/lib/public/orm/key.js +2 -0
- package/lib/public/orm/relation.d.ts +2 -0
- package/lib/public/orm/relation.js +2 -0
- package/lib/public/orm/store.d.ts +2 -0
- package/lib/public/orm/store.js +2 -0
- package/lib/public/request/server.d.ts +5 -0
- package/lib/public/request/server.js +7 -0
- package/lib/public/response.d.ts +22 -0
- package/lib/public/response.js +19 -0
- package/lib/public/route/hook.d.ts +2 -0
- package/lib/public/route/hook.js +2 -0
- package/lib/public/server.d.ts +3 -0
- package/lib/public/server.js +2 -0
- package/package.json +40 -30
- package/lib/private/AppError.d.ts +0 -4
- package/lib/private/AppError.js +0 -8
- package/lib/private/backend/Module.d.ts +0 -18
- package/lib/private/backend/Module.js +0 -22
- package/lib/private/backend/TAG.d.ts +0 -3
- package/lib/private/backend/TAG.js +0 -2
- package/lib/private/build/client/reload.d.ts +0 -7
- package/lib/private/build/client/reload.js +0 -6
- package/lib/private/build/server/plugin/database-default.d.ts +0 -4
- package/lib/private/build/server/plugin/database-default.js +0 -48
- package/lib/private/build/server/plugin/hot-reload.d.ts +0 -4
- package/lib/private/build/server/plugin/store-wrap.d.ts +0 -4
- package/lib/private/build/server/plugin/store-wrap.js +0 -33
- package/lib/private/client/spa/index.d.ts +0 -6
- package/lib/private/client/spa/index.js +0 -201
- package/lib/private/client/validate.d.ts +0 -3
- package/lib/private/client/validate.js +0 -54
- package/lib/private/database/As.d.ts +0 -7
- package/lib/private/database/Binds.d.ts +0 -4
- package/lib/private/database/Binds.js +0 -2
- package/lib/private/database/Changes.d.ts +0 -11
- package/lib/private/database/Changes.js +0 -2
- package/lib/private/database/ColumnTypes.d.ts +0 -11
- package/lib/private/database/ColumnTypes.js +0 -2
- package/lib/private/database/DataDict.d.ts +0 -5
- package/lib/private/database/DataKey.d.ts +0 -4
- package/lib/private/database/DataValue.d.ts +0 -5
- package/lib/private/database/Database.d.ts +0 -56
- package/lib/private/database/Database.js +0 -153
- package/lib/private/database/InMemoryDatabase.d.ts +0 -37
- package/lib/private/database/InMemoryDatabase.js +0 -181
- package/lib/private/database/Sort.d.ts +0 -4
- package/lib/private/database/Store.d.ts +0 -172
- package/lib/private/database/Store.js +0 -261
- package/lib/private/database/storage.d.ts +0 -4
- package/lib/private/database/storage.js +0 -3
- package/lib/private/database/symbol/wrap.js +0 -2
- package/lib/private/database/symbol.js +0 -2
- package/lib/private/database/test.d.ts +0 -4
- package/lib/private/database/test.js +0 -678
- package/lib/private/database/wrap.d.ts +0 -5
- package/lib/private/database/wrap.js +0 -5
- package/lib/private/fail.d.ts +0 -3
- package/lib/private/fail.js +0 -5
- package/lib/private/frontend/Module.d.ts +0 -62
- package/lib/private/frontend/Module.js +0 -250
- package/lib/private/frontend/Render.d.ts +0 -9
- package/lib/private/frontend/ServerView.d.ts +0 -5
- package/lib/private/i18n/Module.d.ts +0 -16
- package/lib/private/i18n/Module.js +0 -122
- package/lib/private/i18n/index.d.ts +0 -28
- package/lib/private/i18n/index.js +0 -236
- package/lib/private/module/BuildHook.d.ts +0 -5
- package/lib/private/module/BuildHook.js +0 -2
- package/lib/private/module/NextBuild.d.ts +0 -5
- package/lib/private/module/NextBuild.js +0 -2
- package/lib/private/module/NextServe.d.ts +0 -5
- package/lib/private/module/NextServe.js +0 -2
- package/lib/private/reducer.d.ts +0 -24
- package/lib/private/reducer.js +0 -10
- package/lib/private/route/guard.d.ts +0 -4
- package/lib/private/route/guard.js +0 -22
- package/lib/private/serve/module/Dev.d.ts +0 -11
- package/lib/private/serve/module/Dev.js +0 -28
- package/lib/private/serve/module/Handle.d.ts +0 -10
- package/lib/private/serve/module/Handle.js +0 -15
- package/lib/private/session/SessionModule.d.ts +0 -14
- package/lib/private/session/SessionModule.js +0 -122
- package/lib/private/wasm/API.d.ts +0 -7
- package/lib/private/wasm/API.js +0 -2
- package/lib/private/wasm/BufferViewSource.d.ts +0 -4
- package/lib/private/wasm/BufferViewSource.js +0 -2
- package/lib/private/wasm/Exports.d.ts +0 -23
- package/lib/private/wasm/Exports.js +0 -2
- package/lib/private/wasm/I32.d.ts +0 -5
- package/lib/private/wasm/I32.js +0 -2
- package/lib/private/wasm/I32_SIZE.d.ts +0 -3
- package/lib/private/wasm/I32_SIZE.js +0 -2
- package/lib/private/wasm/Instantiation.d.ts +0 -12
- package/lib/private/wasm/Instantiation.js +0 -2
- package/lib/private/wasm/Tagged.d.ts +0 -7
- package/lib/private/wasm/Tagged.js +0 -2
- package/lib/private/wasm/buffersize.d.ts +0 -2
- package/lib/private/wasm/buffersize.js +0 -5
- package/lib/private/wasm/decode-bytes.d.ts +0 -3
- package/lib/private/wasm/decode-bytes.js +0 -5
- package/lib/private/wasm/decode-json.d.ts +0 -7
- package/lib/private/wasm/decode-json.js +0 -11
- package/lib/private/wasm/decode-option.d.ts +0 -5
- package/lib/private/wasm/decode-option.js +0 -10
- package/lib/private/wasm/decode-response.d.ts +0 -19
- package/lib/private/wasm/decode-response.js +0 -90
- package/lib/private/wasm/decode-string.d.ts +0 -3
- package/lib/private/wasm/decode-string.js +0 -5
- package/lib/private/wasm/decode-websocket-close.d.ts +0 -5
- package/lib/private/wasm/decode-websocket-close.js +0 -6
- package/lib/private/wasm/decode-websocket-send.d.ts +0 -6
- package/lib/private/wasm/decode-websocket-send.js +0 -19
- package/lib/private/wasm/encode-buffer.d.ts +0 -3
- package/lib/private/wasm/encode-buffer.js +0 -6
- package/lib/private/wasm/encode-request.d.ts +0 -9
- package/lib/private/wasm/encode-request.js +0 -195
- package/lib/private/wasm/encode-session.d.ts +0 -3
- package/lib/private/wasm/encode-session.js +0 -25
- package/lib/private/wasm/encode-string-map.d.ts +0 -5
- package/lib/private/wasm/encode-string-map.js +0 -14
- package/lib/private/wasm/encode-string.d.ts +0 -13
- package/lib/private/wasm/encode-string.js +0 -17
- package/lib/private/wasm/encode-url.d.ts +0 -11
- package/lib/private/wasm/encode-url.js +0 -14
- package/lib/private/wasm/encode-websocket-close.d.ts +0 -2
- package/lib/private/wasm/encode-websocket-close.js +0 -7
- package/lib/private/wasm/encode-websocket-message.d.ts +0 -4
- package/lib/private/wasm/encode-websocket-message.js +0 -30
- package/lib/private/wasm/encode-websocket-open.d.ts +0 -2
- package/lib/private/wasm/encode-websocket-open.js +0 -7
- package/lib/private/wasm/filesize.d.ts +0 -2
- package/lib/private/wasm/filesize.js +0 -8
- package/lib/private/wasm/instantiate.d.ts +0 -37
- package/lib/private/wasm/instantiate.js +0 -408
- package/lib/private/wasm/open-websocket.d.ts +0 -4
- package/lib/private/wasm/open-websocket.js +0 -26
- package/lib/private/wasm/stringsize.d.ts +0 -3
- package/lib/private/wasm/stringsize.js +0 -5
- package/lib/private/wasm/urlsize.d.ts +0 -2
- package/lib/private/wasm/urlsize.js +0 -5
- package/lib/public/App.d.ts +0 -2
- package/lib/public/App.js +0 -2
- package/lib/public/AppError.d.ts +0 -2
- package/lib/public/AppError.js +0 -2
- package/lib/public/BuildApp.d.ts +0 -2
- package/lib/public/BuildApp.js +0 -2
- package/lib/public/BuildHook.d.ts +0 -2
- package/lib/public/BuildHook.js +0 -2
- package/lib/public/Database.d.ts +0 -2
- package/lib/public/Database.js +0 -2
- package/lib/public/Mode.d.ts +0 -2
- package/lib/public/Mode.js +0 -2
- package/lib/public/Module.d.ts +0 -2
- package/lib/public/Module.js +0 -2
- package/lib/public/Next.d.ts +0 -2
- package/lib/public/Next.js +0 -2
- package/lib/public/NextBuild.d.ts +0 -2
- package/lib/public/NextBuild.js +0 -2
- package/lib/public/NextHandle.d.ts +0 -2
- package/lib/public/NextHandle.js +0 -2
- package/lib/public/NextRoute.d.ts +0 -3
- package/lib/public/NextRoute.js +0 -2
- package/lib/public/NextServe.d.ts +0 -2
- package/lib/public/NextServe.js +0 -2
- package/lib/public/ServeApp.d.ts +0 -2
- package/lib/public/ServeApp.js +0 -2
- package/lib/public/Target.d.ts +0 -2
- package/lib/public/Target.js +0 -2
- package/lib/public/backend/Module.d.ts +0 -2
- package/lib/public/backend/Module.js +0 -2
- package/lib/public/backend/TAG.d.ts +0 -2
- package/lib/public/backend/TAG.js +0 -2
- package/lib/public/client/Data.d.ts +0 -2
- package/lib/public/client/Data.js +0 -2
- package/lib/public/client/ValidateInit.d.ts +0 -2
- package/lib/public/client/ValidateInit.js +0 -2
- package/lib/public/client/ValidateUpdater.d.ts +0 -2
- package/lib/public/client/ValidateUpdater.js +0 -2
- package/lib/public/client/ValidationError.d.ts +0 -2
- package/lib/public/client/ValidationError.js +0 -2
- package/lib/public/client/spa.d.ts +0 -2
- package/lib/public/client/spa.js +0 -2
- package/lib/public/client/toValidated.d.ts +0 -2
- package/lib/public/client/toValidated.js +0 -2
- package/lib/public/client/validate.d.ts +0 -2
- package/lib/public/client/validate.js +0 -2
- package/lib/public/database/As.d.ts +0 -2
- package/lib/public/database/As.js +0 -2
- package/lib/public/database/DataDict.d.ts +0 -2
- package/lib/public/database/DataDict.js +0 -2
- package/lib/public/database/InMemoryDatabase.d.ts +0 -2
- package/lib/public/database/InMemoryDatabase.js +0 -2
- package/lib/public/database/Sort.d.ts +0 -2
- package/lib/public/database/Sort.js +0 -2
- package/lib/public/database/Store.d.ts +0 -2
- package/lib/public/database/Store.js +0 -2
- package/lib/public/database/TypeMap.d.ts +0 -2
- package/lib/public/database/TypeMap.js +0 -2
- package/lib/public/database/Types.d.ts +0 -2
- package/lib/public/database/Types.js +0 -2
- package/lib/public/database/test.d.ts +0 -2
- package/lib/public/database/test.js +0 -2
- package/lib/public/database/wrap.d.ts +0 -2
- package/lib/public/database/wrap.js +0 -2
- package/lib/public/fail.d.ts +0 -2
- package/lib/public/fail.js +0 -2
- package/lib/public/frontend/Module.d.ts +0 -2
- package/lib/public/frontend/Module.js +0 -2
- package/lib/public/frontend/Publish.d.ts +0 -2
- package/lib/public/frontend/Publish.js +0 -2
- package/lib/public/frontend/Render.d.ts +0 -2
- package/lib/public/frontend/Render.js +0 -2
- package/lib/public/frontend/ViewResponse.d.ts +0 -2
- package/lib/public/frontend/ViewResponse.js +0 -2
- package/lib/public/request/RequestBody.d.ts +0 -2
- package/lib/public/request/RequestBody.js +0 -2
- package/lib/public/request/RequestFacade.d.ts +0 -2
- package/lib/public/request/RequestFacade.js +0 -2
- package/lib/public/request/Verb.d.ts +0 -2
- package/lib/public/request/Verb.js +0 -2
- package/lib/public/response/ResponseFunction.d.ts +0 -2
- package/lib/public/response/ResponseFunction.js +0 -2
- package/lib/public/response/ResponseLike.d.ts +0 -2
- package/lib/public/response/ResponseLike.js +0 -2
- package/lib/public/response/binary.d.ts +0 -2
- package/lib/public/response/binary.js +0 -2
- package/lib/public/response/error.d.ts +0 -2
- package/lib/public/response/error.js +0 -2
- package/lib/public/response/json.d.ts +0 -2
- package/lib/public/response/json.js +0 -2
- package/lib/public/response/redirect.d.ts +0 -2
- package/lib/public/response/redirect.js +0 -2
- package/lib/public/response/sse.d.ts +0 -2
- package/lib/public/response/sse.js +0 -2
- package/lib/public/response/text.d.ts +0 -2
- package/lib/public/response/text.js +0 -2
- package/lib/public/response/view.d.ts +0 -2
- package/lib/public/response/view.js +0 -2
- package/lib/public/response/ws.d.ts +0 -2
- package/lib/public/response/ws.js +0 -2
- package/lib/public/wasm/decode-json.d.ts +0 -5
- package/lib/public/wasm/decode-json.js +0 -3
- package/lib/public/wasm/decode-response.d.ts +0 -3
- package/lib/public/wasm/decode-response.js +0 -3
- package/lib/public/wasm/encode-request.d.ts +0 -3
- package/lib/public/wasm/encode-request.js +0 -3
- package/lib/public/wasm/encode-session.d.ts +0 -3
- package/lib/public/wasm/encode-session.js +0 -3
- package/lib/public/wasm/instantiate.d.ts +0 -4
- package/lib/public/wasm/instantiate.js +0 -3
- /package/lib/private/{frontend → client}/Publish.d.ts +0 -0
- /package/lib/private/{frontend → client}/Publish.js +0 -0
- /package/lib/private/{frontend → client}/Render.js +0 -0
- /package/lib/private/{frontend → client}/ServerData.js +0 -0
- /package/lib/private/{frontend → client}/ServerView.js +0 -0
- /package/lib/private/{frontend → client}/View.js +0 -0
- /package/lib/private/{frontend → client}/ViewOptions.js +0 -0
- /package/lib/private/{frontend → client}/ViewResponse.js +0 -0
- /package/lib/private/client/{spa/storage.d.ts → storage.d.ts} +0 -0
- /package/lib/private/client/{spa/storage.js → storage.js} +0 -0
- /package/lib/private/{database → db}/As.js +0 -0
- /package/lib/private/{database → db}/DataDict.js +0 -0
- /package/lib/private/{database → db}/DataKey.js +0 -0
- /package/lib/private/{database → db}/DataValue.js +0 -0
- /package/lib/private/{database → db}/Query.js +0 -0
- /package/lib/private/{database → db}/QueryBuilder.js +0 -0
- /package/lib/private/{database → db}/Schema.js +0 -0
- /package/lib/private/{database → db}/Sort.js +0 -0
- /package/lib/private/{database → db}/TypeMap.js +0 -0
- /package/lib/private/{database → db}/Types.js +0 -0
- /package/lib/private/{database → db}/primary.d.ts +0 -0
- /package/lib/private/{database → db}/primary.js +0 -0
- /package/lib/private/{database → db}/symbol.d.ts +0 -0
package/lib/private/fail.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
import type App from "#App";
|
|
2
|
-
import type BuildApp from "#build/App";
|
|
3
|
-
import type Render from "#frontend/Render";
|
|
4
|
-
import type ServerView from "#frontend/ServerView";
|
|
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 "#serve/App";
|
|
11
|
-
import FileRef from "@rcompat/fs/FileRef";
|
|
12
|
-
import type MaybePromise from "@rcompat/type/MaybePromise";
|
|
13
|
-
export default abstract class FrontendModule<S = ServerView> 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, file?: FileRef) => MaybePromise<string>;
|
|
28
|
-
};
|
|
29
|
-
css?: {
|
|
30
|
-
filter: RegExp;
|
|
31
|
-
};
|
|
32
|
-
conditions: string[];
|
|
33
|
-
static schema: import("pema").ObjectType<{
|
|
34
|
-
fileExtensions: import("pema").OptionalType<import("pema").ArrayType<import("pema/string").StringType>>;
|
|
35
|
-
spa: import("pema").DefaultType<import("pema/boolean").BooleanType, true>;
|
|
36
|
-
ssr: import("pema").DefaultType<import("pema/boolean").BooleanType, true>;
|
|
37
|
-
}>;
|
|
38
|
-
static options: {
|
|
39
|
-
fileExtensions: string[] | undefined;
|
|
40
|
-
spa: boolean;
|
|
41
|
-
ssr: boolean;
|
|
42
|
-
};
|
|
43
|
-
static input: {
|
|
44
|
-
fileExtensions?: string[] | undefined;
|
|
45
|
-
spa?: boolean | undefined;
|
|
46
|
-
ssr?: boolean | undefined;
|
|
47
|
-
} | undefined;
|
|
48
|
-
constructor(options?: typeof FrontendModule.schema.input);
|
|
49
|
-
get fileExtensions(): string[];
|
|
50
|
-
get package(): string;
|
|
51
|
-
get rootname(): string;
|
|
52
|
-
get ssr(): boolean;
|
|
53
|
-
get spa(): boolean;
|
|
54
|
-
normalize(name: string): Promise<string>;
|
|
55
|
-
respond: ViewResponse;
|
|
56
|
-
serve(app: ServeApp, next: NextServe): MaybePromise<ServeApp>;
|
|
57
|
-
publish(app: BuildApp): void;
|
|
58
|
-
init<T extends App>(app: T, next: Next<T>): MaybePromise<T>;
|
|
59
|
-
prebuild(app: BuildApp): void;
|
|
60
|
-
build(app: BuildApp, next: NextBuild): Promise<BuildApp>;
|
|
61
|
-
}
|
|
62
|
-
//# sourceMappingURL=Module.d.ts.map
|
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
import fail from "#fail";
|
|
2
|
-
import inline from "#inline";
|
|
3
|
-
import location from "#location";
|
|
4
|
-
import Module from "#Module";
|
|
5
|
-
import map from "@rcompat/async/map";
|
|
6
|
-
import hash from "@rcompat/crypto/hash";
|
|
7
|
-
import FileRef from "@rcompat/fs/FileRef";
|
|
8
|
-
import APPLICATION_JSON from "@rcompat/http/mime/application/json";
|
|
9
|
-
import Status from "@rcompat/http/Status";
|
|
10
|
-
import p from "pema";
|
|
11
|
-
async function normalize(path, frontend) {
|
|
12
|
-
const file = new FileRef(path);
|
|
13
|
-
const basename = path.slice(0, -file.fullExtension.length);
|
|
14
|
-
return `p_${await hash(`${basename}.${frontend}`)}`;
|
|
15
|
-
}
|
|
16
|
-
export default class FrontendModule extends Module {
|
|
17
|
-
#options;
|
|
18
|
-
render = async (view, props) => ({ body: await view(props) });
|
|
19
|
-
root;
|
|
20
|
-
compile = {};
|
|
21
|
-
css;
|
|
22
|
-
conditions = [];
|
|
23
|
-
#mode = "development";
|
|
24
|
-
static schema = p({
|
|
25
|
-
fileExtensions: p.array(p.string).optional(),
|
|
26
|
-
spa: p.boolean.default(true),
|
|
27
|
-
ssr: p.boolean.default(true),
|
|
28
|
-
});
|
|
29
|
-
static options = FrontendModule.schema.infer;
|
|
30
|
-
static input = FrontendModule.schema.input;
|
|
31
|
-
constructor(options) {
|
|
32
|
-
super();
|
|
33
|
-
this.#options = FrontendModule.schema.parse(options);
|
|
34
|
-
}
|
|
35
|
-
get fileExtensions() {
|
|
36
|
-
return this.#options.fileExtensions ?? this.defaultExtensions;
|
|
37
|
-
}
|
|
38
|
-
get package() {
|
|
39
|
-
return `@primate/${this.name}`;
|
|
40
|
-
}
|
|
41
|
-
get rootname() {
|
|
42
|
-
return `root_${this.name}`;
|
|
43
|
-
}
|
|
44
|
-
get ssr() {
|
|
45
|
-
return this.#options.ssr && (this.#mode !== "development" || !this.client);
|
|
46
|
-
}
|
|
47
|
-
get spa() {
|
|
48
|
-
return this.#options.spa;
|
|
49
|
-
}
|
|
50
|
-
#load(name, props, app) {
|
|
51
|
-
if (!this.ssr)
|
|
52
|
-
return { view: null, name, props };
|
|
53
|
-
const view = app.loadView(name);
|
|
54
|
-
return { view, name, props };
|
|
55
|
-
}
|
|
56
|
-
;
|
|
57
|
-
async #render(server, client, app) {
|
|
58
|
-
const { body, head = "", headers = {} } = this.ssr
|
|
59
|
-
? await this.render(server.view, server.props)
|
|
60
|
-
: { body: "", head: "" };
|
|
61
|
-
if (!this.client) {
|
|
62
|
-
return { body, head, headers };
|
|
63
|
-
}
|
|
64
|
-
const app_asset = app.assets.find(asset => asset.src?.includes("app") && asset.src.endsWith(".js"));
|
|
65
|
-
if (!app_asset)
|
|
66
|
-
throw fail("Could not find app.js in assets");
|
|
67
|
-
const app_script = `<script type="module" src="${app_asset.src}"></script>`;
|
|
68
|
-
const json_props = JSON.stringify({ frontend: this.name, ...client });
|
|
69
|
-
const hydrated = await inline(json_props, APPLICATION_JSON, "hydration");
|
|
70
|
-
const script_src = [hydrated.integrity];
|
|
71
|
-
return {
|
|
72
|
-
body,
|
|
73
|
-
head: head.concat(app_script, hydrated.head),
|
|
74
|
-
headers: app.headers({ "script-src": script_src }),
|
|
75
|
-
};
|
|
76
|
-
}
|
|
77
|
-
normalize(name) {
|
|
78
|
-
return normalize(name, this.name);
|
|
79
|
-
}
|
|
80
|
-
respond = (view, props = {}, options = {}) => async (app, { as_layout, layouts = [] } = {}, request) => {
|
|
81
|
-
if (as_layout) {
|
|
82
|
-
return this.#load(view, props, app);
|
|
83
|
-
}
|
|
84
|
-
const views = (await Promise.all(layouts
|
|
85
|
-
.map(layout => layout(app, { as_layout: true }, request))))
|
|
86
|
-
/* set the actual page as the last view */
|
|
87
|
-
.concat(this.#load(view, props, app));
|
|
88
|
-
const $request = {
|
|
89
|
-
context: request.context,
|
|
90
|
-
cookies: request.cookies.toJSON(),
|
|
91
|
-
headers: request.headers.toJSON(),
|
|
92
|
-
path: request.path.toJSON(),
|
|
93
|
-
query: request.query.toJSON(),
|
|
94
|
-
url: request.url,
|
|
95
|
-
};
|
|
96
|
-
const $props = this.layouts
|
|
97
|
-
? {
|
|
98
|
-
views: await map(views, ({ name }) => this.normalize(name)),
|
|
99
|
-
props: views.map(c => c.props),
|
|
100
|
-
request: $request,
|
|
101
|
-
}
|
|
102
|
-
: { props, request: $request };
|
|
103
|
-
const client = {
|
|
104
|
-
view: this.layouts ? "root" : await this.normalize(view),
|
|
105
|
-
spa: this.spa,
|
|
106
|
-
ssr: this.ssr,
|
|
107
|
-
mode: app.mode,
|
|
108
|
-
...$props,
|
|
109
|
-
};
|
|
110
|
-
if (this.spa && request.headers.get("Accept") === APPLICATION_JSON) {
|
|
111
|
-
const json_body = JSON.stringify(client);
|
|
112
|
-
return new Response(json_body, {
|
|
113
|
-
headers: {
|
|
114
|
-
...app.headers(),
|
|
115
|
-
"Content-Type": APPLICATION_JSON,
|
|
116
|
-
"Content-Length": String(app.body_length(json_body)),
|
|
117
|
-
"Cache-Control": "no-store",
|
|
118
|
-
},
|
|
119
|
-
status: options.status ?? Status.OK,
|
|
120
|
-
});
|
|
121
|
-
}
|
|
122
|
-
if (!this.ssr) {
|
|
123
|
-
const { head } = await this.#render({ view: null, props: {} }, client, app);
|
|
124
|
-
return app.view({ body: "<div id=\"app\"></div>", head, ...options });
|
|
125
|
-
}
|
|
126
|
-
try {
|
|
127
|
-
const server = this.layouts
|
|
128
|
-
? {
|
|
129
|
-
view: app.loadView(this.rootname),
|
|
130
|
-
props: {
|
|
131
|
-
views: views.map(c => c.view),
|
|
132
|
-
props: views.map(c => c.props),
|
|
133
|
-
request: $request,
|
|
134
|
-
},
|
|
135
|
-
}
|
|
136
|
-
: {
|
|
137
|
-
view: app.loadView(view),
|
|
138
|
-
props,
|
|
139
|
-
request: $request,
|
|
140
|
-
};
|
|
141
|
-
const { body, head, headers } = await this.#render(server, client, app);
|
|
142
|
-
return app.view({ body, head, headers, ...options });
|
|
143
|
-
}
|
|
144
|
-
catch (error) {
|
|
145
|
-
const path = `${location.views}/${view}`;
|
|
146
|
-
throw fail("error in view {0}\n{1}", path, error);
|
|
147
|
-
}
|
|
148
|
-
};
|
|
149
|
-
serve(app, next) {
|
|
150
|
-
this.fileExtensions.forEach(fe => app.register(fe, this.respond));
|
|
151
|
-
return next(app);
|
|
152
|
-
}
|
|
153
|
-
publish(app) {
|
|
154
|
-
if (this.compile.client) {
|
|
155
|
-
const { compile, css, fileExtensions, name, root, conditions } = this;
|
|
156
|
-
const _normalize = this.normalize.bind(this);
|
|
157
|
-
if (this.client) {
|
|
158
|
-
app.frontends.set(name, [...fileExtensions]);
|
|
159
|
-
conditions.forEach(condition => app.conditions.add(condition));
|
|
160
|
-
}
|
|
161
|
-
app.plugin("client", {
|
|
162
|
-
name,
|
|
163
|
-
setup(build) {
|
|
164
|
-
const resolveDir = app.root.path;
|
|
165
|
-
const css_cache = new Map();
|
|
166
|
-
if (root !== undefined) {
|
|
167
|
-
const filter = new RegExp(`^${name}:root`);
|
|
168
|
-
build.onResolve({ filter }, ({ path }) => {
|
|
169
|
-
return { namespace: `${name}`, path };
|
|
170
|
-
});
|
|
171
|
-
build.onLoad({ filter }, async () => {
|
|
172
|
-
const contents = (await compile.client(root.create(app.depth(), app.i18n_active), new FileRef("/tmp"), true)).js;
|
|
173
|
-
return contents ? { contents, loader: "js", resolveDir } : null;
|
|
174
|
-
});
|
|
175
|
-
}
|
|
176
|
-
if (css !== undefined) {
|
|
177
|
-
build.onResolve({ filter: new RegExp(`^${name}:css:`) }, args => {
|
|
178
|
-
return { path: args.path, namespace: `${name}-css` };
|
|
179
|
-
});
|
|
180
|
-
build.onLoad({ filter: /.*/, namespace: `${name}-css` }, args => {
|
|
181
|
-
const contents = css_cache.get(args.path);
|
|
182
|
-
return contents ? { contents, loader: "css" } : null;
|
|
183
|
-
});
|
|
184
|
-
}
|
|
185
|
-
const views_filter = new RegExp(`^${name}:views`);
|
|
186
|
-
const views_base = app.root.join(location.views);
|
|
187
|
-
build.onResolve({ filter: views_filter }, ({ path }) => {
|
|
188
|
-
return { namespace: `${name}`, path };
|
|
189
|
-
});
|
|
190
|
-
build.onLoad({ filter: views_filter }, async () => {
|
|
191
|
-
const views = await views_base
|
|
192
|
-
.collect(c => fileExtensions.includes(c.fullExtension));
|
|
193
|
-
let contents = "";
|
|
194
|
-
for (const view of views) {
|
|
195
|
-
const { path } = view.debase(views_base, "/");
|
|
196
|
-
contents += `export { default as ${await _normalize(path)} }
|
|
197
|
-
from "#view/${path}";\n`;
|
|
198
|
-
}
|
|
199
|
-
return { contents, resolveDir: app.root.path };
|
|
200
|
-
});
|
|
201
|
-
const filter = new RegExp(`(${fileExtensions.map(e => e.replace(".", "\\.")).join("|")})$`);
|
|
202
|
-
build.onLoad({ filter }, async (args) => {
|
|
203
|
-
const file = new FileRef(args.path);
|
|
204
|
-
// compile file to JavaScript and potentially CSS
|
|
205
|
-
const compiled = await compile.client(await file.text(), file, false);
|
|
206
|
-
let contents = compiled.js;
|
|
207
|
-
if (css
|
|
208
|
-
&& compiled.css !== null
|
|
209
|
-
&& compiled.css !== undefined
|
|
210
|
-
&& compiled.css !== "") {
|
|
211
|
-
const css_path = `${name}:css:${args.path}`;
|
|
212
|
-
css_cache.set(css_path, compiled.css);
|
|
213
|
-
contents += `\nimport "${css_path}";`;
|
|
214
|
-
}
|
|
215
|
-
return { contents };
|
|
216
|
-
});
|
|
217
|
-
},
|
|
218
|
-
});
|
|
219
|
-
}
|
|
220
|
-
}
|
|
221
|
-
init(app, next) {
|
|
222
|
-
this.#mode = app.mode;
|
|
223
|
-
return next(app);
|
|
224
|
-
}
|
|
225
|
-
prebuild(app) {
|
|
226
|
-
this.fileExtensions.forEach(e => {
|
|
227
|
-
app.bind(e, async (file, { context }) => {
|
|
228
|
-
if (context === "views" && !this.ssr)
|
|
229
|
-
return "";
|
|
230
|
-
// production: just compile to JS, don't bundle yet
|
|
231
|
-
if (this.compile.server) {
|
|
232
|
-
return await this.compile.server(await file.text(), file);
|
|
233
|
-
}
|
|
234
|
-
return await file.text();
|
|
235
|
-
});
|
|
236
|
-
});
|
|
237
|
-
}
|
|
238
|
-
async build(app, next) {
|
|
239
|
-
this.prebuild(app);
|
|
240
|
-
// compile root server
|
|
241
|
-
if (this.root !== undefined && this.compile.server !== undefined) {
|
|
242
|
-
const source = await this.compile.server(this.root.create(app.depth(), app.i18n_active));
|
|
243
|
-
app.addRoot(this.rootname, source);
|
|
244
|
-
}
|
|
245
|
-
this.publish(app);
|
|
246
|
-
return next(app);
|
|
247
|
-
}
|
|
248
|
-
;
|
|
249
|
-
}
|
|
250
|
-
//# sourceMappingURL=Module.js.map
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import type Dict from "@rcompat/type/Dict";
|
|
2
|
-
import type MaybePromise from "@rcompat/type/MaybePromise";
|
|
3
|
-
type Render<V = unknown> = (view: V, 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
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type Config from "#i18n/Config";
|
|
2
|
-
import Module from "#Module";
|
|
3
|
-
import type NextHandle from "#module/NextHandle";
|
|
4
|
-
import type NextRoute from "#module/NextRoute";
|
|
5
|
-
import type NextServe from "#module/NextServe";
|
|
6
|
-
import type RequestFacade from "#request/RequestFacade";
|
|
7
|
-
import type ServeApp from "#serve/App";
|
|
8
|
-
export default class I18NModule extends Module {
|
|
9
|
-
#private;
|
|
10
|
-
name: string;
|
|
11
|
-
constructor(config: Config);
|
|
12
|
-
serve(app: ServeApp, next: NextServe): import("@rcompat/type/MaybePromise").default<ServeApp>;
|
|
13
|
-
handle(request: RequestFacade, next: NextHandle): import("@rcompat/type/MaybePromise").default<Response>;
|
|
14
|
-
route(request: RequestFacade, next: NextRoute): import("@rcompat/type/MaybePromise").default<import("../response/ResponseLike.js").default>;
|
|
15
|
-
}
|
|
16
|
-
//# sourceMappingURL=Module.d.ts.map
|
|
@@ -1,122 +0,0 @@
|
|
|
1
|
-
import AppError from "#AppError";
|
|
2
|
-
import bye from "#bye";
|
|
3
|
-
import cookie from "#cookie";
|
|
4
|
-
import COOKIE_NAME from "#i18n/constant/COOKIE_NAME";
|
|
5
|
-
import PERSIST_HEADER from "#i18n/constant/PERSIST_HEADER";
|
|
6
|
-
import log from "#log";
|
|
7
|
-
import Module from "#Module";
|
|
8
|
-
import Status from "@rcompat/http/Status";
|
|
9
|
-
function toLowerCase(string) {
|
|
10
|
-
return string.toLowerCase();
|
|
11
|
-
}
|
|
12
|
-
function pick(client, server) {
|
|
13
|
-
const lower = server.map(toLowerCase);
|
|
14
|
-
for (const raw of client.map(toLowerCase)) {
|
|
15
|
-
const locale = raw.trim();
|
|
16
|
-
if (!locale)
|
|
17
|
-
continue;
|
|
18
|
-
const exact = lower.indexOf(locale);
|
|
19
|
-
if (exact !== -1)
|
|
20
|
-
return server[exact];
|
|
21
|
-
const base = locale.split("-")[0];
|
|
22
|
-
const index = lower.findIndex(s => s === base || s.startsWith(`${base}-`));
|
|
23
|
-
if (index !== -1)
|
|
24
|
-
return server[index];
|
|
25
|
-
}
|
|
26
|
-
return undefined;
|
|
27
|
-
}
|
|
28
|
-
function fail(message, ...params) {
|
|
29
|
-
const error = new AppError(`{0} ${message}`, "[i18n]", ...params);
|
|
30
|
-
log.error(error);
|
|
31
|
-
bye();
|
|
32
|
-
process.exit(1);
|
|
33
|
-
}
|
|
34
|
-
export default class I18NModule extends Module {
|
|
35
|
-
name = "builtin/i18n";
|
|
36
|
-
#secure = false;
|
|
37
|
-
#defaultLocale;
|
|
38
|
-
#locales;
|
|
39
|
-
#persist = "cookie";
|
|
40
|
-
#currency;
|
|
41
|
-
constructor(config) {
|
|
42
|
-
super();
|
|
43
|
-
const defaultLocale = config.defaultLocale;
|
|
44
|
-
const locales = Object.keys(config.locales);
|
|
45
|
-
if (locales.length < 1)
|
|
46
|
-
fail("must have at least 1 locale");
|
|
47
|
-
if (defaultLocale === undefined)
|
|
48
|
-
fail("must have a default locale");
|
|
49
|
-
if (!locales.includes(defaultLocale))
|
|
50
|
-
fail("default locale not in locales");
|
|
51
|
-
this.#defaultLocale = defaultLocale;
|
|
52
|
-
this.#locales = locales;
|
|
53
|
-
this.#persist = config.persist ?? "cookie";
|
|
54
|
-
this.#currency = config.currency ?? "USD";
|
|
55
|
-
}
|
|
56
|
-
#configured(locale) {
|
|
57
|
-
return this.#locales.includes(locale);
|
|
58
|
-
}
|
|
59
|
-
serve(app, next) {
|
|
60
|
-
this.#secure = app.secure;
|
|
61
|
-
return next(app);
|
|
62
|
-
}
|
|
63
|
-
handle(request, next) {
|
|
64
|
-
const requested = request.headers.try(PERSIST_HEADER);
|
|
65
|
-
if (requested === undefined)
|
|
66
|
-
return next(request);
|
|
67
|
-
// only cookie-persistance is server-supported
|
|
68
|
-
if (this.#persist !== "cookie")
|
|
69
|
-
return new Response(null, {
|
|
70
|
-
headers: {
|
|
71
|
-
"Content-Length": String(0),
|
|
72
|
-
},
|
|
73
|
-
status: Status.NO_CONTENT,
|
|
74
|
-
});
|
|
75
|
-
// only accept configured locales
|
|
76
|
-
if (!this.#configured(requested))
|
|
77
|
-
return new Response(null, {
|
|
78
|
-
headers: {
|
|
79
|
-
"Content-Length": String(0),
|
|
80
|
-
},
|
|
81
|
-
status: Status.NO_CONTENT,
|
|
82
|
-
});
|
|
83
|
-
const header = cookie(COOKIE_NAME, requested, {
|
|
84
|
-
secure: this.#secure,
|
|
85
|
-
path: "/",
|
|
86
|
-
sameSite: "Strict",
|
|
87
|
-
});
|
|
88
|
-
return new Response(null, {
|
|
89
|
-
headers: {
|
|
90
|
-
"Set-Cookie": header,
|
|
91
|
-
"Content-Length": String(0),
|
|
92
|
-
},
|
|
93
|
-
status: Status.NO_CONTENT,
|
|
94
|
-
});
|
|
95
|
-
}
|
|
96
|
-
route(request, next) {
|
|
97
|
-
const server_locales = this.#locales;
|
|
98
|
-
const accept_language = request.headers.try("Accept-Language") ?? "";
|
|
99
|
-
const client_locales = accept_language
|
|
100
|
-
.split(",")
|
|
101
|
-
.map(s => s.split(";")[0].trim())
|
|
102
|
-
.filter(Boolean);
|
|
103
|
-
const mode = this.#persist;
|
|
104
|
-
const cookieLocale = mode === "cookie" ? request.cookies.try(COOKIE_NAME) : undefined;
|
|
105
|
-
const locale = cookieLocale ??
|
|
106
|
-
pick(client_locales, server_locales) ??
|
|
107
|
-
this.#defaultLocale;
|
|
108
|
-
return next({
|
|
109
|
-
...request,
|
|
110
|
-
context: {
|
|
111
|
-
...request.context,
|
|
112
|
-
i18n: {
|
|
113
|
-
currency: this.#currency,
|
|
114
|
-
mode,
|
|
115
|
-
locale,
|
|
116
|
-
locales: server_locales,
|
|
117
|
-
},
|
|
118
|
-
},
|
|
119
|
-
});
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
//# sourceMappingURL=Module.js.map
|
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import type API from "#i18n/API";
|
|
2
|
-
import type Catalog from "#i18n/Catalog";
|
|
3
|
-
import type Catalogs from "#i18n/Catalogs";
|
|
4
|
-
import type Config from "#i18n/Config";
|
|
5
|
-
import type TypeOf from "#i18n/TypeOf";
|
|
6
|
-
import type Dict from "@rcompat/type/Dict";
|
|
7
|
-
type EntryOf<Body extends string> = Body extends `${infer Name}:${infer Spec}` ? {
|
|
8
|
-
__name: Name & string;
|
|
9
|
-
__type: TypeOf<Spec>;
|
|
10
|
-
} : {
|
|
11
|
-
__name: Body & string;
|
|
12
|
-
__type: string;
|
|
13
|
-
};
|
|
14
|
-
type EntriesOf<S extends string> = S extends `${infer _}{${infer Body}}${infer Rest}` ? EntryOf<Body> | EntriesOf<Rest> : never;
|
|
15
|
-
type ParamsFromEntries<E> = [
|
|
16
|
-
E
|
|
17
|
-
] extends [never] ? Dict : {
|
|
18
|
-
[K in E as K extends {
|
|
19
|
-
__name: infer N extends string;
|
|
20
|
-
} ? N : never]: K extends {
|
|
21
|
-
__type: infer T;
|
|
22
|
-
} ? T : never;
|
|
23
|
-
};
|
|
24
|
-
export default function i18n<const C extends Catalogs>(config: Config<C>): (<K extends string>(...args: K extends keyof (C[keyof C & string] extends Catalog ? C[keyof C & string] : never) & string ? [EntriesOf<(C[keyof C & string] extends Catalog ? C[keyof C & string] : never)[K]>] extends [never] ? [key: K] : [key: K, params: ParamsFromEntries<EntriesOf<(C[keyof C & string] extends Catalog ? C[keyof C & string] : never)[K]>>] : [`[i18n] Missing locale key "${K}".`]) => string) & API<C> & {
|
|
25
|
-
subscribe(run: (value: (<K extends string>(...args: K extends keyof (C[keyof C & string] extends Catalog ? C[keyof C & string] : never) & string ? [EntriesOf<(C[keyof C & string] extends Catalog ? C[keyof C & string] : never)[K]>] extends [never] ? [key: K] : [key: K, params: ParamsFromEntries<EntriesOf<(C[keyof C & string] extends Catalog ? C[keyof C & string] : never)[K]>>] : [`[i18n] Missing locale key "${K}".`]) => string) & API<C>) => void): () => void;
|
|
26
|
-
};
|
|
27
|
-
export {};
|
|
28
|
-
//# sourceMappingURL=index.d.ts.map
|