effect-app 4.0.0-beta.12 → 4.0.0-beta.121
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 +466 -0
- package/dist/Config/SecretURL.js +2 -2
- package/dist/Config.d.ts +7 -0
- package/dist/Config.d.ts.map +1 -0
- package/dist/Config.js +6 -0
- package/dist/ConfigProvider.d.ts +39 -0
- package/dist/ConfigProvider.d.ts.map +1 -0
- package/dist/ConfigProvider.js +42 -0
- package/dist/{ServiceMap.d.ts → Context.d.ts} +14 -18
- package/dist/Context.d.ts.map +1 -0
- package/dist/Context.js +66 -0
- package/dist/Effect.d.ts +8 -7
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +3 -2
- package/dist/Layer.d.ts +5 -4
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +1 -1
- package/dist/Operations.d.ts +104 -27
- package/dist/Operations.d.ts.map +1 -1
- package/dist/Pure.d.ts +2 -2
- package/dist/Pure.d.ts.map +1 -1
- package/dist/Pure.js +13 -13
- package/dist/Schema/Class.d.ts +48 -10
- package/dist/Schema/Class.d.ts.map +1 -1
- package/dist/Schema/Class.js +120 -16
- package/dist/Schema/SpecialJsonSchema.d.ts +33 -0
- package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
- package/dist/Schema/SpecialJsonSchema.js +122 -0
- package/dist/Schema/SpecialOpenApi.d.ts +32 -0
- package/dist/Schema/SpecialOpenApi.d.ts.map +1 -0
- package/dist/Schema/SpecialOpenApi.js +123 -0
- package/dist/Schema/brand.d.ts +5 -1
- package/dist/Schema/brand.d.ts.map +1 -1
- package/dist/Schema/brand.js +1 -1
- package/dist/Schema/email.d.ts.map +1 -1
- package/dist/Schema/email.js +9 -4
- package/dist/Schema/ext.d.ts +111 -46
- package/dist/Schema/ext.d.ts.map +1 -1
- package/dist/Schema/ext.js +114 -53
- package/dist/Schema/moreStrings.d.ts +19 -7
- package/dist/Schema/moreStrings.d.ts.map +1 -1
- package/dist/Schema/moreStrings.js +14 -9
- package/dist/Schema/numbers.d.ts +11 -11
- package/dist/Schema/numbers.d.ts.map +1 -1
- package/dist/Schema/numbers.js +10 -9
- package/dist/Schema/phoneNumber.d.ts.map +1 -1
- package/dist/Schema/phoneNumber.js +8 -3
- package/dist/Schema/strings.d.ts +4 -4
- package/dist/Schema/strings.d.ts.map +1 -1
- package/dist/Schema.d.ts +74 -55
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +85 -64
- package/dist/client/apiClientFactory.d.ts +11 -28
- package/dist/client/apiClientFactory.d.ts.map +1 -1
- package/dist/client/apiClientFactory.js +14 -15
- package/dist/client/clientFor.d.ts +6 -5
- package/dist/client/clientFor.d.ts.map +1 -1
- package/dist/client/errors.d.ts +18 -9
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +35 -10
- package/dist/client/makeClient.d.ts +20 -15
- package/dist/client/makeClient.d.ts.map +1 -1
- package/dist/client/makeClient.js +32 -23
- package/dist/http/Request.d.ts.map +1 -1
- package/dist/http/Request.js +5 -5
- package/dist/ids.d.ts +2 -2
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +3 -2
- package/dist/index.d.ts +3 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -9
- package/dist/middleware.d.ts +2 -2
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +3 -3
- package/dist/rpc/MiddlewareMaker.d.ts +4 -3
- package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
- package/dist/rpc/MiddlewareMaker.js +7 -6
- package/dist/rpc/RpcContextMap.d.ts +2 -2
- package/dist/rpc/RpcContextMap.d.ts.map +1 -1
- package/dist/rpc/RpcContextMap.js +4 -4
- package/dist/rpc/RpcMiddleware.d.ts +4 -3
- package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
- package/dist/rpc/RpcMiddleware.js +1 -1
- package/dist/utils/gen.d.ts +1 -1
- package/dist/utils/gen.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +2 -2
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +3 -3
- package/dist/utils.d.ts +24 -0
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +28 -2
- package/package.json +29 -17
- package/src/Config/SecretURL.ts +1 -1
- package/src/Config.ts +14 -0
- package/src/ConfigProvider.ts +48 -0
- package/src/{ServiceMap.ts → Context.ts} +51 -60
- package/src/Effect.ts +11 -9
- package/src/Layer.ts +5 -4
- package/src/Pure.ts +17 -18
- package/src/Schema/Class.ts +157 -30
- package/src/Schema/SpecialJsonSchema.ts +137 -0
- package/src/Schema/SpecialOpenApi.ts +130 -0
- package/src/Schema/brand.ts +10 -3
- package/src/Schema/email.ts +10 -2
- package/src/Schema/ext.ts +191 -85
- package/src/Schema/moreStrings.ts +21 -11
- package/src/Schema/numbers.ts +9 -8
- package/src/Schema/phoneNumber.ts +8 -1
- package/src/Schema.ts +195 -104
- package/src/client/apiClientFactory.ts +24 -29
- package/src/client/clientFor.ts +6 -1
- package/src/client/errors.ts +34 -9
- package/src/client/makeClient.ts +121 -61
- package/src/http/Request.ts +7 -4
- package/src/ids.ts +2 -1
- package/src/index.ts +3 -11
- package/src/middleware.ts +2 -2
- package/src/rpc/MiddlewareMaker.ts +8 -7
- package/src/rpc/RpcContextMap.ts +6 -5
- package/src/rpc/RpcMiddleware.ts +5 -4
- package/src/utils/gen.ts +1 -1
- package/src/utils/logger.ts +2 -2
- package/src/utils.ts +30 -1
- package/test/dist/moreStrings.test.d.ts.map +1 -0
- package/test/dist/rpc.test.d.ts.map +1 -1
- package/test/dist/secretURL.test.d.ts.map +1 -0
- package/test/dist/special.test.d.ts.map +1 -0
- package/test/moreStrings.test.ts +17 -0
- package/test/rpc.test.ts +28 -6
- package/test/schema.test.ts +504 -4
- package/test/secretURL.test.ts +157 -0
- package/test/special.test.ts +862 -0
- package/test/utils.test.ts +2 -2
- package/tsconfig.base.json +0 -1
- package/tsconfig.json +0 -1
- package/dist/ServiceMap.d.ts.map +0 -1
- package/dist/ServiceMap.js +0 -91
- package/dist/Struct.d.ts +0 -44
- package/dist/Struct.d.ts.map +0 -1
- package/dist/Struct.js +0 -29
- package/src/Struct.ts +0 -54
|
@@ -4,11 +4,16 @@ import { withDefaultMake } from "./ext.js";
|
|
|
4
4
|
import { Numbers } from "./FastCheck.js";
|
|
5
5
|
export const PhoneNumber = S
|
|
6
6
|
.String
|
|
7
|
-
.pipe(S.
|
|
7
|
+
.pipe(S.annotate({
|
|
8
|
+
title: "PhoneNumber",
|
|
9
|
+
description: "a phone number with at least 7 digits",
|
|
10
|
+
format: "phone"
|
|
11
|
+
}), S.refine(isValidPhone, {
|
|
8
12
|
identifier: "PhoneNumber",
|
|
9
13
|
title: "PhoneNumber",
|
|
10
14
|
description: "a phone number with at least 7 digits",
|
|
11
|
-
arbitrary: () => (fc) => Numbers(7, 10)(fc).map((_) => _),
|
|
12
15
|
jsonSchema: { format: "phone" }
|
|
16
|
+
}), S.annotate({
|
|
17
|
+
toArbitrary: () => (fc) => Numbers(7, 10)(fc).map((_) => _)
|
|
13
18
|
}), withDefaultMake);
|
|
14
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmVOdW1iZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL3Bob25lTnVtYmVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQTtBQUNwRCxPQUFPLEtBQUssQ0FBQyxNQUFNLGVBQWUsQ0FBQTtBQUVsQyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sVUFBVSxDQUFBO0FBQzFDLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQTtBQU94QyxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FBQztLQUN6QixNQUFNO0tBQ04sSUFBSSxDQUNILENBQUMsQ0FBQyxRQUFRLENBQUM7SUFDVCxLQUFLLEVBQUUsYUFBYTtJQUNwQixXQUFXLEVBQUUsdUNBQXVDO0lBQ3BELE1BQU0sRUFBRSxPQUFPO0NBQ2hCLENBQUMsRUFDRixDQUFDLENBQUMsTUFBTSxDQUFDLFlBQStDLEVBQUU7SUFDeEQsVUFBVSxFQUFFLGFBQWE7SUFDekIsS0FBSyxFQUFFLGFBQWE7SUFDcEIsV0FBVyxFQUFFLHVDQUF1QztJQUNwRCxVQUFVLEVBQUUsRUFBRSxNQUFNLEVBQUUsT0FBTyxFQUFFO0NBQ2hDLENBQUMsRUFDRixDQUFDLENBQUMsUUFBUSxDQUFDO0lBQ1QsV0FBVyxFQUFFLEdBQUcsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBZ0IsQ0FBQztDQUMzRSxDQUFDLEVBQ0YsZUFBZSxDQUNoQixDQUFBIn0=
|
package/dist/Schema/strings.d.ts
CHANGED
|
@@ -3,17 +3,17 @@ import * as S from "effect/Schema";
|
|
|
3
3
|
import type { Simplify } from "effect/Types";
|
|
4
4
|
export type NonEmptyStringBrand = B.Brand<"NonEmptyString">;
|
|
5
5
|
export type NonEmptyString = string & NonEmptyStringBrand;
|
|
6
|
-
export declare const NonEmptyString: import("./ext.js").WithDefaults<S.brand<S.
|
|
6
|
+
export declare const NonEmptyString: import("./ext.js").WithDefaults<S.brand<S.NonEmptyString, "NonEmptyString">> & S.brand<S.NonEmptyString, "NonEmptyString">;
|
|
7
7
|
export interface NonEmptyString64kBrand extends Simplify<B.Brand<"NonEmptyString64k"> & NonEmptyStringBrand> {
|
|
8
8
|
}
|
|
9
9
|
export type NonEmptyString64k = string & NonEmptyString64kBrand;
|
|
10
|
-
export declare const NonEmptyString64k: import("./ext.js").WithDefaults<S.brand<S.
|
|
10
|
+
export declare const NonEmptyString64k: import("./ext.js").WithDefaults<S.brand<S.NonEmptyString, "NonEmptyString" | "NonEmptyString64k">> & S.brand<S.NonEmptyString, "NonEmptyString" | "NonEmptyString64k">;
|
|
11
11
|
export interface NonEmptyString2kBrand extends Simplify<B.Brand<"NonEmptyString2k"> & NonEmptyString64kBrand> {
|
|
12
12
|
}
|
|
13
13
|
export type NonEmptyString2k = string & NonEmptyString2kBrand;
|
|
14
|
-
export declare const NonEmptyString2k: import("./ext.js").WithDefaults<S.brand<S.
|
|
14
|
+
export declare const NonEmptyString2k: import("./ext.js").WithDefaults<S.brand<S.NonEmptyString, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k">> & S.brand<S.NonEmptyString, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k">;
|
|
15
15
|
export interface NonEmptyString255Brand extends Simplify<B.Brand<"NonEmptyString255"> & NonEmptyString2kBrand> {
|
|
16
16
|
}
|
|
17
17
|
export type NonEmptyString255 = string & NonEmptyString255Brand;
|
|
18
|
-
export declare const NonEmptyString255: import("./ext.js").WithDefaults<S.brand<S.
|
|
18
|
+
export declare const NonEmptyString255: import("./ext.js").WithDefaults<S.brand<S.NonEmptyString, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255">> & S.brand<S.NonEmptyString, "NonEmptyString" | "NonEmptyString64k" | "NonEmptyString2k" | "NonEmptyString255">;
|
|
19
19
|
//# sourceMappingURL=strings.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../src/Schema/strings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAI5C,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;AAC3D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,mBAAmB,CAAA;AACzD,eAAO,MAAM,cAAc,
|
|
1
|
+
{"version":3,"file":"strings.d.ts","sourceRoot":"","sources":["../../src/Schema/strings.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAI5C,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAA;AAC3D,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,mBAAmB,CAAA;AACzD,eAAO,MAAM,cAAc,4HASxB,CAAA;AAEH,MAAM,WAAW,sBAAuB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,mBAAmB,CAAC;CAAG;AAC/G,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,sBAAsB,CAAA;AAC/D,eAAO,MAAM,iBAAiB,wKAU3B,CAAA;AAEH,MAAM,WAAW,qBAAsB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,kBAAkB,CAAC,GAAG,sBAAsB,CAAC;CAAG;AAChH,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,qBAAqB,CAAA;AAC7D,eAAO,MAAM,gBAAgB,kNAU1B,CAAA;AAEH,MAAM,WAAW,sBAAuB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,GAAG,qBAAqB,CAAC;CAAG;AACjH,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,sBAAsB,CAAA;AAC/D,eAAO,MAAM,iBAAiB,8PAU3B,CAAA"}
|
package/dist/Schema.d.ts
CHANGED
|
@@ -1,14 +1,13 @@
|
|
|
1
|
-
import { type Tracer } from "effect";
|
|
1
|
+
import { SchemaAST, type Tracer } from "effect";
|
|
2
2
|
import * as S from "effect/Schema";
|
|
3
3
|
import type { NonEmptyReadonlyArray } from "./Array.js";
|
|
4
|
-
import { Email as EmailT } from "./Schema/email.js";
|
|
5
|
-
import { PhoneNumber as PhoneNumberT } from "./Schema/phoneNumber.js";
|
|
4
|
+
import { Email as EmailT, type Email as EmailType } from "./Schema/email.js";
|
|
5
|
+
import { PhoneNumber as PhoneNumberT, type PhoneNumber as PhoneNumberType } from "./Schema/phoneNumber.js";
|
|
6
6
|
export * from "effect/Schema";
|
|
7
|
-
export { TaggedErrorClass as TaggedError } from "effect/Schema";
|
|
8
7
|
export * from "./Schema/Class.js";
|
|
9
8
|
export { Class, TaggedClass } from "./Schema/Class.js";
|
|
10
9
|
export { fromBrand, nominal } from "./Schema/brand.js";
|
|
11
|
-
export { Array, Boolean, Date,
|
|
10
|
+
export { Array, Boolean, Date, DateFromString, DateValid, Finite, Literals, NullOr, Number, ReadonlyMap, ReadonlySet } from "./Schema/ext.js";
|
|
12
11
|
export { Int, NonNegativeInt } from "./Schema/numbers.js";
|
|
13
12
|
export * from "./Schema/email.js";
|
|
14
13
|
export * from "./Schema/ext.js";
|
|
@@ -16,70 +15,90 @@ export * from "./Schema/moreStrings.js";
|
|
|
16
15
|
export * from "./Schema/numbers.js";
|
|
17
16
|
export * from "./Schema/phoneNumber.js";
|
|
18
17
|
export * from "./Schema/schema.js";
|
|
18
|
+
export * from "./Schema/SpecialJsonSchema.js";
|
|
19
|
+
export * from "./Schema/SpecialOpenApi.js";
|
|
19
20
|
export * from "./Schema/strings.js";
|
|
20
21
|
export { NonEmptyString } from "./Schema/strings.js";
|
|
21
22
|
export * as SchemaIssue from "effect/SchemaIssue";
|
|
22
23
|
export * as SchemaParser from "effect/SchemaParser";
|
|
23
24
|
export { Void as Void_ } from "effect/Schema";
|
|
25
|
+
export declare function Struct<const Fields extends S.Struct.Fields>(fields: Fields): S.Struct<Fields>;
|
|
26
|
+
export interface Struct<Fields extends S.Struct.Fields> extends S.Struct<Fields> {
|
|
27
|
+
}
|
|
28
|
+
export declare namespace Struct {
|
|
29
|
+
type Fields = S.Struct.Fields;
|
|
30
|
+
type Type<F extends S.Struct.Fields> = S.Struct.Type<F>;
|
|
31
|
+
type Encoded<F extends S.Struct.Fields> = S.Struct.Encoded<F>;
|
|
32
|
+
type DecodingServices<F extends S.Struct.Fields> = S.Struct.DecodingServices<F>;
|
|
33
|
+
type EncodingServices<F extends S.Struct.Fields> = S.Struct.EncodingServices<F>;
|
|
34
|
+
type MakeIn<F extends S.Struct.Fields> = S.Struct.MakeIn<F>;
|
|
35
|
+
type Iso<F extends S.Struct.Fields> = S.Struct.Iso<F>;
|
|
36
|
+
}
|
|
37
|
+
export declare function NonEmptyArray<Value extends S.Top>(value: Value): S.NonEmptyArray<Value>;
|
|
38
|
+
export declare function TaggedStruct<const Tag extends SchemaAST.LiteralValue, const Fields extends S.Struct.Fields>(value: Tag, fields: Fields): S.TaggedStruct<Tag, Fields>;
|
|
39
|
+
export type TaggedStruct<Tag extends SchemaAST.LiteralValue, Fields extends S.Struct.Fields> = S.TaggedStruct<Tag, Fields>;
|
|
40
|
+
export declare function Record<Key extends S.Record.Key, Value extends S.Top>(key: Key, value: Value): S.$Record<Key, Value>;
|
|
41
|
+
export declare namespace Record {
|
|
42
|
+
type Key = S.Record.Key;
|
|
43
|
+
type Type<K extends S.Record.Key, V extends S.Top> = S.Record.Type<K, V>;
|
|
44
|
+
type Encoded<K extends S.Record.Key, V extends S.Top> = S.Record.Encoded<K, V>;
|
|
45
|
+
}
|
|
24
46
|
export declare const SpanId: unique symbol;
|
|
25
47
|
export type SpanId = typeof SpanId;
|
|
26
48
|
export interface WithOptionalSpan {
|
|
27
49
|
[SpanId]?: Tracer.Span;
|
|
28
50
|
}
|
|
29
51
|
export declare const Email: import("./Schema/ext.js").WithDefaults<S.refine<EmailT, S.String>> & S.refine<EmailT, S.String>;
|
|
30
|
-
export type Email =
|
|
31
|
-
export declare const PhoneNumber: import("./Schema/ext.js").WithDefaults<
|
|
32
|
-
export
|
|
33
|
-
_tag: string;
|
|
34
|
-
}, I, R>(schema: S.Codec<A, I, R>) => any;
|
|
35
|
-
export declare const makeIsAnyOf: <A extends {
|
|
36
|
-
_tag: string;
|
|
37
|
-
}, I, R>(schema: S.Codec<A, I, R>) => IsAny<A>;
|
|
38
|
-
export type ExtractUnion<A extends {
|
|
39
|
-
_tag: string;
|
|
40
|
-
}, Tags extends A["_tag"]> = Extract<A, Record<"_tag", Tags>>;
|
|
41
|
-
export type Is<A extends {
|
|
42
|
-
_tag: string;
|
|
43
|
-
}> = {
|
|
44
|
-
[K in A as K["_tag"]]: (a: A) => a is K;
|
|
45
|
-
};
|
|
46
|
-
export type ElemType<A> = A extends Array<infer E> ? E : never;
|
|
47
|
-
export interface IsAny<A extends {
|
|
48
|
-
_tag: string;
|
|
49
|
-
}> {
|
|
50
|
-
<Keys extends A["_tag"][]>(...keys: Keys): (a: A) => a is ExtractUnion<A, ElemType<Keys>>;
|
|
51
|
-
}
|
|
52
|
-
export declare const taggedUnionMap: <Members extends readonly (S.Top & {
|
|
53
|
-
fields: {
|
|
54
|
-
_tag: S.tag<string>;
|
|
55
|
-
};
|
|
56
|
-
})[]>(self: Members) => any;
|
|
52
|
+
export type Email = EmailType;
|
|
53
|
+
export declare const PhoneNumber: import("./Schema/ext.js").WithDefaults<S.refine<PhoneNumberT, S.String>> & S.refine<PhoneNumberT, S.String>;
|
|
54
|
+
export type PhoneNumber = PhoneNumberType;
|
|
57
55
|
export declare const tags: <Members extends NonEmptyReadonlyArray<(S.Top & {
|
|
58
|
-
|
|
59
|
-
_tag:
|
|
56
|
+
readonly Type: {
|
|
57
|
+
readonly _tag: string;
|
|
58
|
+
};
|
|
59
|
+
})>>(self: Members) => S.Literals<{ [Index in keyof Members]: Members[Index]["Type"]["_tag"]; }>;
|
|
60
|
+
type TaggedUnionMembers = NonEmptyReadonlyArray<S.Top & {
|
|
61
|
+
readonly Type: {
|
|
62
|
+
readonly _tag: string;
|
|
63
|
+
};
|
|
64
|
+
}>;
|
|
65
|
+
type TaggedUnionTags<Members extends TaggedUnionMembers> = S.Literals<{
|
|
66
|
+
[Index in keyof Members]: Members[Index]["Type"]["_tag"];
|
|
67
|
+
}>;
|
|
68
|
+
type TaggedPropertyKeys<A, Members extends TaggedUnionMembers> = {
|
|
69
|
+
[K in keyof A & string]: A[K] extends Members[number]["Type"] ? K : never;
|
|
70
|
+
}[keyof A & string];
|
|
71
|
+
type PropertyGuardsFor<Members extends TaggedUnionMembers, K extends string, A> = {
|
|
72
|
+
readonly [M in Members[number] as `is${M["Type"]["_tag"]}`]: (target: A) => target is A & {
|
|
73
|
+
readonly [P in K]: M["Type"];
|
|
74
|
+
};
|
|
75
|
+
} & {
|
|
76
|
+
readonly isAnyOf: <const Tags extends ReadonlyArray<Members[number]["Type"]["_tag"]>>(tags: Tags) => (target: A) => target is A & {
|
|
77
|
+
readonly [P in K]: Extract<Members[number]["Type"], {
|
|
78
|
+
readonly _tag: Tags[number];
|
|
79
|
+
}>;
|
|
60
80
|
};
|
|
61
|
-
})>>(self: Members) => any;
|
|
62
|
-
export declare const ExtendTaggedUnion: <A extends {
|
|
63
|
-
_tag: string;
|
|
64
|
-
}, I, R>(schema: S.Codec<A, I, R>) => S.Codec<A, I, R, never> & {
|
|
65
|
-
is: <I_1>(input: I_1) => input is any;
|
|
66
|
-
isA: any;
|
|
67
|
-
isAnyOf: IsAny<{
|
|
68
|
-
_tag: string;
|
|
69
|
-
}>;
|
|
70
81
|
};
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
82
|
+
type PropertyGuards<Members extends TaggedUnionMembers, K extends string> = {
|
|
83
|
+
readonly [M in Members[number] as `is${M["Type"]["_tag"]}`]: <T extends {
|
|
84
|
+
readonly [P in K]: Members[number]["Type"];
|
|
85
|
+
}>(target: T) => target is T & {
|
|
86
|
+
readonly [P in K]: M["Type"];
|
|
74
87
|
};
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
88
|
+
} & {
|
|
89
|
+
readonly isAnyOf: <const Tags extends ReadonlyArray<Members[number]["Type"]["_tag"]>>(tags: Tags) => <T extends {
|
|
90
|
+
readonly [P in K]: Members[number]["Type"];
|
|
91
|
+
}>(target: T) => target is T & {
|
|
92
|
+
readonly [P in K]: Extract<Members[number]["Type"], {
|
|
93
|
+
readonly _tag: Tags[number];
|
|
94
|
+
}>;
|
|
95
|
+
};
|
|
96
|
+
};
|
|
97
|
+
type TaggedUnionWithTags<Members extends TaggedUnionMembers> = S.toTaggedUnion<"_tag", Members> & {
|
|
98
|
+
readonly tags: TaggedUnionTags<Members>;
|
|
99
|
+
readonly generateGuards: <K extends string>(property: K) => PropertyGuards<Members, K>;
|
|
100
|
+
readonly generateGuardsFor: <A>() => <K extends TaggedPropertyKeys<A, Members>>(property: K) => PropertyGuardsFor<Members, K, A>;
|
|
83
101
|
};
|
|
84
|
-
export
|
|
102
|
+
export declare const ExtendTaggedUnion: <Members extends TaggedUnionMembers>(schema: S.Union<Members>) => TaggedUnionWithTags<Members>;
|
|
103
|
+
export declare const TaggedUnion: <Members extends TaggedUnionMembers>(...a: Members) => TaggedUnionWithTags<Members>;
|
|
85
104
|
//# sourceMappingURL=Schema.d.ts.map
|
package/dist/Schema.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../src/Schema.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../src/Schema.ts"],"names":[],"mappings":"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"}
|
package/dist/Schema.js
CHANGED
|
@@ -1,17 +1,15 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { SchemaAST } from "effect";
|
|
2
2
|
import * as S from "effect/Schema";
|
|
3
3
|
import { fakerArb } from "./faker.js";
|
|
4
4
|
import { Email as EmailT } from "./Schema/email.js";
|
|
5
|
-
import { withDefaultMake } from "./Schema/ext.js";
|
|
5
|
+
import { concurrencyUnbounded, withDefaultMake } from "./Schema/ext.js";
|
|
6
6
|
import { PhoneNumber as PhoneNumberT } from "./Schema/phoneNumber.js";
|
|
7
7
|
import { extendM } from "./utils.js";
|
|
8
8
|
export * from "effect/Schema";
|
|
9
|
-
// v4: TaggedError renamed to TaggedErrorClass
|
|
10
|
-
export { TaggedErrorClass as TaggedError } from "effect/Schema";
|
|
11
9
|
export * from "./Schema/Class.js";
|
|
12
10
|
export { Class, TaggedClass } from "./Schema/Class.js";
|
|
13
11
|
export { fromBrand, nominal } from "./Schema/brand.js";
|
|
14
|
-
export { Array, Boolean, Date,
|
|
12
|
+
export { Array, Boolean, Date, DateFromString, DateValid, Finite, Literals, NullOr, Number, ReadonlyMap, ReadonlySet } from "./Schema/ext.js";
|
|
15
13
|
export { Int, NonNegativeInt } from "./Schema/numbers.js";
|
|
16
14
|
export * from "./Schema/email.js";
|
|
17
15
|
export * from "./Schema/ext.js";
|
|
@@ -19,79 +17,102 @@ export * from "./Schema/moreStrings.js";
|
|
|
19
17
|
export * from "./Schema/numbers.js";
|
|
20
18
|
export * from "./Schema/phoneNumber.js";
|
|
21
19
|
export * from "./Schema/schema.js";
|
|
20
|
+
export * from "./Schema/SpecialJsonSchema.js";
|
|
21
|
+
export * from "./Schema/SpecialOpenApi.js";
|
|
22
22
|
export * from "./Schema/strings.js";
|
|
23
23
|
export { NonEmptyString } from "./Schema/strings.js";
|
|
24
24
|
export * as SchemaIssue from "effect/SchemaIssue";
|
|
25
25
|
export * as SchemaParser from "effect/SchemaParser";
|
|
26
26
|
export { Void as Void_ } from "effect/Schema";
|
|
27
|
+
// ---------------------------------------------------------------------------
|
|
28
|
+
// Struct / NonEmptyArray / Record — with concurrency: "unbounded"
|
|
29
|
+
// ---------------------------------------------------------------------------
|
|
30
|
+
export function Struct(fields) {
|
|
31
|
+
const result = S.Struct(fields).annotate(concurrencyUnbounded);
|
|
32
|
+
// eslint-disable-next-line @typescript-eslint/unbound-method, @typescript-eslint/no-unsafe-assignment
|
|
33
|
+
const origMapFields = result.mapFields;
|
|
34
|
+
result.mapFields = function (f, options) {
|
|
35
|
+
// eslint-disable-next-line @typescript-eslint/no-unsafe-call
|
|
36
|
+
return origMapFields.call(this, f, options).annotate(concurrencyUnbounded);
|
|
37
|
+
};
|
|
38
|
+
return result;
|
|
39
|
+
}
|
|
40
|
+
export function NonEmptyArray(value) {
|
|
41
|
+
return S.NonEmptyArray(value).annotate(concurrencyUnbounded);
|
|
42
|
+
}
|
|
43
|
+
export function TaggedStruct(value, fields) {
|
|
44
|
+
return Struct({ _tag: S.tag(value), ...fields });
|
|
45
|
+
}
|
|
46
|
+
export function Record(key, value) {
|
|
47
|
+
return S.Record(key, value).annotate(concurrencyUnbounded);
|
|
48
|
+
}
|
|
27
49
|
export const SpanId = Symbol();
|
|
50
|
+
const makeEmail = S.decodeSync(EmailT);
|
|
51
|
+
const makePhoneNumber = S.decodeSync(PhoneNumberT);
|
|
28
52
|
export const Email = EmailT
|
|
29
53
|
.pipe(S.annotate({
|
|
30
54
|
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
31
|
-
|
|
55
|
+
toArbitrary: () => (fc) => fakerArb((faker) => faker.internet.exampleEmail)(fc).map(makeEmail)
|
|
32
56
|
}), withDefaultMake);
|
|
33
57
|
export const PhoneNumber = PhoneNumberT
|
|
34
58
|
.pipe(S.annotate({
|
|
35
|
-
|
|
59
|
+
toArbitrary: () => (fc) =>
|
|
36
60
|
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
37
|
-
fakerArb((faker) => faker.phone.number)(fc).map(
|
|
61
|
+
fakerArb((faker) => faker.phone.number)(fc).map(makePhoneNumber)
|
|
38
62
|
}), withDefaultMake);
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
63
|
+
// Copied from SchemaAST.collectSentinels (marked @internal in effect).
|
|
64
|
+
// Returns all { key, literal } pairs that can discriminate a union member.
|
|
65
|
+
const getTagFromAST = (schema) => {
|
|
66
|
+
const sentinels = collectSentinelsFromAST(schema.ast);
|
|
67
|
+
const sentinel = sentinels.find((s) => s.key === "_tag");
|
|
68
|
+
if (sentinel !== undefined && typeof sentinel.literal === "string")
|
|
69
|
+
return sentinel.literal;
|
|
70
|
+
throw new Error("No _tag literal found on schema member");
|
|
71
|
+
};
|
|
72
|
+
function collectSentinelsFromAST(ast) {
|
|
73
|
+
switch (ast._tag) {
|
|
74
|
+
case "Declaration": {
|
|
75
|
+
const s = ast.annotations?.["~sentinels"];
|
|
76
|
+
return Array.isArray(s) ? s : [];
|
|
77
|
+
}
|
|
78
|
+
case "Objects":
|
|
79
|
+
return ast.propertySignatures.flatMap((ps) => {
|
|
80
|
+
const type = ps.type;
|
|
81
|
+
if (!SchemaAST.isOptional(type)) {
|
|
82
|
+
if (SchemaAST.isLiteral(type))
|
|
83
|
+
return [{ key: ps.name, literal: type.literal }];
|
|
84
|
+
if (SchemaAST.isUniqueSymbol(type))
|
|
85
|
+
return [{ key: ps.name, literal: type.symbol }];
|
|
49
86
|
}
|
|
50
|
-
return
|
|
87
|
+
return [];
|
|
51
88
|
});
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
return {
|
|
57
|
-
...acc,
|
|
58
|
-
[String(ast.literal)]: (x) => x._tag === ast.literal
|
|
59
|
-
};
|
|
60
|
-
}, {});
|
|
61
|
-
}
|
|
62
|
-
throw new Error("Unsupported");
|
|
63
|
-
};
|
|
64
|
-
export const makeIsAnyOf = (schema) => {
|
|
65
|
-
if (SchemaAST.isUnion(schema.ast)) {
|
|
66
|
-
return (...keys) => (a) => keys.includes(a._tag);
|
|
89
|
+
case "Suspend":
|
|
90
|
+
return collectSentinelsFromAST(ast.thunk());
|
|
91
|
+
default:
|
|
92
|
+
return [];
|
|
67
93
|
}
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
})
|
|
90
|
-
export const
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
isAnyOf: makeIsAnyOf(_),
|
|
94
|
-
tagMap: taggedUnionMap(a),
|
|
95
|
-
tags: tags(a)
|
|
96
|
-
})));
|
|
97
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxJQUFJLEVBQUUsU0FBUyxFQUFlLE1BQU0sUUFBUSxDQUFBO0FBQ3BFLE9BQU8sS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFBO0FBRWxDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLEtBQUssSUFBSSxNQUFNLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUNuRCxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDakQsT0FBTyxFQUFFLFdBQVcsSUFBSSxZQUFZLEVBQUUsTUFBTSx5QkFBeUIsQ0FBQTtBQUVyRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sWUFBWSxDQUFBO0FBRXBDLGNBQWMsZUFBZSxDQUFBO0FBQzdCLDhDQUE4QztBQUM5QyxPQUFPLEVBQUUsZ0JBQWdCLElBQUksV0FBVyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRS9ELGNBQWMsbUJBQW1CLENBQUE7QUFDakMsT0FBTyxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQTtBQUV0RCxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBQ3RELE9BQU8sRUFBRSxLQUFLLEVBQUUsT0FBTyxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLFdBQVcsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQzlHLE9BQU8sRUFBRSxHQUFHLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFekQsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxjQUFjLGlCQUFpQixDQUFBO0FBQy9CLGNBQWMseUJBQXlCLENBQUE7QUFDdkMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMsb0JBQW9CLENBQUE7QUFDbEMsY0FBYyxxQkFBcUIsQ0FBQTtBQUNuQyxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUE7QUFFcEQsT0FBTyxLQUFLLFdBQVcsTUFBTSxvQkFBb0IsQ0FBQTtBQUNqRCxPQUFPLEtBQUssWUFBWSxNQUFNLHFCQUFxQixDQUFBO0FBRW5ELE9BQU8sRUFBRSxJQUFJLElBQUksS0FBSyxFQUFFLE1BQU0sZUFBZSxDQUFBO0FBRTdDLE1BQU0sQ0FBQyxNQUFNLE1BQU0sR0FBRyxNQUFNLEVBQUUsQ0FBQTtBQU85QixNQUFNLENBQUMsTUFBTSxLQUFLLEdBQUcsTUFBTTtLQUN4QixJQUFJLENBQ0gsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNULDZEQUE2RDtJQUM3RCxTQUFTLEVBQUUsR0FBUSxFQUFFLENBQUMsQ0FBQyxFQUFPLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxDQUFDLEtBQUssRUFBRSxFQUFFLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxZQUFZLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO0NBQ25HLENBQUMsRUFDRixlQUFlLENBQ2hCLENBQUE7QUFJSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsWUFBWTtLQUNwQyxJQUFJLENBQ0gsQ0FBQyxDQUFDLFFBQVEsQ0FBQztJQUNULFNBQVMsRUFBRSxHQUFRLEVBQUUsQ0FBQyxDQUFDLEVBQU8sRUFBRSxFQUFFO0lBQ2hDLDZEQUE2RDtJQUM3RCxRQUFRLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsTUFBTSxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztDQUMvRCxDQUFDLEVBQ0YsZUFBZSxDQUNoQixDQUFBO0FBRUgsTUFBTSxDQUFDLE1BQU0sTUFBTSxHQUFHLENBQ3BCLE1BQXdCLEVBQ3hCLEVBQUU7SUFDRixnRkFBZ0Y7SUFDaEYsbUVBQW1FO0lBQ25FLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxPQUFPLE1BQU0sQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQVEsRUFBRSxDQUFVLEVBQUUsRUFBRTtZQUN0RCxJQUFJLENBQUMsU0FBUyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxHQUFHLENBQUE7WUFDdkMsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsa0JBQWtCLEVBQUUsQ0FBQyxDQUFNLEVBQUUsRUFBRTtnQkFDM0QsSUFBSSxDQUFDLENBQUMsSUFBSSxLQUFLLE1BQU0sSUFBSSxTQUFTLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDO29CQUNyRCxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFBO2dCQUM1QixDQUFDO2dCQUNELE9BQU8sTUFBTSxDQUFDLElBQUksRUFBRSxDQUFBO1lBQ3RCLENBQUMsQ0FBQyxDQUFBO1lBQ0YsTUFBTSxHQUFHLEdBQUcsTUFBTSxDQUFDLGNBQWMsQ0FBQyxHQUFHLENBQUMsQ0FBQTtZQUN0QyxJQUFJLENBQUMsR0FBRyxFQUFFLENBQUM7Z0JBQ1QsT0FBTyxHQUFHLENBQUE7WUFDWixDQUFDO1lBQ0QsT0FBTztnQkFDTCxHQUFHLEdBQUc7Z0JBQ04sQ0FBQyxNQUFNLENBQUUsR0FBeUIsQ0FBQyxPQUFPLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBbUIsRUFBRSxFQUFFLENBQ3BFLENBQUMsQ0FBQyxJQUFJLEtBQU0sR0FBeUIsQ0FBQyxPQUFPO2FBQ2hELENBQUE7UUFDSCxDQUFDLEVBQUUsRUFBVyxDQUFDLENBQUE7SUFDakIsQ0FBQztJQUNELE1BQU0sSUFBSSxLQUFLLENBQUMsYUFBYSxDQUFDLENBQUE7QUFDaEMsQ0FBQyxDQUFBO0FBRUQsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLENBQ3pCLE1BQXdCLEVBQ2QsRUFBRTtJQUNaLElBQUksU0FBUyxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztRQUNsQyxPQUFPLENBQTJCLEdBQUcsSUFBVSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUksRUFBd0MsRUFBRSxDQUNqRyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQTtJQUN6QixDQUFDO0lBQ0QsTUFBTSxJQUFJLEtBQUssQ0FBQyxhQUFhLENBQUMsQ0FBQTtBQUNoQyxDQUFDLENBQUE7QUFTRCxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsQ0FJNUIsSUFBYSxFQUNiLEVBQUUsQ0FDRixJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsR0FBRyxFQUFFLEdBQUcsRUFBRSxFQUFFO0lBQ3ZCLG1GQUFtRjtJQUNuRixNQUFNLEdBQUcsR0FBRyxHQUFHLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFVLENBQUE7SUFDdEMsTUFBTSxHQUFHLEdBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxJQUFJLEdBQUcsQ0FBdUIsQ0FBQyxPQUFpQixDQUFBLENBQUMsbUpBQW1KO0lBQzFOLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxHQUFVLENBQUE7SUFDckIsT0FBTyxHQUFHLENBQUE7SUFDViw4REFBOEQ7QUFDaEUsQ0FBQyxFQUFFLEVBQVMsQ0FBQyxDQUFBO0FBRWYsTUFBTSxDQUFDLE1BQU0sSUFBSSxHQUFHLENBSWxCLElBQWEsRUFDYixFQUFFLENBQ0YsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEVBQUU7SUFDMUIsbUZBQW1GO0lBQ25GLE1BQU0sR0FBRyxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQVUsQ0FBQTtJQUN0QyxNQUFNLEdBQUcsR0FBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUF1QixDQUFDLE9BQU8sQ0FBQTtJQUM1RCxPQUFPLEdBQUcsQ0FBQTtJQUNWLDhEQUE4RDtBQUNoRSxDQUFDLENBQUMsQ0FBUSxDQUFBO0FBRVosTUFBTSxDQUFDLE1BQU0saUJBQWlCLEdBQUcsQ0FDL0IsTUFBd0IsRUFDeEIsRUFBRSxDQUNGLE9BQU8sQ0FDTCxNQUFNLEVBQ04sQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDTixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxNQUFhLENBQUM7SUFDdkIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFRLENBQUM7SUFDckIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFRLENBQUMsQ0FBQyw2QkFBNkI7Q0FDN0QsQ0FBQyxDQUNILENBQUE7QUFFSCxNQUFNLENBQUMsTUFBTSxXQUFXLEdBQUcsQ0FHekIsR0FBRyxDQUFVLEVBQUUsRUFBRSxDQUNqQixJQUFJLENBQ0YsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsRUFDVixDQUFDLENBQUMsRUFBRSxFQUFFLENBQ0osT0FBTyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNqQixFQUFFLEVBQUUsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxDQUFRLENBQUM7SUFDbEIsR0FBRyxFQUFFLE1BQU0sQ0FBQyxDQUFRLENBQUM7SUFDckIsT0FBTyxFQUFFLFdBQVcsQ0FBQyxDQUFRLENBQUM7SUFDOUIsTUFBTSxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7SUFDekIsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFRLENBQUM7Q0FDckIsQ0FBQyxDQUFDLENBQ04sQ0FBQSJ9
|
|
94
|
+
}
|
|
95
|
+
export const tags = (self) => S.Literals(self.map(getTagFromAST));
|
|
96
|
+
const extendTaggedUnionWithTags = (schema) => extendM(schema.pipe(S.toTaggedUnion("_tag")), (tagged) => {
|
|
97
|
+
const makeGuards = (property) => {
|
|
98
|
+
const result = {};
|
|
99
|
+
const guards = tagged.guards;
|
|
100
|
+
for (const tag of Object.keys(guards)) {
|
|
101
|
+
const guard = guards[tag];
|
|
102
|
+
result[`is${tag}`] = (target) => guard(target[property]);
|
|
103
|
+
}
|
|
104
|
+
result.isAnyOf = (memberTags) => {
|
|
105
|
+
const check = tagged.isAnyOf(memberTags);
|
|
106
|
+
return (target) => check(target[property]);
|
|
107
|
+
};
|
|
108
|
+
return result;
|
|
109
|
+
};
|
|
110
|
+
return {
|
|
111
|
+
tags: tags(schema.members),
|
|
112
|
+
generateGuards: makeGuards,
|
|
113
|
+
generateGuardsFor: () => makeGuards
|
|
114
|
+
};
|
|
115
|
+
});
|
|
116
|
+
export const ExtendTaggedUnion = (schema) => extendTaggedUnionWithTags(schema);
|
|
117
|
+
export const TaggedUnion = (...a) => extendTaggedUnionWithTags(S.Union(a));
|
|
118
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFlLE1BQU0sUUFBUSxDQUFBO0FBQy9DLE9BQU8sS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFBO0FBRWxDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLEtBQUssSUFBSSxNQUFNLEVBQTJCLE1BQU0sbUJBQW1CLENBQUE7QUFDNUUsT0FBTyxFQUFFLG9CQUFvQixFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ3ZFLE9BQU8sRUFBRSxXQUFXLElBQUksWUFBWSxFQUF1QyxNQUFNLHlCQUF5QixDQUFBO0FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFcEMsY0FBYyxlQUFlLENBQUE7QUFFN0IsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDdEQsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLGNBQWMsRUFBRSxTQUFTLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLEVBQUUsTUFBTSxFQUFFLFdBQVcsRUFBRSxXQUFXLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQTtBQUM3SSxPQUFPLEVBQUUsR0FBRyxFQUFFLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFBO0FBRXpELGNBQWMsbUJBQW1CLENBQUE7QUFDakMsY0FBYyxpQkFBaUIsQ0FBQTtBQUMvQixjQUFjLHlCQUF5QixDQUFBO0FBQ3ZDLGNBQWMscUJBQXFCLENBQUE7QUFDbkMsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLG9CQUFv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
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import * as Config from "effect/Config";
|
|
2
1
|
import * as Layer from "effect/Layer";
|
|
3
2
|
import { Rpc, RpcGroup, RpcSerialization } from "effect/unstable/rpc";
|
|
3
|
+
import * as Config from "../Config.js";
|
|
4
|
+
import * as Context from "../Context.js";
|
|
4
5
|
import * as Effect from "../Effect.js";
|
|
5
6
|
import { HttpClient } from "../http.js";
|
|
6
7
|
import * as Option from "../Option.js";
|
|
7
8
|
import type * as S from "../Schema.js";
|
|
8
|
-
import
|
|
9
|
-
import type { Client, ClientForOptions, Requests, RequestsAny } from "./clientFor.js";
|
|
9
|
+
import type { Client, ClientForOptions, ExtractModuleName, RequestsAny } from "./clientFor.js";
|
|
10
10
|
export interface ApiConfig {
|
|
11
11
|
url: string;
|
|
12
12
|
headers: Option.Option<Record<string, string>>;
|
|
@@ -24,6 +24,8 @@ export type Req = S.Top & {
|
|
|
24
24
|
success: S.Top;
|
|
25
25
|
error: S.Top;
|
|
26
26
|
config?: Record<string, any>;
|
|
27
|
+
readonly id: string;
|
|
28
|
+
readonly moduleName: string;
|
|
27
29
|
readonly "~decodingServices"?: unknown;
|
|
28
30
|
};
|
|
29
31
|
export declare const HttpClientLayer: (config: ApiConfig) => Layer.Layer<HttpClient.HttpClient, never, HttpClient.HttpClient>;
|
|
@@ -32,37 +34,18 @@ export declare const RpcSerializationLayer: (config: ApiConfig) => Layer.Layer<H
|
|
|
32
34
|
type RpcHandlers<M extends RequestsAny> = {
|
|
33
35
|
[K in keyof M]: Rpc.Rpc<M[K]["_tag"], M[K], M[K]["success"], M[K]["error"]>;
|
|
34
36
|
};
|
|
35
|
-
export declare const getMeta: <M extends
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
};
|
|
41
|
-
}) => RpcGroup.RpcGroup<Rpc.Prefixed<RpcHandlers<M & {
|
|
42
|
-
meta: {
|
|
43
|
-
moduleName: ModuleName;
|
|
44
|
-
};
|
|
45
|
-
} extends infer T extends Requests ? { [K in keyof T as (M & {
|
|
46
|
-
meta: {
|
|
47
|
-
moduleName: ModuleName;
|
|
48
|
-
};
|
|
49
|
-
})[K] extends Req ? K : never]: T[K] extends Req ? T[K] : never; } : never>[keyof (M & {
|
|
50
|
-
meta: {
|
|
51
|
-
moduleName: ModuleName;
|
|
52
|
-
};
|
|
53
|
-
} extends infer T_1 extends Requests ? { [K in keyof T_1 as (M & {
|
|
54
|
-
meta: {
|
|
55
|
-
moduleName: ModuleName;
|
|
56
|
-
};
|
|
57
|
-
})[K] extends Req ? K : never]: T_1[K] extends Req ? T_1[K] : never; } : never)], `${ModuleName}.`>>;
|
|
58
|
-
declare const ApiClientFactory_base: ServiceMap.OpaqueClass<ApiClientFactory, "ApiClientFactory", (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends Requests>(models: M) => Effect.Effect<Client<M, M["meta"]["moduleName"]>>>;
|
|
37
|
+
export declare const getMeta: <M extends RequestsAny>(resource: M) => {
|
|
38
|
+
moduleName: ExtractModuleName<M>;
|
|
39
|
+
};
|
|
40
|
+
export declare const makeRpcGroupFromRequestsAndModuleName: <M extends RequestsAny, const ModuleName extends string>(resource: M, moduleName: ModuleName) => RpcGroup.RpcGroup<Rpc.Prefixed<RpcHandlers<{ [K in keyof M as M[K] extends Req ? K : never]: M[K] extends Req ? M[K] : never; }>[keyof { [K in keyof M as M[K] extends Req ? K : never]: M[K] extends Req ? M[K] : never; }], `${ModuleName}.`>>;
|
|
41
|
+
declare const ApiClientFactory_base: Context.OpaqueClass<ApiClientFactory, "ApiClientFactory", (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends RequestsAny>(models: M) => Effect.Effect<Client<M, ExtractModuleName<M>>>>;
|
|
59
42
|
/**
|
|
60
43
|
* Used to create clients for resource modules.
|
|
61
44
|
*/
|
|
62
45
|
export declare class ApiClientFactory extends ApiClientFactory_base {
|
|
63
46
|
static readonly layer: (config: ApiConfig) => Layer.Layer<ApiClientFactory, never, HttpClient.HttpClient>;
|
|
64
47
|
static readonly layerFromConfig: Layer.Layer<ApiClientFactory, Config.ConfigError, HttpClient.HttpClient>;
|
|
65
|
-
static readonly makeFor: (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends
|
|
48
|
+
static readonly makeFor: (requestLevelLayers: Layer.Layer<never, never, never>, options?: ClientForOptions) => <M extends RequestsAny>(resource: M) => Effect.Effect<import("./clientFor.js").RequestHandlers<never, never, M, ExtractModuleName<M>>, never, ApiClientFactory>;
|
|
66
49
|
}
|
|
67
50
|
export {};
|
|
68
51
|
//# sourceMappingURL=apiClientFactory.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"apiClientFactory.d.ts","sourceRoot":"","sources":["../../src/client/apiClientFactory.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"apiClientFactory.d.ts","sourceRoot":"","sources":["../../src/client/apiClientFactory.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AAKrC,OAAO,EAAE,GAAG,EAAa,QAAQ,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA;AAChF,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,OAAO,MAAM,eAAe,CAAA;AACxC,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,EAAE,UAAU,EAAqB,MAAM,YAAY,CAAA;AAC1D,OAAO,KAAK,MAAM,MAAM,cAAc,CAAA;AACtC,OAAO,KAAK,KAAK,CAAC,MAAM,cAAc,CAAA;AAEtC,OAAO,KAAK,EAAE,MAAM,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAE9F,MAAM,WAAW,SAAS;IACxB,GAAG,EAAE,MAAM,CAAA;IACX,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;CAC/C;AAED,eAAO,MAAM,gBAAgB;;;;;EAQ3B,CAAA;AAEF,MAAM,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG;IACxB,KAAI,GAAG,IAAI,EAAE,GAAG,EAAE,GAAG,GAAG,CAAA;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,MAAM,CAAA;IACvB,OAAO,EAAE,CAAC,CAAC,GAAG,CAAA;IACd,KAAK,EAAE,CAAC,CAAC,GAAG,CAAA;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IAC5B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAA;IACnB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAA;CACvC,CAAA;AAMD,eAAO,MAAM,eAAe,GAAI,QAAQ,SAAS,qEAqB9C,CAAA;AAEH,eAAO,MAAM,yBAAyB,+EAKrC,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,QAAQ,SAAS,yGAIpD,CAAA;AAEH,KAAK,WAAW,CAAC,CAAC,SAAS,WAAW,IAAI;KACvC,CAAC,IAAI,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;CAC5E,CAAA;AAoBD,eAAO,MAAM,OAAO,GAAI,CAAC,SAAS,WAAW,EAAE,UAAU,CAAC,KAAG;IAAE,UAAU,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAA;CAI9F,CAAA;AAED,eAAO,MAAM,qCAAqC,GAAI,CAAC,SAAS,WAAW,EAAE,KAAK,CAAC,UAAU,SAAS,MAAM,EAC1G,UAAU,CAAC,EACX,YAAY,UAAU,mDAxBnB,CAAC,2FAAD,CAAC,qGAsCL,CAAA;oHAyHoD,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,YAAY,gBAAgB,MAOnG,CAAC,SAAS,WAAW,UACnB,CAAC,KACR,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC;AAgBvD;;GAEG;AACH,qBAAa,gBACX,SAAQ,qBAAmG;IAE3G,MAAM,CAAC,QAAQ,CAAC,KAAK,GAAI,QAAQ,SAAS,iEACyD;IACnG,MAAM,CAAC,QAAQ,CAAC,eAAe,2EAK9B;IAED,MAAM,CAAC,QAAQ,CAAC,OAAO,GACpB,oBAAoB,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,CAAC,EAAE,UAAU,gBAAgB,MAChF,CAAC,SAAS,WAAW,EACpB,UAAU,CAAC,6HAKT;CACP"}
|