@effect-app/infra 4.0.0-beta.22 → 4.0.0-beta.221
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 +1648 -0
- package/_check.sh +1 -1
- package/dist/CUPS.d.ts +12 -7
- package/dist/CUPS.d.ts.map +1 -1
- package/dist/CUPS.js +16 -12
- package/dist/Emailer/Sendgrid.d.ts +15 -15
- package/dist/Emailer/Sendgrid.d.ts.map +1 -1
- package/dist/Emailer/Sendgrid.js +20 -16
- package/dist/Emailer/fake.d.ts +1 -1
- package/dist/Emailer/fake.js +2 -2
- package/dist/Emailer/service.d.ts +13 -4
- package/dist/Emailer/service.d.ts.map +1 -1
- package/dist/Emailer/service.js +4 -3
- package/dist/Emailer.d.ts +1 -1
- package/dist/MainFiberSet.d.ts +12 -9
- package/dist/MainFiberSet.d.ts.map +1 -1
- package/dist/MainFiberSet.js +7 -3
- package/dist/Model/Repository/Registry.d.ts +21 -0
- package/dist/Model/Repository/Registry.d.ts.map +1 -0
- package/dist/Model/Repository/Registry.js +18 -0
- package/dist/Model/Repository/ext.d.ts +35 -16
- package/dist/Model/Repository/ext.d.ts.map +1 -1
- package/dist/Model/Repository/ext.js +60 -3
- package/dist/Model/Repository/internal/internal.d.ts +9 -6
- package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
- package/dist/Model/Repository/internal/internal.js +115 -51
- package/dist/Model/Repository/legacy.d.ts +4 -2
- package/dist/Model/Repository/legacy.d.ts.map +1 -1
- package/dist/Model/Repository/makeRepo.d.ts +10 -6
- package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
- package/dist/Model/Repository/makeRepo.js +5 -2
- package/dist/Model/Repository/service.d.ts +32 -24
- package/dist/Model/Repository/service.d.ts.map +1 -1
- package/dist/Model/Repository/validation.d.ts +47 -18
- package/dist/Model/Repository/validation.d.ts.map +1 -1
- package/dist/Model/Repository/validation.js +6 -6
- package/dist/Model/Repository.d.ts +2 -1
- package/dist/Model/Repository.d.ts.map +1 -1
- package/dist/Model/Repository.js +2 -1
- package/dist/Model/dsl.d.ts +6 -5
- package/dist/Model/dsl.d.ts.map +1 -1
- package/dist/Model/dsl.js +2 -3
- package/dist/Model/filter/filterApi.d.ts +5 -5
- package/dist/Model/filter/filterApi.d.ts.map +1 -1
- package/dist/Model/filter/types/errors.d.ts +1 -1
- package/dist/Model/filter/types/fields.d.ts +1 -1
- package/dist/Model/filter/types/path/common.d.ts +1 -1
- package/dist/Model/filter/types/path/eager.d.ts +1 -1
- package/dist/Model/filter/types/path/eager.d.ts.map +1 -1
- package/dist/Model/filter/types/path/eager.js +1 -1
- package/dist/Model/filter/types/path/index.d.ts +1 -1
- package/dist/Model/filter/types/utils.d.ts +1 -1
- package/dist/Model/filter/types/validator.d.ts +1 -1
- package/dist/Model/filter/types.d.ts +1 -1
- package/dist/Model/query/dsl.d.ts +142 -17
- package/dist/Model/query/dsl.d.ts.map +1 -1
- package/dist/Model/query/dsl.js +190 -5
- package/dist/Model/query/new-kid-interpreter.d.ts +77 -8
- package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -1
- package/dist/Model/query/new-kid-interpreter.js +127 -6
- package/dist/Model/query.d.ts +1 -1
- package/dist/Model.d.ts +2 -1
- package/dist/Model.d.ts.map +1 -1
- package/dist/Model.js +2 -1
- package/dist/QueueMaker/SQLQueue.d.ts +7 -8
- package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
- package/dist/QueueMaker/SQLQueue.js +135 -117
- package/dist/QueueMaker/errors.d.ts +5 -3
- package/dist/QueueMaker/errors.d.ts.map +1 -1
- package/dist/QueueMaker/errors.js +4 -2
- package/dist/QueueMaker/memQueue.d.ts +9 -5
- package/dist/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/QueueMaker/memQueue.js +81 -65
- package/dist/QueueMaker/sbqueue.d.ts +8 -4
- package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/QueueMaker/sbqueue.js +57 -55
- package/dist/QueueMaker/service.d.ts +4 -2
- package/dist/QueueMaker/service.d.ts.map +1 -1
- package/dist/QueueMaker/service.js +1 -1
- package/dist/RequestContext.d.ts +75 -35
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/RequestContext.js +14 -14
- package/dist/RequestFiberSet.d.ts +10 -7
- package/dist/RequestFiberSet.d.ts.map +1 -1
- package/dist/RequestFiberSet.js +8 -3
- package/dist/Store/ContextMapContainer.d.ts +22 -3
- package/dist/Store/ContextMapContainer.d.ts.map +1 -1
- package/dist/Store/ContextMapContainer.js +17 -3
- package/dist/Store/Cosmos/query.d.ts +7 -2
- package/dist/Store/Cosmos/query.d.ts.map +1 -1
- package/dist/Store/Cosmos/query.js +115 -35
- package/dist/Store/Cosmos.d.ts +2 -2
- package/dist/Store/Cosmos.d.ts.map +1 -1
- package/dist/Store/Cosmos.js +343 -244
- package/dist/Store/Disk.d.ts +3 -3
- package/dist/Store/Disk.d.ts.map +1 -1
- package/dist/Store/Disk.js +76 -36
- package/dist/Store/Memory.d.ts +7 -4
- package/dist/Store/Memory.d.ts.map +1 -1
- package/dist/Store/Memory.js +251 -58
- package/dist/Store/SQL/Pg.d.ts +4 -0
- package/dist/Store/SQL/Pg.d.ts.map +1 -0
- package/dist/Store/SQL/Pg.js +233 -0
- package/dist/Store/SQL/query.d.ts +43 -0
- package/dist/Store/SQL/query.d.ts.map +1 -0
- package/dist/Store/SQL/query.js +478 -0
- package/dist/Store/SQL.d.ts +21 -0
- package/dist/Store/SQL.d.ts.map +1 -0
- package/dist/Store/SQL.js +450 -0
- package/dist/Store/codeFilter.d.ts +2 -2
- package/dist/Store/codeFilter.d.ts.map +1 -1
- package/dist/Store/codeFilter.js +6 -3
- package/dist/Store/index.d.ts +6 -3
- package/dist/Store/index.d.ts.map +1 -1
- package/dist/Store/index.js +18 -4
- package/dist/Store/service.d.ts +26 -8
- package/dist/Store/service.d.ts.map +1 -1
- package/dist/Store/service.js +25 -6
- package/dist/Store/utils.d.ts +3 -2
- package/dist/Store/utils.d.ts.map +1 -1
- package/dist/Store/utils.js +5 -5
- package/dist/Store.d.ts +1 -1
- package/dist/adapters/SQL/Model.d.ts +32 -43
- package/dist/adapters/SQL/Model.d.ts.map +1 -1
- package/dist/adapters/SQL/Model.js +30 -39
- package/dist/adapters/SQL.d.ts +1 -1
- package/dist/adapters/ServiceBus.d.ts +14 -11
- package/dist/adapters/ServiceBus.d.ts.map +1 -1
- package/dist/adapters/ServiceBus.js +30 -21
- package/dist/adapters/cosmos-client.d.ts +5 -3
- package/dist/adapters/cosmos-client.d.ts.map +1 -1
- package/dist/adapters/cosmos-client.js +5 -3
- package/dist/adapters/index.d.ts +8 -2
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +8 -2
- package/dist/adapters/logger.d.ts +2 -2
- package/dist/adapters/logger.d.ts.map +1 -1
- package/dist/adapters/memQueue.d.ts +5 -3
- package/dist/adapters/memQueue.d.ts.map +1 -1
- package/dist/adapters/memQueue.js +6 -5
- package/dist/adapters/mongo-client.d.ts +4 -3
- package/dist/adapters/mongo-client.d.ts.map +1 -1
- package/dist/adapters/mongo-client.js +5 -3
- package/dist/adapters/redis-client.d.ts +6 -3
- package/dist/adapters/redis-client.d.ts.map +1 -1
- package/dist/adapters/redis-client.js +7 -3
- package/dist/api/ContextProvider.d.ts +12 -8
- package/dist/api/ContextProvider.d.ts.map +1 -1
- package/dist/api/ContextProvider.js +9 -7
- package/dist/api/codec.d.ts +1 -1
- package/dist/api/internal/RequestContextMiddleware.d.ts +3 -3
- package/dist/api/internal/RequestContextMiddleware.d.ts.map +1 -1
- package/dist/api/internal/RequestContextMiddleware.js +10 -6
- package/dist/api/internal/auth.d.ts +45 -7
- package/dist/api/internal/auth.d.ts.map +1 -1
- package/dist/api/internal/auth.js +162 -29
- package/dist/api/internal/events.d.ts +6 -4
- package/dist/api/internal/events.d.ts.map +1 -1
- package/dist/api/internal/events.js +16 -9
- package/dist/api/internal/health.d.ts +1 -1
- package/dist/api/layerUtils.d.ts +10 -6
- package/dist/api/layerUtils.d.ts.map +1 -1
- package/dist/api/layerUtils.js +7 -6
- package/dist/api/middlewares.d.ts +1 -1
- package/dist/api/reportError.d.ts +2 -2
- package/dist/api/reportError.d.ts.map +1 -1
- package/dist/api/reportError.js +3 -2
- package/dist/api/routing/middleware/RouterMiddleware.d.ts +5 -4
- package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.d.ts +42 -3
- package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.js +53 -17
- package/dist/api/routing/middleware.d.ts +1 -2
- package/dist/api/routing/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware.js +1 -2
- package/dist/api/routing/schema/jwt.d.ts +1 -1
- package/dist/api/routing/schema/jwt.d.ts.map +1 -1
- package/dist/api/routing/schema/jwt.js +3 -2
- package/dist/api/routing/tsort.d.ts +1 -1
- package/dist/api/routing/tsort.d.ts.map +1 -1
- package/dist/api/routing/utils.d.ts +4 -4
- package/dist/api/routing/utils.d.ts.map +1 -1
- package/dist/api/routing/utils.js +3 -2
- package/dist/api/routing.d.ts +84 -37
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +115 -45
- package/dist/api/setupRequest.d.ts +10 -6
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +15 -7
- package/dist/api/util.d.ts +1 -1
- package/dist/arbs.d.ts +2 -2
- package/dist/arbs.d.ts.map +1 -1
- package/dist/arbs.js +5 -3
- package/dist/errorReporter.d.ts +7 -5
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +22 -26
- package/dist/errors.d.ts +1 -1
- package/dist/fileUtil.d.ts +2 -2
- package/dist/fileUtil.d.ts.map +1 -1
- package/dist/fileUtil.js +2 -2
- package/dist/index.d.ts +1 -1
- package/dist/logger/jsonLogger.d.ts +2 -2
- package/dist/logger/jsonLogger.d.ts.map +1 -1
- package/dist/logger/jsonLogger.js +4 -2
- package/dist/logger/logFmtLogger.d.ts +2 -2
- package/dist/logger/logFmtLogger.d.ts.map +1 -1
- package/dist/logger/logFmtLogger.js +2 -2
- package/dist/logger/shared.d.ts +2 -2
- package/dist/logger/shared.d.ts.map +1 -1
- package/dist/logger/shared.js +3 -3
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/otel.d.ts +75 -0
- package/dist/otel.d.ts.map +1 -0
- package/dist/otel.js +65 -0
- package/dist/rateLimit.d.ts +12 -4
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +7 -12
- package/dist/test.d.ts +3 -3
- package/dist/test.d.ts.map +1 -1
- package/dist/test.js +2 -2
- package/dist/vitest.d.ts +1 -1
- package/examples/query.ts +46 -38
- package/package.json +46 -37
- package/src/CUPS.ts +15 -11
- package/src/Emailer/Sendgrid.ts +21 -15
- package/src/Emailer/fake.ts +1 -1
- package/src/Emailer/service.ts +13 -3
- package/src/MainFiberSet.ts +9 -6
- package/src/Model/Repository/Registry.ts +34 -0
- package/src/Model/Repository/ext.ts +103 -11
- package/src/Model/Repository/internal/internal.ts +231 -149
- package/src/Model/Repository/legacy.ts +3 -1
- package/src/Model/Repository/makeRepo.ts +15 -10
- package/src/Model/Repository/service.ts +35 -23
- package/src/Model/Repository/validation.ts +5 -5
- package/src/Model/Repository.ts +1 -0
- package/src/Model/dsl.ts +5 -4
- package/src/Model/filter/types/path/eager.ts +1 -2
- package/src/Model/query/dsl.ts +353 -19
- package/src/Model/query/new-kid-interpreter.ts +211 -6
- package/src/Model.ts +1 -0
- package/src/QueueMaker/SQLQueue.ts +150 -153
- package/src/QueueMaker/errors.ts +3 -1
- package/src/QueueMaker/memQueue.ts +111 -105
- package/src/QueueMaker/sbqueue.ts +76 -88
- package/src/QueueMaker/service.ts +3 -1
- package/src/RequestContext.ts +15 -16
- package/src/RequestFiberSet.ts +8 -2
- package/src/Store/ContextMapContainer.ts +45 -2
- package/src/Store/Cosmos/query.ts +143 -44
- package/src/Store/Cosmos.ts +491 -350
- package/src/Store/Disk.ts +106 -66
- package/src/Store/Memory.ts +285 -87
- package/src/Store/SQL/Pg.ts +364 -0
- package/src/Store/SQL/query.ts +540 -0
- package/src/Store/SQL.ts +736 -0
- package/src/Store/codeFilter.ts +5 -2
- package/src/Store/index.ts +20 -3
- package/src/Store/service.ts +45 -10
- package/src/Store/utils.ts +25 -23
- package/src/adapters/SQL/Model.ts +42 -41
- package/src/adapters/ServiceBus.ts +131 -121
- package/src/adapters/cosmos-client.ts +4 -2
- package/src/adapters/index.ts +7 -0
- package/src/adapters/memQueue.ts +5 -4
- package/src/adapters/mongo-client.ts +4 -2
- package/src/adapters/redis-client.ts +6 -2
- package/src/api/ContextProvider.ts +17 -13
- package/src/api/internal/RequestContextMiddleware.ts +16 -5
- package/src/api/internal/auth.ts +248 -44
- package/src/api/internal/events.ts +19 -10
- package/src/api/layerUtils.ts +12 -8
- package/src/api/reportError.ts +2 -1
- package/src/api/routing/middleware/RouterMiddleware.ts +5 -4
- package/src/api/routing/middleware/middleware.ts +60 -15
- package/src/api/routing/middleware.ts +0 -2
- package/src/api/routing/schema/jwt.ts +2 -1
- package/src/api/routing/utils.ts +2 -1
- package/src/api/routing.ts +304 -131
- package/src/api/setupRequest.ts +31 -8
- package/src/arbs.ts +5 -3
- package/src/errorReporter.ts +65 -75
- package/src/fileUtil.ts +1 -1
- package/src/logger/jsonLogger.ts +3 -1
- package/src/logger/logFmtLogger.ts +1 -1
- package/src/logger/shared.ts +3 -2
- package/src/otel.ts +152 -0
- package/src/rateLimit.ts +34 -23
- package/src/test.ts +2 -2
- package/test/auth.test.ts +101 -0
- package/test/contextProvider.test.ts +14 -11
- package/test/controller.test.ts +25 -29
- package/test/dist/auth.test.d.ts.map +1 -0
- package/test/dist/contextProvider.test.d.ts.map +1 -1
- package/test/dist/controller.test.d.ts.map +1 -1
- package/test/dist/date-query.test.d.ts.map +1 -0
- package/test/dist/fixtures.d.ts +30 -12
- package/test/dist/fixtures.d.ts.map +1 -1
- package/test/dist/fixtures.js +17 -10
- package/test/dist/query.test.d.ts.map +1 -1
- package/test/dist/rawQuery.test.d.ts.map +1 -1
- package/test/dist/repository-ext.test.d.ts.map +1 -0
- package/test/dist/requires.test.d.ts.map +1 -1
- package/test/dist/router-generator.test.d.ts.map +1 -0
- package/test/dist/routing-interruptibility.test.d.ts.map +1 -0
- package/test/dist/rpc-e2e-invalidation.test.d.ts.map +1 -0
- package/test/dist/rpc-multi-middleware.test.d.ts.map +1 -1
- package/test/dist/rpc-stream-fullstack.test.d.ts.map +1 -0
- package/test/dist/sql-store.test.d.ts.map +1 -0
- package/test/fixtures.ts +16 -9
- package/test/layerUtils.test.ts +1 -1
- package/test/query.test.ts +819 -38
- package/test/rawQuery.test.ts +312 -20
- package/test/repository-ext.test.ts +62 -0
- package/test/requires.test.ts +10 -5
- package/test/router-generator.test.ts +187 -0
- package/test/routing-interruptibility.test.ts +66 -0
- package/test/rpc-e2e-invalidation.test.ts +256 -0
- package/test/rpc-multi-middleware.test.ts +84 -9
- package/test/rpc-stream-fullstack.test.ts +304 -0
- package/test/sql-store.test.ts +1592 -0
- package/test/validateSample.test.ts +17 -12
- package/tsconfig.examples.json +1 -1
- package/tsconfig.json +0 -1
- package/tsconfig.json.bak +2 -2
- package/tsconfig.src.json +35 -35
- package/tsconfig.test.json +2 -2
- package/dist/Operations.d.ts +0 -55
- package/dist/Operations.d.ts.map +0 -1
- package/dist/Operations.js +0 -102
- package/dist/OperationsRepo.d.ts +0 -41
- package/dist/OperationsRepo.d.ts.map +0 -1
- package/dist/OperationsRepo.js +0 -14
- package/eslint.config.mjs +0 -24
- package/src/Operations.ts +0 -235
- package/src/OperationsRepo.ts +0 -16
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import type { Effect, Option, PubSub, S } from "effect-app"
|
|
3
2
|
import type { InvalidStateError, NotFoundError, OptimisticConcurrencyException } from "effect-app/client/errors"
|
|
3
|
+
import type * as Effect from "effect-app/Effect"
|
|
4
|
+
import type * as Option from "effect-app/Option"
|
|
5
|
+
import type * as S from "effect-app/Schema"
|
|
4
6
|
import type { NonNegativeInt } from "effect-app/Schema/numbers"
|
|
7
|
+
import type * as PubSub from "effect/PubSub"
|
|
5
8
|
import type { FieldValues, IsNever, ResolveFirstLevel } from "../filter/types.js"
|
|
6
9
|
import type { QAll, Query, QueryProjection, RawQuery } from "../query.js"
|
|
7
10
|
import type { Mapped } from "./legacy.js"
|
|
@@ -14,7 +17,8 @@ export interface Repository<
|
|
|
14
17
|
ItemType extends string,
|
|
15
18
|
IdKey extends keyof T,
|
|
16
19
|
RSchema,
|
|
17
|
-
RPublish
|
|
20
|
+
RPublish,
|
|
21
|
+
RProvided = never
|
|
18
22
|
> {
|
|
19
23
|
readonly itemType: ItemType
|
|
20
24
|
readonly idKey: IdKey
|
|
@@ -30,13 +34,21 @@ export interface Repository<
|
|
|
30
34
|
events?: Iterable<Evt>
|
|
31
35
|
) => Effect.Effect<void, never, RSchema | RPublish>
|
|
32
36
|
|
|
33
|
-
readonly removeById: (
|
|
37
|
+
readonly removeById: (
|
|
38
|
+
idOrIds: T[IdKey] | ReadonlyArray<T[IdKey]>
|
|
39
|
+
) => Effect.Effect<void, never, RSchema>
|
|
34
40
|
|
|
35
41
|
readonly queryRaw: <T, Out, R>(
|
|
36
42
|
schema: S.Codec<T, Out, R>,
|
|
37
43
|
raw: RawQuery<Encoded, Out>
|
|
38
44
|
) => Effect.Effect<readonly T[], S.SchemaError, R>
|
|
39
45
|
|
|
46
|
+
/**
|
|
47
|
+
* Explicitly seed a namespace. Primary is seeded eagerly on initialization.
|
|
48
|
+
* Non-primary namespaces must be seeded explicitly before use.
|
|
49
|
+
*/
|
|
50
|
+
readonly seedNamespace: (namespace: string) => Effect.Effect<void>
|
|
51
|
+
|
|
40
52
|
readonly query: {
|
|
41
53
|
// ending with projection
|
|
42
54
|
<
|
|
@@ -53,7 +65,7 @@ export interface Repository<
|
|
|
53
65
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
54
66
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
55
67
|
| (TType extends "count" ? never : S.SchemaError),
|
|
56
|
-
R | RSchema
|
|
68
|
+
Exclude<R, RProvided> | RSchema
|
|
57
69
|
>
|
|
58
70
|
<
|
|
59
71
|
A,
|
|
@@ -73,7 +85,7 @@ export interface Repository<
|
|
|
73
85
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
74
86
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
75
87
|
| (TType extends "count" ? never : S.SchemaError),
|
|
76
|
-
R | RSchema
|
|
88
|
+
Exclude<R, RProvided> | RSchema
|
|
77
89
|
>
|
|
78
90
|
<
|
|
79
91
|
A,
|
|
@@ -95,7 +107,7 @@ export interface Repository<
|
|
|
95
107
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
96
108
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
97
109
|
| (TType extends "count" ? never : S.SchemaError),
|
|
98
|
-
R | RSchema
|
|
110
|
+
Exclude<R, RProvided> | RSchema
|
|
99
111
|
>
|
|
100
112
|
<
|
|
101
113
|
A,
|
|
@@ -119,7 +131,7 @@ export interface Repository<
|
|
|
119
131
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
120
132
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
121
133
|
| (TType extends "count" ? never : S.SchemaError),
|
|
122
|
-
R | RSchema
|
|
134
|
+
Exclude<R, RProvided> | RSchema
|
|
123
135
|
>
|
|
124
136
|
<
|
|
125
137
|
A,
|
|
@@ -145,7 +157,7 @@ export interface Repository<
|
|
|
145
157
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
146
158
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
147
159
|
| (TType extends "count" ? never : S.SchemaError),
|
|
148
|
-
R | RSchema
|
|
160
|
+
Exclude<R, RProvided> | RSchema
|
|
149
161
|
>
|
|
150
162
|
<
|
|
151
163
|
A,
|
|
@@ -171,7 +183,7 @@ export interface Repository<
|
|
|
171
183
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
172
184
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
173
185
|
| (TType extends "count" ? never : S.SchemaError),
|
|
174
|
-
R | RSchema
|
|
186
|
+
Exclude<R, RProvided> | RSchema
|
|
175
187
|
>
|
|
176
188
|
<
|
|
177
189
|
A,
|
|
@@ -199,7 +211,7 @@ export interface Repository<
|
|
|
199
211
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
200
212
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
201
213
|
| (TType extends "count" ? never : S.SchemaError),
|
|
202
|
-
R | RSchema
|
|
214
|
+
Exclude<R, RProvided> | RSchema
|
|
203
215
|
>
|
|
204
216
|
<
|
|
205
217
|
A,
|
|
@@ -229,7 +241,7 @@ export interface Repository<
|
|
|
229
241
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
230
242
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
231
243
|
| (TType extends "count" ? never : S.SchemaError),
|
|
232
|
-
R | RSchema
|
|
244
|
+
Exclude<R, RProvided> | RSchema
|
|
233
245
|
>
|
|
234
246
|
<
|
|
235
247
|
A,
|
|
@@ -261,7 +273,7 @@ export interface Repository<
|
|
|
261
273
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
262
274
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
263
275
|
| (TType extends "count" ? never : S.SchemaError),
|
|
264
|
-
R | RSchema
|
|
276
|
+
Exclude<R, RProvided> | RSchema
|
|
265
277
|
>
|
|
266
278
|
<
|
|
267
279
|
A,
|
|
@@ -295,7 +307,7 @@ export interface Repository<
|
|
|
295
307
|
TType extends "many" ? readonly A[] : TType extends "count" ? NonNegativeInt : A,
|
|
296
308
|
| (TType extends "many" ? never : NotFoundError<ItemType>)
|
|
297
309
|
| (TType extends "count" ? never : S.SchemaError),
|
|
298
|
-
R | RSchema
|
|
310
|
+
Exclude<R, RProvided> | RSchema
|
|
299
311
|
>
|
|
300
312
|
|
|
301
313
|
// ending with generic query
|
|
@@ -309,7 +321,7 @@ export interface Repository<
|
|
|
309
321
|
): Effect.Effect<
|
|
310
322
|
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
311
323
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
312
|
-
R | RSchema
|
|
324
|
+
Exclude<R, RProvided> | RSchema
|
|
313
325
|
>
|
|
314
326
|
<
|
|
315
327
|
R = never,
|
|
@@ -325,7 +337,7 @@ export interface Repository<
|
|
|
325
337
|
): Effect.Effect<
|
|
326
338
|
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
327
339
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
328
|
-
R | RSchema
|
|
340
|
+
Exclude<R, RProvided> | RSchema
|
|
329
341
|
>
|
|
330
342
|
<
|
|
331
343
|
R = never,
|
|
@@ -345,7 +357,7 @@ export interface Repository<
|
|
|
345
357
|
): Effect.Effect<
|
|
346
358
|
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
347
359
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
348
|
-
R | RSchema
|
|
360
|
+
Exclude<R, RProvided> | RSchema
|
|
349
361
|
>
|
|
350
362
|
<
|
|
351
363
|
R = never,
|
|
@@ -365,7 +377,7 @@ export interface Repository<
|
|
|
365
377
|
): Effect.Effect<
|
|
366
378
|
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
367
379
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
368
|
-
R | RSchema
|
|
380
|
+
Exclude<R, RProvided> | RSchema
|
|
369
381
|
>
|
|
370
382
|
<
|
|
371
383
|
R = never,
|
|
@@ -387,7 +399,7 @@ export interface Repository<
|
|
|
387
399
|
): Effect.Effect<
|
|
388
400
|
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
389
401
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
390
|
-
R | RSchema
|
|
402
|
+
Exclude<R, RProvided> | RSchema
|
|
391
403
|
>
|
|
392
404
|
<
|
|
393
405
|
R = never,
|
|
@@ -411,7 +423,7 @@ export interface Repository<
|
|
|
411
423
|
): Effect.Effect<
|
|
412
424
|
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
413
425
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
414
|
-
R | RSchema
|
|
426
|
+
Exclude<R, RProvided> | RSchema
|
|
415
427
|
>
|
|
416
428
|
<
|
|
417
429
|
R = never,
|
|
@@ -437,7 +449,7 @@ export interface Repository<
|
|
|
437
449
|
): Effect.Effect<
|
|
438
450
|
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined> : RefineTHelper<T, EncodedRefined>,
|
|
439
451
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
440
|
-
R | RSchema
|
|
452
|
+
Exclude<R, RProvided> | RSchema
|
|
441
453
|
>
|
|
442
454
|
<
|
|
443
455
|
R = never,
|
|
@@ -466,7 +478,7 @@ export interface Repository<
|
|
|
466
478
|
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined>
|
|
467
479
|
: RefineTHelper<T, EncodedRefined>,
|
|
468
480
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
469
|
-
R | RSchema
|
|
481
|
+
Exclude<R, RProvided> | RSchema
|
|
470
482
|
>
|
|
471
483
|
<
|
|
472
484
|
R = never,
|
|
@@ -497,7 +509,7 @@ export interface Repository<
|
|
|
497
509
|
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined>
|
|
498
510
|
: RefineTHelper<T, EncodedRefined>,
|
|
499
511
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
500
|
-
R | RSchema
|
|
512
|
+
Exclude<R, RProvided> | RSchema
|
|
501
513
|
>
|
|
502
514
|
<
|
|
503
515
|
R = never,
|
|
@@ -530,7 +542,7 @@ export interface Repository<
|
|
|
530
542
|
TType extends "many" ? DistributeQueryIfExclusiveOnArray<E, T, EncodedRefined>
|
|
531
543
|
: RefineTHelper<T, EncodedRefined>,
|
|
532
544
|
TType extends "many" ? never : NotFoundError<ItemType>,
|
|
533
|
-
R | RSchema
|
|
545
|
+
Exclude<R, RProvided> | RSchema
|
|
534
546
|
>
|
|
535
547
|
}
|
|
536
548
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import
|
|
1
|
+
import * as S from "effect-app/Schema"
|
|
2
2
|
import { NonNegativeInt } from "effect-app/Schema"
|
|
3
3
|
|
|
4
4
|
/**
|
|
5
5
|
* Represents a single validation error when decoding a repository item.
|
|
6
6
|
* Contains full context for debugging: raw data, jitM result, and decode error.
|
|
7
7
|
*/
|
|
8
|
-
export class ValidationError extends S.
|
|
8
|
+
export class ValidationError extends S.Opaque<ValidationError>()(S.Struct({
|
|
9
9
|
/** the id of the item that failed validation */
|
|
10
10
|
id: S.Unknown,
|
|
11
11
|
/** the raw data from the database before jitM */
|
|
@@ -14,12 +14,12 @@ export class ValidationError extends S.Class<ValidationError>("@effect-app/infra
|
|
|
14
14
|
jitMResult: S.Unknown,
|
|
15
15
|
/** the S.SchemaError from schema decode */
|
|
16
16
|
error: S.Unknown
|
|
17
|
-
}) {}
|
|
17
|
+
})) {}
|
|
18
18
|
|
|
19
19
|
/**
|
|
20
20
|
* Result of validating a sample of repository items.
|
|
21
21
|
*/
|
|
22
|
-
export class ValidationResult extends S.
|
|
22
|
+
export class ValidationResult extends S.Opaque<ValidationResult>()(S.Struct({
|
|
23
23
|
/** total number of items in the repository */
|
|
24
24
|
total: NonNegativeInt,
|
|
25
25
|
/** number of items that were sampled for validation */
|
|
@@ -28,4 +28,4 @@ export class ValidationResult extends S.Class<ValidationResult>("@effect-app/inf
|
|
|
28
28
|
valid: NonNegativeInt,
|
|
29
29
|
/** list of validation errors with full context */
|
|
30
30
|
errors: S.Array(ValidationError)
|
|
31
|
-
}) {}
|
|
31
|
+
})) {}
|
package/src/Model/Repository.ts
CHANGED
package/src/Model/dsl.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
2
|
-
import {
|
|
2
|
+
import type { NonEmptyReadonlyArray } from "effect-app/Array"
|
|
3
3
|
import { toNonEmptyArray } from "effect-app/Array"
|
|
4
|
+
import * as Effect from "effect-app/Effect"
|
|
4
5
|
import { type FixEnv, get, logMany, type Pure, type PureEnvEnv, type PureLogT, set } from "effect-app/Pure"
|
|
5
6
|
|
|
6
7
|
export interface PureDSL<S, S2, W> {
|
|
@@ -42,16 +43,16 @@ export function makeAllDSL<T, Evt>() {
|
|
|
42
43
|
|
|
43
44
|
export type OneDSL<T, Evt> =
|
|
44
45
|
& (<R, A, E, S1 extends T, S2 extends T>(
|
|
45
|
-
pure: (dsl: PureDSL<S1, S2, Evt>) => Effect.Effect<A, E,
|
|
46
|
+
pure: (dsl: PureDSL<S1, S2, Evt>) => Effect.Effect<A, E, R>
|
|
46
47
|
) => Effect.Effect<A, E, FixEnv<R, Evt, S1, S2>>)
|
|
47
48
|
& OneDSLExt<T, Evt>
|
|
48
49
|
|
|
49
50
|
export interface OneDSLExt<T, Evt> {
|
|
50
51
|
modify: <R, E, A, S1 extends T, S2 extends T>(
|
|
51
|
-
pure: (items: S1, dsl: PureDSL<S1, S2, Evt>) => Effect.Effect<A, E,
|
|
52
|
+
pure: (items: S1, dsl: PureDSL<S1, S2, Evt>) => Effect.Effect<A, E, R>
|
|
52
53
|
) => Effect.Effect<A, E, FixEnv<R, Evt, S1, S2> | PureEnvEnv<Evt, S1, S1>>
|
|
53
54
|
update: <R, E, S1 extends T, S2 extends T>(
|
|
54
|
-
pure: (items: S1, log: (...evt: Evt[]) => PureLogT<Evt>) => Effect.Effect<S2, E,
|
|
55
|
+
pure: (items: S1, log: (...evt: Evt[]) => PureLogT<Evt>) => Effect.Effect<S2, E, R>
|
|
55
56
|
) => Effect.Effect<S2, E, FixEnv<R, Evt, S1, S2>>
|
|
56
57
|
updateWith: <S1 extends T, S2 extends T>(
|
|
57
58
|
upd: (item: S1) => S2
|
|
@@ -217,8 +217,7 @@ export namespace RefinePathValueTests {
|
|
|
217
217
|
| { nested: { a: string; _tag: "a" } | { b: number; _tag: "b" }; _tag: "ab" }
|
|
218
218
|
| { nested: { b: number; _tag: "b" } | { c: boolean; _tag: "c" }; _tag: "bc" },
|
|
219
219
|
"nested._tag",
|
|
220
|
-
"a"
|
|
221
|
-
false
|
|
220
|
+
"a"
|
|
222
221
|
>
|
|
223
222
|
|
|
224
223
|
expectTypeOf<test10>().toEqualTypeOf<{
|