@nmtjs/type 0.12.4 → 0.12.6

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.
Files changed (55) hide show
  1. package/dist/index.d.ts +4 -0
  2. package/dist/index.js +1 -3
  3. package/dist/temporal.d.ts +1 -0
  4. package/dist/temporal.js +0 -2
  5. package/dist/types/any.d.ts +6 -0
  6. package/dist/types/any.js +6 -6
  7. package/dist/types/array.d.ts +13 -0
  8. package/dist/types/array.js +21 -23
  9. package/dist/types/base.d.ts +62 -0
  10. package/dist/types/base.js +67 -65
  11. package/dist/types/boolean.d.ts +6 -0
  12. package/dist/types/boolean.js +6 -6
  13. package/dist/types/custom.d.ts +14 -0
  14. package/dist/types/custom.js +21 -21
  15. package/dist/types/date.d.ts +6 -0
  16. package/dist/types/date.js +8 -10
  17. package/dist/types/enum.d.ts +10 -0
  18. package/dist/types/enum.js +7 -9
  19. package/dist/types/literal.d.ts +8 -0
  20. package/dist/types/literal.js +7 -9
  21. package/dist/types/never.d.ts +6 -0
  22. package/dist/types/never.js +6 -6
  23. package/dist/types/number.d.ts +23 -0
  24. package/dist/types/number.js +36 -38
  25. package/dist/types/object.d.ts +43 -0
  26. package/dist/types/object.js +39 -44
  27. package/dist/types/string.d.ts +22 -0
  28. package/dist/types/string.js +49 -51
  29. package/dist/types/temporal.d.ts +45 -0
  30. package/dist/types/temporal.js +74 -76
  31. package/dist/types/tuple.d.ts +13 -0
  32. package/dist/types/tuple.js +12 -15
  33. package/dist/types/type.d.ts +24 -0
  34. package/dist/types/type.js +0 -2
  35. package/dist/types/union.d.ts +40 -0
  36. package/dist/types/union.js +29 -32
  37. package/package.json +8 -6
  38. package/dist/index.js.map +0 -1
  39. package/dist/temporal.js.map +0 -1
  40. package/dist/types/any.js.map +0 -1
  41. package/dist/types/array.js.map +0 -1
  42. package/dist/types/base.js.map +0 -1
  43. package/dist/types/boolean.js.map +0 -1
  44. package/dist/types/custom.js.map +0 -1
  45. package/dist/types/date.js.map +0 -1
  46. package/dist/types/enum.js.map +0 -1
  47. package/dist/types/literal.js.map +0 -1
  48. package/dist/types/never.js.map +0 -1
  49. package/dist/types/number.js.map +0 -1
  50. package/dist/types/object.js.map +0 -1
  51. package/dist/types/string.js.map +0 -1
  52. package/dist/types/temporal.js.map +0 -1
  53. package/dist/types/tuple.js.map +0 -1
  54. package/dist/types/type.js.map +0 -1
  55. package/dist/types/union.js.map +0 -1
