@effect-app/infra 0.133.0-next.4 → 0.133.0-next.41

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.
Files changed (114) hide show
  1. package/CHANGELOG.md +330 -0
  2. package/_cjs/RequestContext.cjs +9 -10
  3. package/_cjs/RequestContext.cjs.map +1 -1
  4. package/_cjs/_ext/Array.cjs +4 -3
  5. package/_cjs/_ext/Array.cjs.map +1 -1
  6. package/_cjs/_global.ext.cjs +1 -25
  7. package/_cjs/_global.ext.cjs.map +1 -1
  8. package/_cjs/_global.schema.cjs +1 -1
  9. package/_cjs/api/codec.cjs +1 -1
  10. package/_cjs/api/codec.cjs.map +1 -1
  11. package/_cjs/api/express/schema/jwt.cjs +1 -1
  12. package/_cjs/api/setupRequest.cjs +31 -30
  13. package/_cjs/api/setupRequest.cjs.map +1 -1
  14. package/_cjs/errors.cjs +6 -2
  15. package/_cjs/errors.cjs.map +1 -1
  16. package/_cjs/services/Operations/live.cjs +11 -12
  17. package/_cjs/services/Operations/live.cjs.map +1 -1
  18. package/_cjs/services/QueueMaker/memQueue.cjs +10 -11
  19. package/_cjs/services/QueueMaker/memQueue.cjs.map +1 -1
  20. package/_cjs/services/QueueMaker/sbqueue.cjs +4 -4
  21. package/_cjs/services/QueueMaker/sbqueue.cjs.map +1 -1
  22. package/_cjs/services/QueueMaker/service.cjs +1 -1
  23. package/_cjs/services/Repository.cjs +2 -2
  24. package/_cjs/services/Repository.cjs.map +1 -1
  25. package/_cjs/services/RepositoryBase.cjs +13 -5
  26. package/_cjs/services/RepositoryBase.cjs.map +1 -1
  27. package/_cjs/services/RequestContextContainer.cjs +3 -3
  28. package/_cjs/services/RequestContextContainer.cjs.map +1 -1
  29. package/_cjs/services/simpledb/redisdb.cjs +1 -1
  30. package/_cjs/services/simpledb/shared.cjs +1 -1
  31. package/_cjs/services/simpledb/shared.cjs.map +1 -1
  32. package/_cjs/test.arbs.cjs +9 -0
  33. package/_cjs/test.arbs.cjs.map +1 -0
  34. package/_src/RequestContext.ts +9 -12
  35. package/_src/_ext/Array.ts +3 -3
  36. package/_src/_global.ext.ts +2 -27
  37. package/_src/_global.schema.ts +1 -1
  38. package/_src/api/codec.ts +1 -1
  39. package/_src/api/express/schema/jwt.ts +1 -1
  40. package/_src/api/express/schema/routing.ts +1 -1
  41. package/_src/api/setupRequest.ts +39 -34
  42. package/_src/errors.ts +9 -5
  43. package/_src/services/QueueMaker/memQueue.ts +3 -3
  44. package/_src/services/QueueMaker/sbqueue.ts +3 -3
  45. package/_src/services/Repository.ts +37 -40
  46. package/_src/services/RepositoryBase.ts +25 -19
  47. package/_src/services/Store/service.ts +4 -4
  48. package/_src/services/simpledb/redisdb.ts +1 -1
  49. package/_src/services/simpledb/shared.ts +1 -1
  50. package/_src/test.arbs.ts +23 -0
  51. package/dist/RequestContext.d.ts +72 -24
  52. package/dist/RequestContext.d.ts.map +1 -1
  53. package/dist/RequestContext.js +11 -12
  54. package/dist/_ext/Array.d.ts +2 -2
  55. package/dist/_ext/Array.d.ts.map +1 -1
  56. package/dist/_ext/Array.js +5 -4
  57. package/dist/_global.ext.d.ts +1 -22
  58. package/dist/_global.ext.d.ts.map +1 -1
  59. package/dist/_global.ext.js +2 -18
  60. package/dist/_global.schema.d.ts +1 -1
  61. package/dist/_global.schema.d.ts.map +1 -1
  62. package/dist/_global.schema.js +2 -2
  63. package/dist/api/codec.d.ts +1 -1
  64. package/dist/api/codec.d.ts.map +1 -1
  65. package/dist/api/codec.js +2 -2
  66. package/dist/api/express/schema/jwt.d.ts +1 -1
  67. package/dist/api/express/schema/jwt.d.ts.map +1 -1
  68. package/dist/api/express/schema/jwt.js +2 -2
  69. package/dist/api/express/schema/routing.d.ts +1 -1
  70. package/dist/api/express/schema/routing.d.ts.map +1 -1
  71. package/dist/api/setupRequest.d.ts +4 -4
  72. package/dist/api/setupRequest.d.ts.map +1 -1
  73. package/dist/api/setupRequest.js +31 -37
  74. package/dist/errors.d.ts +4 -3
  75. package/dist/errors.d.ts.map +1 -1
  76. package/dist/errors.js +5 -2
  77. package/dist/services/Emailer/service.d.ts +1 -1
  78. package/dist/services/Operations/live.js +16 -17
  79. package/dist/services/Operations/service.d.ts +4 -4
  80. package/dist/services/Operations/service.d.ts.map +1 -1
  81. package/dist/services/QueueMaker/memQueue.d.ts +4 -4
  82. package/dist/services/QueueMaker/memQueue.d.ts.map +1 -1
  83. package/dist/services/QueueMaker/memQueue.js +10 -11
  84. package/dist/services/QueueMaker/sbqueue.d.ts +4 -4
  85. package/dist/services/QueueMaker/sbqueue.d.ts.map +1 -1
  86. package/dist/services/QueueMaker/sbqueue.js +4 -4
  87. package/dist/services/QueueMaker/service.d.ts +1 -1
  88. package/dist/services/QueueMaker/service.js +1 -1
  89. package/dist/services/Repository.d.ts +39 -39
  90. package/dist/services/Repository.d.ts.map +1 -1
  91. package/dist/services/Repository.js +3 -3
  92. package/dist/services/RepositoryBase.d.ts +16 -16
  93. package/dist/services/RepositoryBase.d.ts.map +1 -1
  94. package/dist/services/RepositoryBase.js +11 -6
  95. package/dist/services/RequestContextContainer.d.ts +3 -3
  96. package/dist/services/RequestContextContainer.js +3 -3
  97. package/dist/services/Store/service.d.ts +4 -4
  98. package/dist/services/Store/service.d.ts.map +1 -1
  99. package/dist/services/simpledb/cosmosdb.d.ts +2 -2
  100. package/dist/services/simpledb/diskdb.d.ts +2 -2
  101. package/dist/services/simpledb/memdb.d.ts +2 -2
  102. package/dist/services/simpledb/mongodb.d.ts +2 -2
  103. package/dist/services/simpledb/redisdb.d.ts +8 -4
  104. package/dist/services/simpledb/redisdb.d.ts.map +1 -1
  105. package/dist/services/simpledb/redisdb.js +2 -2
  106. package/dist/services/simpledb/shared.d.ts +7 -3
  107. package/dist/services/simpledb/shared.d.ts.map +1 -1
  108. package/dist/services/simpledb/shared.js +2 -2
  109. package/dist/services/simpledb/simpledb.d.ts +3 -3
  110. package/dist/test.arbs.d.ts +2 -0
  111. package/dist/test.arbs.d.ts.map +1 -0
  112. package/dist/test.arbs.js +6 -0
  113. package/package.json +19 -9
  114. package/_src/test.arbs.ts.bak +0 -27
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+
3
+ var _faker = require("@effect-app/prelude/faker");
4
+ var _faker2 = require("@faker-js/faker");
5
+ // Do not import to frontend
6
+
7
+ // const rnd = new Random(rand.congruential32(5))
8
+ (0, _faker.setFaker)(_faker2.faker);
9
+ //# sourceMappingURL=test.arbs.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"test.arbs.cjs","names":["_faker","require","_faker2","setFaker","faker"],"sources":["../_src/test.arbs.ts"],"sourcesContent":[null],"mappings":";;AAEA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAD,OAAA;AAHA;;AAKA;AAEA,IAAAE,eAAQ,EAACC,aAAK,CAAC"}
@@ -1,19 +1,15 @@
1
- import { Schema2 } from "@effect-app/prelude"
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
- ...fields
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 Schema2.TaggedClass<
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,
@@ -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: Id }, Id extends string, Type extends string>(
12
+ export function getFirstById_<A extends { id: unknown }, Type extends string>(
13
13
  a: Iterable<A>,
14
- id: Id,
14
+ id: A["id"],
15
15
  type: Type
16
16
  ) {
17
17
  return Chunk
18
18
  .fromIterable(a)
19
- .findFirst((_) => _.id === id)
19
+ .findFirst((_) => Equal.equals(_.id, id))
20
20
  .encaseInEffect(() => new NotFoundError({ type, id }))
21
21
  }
22
22
 
@@ -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
- // * @tsplus global
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)
@@ -5,6 +5,6 @@
5
5
  /**
6
6
  * @tsplus global
7
7
  */
