@effect-app/infra 0.198.1 → 0.199.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/CHANGELOG.md +26 -0
- package/_cjs/RequestContext.cjs +14 -9
- package/_cjs/RequestContext.cjs.map +1 -1
- package/_cjs/_ext/Array.cjs +3 -7
- package/_cjs/_ext/Array.cjs.map +1 -1
- package/_cjs/api/reportError.cjs +3 -6
- package/_cjs/api/reportError.cjs.map +1 -1
- package/_cjs/api/routing/base.cjs +27 -61
- package/_cjs/api/routing/base.cjs.map +1 -1
- package/_cjs/api/routing/defaultErrorHandler.cjs +14 -21
- package/_cjs/api/routing/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/routing/makeRequestHandler.cjs +44 -51
- package/_cjs/api/routing/makeRequestHandler.cjs.map +1 -1
- package/_cjs/api/routing/match.cjs +6 -13
- package/_cjs/api/routing/match.cjs.map +1 -1
- package/_cjs/api/{express → routing}/schema/jwt.cjs +3 -4
- package/_cjs/api/routing/schema/jwt.cjs.map +1 -0
- package/_cjs/api/routing/schema/routing.cjs +136 -0
- package/_cjs/api/routing/schema/routing.cjs.map +1 -0
- package/_cjs/api/setupRequest.cjs +16 -22
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/errorReporter.cjs +16 -17
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/errors.cjs +2 -4
- package/_cjs/errors.cjs.map +1 -1
- package/_cjs/filter/types/path/index.cjs +0 -2
- package/_cjs/filter/types/path/index.cjs.map +1 -1
- package/_cjs/filter.cjs +35 -0
- package/_cjs/filter.cjs.map +1 -1
- package/_cjs/logger/jsonLogger.cjs +9 -15
- package/_cjs/logger/jsonLogger.cjs.map +1 -1
- package/_cjs/logger/logFmtLogger.cjs +7 -11
- package/_cjs/logger/logFmtLogger.cjs.map +1 -1
- package/_cjs/logger/shared.cjs +6 -8
- package/_cjs/logger/shared.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +9 -12
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs +9 -16
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +5 -8
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Emailer/service.cjs +2 -4
- package/_cjs/services/Emailer/service.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +29 -42
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs +15 -15
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/QueueMaker/errors.cjs +8 -12
- package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +27 -33
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +31 -40
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/service.cjs +7 -9
- package/_cjs/services/QueueMaker/service.cjs.map +1 -1
- package/_cjs/services/Repository/dsl.cjs +11 -14
- package/_cjs/services/Repository/dsl.cjs.map +1 -1
- package/_cjs/services/Repository/ext.cjs +62 -71
- package/_cjs/services/Repository/ext.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +171 -169
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +17 -23
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_cjs/services/Store/ContextMapContainer.cjs +10 -16
- package/_cjs/services/Store/ContextMapContainer.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos/query.cjs +5 -9
- package/_cjs/services/Store/Cosmos/query.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +58 -68
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +34 -36
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +55 -65
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.cjs +2 -4
- package/_cjs/services/Store/codeFilter.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.test.cjs +13 -12
- package/_cjs/services/Store/codeFilter.test.cjs.map +1 -1
- package/_cjs/services/Store/filterApi/query.cjs +2 -4
- package/_cjs/services/Store/filterApi/query.cjs.map +1 -1
- package/_cjs/services/Store/index.cjs +6 -9
- package/_cjs/services/Store/index.cjs.map +1 -1
- package/_cjs/services/Store/service.cjs +5 -7
- package/_cjs/services/Store/service.cjs.map +1 -1
- package/_cjs/services/Store/utils.cjs +16 -20
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/_cjs/services/query.cjs +4 -2
- package/_cjs/services/query.cjs.map +1 -1
- package/_cjs/test.arbs.cjs +3 -4
- package/_cjs/test.arbs.cjs.map +1 -1
- package/dist/RequestContext.d.ts +20 -20
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/RequestContext.js +15 -8
- package/dist/_ext/Array.d.ts +2 -3
- package/dist/_ext/Array.d.ts.map +1 -1
- package/dist/_ext/Array.js +5 -5
- package/dist/api/reportError.d.ts +5 -5
- package/dist/api/reportError.d.ts.map +1 -1
- package/dist/api/reportError.js +6 -6
- package/dist/api/routing/base.d.ts +11 -15
- package/dist/api/routing/base.d.ts.map +1 -1
- package/dist/api/routing/base.js +48 -67
- package/dist/api/routing/defaultErrorHandler.d.ts +4 -6
- package/dist/api/routing/defaultErrorHandler.d.ts.map +1 -1
- package/dist/api/routing/defaultErrorHandler.js +26 -28
- package/dist/api/routing/makeRequestHandler.d.ts +6 -7
- package/dist/api/routing/makeRequestHandler.d.ts.map +1 -1
- package/dist/api/routing/makeRequestHandler.js +69 -59
- package/dist/api/routing/match.d.ts +7 -8
- package/dist/api/routing/match.d.ts.map +1 -1
- package/dist/api/routing/match.js +7 -11
- package/dist/api/routing/schema/jwt.d.ts +4 -0
- package/dist/api/routing/schema/jwt.d.ts.map +1 -0
- package/dist/api/routing/schema/jwt.js +11 -0
- package/dist/api/{express → routing}/schema/routing.d.ts +2 -2
- package/dist/api/routing/schema/routing.d.ts.map +1 -0
- package/dist/api/routing/schema/routing.js +123 -0
- package/dist/api/routing.js +3 -1
- package/dist/api/setupRequest.d.ts +3 -5
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +20 -24
- package/dist/errorReporter.d.ts +4 -4
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +20 -17
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +3 -3
- package/dist/filter/types/path/index.d.ts +2 -2
- package/dist/filter/types/path/index.d.ts.map +1 -1
- package/dist/filter/types/path/index.js +2 -3
- package/dist/filter/types.js +2 -1
- package/dist/filter.d.ts.map +1 -1
- package/dist/filter.js +36 -1
- package/dist/logger/jsonLogger.d.ts +2 -1
- package/dist/logger/jsonLogger.d.ts.map +1 -1
- package/dist/logger/jsonLogger.js +9 -13
- package/dist/logger/logFmtLogger.d.ts +2 -1
- package/dist/logger/logFmtLogger.d.ts.map +1 -1
- package/dist/logger/logFmtLogger.js +9 -11
- package/dist/logger/shared.d.ts +2 -1
- package/dist/logger/shared.d.ts.map +1 -1
- package/dist/logger/shared.js +7 -9
- package/dist/rateLimit.d.ts +7 -10
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +17 -16
- package/dist/services/Emailer/Sendgrid.d.ts +1 -2
- package/dist/services/Emailer/Sendgrid.d.ts.map +1 -1
- package/dist/services/Emailer/Sendgrid.js +16 -20
- package/dist/services/Emailer/fake.d.ts +2 -2
- package/dist/services/Emailer/fake.d.ts.map +1 -1
- package/dist/services/Emailer/fake.js +10 -8
- package/dist/services/Emailer/service.d.ts +7 -10
- package/dist/services/Emailer/service.d.ts.map +1 -1
- package/dist/services/Emailer/service.js +3 -3
- package/dist/services/Operations/live.d.ts +2 -3
- package/dist/services/Operations/live.d.ts.map +1 -1
- package/dist/services/Operations/live.js +44 -51
- package/dist/services/Operations/service.d.ts +14 -19
- package/dist/services/Operations/service.d.ts.map +1 -1
- package/dist/services/Operations/service.js +23 -28
- package/dist/services/QueueMaker/errors.d.ts +5 -7
- package/dist/services/QueueMaker/errors.d.ts.map +1 -1
- package/dist/services/QueueMaker/errors.js +11 -11
- package/dist/services/QueueMaker/memQueue.d.ts +6 -9
- package/dist/services/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/memQueue.js +37 -39
- package/dist/services/QueueMaker/sbqueue.d.ts +6 -9
- package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/sbqueue.js +41 -39
- package/dist/services/QueueMaker/service.d.ts +2 -4
- package/dist/services/QueueMaker/service.d.ts.map +1 -1
- package/dist/services/QueueMaker/service.js +8 -8
- package/dist/services/Repository/dsl.d.ts +8 -10
- package/dist/services/Repository/dsl.d.ts.map +1 -1
- package/dist/services/Repository/dsl.js +12 -13
- package/dist/services/Repository/ext.d.ts +34 -62
- package/dist/services/Repository/ext.d.ts.map +1 -1
- package/dist/services/Repository/ext.js +59 -70
- package/dist/services/RepositoryBase.d.ts +41 -47
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +182 -194
- package/dist/services/RequestContextContainer.d.ts +13 -21
- package/dist/services/RequestContextContainer.d.ts.map +1 -1
- package/dist/services/RequestContextContainer.js +21 -25
- package/dist/services/Store/ContextMapContainer.d.ts +11 -18
- package/dist/services/Store/ContextMapContainer.d.ts.map +1 -1
- package/dist/services/Store/ContextMapContainer.js +17 -18
- package/dist/services/Store/Cosmos/query.d.ts +3 -2
- package/dist/services/Store/Cosmos/query.d.ts.map +1 -1
- package/dist/services/Store/Cosmos/query.js +10 -11
- package/dist/services/Store/Cosmos.d.ts +2 -3
- package/dist/services/Store/Cosmos.d.ts.map +1 -1
- package/dist/services/Store/Cosmos.js +107 -90
- package/dist/services/Store/Disk.d.ts +4 -4
- package/dist/services/Store/Disk.d.ts.map +1 -1
- package/dist/services/Store/Disk.js +54 -50
- package/dist/services/Store/Memory.d.ts +6 -8
- package/dist/services/Store/Memory.d.ts.map +1 -1
- package/dist/services/Store/Memory.js +93 -89
- package/dist/services/Store/codeFilter.d.ts.map +1 -1
- package/dist/services/Store/codeFilter.js +3 -3
- package/dist/services/Store/codeFilter.test.d.ts.map +1 -1
- package/dist/services/Store/filterApi/query.d.ts +1 -1
- package/dist/services/Store/filterApi/query.d.ts.map +1 -1
- package/dist/services/Store/filterApi/query.js +3 -3
- package/dist/services/Store/index.d.ts +1 -2
- package/dist/services/Store/index.d.ts.map +1 -1
- package/dist/services/Store/index.js +7 -8
- package/dist/services/Store/service.d.ts +20 -23
- package/dist/services/Store/service.d.ts.map +1 -1
- package/dist/services/Store/service.js +6 -6
- package/dist/services/Store/utils.d.ts +3 -3
- package/dist/services/Store/utils.d.ts.map +1 -1
- package/dist/services/Store/utils.js +26 -28
- package/dist/services/query.d.ts +6 -6
- package/dist/services/query.d.ts.map +1 -1
- package/dist/services/query.js +5 -4
- package/dist/test.arbs.d.ts +0 -2
- package/dist/test.arbs.d.ts.map +1 -1
- package/dist/test.arbs.js +3 -4
- package/package.json +28 -168
- package/src/RequestContext.ts +1 -0
- package/src/_ext/Array.ts +5 -2
- package/src/api/reportError.ts +14 -10
- package/src/api/routing/base.ts +77 -110
- package/src/api/routing/defaultErrorHandler.ts +64 -54
- package/src/api/routing/makeRequestHandler.ts +165 -135
- package/src/api/routing/match.ts +14 -8
- package/src/api/{express → routing}/schema/jwt.ts +6 -5
- package/src/api/{express → routing}/schema/routing.ts +2 -1
- package/src/api/setupRequest.ts +30 -24
- package/src/errorReporter.ts +12 -11
- package/src/errors.ts +1 -0
- package/src/filter/types/path/index.ts +2 -2
- package/src/logger/jsonLogger.ts +6 -5
- package/src/logger/logFmtLogger.ts +4 -5
- package/src/logger/shared.ts +4 -3
- package/src/rateLimit.ts +37 -34
- package/src/services/Emailer/Sendgrid.ts +12 -10
- package/src/services/Emailer/fake.ts +7 -4
- package/src/services/Emailer/service.ts +4 -1
- package/src/services/Operations/live.ts +66 -59
- package/src/services/Operations/service.ts +41 -34
- package/src/services/QueueMaker/errors.ts +15 -11
- package/src/services/QueueMaker/memQueue.ts +59 -40
- package/src/services/QueueMaker/sbqueue.ts +54 -33
- package/src/services/QueueMaker/service.ts +7 -6
- package/src/services/Repository/dsl.ts +12 -8
- package/src/services/Repository/ext.ts +52 -44
- package/src/services/RepositoryBase.ts +278 -240
- package/src/services/RequestContextContainer.ts +30 -18
- package/src/services/Store/ContextMapContainer.ts +26 -13
- package/src/services/Store/Cosmos/query.ts +17 -11
- package/src/services/Store/Cosmos.ts +209 -168
- package/src/services/Store/Disk.ts +69 -53
- package/src/services/Store/Memory.ts +138 -97
- package/src/services/Store/{Redis.ts → Redis.ts.bak} +7 -5
- package/src/services/Store/codeFilter.test.ts +61 -36
- package/src/services/Store/codeFilter.ts +1 -0
- package/src/services/Store/filterApi/query.ts +1 -0
- package/src/services/Store/index.ts +7 -6
- package/src/services/Store/service.ts +4 -1
- package/src/services/Store/utils.ts +25 -23
- package/src/services/query.ts +3 -3
- package/src/services/simpledb/{cosmosdb.ts → cosmosdb.ts.bak} +1 -0
- package/src/services/simpledb/{diskdb.ts → diskdb.ts.bak} +2 -1
- package/src/services/simpledb/{memdb.ts → memdb.ts.bak} +3 -2
- package/src/services/simpledb/{mongodb.ts → mongodb.ts.bak} +1 -0
- package/src/services/simpledb/{redisdb.ts → redisdb.ts.bak} +17 -14
- package/src/services/simpledb/{shared.ts → shared.ts.bak} +2 -1
- package/src/services/simpledb/{simpledb.ts → simpledb.ts.bak} +6 -2
- package/tsconfig.json +4 -21
- package/tsconfig.json.bak +0 -4
- package/_cjs/_global.cjs +0 -6
- package/_cjs/_global.cjs.map +0 -1
- package/_cjs/_global.ext.cjs +0 -5
- package/_cjs/_global.ext.cjs.map +0 -1
- package/_cjs/_global.schema.cjs +0 -5
- package/_cjs/_global.schema.cjs.map +0 -1
- package/_cjs/api/defaultErrorHandler.cjs +0 -37
- package/_cjs/api/defaultErrorHandler.cjs.map +0 -1
- package/_cjs/api/express/schema/jwt.cjs.map +0 -1
- package/_cjs/api/express/schema/routing.cjs +0 -23
- package/_cjs/api/express/schema/routing.cjs.map +0 -1
- package/_cjs/api/http.cjs +0 -42
- package/_cjs/api/http.cjs.map +0 -1
- package/_cjs/services/Store/Redis.cjs +0 -73
- package/_cjs/services/Store/Redis.cjs.map +0 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +0 -109
- package/_cjs/services/simpledb/cosmosdb.cjs.map +0 -1
- package/_cjs/services/simpledb/diskdb.cjs +0 -125
- package/_cjs/services/simpledb/diskdb.cjs.map +0 -1
- package/_cjs/services/simpledb/index.cjs +0 -38
- package/_cjs/services/simpledb/index.cjs.map +0 -1
- package/_cjs/services/simpledb/memdb.cjs +0 -72
- package/_cjs/services/simpledb/memdb.cjs.map +0 -1
- package/_cjs/services/simpledb/mongodb.cjs +0 -99
- package/_cjs/services/simpledb/mongodb.cjs.map +0 -1
- package/_cjs/services/simpledb/redisdb.cjs +0 -135
- package/_cjs/services/simpledb/redisdb.cjs.map +0 -1
- package/_cjs/services/simpledb/shared.cjs +0 -79
- package/_cjs/services/simpledb/shared.cjs.map +0 -1
- package/_cjs/services/simpledb/simpledb.cjs +0 -85
- package/_cjs/services/simpledb/simpledb.cjs.map +0 -1
- package/dist/_global.d.ts +0 -10
- package/dist/_global.d.ts.map +0 -1
- package/dist/_global.ext.d.ts +0 -34
- package/dist/_global.ext.d.ts.map +0 -1
- package/dist/_global.ext.js +0 -6
- package/dist/_global.js +0 -12
- package/dist/_global.schema.d.ts +0 -6
- package/dist/_global.schema.d.ts.map +0 -1
- package/dist/_global.schema.js +0 -9
- package/dist/api/defaultErrorHandler.d.ts +0 -6
- package/dist/api/defaultErrorHandler.d.ts.map +0 -1
- package/dist/api/defaultErrorHandler.js +0 -34
- package/dist/api/express/schema/jwt.d.ts +0 -6
- package/dist/api/express/schema/jwt.d.ts.map +0 -1
- package/dist/api/express/schema/jwt.js +0 -11
- package/dist/api/express/schema/routing.d.ts.map +0 -1
- package/dist/api/express/schema/routing.js +0 -10
- package/dist/api/http.d.ts +0 -16
- package/dist/api/http.d.ts.map +0 -1
- package/dist/api/http.js +0 -12
- package/dist/services/Store/Redis.d.ts +0 -6
- package/dist/services/Store/Redis.d.ts.map +0 -1
- package/dist/services/Store/Redis.js +0 -76
- package/dist/services/simpledb/cosmosdb.d.ts +0 -14
- package/dist/services/simpledb/cosmosdb.d.ts.map +0 -1
- package/dist/services/simpledb/cosmosdb.js +0 -103
- package/dist/services/simpledb/diskdb.d.ts +0 -12
- package/dist/services/simpledb/diskdb.d.ts.map +0 -1
- package/dist/services/simpledb/diskdb.js +0 -109
- package/dist/services/simpledb/index.d.ts +0 -7
- package/dist/services/simpledb/index.d.ts.map +0 -1
- package/dist/services/simpledb/index.js +0 -7
- package/dist/services/simpledb/memdb.d.ts +0 -11
- package/dist/services/simpledb/memdb.d.ts.map +0 -1
- package/dist/services/simpledb/memdb.js +0 -58
- package/dist/services/simpledb/mongodb.d.ts +0 -13
- package/dist/services/simpledb/mongodb.d.ts.map +0 -1
- package/dist/services/simpledb/mongodb.js +0 -68
- package/dist/services/simpledb/redisdb.d.ts +0 -35
- package/dist/services/simpledb/redisdb.d.ts.map +0 -1
- package/dist/services/simpledb/redisdb.js +0 -126
- package/dist/services/simpledb/shared.d.ts +0 -87
- package/dist/services/simpledb/shared.d.ts.map +0 -1
- package/dist/services/simpledb/shared.js +0 -52
- package/dist/services/simpledb/simpledb.d.ts +0 -23
- package/dist/services/simpledb/simpledb.d.ts.map +0 -1
- package/dist/services/simpledb/simpledb.js +0 -69
- package/src/_global.ext.ts +0 -36
- package/src/_global.schema.ts +0 -10
- package/src/_global.ts +0 -14
- package/src/api/defaultErrorHandler.ts +0 -59
- package/src/api/express/makeJsonSchema.test.ts.bak +0 -76
- package/src/api/express/makeJsonSchema.ts.bak +0 -166
- package/src/api/express/makeOpenApiSpecs.ts.bak +0 -62
- package/src/api/http.ts +0 -26
- package/tsplus.config.json +0 -9
- /package/src/services/simpledb/{index.ts → index.ts.bak} +0 -0
|
@@ -1,115 +1,124 @@
|
|
|
1
|
-
import
|
|
2
|
-
import * as tsplus_module_2 from "effect-app/schema";
|
|
3
|
-
import * as tsplus_module_3 from "@effect/schema/Schema";
|
|
4
|
-
import * as tsplus_module_4 from "effect/Effect";
|
|
5
|
-
import * as tsplus_module_5 from "@effect-app/core/utils";
|
|
6
|
-
import * as tsplus_module_6 from "@effect/platform/Http/ServerResponse";
|
|
7
|
-
import * as tsplus_module_7 from "@effect/platform/Http/Body";
|
|
8
|
-
import * as tsplus_module_8 from "@effect-app/infra/api/setupRequest";
|
|
9
|
-
import { pretty } from "@effect-app/core/utils";
|
|
1
|
+
import { copy, pretty } from "@effect-app/core/utils";
|
|
10
2
|
import { snipString } from "@effect-app/infra/api/util";
|
|
11
3
|
import { reportError } from "@effect-app/infra/errorReporter";
|
|
12
|
-
import {
|
|
4
|
+
import { Effect, FiberRef, Option, S } from "effect-app";
|
|
5
|
+
import { HttpBody, HttpRouter, HttpServerRequest, HttpServerResponse } from "effect-app/http";
|
|
6
|
+
import { NonEmptyString255 } from "effect-app/schema";
|
|
7
|
+
import { updateRequestContext } from "../setupRequest.js";
|
|
13
8
|
import { makeRequestParsers, parseRequestParams } from "./base.js";
|
|
14
|
-
export const RequestSettings =
|
|
9
|
+
export const RequestSettings = FiberRef.unsafeMake({
|
|
15
10
|
verbose: false
|
|
16
11
|
});
|
|
17
12
|
export function makeRequestHandler(handler, errorHandler, middlewareLayer) {
|
|
18
13
|
const { Request, Response, h: handle } = handler;
|
|
19
|
-
const response = Response ? Response :
|
|
14
|
+
const response = Response ? Response : S.void;
|
|
20
15
|
const resp = response;
|
|
21
16
|
// TODO: consider if the alternative of using the struct schema is perhaps just better.
|
|
22
17
|
const encoder = "struct" in resp && resp.struct
|
|
23
|
-
?
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
18
|
+
? S.encode(resp.struct)
|
|
19
|
+
// ? (i: any) => {
|
|
20
|
+
// if (i instanceof (response as any)) return S.encodeSync(response)(i)
|
|
21
|
+
// else return S.encodeSync(response)(new (response as any)(i))
|
|
22
|
+
// }
|
|
23
|
+
: S.encode(resp);
|
|
29
24
|
// const encodeResponse = adaptResponse
|
|
30
25
|
// ? (req: ReqA) => Encoder.for(adaptResponse(req))
|
|
31
26
|
// : () => encoder
|
|
32
27
|
const requestParsers = makeRequestParsers(Request);
|
|
33
28
|
const parseRequest = parseRequestParams(requestParsers);
|
|
34
|
-
const getParams =
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
29
|
+
const getParams = Effect.map(Effect
|
|
30
|
+
.all({
|
|
31
|
+
rcx: HttpRouter.RouteContext,
|
|
32
|
+
req: Effect.flatMap(HttpServerRequest.ServerRequest, (req) => req.json.pipe(Effect.map((body) => ({ body, headers: req.headers }))))
|
|
33
|
+
}), ({ rcx, req }) => ({
|
|
39
34
|
params: rcx.params,
|
|
40
35
|
query: rcx.searchParams,
|
|
41
36
|
body: req.body,
|
|
42
37
|
headers: req.headers,
|
|
43
38
|
cookies: {} // req.cookies
|
|
44
39
|
}));
|
|
45
|
-
return
|
|
46
|
-
|
|
47
|
-
const
|
|
48
|
-
|
|
40
|
+
return Effect
|
|
41
|
+
.gen(function* ($) {
|
|
42
|
+
const req = yield* $(HttpServerRequest.ServerRequest);
|
|
43
|
+
const res = HttpServerResponse
|
|
44
|
+
.empty()
|
|
45
|
+
.pipe((_) => req.method === "GET" ? HttpServerResponse.setHeader(_, "Cache-Control", "no-store") : _);
|
|
49
46
|
const pars = yield* $(getParams);
|
|
50
|
-
const settings = yield* $(
|
|
47
|
+
const settings = yield* $(FiberRef.get(RequestSettings));
|
|
51
48
|
const eff =
|
|
52
49
|
// TODO: we don;t have access to user id here cause context is not yet created
|
|
53
|
-
|
|
50
|
+
Effect
|
|
51
|
+
.logInfo("Incoming request")
|
|
52
|
+
.pipe(Effect.annotateLogs({
|
|
54
53
|
method: req.method,
|
|
55
54
|
path: req.originalUrl,
|
|
56
55
|
...(settings.verbose
|
|
57
56
|
? {
|
|
58
|
-
reqPath:
|
|
59
|
-
reqQuery:
|
|
57
|
+
reqPath: pretty(pars.params),
|
|
58
|
+
reqQuery: pretty(pars.query),
|
|
60
59
|
reqBody: pretty(pars.body),
|
|
61
60
|
reqCookies: pretty(pars.cookies),
|
|
62
61
|
reqHeaders: pretty(pars.headers)
|
|
63
62
|
}
|
|
64
63
|
: undefined)
|
|
65
|
-
})
|
|
66
|
-
.andThen(
|
|
64
|
+
}), Effect
|
|
65
|
+
.andThen(Effect.suspend(() => {
|
|
67
66
|
const handleRequest = parseRequest(pars)
|
|
68
|
-
.map(({ body, path, query }) => {
|
|
67
|
+
.pipe(Effect.map(({ body, path, query }) => {
|
|
69
68
|
const hn = {
|
|
70
|
-
...body.
|
|
71
|
-
...query.
|
|
72
|
-
...path.
|
|
69
|
+
...body.pipe(Option.getOrUndefined) ?? {},
|
|
70
|
+
...query.pipe(Option.getOrUndefined) ?? {},
|
|
71
|
+
...path.pipe(Option.getOrUndefined) ?? {}
|
|
73
72
|
};
|
|
74
73
|
return hn;
|
|
75
|
-
})
|
|
76
|
-
.flatMap((parsedReq) =>
|
|
77
|
-
.
|
|
78
|
-
.
|
|
74
|
+
}), Effect
|
|
75
|
+
.flatMap((parsedReq) => handle(parsedReq)
|
|
76
|
+
.pipe(Effect.provideService(handler.Request.Tag, parsedReq), Effect
|
|
77
|
+
.flatMap(encoder), Effect
|
|
78
|
+
.map((r) => res.pipe(HttpServerResponse.setBody(HttpBody.unsafeJson(r)), HttpServerResponse.setStatus(r === undefined ? 204 : 200))))));
|
|
79
79
|
// Commands should not be interruptable.
|
|
80
|
-
const r = req.method !== "GET" ?
|
|
80
|
+
const r = req.method !== "GET" ? Effect.uninterruptible(handleRequest) : handleRequest; // .instrument("Performance.RequestResponse")
|
|
81
81
|
const r2 = middlewareLayer
|
|
82
|
-
?
|
|
82
|
+
? Effect.provide(r, middlewareLayer)
|
|
83
83
|
// PR is not relevant here
|
|
84
84
|
: r;
|
|
85
85
|
return errorHandler(req, res, r2);
|
|
86
|
-
})),
|
|
87
|
-
.
|
|
86
|
+
})), Effect
|
|
87
|
+
.catchAllCause((cause) => Effect
|
|
88
|
+
.sync(() => HttpServerResponse.setStatus(res, 500))
|
|
89
|
+
.pipe(Effect
|
|
90
|
+
.tap((res) => Effect
|
|
91
|
+
.all([
|
|
88
92
|
reportError("request")(cause, {
|
|
89
93
|
path: req.originalUrl,
|
|
90
94
|
method: req.method
|
|
91
95
|
}),
|
|
92
|
-
|
|
96
|
+
Effect.suspend(() => {
|
|
93
97
|
const headers = res.headers;
|
|
94
|
-
return
|
|
98
|
+
return Effect
|
|
99
|
+
.logError("Finished request", cause)
|
|
100
|
+
.pipe(Effect.annotateLogs({
|
|
95
101
|
method: req.method,
|
|
96
102
|
path: req.originalUrl,
|
|
97
103
|
statusCode: res.status.toString(),
|
|
98
|
-
reqPath:
|
|
99
|
-
reqQuery:
|
|
104
|
+
reqPath: pretty(pars.params),
|
|
105
|
+
reqQuery: pretty(pars.query),
|
|
100
106
|
reqBody: pretty(pars.body),
|
|
101
107
|
reqCookies: pretty(pars.cookies),
|
|
102
108
|
reqHeaders: pretty(pars.headers),
|
|
103
|
-
resHeaders:
|
|
109
|
+
resHeaders: pretty(Object
|
|
104
110
|
.entries(headers)
|
|
105
111
|
.reduce((prev, [key, value]) => {
|
|
106
112
|
prev[key] = value && typeof value === "string" ? snipString(value) : value;
|
|
107
113
|
return prev;
|
|
108
|
-
}, {}))
|
|
109
|
-
});
|
|
114
|
+
}, {}))
|
|
115
|
+
}));
|
|
110
116
|
})
|
|
111
|
-
], { concurrency: "inherit" }))
|
|
112
|
-
.
|
|
117
|
+
], { concurrency: "inherit" })))
|
|
118
|
+
.pipe(Effect.tapErrorCause((cause) => Effect.sync(() => console.error("Error occurred while reporting error", cause))))), Effect
|
|
119
|
+
.tap((res) => Effect
|
|
120
|
+
.logInfo("Finished request")
|
|
121
|
+
.pipe(Effect.annotateLogs({
|
|
113
122
|
method: req.method,
|
|
114
123
|
path: req.originalUrl,
|
|
115
124
|
statusCode: res.status.toString(),
|
|
@@ -118,10 +127,11 @@ export function makeRequestHandler(handler, errorHandler, middlewareLayer) {
|
|
|
118
127
|
resHeaders: pretty(res.headers)
|
|
119
128
|
}
|
|
120
129
|
: undefined)
|
|
121
|
-
}));
|
|
130
|
+
}))));
|
|
122
131
|
return yield* $(eff);
|
|
123
|
-
})
|
|
124
|
-
|
|
125
|
-
|
|
132
|
+
})
|
|
133
|
+
.pipe((_) => updateRequestContext(_, copy((_) => ({
|
|
134
|
+
name: NonEmptyString255(handler.name)
|
|
135
|
+
}))));
|
|
126
136
|
}
|
|
127
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
137
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWFrZVJlcXVlc3RIYW5kbGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL21ha2VSZXF1ZXN0SGFuZGxlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxNQUFNLHdCQUF3QixDQUFBO0FBQ3JELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSw0QkFBNEIsQ0FBQTtBQUN2RCxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0saUNBQWlDLENBQUE7QUFLN0QsT0FBTyxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsTUFBTSxFQUFFLENBQUMsRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUV4RCxPQUFPLEVBQUUsUUFBUSxFQUFFLFVBQVUsRUFBRSxpQkFBaUIsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzdGLE9BQU8sRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXJELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLG9CQUFvQixDQUFBO0FBQ3pELE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxrQkFBa0IsRUFBRSxNQUFNLFdBQVcsQ0FBQTtBQUdsRSxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQUcsUUFBUSxDQUFDLFVBQVUsQ0FBQztJQUNqRCxPQUFPLEVBQUUsS0FBSztDQUNmLENBQUMsQ0FBQTtBQTBDRixNQUFNLFVBQVUsa0JBQWtCLENBa0JoQyxPQWFDLEVBQ0QsWUFJK0QsRUFDL0QsZUFBNEM7SUFZNUMsTUFBTSxFQUFFLE9BQU8sRUFBRSxRQUFRLEVBQUUsQ0FBQyxFQUFFLE1BQU0sRUFBRSxHQUFHLE9BQU8sQ0FBQTtJQUVoRCxNQUFNLFFBQVEsR0FBK0IsUUFBUSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUE7SUFDekUsTUFBTSxJQUFJLEdBQUcsUUFBZ0Us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
|
|
@@ -1,13 +1,12 @@
|
|
|
1
|
-
import { Ref } from "effect/Ref";
|
|
2
|
-
import { Effect } from "effect/Effect";
|
|
3
|
-
import { Scope } from "effect/Scope";
|
|
4
|
-
import { Layer } from "effect/Layer";
|
|
5
|
-
import { type RouteDescriptorAny } from "@effect-app/infra/api/express/schema/routing";
|
|
6
1
|
import type { ValidationError } from "@effect-app/infra/errors";
|
|
7
2
|
import type { StructFields } from "effect-app/schema";
|
|
8
|
-
import
|
|
3
|
+
import { type RouteDescriptorAny } from "./schema/routing.js";
|
|
4
|
+
import type { Ref, Scope } from "effect-app";
|
|
5
|
+
import { Context, Effect } from "effect-app";
|
|
6
|
+
import { HttpRouter } from "effect-app/http";
|
|
7
|
+
import type { HttpServerRequest, HttpServerResponse } from "effect-app/http";
|
|
9
8
|
import type { RequestHandler } from "./base.js";
|
|
10
9
|
import type { Middleware } from "./makeRequestHandler.js";
|
|
11
|
-
export declare const RouteDescriptors:
|
|
12
|
-
export declare function match<R, M, PathA extends StructFields, CookieA extends StructFields, QueryA extends StructFields, BodyA extends StructFields, HeaderA extends StructFields, ReqA extends PathA & QueryA & BodyA, ResA extends StructFields, ResE, MiddlewareE, PPath extends `/${string}`, R2, PR, RErr, CTX, Context, Config>(requestHandler: RequestHandler<R, M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, ResA, ResE, PPath, CTX, Context, Config>, errorHandler: <R>(req: HttpServerRequest, res: HttpServerResponse, r2: Effect<HttpServerResponse, ValidationError | MiddlewareE | ResE, R>) => Effect<HttpServerResponse, never, Exclude<RErr | R, HttpServerRequest |
|
|
10
|
+
export declare const RouteDescriptors: Context.Tag<Ref<RouteDescriptorAny[]>, Ref<RouteDescriptorAny[]>>;
|
|
11
|
+
export declare function match<R, M, PathA extends StructFields, CookieA extends StructFields, QueryA extends StructFields, BodyA extends StructFields, HeaderA extends StructFields, ReqA extends PathA & QueryA & BodyA, ResA extends StructFields, ResE, MiddlewareE, PPath extends `/${string}`, R2, PR, RErr, CTX, Context, Config>(requestHandler: RequestHandler<R, M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, ResA, ResE, PPath, CTX, Context, Config>, errorHandler: <R>(req: HttpServerRequest.ServerRequest, res: HttpServerResponse.ServerResponse, r2: Effect<HttpServerResponse.ServerResponse, ValidationError | MiddlewareE | ResE, R>) => Effect<HttpServerResponse.ServerResponse, never, Exclude<RErr | R, HttpServerRequest.ServerRequest | HttpRouter.RouteContext | Scope>>, middleware?: Middleware<R, M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, ResA, ResE, MiddlewareE, PPath, R2, PR, CTX, Context, Config>): Effect.Effect<HttpRouter.Route<import("../../services/RequestContextContainer.js").RequestContextContainer | import("../../services/Store/ContextMapContainer.js").ContextMapContainer | Exclude<R2, Scope.Scope | HttpServerRequest.ServerRequest | HttpRouter.RouteContext> | Exclude<RErr, Scope.Scope | HttpServerRequest.ServerRequest | HttpRouter.RouteContext> | Exclude<Exclude<Exclude<R, import("effect-app/utils").EnforceNonEmptyRecord<M>>, PR>, Scope.Scope | HttpServerRequest.ServerRequest | HttpRouter.RouteContext>, import("@effect/platform/Http/ServerError").RequestError>, never, never>;
|
|
13
12
|
//# sourceMappingURL=match.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../src/api/routing/match.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"match.d.ts","sourceRoot":"","sources":["../../../src/api/routing/match.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,KAAK,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AAE7D,OAAO,KAAK,EAAS,GAAG,EAAE,KAAK,EAAE,MAAM,YAAY,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAC5C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,KAAK,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAA;AAC5E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,WAAW,CAAA;AAE/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAA;AAEzD,eAAO,MAAM,gBAAgB,mEAA8E,CAAA;AAE3G,wBAAgB,KAAK,CACnB,CAAC,EACD,CAAC,EACD,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,EAC5B,MAAM,SAAS,YAAY,EAC3B,KAAK,SAAS,YAAY,EAC1B,OAAO,SAAS,YAAY,EAC5B,IAAI,SAAS,KAAK,GAAG,MAAM,GAAG,KAAK,EACnC,IAAI,SAAS,YAAY,EACzB,IAAI,EACJ,WAAW,EACX,KAAK,SAAS,IAAI,MAAM,EAAE,EAC1B,EAAE,EACF,EAAE,EACF,IAAI,EACJ,GAAG,EACH,OAAO,EACP,MAAM,EAEN,cAAc,EAAE,cAAc,CAC5B,CAAC,EACD,CAAC,EACD,KAAK,EACL,OAAO,EACP,MAAM,EACN,KAAK,EACL,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,KAAK,EACL,GAAG,EACH,OAAO,EACP,MAAM,CACP,EACD,YAAY,EAAE,CAAC,CAAC,EACd,GAAG,EAAE,iBAAiB,CAAC,aAAa,EACpC,GAAG,EAAE,kBAAkB,CAAC,cAAc,EACtC,EAAE,EAAE,MAAM,CAAC,kBAAkB,CAAC,cAAc,EAAE,eAAe,GAAG,WAAW,GAAG,IAAI,EAAE,CAAC,CAAC,KACnF,MAAM,CACT,kBAAkB,CAAC,cAAc,EACjC,KAAK,EACL,OAAO,CAAC,IAAI,GAAG,CAAC,EAAE,iBAAiB,CAAC,aAAa,GAAG,UAAU,CAAC,YAAY,GAAG,KAAK,CAAC,CACrF,EACD,UAAU,CAAC,EAAE,UAAU,CACrB,CAAC,EACD,CAAC,EACD,KAAK,EACL,OAAO,EACP,MAAM,EACN,KAAK,EACL,OAAO,EACP,IAAI,EACJ,IAAI,EACJ,IAAI,EACJ,WAAW,EACX,KAAK,EACL,EAAE,EACF,EAAE,EACF,GAAG,EACH,OAAO,EACP,MAAM,CACP,qlBA+CF"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import
|
|
4
|
-
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
5
|
-
/* eslint-disable @typescript-eslint/ban-types */
|
|
6
|
-
import "@effect-app/infra/api/express/schema/routing";
|
|
7
|
-
import "../http.js";
|
|
1
|
+
import "./schema/routing.js";
|
|
2
|
+
import { Context, Effect } from "effect-app";
|
|
3
|
+
import { HttpRouter } from "effect-app/http";
|
|
8
4
|
import { makeRequestHandler } from "./makeRequestHandler.js";
|
|
9
|
-
export const RouteDescriptors =
|
|
5
|
+
export const RouteDescriptors = Context.GenericTag("@services/RouteDescriptors");
|
|
10
6
|
export function match(requestHandler, errorHandler, middleware) {
|
|
11
7
|
let middlewareLayer = undefined;
|
|
12
8
|
if (middleware) {
|
|
@@ -14,11 +10,11 @@ export function match(requestHandler, errorHandler, middleware) {
|
|
|
14
10
|
requestHandler = handler; // todo
|
|
15
11
|
middlewareLayer = makeRequestLayer;
|
|
16
12
|
}
|
|
17
|
-
return
|
|
13
|
+
return Effect.gen(function* () {
|
|
18
14
|
// const rdesc = yield* $(RouteDescriptors.flatMap((_) => _.get))
|
|
19
15
|
const handler = makeRequestHandler(requestHandler, // one argument if no middleware, 2 if has middleware. TODO: clean this shit up
|
|
20
16
|
errorHandler, middlewareLayer);
|
|
21
|
-
const route =
|
|
17
|
+
const route = HttpRouter.makeRoute(requestHandler.Request.method, requestHandler.Request.path, handler);
|
|
22
18
|
// TODO
|
|
23
19
|
// rdesc.push(makeRouteDescriptor(
|
|
24
20
|
// requestHandler.Request.path,
|
|
@@ -28,4 +24,4 @@ export function match(requestHandler, errorHandler, middleware) {
|
|
|
28
24
|
return route;
|
|
29
25
|
});
|
|
30
26
|
}
|
|
31
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
27
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWF0Y2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYXBpL3JvdXRpbmcvbWF0Y2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsT0FBd0MscUJBQXFCLENBQUE7QUFHN0QsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDNUMsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBRzVDLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLHlCQUF5QixDQUFBO0FBRzVELE1BQU0sQ0FBQyxNQUFNLGdCQUFnQixHQUFHLE9BQU8sQ0FBQyxVQUFVLENBQTRCLDRCQUE0QixDQUFDLENBQUE7QUFFM0csTUFBTSxVQUFVLEtBQUssQ0FvQm5CLGNBZUMsRUFDRCxZQVFDLEVBQ0QsVUFrQkM7SUFFRCxJQUFJLGVBQWUsR0FBMkMsU0FBUyxDQUFBO0lBQ3ZFLElBQUksVUFBVSxFQUFFLENBQUM7UUFDZixNQUFNLEVBQUUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFBO1FBQ2hFLGNBQWMsR0FBRyxPQUFjLENBQUEsQ0FBQyxPQUFPO1FBQ3ZDLGVBQWUsR0FBRyxnQkFBZ0IsQ0FBQTtJQUNwQyxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztRQUN6QixpRUFBaUU7UUFFakUsTUFBTSxPQUFPLEdBQUcsa0JBQWtCLENBa0JoQyxjQUFxQixFQUFFLCtFQUErRTtRQUN0RyxZQUFZLEVBQ1osZUFBZSxDQUNoQixDQUFBO1FBRUQsTUFBTSxLQUFLLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FDaEMsY0FBYyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQzdCLGNBQWMsQ0FBQyxPQUFPLENBQUMsSUFBSSxFQUMzQixPQUFPLENBQ1IsQ0FBQTtRQUNELE9BQU87UUFDUCxrQ0FBa0M7UUFDbEMsaUNBQWlDO1FBQ2pDLG1DQUFtQztRQUNuQyxtQkFBbUI7UUFDbkIsS0FBSztRQUNMLE9BQU8sS0FBSyxDQUFBO0lBQ2QsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDIn0=
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwt.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/schema/jwt.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,CAAC,MAAM,mBAAmB,CAAA;AACtC,OAAO,EAAa,KAAK,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAE7D,eAAO,MAAM,QAAQ,iDAET,gBAAgB,GAAG,SAAS,2BAeO,CAAA"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as S from "effect-app/schema";
|
|
2
|
+
import { jwtDecode } from "jwt-decode";
|
|
3
|
+
export const parseJwt = (schema, options) => S
|
|
4
|
+
.transformOrFail(S.string, S.unknown, (s, __, ast) => S.ParseResult.try({
|
|
5
|
+
try: () => jwtDecode(s, options),
|
|
6
|
+
catch: (e) => S.ParseResult.type(ast, s, e?.message)
|
|
7
|
+
}), (_) => {
|
|
8
|
+
throw new Error("not implemented");
|
|
9
|
+
})
|
|
10
|
+
.pipe(S.compose(schema, { strict: false }));
|
|
11
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiand0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2FwaS9yb3V0aW5nL3NjaGVtYS9qd3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBS0EsT0FBTyxLQUFLLENBQUMsTUFBTSxtQkFBbUIsQ0FBQTtBQUN0QyxPQUFPLEVBQUUsU0FBUyxFQUF5QixNQUFNLFlBQVksQ0FBQTtBQUU3RCxNQUFNLENBQUMsTUFBTSxRQUFRLEdBQUcsQ0FDdEIsTUFBeUIsRUFDekIsT0FBc0MsRUFDZCxFQUFFLENBQzFCLENBQUM7S0FDRSxlQUFlLENBQ2QsQ0FBQyxDQUFDLE1BQU0sRUFDUixDQUFDLENBQUMsT0FBTyxFQUNULENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUNiLENBQUMsQ0FBQyxXQUFXLENBQUMsR0FBRyxDQUFDO0lBQ2hCLEdBQUcsRUFBRSxHQUFHLEVBQUUsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQztJQUNoQyxLQUFLLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLE9BQU8sQ0FBQztDQUMxRCxDQUFDLEVBQ0osQ0FBQyxDQUFDLEVBQThCLEVBQUU7SUFDaEMsTUFBTSxJQUFJLEtBQUssQ0FBQyxpQkFBaUIsQ0FBQyxDQUFBO0FBQ3BDLENBQUMsQ0FDRjtLQUNBLElBQUksQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE1BQU0sRUFBRSxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUEifQ==
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import type { Context } from "effect-app";
|
|
2
2
|
import type { REST } from "effect-app/schema";
|
|
3
3
|
export type Request<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA extends PathA & QueryA & BodyA, PPath extends `/${string}`> = REST.ReqRes<any, unknown, ReqA> & {
|
|
4
4
|
method: REST.SupportedMethods;
|
|
@@ -8,7 +8,7 @@ export type Request<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA extends Path
|
|
|
8
8
|
Body?: REST.ReqRes<BodyA, unknown, any>;
|
|
9
9
|
Query?: REST.ReqRes<QueryA, Record<string, string>, any>;
|
|
10
10
|
Headers?: REST.ReqRes<HeaderA, Record<string, string>, any>;
|
|
11
|
-
Tag: Tag<M, M>;
|
|
11
|
+
Tag: Context.Tag<M, M>;
|
|
12
12
|
};
|
|
13
13
|
export interface RouteRequestHandler<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA extends PathA & QueryA & BodyA, ResA, PPath extends `/${string}`> {
|
|
14
14
|
Request: Request<M, PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, PPath>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing.d.ts","sourceRoot":"","sources":["../../../../src/api/routing/schema/routing.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
export function asRouteDescriptionAny(i) {
|
|
2
|
+
return i;
|
|
3
|
+
}
|
|
4
|
+
export function arrAsRouteDescriptionAny(arr) {
|
|
5
|
+
return arr.map(asRouteDescriptionAny);
|
|
6
|
+
}
|
|
7
|
+
export function makeRouteDescriptor(path, method, handler) {
|
|
8
|
+
return { path, handler, method, _tag: "Schema" };
|
|
9
|
+
}
|
|
10
|
+
// export function makeFromSchema<ResA>(
|
|
11
|
+
// e: RouteDescriptor<any, any, any, any, any, any, ResA, any>
|
|
12
|
+
// ) {
|
|
13
|
+
// const jsonSchema_ = OpenApi.for
|
|
14
|
+
// const jsonSchema = <E, A>(r: REST.ReqRes<A, E, any>) => jsonSchema_(r)
|
|
15
|
+
// const { Request: Req, Response: Res_, ResponseOpenApi } = e.handler
|
|
16
|
+
// const r = ResponseOpenApi ?? Res_
|
|
17
|
+
// const Res = r ? S.extractSchema(r) : S.Void
|
|
18
|
+
// // TODO EffectOption.fromNullable(Req.Headers).flatMapOpt(jsonSchema)
|
|
19
|
+
// // TODO: use the path vs body etc serialisation also in the Client.
|
|
20
|
+
// const makeReqQuerySchema = Effect.sync(() => Option.fromNullable(Req.Query)).flatMap((_) =>
|
|
21
|
+
// _.match({
|
|
22
|
+
// onNone: () => Effect.sync(() => Option.none()),
|
|
23
|
+
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
24
|
+
// })
|
|
25
|
+
// )
|
|
26
|
+
// const makeReqHeadersSchema = Effect.sync(() => Option.fromNullable(Req.Headers)).flatMap((_) =>
|
|
27
|
+
// _.match({
|
|
28
|
+
// onNone: () => Effect.sync(() => Option.none()),
|
|
29
|
+
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
30
|
+
// })
|
|
31
|
+
// )
|
|
32
|
+
// const makeReqCookieSchema = Effect.sync(() => Option.fromNullable(Req.Cookie)).flatMap((_) =>
|
|
33
|
+
// _.match({
|
|
34
|
+
// onNone: () => Effect.sync(() => Option.none()),
|
|
35
|
+
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
36
|
+
// })
|
|
37
|
+
// )
|
|
38
|
+
// const makeReqPathSchema = Effect.sync(() => Option.fromNullable(Req.Path)).flatMap((_) =>
|
|
39
|
+
// _.match({
|
|
40
|
+
// onNone: () => Effect.sync(() => Option.none()),
|
|
41
|
+
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
42
|
+
// })
|
|
43
|
+
// )
|
|
44
|
+
// const makeReqBodySchema = Effect.sync(() => Option.fromNullable(Req.Body)).flatMap((_) =>
|
|
45
|
+
// _.match({
|
|
46
|
+
// onNone: () => Effect.sync(() => Option.none()),
|
|
47
|
+
// onSome: (_) => jsonSchema(_).map(Option.some)
|
|
48
|
+
// })
|
|
49
|
+
// )
|
|
50
|
+
// // const makeReqSchema = schema(Req)
|
|
51
|
+
// const makeResSchema = jsonSchema_(Res)
|
|
52
|
+
// function makeParameters(inn: ParameterLocation) {
|
|
53
|
+
// return (a: Option<JSONSchema | SubSchema>) => {
|
|
54
|
+
// return a
|
|
55
|
+
// .flatMap((o) => (isObjectSchema(o) ? Option.some(o) : Option.none()))
|
|
56
|
+
// .map((x) => {
|
|
57
|
+
// // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
58
|
+
// return Object.keys(x.properties!).map((p) => {
|
|
59
|
+
// // eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
60
|
+
// const schema = x.properties![p]
|
|
61
|
+
// const required = Boolean(x.required?.includes(p))
|
|
62
|
+
// return { name: p, in: inn, required, schema }
|
|
63
|
+
// })
|
|
64
|
+
// })
|
|
65
|
+
// .getOrElse(() => [])
|
|
66
|
+
// }
|
|
67
|
+
// }
|
|
68
|
+
// return Effect
|
|
69
|
+
// .all({
|
|
70
|
+
// req: jsonSchema(Req.Model),
|
|
71
|
+
// reqQuery: makeReqQuerySchema,
|
|
72
|
+
// reqHeaders: makeReqHeadersSchema,
|
|
73
|
+
// reqBody: makeReqBodySchema,
|
|
74
|
+
// reqPath: makeReqPathSchema,
|
|
75
|
+
// reqCookie: makeReqCookieSchema,
|
|
76
|
+
// res: makeResSchema
|
|
77
|
+
// })
|
|
78
|
+
// .map((_) => {
|
|
79
|
+
// // console.log("$$$ REQ", _.req)
|
|
80
|
+
// const isEmpty = !e.handler.Response || e.handler.Response === S.Void
|
|
81
|
+
// return {
|
|
82
|
+
// path: e.path,
|
|
83
|
+
// method: e.method.toLowerCase(),
|
|
84
|
+
// tags: e.info?.tags,
|
|
85
|
+
// description: _.req?.description,
|
|
86
|
+
// summary: _.req?.summary,
|
|
87
|
+
// operationId: _.req?.title,
|
|
88
|
+
// parameters: [
|
|
89
|
+
// ...makeParameters("path")(_.reqPath),
|
|
90
|
+
// ...makeParameters("query")(_.reqQuery),
|
|
91
|
+
// ...makeParameters("header")(_.reqHeaders),
|
|
92
|
+
// ...makeParameters("cookie")(_.reqCookie)
|
|
93
|
+
// ],
|
|
94
|
+
// requestBody: _
|
|
95
|
+
// .reqBody
|
|
96
|
+
// .map((schema) => ({
|
|
97
|
+
// content: { "application/json": { schema } }
|
|
98
|
+
// }))
|
|
99
|
+
// .value,
|
|
100
|
+
// responses: [
|
|
101
|
+
// isEmpty
|
|
102
|
+
// ? new Response(204, { description: "Empty" })
|
|
103
|
+
// : new Response(200, {
|
|
104
|
+
// description: "OK",
|
|
105
|
+
// content: { "application/json": { schema: _.res } }
|
|
106
|
+
// }),
|
|
107
|
+
// new Response(400, { description: "ValidationError" })
|
|
108
|
+
// ]
|
|
109
|
+
// .concat(
|
|
110
|
+
// e.path.includes(":") && isEmpty
|
|
111
|
+
// ? [new Response(404, { description: "NotFoundError" })]
|
|
112
|
+
// : []
|
|
113
|
+
// )
|
|
114
|
+
// }
|
|
115
|
+
// })
|
|
116
|
+
// }
|
|
117
|
+
// class Response {
|
|
118
|
+
// constructor(
|
|
119
|
+
// public readonly statusCode: number,
|
|
120
|
+
// public readonly type: any // string | JSONSchema | SubSchema
|
|
121
|
+
// ) {}
|
|
122
|
+
// }
|
|
123
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9hcGkvcm91dGluZy9zY2hlbWEvcm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUF5Q0EsTUFBTSxVQUFVLHFCQUFxQixDQUErQixDQUFJO0lBQ3RFLE9BQU8sQ0FBdUIsQ0FBQTtBQUNoQyxDQUFDO0FBRUQsTUFBTSxVQUFVLHdCQUF3QixDQUN0QyxHQUFxQjtJQUVyQixPQUFPLEdBQUcsQ0FBQyxHQUFHLENBQUMscUJBQXFCLENBQUMsQ0FBQTtBQUN2QyxDQUFDO0FBaUNELE1BQU0sVUFBVSxtQkFBbUIsQ0FXakMsSUFBa0IsRUFDbEIsTUFBYyxFQUNkLE9BVUM7SUFZRCxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxNQUFNLEVBQUUsSUFBSSxFQUFFLFFBQVEsRUFBRSxDQUFBO0FBQ2xELENBQUM7QUFFRCx3Q0FBd0M7QUFDeEMsZ0VBQWdFO0FBQ2hFLE1BQU07QUFDTixvQ0FBb0M7QUFDcEMsMkVBQTJFO0FBQzNFLHdFQUF3RTtBQUN4RSxzQ0FBc0M7QUFDdEMsZ0RBQWdEO0FBQ2hELDBFQUEwRTtBQUMxRSx3RUFBd0U7QUFDeEUsZ0dBQWdHO0FBQ2hHLGdCQUFnQjtBQUNoQix3REFBd0Q7QUFDeEQsc0RBQXNEO0FBQ3RELFNBQVM7QUFDVCxNQUFNO0FBQ04sb0dBQW9HO0FBQ3BHLGdCQUFnQjtBQUNoQix3REFBd0Q7QUFDeEQsc0RBQXNEO0FBQ3RELFNBQVM7QUFDVCxNQUFNO0FBQ04sa0dBQWtHO0FBQ2xHLGdCQUFnQjtBQUNoQix3REFBd0Q7QUFDeEQsc0RBQXNEO0FBQ3RELFNBQVM7QUFDVCxNQUFNO0FBQ04sOEZBQThGO0FBQzlGLGdCQUFnQjtBQUNoQix3REFBd0Q7QUFDeEQsc0RBQXNEO0FBQ3RELFNBQVM7QUFDVCxNQUFNO0FBQ04sOEZBQThGO0FBQzlGLGdCQUFnQjtBQUNoQix3REFBd0Q7QUFDeEQsc0RBQXNEO0FBQ3RELFNBQVM7QUFDVCxNQUFNO0FBQ04seUNBQXlDO0FBRXpDLDJDQUEyQztBQUUzQyxzREFBc0Q7QUFDdEQsc0RBQXNEO0FBQ3RELGlCQUFpQjtBQUNqQixnRkFBZ0Y7QUFDaEYsd0JBQXdCO0FBQ3hCLGlGQUFpRjtBQUNqRiwyREFBMkQ7QUFDM0QsbUZBQW1GO0FBQ25GLDhDQUE4QztBQUM5QyxnRUFBZ0U7QUFDaEUsNERBQTREO0FBQzVELGVBQWU7QUFDZixhQUFhO0FBQ2IsK0JBQStCO0FBQy9CLFFBQVE7QUFDUixNQUFNO0FBRU4sa0JBQWtCO0FBQ2xCLGFBQWE7QUFDYixvQ0FBb0M7QUFDcEMsc0NBQXNDO0FBQ3RDLDBDQUEwQztBQUMxQyxvQ0FBb0M7QUFDcEMsb0NBQW9DO0FBQ3BDLHdDQUF3QztBQUN4QywyQkFBMkI7QUFDM0IsU0FBUztBQUNULG9CQUFvQjtBQUNwQix5Q0FBeUM7QUFDekMsNkVBQTZFO0FBQzdFLGlCQUFpQjtBQUNqQix3QkFBd0I7QUFDeEIsMENBQTBDO0FBQzFDLDhCQUE4QjtBQUM5QiwyQ0FBMkM7QUFDM0MsbUNBQW1DO0FBQ25DLHFDQUFxQztBQUNyQyx3QkFBd0I7QUFDeEIsa0RBQWtEO0FBQ2xELG9EQUFvRDtBQUNwRCx1REFBdUQ7QUFDdkQscURBQXFEO0FBQ3JELGFBQWE7QUFDYix5QkFBeUI7QUFDekIscUJBQXFCO0FBQ3JCLGdDQUFnQztBQUNoQywwREFBMEQ7QUFDMUQsZ0JBQWdCO0FBQ2hCLG9CQUFvQjtBQUNwQix1QkFBdUI7QUFDdkIsb0JBQW9CO0FBQ3BCLDREQUE0RDtBQUM1RCxvQ0FBb0M7QUFDcEMsbUNBQW1DO0FBQ25DLG1FQUFtRTtBQUNuRSxrQkFBa0I7QUFDbEIsa0VBQWtFO0FBQ2xFLFlBQVk7QUFDWixxQkFBcUI7QUFDckIsOENBQThDO0FBQzlDLHdFQUF3RTtBQUN4RSxxQkFBcUI7QUFDckIsY0FBYztBQUNkLFVBQVU7QUFDVixTQUFTO0FBQ1QsSUFBSTtBQUVKLG1CQUFtQjtBQUNuQixpQkFBaUI7QUFDakIsMENBQTBDO0FBQzFDLG1FQUFtRTtBQUNuRSxTQUFTO0FBQ1QsSUFBSSJ9
|
package/dist/api/routing.js
CHANGED
|
@@ -5,4 +5,6 @@ export * from "./routing/base.js";
|
|
|
5
5
|
export * from "./routing/defaultErrorHandler.js";
|
|
6
6
|
export * from "./routing/makeRequestHandler.js";
|
|
7
7
|
export * from "./routing/match.js";
|
|
8
|
-
|
|
8
|
+
// codegen:end
|
|
9
|
+
// export * from "@effect-app/infra/api/routing"
|
|
10
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGluZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcm91dGluZy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSx1REFBdUQ7QUFDdkQsaURBQWlEO0FBRWpELHlEQUF5RDtBQUN6RCxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsa0NBQWtDLENBQUE7QUFDaEQsY0FBYyxpQ0FBaUMsQ0FBQTtBQUMvQyxjQUFjLG9CQUFvQixDQUFBO0FBQ2xDLGNBQWM7QUFFZCxnREFBZ0QifQ==
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import { Effect } from "effect
|
|
1
|
+
import { Effect } from "effect-app";
|
|
2
2
|
import { RequestContext } from "../RequestContext.js";
|
|
3
3
|
import { RequestContextContainer } from "../services/RequestContextContainer.js";
|
|
4
4
|
import { ContextMapContainer } from "../services/Store/ContextMapContainer.js";
|
|
5
5
|
/**
|
|
6
6
|
* @tsplus fluent effect/io/Effect setupRequestContext
|
|
7
|
-
* @tsplus location "@effect-app/infra/api/setupRequest"
|
|
8
7
|
*/
|
|
9
|
-
export declare function setupRequestContext<R, E, A>(self: Effect<A, E, R>, requestContext: RequestContext | string):
|
|
8
|
+
export declare function setupRequestContext<R, E, A>(self: Effect<A, E, R>, requestContext: RequestContext | string): Effect.Effect<A, E, RequestContextContainer | ContextMapContainer | Exclude<Exclude<R, import("effect/Tracer").ParentSpan>, never>>;
|
|
10
9
|
/**
|
|
11
10
|
* @tsplus fluent effect/io/Effect updateRequestContext
|
|
12
|
-
* @tsplus location "@effect-app/infra/api/setupRequest"
|
|
13
11
|
*/
|
|
14
|
-
export declare function updateRequestContext<R, E, A>(self: Effect<A, E, R>, f: (rc: RequestContext) => RequestContext):
|
|
12
|
+
export declare function updateRequestContext<R, E, A>(self: Effect<A, E, R>, f: (rc: RequestContext) => RequestContext): Effect.Effect<A, E, RequestContextContainer | Exclude<R, never>>;
|
|
15
13
|
//# sourceMappingURL=setupRequest.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setupRequest.d.ts","sourceRoot":"","sources":["../../src/api/setupRequest.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"setupRequest.d.ts","sourceRoot":"","sources":["../../src/api/setupRequest.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAe,MAAM,YAAY,CAAA;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAA;AACrD,OAAO,EAAE,uBAAuB,EAAkB,MAAM,wCAAwC,CAAA;AAChG,OAAO,EAAE,mBAAmB,EAAE,MAAM,0CAA0C,CAAA;AAkD9E;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,cAAc,EAAE,cAAc,GAAG,MAAM,uIAM1G;AAKD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,cAAc,KAAK,cAAc,oEAE7G"}
|
package/dist/api/setupRequest.js
CHANGED
|
@@ -1,53 +1,49 @@
|
|
|
1
|
-
import
|
|
2
|
-
import
|
|
3
|
-
import * as tsplus_module_3 from "@effect-app/infra/services/RequestContextContainer";
|
|
4
|
-
import * as tsplus_module_4 from "effect/Layer";
|
|
1
|
+
import { NonEmptyString255 } from "@effect-app/schema";
|
|
2
|
+
import { Effect, Layer, pipe } from "effect-app";
|
|
5
3
|
import { RequestId } from "effect-app/ids";
|
|
6
4
|
import { RequestContext } from "../RequestContext.js";
|
|
7
|
-
import { RequestContextContainer } from "../services/RequestContextContainer.js";
|
|
5
|
+
import { RequestContextContainer, spanAttributes } from "../services/RequestContextContainer.js";
|
|
8
6
|
import { ContextMapContainer } from "../services/Store/ContextMapContainer.js";
|
|
9
7
|
function makeInternalRequestContext(name) {
|
|
10
|
-
return
|
|
8
|
+
return Effect.sync(() => {
|
|
11
9
|
const id = RequestId.make();
|
|
12
10
|
return new RequestContext({
|
|
13
11
|
id,
|
|
14
12
|
rootId: id,
|
|
15
13
|
locale: "en",
|
|
16
|
-
name:
|
|
14
|
+
name: NonEmptyString255(name)
|
|
17
15
|
});
|
|
18
16
|
});
|
|
19
17
|
}
|
|
20
|
-
const withRequestSpan = (f) => RequestContextContainer
|
|
21
|
-
.get
|
|
22
|
-
.andThen((ctx) => tsplus_module_2.withLogSpan(tsplus_module_2.withSpan(f, "request", { attributes: tsplus_module_3.spanAttributes(ctx) })
|
|
18
|
+
const withRequestSpan = (f) => Effect.andThen(RequestContextContainer
|
|
19
|
+
.get, (ctx) => f.pipe(Effect.withSpan("request", { attributes: spanAttributes(ctx) }),
|
|
23
20
|
// request context info is picked up directly in the logger for annotations.
|
|
24
|
-
|
|
25
|
-
const setupContextMap =
|
|
21
|
+
Effect.withLogSpan("request")));
|
|
22
|
+
const setupContextMap = Effect.andThen(ContextMapContainer, (_) => _.start).pipe(Layer.effectDiscard);
|
|
26
23
|
// const RequestContextLiveFromRequestContext = (requestContext: RequestContext) =>
|
|
27
24
|
// RequestContext.Tag.makeLayer(requestContext)
|
|
28
25
|
// memoization problem
|
|
29
26
|
// const RequestContextLive = RequestContextContainer.get.toLayer(RequestContext.Tag)
|
|
30
|
-
const RequestContextStartLiveFromRequestContext = (requestContext) =>
|
|
27
|
+
const RequestContextStartLiveFromRequestContext = (requestContext) => Layer.provideMerge(setupContextMap,
|
|
31
28
|
// .provideMerge(RequestContextLiveFromRequestContext(requestContext))
|
|
32
|
-
|
|
33
|
-
.andThen((_) => _.start(requestContext))
|
|
29
|
+
Effect
|
|
30
|
+
.andThen(RequestContextContainer, (_) => _.start(requestContext))
|
|
31
|
+
.pipe(Layer.effectDiscard));
|
|
34
32
|
const RequestContextStartLive = (requestContext) => typeof requestContext === "string"
|
|
35
|
-
?
|
|
36
|
-
|
|
33
|
+
? pipe(makeInternalRequestContext(requestContext), Effect.andThen(RequestContextStartLiveFromRequestContext), Layer.unwrapEffect)
|
|
34
|
+
: RequestContextStartLiveFromRequestContext(requestContext);
|
|
37
35
|
/**
|
|
38
36
|
* @tsplus fluent effect/io/Effect setupRequestContext
|
|
39
37
|
*/
|
|
40
38
|
export function setupRequestContext(self, requestContext) {
|
|
41
|
-
return
|
|
42
|
-
.pipe(withRequestSpan
|
|
39
|
+
return self
|
|
40
|
+
.pipe(withRequestSpan, Effect.provide(RequestContextStartLive(requestContext)));
|
|
43
41
|
}
|
|
44
|
-
const UpdateRequestContextLive = (f) =>
|
|
42
|
+
const UpdateRequestContextLive = (f) => Effect.andThen(RequestContextContainer, (rcc) => rcc.update(f)).pipe(Layer.effectDiscard);
|
|
45
43
|
/**
|
|
46
44
|
* @tsplus fluent effect/io/Effect updateRequestContext
|
|
47
45
|
*/
|
|
48
46
|
export function updateRequestContext(self, f) {
|
|
49
|
-
return
|
|
50
|
-
// .provideServiceEffect(RequestContext.Tag, RequestContextContainer.get)
|
|
51
|
-
, UpdateRequestContextLive(f));
|
|
47
|
+
return Effect.provide(self, UpdateRequestContextLive(f));
|
|
52
48
|
}
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2V0dXBSZXF1ZXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9zZXR1cFJlcXVlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGlCQUFpQixFQUFFLE1BQU0sb0JBQW9CLENBQUE7QUFDdEQsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBQ2hELE9BQU8sRUFBRSxTQUFTLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQUMxQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sc0JBQXNCLENBQUE7QUFDckQsT0FBTyxFQUFFLHVCQUF1QixFQUFFLGNBQWMsRUFBRSxNQUFNLHdDQUF3QyxDQUFBO0FBQ2hHLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLDBDQUEwQyxDQUFBO0FBRTlFLFNBQVMsMEJBQTBCLENBQUMsSUFBWTtJQUM5QyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxFQUFFO1FBQ3RCLE1BQU0sRUFBRSxHQUFHLFNBQVMsQ0FBQyxJQUFJLEVBQUUsQ0FBQTtRQUMzQixPQUFPLElBQUksY0FBYyxDQUFDO1lBQ3hCLEVBQUU7WUFDRixNQUFNLEVBQUUsRUFBRTtZQUNWLE1BQU0sRUFBRSxJQUFJO1lBQ1osSUFBSSxFQUFFLGlCQUFpQixDQUFDLElBQUksQ0FBQztTQUM5QixDQUFDLENBQUE7SUFDSixDQUFDLENBQUMsQ0FBQTtBQUNKLENBQUM7QUFFRCxNQUFNLGVBQWUsR0FBRyxDQUFVLENBQWtCLEVBQUUsRUFBRSxDQUN0RCxNQUFNLENBQUMsT0FBTyxDQUNaLHVCQUF1QjtLQUNwQixHQUFHLEVBQ04sQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUNOLENBQUMsQ0FBQyxJQUFJLENBQ0osTUFBTSxDQUFDLFFBQVEsQ0FBQyxTQUFTLEVBQUUsRUFBRSxVQUFVLEVBQUUsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDL0QsNEVBQTRFO0FBQzVFLE1BQU0sQ0FBQyxXQUFXLENBQUMsU0FBUyxDQUFDLENBQzlCLENBQ0osQ0FBQTtBQUVILE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsbUJBQW1CLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBRXJHLG1GQUFtRjtBQUNuRixpREFBaUQ7QUFDakQsc0JBQXNCO0FBQ3RCLHFGQUFxRjtBQUNyRixNQUFNLHlDQUF5QyxHQUFHLENBQUMsY0FBOEIsRUFBRSxFQUFFLENBQ25GLEtBQUssQ0FBQyxZQUFZLENBQ2hCLGVBQWU7QUFDZixzRUFBc0U7QUFDdEUsTUFBTTtLQUNILE9BQU8sQ0FBQyx1QkFBdUIsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxjQUFjLENBQUMsQ0FBQztLQUNoRSxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUM3QixDQUFBO0FBRUgsTUFBTSx1QkFBdUIsR0FBRyxDQUFDLGNBQXVDLEVBQUUsRUFBRSxDQUMxRSxPQUFPLGNBQWMsS0FBSyxRQUFRO0lBQ2hDLENBQUMsQ0FBQyxJQUFJLENBQ0osMEJBQTBCLENBQUMsY0FBYyxDQUFDLEVBQzFDLE1BQU0sQ0FBQyxPQUFPLENBQUMseUNBQXlDLENBQUMsRUFDekQsS0FBSyxDQUFDLFlBQVksQ0FDbkI7SUFDRCxDQUFDLENBQUMseUNBQXlDLENBQUMsY0FBYyxDQUFDLENBQUE7QUFFL0Q7O0dBRUc7QUFDSCxNQUFNLFVBQVUsbUJBQW1CLENBQVUsSUFBcUIsRUFBRSxjQUF1QztJQUN6RyxPQUFPLElBQUk7U0FDUixJQUFJLENBQ0gsZUFBZSxFQUNmLE1BQU0sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLENBQUMsY0FBYyxDQUFDLENBQUMsQ0FDeEQsQ0FBQTtBQUNMLENBQUM7QUFFRCxNQUFNLHdCQUF3QixHQUFHLENBQUMsQ0FBeUMsRUFBRSxFQUFFLENBQzdFLE1BQU0sQ0FBQyxPQUFPLENBQUMsdUJBQXVCLEVBQUUsQ0FBQyxHQUFHLEVBQUUsRUFBRSxDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLGFBQWEsQ0FBQyxDQUFBO0FBRTNGOztHQUVHO0FBQ0gsTUFBTSxVQUFVLG9CQUFvQixDQUFVLElBQXFCLEVBQUUsQ0FBeUM7SUFDNUcsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDLElBQUksRUFBRSx3QkFBd0IsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFBO0FBQzFELENBQUMifQ==
|