@primate/core 0.4.6 → 0.5.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 +531 -3
- package/lib/private/App.js +8 -3
- package/lib/private/Binder.d.ts +2 -2
- package/lib/private/Flags.d.ts +3 -3
- package/lib/private/Module.d.ts +5 -5
- package/lib/private/app/Facade.d.ts +566 -0
- package/lib/private/app/Facade.js +33 -0
- package/lib/private/asset/Asset.d.ts +1 -1
- package/lib/private/backend/Module.d.ts +1 -1
- package/lib/private/backend/Module.js +2 -5
- package/lib/private/backend/TAG.d.ts +1 -1
- package/lib/private/backend/TAG.js +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 +11 -7
- package/lib/private/build/hook.js +4 -3
- package/lib/private/build/index.js +14 -13
- package/lib/private/build/presets.d.ts +10 -0
- package/lib/private/build/presets.js +39 -0
- package/lib/private/build/server/index.js +5 -7
- 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/db-default.d.ts +4 -0
- package/lib/private/build/server/plugin/db-default.js +45 -0
- 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} +4 -4
- package/lib/private/build/server/plugin/native-addons.js +6 -4
- package/lib/private/build/server/plugin/node-imports.js +2 -2
- package/lib/private/build/server/plugin/route.js +2 -2
- package/lib/private/build/server/plugin/store-wrap.js +2 -2
- package/lib/private/build/server/plugin/store.js +6 -6
- package/lib/private/build/server/plugin/stores.js +4 -5
- package/lib/private/build/server/plugin/view.js +4 -4
- 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/bye.js +2 -3
- package/lib/private/client/Data.d.ts +1 -1
- package/lib/private/client/ValidateInit.d.ts +1 -3
- package/lib/private/client/ValidationError.d.ts +1 -1
- package/lib/private/client/app.js +2 -1
- package/lib/private/client/create-form.d.ts +31 -0
- package/lib/private/client/create-form.js +124 -0
- package/lib/private/client/extract-issues.d.ts +4 -0
- package/lib/private/client/extract-issues.js +20 -0
- package/lib/private/client/spa/index.d.ts +1 -1
- package/lib/private/client/spa/index.js +4 -5
- 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 +2 -21
- package/lib/private/config/index.js +3 -1
- package/lib/private/config/schema.d.ts +13 -9
- package/lib/private/config/schema.js +10 -5
- package/lib/private/cookie.d.ts +5 -5
- package/lib/private/cookie.js +10 -14
- package/lib/private/db/As.d.ts +10 -0
- package/lib/private/db/DB.d.ts +33 -0
- package/lib/private/db/DB.js +2 -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 +35 -0
- package/lib/private/db/MemoryDB.js +317 -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 +18 -0
- package/lib/private/db/common.js +36 -0
- package/lib/private/db/error.d.ts +81 -0
- package/lib/private/db/error.js +199 -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/wrap.js +2 -0
- package/lib/private/db/symbol.js +2 -0
- package/lib/private/db/test.d.ts +4 -0
- package/lib/private/db/test.js +1384 -0
- package/lib/private/frontend/Module.d.ts +6 -6
- package/lib/private/frontend/Module.js +28 -23
- package/lib/private/frontend/Render.d.ts +1 -2
- package/lib/private/frontend/ServerData.d.ts +1 -1
- package/lib/private/frontend/ServerView.d.ts +1 -2
- package/lib/private/frontend/View.d.ts +1 -1
- package/lib/private/frontend/ViewOptions.d.ts +1 -1
- package/lib/private/frontend/ViewResponse.d.ts +1 -1
- package/lib/private/hash.js +0 -1
- package/lib/private/i18n/Catalog.d.ts +5 -2
- package/lib/private/i18n/Formatter.js +20 -8
- package/lib/private/i18n/Module.d.ts +3 -3
- package/lib/private/i18n/Module.js +28 -17
- 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/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 +4 -4
- 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 +21 -0
- package/lib/private/log.d.ts +1 -0
- package/lib/private/log.js +10 -10
- package/lib/private/module/Hook.d.ts +1 -1
- package/lib/private/module/Next.d.ts +1 -1
- package/lib/private/orm/ForeignKey.d.ts +11 -0
- package/lib/private/orm/ForeignKey.js +22 -0
- package/lib/private/orm/PrimaryKey.d.ts +15 -0
- package/lib/private/orm/PrimaryKey.js +35 -0
- package/lib/private/orm/Set.d.ts +11 -0
- package/lib/private/orm/Set.js +2 -0
- package/lib/private/orm/Store.d.ts +171 -0
- package/lib/private/orm/Store.js +518 -0
- package/lib/private/orm/foreign.d.ts +4 -0
- package/lib/private/orm/foreign.js +5 -0
- package/lib/private/orm/key.d.ts +8 -0
- package/lib/private/orm/key.js +4 -0
- package/lib/private/orm/parse.d.ts +12 -0
- package/lib/private/orm/parse.js +29 -0
- package/lib/private/orm/primary.d.ts +5 -0
- package/lib/private/orm/primary.js +5 -0
- package/lib/private/orm/relation.d.ts +43 -0
- package/lib/private/orm/relation.js +26 -0
- package/lib/private/orm/types.d.ts +18 -0
- package/lib/private/orm/types.js +2 -0
- package/lib/private/orm/wrap.d.ts +5 -0
- package/lib/private/orm/wrap.js +5 -0
- package/lib/private/paths.d.ts +2 -2
- package/lib/private/request/RequestBag.d.ts +1 -1
- package/lib/private/request/RequestBag.js +11 -7
- package/lib/private/request/RequestBody.d.ts +2 -4
- package/lib/private/request/RequestBody.js +8 -11
- package/lib/private/request/RequestContext.d.ts +12 -0
- package/lib/private/request/RequestContext.js +31 -0
- package/lib/private/request/RequestFacade.d.ts +16 -6
- package/lib/private/request/parse.d.ts +2 -2
- package/lib/private/request/parse.js +54 -16
- package/lib/private/request/route.js +37 -21
- package/lib/private/request/router.d.ts +1 -1
- package/lib/private/request/router.js +2 -2
- package/lib/private/request/sContext.d.ts +3 -0
- package/lib/private/request/sContext.js +2 -0
- package/lib/private/response/ResponseFunction.d.ts +1 -2
- 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/json.d.ts +1 -1
- package/lib/private/response/json.js +2 -2
- package/lib/private/response/redirect.js +1 -1
- package/lib/private/response/respond.js +7 -10
- 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 +2 -2
- package/lib/private/response/view.js +3 -3
- 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 +9 -5
- package/lib/private/route/router.js +34 -17
- package/lib/private/route/wrap.js +2 -2
- package/lib/private/serve/App.d.ts +5 -18
- package/lib/private/serve/App.js +91 -82
- package/lib/private/serve/Init.d.ts +3 -3
- package/lib/private/serve/hook.js +1 -7
- package/lib/private/serve/index.js +6 -2
- package/lib/private/serve/module/Dev.d.ts +1 -1
- package/lib/private/serve/module/Dev.js +9 -5
- package/lib/private/serve/module/Handle.js +2 -2
- package/lib/private/session/Data.d.ts +1 -2
- package/lib/private/session/SessionHandle.d.ts +1 -1
- package/lib/private/session/SessionHandle.js +10 -9
- package/lib/private/session/SessionModule.js +7 -7
- package/lib/private/session/index.d.ts +3 -4
- package/lib/private/session/schema.d.ts +6 -6
- package/lib/private/session/schema.js +5 -4
- 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/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 +14 -0
- package/lib/public/client.js +10 -0
- package/lib/public/db/MemoryDB.d.ts +2 -0
- package/lib/public/db/MemoryDB.js +2 -0
- package/lib/public/db/error.d.ts +2 -0
- package/lib/public/db/error.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/orm/Store.d.ts +2 -0
- package/lib/public/orm/Store.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/wrap.d.ts +2 -0
- package/lib/public/orm/wrap.js +2 -0
- package/lib/public/request.d.ts +4 -0
- package/lib/public/request.js +2 -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/package.json +28 -23
- 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/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/i18n/index.d.ts +0 -28
- package/lib/private/i18n/index.js +0 -236
- package/lib/private/route/guard.d.ts +0 -4
- package/lib/private/route/guard.js +0 -22
- 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/Database.d.ts +0 -2
- package/lib/public/Database.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/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/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/{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/wrap.d.ts +0 -0
- /package/lib/private/{database → db}/symbol.d.ts +0 -0
|
@@ -11,18 +11,10 @@ export default function plugin_server_virtual_routes(app) {
|
|
|
11
11
|
return { path: "routes-virtual", namespace: "primate-routes" };
|
|
12
12
|
});
|
|
13
13
|
build.onLoad({ filter: /.*/, namespace: "primate-routes" }, async () => {
|
|
14
|
-
const route_files = await routes_path.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
const entries = await dir.list();
|
|
19
|
-
for (const entry of entries) {
|
|
20
|
-
if (await entry.isDirectory()) {
|
|
21
|
-
await findDirs(entry);
|
|
22
|
-
}
|
|
23
|
-
}
|
|
24
|
-
};
|
|
25
|
-
await findDirs(app.path.routes);
|
|
14
|
+
const route_files = await routes_path.files({
|
|
15
|
+
filter: is_route_file,
|
|
16
|
+
recursive: true,
|
|
17
|
+
});
|
|
26
18
|
const contents = `
|
|
27
19
|
const route = [];
|
|
28
20
|
${route_files.map((file, i) => {
|
|
@@ -32,11 +24,14 @@ export default function plugin_server_virtual_routes(app) {
|
|
|
32
24
|
}).join("\n")}
|
|
33
25
|
export default route;
|
|
34
26
|
`;
|
|
27
|
+
const watchDirs = (await app.path.routes.dirs({
|
|
28
|
+
recursive: true,
|
|
29
|
+
})).map(f => f.toString());
|
|
35
30
|
return {
|
|
36
31
|
contents,
|
|
37
32
|
loader: "js",
|
|
38
33
|
resolveDir: app.root.path,
|
|
39
|
-
watchDirs
|
|
34
|
+
watchDirs,
|
|
40
35
|
watchFiles: route_files.map(f => f.path),
|
|
41
36
|
};
|
|
42
37
|
});
|
|
@@ -22,9 +22,8 @@ export default function plugin_server_wasm(app) {
|
|
|
22
22
|
const wasm_file = app.runpath("wasm", args.path + ".wasm");
|
|
23
23
|
return {
|
|
24
24
|
contents: `
|
|
25
|
-
import
|
|
26
|
-
|
|
27
|
-
export default await file.bytes();
|
|
25
|
+
import fs from "@rcompat/fs";
|
|
26
|
+
export default await fs.ref("${wasm_file.path}").bytes();
|
|
28
27
|
`,
|
|
29
28
|
loader: "js",
|
|
30
29
|
resolveDir: app.root.path,
|
package/lib/private/bye.js
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
import
|
|
2
|
-
import yellow from "@rcompat/cli/color/yellow";
|
|
1
|
+
import color from "@rcompat/cli/color";
|
|
3
2
|
import print from "@rcompat/cli/print";
|
|
4
|
-
export default () => print(dim(yellow("~~ bye\n")));
|
|
3
|
+
export default () => print(color.dim(color.yellow("~~ bye\n")));
|
|
5
4
|
//# sourceMappingURL=bye.js.map
|
|
@@ -1,6 +1,4 @@
|
|
|
1
|
-
import type Dict from "@rcompat/type
|
|
2
|
-
import type JSONPointer from "@rcompat/type/JSONPointer";
|
|
3
|
-
import type JSONValue from "@rcompat/type/JSONValue";
|
|
1
|
+
import type { Dict, JSONPointer, JSONValue } from "@rcompat/type";
|
|
4
2
|
type ValidateInit<T> = {
|
|
5
3
|
headers?: Dict<string>;
|
|
6
4
|
initial: T;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Dict } from "@rcompat/type";
|
|
2
|
+
type FormId = string;
|
|
3
|
+
type FieldErrors = readonly string[];
|
|
4
|
+
type FormErrors = {
|
|
5
|
+
form: FieldErrors;
|
|
6
|
+
fields: Dict<FieldErrors>;
|
|
7
|
+
};
|
|
8
|
+
type FormSnapshot = {
|
|
9
|
+
id: FormId;
|
|
10
|
+
submitting: boolean;
|
|
11
|
+
errors: FormErrors;
|
|
12
|
+
};
|
|
13
|
+
export type FormView = FormSnapshot & {
|
|
14
|
+
submit: (event?: Event) => Promise<void>;
|
|
15
|
+
};
|
|
16
|
+
type FormSubscriber = (snapshot: FormSnapshot) => void;
|
|
17
|
+
export type FormInit = {
|
|
18
|
+
id?: string;
|
|
19
|
+
method?: "POST" | "PUT" | "PATCH" | "DELETE";
|
|
20
|
+
url?: string;
|
|
21
|
+
headers?: Dict<string>;
|
|
22
|
+
};
|
|
23
|
+
type FormController = {
|
|
24
|
+
subscribe(fn: FormSubscriber): () => void;
|
|
25
|
+
read(): FormSnapshot;
|
|
26
|
+
submit(event?: Event): Promise<void>;
|
|
27
|
+
get id(): FormId;
|
|
28
|
+
};
|
|
29
|
+
export default function createForm(init: FormInit): FormController;
|
|
30
|
+
export {};
|
|
31
|
+
//# sourceMappingURL=create-form.d.ts.map
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import extract_issues from "#client/extract-issues";
|
|
2
|
+
function decode_pointer_segment(segment) {
|
|
3
|
+
// decode JSON Pointer: ~1 -> /, ~0 -> ~
|
|
4
|
+
return segment.replace(/~1/g, "/").replace(/~0/g, "~");
|
|
5
|
+
}
|
|
6
|
+
function pointer_to_fieldname(path) {
|
|
7
|
+
// if server didn't send a pointer, assume it's already a field name
|
|
8
|
+
if (!path.startsWith("/"))
|
|
9
|
+
return path;
|
|
10
|
+
// root pointer "" is handled before calling this
|
|
11
|
+
// "/" is not a valid root pointer, but treat as form-level
|
|
12
|
+
if (path === "/")
|
|
13
|
+
return "";
|
|
14
|
+
const segments = path.split("/").slice(1).map(decode_pointer_segment);
|
|
15
|
+
if (segments.length === 0 || segments[0] === "")
|
|
16
|
+
return "";
|
|
17
|
+
let name = segments[0];
|
|
18
|
+
for (let i = 1; i < segments.length; i++) {
|
|
19
|
+
name += `[${segments[i]}]`;
|
|
20
|
+
}
|
|
21
|
+
return name;
|
|
22
|
+
}
|
|
23
|
+
export default function createForm(init) {
|
|
24
|
+
const id = init.id ?? `form-${crypto.randomUUID()}`;
|
|
25
|
+
let snapshot = {
|
|
26
|
+
id,
|
|
27
|
+
submitting: false,
|
|
28
|
+
errors: { form: [], fields: {} },
|
|
29
|
+
};
|
|
30
|
+
const subscribers = new Set();
|
|
31
|
+
function publish() {
|
|
32
|
+
for (const s of subscribers)
|
|
33
|
+
s(snapshot);
|
|
34
|
+
}
|
|
35
|
+
function setSubmitting(submitting) {
|
|
36
|
+
snapshot = { ...snapshot, submitting };
|
|
37
|
+
publish();
|
|
38
|
+
}
|
|
39
|
+
function setErrors(issues) {
|
|
40
|
+
const byField = {};
|
|
41
|
+
const formErrors = [];
|
|
42
|
+
for (const issue of issues) {
|
|
43
|
+
const path = issue.path;
|
|
44
|
+
// no path or empty string -> form-level error
|
|
45
|
+
if (!path) {
|
|
46
|
+
formErrors.push(issue.message);
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
const key = pointer_to_fieldname(path);
|
|
50
|
+
// if normalizes to empty (e.g. "/"), treat as form-level
|
|
51
|
+
if (!key) {
|
|
52
|
+
formErrors.push(issue.message);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
(byField[key] ??= []).push(issue.message);
|
|
56
|
+
}
|
|
57
|
+
snapshot = {
|
|
58
|
+
...snapshot,
|
|
59
|
+
errors: {
|
|
60
|
+
form: formErrors,
|
|
61
|
+
fields: byField,
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
publish();
|
|
65
|
+
}
|
|
66
|
+
async function submit(event) {
|
|
67
|
+
if (event) {
|
|
68
|
+
event.preventDefault();
|
|
69
|
+
event.stopPropagation();
|
|
70
|
+
}
|
|
71
|
+
const form_element = event?.currentTarget ??
|
|
72
|
+
document.getElementById(id);
|
|
73
|
+
// no form element
|
|
74
|
+
if (!form_element)
|
|
75
|
+
return;
|
|
76
|
+
const method = init.method
|
|
77
|
+
?? form_element.method.toUpperCase()
|
|
78
|
+
?? "POST";
|
|
79
|
+
const url = init.url ?? form_element.action;
|
|
80
|
+
const form_data = new FormData(form_element);
|
|
81
|
+
setSubmitting(true);
|
|
82
|
+
try {
|
|
83
|
+
const response = await fetch(url, {
|
|
84
|
+
method,
|
|
85
|
+
body: form_data,
|
|
86
|
+
headers: init.headers,
|
|
87
|
+
});
|
|
88
|
+
if (response.ok) {
|
|
89
|
+
// on success: clear errors, let the app decide what to do next
|
|
90
|
+
// (redirect/reload)
|
|
91
|
+
snapshot = { ...snapshot, errors: { form: [], fields: {} } };
|
|
92
|
+
publish();
|
|
93
|
+
return;
|
|
94
|
+
}
|
|
95
|
+
const payload = await response.json();
|
|
96
|
+
const issues = extract_issues(payload); // all issues, all paths
|
|
97
|
+
setErrors(issues);
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
// network error
|
|
101
|
+
setErrors([{ message: error.message, path: "" }]);
|
|
102
|
+
}
|
|
103
|
+
finally {
|
|
104
|
+
setSubmitting(false);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function subscribe(fn) {
|
|
108
|
+
subscribers.add(fn);
|
|
109
|
+
fn(snapshot); // emit current
|
|
110
|
+
return () => subscribers.delete(fn);
|
|
111
|
+
}
|
|
112
|
+
function read() {
|
|
113
|
+
return snapshot;
|
|
114
|
+
}
|
|
115
|
+
return {
|
|
116
|
+
subscribe,
|
|
117
|
+
read,
|
|
118
|
+
submit,
|
|
119
|
+
get id() {
|
|
120
|
+
return snapshot.id;
|
|
121
|
+
},
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=create-form.js.map
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export default function extractIssues(payload, defaultPath = "") {
|
|
2
|
+
// scalar: { message, messages }
|
|
3
|
+
if ("messages" in payload) {
|
|
4
|
+
return payload.messages.map(m => ({
|
|
5
|
+
message: m,
|
|
6
|
+
// for forms, defaultPath is "", but Issue.path expects a JSONPointer
|
|
7
|
+
// so we cast here; form-level errors are handled separately anyway
|
|
8
|
+
path: defaultPath,
|
|
9
|
+
}));
|
|
10
|
+
}
|
|
11
|
+
// keyed: { "/field": { message, messages }, ... }
|
|
12
|
+
const issues = [];
|
|
13
|
+
for (const [path, bundle] of Object.entries(payload)) {
|
|
14
|
+
for (const message of bundle.messages) {
|
|
15
|
+
issues.push({ message, path: path });
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return issues;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=extract-issues.js.map
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type ClientData from "#client/Data";
|
|
2
|
-
import type Dict from "@rcompat/type
|
|
2
|
+
import type { Dict } from "@rcompat/type";
|
|
3
3
|
type Updater<T extends Dict> = (json: ClientData<T>, after?: () => void) => void;
|
|
4
4
|
declare const _default: <T extends Dict>(updater: Updater<T>) => void;
|
|
5
5
|
export default _default;
|
|
@@ -1,9 +1,8 @@
|
|
|
1
1
|
import storage from "#client/spa/storage";
|
|
2
|
-
|
|
3
|
-
const MULTIPART_FORM_DATA = "multipart/form-data";
|
|
2
|
+
import MIME from "@rcompat/http/mime";
|
|
4
3
|
const { document } = globalThis;
|
|
5
4
|
const headers = {
|
|
6
|
-
Accept: APPLICATION_JSON,
|
|
5
|
+
Accept: MIME.APPLICATION_JSON,
|
|
7
6
|
};
|
|
8
7
|
const get_by_id_or_name = (name) => document.getElementById(name) ?? document.getElementsByName(name)[0];
|
|
9
8
|
const scroll = globalThis.scrollTo;
|
|
@@ -56,7 +55,7 @@ async function refetch(input, init = {}, maxHops = 5) {
|
|
|
56
55
|
function is_json(response) {
|
|
57
56
|
const raw = response.headers.get("content-type") || "";
|
|
58
57
|
const mime = raw.split(";")[0].trim();
|
|
59
|
-
return mime === APPLICATION_JSON;
|
|
58
|
+
return mime === MIME.APPLICATION_JSON;
|
|
60
59
|
}
|
|
61
60
|
;
|
|
62
61
|
const handle = async (response, updater) => {
|
|
@@ -192,7 +191,7 @@ export default (updater) => {
|
|
|
192
191
|
const action = target.action ?? globalThis.location.pathname;
|
|
193
192
|
const url = new URL(action);
|
|
194
193
|
const data = new FormData(target);
|
|
195
|
-
const form = enctype === MULTIPART_FORM_DATA
|
|
194
|
+
const form = enctype === MIME.MULTIPART_FORM_DATA
|
|
196
195
|
? data
|
|
197
196
|
: new URLSearchParams(data);
|
|
198
197
|
submit(url.pathname, form, target.method, updater);
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import type ValidateInit from "#client/ValidateInit";
|
|
2
|
-
import type Dict from "@rcompat/type
|
|
3
|
-
import type JSONPointer from "@rcompat/type/JSONPointer";
|
|
4
|
-
import type JSONValue from "@rcompat/type/JSONValue";
|
|
2
|
+
import type { Dict, JSONPointer, JSONValue } from "@rcompat/type";
|
|
5
3
|
type Options<T> = {
|
|
6
4
|
headers?: Dict<string>;
|
|
7
5
|
map?: (v: T) => JSONValue;
|
|
@@ -14,4 +12,4 @@ export default function toValidated<T, R>(validateSignal: (init: ValidateInit<T>
|
|
|
14
12
|
put: (url: string, options?: Options<T>) => R;
|
|
15
13
|
};
|
|
16
14
|
export {};
|
|
17
|
-
//# sourceMappingURL=
|
|
15
|
+
//# sourceMappingURL=to-validated.d.ts.map
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import extract_issues from "#client/extract-issues";
|
|
2
|
+
function focus(issues, path) {
|
|
3
|
+
if (path === undefined) {
|
|
4
|
+
return issues;
|
|
5
|
+
}
|
|
6
|
+
const focused = issues.filter(i => i.path === path);
|
|
7
|
+
return focused.length ? focused : issues;
|
|
8
|
+
}
|
|
9
|
+
export default async function validateField(init, value) {
|
|
10
|
+
const headers = {
|
|
11
|
+
"content-type": "application/json",
|
|
12
|
+
...(init.headers ?? {}),
|
|
13
|
+
};
|
|
14
|
+
if (init.path !== undefined) {
|
|
15
|
+
headers["x-validate-path"] = init.path;
|
|
16
|
+
}
|
|
17
|
+
const body_value = init.map?.(value) ?? value;
|
|
18
|
+
let body;
|
|
19
|
+
try {
|
|
20
|
+
body = JSON.stringify(body_value);
|
|
21
|
+
}
|
|
22
|
+
catch {
|
|
23
|
+
const message = "Cannot serialize body. Provide a `map` that returns JSON.";
|
|
24
|
+
throw new Error(message);
|
|
25
|
+
}
|
|
26
|
+
const { method, url } = init;
|
|
27
|
+
const response = await fetch(url, { body, headers, method });
|
|
28
|
+
if (response.ok)
|
|
29
|
+
return;
|
|
30
|
+
const payload = await response.json();
|
|
31
|
+
const default_path = init.path ?? "";
|
|
32
|
+
const default_issues = [{ message: "Validation failed", path: default_path }];
|
|
33
|
+
const all_issues = extract_issues(payload, default_path);
|
|
34
|
+
const focused_issues = focus(all_issues, init.path);
|
|
35
|
+
const issues = focused_issues.length > 0 ? focused_issues : default_issues;
|
|
36
|
+
throw Object.assign(new Error(issues[0].message), {
|
|
37
|
+
issues,
|
|
38
|
+
name: "ValidationError",
|
|
39
|
+
});
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=validate-field.js.map
|
|
@@ -1,24 +1,5 @@
|
|
|
1
|
+
import AppFacade from "#app/Facade";
|
|
1
2
|
import schema from "#config/schema";
|
|
2
|
-
declare const _default: (
|
|
3
|
-
http: {
|
|
4
|
-
csp: Record<string, string[]> | undefined;
|
|
5
|
-
headers: Record<string, string> | undefined;
|
|
6
|
-
host: string;
|
|
7
|
-
port: number;
|
|
8
|
-
ssl: {
|
|
9
|
-
cert: string | import("@rcompat/fs/FileRef").default | undefined;
|
|
10
|
-
key: string | import("@rcompat/fs/FileRef").default | undefined;
|
|
11
|
-
};
|
|
12
|
-
static: {
|
|
13
|
-
root: string;
|
|
14
|
-
};
|
|
15
|
-
};
|
|
16
|
-
modules: import("../Module.js").default[] | undefined;
|
|
17
|
-
request: {
|
|
18
|
-
body: {
|
|
19
|
-
parse: boolean;
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
};
|
|
3
|
+
declare const _default: (input?: typeof schema.input) => AppFacade;
|
|
23
4
|
export default _default;
|
|
24
5
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,23 +1,27 @@
|
|
|
1
1
|
import Module from "#Module";
|
|
2
|
-
import FileRef from "@rcompat/fs/FileRef";
|
|
3
2
|
declare const _default: import("pema").ObjectType<{
|
|
4
3
|
http: import("pema").ObjectType<{
|
|
5
|
-
csp: import("pema").OptionalType<import("pema
|
|
6
|
-
headers: import("pema").OptionalType<import("pema
|
|
7
|
-
host: import("pema").DefaultType<import("pema
|
|
8
|
-
port: import("pema").DefaultType<import("pema
|
|
4
|
+
csp: import("pema").OptionalType<import("pema").RecordType<import("pema").StringType, import("pema").ArrayType<import("pema").StringType>>>;
|
|
5
|
+
headers: import("pema").OptionalType<import("pema").RecordType<import("pema").StringType, import("pema").StringType>>;
|
|
6
|
+
host: import("pema").DefaultType<import("pema").StringType, "localhost">;
|
|
7
|
+
port: import("pema").DefaultType<import("pema").UintType<"u32">, 6161>;
|
|
9
8
|
ssl: import("pema").ObjectType<{
|
|
10
|
-
cert: import("pema").OptionalType<import("pema
|
|
11
|
-
key: import("pema").OptionalType<import("pema
|
|
9
|
+
cert: import("pema").OptionalType<import("pema").UnionType<[import("pema").ConstructorType<typeof import("@rcompat/fs").FileRef>, import("pema").StringType]>>;
|
|
10
|
+
key: import("pema").OptionalType<import("pema").UnionType<[import("pema").ConstructorType<typeof import("@rcompat/fs").FileRef>, import("pema").StringType]>>;
|
|
12
11
|
}>;
|
|
13
12
|
static: import("pema").ObjectType<{
|
|
14
|
-
root: import("pema").DefaultType<import("pema
|
|
13
|
+
root: import("pema").DefaultType<import("pema").StringType, "/">;
|
|
15
14
|
}>;
|
|
16
15
|
}>;
|
|
16
|
+
livereload: import("pema").ObjectType<{
|
|
17
|
+
exclude: import("pema").OptionalType<import("pema").ArrayType<import("pema").StringType>>;
|
|
18
|
+
host: import("pema").OptionalType<import("pema").StringType>;
|
|
19
|
+
port: import("pema").OptionalType<import("pema").UintType<"u32">>;
|
|
20
|
+
}>;
|
|
17
21
|
modules: import("pema").OptionalType<import("pema").ArrayType<import("pema").ConstructorType<typeof Module>>>;
|
|
18
22
|
request: import("pema").ObjectType<{
|
|
19
23
|
body: import("pema").ObjectType<{
|
|
20
|
-
parse: import("pema").DefaultType<import("pema
|
|
24
|
+
parse: import("pema").DefaultType<import("pema").BooleanType, true>;
|
|
21
25
|
}>;
|
|
22
26
|
}>;
|
|
23
27
|
}>;
|
|
@@ -1,20 +1,25 @@
|
|
|
1
1
|
import Module from "#Module";
|
|
2
|
-
import
|
|
2
|
+
import fs from "@rcompat/fs";
|
|
3
3
|
import p from "pema";
|
|
4
4
|
export default p({
|
|
5
5
|
http: {
|
|
6
|
-
csp: p.
|
|
7
|
-
headers: p.
|
|
6
|
+
csp: p.dict(p.array(p.string)).optional(),
|
|
7
|
+
headers: p.dict().optional(),
|
|
8
8
|
host: p.string.default("localhost"),
|
|
9
9
|
port: p.uint.port().default(6161),
|
|
10
10
|
ssl: {
|
|
11
|
-
cert: p.union(FileRef, p.string).optional(),
|
|
12
|
-
key: p.union(FileRef, p.string).optional(),
|
|
11
|
+
cert: p.union(fs.FileRef, p.string).optional(),
|
|
12
|
+
key: p.union(fs.FileRef, p.string).optional(),
|
|
13
13
|
},
|
|
14
14
|
static: {
|
|
15
15
|
root: p.string.default("/"),
|
|
16
16
|
},
|
|
17
17
|
},
|
|
18
|
+
livereload: {
|
|
19
|
+
exclude: p.array(p.string).optional(),
|
|
20
|
+
host: p.string.optional(),
|
|
21
|
+
port: p.uint.port().optional(),
|
|
22
|
+
},
|
|
18
23
|
modules: p.array(p.constructor(Module)).optional(),
|
|
19
24
|
request: {
|
|
20
25
|
body: {
|
package/lib/private/cookie.d.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
declare const Schema: import("pema").ObjectType<{
|
|
2
|
-
httpOnly: import("pema").DefaultType<import("pema
|
|
3
|
-
path: import("pema").DefaultType<import("pema
|
|
4
|
-
sameSite: import("pema
|
|
5
|
-
secure: import("pema
|
|
6
|
-
maxAge: import("pema").OptionalType<import("pema
|
|
2
|
+
httpOnly: import("pema").DefaultType<import("pema").BooleanType, true>;
|
|
3
|
+
path: import("pema").DefaultType<import("pema").StringType, "/">;
|
|
4
|
+
sameSite: import("pema").UnionType<[import("pema").LiteralType<"Lax">, import("pema").LiteralType<"None">, import("pema").LiteralType<"Strict">]>;
|
|
5
|
+
secure: import("pema").BooleanType;
|
|
6
|
+
maxAge: import("pema").OptionalType<import("pema").NumberType<"f64">>;
|
|
7
7
|
}>;
|
|
8
8
|
type Options = typeof Schema.input;
|
|
9
9
|
export default function cookie(name: string, value: string, options: Options): string;
|
package/lib/private/cookie.js
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
path: string.default("/"),
|
|
10
|
-
sameSite: union("Lax", "None", "Strict"),
|
|
11
|
-
secure: boolean,
|
|
12
|
-
maxAge: number.optional(), // seconds
|
|
1
|
+
import assert from "@rcompat/assert";
|
|
2
|
+
import p from "pema";
|
|
3
|
+
const Schema = p({
|
|
4
|
+
httpOnly: p.boolean.default(true),
|
|
5
|
+
path: p.string.default("/"),
|
|
6
|
+
sameSite: p.union("Lax", "None", "Strict"),
|
|
7
|
+
secure: p.boolean,
|
|
8
|
+
maxAge: p.number.optional(), // seconds
|
|
13
9
|
});
|
|
14
10
|
export default function cookie(name, value, options) {
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
assert.string(name);
|
|
12
|
+
assert.string(value);
|
|
17
13
|
const parsed = Schema.parse(options);
|
|
18
14
|
const parts = [`${name}=${value}`];
|
|
19
15
|
parts.push(`Path=${parsed.path}`);
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type As from "#db/As";
|
|
2
|
+
import type Sort from "#db/Sort";
|
|
3
|
+
import type With from "#db/With";
|
|
4
|
+
import type { Dict, MaybePromise } from "@rcompat/type";
|
|
5
|
+
import type { StoreSchema } from "pema";
|
|
6
|
+
export default interface DB {
|
|
7
|
+
schema: {
|
|
8
|
+
create(as: As, schema: StoreSchema): MaybePromise<void>;
|
|
9
|
+
delete(name: string): MaybePromise<void>;
|
|
10
|
+
};
|
|
11
|
+
close(): MaybePromise<void>;
|
|
12
|
+
create<O extends Dict>(as: As, record: Dict): MaybePromise<O>;
|
|
13
|
+
read(as: As, args: {
|
|
14
|
+
count: true;
|
|
15
|
+
where: Dict;
|
|
16
|
+
with?: never;
|
|
17
|
+
}): MaybePromise<number>;
|
|
18
|
+
read(as: As, args: {
|
|
19
|
+
where: Dict;
|
|
20
|
+
fields?: string[];
|
|
21
|
+
limit?: number;
|
|
22
|
+
sort?: Sort;
|
|
23
|
+
with?: With;
|
|
24
|
+
}): MaybePromise<Dict[]>;
|
|
25
|
+
update(as: As, args: {
|
|
26
|
+
set: Dict;
|
|
27
|
+
where: Dict;
|
|
28
|
+
}): MaybePromise<number>;
|
|
29
|
+
delete(as: As, args: {
|
|
30
|
+
where: Dict;
|
|
31
|
+
}): MaybePromise<number>;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=DB.d.ts.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type DataKey from "#db/DataKey";
|
|
2
|
+
import type { DataType } from "pema";
|
|
3
|
+
type Scalar = DataType[DataKey] | null;
|
|
4
|
+
type OperatorObject = Partial<{
|
|
5
|
+
$like: string;
|
|
6
|
+
$ilike: string;
|
|
7
|
+
$gt: number | bigint;
|
|
8
|
+
$gte: number | bigint;
|
|
9
|
+
$lt: number | bigint;
|
|
10
|
+
$lte: number | bigint;
|
|
11
|
+
$before: Date;
|
|
12
|
+
$after: Date;
|
|
13
|
+
$ne: DataType[DataKey];
|
|
14
|
+
}>;
|
|
15
|
+
type DataValue = Scalar | OperatorObject;
|
|
16
|
+
export type { DataValue as default };
|
|
17
|
+
//# sourceMappingURL=DataValue.d.ts.map
|