@@ -0,0 +1,43 @@
1
+ import * as zod from 'zod/v4-mini';
2
+ import { BaseType, type BaseTypeAny, type OptionalType } from './base.ts';
3
+ import { EnumType } from './enum.ts';
4
+ import type { LiteralType } from './literal.ts';
5
+ import type { StringType } from './string.ts';
6
+ export type ObjectTypeProps = {
7
+ [k: string]: BaseTypeAny;
8
+ };
9
+ export type AnyObjectType = ObjectType<ObjectTypeProps>;
10
+ export declare class ObjectType<T extends ObjectTypeProps = {}> extends BaseType<zod.ZodMiniObject<{
11
+ [K in keyof T]: T[K]['encodedZodType'];
12
+ }, zod.core.$strict>, zod.ZodMiniObject<{
13
+ [K in keyof T]: T[K]['decodedZodType'];
14
+ }, zod.core.$strict>, {
15
+ properties: T;
16
+ }> {
17
+ static factory<T extends ObjectTypeProps = {}>(properties: T): ObjectType<T>;
18
+ }
19
+ export declare class RecordType<K extends LiteralType<string | number> | EnumType | StringType, E extends BaseType> extends BaseType<zod.ZodMiniRecord<K['encodedZodType'], E['encodedZodType']>, zod.ZodMiniRecord<K['decodedZodType'], E['decodedZodType']>> {
20
+ static factory<K extends LiteralType<string | number> | EnumType | StringType, E extends BaseType>(key: K, element: E): RecordType<K, E>;
21
+ }
22
+ export declare function keyof<T extends ObjectType>(type: T): EnumType<zod.core.util.ToEnum<Extract<keyof T['props']['properties'], string>>>;
23
+ export declare function pick<T extends AnyObjectType, P extends {
24
+ [K in keyof T['props']['properties']]?: true;
25
+ }>(source: T, pick: P): ObjectType<{
26
+ [K in keyof P]: P[K] extends true ? K extends keyof T['props']['properties'] ? T['props']['properties'][K] : never : never;
27
+ }>;
28
+ export declare function omit<T extends AnyObjectType, P extends {
29
+ [K in keyof T['props']['properties']]?: true;
30
+ }>(source: T, omit: P): ObjectType<{
31
+ [K in keyof T['props']['properties'] as K extends keyof P ? never : K]: T['props']['properties'][K];
32
+ }>;
33
+ export declare function extend<T extends AnyObjectType, P extends ObjectTypeProps>(object1: T, properties: P): ObjectType<{
34
+ [K in keyof T['props']['properties'] | keyof P]: K extends keyof P ? P[K] : K extends keyof T['props']['properties'] ? T['props']['properties'][K] : never;
35
+ }>;
36
+ export declare function merge<T1 extends AnyObjectType, T2 extends AnyObjectType>(object1: T1, object2: T2): ObjectType<{
37
+ [K in keyof T1['props']['properties'] | keyof T2['props']['properties']]: K extends keyof T2['props']['properties'] ? T2['props']['properties'][K] : K extends keyof T1['props']['properties'] ? T1['props']['properties'][K] : never;
38
+ }>;
39
+ export declare function partial<T extends AnyObjectType, P extends T extends ObjectType<infer Props> ? Props : never>(object: T): ObjectType<{
40
+ [K in keyof P]: OptionalType<P[K]>;
41
+ }>;
42
+ export declare const object: typeof ObjectType.factory;
43
+ export declare const record: typeof RecordType.factory;
@@ -1,64 +1,59 @@
1
- import * as zod from "zod/v4-mini";
1
+ import * as zod from 'zod/v4-mini';
2
2
  import { BaseType } from "./base.js";
3
3
  import { EnumType } from "./enum.js";
4
4
  export class ObjectType extends BaseType {
5
- static factory(properties) {
6
- const encodeProperties = {};
7
- const decodeProperties = {};
8
- for (const key in properties) {
9
- encodeProperties[key] = properties[key].encodedZodType;
10
- decodeProperties[key] = properties[key].decodedZodType;
11
- }
12
- return new ObjectType({
13
- encodedZodType: zod.object(encodeProperties),
14
- decodedZodType: zod.object(decodeProperties),
15
- props: { properties }
16
- });
17
- }
5
+ static factory(properties) {
6
+ const encodeProperties = {};
7
+ const decodeProperties = {};
8
+ for (const key in properties) {
9
+ encodeProperties[key] = properties[key].encodedZodType;
10
+ decodeProperties[key] = properties[key].decodedZodType;
11
+ }
12
+ return new ObjectType({
13
+ encodedZodType: zod.object(encodeProperties),
14
+ decodedZodType: zod.object(decodeProperties),
15
+ props: { properties },
16
+ });
17
+ }
18
18
  }
19
19
  export class RecordType extends BaseType {
20
- static factory(key, element) {
21
- return new RecordType({
22
- encodedZodType: zod.record(key.encodedZodType, element.encodedZodType),
23
- decodedZodType: zod.record(key.decodedZodType, element.decodedZodType),
24
- props: {
25
- key,
26
- element
27
- }
28
- });
29
- }
20
+ static factory(key, element) {
21
+ return new RecordType({
22
+ encodedZodType: zod.record(key.encodedZodType, element.encodedZodType),
23
+ decodedZodType: zod.record(key.decodedZodType, element.decodedZodType),
24
+ props: { key, element },
25
+ });
26
+ }
30
27
  }
31
28
  export function keyof(type) {
32
- return EnumType.factory(Object.keys(type.props.properties));
29
+ return EnumType.factory(Object.keys(type.props.properties));
33
30
  }
