@tsgonest/types 0.0.1 → 0.1.1
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/dist/tags.d.ts +339 -157
- package/dist/tags.d.ts.map +1 -1
- package/dist/tags.js +21 -18
- package/package.json +1 -1
package/dist/tags.d.ts
CHANGED
|
@@ -1,237 +1,419 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @tsgonest/types — Zero-runtime branded types for type-safe validation
|
|
2
|
+
* @tsgonest/types — Zero-runtime branded types for type-safe validation.
|
|
3
3
|
*
|
|
4
4
|
* These types exist purely at compile time. They produce NO runtime code.
|
|
5
|
-
* The tsgonest compiler
|
|
6
|
-
* (prefixed with `__tsgonest_`) to extract validation constraints.
|
|
5
|
+
* The tsgonest compiler reads phantom properties (`__tsgonest_*`) to generate validators.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* Every constraint supports two forms:
|
|
8
|
+
* - Simple: Min<0> — clean, no custom error
|
|
9
|
+
* - Extended: Min<{value: 0, error: "Must be positive"}> — with per-constraint error
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* import { Email, Min, Max, Trim, Coerce } from "@tsgonest/types";
|
|
10
13
|
*
|
|
11
14
|
* interface CreateUserDto {
|
|
12
|
-
* email: string &
|
|
13
|
-
* name: string &
|
|
14
|
-
* age: number &
|
|
15
|
+
* email: string & Email;
|
|
16
|
+
* name: string & Trim & Min<1> & Max<255>;
|
|
17
|
+
* age: number & Min<0> & Max<150>;
|
|
15
18
|
* }
|
|
16
19
|
*
|
|
17
|
-
*
|
|
18
|
-
* interface
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
20
|
+
* // With per-constraint errors:
|
|
21
|
+
* interface StrictDto {
|
|
22
|
+
* email: string & Format<{type: "email", error: "Must be a valid email"}>;
|
|
23
|
+
* age: number & Min<{value: 0, error: "Age cannot be negative"}>;
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* // Query params with coercion:
|
|
27
|
+
* interface QueryDto {
|
|
28
|
+
* page: number & Coerce;
|
|
29
|
+
* active: boolean & Coerce;
|
|
27
30
|
* }
|
|
28
31
|
*/
|
|
29
|
-
/**
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
32
|
+
/** Extract the value from a dual-form number constraint. */
|
|
33
|
+
type NumVal<N extends number | {
|
|
34
|
+
value: number;
|
|
35
|
+
error?: string;
|
|
36
|
+
}> = N extends {
|
|
37
|
+
value: infer V;
|
|
38
|
+
} ? V : N;
|
|
39
|
+
/** Extract the value from a dual-form string constraint. */
|
|
40
|
+
type StrVal<S extends string | {
|
|
41
|
+
value: string;
|
|
42
|
+
error?: string;
|
|
43
|
+
}> = S extends {
|
|
44
|
+
value: infer V;
|
|
45
|
+
} ? V : S;
|
|
46
|
+
/** Extract the type from a dual-form type constraint (Format, Type). */
|
|
47
|
+
type TypeVal<T, Base> = T extends {
|
|
48
|
+
type: infer V;
|
|
49
|
+
} ? V : T;
|
|
50
|
+
/** Conditionally add a _error phantom property. */
|
|
51
|
+
type WithErr<Prefix extends string, C> = C extends {
|
|
52
|
+
error: infer E extends string;
|
|
53
|
+
} ? {
|
|
54
|
+
readonly [K in `${Prefix}_error`]: E;
|
|
55
|
+
} : {};
|
|
56
|
+
/** All supported string format values. */
|
|
33
57
|
export type FormatValue = "email" | "idn-email" | "url" | "uri" | "uri-reference" | "uri-template" | "iri" | "iri-reference" | "uuid" | "ipv4" | "ipv6" | "hostname" | "idn-hostname" | "date-time" | "date" | "time" | "duration" | "json-pointer" | "relative-json-pointer" | "byte" | "password" | "regex" | "nanoid" | "cuid" | "cuid2" | "ulid" | "jwt" | "base64url" | "hex" | "mac" | "cidrv4" | "cidrv6" | "emoji";
|
|
34
58
|
/**
|
|
35
|
-
*
|
|
59
|
+
* Validate a string matches a specific format.
|
|
36
60
|
*
|
|
37
61
|
* @example
|
|
38
|
-
*
|
|
39
|
-
* type
|
|
62
|
+
* Format<"email">
|
|
63
|
+
* Format<{type: "email", error: "Must be a valid email"}>
|
|
40
64
|
*/
|
|
41
|
-
export type Format<F extends FormatValue
|
|
42
|
-
|
|
43
|
-
|
|
65
|
+
export type Format<F extends FormatValue | {
|
|
66
|
+
type: FormatValue;
|
|
67
|
+
error?: string;
|
|
68
|
+
}> = {
|
|
69
|
+
readonly __tsgonest_format: TypeVal<F, FormatValue>;
|
|
70
|
+
} & WithErr<"__tsgonest_format", F>;
|
|
44
71
|
/**
|
|
45
|
-
*
|
|
46
|
-
*
|
|
47
|
-
* @example
|
|
48
|
-
* type NonEmpty = string & tags.MinLength<1>;
|
|
72
|
+
* Minimum string length.
|
|
73
|
+
* @example MinLength<1> or MinLength<{value: 1, error: "Cannot be empty"}>
|
|
49
74
|
*/
|
|
50
|
-
export type MinLength<N extends number
|
|
51
|
-
|
|
52
|
-
|
|
75
|
+
export type MinLength<N extends number | {
|
|
76
|
+
value: number;
|
|
77
|
+
error?: string;
|
|
78
|
+
}> = {
|
|
79
|
+
readonly __tsgonest_minLength: NumVal<N>;
|
|
80
|
+
} & WithErr<"__tsgonest_minLength", N>;
|
|
53
81
|
/**
|
|
54
|
-
*
|
|
55
|
-
*
|
|
56
|
-
* @example
|
|
57
|
-
* type ShortName = string & tags.MaxLength<50>;
|
|
82
|
+
* Maximum string length.
|
|
83
|
+
* @example MaxLength<255> or MaxLength<{value: 255, error: "Too long"}>
|
|
58
84
|
*/
|
|
59
|
-
export type MaxLength<N extends number
|
|
60
|
-
|
|
61
|
-
|
|
85
|
+
export type MaxLength<N extends number | {
|
|
86
|
+
value: number;
|
|
87
|
+
error?: string;
|
|
88
|
+
}> = {
|
|
89
|
+
readonly __tsgonest_maxLength: NumVal<N>;
|
|
90
|
+
} & WithErr<"__tsgonest_maxLength", N>;
|
|
62
91
|
/**
|
|
63
|
-
*
|
|
64
|
-
*
|
|
65
|
-
* @example
|
|
66
|
-
* type CountryCode = string & tags.Length<2>;
|
|
92
|
+
* Regex pattern constraint.
|
|
93
|
+
* @example Pattern<"^[a-z]+$"> or Pattern<{value: "^[a-z]+$", error: "Letters only"}>
|
|
67
94
|
*/
|
|
68
|
-
export type
|
|
95
|
+
export type Pattern<P extends string | {
|
|
96
|
+
value: string;
|
|
97
|
+
error?: string;
|
|
98
|
+
}> = {
|
|
99
|
+
readonly __tsgonest_pattern: StrVal<P>;
|
|
100
|
+
} & WithErr<"__tsgonest_pattern", P>;
|
|
69
101
|
/**
|
|
70
|
-
*
|
|
71
|
-
*
|
|
72
|
-
* @example
|
|
73
|
-
* type AlphaNumeric = string & tags.Pattern<"^[a-zA-Z0-9]+$">;
|
|
102
|
+
* String must start with prefix.
|
|
103
|
+
* @example StartsWith<"https://">
|
|
74
104
|
*/
|
|
75
|
-
export type
|
|
76
|
-
|
|
77
|
-
|
|
105
|
+
export type StartsWith<S extends string | {
|
|
106
|
+
value: string;
|
|
107
|
+
error?: string;
|
|
108
|
+
}> = {
|
|
109
|
+
readonly __tsgonest_startsWith: StrVal<S>;
|
|
110
|
+
} & WithErr<"__tsgonest_startsWith", S>;
|
|
78
111
|
/**
|
|
79
|
-
*
|
|
80
|
-
*
|
|
81
|
-
* @example
|
|
82
|
-
* type HttpUrl = string & tags.StartsWith<"https://">;
|
|
112
|
+
* String must end with suffix.
|
|
113
|
+
* @example EndsWith<".json">
|
|
83
114
|
*/
|
|
84
|
-
export type
|
|
85
|
-
|
|
86
|
-
|
|
115
|
+
export type EndsWith<S extends string | {
|
|
116
|
+
value: string;
|
|
117
|
+
error?: string;
|
|
118
|
+
}> = {
|
|
119
|
+
readonly __tsgonest_endsWith: StrVal<S>;
|
|
120
|
+
} & WithErr<"__tsgonest_endsWith", S>;
|
|
87
121
|
/**
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
-
* @example
|
|
91
|
-
* type JsonFile = string & tags.EndsWith<".json">;
|
|
122
|
+
* String must contain substring.
|
|
123
|
+
* @example Includes<"@">
|
|
92
124
|
*/
|
|
93
|
-
export type
|
|
94
|
-
|
|
95
|
-
|
|
125
|
+
export type Includes<S extends string | {
|
|
126
|
+
value: string;
|
|
127
|
+
error?: string;
|
|
128
|
+
}> = {
|
|
129
|
+
readonly __tsgonest_includes: StrVal<S>;
|
|
130
|
+
} & WithErr<"__tsgonest_includes", S>;
|
|
96
131
|
/**
|
|
97
|
-
*
|
|
98
|
-
*
|
|
99
|
-
* @example
|
|
100
|
-
* type ContainsAt = string & tags.Includes<"@">;
|
|
132
|
+
* Minimum value (inclusive): value >= N.
|
|
133
|
+
* @example Minimum<0> or Min<0> or Min<{value: 0, error: "Must be non-negative"}>
|
|
101
134
|
*/
|
|
102
|
-
export type
|
|
103
|
-
|
|
104
|
-
|
|
135
|
+
export type Minimum<N extends number | {
|
|
136
|
+
value: number;
|
|
137
|
+
error?: string;
|
|
138
|
+
}> = {
|
|
139
|
+
readonly __tsgonest_minimum: NumVal<N>;
|
|
140
|
+
} & WithErr<"__tsgonest_minimum", N>;
|
|
105
141
|
/**
|
|
106
|
-
*
|
|
107
|
-
*
|
|
108
|
-
* @example
|
|
109
|
-
* type NonNegative = number & tags.Minimum<0>;
|
|
142
|
+
* Maximum value (inclusive): value <= N.
|
|
143
|
+
* @example Maximum<100> or Max<100>
|
|
110
144
|
*/
|
|
111
|
-
export type
|
|
112
|
-
|
|
113
|
-
|
|
145
|
+
export type Maximum<N extends number | {
|
|
146
|
+
value: number;
|
|
147
|
+
error?: string;
|
|
148
|
+
}> = {
|
|
149
|
+
readonly __tsgonest_maximum: NumVal<N>;
|
|
150
|
+
} & WithErr<"__tsgonest_maximum", N>;
|
|
114
151
|
/**
|
|
115
|
-
*
|
|
116
|
-
*
|
|
117
|
-
* @example
|
|
118
|
-
* type Percentage = number & tags.Minimum<0> & tags.Maximum<100>;
|
|
152
|
+
* Exclusive minimum: value > N.
|
|
153
|
+
* @example ExclusiveMinimum<0> or Gt<0>
|
|
119
154
|
*/
|
|
120
|
-
export type
|
|
121
|
-
|
|
122
|
-
|
|
155
|
+
export type ExclusiveMinimum<N extends number | {
|
|
156
|
+
value: number;
|
|
157
|
+
error?: string;
|
|
158
|
+
}> = {
|
|
159
|
+
readonly __tsgonest_exclusiveMinimum: NumVal<N>;
|
|
160
|
+
} & WithErr<"__tsgonest_exclusiveMinimum", N>;
|
|
123
161
|
/**
|
|
124
|
-
*
|
|
125
|
-
*
|
|
126
|
-
* @example
|
|
127
|
-
* type Positive = number & tags.ExclusiveMinimum<0>;
|
|
162
|
+
* Exclusive maximum: value < N.
|
|
163
|
+
* @example ExclusiveMaximum<100> or Lt<100>
|
|
128
164
|
*/
|
|
129
|
-
export type
|
|
130
|
-
|
|
131
|
-
|
|
165
|
+
export type ExclusiveMaximum<N extends number | {
|
|
166
|
+
value: number;
|
|
167
|
+
error?: string;
|
|
168
|
+
}> = {
|
|
169
|
+
readonly __tsgonest_exclusiveMaximum: NumVal<N>;
|
|
170
|
+
} & WithErr<"__tsgonest_exclusiveMaximum", N>;
|
|
132
171
|
/**
|
|
133
|
-
*
|
|
134
|
-
*
|
|
135
|
-
* @example
|
|
136
|
-
* type Negative = number & tags.ExclusiveMaximum<0>;
|
|
172
|
+
* Value must be a multiple of N.
|
|
173
|
+
* @example MultipleOf<2> or Step<0.01>
|
|
137
174
|
*/
|
|
138
|
-
export type
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
* @example
|
|
145
|
-
* type Even = number & tags.MultipleOf<2>;
|
|
146
|
-
*/
|
|
147
|
-
export type MultipleOf<N extends number> = {
|
|
148
|
-
readonly __tsgonest_multipleOf: N;
|
|
149
|
-
};
|
|
175
|
+
export type MultipleOf<N extends number | {
|
|
176
|
+
value: number;
|
|
177
|
+
error?: string;
|
|
178
|
+
}> = {
|
|
179
|
+
readonly __tsgonest_multipleOf: NumVal<N>;
|
|
180
|
+
} & WithErr<"__tsgonest_multipleOf", N>;
|
|
150
181
|
/** Valid numeric type values. */
|
|
151
182
|
export type NumericTypeValue = "int32" | "uint32" | "int64" | "uint64" | "float" | "double";
|
|
152
183
|
/**
|
|
153
|
-
* Constrain
|
|
154
|
-
*
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
184
|
+
* Constrain number to a specific numeric type.
|
|
185
|
+
* @example Type<"int32"> or Type<{type: "int32", error: "Must be integer"}>
|
|
186
|
+
*/
|
|
187
|
+
export type Type<T extends NumericTypeValue | {
|
|
188
|
+
type: NumericTypeValue;
|
|
189
|
+
error?: string;
|
|
190
|
+
}> = {
|
|
191
|
+
readonly __tsgonest_type: TypeVal<T, NumericTypeValue>;
|
|
192
|
+
} & WithErr<"__tsgonest_type", T>;
|
|
193
|
+
/**
|
|
194
|
+
* Minimum array length.
|
|
195
|
+
* @example MinItems<1>
|
|
196
|
+
*/
|
|
197
|
+
export type MinItems<N extends number | {
|
|
198
|
+
value: number;
|
|
199
|
+
error?: string;
|
|
200
|
+
}> = {
|
|
201
|
+
readonly __tsgonest_minItems: NumVal<N>;
|
|
202
|
+
} & WithErr<"__tsgonest_minItems", N>;
|
|
203
|
+
/**
|
|
204
|
+
* Maximum array length.
|
|
205
|
+
* @example MaxItems<100>
|
|
206
|
+
*/
|
|
207
|
+
export type MaxItems<N extends number | {
|
|
208
|
+
value: number;
|
|
209
|
+
error?: string;
|
|
210
|
+
}> = {
|
|
211
|
+
readonly __tsgonest_maxItems: NumVal<N>;
|
|
212
|
+
} & WithErr<"__tsgonest_maxItems", N>;
|
|
213
|
+
/**
|
|
214
|
+
* Array items must be unique.
|
|
215
|
+
* @example UniqueItems or Unique or Unique<{error: "No duplicates"}>
|
|
216
|
+
*/
|
|
217
|
+
export type UniqueItems<C extends {
|
|
218
|
+
error?: string;
|
|
219
|
+
} = {}> = {
|
|
220
|
+
readonly __tsgonest_uniqueItems: true;
|
|
221
|
+
} & WithErr<"__tsgonest_uniqueItems", C>;
|
|
222
|
+
/**
|
|
223
|
+
* String must be all uppercase.
|
|
224
|
+
* @example Uppercase or Uppercase<{error: "Must be uppercase"}>
|
|
225
|
+
*/
|
|
226
|
+
export type Uppercase<C extends {
|
|
227
|
+
error?: string;
|
|
228
|
+
} = {}> = {
|
|
229
|
+
readonly __tsgonest_uppercase: true;
|
|
230
|
+
} & WithErr<"__tsgonest_uppercase", C>;
|
|
231
|
+
/**
|
|
232
|
+
* String must be all lowercase.
|
|
233
|
+
* @example Lowercase or Lowercase<{error: "Must be lowercase"}>
|
|
158
234
|
*/
|
|
159
|
-
export type
|
|
160
|
-
|
|
235
|
+
export type Lowercase<C extends {
|
|
236
|
+
error?: string;
|
|
237
|
+
} = {}> = {
|
|
238
|
+
readonly __tsgonest_lowercase: true;
|
|
239
|
+
} & WithErr<"__tsgonest_lowercase", C>;
|
|
240
|
+
/** Trim whitespace before validation. */
|
|
241
|
+
export type Trim = {
|
|
242
|
+
readonly __tsgonest_transform_trim: true;
|
|
243
|
+
};
|
|
244
|
+
/** Convert to lowercase before validation. */
|
|
245
|
+
export type ToLowerCase = {
|
|
246
|
+
readonly __tsgonest_transform_toLowerCase: true;
|
|
247
|
+
};
|
|
248
|
+
/** Convert to uppercase before validation. */
|
|
249
|
+
export type ToUpperCase = {
|
|
250
|
+
readonly __tsgonest_transform_toUpperCase: true;
|
|
161
251
|
};
|
|
162
252
|
/**
|
|
163
|
-
*
|
|
253
|
+
* Coerce string inputs to the declared type before validation.
|
|
254
|
+
* - "123" → 123 (string to number)
|
|
255
|
+
* - "true"/"false" → true/false (string to boolean)
|
|
164
256
|
*
|
|
165
257
|
* @example
|
|
166
|
-
*
|
|
258
|
+
* page: number & Coerce
|
|
259
|
+
* active: boolean & Coerce
|
|
167
260
|
*/
|
|
168
|
-
export type
|
|
169
|
-
readonly
|
|
261
|
+
export type Coerce = {
|
|
262
|
+
readonly __tsgonest_coerce: true;
|
|
170
263
|
};
|
|
171
264
|
/**
|
|
172
|
-
*
|
|
265
|
+
* Validate using a custom function. The function must be a predicate:
|
|
266
|
+
* `(value: T) => boolean`. tsgonest resolves the function's source file
|
|
267
|
+
* and emits an import + call in the generated validator.
|
|
173
268
|
*
|
|
174
269
|
* @example
|
|
175
|
-
*
|
|
270
|
+
* import { isValidCard } from "./validators/credit-card";
|
|
271
|
+
*
|
|
272
|
+
* interface PaymentDto {
|
|
273
|
+
* card: string & Validate<typeof isValidCard>;
|
|
274
|
+
* card: string & Validate<{fn: typeof isValidCard, error: "Invalid card"}>;
|
|
275
|
+
* }
|
|
276
|
+
*/
|
|
277
|
+
export type Validate<F extends ((...args: any[]) => boolean) | {
|
|
278
|
+
fn: (...args: any[]) => boolean;
|
|
279
|
+
error?: string;
|
|
280
|
+
}> = {
|
|
281
|
+
readonly __tsgonest_validate: F extends {
|
|
282
|
+
fn: infer Fn;
|
|
283
|
+
} ? Fn : F;
|
|
284
|
+
} & WithErr<"__tsgonest_validate", F>;
|
|
285
|
+
/**
|
|
286
|
+
* Global error message — applies to all validation failures on this property.
|
|
287
|
+
* Per-constraint errors (via `error` field) take precedence.
|
|
288
|
+
* @example string & Format<"email"> & Error<"Invalid email">
|
|
176
289
|
*/
|
|
177
|
-
export type
|
|
178
|
-
readonly
|
|
290
|
+
export type Error<M extends string> = {
|
|
291
|
+
readonly __tsgonest_error: M;
|
|
179
292
|
};
|
|
180
293
|
/**
|
|
181
|
-
*
|
|
182
|
-
*
|
|
183
|
-
* @example
|
|
184
|
-
* type UniqueIds = string[] & tags.UniqueItems;
|
|
294
|
+
* Default value for optional properties. Assigned when value is undefined.
|
|
295
|
+
* @example theme?: string & Default<"light">
|
|
185
296
|
*/
|
|
186
|
-
export type
|
|
187
|
-
readonly
|
|
297
|
+
export type Default<V extends string | number | boolean> = {
|
|
298
|
+
readonly __tsgonest_default: V;
|
|
188
299
|
};
|
|
189
|
-
/**
|
|
300
|
+
/**
|
|
301
|
+
* Exact length (sets both MinLength and MaxLength).
|
|
302
|
+
* @example Length<2> or Length<{value: 2, error: "Must be exactly 2 chars"}>
|
|
303
|
+
*/
|
|
304
|
+
export type Length<N extends number | {
|
|
305
|
+
value: number;
|
|
306
|
+
error?: string;
|
|
307
|
+
}> = MinLength<N> & MaxLength<N>;
|
|
308
|
+
/**
|
|
309
|
+
* Numeric range (inclusive). Sets Minimum and Maximum.
|
|
310
|
+
* @example Range<{min: 0, max: 100}> or Range<{min: 0, max: 100, error: "Out of range"}>
|
|
311
|
+
*/
|
|
312
|
+
export type Range<R extends {
|
|
313
|
+
min: number;
|
|
314
|
+
max: number;
|
|
315
|
+
error?: string;
|
|
316
|
+
}> = Minimum<R extends {
|
|
317
|
+
error: string;
|
|
318
|
+
} ? {
|
|
319
|
+
value: R["min"];
|
|
320
|
+
error: R["error"];
|
|
321
|
+
} : R["min"]> & Maximum<R extends {
|
|
322
|
+
error: string;
|
|
323
|
+
} ? {
|
|
324
|
+
value: R["max"];
|
|
325
|
+
error: R["error"];
|
|
326
|
+
} : R["max"]>;
|
|
327
|
+
/**
|
|
328
|
+
* String length range. Sets MinLength and MaxLength.
|
|
329
|
+
* @example Between<{min: 1, max: 255}> or Between<{min: 1, max: 255, error: "Bad length"}>
|
|
330
|
+
*/
|
|
331
|
+
export type Between<R extends {
|
|
332
|
+
min: number;
|
|
333
|
+
max: number;
|
|
334
|
+
error?: string;
|
|
335
|
+
}> = MinLength<R extends {
|
|
336
|
+
error: string;
|
|
337
|
+
} ? {
|
|
338
|
+
value: R["min"];
|
|
339
|
+
error: R["error"];
|
|
340
|
+
} : R["min"]> & MaxLength<R extends {
|
|
341
|
+
error: string;
|
|
342
|
+
} ? {
|
|
343
|
+
value: R["max"];
|
|
344
|
+
error: R["error"];
|
|
345
|
+
} : R["max"]>;
|
|
346
|
+
/** Alias for Minimum. `Min<0>` = `Minimum<0>` */
|
|
347
|
+
export type Min<N extends number | {
|
|
348
|
+
value: number;
|
|
349
|
+
error?: string;
|
|
350
|
+
}> = Minimum<N>;
|
|
351
|
+
/** Alias for Maximum. `Max<100>` = `Maximum<100>` */
|
|
352
|
+
export type Max<N extends number | {
|
|
353
|
+
value: number;
|
|
354
|
+
error?: string;
|
|
355
|
+
}> = Maximum<N>;
|
|
356
|
+
/** Alias for ExclusiveMinimum. `Gt<0>` = "greater than 0" */
|
|
357
|
+
export type Gt<N extends number | {
|
|
358
|
+
value: number;
|
|
359
|
+
error?: string;
|
|
360
|
+
}> = ExclusiveMinimum<N>;
|
|
361
|
+
/** Alias for ExclusiveMaximum. `Lt<100>` = "less than 100" */
|
|
362
|
+
export type Lt<N extends number | {
|
|
363
|
+
value: number;
|
|
364
|
+
error?: string;
|
|
365
|
+
}> = ExclusiveMaximum<N>;
|
|
366
|
+
/** Alias for Minimum + ExclusiveMinimum combo. `Gte<0>` = `Min<0>` */
|
|
367
|
+
export type Gte<N extends number | {
|
|
368
|
+
value: number;
|
|
369
|
+
error?: string;
|
|
370
|
+
}> = Minimum<N>;
|
|
371
|
+
/** Alias for Maximum + ExclusiveMaximum combo. `Lte<100>` = `Max<100>` */
|
|
372
|
+
export type Lte<N extends number | {
|
|
373
|
+
value: number;
|
|
374
|
+
error?: string;
|
|
375
|
+
}> = Maximum<N>;
|
|
376
|
+
/** Alias for MultipleOf. `Step<0.01>` */
|
|
377
|
+
export type Step<N extends number | {
|
|
378
|
+
value: number;
|
|
379
|
+
error?: string;
|
|
380
|
+
}> = MultipleOf<N>;
|
|
381
|
+
/** Alias for UniqueItems. `Unique` */
|
|
382
|
+
export type Unique<C extends {
|
|
383
|
+
error?: string;
|
|
384
|
+
} = {}> = UniqueItems<C>;
|
|
190
385
|
export type Email = Format<"email">;
|
|
191
|
-
/** String validated as UUID format. */
|
|
192
386
|
export type Uuid = Format<"uuid">;
|
|
193
|
-
/** String validated as URL format. */
|
|
194
387
|
export type Url = Format<"url">;
|
|
195
|
-
/** String validated as URI format. */
|
|
196
388
|
export type Uri = Format<"uri">;
|
|
197
|
-
/** String validated as IPv4 format. */
|
|
198
389
|
export type IPv4 = Format<"ipv4">;
|
|
199
|
-
/** String validated as IPv6 format. */
|
|
200
390
|
export type IPv6 = Format<"ipv6">;
|
|
201
|
-
/** String validated as date-time (ISO 8601) format. */
|
|
202
391
|
export type DateTime = Format<"date-time">;
|
|
203
|
-
/** String validated as date (YYYY-MM-DD) format. */
|
|
204
392
|
export type DateOnly = Format<"date">;
|
|
205
|
-
/** String validated as time (HH:MM:SS) format. */
|
|
206
393
|
export type Time = Format<"time">;
|
|
207
|
-
/** String validated as duration (ISO 8601 duration) format. */
|
|
208
394
|
export type Duration = Format<"duration">;
|
|
209
|
-
/** String validated as JWT format. */
|
|
210
395
|
export type Jwt = Format<"jwt">;
|
|
211
|
-
/** String validated as ULID format. */
|
|
212
396
|
export type Ulid = Format<"ulid">;
|
|
213
|
-
/** String validated as CUID format. */
|
|
214
397
|
export type Cuid = Format<"cuid">;
|
|
215
|
-
/** String validated as CUID2 format. */
|
|
216
398
|
export type Cuid2 = Format<"cuid2">;
|
|
217
|
-
/** String validated as Nano ID format. */
|
|
218
399
|
export type NanoId = Format<"nanoid">;
|
|
219
|
-
/**
|
|
400
|
+
/** number & Gt<0> */
|
|
220
401
|
export type Positive = ExclusiveMinimum<0>;
|
|
221
|
-
/**
|
|
402
|
+
/** number & Lt<0> */
|
|
222
403
|
export type Negative = ExclusiveMaximum<0>;
|
|
223
|
-
/**
|
|
404
|
+
/** number & Min<0> */
|
|
224
405
|
export type NonNegative = Minimum<0>;
|
|
225
|
-
/**
|
|
406
|
+
/** number & Max<0> */
|
|
226
407
|
export type NonPositive = Maximum<0>;
|
|
227
|
-
/**
|
|
408
|
+
/** number & Type<"int32"> */
|
|
228
409
|
export type Int = Type<"int32">;
|
|
229
|
-
/**
|
|
410
|
+
/** number & Type<"int64"> (JS safe integer range) */
|
|
230
411
|
export type SafeInt = Type<"int64">;
|
|
231
|
-
/**
|
|
412
|
+
/** number & Type<"float"> (finite, no Infinity/NaN) */
|
|
232
413
|
export type Finite = Type<"float">;
|
|
233
|
-
/**
|
|
414
|
+
/** number & Type<"uint32"> */
|
|
234
415
|
export type Uint = Type<"uint32">;
|
|
235
|
-
/**
|
|
416
|
+
/** number & Type<"double"> */
|
|
236
417
|
export type Double = Type<"double">;
|
|
418
|
+
export {};
|
|
237
419
|
//# sourceMappingURL=tags.d.ts.map
|
package/dist/tags.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../src/tags.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tags.d.ts","sourceRoot":"","sources":["../src/tags.ts"],"names":[],"mappings":"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"}
|
package/dist/tags.js
CHANGED
|
@@ -1,29 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @tsgonest/types — Zero-runtime branded types for type-safe validation
|
|
2
|
+
* @tsgonest/types — Zero-runtime branded types for type-safe validation.
|
|
3
3
|
*
|
|
4
4
|
* These types exist purely at compile time. They produce NO runtime code.
|
|
5
|
-
* The tsgonest compiler
|
|
6
|
-
* (prefixed with `__tsgonest_`) to extract validation constraints.
|
|
5
|
+
* The tsgonest compiler reads phantom properties (`__tsgonest_*`) to generate validators.
|
|
7
6
|
*
|
|
8
|
-
*
|
|
9
|
-
*
|
|
7
|
+
* Every constraint supports two forms:
|
|
8
|
+
* - Simple: Min<0> — clean, no custom error
|
|
9
|
+
* - Extended: Min<{value: 0, error: "Must be positive"}> — with per-constraint error
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* import { Email, Min, Max, Trim, Coerce } from "@tsgonest/types";
|
|
10
13
|
*
|
|
11
14
|
* interface CreateUserDto {
|
|
12
|
-
* email: string &
|
|
13
|
-
* name: string &
|
|
14
|
-
* age: number &
|
|
15
|
+
* email: string & Email;
|
|
16
|
+
* name: string & Trim & Min<1> & Max<255>;
|
|
17
|
+
* age: number & Min<0> & Max<150>;
|
|
15
18
|
* }
|
|
16
19
|
*
|
|
17
|
-
*
|
|
18
|
-
* interface
|
|
19
|
-
*
|
|
20
|
-
*
|
|
21
|
-
*
|
|
22
|
-
*
|
|
23
|
-
*
|
|
24
|
-
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
20
|
+
* // With per-constraint errors:
|
|
21
|
+
* interface StrictDto {
|
|
22
|
+
* email: string & Format<{type: "email", error: "Must be a valid email"}>;
|
|
23
|
+
* age: number & Min<{value: 0, error: "Age cannot be negative"}>;
|
|
24
|
+
* }
|
|
25
|
+
*
|
|
26
|
+
* // Query params with coercion:
|
|
27
|
+
* interface QueryDto {
|
|
28
|
+
* page: number & Coerce;
|
|
29
|
+
* active: boolean & Coerce;
|
|
27
30
|
* }
|
|
28
31
|
*/
|
|
29
32
|
export {};
|
package/package.json
CHANGED