@effect-app/infra 0.85.0-next.3 → 0.85.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 +3 -25
- 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 +9 -9
- package/_src/services/RepositoryBase.ts +6 -8
- 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 +31 -31
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +17 -18
- package/dist/services/RepositoryBase.d.ts +12 -11
- 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
|
)
|
|
@@ -155,7 +155,7 @@ export function project<
|
|
|
155
155
|
self: Repository<T, PM, Evt, ItemType>,
|
|
156
156
|
map: { filter?: Filter<PM>; collect?: (t: PM) => Option<S>; limit?: number; skip?: number }
|
|
157
157
|
) {
|
|
158
|
-
return self.projectEffect(Effect
|
|
158
|
+
return self.projectEffect(Effect(map))
|
|
159
159
|
}
|
|
160
160
|
|
|
161
161
|
/**
|
|
@@ -235,7 +235,7 @@ export function query<
|
|
|
235
235
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
236
236
|
map: { filter?: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number }
|
|
237
237
|
) {
|
|
238
|
-
return self.queryEffect(Effect
|
|
238
|
+
return self.queryEffect(Effect(map))
|
|
239
239
|
}
|
|
240
240
|
|
|
241
241
|
/**
|
|
@@ -252,7 +252,7 @@ export function queryOne<
|
|
|
252
252
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
253
253
|
map: { filter?: Filter<PM>; collect?: (t: T) => Option<S> }
|
|
254
254
|
) {
|
|
255
|
-
return self.queryOneEffect(Effect
|
|
255
|
+
return self.queryOneEffect(Effect(map))
|
|
256
256
|
}
|
|
257
257
|
|
|
258
258
|
/**
|
|
@@ -290,7 +290,7 @@ export function queryAndSavePure<
|
|
|
290
290
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
291
291
|
map: { filter: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number }
|
|
292
292
|
) {
|
|
293
|
-
return self.queryAndSavePureEffect(Effect
|
|
293
|
+
return self.queryAndSavePureEffect(Effect(map))
|
|
294
294
|
}
|
|
295
295
|
|
|
296
296
|
/**
|
|
@@ -443,7 +443,7 @@ export function queryAndSavePureBatched<
|
|
|
443
443
|
map: { filter: Filter<PM>; collect?: (t: T) => Option<S>; limit?: number; skip?: number },
|
|
444
444
|
batchSize = 100
|
|
445
445
|
) {
|
|
446
|
-
return self.queryAndSavePureEffectBatched(Effect
|
|
446
|
+
return self.queryAndSavePureEffectBatched(Effect(map), batchSize)
|
|
447
447
|
}
|
|
448
448
|
|
|
449
449
|
/**
|
|
@@ -536,7 +536,7 @@ export interface OneDSLExt<T, Evt> {
|
|
|
536
536
|
* @tsplus fluent DSLExt updateWith
|
|
537
537
|
*/
|
|
538
538
|
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
|
|
539
|
+
return self.update((_: S1) => Effect(upd(_)))
|
|
540
540
|
}
|
|
541
541
|
|
|
542
542
|
/**
|
|
@@ -546,7 +546,7 @@ export function updateWith<T, Evt, S1 extends T, S2 extends T>(
|
|
|
546
546
|
self: AllDSL<T, Evt>,
|
|
547
547
|
upd: (item: S1[]) => S2[]
|
|
548
548
|
) {
|
|
549
|
-
return self.update((_: S1[]) => Effect
|
|
549
|
+
return self.update((_: S1[]) => Effect(upd(_)))
|
|
550
550
|
}
|
|
551
551
|
|
|
552
552
|
export function makeOneDSL<T, Evt>(): OneDSL<T, Evt> {
|
|
@@ -603,14 +603,14 @@ export function makeDSL<S1, S2, Evt>() {
|
|
|
603
603
|
export interface DSLExt<S1, S2, Evt> extends ReturnType<typeof makeDSL<S1, S2, Evt>> {}
|
|
604
604
|
|
|
605
605
|
export function ifAny<T, R, E, A>(fn: (items: NonEmptyReadonlyArray<T>) => Effect<R, E, A>) {
|
|
606
|
-
return (items: Iterable<T>) => Effect
|
|
606
|
+
return (items: Iterable<T>) => Effect(items.toNonEmptyArray).flatMapOpt(fn)
|
|
607
607
|
}
|
|
608
608
|
|
|
609
609
|
/**
|
|
610
610
|
* @tsplus fluent Iterable ifAny
|
|
611
611
|
*/
|
|
612
612
|
export function ifAny_<T, R, E, A>(items: Iterable<T>, fn: (items: NonEmptyReadonlyArray<T>) => Effect<R, E, A>) {
|
|
613
|
-
return Effect
|
|
613
|
+
return Effect(items.toNonEmptyArray).flatMapOpt(fn)
|
|
614
614
|
}
|
|
615
615
|
|
|
616
616
|
/**
|
|
@@ -5,9 +5,10 @@ import { ContextMap, StoreMaker } from "./Store.js"
|
|
|
5
5
|
import type { Filter, StoreConfig, Where } from "./Store.js"
|
|
6
6
|
import type {} from "effect/Equal"
|
|
7
7
|
import type {} from "effect/Hash"
|
|
8
|
+
import type { Opt } from "@effect-app/core/Option"
|
|
8
9
|
import { makeCodec } from "@effect-app/infra/api/codec"
|
|
9
10
|
import { makeFilters } from "@effect-app/infra/filter"
|
|
10
|
-
import type {
|
|
11
|
+
import type { Schema } from "@effect-app/prelude"
|
|
11
12
|
import { EParserFor } from "@effect-app/prelude/schema"
|
|
12
13
|
import type { InvalidStateError, OptimisticConcurrencyException } from "../errors.js"
|
|
13
14
|
|
|
@@ -20,7 +21,7 @@ export const RepositoryBase = <Service>() => {
|
|
|
20
21
|
) => {
|
|
21
22
|
abstract class RepositoryBaseC implements Repository<T, PM, Evt, ItemType> {
|
|
22
23
|
itemType: ItemType = itemType
|
|
23
|
-
abstract find: (id: T["id"]) => Effect<ContextMap | RequestContextContainer, never,
|
|
24
|
+
abstract find: (id: T["id"]) => Effect<ContextMap | RequestContextContainer, never, Opt<T>>
|
|
24
25
|
abstract all: Effect<ContextMap, never, T[]>
|
|
25
26
|
abstract saveAndPublish: (
|
|
26
27
|
items: Iterable<T>,
|
|
@@ -129,8 +130,7 @@ export function makeRepo<
|
|
|
129
130
|
}
|
|
130
131
|
|
|
131
132
|
const saveAllE = (a: Iterable<E>) =>
|
|
132
|
-
Effect
|
|
133
|
-
.sync(() => a.toNonEmptyArray)
|
|
133
|
+
Effect(a.toNonEmptyArray)
|
|
134
134
|
.flatMapOpt((a) =>
|
|
135
135
|
Do(($) => {
|
|
136
136
|
const { get, set } = $(ContextMap)
|
|
@@ -145,8 +145,7 @@ export function makeRepo<
|
|
|
145
145
|
|
|
146
146
|
const saveAndPublish = (items: Iterable<T>, events: Iterable<Evt> = []) =>
|
|
147
147
|
saveAll(items)
|
|
148
|
-
> Effect
|
|
149
|
-
.sync(() => events.toNonEmptyArray)
|
|
148
|
+
> Effect(events.toNonEmptyArray)
|
|
150
149
|
// TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
|
|
151
150
|
.flatMapOpt(publishEvents)
|
|
152
151
|
|
|
@@ -160,8 +159,7 @@ export function makeRepo<
|
|
|
160
159
|
set(e.id, undefined)
|
|
161
160
|
}
|
|
162
161
|
yield* $(
|
|
163
|
-
Effect
|
|
164
|
-
.sync(() => events.toNonEmptyArray)
|
|
162
|
+
Effect(events.toNonEmptyArray)
|
|
165
163
|
// TODO: for full consistency the events should be stored within the same database transaction, and then picked up.
|
|
166
164
|
.flatMapOpt(publishEvents)
|
|
167
165
|
)
|
|
@@ -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 */
|