34
31
  export function pick(source, pick) {
35
- const properties = Object.fromEntries(Object.entries(source.props.properties).filter(([key]) => pick[key]));
36
- return ObjectType.factory(properties);
32
+ const properties = Object.fromEntries(Object.entries(source.props.properties).filter(([key]) => pick[key]));
33
+ return ObjectType.factory(properties);
37
34
  }
38
35
  export function omit(source, omit) {
39
- const properties = Object.fromEntries(Object.entries(source.props.properties).filter(([key]) => !omit[key]));
40
- return ObjectType.factory(properties);
36
+ const properties = Object.fromEntries(Object.entries(source.props.properties).filter(([key]) => !omit[key]));
37
+ return ObjectType.factory(properties);
41
38
  }
42
39
  export function extend(object1, properties) {
43
- return ObjectType.factory({
44
- ...object1.props.properties,
45
- ...properties
46
- });
40
+ return ObjectType.factory({
41
+ ...object1.props.properties,
42
+ ...properties,
43
+ });
47
44
  }
48
45
  export function merge(object1, object2) {
49
- return ObjectType.factory({
50
- ...object1.props.properties,
51
- ...object2.props.properties
52
- });
46
+ return ObjectType.factory({
47
+ ...object1.props.properties,
48
+ ...object2.props.properties,
49
+ });
53
50
  }
54
51
  export function partial(object) {
55
- const properties = {};
56
- for (const [key, value] of Object.entries(object.props.properties)) {
57
- properties[key] = value.optional();
58
- }
59
- return ObjectType.factory(properties);
52
+ const properties = {};
53
+ for (const [key, value] of Object.entries(object.props.properties)) {
54
+ properties[key] = value.optional();
55
+ }
56
+ return ObjectType.factory(properties);
60
57
  }
61
58
  export const object = ObjectType.factory;
62
59
  export const record = RecordType.factory;
63
-
64
- //# sourceMappingURL=object.js.map
@@ -0,0 +1,22 @@
1
+ import * as zod from 'zod/v4-mini';
2
+ import { BaseType } from './base.ts';
3
+ type Check = zod.core.CheckFn<string> | zod.core.$ZodCheck<string>;
4
+ export declare class StringType extends BaseType<zod.ZodMiniString<string>, zod.ZodMiniString<string>> {
5
+ static factory(...checks: Check[]): StringType;
6
+ max(value: number): StringType;
7
+ min(value: number): StringType;
8
+ pattern(pattern: string | RegExp): StringType;
9
+ email(options?: zod.core.$ZodEmailParams): StringType;
10
+ url(options?: zod.core.$ZodURLParams): StringType;
11
+ ipv4(options?: zod.core.$ZodIPv4Params): StringType;
12
+ ipv6(options?: zod.core.$ZodIPv6Params): StringType;
13
+ uuid(options?: zod.core.$ZodUUIDParams): StringType;
14
+ emoji(options?: zod.core.$ZodEmojiParams): StringType;
15
+ nanoid(options?: zod.core.$ZodNanoIDParams): StringType;
16
+ cuid(options?: zod.core.$ZodCUIDParams): StringType;
17
+ cuid2(options?: zod.core.$ZodCUID2Params): StringType;
18
+ e164(options?: zod.core.$ZodE164Params): StringType;
19
+ jwt(options?: zod.core.$ZodJWTParams): StringType;
20
+ }
21
+ export declare const string: typeof StringType.factory;
22
+ export {};
@@ -1,55 +1,53 @@
1
- import * as zod from "zod/v4-mini";
1
+ import * as zod from 'zod/v4-mini';
2
2
  import { BaseType } from "./base.js";
