@effect-app/infra 4.0.0-beta.14 → 4.0.0-beta.141
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 +927 -0
- package/dist/CUPS.d.ts +15 -7
- package/dist/CUPS.d.ts.map +1 -1
- package/dist/CUPS.js +10 -12
- package/dist/Emailer/Sendgrid.d.ts +14 -14
- package/dist/Emailer/Sendgrid.d.ts.map +1 -1
- package/dist/Emailer/Sendgrid.js +16 -15
- package/dist/Emailer/fake.d.ts +1 -1
- package/dist/Emailer/service.d.ts +9 -3
- package/dist/Emailer/service.d.ts.map +1 -1
- package/dist/Emailer/service.js +3 -3
- package/dist/Emailer.d.ts +1 -1
- package/dist/MainFiberSet.d.ts +5 -5
- package/dist/MainFiberSet.d.ts.map +1 -1
- package/dist/MainFiberSet.js +3 -3
- package/dist/Model/Repository/Registry.d.ts +20 -0
- package/dist/Model/Repository/Registry.d.ts.map +1 -0
- package/dist/Model/Repository/Registry.js +17 -0
- package/dist/Model/Repository/ext.d.ts +33 -15
- package/dist/Model/Repository/ext.d.ts.map +1 -1
- package/dist/Model/Repository/ext.js +54 -2
- package/dist/Model/Repository/internal/internal.d.ts +6 -6
- package/dist/Model/Repository/internal/internal.d.ts.map +1 -1
- package/dist/Model/Repository/internal/internal.js +33 -22
- package/dist/Model/Repository/legacy.d.ts +1 -1
- package/dist/Model/Repository/makeRepo.d.ts +7 -6
- package/dist/Model/Repository/makeRepo.d.ts.map +1 -1
- package/dist/Model/Repository/makeRepo.js +5 -1
- package/dist/Model/Repository/service.d.ts +28 -23
- package/dist/Model/Repository/service.d.ts.map +1 -1
- package/dist/Model/Repository/validation.d.ts +60 -10
- package/dist/Model/Repository/validation.d.ts.map +1 -1
- 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 +4 -4
- package/dist/Model/dsl.d.ts.map +1 -1
- 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/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 +1 -1
- package/dist/Model/query/dsl.d.ts.map +1 -1
- package/dist/Model/query/new-kid-interpreter.d.ts +6 -6
- package/dist/Model/query/new-kid-interpreter.d.ts.map +1 -1
- package/dist/Model/query/new-kid-interpreter.js +3 -3
- 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/Operations.d.ts +6 -6
- package/dist/Operations.d.ts.map +1 -1
- package/dist/Operations.js +56 -59
- package/dist/OperationsRepo.d.ts +19 -19
- package/dist/OperationsRepo.d.ts.map +1 -1
- package/dist/OperationsRepo.js +3 -3
- package/dist/QueueMaker/SQLQueue.d.ts +5 -7
- package/dist/QueueMaker/SQLQueue.d.ts.map +1 -1
- package/dist/QueueMaker/SQLQueue.js +105 -114
- package/dist/QueueMaker/errors.d.ts +2 -2
- package/dist/QueueMaker/errors.d.ts.map +1 -1
- package/dist/QueueMaker/memQueue.d.ts +7 -4
- package/dist/QueueMaker/memQueue.d.ts.map +1 -1
- package/dist/QueueMaker/memQueue.js +51 -62
- package/dist/QueueMaker/sbqueue.d.ts +6 -3
- package/dist/QueueMaker/sbqueue.d.ts.map +1 -1
- package/dist/QueueMaker/sbqueue.js +36 -52
- package/dist/QueueMaker/service.d.ts +1 -1
- package/dist/RequestContext.d.ts +55 -25
- package/dist/RequestContext.d.ts.map +1 -1
- package/dist/RequestContext.js +5 -5
- package/dist/RequestFiberSet.d.ts +7 -7
- package/dist/RequestFiberSet.d.ts.map +1 -1
- package/dist/RequestFiberSet.js +5 -5
- package/dist/Store/ContextMapContainer.d.ts +19 -3
- package/dist/Store/ContextMapContainer.d.ts.map +1 -1
- package/dist/Store/ContextMapContainer.js +13 -3
- package/dist/Store/Cosmos/query.d.ts +1 -1
- package/dist/Store/Cosmos/query.d.ts.map +1 -1
- package/dist/Store/Cosmos/query.js +8 -10
- package/dist/Store/Cosmos.d.ts +1 -1
- package/dist/Store/Cosmos.d.ts.map +1 -1
- package/dist/Store/Cosmos.js +308 -242
- package/dist/Store/Disk.d.ts +2 -2
- package/dist/Store/Disk.d.ts.map +1 -1
- package/dist/Store/Disk.js +25 -22
- package/dist/Store/Memory.d.ts +4 -4
- package/dist/Store/Memory.d.ts.map +1 -1
- package/dist/Store/Memory.js +27 -22
- 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 +189 -0
- package/dist/Store/SQL/query.d.ts +38 -0
- package/dist/Store/SQL/query.d.ts.map +1 -0
- package/dist/Store/SQL/query.js +367 -0
- package/dist/Store/SQL.d.ts +20 -0
- package/dist/Store/SQL.d.ts.map +1 -0
- package/dist/Store/SQL.js +381 -0
- package/dist/Store/codeFilter.d.ts +1 -1
- package/dist/Store/codeFilter.d.ts.map +1 -1
- package/dist/Store/codeFilter.js +2 -1
- package/dist/Store/index.d.ts +5 -2
- package/dist/Store/index.d.ts.map +1 -1
- package/dist/Store/index.js +15 -3
- package/dist/Store/service.d.ts +17 -6
- package/dist/Store/service.d.ts.map +1 -1
- package/dist/Store/service.js +24 -6
- package/dist/Store/utils.d.ts +1 -1
- package/dist/Store/utils.d.ts.map +1 -1
- package/dist/Store/utils.js +3 -4
- package/dist/Store.d.ts +1 -1
- package/dist/adapters/SQL/Model.d.ts +28 -42
- package/dist/adapters/SQL/Model.d.ts.map +1 -1
- package/dist/adapters/SQL/Model.js +2 -2
- package/dist/adapters/SQL.d.ts +1 -1
- package/dist/adapters/ServiceBus.d.ts +9 -9
- package/dist/adapters/ServiceBus.d.ts.map +1 -1
- package/dist/adapters/ServiceBus.js +13 -15
- package/dist/adapters/cosmos-client.d.ts +3 -3
- package/dist/adapters/cosmos-client.d.ts.map +1 -1
- package/dist/adapters/cosmos-client.js +3 -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 +1 -1
- package/dist/adapters/logger.d.ts.map +1 -1
- package/dist/adapters/memQueue.d.ts +3 -3
- package/dist/adapters/memQueue.d.ts.map +1 -1
- package/dist/adapters/memQueue.js +3 -3
- package/dist/adapters/mongo-client.d.ts +3 -3
- package/dist/adapters/mongo-client.d.ts.map +1 -1
- package/dist/adapters/mongo-client.js +3 -3
- package/dist/adapters/redis-client.d.ts +3 -3
- package/dist/adapters/redis-client.d.ts.map +1 -1
- package/dist/adapters/redis-client.js +3 -3
- package/dist/api/ContextProvider.d.ts +7 -7
- package/dist/api/ContextProvider.d.ts.map +1 -1
- package/dist/api/ContextProvider.js +6 -6
- package/dist/api/codec.d.ts +1 -1
- package/dist/api/internal/RequestContextMiddleware.d.ts +2 -2
- package/dist/api/internal/RequestContextMiddleware.d.ts.map +1 -1
- package/dist/api/internal/RequestContextMiddleware.js +1 -1
- package/dist/api/internal/auth.d.ts +44 -6
- package/dist/api/internal/auth.d.ts.map +1 -1
- package/dist/api/internal/auth.js +160 -29
- package/dist/api/internal/events.d.ts +3 -3
- package/dist/api/internal/events.d.ts.map +1 -1
- package/dist/api/internal/events.js +11 -7
- package/dist/api/internal/health.d.ts +1 -1
- package/dist/api/layerUtils.d.ts +6 -6
- package/dist/api/layerUtils.d.ts.map +1 -1
- package/dist/api/layerUtils.js +5 -5
- package/dist/api/middlewares.d.ts +1 -1
- package/dist/api/reportError.d.ts +1 -1
- package/dist/api/routing/middleware/RouterMiddleware.d.ts +4 -4
- package/dist/api/routing/middleware/RouterMiddleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.d.ts +39 -3
- package/dist/api/routing/middleware/middleware.d.ts.map +1 -1
- package/dist/api/routing/middleware/middleware.js +45 -14
- 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/tsort.d.ts +1 -1
- package/dist/api/routing/tsort.d.ts.map +1 -1
- package/dist/api/routing/utils.d.ts +3 -3
- package/dist/api/routing/utils.d.ts.map +1 -1
- package/dist/api/routing.d.ts +12 -14
- package/dist/api/routing.d.ts.map +1 -1
- package/dist/api/routing.js +17 -6
- package/dist/api/setupRequest.d.ts +8 -5
- package/dist/api/setupRequest.d.ts.map +1 -1
- package/dist/api/setupRequest.js +11 -6
- package/dist/api/util.d.ts +1 -1
- package/dist/arbs.d.ts +1 -1
- package/dist/errorReporter.d.ts +4 -4
- package/dist/errorReporter.d.ts.map +1 -1
- package/dist/errorReporter.js +16 -23
- package/dist/errors.d.ts +1 -1
- package/dist/fileUtil.d.ts +1 -1
- package/dist/fileUtil.d.ts.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/logger/jsonLogger.d.ts +1 -1
- package/dist/logger/logFmtLogger.d.ts +1 -1
- package/dist/logger/shared.d.ts +1 -1
- package/dist/logger.d.ts +1 -1
- package/dist/logger.d.ts.map +1 -1
- package/dist/rateLimit.d.ts +9 -3
- package/dist/rateLimit.d.ts.map +1 -1
- package/dist/rateLimit.js +5 -11
- package/dist/test.d.ts +1 -1
- package/dist/test.d.ts.map +1 -1
- package/dist/vitest.d.ts +1 -1
- package/eslint.config.mjs +1 -1
- package/examples/query.ts +30 -26
- package/package.json +41 -27
- package/src/CUPS.ts +9 -11
- package/src/Emailer/Sendgrid.ts +17 -14
- package/src/Emailer/service.ts +8 -2
- package/src/MainFiberSet.ts +3 -3
- package/src/Model/Repository/Registry.ts +33 -0
- package/src/Model/Repository/ext.ts +93 -6
- package/src/Model/Repository/internal/internal.ts +85 -78
- package/src/Model/Repository/makeRepo.ts +12 -10
- package/src/Model/Repository/service.ts +31 -22
- package/src/Model/Repository.ts +1 -0
- package/src/Model/dsl.ts +3 -3
- package/src/Model/query/new-kid-interpreter.ts +2 -2
- package/src/Model.ts +1 -0
- package/src/Operations.ts +78 -113
- package/src/OperationsRepo.ts +2 -2
- package/src/QueueMaker/SQLQueue.ts +121 -151
- package/src/QueueMaker/memQueue.ts +82 -103
- package/src/QueueMaker/sbqueue.ts +55 -85
- package/src/RequestContext.ts +4 -4
- package/src/RequestFiberSet.ts +4 -4
- package/src/Store/ContextMapContainer.ts +41 -2
- package/src/Store/Cosmos/query.ts +9 -11
- package/src/Store/Cosmos.ts +437 -343
- package/src/Store/Disk.ts +52 -49
- package/src/Store/Memory.ts +54 -48
- package/src/Store/SQL/Pg.ts +318 -0
- package/src/Store/SQL/query.ts +409 -0
- package/src/Store/SQL.ts +668 -0
- package/src/Store/codeFilter.ts +1 -0
- package/src/Store/index.ts +17 -2
- package/src/Store/service.ts +31 -7
- package/src/Store/utils.ts +23 -22
- package/src/adapters/SQL/Model.ts +10 -4
- package/src/adapters/ServiceBus.ts +111 -115
- package/src/adapters/cosmos-client.ts +2 -2
- package/src/adapters/index.ts +7 -0
- package/src/adapters/memQueue.ts +2 -2
- package/src/adapters/mongo-client.ts +2 -2
- package/src/adapters/redis-client.ts +2 -2
- package/src/api/ContextProvider.ts +11 -11
- package/src/api/internal/auth.ts +246 -44
- package/src/api/internal/events.ts +14 -9
- package/src/api/layerUtils.ts +8 -8
- package/src/api/routing/middleware/RouterMiddleware.ts +4 -4
- package/src/api/routing/middleware/middleware.ts +52 -12
- package/src/api/routing/middleware.ts +0 -2
- package/src/api/routing.ts +21 -7
- package/src/api/setupRequest.ts +27 -7
- package/src/errorReporter.ts +58 -72
- package/src/rateLimit.ts +30 -22
- package/test/auth.test.ts +101 -0
- package/test/contextProvider.test.ts +11 -11
- package/test/controller.test.ts +18 -14
- 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 +22 -12
- package/test/dist/fixtures.d.ts.map +1 -1
- package/test/dist/fixtures.js +12 -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-multi-middleware.test.d.ts.map +1 -1
- package/test/dist/sql-store.test.d.ts.map +1 -0
- package/test/fixtures.ts +11 -9
- package/test/query.test.ts +209 -31
- package/test/rawQuery.test.ts +23 -19
- package/test/repository-ext.test.ts +58 -0
- package/test/requires.test.ts +6 -6
- package/test/router-generator.test.ts +180 -0
- package/test/routing-interruptibility.test.ts +63 -0
- package/test/rpc-multi-middleware.test.ts +78 -9
- package/test/sql-store.test.ts +1064 -0
- package/test/validateSample.test.ts +12 -9
- package/tsconfig.json +0 -1
package/test/dist/fixtures.d.ts
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
|
-
import { Effect, Layer,
|
|
1
|
+
import { Context, Effect, Layer, RpcX, S } from "effect-app";
|
|
2
2
|
import { NotLoggedInError, UnauthorizedError } from "effect-app/client";
|
|
3
|
-
import { RpcContextMap
|
|
4
|
-
declare const UserProfile_base: S.EnhancedClass<UserProfile,
|
|
3
|
+
import { RpcContextMap } from "effect-app/rpc";
|
|
4
|
+
declare const UserProfile_base: S.EnhancedClass<UserProfile, import("effect/Schema").Struct<{
|
|
5
5
|
id: S.String;
|
|
6
6
|
roles: S.$Array<S.String> & {
|
|
7
|
-
withDefault: S.withConstructorDefault<S.$Array<S.String
|
|
7
|
+
withDefault: S.withConstructorDefault<S.$Array<S.String>>;
|
|
8
|
+
withDecodingDefaultType: S.withDecodingDefaultType<S.$Array<S.String>>;
|
|
8
9
|
};
|
|
9
|
-
}>, {}> &
|
|
10
|
+
}>, {}> & Context.Opaque<UserProfile, UserProfile>;
|
|
10
11
|
export declare class UserProfile extends UserProfile_base {
|
|
11
12
|
}
|
|
12
|
-
declare const Some_base:
|
|
13
|
+
declare const Some_base: Context.OpaqueClass<Some, "Some", {
|
|
13
14
|
a: number;
|
|
14
15
|
}> & {
|
|
15
16
|
readonly make: Effect.Effect<{
|
|
@@ -18,7 +19,7 @@ declare const Some_base: ServiceMap.OpaqueClass<Some, "Some", {
|
|
|
18
19
|
};
|
|
19
20
|
export declare class Some extends Some_base {
|
|
20
21
|
}
|
|
21
|
-
declare const SomeElse_base:
|
|
22
|
+
declare const SomeElse_base: Context.OpaqueClass<SomeElse, "SomeElse", {
|
|
22
23
|
b: number;
|
|
23
24
|
}> & {
|
|
24
25
|
readonly make: Effect.Effect<{
|
|
@@ -27,7 +28,7 @@ declare const SomeElse_base: ServiceMap.OpaqueClass<SomeElse, "SomeElse", {
|
|
|
27
28
|
};
|
|
28
29
|
export declare class SomeElse extends SomeElse_base {
|
|
29
30
|
}
|
|
30
|
-
declare const SomeService_base:
|
|
31
|
+
declare const SomeService_base: Context.OpaqueClass<SomeService, "SomeService", {
|
|
31
32
|
a: number;
|
|
32
33
|
}> & {
|
|
33
34
|
readonly make: Effect.Effect<{
|
|
@@ -66,7 +67,7 @@ declare const RequestContextMap_base: (new () => {
|
|
|
66
67
|
readonly requireRoles: RpcContextMap.RpcContextMap.Custom<never, typeof UnauthorizedError, string[]>;
|
|
67
68
|
readonly test: RpcContextMap.RpcContextMap<never, S.Never>;
|
|
68
69
|
}>;
|
|
69
|
-
get: <Key extends "allowAnonymous" | "requireRoles" | "test">(key: Key) => RpcX.RpcMiddleware.RpcDynamic<Key, {
|
|
70
|
+
get: <Key extends ("allowAnonymous" | "requireRoles" | "test") & string>(key: Key) => RpcX.RpcMiddleware.RpcDynamic<Key, {
|
|
70
71
|
readonly allowAnonymous: RpcContextMap.RpcContextMap.Inverted<UserProfile, typeof NotLoggedInError>;
|
|
71
72
|
readonly requireRoles: RpcContextMap.RpcContextMap.Custom<never, typeof UnauthorizedError, string[]>;
|
|
72
73
|
readonly test: RpcContextMap.RpcContextMap<never, S.Never>;
|
|
@@ -101,11 +102,20 @@ declare const Test_base: RpcX.RpcMiddleware.TagClass<Test, "Test", {
|
|
|
101
102
|
export declare class Test extends Test_base {
|
|
102
103
|
}
|
|
103
104
|
export declare const TestLive: Layer.Layer<Test, never, never>;
|
|
104
|
-
declare const
|
|
105
|
+
declare const Counter_base: Context.OpaqueClass<Counter, "Counter", {
|
|
106
|
+
a: number;
|
|
107
|
+
}> & {
|
|
108
|
+
readonly make: Effect.Effect<{
|
|
109
|
+
a: number;
|
|
110
|
+
}, never, never>;
|
|
111
|
+
};
|
|
112
|
+
export declare class Counter extends Counter_base {
|
|
113
|
+
}
|
|
114
|
+
declare const CustomError1_base: import("effect/Schema").Class<CustomError1, import("effect/Schema").TaggedStruct<"CustomError1", {}>, import("effect/Cause").YieldableError>;
|
|
105
115
|
export declare class CustomError1 extends CustomError1_base {
|
|
106
116
|
}
|
|
107
|
-
declare const CustomError2_base:
|
|
117
|
+
declare const CustomError2_base: import("effect/Schema").Class<CustomError2, import("effect/Schema").TaggedStruct<"CustomError2", {}>, import("effect/Cause").YieldableError>;
|
|
108
118
|
export declare class CustomError2 extends CustomError2_base {
|
|
109
119
|
}
|
|
110
120
|
export {};
|
|
111
|
-
//# sourceMappingURL=
|
|
121
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL2ZpeHR1cmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxFQUFFLEtBQUssRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFTLE1BQU0sWUFBWSxDQUFBO0FBQ25FLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxpQkFBaUIsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTs7Ozs7Ozs7QUFHOUMscUJBQWEsV0FBWSxTQUFRLGdCQUtoQztDQUNBOzs7Ozs7OztBQUVELHFCQUFhLElBQUssU0FBUSxTQUFrRTtDQUFHOzs7Ozs7OztBQUMvRixxQkFBYSxRQUFTLFNBQVEsYUFBMEU7Q0FBRzs7Ozs7Ozs7QUFFM0cscUJBQWEsV0FBWSxTQUFRLGdCQUF1RTtJQUN0RyxNQUFNLENBQUMsUUFBUSxDQUFDLE9BQU8seUNBQTBCO0NBQ2xEOztjQUdzRixJQUFJOztBQUEzRixxQkFBYSxjQUFlLFNBQVEsbUJBQThFO0NBQ2pIO0FBRUQsZUFBTyxNQUFNLGtCQUFrQiwyQ0FNOUIsQ0FBQTs7Y0FHZ0UsUUFBUTs7QUFEekUscUJBQWEsa0JBQ1gsU0FBUSx1QkFBMEY7Q0FDbEc7QUFFRixlQUFPLE1BQU0sc0JBQXNCLCtDQVVsQyxDQUFBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFFRCxxQkFBYSxpQkFBa0IsU0FBUSxzQkFJckM7Q0FBRzs7OztjQUVrRixRQUFROztBQUEvRixxQkFBYSxjQUFlLFNBQVEsbUJBRWxDO0NBQUc7QUFFTCxlQUFPLE1BQU0sa0JBQWtCLDJDQXlCOUIsQ0FBQTs7Ozs7Ozs7QUFFRCxxQkFBYSxZQUFhLFNBQVEsaUJBS2hDO0NBQUc7QUFFTCxlQUFPLE1BQU0sZ0JBQWdCLCtDQXVCNUIsQ0FBQTs7Ozs7OztBQUVELHFCQUFhLElBQUssU0FBUSxTQUV4QjtDQUFHO0FBRUwsZUFBTyxNQUFNLFFBQVEsaUNBT3BCLENBQUE7Ozs7Ozs7O0FBRUQscUJBQWEsT0FBUSxTQUFRLFlBQXdFO0NBQUc7O0FBRXhHLHFCQUFhLFlBQWEsU0FBUSxpQkFBb0Q7Q0FBRzs7QUFDekYscUJBQWEsWUFBYSxTQUFRLGlCQUFvRDtDQUFHIn0=
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAS,
|
|
1
|
+
{"version":3,"file":"fixtures.d.ts","sourceRoot":"","sources":["../fixtures.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,EAAS,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACvE,OAAO,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAA;;;;;;;;AAG9C,qBAAa,WAAY,SAAQ,gBAKhC;CACA;;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAAkE;CAAG;;;;;;;;AAC/F,qBAAa,QAAS,SAAQ,aAA0E;CAAG;;;;;;;;AAE3G,qBAAa,WAAY,SAAQ,gBAAuE;IACtG,MAAM,CAAC,QAAQ,CAAC,OAAO,yCAA0B;CAClD;;cAGsF,IAAI;;AAA3F,qBAAa,cAAe,SAAQ,mBAA8E;CACjH;AAED,eAAO,MAAM,kBAAkB,2CAM9B,CAAA;;cAGgE,QAAQ;;AADzE,qBAAa,kBACX,SAAQ,uBAA0F;CAClG;AAEF,eAAO,MAAM,sBAAsB,+CAUlC,CAAA;;;;;;;;;;;;;;;;;;;;;;;;AAED,qBAAa,iBAAkB,SAAQ,sBAIrC;CAAG;;;;cAEkF,QAAQ;;AAA/F,qBAAa,cAAe,SAAQ,mBAElC;CAAG;AAEL,eAAO,MAAM,kBAAkB,2CAyB9B,CAAA;;;;;;;;AAED,qBAAa,YAAa,SAAQ,iBAKhC;CAAG;AAEL,eAAO,MAAM,gBAAgB,+CAuB5B,CAAA;;;;;;;AAED,qBAAa,IAAK,SAAQ,SAExB;CAAG;AAEL,eAAO,MAAM,QAAQ,iCAOpB,CAAA;;;;;;;;AAED,qBAAa,OAAQ,SAAQ,YAAwE;CAAG;;AAExG,qBAAa,YAAa,SAAQ,iBAAoD;CAAG;;AACzF,qBAAa,YAAa,SAAQ,iBAAoD;CAAG"}
|
package/test/dist/fixtures.js
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
|
-
import { Effect, Layer, S, Scope
|
|
1
|
+
import { Context, Effect, Layer, RpcX, S, Scope } from "effect-app";
|
|
2
2
|
import { NotLoggedInError, UnauthorizedError } from "effect-app/client";
|
|
3
|
-
import { RpcContextMap
|
|
4
|
-
import {
|
|
5
|
-
export class UserProfile extends
|
|
3
|
+
import { RpcContextMap } from "effect-app/rpc";
|
|
4
|
+
import { TaggedErrorClass } from "effect-app/Schema";
|
|
5
|
+
export class UserProfile extends Context.assignTag("UserProfile")(S.Class("UserProfile")({
|
|
6
6
|
id: S.String,
|
|
7
7
|
roles: S.Array(S.String)
|
|
8
8
|
})) {
|
|
9
9
|
}
|
|
10
|
-
export class Some extends
|
|
10
|
+
export class Some extends Context.Opaque()("Some", { make: Effect.succeed({ a: 1 }) }) {
|
|
11
11
|
}
|
|
12
|
-
export class SomeElse extends
|
|
12
|
+
export class SomeElse extends Context.Opaque()("SomeElse", { make: Effect.succeed({ b: 2 }) }) {
|
|
13
13
|
}
|
|
14
14
|
const MakeSomeService = Effect.succeed({ a: 1 });
|
|
15
|
-
export class SomeService extends
|
|
15
|
+
export class SomeService extends Context.Opaque()("SomeService", { make: MakeSomeService }) {
|
|
16
16
|
static Default = this.toLayer(this.make);
|
|
17
17
|
}
|
|
18
18
|
// functionally equivalent to the one above
|
|
@@ -90,8 +90,10 @@ export const TestLive = Layer.effect(Test, Effect.gen(function* () {
|
|
|
90
90
|
return yield* effect;
|
|
91
91
|
});
|
|
92
92
|
}));
|
|
93
|
-
export class
|
|
93
|
+
export class Counter extends Context.Opaque()("Counter", { make: Effect.succeed({ a: 0 }) }) {
|
|
94
94
|
}
|
|
95
|
-
export class
|
|
95
|
+
export class CustomError1 extends TaggedErrorClass()("CustomError1", {}) {
|
|
96
96
|
}
|
|
97
|
-
|
|
97
|
+
export class CustomError2 extends TaggedErrorClass()("CustomError2", {}) {
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZml4dHVyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9maXh0dXJlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDbkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDdkUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGdCQUFnQixDQUFBO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXBELE1BQU0sT0FBTyxXQUFZLFNBQVEsT0FBTyxDQUFDLFNBQVMsQ0FBMkIsYUFBYSxDQUFDLENBQ3pGLENBQUMsQ0FBQyxLQUFLLENBQWMsYUFBYSxDQUFDLENBQUM7SUFDbEMsRUFBRSxFQUFFLENBQUMsQ0FBQyxNQUFNO0lBQ1osS0FBSyxFQUFFLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLE1BQU0sQ0FBQztDQUN6QixDQUFDLENBQ0g7Q0FDQTtBQUVELE1BQU0sT0FBTyxJQUFLLFNBQVEsT0FBTyxDQUFDLE1BQU0sRUFBUSxDQUFDLE1BQU0sRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUFHO0FBQy9GLE1BQU0sT0FBTyxRQUFTLFNBQVEsT0FBTyxDQUFDLE1BQU0sRUFBWSxDQUFDLFVBQVUsRUFBRSxFQUFFLElBQUksRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQztDQUFHO0FBQzNHLE1BQU0sZUFBZSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQTtBQUNoRCxNQUFNLE9BQU8sV0FBWSxTQUFRLE9BQU8sQ0FBQyxNQUFNLEVBQWUsQ0FBQyxhQUFhLEVBQUUsRUFBRSxJQUFJLEVBQUUsZUFBZSxFQUFFLENBQUM7SUFDdEcsTUFBTSxDQUFVLE9BQU8sR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQTtDQUNsRDtBQUVELDJDQUEyQztBQUMzQyxNQUFNLE9BQU8sY0FBZSxTQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFzQyxDQUFDLGdCQUFnQixDQUFDO0NBQ2pIO0FBRUQsTUFBTSxDQUFDLE1BQU0sa0JBQWtCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDNUMsY0FBYyxFQUNkLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBQ2xCLHNDQUFzQztJQUN0QyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxjQUFjLENBQUMsSUFBSSxFQUFFLElBQUksQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUE7QUFDaEYsQ0FBQyxDQUFDLENBQ0gsQ0FBQTtBQUVELE1BQU0sT0FBTyxrQkFDWCxTQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUE4QyxDQUFDLG9CQUFvQixDQUFDO0NBQ2xHO0FBRUYsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDaEQsa0JBQWtCLEVBQ2xCLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBQ2xCLHNDQUFzQztJQUN0QyxPQUFPLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FDaEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7UUFDbEIsdUNBQXVDO1FBQ3ZDLE9BQU8sS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsY0FBYyxDQUFDLFFBQVEsRUFBRSxRQUFRLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFBO0lBQ25GLENBQUMsQ0FBQyxDQUFBO0FBQ04sQ0FBQyxDQUFDLENBQ0gsQ0FBQTtBQUVELE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxhQUFhLENBQUMsT0FBTyxDQUFDO0lBQzNELGNBQWMsRUFBRSxhQUFhLENBQUMsWUFBWSxFQUFlLENBQUMsZ0JBQWdCLENBQUM7SUFDM0UsWUFBWSxFQUFFLGFBQWEsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxpQkFBaUIsRUFBRSxLQUFLLEVBQVUsQ0FBQztJQUM1RSxJQUFJLEVBQUUsYUFBYSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUM7Q0FDcEMsQ0FBQztDQUFHO0FBRUwsTUFBTSxPQUFPLGNBQWUsU0FBUSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBMEMsQ0FBQyxnQkFBZ0IsRUFBRTtJQUNySCxPQUFPLEVBQUUsaUJBQWlCLENBQUMsR0FBRyxDQUFDLGdCQUFnQixDQUFDO0NBQ2pELENBQUM7Q0FBRztBQUVMLE1BQU0sQ0FBQyxNQUFNLGtCQUFrQixHQUFHLEtBQUssQ0FBQyxNQUFNLENBQzVDLGNBQWMsRUFDZCxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQztJQUNsQixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQ3RCLFFBQVEsQ0FBQyxFQUFDLE1BQU0sRUFBRSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUU7UUFDaEMsS0FBSyxDQUFDLENBQUMsUUFBUSxDQUFBO1FBQ2YsS0FBSyxDQUFDLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBQSxDQUFDLHVDQUF1QztRQUMxRCxNQUFNLFVBQVUsR0FBRyxDQUFDLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxDQUFBO1FBQ3RDLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztZQUNoQixJQUFJLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFDLGNBQWMsRUFBRSxDQUFDO2dCQUNyRCxPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksZ0JBQWdCLENBQUMsRUFBRSxPQUFPLEVBQUUsZUFBZSxFQUFFLENBQUMsQ0FBQTtZQUNsRSxDQUFDO1lBQ0QsT0FBTyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUE7UUFDdEIsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FDakMsTUFBTSxFQUNOLFdBQVcsRUFDWCxJQUFJLFdBQVcsQ0FBQztZQUNkLEVBQUUsRUFBRSxVQUFVO1lBQ2QsS0FBSyxFQUFFLENBQUMsTUFBTSxFQUFFLEdBQUcsT0FBTyxDQUFDLGNBQWMsQ0FBQyxLQUFLLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO1NBQzFFLENBQUMsQ0FDSCxDQUFBO0lBQ0gsQ0FBQyxDQUNGLENBQUE7QUFDSCxDQUFDLENBQUMsQ0FDSCxDQUFBO0FBRUQsTUFBTSxPQUFPLFlBQWEsU0FBUSxJQUFJLENBQUMsYUFBYSxDQUFDLEdBQUcsRUFBZ0IsQ0FBQyxjQUFjLEVBQUU7SUFDdkYsT0FBTyxFQUFFLGlCQUFpQixDQUFDLEdBQUcsQ0FBQyxjQUFjLENBQUM7SUFDOUMseUdBQXlHO0lBQ3pHLDZIQUE2SDtJQUM3SCxTQUFTLEVBQUUsQ0FBQyxjQUFjLENBQUM7Q0FDNUIsQ0FBQztDQUFHO0FBRUwsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsS0FBSyxDQUFDLE1BQU0sQ0FDMUMsWUFBWSxFQUNaLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDO0lBQ2xCLEtBQUssQ0FBQyxDQUFDLFdBQVcsQ0FBQTtJQUNsQixPQUFPLE1BQU0sQ0FBQyxVQUFVLENBQ3RCLFFBQVEsQ0FBQyxFQUFDLE1BQU0sRUFBRSxFQUFFLEdBQUcsRUFBRTtRQUN2QiwyRUFBMkU7UUFDM0UsTUFBTSxXQUFXLEdBQUcsS0FBSyxDQUFDLENBQUMsTUFBTSxDQUFDLGFBQWEsQ0FBQyxXQUFXLENBQUMsQ0FBQTtRQUM1RCxNQUFNLEVBQUUsWUFBWSxFQUFFLEdBQUcsaUJBQWlCLENBQUMsU0FBUyxDQUFDLEdBQUcsQ0FBQyxDQUFBO1FBQ3pELE9BQU8sQ0FBQyxHQUFHLENBQ1Q7WUFDRSxXQUFXO1lBQ1gsWUFBWTtTQUNiLEVBQ0QsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLENBQ2IsQ0FBQTtRQUNELElBQUksWUFBWSxJQUFJLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUMzRixPQUFPLEtBQUssQ0FBQyxDQUFDLElBQUksaUJBQWlCLENBQUMsRUFBRSxPQUFPLEVBQUUsNEJBQTRCLEVBQUUsQ0FBQyxDQUFBO1FBQ2hGLENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQyxDQUFDLE1BQU0sQ0FBQTtJQUN0QixDQUFDLENBQ0YsQ0FBQTtBQUNILENBQUMsQ0FBQyxDQUNILENBQUE7QUFFRCxNQUFNLE9BQU8sSUFBSyxTQUFRLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxFQUFRLENBQUMsTUFBTSxFQUFFO0lBQy9ELE9BQU8sRUFBRSxpQkFBaUIsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDO0NBQ3ZDLENBQUM7Q0FBRztBQUVMLE1BQU0sQ0FBQyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsTUFBTSxDQUNsQyxJQUFJLEVBQ0osTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUM7SUFDbEIsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFDLE1BQU07UUFDL0IsT0FBTyxLQUFLLENBQUMsQ0FBQyxNQUFNLENBQUE7SUFDdEIsQ0FBQyxDQUFDLENBQUE7QUFDSixDQUFDLENBQUMsQ0FDSCxDQUFBO0FBRUQsTUFBTSxPQUFPLE9BQVEsU0FBUSxPQUFPLENBQUMsTUFBTSxFQUFXLENBQUMsU0FBUyxFQUFFLEVBQUUsSUFBSSxFQUFFLE1BQU0sQ0FBQyxPQUFPLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDO0NBQUc7QUFFeEcsTUFBTSxPQUFPLFlBQWEsU0FBUSxnQkFBZ0IsRUFBZ0IsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO0NBQUc7QUFDekYsTUFBTSxPQUFPLFlBQWEsU0FBUSxnQkFBZ0IsRUFBZ0IsQ0FBQyxjQUFjLEVBQUUsRUFBRSxDQUFDO0NBQUcifQ==
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"query.test.d.ts","sourceRoot":"","sources":["../query.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"query.test.d.ts","sourceRoot":"","sources":["../query.test.ts"],"names":[],"mappings":"AAIA,OAAO,EAA8C,CAAC,EAAU,MAAM,YAAY,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgBlF,qBAAa,SAAU,SAAQ,cAM7B;CAAG;AACL,MAAM,CAAC,OAAO,WAAW,SAAS,CAAC,CAAC;IAElC,UAAiB,OAAQ,SAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,SAAS,CAAC;KAAG;CACtE"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rawQuery.test.d.ts","sourceRoot":"","sources":["../rawQuery.test.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"rawQuery.test.d.ts","sourceRoot":"","sources":["../rawQuery.test.ts"],"names":[],"mappings":"AACA,OAAO,EAA+C,cAAc,EAAmC,MAAM,YAAY,CAAA;AASzH,eAAO,MAAM,EAAE,6CAWb,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"repository-ext.test.d.ts","sourceRoot":"","sources":["../repository-ext.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"requires.test.d.ts","sourceRoot":"","sources":["../requires.test.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"requires.test.d.ts","sourceRoot":"","sources":["../requires.test.ts"],"names":[],"mappings":"AACA,OAAO,EAAmB,KAAK,EAAU,IAAI,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AAEvE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAA;AAIhD,OAAO,EAAE,cAAc,EAAyC,YAAY,EAAoB,IAAI,EAAE,kBAAkB,EAA0B,cAAc,EAAmC,IAAI,EAAY,MAAM,eAAe,CAAA;;cAGnK,IAAI;;AADzE,qBAAa,sBACX,SAAQ,2BAA8F;IAEtG,MAAM,CAAC,OAAO,oDASZ;CACH;AAqBD,eAAO,MAAM,eAAe;;;;;;;;;;SAMK,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"router-generator.test.d.ts","sourceRoot":"","sources":["../router-generator.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routing-interruptibility.test.d.ts","sourceRoot":"","sources":["../routing-interruptibility.test.ts"],"names":[],"mappings":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rpc-multi-middleware.test.d.ts","sourceRoot":"","sources":["../rpc-multi-middleware.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,
|
|
1
|
+
{"version":3,"file":"rpc-multi-middleware.test.d.ts","sourceRoot":"","sources":["../rpc-multi-middleware.test.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmB,KAAK,EAAe,MAAM,QAAQ,CAAA;AAC5D,OAAO,EAAW,IAAI,EAAE,CAAC,EAAE,MAAM,YAAY,CAAA;AAC7C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAA;AAIpD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAkD,MAAM,qBAAqB,CAAA;AAGpG,OAAO,EAAE,cAAc,EAAyC,YAAY,EAA0B,kBAAkB,EAA0B,cAAc,EAAmC,IAAI,EAAY,WAAW,EAAE,MAAM,eAAe,CAAA;AAErP,QAAA,MAAM,UAAU;;;;;;;;;;oCAImB,CAAA;AAGnC,qBAAa,oBAAqB,SAAQ,UAAU;CAAG;;;;;;;;;;;;AAEvD,cAAM,UAAW,SAAQ,eAMkB;CACzC;AAsCF,eAAO,MAAM,OAAO,iEAMhB,CAAA;AAgBJ,eAAO,MAAM,YAAY,2HAItB,CAAA;AAEH,eAAO,MAAM,YAAY,yIAgB2B,CAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sql-store.test.d.ts","sourceRoot":"","sources":["../sql-store.test.ts"],"names":[],"mappings":""}
|
package/test/fixtures.ts
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import { Effect, Layer, S, Scope
|
|
1
|
+
import { Context, Effect, Layer, RpcX, S, Scope } from "effect-app"
|
|
2
2
|
import { NotLoggedInError, UnauthorizedError } from "effect-app/client"
|
|
3
|
-
import { RpcContextMap
|
|
4
|
-
import {
|
|
3
|
+
import { RpcContextMap } from "effect-app/rpc"
|
|
4
|
+
import { TaggedErrorClass } from "effect-app/Schema"
|
|
5
5
|
|
|
6
|
-
export class UserProfile extends
|
|
6
|
+
export class UserProfile extends Context.assignTag<UserProfile, UserProfile>("UserProfile")(
|
|
7
7
|
S.Class<UserProfile>("UserProfile")({
|
|
8
8
|
id: S.String,
|
|
9
9
|
roles: S.Array(S.String)
|
|
@@ -11,10 +11,10 @@ export class UserProfile extends ServiceMap.assignTag<UserProfile, UserProfile>(
|
|
|
11
11
|
) {
|
|
12
12
|
}
|
|
13
13
|
|
|
14
|
-
export class Some extends
|
|
15
|
-
export class SomeElse extends
|
|
14
|
+
export class Some extends Context.Opaque<Some>()("Some", { make: Effect.succeed({ a: 1 }) }) {}
|
|
15
|
+
export class SomeElse extends Context.Opaque<SomeElse>()("SomeElse", { make: Effect.succeed({ b: 2 }) }) {}
|
|
16
16
|
const MakeSomeService = Effect.succeed({ a: 1 })
|
|
17
|
-
export class SomeService extends
|
|
17
|
+
export class SomeService extends Context.Opaque<SomeService>()("SomeService", { make: MakeSomeService }) {
|
|
18
18
|
static readonly Default = this.toLayer(this.make)
|
|
19
19
|
}
|
|
20
20
|
|
|
@@ -128,5 +128,7 @@ export const TestLive = Layer.effect(
|
|
|
128
128
|
})
|
|
129
129
|
)
|
|
130
130
|
|
|
131
|
-
export class
|
|
132
|
-
|
|
131
|
+
export class Counter extends Context.Opaque<Counter>()("Counter", { make: Effect.succeed({ a: 0 }) }) {}
|
|
132
|
+
|
|
133
|
+
export class CustomError1 extends TaggedErrorClass<CustomError1>()("CustomError1", {}) {}
|
|
134
|
+
export class CustomError2 extends TaggedErrorClass<CustomError2>()("CustomError2", {}) {}
|
package/test/query.test.ts
CHANGED
|
@@ -1,17 +1,21 @@
|
|
|
1
1
|
/* eslint-disable unused-imports/no-unused-vars */
|
|
2
2
|
/* eslint-disable @typescript-eslint/no-empty-object-type */
|
|
3
3
|
/* eslint-disable @typescript-eslint/no-explicit-any */
|
|
4
|
-
import {
|
|
4
|
+
import { SchemaTransformation } from "effect"
|
|
5
|
+
import { Context, Effect, flow, Layer, Option, pipe, S, Struct } from "effect-app"
|
|
5
6
|
import { inspect } from "util"
|
|
6
7
|
import { expect, expectTypeOf, it } from "vitest"
|
|
7
8
|
import { setupRequestContextFromCurrent } from "../src/api/setupRequest.js"
|
|
8
9
|
import { and, count, make, one, or, order, page, project, type QueryEnd, type QueryProjection, type QueryWhere, toFilter, where } from "../src/Model/query.js"
|
|
9
10
|
import { makeRepo } from "../src/Model/Repository.js"
|
|
11
|
+
import { RepositoryRegistryLive } from "../src/Model/Repository/Registry.js"
|
|
10
12
|
import { memFilter, MemoryStoreLive } from "../src/Store/Memory.js"
|
|
11
13
|
import { SomeService } from "./fixtures.js"
|
|
12
14
|
|
|
15
|
+
const TestStoreLive = Layer.merge(MemoryStoreLive, RepositoryRegistryLive)
|
|
16
|
+
|
|
13
17
|
const str = S.Struct({ _tag: S.Literal("string"), value: S.String })
|
|
14
|
-
const num = S.Struct({ _tag: S.Literal("number"), value: S.
|
|
18
|
+
const num = S.Struct({ _tag: S.Literal("number"), value: S.Finite })
|
|
15
19
|
const someUnion = S.Union([str, num])
|
|
16
20
|
|
|
17
21
|
export class Something extends S.Class<Something>("Something")({
|
|
@@ -19,7 +23,7 @@ export class Something extends S.Class<Something>("Something")({
|
|
|
19
23
|
displayName: S.NonEmptyString255,
|
|
20
24
|
name: S.NullOr(S.NonEmptyString255).withDefault,
|
|
21
25
|
n: S.Date.withDefault,
|
|
22
|
-
union: someUnion.pipe(S.
|
|
26
|
+
union: someUnion.pipe(S.withConstructorDefault(Effect.succeed({ _tag: "string" as const, value: "hi" })))
|
|
23
27
|
}) {}
|
|
24
28
|
export declare namespace Something {
|
|
25
29
|
// eslint-disable-next-line @typescript-eslint/no-empty-object-type
|
|
@@ -90,8 +94,8 @@ it("works", () => {
|
|
|
90
94
|
|
|
91
95
|
const processed = memFilter(interpreted)(items.map((_) =>
|
|
92
96
|
S.encodeUnknownSync(S.Struct({
|
|
93
|
-
...
|
|
94
|
-
displayName: S.
|
|
97
|
+
...Struct.omit(Something.fields, ["displayName"]),
|
|
98
|
+
displayName: S.Literals(["Verona", "Riley"])
|
|
95
99
|
}))(_)
|
|
96
100
|
))
|
|
97
101
|
|
|
@@ -99,7 +103,7 @@ it("works", () => {
|
|
|
99
103
|
})
|
|
100
104
|
|
|
101
105
|
// @effect-diagnostics-next-line missingEffectServiceDependency:off
|
|
102
|
-
class SomethingRepo extends
|
|
106
|
+
class SomethingRepo extends Context.Service<SomethingRepo>()("SomethingRepo", {
|
|
103
107
|
make: Effect.gen(function*() {
|
|
104
108
|
return yield* makeRepo("Something", Something, {})
|
|
105
109
|
})
|
|
@@ -112,7 +116,7 @@ class SomethingRepo extends ServiceMap.Service<SomethingRepo>()("SomethingRepo",
|
|
|
112
116
|
})
|
|
113
117
|
)
|
|
114
118
|
.pipe(
|
|
115
|
-
Layer.provide(
|
|
119
|
+
Layer.provide(TestStoreLive)
|
|
116
120
|
)
|
|
117
121
|
}
|
|
118
122
|
|
|
@@ -279,7 +283,7 @@ it(
|
|
|
279
283
|
expect(result).toEqual([])
|
|
280
284
|
expect(result2).toEqual([])
|
|
281
285
|
})
|
|
282
|
-
.pipe(Effect.provide(
|
|
286
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
|
|
283
287
|
)
|
|
284
288
|
|
|
285
289
|
it(
|
|
@@ -465,7 +469,7 @@ it(
|
|
|
465
469
|
|
|
466
470
|
expect([]).toEqual([])
|
|
467
471
|
})
|
|
468
|
-
.pipe(Effect.provide(
|
|
472
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
|
|
469
473
|
)
|
|
470
474
|
|
|
471
475
|
it(
|
|
@@ -508,7 +512,7 @@ it(
|
|
|
508
512
|
|
|
509
513
|
expect([]).toEqual([])
|
|
510
514
|
})
|
|
511
|
-
.pipe(Effect.provide(
|
|
515
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
|
|
512
516
|
)
|
|
513
517
|
|
|
514
518
|
it(
|
|
@@ -519,8 +523,8 @@ it(
|
|
|
519
523
|
const schema = S.Struct({
|
|
520
524
|
id: S.String,
|
|
521
525
|
createdAt: S.Date.pipe(
|
|
522
|
-
S.withDecodingDefault(() => new Date().toISOString()),
|
|
523
|
-
S.withConstructorDefault(() =>
|
|
526
|
+
S.withDecodingDefault(Effect.sync(() => new Date().toISOString())),
|
|
527
|
+
S.withConstructorDefault(Effect.sync(() => new Date()))
|
|
524
528
|
)
|
|
525
529
|
})
|
|
526
530
|
const repo = yield* makeRepo(
|
|
@@ -532,8 +536,8 @@ it(
|
|
|
532
536
|
const outputSchema = S.Struct({
|
|
533
537
|
id: S.Literal("123"),
|
|
534
538
|
createdAt: S.Date.pipe(
|
|
535
|
-
S.withDecodingDefault(() => new Date().toISOString()),
|
|
536
|
-
S.withConstructorDefault(() =>
|
|
539
|
+
S.withDecodingDefault(Effect.sync(() => new Date().toISOString())),
|
|
540
|
+
S.withConstructorDefault(Effect.sync(() => new Date()))
|
|
537
541
|
)
|
|
538
542
|
})
|
|
539
543
|
|
|
@@ -541,7 +545,34 @@ it(
|
|
|
541
545
|
|
|
542
546
|
expect(result).toEqual([])
|
|
543
547
|
})
|
|
544
|
-
.pipe(Effect.provide(
|
|
548
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
|
|
549
|
+
)
|
|
550
|
+
|
|
551
|
+
it(
|
|
552
|
+
"project with encodeKeys in projection maps encoded keys",
|
|
553
|
+
() =>
|
|
554
|
+
Effect
|
|
555
|
+
.gen(function*() {
|
|
556
|
+
const schema = S.Struct({
|
|
557
|
+
id: S.String,
|
|
558
|
+
a: S.Number
|
|
559
|
+
})
|
|
560
|
+
|
|
561
|
+
const repo = yield* makeRepo(
|
|
562
|
+
"test",
|
|
563
|
+
schema,
|
|
564
|
+
{
|
|
565
|
+
makeInitial: Effect.sync(() => [{ id: "1", a: 1 }])
|
|
566
|
+
}
|
|
567
|
+
)
|
|
568
|
+
|
|
569
|
+
const outputSchema = S.Struct({ b: S.Number }).pipe(S.encodeKeys({ b: "a" }))
|
|
570
|
+
|
|
571
|
+
const result = yield* repo.query(project(outputSchema))
|
|
572
|
+
|
|
573
|
+
expect(result).toStrictEqual([{ b: 1 }])
|
|
574
|
+
})
|
|
575
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
|
|
545
576
|
)
|
|
546
577
|
|
|
547
578
|
it(
|
|
@@ -551,7 +582,7 @@ it(
|
|
|
551
582
|
.gen(function*() {
|
|
552
583
|
const schema = S.Struct({
|
|
553
584
|
id: S.String,
|
|
554
|
-
literals: S.
|
|
585
|
+
literals: S.Literals(["a", "b", "c"])
|
|
555
586
|
})
|
|
556
587
|
|
|
557
588
|
type Schema = typeof schema.Type
|
|
@@ -571,7 +602,7 @@ it(
|
|
|
571
602
|
|
|
572
603
|
expect(result).toEqual([])
|
|
573
604
|
})
|
|
574
|
-
.pipe(Effect.provide(
|
|
605
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
|
|
575
606
|
)
|
|
576
607
|
|
|
577
608
|
it(
|
|
@@ -581,7 +612,7 @@ it(
|
|
|
581
612
|
.gen(function*() {
|
|
582
613
|
const schema = S.Struct({
|
|
583
614
|
id: S.String,
|
|
584
|
-
literals: S.Union([S.
|
|
615
|
+
literals: S.Union([S.Literals(["a", "b", "c"]), S.Null])
|
|
585
616
|
})
|
|
586
617
|
|
|
587
618
|
type Schema = typeof schema.Type
|
|
@@ -615,7 +646,7 @@ it(
|
|
|
615
646
|
|
|
616
647
|
expect(result).toEqual([])
|
|
617
648
|
})
|
|
618
|
-
.pipe(Effect.provide(
|
|
649
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
|
|
619
650
|
)
|
|
620
651
|
|
|
621
652
|
it(
|
|
@@ -659,7 +690,7 @@ it(
|
|
|
659
690
|
|
|
660
691
|
expect(result).toEqual([])
|
|
661
692
|
})
|
|
662
|
-
.pipe(Effect.provide(
|
|
693
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise)
|
|
663
694
|
)
|
|
664
695
|
|
|
665
696
|
it("remove null from one constituent of a tagged union", () =>
|
|
@@ -672,7 +703,7 @@ it("remove null from one constituent of a tagged union", () =>
|
|
|
672
703
|
|
|
673
704
|
class BB extends S.Class<BB>("BB")({
|
|
674
705
|
id: S.Literal("BB"),
|
|
675
|
-
b: S.NullOr(S.
|
|
706
|
+
b: S.NullOr(S.Finite)
|
|
676
707
|
}) {}
|
|
677
708
|
|
|
678
709
|
type Union = AA | BB
|
|
@@ -708,7 +739,7 @@ it("remove null from one constituent of a tagged union", () =>
|
|
|
708
739
|
})[]
|
|
709
740
|
>()
|
|
710
741
|
})
|
|
711
|
-
.pipe(Effect.provide(
|
|
742
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|
|
712
743
|
|
|
713
744
|
it("refine 3", () =>
|
|
714
745
|
Effect
|
|
@@ -746,7 +777,7 @@ it("refine 3", () =>
|
|
|
746
777
|
const resQuer1 = yield* repo.query(where("id", "AA"))
|
|
747
778
|
expectTypeOf(resQuer1).toEqualTypeOf<readonly AA[]>()
|
|
748
779
|
})
|
|
749
|
-
.pipe(Effect.provide(
|
|
780
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|
|
750
781
|
|
|
751
782
|
it("my test", () =>
|
|
752
783
|
Effect
|
|
@@ -764,7 +795,7 @@ it("my test", () =>
|
|
|
764
795
|
)
|
|
765
796
|
expectTypeOf(resQuer1).toEqualTypeOf<readonly AA[]>()
|
|
766
797
|
})
|
|
767
|
-
.pipe(Effect.provide(
|
|
798
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|
|
768
799
|
|
|
769
800
|
it("refine inner without imposing a projection", () =>
|
|
770
801
|
Effect
|
|
@@ -808,7 +839,7 @@ it("refine inner without imposing a projection", () =>
|
|
|
808
839
|
where("union._tag", "AA"),
|
|
809
840
|
// But if I wanna the whole Data as output ignoring the inner refinement
|
|
810
841
|
// I wanna be able to do so
|
|
811
|
-
project(
|
|
842
|
+
project(Data.mapFields(Struct.pick(["union"])))
|
|
812
843
|
)
|
|
813
844
|
|
|
814
845
|
expectTypeOf(query2).toEqualTypeOf<
|
|
@@ -839,7 +870,7 @@ it("refine inner without imposing a projection", () =>
|
|
|
839
870
|
}[]
|
|
840
871
|
>()
|
|
841
872
|
})
|
|
842
|
-
.pipe(Effect.provide(
|
|
873
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|
|
843
874
|
|
|
844
875
|
it("does not allow string queries on arrays", () =>
|
|
845
876
|
Effect
|
|
@@ -874,7 +905,7 @@ it("does not allow string queries on arrays", () =>
|
|
|
874
905
|
expectTypeOf(good3).toEqualTypeOf<QueryWhere<Some, Some>>()
|
|
875
906
|
expectTypeOf(good4).toEqualTypeOf<QueryWhere<Some, Some>>()
|
|
876
907
|
})
|
|
877
|
-
.pipe(Effect.provide(
|
|
908
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|
|
878
909
|
|
|
879
910
|
it("test array.length", () =>
|
|
880
911
|
Effect
|
|
@@ -915,7 +946,7 @@ it("test array.length", () =>
|
|
|
915
946
|
QueryWhere<Something, Something>
|
|
916
947
|
>()
|
|
917
948
|
})
|
|
918
|
-
.pipe(Effect.provide(
|
|
949
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|
|
919
950
|
|
|
920
951
|
it("distribution over union", () =>
|
|
921
952
|
Effect
|
|
@@ -939,7 +970,7 @@ it("distribution over union", () =>
|
|
|
939
970
|
})[]
|
|
940
971
|
>()
|
|
941
972
|
})
|
|
942
|
-
.pipe(Effect.provide(
|
|
973
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|
|
943
974
|
|
|
944
975
|
it("refine nested union", () =>
|
|
945
976
|
Effect
|
|
@@ -980,7 +1011,154 @@ it("refine nested union", () =>
|
|
|
980
1011
|
}[]
|
|
981
1012
|
>()
|
|
982
1013
|
})
|
|
983
|
-
.pipe(Effect.provide(
|
|
1014
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|
|
1015
|
+
|
|
1016
|
+
it("find with transformed id", () =>
|
|
1017
|
+
Effect
|
|
1018
|
+
.gen(function*() {
|
|
1019
|
+
const ConfiguratorId = S.NonEmptyString255
|
|
1020
|
+
|
|
1021
|
+
class PreconfigurationId extends S.Class<PreconfigurationId>("PreconfigurationId")({
|
|
1022
|
+
configuratorId: ConfiguratorId,
|
|
1023
|
+
label: S.NonEmptyString50
|
|
1024
|
+
}) {}
|
|
1025
|
+
|
|
1026
|
+
const PreconfigurationIdFromString = S.NonEmptyString255.pipe(
|
|
1027
|
+
S.decodeTo(
|
|
1028
|
+
S.toType(PreconfigurationId),
|
|
1029
|
+
SchemaTransformation.transformOrFail({
|
|
1030
|
+
decode: Effect.fnUntraced(function*(value) {
|
|
1031
|
+
const values = value.split("_")
|
|
1032
|
+
const label = yield* S.SchemaParser.decodeUnknownEffect(S.NonEmptyString50)(values.pop())
|
|
1033
|
+
const configuratorId = yield* S.SchemaParser.decodeUnknownEffect(ConfiguratorId)(values.join("_"))
|
|
1034
|
+
return new PreconfigurationId({ configuratorId, label })
|
|
1035
|
+
}),
|
|
1036
|
+
encode: (id) => Effect.succeed(S.NonEmptyString255(`${id.configuratorId}_${id.label}`))
|
|
1037
|
+
})
|
|
1038
|
+
),
|
|
1039
|
+
S.revealCodec
|
|
1040
|
+
)
|
|
1041
|
+
|
|
1042
|
+
const Preconfiguration = S.Struct({
|
|
1043
|
+
id: PreconfigurationIdFromString,
|
|
1044
|
+
name: S.String
|
|
1045
|
+
})
|
|
1046
|
+
|
|
1047
|
+
const repo = yield* makeRepo("Preconfiguration", Preconfiguration, { idKey: "id" as const })
|
|
1048
|
+
|
|
1049
|
+
const id = new PreconfigurationId({
|
|
1050
|
+
configuratorId: S.NonEmptyString255("myConfigurator"),
|
|
1051
|
+
label: S.NonEmptyString50("myLabel")
|
|
1052
|
+
})
|
|
1053
|
+
const item = { id, name: "test preconfig" }
|
|
1054
|
+
|
|
1055
|
+
yield* repo.saveAndPublish([item])
|
|
1056
|
+
|
|
1057
|
+
const found = yield* repo.find(id)
|
|
1058
|
+
expect(Option.isSome(found)).toBe(true)
|
|
1059
|
+
expect(Option.getOrThrow(found).name).toBe("test preconfig")
|
|
1060
|
+
expect(Option.getOrThrow(found).id).toEqual(id)
|
|
1061
|
+
|
|
1062
|
+
const notFound = yield* repo.find(
|
|
1063
|
+
new PreconfigurationId({
|
|
1064
|
+
configuratorId: S.NonEmptyString255("other"),
|
|
1065
|
+
label: S.NonEmptyString50("nope")
|
|
1066
|
+
})
|
|
1067
|
+
)
|
|
1068
|
+
expect(Option.isNone(notFound)).toBe(true)
|
|
1069
|
+
})
|
|
1070
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|
|
1071
|
+
|
|
1072
|
+
it("find with transformed id in tagged union", () =>
|
|
1073
|
+
Effect
|
|
1074
|
+
.gen(function*() {
|
|
1075
|
+
const ConfiguratorId = S.NonEmptyString255
|
|
1076
|
+
|
|
1077
|
+
class PreconfigurationId extends S.Class<PreconfigurationId>("PreconfigurationId")({
|
|
1078
|
+
configuratorId: ConfiguratorId,
|
|
1079
|
+
label: S.NonEmptyString50
|
|
1080
|
+
}) {}
|
|
1081
|
+
|
|
1082
|
+
const PreconfigurationIdFromString = S.NonEmptyString255.pipe(
|
|
1083
|
+
S.decodeTo(
|
|
1084
|
+
S.toType(PreconfigurationId),
|
|
1085
|
+
SchemaTransformation.transformOrFail({
|
|
1086
|
+
decode: Effect.fnUntraced(function*(value) {
|
|
1087
|
+
const values = value.split("_")
|
|
1088
|
+
const label = yield* S.SchemaParser.decodeUnknownEffect(S.NonEmptyString50)(values.pop())
|
|
1089
|
+
const configuratorId = yield* S.SchemaParser.decodeUnknownEffect(ConfiguratorId)(values.join("_"))
|
|
1090
|
+
return new PreconfigurationId({ configuratorId, label })
|
|
1091
|
+
}),
|
|
1092
|
+
encode: (id) => Effect.succeed(S.NonEmptyString255(`${id.configuratorId}_${id.label}`))
|
|
1093
|
+
})
|
|
1094
|
+
),
|
|
1095
|
+
S.revealCodec
|
|
1096
|
+
)
|
|
1097
|
+
|
|
1098
|
+
class Draft extends S.TaggedClass<Draft>()("Draft", {
|
|
1099
|
+
id: PreconfigurationIdFromString,
|
|
1100
|
+
name: S.String
|
|
1101
|
+
}) {}
|
|
1102
|
+
|
|
1103
|
+
class Published extends S.TaggedClass<Published>()("Published", {
|
|
1104
|
+
id: PreconfigurationIdFromString,
|
|
1105
|
+
name: S.String,
|
|
1106
|
+
publishedAt: S.String
|
|
1107
|
+
}) {}
|
|
1108
|
+
|
|
1109
|
+
class Archived extends S.TaggedClass<Archived>()("Archived", {
|
|
1110
|
+
id: PreconfigurationIdFromString,
|
|
1111
|
+
name: S.String,
|
|
1112
|
+
archivedAt: S.String
|
|
1113
|
+
}) {}
|
|
1114
|
+
|
|
1115
|
+
const Preconfiguration = S.Union([Draft, Published, Archived])
|
|
1116
|
+
|
|
1117
|
+
const repo = yield* makeRepo("Preconfiguration", Preconfiguration, {})
|
|
1118
|
+
|
|
1119
|
+
const id1 = new PreconfigurationId({
|
|
1120
|
+
configuratorId: S.NonEmptyString255("conf1"),
|
|
1121
|
+
label: S.NonEmptyString50("draft1")
|
|
1122
|
+
})
|
|
1123
|
+
const id2 = new PreconfigurationId({
|
|
1124
|
+
configuratorId: S.NonEmptyString255("conf2"),
|
|
1125
|
+
label: S.NonEmptyString50("pub1")
|
|
1126
|
+
})
|
|
1127
|
+
const id3 = new PreconfigurationId({
|
|
1128
|
+
configuratorId: S.NonEmptyString255("conf3"),
|
|
1129
|
+
label: S.NonEmptyString50("arch1")
|
|
1130
|
+
})
|
|
1131
|
+
|
|
1132
|
+
const draft = new Draft({ id: id1, name: "my draft" })
|
|
1133
|
+
const published = new Published({ id: id2, name: "my published", publishedAt: "2024-01-01" })
|
|
1134
|
+
const archived = new Archived({ id: id3, name: "my archived", archivedAt: "2024-06-01" })
|
|
1135
|
+
|
|
1136
|
+
yield* repo.saveAndPublish([draft, published, archived])
|
|
1137
|
+
|
|
1138
|
+
// find each by their PreconfigurationId instance
|
|
1139
|
+
const foundDraft = yield* repo.find(id1)
|
|
1140
|
+
expect(Option.isSome(foundDraft)).toBe(true)
|
|
1141
|
+
expect(Option.getOrThrow(foundDraft)._tag).toBe("Draft")
|
|
1142
|
+
expect(Option.getOrThrow(foundDraft).name).toBe("my draft")
|
|
1143
|
+
|
|
1144
|
+
const foundPublished = yield* repo.find(id2)
|
|
1145
|
+
expect(Option.isSome(foundPublished)).toBe(true)
|
|
1146
|
+
expect(Option.getOrThrow(foundPublished)._tag).toBe("Published")
|
|
1147
|
+
|
|
1148
|
+
const foundArchived = yield* repo.find(id3)
|
|
1149
|
+
expect(Option.isSome(foundArchived)).toBe(true)
|
|
1150
|
+
expect(Option.getOrThrow(foundArchived)._tag).toBe("Archived")
|
|
1151
|
+
|
|
1152
|
+
// not found
|
|
1153
|
+
const notFound = yield* repo.find(
|
|
1154
|
+
new PreconfigurationId({
|
|
1155
|
+
configuratorId: S.NonEmptyString255("nope"),
|
|
1156
|
+
label: S.NonEmptyString50("nope")
|
|
1157
|
+
})
|
|
1158
|
+
)
|
|
1159
|
+
expect(Option.isNone(notFound)).toBe(true)
|
|
1160
|
+
})
|
|
1161
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|
|
984
1162
|
|
|
985
1163
|
it("refine union with nested union", () =>
|
|
986
1164
|
Effect
|
|
@@ -1095,4 +1273,4 @@ it("refine union with nested union", () =>
|
|
|
1095
1273
|
})[]
|
|
1096
1274
|
>()
|
|
1097
1275
|
})
|
|
1098
|
-
.pipe(Effect.provide(
|
|
1276
|
+
.pipe(Effect.provide(TestStoreLive), setupRequestContextFromCurrent(), Effect.runPromise))
|