@effect-app/infra 0.133.0-next.4 → 0.133.0-next.40
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 +324 -0
- package/_cjs/RequestContext.cjs +9 -10
- package/_cjs/RequestContext.cjs.map +1 -1
- package/_cjs/_ext/Array.cjs +4 -3
- package/_cjs/_ext/Array.cjs.map +1 -1
- package/_cjs/_global.ext.cjs +1 -25
- package/_cjs/_global.ext.cjs.map +1 -1
- package/_cjs/_global.schema.cjs +1 -1
- package/_cjs/api/codec.cjs +1 -1
- package/_cjs/api/codec.cjs.map +1 -1
- package/_cjs/api/express/schema/jwt.cjs +1 -1
- package/_cjs/api/setupRequest.cjs +31 -30
- package/_cjs/api/setupRequest.cjs.map +1 -1
- package/_cjs/errors.cjs +6 -2
- package/_cjs/errors.cjs.map +1 -1
- package/_cjs/services/Operations/live.cjs +11 -12
- package/_cjs/services/Operations/live.cjs.map +1 -1
- package/_cjs/services/QueueMaker/memQueue.cjs +10 -11
- package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/sbqueue.cjs +4 -4
- package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
- package/_cjs/services/QueueMaker/service.cjs +1 -1
- package/_cjs/services/Repository.cjs +2 -2
- package/_cjs/services/Repository.cjs.map +1 -1
- package/_cjs/services/RepositoryBase.cjs +12 -5
- package/_cjs/services/RepositoryBase.cjs.map +1 -1
- package/_cjs/services/RequestContextContainer.cjs +3 -3
- package/_cjs/services/RequestContextContainer.cjs.map +1 -1
- package/_cjs/services/simpledb/redisdb.cjs +1 -1
- package/_cjs/services/simpledb/shared.cjs +1 -1
- package/_cjs/services/simpledb/shared.cjs.map +1 -1
- package/_cjs/test.arbs.cjs +9 -0
- package/_cjs/test.arbs.cjs.map +1 -0
- package/_src/RequestContext.ts +9 -12
- package/_src/_ext/Array.ts +3 -3
- package/_src/_global.ext.ts +2 -27
- package/_src/_global.schema.ts +1 -1
- package/_src/api/codec.ts +1 -1
- package/_src/api/express/schema/jwt.ts +1 -1
- package/_src/api/express/schema/routing.ts +1 -1
- package/_src/api/setupRequest.ts +39 -34
- package/_src/errors.ts +9 -5
- package/_src/services/QueueMaker/memQueue.ts +3 -3
- package/_src/services/QueueMaker/sbqueue.ts +3 -3
- package/_src/services/Repository.ts +37 -40
- package/_src/services/RepositoryBase.ts +24 -19
- package/_src/services/Store/service.ts +4 -4
- package/_src/services/simpledb/redisdb.ts +1 -1
- package/_src/services/simpledb/shared.ts +1 -1
- package/_src/test.arbs.ts +23 -0
- package/dist/RequestContext.d.ts +72 -24
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/RequestContext.js +11 -12
- package/dist/_ext/Array.d.ts +2 -2
- package/dist/_ext/Array.d.ts.map +1 -1
- package/dist/_ext/Array.js +5 -4
- package/dist/_global.ext.d.ts +1 -22
- package/dist/_global.ext.d.ts.map +1 -1
- package/dist/_global.ext.js +2 -18
- package/dist/_global.schema.d.ts +1 -1
- package/dist/_global.schema.d.ts.map +1 -1
- package/dist/_global.schema.js +2 -2
- package/dist/api/codec.d.ts +1 -1
- package/dist/api/codec.d.ts.map +1 -1
- package/dist/api/codec.js +2 -2
- package/dist/api/express/schema/jwt.d.ts +1 -1
- package/dist/api/express/schema/jwt.d.ts.map +1 -1
- package/dist/api/express/schema/jwt.js +2 -2
- package/dist/api/express/schema/routing.d.ts +1 -1
- package/dist/api/express/schema/routing.d.ts.map +1 -1
- package/dist/api/setupRequest.d.ts +4 -4
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +31 -37
- package/dist/errors.d.ts +4 -3
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +5 -2
- package/dist/services/Emailer/service.d.ts +1 -1
- package/dist/services/Operations/live.js +16 -17
- package/dist/services/Operations/service.d.ts +4 -4
- package/dist/services/Operations/service.d.ts.map +1 -1
- package/dist/services/QueueMaker/memQueue.d.ts +4 -4
- package/dist/services/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/services/QueueMaker/memQueue.js +10 -11
- 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 +4 -4
- package/dist/services/QueueMaker/service.d.ts +1 -1
- package/dist/services/QueueMaker/service.js +1 -1
- package/dist/services/Repository.d.ts +39 -39
- package/dist/services/Repository.d.ts.map +1 -1
- package/dist/services/Repository.js +3 -3
- package/dist/services/RepositoryBase.d.ts +16 -16
- package/dist/services/RepositoryBase.d.ts.map +1 -1
- package/dist/services/RepositoryBase.js +10 -6
- package/dist/services/RequestContextContainer.d.ts +3 -3
- package/dist/services/RequestContextContainer.js +3 -3
- package/dist/services/Store/service.d.ts +4 -4
- package/dist/services/Store/service.d.ts.map +1 -1
- package/dist/services/simpledb/cosmosdb.d.ts +2 -2
- package/dist/services/simpledb/diskdb.d.ts +2 -2
- package/dist/services/simpledb/memdb.d.ts +2 -2
- package/dist/services/simpledb/mongodb.d.ts +2 -2
- package/dist/services/simpledb/redisdb.d.ts +8 -4
- package/dist/services/simpledb/redisdb.d.ts.map +1 -1
- package/dist/services/simpledb/redisdb.js +2 -2
- package/dist/services/simpledb/shared.d.ts +7 -3
- package/dist/services/simpledb/shared.d.ts.map +1 -1
- package/dist/services/simpledb/shared.js +2 -2
- package/dist/services/simpledb/simpledb.d.ts +3 -3
- package/dist/test.arbs.d.ts +2 -0
- package/dist/test.arbs.d.ts.map +1 -0
- package/dist/test.arbs.js +6 -0
- package/package.json +19 -9
- package/_src/test.arbs.ts.bak +0 -27
package/_src/RequestContext.ts
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { S } from "@effect-app/prelude"
|
|
2
2
|
import { RequestId, UserProfileId } from "@effect-app/prelude/ids"
|
|
3
3
|
|
|
4
|
-
const fields = {
|
|
5
|
-
name: NonEmptyString255,
|
|
6
|
-
userProfile: struct({ sub: UserProfileId }).optional(),
|
|
7
|
-
locale: literal("en", "de"),
|
|
8
|
-
createdAt: Schema2.Date.withDefaultMake(() => new Date()) // TODO
|
|
9
|
-
} as const
|
|
10
|
-
|
|
11
4
|
@useClassFeaturesForSchema
|
|
12
5
|
export class RequestContextParent extends TaggedClass<
|
|
13
6
|
RequestContextParent
|
|
14
7
|
>()("RequestContext", {
|
|
15
8
|
id: RequestId,
|
|
16
|
-
|
|
9
|
+
name: NonEmptyString255,
|
|
10
|
+
userProfile: struct({ sub: UserProfileId }).optional(),
|
|
11
|
+
locale: literal("en", "de"),
|
|
12
|
+
createdAt: S.Date.withDefaultMake(() => new Date()) // TODO
|
|
17
13
|
}) {}
|
|
18
14
|
|
|
19
15
|
/**
|
|
@@ -21,14 +17,14 @@ export class RequestContextParent extends TaggedClass<
|
|
|
21
17
|
* @tsplus companion RequestContext.Ops
|
|
22
18
|
*/
|
|
23
19
|
@useClassFeaturesForSchema
|
|
24
|
-
export class RequestContext extends
|
|
20
|
+
export class RequestContext extends S.TaggedClass<
|
|
25
21
|
RequestContext
|
|
26
22
|
>()("RequestContext", {
|
|
23
|
+
...RequestContextParent.fields.$$.omit("id"),
|
|
27
24
|
id: RequestId.withDefault(),
|
|
28
25
|
rootId: RequestId,
|
|
29
26
|
parent: RequestContextParent.optional(),
|
|
30
|
-
namespace: NonEmptyString255.optional()
|
|
31
|
-
...fields
|
|
27
|
+
namespace: NonEmptyString255.optional()
|
|
32
28
|
// ...RequestContextParent.omit("id").extend({
|
|
33
29
|
// id: RequestId.withDefault(),
|
|
34
30
|
// rootId: RequestId,
|
|
@@ -36,6 +32,7 @@ export class RequestContext extends Schema2.TaggedClass<
|
|
|
36
32
|
// namespace: NonEmptyString255.optional()
|
|
37
33
|
// })
|
|
38
34
|
}) {
|
|
35
|
+
// static Tag = Context.Tag<RequestContext>()
|
|
39
36
|
static inherit(
|
|
40
37
|
this: void,
|
|
41
38
|
parent: RequestContext,
|
package/_src/_ext/Array.ts
CHANGED
|
@@ -9,14 +9,14 @@ import { NotFoundError } from "../errors.js"
|
|
|
9
9
|
* @tsplus fluent Array getFirstById
|
|
10
10
|
* @tsplus fluent ReadonlyArray getFirstById
|
|
11
11
|
*/
|
|
12
|
-
export function getFirstById_<A extends { id:
|
|
12
|
+
export function getFirstById_<A extends { id: unknown }, Type extends string>(
|
|
13
13
|
a: Iterable<A>,
|
|
14
|
-
id:
|
|
14
|
+
id: A["id"],
|
|
15
15
|
type: Type
|
|
16
16
|
) {
|
|
17
17
|
return Chunk
|
|
18
18
|
.fromIterable(a)
|
|
19
|
-
.findFirst((_) => _.id
|
|
19
|
+
.findFirst((_) => Equal.equals(_.id, id))
|
|
20
20
|
.encaseInEffect(() => new NotFoundError({ type, id }))
|
|
21
21
|
}
|
|
22
22
|
|
package/_src/_global.ext.ts
CHANGED
|
@@ -14,10 +14,8 @@ import type {} from "@effect-app/infra/services/Operations/live"
|
|
|
14
14
|
* @tsplus global
|
|
15
15
|
*/
|
|
16
16
|
import type {} from "@effect-app/infra/services/QueueMaker/errors"
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
// */
|
|
20
|
-
// import type {} from "@effect-app/infra/test.arbs"
|
|
17
|
+
|
|
18
|
+
import "@effect-app/infra/test.arbs"
|
|
21
19
|
/**
|
|
22
20
|
* @tsplus global
|
|
23
21
|
*/
|
|
@@ -36,26 +34,3 @@ import type {} from "@effect-app/infra/api/setupRequest"
|
|
|
36
34
|
* @tsplus global
|
|
37
35
|
*/
|
|
38
36
|
import {} from "@effect-app/infra/api/reportError"
|
|
39
|
-
import { S } from "@effect-app/schema/schema"
|
|
40
|
-
import type { ParseOptions } from "@effect/schema/AST"
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* @tsplus fluent effect/schema/Schema withDefault
|
|
44
|
-
*/
|
|
45
|
-
export const defaultDate = <From>(s: S.Schema<From, Date>) => S.withDefaultConstructor(s, () => new Date())
|
|
46
|
-
|
|
47
|
-
/**
|
|
48
|
-
* @tsplus fluent effect/schema/Schema withDefault
|
|
49
|
-
*/
|
|
50
|
-
export const defaultNullable = <From, To>(s: S.Schema<From, To | null>) => S.withDefaultConstructor(s, () => null)
|
|
51
|
-
|
|
52
|
-
/**
|
|
53
|
-
* @tsplus fluent effect/schema/Schema withDefault
|
|
54
|
-
*/
|
|
55
|
-
export const defaultArray = <From, T>(s: S.Schema<From, ReadonlyArray<T>>) => S.withDefaultConstructor(s, () => [])
|
|
56
|
-
|
|
57
|
-
/**
|
|
58
|
-
* @tsplus fluent effect/schema/Schema __call
|
|
59
|
-
*/
|
|
60
|
-
export const parseSync = <I, A>(self: S.Schema<I, A>, u: I, options?: ParseOptions | undefined) =>
|
|
61
|
-
S.parseSync(self)(u, options)
|
package/_src/_global.schema.ts
CHANGED
package/_src/api/codec.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-unsafe-assignment */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
3
3
|
/* eslint-disable @typescript-eslint/ban-types */
|
|
4
|
-
import * as S from "@effect-app/
|
|
4
|
+
import * as S from "@effect-app/schema"
|
|
5
5
|
|
|
6
6
|
import { jwtDecode } from "jwt-decode"
|
|
7
7
|
|
package/_src/api/setupRequest.ts
CHANGED
|
@@ -3,13 +3,6 @@ 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
|
-
/**
|
|
7
|
-
* @tsplus fluent effect/io/Effect setupRequestContextFromName
|
|
8
|
-
*/
|
|
9
|
-
export function setupRequestContextFromName<R, E, A>(self: Effect<R, E, A>, name: string) {
|
|
10
|
-
return makeInternalRequestContext(name).flatMap((rc) => setupRequestContext(self, rc))
|
|
11
|
-
}
|
|
12
|
-
|
|
13
6
|
function makeInternalRequestContext(name: string) {
|
|
14
7
|
return Effect.sync(() => {
|
|
15
8
|
const id = RequestId.make()
|
|
@@ -25,40 +18,52 @@ function makeInternalRequestContext(name: string) {
|
|
|
25
18
|
const withRequestSpan = <R, E, A>(f: Effect<R, E, A>) =>
|
|
26
19
|
RequestContextContainer
|
|
27
20
|
.get
|
|
28
|
-
.
|
|
21
|
+
.andThen((ctx) =>
|
|
29
22
|
f
|
|
30
|
-
.withSpan("request", {
|
|
31
|
-
attributes: {
|
|
32
|
-
"request.id": ctx.id,
|
|
33
|
-
"request.name": ctx.name,
|
|
34
|
-
"request.locale": ctx.locale,
|
|
35
|
-
"request.namespace": ctx.namespace,
|
|
36
|
-
...ctx.userProfile?.sub
|
|
37
|
-
? {
|
|
38
|
-
"request.user.sub": ctx
|
|
39
|
-
.userProfile
|
|
40
|
-
.sub,
|
|
41
|
-
"request.user.roles": "roles" in ctx
|
|
42
|
-
.userProfile
|
|
43
|
-
? ctx.userProfile.roles
|
|
44
|
-
: undefined
|
|
45
|
-
}
|
|
46
|
-
: {}
|
|
47
|
-
}
|
|
48
|
-
})
|
|
23
|
+
.withSpan("request", { attributes: ctx.spanAttributes })
|
|
49
24
|
// request context info is picked up directly in the logger for annotations.
|
|
50
25
|
.withLogSpan("request")
|
|
51
26
|
)
|
|
52
27
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
28
|
+
const setupContextMap = ContextMapContainer.andThen((_) => _.start).toLayerDiscard
|
|
29
|
+
|
|
30
|
+
// const RequestContextLiveFromRequestContext = (requestContext: RequestContext) =>
|
|
31
|
+
// RequestContext.Tag.makeLayer(requestContext)
|
|
32
|
+
// memoization problem
|
|
33
|
+
// const RequestContextLive = RequestContextContainer.get.toLayer(RequestContext.Tag)
|
|
34
|
+
const RequestContextStartLiveFromRequestContext = (requestContext: RequestContext) =>
|
|
35
|
+
setupContextMap
|
|
36
|
+
// .provideMerge(RequestContextLiveFromRequestContext(requestContext))
|
|
37
|
+
.provideMerge(
|
|
38
|
+
RequestContextContainer
|
|
39
|
+
.andThen((_) => _.start(requestContext))
|
|
40
|
+
.toLayerDiscard
|
|
41
|
+
)
|
|
42
|
+
|
|
43
|
+
const RequestContextStartLive = (requestContext: RequestContext | string) =>
|
|
44
|
+
typeof requestContext === "string"
|
|
45
|
+
? makeInternalRequestContext(requestContext)
|
|
46
|
+
.andThen(RequestContextStartLiveFromRequestContext)
|
|
47
|
+
.unwrapLayer
|
|
48
|
+
: RequestContextStartLiveFromRequestContext(requestContext)
|
|
57
49
|
|
|
58
50
|
/**
|
|
59
51
|
* @tsplus fluent effect/io/Effect setupRequestContext
|
|
60
52
|
*/
|
|
61
|
-
export function setupRequestContext<R, E, A>(self: Effect<R, E, A>, requestContext: RequestContext) {
|
|
62
|
-
return
|
|
63
|
-
|
|
53
|
+
export function setupRequestContext<R, E, A>(self: Effect<R, E, A>, requestContext: RequestContext | string) {
|
|
54
|
+
return self
|
|
55
|
+
.pipe(withRequestSpan)
|
|
56
|
+
.provide(RequestContextStartLive(requestContext))
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
const UpdateRequestContextLive = (f: (rc: RequestContext) => RequestContext) =>
|
|
60
|
+
RequestContextContainer.andThen((rcc) => rcc.update(f)).toLayerDiscard
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* @tsplus fluent effect/io/Effect updateRequestContext
|
|
64
|
+
*/
|
|
65
|
+
export function updateRequestContext<R, E, A>(self: Effect<R, E, A>, f: (rc: RequestContext) => RequestContext) {
|
|
66
|
+
return self
|
|
67
|
+
// .provideServiceEffect(RequestContext.Tag, RequestContextContainer.get)
|
|
68
|
+
.provide(UpdateRequestContextLive(f))
|
|
64
69
|
}
|
package/_src/errors.ts
CHANGED
|
@@ -2,16 +2,20 @@
|
|
|
2
2
|
import { makeFiberFailure } from "effect/Runtime"
|
|
3
3
|
|
|
4
4
|
/** @tsplus type NotFoundError */
|
|
5
|
-
export class NotFoundError<T extends string = string>
|
|
6
|
-
extends Data.TaggedError("NotFoundError")<{ message: string; type: T; id:
|
|
5
|
+
export class NotFoundError<Id, T extends string = string>
|
|
6
|
+
extends Data.TaggedError("NotFoundError")<{ message: string; type: T; id: Id }>
|
|
7
7
|
{
|
|
8
|
-
constructor(args: { readonly type: T; readonly id:
|
|
9
|
-
super({ ...args, message: `Didn't find ${args.type}#${args.id}` })
|
|
8
|
+
constructor(args: { readonly type: T; readonly id: Id }) {
|
|
9
|
+
super({ ...args, message: `Didn't find ${args.type}#${JSON.stringify(args.id)}` })
|
|
10
10
|
}
|
|
11
11
|
}
|
|
12
12
|
|
|
13
13
|
/** @tsplus type ValidationError */
|
|
14
|
-
export class ValidationError extends Data.TaggedError("ValidationError")<{ errors: ReadonlyArray<unknown> }> {
|
|
14
|
+
export class ValidationError extends Data.TaggedError("ValidationError")<{ errors: ReadonlyArray<unknown> }> {
|
|
15
|
+
override get message() {
|
|
16
|
+
return `Validation failed: ${this.errors.map((e) => JSON.stringify(e)).join(", ")}`
|
|
17
|
+
}
|
|
18
|
+
}
|
|
15
19
|
|
|
16
20
|
/** @tsplus type NotLoggedInError */
|
|
17
21
|
export class NotLoggedInError extends Data.TaggedError("NotLoggedInError")<{ message?: string | undefined }> {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { MemQueue } from "@effect-app/infra-adapters/memQueue"
|
|
2
2
|
import { RequestContext } from "@effect-app/infra/RequestContext"
|
|
3
|
-
import type {
|
|
3
|
+
import type { S } from "@effect-app/prelude"
|
|
4
4
|
import { RequestId } from "@effect-app/prelude/ids"
|
|
5
5
|
import { Tracer } from "effect"
|
|
6
6
|
import { RequestContextContainer } from "../RequestContextContainer.js"
|
|
@@ -17,8 +17,8 @@ export function makeMemQueue<
|
|
|
17
17
|
>(
|
|
18
18
|
queueName: string,
|
|
19
19
|
queueDrainName: string,
|
|
20
|
-
schema:
|
|
21
|
-
drainSchema:
|
|
20
|
+
schema: S.Schema<EvtE, Evt>,
|
|
21
|
+
drainSchema: S.Schema<unknown, DrainEvt>
|
|
22
22
|
) {
|
|
23
23
|
return Effect.gen(function*($) {
|
|
24
24
|
const mem = yield* $(MemQueue)
|
|
@@ -9,7 +9,7 @@ import {
|
|
|
9
9
|
import type {} from "@azure/service-bus"
|
|
10
10
|
import { captureException } from "@effect-app/infra/errorReporter"
|
|
11
11
|
import { RequestContext } from "@effect-app/infra/RequestContext"
|
|
12
|
-
import type {
|
|
12
|
+
import type { S } from "@effect-app/prelude"
|
|
13
13
|
import { RequestId } from "@effect-app/prelude/ids"
|
|
14
14
|
import { struct } from "@effect-app/schema"
|
|
15
15
|
import { Tracer } from "effect"
|
|
@@ -27,8 +27,8 @@ export function makeServiceBusQueue<
|
|
|
27
27
|
>(
|
|
28
28
|
_queueName: string,
|
|
29
29
|
queueDrainName: string,
|
|
30
|
-
schema:
|
|
31
|
-
drainSchema:
|
|
30
|
+
schema: S.Schema<EvtE, Evt>,
|
|
31
|
+
drainSchema: S.Schema<unknown, DrainEvt>
|
|
32
32
|
) {
|
|
33
33
|
const wireSchema = struct({
|
|
34
34
|
body: schema,
|
|
@@ -14,7 +14,7 @@ import type { QueryBuilder } from "./Store/filterApi/query.js"
|
|
|
14
14
|
* @tsplus type Repository
|
|
15
15
|
*/
|
|
16
16
|
export interface Repository<
|
|
17
|
-
T extends { id:
|
|
17
|
+
T extends { id: unknown },
|
|
18
18
|
PM extends PersistenceModelType<string>,
|
|
19
19
|
Evt,
|
|
20
20
|
ItemType extends string
|
|
@@ -36,7 +36,7 @@ export const AnyPureDSL: PureDSL<any, any, any> = {
|
|
|
36
36
|
* @tsplus fluent Repository get
|
|
37
37
|
*/
|
|
38
38
|
export function get<
|
|
39
|
-
T extends { id:
|
|
39
|
+
T extends { id: unknown },
|
|
40
40
|
PM extends PersistenceModelType<string>,
|
|
41
41
|
Evt,
|
|
42
42
|
ItemType extends string
|
|
@@ -51,7 +51,7 @@ export function get<
|
|
|
51
51
|
* @tsplus getter Repository log
|
|
52
52
|
*/
|
|
53
53
|
export function log<
|
|
54
|
-
T extends { id:
|
|
54
|
+
T extends { id: unknown },
|
|
55
55
|
PM extends PersistenceModelType<string>,
|
|
56
56
|
Evt,
|
|
57
57
|
ItemType extends string
|
|
@@ -64,7 +64,7 @@ export function log<
|
|
|
64
64
|
* @tsplus fluent Repository projectEffect
|
|
65
65
|
*/
|
|
66
66
|
export function projectEffect<
|
|
67
|
-
T extends { id:
|
|
67
|
+
T extends { id: unknown },
|
|
68
68
|
PM extends PersistenceModelType<string>,
|
|
69
69
|
Evt,
|
|
70
70
|
ItemType extends string,
|
|
@@ -85,7 +85,7 @@ export function projectEffect<
|
|
|
85
85
|
>
|
|
86
86
|
): Effect<R, E, S[]>
|
|
87
87
|
export function projectEffect<
|
|
88
|
-
T extends { id:
|
|
88
|
+
T extends { id: unknown },
|
|
89
89
|
PM extends PersistenceModelType<string>,
|
|
90
90
|
Evt,
|
|
91
91
|
ItemType extends string,
|
|
@@ -106,7 +106,7 @@ export function projectEffect<
|
|
|
106
106
|
>
|
|
107
107
|
): Effect<R, E, Pick<PM, U>[]>
|
|
108
108
|
export function projectEffect<
|
|
109
|
-
T extends { id:
|
|
109
|
+
T extends { id: unknown },
|
|
110
110
|
PM extends PersistenceModelType<string>,
|
|
111
111
|
Evt,
|
|
112
112
|
ItemType extends string,
|
|
@@ -142,7 +142,7 @@ export function projectEffect<
|
|
|
142
142
|
* @tsplus fluent Repository project
|
|
143
143
|
*/
|
|
144
144
|
export function project<
|
|
145
|
-
T extends { id:
|
|
145
|
+
T extends { id: unknown },
|
|
146
146
|
PM extends PersistenceModelType<string>,
|
|
147
147
|
Evt,
|
|
148
148
|
ItemType extends string,
|
|
@@ -157,7 +157,7 @@ export function project<
|
|
|
157
157
|
}
|
|
158
158
|
): Effect<never, never, S[]>
|
|
159
159
|
export function project<
|
|
160
|
-
T extends { id:
|
|
160
|
+
T extends { id: unknown },
|
|
161
161
|
PM extends PersistenceModelType<string>,
|
|
162
162
|
Evt,
|
|
163
163
|
ItemType extends string,
|
|
@@ -172,7 +172,7 @@ export function project<
|
|
|
172
172
|
}
|
|
173
173
|
): Effect<never, never, Pick<PM, U>[]>
|
|
174
174
|
export function project<
|
|
175
|
-
T extends { id:
|
|
175
|
+
T extends { id: unknown },
|
|
176
176
|
PM extends PersistenceModelType<string>,
|
|
177
177
|
Evt,
|
|
178
178
|
ItemType extends string,
|
|
@@ -196,7 +196,7 @@ export function project<
|
|
|
196
196
|
* @tsplus fluent Repository project
|
|
197
197
|
*/
|
|
198
198
|
export function count<
|
|
199
|
-
T extends { id:
|
|
199
|
+
T extends { id: unknown },
|
|
200
200
|
PM extends PersistenceModelType<string>,
|
|
201
201
|
Evt,
|
|
202
202
|
ItemType extends string
|
|
@@ -213,7 +213,7 @@ export function count<
|
|
|
213
213
|
* @tsplus fluent Repository queryEffect
|
|
214
214
|
*/
|
|
215
215
|
export function queryEffect<
|
|
216
|
-
T extends { id:
|
|
216
|
+
T extends { id: unknown },
|
|
217
217
|
PM extends PersistenceModelType<string>,
|
|
218
218
|
Evt,
|
|
219
219
|
ItemType extends string,
|
|
@@ -236,7 +236,7 @@ export function queryEffect<
|
|
|
236
236
|
* @tsplus fluent Repository queryOneEffect
|
|
237
237
|
*/
|
|
238
238
|
export function queryOneEffect<
|
|
239
|
-
T extends { id:
|
|
239
|
+
T extends { id: unknown },
|
|
240
240
|
PM extends PersistenceModelType<string>,
|
|
241
241
|
Evt,
|
|
242
242
|
ItemType extends string,
|
|
@@ -248,7 +248,7 @@ export function queryOneEffect<
|
|
|
248
248
|
map: Effect<R, E, { filter?: Filter<PM> }>
|
|
249
249
|
): Effect<R, E | NotFoundError<ItemType>, T>
|
|
250
250
|
export function queryOneEffect<
|
|
251
|
-
T extends { id:
|
|
251
|
+
T extends { id: unknown },
|
|
252
252
|
PM extends PersistenceModelType<string>,
|
|
253
253
|
Evt,
|
|
254
254
|
ItemType extends string,
|
|
@@ -261,7 +261,7 @@ export function queryOneEffect<
|
|
|
261
261
|
map: Effect<R, E, { filter?: Filter<PM>; collect: (t: T) => Option<S> }>
|
|
262
262
|
): Effect<R, E | NotFoundError<ItemType>, S>
|
|
263
263
|
export function queryOneEffect<
|
|
264
|
-
T extends { id:
|
|
264
|
+
T extends { id: unknown },
|
|
265
265
|
PM extends PersistenceModelType<string>,
|
|
266
266
|
Evt,
|
|
267
267
|
ItemType extends string,
|
|
@@ -272,7 +272,7 @@ export function queryOneEffect<
|
|
|
272
272
|
self: RepositoryBaseC<T, PM, Evt, ItemType>,
|
|
273
273
|
// TODO: think about collectPM, collectE, and collect(Parsed)
|
|
274
274
|
map: Effect<R, E, { filter?: Filter<PM>; collect?: (t: T) => Option<S> }>
|
|
275
|
-
): Effect<R, E | NotFoundError<ItemType>, S> {
|
|
275
|
+
): Effect<R, E | NotFoundError<T["id"], ItemType>, S> {
|
|
276
276
|
return map.flatMap((f) =>
|
|
277
277
|
(f.filter ? self.utils.filter({ filter: f.filter, limit: 1 }) : self.utils.all)
|
|
278
278
|
.flatMap((_) => self.utils.parseMany(_))
|
|
@@ -289,7 +289,7 @@ export function queryOneEffect<
|
|
|
289
289
|
* @tsplus fluent Repository query
|
|
290
290
|
*/
|
|
291
291
|
export function query<
|
|
292
|
-
T extends { id:
|
|
292
|
+
T extends { id: unknown },
|
|
293
293
|
PM extends PersistenceModelType<string>,
|
|
294
294
|
Evt,
|
|
295
295
|
ItemType extends string,
|
|
@@ -306,7 +306,7 @@ export function query<
|
|
|
306
306
|
* @tsplus fluent Repository queryOne
|
|
307
307
|
*/
|
|
308
308
|
export function queryOne<
|
|
309
|
-
T extends { id:
|
|
309
|
+
T extends { id: unknown },
|
|
310
310
|
PM extends PersistenceModelType<string>,
|
|
311
311
|
Evt,
|
|
312
312
|
ItemType extends string,
|
|
@@ -316,7 +316,7 @@ export function queryOne<
|
|
|
316
316
|
map: { filter?: Filter<PM>; collect: (t: T) => Option<S> }
|
|
317
317
|
): Effect<never, NotFoundError<ItemType>, S>
|
|
318
318
|
export function queryOne<
|
|
319
|
-
T extends { id:
|
|
319
|
+
T extends { id: unknown },
|
|
320
320
|
PM extends PersistenceModelType<string>,
|
|
321
321
|
Evt,
|
|
322
322
|
ItemType extends string
|
|
@@ -325,7 +325,7 @@ export function queryOne<
|
|
|
325
325
|
map: { filter?: Filter<PM> }
|
|
326
326
|
): Effect<never, NotFoundError<ItemType>, T>
|
|
327
327
|
export function queryOne<
|
|
328
|
-
T extends { id:
|
|
328
|
+
T extends { id: unknown },
|
|
329
329
|
PM extends PersistenceModelType<string>,
|
|
330
330
|
Evt,
|
|
331
331
|
ItemType extends string,
|
|
@@ -341,7 +341,7 @@ export function queryOne<
|
|
|
341
341
|
* @tsplus fluent Repository queryAndSaveOnePureEffect
|
|
342
342
|
*/
|
|
343
343
|
export function queryAndSaveOnePureEffect<
|
|
344
|
-
T extends { id:
|
|
344
|
+
T extends { id: unknown },
|
|
345
345
|
PM extends PersistenceModelType<string>,
|
|
346
346
|
Evt,
|
|
347
347
|
ItemType extends string,
|
|
@@ -360,7 +360,7 @@ export function queryAndSaveOnePureEffect<
|
|
|
360
360
|
A
|
|
361
361
|
>
|
|
362
362
|
export function queryAndSaveOnePureEffect<
|
|
363
|
-
T extends { id:
|
|
363
|
+
T extends { id: unknown },
|
|
364
364
|
PM extends PersistenceModelType<string>,
|
|
365
365
|
Evt,
|
|
366
366
|
ItemType extends string,
|
|
@@ -391,7 +391,7 @@ export function queryAndSaveOnePureEffect(
|
|
|
391
391
|
*/
|
|
392
392
|
|
|
393
393
|
export function queryAndSaveOnePure<
|
|
394
|
-
T extends { id:
|
|
394
|
+
T extends { id: unknown },
|
|
395
395
|
PM extends PersistenceModelType<string>,
|
|
396
396
|
Evt,
|
|
397
397
|
ItemType extends string,
|
|
@@ -407,7 +407,7 @@ export function queryAndSaveOnePure<
|
|
|
407
407
|
A
|
|
408
408
|
>
|
|
409
409
|
export function queryAndSaveOnePure<
|
|
410
|
-
T extends { id:
|
|
410
|
+
T extends { id: unknown },
|
|
411
411
|
PM extends PersistenceModelType<string>,
|
|
412
412
|
Evt,
|
|
413
413
|
ItemType extends string
|
|
@@ -432,7 +432,7 @@ export function queryAndSaveOnePure(
|
|
|
432
432
|
* @tsplus fluent Repository queryAndSavePureEffect
|
|
433
433
|
*/
|
|
434
434
|
export function queryAndSavePureEffect<
|
|
435
|
-
T extends { id:
|
|
435
|
+
T extends { id: unknown },
|
|
436
436
|
PM extends PersistenceModelType<string>,
|
|
437
437
|
Evt,
|
|
438
438
|
ItemType extends string,
|
|
@@ -452,7 +452,7 @@ export function queryAndSavePureEffect<
|
|
|
452
452
|
* @tsplus fluent Repository queryAndSavePure
|
|
453
453
|
*/
|
|
454
454
|
export function queryAndSavePure<
|
|
455
|
-
T extends { id:
|
|
455
|
+
T extends { id: unknown },
|
|
456
456
|
PM extends PersistenceModelType<string>,
|
|
457
457
|
Evt,
|
|
458
458
|
ItemType extends string,
|
|
@@ -468,7 +468,7 @@ export function queryAndSavePure<
|
|
|
468
468
|
* @tsplus getter Repository saveManyWithPure
|
|
469
469
|
*/
|
|
470
470
|
export function saveManyWithPure<
|
|
471
|
-
T extends { id:
|
|
471
|
+
T extends { id: unknown },
|
|
472
472
|
PM extends PersistenceModelType<string>,
|
|
473
473
|
Evt,
|
|
474
474
|
ItemType extends string
|
|
@@ -481,7 +481,7 @@ export function saveManyWithPure<
|
|
|
481
481
|
* @tsplus fluent Repository byIdAndSaveWithPure
|
|
482
482
|
*/
|
|
483
483
|
export function byIdAndSaveWithPure<
|
|
484
|
-
T extends { id:
|
|
484
|
+
T extends { id: unknown },
|
|
485
485
|
PM extends PersistenceModelType<string>,
|
|
486
486
|
Evt,
|
|
487
487
|
ItemType extends string
|
|
@@ -495,7 +495,7 @@ export function byIdAndSaveWithPure<
|
|
|
495
495
|
* @tsplus getter Repository handleByIdAndSaveWithPure
|
|
496
496
|
*/
|
|
497
497
|
export function handleByIdAndSaveWithPure<
|
|
498
|
-
T extends { id:
|
|
498
|
+
T extends { id: unknown },
|
|
499
499
|
PM extends PersistenceModelType<string>,
|
|
500
500
|
Evt,
|
|
501
501
|
ItemType extends string
|
|
@@ -510,9 +510,8 @@ export function handleByIdAndSaveWithPure<
|
|
|
510
510
|
* @tsplus fluent Repository saveManyWithPure_
|
|
511
511
|
*/
|
|
512
512
|
export function saveManyWithPure_<
|
|
513
|
-
Id extends string,
|
|
514
513
|
R,
|
|
515
|
-
T extends { id:
|
|
514
|
+
T extends { id: unknown },
|
|
516
515
|
PM extends PersistenceModelType<string>,
|
|
517
516
|
A,
|
|
518
517
|
E,
|
|
@@ -535,9 +534,8 @@ export function saveManyWithPure_<
|
|
|
535
534
|
* @tsplus fluent Repository saveWithPure_
|
|
536
535
|
*/
|
|
537
536
|
export function saveWithPure_<
|
|
538
|
-
Id extends string,
|
|
539
537
|
R,
|
|
540
|
-
T extends { id:
|
|
538
|
+
T extends { id: unknown },
|
|
541
539
|
PM extends PersistenceModelType<string>,
|
|
542
540
|
A,
|
|
543
541
|
E,
|
|
@@ -559,7 +557,7 @@ export function saveWithPure_<
|
|
|
559
557
|
}
|
|
560
558
|
|
|
561
559
|
export function saveAllWithEffectInt<
|
|
562
|
-
T extends { id:
|
|
560
|
+
T extends { id: unknown },
|
|
563
561
|
PM extends PersistenceModelType<string>,
|
|
564
562
|
P extends T,
|
|
565
563
|
Evt,
|
|
@@ -581,7 +579,7 @@ export function saveAllWithEffectInt<
|
|
|
581
579
|
* @tsplus fluent Repository queryAndSavePureEffectBatched
|
|
582
580
|
*/
|
|
583
581
|
export function queryAndSavePureEffectBatched<
|
|
584
|
-
T extends { id:
|
|
582
|
+
T extends { id: unknown },
|
|
585
583
|
PM extends PersistenceModelType<string>,
|
|
586
584
|
Evt,
|
|
587
585
|
ItemType extends string,
|
|
@@ -603,7 +601,7 @@ export function queryAndSavePureEffectBatched<
|
|
|
603
601
|
* @tsplus fluent Repository queryAndSavePureBatched
|
|
604
602
|
*/
|
|
605
603
|
export function queryAndSavePureBatched<
|
|
606
|
-
T extends { id:
|
|
604
|
+
T extends { id: unknown },
|
|
607
605
|
PM extends PersistenceModelType<string>,
|
|
608
606
|
Evt,
|
|
609
607
|
ItemType extends string,
|
|
@@ -621,7 +619,7 @@ export function queryAndSavePureBatched<
|
|
|
621
619
|
* @tsplus fluent Repository saveManyWithPureBatched
|
|
622
620
|
*/
|
|
623
621
|
export function saveManyWithPureBatched<
|
|
624
|
-
T extends { id:
|
|
622
|
+
T extends { id: unknown },
|
|
625
623
|
PM extends PersistenceModelType<string>,
|
|
626
624
|
Evt,
|
|
627
625
|
ItemType extends string
|
|
@@ -634,9 +632,8 @@ export function saveManyWithPureBatched<
|
|
|
634
632
|
* @tsplus fluent Repository saveManyWithPureBatched_
|
|
635
633
|
*/
|
|
636
634
|
export function saveManyWithPureBatched_<
|
|
637
|
-
Id extends string,
|
|
638
635
|
R,
|
|
639
|
-
T extends { id:
|
|
636
|
+
T extends { id: unknown },
|
|
640
637
|
PM extends PersistenceModelType<string>,
|
|
641
638
|
A,
|
|
642
639
|
E,
|
|
@@ -788,7 +785,7 @@ export function ifAny_<T, R, E, A>(items: Iterable<T>, fn: (items: NonEmptyReado
|
|
|
788
785
|
* @tsplus getter Repository save
|
|
789
786
|
*/
|
|
790
787
|
export function save<
|
|
791
|
-
T extends { id:
|
|
788
|
+
T extends { id: unknown },
|
|
792
789
|
PM extends PersistenceModelType<string>,
|
|
793
790
|
Evt,
|
|
794
791
|
ItemType extends string
|
|
@@ -802,7 +799,7 @@ export function save<
|
|
|
802
799
|
* @tsplus getter Repository saveWithEvents
|
|
803
800
|
*/
|
|
804
801
|
export function saveWithEvents<
|
|
805
|
-
T extends { id:
|
|
802
|
+
T extends { id: unknown },
|
|
806
803
|
PM extends PersistenceModelType<string>,
|
|
807
804
|
Evt,
|
|
808
805
|
ItemType extends string
|