3
3
  export class StringType extends BaseType {
4
- static factory(...checks) {
5
- return new StringType({
6
- encodedZodType: zod.string().check(...checks),
7
- params: { checks }
8
- });
9
- }
10
- max(value) {
11
- return StringType.factory(...this.params.checks, zod.maxLength(value));
12
- }
13
- min(value) {
14
- return StringType.factory(...this.params.checks, zod.minLength(value));
15
- }
16
- pattern(pattern) {
17
- return StringType.factory(...this.params.checks, zod.regex(typeof pattern === "string" ? new RegExp(pattern) : pattern));
18
- }
19
- email(options) {
20
- return StringType.factory(...this.params.checks, zod.email(options));
21
- }
22
- url(options) {
23
- return StringType.factory(...this.params.checks, zod.url(options));
24
- }
25
- ipv4(options) {
26
- return StringType.factory(...this.params.checks, zod.ipv4(options));
27
- }
28
- ipv6(options) {
29
- return StringType.factory(...this.params.checks, zod.ipv6(options));
30
- }
31
- uuid(options) {
32
- return StringType.factory(...this.params.checks, zod.uuid(options));
33
- }
34
- emoji(options) {
35
- return StringType.factory(...this.params.checks, zod.emoji(options));
36
- }
37
- nanoid(options) {
38
- return StringType.factory(...this.params.checks, zod.nanoid(options));
39
- }
40
- cuid(options) {
41
- return StringType.factory(...this.params.checks, zod.cuid(options));
42
- }
43
- cuid2(options) {
44
- return StringType.factory(...this.params.checks, zod.cuid2(options));
45
- }
46
- e164(options) {
47
- return StringType.factory(...this.params.checks, zod.e164(options));
48
- }
49
- jwt(options) {
50
- return StringType.factory(...this.params.checks, zod.jwt(options));
51
- }
4
+ static factory(...checks) {
5
+ return new StringType({
6
+ encodedZodType: zod.string().check(...checks),
7
+ params: { checks },
8
+ });
9
+ }
10
+ max(value) {
11
+ return StringType.factory(...this.params.checks, zod.maxLength(value));
12
+ }
13
+ min(value) {
14
+ return StringType.factory(...this.params.checks, zod.minLength(value));
15
+ }
16
+ pattern(pattern) {
17
+ return StringType.factory(...this.params.checks, zod.regex(typeof pattern === 'string' ? new RegExp(pattern) : pattern));
18
+ }
19
+ email(options) {
20
+ return StringType.factory(...this.params.checks, zod.email(options));
21
+ }
22
+ url(options) {
23
+ return StringType.factory(...this.params.checks, zod.url(options));
24
+ }
25
+ ipv4(options) {
26
+ return StringType.factory(...this.params.checks, zod.ipv4(options));
27
+ }
28
+ ipv6(options) {
29
+ return StringType.factory(...this.params.checks, zod.ipv6(options));
30
+ }
31
+ uuid(options) {
32
+ return StringType.factory(...this.params.checks, zod.uuid(options));
33
+ }
34
+ emoji(options) {
35
+ return StringType.factory(...this.params.checks, zod.emoji(options));
36
+ }
37
+ nanoid(options) {
38
+ return StringType.factory(...this.params.checks, zod.nanoid(options));
39
+ }
40
+ cuid(options) {
41
+ return StringType.factory(...this.params.checks, zod.cuid(options));
42
+ }
43
+ cuid2(options) {
44
+ return StringType.factory(...this.params.checks, zod.cuid2(options));
45
+ }
46
+ e164(options) {
47
+ return StringType.factory(...this.params.checks, zod.e164(options));
48
+ }
49
+ jwt(options) {
50
+ return StringType.factory(...this.params.checks, zod.jwt(options));
51
+ }
52
52
  }
53
53
  export const string = StringType.factory;