8
- import { Delete, Get, Patch, Post, Put } from "@effect-app/prelude/schema"
8
+ import { Delete, Get, Patch, Post, Put } from "@effect-app/schema"
9
9
 
10
10
  import "@effect-app/prelude/_global.schema"
package/_src/api/codec.ts CHANGED
@@ -1,4 +1,4 @@
1
- import * as S from "@effect-app/prelude/schema"
1
+ import * as S from "@effect-app/schema"
2
2
 
3
3
  export function makeCodec<
4
4
  To extends { id: Id },
@@ -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/prelude/schema"
4
+ import * as S from "@effect-app/schema"
5
5
 
6
6
  import { jwtDecode } from "jwt-decode"
7
7
 
@@ -1,6 +1,6 @@
1
1
  /* eslint-disable @typescript-eslint/ban-types */
2
2
  /* eslint-disable @typescript-eslint/no-explicit-any */
3
- import type { REST } from "@effect-app/prelude/schema"
3
+ import type { REST } from "@effect-app/schema"
4
4
 
5
5
  export type Request<
6
6
  M,
@@ -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
- .flatMap((ctx) =>
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
- function setupContextMap<R, E, A>(self: Effect<R, E, A>) {
54
- return (ContextMapContainer.flatMap((_) => _.start)
55
- > self)
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 RequestContextContainer.flatMap((_) => _.start(requestContext))
63
- > withRequestSpan(setupContextMap(self))
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: string }>
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: string }) {
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 { Schema2 } from "@effect-app/prelude"
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: Schema2.Schema<EvtE, Evt>,
21
- drainSchema: Schema2.Schema<unknown, DrainEvt>
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 { Schema2 } from "@effect-app/prelude"
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: Schema2.Schema<EvtE, Evt>,
31
- drainSchema: Schema2.Schema<unknown, DrainEvt>
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: string },
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: 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: 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: string },
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: string },
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: string },
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: string },
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: 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: string },
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: string },
802
+ T extends { id: unknown },
806
803
  PM extends PersistenceModelType<string>,
807
804
  Evt,
808
805
  ItemType extends string