effect-app 4.0.0-beta.24 → 4.0.0-beta.240
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 +1039 -0
- package/dist/Array.d.ts +3 -2
- package/dist/Array.d.ts.map +1 -1
- package/dist/Array.js +4 -4
- package/dist/Chunk.d.ts +1 -1
- package/dist/Chunk.d.ts.map +1 -1
- package/dist/Config/SecretURL.d.ts +4 -2
- package/dist/Config/SecretURL.d.ts.map +1 -1
- package/dist/Config/SecretURL.js +3 -6
- package/dist/Config/internal/configSecretURL.d.ts +1 -1
- package/dist/Config/internal/configSecretURL.d.ts.map +1 -1
- package/dist/Config/internal/configSecretURL.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/Context.d.ts +42 -0
- package/dist/Context.d.ts.map +1 -0
- package/dist/Context.js +67 -0
- package/dist/Effect.d.ts +11 -10
- package/dist/Effect.d.ts.map +1 -1
- package/dist/Effect.js +5 -7
- package/dist/Function.d.ts +1 -1
- package/dist/Function.d.ts.map +1 -1
- package/dist/Inputify.type.d.ts +1 -1
- package/dist/Layer.d.ts +11 -7
- package/dist/Layer.d.ts.map +1 -1
- package/dist/Layer.js +3 -2
- package/dist/NonEmptySet.d.ts +4 -2
- package/dist/NonEmptySet.d.ts.map +1 -1
- package/dist/NonEmptySet.js +2 -2
- package/dist/Option.d.ts +2 -1
- package/dist/Option.d.ts.map +1 -1
- package/dist/Option.js +3 -1
- package/dist/Pure.d.ts +8 -6
- package/dist/Pure.d.ts.map +1 -1
- package/dist/Pure.js +17 -14
- package/dist/Schema/Class.d.ts +66 -20
- package/dist/Schema/Class.d.ts.map +1 -1
- package/dist/Schema/Class.js +192 -23
- package/dist/Schema/FastCheck.d.ts +1 -1
- package/dist/Schema/FastCheck.d.ts.map +1 -1
- package/dist/Schema/Methods.d.ts +1 -1
- package/dist/Schema/SchemaParser.d.ts +5 -0
- package/dist/Schema/SchemaParser.d.ts.map +1 -0
- package/dist/Schema/SchemaParser.js +6 -0
- package/dist/Schema/SpecialJsonSchema.d.ts +34 -0
- package/dist/Schema/SpecialJsonSchema.d.ts.map +1 -0
- package/dist/Schema/SpecialJsonSchema.js +118 -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 -3
- package/dist/Schema/brand.d.ts.map +1 -1
- package/dist/Schema/brand.js +3 -1
- package/dist/Schema/email.d.ts +1 -1
- package/dist/Schema/email.d.ts.map +1 -1
- package/dist/Schema/email.js +7 -4
- package/dist/Schema/ext.d.ts +339 -56
- package/dist/Schema/ext.d.ts.map +1 -1
- package/dist/Schema/ext.js +358 -53
- package/dist/Schema/moreStrings.d.ts +108 -26
- package/dist/Schema/moreStrings.d.ts.map +1 -1
- package/dist/Schema/moreStrings.js +45 -16
- package/dist/Schema/numbers.d.ts +55 -15
- package/dist/Schema/numbers.d.ts.map +1 -1
- package/dist/Schema/numbers.js +60 -12
- package/dist/Schema/phoneNumber.d.ts +1 -1
- package/dist/Schema/phoneNumber.d.ts.map +1 -1
- package/dist/Schema/phoneNumber.js +6 -3
- package/dist/Schema/schema.d.ts +1 -1
- package/dist/Schema/strings.d.ts +5 -5
- package/dist/Schema/strings.d.ts.map +1 -1
- package/dist/Schema/strings.js +1 -5
- package/dist/Schema.d.ts +214 -8
- package/dist/Schema.d.ts.map +1 -1
- package/dist/Schema.js +190 -11
- package/dist/Set.d.ts +5 -2
- package/dist/Set.d.ts.map +1 -1
- package/dist/Set.js +3 -2
- package/dist/TypeTest.d.ts +1 -1
- package/dist/Types.d.ts +1 -1
- package/dist/Widen.type.d.ts +1 -1
- package/dist/_ext/Array.d.ts +2 -2
- package/dist/_ext/Array.d.ts.map +1 -1
- package/dist/_ext/Array.js +4 -2
- package/dist/_ext/date.d.ts +1 -1
- package/dist/_ext/misc.d.ts +5 -2
- package/dist/_ext/misc.d.ts.map +1 -1
- package/dist/_ext/misc.js +4 -2
- package/dist/_ext/ord.ext.d.ts +3 -2
- package/dist/_ext/ord.ext.d.ts.map +1 -1
- package/dist/_ext/ord.ext.js +2 -2
- package/dist/builtin.d.ts +1 -1
- package/dist/builtin.d.ts.map +1 -1
- package/dist/client/InvalidationKeys.d.ts +29 -0
- package/dist/client/InvalidationKeys.d.ts.map +1 -0
- package/dist/client/InvalidationKeys.js +33 -0
- package/dist/client/apiClientFactory.d.ts +20 -32
- package/dist/client/apiClientFactory.d.ts.map +1 -1
- package/dist/client/apiClientFactory.js +97 -34
- package/dist/client/clientFor.d.ts +51 -17
- package/dist/client/clientFor.d.ts.map +1 -1
- package/dist/client/clientFor.js +9 -1
- package/dist/client/errors.d.ts +49 -25
- package/dist/client/errors.d.ts.map +1 -1
- package/dist/client/errors.js +43 -17
- package/dist/client/makeClient.d.ts +481 -33
- package/dist/client/makeClient.d.ts.map +1 -1
- package/dist/client/makeClient.js +66 -24
- package/dist/client.d.ts +6 -5
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +2 -1
- package/dist/faker.d.ts +1 -1
- package/dist/faker.d.ts.map +1 -1
- package/dist/http/Request.d.ts +2 -2
- package/dist/http/Request.d.ts.map +1 -1
- package/dist/http/Request.js +2 -2
- package/dist/http/internal/lib.d.ts +1 -1
- package/dist/http.d.ts +1 -1
- package/dist/ids.d.ts +40 -12
- package/dist/ids.d.ts.map +1 -1
- package/dist/ids.js +25 -3
- package/dist/index.d.ts +5 -8
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -8
- package/dist/logger.d.ts +1 -1
- package/dist/middleware.d.ts +14 -8
- package/dist/middleware.d.ts.map +1 -1
- package/dist/middleware.js +14 -8
- package/dist/rpc/Invalidation.d.ts +402 -0
- package/dist/rpc/Invalidation.d.ts.map +1 -0
- package/dist/rpc/Invalidation.js +150 -0
- package/dist/rpc/MiddlewareMaker.d.ts +11 -7
- package/dist/rpc/MiddlewareMaker.d.ts.map +1 -1
- package/dist/rpc/MiddlewareMaker.js +59 -38
- package/dist/rpc/RpcContextMap.d.ts +4 -4
- package/dist/rpc/RpcContextMap.d.ts.map +1 -1
- package/dist/rpc/RpcContextMap.js +4 -4
- package/dist/rpc/RpcMiddleware.d.ts +14 -10
- package/dist/rpc/RpcMiddleware.d.ts.map +1 -1
- package/dist/rpc/RpcMiddleware.js +1 -1
- package/dist/rpc.d.ts +2 -2
- package/dist/rpc.d.ts.map +1 -1
- package/dist/rpc.js +2 -2
- package/dist/transform.d.ts +2 -2
- package/dist/transform.d.ts.map +1 -1
- package/dist/transform.js +4 -5
- package/dist/utils/effectify.d.ts +2 -2
- package/dist/utils/effectify.d.ts.map +1 -1
- package/dist/utils/effectify.js +2 -2
- package/dist/utils/extend.d.ts +1 -1
- package/dist/utils/extend.d.ts.map +1 -1
- package/dist/utils/gen.d.ts +5 -5
- package/dist/utils/gen.d.ts.map +1 -1
- package/dist/utils/logLevel.d.ts +3 -3
- package/dist/utils/logLevel.d.ts.map +1 -1
- package/dist/utils/logger.d.ts +5 -4
- package/dist/utils/logger.d.ts.map +1 -1
- package/dist/utils/logger.js +4 -4
- package/dist/utils.d.ts +40 -45
- package/dist/utils.d.ts.map +1 -1
- package/dist/utils.js +19 -27
- package/dist/validation/validators.d.ts +1 -1
- package/dist/validation/validators.d.ts.map +1 -1
- package/dist/validation.d.ts +1 -1
- package/dist/validation.d.ts.map +1 -1
- package/package.json +46 -24
- package/src/Array.ts +3 -3
- package/src/Config/SecretURL.ts +5 -2
- package/src/Config/internal/configSecretURL.ts +1 -1
- package/src/Config.ts +14 -0
- package/src/ConfigProvider.ts +48 -0
- package/src/{ServiceMap.ts → Context.ts} +56 -63
- package/src/Effect.ts +13 -14
- package/src/Layer.ts +10 -6
- package/src/NonEmptySet.ts +3 -1
- package/src/Option.ts +2 -0
- package/src/Pure.ts +21 -19
- package/src/Schema/Class.ts +274 -64
- package/src/Schema/SchemaParser.ts +12 -0
- package/src/Schema/SpecialJsonSchema.ts +139 -0
- package/src/Schema/SpecialOpenApi.ts +130 -0
- package/src/Schema/brand.ts +22 -2
- package/src/Schema/email.ts +7 -2
- package/src/Schema/ext.ts +443 -88
- package/src/Schema/moreStrings.ts +93 -37
- package/src/Schema/numbers.ts +64 -16
- package/src/Schema/phoneNumber.ts +5 -1
- package/src/Schema/strings.ts +4 -8
- package/src/Schema.ts +374 -10
- package/src/Set.ts +5 -1
- package/src/_ext/Array.ts +3 -1
- package/src/_ext/misc.ts +4 -1
- package/src/_ext/ord.ext.ts +2 -1
- package/src/client/InvalidationKeys.ts +50 -0
- package/src/client/apiClientFactory.ts +225 -131
- package/src/client/clientFor.ts +95 -29
- package/src/client/errors.ts +52 -26
- package/src/client/makeClient.ts +572 -71
- package/src/client.ts +5 -4
- package/src/http/Request.ts +1 -1
- package/src/ids.ts +25 -3
- package/src/index.ts +5 -10
- package/src/middleware.ts +13 -9
- package/src/rpc/Invalidation.ts +226 -0
- package/src/rpc/MiddlewareMaker.ts +82 -74
- package/src/rpc/README.md +2 -2
- package/src/rpc/RpcContextMap.ts +6 -5
- package/src/rpc/RpcMiddleware.ts +14 -11
- package/src/rpc.ts +1 -1
- package/src/transform.ts +3 -3
- package/src/utils/effectify.ts +1 -1
- package/src/utils/gen.ts +8 -8
- package/src/utils/logLevel.ts +1 -1
- package/src/utils/logger.ts +4 -3
- package/src/utils.ts +62 -139
- 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/dist/stream-error.types.d.ts +2 -0
- package/test/dist/stream-error.types.d.ts.map +1 -0
- package/test/dist/stream-error.types.js +27 -0
- package/test/moreStrings.test.ts +1 -1
- package/test/rpc.test.ts +46 -6
- package/test/schema.test.ts +459 -30
- package/test/secretURL.test.ts +160 -0
- package/test/special.test.ts +1026 -0
- package/test/utils.test.ts +7 -7
- package/tsconfig.base.json +6 -5
- package/tsconfig.json +2 -1
- package/tsconfig.json.bak +2 -2
- package/tsconfig.src.json +29 -29
- package/tsconfig.test.json +2 -2
- package/dist/Operations.d.ts +0 -123
- package/dist/Operations.d.ts.map +0 -1
- package/dist/Operations.js +0 -29
- package/dist/ServiceMap.d.ts +0 -44
- package/dist/ServiceMap.d.ts.map +0 -1
- package/dist/ServiceMap.js +0 -91
- package/eslint.config.mjs +0 -26
- package/src/Operations.ts +0 -55
|
@@ -15,7 +15,7 @@ export type NonEmptyString50 = string & NonEmptyString50Brand;
|
|
|
15
15
|
/**
|
|
16
16
|
* A string that is at least 1 character long and a maximum of 50.
|
|
17
17
|
*/
|
|
18
|
-
export declare const NonEmptyString50: WithDefaults<
|
|
18
|
+
export declare const NonEmptyString50: WithDefaults<import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString50>> & import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString50>;
|
|
19
19
|
/**
|
|
20
20
|
* A string that is at least 1 character long and a maximum of 64.
|
|
21
21
|
*/
|
|
@@ -28,7 +28,7 @@ export type NonEmptyString64 = string & NonEmptyString64Brand;
|
|
|
28
28
|
/**
|
|
29
29
|
* A string that is at least 1 character long and a maximum of 64.
|
|
30
30
|
*/
|
|
31
|
-
export declare const NonEmptyString64: WithDefaults<
|
|
31
|
+
export declare const NonEmptyString64: WithDefaults<import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString64>> & import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString64>;
|
|
32
32
|
/**
|
|
33
33
|
* A string that is at least 1 character long and a maximum of 80.
|
|
34
34
|
*/
|
|
@@ -41,7 +41,7 @@ export type NonEmptyString80 = string & NonEmptyString80Brand;
|
|
|
41
41
|
/**
|
|
42
42
|
* A string that is at least 1 character long and a maximum of 80.
|
|
43
43
|
*/
|
|
44
|
-
export declare const NonEmptyString80: WithDefaults<
|
|
44
|
+
export declare const NonEmptyString80: WithDefaults<import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString80>> & import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString80>;
|
|
45
45
|
/**
|
|
46
46
|
* A string that is at least 1 character long and a maximum of 100.
|
|
47
47
|
*/
|
|
@@ -54,7 +54,7 @@ export type NonEmptyString100 = string & NonEmptyString100Brand;
|
|
|
54
54
|
/**
|
|
55
55
|
* A string that is at least 1 character long and a maximum of 100.
|
|
56
56
|
*/
|
|
57
|
-
export declare const NonEmptyString100: WithDefaults<
|
|
57
|
+
export declare const NonEmptyString100: WithDefaults<import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString100>> & import("./brand.js").BrandedSchema<S.NonEmptyString, NonEmptyString100>;
|
|
58
58
|
/**
|
|
59
59
|
* A string that is at least 3 character long and a maximum of 255.
|
|
60
60
|
*/
|
|
@@ -67,7 +67,7 @@ export type Min3String255 = string & Min3String255Brand;
|
|
|
67
67
|
/**
|
|
68
68
|
* A string that is at least 3 character long and a maximum of 255.
|
|
69
69
|
*/
|
|
70
|
-
export declare const Min3String255: WithDefaults<
|
|
70
|
+
export declare const Min3String255: WithDefaults<import("./brand.js").BrandedSchema<S.String, Min3String255>> & import("./brand.js").BrandedSchema<S.String, Min3String255>;
|
|
71
71
|
/**
|
|
72
72
|
* A string that is at least 6 characters long and a maximum of 50.
|
|
73
73
|
*/
|
|
@@ -79,31 +79,113 @@ export interface StringIdBrand extends Simplify<B.Brand<"StringId"> & NonEmptySt
|
|
|
79
79
|
export type StringId = string & StringIdBrand;
|
|
80
80
|
/**
|
|
81
81
|
* A string that is at least 6 characters long and a maximum of 50.
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
make: () => StringId;
|
|
88
|
-
|
|
82
|
+
*
|
|
83
|
+
* `.withConstructorDefault` => fresh `nanoid()` (construction-only; not
|
|
84
|
+
* applied during decode — see file-level note).
|
|
85
|
+
*/
|
|
86
|
+
export declare const StringId: WithDefaults<import("./brand.js").BrandedSchema<S.String, StringId> & {
|
|
87
|
+
make: (s?: string) => StringId;
|
|
88
|
+
/**
|
|
89
|
+
* Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
|
|
90
|
+
* only when the field is omitted from `.make(...)` input. NOT applied
|
|
91
|
+
* during decode — cannot be used to JIT-migrate database fields. See
|
|
92
|
+
* file-level note.
|
|
93
|
+
*/
|
|
94
|
+
withConstructorDefault: S.withConstructorDefault<import("./brand.js").BrandedSchema<S.String, StringId>>;
|
|
95
|
+
}> & import("./brand.js").BrandedSchema<S.String, StringId> & {
|
|
96
|
+
make: (s?: string) => StringId;
|
|
97
|
+
/**
|
|
98
|
+
* Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
|
|
99
|
+
* only when the field is omitted from `.make(...)` input. NOT applied
|
|
100
|
+
* during decode — cannot be used to JIT-migrate database fields. See
|
|
101
|
+
* file-level note.
|
|
102
|
+
*/
|
|
103
|
+
withConstructorDefault: S.withConstructorDefault<import("./brand.js").BrandedSchema<S.String, StringId>>;
|
|
89
104
|
};
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
export
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
105
|
+
/**
|
|
106
|
+
* Build a `StringId` schema whose values are required to start with a fixed
|
|
107
|
+
* `prefix` (joined with `separator`, default `-`).
|
|
108
|
+
*
|
|
109
|
+
* The returned schema exposes `.withConstructorDefault` that mints a fresh
|
|
110
|
+
* prefixed id. Construction-only — not applied during decode; see file-level
|
|
111
|
+
* note.
|
|
112
|
+
*/
|
|
113
|
+
export declare function prefixedStringId<Type extends StringId>(): <Prefix extends string, Separator extends string = "-">(prefix: Prefix, name: string, separator?: Separator) => WithDefaults<S.refine<Type, WithDefaults<import("./brand.js").BrandedSchema<S.String, StringId> & {
|
|
114
|
+
make: (s?: string) => StringId;
|
|
115
|
+
/**
|
|
116
|
+
* Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
|
|
117
|
+
* only when the field is omitted from `.make(...)` input. NOT applied
|
|
118
|
+
* during decode — cannot be used to JIT-migrate database fields. See
|
|
119
|
+
* file-level note.
|
|
120
|
+
*/
|
|
121
|
+
withConstructorDefault: S.withConstructorDefault<import("./brand.js").BrandedSchema<S.String, StringId>>;
|
|
122
|
+
}> & import("./brand.js").BrandedSchema<S.String, StringId> & {
|
|
123
|
+
make: (s?: string) => StringId;
|
|
124
|
+
/**
|
|
125
|
+
* Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
|
|
126
|
+
* only when the field is omitted from `.make(...)` input. NOT applied
|
|
127
|
+
* during decode — cannot be used to JIT-migrate database fields. See
|
|
128
|
+
* file-level note.
|
|
129
|
+
*/
|
|
130
|
+
withConstructorDefault: S.withConstructorDefault<import("./brand.js").BrandedSchema<S.String, StringId>>;
|
|
131
|
+
}>> & S.refine<Type, WithDefaults<import("./brand.js").BrandedSchema<S.String, StringId> & {
|
|
132
|
+
make: (s?: string) => StringId;
|
|
133
|
+
/**
|
|
134
|
+
* Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
|
|
135
|
+
* only when the field is omitted from `.make(...)` input. NOT applied
|
|
136
|
+
* during decode — cannot be used to JIT-migrate database fields. See
|
|
137
|
+
* file-level note.
|
|
138
|
+
*/
|
|
139
|
+
withConstructorDefault: S.withConstructorDefault<import("./brand.js").BrandedSchema<S.String, StringId>>;
|
|
140
|
+
}> & import("./brand.js").BrandedSchema<S.String, StringId> & {
|
|
141
|
+
make: (s?: string) => StringId;
|
|
142
|
+
/**
|
|
143
|
+
* Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
|
|
144
|
+
* only when the field is omitted from `.make(...)` input. NOT applied
|
|
145
|
+
* during decode — cannot be used to JIT-migrate database fields. See
|
|
146
|
+
* file-level note.
|
|
147
|
+
*/
|
|
148
|
+
withConstructorDefault: S.withConstructorDefault<import("./brand.js").BrandedSchema<S.String, StringId>>;
|
|
149
|
+
}> & PrefixedStringUtils<Type, Prefix, Separator>;
|
|
150
|
+
/**
|
|
151
|
+
* Build a branded `StringId` schema for the given branded `Id` type.
|
|
152
|
+
*
|
|
153
|
+
* Exposes `.withConstructorDefault` that mints a fresh `nanoid()`-shaped id.
|
|
154
|
+
* Construction-only — not applied during decode; see file-level note.
|
|
155
|
+
*/
|
|
156
|
+
export declare const brandedStringId: <Id>() => WithDefaults<S.Codec<Id, string, never, never> & {
|
|
157
|
+
/**
|
|
158
|
+
* Construction-only default: fresh `nanoid()`-shaped id. Applied only
|
|
159
|
+
* when the field is omitted from `.make(...)` input. NOT applied
|
|
160
|
+
* during decode — cannot be used to JIT-migrate database fields. See
|
|
161
|
+
* file-level note.
|
|
162
|
+
*/
|
|
163
|
+
withConstructorDefault: S.withConstructorDefault<S.Codec<Id, string> & S.WithoutConstructorDefault>;
|
|
164
|
+
make: () => Id;
|
|
165
|
+
} & WithDefaults<S.Codec<Id, string, never, never>>> & S.Codec<Id, string, never, never> & {
|
|
166
|
+
/**
|
|
167
|
+
* Construction-only default: fresh `nanoid()`-shaped id. Applied only
|
|
168
|
+
* when the field is omitted from `.make(...)` input. NOT applied
|
|
169
|
+
* during decode — cannot be used to JIT-migrate database fields. See
|
|
170
|
+
* file-level note.
|
|
171
|
+
*/
|
|
172
|
+
withConstructorDefault: S.withConstructorDefault<S.Codec<Id, string> & S.WithoutConstructorDefault>;
|
|
173
|
+
make: () => Id;
|
|
174
|
+
} & WithDefaults<S.Codec<Id, string, never, never>>;
|
|
175
|
+
export interface PrefixedStringUtils<Type extends StringId, Prefix extends string, Separator extends string> {
|
|
176
|
+
readonly make: () => Type;
|
|
177
|
+
readonly unsafeFrom: (str: string) => Type;
|
|
178
|
+
prefixSafe: <REST extends string>(str: `${Prefix}${Separator}${REST}`) => Type;
|
|
102
179
|
readonly prefix: Prefix;
|
|
103
|
-
|
|
180
|
+
/**
|
|
181
|
+
* Construction-only default: fresh prefixed id. Applied only when the
|
|
182
|
+
* field is omitted from `.make(...)` input. NOT applied during decode —
|
|
183
|
+
* cannot be used to JIT-migrate database fields. See file-level note.
|
|
184
|
+
*/
|
|
185
|
+
readonly withConstructorDefault: S.withConstructorDefault<S.Codec<Type, string> & S.WithoutConstructorDefault>;
|
|
104
186
|
}
|
|
105
187
|
export interface UrlBrand extends Simplify<B.Brand<"Url"> & NonEmptyStringBrand> {
|
|
106
188
|
}
|
|
107
189
|
export type Url = string & UrlBrand;
|
|
108
190
|
export declare const Url: WithDefaults<S.refine<Url, S.String>> & S.refine<Url, S.String>;
|
|
109
|
-
//# sourceMappingURL=
|
|
191
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9yZVN0cmluZ3MuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY2hlbWEvbW9yZVN0cmluZ3MudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBY0EsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUFDbEMsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBSTVDLE9BQU8sRUFBbUIsS0FBSyxZQUFZLEVBQUUsTUFBTSxVQUFVLENBQUE7QUFDN0QsT0FBTyxFQUFFLEtBQUssQ0FBQyxFQUFFLE1BQU0sYUFBYSxDQUFBO0FBQ3BDLE9BQU8sS0FBSyxFQUFFLHNCQUFzQixFQUFFLG1CQUFtQixFQUFFLE1BQU0sY0FBYyxDQUFBO0FBSS9FOztHQUVHO0FBQ0gsTUFBTSxXQUFXLHFCQUFzQixTQUFRLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLEdBQUcscUJBQXFCLENBQUM7Q0FBRztBQUUvRzs7R0FFRztBQUNILE1BQU0sTUFBTSxnQkFBZ0IsR0FBRyxNQUFNLEdBQUcscUJBQXFCLENBQUE7QUFFN0Q7O0dBRUc7QUFDSCxlQUFPLE1BQU0sZ0JBQWdCLCtKQU81QixDQUFBO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLFdBQVcscUJBQXNCLFNBQVEsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsa0JBQWtCLENBQUMsR0FBRyxxQkFBcUIsQ0FBQztDQUFHO0FBRS9HOztHQUVHO0FBQ0gsTUFBTSxNQUFNLGdCQUFnQixHQUFHLE1BQU0sR0FBRyxxQkFBcUIsQ0FBQTtBQUU3RDs7R0FFRztBQUNILGVBQU8sTUFBTSxnQkFBZ0IsK0pBTzVCLENBQUE7QUFFRDs7R0FFRztBQUNILE1BQU0sV0FBVyxxQkFBc0IsU0FBUSxRQUFRLENBQUMsQ0FBQyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxHQUFHLHNCQUFzQixDQUFDO0NBQUc7QUFFaEg7O0dBRUc7QUFDSCxNQUFN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
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"moreStrings.d.ts","sourceRoot":"","sources":["../../src/Schema/moreStrings.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"moreStrings.d.ts","sourceRoot":"","sources":["../../src/Schema/moreStrings.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
import { pipe } from "effect";
|
|
2
1
|
import { extendM } from "effect-app/utils";
|
|
2
|
+
import * as Effect from "effect/Effect";
|
|
3
|
+
import { pipe } from "effect/Function";
|
|
3
4
|
import * as S from "effect/Schema";
|
|
4
5
|
import { customRandom, nanoid, urlAlphabet } from "nanoid";
|
|
5
6
|
import validator from "validator";
|
|
6
7
|
import { fromBrand, nominal } from "./brand.js";
|
|
7
|
-
import {
|
|
8
|
+
import { withDefaultMake } from "./ext.js";
|
|
8
9
|
const nonEmptyString = S.NonEmptyString;
|
|
9
10
|
/**
|
|
10
11
|
* A string that is at least 1 character long and a maximum of 50.
|
|
11
12
|
*/
|
|
12
13
|
export const NonEmptyString50 = nonEmptyString.pipe(S.check(S.isMaxLength(50)), fromBrand(nominal(), {
|
|
13
14
|
identifier: "NonEmptyString50",
|
|
14
|
-
title: "NonEmptyString50",
|
|
15
15
|
jsonSchema: {}
|
|
16
16
|
}), withDefaultMake);
|
|
17
17
|
/**
|
|
@@ -19,7 +19,6 @@ export const NonEmptyString50 = nonEmptyString.pipe(S.check(S.isMaxLength(50)),
|
|
|
19
19
|
*/
|
|
20
20
|
export const NonEmptyString64 = nonEmptyString.pipe(S.check(S.isMaxLength(64)), fromBrand(nominal(), {
|
|
21
21
|
identifier: "NonEmptyString64",
|
|
22
|
-
title: "NonEmptyString64",
|
|
23
22
|
jsonSchema: {}
|
|
24
23
|
}), withDefaultMake);
|
|
25
24
|
/**
|
|
@@ -27,7 +26,6 @@ export const NonEmptyString64 = nonEmptyString.pipe(S.check(S.isMaxLength(64)),
|
|
|
27
26
|
*/
|
|
28
27
|
export const NonEmptyString80 = nonEmptyString.pipe(S.check(S.isMaxLength(80)), fromBrand(nominal(), {
|
|
29
28
|
identifier: "NonEmptyString80",
|
|
30
|
-
title: "NonEmptyString80",
|
|
31
29
|
jsonSchema: {}
|
|
32
30
|
}), withDefaultMake);
|
|
33
31
|
/**
|
|
@@ -35,14 +33,16 @@ export const NonEmptyString80 = nonEmptyString.pipe(S.check(S.isMaxLength(80)),
|
|
|
35
33
|
*/
|
|
36
34
|
export const NonEmptyString100 = nonEmptyString.pipe(S.check(S.isMaxLength(100)), fromBrand(nominal(), {
|
|
37
35
|
identifier: "NonEmptyString100",
|
|
38
|
-
title: "NonEmptyString100",
|
|
39
36
|
jsonSchema: {}
|
|
40
37
|
}), withDefaultMake);
|
|
41
38
|
/**
|
|
42
39
|
* A string that is at least 3 character long and a maximum of 255.
|
|
43
40
|
*/
|
|
44
|
-
export const Min3String255 = pipe(S.String, S.check(S.isMinLength(3), S.isMaxLength(255)), fromBrand(nominal(), {
|
|
45
|
-
|
|
41
|
+
export const Min3String255 = pipe(S.String, S.check(S.isMinLength(3), S.isMaxLength(255)), fromBrand(nominal(), {
|
|
42
|
+
identifier: "Min3String255",
|
|
43
|
+
jsonSchema: {}
|
|
44
|
+
}), withDefaultMake);
|
|
45
|
+
const makeStringId = (s) => s !== undefined ? S.decodeSync(StringId)(s) : nanoid();
|
|
46
46
|
const minLength = 6;
|
|
47
47
|
const maxLength = 50;
|
|
48
48
|
const size = 21;
|
|
@@ -52,19 +52,35 @@ const StringIdArb = () => (fc) => fc
|
|
|
52
52
|
.map((_) => customRandom(urlAlphabet, size, (size) => _.subarray(0, size))());
|
|
53
53
|
/**
|
|
54
54
|
* A string that is at least 6 characters long and a maximum of 50.
|
|
55
|
+
*
|
|
56
|
+
* `.withConstructorDefault` => fresh `nanoid()` (construction-only; not
|
|
57
|
+
* applied during decode — see file-level note).
|
|
55
58
|
*/
|
|
56
59
|
export const StringId = extendM(pipe(S.String, S.check(S.isMinLength(minLength), S.isMaxLength(maxLength)), fromBrand(nominal(), {
|
|
57
60
|
identifier: "StringId",
|
|
58
|
-
title: "StringId",
|
|
59
61
|
toArbitrary: () => (fc) => StringIdArb()(fc),
|
|
60
62
|
jsonSchema: {}
|
|
61
63
|
})), (s) => ({
|
|
62
64
|
make: makeStringId,
|
|
63
|
-
|
|
65
|
+
/**
|
|
66
|
+
* Construction-only default: fresh `nanoid()`-shaped `StringId`. Applied
|
|
67
|
+
* only when the field is omitted from `.make(...)` input. NOT applied
|
|
68
|
+
* during decode — cannot be used to JIT-migrate database fields. See
|
|
69
|
+
* file-level note.
|
|
70
|
+
*/
|
|
71
|
+
withConstructorDefault: s.pipe(S.withConstructorDefault(Effect.sync(makeStringId)))
|
|
64
72
|
}))
|
|
65
73
|
.pipe(withDefaultMake);
|
|
66
74
|
// const prefixedStringIdUnsafe = (prefix: string) => StringId(prefix + StringId.make())
|
|
67
75
|
// const prefixedStringIdUnsafeThunk = (prefix: string) => () => prefixedStringIdUnsafe(prefix)
|
|
76
|
+
/**
|
|
77
|
+
* Build a `StringId` schema whose values are required to start with a fixed
|
|
78
|
+
* `prefix` (joined with `separator`, default `-`).
|
|
79
|
+
*
|
|
80
|
+
* The returned schema exposes `.withConstructorDefault` that mints a fresh
|
|
81
|
+
* prefixed id. Construction-only — not applied during decode; see file-level
|
|
82
|
+
* note.
|
|
83
|
+
*/
|
|
68
84
|
export function prefixedStringId() {
|
|
69
85
|
return (prefix, name, separator) => {
|
|
70
86
|
const pref = `${prefix}${separator ?? "-"}`;
|
|
@@ -72,8 +88,7 @@ export function prefixedStringId() {
|
|
|
72
88
|
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
|
|
73
89
|
const s = StringId
|
|
74
90
|
.pipe(S.refine((x) => x.startsWith(pref), {
|
|
75
|
-
identifier: name
|
|
76
|
-
title: name
|
|
91
|
+
identifier: name
|
|
77
92
|
}), S.annotate({
|
|
78
93
|
toArbitrary: () => (fc) => arb()(fc)
|
|
79
94
|
}));
|
|
@@ -90,21 +105,35 @@ export function prefixedStringId() {
|
|
|
90
105
|
*/
|
|
91
106
|
prefixSafe: (str) => ex(str),
|
|
92
107
|
prefix,
|
|
93
|
-
|
|
108
|
+
/**
|
|
109
|
+
* Construction-only default: fresh prefixed id. Applied only when
|
|
110
|
+
* the field is omitted from `.make(...)` input. NOT applied during
|
|
111
|
+
* decode — cannot be used to JIT-migrate database fields. See
|
|
112
|
+
* file-level note.
|
|
113
|
+
*/
|
|
114
|
+
withConstructorDefault: schema.pipe(S.withConstructorDefault(Effect.sync(make)))
|
|
94
115
|
}));
|
|
95
116
|
};
|
|
96
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Build a branded `StringId` schema for the given branded `Id` type.
|
|
120
|
+
*
|
|
121
|
+
* Exposes `.withConstructorDefault` that mints a fresh `nanoid()`-shaped id.
|
|
122
|
+
* Construction-only — not applied during decode; see file-level note.
|
|
123
|
+
*/
|
|
97
124
|
export const brandedStringId = () => withDefaultMake(Object.assign(Object.create(StringId), StringId));
|
|
98
125
|
const isUrl = (s) => {
|
|
99
126
|
return validator.default.isURL(s, { require_tld: false });
|
|
100
127
|
};
|
|
101
128
|
export const Url = S
|
|
102
129
|
.String
|
|
103
|
-
.pipe(S.
|
|
104
|
-
identifier: "Url",
|
|
130
|
+
.pipe(S.annotate({
|
|
105
131
|
title: "Url",
|
|
132
|
+
format: "uri"
|
|
133
|
+
}), S.refine(isUrl, {
|
|
134
|
+
identifier: "Url",
|
|
106
135
|
jsonSchema: { format: "uri" }
|
|
107
136
|
}), S.annotate({
|
|
108
137
|
toArbitrary: () => (fc) => fc.webUrl().map((_) => _)
|
|
109
138
|
}), withDefaultMake);
|
|
110
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibW9yZVN0cmluZ3MuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvU2NoZW1hL21vcmVTdHJpbmdzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVdBLE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQTtBQUMxQyxPQUFPLEtBQUssTUFBTSxNQUFNLGVBQWUsQ0FBQTtBQUN2QyxPQUFPLEVBQUUsSUFBSSxFQUFFLE1BQU0saUJBQWlCLENBQUE7QUFDdEMsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUFFbEMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLEVBQUUsV0FBVyxFQUFFLE1BQU0sUUFBUSxDQUFBO0FBQzFELE9BQU8sU0FBUyxNQUFNLFdBQVcsQ0FBQTtBQUNqQyxPQUFPLEVBQUUsU0FBUyxFQUFFLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQTtBQUMvQyxPQUFPLEVBQUUsZUFBZSxFQUFxQixNQUFNLFVBQVUsQ0FBQTtBQUk3RCxNQUFNLGNBQWMsR0FBRyxDQUFDLENBQUMsY0FBYyxDQUFBO0FBWXZDOztHQUVHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsY0FBYyxDQUFDLElBQUksQ0FDakQsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsV0FBVyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQzFCLFNBQVMsQ0FBbUIsT0FBTyxFQUFvQixFQUFFO0lBQ3ZELFVBQVUsRUFBRSxrQkFBa0I7SUFDOUIsVUFBVSxFQUFFLEVBQUU7Q0FDZixDQUFDLEVBQ0YsZUFBZSxDQUNoQixDQUFBO0FBWUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxnQkFBZ0IsR0FBRyxjQUFjLENBQUMsSUFBSSxDQUNqRCxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsRUFBRSxDQUFDLENBQUMsRUFDMUIsU0FBUyxDQUFtQixPQUFPLEVBQW9CLEVBQUU7SUFDdkQsVUFBVSxFQUFF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
|
package/dist/Schema/numbers.d.ts
CHANGED
|
@@ -3,44 +3,84 @@ import type { Simplify } from "effect/Types";
|
|
|
3
3
|
import { type B } from "./schema.js";
|
|
4
4
|
export interface PositiveIntBrand extends Simplify<B.Brand<"PositiveInt"> & NonNegativeIntBrand & PositiveNumberBrand> {
|
|
5
5
|
}
|
|
6
|
-
|
|
7
|
-
|
|
6
|
+
/** Positive integer. `.withConstructorDefault` => `1` (construction-only). */
|
|
7
|
+
export declare const PositiveInt: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Int, PositiveInt>> & import("./brand.js").BrandedSchema<S.Int, PositiveInt> & {
|
|
8
|
+
/**
|
|
9
|
+
* Construction-only default `1`. Applied only when the field is omitted
|
|
10
|
+
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
11
|
+
* JIT-migrate database fields. See file-level note.
|
|
12
|
+
*/
|
|
13
|
+
withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Int, PositiveInt>> & import("./brand.js").BrandedSchema<S.Int, PositiveInt>>;
|
|
8
14
|
};
|
|
9
15
|
export type PositiveInt = number & PositiveIntBrand;
|
|
10
16
|
export interface NonNegativeIntBrand extends Simplify<B.Brand<"NonNegativeInt"> & IntBrand & NonNegativeNumberBrand> {
|
|
11
17
|
}
|
|
12
|
-
|
|
13
|
-
|
|
18
|
+
/** Non-negative integer. `.withConstructorDefault` => `0` (construction-only). */
|
|
19
|
+
export declare const NonNegativeInt: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Int, NonNegativeInt>> & import("./brand.js").BrandedSchema<S.Int, NonNegativeInt> & {
|
|
20
|
+
/**
|
|
21
|
+
* Construction-only default `0`. Applied only when the field is omitted
|
|
22
|
+
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
23
|
+
* JIT-migrate database fields. See file-level note.
|
|
24
|
+
*/
|
|
25
|
+
withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Int, NonNegativeInt>> & import("./brand.js").BrandedSchema<S.Int, NonNegativeInt>>;
|
|
14
26
|
};
|
|
15
27
|
export type NonNegativeInt = number & NonNegativeIntBrand;
|
|
16
28
|
export interface IntBrand extends Simplify<B.Brand<"Int">> {
|
|
17
29
|
}
|
|
18
|
-
|
|
19
|
-
|
|
30
|
+
/** Integer. `.withConstructorDefault` => `0` (construction-only). */
|
|
31
|
+
export declare const Int: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Int, Int>> & import("./brand.js").BrandedSchema<S.Int, Int> & {
|
|
32
|
+
/**
|
|
33
|
+
* Construction-only default `0`. Applied only when the field is omitted
|
|
34
|
+
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
35
|
+
* JIT-migrate database fields. See file-level note.
|
|
36
|
+
*/
|
|
37
|
+
withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Int, Int>> & import("./brand.js").BrandedSchema<S.Int, Int>>;
|
|
20
38
|
};
|
|
21
39
|
export type Int = number & IntBrand;
|
|
22
40
|
export interface PositiveNumberBrand extends Simplify<B.Brand<"PositiveNumber"> & NonNegativeNumberBrand> {
|
|
23
41
|
}
|
|
24
|
-
|
|
25
|
-
|
|
42
|
+
/** Positive finite number. `.withConstructorDefault` => `1` (construction-only). */
|
|
43
|
+
export declare const PositiveNumber: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, PositiveNumber>> & import("./brand.js").BrandedSchema<S.Finite, PositiveNumber> & {
|
|
44
|
+
/**
|
|
45
|
+
* Construction-only default `1`. Applied only when the field is omitted
|
|
46
|
+
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
47
|
+
* JIT-migrate database fields. See file-level note.
|
|
48
|
+
*/
|
|
49
|
+
withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, PositiveNumber>> & import("./brand.js").BrandedSchema<S.Finite, PositiveNumber>>;
|
|
26
50
|
};
|
|
27
51
|
export type PositiveNumber = number & PositiveNumberBrand;
|
|
28
52
|
export interface NonNegativeNumberBrand extends Simplify<B.Brand<"NonNegativeNumber">> {
|
|
29
53
|
}
|
|
30
|
-
|
|
31
|
-
|
|
54
|
+
/** Non-negative finite number. `.withConstructorDefault` => `0` (construction-only). */
|
|
55
|
+
export declare const NonNegativeNumber: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber>> & import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber> & {
|
|
56
|
+
/**
|
|
57
|
+
* Construction-only default `0`. Applied only when the field is omitted
|
|
58
|
+
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
59
|
+
* JIT-migrate database fields. See file-level note.
|
|
60
|
+
*/
|
|
61
|
+
withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber>> & import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber>>;
|
|
32
62
|
};
|
|
33
63
|
export type NonNegativeNumber = number & NonNegativeNumberBrand;
|
|
34
64
|
/** @deprecated Not an actual decimal */
|
|
35
|
-
export declare const NonNegativeDecimal: import("./ext.js").WithDefaults<
|
|
36
|
-
|
|
65
|
+
export declare const NonNegativeDecimal: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber>> & import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber> & {
|
|
66
|
+
/**
|
|
67
|
+
* Construction-only default `0`. Applied only when the field is omitted
|
|
68
|
+
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
69
|
+
* JIT-migrate database fields. See file-level note.
|
|
70
|
+
*/
|
|
71
|
+
withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber>> & import("./brand.js").BrandedSchema<S.Finite, NonNegativeNumber>>;
|
|
37
72
|
};
|
|
38
73
|
/** @deprecated Not an actual decimal */
|
|
39
74
|
export type NonNegativeDecimal = NonNegativeNumber;
|
|
40
75
|
/** @deprecated Not an actual decimal */
|
|
41
|
-
export declare const PositiveDecimal: import("./ext.js").WithDefaults<
|
|
42
|
-
|
|
76
|
+
export declare const PositiveDecimal: import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, PositiveNumber>> & import("./brand.js").BrandedSchema<S.Finite, PositiveNumber> & {
|
|
77
|
+
/**
|
|
78
|
+
* Construction-only default `1`. Applied only when the field is omitted
|
|
79
|
+
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
80
|
+
* JIT-migrate database fields. See file-level note.
|
|
81
|
+
*/
|
|
82
|
+
withConstructorDefault: S.withConstructorDefault<import("./ext.js").WithDefaults<import("./brand.js").BrandedSchema<S.Finite, PositiveNumber>> & import("./brand.js").BrandedSchema<S.Finite, PositiveNumber>>;
|
|
43
83
|
};
|
|
44
84
|
/** @deprecated Not an actual decimal */
|
|
45
85
|
export type PositiveDecimal = PositiveNumber;
|
|
46
|
-
//# sourceMappingURL=
|
|
86
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVycy5kLnRzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1NjaGVtYS9udW1iZXJzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVlBLE9BQU8sS0FBSyxDQUFDLE1BQU0sZUFBZSxDQUFBO0FBQ2xDLE9BQU8sS0FBSyxFQUFFLFFBQVEsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUc1QyxPQUFPLEVBQUUsS0FBSyxDQUFDLEVBQUUsTUFBTSxhQUFhLENBQUE7QUFFcEMsTUFBTSxXQUFXLGdCQUNmLFNBQVEsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsbUJBQW1CLEdBQUcsbUJBQW1CLENBQUM7Q0FDcEY7QUFDRiw4RUFBOEU7QUFDOUUsZUFBTyxNQUFNLFdBQVc7SUFPcEI7Ozs7T0FJRzs7Q0FHTixDQUFBO0FBQ0QsTUFBTSxNQUFNLFdBQVcsR0FBRyxNQUFNLEdBQUcsZ0JBQWdCLENBQUE7QUFFbkQsTUFBTSxXQUFXLG1CQUFvQixTQUFRLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsUUFBUSxHQUFHLHNCQUFzQixDQUFDO0NBQUc7QUFDdkgsa0ZBQWtGO0FBQ2xGLGVBQU8sTUFBTSxjQUFjO0lBVXZCOzs7O09BSUc7O0NBR04sQ0FBQTtBQUNELE1BQU0sTUFBTSxjQUFjLEdBQUcsTUFBTSxHQUFHLG1CQUFtQixDQUFBO0FBRXpELE1BQU0sV0FBVyxRQUFTLFNBQVEsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7Q0FBRztBQUM3RCxxRUFBcUU7QUFDckUsZUFBTyxNQUFNLEdBQUc7SUFHWjs7OztPQUlHOztDQUdOLENBQUE7QUFDRCxNQUFNLE1BQU0sR0FBRyxHQUFHLE1BQU0sR0FBRyxRQUFRLENBQUE7QUFFbkMsTUFBTSxXQUFXLG1CQUFvQixTQUFRLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLGdCQUFnQixDQUFDLEdBQUcsc0JBQXNCLENBQUM7Q0FBRztBQUM1RyxvRkFBb0Y7QUFDcEYsZUFBTyxNQUFNLGNBQWM7SUFVdkI7Ozs7T0FJRzs7Q0FHTixDQUFBO0FBQ0QsTUFBTSxNQUFNLGNBQWMsR0FBRyxNQUFNLEdBQUcsbUJBQW1CLENBQUE7QUFFekQsTUFBTSxXQUFXLHNCQUF1QixTQUFRLFFBQVEsQ0FBQyxDQUFDLENBQUMsS0FBSyxDQUFDLG1CQUFtQixDQUFDLENBQUM7Q0FBRztBQUN6Rix3RkFBd0Y7QUFDeEYsZUFBTyxNQUFNLGlCQUFpQjtJQVkxQjs7OztPQUlHOztDQUdOLENBQUE7QUFDRCxNQUFNLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxHQUFHLHNCQUFzQixDQUFBO0FBRS9ELHdDQUF3QztBQUN4QyxlQUFPLE1BQU0sa0JBQWtCO0lBWDNCOzs7O09BSUc7O0NBTzRDLENBQUE7QUFDbkQsd0NBQXdDO0FBQ3hDLE1BQU0sTUFBTSxrQkFBa0IsR0FBRyxpQkFBaUIsQ0FBQTtBQUVsRCx3Q0FBd0M7QUFDeEMsZUFBTyxNQUFNLGVBQWU7SUF4Q3hCOzs7O09BSUc7O0NBb0NzQyxDQUFBO0FBQzdDLHdDQUF3QztBQUN4QyxNQUFNLE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBQSJ9
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"numbers.d.ts","sourceRoot":"","sources":["../../src/Schema/numbers.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"numbers.d.ts","sourceRoot":"","sources":["../../src/Schema/numbers.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,CAAC,MAAM,eAAe,CAAA;AAClC,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAA;AAG5C,OAAO,EAAE,KAAK,CAAC,EAAE,MAAM,aAAa,CAAA;AAEpC,MAAM,WAAW,gBACf,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,GAAG,mBAAmB,GAAG,mBAAmB,CAAC;CACpF;AACF,8EAA8E;AAC9E,eAAO,MAAM,WAAW;IAOpB;;;;OAIG;;CAGN,CAAA;AACD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,gBAAgB,CAAA;AAEnD,MAAM,WAAW,mBAAoB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,QAAQ,GAAG,sBAAsB,CAAC;CAAG;AACvH,kFAAkF;AAClF,eAAO,MAAM,cAAc;IAUvB;;;;OAIG;;CAGN,CAAA;AACD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,mBAAmB,CAAA;AAEzD,MAAM,WAAW,QAAS,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;CAAG;AAC7D,qEAAqE;AACrE,eAAO,MAAM,GAAG;IAGZ;;;;OAIG;;CAGN,CAAA;AACD,MAAM,MAAM,GAAG,GAAG,MAAM,GAAG,QAAQ,CAAA;AAEnC,MAAM,WAAW,mBAAoB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,GAAG,sBAAsB,CAAC;CAAG;AAC5G,oFAAoF;AACpF,eAAO,MAAM,cAAc;IAUvB;;;;OAIG;;CAGN,CAAA;AACD,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,mBAAmB,CAAA;AAEzD,MAAM,WAAW,sBAAuB,SAAQ,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;CAAG;AACzF,wFAAwF;AACxF,eAAO,MAAM,iBAAiB;IAY1B;;;;OAIG;;CAGN,CAAA;AACD,MAAM,MAAM,iBAAiB,GAAG,MAAM,GAAG,sBAAsB,CAAA;AAE/D,wCAAwC;AACxC,eAAO,MAAM,kBAAkB;IAX3B;;;;OAIG;;CAO4C,CAAA;AACnD,wCAAwC;AACxC,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,CAAA;AAElD,wCAAwC;AACxC,eAAO,MAAM,eAAe;IAxCxB;;;;OAIG;;CAoCsC,CAAA;AAC7C,wCAAwC;AACxC,MAAM,MAAM,eAAe,GAAG,cAAc,CAAA"}
|
package/dist/Schema/numbers.js
CHANGED
|
@@ -1,28 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Numeric brand schemas with `.withConstructorDefault` extensions.
|
|
3
|
+
*
|
|
4
|
+
* Each `.withConstructorDefault` here is **only** applied when the field is
|
|
5
|
+
* omitted during construction (`.make(...)`). It is **not** applied during
|
|
6
|
+
* decode and therefore cannot be used to JIT-migrate database fields.
|
|
7
|
+
*
|
|
8
|
+
* For persisted data, prefer an explicit, preferably versioned migration
|
|
9
|
+
* over decode-time fallbacks. See `./ext.ts` for the full policy note.
|
|
10
|
+
*/
|
|
1
11
|
import { extendM } from "effect-app/utils";
|
|
12
|
+
import * as Effect from "effect/Effect";
|
|
2
13
|
import * as S from "effect/Schema";
|
|
3
14
|
import { fromBrand, nominal } from "./brand.js";
|
|
4
|
-
import {
|
|
5
|
-
|
|
15
|
+
import { withDefaultMake } from "./ext.js";
|
|
16
|
+
/** Positive integer. `.withConstructorDefault` => `1` (construction-only). */
|
|
17
|
+
export const PositiveInt = extendM(S.Int.pipe(S.check(S.isGreaterThan(0)), fromBrand(nominal(), { identifier: "PositiveInt", jsonSchema: {} }), withDefaultMake), (s) => ({
|
|
18
|
+
/**
|
|
19
|
+
* Construction-only default `1`. Applied only when the field is omitted
|
|
20
|
+
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
21
|
+
* JIT-migrate database fields. See file-level note.
|
|
22
|
+
*/
|
|
23
|
+
withConstructorDefault: s.pipe(S.withConstructorDefault(Effect.sync(() => s(1))))
|
|
24
|
+
}));
|
|
25
|
+
/** Non-negative integer. `.withConstructorDefault` => `0` (construction-only). */
|
|
6
26
|
export const NonNegativeInt = extendM(S.Int.pipe(S.check(S.isGreaterThanOrEqualTo(0)), fromBrand(nominal(), {
|
|
7
27
|
identifier: "NonNegativeInt",
|
|
8
|
-
title: "NonNegativeInt",
|
|
9
28
|
jsonSchema: {}
|
|
10
|
-
}), withDefaultMake), (s) => ({
|
|
11
|
-
|
|
12
|
-
|
|
29
|
+
}), withDefaultMake), (s) => ({
|
|
30
|
+
/**
|
|
31
|
+
* Construction-only default `0`. Applied only when the field is omitted
|
|
32
|
+
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
33
|
+
* JIT-migrate database fields. See file-level note.
|
|
34
|
+
*/
|
|
35
|
+
withConstructorDefault: s.pipe(S.withConstructorDefault(Effect.sync(() => s(0))))
|
|
36
|
+
}));
|
|
37
|
+
/** Integer. `.withConstructorDefault` => `0` (construction-only). */
|
|
38
|
+
export const Int = extendM(S.Int.pipe(fromBrand(nominal(), { identifier: "Int", jsonSchema: {} }), withDefaultMake), (s) => ({
|
|
39
|
+
/**
|
|
40
|
+
* Construction-only default `0`. Applied only when the field is omitted
|
|
41
|
+
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
42
|
+
* JIT-migrate database fields. See file-level note.
|
|
43
|
+
*/
|
|
44
|
+
withConstructorDefault: s.pipe(S.withConstructorDefault(Effect.sync(() => s(0))))
|
|
45
|
+
}));
|
|
46
|
+
/** Positive finite number. `.withConstructorDefault` => `1` (construction-only). */
|
|
47
|
+
export const PositiveNumber = extendM(S.Finite.pipe(S.check(S.isGreaterThan(0)), fromBrand(nominal(), {
|
|
13
48
|
identifier: "PositiveNumber",
|
|
14
|
-
title: "PositiveNumber",
|
|
15
49
|
jsonSchema: {}
|
|
16
|
-
}), withDefaultMake), (s) => ({
|
|
50
|
+
}), withDefaultMake), (s) => ({
|
|
51
|
+
/**
|
|
52
|
+
* Construction-only default `1`. Applied only when the field is omitted
|
|
53
|
+
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
54
|
+
* JIT-migrate database fields. See file-level note.
|
|
55
|
+
*/
|
|
56
|
+
withConstructorDefault: s.pipe(S.withConstructorDefault(Effect.sync(() => s(1))))
|
|
57
|
+
}));
|
|
58
|
+
/** Non-negative finite number. `.withConstructorDefault` => `0` (construction-only). */
|
|
17
59
|
export const NonNegativeNumber = extendM(S
|
|
18
|
-
.
|
|
60
|
+
.Finite
|
|
19
61
|
.pipe(S.check(S.isGreaterThanOrEqualTo(0)), fromBrand(nominal(), {
|
|
20
62
|
identifier: "NonNegativeNumber",
|
|
21
|
-
title: "NonNegativeNumber",
|
|
22
63
|
jsonSchema: {}
|
|
23
|
-
}), withDefaultMake), (s) => ({
|
|
64
|
+
}), withDefaultMake), (s) => ({
|
|
65
|
+
/**
|
|
66
|
+
* Construction-only default `0`. Applied only when the field is omitted
|
|
67
|
+
* from `.make(...)` input. NOT applied during decode — cannot be used to
|
|
68
|
+
* JIT-migrate database fields. See file-level note.
|
|
69
|
+
*/
|
|
70
|
+
withConstructorDefault: s.pipe(S.withConstructorDefault(Effect.sync(() => s(0))))
|
|
71
|
+
}));
|
|
24
72
|
/** @deprecated Not an actual decimal */
|
|
25
73
|
export const NonNegativeDecimal = NonNegativeNumber;
|
|
26
74
|
/** @deprecated Not an actual decimal */
|
|
27
75
|
export const PositiveDecimal = PositiveNumber;
|
|
28
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
76
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibnVtYmVycy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY2hlbWEvbnVtYmVycy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7O0dBU0c7QUFDSCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sa0JBQWtCLENBQUE7QUFDMUMsT0FBTyxLQUFLLE1BQU0sTUFBTSxlQUFlLENBQUE7QUFDdkMsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUFFbEMsT0FBTyxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUE7QUFDL0MsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLFVBQVUsQ0FBQTtBQU0xQyw4RUFBOEU7QUFDOUUsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFHLE9BQU8sQ0FDaEMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQ1IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsYUFBYSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQzNCLFNBQVMsQ0FBYyxPQUFPLEVBQWUsRUFBRSxFQUFFLFVBQVUsRUFBRSxhQUFhLEVBQUUsVUFBVSxFQUFFLEVBQUUsRUFBRSxDQUFDLEVBQzdGLGVBQWUsQ0FDaEIsRUFDRCxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztJQUNOOzs7O09BSUc7SUFDSCxzQkFBc0IsRUFBRSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxzQkFBc0IsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7Q0FDbEYsQ0FBQyxDQUNILENBQUE7QUFJRCxrRkFBa0Y7QUFDbEYsTUFBTSxDQUFDLE1BQU0sY0FBYyxHQUFHLE9BQU8sQ0FDbkMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQ1IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsc0JBQXNCLENBQUMs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
|
|
@@ -6,4 +6,4 @@ export interface PhoneNumberBrand extends Simplify<B.Brand<"PhoneNumber"> & NonE
|
|
|
6
6
|
}
|
|
7
7
|
export type PhoneNumber = string & PhoneNumberBrand;
|
|
8
8
|
export declare const PhoneNumber: import("./ext.js").WithDefaults<S.refine<PhoneNumber, S.String>> & S.refine<PhoneNumber, S.String>;
|
|
9
|
-
//# sourceMappingURL=
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGhvbmVOdW1iZXIuZC50cyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9TY2hlbWEvcGhvbmVOdW1iZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxLQUFLLENBQUMsTUFBTSxlQUFlLENBQUE7QUFDbEMsT0FBTyxLQUFLLEVBQUUsUUFBUSxFQUFFLE1BQU0sY0FBYyxDQUFBO0FBRzVDLE9BQU8sS0FBSyxFQUFFLENBQUMsRUFBRSxNQUFNLGFBQWEsQ0FBQTtBQUNwQyxPQUFPLEtBQUssRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGNBQWMsQ0FBQTtBQUV2RCxNQUFNLFdBQVcsZ0JBQWlCLFNBQVEsUUFBUSxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsYUFBYSxDQUFDLEdBQUcsbUJBQW1CLENBQUM7Q0FBRztBQUNuRyxNQUFNLE1BQU0sV0FBVyxHQUFHLE1BQU0sR0FBRyxnQkFBZ0IsQ0FBQTtBQUVuRCxlQUFPLE1BQU0sV0FBVyxvR0FpQnJCLENBQUEifQ==
|