54
-
55
- //# sourceMappingURL=string.js.map
@@ -0,0 +1,45 @@
1
+ import { Temporal } from 'temporal-polyfill';
2
+ import { type ZodMiniString } from 'zod/v4-mini';
3
+ import { CustomType, TransformType } from './custom.ts';
4
+ type Types = Exclude<keyof typeof Temporal, 'Now' | 'Instant' | 'Calendar' | 'TimeZone'>;
5
+ type TemporalTransformer<T extends Types> = {
6
+ decode: (value: string) => ReturnType<(typeof Temporal)[T]['from']>;
7
+ encode: (value: ReturnType<(typeof Temporal)[T]['from']>) => string;
8
+ };
9
+ type EncodedType = ZodMiniString<string>;
10
+ export declare class PlainDateType extends TransformType<Temporal.PlainDate, EncodedType> {
11
+ static transformer: TemporalTransformer<"PlainDate">;
12
+ static factory(): CustomType<Temporal.PlainDate, EncodedType, import("zod/v4-mini").ZodMiniType<Temporal.PlainDate, Temporal.PlainDate, import("zod/v4/core").$ZodTypeInternals<Temporal.PlainDate, Temporal.PlainDate>>>;
13
+ }
14
+ export declare class PlainDateTimeType extends TransformType<Temporal.PlainDateTime, EncodedType> {
15
+ static transformer: TemporalTransformer<"PlainDateTime">;
16
+ static factory(): CustomType<Temporal.PlainDateTime, EncodedType, import("zod/v4-mini").ZodMiniType<Temporal.PlainDateTime, Temporal.PlainDateTime, import("zod/v4/core").$ZodTypeInternals<Temporal.PlainDateTime, Temporal.PlainDateTime>>>;
17
+ }
18
+ export declare class ZonedDateTimeType extends TransformType<Temporal.ZonedDateTime, EncodedType> {
19
+ static transformer: TemporalTransformer<"ZonedDateTime">;
20
+ static factory(): CustomType<Temporal.ZonedDateTime, EncodedType, import("zod/v4-mini").ZodMiniType<Temporal.ZonedDateTime, Temporal.ZonedDateTime, import("zod/v4/core").$ZodTypeInternals<Temporal.ZonedDateTime, Temporal.ZonedDateTime>>>;
21
+ }
22
+ export declare class PlainTimeType extends TransformType<Temporal.PlainTime, EncodedType> {
23
+ static transformer: TemporalTransformer<"PlainTime">;
24
+ static factory(): CustomType<Temporal.PlainTime, EncodedType, import("zod/v4-mini").ZodMiniType<Temporal.PlainTime, Temporal.PlainTime, import("zod/v4/core").$ZodTypeInternals<Temporal.PlainTime, Temporal.PlainTime>>>;
25
+ }
26
+ export declare class DurationType extends TransformType<Temporal.Duration, EncodedType> {
27
+ static transformer: TemporalTransformer<"Duration">;
28
+ static factory(): CustomType<Temporal.Duration, EncodedType, import("zod/v4-mini").ZodMiniType<Temporal.Duration, Temporal.Duration, import("zod/v4/core").$ZodTypeInternals<Temporal.Duration, Temporal.Duration>>>;
29
+ }
30
+ export declare class PlainYearMonthType extends TransformType<Temporal.PlainYearMonth, EncodedType> {
31
+ static transformer: TemporalTransformer<"PlainYearMonth">;
32
+ static factory(): CustomType<Temporal.PlainYearMonth, EncodedType, import("zod/v4-mini").ZodMiniType<Temporal.PlainYearMonth, Temporal.PlainYearMonth, import("zod/v4/core").$ZodTypeInternals<Temporal.PlainYearMonth, Temporal.PlainYearMonth>>>;
33
+ }
34
+ export declare class PlainMonthDayType extends TransformType<Temporal.PlainMonthDay, EncodedType> {
35
+ static transformer: TemporalTransformer<"PlainMonthDay">;
36
+ static factory(): CustomType<Temporal.PlainMonthDay, EncodedType, import("zod/v4-mini").ZodMiniType<Temporal.PlainMonthDay, Temporal.PlainMonthDay, import("zod/v4/core").$ZodTypeInternals<Temporal.PlainMonthDay, Temporal.PlainMonthDay>>>;
37
+ }
38
+ export declare const plainDate: typeof PlainDateType.factory;
39
+ export declare const plainDatetime: typeof PlainDateTimeType.factory;
40
+ export declare const plainTime: typeof PlainTimeType.factory;
41
+ export declare const zonedDatetime: typeof ZonedDateTimeType.factory;
42
+ export declare const duration: typeof DurationType.factory;
43
+ export declare const plainYearMonth: typeof PlainYearMonthType.factory;
44
+ export declare const plainMonthDay: typeof PlainMonthDayType.factory;
45
+ export {};
@@ -1,93 +1,93 @@
1
- import { Temporal } from "temporal-polyfill";
2
- import { iso, regex, string } from "zod/v4-mini";
1
+ import { Temporal } from 'temporal-polyfill';
2
+ import { iso, regex, string } from 'zod/v4-mini';
3
3
  import { CustomType, TransformType } from "./custom.js";
4
4
  const createTemporalTransformer = (type, decode = (value) => Temporal[type].from(value)) => {
5
- const encode = (value) => value.toString({
6
- calendarName: "never",
7
- smallestUnit: "microsecond",
8
- timeZoneName: "never"
9
- });
10
- return {
11
- decode,
12
- encode
13
- };
5
+ const encode = (value) => value.toString({
6
+ calendarName: 'never',
7
+ smallestUnit: 'microsecond',
8
+ timeZoneName: 'never',
9
+ });
10
+ return {
11
+ decode,
12
+ encode,
13
+ };
14
14
  };
