effect-app 4.0.0-beta.21 → 4.0.0-beta.23
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 +8 -0
- package/dist/Operations.d.ts +11 -11
- package/dist/Schema.d.ts +4 -7
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +13 -6
- package/package.json +1 -1
- package/src/Schema.ts +16 -11
package/CHANGELOG.md
CHANGED
package/dist/Operations.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import * as S from "./Schema.js";
|
|
2
2
|
export type OperationId = S.StringId;
|
|
3
|
-
export declare const OperationId: S.WithDefaults<S.brand<S.String, "NonEmptyString" | "
|
|
3
|
+
export declare const OperationId: S.WithDefaults<S.brand<S.String, "NonEmptyString" | "StringId" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100" | "NonEmptyString255" | "NonEmptyString2k" | "NonEmptyString64k"> & {
|
|
4
4
|
make: () => S.StringId;
|
|
5
|
-
withDefault: S.withConstructorDefault<S.brand<S.String, "NonEmptyString" | "
|
|
6
|
-
}> & S.brand<S.String, "NonEmptyString" | "
|
|
5
|
+
withDefault: S.withConstructorDefault<S.brand<S.String, "NonEmptyString" | "StringId" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100" | "NonEmptyString255" | "NonEmptyString2k" | "NonEmptyString64k"> & S.WithoutConstructorDefault>;
|
|
6
|
+
}> & S.brand<S.String, "NonEmptyString" | "StringId" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100" | "NonEmptyString255" | "NonEmptyString2k" | "NonEmptyString64k"> & {
|
|
7
7
|
make: () => S.StringId;
|
|
8
|
-
withDefault: S.withConstructorDefault<S.brand<S.String, "NonEmptyString" | "
|
|
8
|
+
withDefault: S.withConstructorDefault<S.brand<S.String, "NonEmptyString" | "StringId" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100" | "NonEmptyString255" | "NonEmptyString2k" | "NonEmptyString64k"> & S.WithoutConstructorDefault>;
|
|
9
9
|
};
|
|
10
10
|
declare const OperationProgress_base: S.EnhancedClass<OperationProgress, S.Struct<{
|
|
11
11
|
completed: S.WithDefaults<S.brand<import("effect/Schema").Int, "NonNegativeInt" | "Int" | "NonNegativeNumber">> & S.brand<import("effect/Schema").Int, "NonNegativeInt" | "Int" | "NonNegativeNumber"> & {
|
|
@@ -20,14 +20,14 @@ export declare class OperationProgress extends OperationProgress_base {
|
|
|
20
20
|
declare const OperationSuccess_base: S.EnhancedTaggedClass<OperationSuccess, "OperationSuccess", {
|
|
21
21
|
readonly _tag: S.tag<"OperationSuccess">;
|
|
22
22
|
} & {
|
|
23
|
-
message: S.withConstructorDefault<import("effect/Schema").NullOr<S.WithDefaults<S.brand<S.String, "NonEmptyString" | "
|
|
23
|
+
message: S.withConstructorDefault<import("effect/Schema").NullOr<S.WithDefaults<S.brand<S.String, "NonEmptyString" | "NonEmptyString2k" | "NonEmptyString64k">> & S.brand<S.String, "NonEmptyString" | "NonEmptyString2k" | "NonEmptyString64k">> & S.WithoutConstructorDefault>;
|
|
24
24
|
}, OperationSuccess.Encoded>;
|
|
25
25
|
export declare class OperationSuccess extends OperationSuccess_base {
|
|
26
26
|
}
|
|
27
27
|
declare const OperationFailure_base: S.EnhancedTaggedClass<OperationFailure, "OperationFailure", {
|
|
28
28
|
readonly _tag: S.tag<"OperationFailure">;
|
|
29
29
|
} & {
|
|
30
|
-
message: S.withConstructorDefault<import("effect/Schema").NullOr<S.WithDefaults<S.brand<S.String, "NonEmptyString" | "
|
|
30
|
+
message: S.withConstructorDefault<import("effect/Schema").NullOr<S.WithDefaults<S.brand<S.String, "NonEmptyString" | "NonEmptyString2k" | "NonEmptyString64k">> & S.brand<S.String, "NonEmptyString" | "NonEmptyString2k" | "NonEmptyString64k">> & S.WithoutConstructorDefault>;
|
|
31
31
|
}, OperationFailure.Encoded>;
|
|
32
32
|
export declare class OperationFailure extends OperationFailure_base {
|
|
33
33
|
}
|
|
@@ -60,14 +60,14 @@ export declare const OperationResult: S.Union<[typeof OperationSuccess, typeof O
|
|
|
60
60
|
};
|
|
61
61
|
export type OperationResult = S.Schema.Type<typeof OperationResult>;
|
|
62
62
|
declare const Operation_base: S.EnhancedClass<Operation, S.Struct<{
|
|
63
|
-
id: S.WithDefaults<S.brand<S.String, "NonEmptyString" | "
|
|
63
|
+
id: S.WithDefaults<S.brand<S.String, "NonEmptyString" | "StringId" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100" | "NonEmptyString255" | "NonEmptyString2k" | "NonEmptyString64k"> & {
|
|
64
64
|
make: () => S.StringId;
|
|
65
|
-
withDefault: S.withConstructorDefault<S.brand<S.String, "NonEmptyString" | "
|
|
66
|
-
}> & S.brand<S.String, "NonEmptyString" | "
|
|
65
|
+
withDefault: S.withConstructorDefault<S.brand<S.String, "NonEmptyString" | "StringId" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100" | "NonEmptyString255" | "NonEmptyString2k" | "NonEmptyString64k"> & S.WithoutConstructorDefault>;
|
|
66
|
+
}> & S.brand<S.String, "NonEmptyString" | "StringId" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100" | "NonEmptyString255" | "NonEmptyString2k" | "NonEmptyString64k"> & {
|
|
67
67
|
make: () => S.StringId;
|
|
68
|
-
withDefault: S.withConstructorDefault<S.brand<S.String, "NonEmptyString" | "
|
|
68
|
+
withDefault: S.withConstructorDefault<S.brand<S.String, "NonEmptyString" | "StringId" | "NonEmptyString50" | "NonEmptyString64" | "NonEmptyString80" | "NonEmptyString100" | "NonEmptyString255" | "NonEmptyString2k" | "NonEmptyString64k"> & S.WithoutConstructorDefault>;
|
|
69
69
|
};
|
|
70
|
-
title: S.WithDefaults<S.brand<S.String, "NonEmptyString" | "
|
|
70
|
+
title: S.WithDefaults<S.brand<S.String, "NonEmptyString" | "NonEmptyString2k" | "NonEmptyString64k">> & S.brand<S.String, "NonEmptyString" | "NonEmptyString2k" | "NonEmptyString64k">;
|
|
71
71
|
progress: S.optional<typeof OperationProgress>;
|
|
72
72
|
result: S.optional<S.Union<[typeof OperationSuccess, typeof OperationFailure]> & {
|
|
73
73
|
readonly cases: {
|
package/dist/Schema.d.ts
CHANGED
|
@@ -31,20 +31,17 @@ export type Email = EmailType;
|
|
|
31
31
|
export declare const PhoneNumber: import("./Schema/ext.js").WithDefaults<import("./Schema/ext.js").WithDefaults<S.refine<PhoneNumberT, S.String>> & S.refine<PhoneNumberT, S.String>> & import("./Schema/ext.js").WithDefaults<S.refine<PhoneNumberT, S.String>> & S.refine<PhoneNumberT, S.String>;
|
|
32
32
|
export type PhoneNumber = PhoneNumberType;
|
|
33
33
|
export declare const tags: <Members extends NonEmptyReadonlyArray<(S.Top & {
|
|
34
|
-
|
|
35
|
-
_tag:
|
|
34
|
+
readonly Type: {
|
|
35
|
+
readonly _tag: string;
|
|
36
36
|
};
|
|
37
|
-
})>>(self: Members) => S.Literals<{ [Index in keyof Members]:
|
|
37
|
+
})>>(self: Members) => S.Literals<{ [Index in keyof Members]: Members[Index]["Type"]["_tag"]; }>;
|
|
38
38
|
type TaggedUnionMembers = NonEmptyReadonlyArray<S.Top & {
|
|
39
39
|
readonly Type: {
|
|
40
40
|
readonly _tag: string;
|
|
41
41
|
};
|
|
42
|
-
fields: {
|
|
43
|
-
_tag: S.tag<string>;
|
|
44
|
-
};
|
|
45
42
|
}>;
|
|
46
43
|
type TaggedUnionTags<Members extends TaggedUnionMembers> = S.Literals<{
|
|
47
|
-
[Index in keyof Members]:
|
|
44
|
+
[Index in keyof Members]: Members[Index]["Type"]["_tag"];
|
|
48
45
|
}>;
|
|
49
46
|
type TaggedUnionWithTags<Members extends TaggedUnionMembers> = S.toTaggedUnion<"_tag", Members> & {
|
|
50
47
|
readonly tags: TaggedUnionTags<Members>;
|
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,EAAa,KAAK,MAAM,EAAE,MAAM,QAAQ,CAAA;AAC/C,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;AAClC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAA;AAEvD,OAAO,EAAE,KAAK,IAAI,MAAM,EAAE,KAAK,KAAK,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAA;AAE5E,OAAO,EAAE,WAAW,IAAI,YAAY,EAAE,KAAK,WAAW,IAAI,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAG1G,cAAc,eAAe,CAAA;AAE7B,OAAO,EAAE,gBAAgB,IAAI,WAAW,EAAE,MAAM,eAAe,CAAA;AAE/D,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAEtD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAC9G,OAAO,EAAE,GAAG,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEzD,cAAc,mBAAmB,CAAA;AACjC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,yBAAyB,CAAA;AACvC,cAAc,qBAAqB,CAAA;AACnC,cAAc,yBAAyB,CAAA;AACvC,cAAc,oBAAoB,CAAA;AAClC,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,OAAO,KAAK,WAAW,MAAM,oBAAoB,CAAA;AACjD,OAAO,KAAK,YAAY,MAAM,qBAAqB,CAAA;AAEnD,OAAO,EAAE,IAAI,IAAI,KAAK,EAAE,MAAM,eAAe,CAAA;AAE7C,eAAO,MAAM,MAAM,eAAW,CAAA;AAC9B,MAAM,MAAM,MAAM,GAAG,OAAO,MAAM,CAAA;AAElC,MAAM,WAAW,gBAAgB;IAC/B,CAAC,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAA;CACvB;AAKD,eAAO,MAAM,KAAK,iGAOf,CAAA;AAEH,MAAM,MAAM,KAAK,GAAG,SAAS,CAAA;AAE7B,eAAO,MAAM,WAAW,mQAQrB,CAAA;AAEH,MAAM,MAAM,WAAW,GAAG,eAAe,CAAA;
|
|
1
|
+
{"version":3,"file":"Schema.d.ts","sourceRoot":"","sources":["../src/Schema.ts"],"names":[],"mappings":"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"}
|
package/dist/Schema.js
CHANGED
|
@@ -38,14 +38,21 @@ export const PhoneNumber = PhoneNumberT
|
|
|
38
38
|
// eslint-disable-next-line @typescript-eslint/unbound-method
|
|
39
39
|
fakerArb((faker) => faker.phone.number)(fc).map(makePhoneNumber)
|
|
40
40
|
}), withDefaultMake);
|
|
41
|
-
const
|
|
42
|
-
|
|
43
|
-
|
|
41
|
+
const getTagFromAST = (schema) => {
|
|
42
|
+
let ast = schema.ast;
|
|
43
|
+
if (SchemaAST.isSuspend(ast))
|
|
44
|
+
ast = ast.thunk();
|
|
45
|
+
if (SchemaAST.isObjects(ast)) {
|
|
46
|
+
for (const ps of ast.propertySignatures) {
|
|
47
|
+
if (ps.name === "_tag" && !SchemaAST.isOptional(ps.type) && SchemaAST.isLiteral(ps.type)) {
|
|
48
|
+
return ps.type.literal;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
44
51
|
}
|
|
45
|
-
|
|
52
|
+
throw new Error("No _tag literal found on schema member");
|
|
46
53
|
};
|
|
47
|
-
export const tags = (self) => S.Literals(self.map(
|
|
54
|
+
export const tags = (self) => S.Literals(self.map(getTagFromAST));
|
|
48
55
|
const extendTaggedUnionWithTags = (schema) => extendM(schema.pipe(S.toTaggedUnion("_tag")), () => ({ tags: tags(schema.members) }));
|
|
49
56
|
export const ExtendTaggedUnion = (schema) => extendTaggedUnionWithTags(schema);
|
|
50
57
|
export const TaggedUnion = (...a) => extendTaggedUnionWithTags(S.Union(a));
|
|
51
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
58
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2NoZW1hLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL1NjaGVtYS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsU0FBUyxFQUFlLE1BQU0sUUFBUSxDQUFBO0FBQy9DLE9BQU8sS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFBO0FBRWxDLE9BQU8sRUFBRSxRQUFRLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDckMsT0FBTyxFQUFFLEtBQUssSUFBSSxNQUFNLEVBQTJCLE1BQU0sbUJBQW1CLENBQUE7QUFDNUUsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLGlCQUFpQixDQUFBO0FBQ2pELE9BQU8sRUFBRSxXQUFXLElBQUksWUFBWSxFQUF1QyxNQUFNLHlCQUF5QixDQUFBO0FBQzFHLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFFcEMsY0FBYyxlQUFlLENBQUE7QUFDN0IsOENBQThDO0FBQzlDLE9BQU8sRUFBRSxnQkFBZ0IsSUFBSSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUE7QUFFL0QsY0FBYyxtQkFBbUIsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsS0FBSyxFQUFFLFdBQVcsRUFBRSxNQUFNLG1CQUFtQixDQUFBO0FBRXRELE9BQU8sRUFBRSxTQUFTLEVBQUUsT0FBTyxFQUFFLE1BQU0sbUJBQW1CLENBQUE7QUFDdEQsT0FBTyxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUUsSUFBSSxFQUFFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxXQUFXLEVBQUUsV0FBVyxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDOUcsT0FBTyxFQUFFLEdBQUcsRUFBRSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQTtBQUV6RCxjQUFjLG1CQUFtQixDQUFBO0FBQ2pDLGNBQWMsaUJBQWlCLENBQUE7QUFDL0IsY0FBYyx5QkFBeUIsQ0FBQTtBQUN2QyxjQUFjLHFCQUFxQixDQUFBO0FBQ25D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
|
package/package.json
CHANGED
package/src/Schema.ts
CHANGED
|
@@ -65,36 +65,41 @@ export const PhoneNumber = PhoneNumberT
|
|
|
65
65
|
|
|
66
66
|
export type PhoneNumber = PhoneNumberType
|
|
67
67
|
|
|
68
|
-
const
|
|
69
|
-
|
|
70
|
-
|
|
68
|
+
const getTagFromAST = (schema: S.Top): string => {
|
|
69
|
+
let ast = schema.ast
|
|
70
|
+
if (SchemaAST.isSuspend(ast)) ast = ast.thunk()
|
|
71
|
+
if (SchemaAST.isObjects(ast)) {
|
|
72
|
+
for (const ps of ast.propertySignatures) {
|
|
73
|
+
if (ps.name === "_tag" && !SchemaAST.isOptional(ps.type) && SchemaAST.isLiteral(ps.type)) {
|
|
74
|
+
return ps.type.literal as string
|
|
75
|
+
}
|
|
76
|
+
}
|
|
71
77
|
}
|
|
72
|
-
|
|
78
|
+
throw new Error("No _tag literal found on schema member")
|
|
73
79
|
}
|
|
74
80
|
|
|
75
81
|
export const tags = <
|
|
76
|
-
|
|
77
|
-
Members extends NonEmptyReadonlyArray<(S.Top & { fields: { _tag: S.tag<string> } })>
|
|
82
|
+
Members extends NonEmptyReadonlyArray<(S.Top & { readonly Type: { readonly _tag: string } })>
|
|
78
83
|
>(
|
|
79
84
|
self: Members
|
|
80
85
|
) =>
|
|
81
86
|
S.Literals(
|
|
82
|
-
self.map(
|
|
83
|
-
[Index in keyof Members]:
|
|
87
|
+
self.map(getTagFromAST) as {
|
|
88
|
+
[Index in keyof Members]: Members[Index]["Type"]["_tag"]
|
|
84
89
|
}
|
|
85
90
|
) as S.Literals<
|
|
86
91
|
{
|
|
87
|
-
[Index in keyof Members]:
|
|
92
|
+
[Index in keyof Members]: Members[Index]["Type"]["_tag"]
|
|
88
93
|
}
|
|
89
94
|
>
|
|
90
95
|
|
|
91
96
|
type TaggedUnionMembers = NonEmptyReadonlyArray<
|
|
92
|
-
S.Top & { readonly Type: { readonly _tag: string }
|
|
97
|
+
S.Top & { readonly Type: { readonly _tag: string } }
|
|
93
98
|
>
|
|
94
99
|
|
|
95
100
|
type TaggedUnionTags<Members extends TaggedUnionMembers> = S.Literals<
|
|
96
101
|
{
|
|
97
|
-
[Index in keyof Members]:
|
|
102
|
+
[Index in keyof Members]: Members[Index]["Type"]["_tag"]
|
|
98
103
|
}
|
|
99
104
|
>
|
|
100
105
|
|