@effect-app/infra 0.85.0-next.4 → 0.85.1
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 +5 -32
- package/_cjs/_ext/Array.cjs +2 -3
- package/_cjs/_ext/Array.cjs.map +1 -1
- package/_cjs/api/defaultErrorHandler.cjs +10 -11
- package/_cjs/api/defaultErrorHandler.cjs.map +1 -1
- package/_cjs/api/express/makeJsonSchema.cjs +2 -3
- package/_cjs/api/express/makeJsonSchema.cjs.map +1 -1
- package/_cjs/api/express/makeJsonSchema.test.cjs +2 -2
- package/_cjs/api/express/makeJsonSchema.test.cjs.map +1 -1
- package/_cjs/api/express/makeOpenApiSpecs.cjs +4 -6
- package/_cjs/api/express/makeOpenApiSpecs.cjs.map +1 -1
- package/_cjs/api/express/schema/routing.cjs +22 -23
- package/_cjs/api/express/schema/routing.cjs.map +1 -1
- package/_cjs/api/reportError.cjs +2 -2
- package/_cjs/api/setupRequest.cjs +4 -5
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/api/writeDocs.cjs +4 -6
- package/_cjs/api/writeDocs.cjs.map +1 -1
- package/_cjs/errorReporter.cjs +11 -12
- package/_cjs/errorReporter.cjs.map +1 -1
- package/_cjs/errors.cjs +8 -8
- package/_cjs/errors.cjs.map +1 -1
- package/_cjs/instrument.cjs +1 -2
- package/_cjs/instrument.cjs.map +1 -1
- package/_cjs/logger/jsonLogger.cjs +10 -11
- package/_cjs/logger/jsonLogger.cjs.map +1 -1
- package/_cjs/logger/logFmtLogger.cjs +5 -5
- package/_cjs/logger/logFmtLogger.cjs.map +1 -1
- package/_cjs/logger/shared.cjs +4 -4
- package/_cjs/logger/shared.cjs.map +1 -1
- package/_cjs/rateLimit.cjs +7 -8
- package/_cjs/rateLimit.cjs.map +1 -1
- package/_cjs/services/Emailer/Sendgrid.cjs +12 -14
- package/_cjs/services/Emailer/Sendgrid.cjs.map +1 -1
- package/_cjs/services/Emailer/fake.cjs +4 -5
- package/_cjs/services/Emailer/fake.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +29 -31
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/Operations/service.cjs +5 -6
- package/_cjs/services/Operations/service.cjs.map +1 -1
- package/_cjs/services/QueueMaker/errors.cjs +6 -7
- package/_cjs/services/QueueMaker/errors.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +17 -18
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +15 -16
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/Repository.cjs +16 -17
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +33 -35
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +20 -15
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_cjs/services/Store/Cosmos.cjs +46 -49
- package/_cjs/services/Store/Cosmos.cjs.map +1 -1
- package/_cjs/services/Store/Disk.cjs +18 -19
- package/_cjs/services/Store/Disk.cjs.map +1 -1
- package/_cjs/services/Store/Memory.cjs +39 -43
- package/_cjs/services/Store/Memory.cjs.map +1 -1
- package/_cjs/services/Store/Redis.cjs +14 -16
- package/_cjs/services/Store/Redis.cjs.map +1 -1
- package/_cjs/services/Store/codeFilter.test.cjs +1 -1
- package/_cjs/services/Store/index.cjs +6 -7
- package/_cjs/services/Store/index.cjs.map +1 -1
- package/_cjs/services/Store/service.cjs +1 -1
- package/_cjs/services/Store/service.cjs.map +1 -1
- package/_cjs/services/Store/utils.cjs +13 -13
- package/_cjs/services/Store/utils.cjs.map +1 -1
- package/_cjs/services/simpledb/cosmosdb.cjs +17 -19
- package/_cjs/services/simpledb/cosmosdb.cjs.map +1 -1
- package/_cjs/services/simpledb/diskdb.cjs +8 -9
- package/_cjs/services/simpledb/diskdb.cjs.map +1 -1
- package/_cjs/services/simpledb/memdb.cjs +9 -11
- package/_cjs/services/simpledb/memdb.cjs.map +1 -1
- package/_cjs/services/simpledb/mongodb.cjs +18 -20
- package/_cjs/services/simpledb/mongodb.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +10 -11
- package/_cjs/services/simpledb/redisdb.cjs.map +1 -1
- package/_cjs/services/simpledb/shared.cjs +5 -5
- package/_cjs/services/simpledb/shared.cjs.map +1 -1
- package/_cjs/services/simpledb/simpledb.cjs +17 -18
- package/_cjs/services/simpledb/simpledb.cjs.map +1 -1
- package/_src/api/authorization.jwt.ts +1 -1
- package/_src/api/defaultErrorHandler.ts +2 -2
- package/_src/api/express/routing.ts.bak +8 -8
- package/_src/api/express/schema/routing.ts +59 -37
- package/_src/api/setupRequest.ts +11 -10
- package/_src/errorReporter.ts +1 -1
- package/_src/services/Emailer/Sendgrid.ts +1 -1
- package/_src/services/Operations/live.ts +5 -5
- package/_src/services/QueueMaker/errors.ts +1 -1
- package/_src/services/QueueMaker/memQueue.ts +2 -2
- package/_src/services/QueueMaker/sbqueue.ts +1 -1
- package/_src/services/Repository.ts +10 -11
- package/_src/services/RepositoryBase.ts +8 -11
- package/_src/services/RequestContextContainer.ts +12 -7
- package/_src/services/Store/Cosmos.ts +12 -17
- package/_src/services/Store/Disk.ts +4 -4
- package/_src/services/Store/Memory.ts +4 -4
- package/_src/services/Store/Redis.ts +1 -1
- package/_src/services/Store/index.test.ts.bak +5 -5
- package/_src/services/Store/index.ts +1 -1
- package/_src/services/Store/utils.ts +16 -16
- package/_src/services/simpledb/diskdb.ts +1 -1
- package/_src/services/simpledb/memdb.ts +1 -1
- package/_src/services/simpledb/redisdb.ts +1 -1
- package/_src/services/simpledb/shared.ts +1 -1
- package/_src/services/simpledb/simpledb.ts +3 -3
- package/dist/RequestContext.d.ts +4 -4
- package/dist/_ext/Array.d.ts +1 -1
- package/dist/_ext/Array.d.ts.map +1 -1
- package/dist/_ext/Array.js +3 -4
- package/dist/api/codec.d.ts +1 -1
- package/dist/api/codec.d.ts.map +1 -1
- package/dist/api/defaultErrorHandler.d.ts +2 -2
- package/dist/api/defaultErrorHandler.d.ts.map +1 -1
- package/dist/api/defaultErrorHandler.js +11 -13
- package/dist/api/express/makeJsonSchema.d.ts +2 -2
- package/dist/api/express/makeJsonSchema.d.ts.map +1 -1
- package/dist/api/express/makeJsonSchema.js +3 -4
- package/dist/api/express/makeOpenApiSpecs.d.ts +1 -1
- package/dist/api/express/makeOpenApiSpecs.js +5 -7
- package/dist/api/express/schema/routing.d.ts +22 -7
- package/dist/api/express/schema/routing.d.ts.map +1 -1
- package/dist/api/express/schema/routing.js +23 -24
- package/dist/api/reportError.d.ts +5 -5
- package/dist/api/reportError.d.ts.map +1 -1
- package/dist/api/reportError.js +2 -2
- package/dist/api/setupRequest.d.ts +2 -2
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +7 -7
- package/dist/api/writeDocs.d.ts +1 -1
- package/dist/api/writeDocs.d.ts.map +1 -1
- package/dist/api/writeDocs.js +5 -7
- package/dist/errorReporter.d.ts +3 -3
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +12 -13
- package/dist/errors.d.ts +7 -7
- package/dist/errors.js +9 -9
- package/dist/instrument.d.ts +1 -1
- package/dist/instrument.d.ts.map +1 -1
- package/dist/instrument.js +2 -3
- package/dist/logger/jsonLogger.d.ts +2 -2
- package/dist/logger/jsonLogger.d.ts.map +1 -1
- package/dist/logger/jsonLogger.js +11 -12
- package/dist/logger/logFmtLogger.d.ts +2 -2
- package/dist/logger/logFmtLogger.d.ts.map +1 -1
- package/dist/logger/logFmtLogger.js +6 -6
- package/dist/logger/shared.d.ts +1 -1
- package/dist/logger/shared.d.ts.map +1 -1
- package/dist/logger/shared.js +5 -5
- package/dist/rateLimit.d.ts +3 -3
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +8 -9
- package/dist/services/Emailer/Sendgrid.d.ts +1 -1
- package/dist/services/Emailer/Sendgrid.d.ts.map +1 -1
- package/dist/services/Emailer/Sendgrid.js +15 -17
- package/dist/services/Emailer/fake.d.ts +1 -1
- package/dist/services/Emailer/fake.d.ts.map +1 -1
- package/dist/services/Emailer/fake.js +5 -6
- package/dist/services/Emailer/service.d.ts +3 -3
- package/dist/services/Operations/live.d.ts +1 -1
- package/dist/services/Operations/live.d.ts.map +1 -1
- package/dist/services/Operations/live.js +37 -39
- package/dist/services/Operations/service.d.ts +8 -8
- package/dist/services/Operations/service.d.ts.map +1 -1
- package/dist/services/Operations/service.js +12 -13
- package/dist/services/QueueMaker/errors.d.ts +3 -3
- package/dist/services/QueueMaker/errors.d.ts.map +1 -1
- package/dist/services/QueueMaker/errors.js +6 -7
- package/dist/services/QueueMaker/memQueue.d.ts +3 -3
- package/dist/services/QueueMaker/memQueue.js +16 -17
- package/dist/services/QueueMaker/sbqueue.d.ts +4 -4
- package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/sbqueue.js +15 -16
- package/dist/services/Repository.d.ts +43 -44
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +17 -18
- package/dist/services/RepositoryBase.d.ts +15 -15
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +35 -37
- package/dist/services/RequestContextContainer.d.ts +14 -11
- package/dist/services/RequestContextContainer.d.ts.map +1 -1
- package/dist/services/RequestContextContainer.js +19 -18
- package/dist/services/Store/Cosmos.d.ts +3 -3
- package/dist/services/Store/Cosmos.d.ts.map +1 -1
- package/dist/services/Store/Cosmos.js +51 -54
- package/dist/services/Store/Disk.d.ts +3 -3
- package/dist/services/Store/Disk.d.ts.map +1 -1
- package/dist/services/Store/Disk.js +19 -20
- package/dist/services/Store/Memory.d.ts +5 -5
- package/dist/services/Store/Memory.d.ts.map +1 -1
- package/dist/services/Store/Memory.js +41 -45
- package/dist/services/Store/Redis.d.ts +3 -3
- package/dist/services/Store/Redis.d.ts.map +1 -1
- package/dist/services/Store/Redis.js +15 -17
- package/dist/services/Store/index.d.ts +1 -1
- 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 +8 -8
- package/dist/services/Store/service.d.ts.map +1 -1
- package/dist/services/Store/service.js +2 -2
- package/dist/services/Store/utils.d.ts +2 -2
- package/dist/services/Store/utils.d.ts.map +1 -1
- package/dist/services/Store/utils.js +21 -21
- package/dist/services/simpledb/cosmosdb.d.ts +5 -5
- package/dist/services/simpledb/cosmosdb.js +17 -19
- package/dist/services/simpledb/diskdb.d.ts +4 -4
- package/dist/services/simpledb/diskdb.js +9 -10
- package/dist/services/simpledb/memdb.d.ts +4 -4
- package/dist/services/simpledb/memdb.js +11 -13
- package/dist/services/simpledb/mongodb.d.ts +5 -5
- package/dist/services/simpledb/mongodb.js +14 -16
- package/dist/services/simpledb/redisdb.d.ts +4 -4
- package/dist/services/simpledb/redisdb.js +11 -12
- package/dist/services/simpledb/shared.d.ts +4 -4
- package/dist/services/simpledb/shared.js +6 -6
- package/dist/services/simpledb/simpledb.d.ts +6 -6
- package/dist/services/simpledb/simpledb.d.ts.map +1 -1
- package/dist/services/simpledb/simpledb.js +15 -16
- package/package.json +5 -25
- package/_cjs/api/express/schema/requestHandler.cjs +0 -172
- package/_cjs/api/express/schema/requestHandler.cjs.map +0 -1
- package/_cjs/api/routing.cjs +0 -278
- package/_cjs/api/routing.cjs.map +0 -1
- package/_src/api/express/schema/requestHandler.ts +0 -372
- package/_src/api/routing.ts +0 -660
- package/dist/api/express/schema/requestHandler.d.ts +0 -71
- package/dist/api/express/schema/requestHandler.d.ts.map +0 -1
- package/dist/api/express/schema/requestHandler.js +0 -140
- package/dist/api/routing.d.ts +0 -103
- package/dist/api/routing.d.ts.map +0 -1
- package/dist/api/routing.js +0 -265
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"simpledb.cjs","names":["_shared","require","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","InvalidStateError","constructor","message","details","_tag","exports","makeLiveRecordCache","m","Map","type","tsplus_module_1","
|
|
1
|
+
{"version":3,"file":"simpledb.cjs","names":["_shared","require","_getRequireWildcardCache","e","WeakMap","r","t","_interopRequireWildcard","__esModule","default","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","InvalidStateError","constructor","message","details","_tag","exports","makeLiveRecordCache","m","Map","type","tsplus_module_1","sync","ex","nm","makeMap","RecordCache","tsplus_module_2","Tag","LiveRecordCache","tsplus_module_3","effect","getM","eff","gen","$","flatMap","find","tryRead","decode","getCache","read","id","tsplus_module_4","mapOption","tapOption","flatMapOption","data","version","mapBoth","onFailure","err","onSuccess","c","orElse","existing","storeDirectly","save","record","map","tap","x","cv","store","lock","_","tsplus_module_6","match","onNone","tsplus_module_5","none","onSome","confirmVersionAndSave","scoped","zipRight","fail","succeed","OptimisticLockException","unit","some"],"sources":["../../../_src/services/simpledb/simpledb.ts"],"sourcesContent":[null],"mappings":"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"}
|
|
@@ -42,7 +42,7 @@ export const scopes = Ex.classic(demandScopes)
|
|
|
42
42
|
)
|
|
43
43
|
return (
|
|
44
44
|
cfg.AUTH_DISABLED
|
|
45
|
-
? Effect
|
|
45
|
+
? Effect(null)
|
|
46
46
|
: // eslint-disable-next-line @typescript-eslint/no-empty-function
|
|
47
47
|
handleJwt(req, res, () => scopes(req, res, () => {}))
|
|
48
48
|
).zipRight(
|
|
@@ -7,7 +7,7 @@ export function defaultBasicErrorHandler<R>(
|
|
|
7
7
|
res: express.Response,
|
|
8
8
|
r2: Effect<R, ValidationError, void>
|
|
9
9
|
) {
|
|
10
|
-
const sendError = (code: number) => (body: unknown) => Effect
|
|
10
|
+
const sendError = (code: number) => (body: unknown) => Effect(res.status(code).send(body))
|
|
11
11
|
return r2
|
|
12
12
|
.tapErrorCause((cause) => cause.isFailure() ? logRequestError(cause) : Effect.unit)
|
|
13
13
|
.catchTag("ValidationError", (err) => sendError(400)(err.errors))
|
|
@@ -33,7 +33,7 @@ export function defaultErrorHandler<R>(
|
|
|
33
33
|
const r3 = req.method === "PATCH"
|
|
34
34
|
? r2.retry(optimisticConcurrencySchedule)
|
|
35
35
|
: r2
|
|
36
|
-
const sendError = (code: number) => (body: unknown) => Effect
|
|
36
|
+
const sendError = (code: number) => (body: unknown) => Effect(res.status(code).send(body))
|
|
37
37
|
return r3
|
|
38
38
|
.tapErrorCause((cause) => cause.isFailure() ? logRequestError(cause) : Effect.unit)
|
|
39
39
|
.catchTags({
|
|
@@ -76,7 +76,7 @@ export function match<
|
|
|
76
76
|
h
|
|
77
77
|
)
|
|
78
78
|
).zipRight(
|
|
79
|
-
Effect
|
|
79
|
+
Effect(makeRouteDescriptor(r.Request.path, r.Request.method, r))
|
|
80
80
|
)
|
|
81
81
|
}
|
|
82
82
|
|
|
@@ -180,14 +180,14 @@ export function handleRequest<
|
|
|
180
180
|
}))
|
|
181
181
|
// final catch all; expecting never so that unhandled known errors will show up
|
|
182
182
|
.catchAll((err: never) =>
|
|
183
|
-
Effect
|
|
183
|
+
Effect(
|
|
184
184
|
console.error(
|
|
185
185
|
"Program error, compiler probably silenced, got an unsupported Error in Error Channel of Effect",
|
|
186
186
|
err
|
|
187
187
|
)
|
|
188
188
|
).flatMap(Effect.die)
|
|
189
189
|
)
|
|
190
|
-
// .tapCause(() => Effect
|
|
190
|
+
// .tapCause(() => Effect(res.status(500).send()))
|
|
191
191
|
}
|
|
192
192
|
|
|
193
193
|
// Additional convenience helpers
|
|
@@ -242,7 +242,7 @@ export function get<
|
|
|
242
242
|
r,
|
|
243
243
|
h
|
|
244
244
|
)
|
|
245
|
-
).zipRight(Effect
|
|
245
|
+
).zipRight(Effect(makeRouteDescriptor(path, "GET", r)))
|
|
246
246
|
}
|
|
247
247
|
|
|
248
248
|
export function post<
|
|
@@ -295,7 +295,7 @@ export function post<
|
|
|
295
295
|
r,
|
|
296
296
|
h
|
|
297
297
|
)
|
|
298
|
-
).zipRight(Effect
|
|
298
|
+
).zipRight(Effect(makeRouteDescriptor(path, "POST", r)))
|
|
299
299
|
}
|
|
300
300
|
|
|
301
301
|
export function put<
|
|
@@ -348,7 +348,7 @@ export function put<
|
|
|
348
348
|
r,
|
|
349
349
|
h
|
|
350
350
|
)
|
|
351
|
-
).zipRight(Effect
|
|
351
|
+
).zipRight(Effect(makeRouteDescriptor(path, "PUT", r)))
|
|
352
352
|
}
|
|
353
353
|
|
|
354
354
|
export function patch<
|
|
@@ -401,7 +401,7 @@ export function patch<
|
|
|
401
401
|
r,
|
|
402
402
|
h
|
|
403
403
|
)
|
|
404
|
-
).zipRight(Effect
|
|
404
|
+
).zipRight(Effect(makeRouteDescriptor(path, "PATCH", r)))
|
|
405
405
|
}
|
|
406
406
|
|
|
407
407
|
function del<
|
|
@@ -454,7 +454,7 @@ function del<
|
|
|
454
454
|
r,
|
|
455
455
|
h
|
|
456
456
|
)
|
|
457
|
-
).zipRight(Effect
|
|
457
|
+
).zipRight(Effect(makeRouteDescriptor(path, "DELETE", r)))
|
|
458
458
|
}
|
|
459
459
|
|
|
460
460
|
export { del as delete }
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/ban-types */
|
|
1
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
3
|
import * as MO from "@effect-app/schema"
|
|
3
4
|
import type { Methods } from "@effect-app/schema"
|
|
@@ -5,7 +6,37 @@ import type { Methods } from "@effect-app/schema"
|
|
|
5
6
|
import type { JSONSchema, ParameterLocation, SubSchema } from "@effect-app/infra-adapters/Openapi/atlas-plutus"
|
|
6
7
|
import { isObjectSchema } from "@effect-app/infra-adapters/Openapi/atlas-plutus"
|
|
7
8
|
import * as OpenApi from "@effect-app/infra-adapters/Openapi/index"
|
|
8
|
-
|
|
9
|
+
|
|
10
|
+
export type Request<
|
|
11
|
+
PathA,
|
|
12
|
+
CookieA,
|
|
13
|
+
QueryA,
|
|
14
|
+
BodyA,
|
|
15
|
+
HeaderA,
|
|
16
|
+
ReqA extends PathA & QueryA & BodyA
|
|
17
|
+
> = MO.ReqResSchemed<unknown, ReqA> & {
|
|
18
|
+
method: Methods
|
|
19
|
+
path: string
|
|
20
|
+
Cookie?: MO.ReqRes<Record<string, string>, CookieA>
|
|
21
|
+
Path?: MO.ReqRes<Record<string, string>, PathA>
|
|
22
|
+
Body?: MO.ReqRes<unknown, BodyA>
|
|
23
|
+
Query?: MO.ReqRes<Record<string, string>, QueryA>
|
|
24
|
+
Headers?: MO.ReqRes<Record<string, string>, HeaderA>
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
export interface RouteRequestHandler<
|
|
28
|
+
PathA,
|
|
29
|
+
CookieA,
|
|
30
|
+
QueryA,
|
|
31
|
+
BodyA,
|
|
32
|
+
HeaderA,
|
|
33
|
+
ReqA extends PathA & QueryA & BodyA,
|
|
34
|
+
ResA
|
|
35
|
+
> {
|
|
36
|
+
Request: Request<PathA, CookieA, QueryA, BodyA, HeaderA, ReqA>
|
|
37
|
+
Response?: MO.ReqRes<unknown, ResA> | MO.ReqResSchemed<unknown, ResA>
|
|
38
|
+
ResponseOpenApi?: any
|
|
39
|
+
}
|
|
9
40
|
|
|
10
41
|
export function asRouteDescriptionAny<R extends RouteDescriptorAny>(i: R) {
|
|
11
42
|
return i as RouteDescriptorAny
|
|
@@ -18,7 +49,6 @@ export function arrAsRouteDescriptionAny<R extends RouteDescriptorAny>(
|
|
|
18
49
|
}
|
|
19
50
|
|
|
20
51
|
export interface RouteDescriptor<
|
|
21
|
-
R,
|
|
22
52
|
PathA,
|
|
23
53
|
CookieA,
|
|
24
54
|
QueryA,
|
|
@@ -26,12 +56,12 @@ export interface RouteDescriptor<
|
|
|
26
56
|
HeaderA,
|
|
27
57
|
ReqA extends PathA & QueryA & BodyA,
|
|
28
58
|
ResA,
|
|
29
|
-
Errors,
|
|
30
59
|
METHOD extends Methods = Methods
|
|
31
60
|
> {
|
|
61
|
+
_tag: "Schema"
|
|
32
62
|
path: string
|
|
33
63
|
method: METHOD
|
|
34
|
-
handler:
|
|
64
|
+
handler: RouteRequestHandler<PathA, CookieA, QueryA, BodyA, HeaderA, ReqA, ResA>
|
|
35
65
|
info?: {
|
|
36
66
|
tags: ReadonlyArray<string>
|
|
37
67
|
}
|
|
@@ -44,13 +74,10 @@ export type RouteDescriptorAny = RouteDescriptor<
|
|
|
44
74
|
any,
|
|
45
75
|
any,
|
|
46
76
|
any,
|
|
47
|
-
any,
|
|
48
|
-
any,
|
|
49
77
|
any
|
|
50
78
|
>
|
|
51
79
|
|
|
52
80
|
export function makeRouteDescriptor<
|
|
53
|
-
R,
|
|
54
81
|
PathA,
|
|
55
82
|
CookieA,
|
|
56
83
|
QueryA,
|
|
@@ -58,39 +85,34 @@ export function makeRouteDescriptor<
|
|
|
58
85
|
HeaderA,
|
|
59
86
|
ReqA extends PathA & QueryA & BodyA,
|
|
60
87
|
ResA = void,
|
|
61
|
-
Errors = any,
|
|
62
88
|
METHOD extends Methods = Methods
|
|
63
89
|
>(
|
|
64
90
|
path: string,
|
|
65
91
|
method: METHOD,
|
|
66
|
-
handler:
|
|
67
|
-
R,
|
|
92
|
+
handler: RouteRequestHandler<
|
|
68
93
|
PathA,
|
|
69
94
|
CookieA,
|
|
70
95
|
QueryA,
|
|
71
96
|
BodyA,
|
|
72
97
|
HeaderA,
|
|
73
98
|
ReqA,
|
|
74
|
-
ResA
|
|
75
|
-
Errors
|
|
76
|
-
>
|
|
77
|
-
) {
|
|
78
|
-
return { path, method, handler, _tag: "Schema" } as RouteDescriptor<
|
|
79
|
-
R,
|
|
80
|
-
PathA,
|
|
81
|
-
CookieA,
|
|
82
|
-
QueryA,
|
|
83
|
-
BodyA,
|
|
84
|
-
HeaderA,
|
|
85
|
-
ReqA,
|
|
86
|
-
ResA,
|
|
87
|
-
Errors,
|
|
88
|
-
METHOD
|
|
99
|
+
ResA
|
|
89
100
|
>
|
|
101
|
+
): RouteDescriptor<
|
|
102
|
+
PathA,
|
|
103
|
+
CookieA,
|
|
104
|
+
QueryA,
|
|
105
|
+
BodyA,
|
|
106
|
+
HeaderA,
|
|
107
|
+
ReqA,
|
|
108
|
+
ResA,
|
|
109
|
+
METHOD
|
|
110
|
+
> {
|
|
111
|
+
return { path, handler, method, _tag: "Schema" }
|
|
90
112
|
}
|
|
91
113
|
|
|
92
114
|
export function makeFromSchema<ResA>(
|
|
93
|
-
e: RouteDescriptor<any, any, any, any, any,
|
|
115
|
+
e: RouteDescriptor<any, any, any, any, any, ResA, any>
|
|
94
116
|
) {
|
|
95
117
|
const jsonSchema_ = OpenApi.for
|
|
96
118
|
const jsonSchema = <E, A>(r: MO.ReqRes<E, A>) => jsonSchema_(r)
|
|
@@ -99,33 +121,33 @@ export function makeFromSchema<ResA>(
|
|
|
99
121
|
const Res = r ? MO.extractSchema(r) : MO.Void
|
|
100
122
|
// TODO EffectOption.fromNullable(Req.Headers).flatMapOpt(jsonSchema)
|
|
101
123
|
// TODO: use the path vs body etc serialisation also in the Client.
|
|
102
|
-
const makeReqQuerySchema = Effect
|
|
124
|
+
const makeReqQuerySchema = Effect(Option.fromNullable(Req.Query)).flatMap((_) =>
|
|
103
125
|
_.match({
|
|
104
|
-
onNone: () => Effect
|
|
126
|
+
onNone: () => Effect(Option.none),
|
|
105
127
|
onSome: (_) => jsonSchema(_).map(Option.some)
|
|
106
128
|
})
|
|
107
129
|
)
|
|
108
|
-
const makeReqHeadersSchema = Effect
|
|
130
|
+
const makeReqHeadersSchema = Effect(Option.fromNullable(Req.Headers)).flatMap((_) =>
|
|
109
131
|
_.match({
|
|
110
|
-
onNone: () => Effect
|
|
132
|
+
onNone: () => Effect(Option.none),
|
|
111
133
|
onSome: (_) => jsonSchema(_).map(Option.some)
|
|
112
134
|
})
|
|
113
135
|
)
|
|
114
|
-
const makeReqCookieSchema = Effect
|
|
136
|
+
const makeReqCookieSchema = Effect(Option.fromNullable(Req.Cookie)).flatMap((_) =>
|
|
115
137
|
_.match({
|
|
116
|
-
onNone: () => Effect
|
|
138
|
+
onNone: () => Effect(Option.none),
|
|
117
139
|
onSome: (_) => jsonSchema(_).map(Option.some)
|
|
118
140
|
})
|
|
119
141
|
)
|
|
120
|
-
const makeReqPathSchema = Effect
|
|
142
|
+
const makeReqPathSchema = Effect(Option.fromNullable(Req.Path)).flatMap((_) =>
|
|
121
143
|
_.match({
|
|
122
|
-
onNone: () => Effect
|
|
144
|
+
onNone: () => Effect(Option.none),
|
|
123
145
|
onSome: (_) => jsonSchema(_).map(Option.some)
|
|
124
146
|
})
|
|
125
147
|
)
|
|
126
|
-
const makeReqBodySchema = Effect
|
|
148
|
+
const makeReqBodySchema = Effect(Option.fromNullable(Req.Body)).flatMap((_) =>
|
|
127
149
|
_.match({
|
|
128
|
-
onNone: () => Effect
|
|
150
|
+
onNone: () => Effect(Option.none),
|
|
129
151
|
onSome: (_) => jsonSchema(_).map(Option.some)
|
|
130
152
|
})
|
|
131
153
|
)
|
|
@@ -136,7 +158,7 @@ export function makeFromSchema<ResA>(
|
|
|
136
158
|
function makeParameters(inn: ParameterLocation) {
|
|
137
159
|
return (a: Option<JSONSchema | SubSchema>) => {
|
|
138
160
|
return a
|
|
139
|
-
.flatMap((o) => (isObjectSchema(o) ? Option
|
|
161
|
+
.flatMap((o) => (isObjectSchema(o) ? Option(o) : Option.none))
|
|
140
162
|
.map((x) => {
|
|
141
163
|
// eslint-disable-next-line @typescript-eslint/no-non-null-assertion
|
|
142
164
|
return Object.keys(x.properties!).map((p) => {
|
package/_src/api/setupRequest.ts
CHANGED
|
@@ -1,16 +1,15 @@
|
|
|
1
1
|
import { RequestId } from "@effect-app/prelude/ids"
|
|
2
2
|
import { RequestContext } from "../RequestContext.js"
|
|
3
|
-
import { RequestContextContainer
|
|
3
|
+
import { RequestContextContainer } from "../services/RequestContextContainer.js"
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
6
|
* @tsplus fluent effect/io/Effect setupRequestFromWith
|
|
7
7
|
*/
|
|
8
8
|
export function setupReq3<R, E, A>(self: Effect<R, E, A>, name: string) {
|
|
9
|
-
return makeInternalRequestContext(name)
|
|
10
|
-
|
|
9
|
+
return makeInternalRequestContext(name)
|
|
10
|
+
.flatMap((rc) => RequestContextContainer.flatMap((_) => _.start(rc)))
|
|
11
|
+
> self
|
|
11
12
|
.withRequestSpan
|
|
12
|
-
.provideService(RequestContextContainer, new RequestContextContainerImpl(rc))
|
|
13
|
-
)
|
|
14
13
|
}
|
|
15
14
|
|
|
16
15
|
function makeInternalRequestContext(name: string) {
|
|
@@ -27,8 +26,10 @@ function makeInternalRequestContext(name: string) {
|
|
|
27
26
|
|
|
28
27
|
/** @tsplus getter effect/io/Effect withRequestSpan */
|
|
29
28
|
export const withRequestSpan = <R, E, A>(f: Effect<R, E, A>) =>
|
|
30
|
-
RequestContextContainer
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
29
|
+
RequestContextContainer
|
|
30
|
+
.get
|
|
31
|
+
.flatMap((ctx) =>
|
|
32
|
+
f
|
|
33
|
+
.withSpan(`request[${ctx.name}]#${ctx.id}`)
|
|
34
|
+
.withLogSpan("request")
|
|
35
|
+
)
|
package/_src/errorReporter.ts
CHANGED
|
@@ -8,7 +8,7 @@ const reportAppError = reportError((cause) => new RequestException(cause))
|
|
|
8
8
|
|
|
9
9
|
const make = Effect.sync((): Operations => {
|
|
10
10
|
const ops = new Map<OperationId, Operation>()
|
|
11
|
-
const makeOp = Effect
|
|
11
|
+
const makeOp = Effect(OperationId.make())
|
|
12
12
|
|
|
13
13
|
const cleanup = Effect.sync(() => {
|
|
14
14
|
const before = new Date().subHours(1)
|
|
@@ -29,7 +29,7 @@ const make = Effect.sync((): Operations => {
|
|
|
29
29
|
})
|
|
30
30
|
}
|
|
31
31
|
function findOp(id: OperationId) {
|
|
32
|
-
return Effect
|
|
32
|
+
return Effect(Option.fromNullable(ops.get(id)))
|
|
33
33
|
}
|
|
34
34
|
function finishOp(id: OperationId, exit: Exit<unknown, unknown>) {
|
|
35
35
|
return findOp(id).flatMap((_) =>
|
|
@@ -52,8 +52,8 @@ const make = Effect.sync((): Operations => {
|
|
|
52
52
|
.failureOption
|
|
53
53
|
.flatMap((_) =>
|
|
54
54
|
typeof _ === "object" && _ !== null && "message" in _ && LongString.Guard(_.message)
|
|
55
|
-
? Option
|
|
56
|
-
: Option.none
|
|
55
|
+
? Option(_.message)
|
|
56
|
+
: Option.none
|
|
57
57
|
)
|
|
58
58
|
.value ?? null
|
|
59
59
|
})
|
|
@@ -75,7 +75,7 @@ const make = Effect.sync((): Operations => {
|
|
|
75
75
|
cleanup,
|
|
76
76
|
register: makeOp
|
|
77
77
|
.tap((id) =>
|
|
78
|
-
|
|
78
|
+
Effect.annotateLogscoped("operationId", id)
|
|
79
79
|
> addOp(id).acquireRelease(
|
|
80
80
|
(_, exit) => finishOp(id, exit)
|
|
81
81
|
)
|
|
@@ -42,7 +42,7 @@ export function reportNonInterruptedFailure(context?: Record<string, unknown>) {
|
|
|
42
42
|
.exit
|
|
43
43
|
.flatMap((result) =>
|
|
44
44
|
result.match(
|
|
45
|
-
{ onFailure: (cause) => report(cause).map(() => result), onSuccess: () => Effect
|
|
45
|
+
{ onFailure: (cause) => report(cause).map(() => result), onSuccess: () => Effect(result) }
|
|
46
46
|
)
|
|
47
47
|
)
|
|
48
48
|
}
|
|
@@ -43,7 +43,7 @@ export function makeMemQueue<
|
|
|
43
43
|
messages
|
|
44
44
|
.forEachEffect((m) =>
|
|
45
45
|
// we JSON encode, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
46
|
-
Effect
|
|
46
|
+
Effect(
|
|
47
47
|
JSON.stringify(
|
|
48
48
|
encoder({ body: m, meta: requestContext })
|
|
49
49
|
)
|
|
@@ -60,7 +60,7 @@ export function makeMemQueue<
|
|
|
60
60
|
const silenceAndReportError = reportNonInterruptedFailure({ name: "MemQueue.drain." + queueDrainName })
|
|
61
61
|
const processMessage = (msg: string) =>
|
|
62
62
|
// we JSON parse, because that is what the wire also does, and it reveals holes in e.g unknown encoders (Date->String)
|
|
63
|
-
Effect
|
|
63
|
+
Effect(JSON.parse(msg))
|
|
64
64
|
.flatMap(parseDrain)
|
|
65
65
|
.orDie
|
|
66
66
|
.flatMap(({ body, meta }) =>
|
|
@@ -81,7 +81,7 @@ export function makeServiceBusQueue<
|
|
|
81
81
|
return yield* $(
|
|
82
82
|
subscribe({
|
|
83
83
|
processMessage: (x) => processMessage(x.body).uninterruptible,
|
|
84
|
-
processError: (err) => Effect
|
|
84
|
+
processError: (err) => Effect(captureException(err.error))
|
|
85
85
|
})
|
|
86
86
|
.provide(receiverLayer)
|
|
87
87
|
)
|
|
@@ -7,9 +7,8 @@ import type { InvalidStateError, OptimisticConcurrencyException } from "../error
|
|
|
7
7
|
import { NotFoundError } from "../errors.js"
|
|
8
8
|
import { ContextMap } from "../services/Store.js"
|
|
9
9
|
import type { Filter } from "../services/Store.js"
|
|
10
|
-
import type { RequestContextContainer } from "./RequestContextContainer.js"
|
|
11
10
|
|
|
12
|
-
export type RequestCTX = ContextMap
|
|
11
|
+
export type RequestCTX = ContextMap
|
|
13
12
|
/**
|
|
14
13
|
* @tsplus type Repository
|
|
15
14
|
*/
|
|
@@ -155,7 +154,7 @@ export function project<
|
|
|
155
154
|
self: Repository<T, PM, Evt, ItemType>,
|
|
156
155
|
map: { filter?: Filter<PM>; collect?: (t: PM) => Option<S>; limit?: number; skip?: number }
|
|
157
156
|
) {
|
|
158
|
-
return self.projectEffect(Effect
|
|
157
|
+
return self.projectEffect(Effect(map))
|
|
159
158
|
}
|
|
160
159
|
|
|
161
160
|
/**
|
|
@@ -235,7 +234,7 @@ export function query<
|
|
|
235
234
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
236
235
|
map: { filter?: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number }
|
|
237
236
|
) {
|
|
238
|
-
return self.queryEffect(Effect
|
|
237
|
+
return self.queryEffect(Effect(map))
|
|
239
238
|
}
|
|
240
239
|
|
|
241
240
|
/**
|
|
@@ -252,7 +251,7 @@ export function queryOne<
|
|
|
252
251
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
253
252
|
map: { filter?: Filter<PM>; collect?: (t: T) => Option<S> }
|
|
254
253
|
) {
|
|
255
|
-
return self.queryOneEffect(Effect
|
|
254
|
+
return self.queryOneEffect(Effect(map))
|
|
256
255
|
}
|
|
257
256
|
|
|
258
257
|
/**
|
|
@@ -290,7 +289,7 @@ export function queryAndSavePure<
|
|
|
290
289
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
291
290
|
map: { filter: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number }
|
|
292
291
|
) {
|
|
293
|
-
return self.queryAndSavePureEffect(Effect
|
|
292
|
+
return self.queryAndSavePureEffect(Effect(map))
|
|
294
293
|
}
|
|
295
294
|
|
|
296
295
|
/**
|
|
@@ -443,7 +442,7 @@ export function queryAndSavePureBatched<
|
|
|
443
442
|
map: { filter: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number },
|
|
444
443
|
batchSize = 100
|
|
445
444
|
) {
|
|
446
|
-
return self.queryAndSavePureEffectBatched(Effect
|
|
445
|
+
return self.queryAndSavePureEffectBatched(Effect(map), batchSize)
|
|
447
446
|
}
|
|
448
447
|
|
|
449
448
|
/**
|
|
@@ -536,7 +535,7 @@ export interface OneDSLExt<T, Evt> {
|
|
|
536
535
|
* @tsplus fluent DSLExt updateWith
|
|
537
536
|
*/
|
|
538
537
|
export function updateWithOne<T, Evt, S1 extends T, S2 extends T>(self: OneDSL<T, Evt>, upd: (item: S1) => S2) {
|
|
539
|
-
return self.update((_: S1) => Effect
|
|
538
|
+
return self.update((_: S1) => Effect(upd(_)))
|
|
540
539
|
}
|
|
541
540
|
|
|
542
541
|
/**
|
|
@@ -546,7 +545,7 @@ export function updateWith<T, Evt, S1 extends T, S2 extends T>(
|
|
|
546
545
|
self: AllDSL<T, Evt>,
|
|
547
546
|
upd: (item: S1[]) => S2[]
|
|
548
547
|
) {
|
|
549
|
-
return self.update((_: S1[]) => Effect
|
|
548
|
+
return self.update((_: S1[]) => Effect(upd(_)))
|
|
550
549
|
}
|
|
551
550
|
|
|
552
551
|
export function makeOneDSL<T, Evt>(): OneDSL<T, Evt> {
|
|
@@ -603,14 +602,14 @@ export function makeDSL<S1, S2, Evt>() {
|
|
|
603
602
|
export interface DSLExt<S1, S2, Evt> extends ReturnType<typeof makeDSL<S1, S2, Evt>> {}
|
|
604
603
|
|
|
605
604
|
export function ifAny<T, R, E, A>(fn: (items: NonEmptyReadonlyArray<T>) => Effect<R, E, A>) {
|
|
606
|
-
return (items: Iterable<T>) => Effect
|
|
605
|
+
return (items: Iterable<T>) => Effect(items.toNonEmptyArray).flatMapOpt(fn)
|
|
607
606
|
}
|
|
608
607
|
|
|
609
608
|
/**
|
|
610
609
|
* @tsplus fluent Iterable ifAny
|
|
611
610
|
*/
|
|
612
611
|
export function ifAny_<T, R, E, A>(items: Iterable<T>, fn: (items: NonEmptyReadonlyArray<T>) => Effect<R, E, A>) {
|
|
613
|
-
return Effect
|
|
612
|
+
return Effect(items.toNonEmptyArray).flatMapOpt(fn)
|
|
614
613
|
}
|
|
615
614
|
|
|
616
615
|
/**
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import type { ParserEnv } from "@effect-app/schema/custom/Parser"
|
|
2
2
|
import type { Repository, RequestCTX } from "./Repository.js"
|
|
3
|
-
import type { RequestContextContainer } from "./RequestContextContainer.js"
|
|
4
3
|
import { ContextMap, StoreMaker } from "./Store.js"
|
|
5
4
|
import type { Filter, StoreConfig, Where } from "./Store.js"
|
|
6
5
|
import type {} from "effect/Equal"
|
|
7
6
|
import type {} from "effect/Hash"
|
|
7
|
+
import type { Opt } from "@effect-app/core/Option"
|
|
8
8
|
import { makeCodec } from "@effect-app/infra/api/codec"
|
|
9
9
|
import { makeFilters } from "@effect-app/infra/filter"
|
|
10
|
-
import type {
|
|
10
|
+
import type { Schema } from "@effect-app/prelude"
|
|
11
11
|
import { EParserFor } from "@effect-app/prelude/schema"
|
|
12
12
|
import type { InvalidStateError, OptimisticConcurrencyException } from "../errors.js"
|
|
13
13
|
|
|
@@ -20,12 +20,12 @@ export const RepositoryBase = <Service>() => {
|
|
|
20
20
|
) => {
|
|
21
21
|
abstract class RepositoryBaseC implements Repository<T, PM, Evt, ItemType> {
|
|
22
22
|
itemType: ItemType = itemType
|
|
23
|
-
abstract find: (id: T["id"]) => Effect<
|
|
23
|
+
abstract find: (id: T["id"]) => Effect<RequestCTX, never, Opt<T>>
|
|
24
24
|
abstract all: Effect<ContextMap, never, T[]>
|
|
25
25
|
abstract saveAndPublish: (
|
|
26
26
|
items: Iterable<T>,
|
|
27
27
|
events?: Iterable<Evt>
|
|
28
|
-
) => Effect<
|
|
28
|
+
) => Effect<RequestCTX, InvalidStateError | OptimisticConcurrencyException, void>
|
|
29
29
|
abstract utils: {
|
|
30
30
|
mapReverse: (
|
|
31
31
|
pm: PM,
|
|
@@ -38,7 +38,7 @@ export const RepositoryBase = <Service>() => {
|
|
|
38
38
|
abstract removeAndPublish: (
|
|
39
39
|
items: Iterable<T>,
|
|
40
40
|
events?: Iterable<Evt>
|
|
41
|
-
) => Effect<
|
|
41
|
+
) => Effect<RequestCTX, never, void>
|
|
42
42
|
static where = makeWhere<PM>()
|
|
43
43
|
static flatMap<R1, E1, B>(f: (a: Service) => Effect<R1, E1, B>): Effect<Service | R1, E1, B> {
|
|
44
44
|
return Effect.flatMap(this as unknown as Tag<Service, Service>, f)
|
|
@@ -129,8 +129,7 @@ export function makeRepo<
|
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
const saveAllE = (a: Iterable<E>) =>
|
|
132
|
-
Effect
|
|
133
|
-
.sync(() => a.toNonEmptyArray)
|
|
132
|
+
Effect(a.toNonEmptyArray)
|
|
134
133
|
.flatMapOpt((a) =>
|
|
135
134
|
Do(($) => {
|
|
136
135
|
const { get, set } = $(ContextMap)
|
|
@@ -145,8 +144,7 @@ export function makeRepo<
|
|
|
145
144
|
|
|
146
145
|
const saveAndPublish = (items: Iterable<T>, events: Iterable<Evt> = []) =>
|
|
147
146
|
saveAll(items)
|
|
148
|
-
> Effect
|
|
149
|
-
.sync(() => events.toNonEmptyArray)
|
|
147
|
+
> Effect(events.toNonEmptyArray)
|
|
150
148
|
// TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
|
|
151
149
|
.flatMapOpt(publishEvents)
|
|
152
150
|
|
|
@@ -160,8 +158,7 @@ export function makeRepo<
|
|
|
160
158
|
set(e.id, undefined)
|
|
161
159
|
}
|
|
162
160
|
yield* $(
|
|
163
|
-
Effect
|
|
164
|
-
.sync(() => events.toNonEmptyArray)
|
|
161
|
+
Effect(events.toNonEmptyArray)
|
|
165
162
|
// TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
|
|
166
163
|
.flatMapOpt(publishEvents)
|
|
167
164
|
)
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RequestId } from "@effect-app/prelude/ids"
|
|
1
2
|
import { RequestContext } from "../RequestContext.js"
|
|
2
3
|
|
|
3
4
|
/**
|
|
@@ -5,7 +6,8 @@ import { RequestContext } from "../RequestContext.js"
|
|
|
5
6
|
*/
|
|
6
7
|
export abstract class RequestContextContainer extends TagClass<RequestContextContainer>() {
|
|
7
8
|
abstract readonly requestContext: Effect<never, never, RequestContext>
|
|
8
|
-
abstract readonly update: (f: (rc: RequestContext) => RequestContext) => Effect<never, never,
|
|
9
|
+
abstract readonly update: (f: (rc: RequestContext) => RequestContext) => Effect<never, never, RequestContext>
|
|
10
|
+
abstract readonly start: (f: RequestContext) => Effect<never, never, void>
|
|
9
11
|
static get get(): Effect<RequestContextContainer, never, RequestContext> {
|
|
10
12
|
return RequestContextContainer.flatMap((_) => _.requestContext)
|
|
11
13
|
}
|
|
@@ -15,16 +17,18 @@ export abstract class RequestContextContainer extends TagClass<RequestContextCon
|
|
|
15
17
|
.flatMap((requestContext) =>
|
|
16
18
|
requestContext.isSome()
|
|
17
19
|
? requestContext.value.requestContext.map(Option.some)
|
|
18
|
-
: Effect
|
|
20
|
+
: Effect(Option.none)
|
|
19
21
|
)
|
|
20
22
|
}
|
|
21
23
|
}
|
|
22
24
|
|
|
23
25
|
export class RequestContextContainerImpl extends RequestContextContainer {
|
|
24
|
-
#ref:
|
|
25
|
-
constructor(
|
|
26
|
+
#ref: FiberRef<RequestContext>
|
|
27
|
+
constructor() {
|
|
26
28
|
super()
|
|
27
|
-
this.#ref =
|
|
29
|
+
this.#ref = FiberRef.unsafeMake<RequestContext>(
|
|
30
|
+
new RequestContext({ name: ReasonableString("root"), rootId: RequestId("root"), locale: "en" })
|
|
31
|
+
)
|
|
28
32
|
}
|
|
29
33
|
|
|
30
34
|
override get requestContext() {
|
|
@@ -32,13 +36,14 @@ export class RequestContextContainerImpl extends RequestContextContainer {
|
|
|
32
36
|
}
|
|
33
37
|
|
|
34
38
|
override update = (f: (a: RequestContext) => RequestContext) => this.#ref.getAndUpdate(f)
|
|
39
|
+
override start = (a: RequestContext) => this.#ref.set(a)
|
|
35
40
|
}
|
|
36
41
|
|
|
37
42
|
/**
|
|
38
43
|
* @tsplus static RequestContextContainer.Ops live
|
|
39
44
|
*/
|
|
40
|
-
export function live(
|
|
41
|
-
return new RequestContextContainerImpl(
|
|
45
|
+
export function live() {
|
|
46
|
+
return new RequestContextContainerImpl()
|
|
42
47
|
}
|
|
43
48
|
|
|
44
49
|
/** @tsplus static RequestContext.Ops Tag */
|