15
15
  export class PlainDateType extends TransformType {
16
- static transformer = createTemporalTransformer("PlainDate");
17
- static factory() {
18
- return CustomType.factory({
19
- decode: PlainDateType.transformer.decode,
20
- encode: PlainDateType.transformer.encode,
21
- type: iso.date(),
22
- error: "Invalid date format"
23
- });
24
- }
16
+ static transformer = createTemporalTransformer('PlainDate');
17
+ static factory() {
18
+ return CustomType.factory({
19
+ decode: PlainDateType.transformer.decode,
20
+ encode: PlainDateType.transformer.encode,
21
+ type: iso.date(),
22
+ error: 'Invalid date format',
23
+ });
24
+ }
25
25
  }
26
26
  export class PlainDateTimeType extends TransformType {
27
- static transformer = createTemporalTransformer("PlainDateTime");
28
- static factory() {
29
- return CustomType.factory({
30
- decode: PlainDateTimeType.transformer.decode,
31
- encode: PlainDateTimeType.transformer.encode,
32
- type: iso.datetime({ local: true }),
33
- error: "Invalid datetime format"
34
- });
35
- }
27
+ static transformer = createTemporalTransformer('PlainDateTime');
28
+ static factory() {
29
+ return CustomType.factory({
30
+ decode: PlainDateTimeType.transformer.decode,
31
+ encode: PlainDateTimeType.transformer.encode,
32
+ type: iso.datetime({ local: true }),
33
+ error: 'Invalid datetime format',
34
+ });
35
+ }
36
36
  }
37
37
  export class ZonedDateTimeType extends TransformType {
38
- static transformer = createTemporalTransformer("ZonedDateTime", (value) => Temporal.Instant.from(value).toZonedDateTimeISO("UTC"));
39
- static factory() {
40
- return CustomType.factory({
41
- decode: ZonedDateTimeType.transformer.decode,
42
- encode: ZonedDateTimeType.transformer.encode,
43
- type: iso.datetime({ local: true }),
44
- error: "Invalid datetime format"
45
- });
46
- }
38
+ static transformer = createTemporalTransformer('ZonedDateTime', (value) => Temporal.Instant.from(value).toZonedDateTimeISO('UTC'));
39
+ static factory() {
40
+ return CustomType.factory({
41
+ decode: ZonedDateTimeType.transformer.decode,
42
+ encode: ZonedDateTimeType.transformer.encode,
43
+ type: iso.datetime({ local: true }),
44
+ error: 'Invalid datetime format',
45
+ });
46
+ }
47
47
  }
48
48
  export class PlainTimeType extends TransformType {
49
- static transformer = createTemporalTransformer("PlainTime");
50
- static factory() {
51
- return CustomType.factory({
52
- decode: PlainTimeType.transformer.decode,
53
- encode: PlainTimeType.transformer.encode,
54
- type: iso.time(),
55
- error: "Invalid time format"
56
- });
57
- }
49
+ static transformer = createTemporalTransformer('PlainTime');
50
+ static factory() {
51
+ return CustomType.factory({
52
+ decode: PlainTimeType.transformer.decode,
53
+ encode: PlainTimeType.transformer.encode,
54
+ type: iso.time(),
55
+ error: 'Invalid time format',
56
+ });
57
+ }
58
58
  }
59
59
  export class DurationType extends TransformType {
60
- static transformer = createTemporalTransformer("Duration");
61
- static factory() {
62
- return CustomType.factory({
63
- decode: DurationType.transformer.decode,
64
- encode: DurationType.transformer.encode,
65
- type: iso.duration(),
66
- error: "Invalid duration format"
67
- });
68
- }
60
+ static transformer = createTemporalTransformer('Duration');
61
+ static factory() {
62
+ return CustomType.factory({
63
+ decode: DurationType.transformer.decode,
64
+ encode: DurationType.transformer.encode,
65
+ type: iso.duration(),
66
+ error: 'Invalid duration format',
67
+ });
68
+ }
69
69
  }
70
70
  export class PlainYearMonthType extends TransformType {
71
- static transformer = createTemporalTransformer("PlainYearMonth");
72
- static factory() {
73
- return CustomType.factory({
74
- decode: PlainYearMonthType.transformer.decode,
75
- encode: PlainYearMonthType.transformer.encode,
76
- type: string().check(regex(/^\d{4}-\d{2}$/)),
77
- error: "Invalid year-month format"
78
- });
79
- }
71
+ static transformer = createTemporalTransformer('PlainYearMonth');
72
+ static factory() {
73
+ return CustomType.factory({
74
+ decode: PlainYearMonthType.transformer.decode,
75
+ encode: PlainYearMonthType.transformer.encode,
76
+ type: string().check(regex(/^\d{4}-\d{2}$/)),
77
+ error: 'Invalid year-month format',
78
+ });
79
+ }
80
80
  }
81
81
  export class PlainMonthDayType extends TransformType {
82
- static transformer = createTemporalTransformer("PlainMonthDay");
83
- static factory() {
84
- return CustomType.factory({
85
- decode: PlainMonthDayType.transformer.decode,
86
- encode: PlainMonthDayType.transformer.encode,
87
- type: string().check(regex(/^\d{2}-\d{2}$/)),
88
- error: "Invalid month-day format"
89
- });
90
- }
82
+ static transformer = createTemporalTransformer('PlainMonthDay');
83
+ static factory() {
84
+ return CustomType.factory({
85
+ decode: PlainMonthDayType.transformer.decode,
86
+ encode: PlainMonthDayType.transformer.encode,
87
+ type: string().check(regex(/^\d{2}-\d{2}$/)),
88
+ error: 'Invalid month-day format',
89
+ });
90
+ }
91
91
  }
92
92
  export const plainDate = PlainDateType.factory;
93
93
  export const plainDatetime = PlainDateTimeType.factory;
@@ -96,5 +96,3 @@ export const zonedDatetime = ZonedDateTimeType.factory;
96
96
  export const duration = DurationType.factory;
97
97
  export const plainYearMonth = PlainYearMonthType.factory;
98
98
  export const plainMonthDay = PlainMonthDayType.factory;
99
-
100
- //# sourceMappingURL=temporal.js.map
@@ -0,0 +1,13 @@
1
+ import type { ArrayMap } from '@nmtjs/common';
2
+ import * as zod from 'zod/v4-mini';
3
+ import { BaseType } from './base.ts';
4
+ export declare class TupleType<T extends readonly [BaseType, ...BaseType[]] = readonly [
5
+ BaseType,
6
+ ...BaseType[]
7
+ ], R extends BaseType | null = BaseType | null> extends BaseType<R extends BaseType ? zod.ZodMiniTuple<ArrayMap<T, 'encodedZodType'>, R['encodedZodType']> : zod.ZodMiniTuple<ArrayMap<T, 'encodedZodType'>, null>, R extends BaseType ? zod.ZodMiniTuple<ArrayMap<T, 'decodedZodType'>, R['decodedZodType']> : zod.ZodMiniTuple<ArrayMap<T, 'decodedZodType'>, null>, {
8
+ elements: T;
9
+ rest?: R;
10
+ }> {
11
+ static factory<T extends readonly [BaseType, ...BaseType[]], R extends BaseType | null = null>(elements: T, rest?: R): TupleType<T, R>;
12
+ }
13
+ export declare const tuple: typeof TupleType.factory;
@@ -1,19 +1,16 @@
1
- import * as zod from "zod/v4-mini";
1
+ import * as zod from 'zod/v4-mini';
2
2
  import { BaseType } from "./base.js";
3
3
  export class TupleType extends BaseType {
4
- static factory(elements, rest = null) {
5
- const encoded = elements.map((el) => el.encodedZodType);
6
- const decoded = elements.map((el) => el.decodedZodType);
7
- return new TupleType({
8
- encodedZodType: zod.tuple(encoded, rest?.encodedZodType),
9
- decodedZodType: zod.tuple(decoded, rest?.decodedZodType),
10
- props: {
11
- elements,
12
- rest
13
- }
14
- });
15
- }
4
+ static factory(elements, rest = null) {
5
+ const encoded = elements.map((el) => el.encodedZodType);
6
+ const decoded = elements.map((el) => el.decodedZodType);
7
+ return new TupleType({
8
+ // @ts-expect-error
9
+ encodedZodType: zod.tuple(encoded, rest?.encodedZodType),
10
+ // @ts-expect-error
11
+ decodedZodType: zod.tuple(decoded, rest?.decodedZodType),
12
+ props: { elements, rest },
13
+ });
14
+ }
16
15
  }
17
16
  export const tuple = TupleType.factory;
18
-
19
- //# sourceMappingURL=tuple.js.map
@@ -0,0 +1,24 @@
1
+ import type { BaseTypeAny } from './base.ts';
2
+ export * from './any.ts';
3
+ export * from './array.ts';
4
+ export * from './boolean.ts';
5
+ export * from './custom.ts';
6
+ export * from './date.ts';
7
+ export * from './enum.ts';
8
+ export * from './literal.ts';
9
+ export * from './never.ts';
10
+ export * from './number.ts';
11
+ export * from './object.ts';
12
+ export * from './string.ts';
13
+ export * from './tuple.ts';
14
+ export * from './union.ts';
15
+ export declare namespace infer {
16
+ namespace decoded {
17
+ type input<T extends BaseTypeAny> = T['decodedZodType']['_zod']['input'];
18
+ type output<T extends BaseTypeAny> = T['decodedZodType']['_zod']['output'];
19
+ }
20
+ namespace encoded {
21
+ type input<T extends BaseTypeAny> = T['encodedZodType']['_zod']['input'];
22
+ type output<T extends BaseTypeAny> = T['encodedZodType']['_zod']['output'];
23
+ }
24
+ }
@@ -11,5 +11,3 @@ export * from "./object.js";
11
11
  export * from "./string.js";
12
12
  export * from "./tuple.js";
13
13
  export * from "./union.js";
14
-
15
- //# sourceMappingURL=type.js.map
@@ -0,0 +1,40 @@
1
+ import type { ArrayMap } from '@nmtjs/common';
2
+ import * as zod from 'zod/v4-mini';
3
+ import { BaseType, type BaseTypeAny } from './base.ts';
4
+ import type { LiteralType } from './literal.ts';
5
+ import type { ObjectType, ObjectTypeProps } from './object.ts';
6
+ export declare class UnionType<T extends readonly [BaseType, ...BaseType[]] = readonly [
7
+ BaseType,
8
+ ...BaseType[]
9
+ ]> extends BaseType<zod.ZodMiniUnion<ArrayMap<T, 'encodedZodType'>>, zod.ZodMiniUnion<ArrayMap<T, 'decodedZodType'>>, {
10
+ options: T;
11
+ }> {
12
+ static factory<T extends readonly [BaseType, ...BaseType[]] = readonly [
13
+ BaseType,
14
+ ...BaseType[]
15
+ ]>(...options: T): UnionType<T>;
16
+ }
17
+ export declare class IntersactionType<T extends readonly [BaseType, BaseType] = readonly [BaseType, BaseType]> extends BaseType<zod.ZodMiniIntersection<T[0]['encodedZodType'], T[1]['encodedZodType']>, zod.ZodMiniIntersection<T[0]['decodedZodType'], T[1]['decodedZodType']>, {
18
+ options: T;
19
+ }> {
20
+ static factory<T extends readonly [BaseType, BaseType] = readonly [BaseType, BaseType]>(...options: T): IntersactionType<T>;
21
+ }
22
+ export type DiscriminatedUnionProperties<K extends string = string> = {
23
+ [OK in K]: LiteralType<string>;
24
+ } & {
25
+ [OK in string]: any;
26
+ };
27
+ export type DiscriminatedUnionOptionType<K extends string> = ObjectType<ObjectTypeProps & {
28
+ [_ in K]: BaseTypeAny;
29
+ }>;
30
+ export declare class DiscriminatedUnionType<K extends string = string, T extends readonly DiscriminatedUnionOptionType<K>[] = DiscriminatedUnionOptionType<K>[]> extends BaseType<zod.ZodMiniDiscriminatedUnion<ArrayMap<T, 'encodedZodType'>>, zod.ZodMiniDiscriminatedUnion<ArrayMap<T, 'decodedZodType'>>, {
31
+ key: K;
32
+ options: T;
33
+ }> {
34
+ static factory<K extends string = string, T extends readonly DiscriminatedUnionOptionType<K>[] = DiscriminatedUnionOptionType<K>[]>(key: K, ...options: T): DiscriminatedUnionType<K, T>;
35
+ }
36
+ export declare const union: typeof UnionType.factory;
37
+ export declare const or: typeof UnionType.factory;
38
+ export declare const intersection: typeof IntersactionType.factory;
39
+ export declare const and: typeof IntersactionType.factory;
40
+ export declare const discriminatedUnion: typeof DiscriminatedUnionType.factory;